From 607bc74eae0d3bf5bffec8c4f68bc4f12d0cbbfc Mon Sep 17 00:00:00 2001 From: Guy Bedford Date: Mon, 2 Aug 2021 14:46:23 -0700 Subject: [PATCH 01/23] module: support pattern trailers PR-URL: https://github.com/nodejs/node/pull/39635 Reviewed-By: Bradley Farias --- doc/api/esm.md | 55 ++++++++++++++----- doc/api/packages.md | 5 +- lib/internal/modules/esm/resolve.js | 52 +++++++++++++----- test/es-module/test-esm-exports.mjs | 9 +++ .../node_modules/pkgexports/package.json | 8 +++ 5 files changed, 99 insertions(+), 30 deletions(-) diff --git a/doc/api/esm.md b/doc/api/esm.md index 632569537b62e7..f9f27d9ee2eb64 100644 --- a/doc/api/esm.md +++ b/doc/api/esm.md @@ -1169,25 +1169,36 @@ The resolver can throw the following errors: **PACKAGE_IMPORTS_EXPORTS_RESOLVE**(_matchKey_, _matchObj_, _packageURL_, _isImports_, _conditions_) -> 1. If _matchKey_ is a key of _matchObj_, and does not end in _"*"_, then +> 1. If _matchKey_ is a key of _matchObj_ and does not end in _"/"_ or contain +> _"*"_, then > 1. Let _target_ be the value of _matchObj_\[_matchKey_\]. > 1. Let _resolved_ be the result of **PACKAGE_TARGET_RESOLVE**( > _packageURL_, _target_, _""_, **false**, _isImports_, _conditions_). > 1. Return the object _{ resolved, exact: **true** }_. -> 1. Let _expansionKeys_ be the list of keys of _matchObj_ ending in _"/"_ -> or _"*"_, sorted by length descending. +> 1. Let _expansionKeys_ be the list of keys of _matchObj_ either ending in +> _"/"_ or containing only a single _"*"_, sorted by the sorting function +> **PATTERN_KEY_COMPARE** which orders in descending order of specificity. > 1. For each key _expansionKey_ in _expansionKeys_, do -> 1. If _expansionKey_ ends in _"*"_ and _matchKey_ starts with but is -> not equal to the substring of _expansionKey_ excluding the last _"*"_ -> character, then -> 1. Let _target_ be the value of _matchObj_\[_expansionKey_\]. -> 1. Let _subpath_ be the substring of _matchKey_ starting at the -> index of the length of _expansionKey_ minus one. -> 1. Let _resolved_ be the result of **PACKAGE_TARGET_RESOLVE**( -> _packageURL_, _target_, _subpath_, **true**, _isImports_, -> _conditions_). -> 1. Return the object _{ resolved, exact: **true** }_. -> 1. If _matchKey_ starts with _expansionKey_, then +> 1. Let _patternBase_ be **null**. +> 1. If _expansionKey_ contains _"*"_, set _patternBase_ to the substring of +> _expansionKey_ up to but excluding the first _"*"_ character. +> 1. If _patternBase_ is not **null** and _matchKey_ starts with but is not +> equal to _patternBase_, then +> 1. Let _patternTrailer_ be the substring of _expansionKey_ from the +> index after the first _"*"_ character. +> 1. If _patternTrailer_ has zero length, or if _matchKey_ ends with +> _patternTrailer_ and the length of _matchKey_ is greater than or +> equal to the length of _expansionKey_, then +> 1. Let _target_ be the value of _matchObj_\[_expansionKey_\]. +> 1. Let _subpath_ be the substring of _matchKey_ starting at the +> index of the length of _patternBase_ up to the length of +> _matchKey_ minus the length of _patternTrailer_. +> 1. Let _resolved_ be the result of **PACKAGE_TARGET_RESOLVE**( +> _packageURL_, _target_, _subpath_, **true**, _isImports_, +> _conditions_). +> 1. Return the object _{ resolved, exact: **true** }_. +> 1. Otherwise if _patternBase_ is **null** and _matchKey_ starts with +> _expansionKey_, then > 1. Let _target_ be the value of _matchObj_\[_expansionKey_\]. > 1. Let _subpath_ be the substring of _matchKey_ starting at the > index of the length of _expansionKey_. @@ -1197,6 +1208,22 @@ _isImports_, _conditions_) > 1. Return the object _{ resolved, exact: **false** }_. > 1. Return the object _{ resolved: **null**, exact: **true** }_. +**PATTERN_KEY_COMPARE**(_keyA_, _keyB_) + +> 1. Assert: _keyA_ ends with _"/"_ or contains only a single _"*"_. +> 1. Assert: _keyB_ ends with _"/"_ or contains only a single _"*"_. +> 1. Let _baseLengthA_ be the index of _"*"_ in _keyA_ plus one, if _keyA_ +> contains _"*"_, or the length of _keyA_ otherwise. +> 1. Let _baseLengthB_ be the index of _"*"_ in _keyB_ plus one, if _keyB_ +> contains _"*"_, or the length of _keyB_ otherwise. +> 1. If _baseLengthA_ is greater than _baseLengthB_, return -1. +> 1. If _baseLengthB_ is greater than _baseLengthA_, return 1. +> 1. If _keyA_ does not contain _"*"_, return 1. +> 1. If _keyB_ does not contain _"*"_, return -1. +> 1. If the length of _keyA_ is greater than the length of _keyB_, return -1. +> 1. If the length of _keyB_ is greater than the length of _keyA_, return 1. +> 1. Return 0. + **PACKAGE_TARGET_RESOLVE**(_packageURL_, _target_, _subpath_, _pattern_, _internal_, _conditions_) diff --git a/doc/api/packages.md b/doc/api/packages.md index 739db6d273e46e..2cdc146946595e 100644 --- a/doc/api/packages.md +++ b/doc/api/packages.md @@ -360,9 +360,8 @@ For these use cases, subpath export patterns can be used instead: **`*` maps expose nested subpaths as it is a string replacement syntax only.** -The left hand matching pattern must always end in `*`. All instances of `*` on -the right hand side will then be replaced with this value, including if it -contains any `/` separators. +All instances of `*` on the right hand side will then be replaced with this +value, including if it contains any `/` separators. ```js import featureX from 'es-module-package/features/x'; diff --git a/lib/internal/modules/esm/resolve.js b/lib/internal/modules/esm/resolve.js index 1abc8ee0936da3..13f1326f58f96f 100644 --- a/lib/internal/modules/esm/resolve.js +++ b/lib/internal/modules/esm/resolve.js @@ -15,7 +15,9 @@ const { SafeSet, String, StringPrototypeEndsWith, + StringPrototypeIncludes, StringPrototypeIndexOf, + StringPrototypeLastIndexOf, StringPrototypeReplace, StringPrototypeSlice, StringPrototypeSplit, @@ -502,7 +504,9 @@ function packageExportsResolve( if (isConditionalExportsMainSugar(exports, packageJSONUrl, base)) exports = { '.': exports }; - if (ObjectPrototypeHasOwnProperty(exports, packageSubpath)) { + if (ObjectPrototypeHasOwnProperty(exports, packageSubpath) && + !StringPrototypeIncludes(packageSubpath, '*') && + !StringPrototypeEndsWith(packageSubpath, '/')) { const target = exports[packageSubpath]; const resolved = resolvePackageTarget( packageJSONUrl, target, '', packageSubpath, base, false, false, conditions @@ -513,30 +517,38 @@ function packageExportsResolve( } let bestMatch = ''; + let bestMatchSubpath; const keys = ObjectGetOwnPropertyNames(exports); for (let i = 0; i < keys.length; i++) { const key = keys[i]; - if (key[key.length - 1] === '*' && + const patternIndex = StringPrototypeIndexOf(key, '*'); + if (patternIndex !== -1 && StringPrototypeStartsWith(packageSubpath, - StringPrototypeSlice(key, 0, -1)) && - packageSubpath.length >= key.length && - key.length > bestMatch.length) { - bestMatch = key; + StringPrototypeSlice(key, 0, patternIndex))) { + const patternTrailer = StringPrototypeSlice(key, patternIndex + 1); + if (packageSubpath.length >= key.length && + StringPrototypeEndsWith(packageSubpath, patternTrailer) && + patternKeyCompare(bestMatch, key) === 1 && + StringPrototypeLastIndexOf(key, '*') === patternIndex) { + bestMatch = key; + bestMatchSubpath = StringPrototypeSlice( + packageSubpath, patternIndex, + packageSubpath.length - patternTrailer.length); + } } else if (key[key.length - 1] === '/' && StringPrototypeStartsWith(packageSubpath, key) && - key.length > bestMatch.length) { + patternKeyCompare(bestMatch, key) === 1) { bestMatch = key; + bestMatchSubpath = StringPrototypeSlice(packageSubpath, key.length); } } if (bestMatch) { const target = exports[bestMatch]; - const pattern = bestMatch[bestMatch.length - 1] === '*'; - const subpath = StringPrototypeSubstr(packageSubpath, bestMatch.length - - (pattern ? 1 : 0)); - const resolved = resolvePackageTarget(packageJSONUrl, target, subpath, - bestMatch, base, pattern, false, - conditions); + const pattern = StringPrototypeIncludes(bestMatch, '*'); + const resolved = resolvePackageTarget(packageJSONUrl, target, + bestMatchSubpath, bestMatch, base, + pattern, false, conditions); if (resolved === null || resolved === undefined) throwExportsNotFound(packageSubpath, packageJSONUrl, base); return { resolved, exact: pattern }; @@ -545,6 +557,20 @@ function packageExportsResolve( throwExportsNotFound(packageSubpath, packageJSONUrl, base); } +function patternKeyCompare(a, b) { + const aPatternIndex = StringPrototypeIndexOf(a, '*'); + const bPatternIndex = StringPrototypeIndexOf(b, '*'); + const baseLenA = aPatternIndex === -1 ? a.length : aPatternIndex + 1; + const baseLenB = bPatternIndex === -1 ? b.length : bPatternIndex + 1; + if (baseLenA > baseLenB) return -1; + if (baseLenB > baseLenA) return 1; + if (aPatternIndex === -1) return 1; + if (bPatternIndex === -1) return -1; + if (a.length > b.length) return -1; + if (b.length > a.length) return 1; + return 0; +} + function packageImportsResolve(name, base, conditions) { if (name === '#' || StringPrototypeStartsWith(name, '#/')) { const reason = 'is not a valid internal imports specifier name'; diff --git a/test/es-module/test-esm-exports.mjs b/test/es-module/test-esm-exports.mjs index 73b6303df46cff..f1ef53ef2ffe3b 100644 --- a/test/es-module/test-esm-exports.mjs +++ b/test/es-module/test-esm-exports.mjs @@ -35,7 +35,12 @@ import fromInside from '../fixtures/node_modules/pkgexports/lib/hole.js'; ['pkgexports-sugar', { default: 'main' }], // Path patterns ['pkgexports/subpath/sub-dir1', { default: 'main' }], + ['pkgexports/subpath/sub-dir1.js', { default: 'main' }], ['pkgexports/features/dir1', { default: 'main' }], + ['pkgexports/dir1/dir1/trailer', { default: 'main' }], + ['pkgexports/dir2/dir2/trailer', { default: 'index' }], + ['pkgexports/a/dir1/dir1', { default: 'main' }], + ['pkgexports/a/b/dir1/dir1', { default: 'main' }], ]); if (isRequire) { @@ -77,6 +82,8 @@ import fromInside from '../fixtures/node_modules/pkgexports/lib/hole.js'; ['pkgexports/null/subpath', './null/subpath'], // Empty fallback ['pkgexports/nofallback1', './nofallback1'], + // Non pattern matches + ['pkgexports/trailer', './trailer'], ]); const invalidExports = new Map([ @@ -147,6 +154,8 @@ import fromInside from '../fixtures/node_modules/pkgexports/lib/hole.js'; ['pkgexports/sub/not-a-file.js', `pkgexports${sep}not-a-file.js`], // No extension lookups ['pkgexports/no-ext', `pkgexports${sep}asdf`], + // Pattern specificity + ['pkgexports/dir2/trailer', `subpath${sep}dir2.js`], ]); if (!isRequire) { diff --git a/test/fixtures/node_modules/pkgexports/package.json b/test/fixtures/node_modules/pkgexports/package.json index 240122d4aaec95..6c80d5cb15a67e 100644 --- a/test/fixtures/node_modules/pkgexports/package.json +++ b/test/fixtures/node_modules/pkgexports/package.json @@ -47,8 +47,16 @@ "require": "./resolve-self-invalid.js", "import": "./resolve-self-invalid.mjs" }, + "./*/trailer": "./subpath/*.js", + "./*/*railer": "never", + "./*trailer": "never", + "./*/dir2/trailer": "./subpath/*/index.js", + "./a/*": "./subpath/*.js", + "./a/b/": "./nomatch/", + "./a/b*": "./subpath*.js", "./subpath/": "./subpath/", "./subpath/sub-*": "./subpath/dir1/*.js", + "./subpath/sub-*.js": "./subpath/dir1/*.js", "./features/*": "./subpath/*/*.js" } } From 2c365961d028e18471d8e2ccf96b0b06efa2eabe Mon Sep 17 00:00:00 2001 From: Guy Bedford Date: Wed, 8 Sep 2021 12:14:03 -0700 Subject: [PATCH 02/23] module: support pattern trailers for imports field PR-URL: https://github.com/nodejs/node/pull/40041 Reviewed-By: James M Snell Reviewed-By: Geoffrey Booth --- lib/internal/modules/esm/resolve.js | 38 ++++++++++++------- test/es-module/test-esm-imports.mjs | 2 + .../es-modules/pkgimports/package.json | 1 + 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/lib/internal/modules/esm/resolve.js b/lib/internal/modules/esm/resolve.js index 13f1326f58f96f..87f28d5287612a 100644 --- a/lib/internal/modules/esm/resolve.js +++ b/lib/internal/modules/esm/resolve.js @@ -22,7 +22,6 @@ const { StringPrototypeSlice, StringPrototypeSplit, StringPrototypeStartsWith, - StringPrototypeSubstr, } = primordials; const internalFS = require('internal/fs/utils'); const { NativeModule } = require('internal/bootstrap/loaders'); @@ -582,7 +581,9 @@ function packageImportsResolve(name, base, conditions) { packageJSONUrl = pathToFileURL(packageConfig.pjsonPath); const imports = packageConfig.imports; if (imports) { - if (ObjectPrototypeHasOwnProperty(imports, name)) { + if (ObjectPrototypeHasOwnProperty(imports, name) && + !StringPrototypeIncludes(name, '*') && + !StringPrototypeEndsWith(name, '/')) { const resolved = resolvePackageTarget( packageJSONUrl, imports[name], '', name, base, false, true, conditions ); @@ -590,30 +591,39 @@ function packageImportsResolve(name, base, conditions) { return { resolved, exact: true }; } else { let bestMatch = ''; + let bestMatchSubpath; const keys = ObjectGetOwnPropertyNames(imports); for (let i = 0; i < keys.length; i++) { const key = keys[i]; - if (key[key.length - 1] === '*' && + const patternIndex = StringPrototypeIndexOf(key, '*'); + if (patternIndex !== -1 && StringPrototypeStartsWith(name, - StringPrototypeSlice(key, 0, -1)) && - name.length >= key.length && - key.length > bestMatch.length) { - bestMatch = key; + StringPrototypeSlice(key, 0, + patternIndex))) { + const patternTrailer = StringPrototypeSlice(key, patternIndex + 1); + if (name.length >= key.length && + StringPrototypeEndsWith(name, patternTrailer) && + patternKeyCompare(bestMatch, key) === 1 && + StringPrototypeLastIndexOf(key, '*') === patternIndex) { + bestMatch = key; + bestMatchSubpath = StringPrototypeSlice( + name, patternIndex, name.length - patternTrailer.length); + } } else if (key[key.length - 1] === '/' && StringPrototypeStartsWith(name, key) && - key.length > bestMatch.length) { + patternKeyCompare(bestMatch, key) === 1) { bestMatch = key; + bestMatchSubpath = StringPrototypeSlice(name, key.length); } } if (bestMatch) { const target = imports[bestMatch]; - const pattern = bestMatch[bestMatch.length - 1] === '*'; - const subpath = StringPrototypeSubstr(name, bestMatch.length - - (pattern ? 1 : 0)); - const resolved = resolvePackageTarget( - packageJSONUrl, target, subpath, bestMatch, base, pattern, true, - conditions); + const pattern = StringPrototypeIncludes(bestMatch, '*'); + const resolved = resolvePackageTarget(packageJSONUrl, target, + bestMatchSubpath, bestMatch, + base, pattern, true, + conditions); if (resolved !== null) return { resolved, exact: pattern }; } diff --git a/test/es-module/test-esm-imports.mjs b/test/es-module/test-esm-imports.mjs index 97bdc618c70d23..5155e482a2d4fc 100644 --- a/test/es-module/test-esm-imports.mjs +++ b/test/es-module/test-esm-imports.mjs @@ -20,6 +20,8 @@ const { requireImport, importImport } = importer; ['#external', { default: 'asdf' }], // External subpath imports ['#external/subpath/asdf.js', { default: 'asdf' }], + // Trailing pattern imports + ['#subpath/asdf.asdf', { default: 'test' }], ]); for (const [validSpecifier, expected] of internalImports) { diff --git a/test/fixtures/es-modules/pkgimports/package.json b/test/fixtures/es-modules/pkgimports/package.json index ca2c6c65e00a8f..5be55cecbd606c 100644 --- a/test/fixtures/es-modules/pkgimports/package.json +++ b/test/fixtures/es-modules/pkgimports/package.json @@ -6,6 +6,7 @@ "require": "./requirebranch.js" }, "#subpath/*": "./sub/*", + "#subpath/*.asdf": "./test.js", "#external": "pkgexports/valid-cjs", "#external/subpath/*": "pkgexports/sub/*", "#external/invalidsubpath/": "pkgexports/sub", From 0d448eaab5249814c57f30bc66b09384f8a0021b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Tue, 25 Aug 2020 14:04:54 +0200 Subject: [PATCH 03/23] crypto: make FIPS related options always available There is no reason to hide FIPS functionality behind build flags. OpenSSL always provide the information about FIPS availability via `FIPS_mode()` function. This makes the user experience more consistent, because the OpenSSL library is always queried and the `crypto.getFips()` always returns OpenSSL settings. Fixes: https://github.com/nodejs/node/issues/34903 Backport-PR-URL: https://github.com/nodejs/node/pull/40241 PR-URL: https://github.com/nodejs/node/pull/36341 Reviewed-By: Anna Henningsen Reviewed-By: Michael Dawson Reviewed-By: Daniel Bevenius --- doc/api/cli.md | 8 +-- lib/crypto.js | 22 ++---- node.gypi | 3 - src/node.cc | 6 +- src/node_config.cc | 2 - src/node_crypto.cc | 44 +++++++----- src/node_options.cc | 2 - src/node_options.h | 2 - test/parallel/test-cli-node-print-help.js | 7 +- test/parallel/test-crypto-fips.js | 71 +++++++++---------- ...rocess-env-allowed-flags-are-documented.js | 21 +++--- 11 files changed, 82 insertions(+), 106 deletions(-) diff --git a/doc/api/cli.md b/doc/api/cli.md index 3f3e5e4eeb72c8..c657a0715e19b1 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -201,8 +201,8 @@ priority than `--dns-result-order`. added: v6.0.0 --> -Enable FIPS-compliant crypto at startup. (Requires Node.js to be built with -`./configure --openssl-fips`.) +Enable FIPS-compliant crypto at startup. (Requires Node.js to be built +against FIPS-compatible OpenSSL.) ### `--enable-source-maps` Load an OpenSSL configuration file on startup. Among other uses, this can be -used to enable FIPS-compliant crypto if Node.js is built with -`./configure --openssl-fips`. +used to enable FIPS-compliant crypto if Node.js is built +against FIPS-enabled OpenSSL. ### `--pending-deprecation` `#O5zcCOFAR!_!q#*^UIt`D$IeOy=+D?Wm%Ww9Z|#oIC2HMcZjt+aRzcErLNJ8CrZCIK|5N-qQ!q>+1ha~9UcH;g0-_jfG20*`2?rY96Nl|x zeoc5%1##dt@(A+u3>tkm2LS{i^TD58ZV(wVtyG5}YFb1sFrK*LfupoK#Rdoyl*IH1 zk!%B}#^K}ANQ6RAu)68h;fd&X%&?ZMQ?OHy&)_6+4#pVAiPq`{oe{~16ORl57fFrY1i-R0U z;t&F{-woPgl09~{`i1>YAO^qhkuUB>D3nG|EyI-+wOBa4#oterbV zFro+$2tc5Q9HDy!z|0%$*|tEfgY0AbS_T#kdhrA*fM&`ZXalG8oMq<#q*gbh8FFmu z@s+ofF!8nm0*-e0qtjsKPICqgH&!}rB{8G|5OferQ0|FPBoG@Kd;Opc7rGm8HUJ_I zJRyWsxkNgKy*HndT&>?1F5epDW`0NFh6~K1aKP}=0Nlhr0l-ko8tmHT2mq2Wc*yQrcOBNnkeSdylQeQ-`P5c(bn1XckyLO}r{0mK7{9Pp2Aq4~*y z3P`pRr~sV-JQ$o8pyBIu(k&l_!~`-UT5T5@#%K;Cap;ac9rx#9YIddx=Ma$yT(}4T z;sMbnhMCSNhcmBbNlNYqN33S87B5hjkyP={wyqc9yQC~QYx zSBRW}xIo|Qa_80JLf8jg!OS66Wa|sTp~Te00tOf2xN)^y19;aHJmwh)LTJq9(al&_ zT-K{-%peQ4BN{$<6w|jRck}j9Q3+wh8USTz5N%im!V0m1oVe5wsx|%Kh$XMyuZ$Kf zF23bn7y`^=QZI`C3Kv0Ei$JgW@LkLW;Fx$2ZNZ3XS?TBkVSrS2B3@Tfm zIwX@Yxo22V-+Y}EVwT{MEDxwHf$rOZ*m9@ox1M0VP@pUdXD0uFZq@V7bT zC!ETka@fh(7_kNiwnzbQzydbcm+TOru9e10DW zMgWVLGy&kn8KUD3J_wD%hlAgMdf`jnA^`HThH`NFQVm;KL1*#Pzgd5W`zYAbZQBOLs_KL4%#ggL|IZNjzp@L~99K)^DZ| z5*7eRj4;Cmfq*cl9+<-2u`n2gO{UuqSUq74fz)<$6|i9nPJ!(KgFZHahHz__u7+M$ zuZg9o#IBt8!?xYLKzw6$+TfnI;)M2gBp6!)0FmT8XvQT_0{mBARYE^#?~8{p1X!dZ z>VF6+LxEwJL8e;EzDza`?Rs-J#fU5nNQV%G=I*Gc%%MOb3@``*IREfeP$Zpf9-Q?{LWKK{ITHg(gn!cJ}NGG}-ro6*;O9CNtwD zi_^=OfDobX6)vqiu!sn6;)nxH2tpP?1Cm-GVt_*`^3B)ZhX;JCw4b@30pM620D$6y2sjoGzT1CI5) zxW{i6|8T-6a%FO?0alTDqi{|-=DMvtV2w*^g7>~iy%%2twbcCA^5x1Q4c`TwOZN@q zjyQM#;?Fi<3IVKDOYSS6HC*=u-!#HZXr2*RzZ;QY$1XOIL)0W?n_~Ii5PDt-0o6~% zkDqAL_I>*O#GqgaRtoXkqKstYKIf{r`{Gze2W6}coLTZ`8)Bl^9kY#h#=X0iST|T; zAq69cCO}iAjBt8-PpLJccVRvy4_RY{XEousM4&%mh7IdK<{=lT15ncdc)#)X3@KG% zKz^5=y^vx=9=%s%rf|WZZWZ+~#w`t0Fau+15z_{F0{|%?(IkoW>GVbC_ovq{om z6vPNw@1>g;#kJdEz%%EkxjpfcGZiv0Su+j&*gHjdW7iC{@Tm%IzW{JJ0@>jYu;H`_ zE-dMK`rpN;I1IRe09=(y_(&rC7R!Giff2Q9zidGea#b*Z0s#OI#?uK|;gJL75R*h; zNzuaYJz4fiq*iR?Pra&T3|Ti#i+I6|>pjb)TQUG-wHe^(g^Xw?c*!Kl62OK~h;i{h zDt=?4AjmU|R3W(gTP>5V^RrfAme4=2-is?P%-Z3PMggy=|2#tuAPreODW_Li8fm7P zvN{*Nii4~aH@dJ zB*9D|10_iMY5?PPBc(u3SgZ^TIZ0$#SeQCvw$BIep@&<$1FqcdJ6_;*`pAvULF_he z4EVMI1VKP8)?mqySlI!r1mci(0C6TEy`w9`3wHv=%|x!YY|GjUq7GsP#~r(F7kDA? zQBZ+v;1czy?3;ZszgyMl4IZ|i$>n?oC`#)Doga8gGB$je#1=#z&svhu(E-OaBdeT4 z0s1_m0|7xg2RP1iHsu*uJT``6y%QNQ8GNGh>NjfhWzn%+AzpF72NrPv;tK$vC>Y`g zNr>TL!XZEwbWgMyOT`Z?&ZT5&W*S>!O^sH8y*eIssHk9)g8LBEn~hUOr+tgctlifJ zZ`W^U=Z9q8EifR%w>`zyQn2OgnjpG0=@+?T&dC?G99;S$$G}$wT$UIR1~F|6fHp#h zX717Id!-ve5e?)ZZxO;7QIjCW71Xtav>BXhc(@1_718e5CqFxb12bsmD`BU#%W!}V zelbpvfC3)`GQ1k_J|M~o0plbl<>A2afY32&wM}?qhRpzPs6&ht(leZyR}`;>lLe#K zH-a>2+j$DBeefy2iJwd(-@1?(7l05|6i#RJ07D^*W}>j-LjG!+00pc@Cm zo(O6-#A`caCJc52L}U>H62*p0Rycv44t3_)vuA6*-s0-^TyAeyxHqn!Rk`E!8mg+q zHaJXEY>9k;Ym$c$4j@BD&?Hve)_`4#j&#r(Ac#T4Y<5Ss4+RVeS2d1HBU=sbqB288 zLBzXj4RUh&wFX5j3{nsXNN$T6B6(;dBzb(B`6!)SWCbY0OQ-|AJ{-nwm)LCjm{QKJ zINu1O;vooZE>mj&J30Zy>dB}K=ArSzSW;Y<)S@t;= zcM=#c&S6I{i39>f2swnFw7Rnq)|3sMi*h2um*|*CBx1(xo&SxfKchi>}k~0R=RYQaJ&Rpbkj@DiWrpeoBpTq+sKfs0J2jC>TA!@@?*A zx7j3sT0M0u$!!U295ahOT;C-Gv%Qp{t~LrX!C`h=~I6s|98Rb&}2Km(TAHp0(yT{D_wmZ zb7$5kkNekH!ywf+AhAc)Fr~wWU`v{&yjV(Fw2e~Ju4OcoqTHUk#1S}9h={Fwbf39~ z78Fr+{Ui%?^Vj2GvC*_(OgktZp9JO;hiDC-CE0JUtut8S=*``fB0G^RfMouJ6CW4@)AR+7M7tY2Li^YNe#7 zZwRN&VA3KVrwNe7i58g#L2CEeSg7h-+3w}V=@yhX``Ksh$|WKy(1@ipG>r<1E0n}R zL>%T0A8QL_H7U5qwW-fyt3oOLkcmrQ_>)m0?b0PE?zfh*JBBuf20C0Z4ZFqRGm?D~ zf{!nh?+Dt1T5Jx_`cY7+f*Ns8Rp7sOC2B!kBQc6%l_79KDmrGRpN?JVrss7iw}WVVq|$ zzEtM}#pvmd;(1oq%BQKbUIzhS6$VJbXHLD=unP_4w1#+|oc9W3{PuHnjpt5W&&zV z$c`0Z?p;$Zgcy$2^n1q22Qob2T+`kXl}?3Z!LScVE%vo?9v0LfC+ru%yP^QxAP|7# zG6xNclp6dlGT1mg15(YIY&hFttRS=?vSm*!%Fq)>Z1IZs0;3p~wDx189B;@xl!&4| z_(?8o@@kkR2(xk5d>EGVCY`bnrbG;d)v;MzP~cr`_pP?OGa?X;7|w@Ot1UB_T#$-csHNqM0@d`CY!ePPFe)rJ&l;JZ zC}s)(H9L>RpMgH6fEaLrL_m;B)`>JdGnmQ(PT^!&ER-2KU^*GFPk8`)DY&&503uec z?I2((_DCTJM0XHj(JQ!%5Q8SrS7AYba=RZA?k(4cmhpGAKS)*vM#gA_7W&>U=~8&k zU|=k$dk~h3#=*i4C#_WH0br0g3?>|80~A3Tg*#$Q0U6pBo=%P zs-kI>=0FgF&E2n*H z6_qCfTup$2+Z!j~9sPIvaOksoq^dG=oM2e7?*lTnPmgX9TZt=CVqg4ZEf(k)$8ygL zR<9^CFo%r>j8GBAw}?wQXQ%Px0)TdL_O-af49A>x!{s1oXau(gH@HXA7v9?$M3Sot zovD~Ol6x^L{41egTk9v9A4CAR4mBlY2c_g>k_&_n?-viombg=tFlCu3T~Gw^&pS*vaC zaTvPcG@+W$3!8FfgaRQDE#vn}z{5?0crlD1$-tGmV?LAs@eKjIu{q}Dr>t0R$Yd1s z$GbhFf;0{y*dpME6)C+<%OHS5X2ACQE$yyGC0bK1vww3v@O-Z}d4vcK}24cJ{z-8UDn{XHR90?2U6+PDFpN3R*hLKTp6ou=k z!!}3-r*epycSknH0lTF35`eKm5fesH11;43nEP8c)tv1h|Dt#(OXsPuuKr&kRm9}L z5=r3iCGi+kB;y{hYoWU#S8o8|2M&5-cUgDw(THEtpd(U=tM6lj4 z4mb&W0G!5}%g}ddC#pRdB;5Vnu_o>tZwrMnHdiiP_;^(yb&xW0u*fb9h(ZO3m3nin zpbs$b9K;ZI@VUcia*=vg$hyS&bWJS!Vhb1tQIxpdc$aCnJ-cDBv#Ub(Zyi>R4+U|B zky#0s^n<+T0225;xGO|g@}>-)7#H%u;Z~E(9WVpElg*+1JO%E5V`BKXSZo{sC(&h~ z98LP`E$kMuC`r;AwQ;YAEo@v@hfsn%5nyili*Oi(3P7_xwF;-^Omd}ynG%Nwf`eJ} zl~95ziOks6_a%RxDIa(;KO$EFAqx8YWBm{?<->f|$)l=DFF|QP2bF5)d+m=gcKh)8 z-4B)8^!*pS{Cv>;Uxm((`Hyv%9_Yv%Lti=hN9AA+$8}1Oa}aU)Du*HzxLXQXy1f(Woj9#2niwmSFbuckw)*fV=>f+gi#QHH)*g&U3f7=k}x2zU6K zvq5HvD^`h#T|vT?p*3G`7s`y|#2dvq$Q!i2)N~Pi#HnU5YmBWR?Q1NU-eTD}(F!FuIEHKVe8M?>K|1iDwmvO-%!g;z`=+6Uboic^!cHvN6NmpHI735{Nn z0m5e#PP+}u!P88PtDIuF)tDFBw?mGOz(A)v&y$E;TGYB~N%0R5#2XqewB&{d?JWCN zpldS~j>kg`(&J!$4kRnbU6Ijh=`x17NEL*$E~R-Z!|ZiEhhqH**}%|5fqAm5>>g5) zX-J_Q9vgVER{%t0!JdTSisX~OhJ+OY*%-G((}-`{s>C#{Im>h%-kjf_`CUK@ZqH3OQ`&o zrEZz>ym@04qbAiF;xs^25jiZQwr9J^g@q=r84cG>RiG%8jbq74TQ=Pl#j7R}MCw>H zH23m%i8yjE^FlO@Dv0?AL0@{;e$2^n1Oidv{4c8)BvMWD9W^xj*MG#-Y54{FYyyEN zvPcrR@}@NG?GzLRH4-bw#<5{&f92oWQLRtheihLbr4v1Z*Q9D9BE3X5oqwsn{4f7M z?dZRQnDz$&AP66*AYTR*@IM3~@A%%cJM7_}eXKkWefUZK-!p}#DIGBRVSjg-JVqVf zmc>_IzH`ci*Tm;vQ(b1L^R#w;pBK&gK7jSv2cup|sLAye)_6YK%4m6x>}2s7Tsdo< z;y@*y085@v$2w7Z1H>16|Ba#$UG$M+fIL7~n`6rhVMYtkIpw%_p%85QHX|y;|lOmQ(nsWb;Ve5zN z@xfmXYy;xXqLU05Mf~9o_;i5sXSfRZM?q){Km_3!f#5_;2s*O9Yk$weS5%8*NPk1g zftn4YwsNkf7`o;VTfHVwa*@MkOaQT1^!DedPC5>aJu})6QX7#FL3Ln`>-XNu1Sa}& z+r%LNfLICvz(iyWi|(Q&co}%x#^yUPt_XZVZKpEn>C9;PPuyGZZL(*SnH}=*P-ISA zKnx=+Q3rIr{DGx_S&UH8ltKuYI6=P7Uax4FDV<(ydVDt#M$07l4$b{4C0;Khmp~5$ zo(mwUMOuhV~^-Ux)CI0$fkaW44mKZ3qL&%A&d1|re5V%X%8dFBAv;3(3g zI41x?5N_t)PJUM>n%bV%XMm-mJYG1uZ97Kycci6SGR$C_?hdz^8_9{S4ddUw?miNE zujVWon`~y_Luh&ODbTD!0Hj=q96}IQ6bJ@fTEdvMPsn^?0JtH5al|+WG`J)_7jGk& z?+4}|`D2Cao+{ZvoH&w9P9w8GAU2EEz|nYTUeU8(u@G1g0XjwsJY;?0hPFKq`AWDb z(b}~DchJb+}{O?*xL_jGc%39%+O6$Z6 zoEr;(Xw|U{ieMDnDas_y-wh2)E(<_{O#{60gKo3{rVtMQ2UZZgXdF)nVc6+3s$m46 zPBgNmcf#w7Z|K{!VQChIMagJz+5zO!ZY^3jv?(0tPLrEF@q2pZlD;D7#k=6Es6@fB@l)UfDsfp z#Rw#+?#+3EqXn9hnKBVfULi6%+;N8U7X%<{ym;yorQFoq13Z47>? zf@4PRMAR4oph8a}d1*xunDgGK?V>NBLj`+Pjv#~dE2fKC`2G2Kp_VAcMFD!jT~CPSD2Pe4OZ`g zsL(Ppd7fuutPO*%7Y)EPcy|yc1j-ATc*KxM!t%-K)~h~1AvB7Ls!C8-*EjQ=haB^>nNk$l6^2Q9brU8!{e2xs(7%|2k zCkCbKKGK+Z_Z(y9;HZX)FbOye#~neG%%Et-h1K}jQ*bV+!C`)LP68F}VD}K5>7Z3W zxN>sicHowv13k;&cA&;`a}HaZINZXK#{;4`FH{=cuE?&@_J9r`8TzyY0d%u`i@vcy z7DOBY01$-u`pnCnOu295$e_R%P`9iSxGoO%0mLhlhZIHt3IHg8EQcUX%o)aTLJLAo z!6X2X0M;=81oGekrI{Yjs3-m@f?HP)m%8A;FMU~a2xLai7}6OamiN8Dx!L9O6MGjb zC9>W>dW+r`oaP3PY~U7Sd^Zlrc-DH-E{$m4?zna4zIB(_Co()uFC=B8JoClRmepwhA~QPIvnimCZ`)0 zJ7hc>t7*2}&qK@bjn@_DLLjZg0bvcSLJ&gReovpjBcnKw!#CA%1?3B&bTl=5VDByt z_LgkGv8=})PUr@gx(cH*C!Sp%ng0Wdw=BEJM1BBmmC3s4j>ryRhR}E z#zT|YxW)h|K|sj>-lBn6 zmRbH@qRXH$jySVy1@2tq;%A^ZU|^e)dkO%4#fktG6$zwrz~!Q(fSLYZFP#iF#EF4I z7&6mNom-9o2EaoA5E;tyM;)fle6KJ8)*8pbB}UdK`nNMKxapucgJxU#NAUT%&W+&! z&@&`qN@@Ad4TvDOpG!r}ykI8Kw}p$r@%4jLBYTaWQ1lHLJ3PlL*se}@xmTpdIKh9s zvfGE}$o;d*W``vZbsR@+Tetv)pcupn_+R8a+G3y2(a_**F8P`kp1pJn45jA`;bB`B zu?rSRS@2AyOWTlbfflzD&513r#kULoyM|yL48iSpR={&k!cb*40NmololZDMWHdyRx5VOY_r6XMtb<2c?x%-A}l_Z>iryT=%L z0*1!;k?)@`S9{~)zi1h-mPrn?kmGZoOpUPhT(%~ z-RG5LCCgYGA*=7J;x;3^%zUs2pip4P&eibpIAN&~{kr@iv0y+rv-`eqd*t4|&E7$y zU_KY}z6gsMplP^pjCWAgluLSZy59trZ0Y?)ba2c$ye>%FhDB% zk3@FZK<}r5gPC=pU>#p>#t4RCp6__;3&UILd<+BwAR(rhCR26lhLmW4>-)gTz?}31 zTjpRio-x15L>z!|1&SDd$ROH1 z?%0Z!epYxc3tr#S2W-}Tlh1v}#MdE$(V%pu0n#0L@ra;h1Q`%^+8`D~dn$2y{+y+j zGa06!F2mNCtmO`Jh1RMN0RjfI)Bvap98m@_Clg*FlAsaoZV-lU+XC0jN~kamEfU=c z7kzI_WvC6)wofi$3gZR4eL(@y_Un&Mc%lSX1;dj78s~rp!=MR*f^&L zuyCfUkDfW)H9(Frfl6Z!hjXrPdVuIZl43}djm^l?ICevzH@KyPl_ytzjxyqY3K=#W zOvY2CL)Y>O{zOY*3mGhSgqIL?XzL7$y3}>uS4AodQ9zHbS^lO<`=&sFs}Oue^5#Xt zTM&E&h96fp6~xy_QIw1z!iN=`boS4#M2`TiefH)ar;~2efpMwlkScmdKYxRL_*GiG zG&+TQIT!g}ZnKU#-P5?oc?=s?T>42c@JsKy=9AG{UxA5l zO9+V4D6hwABA$v7RDEQg{r4wN_C_Be!1vTnOenrLt6!z+W$Mqh`|jDG#(q6R0sc}P z;9mdZxbqi&Q}~xbrNy5*-(9kbz0(m>g2t)NYCU5Y-%28X3lV=~m+7r@`4SYMtLY^g zYZJqte3pHDvv0EwiqU?17vsHyXL_0zva*uL|3K!fO3-q* z@~&x+i;BZDS@LanF$ff;x0O&4&1lnG633vHD%G5kUJ?@rb3Mh?Q5B=0X3r|t zR^*Oz!nJ+vye>6*sBD|55okmo27e=GGn1^i`TlBd+O5lo_I_g)&KMWpH;u`AdVJ3o zSv!b)G`Gu<56|LDD*m6Iv1AZ;$r{!({^#s9WocZMskRr=76{V+OL@>?k8 zCh=0jNJV7xc~>1y>jkhaDl18jd8wmuB$zMV?=Hwp6tp7K^&t_ba>ezG`OF{2m_JtH z#s)NrscI@Fc_G}$^j=okpM!aA3C~(y!C$D7lr%l1s=|t*l$=inbzegLW(ik~8|)K+ z>u)mbaBYP&thkM9Wp_ztkX0WKZ(_=*i$dT@ijhy`>aGv+_ZQeh0q$ACNl2oNP^gU! zG@!JvXwKoU^GgjVu0$q-T*a&W8-7ITJY1iz{!gx={$YIpufB*t|A?XVxL*snFT?ab zk-s0CJcWrbf(RPBnYh{gmf?D2-)pyYn7E#Ao#rNn-_Y`or3UzAc5q4dIl92~^uf~y zo(v(aE-z2n@LB{F_p{{s9PWXCI^!PQP{?H^r~pZ150n&Q2kH8zh9D68plCIL=q~#3 z`4%z;yMVaBf<>OMoyCX|Jn{lKxq5c_IET2hfK-g*Y>G>eK9xX@A%K7=Fbka!_I-Aa zfFq(JcxsGk=F9Hrr1SG>zU{ASr@jpe$;~KG5{NW^JQ&CPDWALu21-gEEV)-C!v$4X zf>(m+I+x6Luz){P0p5v|{ZN}Z>>mFpPi~6)LsXAFY4#V>W@S{$RZiH(x>}*Y_t(l@ zPk*k%Y|^c#&{P9H5H!sqDT2wF_6fG>gSn|0n+#%Ildgc7yKWHB4WL&)CFq9UeIsV6 zR8#Hcs>pGKMqnSN$iO%@x_1G-1+kC-4!^pay0NOa z5Qc^58f8oe!Hl5j$c{N1-w!oYm(N0$KJ zPsom=qug7jOyz+-3Y-H%0jJEPKoC1Cw=85g*==BmX)#bQB^d^?kC_7s<;J#!Yp_Tr z0uaJ@E;2aQfHk!7;r=;VfUp%s6`oSEzKonBMEh{H;-tnwsc z31VQ^%+d!C5+TL0w#$wYx*;@8@)`qfTueZIgW!NR!v#BIO0o?Y26iYn#5f~3T3|2` zMyQs^8SQc7rbR*wtY72r$AbmF(RPd-50S0Y6CwbD+f;jo!1@V+IV{!+w z9hpFS9fyoa1w(*XT;Rba=8`Wh>%r5=L!>Y@c;FcjBw!7*(pK$hAkdBochG+Z-3`JC zmppA{g4Tt&Rml+kS#bp=qA+U<^Jdopa4ujDq$m z+n1vm17pMioD3vr{6`T>Br;b7_lGEeuoonB0AfPOaowg7$g&_r6>4#kUDVGHQxQ=D z@dD=tv2*e0YRH8Gz+Ytg-T>Ns^O7}&DIh!rpW%8yKw#E9dub@?X!Rb7^JNAHFRqM9})(#bqFaSJ89>1IvQ?7n)+N03Bo`MLZRXY z^WnBZuZ~B_sNe>G1Ar0;O}FpyFVhHQq2rVwV(I03R) z@CLvb7ZAijf`VXpDiPrB(8!D(Y=B|9LIMXDM3l)4M)JS%SP0o@=|L={5HvUk*)Rbw zfG&4=mO=F)a`w`a+dTd@-Bq6qR2;^peM~zT@nSL9U>F7*FrokfKHxKAUCND_%N?ID zS$J?jpbceV4Z|ZLFFE1VlBfA`8}v znjIe?S}udCc!S~`!5OV%QhQER?PSptqaajwgU0X?8*ziQN2ciZJ$zRQ*$+0BTYzBW zPPD`}aC0*UZdo5o?shz(9Uo^b z)r;6Y#F*YdoHk0(Fu^&3-bi=YV%sf>%fW!)VcUXeFnIxEAm~udfQw-gHH`Uc04!p~ zvXQ}%sK5Yfx2E`ktlD-%e4E$A!4a*D-aXT{$m{_YDsXHyg<)}~4Dc92FJ!qwK4C2b zgp7_136%W#h#yfjpr#(`CE|B2{#>4k6w*j7L>a-lc;?3-LrlO;?cVETm%{*Ayf7vP zR0IeDr-u*^zg`1OGtftoQ~{wlH|{@3OR=sPR`j7tp>lp9q(f*Rtk%@4eKGRV9Ec4! z*yo!(x#p`ZJWuiDCXu`_;uAq|=hdTru(|@7;j#!W4KH)Bn3t2}jNM+{IRTf{&c6pDBipdk?UGhAAwvZLJKg>Y*t-yn-IbVh&0tDMd*NAmv zHNvXI%Iq$sRFHOAIcDPzRw2k3W8Zg5UPesH1Oei-K$n3(QvG%wK+HvYb&V_)7t$o- zvOqA0#DMsS&O(aw)Gmb>1{`Ly$N|Wv@drEV7mO&Mb+YM;2Rp<}qQ)>)Dadk$1}R6# zTrdg1X`B%w21st(rx;V<3E)uSD5M8_?Kb-y;I_u^*!bUAUzQil^N{F#j)$_k9PZwF zYlwPQzOAF^7&xBRT8#wrf3NF#d>8u`FRRD)7A_TQ_?g;98CECuF$vZDy72Qfa3@Vj4t>f+$H62{{Zg`X__`J?$?`(svs*c?zG!BVuqw5Ol9% zN1wVl-4MpCfbF@FA6TM8=U9!ev?$tdrrh$8T#)-RdPkT2WCKR-clVKdFMd z)c;qd`d*)P{GU4)2qQ|0h$5mWsx+vIs%_+mK^({&RPbG^SMHKiMVKO^TWP(tt#|Er zAJ_UmK1X2@IL2Df1!DY4qW}`_V~IMGq@i27uvnf8u=hq00rGg@3}k_m-rz- z>xu3GKg;NKwM*;Yc)+#;<#z9YPgN&dRU9CUB7o?5f#mwo>aHhY0<^^TWWEAX{GaLn$0t4*x@reuW$F*11&+N#>O`GxvCu#y0YIl z_8M~L$_LK67kz4olnEACD;FEXl6QdR@z1j^!`MUP(?_#ELKv_Wi_6a!nQ=KJogK4>FQ_ z&OFkbwZ#)AmEKfm1(q_cp!&_+^3HfcfdE(v$V=@uLlkM)4QH4NFr3&7DIMT^=?oGJ z9rL}TxV4XR1FMN(v~_F1U;@|+An?J_5Fqf^2mrsLVS<|*8rs}Rh;;&DeLhf@%y=7l zs$Ve#fqw{npbP5l1Cl`PEniu+liR;l%Kq1SySwl|MU&B!C3MA*M+$5OnOlJ%jtwCM z!bt0F0Gl51=NcW?-HlsihZ0-<#^s|0!Evo2fLesespPzQMP-7HvaRIa{>D@Zcxzfe zo3ulRc;QU&mnOV(;xYZ>X&T%*0Z1jKSvy~VU}pUhS^qsa8>b#%bp#>{CPU*_h#~=X z5DfOM2NrF_X9ce@z=QSqf1gb=2MvQJqZy_PEQA1XFOR(g0x;wTmN+6+PX4X7@Yh1^ z%?yFC3&$R*+A_AOkH{gN!7xw^=&{P9dd)B4obv(31DUAcsquvO1*pLdp^4$pkW&_n z2WXM{ZSc;F!B{nN=XOBQEnoBL%aT>E9x(yGwn^&s`rJZLmjiUy+CFmz@3T!bcoQ{NF^YF2_bhcpp)|A9!G_cCVc-8 z%CfnB1Yxt>ivgvtAi2=CA7m^%?S#j8HH+35H0Tyl0GS!Vj8_hf%$)Y{9lJmo|rr{!9rIR zSf5^_c)h4x-2pjD`w}vsBq}R5qH9Hj$G6hdUXgW51NCgar*(lIc67 zu)a0>5|c%*DM=(6j1vLW>1+%TaS#R}vaB^g0uT}kS#2u;Gy>@EOW+<=97MD~C z^ojHOg@b@BP3w;3sB`eH1ONtP1t2uA%LeGi({%&093bZq^#Ev5>aGoY5X25|ixRN7 z0s{n#4g?4RbjJ0~!}q_*Yc-HXA5-y$g#p); zh3_2Wf0&u0HJ~Dh9St4535`}!s*QgNBR(jc82ScPn9i|$EX;HOj!G(>0OYvA1w6xW zd{FoD$Ux5=J)N$?_`?LeQPtda+FJ& z)*bRVS96^4^7pQ}LdXKby0v9z+z=|Dz?rI%lt379&WgDoeXjw?t(YKP!%PImhnsdK z8sJ(2(ld{a72Ws_Y(-kvEzRau7S`hrc3vG;hAi$-1T{ioSL_v(6vbo^0Nv!`*$VNC6*m0J_KT;c zLn!COYV@n!XK)A(s6BZ)7CC%b<_6rKaLo_P#6U3dyz`gB2_=7ZIc87C{4_8NsDy%2#uZ<_qcQXU7Y@ zTDihJ{G=f|syD}qmBVk4#)p$Sb@_}DQ*v(L5R46o1(a<~@wFXBg?zYqWgFI@$zveE z*CGbWEz)2l2ht8R6XO6h_`nyo$>Nn3Q3p>O)lllFd?`pbY?uTv+ksLDo(+Y0*K1xt zYF|3us|J4+bamyy*&vUE_<+j4EB+43y798_PdyX@#|5kn&m zp2CMji+kndb#`L#?0i+r)12nBz?1{mo6>WNxg^t`@Ez6EU>=Ec#Qf_fOQ}&^!NDwhs@g$@xS`kXln|8!WC~5%Gk0g`7T^|t6cVy)}&fd0T+sqRa#YPJv83cD&EExA z?X{+CbI+@`w!}vnCY?EyvLR-tz?Gu?gYHFJ+{Qds;6#X-@B_}^Hcw{@%kCxL2uN9t3{uBZ~;rd&KT?<7P~QAN|Hb)ln~EFCn0it|Yp{I84UF1%C}%V*z0tz#n7>B*&#%#qqisw+cA z`N>No^PwqEa!Eodug|e>O9@6(g)9~PQi*av@{Bq*QheU4{rVhF<9X)1lgHP7J-?gp z=jr@yLD>%ny!M_C$#gyEyTvGOxHfu9z-)6(H^HDNUgzF`jSX-Y=CbCR4Dh+$1t0;@ zh#fbL#P;{Suc!nMq&^p9u7|{c2gMeJo~@pSOz9C20RZ@eBK}}TrT9Vdtb|>nZ68%s zWJsz<*04Ts(i99$dj?OxU&e=|cD}#K683fuCern_=MiRqzs0(8Uh@WAU0@g0PgtLqcdS>|k@FN7UCr}DC+&RlkX7WBnR@+x9=>x)zOf`a683Zos2wxZ{ z81hfXi5|tc_2TUiu8jxmW~H>)^%@>ms?4ge`}fU{FkTjG76+al`6~MXbXt1G*$L(m z!5EI$da-|{(GYwk!axzy!kWrUh(b6jA%X$mQhr&L01$v1X6HrtVGrEz#t)%B`ltX+ zu?#VjQU0B+#izSUi7Uqmu+B3Lw<;Q6DO5p`sFgsRarNriz#mPm_t~K7wn`%HDtN)5 zVE-^rj0uc+Y$N_TYh2{uvSXu%b6d8^4FM)BOZXK%J7Wi2x2->dQA(=vBm=PcM5p>j z?~rOwAb|(~vgO~B&%VXZR& zATi?4$^kxIE=IxV2!+YB)Hh(xie&xG;UTKgC`x4>`XbS zoOXR%Mg(H!q&fx!2pwgE7;6kHiuFfYIO}El7BT~G?Sy2(KX3r2``< zyV(+`AA;L+2Wtr`4Fw)k5(~H4%Fh@vanv25%vx;MIwc1NL<3+Dz(9a&bJ7ZkHvwfv zk;?^T(Tr1oTLZ%bjGCxX=`a$E4MJ6(qP=)xzh@o=L!!d-I4@h`CKe0?XlF&vCQ((y zBqQ|#Sj?(016sC%etgRdUP=sIrtIwvagD(MLq8dRjA3IyATttBbaDeR1aG%^U?6;h zIG6?z2x9B5&mVlc8GpU%F6A&EqTb0O4jBewFaUeU)NcR>soU7Vpcqnc^}_}jvft+S zP`2yfP>G*hlG#X?fzWguaAEcyR6Ol!g!G%iz?3e6d~Y1mLD1o}^v3uS;^`sPAfN{8 zi^{y5!rF`sGD?B%XX;}(%$jY0?hOT^13DnIemm=oVfY&X)MPI>RkN+t*A4CE!5|$a z#z!kHsv8KoGKrN`z4`R{_&MRX;KtKxSkp3$?ix~$1cB>V!86(@vbbWglmprTbOzOs z7Xw0|JJlB4D=@@j$})Rm|5E{+^IX?rCB zAP9)C4q0`Rt7{(nd#YCL;eorq9F_1~piH_}(T5B3conz;au&IDSH|rqa$9H>I-pNZ>!R{VW3`;U7-durIfdJ<~biqS>fQzdT41fo09e|KvS4HZeT?-Lo zNGUXCWE)Mk6b7a=V0QLj8=d#U4N%qhoT5YM^^<$Q}Lz8ppa#1w|~^poCvz>eq9d77SRYQzc++aP*o4+rRQ5(%>v zJPcb2f-sChFvD#|#IYWxLylX~Fioy}jvL{xzn&i$=tXFb8nJiyv&(Yc8r}?H*S*Iz zl#78F7^p~G@$R-VfCVNJ-fJz1fa?Ga`uX^UYHGX`0L*#}PV@AX5zu9LfM9q8APq=U zTE+rFO!)6rw3*cG0ibIGj1XMx|8nuRr-utjZU#HOa&cG(JAXGFX&@QzPQ&G}OQ z^{@Y){)7Vj02AXFaa0&^+t?rnRl@%32A}mm(=U$uY>BFVtNYLDzn$3cw>bP>3(M(_ zM>99}mCfTzxGd*doGFpj&Vf4A!Pm@`IT;eRiCFyX(qAiH<2BATbI>$LLrD;xROJ!e zn@Eppg!3qM1Vglz{g21&`90?3MjU&$zHa6%0TbKpE(|@tq}LwlK_7Ybzhdw0J)g{Y zcH2zd@rV8hr@t%Mn;1Y)7ofz4qV&05s|k7M;W0i{jN6EwQV~(FMr2zO;uNM__l*{5 z1YAh~RXfQMR9a|76jGGaN+U<;H5I0mR+LZ?7yJ9`SHf$`x2M>Wg=&(Yqxw@|-AZKp zErr)Khfg4>mM(3#Z?v1sYj!vP4a83IqCW?q z%dvKc5?hvPQhX#BnB&#MkKy2@FtTN;hqgV@&DchCiblil93kt7SO`F+BZr+pd$k4$OaDBoJ1LbO)%A`r|Hj@?py-m2s!al&k zvyq2WE?UG)ae;qzM$skemQKeEM@l_QWc#J-BY7Gfa*7|n_i3O+2}K=?5kviC-!u1g zwyv`K>}llQbF$Q^)4h>dDk?0&k8yW=laC08(nFcC0Z~O3l~8F@7C}wOk=(=SI>zNq zE_L^1VoXdiR7yh&7w|DLZmZJzq*|_>`2B6gv*e{xl~j@jG?kllw_zojwBT6sNp}hL z*qNQ)3cOXsc9!A3M<3Gp{$CRSYGhp3Y}wK==TZYml$zF3ptPL)s5GslMMYM;cjl#p z6XD1%wpP;67xP$Ii%zaX=`y@n8qfE-&3Y&hDPCihYbYV$&chPpzq`Xvz`H<88<`)f z#TVMjnlb?*C5v*<2og@=^%{R8Qd_Uz%yzNu`3@Rjh1Do5+_o5R;b6auo0D*2P%E^% z4X#BLTc1~Br$WN7#+3t)f>niinKKorw7PZ;Dt?L)QEo_xwX1?^VH>Z%Yjp5r>zLtd zIV_m0QR!KRd3M#>Vh7&+dHuh)=|2p+GrgY6-ORpX9+SuPotC2i^XsR`yI&HKd61q98ski7fDTx=}{n6%j}M{fsO($2l@ z83ciKho99csQ;uvBu>}_0;(kQ3IW=JM@9|U>g6T%_8exJrmZ%EhMj@~tCRsTbJxDi zwT!8l9Sp2!STreu%cF4SIKAw;%6MCbLiGPvClIx8Cpn5D4&hN{tU&!{X}M)^VfOQJ{{!8XH!?;}kZE^EeM7*JxB z(GdWY$RZ{hX6D#zIe)ELKOT67C!5kgr-(WktD%#9iwSufUKT)ae&Y{7QGV1d*f2Gv zvy9wJ3wJ6uzZ6S2(9xg#Py$EFlppp@!*2qjF6dmi#{2Ls) zOlE+C;2>r~le&Dt)OtwMhzz0A9c~UAj4W*!A4k}snXkk=$p~#0@Q`}Y+sLZgOuGmN z02*_&uWdRh8s=qk`OlBe5OxqusPN9QqX0M?Lx5HWjib2X5FT*AaM(t{f?zDLo{?%Z zX`V6#t%V#5stF6=C58rh4goN6fqRAkMj@O`FrF|Z(=+Py8pnJ?~hi|eAqapxZw`*4HpkS{?$Fs*PW|H8r^4uL-)=VNL*@t#z0nLv=#FXmz z?C_r_Qb6GXqas>>eY6S-Xkgbu;V8&L-?>-6Zh~Zub0A34ZG^yKiaJm%&#1_>s{&?BQnz|DYJkJm;hIJ#x65VQK0a^T!iD~zO=j-X>z9l)L~cl< z%7oIm^!&4|0K%6;U7#-UIeESVBj6nQlz=KA#vn8er994;cg=v(=5o4iY~g|c&39Yz zQU=R9cpYO%us}$4q{M4S06*pmW{`@|1H+i(!E4AG5F2g8MH*GHV(&LUMWbL5| zwdyutYDn(n11up>Xgm))js4@zY24v`CSu*~VG`NDzsE3R+l#}EvaLG>+X4u&=>;ut zo^YI?=`LkTr9esx^XMg6A@{;iT`JS}#=B74s9l%Cd_$9`UaaK@hr5{q$1ly@hzbJ&o4!0bOmkd^TY{KEyOv_rE9;Mo>%f}OmC zRd_3Y?`~%E{Q}%Clezl*dUDRsIoK^lpLGGdo4XAGbov%J6zvoMi-a}1MFGv`-rVj& z5YR^+ILATzyYjVmC$smygn4gpzaxh1j1Q(z9`l@-i<%eAG0aG@iX*X;8wM@@j{I)= zSJ}n;O;{3=loh74C#SRp8t|paSwBIrhZ&;kM!dX_-Dbu>XjD|pxZMN9b+B5|+sS|k*F%~AJY0=_QM6@qL1Go zasR|H3B(_`yfA;gFz>xEzu+t2EDN>&GXJ0I!1v$$PyI9`8e2=N@N;kFNRxe~pXZ+m zJMi$?+IlS)c_;Jzz;z&S6o`jo*@t5%f)L^iz#Ye^mg)kuv_aB5(Lml8p*%KvGr%{E zgLI$B5i5vCK6i`Wbp7?UA?njRyRU3CkhphxtX_Pv*R|b960{H5@GU`Oyt2y_0>Rfq z-84{Qd3uYl+e{$q=&)YIJ5;9dm4b(_(TpctAZD75!;BE^Y=ehk5I3IaWn=+UknIKv zv4tEan%;1o;Rl^&V}KN*A_bma#>MJ9O;E#D3@IcQEqFdQ zEbl$vV%^t#=yO`!$Ar?IkI-cy*7d>b zx2}dgQ33HBzLBU3{wR1&A^{DH1f7s>D#P15F6Ku)zXt}M^&qq@UIGEZ2!Vkyuhnbq z?yjCl4V`d=1x*Guh`@kDk9W{(i0?zSHO(Z!Dz#4F*kZUK7Lt<@=Wovq8ji}TA!iON zgZWzotiTUdbr83hAkc|X0)y!fEZ5Mg@JJnzJ&Zkwy3lGEfDi*9&Af3@AOM+~I<`1c9lAi6124Xe#|Mb6?}Y5z2b&1-Cid!WmN6^K zu*|reODJV5pk!~27yxQ03KkKW_v^I!v>j|=yxk52lSMKeE^xG0Uh6wPP_n#&e`XT^=+z)Z1~`0C);g1ckZ!&U;Tb^Dt6<_2hjEeF1%XNiv~0dyf$-via!~|( zLC;^}tDC-Z2 zpT{#uqJ?c>GU2X-V?d*tTJ75)E4>L4BmhvXmQ0%gzlPbefbUo9qk?pn44WO^YoA`o zFKS+J_*HMeo(d2GK-?pTnN*ya3N!#2Kok)mfODtC^0sIkHOOa0u;eLi=wVQ?{f3|-)m-iFep5}bF#z5S)=SrHo25{9 zh#nzwEs>|l_O%h~U>Ee?GxQN_Mb?kM$X7JH15@JU-NN`3H^Q$yEz1p~BlGCDK)Y;c zfhY!pkELi-FwKKw0CQU37S8F_2|arG8-M^%qyZa5fk2YB?e@+VL^5F5&VJMvmmZA1 z??xI6htt`InzQx2IUNBDiw6XULRhJXDfk3%bsx|9myXB8Uaon5U)g!~kp1EWoJ{#Y zT+Qu$jJR_gPA3* zJg*E}F8CHx84uD;1_VIsRhk9{7L-XN0y1VWiLnbMv8BJJQ5rd-)B2mdmTqx#t&;;$fQEY-F z7yx>G&Q}(gkwXh?i)k_h5(HV~gj0JP0aDHP^~927#0 zfu77ZKAPW0gv=z6T8Ih4S*uBR1ubYp0TLjP$54(T z0f?PxCkVkFafGfz$C*uNl7o;YNAerA<5L=9Gf4|1hy5}ldSwt!6g_ES_$Cm(W~Epa zrj9ws zN~^bEyM#R_i$5y(k1~LL1{^Zb z6UM=axs7|7dRsX!Zf-=SM`YQuEpSkZ`ed#qOx4~?TG(!!DN?py4p|(Qr6AIRiY+2E zsM0m$^XzU@Nq!<5JWK44{l6mK%GEREqZ(_chA0|$=5FwbT1E|!Mjihpdcv243TJ33mU44qC3uspMXQEOKs|6H}I zAgSXR^H`Gg67mp|Be0YDm}oFmQK4Ev=Vmiu(U9E9PaW#*=Kcl6npD?AI^LDH zLF}wrh5gAXKIZz~?&5CPr>l`4MW&Wq*Dm>9(Y~Y4wp2AQ`djjBOOk1y3fCp6Ty|6Z zf9Gnw6afK}Z!~M?fmjRtw)2GZoOvPx<>fesy~dNyBp>L;`$bU%c^FLky(O)@%HxBg zM?8pL6aXx2apC||1@L(z`bjg+-1LE*P{#TFRY5B9@`^~d!AQW|8bgR9jWK;!Q|wZI z+Iou=dMg4EeL3tH1AFcLQkJS%RqL{ucki)Y^Pa`u8ibJ!y-!qwB+kOGk(e*+tj6>i?$0s-V+~O8Aj^jjO1=t3{}J)&9T9y>}0#2R+e-Py=2WV z+y*GT+Q{_U0e}Tkg{E9n;=Y|g&2;HwYdjGIq;BHxr4+-rm(KFg2=BT8;n!rhsqM5* z4Uci)pVeTz8={n9t>X~ZP>N!FF<&D0<4T+EKd*9YGFNOIpP&4eVgj{ma>iqg-YLK+ z=a|-DBpbjRrB!GsUgW^2DFnK+0+0igSaneVL&rZUvKa-A1H8~Wm6+-*Aqouob(6F_ zWB^9h4&eomuN#T9wUj4N4+ESF;T_eezT!aho1vyKZwc1)WlSw>Vhw=cl5^)faA#1i z2aYZ`L%14o zIvaHum!v2gkhm8QtuwW0tRus`I=**+XXe*Dec@DKY#j2juRzwrFhX&`j5h3V7NY3% zvqBc^yl{7i3cDseJm$pcFc*XZZw}lS3Ow@xk2LQpfppnozHy$QwL(W|qv>HwplKap zP<2FCu^~RtV@E6DJRqrKnIKv`l}1exZb6XO%zSl>hCLV_W1E&b#VR*?WC><0MI%;# z(PI)Rd1r?gF!P#hYKRsMB#Rbhum6<0Bxghw8(rW4ch5t6kEDUGbA8wZ2-;`{Hw)W` zi@hN#x{(JvSyTuJ3fpM^Jgmp5v^>aYjSS2~I8s1o-Mghg%bNGwK+nlK4mPfQq~C}l z;!TVX)~IAs%)D+4#zm0p6_E4M;047>3E3}5+-&QyCBp{T$>blATfy9i@)@vRwN-`H z*00TMAd;HxM+avE$JPtfUCDt-VGcbrG6(DH?|N496XPj4fougb>mF``_Htbg0vf9) z8GS9WAx{gfYRKHHSq=j4g({u~cDmK|6r|&?YR3s+OU}EcLr?=8evc{x;80?BrP?h$ z;Nyl3hO#JCK~FZsP16v% zdCXt`UT|-$52LyQ`o>qdo)c~iB`PcbQd3IOHD`MzY~Cl8nC8l6V*XdEy3IB9VL#y^ zz>}zwh14|)5v?L;+AR;pVtuA*ePy*R%gaEC>me!7lth>z<6SBtdfzS=F?I0RDEvDZ zFw~d2YYad|%$)*J-!O@ANFcsuR92RiPu5`7QmVJ4p+rQ|!Uw0S+|w`&EZW~9N`TEj?#<>3=8lp@oU0wQjl zT>G{UJl3-PCLbb~*Tz7_Y`7&KPSI-5#IXk!72Dbi{MnpK1;RU67;*NtqWefH3ebx; zFxOoT2DH-F5f4_V7?vht{L&z(>;OKYuG5|XVDY) zE+SjI%GT>rx2TO%4;;t>Mk(7{DYCmn%D1-@>%2S2%Nt(&&aI{S3)j4 zl!jtQ^W0Zcy1vGuWc5(HyM%e|e2sP-z4dj(r|@S*&s}eFfghO0lxYT(&4hk46Kckn zHbhZHMM_l>6H5+LR-{l-c5){>33K|kkN$1pZX4?o#vs8(R8$eAANYajZ75MePc+nY z5NBm-imG~!4XCv!jWvUf_iio`MN`6Nmx1-P|A3$$%v5u`z(Rek&; zTn2VK8+-eqviTF*{@0(deeTv`4#pVvceX683X4dJw4w(=&f4EM`0Zy4xU>=9a?;2x zG`@YDU8J%IiemC@Y7oiWSnORZdLFhBrE4xv`-EETVJ?PR6IcDdYRAHJa<{mi7nt%s zV-vk=olj!x0-dH97J2dkPNywQjh>MHKtOHAf(!MYIR#Lek`E_KQ3V8^7U1rR0x-eQ zGYQ@-Y+p0}Ne-j|U0_I{6?$|C3-*)xlUMV7e~aV?s}+RKFRh02OdLU@;d7io6D}PG zrWc-!PuD!hgvJ81&WEO|rBwsc>eAQo-n(fE^Vp8Oc0$;BPy0Ny6BXW|;d3zordt=0EE=c&wrhVhL1&Q$F0vUOBIP4Iw=1IW%o+fnCRr~r}!v?7ifLuata0w-R z6IXD=XJSKThfg-qK@LeYm?uIlIl~QPG+@od1z8sfGL}h7B*N`*|Fm>$bPN(_)q_*MH5uyR&gSyhT&=kpAZ~ z;wXue{SpiS_P*77+IEf)0sR7{YwyylZ=UlXS$S8%m^bSJ;Xfu!VKrW?2(#F~!HV zi7+tSC{-wbA^uZB9D{QGQ{nzH#==bi$LN0}>o}=mm1|QW{VrX;4-@+`cNl*59KXrB z)US==TEeJ^qAH>z{u=99OzHM5>um^-cJuu5A$PR?i><)zePz^X3HUl<-**BBpcVRx zqHFg5kJCZEv7qHb210S3T~IIdZB7Jl*ZPk{!@^%X&R21A=Zc7A4*n`&B8nuS&=qdMgcn5 zyuI=FF^&LXjd+t}5dPNdK(XiKb5y2mqT1BhCbmJG4qBV80pl<#-mw%3)lLUc$UAW4 z<&su4ZRk(-YspHj5x27XT>?8?AS9C87vV3WPm4tfr!r#@a}@EMQCFgsR~P)#e{TJ3z!)q;`D!M zd$o7kNCR-M4h}4+0tYY<@4*vWy$vrQ$^eeq$E*(Q@t8WSjmUM`=rLVKFQK-xYyPFH z;Wseff6u#`XtLf()@%r5R?4Rm=1M&TK#lk5xks3{W4@%SA^f0p0)kK3;u4uWXJ5`R z;nbJFS-q{w1btVCJ@#03R^~ z^&(C@;5kd7zv7Bohf^+MxiA-A!JOBfNx{AcC3iy|j)%zGg93ht=0ZVgJqB$Q2wjZ9 zEe(ux=3QifGuKmKL#J59Q3DsA*#z*<1^-gRj#bC6Hyq=K8Uu0w!FXl5v{&xthkZj` zK)a793e78Ft{m4`!Ik@&dypf*?Ycs{l?Q7U{3Lu-B-M#QK;li9#xxRlGCIo!ms8&K zxzS07`mOGr$(6JMJObyWIt)tiG34-sAPpg$~JLCWKTtDTy9yU{-i}2Q84i;??!SK|E1E4?f3;KTVz$dM9;1lS%-4bzm zMS#AGgjH*!{=0v_*<2r*su29)fdF3?&(rdYnd`Ab5q~B{A5y~aNo!Yl^7e;i*!v8L zzQ6N7hwuKMIiHb)T7S`~oVJXs94|*|t12}2>`grC_Y?b@{QQeUsbfjoFw5Cmg36TA zD2qzaC8xb?Yas#lDLtDSX`=!uE82T&78cV70?)CzJ`O%r#bQ5&0$2Z}=bXzQ7aJqp zV93qGWk!WTQ6AMTXw%%nZkc(DYa)pAa6Rf;u7-PIrCOmfG`SaCh?qIpSp`}~k1mIL z+3Oze(aMLCLfUkIv?<^-9V1AMV3h=8QM0tLZ)`)n_S$QYe|>h2j*|O(Jh*kQ%;n`D zPvvB4ZZR~Rn`9|uI(DpcbG){lEGG~AEzRw|*POeSe7Au;$IzOmC(^m;lKihFg3W3j zuAW?iiluAab5`EFy)D#j@?AIIU4>75mGCaaZ&&`L2T<%AzCl2opX}7a{Nwl->E!#U z-01xi2rseke*6BB$a{~;v8qS<67*>m(lT{b(qJ`P zP|n^>fK;&h+5XuC_EkzQe}$)re`_Z6V;~rc(V@|w4;;@pUQ~8iR;u-eiUQa9I>-Kp znmx)!K?n3zAIH$&7MU$F_2vaqAhDd7aKKEKfM)tXh&clkURcP_&EmtkizH$j*szcr zP%OK_t%pG)0DTgMzWz-q>xTW{!9mFAO;Pp`)OBj*VQ_bcex>O|Ei2m18w#J&1Fir} z=86XbHmhe9-~xAM&0ntWTfg^#_ItK%w7{WV zZ!&p8(5(5Lz#ryEz9L-y*%9BREa=sGQNbjD@l(fmJVXg z4|-u#D>d*eo?E5FgPzNTt@WDD=k#zK78;)<_Pm%Ce-v2!@4J(I`r=cIAhPROCIHMh zLY}*^d1jB8v0e%|g+46}fK4urS;)gMTiINR@i=taIS|dNzhxGXq4Qe&FCrr~{$H}; zV#|Y5KCj6O{z3v$bpRp|utE(0Xon0YzO|o=D)n@PjuD4L0Ky0(n`6ffaZvsbhF+Xh z|FmYi^gfBr=*!!G$$Hc;+!4m%6OEp} z7G7N?k9_{G(9~f2KHCBDu9`{3wCW}Hfzm~QqI>9it50vH_O`hUcpCc=*kQGm8Z@kH z5sCZ0p23jakqPN#K~YpiM@o@gd5>Zl`10BCjUc6N9$(?Y?KB{&k6j{b26z&)Z8)0w zV8bK$`blY|&9>FOq)`XxYAvJoJ~gh!!f9KnK}7d*z2=@=BU|*HlPL$twFAuJ%Vj4q zX_CB)Sw%m|JoSmdkZGh8d@=`x+oAEhmD|sf(1{F4^2-LJu*d1;_us#C%~o>(UNQ?N ze?zlx=5X5!N(iIy7>lojF-EYx3SWN%64w_yZ-r|#inYtLrI7Rc`xZ)Hk0lGngch*E zC@oD)E!9Fi2`EHCtBZu& z4+28;xfE1f_BEoI>1Sldn9?QyjdBt6sc9h(UV07RG%-mD?Qb*dY`ga%PN*p3< z^+0!YZg?blbo!c<`@P=ZU%dy5-Z{wJz(R+-pTHn50QZBpOrQa{2`i{5p&81^2U^Od zNIa#4oFM2o?RWUu2WuExlUtlGDWunK{G&j5gQBq2y|)sjQDfi4rWy0_B32b2t3l?} zinIpaNWB{N#g6*HHil1M)1T%7=fREc{wC~`dFydiEuEOO!W0=jcmsJd%%bU5oK|k> zY4flKo-4onJ*}N<39^RaBu@bw)lHr)rEJ$O5mwt(BFCy)O@PqZDtlG2Mp~UE6I~Q9Shdw>U?8W4sE4AgrI(B@b(C1q~ z^L9X5Lv2#)>HZ$CT;!*IM8nAHvQ#K8oe)$s{E_m+L%{ueALdozlfhsTXs|cPz{v2k z1S>t(?4`5{X}2;Ot}$oJ%A;tFNIa~%pZNI-&VCeFU9pn>SUyy{@zb}Jj;E44W0 zn%xgiVZ%LW1_0i)@C|OTxl+gL{;`F^9@xbZ*cdMe3aMLGj;(VZ9ktksv`n0wHv#iX z(;7aX{11C0_8*g<>v`w{pY~OO5@70YBmb^I(5J*t*M>L%U|s5*)1QEi*Z+kY{oR71 z3)aDz5xqL0DR_exe{V>5_yIQ0E@%_VjK>1 zf&+#a@n8PIdZS7;|CGNY_&gmI_y79m{MY&h@tB?On7(6&^kz!3%yrM158}82D+UoNyv_5zKU2+;JDNz=bQ56*(ynwER ziP$GK)LlohxVqKy`w4Q$MMO{LV`wbC9#+>4gVN2Xb1M7t8w#%i>5%yZzrszOqMqVG zQ#pGT!SK;Jin6 zUzhy~!W{UTiVS>#L+GSF5=4NKRm{+@l90XAx1@WQX(cGChOPvEs{xyFcgWj%{;Kov zKAv9l;9un(?p9CZG0^)($FVsCpYCjvjA3U|?mVyDYre!|Ox&gN<3H8bZ;a#Aw;G6S z9=NoUHj3L3i^JyV{wr&ZDaF&PK(+aTMQ1b=5!t?+4@0& zBSL^6RKLN3WWzxSk5lo8Fu%>vt$z2pOYE$Bf9TK2!)3BhO9>CkP49nsqkEgOuz%b9 znoRk5YZm$*wikPMtLQ6x?7f!wJuiXU+=J+y?RC7s!RvtMp!84*t%!g;I?xCJ)aC=* zZ}d7|+ykivgaGU&tw;B~qWlO>?y-l$x8(d#weNv@_dW}&dRKkrL4^s@h()rOZ7Uiv zx(X%TWfWA{r{e`Fs+httd?ByO@J2_ncFnxPY{Ek5qG|9rl$b2=B#@&{+>u#V3QRVK_9_vscm*U3S!8y-E!W99cBoLQybP@DWU2UL6 zABtezC>~^UoU1%3H1&sHaog$1d-hze8>1%LTyIc?w#!7gwTNMi%Cc3$Cj}5O{*DwC z2kZx4M}tvO#oNXW&TG2rJowcE;(EFgoJEK^HnwM5jNQ%2J6SI^~Uz zhk=S&d%XyMs-(Ur#kehkj!tlN#o|^E43MsS`t1dW?;ArZbhQzSQ8bGCTE5gB$9Z&2 z^QtXHX7A&?LP9`gv$gkNFO{QcR)HnWh9Ipcz$3_xj6>j)iRGNMXyBPE68dw%#*QXD z`U?gdJnbl(a?^kPHB@^zhReNCFmJ*gzz2!Fy^SXj@^Mf!6J;gn?i^>}x_dOpfu z4^Qq5$63m2sT4lwOF|qhB;kX@+F~Mbf$|Za{qBuph5lqL_Dqp52>-VHw!QBu-+Ax# z^L!Rg0aHPz{vR7GzA5)q2RZ&V=h@*Nai9GV@|yk@_xMJ(ayNbV+C0Ax^Qrvt5r@z@ ze=UEr`+bdt24?%iXiJRBOcC!Qc5NkR;r=fLvhX)szR$*(Ap`x<05~4(!++9C9Y1?x z?k~2_vqKdu5rc}PNF=~(f9beI!2qX(#rX;8v^4g<&ONwR^G#V1`q(9(_xAm6qU+I5 z!$^Zk(#n!(TO;hLifX^7}EiZSbEqY?$*g6u7sZ>p7T7=4DyjWvOYp{UeLW@~#(c<`{%~Ln6ztx`KHRKJR~A|IRQi3Kb5AzywJmeG5_*euQjJ8 zx#;+peVP#a3Q&D(YO&eY6`%fp2u>0&7YolVF zw>x6guegU#Y3-5^$Df3kUESo|TjeAw-0$IVE#h?F-P3u!*OkZef7R%?A6s9|{-3tD+2im_?(&h#6 zJr9MA#>dOYhva!)>*9PbiF3$gX`rr$f}3C-I*|lD?!;690;Ta+1LO_>j`{>gq>!!s z1z;f{*4=5rS6$zv++-Tt*q=p~YS8OEXLr7W-CQqRKcFs@*M(dJjo(S(eE#8}^){we zK?4-y6=NluwfpSsRI-hs^Yf>EAtt_cSd7c-g^xSI`gzb@ZUr$z^r5He=fRmkMP-P1 z>>oyj#9vPyvgpZkwx$-r3j}Q>u4w_KJ1^0CLmaR~TzWk}(%O+N9VS*T)OVK(C<#O7 zS&K3ES>Ee`^%K>%rLO4=(k*RB>3|o}DrcUht%>>NwGHNdVrmGxdueGnQ&XB;>l9=T z8eEKStO#cZ)zmB-VKgPe_7!w>+}{SiM)Bxx_ESlJBk9eKwGNl=(WxReObmiY^JEjv z4!59VTJW44d7cWhaX`1{a5dt8!%;{`;UKy#;Ig;@T&@Jj9-Vu=4+TI;wo4;5`YdG4gJj2e*ef#AJYfmj&9t38REFH(Y#1gX`7&55W5qcGE}Yoz<{nCJtz8*O zqO(k-A@Mf$%`<^C`nc*|xI%>+)#m!4vB7Ix|4;Jy#qvF|j!C}%G$Nctp*7NV*x>TM zh=Q#TkKp+H%LMLHJ_JF3nncikKl56h=eF*N{$FaYXhN~}GzA0Dua=_=s32^<+T@>= zOS8pC7n{y#uhnovi3~S_L(WhU-)F!6;(H-Jg(PP;+& z=gJ&LG9|!M_YxA34`@Moric-`$Hha=?5tIU^lB|nIlkBX9dFx+J_r9@m-!btbAUn+ zgm5%4ehEq)_nFd>7$NcPa${@14;%Nd_MQ$LYlw^Rq466HHCm|zYxCGSpNaRZ@F&}! z${~fTtXf^q=pp-GFT;z1XS%@>TekNSizgkM7rJ)kNo zD@#eGg+sfQ9*cJ{5%lBvJRjnVk_jMk3>51ZhHYtn@0RGwSfvIaf)0{xrtyxolU z$nqG~EqslQg2=z@)E8j_emKrExy!h)-!^}V3b;kA#$s`%r}QT@riB>GAJ_Yl4M`C1BlbOf9sD}RV*~4VesfRKUe2QjqVssg&*?LA!A~;?rujelqR1i& zp}}IQ^u5&PndBuGjt{x;Zo0qf9=}z0ce+1U+kHKbyP~&!jcu;KoXhC`p7z3yx)VT9 zOwN19s6-U(Ki1G#bE*}g(kMYf3?LC@<6Y6A;B&CcE!qq&=)5c@ioyX6IZl_4SbtD2 z!ookD$@T?dx1rGuiHo$bJU-3(C>|+gAN)b)WQQ%YC9UKh_8I@bE7SPjswjy%>eA(- z@OyWWRDMija>vX0 z(WUh$u)B+eX>LjCT2IGs*tDV_M|yLO?>?<(aK7rWsBY2_#m&KQ)6w&KpJ(*-Zp8RL z-6$S7-xgwF0_rjr{vF2ZHOr`*KQOrif<0Nvt86^yl8M)is{12Q*cWcP}X`< zY66M5ATVJTAjIe9x>Lze|Ap%#(#gD7*MY1E^A{q3b|1pLG5gg zT{>haFc`>n5v*a5DdeN20-CaamCEvDXmM3u(}RGQCh}_A2g)dpnER5vM$-#;;|J6iW@lv&45{S`aatoR=Ls{$1IzgKo-a zi5NoHsr$Gae{yAEnGM}S zJw)S$odq^Z4z0fnH=qcaF@#Rlq!j%YH)-)nRmsQ2N4qWDMeH4sUv4}p zf^i)(VT)p87ZpuO4XT*5=Q4yx6_h$3Bw%X~r|D|a*D znF9X~Uv6GNfktwW6)t~|?~Js6!Ze~CJ&sN4(qOaVdkm+a_nflnh2vnI_@=k)IOuZu zs#|_qK0^0ONQ_Uy!)fOP5Ko6ntHiXA%GfbLC=LTJtbMXILQ}mxsv3<{Ny9EB+ zeQD_6|Jan_P;tMwNerHD>A;RQw?D$f*4gT!7{X`J&R}lK+4w=}J@~Ygy@@ew2abc^| z@Y=b1c}G%~MOxjlXx_@16ZR}dggY%!3nJ2jo@3>G{juNdz#2%AvkMdYj2+5ati~>CY2lqZnw!H@j6T$31 zzwTz=m;HMCb_cY|!TLYLi-(+Oz^Is$kN5K7AAGVd`+0EOU%W_q-A|*#9?=d*bZ&<) zTZf}9oQwG`bxJ`IahD>0&xIF-v5Cqu6w*^;oI14pw4qIUlx{*uaffbZ225fX(%mdqeDAypv#O zlb!WHVxni(;kAWuX(zS%;lkdn(yg z#}`4Et7d3_KQYuyDE=amE|kd(F%Gx(!%9SprfLwE_6eGPS#Cr7Oa~kQj7nBVBv)_6 z{^$D#6ZrP%BspSBGa5ACHRj^J6Sp+H<2d_TQeQ{+#fKEf^8Lqz-4{EAGcfB-Pp3NuIk9J zoIe`*g$v*=y*(sZeP0#NuhF*_HJnnXKF#=wH;(c+17MB=kiXEx)h{L4tqS{G41c7| z26C(Uz$+l*K&cQFg0Gt9vAV97GZhF(F}V$=!}Vn`yNeeN^5>@JGDC$K2tVjCrATh> z@DkTVURBnV2|)l8xrhqBnj8$ds5kop_cBOV5D-Y z8VK2M#^?S!OJ-o%6B>J+Q{9 zzdK1+&~No5X83M3gY!C1oi8#9kpQj8L`?xPn1Eosv6uunV43n^_nn>adLG+6!d)rM zGnbRp5(U3U!(1zIzmE6b^*+mh($;nM^4iJPOI7cI{gcL+oq*YS33`L~*EPYBww0qwM z#@6yyo#tBzy=3)X=2+*=fpW%8Q!jk<7 zw^VNR(iofs2@tvSv-!W^_!HYk9{cp;;p}Pg@^-0)S-!^o_yS};u?Bd?A$R5(#1X(R z*bqVJHgd<;Nl0*UvMw$$+6hexG@DNPRcpMZ_C}C@DiOn#pUS%aRKL^D;Jylqyxxu0 zx%-Vqmq7xNBwSh3=_ntmCHcr>gKezhP*Fr@BaBFh&~e&A7IiS@fH*bO|Gq<#><$h9n;wiDSYJ zN$gai5gI|Jld_VN+(|-fBx%%5vu$D=PSi4RwtSgZx?j%M?sd5qXkeXzIZ?Pr; z3x!Uy7N6YrqmS^Z2FB#Rq`|z%w#*bD0?Fe} zjjwL*Z)e-L53KlIcaZWPE#n*r-$8i9UT5p^Ny*y6zB8y2KoCI%>-<6d7$b-{dVYsF zVj&0}yh5hzMJ>m(?|hFbgg%AL4)NuoH|_k+FZuSqqo>W9{5Bpv1I%5#?{Eear|jA8 z5>fR9d|n~fIv?ZA6q3rmebN%BKXyup*r@PlvCuV*>`A9UWJ5+WcG? zL#yR<7Z*~gMZae+Rw(8VDy3y>cliFI&(~Dz`A{uyoex@YTg3DTVbyNF9~=2EQrt&Z zh0QQIWKZCDnI$C&&)#I9{gl6 zryyr->3A9+S?x7>yi1c=J^e*So6j5EZxECSmx0PPDWDVV zggxMQeb9A(3a8`9F=_>%~J z;aT(7dL*HBH~ce(zm7~YpFyU;wiDLi#F5CH&jq4=x#70LKP?`y66!%-6KG(R@wwYw+Ehpqh&G8evA=aUyH zc7B+8uQ=Q^P}*N)ria9*?B!`&lm5+)7s*9W6A9KnTGH9=IhX^WJnrfJDsqN=INb7U ze#=sS1pI*NqlL!@$dC5dOyn1udNR=1MpaiZQP)Ah)urrOC6BdU0kXe+;`$-XLe{%* z>mmbMx9t4d%zdO&u?m$K6~oyPAAivjT~|HO6#{0LIipjdZB*p5o7Wrd87*WZKWjpb z?E8{=^v{Pjr1)q;2Ga1Cj>BjJdr7wOvmFCD=<~Z`SKj}+lsWA#(?6*#5uaj16&up& z4nA+m7N48T&=aUORJB|2-@4Y-jYif5f-!o-%eU_kqt7l+Hjw_K_S6{JGBG$s|7fp? z4!PfVZ!M{|s9boN6Q_BNF8%wOp-e4lG0#ED7rI#Nzvsu*_p!e!QMp{v^lCbBt?Kpz z(lcb_>xsuS&Y#C9Y^%?#2jm_Hl3f_0o~U!RvS;=xJNK?2$3{uK@cx*;mElS{bu=g1 zx2E|GZ?3p;tvNHL2>e*C?wj__*OAs!K}$EI$X?4dQDW9r!juBdvpyF!f?2HD*8dEV zGwKz7+vEBKW&RKBFo%VM9?y)*Po_mwzAUcD-Z_Q#Ge#@sB66QSNMJZAzhN?DTm#v@ zr_wBgogbJY-((2q({ncY1f?B3pe0-$k4M9*sKLuW)t=msp#Mj}f%i6Ao+sS#yS*Eo zGk`~yi&#42=&TusXS&C{_7})cgZHVbs3-IMhJD}XsrLFMa@D{( z2=I(tH^f3%5qzoXSIn!JueA+>3FB|#jo0*jX$+O@vR?fIHD|&sj0pjs32fuPu9rJU zbywr}q2hWD@g}u&Tyr+Ym*Cvh1tg#D%`uglR8o!!E}${@XH(I%JcKBj|GsOKK9CQR zj3#Q%P*9prV5=`eB~s9PwM<0^ezLnw`-1aZuhHz>Rq-2~NeLphK!*2zPPs_<&({fV zhY5E8!n?!s32Tf^K8k6% zO^8U*ljXpo-G2 zbJ-=8o4(f6UHl9{@MKJ+hDYRUE-t3OXYESq8^1OhYfUQ>i|Ytzd6E|;32Y(3_lOA+ zf96BB0>fB)bITnyTMziTIk44egQ~ z)IW0`X6xnhtv8)nWBp0z!tDfqQcL6zw~{c*AIs7VTi}BD;dFh#V$BRGm=!%`WDpQR z055=10|NR3^9RlICBgd) zzM<{CT|kK4FQ4!}rwYGbJIcYM=DY{{if@hoZ~P7mwzC(jE1j>x?0hA_8`_W*hAAl% zN#GF_5e4>XQ57`PQ)3hKC0x?9svKm3)7D)Jcv$|PCl1=d)aG6=f9Ir9EouR6GZZ0k24CMydd=jv3qo)e zf(M4;4GuYunv=3+-=sf$d*BQdkb?`Q6BtonqfdtP>&oxc5rj4WgZ100;Pd}00Q29= z(e}5(z+v)gq0e{(U`gU)`dt`^o;A2V2G^7?FG)av_-E+hUUR_J{JIWvWt)sWBs;%W zqxYAt(8D>)FQ?i4oM7bZa1#JePpvfvAvZhU_ifRaf$!}WjXibxdcR-daIn6T6HR6i zFg=AWQu|LH>S9$faq}J^CjNMv3_I{mX%iRrdTGESH!;c?r`L%SWApoubB1o%Rd(A%}Mi-$t5QbKOC~k&30KT%-q@;4W z%|pXtO7}^RXCR9KUs)_o46n?}r)((W^B1|3}*)`Cf0=2o8CvU=)cz&9B67 zp=b9C7g&6Z!`?5l(0y;(beg8*4TroRw3dJ!w@G|vn7ZPb)m=p^#wu3wKh7hUr$R+gF< ztGBbgV+paYHrh_JUAOIqH>W;}6N?{b=Tx;(+il&sx~kNc^k2EYlEdr+SHymP(Tl6z zZ|2~Z4D9RCwAw>nii0-Qun(K2)C)|V4ZH`e`c`f)G+qg>79v`*%Z7M<8)jp9Tm77p z&Ma*y8-*kz+vKzw?Aw#H=WU!lpZ)tD882F34?F(y^X!y4 zJET^mlMyUk)YqoU>j-m8WAhy57}_Twg#5F$T(@1bTiWyW%L2BW&}=Jv-v9I^mUT~a zeT!Oknpu`_$*L~ z=I3AX*^mV+gHF)!6X7mZA2PJnFr$_R8zYYIlw~fBuSa6#^*$2LrN(Hyam2g5%5FDW> zpa+`;-`x#1$B8lSzMFwD&Y^k9C`%egv?6=YAMmY$zXr~9?lGT?9ANnM*7!u)Y`k&Rxv8@zc0{> zGj2I2!78!-m>KnI2U3lhA+WiS!`5fbs)}hP&uR77OwBLl8o_vr`MdXwjOd@3-t#V# zsHP`^hRsn2;AJwzU{*P4r`I+eDVEmFau>D%Mbtyppb#Fp?PJb6Lb7lueg=` z%@?`S0=^1LG*St!fl%ra3`g`N2V9f?GK8IeD)CxOz0)Q*+5%1=#dJ%jWy^_T%BP~b z-i^A$_sJ5(NQ^=E$xOY`M#R#X~~e&Vk6=0}AR%4)YdeUIcm58}Kq))7FG2;iHyHuLuV zmcZs&v#)Qf{cJwh)YF_sGAIpa*mR>G<2nd$t|{@1a9Rvt>_iAn7Vh(HRj;U7`ipZv z6hOYngx&iMSjL6OVD)SEOARIn5)a>Zg&)Lar}#8oN*o(qw~3NMUNJzPaTDREULz1v zpG507Q}QqJd%o8GA8FEZz3v=S2&gDhi%VHdX;nu>hr-e3`8R2Ex7!V-Fc=h9gVNi? z#nR??T$u=0>L7_fMA%9DryTBU!7!tI2I6pccl5un*vD_Nm6rn#*TCTLpc?oDn_;^m zRd@<|$)Q4+uqnDLdBu`FJMzoHMt_$`Kq z#9jpRgn^S4#!NuklhZ$awdbdrO#lsh!^l{uAoCi1ujb_OFc?(XCYsT4;WAo}`z6g& zVtGGIj6d!4Xa4OUbeRKDWoz|~+q9rEBm{SG?Ax%Av!QPYl(|Ks3FP{@SFP`3p6hsY za2uJ#tF@*)P?9+v7>zmIwt4>BIzsS!1zZZkz zB(ax~5Y)1Mq1NkcSUBkD1+c4JLre*_s^^PIho$N z3s5`Nt%)(X*O-Qe-7{I>!=C_lT$TCH-RrsFN?iuJ-K>CqC|;gH>rkM9x04!Uxr>*L z9^#Y9SV5e%wKm9OIkVVupm)al@$Vh*efJfR9dFrV-aWM$?ADO#bmSEWlHA=jh?bOi zBL?E`6&+Q-Hqt&GPdo3SoDvtZ(ZNe8Kd6y;3>b*`ykP)D#uHy-xS8YLHB2i~i*wEB zol>_yCGs#A>wLfHPv4=@R^v+(;vjf7c@W5jP?phad*JpS;RYh0LG|>ZqSn2xb=gFl zj~=_iRNX+3hfIIk%Tk@MD~rs18u;EMgZEGA_|23feZQm9~**a zk{2J`c|0CEK~P)vJ%8BDZ(fKWRP1BSgoHM@j3Qs7e(^7{mg+|E6MdH>1MII)72Y5XNtY+6aCuvyyvtAfUNn4 z$9!@7+|A%^%!W7TBAFCw6(NdV9tG`2T}`6SZB0eZ{5=M?$0@lvc=q@Lo$x8I4VH z=k^LOeD*!142SM%8j_K5@?J4~RF0`P(LNMD8=|t;nxXnzC`(SHNcs0#TF>wy@u=zXsZpYGUO?MwEH9-JxP>T$2Wlh z@BQ!pG?C}_Z_jReKFm;K%NA?T8L9#N&Tjd8Pj5%m>oKuGF^G-^&_!hxqi_A+w)M3a zgf7`E(KX{<;aW*pjd_cP|x9B4#=tfrI!>6WG!>RAa28sZ}z}l|YjH?PMqTaHQu3qu(c*RPN zO~zWqOF25JWm+25Tl@qFZy^Kt&`B?v)wVdTI3t{7*MTwkUi9DeT59Ure*Jr(iMO z|L?kGAV;YARYmPVIEM4=lDr41S#~vjJ|$DqQ>V!4=7lXzJex`%EB4d|a94!1@%gdL zSSL+`ZEti|$0{?dh))c=2DqKE zve+%$rV)N<(A3!Y%ciOPRQ5~5n=HK^es6WnS_{Vs;XuCRpm~IUYFRW#3I6+i=e?z= zS!i(F>3ny;#pb2h^Q+_tM79>?xO6j)E$AR!NhJeeT6$!m6g>{ zHwapKG2TgCdOvS$XAcH0R0!3pWw`g^(#l)2p%t@?5U34rCrewS>)hyaa)-1^520#OlClPZW4UNjb>)}xodFO5^iOqH zOYk{3e|uBCd5eIcCKGIb+rxQC=_sBWf&>x(@3i`v@w!Z=xYj;Cx0s{d2TeLWDh>l6 zfbj-IV5N3OUkk6%=gh`*zIxev)8)m^io-C><1LPB*qBMU56F6xKi!Q!jZC{;8%^qU zDlO0R^z>*gfDllMKkMVwdTeFMI;p9O2`zFKdCmV-SsJRq<#v2YAtW$Jv@-PeV_EeP zlK9OA2j3;`3v%&f1+c%KZ$l5*o-J^}$LDi2g~r;MrzQkH?44KevaVBq#WUPVP`HK$ z+bNkZ48`Q@zJhtD8OZX?A7`q)id=Z$fRB`%;d_!*3l%`EE;_gP*rr)~18!--Bj1 ze>P|P?fvVSWTxX;EzHhdoqQ2F-Khf~(JpEuRK{{`7yhY^{6vsW6n=#MAyorCx1}_$ z9L+=H{%GOZ@psAdU#a_~Cu52u-J6o1(C+C1GuVcV;zj?iAHiahB(55d z1q%V_?pQC)g4{X=oO%9-zX|52OVBv34?U;ImN>QKRK&dJwX8tghM@&lG8<2 z?s9JUk3bT9zM{4Nl-M|e_<`PkPQguQlIO?IuJS6yZ!X3or!)4Z$} zglmf7haz+f=6QaS1UlwK=@HPUm;1B-ufLr~fE$nXQ1vMsj~N#(zvh9rtAihAV~QavRUtS+~C_U8y__(fDBht56H&e)a794 zm~`SXhzZde8JHP?BniYmtH7m}ePteMT2V<`u~(W!CgFG8&4f`=LoCX5qFWS>{x$R? zO(=<|^r&MMXI(2G4t5$`0&YqV9qe_Qg(E9uhUleTQFO#mR2`eI8Za%oP|V-M1+j~&;H3nWAYoR zVwBFTXhr|et+p$Pv8^G7#vM*NGJyxnYX+M;SS?W-=Oo+uZMAJPu|*_A`(#*v_RA%H zQkpi|2a<)N3Q)Rpnt4Km>K1YDjVh&t2>2^Ru~U^cN)vIC5Q4^#uxH3L0d1S? zr8kWJW$~0>ZeQlo%W*=eGFX>f9Tpp?$tvi}|32TGY?w&HgQ}0+D0;tLywJu7z=RYCBa)X>)pi$ecpaxdpzDJ(Ucx-Snw_;Y zPtvf-s4*n~i0mJ+e*yRvTYIv4s4L$6C{EN}ryulAs!yjfAkh}Zh=SMGVNdj=r06fTg$v|O z-yi5)7Y4si@$Tt$IqU??vT@irhfr=T?8HN6Yy+~K?;AR<1vp8f6|5TS^H2nceq8u08Z zR$yWc#ime=O9mr@=Q{WrbxZP3QV=$qLVCYix|S~z5MYCv?&;|8eM3(!vvDq`7kV;p zdakvkRe*@JP1L;GGp^V;po=sf$tsL(EjAKva1rGrsH&yz(7Q!r&8QSCu?*Cu)<@B; z=mX&9QiPb@Js@)>*u%nU2nYHPE9rI3e3mVm4Y}DO`Z;+h%Z@80 zks8&_#4R@xT@$WB9>?`1MD?t4VDG4VEk-Q#;tl}?B{_Y!Wc$*?)pHhQ$JZ<1MEU-h zhI#Yjlbl)$MTI0&8CE`CzOPG!_d&m4%{uo3KEH=dl-Rioq=jWaj#n|JB+$MO&EKfV zzk$`$4NJ;em1olM-U$m~NlM1PS6;TITQ5Ln%@vR)grE(l?e5Q5sL-K*fAeR2$zXe> z-F0b&V@p95DTevzL{}4o2ZaMD4`#`M`v_!2mS$oP{M74NUV60OV;&cq#XD^21u$$3 zMgbryj7I>0l~27aP`dFhzeM-3fWAFb=RO}9PUcl{wdIeYeRP_=XIbFQ zI4<{*z2_*wJ`)=VxC_%ed|jUgl^OWYl?;^UzOze})#Rd;UbfboKZ&Q*&7nC1>0BdB zN-NfyVQ8|K>e`sXbyo$89%MQZ^7;or3x_sK?M2tdC{rv>^Dj`oiJkaR&%?XNFFSI& zLf$%>imgIm7uc?)c#AwnX)y=F=Zew(redtq#0+@W{OPzz1)U5Arp24-pkIseaeXfv z1{ejor}hWZO04ASr&Y$W)_2gLwU+$$vp@%maYzyg447pAp-rSfs?O~mF)-ny#I8`S z9oDdq+WK5SS8vqX2p2xrwD%$;;CMqA8^QE`&XB|V#6%Ph-viD;n_S>M){f z?X#S*;FT zJo8=GgCgdzgHFOQY`4*rS+4L#+Ar(5d>Z+R$8sEG!fgME<9S+?cguwtzSg;-@3mP2hmoICNlBl)y+{TSGGHF!Q&3UA1u1%sewlnp{H8t@@BLBY{g~^mrld%)1iXM_~iGoPdb=J1miRxLeeTgri@9%kK?M&8k3u-gavC8qABtSTj6V>pWI=NYZmjjd#Mr`Gel#D!yzQpFuW=d36Z3#o{-IR+#W2_^y@!5|;uBHZRxVWA8q zJXp}$mssadU_AAr-sAsehe{i!fz&uB#;j`+;3|<)0S6`y$=r;k5I=Z`BZiT8>KD~( zG)6L?mltn5OYgdyf5D7Y(zcR@DT#~~2G3mvJy8Aeq`v0xPe)lTl!u-<=nErt$kH^Jo zc4esI!kM{!q8M_&J)beoiPR4DnyBtBE)2t&=Qg(r)VFd81CFM14_&2O>83CZr=U`a zwPkT{3MxBVuHiDYmj(g8F{nvTeM^NcQIVp`0QAvuN2jw^&>nn~qH?h_?VX30E7_FiGa) zdJk>~vJiE3cQ~?pbOHp-u67q7@6QGuF4$}Nd0Z(} zuL12JsvQE`Z~I;!b;~FniVhxc;fxT~t`_V=C$73?2_J?oN!#C>47< zVD@Cfmk=GD@$}sWRrCO+1l@;Ou-3Y*?LF=V&B^~g=gJHPocLZRIjH4(50~?Q7O(gf z^!kVJip3qYwbMZFd;mhroB3I(G8=KjwS$aSux|^b-+ySli|S?Qt)&bs2wO+ zxqKCG8AzM=aEy+52&Dco&S4}mwtLa+y$@|a^6~HA zu~&oL(uDpG{f|xzX0zwe76vZotxGE&=V9ol6^mVs6mbIw|O=U3+GN@9P8XDEjg2aPlwW*z+xLTB^5c#Ce`0bK$7~qmI)sNeH zhLxgq$(JPdy(hMn&af{EH9XsKOw7~TqI(hgBk4@b2Mkp}$+`kCCz1b22n60#WeX9Y z_YH#;!zHf-HP;SRLUclagEUQH6ZNrt-uGR49~wAK=oFq!9n`jX?DJxhIo z3kDWF=no}U5o_V`{xBdAVe*hzFeV_vyA{3S2s+xAuffJLYS^WM`=StpO3mW6V3Ksj z1|R#d`(uPl;g}AT`sZx2CUM2Uvn$(?v#S4e#u|O-(xJeFvS5KO<3^d^%n)oXv(MvU>g*(jo|Uxz6R0gv}#NX&xX% zK|%sBI3QlPeM-Y=XiNLY^;^>|THG!y*awP`Cl4N@IQXyTtBf9-toZ0zXfVs0vi!V&^h-s++C#ZPjc*4mSNfByH5(4Psg3vA#9$+wDoIPTQu zFan;Z+_-qJDA>mvS~z=6+`2JRxppI|Ww*i%R1GN`5sh!yR3@G%*O7>Y%Rf@W9+3Ny zI*;v*Jo>^j5D*yvV5#FQhBq|GTZ8%xd&sH|GAvv%*K}vt zYjkdDG7amk9WUl7h>SvzD|1c8U-hsKXgbkXK&${}g zEc>3Wd)Fsgf@iS0=L7rSa@?*soa04HUm0RXxd=<0(-VkTryB4WjKv-}?4Afi(x*c? z&Sk9Q$9bYjODxMO6!IUBt)=Xuw(L0-kBCa;mj~Wl(FjF@B>-82K{T=1R-ML|(pI6y zjtv*vWaWLX_lrd)@l2T#N=EL-nO3nye{Zho_%V)2S`vy3fdIxQ3{v@ts%u6I-?eI_ z%Lzg3wje|6O3V-ei;Nz}739Yiq7(4B~pV6=hHe zFF6sd`J>#gR>J=h{Wwt5ei4q>utCSme{l_~NZo>c8vg~$qCHLYa)D`Q0`BNfdtW;+ z7lS-|U1?(4m%v&xQl2;o_QJE@pS=3xBvPB6f|1x&BguOe1FHmfQEy8$8tW)qr} zigDONqO8Kjv|)y{PPwNNvszmD!D|c8tOagD^PMrH74z&ngJF4>3cwV=4gm!qEJ>hd z2sgAxG$Lz}Ys@>ke1c9&p6A3=u~{%z!G~G>6sWgw|PKPXk zV8c{K6By(J;#>2*w{sPLJ&Ee?cqu(=rBzV_bbHi5aal-2U1x~$L+zF3*`5nis``{G z3-zN4Q3Td7gFsz-igVjI+s11Wji(8#B2z&Cel12b9g0Aq+4^*r* zsKgVXC`({x-Ac~pjLk?L43;bO(}EicTR5x*EHYMMFrcdQ%>}-JNv4z*GZ^qHE~NqZ z7&I!mH~#9Gq3N{b^t^l{ z$XEjcIJ&!gBGY>;FgiiR+md*h%q_{YEk4)E{vXf8ClT~t2GRc&00bldp&<%$%3x5U zKF_1#AA~;5Qflo6rrzd-UlN>4F9!w$AsF{PQnIZBA%F*sE`0PWMA2sqsc?GhEw|de>|27vX24Wb zMcK~vvKEjQl|(W2#|}VCpm{v%xeijGo)Hs$E#nFr^Xfwo32D~2=OZQ#V{;j!*M z+Zg_=hJ6zWX<{yk8O&Bw;UguMfC zN=Sr>~3{cL*CDa_zW zz7VDYg~q6#Eoyx1Np}A-0l-?~t)FD-LbL-~Fc)3BOg}!#g`}ta3hW^+g@`mNwsHdx zH{G}XYne2nTsF1?Cuq+g(H!)WorPga&(*Ta=Q%MJRobgH6B*^e=D8+qC^GPKAD(!$ z21O0%^PFe zz1TFXb{%S898`-#CH-5ctpYHo-_o-eMM{PuQpf%$X}Y4K46u_yzj9`&XpNZ=Y;Ur^ zMQvzVGz{fS^a`Pq6|5(+6@O(Q>39*Ys%XJe6Ed8Pl%&oj{=bLG@4q+DrST@>w2CK| zxtOF%K$(5v8Zx_VdwXJVp%%L54TS}CMC9%)mHM5!ZoqwakLr2Bg9lfk=J@{-_joK! ztD*q^fG~Mp9>Z~bfp^`K z!Tv1C<~>{^{;}3)J4}2H{?z_fT#VG&yDg)M^qXBkJULJw4X*<-+JNe0z8K!XXQ54F zg{|wjty?StE+`hno7i_hriV`c(&JcY?Ywuvi-+^&OVcco-z`}15VJfC#q;TU zWE)4jo=SDw(7zPR5U4b+`it?}_6hms;HR%LL;Jp0R3G8o2U$wt+0zdX?Du{I)No*H z(l83HK&mR1WLy-2(AlUiE}KiDJ<_t{G!N zlmajij!9m3dda2;a}OtVLHEva`+^Bp-5J5ZJ|-E+%^6mzIAp}Il$f(S;Z9=Vt{5Op z$QZz1dOmll2J5O5Hhn^rHYuln(r}(fb%VCEp}+?aFXR7I?qFCZc#Uz4)Dk+n&eN8B zIe~bhh}CsZL$_P)H&2UTvgB|S1z#A~8n&)cZ7`tzm5Hi(lbOtU%6n}zt+0CxCWBK< z=ka7Gh5bev3=_7P@n_*u(QqUY`>6myAd(0K{^FUijUuOH%Jj4UWDWEb}V&;%g8lJhzxWcJN#=<~Z^vONx6`RT=(8D|jTvR-Kf(@{A1?R-*)Hy!rtRA5kg| zB_bJ!*T;0PEi9UpmNi52cTk}xk_XB`0AaPYi#5>_F-z#AN7E>u#<`fOF0_dH zuT?jJ5#_WPlTWf^4V+i)B5Z0st9S7j`aEMU1A@ZXmRy$$aV1BI+Gk3WQA3gu$%>de zw!gTH?!$=5A`7Ry-4zpTrd+&GX6)UbRFHg6S7_MLyAlZ_7Xj>q>5`=)SzZaPDD`%; zIVoe@0Ta0%Z&fk@#z`YHr8pqhT`G!^8GbeI{a|Wh52dd$zZKNrh zhn%mU1koh1c9xU_BocAkO^sPd-Yx3gr@%7O37kdKx^qR#vd5DYt5JNbM^&yDD(Okt znvuG5$&evhylt|zn;K-$aQR1$D=)=mI{yie1M<9bsIxQ>p-g9c3PDc}XO zOC|X*)3EOMOIxXe+!4VfOXYS17)IU3c^I@&Z6=>RYR$zXN(`_nEagL)P@1(N*C)1R z-Hl;MPWPFxc!||R)FLA)Pef)0kPD1n@oh{^9n=#Oz@VQ(rdvS)5&{fgw`UDre>OiQ zvs^fCSoUbA7>PL4W;Y+|%dEmPv(B}I7bX#j)SQV{KtqHmOp}b9S)BP<{JzIj5_Wjn zyv_g_*9T>x9K*c-2A2bx>zvuUjFg z2>PL~K2Jy8#?#AsORTBnMX&f`c*gE!#kW45yK}G&*io%SNqL40dp!pM5`OH0KSMzR zmJI*H#!ubpm_E~bNCWu%k4DYg?)dRF;~}LZUR_=eKSfG|Oia%cUXmDvW@$>KxYCnD zQnuAzVnYk}57bX<%ih~fFUt$cLPo9nbA7u?+=L!dOIgm3hty7hW50!I+Hn&9QMo%d zzm=qlwozPNt$cP;$M*e0y^H>+e7ZQ8~kAWMjx zQIf$)qEZ*??}irA#nq31h$Xv+o!WH$L}v5-n*Fa3-WO!XS2Y%BJ5Y(t12m0V(qw*N zn&ed0g3d+*5RnLax4-@@lOt%+iqeuqZkC*8|8>&dYR%AMS4tDwIdY+DICp*a09_!8 zS66u~6i{Rk#?(gbxNEw(c#8iPMh^<@ZO(_N6I^PUeayBFwG>ZAK>1RGn2H&M{}9hw zWq+YGtbgNbG#V%m8_)P{2u3Ti)05_#RFov?6PVgSnxMsAJ6q-Phu4^F zs}I!v>b%dUmO+Ba-{hsIG%VOARHI_HbAm|>m2mS3N=-P$jTEVZFY3)5Qp={++bHVC z4exCQWnsZ;7?ui-F?hq3tGhBoOKzxr=b#EwONMmA_Wmr_hP@+T@!ty4jAeENN3V0?t zV~L2mX0L70{{4#}<#4faaWDs>Xu`CM_4JagkJwsYtY|^;px{>FtlF(AZ%w z6)|0)mg5M5KLnsbAa~_tLI?|EuXST65apeGqaP}4_LAqFa{XtCea@Rc9d<8+YzmrL z8X8qZX#Or9c6If~S|`K3ejfp9RS~LoLk`Z%|7uj_&u@bfNm4=%Ib|MZF_pb0=gMh{ zjTH2EY-pIFJ47OVdPN^dw+UkC{og4DFeZ_BaE$^c>84{gKDWyDme;xuu{e|6Ho-S| z-X0ulX={8#sBpIX{^!{m#q=<$mb~l zghy7#ABkwdj9Msuk~Pp;_nhP@$~V9Fdfw&jofP4;C=W$QZGjiz{@uoOxS*K-QRAn;DvG_9hK_?`@Yw%4d?d3<5y42qw(m73ajjLS7!eF#UloU9rI8w5#8J2=Hih`{* zAt|Q0Yg)z`*fn8C&$T^DMB67)*b~*s=_C<)SwwreD(Tl+3Wh)4mZYwZL-i!384&~n z%D}FFi`k$Yj_$4e-;1*+lJD3f3kvK^2NaLS#UE_l)jNk7wzoSP>N`0yTv7CHVp@bn zDMUr&N`viYwZEyCJ<`A?Keq$OCL%(G32MH;8~h>W4`!6j+#Lc*#gD{9^8Z-4)_={@Y#SM zpRKLCOJmLF&z;nbMW5b+B*35GBN+jV{?|r-hh@R|IHYmKzQOF(*RbWSHU@O58`5Y2 zG6YNH!$9%(AEyUEh0g|z*nR7Rx%}ABxd#6T&Zr?+oo`3^C4_NNyKJfzjKgJ|vfC*f z3Z&mlr95Mp@_9#>btc%5ti*vt{S_uyNl98vO-moFv3G)n%SFO z-U^(S6V$OJJrva|8GSXGhMDdm93jR4VI@FVr37eW;d{DW-q60MFSFN|>goxXRQdkU z*0;cC3(^OG;xc{N%#MG#hv9tBfAJ7wpeRM|_x}Y|{u*7=nP`ZA3%Y;1iF9UZ?`o&X zH+=n;Bp*oRg|yT`@mY%sGJOlUpG@vw#`zaLzJ|fXv^PY{7A?2bc8d0Hzt+=ZV(vy` zk3#IJWwcW_$F=3FP$gViIw~l>boeF2Ch7QQO3zLekoE%z#E%Qxq^tm>k|%?<*O^Ur z5C@jM3i^Hs``(&0+lB*e{GvHFzp2GlQ$n+N7ud5!tg5HR{<;sxSO?G9IRW;`Syy-_#KGHEXkWDs|uRRPfGg= zKI72nF5}WD_@#-_23SPV0-X&X7KEjwgPsnWWp__OnrJNSO48>}CnVPfwe!Fj(Icf3 zEddfy1JR07aFn1W6;_5eOyOGgD=9DK`cz|)dKA|zOGC{-g=;6sD;FutOC$&wh zetWXu#4^43+(bIqWX{7ODe^Zh;Uf`;0m5Knf&?C*g}!qf@2wplFXP=x(GqnKK=9Xz zhh{IY;w!c?6=7~zT{2Z@!>@s6!1S=`YNY@VM7h-*qFm)bAN06N33Ms%n=gXorSwVw z(kL)%Z*N9LHK#rlS+O~g9Qs}{LBThbJNWsjJ2A!v%|3yRDl6o$Mq%uE3S|s=^s|_I&RJ)#& zHdE(J1``aC&0yS(v(IHe@?=RM=qMVbX;m5;ro46ligWUBS*eCas(T3rn#bbzcU&pV zCh^p`jptEm@!NyRJiBsw3(VQ;Y#cl4GEh9D^UsjraTx57p|jHDav~?YN_h&a;*o^8 znxB1Mx_u(X#sfT2$scsBv6oN>XodREDO`p2iT6Nmvw+{aUD(XLQqR*(EU*YrPj9nGA;ZfAqV3JCglMW#O2|y)?C9^lz15GMIpd zsI{jDHN=XVvLW#z)hs#5LId=zLZ`m$E-{B^krqA`CY>VD2KiCiO*-n9?zUE{8E z%n6Hr{Qs#b1OjT@wrM7mC`h6rV;IQ~@R+8A)h=n1`ALiO7#3k6kMs6OJOL$4)YA8@ zi(!&S2a(ViXG}^efV!P;8)rg`PQGt9$Ys(*7{mqWkL4PBN;J#=CzyxBv|luy&KZVx z1MI%)?0TO<_kTA~+C=i!nml?$=|+#QwTrV}k$SW(hnd{u;!CBJRO28Kqcso80WNu- zQU4N_W_ZCgDi-6YegY2!+`Es7KM*E2PcIGcs&T{iLkQ6Z8di!H6P0l93n(#5f zO(Fs=`?I2gB5!b02jXtEN`ua?;HHDFe+hnJvo+2u@L(=9tc@ z26NLYS`w@rpzdJTU9R$&ks=qFz4WlDX-KVbTxIZRl+~qR_PFPuQbae&Y?(&{&Uq_{ z$1Z8%vRGc+Hwv@>S3s!0%uCyAvy|ToRMR=h3{?)m`srJXD;--JL<>}`>ME%$p^t0n zJj+XGaRQRVpt2-X_laPxhT+{g&fxw)3gR49$@{(XB3uN-K$8hU6YvrvZQhy}JnXNNXpTG$J+-Z|VXw3nl9g!q(h4F7 zh^Q+{2~8k^(v_C(lEApBBj_zrr4%!C^5nUtU2KemRHZ~y_FA4*qsf-8-rK~rP@tf+ z?Ab`x-&vEZ)8Fr0Dd2y%jbh;`qk|9lx6-vrbgThNRNF`o%$XJ=sLjo>bLnLec1&nh zUdY$=!Bb-OilKX6GPFk{`KeJ@i?W6`UUeF{GIW!Hh%g{husH zsl#@0LJt1Us|}M7e>2;WhW-N>H@PL`GOwz5M|jyoF-8UD2n7Qt5C2HNY(y`Sx&czB zb*;gSds-=yc%(&wfWUnDgJqr#-UV*I3|z)h=dw?3cmLkOd=9mjk*7IHfYx7_=or96hQIKIJtYBtY1Z#=*o4 zGN>a01jb9r??$?S7$IieKbzfs+dAQ~Z;ab8k08>aYl~8J-8(#VU|@0XV5pUcM*r=7 z_N2$2%aYHDZbrloP;k8>@g<{4i(NQU>=zX*&?fVRtNrkxd5|3^We) zEl~3`3eAa$wDG)~3r>wFsp*N5QA^OFYC#9exp zm4rxzt!HelGagv|T`2P_}zdSe6?s!FnQ`!3VRhUc&LX7grb_!UP?Yu{9mz|w+p-=Uz-`u9ZX zVdSX;PtHecGTJq!iIM2t#11x#=rL~@BlaYZ4@{;lDx?=7FJShtV)jCMb+qVtO~2j& zTaI%7CQar$`=^((LB&JQG1FS<{$jqdOxs338U*Ts>RD<}ris*c?qVNY zw3mm~K#))^+l?#85K?hnVc(B`rD&)4r^6Ke;K>+{-iU+;RF$1*GsNtetsAll(dR|N zKI~Z6g8Epsqcm+RKk&bQjWjjJsUWhZFvcZn(CD0M^IDT;>Eq%~!3Z zcNMI48tPj~-}{TUm5tfdvA){w8d({FUi#t3LGvVxkU*Ld)t2p-VnK8qoMIBPW>u;x zn5=y-qqT+h6EtkE_CSm2vu##XlkOL^ZwRywoCh`(t_5>+>gz@`oFmAJObq1FQBHl2 z!zwdJ%u5H0hEuSj(W6?y*t1LN_4c#Y_%g;ez7})znz&K7W-`ETAXWL3aKkx5 zUfxzMT4>XD8H=zu!lH{>7)tk!4q*;u`fI^$dDW_=hAjt3DB;5~X!7K7JM|BaL!NOG z(m+J~LZO2dxtw8?5it2*SeSZKv{{N3vt;XM$GZj_Cd7c0HRUN0KxK7nNXt@`s+>jivF)=4%;igLAp)jdJdKAg z3N)vG;az;@MDSFPFwq=^EHEodi($oraT1lOGoklN=2$W&kqY3|d$8S(lxu9i{BbJA ztgL&Jn~;-!?gaA5>M35?u1-Q{o6{|5AfcxN%lZ@*3m@cr7r~k*Z(m8@+IsjIC38aK z$N*tV&L@&9yW|Nc2{gs}Nv~iPkooyOLnU6dvd~l$2P?eet@}wF@ zw-0O{Pg)AD3KCj~n=txY7Y{d&-fC8dg$W@`a7;==CM46b#D#SO?dm!KR9*i zBjPFKFCm|BSZ!pV!#tz6di81ZvbumrWt&TAqVBy}s;;xo7t-=)b{Mwxw%g6KMtS~M zapf!%NB%4>Z!JfaInZ`xOYNyUoISN#@>j3YP5*7*`wt`GYsWX}d;6L62_Y}uPsd4& zrQ_|y!J&F`JK)%dg*R@?zniHVO>)&8;cwrSF7Y}`B+A#)L|L0Zxsb~!B^3)%mGLJS)4FC1jyck}V>2kr6)fMeMxrNGRwz~}(E1pfH?L z8fHTu8v|^!F9=FhX+&I?(>4{PUy#6qgD_aExxX>AZJBnE8E|Hqdjxf-T={ghqyh}FOi;#ONr%Y&$i1l_F4*8(9v z2>qv+wti}TWstnYdIXv_930%ccV43f1`!pYPsvE5?d0Ujf{JV*2kFU5D~?E|W1er? zTPHixzs;Yjw8k*47Vf#;j^B@|)iem$!h?uq6#HVqU!tEtOpL-nIuWe`e)L;%DbXdl z{VG}uiGKIiJ86*@r=kKa{`i5cMAHz!919n$fh!?MOrxRmrJ8Ka(GoUcXj(0eT13Ue z1jRwkhqOt{f~4})?{VKtaAF9vu(J+W(-szyt122wIAvr-1mQC#QK1Y$LjXiz5&?y~ z#piQ1pMf@`PkWM@&sRt=iVPf3fvQ=&QhBF{=x{k)j*4{L1Jk*tasn9lSDueMS#<_I ze<@28#d8hO)H+=oi#5nZ=c;6vF$DJt9mBp*3B7X}|moKD*oc_;9COATqYG@Pth_*R^#$}|$k=>@a36Aerv zWLZ~>PCU?06IQH1>Wt{jvU4)pB~jqm{ty1!#~I!c5&kho|C`PRk}-SD67_ za7tEA`D0c7gByI+)D}cvbosa@BR`w=A3xT6PdBnhtMp;m3`P<4C?KM!D84u5|M%qI zc(n4;3r}D2rIpjO&}(-(I4{61V-?fM>yikGsM+f6aMuIhv+{r2Cf|nFv&6^L&9%0; zmtlPyDlo$*qhcdUy^jx3adFu2?WS_CjXSBgM+SJMu0Z0+5O|yEh>6|YPX;Ol|MlzK zIS+|2BzwY#x}xRl>~Gn6jdAQ1QSY@Fbd3e#>w0}C;Su&dOE{#Y?*iqRo6VS75L1k? zM-&J%r54H-QhxLE9j7HgVURNhsR_AOP#1jtwMkZY_w=65;af=Xre8B|fAW)B?qFr%vijkMlgq=R-uwk(L zdxwu)I!f2WbBv%|(TrcoPtZVk#!5x@Ubjhl){0`YSZHRYAmT0xAvoja)ljE*l=SEx z8g9YR*A~&<{{z?Qqvs?m(dR^g)ab-|G4$<1d)1I9t?H=fYxIqTb&|9N4Cs>^8Id`n z2B%@kh4;^E#a!tHv&{i$uq~Yr03e%b&|nY*e#qaoUD8&W{5^HC^wL;Ls*;Cd8}jE+|XnGj7#+Xf7Q!^ z?@ec`!DASG^7agX{X~Ht>+XCjxsUajFv|0-g-7dj*k1QBi4E8*>XHEdq$DqO>ZlAg4bfr;40MBYA6H*5$RJ^)Hca%rG8( zSei!}vCFeAc#V|>8buLl9S3u1s84Tin`uwJkbJv0@(9w34yp(Lt+%nF*`+kEJSB&g zhtb;f)~nN2@_wVV*y^zJwuY|~Qms`jEiEljttMJ&Z5D+_g+)a^Y%XjFh@(iH*3txvYCZUwock$G6ye-iM3E?s#n| zKM|8XWAkndLHi#@xdeSq2hW?Dn;K>v(f$MJOuBwklGw&Zv&Yg+nrJ=~<#0Q>rVvsGY0q<=aDn4@o>+tr2ZXbba^vvDW6DC2fx|?ihQLH8RL>XO9BKlw`U3R5zG&{CMBP4f zz3v5OjWb}BLKn08R3PjX*FwX(-d}B60DzibdF6BNC6sm#b_?VH7_qyAo=G{%_sACk z*L^FQg}Mv93`A_;#d#^>Wu5>gl%PYj&pdqnY-2iH7X|kkIgNio{lMMY-46@(Eq`j% zBQzxQI3;Xx_I--x5S|6U1NPihcZ1p`Enzh0J<%lqow{2M{}Ssshs5nAwKGxew3Xaa zJ{vpU{#BNm{uHTBt*ELG|2ejZprW9wg|6W(q`xPdzjJY=(EaPoUhY;ZSp_-Y9@T>u zVrqG(9mmEnQmP87dbAN9IeYQH-s8s46J_bc0?b zt-^EH5o=D7Qz~Y1`JdAt{2A&lH>TqHTRk^EVW45;4Nssja0&W|V$pzP)#|y7A5wzD z07uzLdyPyoKOQ<wSx;+Q(Bao znW)qSra#m27fi%`;zpW`#}U>sykGg42ZQt@I}h)!?U5fG-oPygAUv^NxeP2ntcLeL z#@e6L4k%Snng%@S!17lLrpB)%df(O(^!v@u`tEM$Joy;?2< zLS@}=BAlfNwY8@ytPGZifbrW|jOOfVacZ1_oW>UqWBVMQQPb0pS{}?p0*XQEG#)|I zFQ3%Ej>^)rpY&xiKj3HhZ%3YwQPh51L5-pvwQ_s`-X73qSbpP5)BPe;;Q?1}MiFTN zN4@V0e2;a1fZU!&eD6svSIXZj#!u)&^gLPnURG*HUZ{&cH@Ut2$J=Mcqkio9YY(oq z5@>+s~LkrY#{`7kKVF0wSHZ(U`~}8IH7V0AdkRb+3+3= zNGOW;J4t1))YD@Bt<+wP9E8hbY_mSrR5Xx*BTtlUvQZwufPvAa4F`VN4i3Gx+c{Wq zNdw;@Xz@I&4?~9L64H}0%cNa?c+Aikb=b66;*pkZFXdkm?#DT8ynzk!8eD6Db?WJQ{YcsZ=M(gpmHZ0bW zs)Ep^Da$n#RXC>3S21xm{+?Jqs!GIgSa4lq>NSaah9smwnTF|5B$yG9!wKS5M=lbH zld0Ox13MzVaa!8NWWOAJjyeg-=2Hp)|s)H94+L;5l_fWORrwn$?bIJS)!s{ z1h`EJFk(L0))T`v^++NkoS;D;ezIQZ!dE9BGW?B#Aj*rZpgTlwWNgH!lF_p zvB|U%RKTcW3b+UAKLz$6ZRVX8k2-a7B<@4=Z zUya4m-+rY$JjwUn&&Bjxxg~0|{`>`9Yn))2EQLz+(TA&VGbw^Z`zB&K-JfWqBkOef z+*z1j4!>EMS$)oV(>e`$7vtH1KgZ7Dl;5o3#mi>Mm39V=HnkRzI)V~8WiiUi)Ck-b=FWy%J_40=K72yS_74-i1+#=Wh zk6N(6Bv1ww;Jke;-6h|vZFbe8w`ocj$+mPPLyFgyut8Rp z4;S<2oo-gV;zpK_34$#?8!2BkBS_RriRQWdn`TIc5=sPhiFmp7-`IPyR$FbXJ)f_f zU3(=$5nq@2{1g~=?TIkq!FBq1FPB>ZFWBp_V5P4* z!6~Qyn);ZT7}x^+)8||b!N^Fp^C2tup(`niSy__9^O7Q+oTDMmxS3258o<#6RqL5u z^fc|C*-5vP8S)mCo|T;gDWyw!Y{bvI{qBi$iXl8U)LQ#kIH`3l8rLTIw@cR2HKet_A-PiouXxpWEz7Bp zT2w%BSSYGL#SMyEu8{;$+Na{%;u zC;z|mv(V458~>vpnYa+NBO-^KpuEY{V^rQ)L|}4d_gb9e$FMh3qu&M-;!G+#Kz7&i zJbct24vXrF6dA|qb_7Aw52}zPyGNH~hNsI#4*u_|Nr~#?ab2~_PERR__8NT&t2~?X zQN4-3N~B8O)xFvJ)_k}hQRfD-7a&eOQ8sRl}rohdBLo^x2~dZwE24ffP|a{!Wp zs1jfNQW|pg1U?Oalp-vE(}jIrsCOs-YnwXUZ}xBTzd|fK?m$4~=1RJiq*JM%8SU=b zdnt0#2zt3t^bLD^L^u7^t1T@mksu>SrGyGm6Fh(V*wBve&Z*TbB!y7c-tMNOn3g`?A2BkJ{5EQ(TbAWAQh zMCKXlQzp}EAc~l>FPy_HyC_OsEZf*7(ew81vNkSGqVtmHJDc>}&o6!a*J^q5=e(AN z3$2rAbTAkS5fciK81SEhzztr#0$l}bs3zUDT?tF8g#9jmw%Tnt7;uU-=rt94*%SO8 zb-n-Rtsi>+x?(@A|LIm0q!pz(W}>gFNnbie7e%i+?XKgtQ7I7-ucp^b*`bMKB8X&46%}$xKOTg&V3K!YuCNr$m%g? z=ls}U+0H*h>v-Ke-)(hs%S@~AW>>gfyzb!|4g3tg28lb}L?=fJ80lu_@;yRYidaE& zQ72DR-zXb=?=)3HkO%y(q=I^%eLx`pN}p!JE%>&B>^o)Gfzb{8>GkwrQQ z2lZ~2^7gT0)vyf4Q>2`mepR5J^Z%`395C}%Iu^(7LfZ(YV=sazqB2Pvx%*v(B5aUY zP$$tcIgB-1;DXR3K3%t@^m@ec_%f^q1KLY;#xT9nTZyTVJb1o+EdH7vQ7ry{e>y9o zyflyS$Rke@LD9>VY^EB|^0#@U@UT_Y@X}R%76-YwO4^)kA2 zH=a)GC43K^YP0CGAz?Y@C@s>flm0g!`?MLT#@R*_7HDfIr5UM(Zz!dJ(VkyIdn z5HXG81@?Hl!UNjzxSylRf;!NE?yH|)xEP~;;DE=H>pPFFA8rGfsgCfu$3sBJD2`6( z`+Tl^F)Hxd?jFe^At5ZbsB`_^VZ4PH5K=Kpp(cMGuS{@~=g2`t>O5Wa%#%DwLpx~s z`T5A%KKFm=k6ZTr5d1M-zv4Pq4>ODKJ8HN~Zo!&CcF9TcFK>vn-}nu4jAP^YV&rGj$n%H`7~ruH<{&*I#W{w3Yeq>T<90A0Ga={>j7q zPrusTignbak$-OMedM_wmOXW<%`GY*q78Sc8tWuFzmYBDc>T|feP2sRsZZWusM08l zO1K*HEuYz^P^{>zJx5NO&?AF%_ns)u<|qip58ZC2DeE zW#mEvTkOkHsM=R)`#z5EFeKc1OLKoK+4)Pq({t9??Nik`UB+F!o~J0%`FIaKeO-_+ z1xvC89DsY?Yh?jN<~A~8$(8mSJfMoJ^M3+cN4$J3fH!A;4>Z}p`uSkhAWgR!2~UPdVhQSrNd&R3jlklMPZ4^u`rTz>-Wo zTJ+NOhA#rjcyE))*(qZV3l=HxWbQFO8)o8f7>~e&29wO;ZEO;zWFtbfk3Qw57yH`0 zGNBTaErXPqmWL`;Oz8nc&XH+F7d?otr;#_lmRWSrnJ_F$A3eUKA^jTB^T9z-0CQW!h*5ODuip2hcMkD*I} z^*)~KrTB)Fy-zq;AL{^8ggu5f#+T}%87Dk+TF2*Ki_3e{kJRWZ1!0EH4Y3`L@YD#rG%T;O;-cmpnV}U_gHVJ2B>WJT4G{`Jo5xd2Dv^yeBr#Wl>MrGsf!nJHsQr+0KT^;(-}- z%oLC*AyRt3OUJ?_qs1D>urWR`52x&@O+_ivIBavxRb#j@iBk9Mn>vO3JVbhkd99AwL&E>>+bdc@y%b2T*K z#`3#3;Im;?wUhe~!sp8E_uRVo6t+XW`H=bEOXNxPe4UmanAgJqk;?Lo=r~`r-f+Ty z1J$!W`vxDrf+DhcC(jz0bMEFfj4fCd3qEPYeBID5UmcC?7x4Y^$z)sas@aQzL1Han zi9Ix-59qmm!44zmcUj5(W$>&K2Pq{Z5J3N`9wQ6C z-0XM=I3RlKWA%Pe zX~Fdtu#O}-wk3^gD>WmA*0S@ukJz<--SMOJp;4uCByh>jHTxf8?waCO40*0U`WL8; zDz!~5R$PinF`3`Fo0wgQ*14})cQI-;HpXl%G-R<6q*_xcG3^Q#ltzK1PuQPj3ks`3 zDtt8cc()W-Ra4u;NSb$4p1V;C_&dvDw5@66ry+-4!=ar8(9pk`v4;}sv5v}-Vk2L( z>8)yR>>CzE7QB>#QYJfdWKx>=@+z$;pM4^|{EN&p?LW(CEg~v;H-R?G1aNa!^^-kTo(6ukD1CL{mS$|`*nG|h!*L-=Gx zn2kWz47BnR-|_ChV;c?PBKHkJr8_K7H)ol?z@4m=XCzlah?FRx zsGePd9J)nMRF&-CHuLFu`qC$(gvDwP8HlJW_-qkgQ6Oy7J+Tn>ey-}=-S|G51=vrI zC;fhR*S3@2%CB+$lD=wrVFU4atYQ0%JHXF@XgrvidKE*-uu-DmYKML??S{u#oEsSy z8TS|%*?UT|w0R73Csod^?uoLx&(|Z8rcP-g#tu!^vs=Wm))KVQE7LW=Lc=X|Bf0Rp zxnHpI!C{-f6Q*gO+)7JZ*n}3?MrJ!M*1L*s-eJQaVvmJwOTmlp{1SedfA=Lq=dzq7 z1AXy8r~MHK4qtdbrWN1KmTpI$7%##IAOsLVP8fb*>;?8x`TJYFPF%)RO2&|VV>@_7 zuR_mJ__oAOJ}wI$MS?wi_4XpDgP{pZ(@2ZwC#-DJjcJl2Tqzuhi)}TnX-iN1Og4(D zsH0r}m6fA+VPbmjSEaia_+aH&*J#T$-vv*PDClfx{F}Rbh$xLNm$c8v_87WcPXiS8 zV_|6=DFpEurvASd+TDHxK2lkx=!-jk`G0A_jhQjdWZ7d;AW>&>*QQC?J2HW$ymA<( zV+gbhWYupd;Xg~~E4d*=OX7T7W1|vU{%^;H!ihAG)8` z`%9uIIPzl1>!BaL0t$i%*Z#E?LsH?iroRmhm9bL8Us4~P@O#`9@!yF2p4X}Smw!Th z&S&de*YA7$)8_dObK_m+8sw*p*J_&9&qQ2|i?^P@0r`z?D&NcAgOxMY4^83$F z=X|d_gCz|*dA`aSPp?#71>B3f`}EF{&P{K5>8u~hmP5_?*;TZ|G|A!XBGFz=uVnnR z*S@CE^$53U&u6yQbEV#ityAn0jl-*ZjqI(ntZ48y+N&Oq1T;|Q8n)|sYOTT6%avqhVoI^^{xoeWvYqM&N_qd#- zGO{%L*>+o+)}Nf+Oqb0|-Spr)>=LY-Cb=&woRqleakkofY8tJ`nS9Rb+GH=j5Umsbr=%GRwO z6yQ3faoBskK@AkjM%mgt1J5IbNf6@peBfKF=E<@ir3J$3vU4~RuR5A~q;^opLt}#z zcXGQt|8;bydowI8EpMIUme)dK$TgmU+7W3G>-SQKL$4!WhJ#Czz+*J!aP+vZ6;$z# z>*rt@u4%23d#9IcqS4e?$!j@y@H$OQHcfKL!fTmBCtEr6HcqM9CnG`+IS+c)$u+3z zGOSxMhI?*K+1T)JESomCdVVc{Pb#)N&Z@@*c4KFj*``Hz>qi30(fhrYpx;*c_$qZR1&6NQs=V&|DkGq@9~XyCjij*!!HIBwr1WhXd>@uR29 zok|*wG!2dNj(c+qOvrUQevg51q* zSr+K>B|WQ9vnyIBq#%qp9bm$u7-!a_vQjIL= zwQ}sE4$i7|xw`iC6zFspJG?dxmD@m!T~ZO$$jqihE5hZpHB2G6C5?!FpzS&^7_`K2 za3-jc?dmd9f{0I8v*sE&M|q*pAcHmH9jv_;4YSRsJ*=6pNwIY1_oaW#%o~JlWLn}H9~0-6Kd+yc%0smg_^}qIxS_qMypPNurXy;_XMp{cIb}U zXp!jRlWEeT&6iW+SKpEQi2zC`lJaE)Gj}@){x=qF+viq^q6c=KqtO2th`)owYNS#2C-HPTj(8uHHJ*WC+U zh|3d-(YSeJBSy0tbE&>S*XByX?zj_`uE1D1wy3`l&arz~u9usXR-kKIjt5bqBZ^$Ek@&3@xn*f|^tT;dpst3yca z6Ir*FlsflVm8yBXOZq(%%8-X-M`_dNw?yiZtHDs^PA!wMK=tThOOSGOlro;A*~~*F z<+*95ccFzb$o4l>>UeM4B~xi9z!e4D53M=9Rp zOy;IPZ1Q8L7@WIy?!qQ_)^E@q9&DzdZuBX7ImU^XMZi)fgY%!SSvhY#ge4GDmu65z zp$|N(4c=6Y1umR(5|osQG*PwFa2aW<>6AxkiVDxOQ`+46AO~X;f&-x+Hv4D&`E5<3 zv}|fCP|1oJ(5K>9yQ!xj$xw!QNHMmWNN9~cj)LlE$kR@hjXoh7mt@!RTV1%!w5jJe zw`T4~T@?))oMc6Ks}!obC_*s~+QQxQg`hQe>a6xvr22bBmpqws{xrIK#c?p$-STH2I;IOez~B)M zqq`v>Q-uL5|^B7HPR(_4>{UHKeLsk#)9Og zxzs!6j(2A+YX>i+wPLkPP0$QSc-H;H)9Y8cB2Gur+(W)IYU5-Q==WL2theMsf zXXmI|Z?$zKYISRpMO; zVaG?2!U#uS=m3nA;s_(ntV53D1M>x~gI&|(k@OB!Nyar2$FHAzqU(4yM3u^z04`l5 z_X#kFVb;c-EgNbF2n6aNtdNa+})89I+^h*A1ZN zcUnBOx`u2EV~C-yR;Mpf)(K$giEyMQ2-%J*$}*~3h5JayhJuKTSHij@K^X{y*+Q4z z)7y(cVUip|IplJ4gg872G9#7H-+&F(C~h!aq0G}ug~i*S7B+Guz!TY!IVKuT=I>nG zWL!LG1_ai;x^SB5MB21$)3bLw7#O*P*-l~CGZdIeqm-sYk=Vxh#IkADfjR=2I_I>D zB?*`TSLi8ArTVlq! zXDt_FE15jxI9F7pyCvM~K)eXoz~W%!C2jan*rum@sJ9s`n04^2=BH_H8;a&Nl$>Nz zn1i31%_Y)GZcqkM>lx-t$=vUCGI1gu(5ZyTbP1o6jeXd|Mm}Zwrr_Q+ueux;Y?aGB z6VYuTaB`(^-6AGY2$gaXpwgk0!<;T#jcPT>wTd(w<`vyTf_tJN*z}^()5z9wkc3BG zP9!x5&6KQMBrtYrgeIkw={OeJr#PF(j@F|~Ivx}Zrk&Idh1_qU+M$@0lJVNTt?vqO zoie-~oYbc^i#17s$=MfiF0Oe49pANtLQTClXgw2(f>h-+gp%rbWDrs2>`-U87)8{h zb3ziOX6lWhhSus%G9+B;I<&$dflPB@o3~iAA%jL5^WqIq?RY3xF4m(uZj&Y4CCVUc z7h$C1?5{M4b1ifUxHYh?*^85osHU4TaHQ*@_%2idGHgfU)(Po4)MOSRbR?yUD*aZ&~jc5KrvHGK>Xg6q}W;6fd_*6Y=T zjuBPgX0eba0k7C$Gt_ewIwEKXFv9A!5aKjuA+>9O)}y4F)V4IENsTHss7@1wHjM{C z!rof5#8FngVjT;o>7iTAM;gJlLov`ay4!7ecy=dqXK$=jP>fP;5NdX#Ks3c@!Ze>|5 z7%XE;8XJQ_tsagW1lT7)@JOU)*eQ#P+G z^iol;$3u~&2x^=r&M#2H?U`hK$nf43!xm*AJE8|@bx7}s>5*K7$`^UMwxb4CecBD_ zze6^f5#T!7R8ww|*)H9M@!S3S)c)~*tCNm$&> z=$$t?H`j3Vw@k=wFNMe{T4uEFkt;zfRk)Rym8o4kHykEAh+ot&+BL7_Lt6265x~Qk z;7#^?Ib7TW5e_q;?wyNVjy3!2lJMt~Wk?$)ve4qE6%E6sYfh-5na(>_Xc1GK)N#9; zx+jsTmP^_Wl@2>b{R5JPX}9pL`_c4-(Q}pLCf%ysCfsY1C_O?2hO3%u8S4{=ww(j6 zOsy<9>Apvu-CAZ!=LJfBw@Z?bg^}Z9iz2t@?%%&B&wHLb$gL-c`Lp_=;zqhoCep}m zsCP7|EA7)OZY;XdYHx%Wk>m3@bx$b~$lJJRJuCcV=v9740H&)R{dagUBRSK2B|Pmr zO|acUJ2ifOw&iIfr@6xRGReP z9wJrzBNoOx#ZHMhmqbXB(=pSb(>FSl=(f9?bgip8YE`PrYkK9NauCE#GV1eqR|fj{ z8Tx6dZ00*AjSaC5LtA!@S{z2Gvy|vf8v%ZkkB0`UV}`IM^K&aLD@lto8nacQriRHj zEt>AOQ$4`-jcMJIR{3@^D7xu0aklpc&!U`(HJr>kAr2Oj705$et#u6awQ+4YF2Cdq)io2YbMQxlCq`3(vU7 zSsp{1xwzFetarO8868YB+Qew$yM~NTMA#s1_k3=Hj+qeb$sli@F&vC>A>QV_i3Ybd z$4LNWFg$5?KIbz@SDU7*pKE@RH74>GCPTC)&xv)Av9*U$v{O8}Zm$YiB;XYM#+RaMi-b4FAkZGZBCAD*QsjXy~e$y5tkRXLkwM_2nbHn zK+V&Vlg`hbn(8W>Of=Y~3*NKyB})~{M_aqpXG?iI&@jPv!peBqpPEJ@G8lG!iO;o7 zP1%iOe=`c&da?j^qz>rC4E;6sIQ$%5f0@6R)DcYaM^`ALoJ!A1D(U7Eh>xjZECFMjq_D=Rf>jVRdQwNfa7IL zJM9gYKKCa9%%sHRYQ^FZFtw^mYy!4V@L5dwP2^^K(PJCr)p z4J3o!k=2+1#yuSy3NL0#lk=HMlgmZe&H`yd5+k@Ziiw1?i>~9w1A}V8+aba| zPR_$rh+)pu+9qR1H_XjOc_`8#qOC@ba%Eb!t#b`lHu(W*9f^S6>lw72TNg<4Yn`TH z&x+R|0dJ1*TPYCjOfV9SS5dU#^VjhjvTWW$ZFYQqj_TZV(Bx*!F3yBS6=+&EhYLwM%!Wmh=r9rluPGv!gxCSq-N zTK!KJ^JTW37Dl$l&8wRx=?y{#N^erRBUu`aUY_H4nAqAD*0dT4%5}&a4lgZW)Sz-R zaV3D)Jlk6|<($W?K)Ac~0rUp;Qnic-LqvN1A!oP8QX>@{lwh?5FQ8jWP1Xt%Pi~prM%yWv_UBV6gC6( z5CviY1gQD#ClI9&!)_1~+uh!e7E_MQ`yIU8dUCau%%(umjYFDYgupp~>&}BCki)Yu z+Vg$@S3s!016{+=-XAGLF7Cqt)tCnB5Zv!j8(H=nfJT;BJG3#fwN?x$Zbyjp{Z~X- zt&azdY{rM6&bHi~-xlEHHO!|4-ZUK($>sU`aWvDUOsxHmHODWV1>dwpr-h!_Bc*GX z&YEsit(pdxJ{s*&P%^eVi*rpJ@*F-a7a8bXLs|)0c@V21zfC(_%4IckT(p3>IAv?x zDYAHPF|x+6Z#9s|a}#EjxL$q_5@6YKEN3@xWnZO?hRLjC(LmU!oZ1}99Idx4ZecY! zlcCU=8+aMI6I|AQsuhbNu{|tk4%F?Q7Rmrw6|hFHc9@I=cUq`IonMB+!%pX)s^L9T zRB97+(Xm6C$k$tBXifl}bT)b%*COLcoMyBgvjw95QaotHV{0vN$Y-)f#2SOVMT8f5 zgF4Ftt|!m~t?X+M0wH2z^7hg^<9Ngkf*QS~3|FB@^KBf2Gahx_yxJWz#cH)!+7`gh zkdfFS%iYsjv0X<39M?5AZmHlkTeRhxt~0pDC2|vh^@)=0MBh4HMBuwb%fULQt7^%~ zYgMb52pe6Z4nzi$DMbhcxU~rfZ=RvrZE*XJtA%G*aIa&gT~1Tryo`|S%q%-b1CC%V zBdWa%i7+HRd2MlkZk_fzBYdM%mnb$l@`F(%Pd{sL##mxc0oP z_N!sTVO(sEHG`dNA+D(_gw=5qo@;FC(^#ARhK9!K(Q6?xHV`utQL%>sHw|2xym+;Z zj!c)BXxk{(nGPAz)%G50X#CM%^H*Xm_+ zja{mgY!erjhqOZOG%GDK^}L;TJ-xwNMOCfi2+^xfaX0DLis`L4jcocFhOwil8mhPqVfx$U0b;iM|XhUrv7Navv8w^McOh^b524%-|Ra zG!t*7+FFh!@Y?NQ9A~FFh!F#3^Xaup;3}AQR;}w?(1#M738m=xRt~w}adYrrc@nfa zm~k?;Jd3w)8>{GS7+uP7oGI1ya)VIB~6Z8w`*epCf0E+1!+~Qrjg^_Q+JDFoAz^hx|w#aQK(0U z4YYxzOl|3hHsHeLHJgxft-Vf(>>cC5>q(cShQx+23=U+GOA=^fBaA@mczt(N{VfY` zrMt7U5!>bKcsv`c;g(ypb0Cd!FU+3HBTO`~JLm=+4zOdby!X$Vd(ut7cUYgscV_c-U&2$~!Bn~2RlT6TM-8s~aX5~Wk=~Xao;A@@E4h@u>_#8Cp zwX;17bW*oEJ4<8gH|@B0bC#%^p$m}CO_-a9V&b51aKlj6siQ-a(pV-eb<>3BabU1;%EE2D4h}Cc@+&srEIf1IwG+<7nTMb`14gJj4n=HcO z@-;a2%fMj*VO=pFr0zk{kp{=ln&C5>>bdL;^ z0(d1IePqNQp#hPt*GB_xo7BhV;>6SHWl_ItB|8kr7c_LZXE4#RbjWeEkPL@%^5S0c zxH65BEiU=3CHWdSx9atiC#S`+%cOS=aa!fxR<>yz(`lE%x{foV?cEoPxRr%5(`9@) zTson`U^?i86%4{Sr;eUf2kH%n zsOPKqlm`^Uv*dVo)1hv19NObW)?;yPv)RKj6v}G1J6IgUTgO(`Yd{eQ=0wnr29#)p zx-dF100eA^Y0qUpI>4;NGQI3+-;lIGOfR#l2uuMo1(&-pU924iXfC07~ zX|>|Rp>-*dozQd_R;{cYIBA?mY|e6586fn13^pmuHI^Z>Lp@M3oi@&EIheN&I&U#& zHtOBNb{j0K2Qm;ZjS0wEAT8c#GC(L{VudgOE#PE@Cn#8f0i7B7Z%S34nu=On+yOwb zTBh8+9lt5@`7Jt~$Ac+4)KASJ&v<`Nk5`6rxt1`6#0Yg5I-9qhs;*B8xl9xSZ)AwZ z5`ZDPSQA$z+wRy&EfS`slAi$q<*qr~hR1^k6Vn9`m4)fupFd6fDb+PCx+QJAn4id&Y^ytJ1A zZmFg7vzmc;)eS8&fA@@14EM?uHjpMgUG}jx za1DhR`;;ZE!NBFz^cyBWH2hr;4WTK;oX5WQ!!V)bVTf2RH4S|%n}>`>yP<*z6lw<{ zY^L63O-hpW^|on?0b|vfm7NVf8(JPV7Pp_<-+13m<#g%JWY}3*!$+K*0T1*|EQMzN z;#XeYG#7WR(LSpdDs76DsjQVlrP!XEbA~!cRm2N=7nok+dD*2_{`8K$RQt=Pa2RiD0usQw>BF(cdbhZ0lD7&``u0qG=37h`M{7k`0KS2{HJb zG?1a?!r~ss0u9}0qVQs-CevCaaxd)h;M8j&_N|uA^OwN%E%=?Tp?!xw{OUCA`!%UW zB%`&0|J8(_loCt8+Xydq=yC)I2GHZQx^|Vx#C{^-cYU{0t)wIcr_>ULfz}-mIKDj- z?Iu`AxDl_aZY{^hav!bU zy+*ogOEF{ZW6({rfb0SdGLV$Dj_i5|;niUC(dHqTq8wG9)F@_xeinhA5l6gJKShei zqVv=?cS6zG@OYjCe*L4c8P zQ;35nWBpFS57tK3(Wj-GQ2j!s^;y1A8+|M&URxUXBrwUPIq^UfQV4gLwynCa@%lqU za5)*d%DT*Wf-Mw|Cs;F{k3)etV;#3gs;(dX%T}qdi;?w_yH2y*{GyPINo6SKe;Em+ zU)0i2Uud;?qGt93EfDuvSd)l%^7Tf>F&PpY?%*Fi?8D8sR|QVoUtP|+o)&>dB$a72 zU!+!$X8K5!Ag;Z?+`LQ@LY+#6x#pJ)0koVM#q~Faj`xiLJO@|yL;p#dE*B}HGy2eY z@^cZM`^0zi6Htj$E>Gw!xTd<*@ z5x^P((QkTAT_cP~(s>FX08WkZB@}{{w?iKF^X0DG+7%W9Dc0G1(45-;$kL~Q6Z# zNRX$zHn5|7ynvq=*cr!*nW1QizDktc>E-LWF09@%pHEgTX-f|}D5o4E;)xu?1k~_(KGIzluseT2n6G*TYW?c8uE_a zB;@i%Sz!t1y2YAuhfUxenZSZRXNlAzwdkq011h1^11Dmb#1 z_veAa;!G*w=H_Ceyjf9LL?)iSN7dyHD!*!0Yhkb6vK(* zy$TIpaR!C_rU4Yz5dSFpFCULjORZ=)L;z$P>%;V+KT^Q|)*J=_#34u!nDfO>MtiW_ zUxy!ak+oyRuSPun$$Bi+KMgK(d+7AH7x2FVhLV?q^6e%>a(5vd~j_Twc+>UJ@7P6-~2*E9G@=pgfMS{r}_8qZ2dKrxQ_*o1KTfRGzJ5I+Wj z$=_kRH$`X!EpY*vWP!d)`XJ7sBO8#BvX8&6MM^2{n3haJtAmnL$aoeyQJM_3gpOW& zeCmj0-%xcIE_{Ro-GL$N(R?N`K*5vm7tBBs4miRU1P+fcFw?;txrA@*ie38{JyGtD zN0eB3TLfU22NT}VvGNW9*y}LDJaJ!|uR;g|0E373t!k4sU$KE}3)wQu`#&1CF=oEe zw_V`5y+|xRsl~+R^}ze069AGha53`bM?6~iNjFTlMQf$8JbB2oV0FO*^2vq(P|a-f zL@B3pVQM1!Xd?ImSBbhUY&_?EZ(EK05gn8>hA_M#0P)3a0>BqMpiX~Xr12vu1{n_e z4bU@>gyLeLt;{@6;>C{9>T+R4Z_|~>DC&Tl-kS&}sBV!Zz9bBA!tcy&c2_ zFvBa6M0IRuA;K#ht{BWTc!O_uqP`ha;j?3sE{O3TmdPWeZIqGYCqVNN1$`woI=^^> z@_g?QE8E04!eic^U#Y~yA{;^-KqY>8;`xL@ksK5#w}tTCs>u9qU?Y)(qwq1tubl$7O=O$DvwytzwoK**XpX>z!0&HK9L3c zFa3hBZH;YxYmx-uEyf44nL#mn$bbY|0EXb7WOa&!L|Hp&B2vU5g?FA(=Jh=xbJJ0Y z5r7+9z`Yq}0W#x3ucuW1Ok#7H$5MdIuY;(I5ykLvV{I;w{S98LJsH zhz94MUz%qTPFa7c25o*rK5Eu00s;2rv<@lRzbmsCMI?Q-gDyE0T=st9Cq+%M2j=?!TeF~1f59}4MwXvKC!>uUw_WAN_+90H z;%$>Qo)#dlslI3;pjyCs?(5K~$}Bhz!2$&k1pp?ez~~^Hg~+U@SB~&|;t>=`5Fv26 z2(9QN&SCc6^&ZtA#~*#m_yw=FrWJ63RB01RrH~#}KG}#7+DIRYCC?~_!^P+{_$gLb<02pC0VYbd+J&!I* zKsOnyv7p;RsVwbkg(g%YqZnfBD@uRj9OCcBb|=s0MW7%zMa&Ep_3c&!6tR|^e38l> z7ll3TNCl87U?ju?hy!$2-a}-k0B_MwSs0H|Q?Z+W3fhjY8b+OP#rM}?;+z;l59Npf zeuIG3j>b(c>iBmaO*O#1v1YXi3(!jY)~!Q6_d;5VlTcKMi5@Ch9581G zg$fF{IAN;5SQDu6GDhg@=Pm0dmJ{H%oQ4k_dciS*2FO?3P=S90JK!i#hyw722Sm27 zgPnDS;b9FrI-HhffPt`no@^pqI0ysVK;ZYQoG#;8YW2JbbGbD1vJEOKD5$E^mZMOI zQ3k;b0tH78=?DNq4u6CBgam@S(b{SRw*0&K(fGPKcIR}1d>?bo=vKWeDGkd;ku=C_ z^-$b3TMuQW*cSn`d56MsGH0Yr4oV#o9m=#CZ8s3M<4MWbyiGILZ~2|aKgH`d9Xo?B zXfzsB)}VIn$yM38>$;iRnaWM}n+2`R@^rTaY#KIn?a;ZPJJ*JXG@GRI84&6oYpc$+ zOgi3QuiEqZnf$i0Kt0 z90rb?c?*)ZIsM;jvgbCZKdr;U(^oyo$mY4@FLKu~^KDnRYPRiFY7;M`fMs_Y>v9}M zjs~_?32j9k?k#Zx zw~4Yy^jmD3yMB8GQNc~~T+3dYbIkX5Z1`PgLUWeM^Br$FkFv)r+b0{Rnl95qb50{# z)FZiT4xyWg4I*dXHhnj?v8-_#uJ3y@vUQe-U~(Ed2Xa%{?z606O6xXo4$Ug(plZ41 zxlZ@F;aaHZ`)=o?!#fOq7gLKyCsz$aRjF%O(cHYGuA!rEx`wglllLtQ&e8_=oP}vn z*kOjn+&M1!uWW^rIo|g$4fg&9>s=`5TC?PPF1u^U<+|NJTeaD8blD-$wYy8ulx$onS&sz+oZ?Ewckar&>06gd;=IoqP-6iB&WW)Y@$du(YzW|AHhRk<8G@H= zr?Ju`UdyquyDSO6z!|}Sfv2cILS9EwkH^*CvEjlX4t)?1*Vk__LxJF)!tS$_@jaU^ z0qVM~=71NFJ3EldU^%2h8LPu?1-$(`y|ldkF8fH~j)}5)FCox+l<7Emw&dw&Lgl8> zuBok#(q8pxwrgmd`>tz>-MS}O5)TMtL8!dt-zm+$O{@+ys7k8|Mac**o-e zk*CJ@q|n^v>r-YW9J^fWTMgfDV}qTUZaP+x<2%HS7bZeeEi`E(P9R8MV1^qKh>-&j z{&rv1Z`593)mUlr6-qWBI6;_636h82Ai^emM+pQ2cM#Kv0)cDQynw@qaQW4VhpEYk zaC|ZUAB_n>Ak-s70s5&I0U)@7*`wsz9rx5$(GAsL3BVJYoQaD8)_za2!^xE?D?86Hk(lYktiAWB>)&e$@zz z0195Am7hN&;|x1x-fMA&SR|DsuEU-ekQaNc&_`XZPMnY|*~a;ex>Q^4SO;s&LNUNV z3sNM?SIesl3Xm2ceZA2E9z}q~NhDaAkL+prY-3ouX_kWko{b zBq&6)AZ3Qf5+=naNJw{1m^cI(6zHW2Sb%5~B^<`A6bL33+gF@nWmAZzX(lo#kX*(_ zE;Ur3BLy2*$)$9pJQZ%qeOAb2qj{wm>hI)2VXNj&}Kom8DJiu zNyF^_?*I6KbNFSU@)GtuiQmxDikaj8zd6I;YEw_Bqz4?#B2Gp$6zz*M7okQC47Y=c zu>cOi<4DKt_WL0$;W)E}hE)R)?5e&JV?>Fd;TPjQ(%c>n4)lY9f+Ct-?IZ3AE5GAR zFjt{l2WDe-@ZIbJvy&@P#Ok`c>o2yHb$K&jn&$q`v9%f4bVXGwGT_kx zzsliHH)Bs9NDi40^Trtcl7JaV5b-SXI{9$aPgmV}4`$$IbN**eUC$b=U5xJvRC)y7 zHF|poD|NQPYpT8~bXX+^c)d7p)w0TKp*d^L@N=3N&FIQPYV5R6HE8WQe}Hv);-A22 zP!59B#2i6@pdk{(5<~O2KDJxi3Y0Qr+bq`4&tebJmF;z)4O%92kMGVwHb>`y(y_Sv)>}eZ8S`;9T(m+hgpI7aem%ByDCr31iXfOXlxE5Wpt}719DQd@ z>21!tw9kecfa2EZatVStGcw}4CbKvj$H7?tj1V!Dw z-&n!ZGhlEjKrs$!v|b=+in(_};V6E8zOte_&vJpr(ZI$sK;u6l01_xoh@tg)J%0`4 zc=fb3G(<6=S_m`cVLT>GK|+oY27%>j*>YL2G_^&u+)uoI&kM7GM0LFl+kzg4n2JMh zWE8;B+uBki!@u)HFbD_;2*@BJHTm!&(g>w5%!Hxn*pD9qtVN4g zmVXmcq74peq{+=#4kt1rM z-X{Zo-O=3^guRLU(g>=L+n;vT2Zso&NT8|lSc*~#hzr)h$xA8Aq*k;Y>-YCc=(>5O z^0!Wxu)0F*67Yj`$JHftpk1N~DT;dYCB)~Cp5PF7eblBH5Ql1iJkH6=?tbySKOGHK zbq65GU1&~t3y9Vk;+xRUOsP+f;m+GhI0$*}?4Xq44RVUFM(uYu7U=sMa?ZQ)a0R@4 z77K7Y>scN|{{8IxpXc|j#_h3ee z%dlqpE<8%c4dIZ1BJzerpiemVjr(jZV24sypIv8P+;hAGE+2I{RPWj25kEcT+muB< z^4%WdDm=d^|B_r{T+`_c9lkYLi;_5=W{vnMb#Ic7%wOdbsZLZ+N9qQ(1 z_$3HG)e(GVFyJ5LxpPc*{Z>{^1{b#Lqj-Er_uMy*tgVbM^NuWxN=S_95f8WBwRl$t z+_5UTDLOe=mVzf#(Hdz}&%!jGfjkc8;=}di)kxPy_8J|>YuyRV_|H$_^cXQJ8%$3V z*S8p-g|f@uXa|TrC{x-W8IkDtiSP`gS|2uWRzC@;FAbg>6y*^5Qc5t-#vn2fPD|@K zCYxL1oK^D3Sxja#A@?=N*C%hbSo|pZ{`+&%Xpc^ZHZc#f@f0)=Ja2_qdit!n0X6iF z!w^Fk3x_R%fPuRmUds)D9oDoX@KJT3gJKg&>96hxAsb=0WIM=K^-duPy70Lo&WQ*N z04{K2)NL!!h5L2H1V`GCe&;6B+!*PmN@)P~HXgLHmrw}deNgWl4i`tM%&2E-idriq zY^{H9VDYm6}ii-2e?6hjmR%`y`jxm#b-cQOX8Ek(QYN+IbS7e*X*2;kY|v z#`mR~Td?N|rwXRLz?{*~wXTG;3n~Gz0n70Fy`jM;zabORTLuh0B2nQ zDQCn_CYK?k%-uQDp`T;x!s$%I0#VlJ$H8A z3{X5oq~!Z~IR_K2xcse;OJI9B)zPUWI8c&=-2zkwD&oD2WTq6kkU!;TpG;jFaWvXE z3$YE_O=LAZGPxtKi9|Dd=~peVpbi|-h!0lIPnowF8f3LTjJY7wk?E{CNmYbKo_3}^ zX-eH$u=tOFc%7LDcilL47XwM5&mD(Ja@e}X3bJs=A}yp2kOCfx9+uvFmiZ81M~lgS zBW;6$fD1+vFE!TuZx!lcjPQ<=nAiqjv9{h|Fv7^Q%2@{fKpZRxcRltO?awBahJD)r zbG5+1moCh{LS{z!XoH&PoK%94O4=#3Bsa>O24oBXnT8+srMpN+tBvp&0{nnOkFA1C zKr%~9C^CloisabGWdUT@g7bhZhHKCCDXRT4K$!K(qVft^uzT5CLQw(-u1ey2k(UHng^7Sv!IAkr>o^0ck%rXoE34jrd zPSu)+P*Zfs7eUi<9t_3(r&|+#uA#^s3rNCoMP>#qh1?!VOxHZt}6aigaLV6X~JEmr$NE5p4tbV{iU@vGsEbIc-ZdJftJ;E6se9$EEZ4GZ(dpWW=U9t; zh0IFEVEIJ4&=D8Tq!+|$P>OkWWPC=WN{Z9`5-6N~on@o}dHj}bXBqssI{psy zsgVsH3n~F~0;vZ8q)g_{&>=%n1)T}R_<-`{bPO)ASOyc=9THK!YLS95$=p-;y1yMf zV31B!0yX8*4G5^Eb?}3)e|peLT4@hkA?D;7Q%NxrwtQ>LIS`G#eXUfYho(x6B6_AY zFY(BH=?$EMCtB21J`YuEI}|2UC{?emGa9u&0gl;@Xr7_%E+VwN{2-o@p3V5pXIyeE zJGQ5_@XAQpT&|XvH*uoOE zd0gs;2^!4+?M4WYiWphHLjS##eiy)IApNnRY$sQg>`6Zna9T!MV&7lsY{v0p&tRzI zb)1edct=(t^eB+oS&o#gjHMFZ%3vD}bkMPCf-{vrmhFxA9=cs=QDQIiXjsy@m*7y+ z&E5A3S<8`ZI)=$<2@(vIqbK#r`;dxXEA}O{9sT1MKtoDmkG3Tr6{Le${IbDI+`kw0C_h~xU zv=_#Qb8gPTq@BgPYx9ds`VHCUFUih3jC0@FC-SX=0+EOY7vJmJ-!iK;Dj{8e1H1SU zp~+$z6PsVAd%?TYdueFF)>7~|`H7}V^w2YdpBnrj;^&SJC3LbR<01pRx5O^0BbJYgpwU9APDt@V=UUF zTfTc#$G@CSf*3TyvE-yB8iiC`ynIsZ+1+EJ=jA(^LB}Ir(8jx|+r|}6nBGyO0e<-1 zqFQuOYNC=wj3CUfG$A$jH@!azGhYuNzLAJ}&di8F#K3?_KID&>$n>}?wDk+QG9d3{ z6Vsugq}{>Wp1r)T4!zr(g#ISMa0ZOKEtw2R7}AF$AQC5SfB;tw1lqkU>jnf`wc4SE zS5hki)U0^xSP)47j~9EtE$du zGSh(TX)7wvaYB%fGoQDetC33z4Z&&hEnGO+VU!eaq|yZIA)t~WQ0fenzV&*W`rTz@ zsyq<&I|sk;<~O`F^roeU1Tj&-d99&WjC2XD(SlFXO58+<`G=@?maev5>+vNC2#{`z0IGoL|4D$<=k1zzz2gBT_aM|uj3*~< z*;EimQnDgv08{8lkuD6{LJs)DM@(sp6e)Bq#~9)kGhI3{1^-)z$8FOBMW?~HtzaL# z;TCKvAfvZ)okVLefMkQ(Ojb8=|x1Q<=VjkY#euh{l0|V@Ou$JsDF+}7CYIsK0$8L8D~vYP?6@QH)54We2bxe!%z(sN z-sYTH*y2T%y=fqF-+5O=-TA?{iTPCgh__}yW{BI|NL!HYrepvY2Q;JgxWMoA}&>Xgv1!jU}qWRHS?>y)02@q1Ot zwi}Zbv0O}EwFn&;_z@5WA-GfD(QUfhbgWwrqs~MkWXjLq_U)@QB+Ea%`cmv-qt!4+ zwknU=IO7~XPP<}ZJX>(Z!P5)}yWF+CP~u39^f+IH2ue1dfIic0!Ai^v4B`*!9(u#e>DFCY*I_6@=cX?+Hiv6odg6 zHc>K5-5FXSn>iw&QphsQQUL%{ilZrt(s<*yrJ_oi0$W3QaA$}Ne1`&byz{tm676J< zEEYL)lDB{Q z0;mB1kKVj3q6pR5PU+l|9&k#Fwt*ULM*}$9;ULW3P?@~3P0}gP4u;0cY>K4vu8E~I zHX4i;QaUc{*{0?<#}hUh-%2rvHtJBaPU2eUY?;E?xXC5Xli5V0)kUjv#>(kb4Ah+0 zy2B`$&aX=y5L$aQ(SDn~J_<10ZF=3O4BTRwl5V#AZXILlZHrkN&jU!+o#&`;Xjxpw zFOKW1jBW|zJTH4l$5Mi^)|G6rt2$E+am|%OM5C;8R#z%utzi8dgO^PzQcVyf+POO% zqNQkvu_+k~8x(%M3B78=j7vyHaJcJs$jwosK3ijywWoAthIrap4WWiesK*|LOhUt0 z;^=5uV@#B>i5_ib@?&%*WgmeI<58knP zGtV~s=+JODa3BC{Ua}QY4^&y!m>sV&$wKpc&)@2FUYJKsG`EK`47c%QJDfk+9j`C*MawO7>Dcn&eQG=7_<7*fX0b_!e`Ms#nDe09UBa%?T@Fo_~V2$l6 zkM60ec_7)la-94gk6wq3u>ugTV${G};vL}iaboP+PY`;m|095Ks8^F50@O8S)-mF{ zjA!wwB|9yXI%KW13(~_NB!CUVXxGefiMc#|Tzqs6l8Jrnc0+7|#Peut?b&*wNG@T?Qag zm`NO0;AAD-I4USa>4!y!RYt6oM)~k86vgI{@M|mV#klFHQEvtlA}t}XjNoeYp!ww+MK|xB0m1P zs2))efP(&9&d_6<07XMyeDUh9)WoQ55k_E}6sg71{gLoHtgzR^3VlSCANcYo_>-;-~L3^UM$(Dk?W9bsT*~f-=}e z!lN~X*h?90uZjsp8~HMer-nXbCmaaWnBjpXC1Y6fR9fAl3>)?RBWroGh{)vAFcIZ7 zqX9Vfj+%3>&hjf&3hJ))osuTYyP3Uibb*2*wA5{3w>J@#Am)>ACmkJQB4AjoUT7E( zAk36J{uxzx_XHiDqhAwU1uKzcYi$zc3IradaI$mpJ7?+|h6l3pj3i;6xba6B^O&jD#_gfnMvu>6$CCYH z@kcyZ&9h4A*EhJi)Gm12muqK3M-K<9X0&4{f|Zwhd1lwjsoK0wMBM{e6rduM0hSlY z8Ys(<=U}60X5)_6irv=ULPA`+;)g&YLQ+_0ZH`h$c%)_7Nuk)dMIAaaY9!3X=&xEL z;tldEhb;LePhwJq)GJBo%$06Yn8RJHg~R4YYZX`imx>iJ&v+ zSv3M4XhTsmZl1K3{LooKUgrj5fzq5Uv0;6g!s6qo_AOND)u*a}ib;Y*Ou61@ZP>q% z^tqtx6c~mYyb}fy{L!}JcXH!Arl{mSNXZ%rO+9PBZZ(Epw#Uv6&tN`_F1v3nfg&l7 zCpR>XEma^yx>=h}g%h0(LewXbzrC&=BLVCk*k59w)${nYM?HO++v44mEd}RuONL6j zuEvCS3n*ir8aK-bfc2&z1^GTNCqP|CU(j~(B=c&9++-!6XG{e!#O6tPQz2w`CA{0H z3>1)J;Q7a#I068#H4cw|<)=oX9(ibtl0JF>!BNP{>CLRQ{sy%Yv0w=&_dlPe98MU^ z7UU7;=B6>gO2foxUw;?6l$mR7Hb=@t5Hisrvw9b`p7tksG zG#F6rD>NrsB-U>CUm@T%`6zroY8_Si8)%GRVcWpZ3#KsQc;qvg$>^vXx>y7_?k(%) zaz+8U=@-|~zIP(n8H&;!N038FN)XUN4iO4#xZa;vq2GYfs?fg@Wr7Z)Pd-knnex`u z*u!oKB=!e@$|re^#kkIUP!Jg9Dzr)L@QoJja$bvNbB*GR%tO`|hq4ek?BJ2*${1{& z9UV>s2I@THHyKY?v$!+JR>1AfJ~~xvdsG}mr|S!_ad_eL=N(bFBtCn9erFP02Nc3x zJ(4h&EU26jt;xn<&Z%%W+gAkW9TCRu?87(O9C5;1^L7&w<8b9GlAT4Y)z*hV^Y7oB z4Os!wVExi{65JKqOW5Ak z2$ppO$0JL-!bFV_{`r3|51KNV&l){LXN2W98SES(i30^^U%znh1JR1LLLdnih1aCyTcj* z(JL1fpSGPkjKUOnVw5>_+-aKkNo9s*M{5=M~=&5bn@hWZKfLbh@Wx#W=Dka11*ngOXqa zDj?z;t%;K}=?(x(bl=_Mhl_OQihkGtpZ(O`Mf3GG$0v0k8L=tPK1j7WWr#*zi(roB zI$^86Cs)<(F1lSn+z+Y(9uqOdtE&FIY@wqx*%FUOGe{s7g>>K$gaFq&f_KgU=y)Zl zp~M$+rEEddRT<{4%7CSik^tB?`;ZZbBiJ6A3nDN#y1NNCL<6+=tDBLX@XC#wtJFGhMo(1p8VZ-4x`Q8vqD5{d7` z(TYKoO;w2EGJ8Z{W)m=J7Z|N1VTl!W8o{Biz>bt7DFcyDTcCMXsy8inyWYQngTFqz zz(oX!1&66ANf{?kJv0bS?7cS-{kB;#dQckXx;RVZ&SFd}$|iS|QN=Oo?QpaLXvBNc zq5AEbQOyGc#pbN%h#gK5Qsjs@flb!^lZ5&fXQc+rm!A}~8LM6+q*d1S9p2AB#@ZqG za&@`f_jAJy@QQHB>iRF?Ppj`wcEx)HwII%;Fy{$pzNbIopnxZi-;$y2G#a}FzU1ln zqzM;$Y0W0I&Nnp0ta9U)$)>n}ISH+{8@xogBZOG)(V+5qo&FpO0-Gb*67y4BuFDY} zM0TtU5V^qxvz70QV# zQm1i~HGzS_78tn<`3=#*Fz4&dltTuxX)eg{h}XunZDHU(QZx8mW*w!g20b>oi4opI z8)0n*SO#5^^ENb&wq2hM>^6%9mLI(FZy@Fo8wX;`qkLP0x)SC}bJ)Ptj8QPFV17iUugm^fM#(TO zfp8<(v>c2E6C!;Ne!~o6)f}F_UO(dO(Y-q_STP0SSPW2A3sagPf_XSLc$e0(OeXsH z0dn)Uhu;(jj}k~xqPcO*^&NKpk4o0js`h_62N{0#)~e`JmT+<)K4^ztf$yX~ieBb5 z^3cHZjc(H^E2K|Ioo6b)K_(rR61M63;Cv|-cEi#iptb*N(DpN{#&Jc3|NDji1RP-P*7 z$7-`vXn~OE;y^vRd{+*$D#5x>XTF9mnqs8ZLv^~89vTLzGhM4k@ge%o-QFN|uEDLM zVkXB|3OxfsvuhK&^NmPazKs0 z`Ab^F=9BOZCfWw&G*Hu^a{F09rfQ9H2Fsp?eokf&G0fnq#7ffZ zC2$@yU&Wu}SO=emvt12#qkC`SbQ(B1I-6I*O3qC)twV^_X_I`11vdC4Rz7^9u(?{< zMq9PND%HMh(OWD@R6Cewrc=(LyvCKl%A1r7d<@EPrE1-_(s?vFJ84HY&~MP*Je;p@2kwZI($W3^h{2uGK4S~u@R?Ap|(a%;Fy*^L_13<+F@w28SI zHZJ3(m~kN;*79v#1T;{>^Vx7U`8v95JAcwAcwR+BOrZv{FgjgnPv5Df;g6Q505Y#iQRY57u(1l+Z< z<8!vE=nystX1t`WYgiqk8l7nX$KOs){#mRp>8;j5E1}uUr#~WeKW3pNYRWV$c1Aou1kazc+!s4 z+n}*mV1kHu$42T9w~U6H`>sxgp3X-Bj0F+HCSc%(A@Dm5$3YFs1Pnz&-6novZu zz(a)5SE?$8*$o7#s)5qeWXX4^8?-ACrMroZYBz3~tS=7`nlDs^o_&VGWLg_tj-ueW zv^6#erzDWrN{N<%kG03O89O<#YeB43RW*%kS}fHXwu>NHsxeZyTS>QTR?~u+P?L3N zkV(xaMM!5V@gzsUE z)HJkewEO8`-=^U;TTP{dqHB=QWi%S(HMo?wYIO-l>z0O6 zVL**mt>*D17c_B`P}MsLRfvIs=AM&Db+$a*HhZX6G8)#G3LB05+BJos!s=S*8m+o= z`I5Q3oU0WRGo+QCfuzmBYA(>fKI2H7R1OLlFhiG`t5h1HXss5ycXa7ACT{`owOmvPfyHR98XIk_57Bpx9V_-?>I9eDBXv^DE(ptvDHWkbBa*aw+ zi@JwGmAP^n*{elqkjZM6je2Yvu8{!DOS#-@Y?=;rGn}p_J*eGj_?Do{MJq^w28>sb z)sYcs;Rq4t8rd!Kh?fYpU#pqF*IZXFh9jhtmup;xGeN!Q=9xBWqTy>`*B>)=VzJ%g zvDD&|oOiAJJpHqBm|RIMfR)jun(G?MXx6lAB+up`VzgHMD1ufy&!8GD8y9@2aZ{LU zPL%8+jDpgI$&l4zJtIby492fRk95XsK@Em~BG?j~S%ulPh|s4eaSG4D4fhHd$<8=6 ze5+MyTENwFEpDDWgDOxPSDJY38SY!Oc}bpz$qn0D^yS*X)(5CVNQd2Po=VG1T**a2 z=^CvRIp&O3tDbq}*<-^i2CmtuyF-`|;uGe*TV4IGsdV9~Zpxzr~W3B#4qv|?`|g*J^> z8LjiePF<`o38ObQ6|8D=(8#o^&eBSwTa&Z55w2x9t~4u1<#ckj30mEDHI8+fS*Swf z)Vb-pOOu#$klSkF@Drmz&Pw04iLjkI4zf|gYO}d8>l)NGXB7zK^>dp}sm*G++ovLP z8jFhPn&0wx_AQw!ui(Osc$(CsMax4q-?U^jS4`~RJCgxShNG61%qGz~my@3ZF)L_> zdRk3?L9?;WJESY2Yi`wX-77}xDsxC@CQHm^!DGlmq>UMT{nL(MSfuiji zk0mp#Ot!lAj&prB>0Adf&~Y9TbBRhAiB--#CdrnX^sN4We`+*yHx|-xAYpmr$kW2J z?I_vfz|tko%{NYpW;I!jQI4EstjoHKRb?e}?HSD)M56*59qh6jX1CiJMRiV*s_LE_ zvFYG*E~%r3)@m#ma^+{HuURPA4y`D0r`Ev6YliC3G+N0+5iU*Z#&~x?-}R8l zX=&d|I#l5!l0j<`py46WI|pdhV>PgAmQJbWv}JTjrp24~s~dwh-1ftw&*u93x^92g zdcNELUhlNaqan^ib!n2;7L5jq*7Ne`pldat=$b27m=NmmB^dj>n*qzFB51f!=-Sx1 zjc^@8b?w|d%LgT+p=jZ}=K2B7A=ja9H%DOV+A))U*9GLYzi7{Tw>jo^kUD0J^saT; zrDru*&qb%%TDjEdoW``MW;t(5!-g|Kn~61@7e8XUO@}JQ8fTwtMXqN)2BRt)W{gbv z!Aj^5+@N&Hnwdx(=Tb`4wXAi{wGB(nwVBgu>}+_ljv{Cwiss`?&Qzkwkkh$=vPIz~ z8w}`R=%s4dAZpq_?^^?-+|G+G8Vy{Vq%=^͎GuI`E*eqHvqv>kL~nC_TZU;!Wu zG-iOQ0s{+29jsQ@z^z8Z6LI=j`8Z16plH0ys&SKK)+2XoIfr8LZML;nHij#tO6(H0 zt}<6Rlxo|M+_lVf+k37I5>*`DbgI%PPs>UUo!#%Ir*}I39IKk6Pn)af?kj+Y@9$u4 z61N)uw%q?u3cWUsYT7wTulrsGPyOg`HXnNwImhwS5#1+6BZ~}9H0F04)%O+4G-G}% z<$8JZzPHc9eU=MK3E{OD_>i5mL>bmLv#W$glw%P2Ec~oXS?>Q6Q(|027=F#H(Q;pC zi^`D&QBgq^9}+>nZCfdbk>{jnRX-MLEh$ZV#DC`=UXChXnW=`@$Mn$sLzK86kYEjj z1x(HQ*ki8n9kXzlWg(MfsI@vfOIgJ}L@#S0&Ci&Erg{?|YE#Unm8@J5{qM|_78Jt8 ze_|CBMO8trm!7d=*0s7_q&!=R|9toS+TladI~3k!-&Qva7e+>}NlwB+X;gMBJ=~~> zE9>MQHuiJ(MQJ}>h_ncP%NB)cS{{)wS_0X%wN^EDinKJQR0&Exf@i!7h@(SIE^{fT z0~Ofr>}9z9e_>rVe-i}}(3L3tAn3x2~BRIl}fA?KHg9zzTXM_KbH2Ppq+CodYGSIDCYvv!`g= zdl^RUFKg3z?XIrt+OJdW`@4&_4H11eo6);JHc^4rjHZmAN0nn(>>M7R0lU<0ZAEK( zo;D@M?Wl(C@t`)cXu|M^5RTZ2f;D;Q39`k$hN;vcABAs4q3z5ebk~4j8y2GhvRsBR zmC|k*1OMr$0&x%o{nwB8E+kgHY6dHt#f9w$GSwNLq8S{FUp;l&avCjJHV-qinLiD2 zj@IudwRxBe2u1>`Z4QYI>^8WLA=u6-7dAhsbbi18`erCLMAd1{WZgo#NA z=%te(^=_S`+O@)ZL<}7+lNV`u6+N5LyInUUlgaCLT5ew0+5dxY@5!zkT~G06ST#2Wg;M_C)3*1=)D{)rZ@j%To)rp z20)%-9%VNvZ{LUSVI_K$lPcD(Tgl~J@Kb++v~3SKgcgi2g3->W3ejIU@U0vl&21y+ zeBw8piaHvblYZ#^UF0!Fy>iNC&W-zMfnuWZK)?d;K2#OX;Uxd|ApK{#Aw2ZjV(~W@WzBhQs@v~9EbkD39>)s%X~0d(6_m%M2cWQl9jSV0=JDgf>oBzJDBH z+?k(f+%IdH$>IoLsJ$4-{Vu%0Ys)Ux#2DIi%XuV%)>shSJF@#!fNA>jv8fxG*31i% zz=02zKCfWCZmCarw1htJe5d*jugBc5uZ%rS((>o_1_bt#yMD0El0hY-$aFuDLi{Ny zxz&eAZ((3y2-5`pK@b5lllpuXVfTJ{Mt^_P)ie>)zq8s}(<@i#?z)`l5c86KnQKJvr?l1nt*^y|QKtu&wSmTOz84qB2~IDNmZ55u z6zJeb&|Pa%C35XUg+7~ZVsWgYFv?C^qn0# z1dP)`-PAbmP^_lLfh!e49t&Y)tzrSI8(FLslHP2c&pe4MapxMHBEO_r9{#VMRgs?)RIOrM^;#U^UwwTI=Z=^=)*IO69ly{41?~6MA2e zn4jZuWmBb(*fR|dY$A*{W;5(MR&G@a3xje&X8JRLWggIoeG-NOf zx$TpEdI*AGM|6BvT}lYy1b!N$hs|=k>PH)gO=8xba}QB$7fu>mri0RdrPl~>q&0fG zSrw!jKMOk5ZF?0Kj$Ibvt#8|xw@re$SPv(FS{dWiJ5oa#U}Th^%oH?IIKK$CoYi;ukp5J z#PkS7MWhw`&N8Kir|*)CduLdOM<|P=ghiz(Q->mg2q=!tAfl<2Dkd3GRTe@ClMGhM zm%c5fYnp?`h8q{PIv;=Ma<2mloeZgs4T5slLCKXXDqEiVT_m{8#+a0MjV&OmC(UfF zDvb)DDcwRH`g4s~UX>+19E~Elu2qk)*&mZO?O4Fa`dW!dqAK(Fvdv&&=5@PkLBSh) zyDkSNC>uNm4HOW@k=67J$Fy5aJVqW9Abz}`O4_#F%$ck-tZ_89vgN!>1YY+^VDs(5 zIsDYMV-ze|&0Hg;K@15IIQGm8WwpbsyNx!qA;3riLHgKAeY}T>0u=cq=i4+Qr>Mu4 zrEyYH4?6a?B#4nmn0D5kY$blgsER5GA}Z1}ca2W1jcBJP)f$YXO896%RZv=5THC@s zmq#j(EY)2~or*-zx(%SCN&Lqn6so(8 zdR{&aVTJJZL+5VzQ3j6S*aaaBP`#>d_qFn%li1~UGcs2DY{mD;!T?BomSO;{lxamm z61!yu{)o=>RQP;FEYwDS)l6u7Exrnq!1Nxsu7W2N9lu)$>*sJC@pS3*Yx)uDbc@Y| z#Z9<8%QvNW1CjwCXXKq$W`T>IG3iD-5|JoQHw_|J{9Q`^kgvn0gkVkC5@qi?9tx8w3@kN7z42EvuC^ z4G~0se3U9GH0ft@oaKpjOHfDlnuA}t4yMs7y>o548Vd~qgGx}eB7zMmN~*qbiU^7*h>9mb%*2YL-NV6kuB!4SBcUVKq@+%kNW|=y{b6mR z5n86MkWPL_&A#ojT2(;mKf~RMC|^MLI85O@AFMC~-G#yX0e~OX!1aBrHMp!YG&inq zVJ)r2s9u&?!nh?Mw+D!GV+4{?M&jot2Bz?vDEQ%$XBJnH{vR+!Ap&0(GTT5I1E%GA z>u_!~G@JX4cMHsNHk80uRzh(|CjV-bZ2o7_Uk@fyF~i9NP;a@eYCAJL5p(& zQt>53?AX5*-R50;awYGnx0Z34#Ju;{SGuu2VrftPhw1yCql<`SHGxzRQE8!}6rmAH zT2V!%a~Y2z@e(46Z`@00CxF$;iD?X`qN_T&SYb zi$W@{k{c(7aTUm)g4J12b3Ru|Ep;QgcMrE?Xhl`%LVG{eQrvOL}W>6=CpofjKdhsWC7LQfYZXB_fBOwn5U zct1I@`ULn*LDQb4f|lbHDvpltdnA@DLJar{b$&Pru=CHgjjrYUR-TSn&}X{z8Mw2b zld^dFMWJ)N7_e8t;pSINYkWJp{k>n&)NU?(KGXZF4~~9m1Gg|8mmVIqC>?SNM0l_G zT2hFe7xu!eymXTm)HbgjveKI7b?tPvh@v9)Or;(x6n0$Kx#@c@y9btivSN?Sgc=kP zt%FhQT=cNC<#~IqxD_3`MBDcL)vjp~6;3xVE$7lSo}5bwnovarL`H>LTIbrI#VDu>(lpYjhxtgVh&eEkA*e_-o{IAEv~|Cc zgZ!^D69Tvy_gq~+fqfKQ(4+YfJ&!vsp+r?ikrUG~DO6I05urw!7L-s%fKWzRrd*qEOwV?^nLMn}Hp%6{NYb{*;prSfQyGv3Ew2!`o6nV)JavF%J zi%5#T>QT*DAiuiG6+vsMt63r156w1(*WIb~PT2&k2 z6h=b5FZ)Y{YLq#qBBDOxZ)`zC{kvUpy}n+NF?JI#^5&5%0D8p)53xV&KC1^^CmrX^ zW*u3_y6k;VsBC6V zr-W2d6%-e6)D%&r;-sd9Pv1zNyVDjNiTHMxsVCphc&o?|7vC5!^40HfMF1XgYkOGt zAw>C2a zQ_DJqV)cDc!Ewu9ZP{n_6Lt!Qd;;_QbZl`be>FMSade*z2DDJ=6165I?DM%6upVVk zd>C!PY>uS1ycY&M?1=1s;$u1vd||#dq5*ml|G(xuo*1c=r&}m@e;~F>2>qY<`g-4= zdFA^t*%!p-jvBAtNQfe;f?U*lgzatr4U`Z^w%6Lj+CqLRO2Y^vf=X39%TfQ?HyADF zZt@S6ZWp|0`d*rDFhc;Ioj8wv=OyCShCRD${ss<@!qCIvwV932+Oa(|T6;?7-6H@SQbm92e}V@|$W)Y1y7ckMyyQ){%k ztg3*mEq=lfUh+pd4bx_kT27U$_Q}ig|Mhq7UkA%D^6Y3c(keR?<&wij(`hUtf6cX% zNW{b8%V@|uc~YYgUr6dcj4mDo26Z+F2&bZv6ZoM6*R>TXrD;`ZMW;EHL!?VK7MfLB z8WcPPHI_Yw&wX{?vjA!BD(1VU$l#H861rPNz><)FqNGUFk!md?O46+@Js(}My5^ia z*{jsc=~PVUMWwqU7BzF&=u4GR8d?^YT*ajpntWz{`Vm@H1$WFuR+Yr=p=DJQaM2US zYBY!}n)6h&8S;m_H+>qW-5ai}pbA7zHDwAlzWic?6A+TVKB zaD$m6*D*mKy@M(7b(t12Mbz5IW4iJkwcp+Bq5Azt_G4Z5+s^-c;b{1P;CbARRu{U+ zE1#3b0oFVGtt~9OS>+20htl%8E~ZK=mCr@2cbL4!3eZ^SqN_~; zTOJE)GEj=pqJI>PE|y9^Do4%0g3<`8YubZIm*>l_hpm-!mE`O3EMQ~c3`JE0 zri4vQiY|2iO9UDbL>ff*=@k>Um8rBudDb;Z`L-{%)xyh5Poab+Ev?&aylbwbzmUdi zaZ>|rrs5W+lvEYdd~HSx>h`|cMWj((V;VX@P?6!XnlL>g;xCjp`jZkjo* zl(~Q-z(GKR&Ol%+L?~fac7kgi#ik?>L&-N~otS1oBM#J_NbA4(-%1+u_WgA`8#wQ6 zXiwac9^F(Pl!w7#1y+UMq^14{V_U!A?@X;oI0rkWfH7L=uFr9pO3 zz}VQ`Yc!$l;Sqb5T>@6M!(w-GJQSG-MOh~&)=ya7L)%F5l2c1a<_|l^)b&^|G5Wo3 zHQ|S%yl=u@d^syv#I0Kj6s1oNMcRI*F~7ALdU&%EJa@;(hFn7&Z|lrXUl%?~i61L$ z>_k-g`8TmS#UQO>Fn+$Lz?=PlIVXEr)cw>wiYK$cV~(W$L((6YgVNH@m+0vyY`7Yi z`rJ-uG&@*-QZGR8*gcQ6(9YzYR!m(@Rv{pKdp^E_zMg8*czrdjfN_^=p(|O$HVyhl zyyluV!p7>JqvN$fIQZRQ{Ij-ATA-v|kW6vaOqD=JC)J4rnX=1FTnSu}fPxQVa^(c> zL<|IS7nAobkyY5jlnRam%9jjF6Hf$>mb@s3@{kb(*9k}V+X{H3kmB|`&=Xe;I#%xitiN;?b(Ir(2M z)vMX#Y0ZY80AuYsNuQ~O=9+sJtSX3#tswZ!rCL!&laP@VUkH=Jf#bG46bL9IT!|?K z6{QSG4ssKbHP)Mrh1qzRE?gNno+ayX*fN%lG{v=P@JhK*#YvAVq-t6lja0XxWoWX6 zRb7lIf(w(auy1w~!oge=*t^}22M&{CfU)nV6{`wwG}6c6p_17VG}57gg1XlowJQ>U z^0j6&z{G~U`BPgIczev-ieKz|h zd5n2$z9wDOa--Wx`)Td1_+No_fjg-RMbCNX_#2<~WqP1lNUKWL zf320G+$tufWpL$OC7Q=eJiLmHKN26YZTn@Qp2)y2(qHRj4)R9yzf*>xkdIDANhe7B z1SNiG?^vxb|aHkkApP%P*8%5nlRkj@#2@Yu zf7k8vIy~7Pa7RJ)J+GRT)2>P7|z+#+F$y#pZx^Pk>%L+pmu9_hD-4-vZg zdfI|= zlh~&t<4U`+l?7Tiyget-+;H$8e3*di;VJ(KJSbMW(wapR-}ws`Oo;}+!SuG9xe+}x z1w>Ej_BOE7TUbYf%iFO|HSp_XqcN_6#^ZKQVqa;l@9l#9pP#!+cWq)QqN=s$pnVU@ zpLY1FoGmTAhD0w#rks8!x9BtQV04g{U}8VzZcT`^qBYLE&bIC^HKPu z1$poC45KDN=jf&HG}qjo`eFzkpzoI6NRUawg3iTwP_twd+ejk$)RmW$Yd-Q#WR1)( z>*bDWWO+_jjt=VwRch}%{=a>77&{#-vOF0Sa)?a%Qnk=OtiW#XmmB^qXixLe77^8V zB*2SIJHg~#rh+60^=!jm(=W8$KQhv`jS(8&H`s~NAb)0-Tow)bT1dnL}C8V1Ni z!+3_<@S-q0=;&%uVb__1+S_`g2|*KX6J>SfCM3|Z>i zk#nbi<~(~G@?xhUF(i-C>|h?xecWI!*=Z;9bhp?|gqp3N^V{y@V6`j1O--PxfUPy~ zVGL$%p%=eMkC22Bka!TYwdd6$<3YMAL{ z`5Y@-<@55?ijR*aDSVmSwcp=;;)0?o(5qSQ`>lo5LX9-4EeL`qk&&S6CC(}bS!mdJ zV$JY5Z#k&`%5(0M)_+apJrt9AY&vskUQNFly(@ViGPymacg2xm=NH)@lJRfDs=hn+ zpqZVyD1HC8oZO4>I0Ym&A(is&3<8D-(E|)4o5IV~Htn7ca}g?98zLsY~ zjPI*U&Op?VB8|G6gUrs0S1uJ>CzQ2k-_}~U4hp5D zIs^p}lzen^~oM+*?(J-my~8JlWYb z?(Lz!yJ^PD{C*Zrn?h-{xMEMFP)E^6`tie1jk%~}Bm8;mT)6oD|93xaq8lK|ERfz##`AD@$(h7CVRTM|wK#eqwKPn$_KZ&}5e-06)X{8Yn{N_Bt3C=K4 z1U*zGe3ojTF4;xFBGf0wNH(PmJZT9b(gvr}QU3W9O(EkdzckE3_ zg8sWbCnjlTqg={Bja77ePEl{QQuobp+7u6c3yrU3^RJliqR#?ORzXqwtZD6+?vY0q zTCti8AC*4>;NN5W!(S4Bpw0#W#r@q}`P^O)MxMr(BNw2`(6mJCaWUAi$F)59SsRNw z3IVm5d)h|z(DRh`gfyZ<=A>)jW?{W1saA|polfB>SL32c+=gIFm)7ZUCYOMa9L}0O zJVHwt`a&4w<0=<(*|PRwO0{4hsj{(jTB#$@9Am-1qPKkT#Bzl0gm~qW!+zE)JS_hq zv{KU?jfYn3kDTc`3<%F#?J=LWi@(?wG$l{raoo|JzeS8{sNfpf&cBexbCY1eGrS<|`t ze^H#_!ISGd7{hbg?l(s~JhMO{Pn$hekCfY~NVVj;yIC3(RY#$O zUtEMm1V>QUc-56_yJC;ozZVw#?@Nc_+(XKwtz4~*zWuO@7?|8!T;Yms9Fqg55XiWX^*O>81aMO^qy zh9Wr9E~->pW7vH-myv=p}T$b8qbh7KPYw_zP6%;`lcZ_;ehwR9kMhGf`f-0>Vw4cWEY)a{&1;LeK z_fM6XYP~S3ILQMq1+v?kM{^?inE~v+Hk!xZwR)7Gs?xX;Qm(oZJv&xa(xvT+MV_YC zuNY{HO=r85HkVHkh$M^lkOMB#9t@z4Cki|+uUp9bJ}myq&=Aw#u-UEBgO4Oo!PP|< zaXu@EgmZoso|FGm*BiMoJ-8$Y^7wf~Vjd)B)EM`y7^8Rew{CXh<(p3RZTZL{^cUEk zK@NF8x3ydHfiR9_n86BqSHjYUIs6|j_jp=cH(Rx0$7n>wPe0ihd^601{i|J0SflUIp#}{1wPGY0zK-h2>K;9s-*0*VAXGJVR#9hwqT36ftaV6bqhw7qklKMuCFO8EZ*D9 zR!CvIq*v?ttX7dAEYN`4*@PW1!=4vNK!2cBLM{%5VC;KT?fWW-G$5d)gcSu%{oTdG z^(hcfqagZ4-BL*3V0+mjWU*rc+Q+&87k( zd52^BS6KV~WHc`C63I!uWzdOFqmU7$=bt^7{|?IOfP()cQl3jL_1Gy2j{>AAxJF|^qIwg+c{Twb${4VLK$ET8_@jP;w`(yg0 zi5kC?+}vD?U)Q;ZJKW^wpM!mT2NhI#)FL#Edgf5At7mEXh7ht8f#;ZTpgsDd54~<@ zRN@--QD4@qXYc*Li`<9%zdUo)wW+bONKGCuyXjx>6dY-T=%yF1wKM&W9ZQ`Uh9}@F zKS8*smWSN=ByWX|(&}y4;kIeUt4c~Bng+-R0uvX8(}d_|Y#hE=(?D+e#nWCQKpxh> zVklmYkA%Z;Hw^bj5|HCWcn42o{k!yKp&5`zbK>*{S18x>=>LV#egfvl%awQ(ZI z&FK>DIa^dklPb!_b|!gAl6w^FXPegT>ekv$sSAj@0j#6Dqe=#o1RB`W*v|P@MxyI& zaz&}9bqyNC(4)%3D9&PZl8K?5YLiWkD-l_{QjGqV!J~ z%*j^EBRbZs_dP3pw6sPoWW!b1R_L^DRh`z|Vv(_1Cl;t$&et>AEsQ4^*&Btg5nE|B z!Hu${gu$Am&5@Y7Jg7uzbYyC2U`)l!NJ)y6-VGvEl@>H;;m2Xp`c-cW&TPr6@ zvm+V3x71eCV3XEQVVOpW1u3vL8n}~IQk0p^l%zzc3}qP2)wQy!k!aP?N$F!oGAP!| zjgKoR?_<=E%@&kXRj3|vjHemJs)cQ`>DhJHy|KKozQWUulTCfoyhut#ft+mj>=g|I zDOUENu%Tg{0n6RU}hLC8Pv{=29tBM)1 zq^UDWU=f^VUScm=Rix95+A=XQr6LoRB}!5*qSR$1(-IMrG{Pb(QcXHv8mD)fi4v4r zv1ziY6l%%l%uGvF-Z?8lInAxBMuv4#v8E(rOa@OTnX&6-v!h9Yn4Q+AHz~~9R-CIT zwH&5OFFPdB29{ElDM&S;=NYGxiyN6*B=%Tr4x&Mn&5RTtiY8KO&T^HLnziM0iHo{x zs_$%Gh34wCilfHq#YSGp=d5y90qbP zQ7esI8JW(&@FXfT;4e7YIo5VtN?S_U^^--c6BI~ZU8W44Vun_UwAyWBDmjQW3>tyR zqG2Z#S4wJcMOf6;QewARQ97wkwiv`DQ%Ex_6j_+Fw3=^N!556mttc$E#2Qg*S!zL~ zm9Ey3)MO@JbZGIfiLE0dr+e7;O*>8S(su}m-l;0Z+TjxxvQ=a&1u~wsbrz6m*0Gbd zS)N2tFrunr_$NxF;a;!4l6YS`i^ll}u!-K+%D26htt3fzV?vF_R!CV&2+E{1=+mri zrLON_jF?u5?KF)V7MisS#)-u)Hauf}9!{*3P3$8Q=2t{oV#pODDLGuDb(E<$3n^PH zn>w4j8MIT*cG6c!Mv)h#6sJl(fQYsB0Li4Rl!Y2Ii85+V>cy!>RDW$LJSQh$=4SL1 zUdo1cV6CKWaY<0dEiw#*M5wfvX|*aaGr5wqO2&;5lrD8UWl7v{6iyRCRdoFF!XtuW z$_U267Yhk7aD2HRir$F-)y4x4F!@ccFqphIxGvDKAb%*K?vVEhqVp=+*z=6q+|0E- zam@6@shP8hV9~3F{1%}}m8|ufg35xxnBa{h&sd9M;j1BSZH8_k=(2PurLQ|tSnT`pmy1kP$q}F7`HgrViWs&kx zjIi9nq%a^30f{S2qiHr_v87^EXRZoX(@<*Gu$#om>QtSi*HU4eM;pDdxI4XVu-DO!h8qy+#eVg9n+Zi_TV3bfW`o?2TOtsZFk~ zf0*~Y#cZ6b92PYv6>UmXl8L!VgyNhqW|PiAMdYMd$jPH4Cawo~j22F|z04kpw2We! zaS@7(RneRS63sGYY@Owfu>|gGvk(dSM>$|ghRT>DRl=F{Ee`hz4lgjhg233aM{ZDd zQ}ycC)9suJXHasZeaof?)hK4i!NqO9ubzc8YcmjJLKYoG(qlJG5@2S4UdvFfBhjIz z^c)d!$K;)X9_;$2M4}J}*x1dvwO4deF(DQpd2djIoeMKa;2>_2bu`Vm92mBaGKCJ^ zoazm`@#wKmg@@6a9pCXZ|vma3d*r+5NM{Egwhfs zag4N5=_>4Um5yyPv>_W=lSMMskiFboq|+0u#b-O(V+7?|&ejN(I?lBsu_8iKqk#}? zkWzMOSei4VSb7+5HdG)(%9Op>@gSCaj3L zNLh4b;(|`86*3~$TH+){DU&=&t4S)>)hJk_3+EO_CXg;3+0o^6t18BA8(zU|;?gp) zTFIU28bU227{pXgC6m#n)UApVE+T};qMEi+1XYl->D9rd6DF};SjEk=Eq&6d263{g zw^)>wZL8k)5j$0qdf080gx>qEjcY3;(v204)0FMC=~kR)WZY6pN-bJZp4!yW@iSJ1 zzukNy$^e6vD1WMI9@M_7Kx`n0C!UrBfx)QEB#$cOdK@$+IZ-+Z9(LKwygoMIJ)iz1kVdaJXJBW{$$RhooRxP?c$7L4hVol*Nox7PKyim3~dO z_ZT+prAy?c#Kde4xQw6!0w{wrC-seoo?LG9^?lZjS%KZra8^Bv#x9}-2(}=Y&xF&m zQOf$%lUoq%j2wy1N_3^1I@>#;5p69^bVb!_T&Z);GjU3ZM#dsW;MBIp7EaY{Ohm{` zl;mq6Yuu+>P_nOWmPzEO$){x^)<_B&vI>ThlSXtcRxy;= znv(XSZFDY;hAP797=${NhZGC`$l zMV$5saG_ge&RA=C_c|nodBZTuSGY&GgE}*ko}f2S;^abwfikA27e?7u2*p^EXPGih z5ghW-8zmUd%M9qK;#3BecX-v97ZG8k*>0l>(&8)=R~wuul9D$bb4lkHwrnKI>B{)E z9+MY5>O#RfPIbCsvldxwrtyUAr7TZ0BReGJjUFMVEESC%MAnE{S)DYjY0i-%%9Ld) zGf;}X7S+NZ-bDcf5(9*V3mLdUn6}lp<~|1n)n%@3K~chzu^mcTAH~YG9G2vQFG$#i zqi!|^S0!@Fn+t|(ELSLo4VG3-HH`lXEn%LAXQ_yzh`qC%*-cqVnngx2wrblN$FT}n zL1G*9nddPn+SQOkGc6~PswOki@mjNKQ7KNZQz^(7!zqcF%9b1wb8@Guc^P58>E0T% z4hd(uqZVjuGL>wip>`%xqMLt-b2=%SQw|4bot2FwBv}dso~$Dz?C}#3t30Y@In7l? zqgc4Y_DWVwr&-K#wjYPeQ#Mvkg!RkAvHNtPU(ac`SEAwpBzt?3~%Hik$9wz4l5W>Wpe7D9+V7Gey)ZVMa|!PF7LxqKFpJ zJBs*J^CjL*BFsBTvx*jp3?%5iS=>dV90KV%$BKf>G|F}e)=xQ46E)GS(-L7tVw9z1 zns+p+3`5FMMlqP3N@jXVRxC)eb!!<-=G3I6S;$H+7)B)3rDcv@VA3hz#46Tvtz{~r z)Dx@Hg0obx*-A#i8c{WoVD<_LyeU9yEKeH9v7=5jib}&#Wot>Aio{K)NlHcSQ+oim_<9XNaATTO&%fTvScMV7%3Aiys=!gar?Qtc<#KkTJnW>HsEYx4 z%v9EBP6!v2<0RtJrfMGRqU2d+T7oqajH@FUmQ!gwth)L&)?W3gHqO#)x<=|z#ML1r z?2)pnlBJJ9S5&N6s!iu9R+E&TwNi^l){{iLQYa+>N>Qg7JW&xdjV3`wUq@>m$~}^! zHC#$c7D~l4InHx5vgtfT=)#nfxRlyfSjMC&iAAcewpERWPNtl&c#qAfp1JUaX@2xMJS!2tcA) z>R9%|#dWt?CVLGnqZ0L)YE`2;s<~9FQcB9su>wy@wG?W~!5X`u^{d3rR!WY|Q#jV^ ze6z;uZLOEaZF!X@7)DaL;?Rw^iOK>}QY`d^k`c8{R!Y{aoYu0br^%xklN(xCYims! zO4&;4yGA$C`U|kSm$FvY(wU`0HEhwkX(=>8Ehn6#Ats27Cd}q<7Lz+pO?2X1n~NE# z(omwZ$i_0ORg>0E#`wg$#eiq3sd$1+=V@vtG_mI|)uN~V<9l8$HM)S#*)d??rVQQ- z;K3@rsaW+Y^ATfKb&zYBJd4sQRS{MP7F{V-D76}+6V1)EvgUhaOr)CDS1QITR!(dQ zlBs4Ep*M_OMifbhlin&L--N(Z1NcY7HwBVAzCk((%;;5$ zRGh(Smw2+NPe)M($*D}4)UgwjP$2cCB_KqkjIOrZ9qDD93m%k>ZLO}?F{@U#+#IyZ zAcnB$YE%huv1Hd7Z$gmqP$}$qf!8Ba=cNo>VrbJ0X<)2oX;P4zM%qTo1XYry5@lAJ zEMz9|r+D#&6|G@c(u6rPjkZ!zc(ta-kZ72)kcguxfZ?Q`kq<0Jm6(ZUs*GA{NHQiM z#!{6dZI|5jHd`llNt^&pK(fCgMG0uwp9S%yBW=%hZJqZ!30YT-Z!?Xe)~K|*7}9oG zIi{FYm2ITyNs5Oo?9!y(GEkM2l_C+Lk~5HSs3e4lk&2XLBVxAM+R~X4u-Qnos-z@r zi&2=_8r7*-Fr6bft7U1ew3?z8CUQxUwJBK{#I)T^&M|4kvq>^}PEkw?r>vt(QB<;p zsaI==sB;IQlPgmyT%s%#n+nF?B^Y;1@^G4Fbd|H3F^oi7QIlAnEg4*9@-#-6EcwQk z+d!JiD_!D)lWn!Y(TSam)2(AU*x~5&P@pkpDs_voWlGkwrBXIoVVy3k&>L)PMU-m2 zhCz)Luz6WyH1L?kN^=&tDzQ$}cdCriX+@Ql5vh!3)O%1?N=1N+OXQibjI1pNA~kAX zAxorae;To*V&)PxzG|S}D1_-(t;$y`EWv1Ko0{8PsIq5;0T(M6T-L=k%&SSs8!WJh z*%ezXRtd180>Y^TD#}J;YH_U8nNUtqwW1i%rcs+br&oG2&=^d_Rm4m}QFboDN+MBr zji!QRf(lF_y27mW;JR9-M~ z6!S6)vs0BPK<;Tu#Ik6_Gc;*A$)Kexnv@Z;R@qsJ&f1AGLM2eVT~4=BhD_oj=cCQ1 zImRZa%9CQQi&#W#tRf{D$x=Zpn#x@(XpqUS!Ev7^aLYF)i^MBjT0!!DszPcF`;TmH5F3^wAP8pNX_LYl%Ycj z64Mis29mNdijz*QISVg)XKQ;8%=PkcZsvbN#dufF*q6kfre^k?Fv04B%50H*Pe8%q z9%d>y|Lrk#xn+HpP39aTiHqg6re%DcghdOnz9?3BB|>6@MG8nxf-01$LUy%G%%qFf z*Pxw`BB5<&)eO>;wC<{Rc4`ja9csQ%yQGWo?$cV=*;rGe*aVlQTOLDLsU# zyxpeki+PIS8Gw%g6OE2VjMFf_9D8yQAMtV>o`NZ$rILku9~jA0@QK*9(}LhVJ* z@cHw&@+FPIlY5_>|IaUt#?34Tz!w`s99vt&70RuUKR(U*vi)ZbkY}MaVZg9lxUezPP}ZxJ^1+We=--syt?| zO}CnrMvJ<;)#F@IsdK#Kqh6ZlhWbP+vvu2_QDZ$ePJ^sNcGkt&wV}L*Gp#~&(!E1k zO?;|SwP(3BYn8ssm<(7&3z+NE)GA-_q7V`?jNzJbdps&ww1G_6tFA*V_= zDe9eTt!n3E%gzqk0mVa?LyVMVCKTL%zY5h>N;WQHQKds_)oWjr*1H5ZDOb zYPp+&C2yY5GtjMyZ}$_NO+staT+vt^n?bAQAzQbBqYa{RP~$$`)um#kWH_m&XxOw? z@heQ5Bn<|*$*QzHhSyzg6I#SJxpKW4duK)a$Z}p;ppLme6L+@P=kBErVcV({=%{Lx zM__ht*lT&qXuw0PJ$GP-PmrMwvxd7<)*Q%k5ZNKYaZ_ENGGA#cJE|^G1oMn(eATAG z3#mb+8dMgQP)E-@-mA}BzfUOn*1sjiM!4{TpZf?XV@Rw1EoQb6o<_{ISa@j%$fU2Q z<}6jIIn4h@aogXVwlFkl97g8!1=DE{M(Et0yVh9!tV)OWB}80FQkJRANGfJ}h*=f{ zjC)KP9~aIBU__Fl$jE&)1W4~>*Ez{_UpY-C$(8b2t7ZGhe2bvfFRqcGRB7We2c3Cq zZyO^ngv5D|7cHJ%Qmb}s@AVlF56LbosDwx-;*r$0mH{Ft(U^wr+lzF6_Y03*{T8;L zb8jE5{w^L6FY2XhJ08cH)Aswf*$b>%drt)BmF<4AHDfs zH_W^|`TcH}ps&mQ1C#5959$3u>MT6nfROSQZLnS@t*tD!rB)FWb0<%bEhB$ z`+{|5DB%UDbu3OF1Yy9Z&N2xjF4^E}v)9&L#==R;3yRMhnaMun@Z)e2Xq&{xJ%rI7 zvr_7IURO=!c)N{v*0G*e27_6n0Mw_VYefzh5*4DAu6G+wqlb1DxD9#q^o>zu4R-Qu zwJ~3InH&w+&R{Ts^M}oy*1va%1-;i@hw&GQ1QAbQT?eJJ_B9PJA&7=3rj*s5fKNR zz80)jJsVTU{%aO@`B%=b0$sm#(dy_qo;?B0>QLK<|Buw`c+D7Kff{s?>Kk$6n7Ky0 zt^#Tr^bU3M&ORX#L{(mfMRjR?f)3>;kn}K?k`eO>VX`ez_kNoSLvh`TKX($5n58U8NDs8`p}fC z?of-mdIrLuA%KoTL0%Wc^j0nuOXL=nuGJ@b?CoO&Ae%{16m z?3mL@xRF6=UP4;ZvGM0HK3S{j6xcC4+=CKeL8;MHJ&%^FWcLm zYRf|ZQhO%Ne$*mhbW`^3sBz_I?xnz|`d$CGT(5|beNFJOvPk4}HZ7`VOb=sdqSHd7 zLXU?GDXY4tH~aH!*EpAnwUAZHpJwu03rf<`QUWa^b>s+$uPLGk(5N))Bz@e8N#Er5 zn@LWcK>LuY7qN%)|M#C7;{*GRlo*GXKT&*B2KbrE4t;s5a8`aNH(?$J0Rg zzi-N0bKhw7k}WIWVn-=^om{l`c{be4J?w4pp6^;i(Bci%R&e8>_74({@OTsBENY0g z$hh3+T+UJv5RL}jPK#W1D*9fuLNb}~dfZ(mDv))Qa@TOyFX2d${2~8{K)$|q6fmgG z^74(6Wa}o$Ju641c3354HCne$n)bSMtjzot7^Xc{j8s-wy^wB}_TG~n%^ zSH5_zUW6+(4VqSw(|QS~Xn%eerCPdq_^Hx~@)9D5jWnvXsEbQVB0gKmcOFa4USRSF zx7uVdABzl2QF>syQ2ps2*pi;+5LIg-il<8|IS55+orER&GN_6P6Eg3_%uNY|x8DCEed zR0xeN2!AY%DDyCrcVNg%WX+lXOsr=U$-ljPuR(k^Ecc8Sm0qJsEYm_Ne5NQQZ=p5_ zf=K|4kE`Ly-_Le!n2!;v+X!;IXvC*s3|TA7CwSQetz?S%>8Q03>LgWq#&wX6-6Q{U zWJ$e3SJq&n(jw^+A-TaNx-K`1)@XJ;r%Q?MHh1?~K109K=X<WFw`^}z3iafCih|5 zTCvbE8t46|Gw^wyhQA5I@q24_N!VUM>DoInu9@|iNMPH*Kf$xmwMWHjtc@bmtdLdZ z+Swst4<16v+FSV>Dmdzp7~Yj){ONmLE^NkdiQP`Z*w)lBEo)3-=0#gRrK>b&kuH$<_Op;d+wD?r)rY2QSSWpB3|M)Ik1OgoWt0~6^bA0pSTsC}Lb&M^YWQea z!0%eM+=j*tMq_b;>4@);!%Cx9VtUJrv@cchFdkyq?fI^f!7wKKRST3Hb|~SH@Z>Vs zIGD1{3j0|yoNH9kmTJO-PU;YAmY-74d2Zraabz0nrW{^HwaMyJ3L02NDOAg3UNvO3OgfiQ&As8^&vduWng~O4gqFzOqAQ3=wm>~vV=}=+= zLygIIbhnLITROSb^uMQo=s4QD=+$3S7&cqGi#5!pMO82By~d}?;PS2=^ook1h@7ib zq)2=<(yU^wx!NRvao8Wj_Jol^Y{Z}*V_!!zBz=oANt)#0IttxozR92}`X+cK5 zZ}Qt8iLTk%@OH*8G~#fjM{x;FCRazsy5t2~`z)$eq!ekQ`8E=*Vtf01xAZxU&dTHN zDgsr>4d_7m%8#d$GP~AyGIZDK-G^%b17L`zK*r!Lt*TMqFiVA`;F5HFyJYK?!MuJg zfcFipx$HYZq9`Tox~LoAp-tyKpDpYrvxnEXZ&q&=Lx7? z2rUW%(kSF4XhB63L|)~|e5J&%5tKBgn2F}0DNg5gD$g|35k;njQj|q?aFK}yZxN_N z04*ai2lreASeSTwdTddMN4;H!82PqK2avQfWa>!*L$D)r=?;creRim-JI#kp~F!R~A zJrh}hd+^q=rNz_dxq>HUCB&zWDSnxahR29uh z&A^A_Xlbo>wn|#3rI1x=#Fep2YA)V+TkjeZCn%O|=@Qh6_)O*gyu)zD5i!0ktP)K= z?%rnTdzIl)_wu5m z&_MtJ03d=)8t{aO7RHe=D?y=7MeA4MA~aCx-sta*!QjvQBw08=z)S#X+Qk$0n>!gP z-ok4oOQm$4{(n{QRTZtYlrHs@BS}__=>!4Gk!n)2bi)eIMU#Kj&AX-QAaA=U zSMq21?EOL|EurnXy8Df zQd#*aaM02!D*t>UijVjF+Z}3Ls-swc25a;t#{mPMYYnPqWlAo%gXjH3@!OPBzuv;# z;vSa46K5deGPMweE;CbQmtxDXByW&S-bA%4=X`~O5J4xmFhs!UJQUw^@^kr4>(Beu z$(MV#;Q9)9egd-t)}39>dAClp9rIoO99$wi)gXzb(^|nUwUyc0$UYN)i~nNZc^d!g+55hS2!lcg2rnW&op>7axnlZRPr3pU-QeF6UBN+WUx=SzjUkqnyk4JRXyt?TCfF z=AAV7SJtjE;kqJ3GmJr<{Ag`1=j>|J&F1UuUC`rLIw*OL`dn7|I_9FQNdNN@MWlNa zk7$(y6I&~`Xsb0!QrA5y3JiczE3}m;y#usMx>=)i10f4{7?vaAv|8@g#gHtVk0~h2 z#k{kT0yS7rS6-5Vq*caD-)}sH@{>cKX>i!MuF3@S?-5HWH4`ZrY`dka}fwSjM!?``C;OKZI58-y6W=tthGg27Pv@3L{U`*4+Aqk z-0J3OaNIiS5d~FItxJh-=d^B^)*v7#mXJo8Bo>=N+$b1raMO528&V^ol@5QuixNM> z4}IpJ@w^%6FfI^NA%jZi$|IWAU8A7wn+T`G_VXI;oAtlgU@sQ=SV9GWw=c*NR)&+2 zJe!&bvT`3`AUek3(aAr=#XqPKYX?R_!U)vCm5ccK+Ilr^_ZuxIpVWpBa;7HOZmq`7DiZuFmQi`go2&;(*sEUe+t4b;*ek>(vBu#@qNx<2o`PhmF z__Z=%cg>1vR8(nbL=mJ_6U1sLsJ$d5S*SFsC!>)T>Eyi(!+iTtj^1Ewf(X;yI}dXU zjQd(T>!Q9Z7uLceg_!r#x3}XaD|J4D&PxkUJdJyFf+sr1CP5KHA%d#pSy7^ z*2WO8K_Z}n7}8RWek&S&3mdrhxwz}$1r$^P1$+R3NG$+>AXmf&7+H(={G>%h?D6tR zu~6M~4RNl66D(2h(IB_Tupg4p?=w6PsiD%}k=^SIN<-01lx*o}0~LvGEiX2LJ$u@R-DX{VP$HPJH<3l`w$Z}ga-QrwIZvs%+w z2sCpnd-z~&_dEZaYno2d>8x?DjSrNQ-$Ur;U1GA?&U11lhJ;X1R8>%W2~sdx7L;Qt zK}X9#f~um3^fCe>h>uGMwVw!{6CFx@M>V^S#mJFSS7j)RLeY~ZTp`)#K(eAQ?nsJy zjz`|uXJG7K6)O|h${>iPJlykqyfpX4Vr|o=+Q`%LP~n6MfqPJa>QW=)3Jx~_^hn%K zQ{nF5Z1K6~v5E{{oNLDOGT9{Okfg$aNcw4)yaCGQ=CkM~DF$d`3UNgdh3Xu`R5CNz zp2p=S>)K%NvG^u`VCivvcfdDYIg)EZu1W^QF&)d^Y-Sz&(_tarWkSyad+wL-y^lS| ztUypjUlM(G)QYJ8RHLtG-wEnIK3C=XPk&?k{H{hSDMlU%9M*#_3U~4a4ddT5Tg5%g z`zGG>EBnkyAf0_r&Ts?vUP~yQ{rP(tZyz7x-HeK;r79;^BDKDg`QbWfpiY}LTkGB- zfds?FL2!CL&E6l(m52qGwoG6^{FPpH-|2Ml1~iC(prIr&S|-{>7xQNkEQaR$aPIV$ zpF%-3$*uj3z4s`%%n{v4x~M@^UWc!>k*_-BrOA=I88)4#)bl^MwFC;80{l z;df=XaOHk#*1s>|7=Z*uku7(QXQc7u zI0F825Wv7I?l3^)1$^h*2fFH@Wwpy_?XryzPs@5Hu@|0)@u7&_$&u#JiCpBVM%o=K zq<43RmbY(c+`*)2MxLS&R1b@~mJ+icwb1nztJ;61sby#6LNq9%DfYkSRjF3I7*8;f z5d}m=1w|TuO9qop(Mcp)RZXspEZ4VdR?+cpm7ti79^dH7tHi6)I~h=L9rG!2_l&=@?o>Y4rE$T0K=^SSL#aGeoJMNnbx5%=NlQ8bj0QwMF14hDPlko2Bsl<) z{5jQ+_Jm;DeG>9=AJWJWVHx0J@LHW#1T`_u;0jzqYh23MRQ>srYA_Y zv5c5x?r=p@*Q9A`?FnZ}>9JXBOOO(_nYOhlTDb+KS`f&_y5lbRx~;q|fs5>+&EEq( zyzD@6b5)LoY|+A+^t=$sa*bPC_T{o7EmIJ2h{k-3Z1+!$hb%;lI*o)+ zlp@_Xw>F9qJH%~P`9;>$v>c_#axnpBWYCJ+Y%YOx2?Vu;q9aWTr-cdJ&cU)R4o_w8 zEM2P6WuDatEiX6!&z-yT?V)PGkH*fFXkC8GSAEYcnk^kOcA`grDktJVlr0FNijKc) zYYk;FIE<`$mesJxWV(zHx|BC;N=0euQZ076`*ycQMQ9V`AVFzpcYCgH(Rx2AfUGEs zrema)7eNWv%7`?Iii=A_WP+-mk*H|TQ0rT_pN}Ppu7tgdu$`_5TsmECiz&MIHn8g$ zBmX(86TuJCk^^+V{yR^>VXJ~%QscQ?OV>IhFV1QY{<(SA1~N|Ro_F(YzHS;* znn}lmGV!c?9nYA+X+0JS=!CYncD9>M)sMt#;XzR}=_#c_P!#L1 zTV-(!sAXeaV^Wtkq+OgQmt_m?iYuYE?6~-snJyI?coGh4QlIbWA)uF1{+x;^pPLDo z!1J@_wiElALjUyZQq-c4#R$ta|F}GgMfsHh$ zbp`*yff!V~(nMBW}_08vqu+j(T5HD}nEPp@q?&tKIFB1vS;_2-*!+6;j&NC~+ zwOh%4fooUkyuMVOc?;Wxe#@+pMogjnsy|u#&&lSif zNNykv(Fc-)jphaC1cni2@Wcr+ilaK@nGFD*?A~Xy$D=!+Jq4_)wX|VB@vs&|Mu&?i zh^mi@)B&X)u1}WF7D`3r{T?Sfe@B3WUQ!hmueAt@|1$+>YlF?Qz|fhq8KU22;#lu2 zI0zn~K&BMnfdC-A-iV*C*?L3wS;KJg-bYIs@=`sJyL_53j-5O3J`w2blAn-L<7R35 zb0*01@bZpz$il)WuV3eQSPqaV8uXiPG_kCA)|=)Ii|Sg;&V}fS`TqmXQDC~A?;lZh%2@+!*=dWnwTBrE z{elYd{g$@tscA;}DiSB9lSs^1L(|AEbUb@}mzKEpcG$M`Ql&YPrU)%=+ft-wenKW; zb7HIwD%Z-Akv;6+T6wgX${rWJLA}ykWC92DJ>Q*e-mdnXaV96yAQz?b`~1H0K9AGu zR#S1|+4pAzf&aKy*WY)R*OtemihB8teVvKY6xvCt z6Dt5*6767yLI{bZ%Q7rmSFmF#No%62RC6VIbyKJN{bY&MZu$H%m6oNGgwK8w;N7i5 z^t7C|FY97%Zja?5mgySW{Okv{|>jUXx2J7!eMBQ2}e*bTZ9s zk`H}9Rq8IiwIYbBJ(J|@Mb^Tj`&)^bcdWKEpVq^(R5`XjD~RNL%d^@2{Fu$b)IqKH z%_0Z5_`ad?LNa) z3u@scul`EkG+c{9u3QcBZTFBhOmIM3#AtHCr>&)qDP8vP%SZ4KZZE!2y9JhHkCxq! zOv@OTK-OHTcySmAsqhR2p69J=BoxvFn195MpZwoLje`wSjKq^oenchGzdf*yng@Gs zlF|51VpydyoXbj4S_E3v$cNWU|EgS`UgE{Pl0igJe|lFvw4Z?;a@)v+j1Dw8yDrdW zlc;8YO1m=&5txtOyPVV~Dh{Vt>oxSL&9-k?Wo9P|G(8jR?#Ukr1w+CR8z%H!B1I`R zpFd%(i00MXo7!IYWW$p^eFd)g8zi*}%I2tvQQu(FoNB6U;$eke*I4q5%6UX6V7FIW zB<|e$j4kM^Ml^|ZGPRDOaA60m9;Fks`=)uVB>_#eJZ??+#`J2fN2bnBlS50tP#b(? zXbu~t9!-?h=`nT|#k8W~{x-;1rNl@gE>wfo^%m?Tx}OOM(v2-Rl8BQKf5B2_2}?)I39nj?EB06!+qU(e*ddW zX5Ua@sM;WF_$LB1_&n4$D+kRE@->)23a03YMUFAjrJtrpObfBPE7E56`kXp!*E>t- zIGQJqHue>yRY(1PPaA)A|Epd+eDBBWM*$^~Q~iewL!a_s!iVbz-3Vd_6ked3MrNSC)7dxb ze}bGXhw(txo(iF5_=EI3UTsI;MuitAfXhn*(90WvO=~k?kFDJ68u_v3kKH)*Fv88- z^P%G$N&ty2>f`})59dep$;gj>4<<(7Ls52#z#;|&fpdTSgK@`o)~9puxjfEwv4h|F za=O7}>dCnMALeeH0p^#7j$qk(^>0%4-P{>w>BWH;Ayit-e|gdaplA-8uX=+BQ6XXk z9j)~Tc=9G#AF*OV$Pn_35>T`Ohn$m34qMmxQJWCjfMhc2v0%T2b20Ri@^YhP4@t)S zY#~EO%lPT3(>wWzy{!;CCT=WNY#;x8_Ds2(QD$Ih+Ik9^n=F(X0iAM+NMZ>_R3oQZ zi%yp@pzEVk8e-7&%Rf84>3ZI!n?eBvfc2Q12Lxc$@p@lrOYsNR-YWn ze8!`HQLz~64I%^CH;a|#m;QAa;rzTFS+HsMrVW6=98dGSWLA?=Z3)T`L2r-(0TbXm z2hJuZ!SbG_@EjKfpeG{_T#(?}qMqvkn4qwdd*0fAFA1yUWH$wE8pU)P&YiYkWsV5Y znqhcLuBi0Nvn!Fa;!;9wRL=8lU6quus^r;ZIR)$7z*AjijU$Fs(nl`GyE5X-R7=gEi8-1(kSW{;m0cpI28($g>%-Xwv~Y1sHjYaWo$Q$M+79;_jF-4w%vQ)R;aCg0K4?DK3~laUb=T&oNq@Fz9tPA`+Nd zN)Um_P9Q(2ux_4CJ*)~!X(NmwubGUG^RqxB)Fm-5_IQ8&PI<5Lft@PI0g5H4h(m9i z!=(CJ`>kRI*?mrG+!`v|l#$hvhn66BPih>HNF7{b24EEM)r0T5a7NADp-sMSTky8i z>}v+_JrZ?KpIBx1>QEvCs}lcu6@LVPv5*!^oTXF-G)|RC*8^7WAjHF_u;TH_xCy)G zX0kGM#qZ`D-399?( z;Y)Ph%`+f5#n=FVBvuVMpYwI z5oVWciJ)5BMjN^D;UFq*rn%@7&3KX8nko32HmTX+yM-meV3fOowEa$70iC5NodJlO zZ5+%@>Q7t*95M_GxG@M*Era-mDbuu=qlMo+tK#gd!O|x{Fyar?xIfYO;IlbjaF+WT z+m>$-EYF*W{Y6$OTmLySTqh8eKrRMHYe z?8RKF_1!b{P2Jpz2Gkx+fsxB<#&OtjVICo>!d6E%8v`B6Xx*ie101SYY8cg}YH%&g zx#11*Y&xS3u$beWFOdltbZ-cgi)!<^O}_@z)vss0ax4d8Mjl+G0YvCGR8pIuYE1(I za@~kFr7`_7LAGk#EojDYo?7Zn>I-;@mFFV@!>fi9F5~fD zyivlxuX&k7)t-uFDc$Djw8F|sXj167g{cNbD>2U)cuO&KR_zag(=DcE9tmfba9vTi zeZ~(oAtkJOIuS$)#@ zSFN={eD;VaNQtvm0m-z#jAWV%xgfR>JcQ<1&y^MU`okl@}^mCs)$~Cof1UNm?(2FIkuN=XN{pRCC5Xo3Q zGL7KbFJfr}3q4UJ)IKuu5i6gNLm|+7!dWA05}eB8JbXS_FPEQsc498Q9kGE=)=*@m2v1pO#k)66Hs7}rc5k^H51Vu0KlzQwwSE=o=Sxvr$0SBZw zPMJZ;Hc0t@kVn~&b02&W1ihC>$h|ySNA26H%2;N!@U;U2GcoDvmK!26A)q7vtS;=i z=IBi)e|q0j+@m#N!`h=JJ^49esy54a_l>q6RJ6DB_1LB|2UCZ0e<}?3A_n7|g6g|I zw>0$Nq#mc7Q$KK%y&5weq8(WENut9?q9EgPn&T-uTV2lG_H=r_rPL#iZirI~14ktn zu9pO~_Sf{nr?PF{)2QQv>F6uXHPW4Cz-&DZI?S}2Z6vwYg2Mwq80lQ7LzmnIsZp=Y zxrG4S98=7Xt6|YSIgVaIpJO?Ly4+*fnMUF{3<^#r8%HEDYFOvH#|B~!Mu#7do-l1W zgDnyKXdFfZLd#p>`jr2ZXlm;KC2&B{90f}0`Vw0~PqG7x^KA4Q*eD^??=k`ScGq3N zHsm6#1w_SjN>Hbm_$>~7sDeOG42}u_3L^tVFP2QQ`Lcz6;cSX1`oa&5IDcNzx6FFD z6RxmCRarrLz|axNq&OjVngq2W_R&x1v-#xp`fXntv4kNM(LY76!B^(0C&r<;>z|^X zDW!3@;5R1N_*Tn9K6uffU{(BKX4r~A@S#8k29A~C0D}9+2X&^!&3TPA!3C_Cop2RoXOd9jug zqi_tbfeacK5fBu$y&1Y~&Y*mSTMPrinS)n#YlqBF&-I>p1BN^m^2weBGwh%Ov!j7F zIY=ye3SwKCbCn$D3wBKQ=2+)CfpGd^$^kRa5dInQn?^#5ZPc49*x3BPOQ;%k=M6{y zD~ktn@;2xYEs~Cl^16q$ndU5a5d7nBx%!S6A87Ca|9KlZO=;&H2>_Sy!Ab?R$V!O} zhn5xJZ1E9n&|%5V7N)_(J}#_RLvJJr0G&4gy9l}%aPRRsA^^IJptAxW>1wKfCF-?r z>qUk&la91~4)UTr0R%zo2r&|X#t?Zv*Vx-OXmG#&7mq#$==bY#~v^$HQd zK6_sZt6%;pSVl|pyizV;TLq4eF9NxbGMO&dt(sbNs27;wDB{l!R&O; z6=;v3ZyFT!p|O`$-xCUIoU2vS2yE17?&3{XYw6?n`gQShbW7o~%ZEo*a!i zzjBF6hN{t2#bgF7eUB2|3@t$^7z)+ScD21`2Jb;IN>@)U%^@?tp=4qo^sW!_W`3b` z9hW|XfbS_o3oh1|UaCmX0ExV!URx<|_-|6KiSyHigT6Vw{#BF=$XYQ4zt$Z#&J^g< z-{%;6wM3rmFU4r?A_b}UaUImbWqwQ-16tG%#G^5LSv1R<4Jq8(j2L0RRe;6d{MTqg zrY(p*Vi{CSsl`i>@YNk;IsqV5Dh$3Qv#YxPG|pmGDlzaC0RXuwH(Kw$?k8#Pu<)3Hl+}q2MBLV0bG?c#sjHlYpaSpsCrLusQd6L%C_3WaD$WGe3JO$Efpt!bDU8><&Kg zdE*5Za2Sj_`mT1#+Ym+}7J~__8s8a}n6g%oBAE%90SVjQe8{&x_jY!wup zhogx74g7^7!t^7Rq_wr;9^UjYajbrm&> z$tXF|u=#l6+C1mPdO<_TY)dU0$rG29IOqgU1=ANkG+8^RG(-SpNW0#v)mY5FV424v ztA%Pdr6n$`{S;n?RhSY%8}_f)j}7M>-y;8|PQ4IZpo-Aml#nZN>FYsc>6vAE2m4O?f*oP7LjN?KaNe9Kr+N94jj7i*8r z-+7%wJ59lruEKtCws1iq2d-|6gV0FbVq1-Z9j{eCL>3PN^(1}=1d;k!6LRB-p|l{Z zoAH;n9vMnS>Z|}(#GH1KQ7*-&SWGn{=XZNXx}_r7Q#{VNPVN_>PenSmxl$7F4hGJ32je`KAIQuaDh$*G_W6>WF$=S9Ah{Z^^3>WOFHDKuY;3Xt>4ZJUG#pi- zFL;d0*&?`Om=lSgrYwRD)=zoQBTrq&k!re4xeKy9$@0Jr0#>z6;{fzLQ-qe_97MJC zMW^aD^;gNOT|4UxmQpkWBtVd&5gW;~sL<6+ZTInCM@YaAgo{^W^0Xqv;XK9$&6;Q&4nDmqL{;e|0L zOqB2>kicbj34%L)6bryr$0S^IG&hMbln|HN@TVH(!Vd`H>$AMC9l@pRdYg&D(5 z{dU1@<_X$uT#p-^a;Qca4d}2$HNnv!azXizZ~_48`lO#y1yQYLPSz?{ts*_n7KxW( zQ8iYZ&%lk5%F1$)(%j36=jP|uy=-I=kSee_75_8pC1p$6u_JZkDv-Famh|1y|SaV{{J0= z$9n~tk*zJ!4&#@#P|U=P?RwATCShEb_-PaLZ{0Zy{{J$;Uu49oO-c-~s<;SYaZ7h#WA4Utx1KYJ!T)jzyeE zJS4cM>3iq7p;Tfvgr5KWO867R*FPJjsGgLK1JX7HJCv4%&?e*CZrC3xW=85ud^$^M zKi}4p)jpUar`%ZW;y6p1fnijd>OLPla)5>S#D14)Ye4?2abgnCZ;3M=IeR4VPwK85 z%fRa$@zpH?JM-ma<{W%&9~xe%fe!g0w#^ufVQG!RP&HxS@@s^P=W21vk%6IJR3&$_ zY`86XFH@*~^!sh5AIqPxd0Te6z*+YeaoN4~tJDdvS{v$6?t!WcXt)eLoGl z)ITc=!_WW~`YPGb?9F%|O2RC4~Vd&c}rGmm80j)F1bR#z&nv4U# zYQr;8AQv4~9c9+)7e|^RQ6l13+1h064tMWQ+W?3FEMuO8D%Ugx3BE6$RWc9MG15cf?Zb zD<$}b3XlCwG*BeNe1oxHQs|tz4+?CKOKpy?Ibufw@ufNN2>sO71_bCLu;}F zwkfLaU=C(R&y{GfxTZ!3mf-N)kG;ZtOC5kF*_u``u=p4|qB@JIltv*kD;v{xlmZ#h z(dwyWZQ$bi+(yOc(3WA-sdg?FY3*J}z!5k)#G4}gj2@?g(v%lfh}9c4Ii(jN^Zh5@VCepBwReO~r%PJbI z_Q@_?1^&BjqIisVGl(;K!3`kYBd(vF&)uAzfgtJReXiLrg~`|E+VN$`vj5fYKcm?_ z+_O}z@D3e6QapT4R0QYlU0-L?3NFuiPdlPl{KsNfh5|`tYcZTh8nO=}w@e=a-0l^T z7M=_JJo=Cx8k_#ev)j>GWSclO=3FhF=b|>ML$yuvJ=kop%N^AS+Z_NC$aAvfNL2>vr)EBmp%JLkQpYj&oS8;C?$H_Z1DY; zlj;@^U)2lYdjxxM{f@~Cvrhk^-ADd{Gfr?s9_BD&B=PamA~6vP)xe3UopY!m0u+Z( z%Z;sd$@1S#cbxw;L|EyDJW-;D0%Slb8W>TO2Bk8iQi9aB+G{{lzg+3{hFT^#M)A>= zZKTHQAl`-Rcpi)tQCVY92xva$975Kd&e$P#i^2+8BY z2Ehyk08A&*0(ud5Bvl6VE9${Ye|Y3L*wT`roFan7(kVizCr`-24M+l^$vfdzd0~W> zdZokkWkUzf7Cw)2b(w=fg`hNuRtN=fxq;Tf9zn3FF;(cOyxSTe|nwME%DOYMtcl2}{xs+x@7t#dcl#QZ2q z{3D5R2lzG@2Nl0VaNJwE>UNduI$I88QB6E@MYBpyZwEYy3f^cp%%aZMPZ43x#oO0k zvp^7uS#qUW1biXT?ZqYSxfhN`L4pk|C`5Nw2OxtK&lSPMgK(?a4$+Lg5Hyf*O2bRm z;kL2-ad4$>j-+`PY7@@Dj*<&s>srvUrvEdE>m4Pz{+~~&{3P2|DvcNq&!Ug5hYGBl|R{es!E$gmN zhf^ndrnc$wY~wylHYb;jORx2!yzszYoM#83AizQPMT{Yy1-Pm*p23IVmZw6!fx`ZK zvb#g0aJ#G<6hB%NQH(=BtWf21IIVa+Iqt7f`&e7vbHmh!61QNTMW*oX zcMsasMR38IGY| zap#KTAsw3uIU2*VC$VKcb@fLDvrE*hDK2HQqA4SMb2Ic61sllr8OO)inp$Hkr*LR4$k}THH9|Dsb~O!tvl7ER?ce069R$ zzZriPF1yU7%@Gw` zU0nzegTZM&rk$+oT!f$RwDC6!GRjztb88GF4DF0-oT@S()09CKPols^sr?x~42XU* zRYYk=)MY}*j-`v?%6pquzUW?r@^FF*Ywyu?jU9R(VFnrZYnPx!AeK?o^5KJwH0K{_ zq|@IBS$CRfo-2D?sumIb^!#3jblEA&HvNsAyRQ1qZV1OPgK@aNUyUC8kA8hIfN}$r z4u&EsD%J+DwQmpI-ES=WoD#Z@25G?T`JGmSuxq)}>vWsbYk8~P^Sr5p&UI<08|LP= zzOR8wn+8@oU}yHv*R9DB4OBZ%w^N*4KH<)wNKs91yK-7%0CDSjK;}VeWNV%&11*5r zEd+JYWWKhnH_#jIR}MNIxx>ykPVsk0m$mL^PtBayC!+Ev0IYdU$A;@p54k6jM>oC{ z7`s&0)5|UHGdnDfd|RkyBOiMJbvde6P=xx6R^2iym35E>jZTDoZN@7XX9&`phnt?p zPiBIt7u5}AZuebOYkcVmjnnUuq-ROgTb&a$*^(;Vh;?i9weeEIhbA7O;D<*{^Wd@4 zISdO!jXUfm;cP-?VJvr=o~;MspLyyI2Sn6}`V!M=3GvL{&G_@)UhbM?j8ng zG#I_7?m~1wXk2FTA=qV@Te8KPZo_QT_)?i*Ru^*2ZTfx`n$t8q=N{44C;+3Z&ttF`e&tN&0**Y zXmZjh#kdMb%ek)Z3n?Z06TEVwU(d0%PB{Z&4AWH%2K646|f_4OkOL|5|E}C3Al$lv4mYW-sm=)Jr0CDE3 z5?VwK2QxWqQf#iHaV_RwVNqu&G)1<^-gn@xSl!_nb4r%M9h`j7fMK=}$HBP%VFS2v zoY#$2@-di=T`LqR_{*$m%ySd0#pnfdWx><2N#ZbglW2?-97bR>8g%}fAfW)@Bcs&P zkF_dQlzrsKDKo)7NP?zff17ARg9n+sUag}YZ*MVkYI4|_xH9RW;(%DPgYmMWWO(Z_ zx?E^=I(t`vP6>u>_D(XuC)mw$^-iFgw!<`XTWWgBjlq66-Cfd;zOq$uf=!_`Jx^2L{)jXnZq9!mh4;toOW?apaZ zO~i{X}1Bn)lk%2*Zfq63sjnXADn#%~# zstAJ0GrqsWc@0RY0EYt(HpmDc%y`rnLDF;cS$mt)V3+XeD zKOw_SOfA45N_WVFr!3m&-POPAb*j~jkOYrV0n#M z4RHTJ4p82jX9LMKYl3A33uw^r+7kiaUV~jFRc8>vgy`n!h4{VmLedB%f?*M9@TVAI z;CQ;c-!tSqF|C7(Y1>)}3oh0YhZU(R>xsuxsMWx*Pp|{Rr~K(MK`d}vq_nYAh;@dEEw>p7U2LF_e(IQUTR3SVA& zWsIm#6EIg)fUA^JV7L{s9rl^%eD{ID8nPNq;F2#&Wb11++LhBIGjIbiM^7Kd?dMun zvmU*hvrBlC9vh?8qIg+@j}`-~PgaZ@=uN^L<*3%6I7Jx6q#-iG?vD9^eX#0yILsA= z01=cz20-0Dtja<6@GRSa2%uWRPFrlU`|Tc5mJNM$(+zy~ZwnZZC1 ze2QvRX)Uo@%1$!7Sp|v;43b$}qJDBhU^h&+H5)Ow%L3wOrhGPqElWi0-8!cj62vGY zNe6SCgF7{XT+4$@Q)J(FgA^VRv6Kr@Ry88x0*(mfl>k% z(6qJ6rJWd%!W==7iETLyf(RkN5D=9q02E3Bcb+#F*6&d9{LHT)Z`bnv2xejY-DiSE zPAZYEc^)b!yx(1yn2?<3&BTXVv^6yt+`UJG3%T z+6Mkhs>Sb+d)z(dMi7$uH{Hkbgg=SkzJbD5>C1Az(#*8@_YDU^eF^{T2p=@X>~qrl z0~lIH<^X{s2J#+G$}q19n~Fx9d?ETy3n>Z=wN|hrsNAK6_7~a%{gm;Vk|hHM+xNsrK}uv-lD@X*hI~J z^ZfReSrZA1Jf%a%@mRSsLIbL66`T#3a_J1q5~ak<)&S@zK}reoE5E1$lxLLFYe@{cv=>MCY^z5%#2!{aXy0dndWu=jrge>tl`?p!LF^~_>^X9u*TP#o#=qJUx!xrB zdG}bq?P;Ztod|Ridi3&%XDu{Zt4-~TG>`MKD|W;Yp%d$Qc~xeyVH8n5EU&Mw;9plb zByvF!_(C@AmgB)9w5<^a5tC`{eFKsJka-P>SI}S zy5GS=cga9B`XTLHe1|T>k=i@43TFk)7S6ITHV|*=F|f7$ebcQZr39`arzhgZD&Evc zDHsh`8wH<#KeF6r%^=d#OG?v951)rSVl6a^`Y3G+9Q1X!7M4x$XvxSk4a+B zP{l?3CKT`g_Irz^c^Mu4mrb#{_LnXMRo*qt?=+k|T~By$F+0OMW3J!xuceq1)Z`>s z9rTV8i68wq4Mj12 zpDzr`3uUB|_%8rY98mGQ>U0hcLtblCymHZ^%DeP9J>L=2rx|8eg+KpKKmxPOpLJ_f zGuHw8FMlVBHAVNb*zn`e_P+9cdWj>T*}>2bV++L2qsTXI%I zEN}_kIVH`m1kuC3O5A0W9BOVOO{AIA9c5}H6VnbF7<^mMjT}9aEh@q?qe|d`Jrs6f zJ(!>jNA`VsmLp0bC9?|8V4(CM>4?x(_7{te#H+U3XJxGhYN4rX#B0GW@#kgBZAKBv zF=Je5ow}Jl=UqK2RAlno_@rF?54767Yf;am>N|GR1~c54(vh8fv9lENBaE~~QZD7=O8m|0gf}T zCsX+o;e=evE>Z~EnsX#E&b@YSPOx5rEEwiyW6&KPTW9Fd#%R@3cJL>v(kX~!vrLWw7>h1bEb(DSa zOXv`Mr5?};eU}^A{vr%8@Rn11a#MYG!inemK}dF$ZGUf)-M!?R8_TP4^6y>Vf|!oi z7X$kjJfWKpJ#%czg^X8kOW*y%g}SJ#5f9<5e+dC8hfqsYWqc#2={gXoUVxJf_DMx0 z^6RdxIKXwtOmN@-Tonw^0e1&y`G!0kVbx;K+K_Z;{BckxrfJgtleM{hn0s~Tfl-cl3 z@uy7~Xe0!-Pu>}9fF?|Jaq2KRgc)tk=SMAqa$Q}W0*FJvPf?k=LIbe%&RB$as;RDoeB20PFlQ*pUxVxfyQeKVG^$T4^}!_mv6pHT3*$8Ytx70!uI; zUCGXTm6QQmnkce*Y2g18P9S!WjF(wdUFV({X5`Mx?+Y=Y$2S1c9oTAV<3-g}(~#|L ze+MFkr%`c*wT~{jfaW!+AY#;@fQyUni=`%RC5zCql0?mn0B|QFw7w5P$(`$(8yY2vR z20@Sq;4h~r^wy?oEj9g0X^;d21SjB83)Hm4^lBiv5xBWAFxZ;U zgQ2*$S;ga&$EBM&;$az#twRGrm@XeOwfBNKVcD;^U^VvlqPrXxZ|G$}9EfLWkjsK( zNQzuU>BY?y{Tem6JsbOpg`~bBYyr3Lc*sX3>Uh=yk5cl(u~S$}0aQUba6 zt+zy<*|E;9U7Kl!o6PuhQ$VK~Ogs^lsi>XR<=M2rKyvm2O`28g?$q1Ai7BE4d?;aY zO(pE5s#H@7h8e;E4v2TuLP01pP!4(^6DeZsx=bxaN7(q?GhAy8jNk$1y|x@!xK#qY z8n;`@(%KJAXkd04_P2^8(Nj53lE=ntBR1r+YTt~;>-)!fDnpZE#9G^%9bV9K*d*^` z?#?n`GX^0sNasHQgbbmcCPLPbR6DlW1OsMwP;fb&DaPGuJIGC?!gxfup|LV*Wn0m$ z4A>m4!oJ@r^SsyMbiBW+?|qH~%dGwwFTa>T_h8=m9KK(?<6FPr{1nCbc2D#=6Hjo@ zDP7OzPWn#}aJpX)oX4ILonPFJPInZf(HTGBaeuC-5nhI+eD6GQBWmw{`JEPerU`)( z7*VsfkAFf!U7ab~M-T1&7Ps6-+9&ge|3C1aV%O!9f=w{`2*+scG{p|IP{Aof%MCWG z@6rh|NNEe$Ol&HN)#Ahrg5nwVPxK)thbuX11BdVfz`&*e zk_Zg-8glu!4rPYF*^BPzGBz;*R{pjTIQQn;1jnqvjHO@wOOH|N!hMs$aFTkEb3E!9 zNINWNx2R>`N&@LB0Nt?_h;6OE>i*AA;L#p_piW@xMFY8K5vRLk*aRxlS(H}GAd!{7 zl`3#cb&uGU)b63*FvuhVe^31NJ^m;=5BcwNV)bh=AC4kUCV(->Lx3-oAdIzTcKG=p z1DLgsCnHPeWc|5V)*;zyWrZ@^?NQmtO@yl|tu>P+Equm{(6TS!Pd3}XV5Dj{;%HJR zLvBV6Jq9>6>{?ktNQSQBB;348M7kfx@Abgc!gq4Oz(61nfmKxWbFZ*R12xRvLZUg0 z)-Y*WXi(3P5jx2z^9)t{dVkY(sh?rT&*iwd(Bo& z_k&2RYw57`=ZyPWBF0pth>j&e|;@;wW%O2(rPKxjc9s85w?{o09Mt?XL8A2*$9 zEab3ioh1B*s@`=XqIH~`784>=d2H)grA1bRRmZyBo(t@vsFY~Q(XeR|q)x5l%mk7qdkn-5`8i|bO@FNT?YS`4^i$6m#aPf< z?9gB(b1@`(^#uTBi>q+pmR^4^=S|HAO_M8r*ZDZ=meY1uT}b4}r7AR|h4Cf6691oj zL+cKMI@_YLBx>^i>q-CWLWTbwY)Yq);?bMXRm8}^d>Ky110ftYTErrKDa6R7=h>m{ zEr=M+r)G0#VPy8E7`&g1?&nmtI<|L2m$jjox&OZ^O$Ud`L15>w4U)!Vfz%j^AW-q; zoA9I8v*PTJm}TI@}bH2*|r@Rj9Nj5 z@%5Z_B$zKY6Js$iS(%O<5lTwJ4rGv3wM$}>Xhd%_O?B-6{Ea@sS}o1HY+`KT&6tsh z8;JC{V@mzwWUwJG=*?v!yZ39}9D|N&q5}MNF9}Hd8Gm_VBw|>MXZD*DNXhm4`ZPd2 zJQ-fGT_mAJY@X6LzrQPct}2Emm&3E}!(E66&nQc}jXi5IIBlh8I0pCfP3aG*n5S8O zLttwPDL(91M0k$y1edxo0FT)w_v$~3CxUnsK+8@-S%e>E3E_`qr-Pz*OC!AW(cS|Y z`||Vg1c6tu1w=v3aNt&3jvK=g+cn_`VDxRD~RM&95%MH+N!sqf?u%lY;#OXsKY~1A5yShi0`jE zYyx@Abr=nvpV;-o00&)DW+@U)5CYTX9`Hgn=)zH&yV>fOg)-uJv+4Nd+2O7cqlEqe>!(nb`O< zjaen}{&Ux_{T6FezN)MB-WcDN zk$2={eveVqpXHa-{7y8aPm6JCD_kYz#$`~TFNyK0BZrln-~3r8$GN6$j)$7jONkRF zHU->X%Amu85P+z1Jh7(F8=bDmM68LdQ>7}Np_%`l^Cww+pfo0}0CX3b1@iPr#=pRt zyC*ClatHU$AHO#z%y_M%4vCY1Yf`{vCumBgQR!Dx-#5Xqf(EKN>T0g9uUd35Qp`Q* zQ&(Pa%AmI(*?(7_rr>;eXG&IzoblWe0Prv&c3@9|2Fys|8+}YdIiRx}56x&99st#O zp?Ab_glAx6N|LHkWJohYeU%_)wt9s$wtWSO?Kf1Dw##+}Ws#S@u_2f}5lI;Oj06u) zm1|BF8g+t%K6O(V5x7(|m!k7q7WE8i<`oQp_?B?Z1LMfoEDQkzf(Rtt%GAG&P&O$~ zWR@J9eY!d0Tj!W5{QMdhPJo-&u-aD%1}NG6Hk|Y@!DaW1ly@&ql1wnXW+fIemPcF* zq5={hja6?wy~V6srPC?Upwf@(4H*()8OqUujf!kB0drK2I-4N-{|{BsTPWBv12)22 z5G0wOm5X<#SJ98R-8==-m4W|HY190@p>({?Yc7*Ta*kW(BPy8;JyY}_rR`dCq=io& zDW!9gLl^TqC%Nv;#p!%r!d}0w?5FhR`eF1C7|2V8Bpr9s|D}@df0CPlHMr_X2AA@X zVn825(HZ}I&s2x8`o3@fx{1Y1lzeC!^H2KxWxYLbf&Df%=={osZ`>$I3jW+7k+-ub zv-Te}GtAV#;r^zOe_e0+Q_FDS8vhn$Ob-z0+RgH?n2J;RTY>E78HN7lP289@uMhU| zG<A{3jVu(tEkr!CJ3kZ`G9QYz0OlW&sd{`(K=& zT{CVXiS&o&k)`z@NgdXv+WgszcTD_|ITE>73{bcxAF8*`=3W?QI^i@RS)ycSK}*H4 z0JJD#vaA$jCe4#$3W{M7X5{9OWP#^-uf)eik#Sx{JkQyLFJrODogop*vc`lO*^7J; zz(}yxAVWyuj0O_cXq1VKtgW9aPL&afF%UsVdOYWl&8TTYVFrVsT4RJ+Al%cU8cuG9 zUl4EX=@GSEWLP-GIDiyb!q9{RpyG)0^l`dyDwy2ZZuaXOSO(`AJEe8o+y1o!#_%6< zKI!s;5pvZuA!!^mw(5pbETmX^k#DGqz%CZI+q9Nr>i!XdQqXV27@GqgB{E;hz3 zydYa|CzLXByV$}PkU=5kY820^JhhbKDVR7Y!(ww!lh4f55MwUT(h!9Arjv#OYzYcC zsSO@)4>Uitdts7(1sX?>1gNTl01-r(rrT!iAl$+3mvf!){r*v;z+3<)+ZlHD`w1TD||la&_JO2UG9Ds1|CN1SnR$ic=60NT>gHms=xDnR6&qXM6? zNxne^T2Mol*qYAiU~%{7Qa}*ahV9fT8oUY1y=DF7(5Z9|t?U%bj?18OU=j8J8gtRu zD^6^jmUwa+rB2~axGR58lZy4Y&9ovaSEv5Fr5p z0QV&j6G_kzhf5Yt@@vyOU88aiqgo0IOLh}od(Ae+p%+mq{Jv{v&0*BmPcNO3((LYO zW94bBvhN=Sbbhxhj|(_)+#6td|JOs_moPsqAVsMI1qDamF+T;Ky@%e_Shl4nQq-*W zprW7T#c6Zre`9^ACa+b2-{fQe790%=RJByU%GFo7YR~(^u}0e?+*>pFXQ6busfa4` zv*;(#N%Q4K_X|?D@VDFhjmJ$UACmHD55M@U%glbm3pO3Tp;lyPw^@V)a)cpygbQut zeEUX&S*U!3y`|5}lxMmqZgeH>Va1iP%a^%qLX#d;Xy(&jYLwzY^m&;7Bl>Tw?hFkp zspa*Z|BKIwC@NC}bQLUDLBBQcTvcHKd0~S>88^}l&pojmtg?kP1)3T_$W#|fiv%|q zAo2L?_$REe%gu1#@Om>a0YZ)fYVuqBJdNBlGsqJNyM^0AhAIbuzqg;U3KU7{`Nuw4NTYqo;rc z!x?+mjw2&E3=BY90(3V^iLU{{xnF1&guq!m^y^9QQc2V1zLEOa_2~uK$da>yZ3Yl* zlR@PXMWe(BN_67rfJlc(GK%H&FI913uA=I5Zj_H)@K#Qp>UgKK(u?GputlihdZV+7 zTKb&a-!o0MdW(#>6?&fZq%eEYA?&^ixW|bgTewhY7!nEWc6q&ypzf)=n_rP{m?O?$ z9jAO2Dcg&4o;i4USPaf@C@*Wmoy%%f6zO3F8fbfFpzD@HpkTP&#|qcC){7s^YA7_& zwMwN8D@#e_y6sN)jil1DGaEd?4A}FqmG#d>fAZ?N&?Vs81 zuC)n5h|r=a&@kcKm2LK%MjEHA9}w*xf2!wSfP=c1#~@%n7Q0|Hv2%_Qu6k&hJDjhV z;4_5hTB@*TY`692q&jK+s-O!^5#~m&%EMXELgOp~JBot>TZxPK39hT(5^zqk&=j`z zgTm8=|2X5~|L(U|KU%ZQ)2PxO^*d7@*Fh}S<6n&|DYC$^B7Hm<7&&y*CEQS@-cM06 zxjx?9Q^?btX$N+1z{JA#f&A%+9Fbi5J{lXkg=^fYPxw?qk_@nz3i$$A<|;aGDzLjs ze^CSoSv|EMdWX@Spl)>~LpvHfBUwbGLIPY2hL+ppfDZav907CzlJ8h~_9=&Owoe3d zBXCj3ea%9id(=wQjsfrLwql%=KDO%sMi&V~$T<`b(HTXyw6A+}_ZNhpx>@_2wcJ1q zX=G!&&btRS|Joh4Mwo&bUr(v#}9DI(ibAGpDxzy@aX=w1IMw9uFh$)E0R9?%KYbw^6 zh$rDfKcxs@av+qWr%HR%PaG;9(vP ztI|E;QkRw#%dmAR5kW3CEi%05sL+O&cYMn8S{@S>*)7?}v!dD2)-bHB*z4D#BKklt zyD`dpn9I5$+Ergr@QQPhV_4@#>&2d7Jd&I$g>SD z5&jf0Ry-09usuP-dWTEoaU0Vkwx3CSV^>P39T1>pp8f*^46A^Xz6tuD2DNWr<0p3E zHh#aI_46=)^zjkF(*20T+UK7TBLCajQOQ?~I^urfVSPXCQU5~Z_UX0wo!2ciy*OvtEwgO@(BR|sfswRI%S|s1Kg|n1Dq-R2;T9^nHg1R`Bfz}u}5b8G7 z38keeJA8X>`fNxlwak@h(SP64i&JB$fbn{KvOwB+ST&gXjgMg#ckk<-GXF7m5&%mS z&^Q9b3YI9M=Z4cYiDe?akV-D_Wq|R*N+T^*qceNVdQj0)XNUe`6s?lMJ=S;J@Hg zP+h2z*Ist>)78L#O&t?n6umKXSvH&mK`LFQ_UATQ2} zmEoQqBn4Pq{hD|$*k6`3Y`@;i=s3U#qW02yHlu)|wk6n1_t1$RDZCL}DvAj`?)r!8 zsyA(C%BrD45a39q7f6B+Fd^N5=P7=y2tJtX(Du=EL{HOL8sn$7`)EA;BR>hMDIHGaI2atT=~3dd}vgl6|)_y{$muYiPx9n%j+KPSH4J5={2bPF#np za;9@HHflWa8wf>m)~k}xq_9Vs&wcRFf<>plogKKkvRDj|Egbk!5Xln-cu9vKCeWj2 zLlYg~I2pE0s(yK_;Q2dTnH_&7+`glw+|DK)-jxP{;o!&Mxa}XpY*gDU11+Bg#qDB9 zhCB0fE+Qjk>f;{CfR5Y?;Ap0UviZ&(fk~a{K$=nDAB50aY5_5V@os&#w;b(z$Dq^z z#8(3zOCOA$0#IjIFlir>GRiI5CL?XvT%CgBk!k!}qtSId46-L~)U|lg9nsr8UG(Rk z&SyB}(#Ri{fUj|t9bG&eVHr)XW4ucNNp(21Qto1sJt5_p{gRXza1)NVNn+$GZft%>L{4Sd3=c({Dqo+NgrOT!)kdQl5$3la*z{(NeXl5J7 zltF{4zboZTv0INP?1&r?6sNBRot+{;>j3yGuTx0LOr!icy5}6&eqYr*;@r~2$L{P} z7+#)U#Bx*(M;v$iyH3Bxjqv24YTh0^`l$u`kBJ4|ixp&K0AQqKG-%@-F(O{WP%tDR zh0%B%=$OK~xJinNG%Wafa&odFHS`pt5IDHioZKf?c%hQ13NZkX5rrIrAvH-bQledl z`ji3z3!da*aZ<7(GY%9;ceK*T0ma}hbU-rBsJ0lKm4Omi!=rtS zO8A1SElY3$&Y=W$CRmRZ7L>`HwTa2N35zL>BiIV7JC^34=Vn7^Ei;P?-1}{kio*jP z)J zt}NEzceKQ?DA+wWuKB)K+wAs!^XwnYrgMu%lFbaLwN(5q-*)`wT zCs$*$(RJ4MvSZKe@Xw+L|3$+59j^z%K9AvN1k4TCZh0D5!2i>wBIM_w3vibrz2Blw z{}-C!|<7)HAG|6mZ*piTesteg|}3s^yZEU~uPf9>>tn41K50)?OT zFc<$*B)^P$S1sI&qA`vE9d(b8!DcN5WIRbBT(LO{F?|=Sf6E8Hs%86!EdVm;*%~`~ z3O%(D7_KH5P6!JP{1!ZB&bS)kIP93fX8;@i z2DH{zKTHpXhu0GzcG-6cTUS(YVc1LwOpOE)5fgS2WX&UD6bk}f-DXd( z@#QkA;5GDX8ytRZ|52w^I)sUvxvaEl&WP)T04v6iU_>M{RBG^|EP%+ae~XZRMKg`oR)z&f$iU++f}{bxXzcEE_S zd}Ooe@fdKpsra<~$YPmwFyPgiLLK0n{Y@h6=j0z#1%bSm2CQU3_rYRvAL*#mI$8EW zm$f1A;G)N(|Hd_FSzG5zA)n@!bT3GcXzXiX0DQyzJ4(EjY@EZ}AA)4L&fuQ{_0YVa z^kK~R?Qgci90YzFjbUDQc=_O)zoN!G_ga#cY=znKw{Qx zRQr%cyDc;oU{&_Rb%}A97+3>W071!cS6CkP{!Np;u9Wn3*zu=HPMg0g}HHkAiyOuM&s zoNhTSgE6P#};^zo?im<6u8a_E-K)f$=mqiv4!3 zUG6OOiJ)LSGXRFx%_V+}huT%q|Eu zw8}hi^L#`hjA8!a`9uX|BUD*CY-F?AAqXi55NVz(<;kn5y2enZddgO%LVB$L-)#!I z^!CYx6{{~~GtA90`=h>{OyNbqr3}T;!SYaVLE78B;#Xa9F&hH+$lgvQ1B=*paXurj zuh5Z@T6*Z!6AT#9;pXK+6lm2rKtV7h_KFK|zh^}$l{x9T{vJ2%N z`IgqczlYZGcnY0M3w%pECVDL-fCOY00o|XCyxmz#S3!u>oxGh*HgVi-RdtX59@5op z=j}OkAZ`EP)1qHcqBFD7g@8qy=EEs^Je)Ry#jh@!Br zcIH%IRlqI;U3zpho;;fM`r_?Cb@47xua!bpai&FwA_#LY&SHZloq&okAcP~R9u?MJ zC0%jw!A`ZMBv)q{Fgpq`g^c5hnsc-vY(j1;B5+!&Q@7KK3QVXwa237AIJaAoH#a%bv*CF5y z^Y&IKcTYVgQ#+qAmU-lHB`nC@2a~$w1R6LmCZ6Edz_;E`JhmBae)R@RtUNTj)28bNVpLofNwMgNx&R$Iws}hZ)wNa&ss_!?YjKs$~8?9$jCS1qgqYoZabkhSb zZzE4VM%L6IDcJj4Jhid++=kDSXSGAbrW!|Y>&_Yl)l1#t3=ltMj0Ah188niwNEVs>hH*}Q42vmgUI z@+tFQ-d&89Q?9i$4^eAY{ir*)WWpON+TB3-9?Rh-ctUri6Ic65J7OUfrL@vC%|JXw ziUlP_UErO7Ia=)7PuW7bBDAl7s+z&dnj}F3X)fkgdFmQo-f<4J^_X+x*+mNc0%!CxE0vcUv-^3F=TUCY=j zNn0c}cZ@Lu?YfvB07@%Y!~!`%{isB7BpOj&w#Siooo>-j-EuUz+ic#7^J%!jwb$&M zfTlhZ;gaTVOOeC6R^2VGG+URnHaSFVK>9`576~X42KH@xR-mDNjfC!1c}m!5+v3-I z+qMz&Ip<~G(ol9mKLds49(%UCDAz8jJ(^e(X1Xjo_&Evkl|Kc~)7yE@qwXxvvn=QQ z>m<8fJyF@J?$ll>f2l3Y0O%HmxE3xJ$4A;Si}LU{fyW}IzL$*!lq@L|mU5(spNRp) z{pkgS7EzQ!{fHIxqSsQB7|QowrjMuUz7OAgP5<2P{ojqb`&oZ0!fGe{Z;9;>`d-y1 zKXGIBq7?m~B}p3o;oj5kdT)K?sz2fLo&bM&h~7+N@xG0lHB>*E7~Z2LOp8cLnR&F) z2pm5^Sy4q2`=t`>c(Sv?I!$AtlHjmQl{iU)Aq6cb<~+Y=5rZdi>5keVh7<11T>=C{ z13>6$1iv}!6+J8wj`M<0eM6)03H9j|Y$mI?g7T(}AyETFA=`OR9=V0M-~?NcPMHvR z;A&`ufIMCX8u8ap*?~#q(=_41sf}6a4mTs&?1CEACx_?jw5|HBN3!tARinL9e(TX9 z#-mGwOswxG%C=i~b*J8Vx{DzCR#MYV9!-M3vV;+_X8HQ3Pu?OUH&%?OYA8k3+#Zfp z<55L-Rds3&CM3~s=@=%3i92zC*a7Z!GMM3QdB_SqS$F=bnubUKMeY2c7eu_?g0l_Yq<}NO&Ti7{f=eSaBhq3A9tt`93HjODW*mnnrpqjdlD+s z{3h9@J+Vdds8a44Ik>I*S1HyXP@p3n04$8T%$~w_7 zY6e761`|_=M3l!?-@A?($c6OWex|!!>GEbCH24@!XarhSr4>q5Pv1z>O3LbF4fytsK3?icD6aqlqTjnJw84H=<_nUurDoL@T{%NpIvQn5ItyscB&vj?FL~U zBgg|gt`rdjz>-f;dPR&fVjG?A|1YbLA$*zXtZP>1^}Q-Sw{3rAvAyGy(<~+x>eNpi z$@nqmvg_fN2=KDkC7weY6v0$FeCuT zARr;x41hxY3$Zi#(7Vvpty>WCw*e z#2O6!>MfZ*q8sH)ggL~Zt~JbTIkRECyW1YO_NL~shS|8bX$6?^>HDVO3Wk{#@ypgZ zIxX?JD6>o{SyYGe19AMn+6B;i!jWr|2lsqMpLVF5M%D9Rr?KD9MW?Pd$Q=B#xk5W1n6HTc@0$X=>CE^NYjj;;L3>rh-?+2=jCbdPZo z+M{ggta!5}U3#dgVOm4NGE6L?b?7QYAGrsrD@me*Tp}3F@;xzJP{14*9hX8+}&o7HX8%gP%|~z-ofS}+TynEgJ?N& zfWK}_#O#*`*IR@QayLi-k)K{M6d;{&ckEa|GhZYTP^SksZ0A&@8dLNcGlEvFT<|u4 zvYw)rHMW*UoTSOXN>YWHbG-zg;@_afLSzD69?-1kLEYxtC`|4JM#zhFh5y{LzaiB-k6`U;|Ko(rb>6gtb-$U6)!O*< z!E2Sg4~lbv_s;?Ug8x*LTwyQCQ?AYWQ}Ac8L}>jJ92NRDf29;3!>aAkY_Fvj9Xgrb zwX+`$tX?}gT-kr_c-A8X+t8^2EQycWJ$RgB16N}7PMMXNty~djId(+p{dsUEV%vAv z>~I!8<7?IbDYZWXEpq3)R~S{jVeQ_b--nsDOmtX{;j?(6+xb5ktjDFeSYJ{@Vk$e+ zG}HJ-UU3fQbEolb?;sH|T4C0U(k~(nC@-~bijZwWn~2E(H=8f*93iT6LgBli;Q44u z4FW`gYON>nphq4~W=6o)I57LuXy;%j+WlK07r%V;%@Gi}884Xnqc93l_5Ne%<#Hsq z5^bBS7X0>yZRhlQN7EXBGYMr=9{6Mrruce|Pn_fex#j=dvr4Ok7mMn>2gH(ZQGECv zg@H9~u(X&rCajP6GJbXpopROJiw?EW!-cHIVl$2VqWFNg^W)6ah$n)r$yI-%$%7hi{3;UF31*wb2v|4>V?@XB&O1Q!1~6@(`2>{i zuumpBW?Vs>TonL0K*ql&kPti=cZGdq4rvrXhhMReW(0gZ#!c|RG{MdR!viqG6JMxJ zsCh^uV{R{3gQs5aJr1CT+YMJ6YjW)tBKAsfoH>zLDB@jOTyhPw^FxlGi9v~e{%(}u zhK)rm3F2e7L7p98Srf29<2dV-wgt|Zs}l}d3qA#1!1rkZ6}e;us-)R>8IJJ!pYO05 zGDEA?cNYx(1*78CM1ZkLs@YBy8~o{ro-ch%o^-36Fu->G02)aedb(NK1qEX%IMoPY zv_qwbG=Lii4AKT4`4`p}-D!KBMA9ucC?VHF8dr>E^<9p^!&F&VS_0U-u@vCh7;0JF z!cb@D#ZXAJ5g>@zui{Q@WjrjGFtY%6Xm%Fk#dv;$&UL#y>`ZFmPD7xP)_;aKHP^COobN2^lX#mPdAW0^rq^~q(RLw*6r4N~}c6}sx8)@;93pwj+ z>PBoQU{QL7J`pvZ#UNWnT`T@sjk;;BfSg2&E0^sTVE|CrEgm;zRkRgruDp58?l9UI z447cDd!eXx^=t_o7Q&9{?Kfut;X zaJv8>3dVqv^QuYnR_OkHXpkPs1bt;>6?7bFesW~wD&0b?qlInp{rt%_7Y_sQNMQWb ziK>e*7Sx8Sp-e2V`QEKx;#bhCVcZ+ksY{cTq0#i2<8yvizWFVb%h)-@V0>QozRop@ z{_8$Mc*5``u)dni+i}p8pMvN*;&x>t@vr!{*39WLjF7^?3lN~2To3)}QfYRM*hQA(Iy^{!)8TdR?1me&BBp6fBEAbL&f_)6i+|?_iv`sbq zyA@j<^qM_;9dPodK>-IufDj!u5B|t`x-*2ItouEvfP8f2)Mcb_{9uWk6yEFz2st zytljQgNfE((BqpyCCYxi2cTicsm`>GQ}{{LO+t0bnFP55;JLoGi^^hvkaMTY37qrb zZYnTx5HrBn=urX(Q3LaL4-tMNeO1@@xiqJQ@Fzc7@ zuwSM5U6VWrFfbtn|CThOf~u(HLMV@u%i3IAD*H})t|R4S&;)>RBz9NkutT{>NQC4M z;{Io2`Af*MHgpI<2m`G5V?(nT2bCHGI6p4oHvru~yRB)3(1?ho*sex0v^glob>B{7(nqi4YVk4O zalrtE(hJxi7UP1;V9aI|A$muW@vp(zT#@y=xF2Pv+c!1oQAz;21Uu$xO#|H6zNhk= zf}5u7+Yo~RXSab8UKdJSm@G`hKAXpzM>XZfX`y22S+!#(ON2DFha2zULM!I%U9MIw z)W9VH#%ySv!e?0ooY+Y%i}RCe1L>5@27T;>Zc>V1!3O(QiBo>4kA#;l*st(M1g<4f zi+RYP#w1Pjj6irz*JIJx)maMH+2%wu?TFn+kp;9=^VW9t6*aZfuzdn_7zdbD;9e#{fh6THCi>zx{i;PvtRLQ(TV}cPLqPXJPZPxehlgjZ$Ie~Q<7{<2C!{yOtJ1FsB z4_ZXMF;-t8puc@7itH*!!fPH4<>r-T`F4ztev|>Ud}(HHPi@EA(N&SLNP%Xdi`OZr zu$zcxIJSiMH==mt}{oH^T>0`J%(wRxU&N(3Y~Hd&eZ!m6JbHS)#YuY z>^<(Au_B28(Oz;q6&l|gcbq1l82Iwyd`J88!>yYwwp@$OTmq&UGoz^u(DmPx$>x>= zYQ#AyQPZK8oJbxDbv0O)AOSNFrB*M;(s8h`6tsf)xd)SvfDfR=cD#s?S4cuXCmoPB zzqFY8_iwAyJ<}aApJZz6@EKXhs+^(AZHSWK9Im^$oFZ->`;Q>>Yu1>jp~Jvg_m6Q@ z)y=ey5~hf|;?!vHN!A^qWdT*1png!7K5cW#X$V1-MQ1+hGGINHuIQFUF#NmB#VP{) zniE;H$%J^1lLCt<_bfk9O(y6H*RWi^h<(BZ9oQHo8H!ojx zjA0?|LBc!%lfY((YE__>yGiFglHhKhU0Lp&J3{Xaz=07S$1K%ip&{W@y|>D_6;kOy z=JnzY9ZQxLxxpxov94s+TbPEOwa?IGIKG|O-njWZ#(m(w z4LH3^z{Bl&9T9!srQ`tIFk*xalR$^wA=UROl6v0Q=-byu{71Ey`=FAX1-goY_acYt zCI+X5Dzh4;(|8E=Cq)k^U`rTbqFa?DX+~Z!FaW*l!ih*>!lSA&(g+YUHNttu46q?U z7n*eKLrGS?TQ6w&+h-|-`?1Uh#AmbP`|Y^!DGbRk*M2H&E!941x&+5;_77f>=wabq z>F(#_xtEp9M8IJy$SNe|8>K3zfq6)_Ne~3tKdt1TMwI5s-KFfb`;L7Lt-Tr7EMFa3 z8I|(DP(V-%p)q#K$xkPSQozE5)iKZLjOG?$EX_f=U9+*_6{pSGZRyY~D+V+hA+#kw zojPV}S`MXMSDNn=hrEtM$WG}`U}-{GELqgBmZG0(%dGTr<%Xwx>wb9=bJH>L*WMve zrLrG|pK;zeqj_cK@0XwK6@RJGm&4Fi%S`nK@+^}QnCj_nn#v@mw<7eriUY}nwIu`g zj7DAZ4;*!37R>Qd=BCAoK^G{UFhjN%#HI9u*da7Re^61uK(2{@X5*!sA%r}MNFwe&GM~Egf8%BElfO9QzL~568l9Bg}DXr^9 zvnLeNY&oo}v+mVfsXWU|O+@|yWfhSXsg`gML-|T)ML^3%=@Y_~E64K@pxZ439d)Z) z7Q!Tvu!0{m%qTVZGCg^Gb%R8kNyXeP#^Ls>w2lG7JD7;TFjeDnHX@E<+Gbs(5T?yS zOuHmfu*BbDJ?{8ub5y+g%Qbs;zJ3k`>+2CJEsm;hv~#i=n+R0Y#}U6&sU0P{yU=4A zA9dh(&2JilbPDs#bjaqWJkjtZ=Xp{DP331yd^@k|@k6u6&{@#wWA{IND}cj zWIfGgNPAj&7o$qe#5?+nc;}fskwel_+MT|)7W?_boHSbY_JFD-G^mljo(E7LJQDU|xOia#zx5sKomq*wIVwbe?EC!h3CvMo}m3szvf zX%RuDg`|A!ikCCqkf1>PHTBGi>UewHwYRml%1+HM21}S}8J3$fyK(`aB$T6uRGI-! zOxO{>0&p<7XWy1ocBlgIIvzJ0tA%O}&HJz^(+A07TTFAB$S($Dd%t^vQC&brq@ zPjHrNn%d046iQD8!aN8{{ml-d*Aieyp~#pK=1S*qe9teF)AF2tOxIWIIgz1?KUkW| zbQwv~i%bs_r0|I(%$YC!&^f0`nl5C(_3am+`F>(Ci1L^n=l3H~-RKI+GW5D+E2bJ1 zDFGvvQ=`_PCQz@Ko%VWf32HkHwqvcQG|)O@vMP8m#_(_SWh-?j=(c{WqlZ4TAEN|`1VILZ-=3JtSNvM)H`bWLuH58}s&=oQQ zI?7B}YRHocr)<`~#|hhm6gjum&$#uLiS$aG_h04lqRx<%jgfYWy}exXG73C~U<3K0 z17%k77Vn?3vYfA}_YsuJkkn5-=(D9vY#Ut7s&Xk$e}q;t#+O>7r_>kVts93!mBETI-`!Ng;s_KxClVR0AHliBrE75td#fVA4_)NoQL4#L|LMGmd_O$ z6qv{#ZfNm`CBqTVp1Z#a&zaD)cP}ct4nx%?c`w@V9xoFOeSSYaGM&SVTh6>>!gF`h z&FmgMTh@+7J*d9~+SwV}G``ydD9zIZ#__$4qy$8put~U)?cH!>7!0L(LkNrSQGQZ* z{o6!Hk@y+g06ghPlMd+F#FTR1C)Mp(G4|>cyAidw{p+Y_kt^F{k3*8rPqF57GJ~jrUAMvr`+j1(Y710Lh&bGEVO&Ci3g4viaZ|H*rqE1{ z&I7EsnF1mLzS48BR6gV2=N zn~sVlQJMs1)`uM!qyvEoAzFBFwfiU6f;@yppj+5)yLfuL`) z99%rCUF!*s@$9J<11YGp}zWR$&R7uS1a zhvHW6J&&Y=)JOW2^pJWj_}Z_NtfPr(KxXCUqK zZam+)SLJeH!2XrUY;FZGP4)VKv6(oJY9s~*S6ST_EzS8X8w!+Vn3x!nJgEaR;Z2jnM9R7yeBlmz1Jy8;dqNvK-B6sTnchr8N3@iYd%&ex5@@oc zy7Fp!!m?6HoCAX0C4&_zY^YI*C~?8)339A9c*^TlH!B3^CjqM|XlgVUSSJyxpE@(_ zO!$CsS+wR%by|S~+(HgHuUsnwbUWqhO2`V<&L8A_n6rm&W5m2UjtYE(@~p4#F(pAt z%cmts16O%reWF*RZP)!;U@vX+kVg|gaLR1BF*87H%*#Vh7e&XN-u}VCZJ>Z*DklS< zVjA26N|g=^0WF0~i{(gOj`#$TqY5Eiq{9I@;F!0g< z9+6q_W=@sMi}G`{D(qI3{t)|a)o9gXe~Yz6jc_0ouX8E_GgfXqd^ z*!QBZ;i+(w@pY43jf02;NG1CE-~mC>A|N#x=JnfKravwC8`~yM(d2QFFT&riUZor=y(jWt?ogoXFs;MG$mq z9=gQ;CME+z7P7Cee3=Mj9)P1t%g)>zzfdhxFadqAb6QH)V@upmi%w?h- zvPRzFn7Ejp(u42y{}x?+u4Bz_y{gnFY2^}CbE2z^ z>X2g{4QV=ms#hkiiQiIy&b!fx;#`-JkKo`rz-Rj`PvWs*YT}-Lz46p&_$P1 zuM|9Y?yfpgBIsilODSr9yt`f{4B$&OvX;Ye-;^*0y`|oiN3~INlW{Qs2H7~QqU z*0D9z1tdbv%UpqtCXW+erNf9Lf*^TtM!|3z%k9%>`v#oo7Y$b?GsO@RA~J6d{5)(# zYxL#P9KYQARZnSMRsvIHOE3pQ=HRzJl6sORe zvA1wv3Hl23cQ^oJBxgV%U`a6d>IfKaRAtu5vy|0c&tU+(R3`;9$2Z_?7Y-Ccu&e}s z5|aUgoHj%N(j|~9Jza{J5t!zKHiSh$daz*b>X~Z+bJqRGGD!%p+#?#~GCPvpAbF05UD>nHTOM!z-C=&t* zAi(=KVCe}``^KUqcU8znTS?%lt5&U%s*mZ%N8I`(2bcPOCW5`kTkUw><*Zk);sw*u z%nb8Rpup8|kqDjh<=N^TL+SgCkDEmBhm4#^syfFHkQaS-+6aYbmZ%s}IiZ@j@25-< zO+fc$<5|z1kqxLSJ|K1v$&6WlMbEQns3&a!$#vtow#vaJ9Dd?Kz6YNpo8+}Hu-OFl zH-xieN(hKhTdIT+)-eG6vjoxEafVR|nlGZ5XdD5D26@}T6yXaO6O9#qE@Aa0P>1OY zM}sgyrKD8B299V)2J|{}s94gbD6Q2_iI2t6CLydkzjP2tRP3+kHBoZ)Z4hD zaB-TRbZo$ouF5n>vt)okRiTFP{6rE&^wTyx>WHplvmap!BEZB=G`{@F(h$U-HR(MK zD@8Ckva=9Y5TNzM@HtdSCn}L->6%G?qpP1ACUYubhzS_SW;-jORNQ^om5%-C zu0B<=iDTX-V-Wemkp^^RFj{kzsRmufR|YF_nV@WFr zX$S}i2>y{t^Obw2b7`Qg`X%TM>mbTFbIC9W2>B#LBr<)k^5GodF0n-r$6p_JMVu>9 zdDzQiZ0B8teUEcZA)-JYcw{w7I`h3!E7lbJY5i)SOR5-wAb`k*Bk6KC*!|4PWx}|O zJWWYlna}oktqiG7vF?i+kqJ(B5E=oKHM6s^>!!O4FEmR4+^5yr-&#jrW}2gNT6z^I z87n3T_ET_p925eEsY(P*aRKVh6M|+g80f4XgNWYXvVk$pthl}%P$x*TK!dhV7I1H@ zv6uZzD8wzt_I0tsenO|s!HLbKXUZ?W(i!%(Qm&qgy zq%m5~<3S8!3xXv@0!$KvMV-X%KrkSi75W#h@VzGQv+~}rBQJR+~S3z==!5L)tK}jjY?;r;B@<& z-}SByhhN|BPWeXvC5Rwh303x4M24lK#icKK)-YQWQHr$AfeS1Puls3T)XLp=tE?wR zTK?DBTC~`xFm=U75wK;mE`z_tR+2mleb1pzf}(zjW#TKR;_@>}3h{cll?M zAmX*JIpnsC!U28k51Ka7L(&d(Z!}%G>uNX_pN;;1k)C$)?EJd=+=Dd11bR*CapS>g zQ`cAO7VpqQ)=zTT9GC1{>wSBw$%pW4aep2crqV(E*+gl_Wjh~V58VGRS%YnVBxuvz zL9bH+HFIX6o9Au!lLM*!2bVMT*&H4R|G6KHUvI{)O2?e2-oFOJWXTWbK|pZQA3NDE zs6jCN0ud$`S6iy6gh((Tz=3iR*W~z-?4&36)x~B@XI9R_r~SQTTwJQXV<}82QLiGA z=Guo65u`;N9)mvRtCucl+I(eZ${DSP3mRwn+Quw`uT>&nI{eFv2Q30_*mt&;R<$vN zMNvf;^;u04KRErgxB6cee~xF`e6tZ!2%8fF}C}Qe~w>rWj`XLpE`*-_&g<_ zt=(3lk|q>{Um>+LmBvC$mUag^>H9|Q;Ev>?4NGo(JqCk`^-A?)#9dzw>b_&(TcZej z2U8R-uxY^;=$Hi&L!8SDo~c-(J0eIGCabVi{{)=nwrs+XmbB0`EMqyB`|S+*ye8Db za5RrRCB91D!mCP4xVjX{rUOWb2#B9}q&CO>nSrH!X2&1U$aFKnc)zj;gZ<$`V;T1y-B27 z6?NN%qbS#rghe;(-MQrdMl-i;Wgu*T2s!`7gb7Fcl$Xe~gAY-$u4;Qy?tdzE9z~O7 z;qL7%DqG@eHIVN>D@vrNwQ4o;Wc{b(HDN@0&r=H^*_16f*_iycR4>7yf-vQ;CmC_j zMjkzQ%>+tXo-?!$o|x*I`AL#Q9VVHdrs(bvfCn}#q||AQyq_Bjy(viXQ{bZMu;_PO;*M4#= zu8j15(+Kvb90@n1L_5Eh!|#jwga`$}EMA0hbPeJO{5637(`;_m{nh*5ajtI!Z|Pni z>C=}FxLvc7#Rk>0&9x`H;ikQ|C14^TFWR_d2>s2H)NwX?{W;L||LAV&_3i1evP}go zY0gVjVhdxVsnP~i5K}Qwgb(J4zvyrHXTTQzZAJBrc5MM{2o5*PXJVQTSa7!^Q#$3- zJAQJ#&x(uwF~i?^9XFo(zsvFlPRI5CP(Z+MYGFCS2cEANhJV>c+}`1+O)Gq@e?%c1 zaYz25_`D^IVQubimE(G1QQr3q0K@!406ZPH#Mof}EC92qn~%-s_q)ua3xV|5gvQ34 zTZLOB8WKN7F^GvsKikq=DJTh3rCiaEh72fha~t-hPqo#hm+G5%-(_USiH~BJ##k6c z#C0k~hKY(}?jxYi%BkbT&-gUcJs?D0Mdzn&?`g4z>M5HYR8NHR1&%_|U&;U7QMUVL zbuX!dB*GufYAT>zRrmdO6%qfST!#w)C$-8kkYCXH=Kq@Or1l1{%*Xgu;KN@knAnY* ztRH~7*o7rg%ioOy>b94*kbLf%G0<=fKJJ*6By7ZBR_>KNj{K--j z4V*5k9(Sk}Uar-w|KB-h(Owa}=$zSbEo1V32d--DOU%GlC_+5$q2Th;H{E*eBP2cj zkI^tACb^t&!*AW8)_zfeX9ax0<<%cw>%Z#}52{2&Hqb+9akeqUd}A{Ks00BM`iL%GNM)_C+^}UR3 zbrPRAMd^vl0Vq74jbRNudH%<8!z*R_;v1b}LN=|42nflLf;dpb-jSPAh?ZV;ko`#I zWUQ$n$~d&hU#33=?wUthI}v-i$X;BTH48GE3k%H*QPkCqj~dPtj9RAC%*QJ0HA(ZU zzyI2QbVf!HxFCS|juHEn3#EfDCt;9{td?hd#)cE_kh&r_JFbU-pSe5?IIMB0;HHVr z+S#(<6k1vcE(dPxVsxCY;cHV=?U`JuEr+gXJga2eqb+}s&NpfZ}%bk%w6**B* z<2-s~oLEP#NRcsjH zFJbshx9NVBXEeikT&FU0uvj&SAVAvr+H>WwWSE^7nL?dzXPIZ+(d9z1!BTuM!w5*B ziNyUP2qz4mQ0KHN7ihi>4qqhdKX};}x=RzDA6PRIYCY+01eucavb}D4V*lq{k(DFb z|358mk6Q%_Zpr}vOTf~E0bK~BP&W2lMoW0UXT-tgT>^Hlm3uui{I*q#VyJO}+`3HcC8i%+d1tG0pNTsp+Y+?>+o# zo8(cUUpi}^bhVUN%wMYsi6@PJSQTwS$6O0U22MTep;9+Mj9bNn2v8jhggL{(-w;R4 z7j^^Uiu*#T@)&zFAb;HbuR6sX*G{iUH!1JGl)ej;3lJ2jabPL`F@ATsn%ITr%2y8M{lqT8X|z7fXaJ;Zzw4cTaKg`2_P9jg z=`7+gr2;vIZCdI{sjkdKeaWjGu{yjgVvGnjjreU7U9QJF;6Iys4eB%3fy-hzhU1=HHcqP;vj$;|%3HHL>Vh-J5ahKS66X6t}_!K^Lf7rn$ zfiUih1lng$OXs%zC#GGm?e~0W`CrP_KY{<1{9Jx2VISx7eqF)8TV39N+VnGV()aat z^NA;dU(C|h{-dQ1$3?n;1LOf;vHB^a4U-$?tO3a0@yudhB9Chke z6b30jQZyPxR)!h~)LQX;-?4VQMA=N^)wz#d8)JN^V(2yx-h7m{*ysKU%2Q6%w$=n8 zYTHN$rPge#Vy7iCa4nWzx9Zw7;lry98YPb%4k!aq$X56bO|_F2X3Sto%#+`l*Rf1l z?d<5KZlC9g)T}&mZ8WrHbdZwRCpfM5}XnV5Ce_*5b!X{7t!h&$bEnqHV?6MDu;@yOhuM@ zp{80e(<<)$tuXK@uac0wVS+k5dcFi}$*3@)NjxS*Q;CGN5?A_XD85yJ*a3M>Fq|Kd z3o0S5CrD;CDh(MS6)Zmhba0b_Wj!>Q9ZeZE=LecsKA?1s1Y`UwC^%Rd32UxF14$+8 z&Y}087+6$acTy$=INFs0wWn>m7eh+* zVLQA~T%!qPfQrUGx2Z^7P%Dd%1w`3zFKN+}qWua118D9O>gNK zY}9ANGZB~aC}1B!)C16;@KPLmm#IA|u-9oG!H9;4C)0_u7F2~0IkoJy5VDkd1lFRg zBJ2ses$!)nX&TDzn3|*ipWNovGSY)cD zgPxe46t^tHexEYtstn<(x|ke{%475%4<;8k#|+X zwN?6Vvc%WQG3~gpOcJPCqdV`c+X7{!7d71AmRra!dlN}+i$43-tLMla6p9N=_Zr1U z%kZ6r*p`YI=_ye}OtvdVOpgjcR3AOVwe8j3v96aUS#kIh--!dEZChQ3(6Mp#-|E2& zn)mRCsMqR@aegJNAhneUW+YFTmpG~X4O?>pAO!J<9nk^30vqg!9C2?Wx#;W<pc~ygFz_7ZHiRXE8nl%e;lZ@mjE^ zEbDCpNg%YKk2fpLwqN}1?Qf0K`@61HS9K=-9m7^ul@$~pl>#+e2@$2FL1}kgtoxTt z?FnX{t`RmZQPZUs!1lHvfSyG|y*p+DY>&XA*)PIG?4va2>#NCW8abFb$b>(Spi58JVb=yD?8}ty$&rqgKAfScb_KG z?n{7d-1pZ-JUNMCBG=J$&S2%aPRCOyj)}v;m2hCkgRz!u={B~rN@KAF6h$=cMQbw> zSXa16W-&!q2dka`v*la!axo1(&~yp>?m&M>6RE4X&Njr6KLb%V0i$)C5<$D1(AMR} zhvOfxX*C&oJS`4UM`G0?9Ux5z2y1U=v}o}(`Mefy9b7TzS#E}gtWL5hJ0EvC5;Fe> zwVeAiK91p`;sv0ghXii;9(c$XB*12lT*BQ%#f&z&jKjh!>rgyJCGBKU|1nYp<>9=L z8a7XCUScDKvD}yfB67UKfyc@INquxerU7~N>|IuQ!e11C2tWixZiY^6H0!n_CA>cL zuC<9bP}iDdrnl1PB6nta~ z8S}9i5DyDzk%JA6FWs_6Ev9^=--3zdCL|_ieU+R-g*JWWz|$rchQ_j1ketLDRbN6v zIt?^uB-p(_1y^9OT*X$okbL98!nIaHC;_1pu?fFvJ17V=FCXc#%0TcYW{K3^29eG3 zky_3yISuQVSf{62%b9gpUY&A1)|g-AiC_2_>pJtwY&y1a#BZfGXARo+#c!qBBJ^Io zG60Ck?67(|uqxKJ_YxkC3-F#~i}Z{J#L17RQDZ?O^=>(ea~mV><3XE-w&VmQqeLgD z_=1wfo1JW)Horp#2xZ$-u-4?4K$>)GPWVo4MP9)s);Q znL5PmYQCN3Holl_0Nu8}Bz!Lf#KWvQZT^+`J6|$RXA4XU!RC723x=fk7eg1>{jUNt zj8de5dWIdP^A+qZ=yR3x&-R6G#b*8IRDmN$hUdUZ(ICL>iU9+Aa2u2Hjqh%yZ`SH7 zJ^Q~c7Ry}(z2o9Oz3T2QJjHo|s1W&pEx!9o^=RMHQkO7l%|1r69&7~vD-I%#{}gtD z?2^IS8H0#NsQ7?;S*7W@MP{4ZzL?U^1h%}0xO(iNQB7;cM4?2)(&uUZY7>i0_YAYDmo?rmb2(z|H{*vyF<>G%9IHek#t-dSQnUOaxJE9d$+fl#kj^x zn2`w95*T|TP(YFcm~+|Zd}*mD(HP!dK|#z(@sLd@k1XJ{6!S^DY<1)P;-HBjm;&e`KX}+%9rDGuiMqU* z_cMs)iOtvIk3e_Lj5a^KG7GR4*En9tKm_qjqq8#Ca$KUPxIFmVl_PZt3^~~wOeOB{ ztljy+<^g+cQ_81}7r{#GgtoeLHws+aa~-ml zp|wPou{E`g!LXCra{s{SHiKYt@)P#dovKlTaEng6#=&8RXX_PDvTBDEO4cQvId>I> zHZyTLqw93qeA5Kx2Tx`q{3xO5v?-x|ZW=9}wXj`S zg&ox$D!#NIZv`fY&VU}lOw3tQfwY#I(SoGCmpPnv9coj^oG3J2cMDk+q#DvQP~eSn zYDVy<%(BuOJ^Ba8(C6>+hV8`u=)(Jx(Q%zE!C}($Cos$ zGnKPup(fI#o_jjMq-!}$VT_2sX6NFew%Fl5-IG?rzAB&_PA8-m_MG7w5MwZ9It3$@ zD^k=xoK)g)uL}-!h;`YgxGt5(@E0H=QmoUO+z);wnL1&ns<&Mkze?cug(+%ro&ct8PNqRlKp0 z4nVY?6Js~TOJ^)Yx%GQ5W%H9d&TYc%TE*VYbF5U?uM34sU!zU~EaVAmy919CY!^5u z8Df;7rz#QQO`s%lXHp^06y0wANpZ2M-%L-YD#S6C;^=Bwq1!}Zb5Xi^lzQlej*b+Z zL~BBx2rD_1LJ37$Pn9!6Ew)7!yjO;HL`WSgzavvk9Lq+ z@*Dh${mWrS1+SusMk}BhW4EzuhJq)9E&-bizv+qwYItCxYFxe*+VEB86LmtR6E|4U z4*$Q2wxiY65*&-Dp_=X#oJ5l=&cbuS!Ww1C{<0|G;ofaZWbx*nL;doJw0uW>Vk_+TUdI)$Mv$R>v zu+sj;%08R*`-FP>H2Pm`i(?P315E;=$XT%x_Jjm<)o(G~aSMO>C5jt=nlbt`h=;|! z6My^ee>v7#V=nniMIYF6ipr7o&Wc=3UMdr5X)x8gHeLU|Mnp`siwrkQ;F;-}XFSZX zdo4jA&B~L~IA~Ce^`d*z-$EZu0LmkX@8K5?aG zy-b<|uotDf(?&8%sJfg8=c;66G*T-Zw=@Src)bq_Pp-LQ8cn%i;}$gGs%hUl<;K6S z7D+kLMdqm1?8h#JTYmP3h;=@yV1)sh!%F_Q@kUk^7oiJEYSv_I%YzMxl!NV?543&9 zV!dX@(U3F_FYd?xc3$LY( z&u;r}@SHE=!P#9uWouTyYsI_)gndf`0bS?Yg#F@U2=G%Zq& z;go7q6X`kpnT#;oF>lGY>0@{OOdS@ zKpEiGDS$y?;&}Gh^$0sE+7AJcw5ypuGiCIH3pzGJYhHEWX0F`8<0C>RzraOt4g(>D z_h)2TF=EpFqrqOLTh!weN`b1Pt0jHp;wt{%0D^3R+*deWH z6Mur^GxauZPSwt=`EDm?64sT}R3Z8pooZh0;Td9xX*l`oB&dJ8S|I6yS8X?41L;~I#89re(^#*vl@1f~bX>l=5;U5OP?wBMX zL{A|W40iwV^#u3AGo!ZDthBG1hqvXuF?!^^^yT+da{9a!qD-i&jTJ#B$B39~xI_w| zi*x5}>H1K=66y43jNp1XScC|MvB0R{8IHLbAtencY(6lOpra9!H~|v@lvo~GVO;Ct zL-Jq40_a`+pR0+zT|cCjO>GTrjUDkgDpRJgPKlVOc+Fz3CDym@{Oxy3J_15MDQ7&i z{H$cKpS2Dmu(dFs3{GJ4V+1Ex5)BOS5c@M2!b1$a;O4F>h;q-|OF|TGdnL3o56}=H z4>}?K(CO{KcZM{26rRChy-Szb=+C8Th^Aqb=19ZKk^b@;1a|8L^|RTFC39i#IY@jh z^e18tma?RQI|W;tGiY_(o~`8*4RiwEFmOE8FxG1TjEe0+-Ci9^p$-XB(V5+ak3FIe zbyc(u{fxEWV%D2JPD)TSTXPWWi9CZS3zJh4A`G`k%HHRmBaDtlWK+ku$_{o?DIr-_ z>+2E2)VVOz2kjmR_V(1(R-7mCXP$YqC$hX3-UhYc;e8c`0@`IZA#JkBHUjPh(gVnZ zXCF*y2t+_%=Jug#92s>qa!TOAVU?fHXlfbS3j{!d?S5~vfvkXlhzqE%`hQ)b$6$ zi>-=HI&`!JXW$C6dswkZVY+pn&w3)aw5{WY3s>8%rS*Uw(Z+%i1qC9 zGLCkmZ|TUwIOMExRvORJ-+H*6c&&Nn7?afQw*d8gjMs~z7Zn4^i&i2h`3aKhQ7kk- zmj>Bg*G!EghIaM7 z3{bA65FfZ81*R~Ah8ZCp8-O53cg{7?;w0Pq-q@u|CX^`j^Q14rRIpJwl=>+JI?w9x z8U4k12}m%H`qXIAh(LDiK|22L_W19|Z?tR4i2rD-**M9-=n+FmpT9Lp-Nc6toPKv@^7A~Dkwz5 z7K@wZ7N$D;YZ_P^*R*1nCeb$}W0xq`^Q9p%w%Lc*;EaYXwuY9Q0dC44vg)591|f~f zQZpR02wpT)7jTdrfzNGIBd_mr0nzJ9U*n(~m_i~e7s#MEklQ6N=)p%Vc3YTUA#U*` zLk<`_7EFqqT++u;WNCWjrT@i97u_mKM*G<^jNgY(tU2{4r$a{i*Qqv8vRD72`}|Y| zHf-aaNs5N`4lFXpXKR0Zfk1euA*_2UY(+h4xehirm%`fi6NUqBNw7M^Cj~1_9V9bj zx_GygP9b3&EOxZ)*7{Nd~Ni!HA zMj}ZVk3Ng>P_M@GgV0z-D&f;8Y2B%-s+> zia@m{m-He-1z^cyXdM_)YD!HN3AB0|T^stw{SoPbCoEKvhM65Pb-Hh7UDKsm2hBxXQTv`7q_ z;}ZA#sBI$glF-OQI0;hDSO{LxEnH&uQ4fKihpN?TT+D4sLJIwAXlOWzJCNAd*m`8k zPFc{!UPP_HG`x4PhK11B0~}8{+00+P#4+DC$*W)ckv>@;q*Bzb4*~g)Z%Zg#)2gTG zb1p}HA8|kxAds?fJoA})sE8{Ov47n2nil}zY+&`~3zI<;PPVcLnTVuTB0Q38hFb0B z$}vPa9JT~r^5(GnS`(N!cWY>kka-y9&t3A1nNWcL+N{ujIFpDFoXysP(k)Xd^Bk27 z#3O$F?6A;q%TJAJbE8X2SD3Uu1pvhMV(?QC#bh|aH&(QvBxLYf#ck(dy3w-TmpW%qQX(a>F48*)1Tirz!*N@2v(`|(oxI=jXir7q z52%MG)UE0v5o;_;w79-G5S(cYcQ{=hl&JR$xv!)938QN}OFZ0!yf1?UjW?W~X^rUe z14iqUjtQWU4Ysh=TPHNWe{*|kb}CkI@oIEOtRhGte82ixh#su3T`Z(g%iiDSZcA7w zDav+%t%8hTxp{m>np37uZqc3x2ROB{6a)`_#xpOseE5^m)CU=00U;B>Xp6wZyV%B7 zl4QStLSm4=7xwtSiFrli?EO5eAmT{>*a-2Wx_DZm6H9 z`4Y+~sC8@+XjA905n5l%V_zAll&eUqr($WOJp?DEglJQJKD%QQN>LwQCKUaq$fa+j zrNJ3gNha}&NR3&Pv?wh?KzcvQ?QSj_RA^h;jOeYnx+N#&UQ1A;AH=m;$7&*`-$DMw?CzqSJOl8sfTn{Gco7b5r^Gn!R6y~kJ8+U~Mz zhhDRGjby<^d7og*(9&%ve9ajR_`Sa)bbRhc`9de=~yFa?>T+29Z6WNPbO3*}g$C))5cgls%IWFusL;GG@R39ECQJZfXGyYID{|6v!Sm(<4T; zNYx{JZ8!-bRd%QVlum%IM~9m7c@U*x@8~GYGxREd=|r?9zCvB`-dnMQt1MTBe{$@v z#E4tB!S&_L>`(d}n3`PYllA|$PJl)9A~^D()0-z#Cov%Xbc!coAgM?olX>}n2{~oS z*~OpaFpF$Xjto4yP(FOQ98>Af7FbdPqr9*I<37bc4WFFvG%FqgoqPsP4t&MHCjlAU z07%(guYaM-AC0h+C0U9ux>1BfTQks#Y#Hu>jl>{_2eLGZY{^$}=BZe-aF`(}>yDR6+XpAk;<8$;q ziKiTxhuxoBKM#9`5d=ad0ysys<4)JyzMfgdpNn1q{*DuH2cU=m?=QI0; zs>jw_qaHZJu}UPJbObEJ0NfA|7$5qJRG={k07gI&0S=cyi~=F6xwSL-CE%Xz+EL8Z zwO)8e-a04^zycu1@W6iFpiy%(fRweMX6z+q#{-oF5h%L1!#U_3!9m0Zbs$+9RpYao z*Rxkfr(MO{XW&y*lY_`$#^ma?CE7=}!+x0^Qb{0y38h7$L4P(>r3C79Ek&9|HUn8m z76z7ObNQKG-%XQm2L0wG|4(12yC}*yG72e5DjthnEFd5|xXf;-q%7iBJ*?Jh+^H^_ zg;?sC2$PAJ$QRl-yVc^{jWGo9Xt}IJ4-=;RZFX#pZdz&Dz=HttHj5WL(qM2&hC2LJ z=UaHoqTuNuu{%h5lB@NZxLGMIj5M}v*6g|)eLwAWX4 z5CUzEy)Q;qt&GO+bO(^5a90R6VLDSZ$DXVu-E4h1+xm)dvltv<$Q^f6BC{o|meTQ# zwGC0vbHyn)#Nl8_oT7R`!})^^jPaR&{$cc4`8$4{`#V|Tc|7e_0h{S*dYsRh?Ry{_ zjy~s~_B^Qv4f;Mmvp+hD1g}SJSGrcx!#WZy50M^ObBOJ$JY0P&I0r{%sqP;Iu5(tec8YRJ`1)ruW=C(Fk$c_?+Jt z3B{?2Zc0T|Scisn%UeMAFJ(#uVWVke3>f#<(`tq&X7j`*K<48EU~@v@nW%qDfMAHn z5DzL4s{y<9&2bX8k2D@KgE)tUvqxIqggh6b#6g#=VXdPD5M8O})0sBRF3h}#I@JIX zo4S{qw#xn2YMGl*>o1L{PuX~8SSq9`u{UEsMk=GNW{Al^fp{e2TE>|AC{p$fde(Dr zX}90?NDGi`4s2d}zbh4}BGH^6Ny=62O=WBX@0sT9m6YLKNX>*T6o(uX!pU4;aGGn* zE`~M%#lmYFHUh(4KUFExS=?0!cUR7TnFRWark{5->hhgS&$wcr*ZuD0ofOi(mUyC; zme^I55h&ZD?qmE2>L6_ODbo1FtSj$ue>y&hA+ zidKwXAr|T4Ui{e@R7lSKnX;OlDU*>$*Bk~SR+wuzu?*9=`eq}doW$rOsZ!=0TNx?gK6ih$kaWCm znLrO3vbKc6Q-US~E(Oxfy)Zl%2Z)wvSW&UfpY+8}WR!*v0)pAH7#)}gql7NrLlPhh z=Ix^t`+#n4knXTnD;|Sy3LzYxtoB8* zq$S^)v~$DlHhNkoNyf!8!U7@_gi^Hjpt!x1Fzn0wF}%obnIeO{ngVoDC>QCW0YNgc zBU%STC-CK=+Ig zbE&}aGo^8v6-uQl1f!~;XCZ8y>?`1`ZWF9BjL<3zx2L0!FTR&zq0m! z*KHVHy88p@IYd?W0K5DWv1)(j_7Nh(xr%!O?XJ(=_U+Ci+W~&T$6Z*C;QgncRU~{< z54J3D@XL92Qm4z4=lqKpw;$WHy40z`hv-^v=lHgHbPt*ACEivOTtzp3VrbpZHWX1) z{-heG_EH&4+wJ$?gU$GtVA)T-wCrt-`x#nF%1&ZMIBirtbgrJ;D;^43U1hQ;qKK-S zc?3h{z}#AWd@{-z_s=DCXft~$&RiL3VW7x#63Wtxq-R{u+5Bl|nfDUIRp9>>t<0oR zp*fGi@|PDhs4A;U92kC8gU=;cKzHzqr1zHGv}#(sX+&RLA}FmiS%>%}u7>Lt{l{lx zowN?Ba4l2yB&DS0oXb>Ip>4mFWMAx`Q#U@9 zB4T%8qHn!A73lp-zXRdxSqJ>A@##?XOLR)`cDz?v2^&pnWYzj%w+1`iBFm$7dq+@`F6uQ$cGwT zp9L%nQKfqGzsXR^F|UM>(ePr&^Z&&&CKA|nqwkuwb!X=K3`|!(UQWo0Npa4+g)pPS zfHHYSqaoiwd7k7X5&U>@MR}6SG60G zQ|%6IXw9(O2y?Jlf3Y!2rd!+RIHgLu@@l-KN&r3$oL<0G-E1$_69+dWu?52c;4awV znT}EN$RxYquZ#M@fIxx;e1gemiQ#T2OUCUa-eV3dL{dX9+tXK3M{0U%SNOysca@V2 z&({1rhc5M9SF}%yFknj)-75FY?!ptCxnup0!E&(hYbj$jV{t%*j;mEPYn5@8<>#M_~Ip+;D=eOWPeNhLwXnaSN_pHs9VU6|Jc5uP*&x&WktU$ zuAf&|QcaGCxI?Y*{T$4mHzfE!cn01N{>2aGa;X-vPiKnq2!5Dk2^3BT#GSzN`8>Wq zeTP5iaQKIi@!Yvj$bsam-ziTYil;r;8MjgV;^Fy(`}bUOO9XI@Za}|09G1u8YP^I0 z(ISp}xE7#a5>Kpe_Wy4i@(*Clh{^sn-0e9g-SsLO9*7}=4Skyn4a{o3Cc+osaF6>* zLE4HCU%Z6hUTSTB3j&-38JO1v)P29xz6Lshs{a3QquFycIw#K-qt#PM*36;_3G>EA z_6^=PwRFi$3#%tF0`x=cS}VEWYHJK06HSt+*iEdo8~ExWQETc)5Nb!kP#thI2I!FG z8HXJQ05mm|%$00CwmQbvMypNPN`EY>ih_v}Fc6K}jQfcYI3B-NY?%@Y31L8MEd9Bg z{k8Hw>7-*HGA56v+%1beKkj^{5>ReNf7Hl=?~YM2#8lcLgB$rra-p?N%QNWJvz;RF z9D-Qy7~w0$R509^;Wbu@{h8a=Xus|B^_3s~A^>fQy5*6r9>+k{)4;fLj7NXFzh>AW zfCWG3VCt~Hkr2EqR8vKysYcdpT?WY*am}W#*)jg;;2@MJt;m8*L%5wvE`11rPIg!7X#mIO-uG z|4}WoHce|hK_1<@D=d33C8G{RKFFqx9#Rm2;$5E{vPc-mFlFL}gC<@CGwsZiy8cGE zNdyB>g4Npt3r?tLaPjPuZ2}oUP70A(+O|Xznt)2tBnoMnge&!xEBl#gSTU9*-Hh1e zxLrPkm6)bz7oTtv!2H+XW|Wc6IELv&#) zD$ZBjGXj7E5~B=Jj82HQmJ)^~c`t;Q;~0*<44nKjyLQ!(hKE~}DIEli>LF1i3~(JZ zfiR}&$Y)p{5h{qP7SNZnjME55ODr*j(gZ{lq~ihwT^7J9au6Uod*%OX&QjPqh@EA_ zP8s0KiHfGc3p2K<3lXlxA|!mYbWl=&9`bU{7&5`*hO?ebxNBpyamu)#MqCh|IAAl~ zC5szKD(wT>7!2n`=yAuo>j8XhPc})?rNPpiw10D$gy?MOvq2IG&T8b zvC#`DnG8*}i9%c@r?oXktCXIKQ_M0Tg8b1&47Ubj-X&_MDk;Y zNGCLJpt?EtRh-uauTM8&w-&Zp0tkJ_6~moklnXYU8T->EPmD#g0htZk{XyO+lLwST z)F){XC?GpEQKs8-57xLJ=uR&tZ_`ZX43xyS`&79`uX5D_SaQN5UTqffM zVN@wf1F1vMp+WSTtB?;`&=f+DX*rh{sJOL#{JYb_`{f#BqRn#58dK-AL<{vyMN86B zEzEh@p|QS{hrlF0Khf%C9j3R*r5MmL0HNN6&p(PgR64w&DJ-%pGW?AyQx{1i=TS^ zu*L))HpdNDgKO5#mM9WPKlDf*nUve=fx((xcT*cQH#Fvm1^1-{A1H|d*olJr@L{wN zNMknKEY_4InmGnFlZh-}U6d`v7SRZcd8`^3Gj#kv9ZV;FTDcuYtsW^sUGkJD9gB^y zo2?H;=`enO+q*qCZmDYC<|JOPauNUjXKw*#V=-N z1ratvh~P=}iNd@y)|i0JdC2I6w!|33Zh|49mf8r#5(h9Nt2N}`YA{c0OD&C`I-8@J z+of(};u74*t45ufjLbt00Gf{h)1ymKolu+v zL_BwpNMz@UgU*T7CSeij69@y`K+T zF8MH&Ctdk+_pUn$S3$x*GF|OmauG~Xb@eNC!S*9W|HUcd> z__7c|#q-&TV$B47R(4~@k;4A`WMteP?D8*LvM?}t0-+Jo5P7T-fhIrp9!K4shX`s= z?2y5@y#Y}tuI`-fDQ|GKpP9TEhCJvo7BbV*U6gd35))|-P3yxq^VW>oSZ6!Y<#kP! zMuc%XQ|TErw!S@W#5Z|NM65qbo z0<7E6_<34L@H%Dezm@i6thS>}`M`*Eo5bG`Gaxq^ayP=zasKN#K{Q<`8WHD?@ zBie9{-ajSp#IqdkTZH3hGT?Dgl3D@&Lgy2&_)sCYV&P7d~6F)lOX8-C<&Am}=kRnU0zV)>)cFDUe+b||IbL9`)e z9G^3(KdFPh?>3QR4xHa~o>1c3tKPdB{1f-0vS?_`(R3X*7v4s5+?*Owsqa?b^O3{3SXK1(s{SuA zt1PJWm-g@!`NQ`(R#LoRuvXVWNoZtzoJjEaxUX7Yg2+t#8QA>KGZPbcdQT zowL^#?+LCG%n`}E&iLMr=}#H)iXz-TO%D0#+}Ega=$TCozV*jx`CQht^gB-yez6G` z*}PT{H-$%w)!agR@spY$LqONnkwBpmn8n!pH{Rv;BTcF988_`>BnG^5VUAhl-Eii| zSxLyDv|nKb6$>yU!3ne|WjYU!oQ!cJ5K|WH&RObHji7E6Khl;xcram%_aQA2s`3J@ z9?Z;Vs=?>2pV5s=oNoE;<6Q+7u*mApYr`W1g)u(HlG8whFqDEh?VDT=GeYj9;e;^y zk9uP;3tX=ck2R*A@kgMvdvyD2)VARqoz=qRO`&DzZ60?UfpgB~4o!$q?e4A1)CRct zI}i<30r7|yyMwE$x|3-i8067L97WE@WNqbEd%a1qgyQ;j9AWA>jmR}T6Mi2vw)dKx zdhmyk)=$H{Zt^-!5JBFuJ^#nEaVpKaS8R#=1l3s%n&g)X2*vI-S`+4%dTm^HKra9Y z5_@70^!)~6FvC6sE-=Ta{5N+h5hJl+CR+;ZnE{H}Kn-`!ZPg=LudWsYR!EL4f|kzw zugnYx<&cRWokIeN2*5qq-njEFzco2;UINNumOYp154*8TbCSWdC)Vg>kc=m{ovLB5 zWLVpY_FQQC8tWEF+%=Ptj+ex4A3C1P+zG!JM6UbVz}bV#!KNc?)|! z!Gc%Wezzw2HWpX!-vIXGped##xk$1I5Qv6!i5(KRHQSBet0iw4KBld9@XA{WTDpdU zF|f5wHPhQZN4Q<_!AdbZ7%J}*)#&YGd`CR(w|x~=r=PoN;n~laOgRCe>+kR4!z&b# zykZdD9znJ}s?jEb16W&1Q;y0^A+~JBKdaDK7&b-Br>9_M+g8}|28(LMb#K$9u|39h zlan!Qso@%xoc2b@oKzqq)o{?4M|(3w?ows3?Atsun0B?<&^pq?&*_3=E#BK+kA_{> zymlKLR2Z2QC&*yk;kaM< z)L)hFn^ryMb>haxK$Fir!w1wcgFw0(TM=#R77f_3!Pe1}+xfjmJ8pUBF=}(bT!RhL z<^@G2hH0<$3d>b&mp-3S-B#a*g5tA!gWF0FF-=MhVGdZ#AOmLx_g`za^|TS9M@9z1 zW445VCukk!p<@e$t!ah>*h?6{8X{o!^R-hbg1ut_hjgYDs?N^v4X@uX`a^ImaImS#NI+(UyYPK9}x8qqy*frnI!v?(N z6}8RaFN(x~ZQaNTI3CASsEu*e?0j1^z3Lr{CZg(-lGcHgIY~5$1IdtJc9NE=ZbI*~ zV2sQ`JOVgpzS-A&+wY5h#ZXr7``tFXKvKPquL^d@dyTJWo6Sa{Q=1AGG3IleUwY6d zs_2&|X(CSqt(@(qf2P7!iVUOHcp5fmF_CKAoE{O#bGSs1Hr1Sm)FZ?(xo>dwm~0rE zk1mKl1*b}g@Ts=^RzPe^0|jcw*iE8E<{O*`VO6U-#$8WMxLuCBW-!QZJIHaFbcBFp zta;L$C*LfP63f8Y;of*~lmr4IA{y`0=3We4hu|8{dycsP*BRnKTs*4FZ6@p-Mgx|C zsy4p0_@`(ts)0DXx;FClh(KG=_@rhCpEmK1t-RCj*h+Gj#}H(_VH(KD>y{)m25v2_ zEn+%1K8aQ3TbIk?2Yi#M)W?88au5mzOJ~=s27*DuBJeV!?P-7IHYrX~%!0b)PDiSm9 zUgsQXNY8S~Jt~vnz~Nz-kPlj7(G@HerrGfb3{ZjyAb_CwVxICndR(xxwruC~_*@cy z!vE-S_&$%&zU%%`NC+?WA_*P8v}l7G8q@xQUf|gQ_vw5N@k++*hdZRN#~ook+@XH^ zvo}QupM}==Mry8bae|P11N}PR1NwhBf7g@vwEbS13y=E~{SI)%c>t%Uw&ul%=6`bM za1a=Qd1qxVg*p#`t>h7(qrt@g0F1B}kVsaooG6CHfk1|ocy9HKH6O$I;zRil^cd`@ ze%TjeM1c4)Yat?HKIh5BhY*Z+Z8B`1KVud3mLo?htXUUsKAmn~{Qkzw#<(sVbL=l% z35ET|+25K={|32FuLXpT5K;px3EBfT<37987loq%pvNncaKCiax->rN*dr+~2^>Q) z##0#)KsT3%07!ZwkLcr7tD8NXKM^u4{Bpqrq z8K@mu&*{C>nIB+e-7n|=4k(NzQ>(7|2oK5s3(?NKp$kK@Az6a62v{bEx7tFfhxO^)?R+ZFna%$7Rjdv~B9DeJCkW_=3%GPCh2r z*Dw_HmOwspST)soeTVT4m*4)`lZP6!5Y;V?NC+nK%;;h2U>A)EheHYh@&~< zhN&~o2c6wYz#SojmpB~f=Gs~sI$~%X0}U+EFvLebWQ*yy{ThZyYn{YJ#CX84m;T4DlJ8gHz@n+v))lp%Pl~ zTyvU(9!Q$nnPGhi;#TFim#66PFS5&)wn!eN znX#~JoonHi9Gu{MX)st`3Y7S(}UFYBV?*{FX}(YYLeqOYa{gej=*wTXvBir zEYj2rO9rc~W$wj}>)F(;%uU3c^0UvHT%C&Bas6`k;j_(K8DSt3Oz)OvGwB;-zBk z>46eR7h&3%Khq|NCTEVdXgeY6Kf~(5h}Dq%QaHR#c8-nCO_X${ea!w0V&Sgzm7-zdftd3Rz61krK4Y z5YrGq`TscN_U^Eyj)e-|sy#i;H}m`&!s`^~@Flnh!`0xKInY;!iCHxbINLJq*pv)$?V211+{&4&20}9vm3xl=&gJ;o z-`T&k)5`s)iTZP`w!YJ*e*)9&U?o}S8?6j1rBqR&Q8qA?(@R3-%9P*4wS?{-ro;st ztX!hia{immHbqnr?c_}F3(VlYuXN1DZtX6kQPGF<6gi|?LmB&Y&XEEnRk?+d2>T6x zp_TW#D4Z^(^j~)u>~)uzL|Q>J8BHS6gW$^M(6-i8grWLJZNwaq50L&NPZ#ipN7@`P z6aeK00|gHI?XZ&^f5Dk4%tM3!$ufl$K*38PYJFd$pfSW0y8;=)t3dI^L#ecxSO{b= zp0OErJAHgYOE)__U3G?@ZM>=V-HwY4ev=JBA160(yV%g^Vpi=qT@AieZK^O$P~S4i zON9P|Whxna!1a2njkL?+O^(^86@F2b8hrCjl<32>RmRD|HPA}9>%2_VsxQ&M1RqUT zsYCtklgn;bQ%*dA@Z{%d!hGIDJPw!OuyP3`0E_X^>V0=feZtneWt-)-I?o$jquy%f zqi*Rnxp|bG9F^+jPO*U?0Og=DS&UD)WA_^|(eL{n_xLLVC92vzPb088jg&)m##4fv zz9IYf|KL!0U-QKvtOn9T^$XWO0)P4#J!pw|P}BR5clEs=$KCy&H*rdpA1S~EM2XTe zbff$3Cs?n~{hUv^^1oZme^2XuEdSs9fAjqx#OJ*?<$jkn@P7{@eX;83R+AP@%$}8s zr+*?VTr}i1eR>3Z`brd0Uj}+kMn#Lodl`;Ue}G-IzwPXPkCr|8K=xiQ&L{UD_f`H+ z$usxa`CpBvv;WWI|GZB;uW$6LB4iLi2p7S4vIx-E+De{|QO+e<6;T=*-@t`?GzbuR zoaO9{9CHvs$X=a%=I1c?QjPDOZ1sQ^QlmL`#l#gi*;O$A_{}oNk>aR2k`FO ze&6g*7v=f=_k|uuQtj{l4SIC(q&@|UzdSSYPyT;X^*=+({$##U{mpCkLLeWihMhcJ zJ?5%8`aNWDTh8tz?NEB`WDo1ArBkGbfiJ^1#z8bzeXy^T zyfNm@~Vwonz#^Wr#*4$I^k)!mBS>Cw1LCF!0`w-A&ZuCppu&C+ zn?>0pVTq|DqguG7`2U6aYo!?J-V6VY^Dh5Iq_E>wChebCO@ObObPVDc8m4Iy=+>22 z8Jv%#+Giso8tAy{F536V`=oj1pgTd3fHJriN|vb6k89>nG*v5#x|718$YZL-XyMk80*f1MaE1 zol0$>5Fk4va&qYiP@5*`#bCUi^3PLKgJ5L0$$)BW6f3AWl;c~xHD@s@btVYN=p&4H zPPEY{BGS=1rnh^2J0a&Q+mVBrsn0XYcId{Y$n=X5hkv+}h?$;eW5RBkvQxUKL4pVh z#%@2c>*uK3LE)JH-E==#v`x(4EEz=qer)fme;di^c>0`gF%K@2JI(pUVBz$?=(H%!Y=jJMl8;$v^VfT|b53 z=e@R=d?@}}v4;Uh5Qo+KRRX^Hz3{`ly&1SY?O$3KOpr>UTa47y?NugP?6X=HsoC9Z zDmY<-5P)68uaZb%0_aXLu`+C5TFBJK#xLoFL4gKHSJ%fiLopb9K(MgQY~ts*{g1Go z%3KEAkFWF}JI044>+eE?7@qDkSn}{g5oG%mF%x1fl(6dDlJPRsp=8L1RB*@{z+W9! z9p?CB)i|oEHB8L;dSH_Y3;)}?6xSEO#~nd)=t0t)$h<&;RpJ-aK}ovTDu%iGUcas7 z)Fs$=Xb#7$F$1}rU!mn&2Z7x7_9rC8i+mp$pfLI5FScTUx({Ou&!LiR>Af=awTFM< zA?Q5+nr{a_A3)ZJ^yejK9gSZ>c1n}k-qye8FWiOklDP&)6vhdMxG`SuZUH(hPEiGj zIcg+<^Hb<}92rV_dX&(HVhZ$IGrXAr#PEGaNyx#yB}BU=hy4+P;HlCAWp+Hf?($rnk&E^9hITI*Q|SG&YMrThCNH za{8}-bCNvSm%dbnCu_}y961WH8S*}Q$5Hmn(kzny>t8~>e?P3{^EUYRTr1N#u5gZRd&SzP7YyC?t+Zr)&|1u~kV~Y;LOyWMc7_0T}}TfN(tDr2TJ4 zyG=B~;r_yn5;$ZcvOvxY=GUyYBB9Xi_#BIrWejOL43`rUmPG;xF&wo=6xi9@mgQ*1 zG)z`B&EdNDF~i7JF~5$iwPP~0Xpa_ri*ihIEK&))q?jV|4dj)$bo}ys+LN+GNXagg z0yhW|Nm1q|gs+;LXH8{J4hp;w=c+*8j*Tc5V%oMwT*&0Dwr{YAIx5mA*rwVi6B!ti z<*^5S{pJ|X8LA6XS1{q-DME1q)@DYST0qW8BpRMos7sN94j9@*LAq$eyL2f=x^ZNu z%jOaku}yK_6X9``VQV7eo~tz&hm(vc!0F1?z= zpF!m8Jq>!RW3J}MVf)8N;f+aMW$i2wPQUN zbmZhv!s5(Tj*aduG@91twF!NrC$3%lC4{a{Rn?k8?CHdz<2Rdwyou?Gm4ko zo9pTx;pA(*^Nqu9EnQm7`hwsJ1P&BZ8< zX)tZ6p}y_D?Za1QUL0gwVrXjADxxqnFB6Mv*<(P841ns9aA2r{gpwM%kR+H=x2p4N zT9SrbE5W}stcX%!s`!skT#Oh>z646xbLX_z8P7AT;3}+25_1~bnj)oZr9O07)S0EP zJ0c=1{R=fU1E@hm0lINluDLm}*psN~i5xSWjzvU9T+tgetla`6LPf%rhKEk0iV=3| zjP)8v4qZcDTEg!!znUTu{mt zi$?PrL^~o0)r(BM#0#lr%^Gk*LI@dQ06#J6NHY$(xVFoCM5J4Ae#!2g|m(ZXBtXkx`S~7*I0~* z#nBl6h>YO>$23RHKhNei}qu&G&djYbYVd3E5y=BL>)Atq~Yj!wjsZfUwFcF=WAP zfA5U|^dOlWs)dzyYmzc2wYv+!RSQPb-2J)W*s;|Lp{&)D!IK1%3ky#=6_}Ws7+MxO zg-w^)ePKEsT0HJs4`~6YgiHZsDPruNB(!Gko`h5$DxN8-2@7JvBFQwE&PXWPD=%5* zEdN4d?dLIy}AZ9N<* z+^uX5?=r~}Vb!Q32S_9mE>dLE%$ph1n0cUpe5@J6vSuSTG|pmGUf|29iUgfhgyIVj z$_R|MQQ!9`sP4%MG7Mm0*{s9{1VkjE7A06v)`+uC8calA6vgXTA?R4bBuKF&QgLaJ zq7W`nI<6wl7_gg`3To(xm_~*XnQ{q0)VmOo4pdWv2`1NhZca`?E)5G|IaP7w%WW-j&+o=%)8DY}GL$E4amOY9YfA|V0|5(F|Dn=xpE zCT21Tn6fMw!8KX~jFz;NBho;^;8N&BZ()|vY+1)b@xtAP>qSE5t=2D&ktOEAg-RlT zqiNQy2)0pUuvnO&5$sINog)HKg=M8Cj6!5!#5-(8htl=Y-QLk9lqjT^Yis7gn4B*N zM7yAdH4|5n5r{%5BEI{2aXj90G~kg!%XzLNYKs*kaCHE|AvUlv$)oi!=x&6zRc1kV%*ngK9ipq)38gezRRQ2$W<& z28r2>EHyDMq*_2pMlPc0$=W;elt^2N5hDpjI7*D5NfJm#DoMgH1RI@cHb@}%8ybQx zz!1&*zH^T#XN-xwQYE;G{M~WwZE9d5wk&4GxUh@4W-w&zN(X!OQ^X=-Jvw%JGg2@S zWX7>z#nb{MhFnQT4G;{PT1M370M#n0WHlC&D(HB!Tjj`O6Vbtgod54X+C}(K6`s<= z7ihxb9N$i_$TNe;P!;Z{q`DoZWt=Y% zc7Fd~R(-0x<7GgBSbNsJmb%oMK{#rZ@F6|OG)|d&_Sj&F6q**(NNL$X+EPSbl*~x) z%%EA+EHLk`l57#1TBJOzZI@hPPQC>x@mjMS!p7x-E-GHC1t?uL4bFs`L}N27W?=+1 z;@^DA;}QuJHxS1qFuHJ!%fe;eSiy+Eg`$y+1Cy@+B0tBhjBpgVQqOE+`A`fkx}=u6 zGiXr2nhEt)GIxv&2nRyYSh_oF+m%M49FrqOGvOJP=!Q@p^FPLS5{F3 zz>Nn9vh!9COSN7Cpy3psj);i_nps;OITVZ-;wXxwX0;e?HbTTu$RJt>FcmEg)FF~? z#<6AuHN7-3M8SzN7Q+hdZ-v5)NXZn)a_ubCR_d9SBdTt+rjS!HnmLxD^viELb=&_Pyg6(Yh2qDi8Wf;K5wQvzUVLSdK^=MEhX*F)EOe)rV*4hOP)^Xq-T z6J>Xet>&2dzsvI7eq&Gemz0Wf4(B+;$a_g<@;?8OXG8qdK^9D^JhiDB>d{kH|RK zA$b+fm;WM|$7hKd)7I@)gH!k0=NM03xs%#QnIW>QM_RoAQD_-^I@uND8Gpg-FOXus zanz6qc|-kVP_YSGQix{M|E=3-2d)MorG+m{pu#E?0BQxz6Rnm!>6Xl$isS;#KJ0#0 ztJF&;wYi+*v9p+;&z9Tk{-euRf;78`08F-z_2L>LCP5^BW>nM+p?}mWTs0B+%QgD! z1{Nyq5~hp>R9H!)iNEcTrup8HV0N*+!KbQ&NC7y=nE>H9nWJPro2g5a0fz?F7y)Dk zW~mQIi8|L*WC?})bhhOkI783^E-E1uz%5^o{n(I_VI3H@GUeKfKr^i0Zs@{E3n4gF z2FY+iz@8aqeMt>B1>rW~vy0qLz~fSHy3pALE_mV*wJ z$J$Vk;bLqXsus!|Hecs~ePVXcs2DgV^<}7QIvwnwqIK9PS*3@z(BtRIX9Y3Wix9LN z>^@J_KWaxC>0e2k@V34<>_2XP>gcp9xZ&-Hvvt^=m9My;PTjvu)bWyDtmRuO62?R) z>+#XVKmV2c+vT}dtJ~fdad*QIiHWKc8qFjIIFQI7`(I(qihUo9&**_J;>6kC5H|}6 z02&#-E%T##x&^OrwK3uTiMp>2=DpRAA}u&LfSZyadJ;d8gh3*NKkvF0@zH?+i1nm> ziT{qJa$+YTV0AZjAHmKwWsZkmeT)y$(z0;PcVV4xz(66iL1t)!aslY;nxERDlLNn$ ztmud1TsTG$K3_zddfn%L_i@g3_}H<>gQ?p8GjMD@i+zvgzm|A>-{p3J)<}Z`k6XMU zL?f+;8#~vOpSm&de*Goxe8bW(TZ+sj{dP!F%tTt9Q^NZT;^OY1g4mtTrz-}AE;S{5#JY+|wiA zi+wL$*)nc38XrgI|2do%5J`?}azqUyu+B5wshW5U9j;a{`N)8ZSv!>0CcW3Bv`Ywn2o+vzT zhKuQbKh^!np#ySsPy0XZKB2)stK5D+Z?U87zAv=#b^edD_&gUJ-+ROR|0Co7-}`?4 z&z0Bfd)BSG90ojKrH#k8Kwj71r~V}z@vV7(+5CGS8}fSJ-S7Wz?|;+T(f?n6MIq9Z zsSy3&(#Pz-u^z>+@;8y~Pt@g?D*;9{g_yi#oF!k`OB8c5KVXNG$ySZXVmRB4$dpIE z)xEREukvGHld%Y?AG^zgy-p`IiW+oAzi@sO*0tn+y~U>%H5X8Mq-G*X2i+ghVTyR> zDO5h}>X<@C4qi#m8ru%386yHl6FU%F5`g(cR1@rq083JOacefrWt$}04rIO-9Pvi+ zcnrhFDrfFlU1Jljkd`FU!(y!D7=?>FP!bJ>%mJP9{w^Qk%s&86K(N180GJ0NfU?De z!E54SFm()BVQM?cC}|ouH?FR|D1GPGsLJyv!lLFZEg$8s*)^86wXrw|A(5hzFqIrb zv*iC?U&hJ!oP3<0&QPBxll6%B+MSUOANiVHPwX6gKk5+E-drZ={ptTe_sTkT-;d7t zO(7pe;>Y0FMku|k3A2)4g2h$-1jt(ak=iTa1R+sAQla-g&n4fuvl8F$?#4I+#{~P@ z-P;$h;|O3l6k@?a_5R!o!upt#QU;50!l8jtf=5EmIIY(273kXw?EfTw14p7Jt4@W# z+P9h#lfZ_$iP|5?lDM>;)Y=W%w!)i2nZd>f#|T^S2c8g>kbk^#(>rPGcVB;50H>c< zUQ>rhXUCUO1EJp?5AR${w;$pd2^`;u8s|W7_1pdDLG~4wNNvx#5&5jO38mz}{>Itw zYFE5a1W==-+-Qc=DT5)Ha|8Jur12q$$&)rLV0<|mfnNe%kaM#M68kJ5iw;ey20vAY zj7|hNpz5B`iWom?!5j|1NmPMrpt0eL*^X>Wm{`haDgwN&O8?d{7!RkV8V_oLbW4{` zlL~h4G=k*!685r?&S>cy^Ppp4ihdQo-Lj7@GV*U~OD*i+U|Rb=bvC4dNLmalirk^a z#0;c)(`gb)0BRU@24r1v85>&R_eLL#&_)L6>CU#u%VN!PfY$w-EbztpI53h)>OJO3 zy&;_Hkqk#PvNQ%vk4J#?SpPMvx8&j+P+9&9JL(wW)L7nNz>peh1AL8R2^^C|kao@@ z-kz=N$P|hYCn4Wpv>&_oIH=+>3K=bvIfhb*AMnPa>p9A_4H!WLS~NCRu%V9$l+8}g z*?Y(rrb0w?@^4rGP$WXhdvjHP<-+w=jXapi8d}Rp(6vrp zqShM3kwL|k0e^q!;k!!VLjvj~bqE(Y*!S5TQ&A?LQE_%rqYPHAq$y*ha+5#E%m^lt z2xRLlSam4{F<8~j5h)r~b!jU#)gkj!F$>zpYZc%%b3nA9r6KzhROdGhQj1QKZ5<`h zq}DQ&tSDoltxOGGm?c7_hD#d4-)vh)OpqLAAi4UfSuFzHkpPRTOjbl#Q6?5(W`HJ3 zDlVq`!$P0WSFK^P1z5m2Q>In=_GVq@M}Ll9t&8Ln)nldPsgm=XqKoWKSL8FB+h z_AhpE77B_0TtQ(eN?jy|kqFY6ZjFgltBZ>Z4GS9QGw!yMKt%caSY))N=~a3akjEX3 zC@8cGSlX)=tcVf(cmzp1;lY%B*=k! zT$rh%g`5&n)zBi@BYcKpMQV~th;QG5mcb$^NUb6ZLMEC)8c`7^=UUD}7|oFyR6;Oo z6{0HPNTvAJvV(gTkp-n1$zY}lF=SdslT7H^qGh;k1QP=gX{DtVqz#lIONh#2klCuV zc2iQ^3ND`%mK9M&F`6LhoV2ozGf+gvjEyRtW@t?PIIIgBDI{P;jF=Kg$Wa#&;7xHW z4z#V{pY4->rR;9Sbvd=7DG@RRP)NZ;Sgx4}0!~7XlDA3%X+RPM2!c3DCmBFQj=`HU zdOC)J=B5EU2*ZM5Hi8&!LJhG3uq8x_KRpD*>Z$T0iv{}Bf{o5Kr6$ilV_;;u68O{J zW!0^8AR|pEsv|-wD3OkQl!jR)XM4_DyYv&)asAKjWtnv`C_LSw-aYSiO{#oInn=u+n9^$AF0SF&hIbYjIVSi zpNxM81aZ-~aw%bQ*_ucI5xln|{pPpt|31ndIv!rk?_d7-bhfX~mJI7t`{TeBrB|jz zydPaDl~)KsEkeg+jK(sDr(OazGkagqe!AxM&J{5KSfpkdlwp$vVF1a3Kv{UB^*bu2 zdXou?qd@iM531{uCA&k*t|A)R_q^E>hw?L6PSK_dhwcDw!#g<9vPa+BG8tykD|4gh)DkKig}+(whPDK*+xwzo3+40kUEd zAw@U-5qp^|3UaoRyDgD6BJJ;bfPMS{tzKTj!t?D6?yFz-$N|ImWyQfZ!6$lfAQE1FQYUaJ2+j`0041ZoCkz)$a;VtC(_#%s~??e zRr&58gT>8jcmKbA&r*))X@5uhtIf1^@D;%XJ0o`O+-RDs8V=h>eNHA563CvZS+rn> z%Rr5W!u*aQ967OXuLFJOti7%-07@IsMF^AH3!VDK;S;H%(%(h5_NoD4 zmC?3@j&QXV=Ke*GR0ZFmEM?(|Yrpi8FLbzX?y&GW!ua2>HKeAZ3w$}(GH(2gywn|H zuS^$J{^#;@+lYpJyleg(-iQ`Q3*^&4op7KTgUyP13xqO(% z0yo(=?TagDC4TNX!Pel~RZQz_*;ik0jwFMAyN`|y#eokYyuC+wMCL%@aS-trxVko3 zoX#XVRk!&H#~QMpAckn={jSV2?DQCuuTMX_$X$l!!7bwL=%vdjZ#5_70M>5{i~?Mm ziblne()EPT;Pex$2_`1QcHQa7025Z)M}1iEKr!~1r)CR$PnYlkdn(g7{qFSyA~Q{| z7GydN17*HCbWk`j;12Su#Da?n%2>}YTo7J4%BdxSg9HZLI||#3WiWbHlYK2rW7Mzp zU!9tw!_v7m4x7LJLiNU<+ee9MI}0N=3Ec>8F)TBaqLIsX|7?9?0Y)US;wU%7QY9*T zs9ByMbdZ-9=F|-zh&phAvm93j^lmg3SBxDZu)4fge-XYuCi` z>dvRoT7~Y}T`enSPOn$3VtV)N5Xb@}AP;&$1AH?Ec=ghUrR|_?*04Nri~vFizn7)X zBr0<) zrJV8TX(Uihj-&Z?aGmgkbFK-IQp$@GU*aJ%o<;VL$l;!ZiJ!5;Bb_3oT?kfg{LhZL zSanJfkj#U*hv6gPa5}~-x?B!OxBh(EDC*Ls47!m6yoP&dx;#Vvt230tvoAZn6kVwCsN#F@bIA+Xo}VU^S~hwneT+3BQ85^(7%{j1>Z ze;?%U*$o~dRNVXaje_@RJ}NG2YKgnP*h3EO&JVX7I>7dy$J%?Zwd2%gxB0|Fj&+~> zhR5OjB~LzAANl&fg-_w;|4x70W9)mW-vfxc+*p5i?fba@oAiA1pRd>dzwP#&Z|dRn z8vp1(Z1LD({(mFM{;xBq{Y8A%8euRyf%ZONzpL%w|8H~j@^HSVn0JbQkJkURuztrW zG1Mc#4e#Q>%~R-f%>MLQrh4A$_oFk~5-+{;*4^~YM6Ni8#EFnfv#N*_>64k{vtGc% zrJA_Zd-&xg^b>E4+-I`Wy`Nf|o_~vhe>dcLt{S~~&uF1(JHAbu3J-!-TV?ncgEYU* z@RuczdMTmaj-H1F3=i_Is||mN`4?LTY-z9N*!k6TH1ufu40*6W^X-qQ8UddO*%U(F zT&~6EV2!sfy5jbQ>@Rnv_)5C$&(HLn0GtjHzyd>5;yz;TJ@x|WZ#(cwT{7RAFl3(< zb}d4~O8c}S!>+G%cRl^(5_>yBDKwyYCq1r7Z&O7Yj_)fqNhrW(R_WIo{)6Ct* zA$_s4-dkOjejPsBaOu!QLOuS_Dk=RkQ(xmMK3xw@Z%48Fo}&fys-UzkwpXID>#g+Dmu{z3yVz|xeO|)cn{Id5 zd0kG9@8;{xJzDh7^z}IB+=mfd;hFx_Kq4Q)BprX+Fl#*l?T$hsAR&B|jUOF28W6b^ z@tZ$JLhYQZC0P|kQ3wPA+s1sjyI1EWu9hn0`0av*_@~pc>#6qC9{o$gUD7a__ur^4 z|8(4xM?s({)rXi#P|OJOp<$HP!w8sGpWUw!kLEX6(fzJ!r;~S%gm!6QIY^tILsDzH zidm(S;gb-=7v&V^w4h2ACo~P2clCM^EKu85=#J4SP%)DmRg-zBw2ut^j>H5W2!0q~ zot(4I1-p9M1Juj#l1Z$Hgm^8y#4KULvyIkOnpwu0v~wiNg;biL543(1t@WLpWvq z?00Ro5%@lKe@Ee-!?GoZ6;1H{XW=Ukez5qCJpS{n&+j~hD?hv&bWSm=plBQpu?1lw z*S-prF`Y%^ZFNSu>HkTOfMyxI;30UKRzy7Vog4K;f}QuO-=PH5qAP`k4JS$LTIuf>HIV1Y91A3hC4-B%|P$6bih8}V9V1_q%*OdCF#z#bF< z;Z+!5SsVysJJdw)7Pg@O-Sx5x3;!v+KC78j*#_iXYft-qiOyL>>B6{V7Ksl%b4-{b!C*{v=LDc4Y7wGryY zXQD(xDUOG@Q^0}K#7FDyl*Cz1%76jGN)qyJ&B|S4f=^QqQ>|p~%&nbqxH`Pi5TM5h zEpV}s@OSgEapjs|fn|t~ITF|?a{w{0CJK78(8Cj~@e$X4CmH5++}BA|{AQ6_0PdP2 zY^Y9()fg*YteNz7X_md4&)R#pnJ6J*)2QVV3|~N(2OkJQ+OKNwo>g9hOA{SAu^Fam zP+&@>7$TZ~jc_RRpH*X!)Uj4g>uH)?ZnNnBJV4epv+FAAt6~!ClvqK2u5?Jnr zS`)sb5rUUGc3)&tnPpkQhLhE_DF21qDWo`bky(x8E(OZwbHC1lPOLN*ntBv>2-l;* zuAlGRgf&dv^J?X*zn4o>@4Wrhzan%R7Kq}}<$#Fk>3Wv?UK*8?*3Pdy3$;Qi-aWA> zH1PJQvp*ME$g;3C-xCEb+$?%rbcPvR0SdKfR)nUQQRDoYPUvf0Mi+odmBU`d)9CTE zm~?c!o7GHP?eCtSxg@gas`HRR{3ERe2S0AhPjkPpEGheKG zzS60})r8k*h*^_o1OrdU3%Pt(Gd6r5H*)=sM7qPLA%YM!Gf|m6YtDnND3>J;$ZahU5)tEZvsc4MTToDHEVUb! zQw@>`b^LPBmYG>wx@}wo0CBI(T9tIX#*aZfFu_@79$d&}*hw1r1fMyrMd#a3N!Obk zFpUca$M+vR7gnB0Y&OHiQaDKNEnB9qPb(tiOt$pMyq?ROgOT)EsCX=N&A{pDdM;{I-FAzOPi+GW*_v` zKu}Ry5qCmQQ{daY5f{0j`n(Ca47qb^28uU$)_7zn9vr86uEV&1xs5iOM;Jm7fI<=8 zFo6Kc?#KXxup$NiA!uEnO2r|?632&gUf`!&O&F!4tje+HG5ul);}8dr0b?k11SqH| z#3Q?Zpdt3f+R(ubG;2FCbhbB@`1~2`4_gOO$#zxR$Xp@gD>Yrsr6F4U^P8t}cw@6R z%{{jnx~q;d0hF&J5gQ1hocLtLZM+6i9>~%cgKX0sJH%s$X^!6<$kR&_LG-DxYM@uT zkQvv62Vq-MGMpVJP+}y^#N`MtVPy5CJjm&?%C98xjWYmhc~!`Wo6&)m@iI(^nfgg6ofB++{f_Xv#DNR=hCYHk{$+y$D0eW? z31jI78tAjg|7`4wsQO`hVTvKHw@Ht)Sr(hW;q1A*w|OqDteylKPmiI90S0=v0R9u) zyV=RA(7`(q7j_LFGlF^`5`KXW5;oe&L!27A2TptFp`6PI1{tgn$>7rHa)yh?INar7 zNMiN8N*WQutbc$+@VB4E@zXpt1$!lU)ouuhh*<=4h(pBSnU3~jWg>@I+B%K`R0M+L z_&%{cT5s9uPYM$>?Jzc}U(H==48FAccvK(GSeJ)elt4r?ED}7}mL5BQAdz@W2}Yq4 z98n;MM=1AbJ;V_tqTyQ_^Ipw(v1f!o=`E%i9!t_QpDV{^x@%j zf2+s+J)5_CPRr86=Ju-oVEuxRbI0-j``Zih#XDfk|7>A=BKVdkmw zx`6ANU}Pn=^9S;9{Tx6BuiIz-o>%Q!1Aa<9HGURLKdh+R1O_470iuu3`OAF}>g_s> zdTk?x)(9tB{?Ek6$@_XL{A}QD_2SL)Idb;sx#`~5A}}uvD~$g@#c5SaDH~Yve6|>g zD3`_Vi7Aw{&w{H}-B;xZ95h8?n0`^MLbN=T46)DPONGF}0RaV~*Y{&enb~u^e>r4m zFyvoL{obykY`UC6EuU5YYmwg{G{~poiknYN$*yChPZqo1GqEuQX@tw~+>OkC^i;tn zR;$`t^$f#V!6(m*gelCh4o*Mn)TP^#Z8ikjm(#re%DKi-?*?r{Nu3v4JJFJLi+{6d z>yvt7456Qivtw;PTtWemD0j3Q)$uI^yQz!+ao5cwxVWsFn_P3Dtkp*k{htpc$XCRD zazMXEU~L>*Vi;<8xq|^yn;MQPm&E#&ZR1B(9MFXGxul<#;j(E=9(Je=e$tW;-Y!i^ zxcYh|cB1H&Zi>nB$(r<8R?ybCZJ5~(q{AHNjh%77yAVgY^{PjSfA&6Sje-0{?IX=R z2kAgEg4-5he&DJPw}B35$z=^pcHf!MPFwXeuzF|}Txi!~2_g4J5^avt7bn&htDbP?KA`7j@vHzcEa4U*59g@Ajrg(Kci2sp z4$Yy^rP8rvp0;DQ_pdM?oWxlsK=1eGey4ZyJ{F1t4FMO*h=-<@pBJT^GM#1V*_iKF zU?pG|yudwnRTdBfBPby)*oC^iNqHK@j$`^VI@Ao~61dPhezV*W4tuy4xoeLKS{Yy& z=Y_Vy(b^1iMrQ^BOVsJj-}Bseg&k>S_Sm@N>^8wkwjQ3eCGY}$YP6X) zH9L-Fi%DVpi1}o;SJ0^PXz`?+37&}68F3H5g2rA+F8Py6t8Fj=Nhd{R5;N3M49EYI z$*}#$*J|F2pIU1-`!hHgFU{57feHo|kQ%vEW%Re=v2l;~FFEnL&OLR51>A;p@ z*mk)qv6vNgPw1QsTh5km45Zl)3TsY6-NgQh5s*4qsza(|X_t|8I1 zb7>niyHwnz$yrPnW6ju~eFK_rOkJp85FmmGC}<&xECSgH+7$Ewnl@Tha`r-8w2FZZ zZH-iC=Fc?J!@0hCdpb?>i5=n7bkMKYoP`mGg14jtDETR$UBQ}Rnauv4@g+E`gXO9O zbU;vqHxLxERwgro557)0tkfQZhoKwHV-ql-dt?dYB1Aq2LVyqkapPnTSW`l=>gLbS z2_^u+pS73IZZY7(k0$TK?sTvGzNuj5=1&#h**^0!_NwjolnKrt?C-L`UYVp@4s=Xq zfCMCHRCo}A($X}IJr1C?l@WTG;I^bdA%q?u zt=N)A@q6=UyvcHYp%Bc)P8!YwJ>?|tkA>AN>^#S9DUg|N5QG={GV4qvk{ARQ8`q|& z`PtqS&=jR^bn2=MToA65J#{J$t;Z}9@fsu?WLVRyP!p(jl7pt_)%HB?nzO%D9O&@s zPOUdqdMp(#cdD=p*X&RX>edPX8c;gAMrzWcHHwi~pt>senyN5Zy^}%Kxezi>Z_Oo}t81|F?PnFJtWew`sP`+iSHR z`ybc4liv077oXKv{I)@%6=@aI$u^VIG+c>F3bn`RC7mRL!fI29CuwxKdKgCY-;pvL zz=~qE;Q~XCbI5Do=7t`a!JSxJsz{H4(WB(vX4(R$sD^W7p;m#;fw$Ue`fvB}`1rrw zz2oG6ho8vD_m?Sy=VL~sPvc8`56JSq58V4cQP6&_-`Lv!PtD}A`+xdh`hCCoNqo>I zp#U%h00ah?_>=ik-TVS5(4eXa(b=^HSCi_jSXCYbBC4qR)*m&8c!Bv=?3*Z|%gAj0 zWvp}T2DgbRJ9)ls<>XNXx9osJox zz!%a(|L$N@&+%60#nE-u@G zzj(mgYCS~qwB6P$zlAEBj3K;io@dL$=9TyDWmK3wVZgMd)oip__;*e)p0w;*IgAlU z=u1u)-1vB3iZVctl%S69>!vsauFG{XeJ*7Po*?X#jD>k#5|6$63BZyuR!XxTSE4il zYA$t^j;y%Jx1Xtz(6LK%ClsE<2)|O;Ivv2k3~gstFAPSxJ7sS;``NLQ)o{0v+(j<> zq_hikMJq0!@5k8$iAFT*PSTM&lpFF_KijxhJ_7Sw?YfVPSR+^wCG*=Te7HlyzE*_m zX!FCI#jI8sFgYf{2O)OC_VqAv<+v5qTuWXWS#o^fT;@x-mW;5L*|kdDsoqZ-xXhnN zQ_a4VSOo#h(VFj4CP*srdX4q*jtRBWHOC;_2$1m`AIsG;6284t-$z2;1lbfva@;vw zb%h`-{f$PLf^5DqFHv;$?5pO~K7g2DmXIJhFTocwvgoSFJDr?0VWvN*0SGdAB z39B}Q4+e}Xthg98G=GfNG^DA01wXP{x^E*|sZwz`L{?c~5|~(%T)UDIFAq|C0mHm8`fP7b#|+>e z&LL?Q_6)$uJ54yM6Pn7Hm?1B+HZt?g3|fn4x6`?$d6hAD2;lsg<0Rf_B`P&Bq%C?Z{VB#oAHx%eDmxHTZk>3t2_pE&r=H0@rA0A0($nu8xAc9OJP>?8sU;;Q?F^obH z#(6NS9DQPOi%9^Zc@(Ynx4iu93AT?`R^`xsFO4Ws9h-^Y@^HEgmi7Nonek9RK!AV* zKs7{yBw+&$u?|DSIv`;LnFNKx{pzH-;X$$KqE+<;w94}aw~DSblX4#9T=YO%_}!<6uGQ{-@;N;Sul6c5y(r5 z*;HLkzvut-fbQnzQvSaNf5D3^(1=ec0wMtbu83l>?mv{Ewdd=R5O%BNzPkM3E736D9~#PM#bp{{Ib<(p2J*DTXH@60F(3K60kB{NXL6Uv$P2 z{-M?-#fP@s=(&OYb3^7_Cix@h7I}>~Hxe06LK<*{bgD|2vOjw2UR(d+pmkt}!7MF* z!d$}qFGA(>f13~1UCCIht;5%xdS+US1}GVxYReNLCY!daz0p9&iHlUW$t6onu6Y`( zSd7T@qJ(~`&dCZ;>7oRq5c;qq^|5EYjfftfFX6sJdk^tKF=TghPFfPri_?0A9+G3G zPJLD^Bm8H~wtIcs{BK~l42T)Xr&6VKBRlKrawt!oqULJ}f86_r3Kad*7jG6Edcj6Y z403d?{4fn_Pvn>wqfhjw57LI>XHaMPk7?bK$`_la9t>785rDx)duxXWUjTku?Ur&1B9 za)8e(45%PKn3OyP)}%I?o@k5o*KYEYs zMA(?@@UABmtPbM-eLs;u;s3p0Y1U!-gZs{B`f{`#B z^I>$YSM)@!{_g$)1II=`_TCOKm>pf@)(r31|MaPBv?}PgX@EnU#nN$E;x6)`q`79F zq;gxo2i%5>!M%pZr@N(z#90PE%`iV=JufbnxLK9+bU)o@IjfDSVL&BfOfccrVkcJw z?z$gdeO)|v1Hj?KePd?&U*-0cJ`9@76VULzNBJ?(Gt+2i$6I9OxVqFIPj{UT*-|=g z;y_mZ1k;;9+DL+~vbzE$i{39{+R|cRF9x5UX?9&AI!YH;b;A`1GjrR`ep=){P}V2HR?9{HQSFwg4QMa`3}>F zhg%8=pMpidEX`ks1R_tRIE)OIrztrALjI5QM`ITo&{2%Yt*t{HBu{a0N4A;s|&Eu)%z7O0m>Kr|GB)B@1k{>ggUtrbPyGK|hZ{T76 zkXO2A&*$-{A(?<)LtUo%Yv)q}aR8I{9j4EWXT|tBp8jTBp4t=9eNV~|XA+|l`|sb# z?asbAD(hHdPo~@MJni=ub+Ciu>t{Eahh5ltm%77^N+^OKp_t6D{%_(Gc(3-)nHuW< zi?W3+L}on)*3yc0dJ?Os@A_v#x9YwUC9`o1j0mJx-Lt_&@sU=|-5v-pL)e-_VYs%< z@c~jB=PW!kRF5O)UNU<3GwmV2P^7Hdoi)uApcDH3Ik;#p${gc{n1*r6k0PAkqrp^y zy>m&616aWg&oJ3U>j9_4@@hbOG39?Wtp><4f8J$#5~A1tv2NPla9@0t$`40Wf8;Od zh}0p9$^C!(MF8o4=lz8JCL_)l1L_U%+;ctm&;PGQEMFk!*YAJZkHPjo@6-REOYVOk zaB7tmS|3Z+%OVJ(wa|9fEPC{Z;jSCIBLY^H53(VN=NkxP0z{2}-0W;tGA2i}{H+P2 z{6A;+Q6Kw|e}~ZNbv{SaQ|TgT>n6whYy54`>G?n3!~8s-_p88egbjiKSI)z774c?) zXyx{Hx0%#J`<5b74J{+ckSzMP$r!ZKG>`J3F1gfZ`&<|sbGEE(IhVn@9!0|ACgS;l zEZM6vu;2~HW99$D=l+%FtLP#BAGiL$!Tp~f^tXSb`XA|!``@>-`d^{A&Hti*r|4b( zK{DMQUnyG=ceehE^E|Tt#=aS*bb^o-Pj&o+Wc;6r0!ZKiK^_YF9ie_@pUs)}zZ2Q} zv!Z`(DZ}vS`Eud*-y1RPMYW)!GB8vlepzQcoaEK>y}ztZXm@6H`Q2}2Ad^$3K5O9C zue@JWW>XpG47YCOt4}Q{{hS{vwrc&33?PC*fXVmjQrC`gfc>e%xW6;!-w0elKhV5V z()@dO73sT21fB=BqQBC07K4@{>~T>WS;s+{lnjVgoM8s&vLc%<}8 zvUBg?AG!Pw(5+jS7rFTe4X6B?@1a+Jo)!@oD~OmCC&ESs0; zLxJM$|0iGm9gyw#<5IgHJKsPZ`@O(lt=p=jU;jts{siN5>M^_h3~wGF+{ijNr3wQhfikCR4pzY1b6JOd7tSI&+7Km^r`B?^L zcQ|)0-n!Z~zkRfsqO&&ChAMX=o`>)#7gTzu@07GcYJ-jDr~iQh$@M~U82t$FtaXoahRL?{k zcv;hII~4GKz34p#`-@%e7rzt*Wu0L`{&rP@x9g~OVXlflxRtAc{@k0#@2P6Hd_6~V z-TMoDcIG<^$KM~VyAh*D&WA~Zx49r=n!U(R2@BQaVIshyc<_bm0F9H-ziljhfACo) zhb@nIosJsH_$pU6yAs&Bfo>Xd{Rgj*1CK#$^x=D9QqQogQXj_57|g-M(>a-T=lArE z-75T{ZL%AMt@V|9h3FUqI&i(tLuB!_o=ws(|D1b-ksiyQRX}jPW1A=2Leo8*#pqJ# z$X>4fC1fkzGLAvjtGT4+#6bz`L8kWe*N;`Eo!)gO`cJ#tqeEliKhZwlyB+Gw+KoBk<3HwX{{-RttI&=-_F)@E?!^v6PChOlBWowPEQ%xu5bc1GVbKTxhwy4f zeEiFcyJ9gB5U`Dem$KI&ALz@5+0>q*kF_*U#h}Z!NUG>&>4)X3fSMmxKvmTj{_P4T zX&BL2dyi1U^fSJf6*D6ad1+zcOVaKC<@@_8g1ar9zKK8rz=#O;;zA!#NI(R5h5BCL zjwD1PAR+_dWP{^O#c7`gY+A5zX=VP5kwkw}qV~iDeAxhc0T4Pdh+_}XARprwa3XF% z3$uFX%W&Gz;M25dxz%@t1NgP-PDa-Q_OAg{#+Xyo`EyjXF%fOwq@i2AEtzZxPboma z6c*pCE8KtZ|LhmCFp}Q_Sindgy&^ZG7{c z_(}SUCUE{ZF)g|m=WMwMI2)^ykSuclg)3G{1R39&uqO|`lh}Axl=f;^SQ0!XYRQxp z5@YADr-i2!AEV-BW1tsW(%LiLxH zS1ZI3XY`b;YT~$$iOhe+O27{STULmWBMe{RmNHSbA#fkL{LEwj%>V266f7?>bIY7+ zz-XDqWVH)LaolM(dF}Mh|M?1YwwPXa4K!EEVrK*Zb}d1G9}^Jx-aN85goT7?;|3_7 zk0Zm|D`N}-aU|c3mIFj|f0G|J ze-rGsPEdldgY5HPaDmX+54ol8;q=G?2@DXlWK0XZ;Tz|R{~cF_P?`E{nR{mcZtY|a zTQVVw(6Z7E0pU4|q3;^`e-3b$N9m;4obiX|h@RQX*)voAkKAs}(5g9g7iz%9h~xk4 zhEw&vK#5`EP<6iF;CZ%nep^xa{8J5cJ`B7!WH7by+~=u_HYtxo86!4L3wsAaCbpYj2rD* zf57J!*cQ3%Hm%+NoYYdFm&OP@&@d`>gPGPrIjSwF$+32*NjW&JSz>D@|gQR2z=2)v%A zspvcugPdK6Bn6$(4IwHcwyhkxV{Fe3b_P9J7eTM=f4^!XRt2JNyBIU9D*RQ*_ zZ9>;v{qtpg6I_)`Cx{?-&LY)p2?F37$s*&U=?jkbO>>na`@f_+Vv7FA)GiL5RF9Bn z?lpiVe-BBccG1M)0)Ox8S-(Mlrj9uU`i`Xa59+x0>%WaqfgM^15=Fnd zp+BuTNj`UpNf2N^e8rH|Szo=_*!w^H@HXe=&;GB4d`??|mR>H3M@t|Hvd+h~bjg09 zJIh5znF1iN9)^c>V;WeC{HUBidOzucM7wpydY|7mGa?|j<0MTlta$bKy{|13ol#I! zKRx&_lip1-lsC!vQ-u8SQUw8R_uT}e3pHJJ*<@SHQAnTK&@?1e#7mZKP zZ_;ReAy?y%)k*!<4{}Bse>eXIF@|jm@JqB=ZHr) z%ln4s=o4()%N1<$srC3Ce%N6o9K;AyB>LP>X?DVUyXExQ&~W&rQG@ROf#jz9Z93vX zOqla5%v@1yQT_+-_e(apHTNt!f(ckAE`D0Ql;o~J>?6g^Y}e#R}a#oCAKjJT{;h!LMno@ z!$}m+3oW`u(Je~8+BG3-X^oF?yw)SZv#X9;=|1*PN1|ij*2qwo-hS>0G|vh%47$ye zHg8N57!^Hn9@c0-g&OhdWziG)vL^E(Ukf#9ghO(0peu#@Vjh7M(`ep}f5g&Mz!q=B z!uy|BfZh`Yp}tbkH*OPm>HkA1&u?)d++2k~hD=DY zEr0Do>;98sD~FUGgRRSImbpBhz403jwt)qaJ6T?;A@0ouqyOggH(xISxKH&0BsxzS zJu<#rjp3e56ydD3dfIXshi?s=pV@{rWL`X#X61q|M;?vKt&z7xN_e7(HTfc}M2GK@ zX@Ld14B02!U$8D6FRQGBBPOzmwsXH5=Ea;lexJ20cW&1s_U-vjn-}Xi|0SN*5E@pn z2GQG0j(0BZ&kiFX41yxROHtY9Tge{HVNl8E)(+LYn;)w8-$%WF>$}c5Kl|>ff9q2U z9rhaUCh&Gs=It%IM*u)b8pGk>PXsYw!4VJ<5DFWq8^x-=N&=O7U30es{J8pb;2Qh_ z3Xyi7jsh%+2Nm2kK0dr{!?ye<>MFi z)aSTFf&0P(PPn>bXDNM7AHd9ySLw+j$i!d1jy|@=e(?sMPMV$&)zZMfFJ6XwJ&mQq z%ugxUY0q){`1)!|VzeHsB#Zy8xklkv`o&e7>6Tg>DmXu|qJyV>njqk=wFt-9%{MpK zV-Ir-rVrRMD6jT>6#y(xHT`DldMFT%t+FvRMv4X%xRqO_=F_xp`;}cqlf3&h`1pUz zg{2!*(saXxRBs(30s=C4Kv+G~oh{sXZ}z2fYjkfRPCo-G&6nyn`q8s&vUrKxYAFKlX+78V)krzK%RbQ3UK zf;et(;$*(Fqsm5qcievt<(2qo<|bIwW!*z*5cIlgi5(*+c8y%l+#vi?WwDB5my+D3EtqESB3$~|_mDL~LJSILeX;pKY3 zx!NXOpOX0x>?GnEzSMxX=&G%_cjgLzzzb^;Q0U->fna%pSU?~5O6n&}U~?K0$?z4^ zAd#Yx-1ja_TkwHiahOLrb6M4BsK6zBY!_t5$^1JM|J|>8=RhYNAx2+LgIN(`;rn8@ z^f1u$7A^<*E_%Rug#P-fHj1cix$-D(&a&ZLK$waq;D{w)Gz59ihG7E72te2!p}z2} z6z|)=tHLUBe#ful?Meb*5aFqv^jx|VFmz%|S@?CMMTAwPc)h*Pa4|>z#3~&1Z+e|@ z$*Nn!u2Uu)1Elskj*t49GZ1qe9zcZWz9GKP*qX4h723Vt6*XYXglUQeOwZvF;@EgN zd*xTt_uP!m@KTV#N*4$?fiesMfclNPS^I{h+Ka+JPxrFrY&3jJd z&U}Ub0XgjfyP$XzM&=iO6X<@8yg9{{b)~7kkC8A1V}yu2B$QBd6H^K9af1pNf9JJA zKE+c=a*0n2pmwi&GlVJ8&fJcnZ^I5+6CNTpc#6~x(Vs%f)B^(_Z!YPk!$k% z7Q$-iI#+q|v|6)Yz!9{f8uLld7uOrh+Z<{H;(M?XLCg|oV~{Ir{wUYPa3t*usIaLC zku@OrQ6s8E3{xdDTvq4R2?~vdIWWs8bw~F!_vUh*hPqJu7X0%G@>V(~=Vw0AwB zh+(vliCV*i*J&Jyu%tbTdaQuzLee<1HR}cOkDT_nT-7s5&=^2!Zox_!PfBP)Mz(kS z1ZK^FpvsSoP4H3Y&7>_Gy4fA!h%!vdUAs9_9&7~^dFIM=Hts142V(&#vv~@8+UR6z z)veP5A;*_?UDLvR@$!bWd~U${!l-AS(6B9HI6Ec5WrL(v;*5bYZxDZJm;CpA-6{lt z-m69D%5-JRBS_*M%^w4nw&Q+U^-Qscs;%i)C$P zViKUj6`0VEpHM7h4^gyj@zUtZ=XXTVoULbDj*J->UV5*F%N6AZJd`um!68>DXa;+r zYrxGM^5;I%y@%YsV1!TR-y+9Xpv~B=)?Fs5)glm_D0|jV@!d@Z8DDYDJtvHNVFG#< zztG1Ru6|(#1fPy+K>aosl0f3e5Cn6$f*E8#now_>cv%PnNBseP&MQZV5e7(Zf24t| z)z{$Sxr0K&atx4YgJ2$GNY> zS3!#Ao{@}$b;c6`yH1rI3qQKPKNj~tvBg6PWFb%K5A{}5fX)1-uPuP`Na>co*G

8TEL_ub=2r0T?^ecHT$zqt*aZK&-!P)06o6uEy*-M`734;2$FMJpotAv-sgD zT6n(-SM{aTKf$-bV7aVmXA8UR<^e7wR6#l3EG5upj6l86+Y9o+Vry-A60lt$-pSkVr&+k!uBXc>O+?sp59i|5O83 z7EA;_!lz&CrYZbfW{;Zi9&reC_$nM6sP+Tss_B0Nxo`pw5P=8NEU;YX>#LkuKUSq2 z1ZPDmx7k*hw;kUfgj2)8)KG#hcd{8)=Bun{Iv0_wTwN1!`3dn7FQ|;%S6SR#;d%zK zaXw~)$nfkQ<^52=SYDWHagt>U%0gs`%5nu^2qC~E%?(H_c`iOHF~E!UODHwp^2$3c zg{{^<-D0$D5fAy57Yk7o;CB+V-tzjeR0F;Ss_^f;RX<>vOfu&wDT=T9`on#nhF`+_ zRZK(d{z=hH`oVjx%+AN(@qEHP*X>qwb%=ogA1E}U1^~khEM7wP?dtI zJ~!R{g*K=AzhXbZ{^vhW_49mU|L(Xim5J$}FPIc8zuKHrgJOyf4?Ff8ur?KDXb|6U z=JHAB7=!`^E$LSXGz9WS+vcQ^Jo%NZ7T z<0g5x6Oa90J%hZsp1#bsDk-M7XY$uRaSo03o6pd{jd{sXraU7MaKzYoW3c1C{jD7H zZzT+5O>>)Qsg`pOLQm4*C&-03YIc1{Gf8vQH$JW4e?hjb`j#8x<+C;fFYJOxJ$z)tKBy(f=>& zv-MlKEM79-DrQ#xfqFa4{IG?Z(i-JqwU1^Wc8fJ6zog6T82!AT3uT7mdkIo!`KhsV z%W-nXQ;TZehjG5VEh{Y+(LGV zwNhHBX!RwmRNMCsm3D#R%oJI%HhDhlO{D<0>p<`oKlq&gJNEG9wt9LP!Jj-1UM({J zvg@s@Sm?;Til*8NxIZOZMXQlIM5I>B3eevZlRh4{Fb_EJ zEC%Nk!^r+$t;o>nD}PlnJUAtJiM89M!wE@Uqk#$NZ(K>D?($8v$z_@TWG%#n6g7=V zeZ2#s$_~Nw72@JBALI6UVB<~StKk#xHEEQDefdtt`qr$JebwIkKHNW*>sUUlNoUAa zs@Z?V!TzxZ5O|VawenIqWy0N+j!>K}R~_%F#t1hx^0rMb+Em+LL{mt0B)E#?G6R`{ zkKgzQzss3^zIc5owY*zCu&Q{$oQ z{r1Ok=(TUnPZ~tNF1d`NhUyt4=tkxsWL`oGdin zMCUXt-8fB5t^}Yuweq5PQfsFVb|JMy4L|CP=tc?aNi0xUea}PF-u?SanRg#m=wpfFB7knI+Hj<6v-|pgM9y~KSjQm*Tl7MNLX=0NyxzQ8^yL_^u|i7Eu&F5AlEfpu z_Yy)(HxTQO+hRZKL^sAQCGrIRcJ98?oxoQkAaD(j92b{g_qmmDhSpXv@6C}G;85tE zyZ^m_?cMiqkR3Ih%Y~ZsOsiH8b6JPgfmOh5N#?ystH3LMN9~dXR?c}^H3dRnu=a#b zEjs*C7|{^&ZmfBL$ebYq*fgjy{sNK=LJI9Xc>05I^Vd6vptT$$)DC((6f>u$bH}KB zF7x>k=fQ1SNYy{5$A}UeTj^#&&ycRe?YWxB>Thmx;2*l2Zh{2e$H3^H(sin17+K7P zopwlh+gmA)z_Xcv5^Y7vZLR;{^JC$yX2)e69VkcGn+EPk24 zL$HlgL;8L(t@UfTthtFz6d6m9Krs^nzvS7Gw-9emPSG7y7D1 zYeAdHRB>aIw>8HAL2rA? zabtL}tSE#5(+Ged7{YxmmQAilPdT2`>010Vt!&hvH)9TUs=mKX>h0v6ebpMJ5fK$y z6a}DKU(uh>YVd6l5fxoIAtgmb=7b`mD?rm!x<1kdTZ`>a>0vPdKoAR{Al2(E(Z1*S z2bH(6bfxe*;^!10*+C+#FOh|_oH;K}-cW}CpTO%IRJ>2V*nOh^SeDrv+iCw%ej6eP zBMY+vA}Dc_0vS?VGesvsF( zv)kckLEgf#!OHDgN>-5~Q>0N?_8a1d1K$tkf5Mr# zKI#O-fbai#f;CBfSWD~rMEj9I8t)i3K_T>F&LkLkTWj%)0DTGoWGF4>@k9&RMP=}3 z=ZWtDFThg&j2+n$Pn>j_$!v>+v0psfoFSg70w*=pBDT4vk*@kyFPxm4{Ym3Lv*=wt zUk*Z%{=&hsY0DpQwB%3W^ndrY-tsS}ohrkZR^#G#Ib3Nsu;MihwlimCY*Y~!3o6nv z@7Mc%@803Il$s=pg9|Tqgi7*AG_Pi4ag=JNV(VG*6U~`fIk1q4 z66L0(ng%o9m%Ad+P?NL9!}tSc<^UdFk?ebKAN_ql><`l@x87c7e;>8*Q2c*Azr2If zOVszBVt4)X4~Ey{9RIwPKwtDQvqcxb>IfNOqvQVedr)~ifA0wt*Vv~i1NWj4F`;6? z9HdM0`{>K-GPD9Pg!twsgI_LmNurx+56xHKOVtqFZ@5KNJa0_2_6HBB$DQ?A_1D<; zj$<#&W3*s5q#}v;m*7MiY!I?^J@-NKRlu0=Xq7UI8XTYCTyu>7_i&dd7X^LnqpCch z!Nd&QXX-i+V)eey-Sd}!1C9^+iRLhIAL&1s50a`GrUdI3!Qkfo>9=jKNHf|X{UY`< zuu?=Lw2d7qH2z+}qoTW-&2PNaoAc**C)bo?wYpF}bGF&|@GY^vt<5C(2khz)Adf+> z^eS!kCIZ(1j6*{=*>D`U=(*l3=>c_`V_x4J`U+r%3JV$r37n#FI&gBKt@ZEDr_S)S zb#quiuYNoHKfU}S40RRLa!VH(GTgY z1ek0$-hDGLv}}D#Ifxm2^ZaT9tMRk3nPAve^yU2u_48bcGTzSv~}kNrQ1 zp&%$C`5}vA2NRXojdF20oaa}59o)whdk=~7224Mfr6Ggm2z!zEOYLwMI8#Y)L-}&! zuVOXzByULcPmr}ngzjW&pZ#Sk_At-IyQ|*aZ8p|&u7%x=ta>(miCLWv;>D>eEv**0 z!~}!|=;-2KIYIzyzkhw4z_#@$B$yUC&)9$B>BblP-N+oBX~jYSGHv z>Ms8M&uisx$S_iio@%Q`$%>ptPrBJ*Kan>aZOi2zwtTF)p>CvFeUl z|M|V#UztDZ=L^%jE}yZ}_tunjLJ)S&RDcu=6AtIm)%?1if#0*|*8hdV?=SJ}c2DwV z=lxArz`DPS|0aeW54yOu@@(W3c`%CSu{dpHeOrxv)dg0B_bp50^lWu(ulUZjTgga^ z<)l@l&=#{N&-{7?M+-H+M+pUc%_{Vb9RsA9ho5p{1w@ow?8 zu-jjEth&gEEhjVoeCOkO|IFO}-^%+QcjEt#;(qUS@Bi!cKYvV@@_z^aTkHPrXUF~D z+x|b#>{0s-Kj%aKuzFZJ|6|wo|7-DoKNSN%&PU_uaQ)x?%l|*y?UcIz!219_WA^QS z-)sHeIZU~*eT?&$-R@<qxz8yjM6M_Ck zoK$*3`?Q_CniL~qVD=xNOc-Iig9VXXStfC4eZRj@eIw0D@5LV>t6pjAY5kwP@V&AE z|BU;`P7es$lmdo90h8$!pItx0x1Rg3{!FmY&cNh(wl=c%`uNpSzf1EfzI~?%sT!8g~}e!tx`!eLEiz-}MRKk{0L1;7+) zk2}|BSPH%i-!_l`M-}`s4M-V*0$J~hbYHiX{rfzr5D(r_#%hg=rXT7pi;Np&Jz>Q zwe<|LqpH@GmxNH+LlP?r7Wbq`D*?aRLxJzr{5TB6&WzF?{TEYo z@TA2K%vCjr*etSg>{5OP0|Z8FQ+{oEPGnm(8E)tl8;B$P+ksZ4@b5LvgVsCQ)vV>g ziJ~#fQpb1zC~XB=kWGX&Fp#$Wu9v-%>GKzTVVe~M;#=dyJ26g566#-V1S#Jwh6R0| z4ZbSw;FKF?`+~(_@`lLASzy;iS#6RPUd)z%*#QbER!+A%zMUQ#JUH@3#1th3lWf1P zU5f@wdGcLjHtTn~9Sd1PzJ~w(o{thOEQPMtr73Uy;Q8`P@XL}x-@%yb-sY-)5#G-I z((>AW91(dl;?`_vUrM)jv)(k?IN~)BOC;ctEfF<|%TtSha+tP4J zT>=UyFqN(+L0MPV!2~t&-#*oZLDRJchMKcPMJv#zOJrJo0|aSQPu5RPg@i>y`4shi z?oXHgk2RsBF*G=v4OP@+h#!|Aqh5=ywOobN=<N;?z(i#Dgc-&_?a$W#Apyj2#oCj0{ufq^s}D-h z{)bVaq!3JdVx9&4lTZ+&2lNqZ&PRq^7~-H!*x!YDYqC>+ZYthjKm#Cxz6b#TAP6z= zxYd3JX}~wsN*&5X`xCUtKl1)IrcM_J%Qqhvsh7#m#>?cqBaG27n!)0|>)wYTz>~r* zV*CeUFg&l1v-|AolSv&Bf}#Etnpe2?iyS2walf_S;;puS=zmMhEQvV3tlx*wWA6XqYxlX#)XFvF(KIp4%iXaONJvDyng=EBpuOSPHyLQJM(T9~Jrz(sL zpY2DC1$w`P`w{)e0hep`t^L%r);}_JB0<2c#QTsAJ8`iDEF_2|p0<#S=E0EAJU0XS zV#I;zOCI}JdqGzS(10*M`T&VE+<=v}k(q!{hO0Bpic15yx5D{cly5%&U(NG6e>fE& zbv}24$m{nF-|zL9AQ?DZo&1!2-e;6QFPsVIp?ewkOGv9Iv1+I2k$%TKwJsm}3 z*&olbZc&&#_u^MkzuP~7ANgSVZ8gk9Ec&ln!;+KymAUhbHF}0}TKNvl6A^LZH@@priVJin*7hSjcTO+15m?iu-# zs_(+)K8MNh@ei*3>{|BS!RomfAi@_-<$!PF%$xIz0yBF^v5_?L7) zkK_KX@AtHG&T73^wc~%s^!aav@_et&>HgNk`uYsdB6`@h4t>LmY?f6sf>6aU}y|0Jpjcy~m;zAC?w?jqn5d`Hj^`V)_@#q58H z1q0@1pcW`Y1QqZj;HUtXz{VIi{_mN}D-+#CDBxZ0Nq;Mvr1vZ!56SX`Ehi*=c5C(r zY*8Phk=ZoyVUPCB563M3yGGmHk?#)FP=DsPXcdx9)6&f0X7M5^zodqI8=t?c@VY`_-81Po`hoxw!3Ti*qu~mMsB; z2?XDqs~x2z8=zNw&= zRy6WH+CXn57h1QAzOKz@A#Tu>K99%hVvNqK^`4Jl^E8D>7#9knaTI2j=wK4s%ACu$ z^ybvZb|ionSYYmz)P~lxHB_zvUOW93?l-k$%3T%`Dly&=> z`l+(^0?*}f3OabRc)EN;=tnu7^+q3^@`?Ch+2QuiPt>1IV{052S+x*D{k#6@$T2lx%VE!K#&qLj!wg;q(S2ZaVcHX{w#H)yr z)NDO2#}h;DZ!s}MLuTwdzeSO_=X`CcUjclA@VSl;2oQ2YXBavVKN6tpOU?c}b8MODbj^{?CnBt&EnzasL7;uxgt zhw|MGqNACkHA5=uU-)ow?(KM)9-isC{-rHa&s&GgbM;HLC{4+=8UE339W0RlFEg*K z#{YoxKUVjH`86evox19onW4|Gy|wUk{E1cRzGjqC?Jg#gjnKaoRmsZZlD$%x-I9^+ zp?`U&ObrnZY&8!wR6p2}v!T8ozyAs6k>k$}s7XM_sT5V+fY|^qjj6;;TVd9TM)713 zt`RDRpL%lN&38xE=k-6|(QdiFAKH5zCt1{fmsRSuy?}XS{eRn@xh#j@rOg{J`scKC zyTWzPqxM`5_l!F4LzWT2dL7RF)NJ}c=-0XhWDY{JMc=+#|6{WUybLM9fxvyXV*Dfg zia?|aFT~OYh{zwpa%jocui<*hVc_1F6}$3Fa<4hvSU_LB^RJY@-x~rQP2cspSlg9o zju_=l*%699d$amw5spfR*OhI03AXzFy}R1aER)Z$hSsh@-)K()U04 zbVur&$ezu*;qKn)a&kr=>pYWykDKBlo$~+4WF5=D?it5!J%(j0=a@i-`_$vEi$uYM z%Y{Qq`H{nkkoWeQO^%|@d1zT`kGq@dS%s)&4|v+JCSu(6dsd2ZdP&(bZ#}_5A zHuorPzcN^kTp`WCL1P@+#|3f@V8#z-V39fM(n=K4twXZrk~SHv-GfLjZIgqDE>8Y7 zxQI$Lwoibfe1iEuI^(dk+KAbr;OnO#Hay9k52|_$>nyh7BZj@bukD?z0$GKesl#-; zA)Lw1>E{KsU6W$UhG&Q{au7sBq5ka9>~+|NaG#o(jh(L$G6cE2#lSy_C@{q{dIewe>DCgBz})zgWvF5aY!fHObR_KaV9lE$PTh8B zI?YdSQ=JI7RU3YOTsU&FSbewld(S()uQR5F{Q540lq4(Tu9ADJlR+$faz6O0CLkSH zikPJd^n+)1zB#xqZY82Y%#IH=E-maPzNqrtoC`1YGG}%j3*mZ8LIoH}Ph4bv&B}0c zK@}k|>Z2qyPKB&U^zc-qj_?80dpY{m?pV`tezaSwOuLE;mv?hfH8R}-F&-m0Buh$F zcxmUK!$qBw)mr;SXa$*^kl0;hK0>DDG-+_`s$Zp76%Xl_s&ul#sW3T>C6Lg7XUjP- zmbi`sfI>J90Kj=`x?r>MmktWaA2hWRO!Oo}iA2`U%>*JKM_35@Cm4fFO3;3(8aUj& zy?9|r4^=8#X9g86|+4S~-c)DE`M&Z4ciSA_yG7q8p?TWAyu_Pjpp@O4aZ&_}l& z;vd`>7OcnedDX!B!WUuAdC+-gvWK3r^h|I79C9iEWw}Zj zoG@x1E!nz47?8KvvM?tDZ#gA`gV;z4x^q1NC`*rs>|(GF8;*AY0vq}FKA{O_qAD0b zS_fdk2{iPx4VPCRK!!0XY)LVqJ_WA=$!Z9B{!b6jAN}kGNQ0*1HbGm}Pgs_Esn@-tSHDZzI$2+O)$cvk_uP$RN|wf!N6Sclheu%FTyedv z#gPVtrA7S&>g;3MzlH1%3)SGdkwr$6e9`*to)5*AO-zeai}Cs!7ENrar${9zDRd3v zYI0dXxiTj5RKW?$NZ-<1xoh&0^j5usf9qOz(%(~;WpiEqtbF%1|2?JpXX&|EAgZYU z42L-(+3q+T)!~1O{>qjr8#sVm2FD1Blq_O^TEO`v*c76(aS@-sJdma#paIiCXD{69 z=#)?|x}J}#&d=3#*<7cv%)3qbJ!YG+(~_F|NhtHuj9hx}Iy+#lw**l^1bZ=$a1I}^ z@kSwK(tZCWhigEul-Blm@)PKFHu2U{FfarCpU-}uT$%F?NhaEPApUJNUsJE27468DdN1OoT>C3Yd4jmY~*Ki%I^yM>suZ0Z}JePky+q`-0(ZEP}&2p$~{YRht zH>58MprKLp;+dM3<{%0F=|`rKH%S#Istz8> zMXbD8-!)#Py`}AE*tK)Egay&u>ABxC+h-uD{*Kcsv;)Tx7knn91! zf0>FO8X^G2&FdTZWdFLqf}Tz6E#J}n{y|*+cFU10mo`sqD{1Y{)a$N7q;tCI))Iju-X4Ga8}I4gk|rUM_treZY4YSt%U@Fpb- z8aTJI?-MkOAo1QAD4Pl;KcloAOn&Fw(Svq&!N?U&^wQITfkG1e8)_?B4^jl$$hxfP8@<0S+*fgCv3? zBdsd$xzy&bg*_8G{S_=@>9X2wK_rX6eYI`U`CBzwQar&!f$#Lj`IatGA??t;7=DKk z?zWLVdK#`6x?@5c380mz=68_XX+Jpi*TSSvtVb*BYF~L95)nL~mn2}*j4LTAyk#i< zN#qb5AqeFJAQ;Yq@=0ik{1cM^YC;4gdfD)o5vFj_D2|q+&+sP*T2Mpx@ePlIdj(dv z#M;YgY(OfKW=FpE6e_`p>85hek;SwVTLr3NEd_z+)FjReVtN|g59)uNQIRa!`iD(B z2JFB*`OO+T`BZ^bQq_AjG&`*0jFnl1Sk}q|Z2{DVgZ5WGh(0}6fjCfiXr!vf!70{~ z5+eRlEu{FCekE2#>{Y;kHZ5z}u~p%)sCkSk&4yPdYR0ChQ_fz_S!kWW-%nVHJ7)Fn ze)W?*^L4)W!}@=Uzl*^9;_d#&H`fP0kMB6+`n{AWiAD8(*Wmkqygx=S!6SnijnuKw zd{P7`3DLy#M`90a`-NI~cLa;y`|-0cv8D7x1pMFC%|Z3DRNwDYcNcNKgZH7X(|aBi z*!uad<0lth&IN5vnshwl-z}M%atstLq>CS0L}K*+)`VXTBIx$$uTFPoE(lWXVfJ5n zEqyC@9M_=Sc=!3{^DescADZ zT3fF@_HtR_b#MCuZqp*7YXv#jyxXp{sZs3Ls_|0?AH4H!;yvQ*X2@K$_TQZ~v50F9 z5-b-kXu)z8zfH1ij-5D%aP<#WYp!R8itScbFQ?NE1!=3AzKhw!ws+jTzZ%w6#2sV~ zJezu*{OM~&tU|6HWTj>kId>)A$jT!1kV(>rCX7v%c&jo**hW&7T3IKObAs4L;|hv! zL2+C_WD84^PG!@Y+u(S`W0QTtgMv56r;d_-1t9mutp0gh48m&%*p07QJxtz^Z}f+H z3aisb(jJbA-8`}0lkTZ<&W6d6C|{4t-6vMIe>Q3HL$A%|kt}b6Wuegkzc^gM7gWKUU5G;3^>L2t$SI+uOz*S|?!+54P9$>D95rKL97L8o|)+>I+x?T-T zxgS)@z01L4A3WWxl@|^5R>>9X%{4BWS=h!u*r;5)t6|P0lnf!3@h5_~*vz0uF(go2 ziaB)ur6H^edv9y_TRrD~^QM+~QrA`v!!vR|zkhWdX;;yD_A)jvmepu=gVTaZYt zy`#*6&6$^l!_;N7k4)gnueZPz_G(30=My!&E>L4<6`Y+|b``quKC7>6r8LWQtXJv# z01l#1eg#+TA0u$r>t-a3Jcx5Zz4R;gBP=dLyv9Au4aV_@-c~*tByq|gv0T-cEYn~T z?Wb-4fJ*-W$bW19x2DcM@T^+K!9>!-h=_KBJQ(eaSByE?bXVduY*-Y5LT9&$9tGwz zt*(j#&hl%_A`Mj)C2^g91Am|iW@x42Up%+abQaDGTjcu zn2bs6-KXnS=s`&?gC{2^)Y|HwP zz=mpZlMs<_6fjw32pJoCaFZGAmwJyRk7Q$#MK=UBvmUrvb)0jx!_pf{n8pxe?bAz> zw!D18yvsclCyn7b(`2xmBDj1^=Sh|+sqqMICZxP1T2*0Ug_7*V=|GMi$QUlqI%zzG zMCA;Q8=X%LRdDlIJI7tPhS;rzE}C#uUK5qfwO#NmSTR;CMlJz6R8RCu_lc)vXl*77 zB7Q!ZTIg9YSN1MYE_RZn&mfv2T;Sf^H7U<74M*5t2zthlTOBb6h+1~7G@|+hO05k; zqNDZo%+~9XXD%j+dWm^W>o?^0W1A_UkgF~nAiYu$39GBb=-Trc0kLEb=u z^u!lg!8ZYU5C;uatlI*#hS`zpY0L*?DK;wj27QXFIsB68B6>5}WPok4UUioxGG+sN zbhn9EA};BsmpO{_4TBU#8pak>IY<|XY#(ZpKHir;Cs5SzI0JdBl3eBsk;1q6Lk}?XTs}qaW>7mfx+GS%`8SA>{wUBDzhWeRKm z!Kg;Dp<>^Fn1?|?kVzuDi7=@R?XjTmGQcDh8cBzN=2}32@nq0q8+AcCCJ;y{0&=bn z2eL8Sb;?kqYC~apD8NU;OPaeG1ptb1yv=z)M20tGLSjUwE9zp45J7aXvjYQ6kpPSC z1?O+@IlOxuTwk9bx`@9A&gBL4IzI#Cw)krQhhMwFT!+U!`(TsA^7Yesy~lizl=?4C z_JS!U`SI^g34aIfo~Ona?v+DSc)?OvA>ntxy+5X__>xQHsqwx^ULQp@8n!?bq5JU& zL;qoAXZ7frTElD4iTXnAzwP~~Gv!l&Rylu}PB~byE@xUYh7ULuqc|-d(059-7Fwf-+~D<9~@VM~#&O<^DK&o;+02*5*7eIZ_B&KCoE*R+PSk%nx1o40Wq@ zMSeX1%u^T;Qv(Ap&lHJqYCzEbdH|Xl5fSS-U@5Wj2^#K;{UI;~d$`Mm&$WV&{2eR; zw&nlv5x6>>{_Y7^1vJ{M7h{~btx<$G)`?MB7eQw(~%Umhk+14P@imn+;42!^VU+Vj|5BF)$(us|Aok#g!0?+6eckbnR0*-HGNW zMnGB2bdUrE4iOx-^SW+YMpw^K7JVY^0h_2{pSL1hBoB*D5955)i8{3h(^tHl1N{Mt~2Yi%WB{ zU5B}=y54rZ&INR6X~F1^69PQbzvFT)a+U0mSsIOCFswojT!jLVZ!&O10>S0+1+5e? zk|TmPL19pE!OL89@StGVdIQc$Q$I100R$YZS6RuvTPSP~Th{pCx)>%ee-o^+UA#G#tVFb4w;8nf8l-N|BmOb&f-LPh7}{WAbs~W+KE8_ z=FhJ#o)cFzanP<4N9dtl1HJxVbBJB%lD&PgY`=w$kpMA3IRE#=8^n&Wvj?cB@=9pz7Auw98ykB=bctv289B-I_m3&Hf6N zm(NYso@@O-+;@Ep&!eT==v~wGJ(t_f(q`BHbeOe%!%4v8JPmw`{!}2-OGgTFZT+^3 z=j2hQ<~+;JbI*l?1>>2xnjeEbpTzWdvvc$@`VLH(y{)GQVjS}gk4NO#e-(4t4v`n} zUqKYpzs2cC({`V`p73&?u>_D!-fss7674Txz|P*|WUEao^;(;EF5j!b79BQbRy+9k zFchOmv&a10Ym43Y0^J*-m4GbLdu0CmMHa7U-`Iy-kdKb5=sU>%Nr(r`poRn>ph4)- z1~&gQLM&Z|K5KJ}=^56r!GhaMr7G2>K^HznRW*B^QIUQ7JlpNWZ`9)x6aUS^Hg-JN>ktV+_&;ydE7PlHGcB{ zTZ$vIAJyJ*+~x@Y$?lVW9PXJ;flOhu@Lja8`TR=$eIO5VWprQei8r+UtbB!O(4#Z< zh<~OL`FWr0P6Th@jB-j)e&CDO-Q54N8V~t#{ih?_ox$91`yV;5|DI9d>~>G;acx#w zJ8AhA2&#(HN;IQOK=EePw^=Kgv=rF1Kurd%<+L?hY5#Zm4r6I;uad;c(8k37-)W1J z|9^@4Uw0or!DTP;$UjaI`}bLG&Ar5xXW2DBqu&2N`u?Zv>iNHc?mO*u{&UuPZH3R) z*8U6Ie;4=n|9A2JALRdM>vwz)MUSu7f{W@B3axVTp`enUW*&pUmn%vm2@5b)Xjkvr zo<;t~!{^}!h{{Atc(Qcb!(e=Fzoh%$KL>ID-@X1hU-j-kFYo`SKUeI3^Z0-J_degC z)R?a?BKxF@3rGIX8M2~ln9#4%NTMojWTh6GMH+w0``~mp5EWWo^dnLA7NP=VNQ(H0 zFG459>g;>Vk9(7I?r#5g9{AGxk7sKxOOo1^RM5k0`=jdol(Cf}qW3Ln?O0KL|D(VD z_qhFDKf~hlkMMWAwmwptr*m!xPs`>`a_QS<{NP#tEkOB;s7stO@zUR*$^}R@3H}e8 z?7t;U_pvisao%CzpG?{U2#cj6AZ{yRI-7ho_3@?;FlsAiFTSQZ-nKfw({*f(O4|K= z^8~*ctTvz6tTO?^0Y;h`zWX~14 zU#VZaIQvqJ2l0r%OFYv>a4Uj&jj1~Q%_djDSJ-M?>=v1%;#Yj2Hl(xKgvMI36)6Xx zN&kOs;9*FlW#xC8{@U17;i;=v@gvH+T5D>GyA9L)#eH;sL)bBx5J7-2Bm_W4K^X(@ z-8h38hhsuB-M?EU{CQ>>IX!6r8-yUYTFsiidTWX%84ouZ5;OAJtkXqWmE|`HVJ#k4 zpmp6*885FE;nS%iPBAy9X>!@%X+WJ}AnMdj53} zs11V>D!z1A)rfnBQ2_(A#Hp0C-j|8{No0Cbf^^JJdnI^3(6;}``4N=g<@Jv9!H!Z& z6|eGXP1F$@^sxxp1efrT_}!1br|IZ;z}bt@Y`Sj}Q%7!6F2 zA)}^TO9E<7czk^JEiZnuu{J}B1&*1z5;Bf1CU131NLm807LsI|{LUn)sV_>S>Ns$; zU03-s5b7UaC93-DrH7t9$yl{?eHs_Au1&1*S_+HZ6GUIvRSsa`DoJSE?8-G+v4BJftN_FdnG$wziAEyKed(ml^OkNgbdNpSD*oziy* z0R8xV32DHmV@cuNmm*Z(KsN=4+kU||tZR-40D|%)$DzgP?z5-E4`}*5{?f&-)i;uF z$=?HZZT!eN+WrN&n`!13|5ltnvCL}9jt?kDm>P+Nc?f_`*%5fuZ;qQK+VV!6cxl=E ziblcnl-XUAa=O>fKcB$HTq_07qg&rUW_|S-6>aS~gY|y>zq5BOnFpZB z)=r8wjouBP+jpS-+HVVdjW+ouIjE+N<(_b?sr2$qMxFgDTE-r^Lif zuW}k$CJ~p<%VaEwh;sx#F;vpA3B06RJbpi)rSSm)0r)DLM$V_C^qctoeuV1q>^GAY zXl9!gH3$ha4ab9y4)U{(71vw|Jra+@BiR-tg93fm7VEF!;LhBwPYX+X+WQPYW!^2! zfFaZv52ej`F@P{QdV>1Pc0bF5+v-Xpgj#D zwOrQAVS=z6Aq&xnViv%ME(Tcm?NsLV!eZb#$D4e`{WfJS{olfDDJyRx{+!CAKW9tc zA&oIxjzLViC?O2V?=ntdA;3szBtXL2=b-c!iu&wCDPnd<@ zPYw9h_|00*ejpSmEnPFuHWJ36Pml0gA`KKF?tG;sn8E|>@ZSP!@;diF=cz7q7$uza zwp2aV{q#1E52=`mpsPlRkb;B5F*=#^@*;-$jO3Kp`;0uLdZkO8P7dLBc|0@YhWUDk z29iCd_s_4i?(;BOX-Z-6I1%&>Ba7E3skX7c14mf5TRoS*on{phx!?mSI3F;LMXD0=AU0P zKRBnrisRY$w%JiTb|}^3r6OsVASDqK6pc%qn8abziq|qALh{q}_^C0%#NzU~*#E8w zd;XtylsMa+!axvTJW+xN$P3{hG?B#n7+j!0=!Y?i?xJrX2|Ih>2YbcezNf=n7#ReVDxm-$p~zzZAZ}?5`Ue6?le#{2U!-p5j9 z=3@W%X+IPAzu8oKh+R0#cC}E&diZFvbUmZOYm>u-Q*vcVA=VE6a{h;ae^QF~@J^$h z6DKi?<&#Nl_d2*9vt4pw*DU%;7x3`v$xTR44gQXDI5#Eg#&1~VDP|_B`tF};ETcDI zd=YJh@hd<~^ysXxCo%+MW*iH9wlWxB-JUVh|9*LC8LGBlOVs>acaB)z9VX^5 z%Ld-^@#u)w1SFu5AaaP{2iPLvOcqjnL>&Fj+ix!{x7o#IdO&Ws#!5jJhh{?vO~vIU zTgpx`c+lXEbqxY>?0SZ?q$mw_7>##u?y0Q#AA7)VuMk7v2nIm<)vx~&@PVVbdzgS~ ze{j`6h&Kqs){6s+(>I9iMPZC7PbhY=giMhCfZZJ8DtbLC4w79dDv)lX%5s0P31KHK zoPCUtc_}bmml0}YBCR1Pfm{C`Hu4PHZFw6)r zJ8N<>eAo0PI=^X7tmf#}ou2p&-HEpN#WU3J<>AGIG!QGmg);DZPC7a@&D+qGPy}~D zlXJlxRtMVW^K$WqBl|HD+Rv@er#{s#G{Qd}h{dgMC_CnpmgUI{$6~xT3Y4>a3j+;>*SyTlVk^u0*E;%I}SW?A`*f_5%NHP zQYg-BpQdNreNGJkcpTXo@jFb|w?q;0qbdlhD@gBmm4L zsv?T#{%yJUY+)e}Uz>pVt(XvX&pQ@dWE>m?wcE7~u*cYX!ap*wbp4%U5|4NW6~dtO&etU?SuYpIF> zyeg-2#>r3AmZ*jV<;VE%~2PDTS%t-$~&$UQm%#!9)M0B!PCpCOCSF zaPn>j5ITh1#oOl2GSvEMBxX@UH(Xe4N(S%Djh6dv;2H{(nFC2#g zHwu&8s+pC??B?n>Ul_*Dp#T|fnix$eS_%;d5#cI`DhK=z<+K(zpAdoeKDE+h<||_J z9>x}r`x1qO0^qFBvo~cr>+%h6$3pTE1jD1Xbx7@qZo_3T9Sn?EXj|!^{LLySl@dTa zqyys_g9<-Hw8-zOfWwCN^QX0K$>U}CdGYcpKXLu(R!Ic%2_xZCq#@j>uHrUM1L;pL4g?vP$Yr}QHH#pD-JB-!rWD!Y?tsSDcC#9Ce+tj z2y|RiLK5h2j&8MAxU6%fKrL2Kfx@*+bYk@MS^)Fb)ZK>Dr8Za4VF2rCBUkFkRf)FI zK*Pdim&EdBv65^$TP_Ne$%VGyvL-30$soDI?EF83>a8(ua$hK10U1KYVtuNkte2I!pej_Umj(h|%h`o!IvYu}BOV@&?rl za0#l$|Mc}%{7eJ%gBY{(x0qf7^crv?#n+JwG|8a|>IIwe`3U<_aQGM8m|y9?ez=+w z!`InOZ|n2EwZHrRi$7W@=bne|{%`CN2+Hq$bl{S>b!NAPhwi5V?1o?aJ+#&meVy@4sNc{-SHGV=r#+{v7+p0Uyd-^cj|e_XK}8izXp_lsF;(XXe@d z&*{)4>WC@5=%$JBKH)Du5c!i}vrG8@wCD5Z{-l4e56}AK;&KC<{2B2@_ug+?_Gk?d z)WUyQe^%~a;ea-knJ-s=vtSiZHL#e8%O7=!LZth@2t7_MNB8J$m_B`xqB(sGED~ zK%0ykdn&9{DMTsVRu&L)Dm8kgij#+U)%}~J^DY1kLQ5r8reZZa3vBB(7XbY8+~@Sfe;v4N^p9`7vIE+m^rqRBd|$#mKpz6MSm zLr+x2%gBM|Uo@U?`={G+2m2cMsbtmtTUbNni3kXCBX(X`5yJh;;f!rY&ay9N(UutI z%-AEgrDqDigibODfQSeKYegs@q74QM;AmxF8ftjGud%7tr?w_-mPbOB&Hr2!!tNKt z*?r6Du7csqrbp@ppn30D<8uPzU_@~!kd|g8EUTu8L?t-960LtRMLQX5dHNPX47be_ zZ~hbxW4>Wk-)C=CR9$H{z@BCYBFw<&Hr&4j?-+4O_CU25gdZ*Pe$eDW08176QYo)*hj@d-Akcx5yKjN5_lsN7 zShe^c+~r=iG{`EGW+?{Hhm%qS(8+S#`H_yVt!X;ny4{eOmn)+PD(+@VD^1rb=qxH| zN-QIrJ4-27JsO@j4R{fJ_NSHU^s-Iw+Kv%6%Wp?$v^p?DDC;*Oqkc=urkI%`Gs#<7 zNwB4FJ)71I=Rc={)Uc-YK!mL$I6SOEigFR*)lpOu=d6KZNva>mFb^Th)@O^Z|P}3<8>M0$R^dhR`b%W z1<7L*ri+F+*M=xeQ4fTKk`)jOj2MH|H{59dhET%WgkwsR#EBb#RtVrEwxhS56*=>) zk`Oyk)5O%GC4{JK;}M6@H~Cq(g28NQt9>@%F*A&|V4E2#!c^OotCib;uH#c4HqoVi zF>JT^DA&xhSJvFXH{$u38IPb#mdh6!VEz-u9YUnEfGKzaSKFnX9wb&{7m^JuhyuHuegd|!F9+t(J&^OGx};QFC_totZh@(n0`ae-sAh>a~32eIzIeeHZ6 zZ8&_x^X`6$T!UOI)MU%PEGqI(TMR|1mD;}32L%t zxOdD4Ov};{{flmA|9@7;bL&!KSe*qgMG)dT%fR23e2(iIP&1e^X<<9ogTl-xuhFNK z!gU&rx8+tD3MuV`cm=gr3dn7ObJ5ryiGH%i+>wQNU)_Eg!lS9r6IRvm&HhV5EWoPB z7vlHqBPK3$#zpY37GWVuYgK>xoWWie4udR6Mbnp8JP^#T4vT7|t+`Ex&kZ+BZSMTR zZZ}tGz#ll}uf}(4eFSc1CY_fdg?yebxKAT6aL+e}CJzLG;J`xr;e6xp5d#A=8PV7K z`GER)8Mcz>HzD?+`GaNa1;Wo|O#$9QDxe%t%&$)8RO)Stx5)9;q6~weIIL~qj9vuc z6RW$sA=>a)X(G-Xv2Y;ZWMk38CM?oQ!o#hIFmu91U`vOzQ(=Sv99lHIVSqDq>oV5x zon(O;jFcp$4ftniTai~qP0|+*r#i+CN-`dYa6++)F@rGFWHiNQDpApCv{30(7bUBM zf)B+hE&ZzfxUik`Yd6>URIY$sUoue1_iAxk^EP;W%nfo4bCHC3hkGO^TLwQ3U`ZHY zOA8?0xs?2I7>OXqwHQKRjri?Q^_Q(E>?vKT=KkG)nK(jq=@#YRy2{w~~ss2{mqJQ6XkGwa^bnQN_=`i z_w;uV?%6QFY^`lrhdqg?{wq9f36VXn=}bZGe;b$JP~JxuSd0gQ ziSwNBx|zSx>TCm@`YNh=ompS8nME!ei$=39`pTQ>Ei4c1eG4p|I>jAiW0F<6$CT@N zsVJ#;Vs975LuZE3?+7&Lz@T0>WZGO*DHtg9$b*C`fGHpa(Z>Vr_)l<{z*ApfZYKK1 zPPELqE}SI&J*Y#yUgI=55UWe5^niW2OB%v8C9f*Mr(n$_3>5ZB3c0f;NLWbD0&5jW z(@ZZ3#JoR!9nlBy@5Thr;*&Iq+->NcoTvB&#O&1`I6|w)CXwthgF5>9qVwq*p@`Pq zt*q-eRa|y08#xJW2L+gN4|H8VoqO@KWZTn%W?l)AXY(w-K(d2n#@3~*ARKA~Olyr> z&9t=6^fXVF32eUwYF%0{$9=UiR(x6V9JFH18C4Ec%90i>-v5`+ zm0b3;AyseCIdzi|-MFiVnrVV-0Mmu`t{3e#9F+Ptg6pZ;=XOD{cWCX4v*&1LYLzoH zS7M6wXe`Z?^4er&T;@#$V45425hT#ZEOsZYHZvcSiiX1vQR__%+4k&FFlq|;V?K~g z8|Dxo)}c3aC}%WnCEy59cDk!%!t@FGAQ1gspFsR73t8&)0crqmYQ zWA!4Fo;$087~U(T#`3nnCI&W;Nr?WHd!i>ROk#l-MA{5nSjd>#5*i%-g3@ZCiLCUL zq7)^(!}Mqn0dzk*$(u%Urx;qKsHiL|j;0pn+@9%VOE{R6yr$WK3AYIP#crTc&_E;} zaED%abdOH+*r5%HyBJ_vY;k7*!3!n_jXg(;Ls7HMVWL!7 zH&Fz%;}a_h!%&oPGi)GIl~OVVkQgEE(LglQm@~O+#DGYxD788-=_zOHR+^%t>Ec~N z0m2*ueMD|cmvcoMRE5MhfV*c+lO#Qid8Z&78Q}{ja9L5-I_DPqTxN@yrUOmRG>^<(Jqb5hOwkqZ&}px#-zucoy)3B8(kyz5B~V8o z^Hq#ihqcdU?pQc@a8kXQ+lJ} zt5vS}?9(^+>b+Y+scpYHB(^CBm+9N>5VZ+w)U(98>Jhzc5wyZ)X3%HnqZzb#828Ni zU8H&zfM!L^AvaC@n;^Tdk4&~E4&hZ+9Raw`UF+8g16&}7XdmNXeg9_lRnFhlyd6L4 zTW)zD{&nB8JWr$fp}qtdc<5O$bM!R$t$eIdf44k%H}Y8jmBN*anH;(wg+haHidhSb zgf&E@1^#J&h45OIfHx1ah*8c;LlCcc#}Ex;=&YC@hhoF3y2Cze*22;tA|kgTbuCj$ zOb(9>=IO^=QXwl%QQ9&rU11%U-*G`U#;$)A$J3VKfpc)EI>?b`i$nmJBn)vN(IU5K z@43ad)?qMcC#3>>xC?5&)#5P(hnCXJ@z17kcuFa|Nls7PR&R7)Sw=Py%qd!cBv|LA zb1Eh~)`5(8iuW2h80Ju?8bFv#Vh{8Xks<+(#!e$b>}twMvU^c0F1<)+Ax$F=J+`o2 zty%7vcwZ57QJ_p)frZ>^6NC{5Y>qb3HUB7X$7%Ut83S z;fs6-aZug-fJf08Kh>HjpRZWCzaMXB)xrLY_&n*&;#A-`{*-&7^&f=;7yg)aGd8fx z#{7L>UFt2kkY1DBpEDl^`1Jo3?{w&IRaSDwQRx05{f}KQrI^UlH~-@1RuMc95!xb^ zQStJAd^mV?T}IlM{$T2y^ufXFZ5Mi5 z$JR}8-i!XBHkzmB?>?jXz){P9E(T`K{~dqzgsw9U0xo_?*-ARDU~x|Bu-3bC7z{%J zKE4hma0HKJd;k-emK*P|_rGjDg_xs#3IIJ&wqyAFtx1Y|#D)Mkd|tSP0a(Snr&;6< zBIuD3L4>6Ew?-IJ4UV}A+`XhgHZxl1T#UY%+n` zUi54RlK{D24qv6~&Vt5**X#cU5rcgR19-~2ll{#dxAa^4xOQ5=2^UD=YQ%pxjX*@u z8up@;;G2pS&GkzanlL1DBGhN`59JIj__)FbFd511e%r7e>h@B5aON?(emJ-B)^(K% zI@PB{tRf>uRE{y?cWJMPe>`O)-D8Z0Y-=X~Nls!4G(TP9Kxo%7`D&W$TUQkL;{O3J zz34)i9jIyI_ZB0#thE99E~!nTdRG#UJ9tfd<3Yir&J69L0jD4S+mroEFcJW0VXbje zIvudbon&B>3i_-$qE;mH;nUAhjD@isxI&OFV2T3QR>~3FJi{pgNTY``C#ZDqs7t9n z_dhG|de5K2056b@+i-z>V@tp@97+`;o$l!~73t<7!L?o0J zG%xcX94Pv9CYM6qhyshLS9&m{ZkJRC9vwJ2gOFY+Cq@Hpd=Q8_5JPje11a|Z^A>p| zTo?RM+`~#GUA(BPTCz20Ib7XzXw~Q+=M>az1^|AX!X3Ee8h zo#m~GAR;8f1dQl2cTV;jL1z~P}&}K^Eb+VPmk8<{UMp z@8_y1!}ST;nfuOOD`1e550jm8;30qCD+-ME2nJ5AbH)Aw7;!^REkL|D;dC&ZL<{@| z`#$bV0@}m2miwG2eT?7cNx%i%2#=fb?XUKJfBz8R_f@IBAN$MO`+A?d2if}mXHWjS zd+eO~dGM1wkh}3@74FV@;bwoV|KR`d|JD~G15h>x(($+RcK;2(@c%#YTk?GazgPAC zpUtVO{lCA~{$9c#AMkyhFOlYdAH5B0DTtH!);eDa4fmnd{~u%X`2K1D8S_0)lyCNb zU*_WcGXJOI|8LRyelPiG@|bceq3oss0Q-Fr6&HBBX!t~U-n;`MAG4}i;I#uMrvLZv zf6=9x-oti2*lqqo)zegO6YabIhOhOs#|VMIMo(5nB(vK16Qc=2?@#kdlN}WJqsnE; zyPu2tik1}ok=FnhS=TRHq?{FC$)JGq&jK6H|Cw072@m zzui|?_Eog3ArQGkg0lAPCj~J9vNGe#>_>r1|6k_0_bkew5QvENf3h#alNJ6RSC^zFbGBM{mdlALT?!kFVOy7@59XS&tcB`PQmg2v-z{%{Fo>q1;G7g zp$d8*CJ*1ZzebPp`%f?Y3H((j(G-*Xxa0lCYxk&>q(=HfEwM#auXL~S^l8BqX8dG< zS(|FLqrb(j$}#%FirwTo7Y|aeA`fL?wOEx!tbZ~y^WUSnV$U+FF#k(6TSPF zpv$DnxR~;0rwSS~Nn*mUJ{YJFc{#Pet)w4GM)V2(Y!gQ<+%RCz{@rUIsQmmIpLSb0 zwlbAZZJZNeuq<~k)|inwG$HX4tLJYpT4m*P(ZIt%vij(Hf>7O!44eY5Jk(C7uN@l| z4lNCdRh`>*@V?bjO}C)Co5-P$rNjH%jH3BWq5SUIWvZSt_Yv2-2^ArOz%x13>?wdz z%U;RiEMac7nj7bv)2BrwN#@MUac%R|UY-{Vx0x`@C;iyKZMc8_x^i?-yiFtk&TC?N z7lDjov5rkTEy`7UJ$Z0#JXQv_esu4=(KE$7di>l|e8zXT{CYny6+!HN8IT1^%74@VnR4-MG_deU7?mJqK$G4s`S< z+`Gx$3RKr~zTD&N`VA3jJ9Jy=A=@7C!7p-MX8!N2$ZW1W)k`!&Y`dDr4^W78CIvw+ zr2@+{Yo_~ddUP(hIBcoKTFPn*0GvL3B!cSHT&5GR<8vqJs^&2=MMIbQDmX=-bA3w2#SxfX0fnz`# z&d7oWxH+J%VuvDekW8CLTIVW7q~x_{!h;Zyw22zy3;KDe8TB|176H;AF)yi7=a5Da z|2&~g9l$mAfbU-g(_u5yv{6-Flo4N2j=lN%YhloP4aG=u9{o`RDhp7NEb94s~l z$F#CN0Sq!Kva*4BqV{K1q-;Ie`Nc>f)?o>bHBMHmxbpkg)$7CkPT$x(&jl&(@*h#v z%MO}#1UchPLN2{`Pu@wyd)CVPpM@dIb|Zr71o5f5-oq@cd}MD?dcz|P-X~Jh@PFdD z^N8&~CvCHR!XNhP7s<=7k>CjwAR`Qzu{INTHD}Xb&Tu#|2tM$RD3g?)kVO3>=a2rI zy|WvY`LqN3L~u`|1VNW*mwvlpr_ZD3`2G>$(l<~4YMNkl=LLwo;V%u{QfHg@#0YUz zAv!B=?Et=KiT!; zj$ly3@85`V3Ef{O#^v`&Fzn}d(e zQU7d@K1IcC&-EhY9MXE9%3rD6XQ&yGs9L_{UKj{x#YhHs|ZIzaH z!?7?T1u@zmv&M*^2D0~A=>2Oz@B6{@3Dwo&j{@q zz6AU^6W2M|A~vl=B2wy;o-;m^{6C!C$e9oxBZPPRi5P!(v$eYJl920&?Z>9g{x9Y1JxE{G=={}J@I-&mN)eCq6r$nyHsv?-Z~l}1qsm1?@-9z( z4;v8VLn#*Z)#&^R8{^X<{-z(*`3OVQ5I=ax!~Y(h#&iD7k5K+Gj;c`oY&t`evNP5;?oUA)@x&hL^i8K0r5`fot?Cc zb&K_j7!R%>C0}C+&$Sg#7oe48MxO#v7Llc^vGMNVUsAS7>69jiTqjjV8dIF z%C&`4p-8*8^>tXEGjHaym2`s1EDPv~Q5>a#cKe9|jt9-{J^XigZ#%Rd$OHCK?D#z z1fhrk1Q3De{XT{o>pZV}?*Bb6JKD_oyg#kN{vX}?|7ZRF@9zH}>9?#kX!-UX8WCQv z{u#&gUbpURzjJrQ{Ldfd{hznw|BK#vf7SZG{43ynuz@TuiRSXY zC)NC)<^HQ0Vj6BBY=`yw9j}x2J-4*|r5rAYc<{k006~0@+kJ|axEsG+1DVUZs zCS9i?Kh>*Im@&;`SQw~{(pFb}&RXZJk?)z$LJcpxm@zK-7f-I3fM=GfVn;lyVw4lXD5(lPjGeC7yJ zjRrJ90>MLkwGuEq@AbEta1=k>ude~W>3W;`Bs!uVD1Ym1z;9^F`WwE2Pq_NekuI+Z z3`WLgU8u}yOO#8cM=9}LJNic7GV4Rzu0m*UDhSswjpev%G%}i zncrKQ@46RCFAtU~{}0QvO*+H-3v0^V3AP+I%C6P`;U0l*A!7MW^&W{<(b6a-f17!Z zzDWPcRcaq9AASBxKpaO8x$Mz8Xe_=Zgh tR1U1Q-Io2n6M|UTK67SLm<$Fh63S z^Y^iW65jroxSUvaAoOgmJ6@S(rB#-jEgoCaM zQUs=wtc-6R5UGIMshZ7dL>E)w_ez4EwXe-kTUl!>{p@$B`a0jsGr*O*Qak0-yxnI% zpRCXfVvr<9`T8CeBhfyen)9Ica%QOdo~!?E6A7vYGNY6Dc;#>ZQMbQGZGf?wRZ_oJ z%`0BJ?cRRDCm zU0QEdk4re7)NU<~!Y*7P)C7cru;63cuT|__uMy)WIx=IaX(Gx>^$4)L!#W&cgFZ%h z+(a;3S2`H=P1%wzO%{!CD{>4y3DYbk-a9^e&3N^#8s!lY;64pSvEr8QZj_?T;Q!2K z4SGbd?xUPV(yg3iO~xY_j8YZR6R0_S8T`n9wz3#^h^?5AH%hh=+i6T~a}@8c0EX4O zztcD6+3A1clpjDDYs6P8ubIFO*Wg8+ecQ&-9dCuqR^RF6UG;Oy)A=fs&(EeQaFQNr zhiB%*`9KX~Ur(O}`*B0D@@VZL_JTaWxA?Q^UOxk!==$ri8uuG2Q#XPq&4ON_(GN_9 z)J*R^&XAPbEj2{B>`rCKP4V-;KGyFLecr5_-9r2+@dS{seQ)Alsv7LZ?GuTq*pVJ> zEw&#sU-3|<_1wk^WlZ`Oxa}+-S10(C7aZ{<$kL+g(dK5=7TDmE0akaZTMn8lxlJA=^&8u{k(OCgtSKQ+U9QvQjuMD-9~(5FeQV!CUi-Lub% zuvXp%`0#(No~>icGff?eRI&M^>u;vFmrm92nWOToeh~MO8kHYCqq=oRJ0xMh<0@}Y zja)W+fbv&`Tn^Z^AA_Cft}$s|tS|DyskLkoAN;i;i;tg7xUXp62?RTlLJHwq2HHR6 zb-edNsw*l13A&m{;3g@lm;a^b%EB z%wm}M@s=5U3{-;=h2wa#qMkoU(mx{rshxJz3=^V!T=*6h=A&mN#{e^&}i`T*XpuGK;V<9 z75>|FcQ59$Xc%Iesn0X9C3@KM`tlJ(ELUXFa`i|(iL`Ad+QTFzVK>(+eIftRK|vUy z(=YN1)3p!XUcjnjph%#L{qvszq=n_9%k@`OR4m3gZlC>jyrcX7!A!CBckl2N21BTK ztZjEk^k&~Xt;yEswzpEZeYRxrlm}*!U;rWl2tdLUdpy5KQ-ACHD>{07thu)SReqIH z_#3EAAQ3q$Q2nE!_BzTxSTKJ7{IkuA6X6)UAMyJoI)yFwB5}d)|4OAq6Vk}*yu#g~ zpS#B{8fP$jvBhbKoBgV1HIL%gZo(X62XbB~_$U2TAGkBngKv8$%k!3~0=okOsbArB z>lf>;@ACdt992YusZl1kpLfuKaDLz2&wZ96jVtD9RfzkF5wh?WQah4F9rPH`xH193 z9`aWI`_?Lt|4Ucy$-0d8nPpDS)=TMFVs?7qQLl7k&x% zmLhR)VDq_cZHlx<;$Q(*EHcD}aZ;j*#NY0@{2!urigN-5IRn37##A+TJuY{M&YEBT zi{hVe+GxzaCyZS`mR!oe&67|?`$`jea&%ISkL>F#G%e(uFX-3Ib6b^F`g>osY3F4A zZgTEw>iJkbQ?I`BEiM&Qer%)8rJakRjdd2(B;e`gjv8e7yR4t)!nr3uwy}jS4J3jp zl(dKrs#Jd=jU7u^oVLq9(d;s{((aCIEWy_BE%gX;E^yH+;uvpltD)BEeN-`s=u508 zvwvZ|N(>0FMZB?2yt8%ysorNxuj@E0fP(hB_E0x(L1#1R=w zNirY^=cpg6|0xGL7HEe8JMn)7`l5d|Z%n^~k>mVrPr)OSYR{y*XX5+*hrWBG^!1It z_TGaQm?eI%_Gk2baz8H^KU3y@_J2d_bUmUT5>N+xlq*^RgURO~{?Enf{%!G$>2S^? z-5=HS``=fu_#J29_5W-BKWp=U2g!W@==ERW3;~FclR14{YZ;cxALyMv#oD&e zY{W)3?6%xO2kk8kcbrAQdm>`x%DI`p{>C2HF@=5zPnR}W_^7%({flA2ojvoCZ6+Ki z#PyP_qN26aN}Q*b z$sk~dCV>XL3{pQb&pz+D`a8OdgB%*f`{9LH7Pv)q(c<(!AJa%MhI;a6054IsrI;bo7ABvD|za^PfhH+d&@AGW` z59H_cK4t6~I;JDf`wgER}O;W@hcn9&Pcr?3k zLAxIrosAVO)gr≪lQ_RfdtALe#N)vdhu$+UPP&7i<5}Pj+?P|98J~G`XpC9%-fV zlwht8If&saT3`Ox%|zN?ZWa7Hjbrq#bS~e?+sf$2XjGITnXmZGv9q#Qb0fnXI8H?s+UDKs@sD0#6{R%IDJ{Xo zTktye`&%}Ula1QRIhWNI_+TasjG1T8I-lNSbv!6)&V%fEowYv;rLe1<)A5l6Z0b)n z`{>KK{n!J~ssTo=%nL_gBFWCK~#bi@R3fv@en)Nwp#F>!cjzc zYl;~HhI8VLG}XaAT#x{3B@G2^bR!=@#tX?kt`mtQQ`i&lu*0R6l$)F~tBXOg$0v+d zuCY_+zQ_KBZf}^pE33AnZdbK@SWVAE1fw18`d%pnjz(&2c39dkyn6WMzsAf7^Y+ir zY;IUbCC%Y`d~_zA36jM;0$V6M8ks!d+kHB)L!!ew_4B(W?N-gw*b|!T>_yh;it^#b z3bP0i3>HqH#>NXzAVNS8a2tjeNNt8-(>!2^3?QF7jLy5Fn@E_s7583%(&2oo`Mf*G*!A+F8 zJgMeAYl}M|b#90mEwo)Dad2O85cA(u7ks;UGpNN7K}Y7PD%u<{nuNSCYZiL|b}uWe z;>e3y9FB-ETJlI<^5(&zR{CmAPVU6XOL#-_w=JWs#lkp$x+(8ydE^s&&gw7~yrRKP zjFw}MU=E)>-iG=yb)*V&CK3U5)WO4>Hsn+1k}x3itye&igN@|J!^w=Pm5Y7kuibx6 zSzc1iG;nW5o0PlR5y$1w@a`rz+^uy*4VzSurcwyw0y<%fpLJAIEscGb)7Pk>OoUL! zcOGQah4c5bKe+2#g@@=x4uvJ1%)4^ysZJ1ZF$3(=H(+IL=$%xJ*}ps(*5!HM*KnM>fsf&7jgnex&{!ake@^nyCNkw5CS}Yt*tg6oM0bjb4o@q07OpAGU;A5@X6y1#Vw$b3R$=MCxeZyb z+BXrVIV**tB0$uNSF^#**M*~a5qYFLH6|nAH zF&plX=6@m{>!Colizi-ziT(cSZH=WD{tnc(#sA}-eWXaC#VL&Q&z~Z_(o6AIXvYJ6 zPOcML1j{nYVsFVk^8wwQ*JwanzXyrlZQo_;C_mzMm*?zfwF>0{|7;)HW~MA4i2l2Z zOz|iuB*mbqeNyfI8K#RztXr}|RewMKCv|y7yA64aMMw@c7&6R*9j(lSJpK2g)K}_3 z?Tyb(0IW=Mh6+C%DD{s8HuvE9nzM8~h~2PHx0)gW{U{?=HGt1a?*;o-c);yuRqru7 z)nvCaycA20$Pa>=bBD@tuFn#0`=N~db6*h+o8sS}iSSW{;IKAy!VnEb>mOY(Ri|mN zLSNEIp{ol^e79mVRKQLrMY~B`Y3oA^4*lZ=i&RBCHY@$@d_QibrI<<781z#<#28=? zgiBZO2IbJ!u-+=JjRnOg>)$k-Nzeewk(w4MxFE0v%f)K8Uu?iYmN>4QCM}P>#My28 zEH#+)y;m}2p-8Q3?8UWR8|*>yUk{y#t?Lkxv%z;VdggQuIAnF=-PCqVkpApbR3SD6 zEqb}})pGq+)m^5Z3$ZjR*XB8cIej;W`EVx11(ZO{s+sfNmgm~oz~_tZu&5M3UMuZ` zpO#7i26WZPeV^s#xw%2Goo0UnwUlV-5^G6H3Khi~$p>KqY2ErJ=CMQygAP-5T0zs; zTxsuD)TMAZ-ZLykd*NmDt>k4GKHt~SsV{_r9E-_OWwpTB&JT$2kg$DjTIAK0)jBFD zDrnxR32touPA2&{S$mUXNApzuRlNKG99DFdUdwlJFIe|U$rg3KQna_*$e1LrWfN8K z?J4RP6u@BtZGK7qkB+QRK#Mr@_nd3*rcklj2Vwlav4=?PIa2Qi-PDn~V`6ILVY#P#mTbjH)gSh#)cYP%0!HGh2>=MnmnpqI;nGTYs}(j&czEHJ}1~8ugobO_k2YG#6#)zBmvrL zc}7V8c#wnm&*|DUv@JiD!KEuI{+`_({?^iw6w&lqmb#o-%{a?(J7I&W+FIKAAFmI> zY~v=%#2Q+}=-U?WOgM%hzjYzqegA37<>KRum*=7EyYB9eNafV4~E$`8Q~H~%R{p8x_yn~KZd&Ab!*?*aO6c$Tf4b=7eo{*AJpV<+m;!E)cj|I zkQb2X&-CDu(zn9~=js7jWpO5u6{s#YdzUg~UGyNq0r}F%U`fn(O{C#1TrCH_wckIXV zlfzB%us%K@V^jV*jy^X$^4KujE7IHPbvm0NlF)i2Ac!iSb%L?$%MbHkXB6PT#!a>D z|K`F)_M`A)5LR@X#vl$0qj3m|X%n+gb#xR_T5Dp@e)IM{heg(V?Z!sZ+YDpu-&-s) z+TXlzD!taz1}FHE1Q=|~F?WH4e&N1nwfeIC{(2q9b5FQDSd2md5PxRB%Jf~VA`kAx zd+bsbywh4Qx8#f~06vuzpwE9o-f~X^Z!4hcPu~a{$Dfe3{s>WkC$Wl*g>qb7V_As zmj5*<53TR2EAh_dre*OsC8s=C<{)zyaimH;|6+VjH{qjagX-bt(Css_qBnTBYJF%_ z5;iyKyz)j>Yj;(NZM0~IU5pxrQ5PJk+0d3_CEB%U>rYs(k{K;1XK=%DJ|F3xLuuIk ztv+IoRe@ah>_PV-?X>PSe-8}`{w_>%qj_AczcsW^WR>mb=+UFM@OP9#) zjc+4)zu@TK{gFAg*-CJN=O*E~u8fFFFA>gJeX?m?CbplMES?z~TOK2;j9=pvQm)U( zJNhgxyO3h5!P@kzu&wpo*J{`L95ny#ipTdqkKmjY<1OM`z0bzt3))l4nMGIfGi&{k zI&!h(KAC?+f#kJ`758Ak5RrSvsO*8-&$L6tteZm#n(O}t&47tDt6K3(XT@ZTV#y_|W_)n%-L6*TNk zjQz4eHhDXlfVlIyW8UPLvxat`vsH$y=04Xo*F2YaTw?A=`Q9Rd%dWdCy-hG1yRHzp z>^g-v3Td&@FFD6x3_k05F;{ln4pF2v6vw-%i(xbBA0q|NojSEoKnCfiQrW2?$3I%| zq%gv3>gq6}+g#^CUK4J58{(ruT- z(_96l!FC&H%Ga&ZvI?#po1k!HuPxJGCoUZB;@=rvNlzuLT(KZ>{W}-tWxXq0b#9Z} zdrMT#CF)m0+hsBW?svrvoI(^sw&n`B#ihaDk`0%C;$tQ27Ch9k0yx;T>2HOgeIxE5 zoXDj-vtjfL30|H&3u6`v-A)GZKg4p&n;E**G#Iu0J@5-`2JZ6FYdDzq~W=KZYHj0!D}z2;}M7x z>V7zu8#5-c&x+BRY~8*6-0(C50lOI7@9H}d!*ab(*Tznt8l&`899Q(1gSS-gVlt;V ziKB;CQswXCQ;jW|cG_(}oxeMP&(B@V<`T9qrPXPb6>oiu6`kvbQnMRTE+xKBh6{Qw z^J0sP=(g9;#hKUxqIc}lZS;$+D7Lt(JC2^@5299k_P&LF{E6Q$6)0koy?;9`g-`we z{67jx_mOjT#}CvSr|1x3t2RHhX$YK`DaMyBj9Oj2ZsB`Nb+%88eX`k1-evS&ok;2f z`dzg;xG$*7{0nDAycrX|o;v_XK)An+K^cm2O1}rKgU~FY^i^(SkVJK^=vTox$bxB# zuHE7d?>TMDAl*5I*n!kQpank^g4H+$rhtqv1ayNOi2CzW|% ziWuy(Qu04QW8_X)g^6lru_15bIYy{y=&?1A&jS&Umf#%;u_u`{RBH4M2A-jH0^Hu) z96WApw&rZR3r#e6rWXA3%wvd~hizTnyT0~8iFD)%n949wwVOAw&moheBl^76fgibN zJm!NwzWJ2E<*HB3dj&>C%EpY*VEg9vD}9UM74*`c?u$!Wiq7m_S3v$Lhe)>g_xp`i zXOufwCrJ=HnBLyh_Mmk7LP(~1PRlD}0OdM@YO|ZAdov+M91LTt4^53CX3(2@P;hzk z346+A9iTSm^17Z%Zf4E8Jt*3x`^f@GjFj!&VRo5Sk1bQyPE#_F%a}b?p~s6b zMF{FwI{JHw>|;AFf6}mbES=tjI_}5AuwkS}N!fV`-ge#v$CBRmu3jb~(A!^kklcR$ zWo9x6`j%6jlwK=i=BS&TGV+sRt`C~?REL_blNX^by+LEgftGO_(a3FIK{LVek$~ov zP=Jau9KDI{jVjOor}pP$m!F#R9QjYg$Kkl9d;DwcXwjNdDlg~lv+ldhLOyjN^raHg zT*J?_p36Y5Y*?o)oe`-h<-8(<>UvmQ%B6shs{UU3$^jB~L>^!CpUWSviut0D1QQQ= z!WlqaQAf)zbrSeGx8(dZAEB0#TET|KO6=xw;Rrwi6~qKzMcU-<+}j4ZwihD{M!ptW z7U0Or4&>2#Wg+XDOM)c)A#f++3dZ$RQ2qirzE~D-93n%~EDr}{r%^0Qn ztzT)eGlYWGx%m<@b^oR+(zR)299*w9;7bRx6%&VBe3FMa3TE3B$Zsk0b`PYJWD1wjpm=k6O!#vW+9Pnsr>yIabYvIAOjsMHGFh z&z1b#udfTVz-&va2~s2&?3D8#UqnH95$CM51LOmQVM*VvTgX31%aZko7=o4|-PMSU zY&%quOyf{Dm;E|FPH5fA{dHb5-&W-^n$5$U`@}stNawpnl|b{v>sHr^zx{e}N|%6a zQ%CFOYb4u0PFV{ar4K~K zx8eVp`sF=BY!8|~*S^uYs)^;?3eFfw>_1n%!|i8XpU?(G8`iwE26_(pkpz)7IOFN= zjtgRwyvT)^P1$-68E|_2OCuRiXcW)il=%h@rliy}B_^i{NX3yodTl^URh3ve7!(wa zbggm#79bEZAR{KRVA$+`4}I^r-M(ZFir$l6a02@wUmUh`jtXdoP-Imo|Mt2eJSzJKlgvBM|Fx)k?TAgPv4JVYtA z^+jw$iu*uoMP~>YgA4@K3W=s?0lx{Bbrp2rPGr^5a(`z)RaCa110TGFUSrjSR5EJY zBTWlR`Stpm6)nATXTGff;Q$b(RclAeku`Lm`X{J<&!aUlWS3+dw$I@o1rr`iHTmIJ zaV=%ATO75IlvyqlIi=)n8ZtcRQHu48!r> zX?ygOfb^7*uoxYx26Cqi4Uq%!;pq)%->NCT!o>OjUKBBtPJD;?rMn+w=0A;k$VwxA z14eWJBhS|V`TpgKhfd>8@DL#p0TLNEg1r6Kw=%1L)~@C^HQ{gsaR`Ty2H6DR zwZ3F2``UZ9_0I3N8=%&#;kvM zXh|aJFu<_E!TfhxlCa#9n%TW8u<;inz;4Yn8f)*0hycP`?dY~w)6iA50PPVS2%Y@O z+w&SnBEge%ajM)0HwexU1~Xg&gNJ1UN^MJ6$7n$7_;8s$bVv4i-R%4P8_=u@lW%Be z(K@B&Ktk(6BPYV(m^b>uMw8csch+zbLCci#14S#qyhDj7)*486Cj6@q=`xuy@_2xn z!VlBwRkW@a)Z!abJ|Yf4yukJxy%5$mEf#9)e~!JP2n9&@I`K(r7{T|Nxn&KP>Hfjt zNJV=z98een0Dw-y3Xmw`87KxcK=_(B?`eixxt`}-OK#*wC03b0) z5%%L%O|HLq);kouqlNn%DYqgMg zkdetAv#Y?B#t}KDPur?SyyA^AlZd7*R)LjUO1h^g>UZ5)6#9VS=}=RS!#FPi0O-L{ z0oZyj&JFIcFwbO%x5U6G+Ok@!2{(b-F?DvJJ!vTp~#K9r}{td}ioj;dd_ zL-b)ivdgNW4l_ePV~v9X4xx26%ri6}=$vLIrPnD4=Lj zf+-OCZ)as@*Bm*!x!so4aKpfhrgH;j!0$SkAWH}VdnxmeqM`m}aH?$eA*plN74a(B zpX2H4pD2fSGbn51D=5a5^w7Mg_vyS^*7wC^LGS5|8gFz|7IO-oX>-In0ZZ5 zlgCijWI{q6-?^7Jrjhmjb{|O$9-){SCZAy|R@v9=`VGf7x2v-xp*cd0Fyn5_z9V=8 z)kDZ%1-sq=*d1DZp0!o(qkP>mDiaYzQ}XWG5g)@62?Qne3gwyx3##18KnxiH_NFrX z?r|F9+5K4EpY8Vc73Zma%nHZy;$ihtj3EKRK6eeD;jO8hdH(}V{AlF(KJUr5i4oiN zRfcj*7!w|dqyv_5&vyFgN1fD}I8PbfcjlLlxM}mNUYqo)JubndE^er8oTjw^nyo<5ZXb?Wxw~_tC|B27N>;Fjq3IF2D{m$@CBE|4{ z9E_eP(Jr^r8o$Q;$cX)4qx(O0y3_aHpT+t9pW^xan#ljmxQuc?Fmnx3V5R%wVL z1c0>R|Dt^9+-AyYf2z`XeZ!XZuEy6(X>V*$#X8hs7bK@cEhzThp ztxk*LD?nmH1BCm<&_F-gV8Fkc%p#}l8aFpExY-vI6kJc9ce`j*y=cXY=gF=WHSM}!E zI39!_S9^TwVHTySW`Y~xa9W!#yQ^a+5CUn3L zynKpA5s0NM5imqT2*^7na{*MHE&2kE`Wy@}23wm|;I#}9-pp6*;QQFGae60NtA>d< z={2IcIc-s_AZd8eZOKhjsiCfRQv%Kq!|}KuE}-?A+`sMh3?F=!k;l3Gh3?`9TuG~czsLAr zn##Y@cR2IqWp#)BzN$jMP?tUr%Mfu|>W;6`_x<3Tuq5GwTJApferNS!tLLu|in$mY z4foJ5dyse`&B|BKnMF03UuwLSE2>}ZziVlFSl&+`2V>Y} zJoTofN7RazyCRyHckf<*6{5VLrL0yE~#FYzv}U_hc(rB=nP98Tbc0NUyllV zYmaM}{D>xu_-$ZRv<;sL1EN-fFPKp`@OW-#Ee8YDVN|U)RI{ZPqg}1J*i)zG@6VVw zo!ie^*RD1!Ze*+(soBun>iPfFVG&+tD7(^OIQw=}9CqM5UWD4RhOU|PZ8H>z?=1rP z%9PnU)7~6~4y4@Fmv04z*ESW`k3(w};U|YC_{QfE>DQbp{W@m~Ee{u^yJ3%qof~j5 zzj1gs6=%a*_hK%Ll*lf7q~jGksdo+QG})MveCfWG!`05E;!p!k>fX86Gd^1fYlqRH z-dUl-nq}#$juGjaFCij2ny`95#Lz`zZ_Z(P6|~QjW)lnTy|%JI#wZn{CLI{0m*&RB`o>44Pbe>&!ULo5^lfweCx5joHaCoLmhj zxytTsSKrZwOc*cTV_8sW;~gSb7U&2eW3B2ls#QNX0vhGjIbA`9KT{-&tZ>ODoS5co zU-wAoXx(q;j=C@u#assg_0U2|=_EIbrR190yY{&a?T7PT*`}^7o|2t&2BU5jjy=0N z;&PZAUlN5nK|1&kqoVskxjw(Xer3Fht=L zwrkCwE`|tFJ=aDU1cU?W(mh^ycx{lG^M+3V3ge!MpjJ-4c1~MO4NZ4r?dp}Sq9-L= zbDPPOXs5$H4x_?XgQGo@o}<_iagE@argMmkgNHu1ThitD9IJOXbRBpeC*SP6plmzo zEssgmxx4M+f36>MmF3G@sP+0h6890N$@Y8;2|G8t@#Bxpe+7H7KW07sK8ysFdh0VA zfpxzZ(fBd|8_m_4^@s6UP7L2|`)ok4PZ+E)yq_SY%>s*O-S~}!!fxfqE>*Eu=AiNZR^zc`(pa3U+p8ris9nunU9pN*t0*B-8DOzO z*CbxtO_KFb+1Z%sD5LWZOLb%XC?HF&kwf~it>1OqN19Eq$%aVUq}#k9nIa?Y5k2tX zUFsd564)$l$u-ximuo+TFU6S!bJ|L$WC3KG8`$G^r@|#d2b9QBH_CKod(_tL9E8%OKmX5OSN)=s#t`|(0alDQN^hKiIYwb%fXVzZKXa=k;N=5!RV1qub zFx3R8V5iHf@kurL&?6Q`*<_WuWsNtUrkh6rs)L*s;d&UaFP7F<>5}r+Yd4e%9W50! z3dGS?;o+6s66qdFSMNs~{H~tecaFE0UmhVm@$?d4l=FttpeE)P(EK`U-xf*S&%Zr# zPoonk$gRIWOqYcsk*wueVDCB4JIcxLU@=Kra#d~4&Z{q0lM2_iQ}m`nvIcVUvTchx z2o^VVv1%&?PZB@(Bj*8_+GPB@@K!?8MbX|n`S0;>OHtYmS!Cg^Q!&XAEoVFs0u`qY zD-+0(HzfeUBykqA21ZOvotLM3jfNAgD7jor9Drr_$ar(0VD5bnN65|`fL>S_ zA>J9H?>?IqfAJIn{STpaK1Z8Scs*D$?9ud*nvkZs(-(IuDRACB8A}9Z^Oh{KfGB!T z3Z%;JDc=ukO0J08O`kebj4HEh&WZ=GtscsTFj#_?+sqdx=taquUXK87%V}X^{m^1) z@{tH|LqsH?NMsNKu>8a1i{)>yF}$BRUYeX$2_Epw>?)ld^fpApZ~m@NY$bWd&`J^r zfDN3Qi$uh3jBb5*;JqXAOKUZ_j(niAyJp&@9^!D#3|1(6^P#Ax3!52qQ2XtH_1^S4 zzdg%HH&0p`_9bmHDl7{O_NTu(=S?eu6=P9ep_8ve)M3!~8nNNnfGc9^sBv^r`hrWq zR4b(0g8;fYb=?1Q`>yPKC0$G}nyq3KT6BO$UJSU1s`8 zv79znT89O58%QYp0H?JZM-(Ai#4#>=k1Faz5KRvCLZI0n{V|`Ux}=Eh?1fNIMB*)% z?Ebj*U2<;mErcRCH)Y(I9OhLEF5sPAvoMW?h3LrfF_!7%+n`#s`q}RvP!fHNd?t|| zeA39-!Lh9d;xdB@1u;7gD+NRwa&PkK}wY28`dNJ3+Lv~crSnmi)_WE1J@+EEZ>%U zI+ohOToP;Ih|??ot9yD34%6Mmlp?CUl1Oz
9v4lGy$ub($E=!&@Gh zb!bG#zO@_0R6(d+^aa%W6r{&sFATOk__-A+BLNwAjRfQr5;&cvh*(|B6B0$4g zQ9&5_RDCi}-20PJJ9Hdl%I)JpnAI{Zuo@X|kv{0`H&G$ujJaW8;=|CUc{tXKc8(}S zOXFQh#Nhc2Gmgn@ki$Rs+NBPp;~hg64GL7z`bR;bY~4|c;DI9S*X210pHjb{n1j%i z;iZo{;bjsL%OVSuH@L-YUu+p5nV#TVzL)i;-&h}BCRnb6Z67a~hA9(ntI_JlQAmqO z=nkj|6AzA%(o_f}0v5$H-k@FOEPG%WXpl9uHvmpy9{e52s=34yPN?hccE=`KO$e1j-q9>b6;F&^z;lQ9Y3I!-8&Qby?>r{00;no)y zkHFM&!t|>cpvK~*0vc#GvD7{0d6y)uqLDTVkjGdgSJnh__8pR__Gi#o~3#Op3shfW@(BY?T0T9z&6 zLWe##4U=N#;U!__%5TVsVTaGPHBJcETVO{eAr>sX4CxDP{cAW7Lq}YhzAvDibJPv- z$9mQ`rAsiXKu7dqnMha<0Ff-Kk@TB2rBh+#-@i$0WwWcShh5b$vHdMy9!q2qay@?} zF{aWagPE^gt)>+{W zN!rp@|6jWA`!r05-yJ*n57ZdmsN1r&-v<#<>BdpuA%ER1hmv-*+oF+Acu5wG<@9XR zu9Q^bIDofUPNirlJ85@~U!Zh(_`5@5SWGqY)iMB12&nWj#4sO(u=vzf5Ej|6p(&;$ z&EqJ;Bx<1|<)NwoSjbdQD%inN1*u|Eft<&;b-#^*MwP)^Q!V|PP+~H`_XAT4akbGC zV;MxSBIvXoxE3l3q$zgglayg*GnMd8{17xkeFi04RK(_^bo^h3{g-?K_<$E*@LByq z{GR^+KsbHn@_fHg&liOG;KLEmaejhu$S2W%#_ntqi{gLZ(nDlA&wN(~@qHhlO13!7 zi~kuIe!0f}BmKjCEI-Hi+CK@_oAAEGd+O9;NpE}e0l(!vQjtYo(BFVFh^Hfi@rNv}Zu%73_-9m0t~$(xJ2DlbdnVE-#;d;;hDI#Z(fhwGb4?W)Nrdg`*N zb`{D=dhq2;V9ET3i~~c{f4cl85RNo=~08aQJaJ9~hH)U=@ z|6A{vUH*ntp;%rfclHy+y}|xuQj+2=%tH{O7^<{NV<4LJMwJi<6^Q zY_{dKbh;>D)5?tE1ak>sphbB&2q?ibwTr>Aw)!}*_wurrKTcV+8!3IyYt07 zQgH>~k+&xaw%~@Ob9Eob)?&4x)|9~AiC%Ed5f1f02uQE^yL4syx}#qjuC0E`6f7K1 zAHYPS^I&K+0{9{~{MJ?aj857h2n6I6RjH)D#}sGmJRa?h@a9VjZ5<0INoj0?g`%Pe z#E=fq4(U-xNeL1t$jf+wFmY4Os1uT1)?8lNWR7WhE(-reOpG^?r75P}EiNPeDr-Fw-r@#hF2cw-RJR#C zyk!T^(vlEd`v2v%Gs3ef?Ce!M`e-3!qsEYU?c2us68UlzMf+c?^CVN*x-p_35t*AW zCC+syHMvf{%DM^d@j6mxYrMXL&;o=PF?)*%-~SKS!JPytv+g-R-_$;o&@ATQGmx|R zV1e^aJO?!WR`W`NJPN~4t2=43q|~g`kCr=*rO>C1|7U}cL>2)vl3{C}8%RD9xW=@3 zB;}4b1m?FZhDWqf+5)ekASoC}r6ZP;&mdRGMW*pVWUlGpYc)&U#ewFwd29|~V!qX( z<}*lh^?E$S-TSX`(U7l^e|Z51e`%3Ja+oCqiuuF+eg}NMnXp%(5dGhZa4<*%C={PA z)ck7ib)@;=@Sl$sJop)EJp?9~BcJjf%RPv!S9M_Tg8^{E(40#S0A3%+OMmt;9)}}* z{IC)}YRPmyK6(F{Z9)R(FJ8alK?DxlpRF|J4y{De8O7p}ZZT` zu~x6j?th-t4|)~w!35Cs_RSjKJ$4<5If#bFI=~=T4zI+6s8#U=oQ0G()EDfON#Ieh zSSzP;u8pRb>KE`C0>Y4lIi#ut|2#tWPa6+I%5TmUhbcF*e7k@4@2N1xfC$in_hSek zNKIh6y0P*F|KO6U_XU6MMZ|_l zhd=v&*!n&QKny5B!1nlK!#(m^alHQulNla6JS*spDvG5jgVz4-vlc_x<3j@e2O7a- zXwAJoJD-M6CFes?#Y|KIte|L+4kFwA*)PmadBW-VoJtzlY4DK3*duLypN&GXk~T(oweKUe#brjUq|D8|EcTzk8G~u4`_>)C12JT`utys?Oboc z`QJ14`ycWDzjypkB?kCi54rW(dLP%s_Sv0GKCkKflkopfwftY5cjfzBbbnX*`A@(1 zn_KAv>&>Dvq_+Bd?ywzvR8>Wl^!8}Sd=#qias34|W#u|`+^!ef)wAdS(E zNB-$QG2{G9!U#mN~PaPHQ-3BNKLTDJAw@=W$Q$!J&j>oNfL$TScC?EPqtme&3a zG%Tf$!p8K~{roBh0D}NoE@Dt3n(@z@_I2qzwywI>D$=6+NmGFTxX4ltm-Cu|NOL!H zA^ffT6msTrsZFnFYU_Q+l92eiwP$u?Ti*Ue*t#Ua5s3JP;Hn$sXg`8}0(x?~2ymks zfTh#;5_Kx9_GBXz%)-L;ftSLg8^)CSQy1G?0#`o_RP0e8fIxmBJLv)KK=Wn27u&7H=7$q%*qe;>2X&YPw5KJ|M4h@XyG z1&tCv^PBX}uuq78``Sn^>!`^2^VRgX&d1)IWr&Y68O+dqqBtl9a^Z(dq6VkxVBYl^fTGI$KASHX{K9ZidXC* zsITaX3-T6U;DN9FQmU=h#Ty;$pWY5TvHe6mBn~26QK%BT&gvtK?Z*c`@a=JbQCndwy#5fb}w9t2wz`4B1H8 z%7A%izov%3(04v5AXG8O{T&w?NVz2ci>r%e~C)FaEQ0Eu2bK5@#^>6%esHB|H0RGyw1J&; zcGKCuvD;1H&E%$uoGwg5`7&u8H;z|)h3UJ&x*KB-2~O6@P=JYwNzF?m?KPc4lCmkm=> zYo)1ccoUXaG-%i3ba3l_-S3i{&DCroD%oz>%dT{@)s}WP)rT}C@CpDLmBQufzrWj#itF)N zbKa{x-Xv!=iUH_hQZrpj6q2yJH=JOHJs5}SZ`Um?>-d|S@@(Jt#cH}=+Q?)p-7l)2 zyFrylvkgT$(u^PUi#Dmt7OdMoj6|;HqzPYTv`t*8As&@^$FJz)1IfZJ4#m|TPH`(_ z7aV6uh_HA+bQP6=YqkhrX{|V>lplc25<3V)Qq5hG zOQE+MaNWkGzU1GK8^k~4(+7MIz~-qr{xnO85~`1wD2A-=_q8@5PsJp!Szy|gcHEm> z4yeXe0pcy9EWH8D!Fbrvsa9mWiZ=20)T|szs*SOn&hm6#Bf6=$7`f=_3+g3JnY3!Z zqbtkBqlBHw9t()t0JDD$qh6&l;gcOC!E(Yl?rtMrTn+7R#e@7bZNT`(Oo}}5M_$Wj zJ*5qP7dydIy=`Sc4!MfcYB*uN*9cXH&6~FKb!d#oFIXo9cWh^Ez(CtK4#RB>ZzY#{ zgs!A48_z~IpFILL{l^89aq6xg40eLl?`trz$EN+FC9>A@nD8)o&uL6kBqZNr=C!OK zhmGB->$ic%3D!-_;n*)Du_tDC1{4t2q}r^P$;0p^ITu^C1^iLpK={tSmE+f6eCY~* zywdtIJ;PF>N}$6Gusn^o&}QBB_Q14L@TUQX?pH0M@7qejPi+!wgkrg-%^na%Zyk~= zgLXc$Z3-V&|KdW`5W9;bxp0K-3f4zfwT$c79Wmb&Z|;G!)>acpF3r<@I(SBsShd?p zwo!flka!}BBrV6hbPQnZVwndND5S3WHpZ@+0|~cZ>B%noYBbjx{O_L+vJAhc`rgm7 zN3rgo=*5WQm_2`TsCN$LwVfXg9+JNk&?D^w;ol6ahk)u+H8P5U6d!EC?QGL)|5sK-AQ}<2PKkKEP2VEs3tJdW_TKZM9Ub7MFgM!6{_@WE zWv#??gvwGh%w+9IHR6*lnC-IMQ1h`xj%-w;Z@D zmRQ{-4kd)fs{<7o`PtGhgH`LZo+OaK}-jToYH z1%E+Qu~Vg7XoFZH#L~kxB*5eq)Ws4s#JF6yu+&(%wpB_`l!0j@*dx(BNmD8`PrT42 zZi_}~?y;S-AVBN85P)~}I0EfB;OWtgY!wo~kLVVr^iAcGGu zUNoi178o`z#V)9-nB%qMQ?9Dn%%DG4>=1{K{j8*hB<#+^sgq@(?5jheV+W@#XK#JEZV*i>#%09O2cMlxe;@9gfuglB1$e;qmPHi{mp$@ zREiDWGYs1rWcawM&b?!jb{5t>iILK@Fy^p)2+yTDheCpLgRpFFHJUBN<+SZqTRuq~ ztVoz!$yg6;_ix~iIA}^^?4anx#UA08B%-&Hk#d^2o9azDgvQ;%>7`0^Hs)RVX>@7p zl<>I-no%{Fup7@>y`w+yb}?~ujI>2$a7Q1#pxqeS9*Ys)#75fk;e-eL>LI0_QbU9f zA9X!1#}-!rh8O@Sy&IHDiF5b&cgH!8P&6Dq<(2*W;E>Jt`BjAhP1Ej=C+;^*y1Oy| zU&dFKv`HVy{%+-875~-M^$+BQy#V^QV?aMZzx9WM@_V%dxe*k7r(GgQ7pEbGn5Wmf*v{ce7gvzx9y(PU_T zmI(-lw9B+hL|{C8wxlyw#*7TcejK=vFl7Ai3;)vho6}8=&V%NEUrUBZE8F4tTao*~ z+pGRy5D78>rS{`LJGj%uskmQ@)bd5{D@i;d$Lbcs%3ytb4pQ>}Api0A`Jpcj!vOvn zAJjOa`kqO<3*@@(6_ffy2TT5`;L%7YZkv|Op4l89#uxaiHtSpCJM@fLB_)^aMiUZo z2yc!wehGmlb&8_}NpwSA1OKdn10<26^wq87X~ zhae=4s9|4Y0`+sF0aP!-i9qq4vT5IFxj~V{7-aqgziYk!@ehMQiWAxr=~++zolbfy z8SetG)udIL5Y+iINPxLD3=tjwpKcf1kQbap>K!ufZdXh5g@X>B%b&)t~6{*Hj$6(IlL8(qgj z+4)8iiq7Y2Da$l4!wdmY_V@$^#d*K}jVC+oj27`hu z72e}twct3CL0T8INt-2lq)8A%qiusjoJKs6N0SlI{q~MTnf4CS8{(*vjhc z*&6(mNR-srX*n>+eB8K|Y~RE|_UaPY!}z`U!`MOfvOkM?@%ir&HTZ{WhSliOQ*%Xi z0ZU(~V0LMPAdor3g?LAhxRcp7pd2A|R|^i-DU-#|1{-Ph#gCs!tOpYc0&$d=q(Y9>= z^I^o%m|RzYo=Nr>pLfyyU!{XF`~>=KYF!O3J+6NFqvSMwH&N)O9?BKI`rOYy<@`(- zpE`b9q_~E9M=7aGtbj(F*wCnaTfbV=T!@F$PIpZYKY1(oALOwY`(#yVJP1#I%4r2@ zuAg&bzq@y;xVJ^^xx(H(@xRF0&p!VWV7h8#TJ?MX*ZY@Ve-uA?{pLFazvIcIo`JPJ z!(Bf|b-A84w%={1^q-A6#UA*CU_NOa1Kbf)2tY)@YZvPlOQ-!`>5nwnX2IWIXaopB z3_N_BIl#xh70|i7yusbnrhiXbi2}_+Cg&x%xMy|6uMCEsXq5&pMBF4QxB*XMcnI6a1)T0`qFpLfU* zJTKx-&-`FLSv?_vP7dUNfI^3 zdiYTo1^9TRcv%7pFxvWx`oC3S;2j7cjQihCbUgTQepdD&3yvHKr=E}q;DjjSjk($k zc0vD+uz#~ba`IRFE$2x&>-7KGA9HW%c|5OYGvL)VIG9WqNP=^uPDf z|JSVk-S_%>&8Edq@?wahY(L(5Zhy#sC;aXHzn0qk-`oD*^7+5{{lBmHpTVD^57o)k z{&t_-eE&IY9qy;(|1a3V{25ymGXPW{i6wXNih3y&R50gmciDIj%QwIFmmJ1F@7gH) z*C*XLu<0gOk+(0~d%brD>r8rF4Y36(*0&f20<5bb6g6;n9{LfeE zT;D)TAV5Svj8})+3aOUF2YGpFhfNF?GyK#N3z*;in$Uu?d*;5>ReRi%Bl>x582r5x57 zUpJT1YdH8bwV0Y0V<1}r-v*!_@G-cxcER1g@;YcchcUOi=6r9S4@=he{lI^qec#we z>D!1>Q^f;m4a{dy07QvP@H{!PRGqtc}e!Q^=c4}?&bRG^pO{wDEhj+o<8 z1bmdg$Y9s{H=4k8J=t@kGyZdDuk#}^u%&(<6xnG1JWkkMA8?H7h)W+~kEfxj(`x@8 zqGu?c>)V&n-PrgvWXCg_iIpua2V*qyq6o1CdV#BUskejVev}bg-rmsSi_{m*$G5-5 zu&Uq|cKGpDPwSreJ4=kh?iyQ#RC_YxRGvy3SaV4J+6%n%^_#kY<&Ku0VaYkhNlNRv z6Y`h`?*H6>BCzso-uRP(rV1~6WDnHR-n&2fQfa;h1Pi)F7C!d9ef-8mDre(Qyc3Xc zWh#P-SYCf7G!5kk{N#l(3p|FDix=~Bct6AzO#N`ZzZ~@nh3q|~cC=g{bZmvl=tQcT!-SHJDJur^4qG(5V8l=)nTC_k(tA%#2{vH`hw%xA z!BlH*J7cuFUZ*xKiQ%LC?-betaV1r)`ynYG2`Q6X7WDbmJj&#o4miwWX6 zD5}yykq+s1xoFTqu4>TQ4>^OKR|+fu%g6F2*nvJW%vqDIrYq-zF5o>e$uIrAJ(=_} zk6!=g`?E%jHt_qE-JRQ)3|0A#Q{>n_KUxdVI9?O)&PQdbWRGm<-2SU_d%;NcbAr$dswViTuCW}Pz{XX8^_o|p zR0#{_uOc{YwPY_kw}m#6T%Wl1*(gkDKMj7HevxfqjgF}8tl7B8H%=proJ?~#=Y8Bc zb@~`N1U@qUN_RjlnSkR-Wgr3qqX~7(Exr+a#%KveN*c(}^gu??;Q>!+g zJoX%CCVby?0FwAJUkBvBbvaAP^(O(j{*8HTY z28;(X;c(5WK(Jrf#Uq7@n0CfMzEftsa`ty~sDcaTVMq9V9MbZ;Grv*G#;-BvcOM?S z%PP&g0_L?CO>00liAdW=MLY3M3FX&$JUG*HblM9XOmo7^C(gs+p2kCzg-%Q5t9z>a z;?v+eH${(qj+cX7L`=@NvYtXz*ey+YY*&qIyLj-uRi#SSFAG!Nx23x(Yg`RoTGKj> z{VrYlpqDOs?}Q}vPZp*W`0rlTaAP5hVc zdaF6|=_Yro>It&xP^n!wdba#zLAiZ%COp%A*(C`& z+@{8E^52GrdUM7MF+@+n@?KVE^YrJ>JZGC~cUwG~g1?vg$@b{U7VDd1li0IYM{7mq zt?nCj{?;W3E_H_VQZZE``6C+$3r8I~1+#^>t~A45pQmfqw1Q&_%XUW9A==*~5CH^m zqyb~4Cn8$l{bZ?XrD|aCFlI9?IYB6hfUEWBa(3k*ptt2*h2FG4L4)TZ49EANYwi$4 zK#)3D+5N~&lUdFrpe#)*sp-8T0DGzb!}K|#@!|$taJQG-yM-2-Y0|1zRVK3ax81@u zN;=Onu~n#Bsyxc-v`l&l7J$Kt$ZOF`qZcfG0v!6KXAd)G&DCxycfM0(mdc1>sHHGx z=aq?T=v{;ug4ua-D2?4;)2C94V&VI8HW4na_)a^C;%d3z1Jt#C=ilFoHX;u}>~6Gz zRv@R|S3rxin zLJ;XI{E~tGJ{?$;Q(IjI0y`h5ePyRuRdADN<-;}qndN-y(FWaqlw9*OI_vEJ{ zfu#k#`Il?PH6-mnt^4o&->9veG!Up&-R~S(O z3TIyEfU*$b9A#`r)t)~I6t!Umnfy?}FazT`5DC4w|Lo4dA9)U>hdA#4JU}5F5&SfI z)Y7z2=l#ZkgH_@DRf+wj-btKDxmsZ{4Z4T*SNdtlaif>6bQ9!TMl!zN>TPiPh#QU4 zjqp4ny-)Fjf-_bymwIfL1P|z+SLR#-QM^+;h{@;mwqIN0wz+TF`zF+i z9BYUd)0t4_m4_JYR#ZQ4{n%#>u-m&v9UG4IEkORa;9renGTYqRHv?)~Y$rYP9&(GK zC$DF`ed27KvY)?!g(CLSRdJ;6nN=J6Yb${c85&v6c!pst$ zJ#UXbsqRzn!7(4-*bkRcSQrQ3O>5 zQ=HA?KTPif1~Gp$KK0k?-&2y zQ{4D}+xEWy;(gbYj)M8w+u->=mo5Z#>LM5HvjYcKL6+R_PuTg*y8v<*T3_B*ZqB_Ptalf{io6XpB<1HfB^t2;D7*v zCY*83b?pP~>x4F&xFrXSevbIIQS zf5+#4@2Tznm-&5fAL)CK)%gDJw)|fE^}An3{~f0zNb1wxp%$HTK@e&Tti}otqW4y? zs+HdRpYp}~S9|S_ZXEnxiyxe^1QvvA?|d1gXt-5F$+O(g!^`}ii|_m#0Ac_?K)}BV zo8&!@l+>4%n}$*kwEU^o@TF_WktFy?B4AFGfFzE4W;yxn22G5OOvrpMAEGmk-lm^P zG9fwOtI1E(q=V#sMIVOLdeVV_bc`Slia$7Qq-?oYJVbrCLdax@KDLM0acK(EWgk`W zLY!@C@cxd6=ISHwose2bc_Gi()n^OXmSjYa_Mp@V|#g~OU!z?aY zXxh^?u5Y{W2LP8FC~?Zc>?TL}PJuSz zZ#O~GI!{+GW{Md7ODisR@d|-Hj=B%_?j}b}m#z;J(U-~)N%eY<)C-suPVaXozxfBH z^DYgrgjk+G7fg(~J+FXK{9MPG42+l5Q@;F1zniteYdwI$5ous5o1#bHub&Y-8dt;W za5V6isee=`tYNhSFR2`sr;YFI)<77pJl5e@(uNjqUplG3vtJ+O%?$b@Q}Wrl9S$+m zV%Yu$ZO2DbkzcpGJWcvB_Z2Z{mQ47o?>Uz)I(e#mCJ!Py3jbfjR4h4sedwm4Pd#P( z=1D-BA(`55ntPOgj($3xDBc1r4rq3#=i7Nl*u+BvkMfV2Mw)5+j<`v1&TGu_!;_gk zVNiq|Ufb#I#%Zi%wQ8)p0|m6-n=jZ-3wU@x`|kyRjb{QIxO$Ggka`@fdTIZls9PTe z^!#h<(?!E4K|-=eHF(m)XFc!k*>V-GBCwgPaAo|wiI5{+eYf1m=NpHk^~09{$}EXA zRsG!q0&9^`vzl-d>(+Fi*=pDG`JywIK z4iPj%M`(<5iEF{D8grM6?>FiFmgkuHe;3>=on%ey+($VZ-jW7GL*&mCy04s!#3WGeQ<%olJQYTJ3xR?25(4>U*A|`j zIdPt^u48>|*<-zr3i{-V&SSr2c==X9vF2%)C2@RYTTkN|Gg~ z6cVHaU*C`EiRtVzz)b~{=ux0;*j<8fhaJK0)nWr}BC!Ks9>kdB)A7pnz=}Ra6lZ=t)nH z)PE_3%^zXb{QoQQ~dI?ZN+V-|B z&GxqTu3xgowiC@Y1Qvv2QB?GaU#{3y8fdb0YY`2v^!l9M?lLeV$e_E>SGpSB);{UH zg{zEhvcVdDdwJ%cPf#x^2*_ufjJAiWinctfA7$RYf6Z%XT87Oo7^}r)pFisY*g;DG zZI5b3kl-RXY$w)B4_3;1L_xq03+i{PSFFcPMKW3ZaAmezEL5lZXl&sCg!|7!5j?}e z0e(y}r0C#WAdp|aw@c`kUv`J=w$kF_IU6y}`6|&rW}EPtp33_C#@&Cn{w7-se9cX} zbYY{Yi;YUj!0`%Gyfa{@RZ=WLH*0pFy&gQJHku%4M)()=$#~MhbL&-{G`p zy$yt%G(z@QJ^?Q5>JnE51B2aUD15Jc$B(?H^`V@gLL-l< zBRBxRrT?sOzA-tL7_gx8gBLrLuHD8m7t_{mzzLvq)fh(zdDd53Cn@i2#Lhu-k; z#<9oFZ8FEBTiy0ExPg_9fv}Iim>C1?iH1O0J?7PmCkwT>aW}ZsVV|RQVCJX)n3iBf zMs^QAS$?go^3;fWgmH_j@Y`{-o7h#&Q=yeuZw&dQ^oxG(yoA$4aeGa-%>KlAHd}v& zO9SqHekKAZoB5jMHyrKT89R?UKptsWjkY1GKXo+@jm2lRUkNY2D?i-dUSX@#we%3` zdd4450Wr*OCA%cgO6wXdmD{yii$bw<+HOy4%iz+cmvIXwQWky>v+C>_ZA3Qjy=!9Q zCYJtlO?4Zm;i1|kWp@y*v!471qH7D}60nhr3WpDu>)IRH7NHya>H~N56^H5h^$ezj z4dNBuj@yr^yXNhCs%SMSiu(LmUWa&}A;?Wyc1>lWT?WtHJb7B=t83;Z@HTB^AZ=Q|%OrfvP#||s7u_JUrKRhR{5hNX9I8H&ylV9w!POinRE_s=FBh2avIli zy6uIo42G&Y{&sXJxa;A^O{+n_LcG#x-I5%1-Jok}3d~Jg#%q}5%G4&^4l73mE0$>N zIvy5<+~$&Tc+!nawYqcZU1s_fpShUGVzoxKH%MnX-lkTI@}2XvYkuqALx`BT+FKYY zD9dbsYZa~AT-#dxl;Smkqvs*Lc0E@^t;@fkahm07k@ty(>Y0^IU*33IjC^*(b=dAm-1 z*mTpD>EW+*`H(cJ&Y*QKSb~+*x~7h;H5+-gc4^C{8%t}sJAH-&3T<8DTVaOPe!fv& zP3Ac8!^)XSl-@WHtvgk}OdAMu4z(~L)jZZo3}*I@iO6%>=ynq1G;$?roNctOio8e%w zZ5UPr^Y1;I3eqOsu0y2g@olTL4cl|HL#%mpuDey`xji2(g9};DAEuekZqjXDBU!wS z3vN?Nuq{W%6bi-^Nv4qJ(CUcrfPBlEeZ4hVI`zoNq0(*Zb^S9zEuC84j0h9!a()97HP68^Py1K#SWFA^DnaQC4RmM>0}iQKo;1*lUCo`wnE(f zrO9uC>RwTNjN2FbL~eSan|!eVL91JinvX&rV%qLeyLW*Im# zy~kI5WAr%E!QLlLp(`sQA7i_eb&2MX@jN_B1?_k)>F0AieA}}a&}VI-rfZ-(et#|w zsega>$*o(nii2Q|ISBp%{kM1O(?1Lc-xv5VIu1Y3KtMUV3s`9@i2GZ*TTzSFOg=^! z_xp=qLeotPRPz6uEciL!i*;R*0vnc6xpF?GgGzqtdlroEuP+r95x+k$YYK?sf&b5c zS2=mP;z|#KA<-QVec$Of8hl|7k6BhhNQZaM8&4tT`Ek9E&xwfp& z{}o;;2o1^;!SMLf;F*(e<>%bD_~a&7{X^t%W6$|igrYh2x6eMD$dlj{Ps{VmpqCUbI0s3v}@~n3rqX8_DAPB#7IYQpo-V!5aqbVQ14~{ltPgMQpZ$NVr;+@> z7uip2AbKB}#q*Gygb-2!0H5GTW7G4x9+=!2oBvsl)%^kg>JRDnHT~b@@*R7Ahr1Kw zJNMuI``#h{zvzE|fBG%|d%OO3{zvzoLr?Gff3x%84AwWlO~n5%+9#j+Q)_u}t>Syc z0RLa{C-u<2q7YZXc;Vj$5LvcUmV9@@a8+}U>l#Qv{<07_51I@<*}mevb+0dNvcB8q zL<@*`a`TM#ZtU>A7hTTQv|M4{{^KzxytOeWz9^pOs>dN`qG>-LF7(&hMK=1GZbu?b z!nRUavu#ugZ64Qs@c#jqrwLs&Lo<%Q#q|3p;3MPlpDOrY^#9r^{ ztMdL($GQzWpL(B~m{ljJA@eRG{rW?FL_vKq7A0tSn)&2u*Wn4z#Emk5boSL+>IAgq zx2^p7hM(MiuUli)yIyty4yQ&gdB;7*l4YF@UmA;eJ$^;&BD{eZlEpC#GF1e(L$Krz<*#xBN<3f{FmZjgy}F}=-Va%-63%dQ;AA{VX-+}Mm{dB2qwy(d_{#6!)h z{o_GJ*NaJ3TR^&S*T~G5r9st6F2q08ytT6($!P*uh!-3O3sGl*YM)>%g!o(2WFS)U zz`&M)8ckyec?6{{+9x>6g<}v%lcApa4T4|p$;zBIXnAq`@+!e;nL?vdOSy?ZRsseI zY&nz_-l<0$gG`mo!dUU5K5O#fh6$ib`a}tsSPQ#ryR)GdR))x4WB(A0crP!XAL(G1 zo_RUUlvk>(l%QBzu1&M47@*MbYGkJh9Qy7ACFP8HaJQ+(^k9}dMX-&kVtJhKfkE$J z)(JxbKH2>35agIb=_%0u0&NqrK)tzc^F$WXs?mBvh=Xo{*#QFUiUho&*r6fUxyzhSA5R;mH~x^e zElV}Z{M>LF7674f^w)6to4#qMi2xiSUl%GYPHqVvpuC+To z+F1D}Pt}>s(%5vu+VNgCtUgV{2YkN?Y?%ySW9I=EK8!?p=XQ$ct0ik`Av>?@V9anvy)!uyEJ}YGrudz6tZYOmv z@4CcodFs6)mYTA8lOFMkVfAIz4AvO-2)=I+{!%hRyh*^E*5(6OvvHM?<- zm7#uCqfK^(A6uv3V{3Go^t7UWgp{gL+$2}sB;ql1a^23VV`cAgGWI)dCXRNKS^HVI zz^JcR#grDR5osWhPZa$Krv(+LXkwA1W;Ws3-n8hb+PiA!D7>lTDKGZ*u4 zWYyuuxhs=A`18%qtT2LM+hbly##SFRhAcop1UW_;BpE}q6jUi}^8lWFGuw&_5E>Ig zmDPXl5}5Ufa!-_dqTe&JujpX3TidI8vjC5oX)=QxL5x6wVJ0!8OM-m?AR3=M#%tV@ zY3A98W=HlnTPJ3*HFlpV(aujBvL0`FEt_V-6*=R&)@m(HIW`l-8k^QIVgq5u*ne&TG?6~S#`DCV*MZgnjP*XLX1Cy<6{@`V+;99AFQC=toMy{U8~EVHdkvd zNi~IoAnFv0z(E>F5+SR7N@dK0A{2;ld@spt!NKp~Su96`Z)^}hD+rWa1z@kEoN56?c(x!}i$VBf@lyy0;+9$A!~a?12GS+;W5*k4vT zKgtF;3y6ZDFoG?jm?QB-@{nEk#o8kYg4u{;T^Y41NOAuo{OUjJV)wCVqtTHvzj+iL z9;^4|KnHzKU;2ypwp9HB1PI~CkAxt9TYjKJCBxyeB}7P)A}9qR6!iZMy1#Yi9~cZG z5z7hNq#@qmues;Umy4#&WFlc2raO|Bi{mUhkXN1`lmEHOY* zMCpT40A2gSJ_00j<9^oG!ya7W4F{BOgt!|Xf-n~lIc6Vq_K0uC)akn1*0Tw@L*Tws zFDlja8r`|~>*@?l>!D;C;o2fTa+jRyiz^Pf(h zxvgVe+f|C3>%DYRxBMACq+dqz9nyKR&x*J~hb(-Gde?Q+h=4T5%!dG@P@n-`0?fyPaX#_r%7Hv>l1 ztk$(HZraqQOVcKcMbDc}!-1g8YO?;Ets}+LPHi|_eKoYW@T_FLG>N1|KX`a)T!hpm z21-zA+S9e)XG+qw-!;cgUUbxUC zl@4?0Xj@X(Fzs48t+cHpRoSKb`OqQ4ev8j0)!}FLWwBFV%7tYi&$^Ddf#uNIaPnE15i+M)dUq4RA6>hA4h%l1;jiqlV0%Ri3WZHbHSudB~Kghf^NFB0EBiQf8O+2_wM zsptQD81z?#0AZJb(0Dn9%7Vy{Jk`|@$L;*?4i^P=$BADs{7CnjKO>#kZnIDF&e&Ua zg}rN$V`{{+{iu3uX;>UY__$&D3?1WvD$P=>N@KO^E$VF=5v96r+c;BMC6v9EwAm%X zC_jwB63@T1q%)+ZpI*gF=MI?ugsC~+^F^9dXfa9w5J?9i2oVE$Mu`k^2)R&*i+(mn zq}mZGj(5)G=WY z{OM8YIjL5?^tPH1f{F?wjHxM1mVzy`WtX(v=UVE{kWm*&A}Xs(n+Zywra%8lzPPny zYbBjFCXLrLvmzC0R2I;P(w}N%Sc|7;x@td@-Igt0xqF0sY@X>Ba!tXn1laI~Bq{Iw#ej)ax*nuOS>$bO~m`d^t5 z|F;MqbA#7752{srwr^~ZK9KT`qoUZEiPbBHQ6fok55X|HIC8(<(^0J3cr{9g<)MLs z)jp}ZrV8>u?9f=L78G%t0=)2=1*1Q6a(Y*F647k2VqX<&P5IK-oW%OVR6+z zAL}9*+E+iOgxx@Za{IOzct-gQ6q6EJY;}EWJi0yUbwBu31p)%wS8t@zD6W3}Zx!6X|B1evX_ zlaJ!!?02)l_{w^`Vwr4XeOUDMoq>KDfM^4)L;D{s^)c{uaM%=(zYE*F5!e-KsK7xp zPKlH95qyj8yTkxXGfi0AeFotTU$x4o;B2LI7N19v{pZ2QNOhIkd(XP;|7okJg`Ii} zo1?hl@;y1=Pi~@39mNukx* zyFTXs@NTm`Sj3b6bnR;e4aWj}PNn^?H3>QK%~ z_7)m*kx35(=TA@}#uEVJUwKXRc+>OjB@!Tl_@brBQ4UXQZpaHG5|tM%ib^^(O?^MOL+71 zSZqVj;Z=v%Xr=SEgV|wa8)M{%UK;|-B{K-^D}$!8AE;4HZ^PZYuZsvF2s!@jeEQ>q zP-}9=m1(@X#soy0wL_|=#~;^RjMGmU3B!S(oF&`hw@-Z_o~`B%FJ4XJ;Uje;q9`6{ z;1>O~*#DE^T?GJq(GJLSXcLDhrY4ny^-@4I*c*om%q&fl*k=ETmA1Sp;O7& z*kKcT?CfyX_!vCYQNQ$O(T#A~PloK@!bGW?y6+1|)oOkoNY7;n@cOjg3JXfsWDHr9 z)CIA}o#A7FHV-5}I+D@RjWZ~j8nyejw5*#DF_Z|*c8o~JFD-M>`t@T@*JHEXvwL0E zZK4zj;j9KlDTZ*j z2f-8EOLz;y`c)7wd2&7;f8R0)ZU|x!2uTjZRuQCW5L8u6J=KplbnjABeEX}qdDYo| zEYxWs_=SN45*;EzN6NGt{;9#YFV^An@%x-lLE*>eC)N3%p{mRD*x%ion%f`Db)Vyl zhX0xJbG~jl_giOzDO}S8_1;FsgZZcHS|;)2+C1;c`?$C6bkmQC0aZF)YFqxH#d>*w zwgwmooRKJH!tV#CfWR>(66fGv9AZr{DvyZ8q-$yy8p?Q&Z+u7gOay;rDflbaE(h~C zkOYAui2U@1sR;h&4rbHSbk}=41Vy1=TdUpNT!^ZkiONkgbe3x0_X*{vEn-$&@EZ%L zYNC$CiLql!SH_d^ww#}HcGWOeEDy=HzR|}|#npEftJ6-z9T(Pr4bis#SLHNrkh|kD ztieC2s-O0nHpjLtjZ;RE@>k)sf0x!auyEm{VG{=P9{gL+A>?PqZ&dAH@k=E=>RkHoh@bRnL|9{DW?jfu+5BmLI{rkwS z$MLnlN89?I%i|OBxS#TG(dPfJ5x&spD3G6{DcN$M)p1uv*#|^iB7(s*7|4s1-cK#=p{UijcyZoTLd3@znnl}Ur--T0{W#sr^p7pg$B0bnW_D$ z=15<8w!FW#i58aU?{5z;gZxao1}H4{f$2V6U?~j z9lDw`?=pt(X_W4E&)nA%Gk$fk-p$nIh=HKwj-U zlT>;o7AI-Ek#lduc8}yL;*yja+(CZ?2=1I4P|)*0&O2J{;RQ8c?ZGldA~VZJ;zMp5 zQ0LRJr+HL%V2c$TRWz!}6J_g9);4(}UT2H=urHk$XJ(1nLi8DyfrX__ZJfB_&*9p* zRuYqV(%N%#Jm|-WYnT@FK!U9nIAsUCy+6skT7hHBG`7nw3dqTO8FB`VQJMw_S_IuL z`jB9GL*YkcR%E;>ZS~%+^X-T!W21Cfg?xuW1|Rn2O*%YeTmBS4%1mR@a>{3oRN<|C z4&dER&jk+YUDQY;QBG-RvRV+{kRoq#VO3K#I&lEm_cZ8gFIzMf^2UwYY-Y^gqMX&& z(rUI@;!DlwBjdQ9%&PlSYu!)93hG>{BswzLZbJ%bwl53}ZB+!6_kUM5Ah9o#5ryjs zyz}|~kE`n)P!~_qn$bUHjRbzz*;Ejp)?!P7t8+SWxp3I0N}5OxrwBDWIOj3d#y*Ho z3dNluFf2q9zkK$@0SJL%E#O7S@U%p~PU`&{qj#Y<(QDntUOQbOphJ{eD+VG%-N zHr`C45%9ff@z9H?mYO>R_rAWZWirLt)mOReVjl^1#4V0(X0o-))e&yEFI4Xv3yhe9 zCc(lAm?F*qX9_VRcAug0uC;bI1(Bn|BV=CV_Wq~KrojeF&4R%a_74#m3Hk|unwnm9 zMeII4i6HJ{!T3zKh!!6%?;J_qr3Bfkk+2jU3LTbMCFy{II1mn9A)kVHO5+Axr%R>! zzC|S77IL`TnS)k<_#%i7yO}C`N=R@u*P|^)+OQVev}&uBHtDSR8tacq1v4DA@)(A} zb?*Bbz><@2fkVn^GOFhB> zqaBkcdexmWBm+OJw^mQ3oeVi>R*r=Jr0x{}yI`x>(%7-;yvml|(XJ3j18(Wp!6r<6 zQZRgsP4)_y+gt6}4=nB-DFeSSNa4FpsD2ytL?zFaaFM|52(#ObOws%dcbjf&lbjlT zC#@DKD*^>cJ%yzlA4w`>pKC9s7-+<}nr}J4XDi_lnGhXbAaT;0m+rVS3uqEhj>rBA zDCJ)H>qv8mD79lfoL{u`JMhnn`eY1c$2x()gQaN@}^ zN|Xno9VAnNCV+zLD+|TdCjlQ0-&%=8Xds(judVYp7e1XqF2le-jyi=7?1Oe zI-7S+1P@Bna@|82mH|I>UOkJdJnUG4tZgZ!OG z^A?!;Z^7QO&-A-^>jzUg{=oVx{deB@%8%T_Sf=3YsRW)neR0b}qu0Onn5FOTU;;jw zhf(SwXov^kFHiAgBVQ3ECL)AbWB3EIDkD%J74r<(K`KLl?<*PASLc-PL~sNQD#Bh5 zuX_uS{B)tM{pMh+2Az@xKdpFB?Wh~bzM*4Cv!2|&lCh+%@0|kcdPCrYTwvGs6y}u| z&4}{`$mdT#DOPc<_4gG3z0}ZxUc8XNFVr`~b{BwL95fAr6j2Dm*<#g9`Mf9%ka+$f-B zv+yMQK0{Oo;Px)uIB1Gm<8R8jY~E$6BbQpcI}4KjK!o?a*+YoEq4usvEBXYJ5R2_- zD$+|4!aOfohh)Y=P1nOLQSX2hLmYjFjQsL!gam07o!Xf5gd?S^;r{QSSvHXl;7NcPA{D7?{O=oJm>zg+2#ojYcDoXwkS!3Ziyzg3X*dk<|G8;G@psQ zV3uCH*RxL#mu-7#+XrWu8nKT?t_uG@%0G{+{cSbQ9tJ_=wjT3023A{*t2kSX8hQPX zt#yyA*3?k@(vRUw0q*Qv*B?KofO1c~@?1$qB!X_QBZt*Do^4MqUyf%M*Z$p!Z_;0o z@buB(?f;hTFDlxOS613AoQ{sZAwZx09vf{kB$5d_>~3RT!KgH^&Xh!2!TQr5NiR+k zMNxl-1WZTduNSO+?3_&6z2|FnHZd+7(DeIwneIaW^XEVGMt6cp_=LagC*;dbv@5?7 z+4TkKs&F@)Jd4{1TfI1t5ca=j>SVk8uQL`LQTpZr4qFng=Y(U3ayT4Do=E#vg<11h z;Vf}bXWRM>)_Q!Nr}7P7!Y(&+D-T5_0SbR#_y5^;{-4@4+J4Qi*!roTvqy31DF4{i z5AyE*(ma&@_P_r0LePMPe4VjT<_GfSplo-a#N>OAt?T*U7wdil!0EhuYv%EB_Uk8D z3+15%5CRC$!R7q_$L)6cRu`4+m`wgc`1#-d_TN-*DOeU?NB&y{GB?D1V$k;wO@rKON8i zxk^`b9l9!44AC)x`hGw4{;|JzN?*yDAGy@^a`h7>Ubuh^dqy`yd+o>yzbU3-!PZQM z_zGjtE^agZ_rg&7ydQ1v8HhqMh2OnB7pI!B6{g4E_m`)=B9vkWjggh}5qd+ZVECIh z!H2;}!W$R`!l|OLK9egimI_!&BWeETn#Wp*4}2g%()N=^MTRt`XNB79z4TTX$M)(~ zU>`Xi@&!1Q|03N8krI$M`!brvL>JXOXT|XD>0Mi1@(aFG;d#rzx{i6C5NeTH4PrJj zk$ufCpSd$EIJ&Z$gU?0ep$HnWnL>4leRTpp9V!I+w^rdymspGQBO)mhLIaXExnVv? zO3qP$R%(^X>TpD1B?6oUCk3(QHN^W{@7RK!h_wMO)l*DU_^U;Ti=27{)ryRAQXL2dKk#u)WQFq=-8Ew6Mo7qr>^)I*&)XV^iIqADGL%@ z{++8&`x%#8zbMWRs;QEaZ!DFPu9zh2yPtwZLlBc!*l>dq82lUvgTGR%g$lssA%LWQ z{c@sfU#C6FX2@HAvSSi=^#KmH@lCgU_kPV%by+eGis`? zhf10ji#laPUC+`%8vXcDqSM=Ry8778?rm@1Vj!0qZ2!FpnL4?lN9;(6tw4sc>^*k0 zc|r$gFBb#L`=-J}$y5Gs_nc6SAK2!Z+q+4GmbI0+hd;dv`*sGPdfyvWViQqoj??2j zpzSa^!}CxiQO$H%OIMd;e|c}yMVdBxKDd_Nr}&BDw<@-WIht6=%LnAvzJr1*ClG@7 zNXq`jbR=0EIgopnVoc^NT@YtsT_S%lV9al`HCmPfUqZv(HY-?`0WMOnRIHx}N+WxD zT}tF2$Q8|izga4?J21AXQCAx3Y7U!#?X$r(8w(?U`i}#Kj$IVo%Nx!%v8RJ7wJ6w)R#_ z#401+lp(Lk)wpXP)six;qf(2|QP|F@IKyE>EDe}QQ_7V+5hI4sl;xucZJQ6oC;>Ng zcC)-*es*?{xS$AbG7;R3#>KF36Z^l;-t!--f<(CGPVFF@7Y7ORT_-7pqmWs|KXunE z!zMDWSu&gG=FjHrJ9yy7zGK!1wt0Dd+aOp0Ms%gNc#-t5zr$Tjn8Cnz)@dakYn76 zk!*awZU%hS0esblIT z>%B}b>%Hf)T1o%JZcD(;tX7wvnNK<>EZ)9Z?3<#1Lg(W`Qc}dS=XkPj=8qL5rsQ5| zLLY;hy&28$jcucKAk7wBvjMx!oWa#aemJs83Hbiz4j{qxCyCqD6Jf?~sohqi&;{`q zxx1VE2M#3IR8@D`@9j1PX(w1Nx{)K!l5^P5*=4o;#+5_hP$Jm&NMVo7Hm?(2|5dy& z=#u}Yi0CKizk1cWy9PG)(-D~ZbDuJW+#Jdl3CO@Wznvc#(>=6=@lvDiLB`Nmd7M74iK~)v=-7GAggZ=GgQSv@|);~SD z|I3NK!7L|-Aa4KCTCpMDHXiy#@0McP{`y@1cBWhv=mR$Cf*w60OuZMr-P-j0B^|yQ z;c%lG#$K1w#_^9HEeF&7#lIKZca2?I)vYKk?L`+F+WQfaiGeFJ+;!g(A_EQ7f$U~z z;hkq(@*8<#VJOGVr_FSK~$-d)rlu z>uV-P)3_#1`d3kTlhRlc9Mw{dhVUa5+m4>~h1qWo62i9_{p|FLts(Wn3Ito8-pj3C z`E9Z)#-nCg;&+ThGJt-(Br}z+^MG~q-9h6@?~JiVnv{$5O{Y24^v1m!nW}>bl*qfY zQ_!{-npiUYw`OIevrUAD2odWc)i@j)@7q5G2SM&uc8#S(>PC?TYf58*<_Ykz>LD4F zNwUc4J5ynov}U_Dy)C(^RuQ>Xc8ygS9KCo^#CU6})NHlp_?K<0tb;6Dor+SO=x-$U zOY`3;vPuLQB`pE0XY+L8xQp%}v0G_=kvjpX$z{#A@Hif8NhwUlouBrmy~4S-PJ^K} zgdFnAnCN*Z#fW4wDP654a+hWf5W`9-KNNHbgHrxYvx@46??wYxskwF(1craQP?00st`uBHYL2NKh0_ z63Ip@UOsc;A~L|W2qp-O7?9|6?im?4_C^)ndmMCikg0{lLQ)JsfEF+Q>#K=_g+G%Z zs|@~CYomb8Pp#fBO)mhIynzu85*vSDeom-R{6vla-h2AF#rFJE}8*Bo(H%??Uu-vII^v2UYnd^+n3jAdwQxuJVKixqAdb~2GQ1lF%Mw(trkQ3D& zeTa?wZhvpvYwbS^=^8jRdYM@Nm68(cr}!vWBS)G#So z28`CO5)d2izoS#{V8N!_lM$`9dYkew5e_UIK9F2ZF;fQLiul_l?evQPVr zegJ*gTo%Kx$f*Z87(yyJy|U)(7Fwf)d*g|h+F!ksr>Bb7?g zeRwL&0i`GrEEk7I3jO_VF}vFOvDJU^486znuZ-~dOo`q|lbt{#=s(A6g!$;9=uHXk zyyQHqfvuzM6Kv3+ukkXJ4}g{NIxSYS^fa8EhoI;=Yw-6Mau~M7KfxB?yxI8fn`e`T zqOI+|PF(E2IYbd}&KM(pxCr5T;d$~5LYmo9mx9;ort0c|s*0$zDaPmRVQ6dOr@nei z<^7hcr0DLyDIlQJMm9C3|51I%%DNm!0$!t&yR}$%7`6*zLKK2D(g-^yRed;ry2nBY z|NcLY$a;?Pn0Zy3U0~W!VkP#40tp}Ev+KL}rmW)R75P}&H(U)OG=~Row9dNx%-a@K zMfr?TR*|JaT$j!^J{S1wF1Q-Uw72Z{wzkS@x;w2|49a8pDFZT0hfLT_-)yg;gytzMlBUtYBvPMP}qW{}4L*?5p(XK7?BI)&Z(z>SVUW`JZ|L(S1 zm_iCD{aHj6uKB*vd-j(e&~unmNNT@oT9=1CouZV8cJsh&EhaQEEm)~!5muAxzw2T= z+fyz~ugRC(RHaPW1);}~?-^}W=WdjL9EEUXTrUZ&R&C++t`NL{fbnE%4hDzY z`T8_2G6o+9{2Ckxp%G~aXi=ox$gW`tmnX9N7SnrPQEiVS++z40_6^rVi_LSM!)u4S z!K5Mwbbmg<0_j{rbK7BiBRJ=iA32(sHNkzZ>Qotn3G{uac-!BFZ}U~{P=OLZ*vJ1* z|E`)J_x{h=fB!y?34i`P4}J5$=AX;>zq9pz$bZWPV$0yZ2zTGZ<_3!weVCsw)cuL? z_`5t)|6lHX@5TLpr{Mih?(;v_mz)0|$N2C3b-+dYLI5R*7T2Z9`z(A}f8)^X{Xa|V z{XZ+|exI-NJ^$eEe*cZ~J~xN|zgKtoQt1A#fves7e?RK@wtnY3x%4aif8+YUhrZtb z_w?yPFVOk2yIm2(|1v%oE6VwQ$F1nk+<)KqJB%J{xj6q3XzhP*>%S^L(fYWlcALIz zL((DL2G&qxul6%(vtzz_ALpC@d+_S?r-xPepFm*_2z?@<>`d-C>RIG{*JHhD zO0otw*7~pf&)cNUP^^t+^~0JIB~1Oo{-o*#6SjZSGDY8D*G3-y8xA+h`Zm;`OCnMs z_%bNHGZb@vw5qaPkQ20#P*g!hrP#gApq5FKxcT|{OSjR%gv9%k>{<$T5-MiMptOso z*|y%~W#jCuU^lmH_1nDfi<6C{hWx=Wi=uZU_mB6PrZO4q$e}pX;!e8%VIC(h;j^aZ zuzx}Rx5oCLecJcZF!rB#F1mrZNHaqZ`DZxs(W&>~Rqf61X!o@9#s;tRaBU(%1oq_%N-b0nJUkl7w|377%+gE0kwz-Twy3fJU=M{%mZco`w{)FEO`UTlpD< ztWemvWVAQ_2lk24nO|)=R`BtwhFqGPb<-UijZBQcmEL5{%m3?#9bpbP2ka>Hs z;j+D?{kCp1w#6{+veh)qq7j@c{0OO+e#C z?A@)!00B3HqB=9>Vd&wKZ07azX}mMzY20OY?x`x*l`-*%z2rK8*e+1yMW6iPNO+n5 z=RKUcaYYu#EwMMfl7){$ovmq>_EcZr*T|`(=@&a`2I2hA&#n~Ys$P4vqzmQ2h!OI^ zt?QU*$3>c~SZd{b%K`*g5qMsC3-)tuCUMu>?P{@5j1BP-3qTg zb}NEOoE#+QFSN@W3|BpVG{85B?;Q`qfzhwlqbIxRiHj#1hV#$)r0Vw!HI=4@D`h_p zPk?#fGcTzvm{Y~UfUj-kt7-d)$*Wh9H#p$1Fb@N;U7`EZ0T^rpjUeQmYNElMvRH@}Af>Es#XYPSDY1o>6+fiy@8GSHR%6ygv05q{us^L6 zulpT>&(+z;>R#l)z*v8||3Mw_-IaMa)D86I%!9KI1;XSc$!|uj0ViGjX_F8=Lo2W3 zZX=prf17$~IDnf~N!=+~?%~$|M;%jGcejfoIA|Y%_B`*m!XFil(PgsWe&q^C=a^QP z2F_T1*6=8O+T2{jT?+geoi{H!^%%WQLI?*&&F5Y8ErB))D36A-?AcpA;qIr6Em}^y zZK>!v%*Suc^cmd;NYaVlNz^q5sgc!o&gR`+yh~xich;zh%gX6B_gbET?<^Zcj5FCWnRy)4?8BW&8xltZ$=^4`i46E0jOE~4oW@@UaBp36K%tvZW4^C6jI>1abw z-Z`Sbw5OfMnvz8<_F|LQIk^-m|Jc@IMQneE4l$bgd+^|q_$~u6CgE=Wyq_d?+z{re zYz8eT{Y9mX`!ufQ080QxK)SzGj3zvyvAA-_F@d*?)QU3;6j%3^=<->b^{WC6Tt_m_ z9;|;XRnY!l+Wq?bwP&GtI!ARHgm8?uoI z4#$=*U_yi!yZK61I1~H?Fly9)fXRiWgoF${-pYT)i*6mL`!8McHmN@WEIFAs*n9>?#^sR~4`0i-CGN{03HGkPu;qsuDYy<|u`fWF`7P;GU~NI1q=c<5x)a zhSm}26`Mn%UIHE~N80^73Q!8*wW=y%u zd&otAU>+mUpgdp^MO#WsW&_+ri~_iNvYP{B?N%5wmY8GF>S1XAXVmb&>23E9ameFy zH}sFQ|MmKuV_Ab_YuZ&6JuE-+)r_7Fqs&_Zhl%8&VO4S=5MG~E>@F_M%<~wB)4%9H zwTXS4M70)=S84BLTDkKcPx!9Ha9}BDHnOL}l9H4gBwJ6bY9b@x$cw8;qB!%_YNdP& z$ghJ6mAQL3P1XhH`!txO332vv>rDvA3Z-f(pm8+TzWRGP#`7Wqw5WdMk3!U> ztZ%cCmfHJXN_(V>jEImxA@=2osqnf~ljNG)Wk+ocS_oNpZCN0Zi&Oc`lm<}XX6+!-x(o&uOI7$%P;IC{D%32%l@Th>lFxhT*g$DOu97LoQ|-Nc``DvkIbmScSyjMTis7bSX_f#+Jb7fkkwDPOB+@Mh8EcXw}n^Kl}D^7qs$g+Ckdb z;b3_m8|}y>uz^oM;o`qSRZfrcY&-d=%bcC&+?FTy3t9E^|tztD5k3verdwH7Cjw+|WUtN# zmGnzzAzMI}vbP19jHE*ZRU(H1x?5{0J0$Gp-y-!PUy9(3rGb~^y8=AZ8Wd&93nX>m zH2Mos0!jl$V%mE4^~_}~V?$zHp9|ZI?!88+_PJUy)u_vYj99YT&wFYat+{lEv`9`s zwWNr*?}s`J;5aXdbM{-HwltNJ2Q@}Ph?AyS?IS~^P3JRO!9hplNcr!IR_#jvlDKOp|%-$5T{&~Eb6U~1*>gt&LoIey4Uz|f>9sl=q+HeSgerOy#% zb9(_gZ4eso=Ddy2u>H3Wizw@`So!x^oKnFS*GWaqcPIc{v5RY2I_OoyS$CeSy=^am zN8s+@?lh`;KQV6?lV7jK0;-Ax*L0BDIfyVWL>@@4e6yxmU~;bxknx3i&-lQxbWV4c zyG3A{JG#~G2BT;@H<7r$M=XWzLi8tbPBJG#PvDnYh5L~^VzoKg30frysVxIZATYRt z43+XH$lXym5W6lqC!3pEZtOmfXz%KV$H(i%9>0y!N%=MyC;BxNe)^&HFUwRsAEVESPG-?n#u1B=wt2y^?)cR(107F+%SkRW{+W+I>k1IS7v%ykFMJ?JXw^)e z!UBTU_8!$AQumNUy3J}RS$T=+EzFbB^CEHG8=K@U?mC1UwfsHt+vuKoo6&1=C@9<&UuH9Lw9)Dww}RPk2FNlY z%PUp*AfkdST#RnAz&c&AlL4V1_dY2O!6o>&WmFR9!-SnA^f7^i4;$)aA{!V%^9K6@ z5B9v$MFvm^eGrlJ#|POYK!v_7!>itKOYmLG#Dn#{r*~X7RkmXguxn z!RIP(x?RJ`o<0qjd9Z9dR$3c>7^JrQhF?@cP1oEbf3NSG0~X=320^^$H1fQce%@}W%9Ti)(eH; zktC1$5+B+8rD_kYN3RXd?gWOD_`N=OXEC*DF(b-ru{H-kbmo1n5EIIKlgkz81_a)2nV=k{v}MPej%@m z2rsaBGeQ&|eh-UrMu*|{VRV(`4>$vDi-ay_&R({@l8?*IggywTUF!yU{Lh*Akq7TS zMmOp&Y(5bnTEyrD6wPw4zNlYFE9N1RdBW`RD0Ho$0lzzec#WnOLe#hh0Xd^UF}9KE zC27!-e~dj%{BYo^Bj zZ_)T3^3P*EQTUdQ1`p8G4+vqq7gPu3POCR?t;-~j4q1SAJ zzS$vd)+${epZNZI5=T*&&O&)`KiI=s!miBDrrY=tMT>^FwZ3J@8AU_*Of}KlLWA*A z5VNY9MZ5y6yh(>H-QHF&!~T3t&R`kul)^&wr3l2Me3MflAmjt8-{*!73vG8ajhTDO z4Io@($FsJr!@H^7Egd!D;T$-PkK-NGYuz|5KmB(PMaOUZPw8no%KqUb^bKufV!Krn zej-eu~HV<9Jn>8D_1!R!|u@%P26IgfLr{ z3}J==n`ZCe;n|NZO~h92aw7be<2dxjD9hyoH>{B`7M02Zrmh=MpQ(sAbqM*=YfA*cvH z)0vHq)Y)+V;Y`=dB)Dl(!-7pXT7Qj$G6E-QS$sL2=!2ym_tY>r`` zc!gv?dheU=LCOpm-FrUasLHbhh8*ygX~wy9IL_?Q`5rV;A*pj|>u#p!D}NtL1&vPG zuowbe*3oNwcHi(jc)09rP|d$^35vJX@#4#z(gO^X2z^n>r7#$Lm3{&x|B+SRCYFn) zNjSSRFfV!{9A@CZuf?~usb_O|s-hKTiFE@8d15As=n)X~kdTgMOk@}fbBn5eQpkqS zS%n{ZA$6p&w>+kFvWH%FZ!M{@rm9nw$9qRaP=dVS?(IbZn|b?eIltP=+tFxvI&1&m zb;ms3wRI2eKlx0=Q-%a1qqiO|kT%z6ZSF=BeM9dcf+U_v%%-3(9`_rlO03*a7gBTs zoFh_=J$tEA6QjOrdHQYsd8C{Va#lpiM-%{!HISY_pTZIWY=qzO(P%|HaZ{LJ8usD` z3HB3UWk+vw!uIGwGyzk{$IPuBB9DO@{(?CVcf(Yjy@wEVacYS<$Zi=kHH%X=4UdpE zU`#kk5J)8U4BekqS)3?-FTC(hADHrB5iEWXghXv!tzfsZ(4UWRkGIO}57&rn*DNA{ zfZQ#a3_8Y4x4;bH?m2uV0eR1TTAw)wVzYKH@3W(xkUryI;qWtuzd2jlk+TBe*QJj8NvKxi|c?E0NN$lL~ zMcYHHv~4OUr}3}4u6~q=|IDA3#SC5LzXf+(g3u#pCKmRQ{j$Vw)UHzwhaW#>chyb$0-k5c=-bif_V%sl z&vsGyUaPn;L$oD~e&0psB^P2}zF=0seg9g=c4Z1IdB*}SV+aUr7vM^icAqX;73Nxs zD_izIUIb|oG5;T_%j>dsd6<~BF7fsn%U)m+RdBi%fTexriT$#VlVSwG5)Y&!`Iw-A zfG{}^q4V6^aOK#ySCW}N~l|=4vx40nKQ> z=;cy>I^qnh!plDjaGV501Gk{T`po{#7(>occDGr!s!=dX1EKv1Kjo*DE|YDSQjq9+ zuOP_N#UD@qh#K_&?_bgx4IqqwARvVW+!6fD5hDktZgI5rCuOYE!MM-qeJrDPw7*x= zSD!j>|2sYrkU{Ij>B10M)Lw;0)HigNOf>%IqH_N<_u9wC+m#(UEy;&KBxE%519@p)>Hex`}sSms%Q5T zffwa|DRmWne2-i3d~wu$=%3Qa0~pQie2i}LRvu~GGg&Ja=zDTce;)5xPfdIO`Tm1@ zp5`gxWgYe043h(>5z;+4pIMUAs?98_{_O4`y%O@!{qLNtquu0; zG>_JT@wBWYT}(^ga_VO zj=9?lEPuFUH<&_**XSOAyKu$|Q)srayu-x4z5 zf?}YB3o&4e6whpDvWFksPMbDBP3L3}3q3fI-QAuF(wi}-R+bEch`M*@aaAKb?scBte? z9V>}fAEEjSkBSz8Kj241upoXml>vhOGjCe`EW6CNx{D@EDJ;9G&a22}t34^Aksd<9 zy?(9!n+H5sE|H|c7-%_7D_$j{K|H`tC62(E1^3nt$Fpw2^T31gAILR)SU?_L^vPb3 z%TNCD(#VKAl-&Nu-uv&B$^Kud;(b0h3--SQtitr)o9*<*U+hd><}Z6_eZ$|0Hd06Q z{{|j6)G_}H>a_o6Hv4^_r6}Du&S#n&ye4> zYRQ$p(^>p7w6y{>Lt{}?iF#SnVtMTh!xZ`S8Z##K7d!bh0)sz23Ox?l%Poj=rs2(8jeTJ5s1=+UIVERL# zT1E4dtlw0($e)Tijzl!O03T{hme#2be%FI|xAfh*gyH{S{YdWkQ|q@b^pb~8xZg$J z{2A7m*%H40L@m;ACL5?}>PiOV>vK#QU2DZmvqzxIEQkkX_EOv}P3LQUjce=Sk!8Y& zqeayWYeXc3yW`!*{o-ga9O(LEwmb&HwyTWs!-1~GBR5B{*dL#ZtQf@vg za@*PGcedXXhT4(`G>HgdQQb!|jPUm)dut>AHTq-Y=8P{aTrppBe4ww;leRXL1NC=W zpBQ*N6(y+vv6#&p6J)vGW}I1c9J~Y`n09}*HfJsX>fZde(N9U%YQbNmM3G_5R>9FK z2QwA_gA)3)chVH|uVSI+)Xk*=PN0~H*=UTR$EpO zuLd{v;8M7+(ex$yg8YBOJcjT4g7CaFNMJY*ZNWZWbo7!XO`y@_4M$1y_kDsxR^J>tsDw!dFzim|A5gFXJged2)@ zui_0(y*5Pfx`b6&6~|5a5usGb)n$C7e43$;uzOLpPZ*?B#Ex+4Pr{edbg=ErWxha^oe8I<`^o)0myiCH2+wZJia7;(NVABz@`4Dx*JCD?gAyBfl5Gh1!LGDI*qJh|^lYFUy?K&oWt~qO-uzakr&#Q$)=6qt zYDK_zcW|F%usG~5>g*qC8LZpot2Ds+TXITVJfag%a2w9U);a2@bLK-rz)3ebebc#j zRD+XF*tMh`JPkq>ZQLCD=av}Bgm(^V+zDV^ogP_r8<8t99V2qM)RP(8>))@y!1LEo zw1b=tzTNJ3??=Psm<`T##0d&88HdgEE4gvSJIzL%tSOhJPvTX*7qhS8`dEw|FEixh zTsV6}QI6uhn+NxJysJXJ)~#NexMN8~$cSevUsb(H?0ni1*TH?ybhI-DCCK%M8Hm~= zYf{F=EA6g(k1co2n{Vc~)K~wp(Nk)orjVlcnnG}~H zrZc$N-r!0@(#+NmL#o$dh-UQ+`B|$dwHptn-;0h#yjFh+H0?meJh6Q#0;n!H#t@RB zLnYO_97#c$1FeN8`V@p3q>$6Bjk)V-TkPpsI|lcL<@&KjB79ej8Ed?g@=72ei(JR= z!HNON>w>|GSgzg>9TKI|BR?Tg4U~5HZAnp#!p5V-p70yZec46 zObQU+o!SS~5ad`b5%moqixW9}xl(z6k+^C7asVRr8K1;&14i(R;OSAxuKzK!>0JJ+ zYOV=8DT{wTyJ^+dY8i*fFynY*mfLa2nS+UVS4W2^N0RL_HxBYn;a!IIbI-Md5<6@0 z+3YTPIzkPThuO4pTZjJLKEvzo;CBiX79?PO!d7X*=bk4}3(eb{N)f@$JZ~9l5^*q8kDkP8}$Gj`2gb9~Z4`hdt)z&z&RL$wb3j5)NOK z@#M;;C@H}ZbEX85N8zwW1BgQZlGnPC*4pjnBw-^5ZN~08D^pY<%249dZZ;cE=iuxx zax;~oNt6wAvjYg&smoB+X)vZ#2h#a_u=yIXG@xJwn@ZCICuj(eBw#wS0}wXM2J}$f zio=_6wKSo`z=oS?q1f6%81=`cBS8+7G$bL}Cf^DH;n40ZhCGN^Z^VGXzdFVsQk<9E zjnTIQfv{1Ou#gN&^5Db`dFtBwqzq;!RUsSMh690=w@@78&NDhcm0JE0W1Cf&oHymp zYtEiSL;onOrUP)oCysa~8xO!?17ev1rOwo%(=eVCH~g!HfU-MHfa*rsJ%-XIU^a-E z6DDaXFd4|$H*G5oDxirX5yy$#Fd=LnjyDi&2uqNlF_0vF2R&#un<{s$>i9hg%#8V2 zreRzenU2?pp^L`)brg&(s^bw%^Js9pjfM_3G}bZ3br(Y+pi?n0CWF~Ik1&;>t|N=F z#j(|#nHJgbPi{qq92>bBTCtUvFk4Gh@9}(l0W%GfEVC;@CejIjv6--i)Hjkdl7Kyx zM+v~=gRXlM3CZH{YAr-JZCudi;#A7Gnh==KylBOjS|GG$q;?3V&K8l>n&T17I@Tc) zEaUIC6UL6Sc|1w#ayCsV$clDh$z3^0I`Nz4+LJ_(PDH;I#ofz>?G}R`RwfciXS;`{ zQSt{>mJ^$w#%P{@`|oIMbth*gQ5|WZ75P|ux+zDD-OUG#$9`u+?)yH>j~+24aC>5G zN1jRmjM;tG6UY{rza{6NQf2d*l{XSbiE3vS-{(SDP?}J`< zVP|Kt?i7Q*7(eg|gIE`qAYys|3_Ib3^TodTbjJm4w=?Uep0f=b)@78P_s2 z9Og|tA9I13C_v8wH4j11c(z|l_9YK*PpnI0_GSI{eE|32l51A09M%vaWxijyLJk{t zeLczsu7|Cyw0`xwY={DSa{h7bMSj&_YDF!=+=@~(7V1_O?_j*4M3>q}5Lu#g3=Uzm zV}zsN)|vOo1K8^LP>i5EHY|KNAV<;whYl9;Nk$wWXAho;T#cC%d9tQOMdFY3P9>~; z1Fj1=Ho0tWHaT$N$`Q+!Sr!W)`Na?74?k&caa^DmB4`dV2FArfKMIm-!W4nTEoVXg z0RK1H`^MK!TJks>88jv}@3r(7gO}#I6|`E`UWuGSz}-31m=`9(u2_!j7r^@u%V?h+JRHy>#v>aG{vMqDQf!a-DTeFi=yZ2^ z>wbekxBvdj>2wyDN(QA@ko5J#Qmv}cxJ{7eBv74TcLlD=IM+YwI?V}2rO9(?Q*Z}qUs88GKRHhI&1R$d(94z;{$gc8v!zJ+BuV?neP-m-tcRP zhH@bodh;6b2ZtXXoF0KcqYu-taa&XTDFtqjX*NB?w-YYbMazUXo<5ae|xszs6c%v@B|>#2m4t$g09cK-;X78n_O*w z18zzmYtc-~Cm96E=NGI!*1pOjG@{$S){2z_*Mj!J3m%DNJ8UA1QIrB^W zTCA(REl@ua9Kn45oOQ>w<9B&qH~V%z$Ep3E)A0Wf62J5-T`&Er{wi(F_B_5bok4^9 zhWxMEkM2?k`Tj55yZp_?{Qu%yxuLDFeLyzXlOK8g*YS;ULV9luj@f=|0TE2ta%9Cj{jtv_jcXK|JtD|7=AzZ1p-oD|+B|~u^tGkdGIV1a zDD`K+r!sU8+@Fb3rv181Bb}2R`)t&+(&rM(R{KV`=ljm4`gwi9@d(}^kO&0+5f*ZF zb-kh8+xs4(MgaK;c)uOA4I4nn9503`$b_yazIa|FNe^5{h4C=Q<1+Yszl~{?!q8^_ z7+6P@PvOl#qXZtouyhT|yDwZpa83dpxRf&Eo*#Qv8q96RTFR#SyDXa0D6J~q5u5~r zP(#vQB-mk$o_3zuZm<Yrjanvl^IQC?Xf9$-rVAtwT0gWG+Oy0qbaz9;7V zpOfhH+u}pxM+W6|$Mbmj7mE5y3m>`uAFx$yyTU5V?@;eNpI7qbXu2NJW~E>SAKq1q zFtto+{s*kT_s6B0n2qVjr1h4o!vGulTB*=^1hFJK(;-hFKL6?Je+TbbdlFwpFG&%B z6P$?f2lO1f`dpsxQhN8l6OBf@nQ>*Uyz3@Q@z?$oGxMW2V7K4<7M6z$?S#gEO1Ht4 zQ`u%qHj9modR}@?!{kY(C(SDMRlPhGXg)g$TM95qX&l3q8mnk!ohv#O+Nd`=7nVzS zr2bB?^;@vLaPz+=A9<~-a=Vn12I32E=SN|z%xjQ7*skeqBvsYAK)aFH*EKDEW#@?k zX=y4woG7_x7?k+Uk4Cmva~%oFyV>sqAFGB8Pd3y$3DUIkTSXhLi#TxQcb|aq*B$nn zga3z}2{~QHv#Es>ZI69O>6&PXUsepi0$M)OJbKy8;n2;Voy1Eu8!*iBDtR#Do*mLr z5n|^uMTUQVs_1dBccbm3r%X7=|$M^~tc1PQ|byw^r*E6A1LwAp6H0p@7BzYueqs#c8yj#Q4xk zP!4gxJelXya%k`=7Dog>%r7iR)I};1;L`c~dwcf|8Z)1MnjIC9r@}}$(DWS}q+IZ| zgqmBVyclD0zd)~M7_Y&d=Md3@7y53)$~uF^$N8tjjjams@tl}(N3KY`oDI6%wZx8M z@Hw?@P6dD@Sufp>C52%|3x(ReVRaM zkoCnkZc_d7)(~K(tsHWF1#|<9zxXtD>GODBbO)}l#6IYY_y_@Y;$vE$R(uK`H^t8ew}$&Ff|-HGCTa0~XWY;eEXjC_5xiAB88g*(u6h&~mPQg8UjX zSr*5xf;KXK2Cj*(!xpcy)X4VudxSj*)>6Rf3rpN<{ zH*ny2+!-i)>Wi);kD(xoQ*)GAv)hp<`u+m5a^ae?8ma;U)&Oy@Ow^~9m%DCC-C}yb z#K5FEqh@uTSy3ZPVoMTl!T2!ag2cY8GwC=zJJob;{*3-S{f-2;!L}xi^U=NZKMx%O zj&xzY&{VD}t`t;uBjs#;0Yon)#RM{!cQU*0s$GzF*OR0#7lspJdB*Ua4(Ien{O6}mhgEMI#}X1nN0b&+$gt|ii^4*8bKHI_+!Rvr3aa?+ zT$&8Eu;Ry9tUVuTS1{Zw{$8diTH^_ok|hMWVP|DZ<$dyXg0OC}+cZQGA`O~F$TvX< zf`%Y3VCrO1AW4*5?K;U}OO5{%BoO`HIbjn}xBDum+dm0Pp?oI01!cMWm!(yguRw45 zpJ$}TEuvF-I1YSQJu!@|$pAiCvfD(iF|0}$SV3jF7)F*m5QGiq*y!B3=P7Q=wVUt$ z#+RUC6ORerbL{95mBl6cd&+l@o6Kdwy)q})(VNpQf023GvehbpUXy7ELL^Vqocbcf zKem42Py?xfwz`NHV;?b<*+_Y%MoQl~4SaYH_b#dm*zVF+_aEAbc~KsVa_f6D!TXIKK@v^_GFx@|r=Yc!8a)on2P`lk#80)|x+wVMC! z=$S15$!hKgZDD*ive57l5XxWTG8hB~a;p|?ind&dmjvsW;8YVrzMM$Js$_K`!-e}@ zjaylybmwoX_`JAVa@%ix{R9{iYhPdi_;r&sr?>j(#JCZp#jDj8j((uEDvZj5f@rH} z{u~|x5uWPVpCyzE)tVta&O0c&xb**Nw7J7xkrF&F8-)Nb9Xd>>X<9Z?9?50fWq1M6 zrH!LcB6*fmZgvUWTG33kKOTpT{2CXe|LrLFR@&EOCwN2P4!$y`g4&mnsp!ux22&|L z)e9Zj@a%C?_TR_FN0jb=qoIbOyy_T{+I6%I3YY~Q`@A`KzPHVJzrG$pDW6$3e=FIU)#;?# z`M%!%6d)!|`-4?}0Y+9Z;)D;5C%;M`+X#X}G+Tdv?Da3HAM^g1{&U;lV`en}bkHom z*5CWaI8JReXl~n?-^#PTq0u0*K_V+}^-y2)qirAfB-%3i#;4iMx)s4`b%~jaoH}Fw z+9nBY8y+h)?`e-w4z;1eG-K@)#VsedQTro@!;5&(i2wC~LGajNoZ+yHQ39iD z-B0~S6SwPHhoteX+$p>xcvN@=-bI}SqyD7P&KZEoleTroTYw(7NpjEAOkz>Auxbed z{-Ywc`)}erpZ7w)m-#K^>g%@A?O0yImT1(4oC`)?8Mt;=+9gi?$1395v61qqKj#;E z!k1Gs+A2TyCuhEIs=xfm>uz;n%Y2Na9nTqIC#67ZJl^MdL+l`PmnmZeLy_C<} zeQpO^)&8%A@OA#P_V;_;^(`Nh2rEJ~i%aT$>^^Tqx_IrH{UvC|!JFDn5bJo!!r4TBhTd8VFi0EVO3G}lai0T|@4 zN?CMVdMN##k6V`J2cIiyhxkY=0%i?@SD$kknUgjBn1oE=r4UR7QU`dV2I4}c0WHME z{_U^jfBNiaU+PZC6ZdIa$&VB4IeM`X1pVpUABE0nxaBZVV2b_vDLs-x7exUM6Feco z0ptiI(dW4)1pp^M(;^(D?^9?=fTR%3?0#NCY-$gWSs(u*06kq%DtfIx4~OE>@&2+^ zMV>wHen{WCx6)-c2eig$x0uX7ykXMpOwHj zf%Lh#M?4;1`G53}-~Qj}{)b2lc)&5LB(~e{Rt|#n&_pS9m@Az4Nr_FVi%li&hW&J5o{i!`CeX6zT9(x8C zle(9l(hz$@isC{h`MBF~TTy#myI^7TBL&PqoWUO_m@Ws)ZDXzbD}VkU%lOa!lWeIt6BnZ!fzPu`rE0+vK3HEPUD1+FdMl%g^;e-1ZN zH8i@Zx@w0pL{yrD)19IH`HcY)X<%Vr%8kZmC@e~iiacL~Eklxfv6}+*zHtslIU!TZ zWF|c>N6AmId#EkB9B5ZPz+^s%`-xBq-;Ka)WAtpSkIcL3^1GPBMZ%VqyjW_w`~v{B zu_LIq3v5Y+Og9a`_=`j>cCAyzYJ8@{j8aMF52TTSpU3Plj z)zHKtwfB%<2DgUUsUHL23v6(hC=hm#hBtL6tc53qu?_K7`&TtC#r3FvCGil9|}ybyU=V^MVEgR~W-?ZGh> zEPM&^?^6y731n!SuBU#%^H*mT9k%#;%_M)u)?d;`gu0zK_v7l#NA} z*8_bxaZSnA3VEjZ=e*^99xR8WMcs9?(+!))wXtXWLwD3ZIN*U{W(_Ntsk;oHCoAaV zU*XJ_3N`-T9TE3WX68(CzzAed#?hA*y%AKM$dT2ByH-llAbwHqV)7r!Bn#w;&HtXN zp~YZBzs0mRXyAsmur9Gj8g7&cu%wpfFJAyHCn!V-Y@62X zPNl#61zhQ|BV9wuf8OJa-fD&sKA?r=H+xG+w1!%hPFuYzL2L`n=jebWA%QOso0lyI zmy((EpXVj!d@dIoNg7GKw0mojjS+|bm^&${{$#zZ!=hXfhsj3U3}z4##c;Fu4+9oj z@-#tdD_b|0-`Vc+qejp$cna{%slI5^>3AIuK+NaWIdK$L%tdABAElG4J^0Y$ci{-> zk11*niQc4hmlNw?y`Iq#78i(jZpKjd%J&Q?}|febhvaj z4b%2np>BZDY7)ug@|ZF3N|v$q0$VsJ-${Cq8&8;G0<4SC;j$12 zr}d%q9Vi|15P66lL8lpA%zotPVG17m7bKrz{W&te=|3js=FFnRpBP$OLE;B~I0MD}iU4<0--^%x?y+!B-nR4l%_FIQS&AvUs88RN(57 zP2YxeurM8@NVXP1Q}rG7BKBUo;(Ed_9QBwj!OrRb6100gilb{%O&d3G%byC5egpSq zY184j7=%A)9_`T=DVU>*a`dHk(xrhbZYAwtu+|mEuF2Qg$f5k;PHvhLPIn6Wo6RTK z=Ug~jVoj2FVPkbY&F{4rv~^axU#DufCaj3Vfs+071-0?~$w0Bm)C1{G-h8%{#Uu#5 z8c5$eh1{rYv@E|ylwn_kX_8Ec-Cbg$@uxQmWNT&JW!bBuTC=k=VhFg&y9~d4)VGFP zo{Qm62PoM-_GpI11;!|bvhr6CWGa4K9z-i|XHIQBbG@MYi!sj7;w@>>FnAE3enw-n z58%y^%opp?-ZYU~F=fX|N?2nT*)|B@4T8;OJa_z-gR|%*k#`-vV@T4@#Z8oPr<;B~!k zgWG*h=27lDGIw$N>px-pPViKK^MYZJ$|00IywZDlrBEJDhn-_V6T`@7=6!56y4>Q} zbG*i0YP6$NHGerMwgiY>*7g~?T$o^MtK*CZleGf^J<13X>P8F@rHb7fn!l4^kgUjG zl|1cVW0Ab>(iV#qzI{#LkL?>}i!7%8rgV$!eT!J~W4kZU{Y*E&f&_raP4e07#V1j^ zm2&afI;NWWUcoVHvd-x6G+jb=cN#Yzn%-)B9AGqy?O4_a%32OwAfnxwc9zy$V{X}j zX-rZRK}2frPc-y@G_%=Y_K6S)htV(r7(jv+niUV~YAB5&R?m|2WJSX zjSBfaVX%0UUyFdk)}v*KyL9^P?mi`EV;>5|Mb7Q)T9no}$z?|NM1?3h$(jtvf*7I4 zD0wiDHW?P=ptq6)S2q_R&EVy1qI`Z}xuXeL$bUs_lYrGs2 zFHP;S+B4#n1ND!8@Vj9Pydy2Y23q2;EkjZWYESlZ2w>!u0$m`qpri00ML&zPma3(p zX+o8x|2g=HWZeF4($@-$|ExYUQQkHA31L(kL-g3KKbX{2&q{!b3L+?|cr$gT-0CjD z+s_Y&;&fQL--E8iD;a58{d6FXB#Mo0_&%EJj}(2EJ#~-IzIe_pxi}9Zm(YqLA_i7( zTAbUS?;So9cAu<%!>|Haa=0cf=}o(^S|6-~Bka3{O5Ul5?U;jA{8l*Bu|dd-5Hi~& z4;r}lolFdNsK>N(nsPD;-&nl&*NL#%CO9nk=aA`wWkhG_8@{^O^U=3kyYt^0ELu)s zA|i=WUv7fz21*hjJ8krTgoU-;V3`g&`Ciw_Mls5Q$ew;;G{QvFIdDVu?1_h!Yuq{BGspNBM|PX&K@q zQHAUdmDU>HSr@teLFgRz!FX~G3FH1NXg)93pgTR3tX4zKTCV35E1ASu_pC>P7wbX{O*=Feh=k z{*Ax!+CgpjzLRHx_ytSE8_mg#Lu=R{B~)QDyFIXUKEb0iQsC)sR z2=c$9cMak*k;~vSZ=aZD@sQ#jhaV#a#gF%DG^v6?8R1(N=)UjzsZ%k z%iEYl*zaX{jn~J62-!NT5cZ#E%3Du+7D=pU&1Emj+fc zw}UwSX%dh`f?vtV$hF#T9@DG$Jw6&Rjby@Tws+}w<-*Oi(x58PwMq>tsx*SAG^n~P zrj%6yf&8!X^eyZ>f3SRCiBZwJABWxf_=VtV(|qD0%^80#G9nTLK*Oj)$+dsUFKHBU znunTdH=zYZb3wJ1=hn_WQlf*{r6xDQnz0y_*?yz?% znWm^i7mDE0J?tv{-lOQ~GdDePFnVSH0)>2w>z@;rAJsk3$om{ITYkTMD7JtqFSs}|vX?h?hh;e1;rQNDKI7SOLai9UO(t^lyZ z{eQ0e4agz&jd3jo%vb~d`d;ytQvbd!O*Lp`XUWYwHBnEN7+dP<_pS48=nZG0Q~29u zlqRn|-s;x&+E*~8rylTHXNPRCmt}eOYmhK3hxLx%*Vg&LrL6Vb95wO$JvQFIql;tu z^>ZL;rKGzU@Ly#uD-BmxE4iXcQp++1Ev3wt#Di?Auk-V>mIJEduJaA_y}$~Ri@Bpu z9oMsztiS$?kdN>)|9ajuHW&#A(wCP|%zo~cM2wv>E4pKOUvQO=-}_59QpA446Gce$ zf(A49pJjr$lQxSQFVBTujO;y<2*0sj1jAbHZYhqQ2w^FCH39Z~B49h+xo+S7r|Q1_ zj|{gl9>J(TRm}MpEe{Kb7i^kzhgo# zM7ggL)iO7uXKR6v&#?S@u)L_)6HNcbWQCdWt+3*U{f&A1POv!7pAEh_G3m61em(A| zt7YxK*fU{+vUVPiE0XIAEodzN&Vsg1$VUETcvR!YTtnc%>X)SNT7X|#n}a?x4W@$1$l%F47m46QVe7;JmV(s5CP z#~K#3X(&bQlrF5EeI^m7Mwja~H?i>Ah%_%H1KqTkqmQ;uIDQanidMDSPs)bNb$RNS zZadq{>#;hXHdJ+^+|eyaaJ+@ptQToB0N`BkYuSu|4rx*i5*$=e8K zqm4LR7A{Mkh$0{?jC=ydPJWQ5h3`e|E#ac*gF8rrOO81L^0B9_HEcLwIN-LiAx+YV zA6D1g=-_VGuYv=uJtA zF?)eE(n|Fk%uI|%^`_FEJWL7iONUu9{Y%&|i4aWJ-$$kQZfwuq=h5u5O1Vrfw(j)6 z{EpvRiZ6zWa%{PL(Z-gWBnL`_8VJ<6e+NLLOb~z3oGivO;j>=->P7hZj-+Sj4=r7{ z1}bBo>xa7CP8m+FiOW(P^7IDeRr+A2JYp|D(6qPApV;i;8nW zJsdejJAL;#<-sQR9Ey!7-`dZCmTm5j}DI;IzIv03E87%fYz%rCJewnvpEWDsV z{#oBic)OPpJ4(!nb}i0K6eqIf91CAw75o@y!!`M?f0&(u`wENS|IoTCUry`#xK?yTx!F3Z@`}s^4delW$$`*;q+Ljj5y| zLykbG2GbGPD)5f0|c6=BXE!DqK+X%AM@A-f34&m;_>0@oIO8qz(QFSouw-} zIa4!Vl2{9%NT%rhMJp&~Vn*3sCV`OU;!SCvoBJBwN{Te1iXbY2{y!%Y>|CEeFrT9F z{caQS+lQ3`0)V4hxx2I<{X##Ik*##o>fzVyuvt-Q5fu1dL*`npMR@$KC#c59)@--` zr<{WFvuPMAP9)Db41go`M1)4ezKd7cY;CMLwD7uCC({ztK^$Iq%aA-#kM7zWVL2u! zp7We?Eag!UwDltg4FP&I8s}-yt-LYnhvc$fzYz~+Hno%T-BH`$Q<&buZ1paFUx}QR_xF=&38v^daXAcd7)NCF zNG6;^0!dF*W-uR2qG=luZvV_^8F2*TRH_=+ZZgci^3q}M`qq6CcF!5WQAiCuESg@P8ZZQ3g^?OXHGIS+v@98E&qcTP`2Y~R2W5VG{R zmm44pni$!EO4)u=;87&6q!dPp7}ppm5xPzPSjLqwGXt=fKcyZfo_;2@hJ#Cj6~?=^ zU&m@x6%cKse$7nk)VUv}!hOw!RN=(WhL*CpOsk;C#wBug7`DkBUnpL|RU~`BFY$RA zNHvR42H=ryri*CQQ^hyDcGcVQb*(^RkNcuw^8fixbIs3Dvg&9>035V|1fo)xju^de zT=P;~&X(Zl#tw4JS6@CE3#7~}%NCAdcwuie%0M_A)N9gKdH5-zNu#CDwxPYF$QZKJ z_uq3W*HM8h?<8m-zbK9~D;zCQgl-4~Esdz95>0k?G$*A@+!(AW%vb(-S*5+dTb-+d zvi1`p%9C78sn0Q$$<$B7ayZ*iYkmc;GW(mer~-9OuoOcu~%y0?~=;- zXc2f1qf0#`f+C{+e3W{rQD4L4Ld|OuWJ5@t-NnuL1P1NJMj;Q9KpG}4U!cFMeJRDu z>(q~X&+Co63@I{eEOzuQ!X{%W`knvcYB7?kvS;_giYcu2732*99gGuVQ2X7&3wsRx z4}`x)tXyw6PaPS*H2}h(^p?zYtN(&%rwjBRHd*Fh1&Mu{1&-Y*b`+rZUakXFl;C_#-`#f1%6?w~fou8jm?0>^3|K-X5 zOog*_vc4=Ia2dQ$+rLvs-unb}{>@+Fi`fV}zsK@^kK6IRpWyu*@9Br`e;4Uv!tMJs zFfcpcyQlx%L*C_A*3|xAi{AR*kKXUE#U#;h)g5~n<$NxvXZfe2(L%8Ue&UU!7Rh6dG?@0R6TVBMPshiWkG*r33f&XM z9YtR<)iW-uu>Hcz`WEO5NZe}w!p~$(G1!W9!ppQO5M~;5NmeWtT(CPm%4yi)$wpK>w60R>cv4GJpr|G+Ijep#Id~b2-{Gk1qf!}-7 z0f4p4aq5HbbiESbGAq+F;&6iZ9}K_0?2)27NECg#6eIn`0i+zBN^@<1&@a|OsmQ!_ zPanImckh4q@I9S83$JcPyQ5S8_+6Nk_*lH=Hde93k@lc+&O?4g z=p|pnV%_f^>;LH?TGCvwtBsVY&d(G!8(}$>V`|Znt45JXRJ2)>_x1Hh6If<{pC;IJ zxl6WCg8jGh@Jm_7xQ((_maUz0+RUd#??=FiU)c<4^|1}P#OfWh6=#b-`d1vAmnjmf zSS=>}L(0)XCFC2lDo7z7w)ym!s3% z@*^9n8Ma5Ktd!{Rm~$hZ^jP!DuKD|#c{tYpmf3gIF@<_^5DgOHvsp?hB_azuzQIMKwbpx zWLVG{wEB@~GgE`g+%cP=;EBR@=87^9v-{y$B_WWcfvaHZl`iR zl=d8c_%X!kOl&J<>`e6^FobxA%s&IDm#4h;XPDJI`~x;km$htTZh8;nC%QB!sdzJU zg9U7mxjwT7yOpyh@{srQ#*mD)5VQ~o3Sl{gpKKq8>ksw-cLR{WWB5=v?h-ID_VqMB zy`qDqi9&er#ZS+P*)O80H~l`z6|B}E`t^mhLWgv3V$>D?F}3sD^v}vR_*(KjY}=+d zHHL2_7C0c$5#aGfEpic}_rhn>OCZ_)%hky1#21zw=aqEu4ftTiV3Un3cz)QfUU9+? zFsv)u#_sdy%C%ofOo?y>@%%Rlzlyhj`#yhT^Jpv9<&R7wnpS4-74h1!S5%U!?m13q zrM-o_7jAEi$bJEK!@h;r>0=ENVyleziwx6Nedrj%aIT1qMpC))Uvlw{eapJkk&4i1 z)UxVSdYThgJ$o#?B;#;{ZO{<~%{wd3;crR@XdYa@ZKVX>xFP2P41^={uiTn=W_riX z3gq~ta**XCwJ=;F1Q?s` zDb(zkjK?H)+>U~|XVcNix*Dr43qxN85>RAHqadL`kkHSIfN z7)yOotEE!Rn-Mo`2s4G_zR$0HrmqK$q5qW-GsNB=MqpbZW7%&~1YsW1`_sU}=?$Nn z%B2sMK(+PjlN%{)vtvYO!HTG!cIk54V*iA`;)XB2z|atgHG=v1I0d465#=GTAOdVX znj+@IG~|XZ6qoEm7h^!%-1}ww^6<8$kG{He@X8)3Dc+_mha1fHwg~K~HH%fp&#@3b z1`iPJ-0SzEG64DFAP^CmA=@B;B#!un<4@qr$r8N3sOU<5 zTFV~J*VgZJu~;vt{_B50fG~9>9hT18+=2n7d-LR!73iy!AoH=g~~nZBxXI}=572hLo^5Pj!WM^?Hu?WL2%#6W~X zkgBlfpZ(a95E#NoU+~4`M2xUl!pi>$N!c7M#M@*F%jhL}4>^|ji@k-^=M~k#ZC=I9e2pmt_j`YcMyDB;J;nG>bSo3hU#@{B*BpE%N$ zNI;{~2zxy%Qv64KTgz|z(`{eV+WoG}4{YlLaIoa`h((+R82tlH-u~D32YkJGZ5tJ< z@4AAJvG*oIS)hMuJthb&(6Pr(Q3W`#3XHa#3^FR(Oc(?)j-T`Yu1}{+mjKGy!|@y- zUdaE%t5(zRi*Z46a$Sy-M2E7td*yi^jN9xe*$@A_CfB;MfA@3Br<%Zk2mW0EQgYta z{%~F6e6GtCPPL(siqcI>cc%Ksfrq0lZiJ>>qkU`+@6~tWNY;!oo?i4O%BGD@{4uDx~PZrH))+oi8TH2{QWYIW@;7i8*Vhbi8 z2GAfu2@VF9{z9EE?zRMOhSV$?Q0EM%GzDdZUJ>=F8L7xJITVBq z(P;<)V(t@okPJ8V#sP8Eq%JRL>sv^kbwWvFrs<-uR*Y$5{;goTaA4hO`Y?Lk3k*fm4KWGud>DbP}s8XhPGtJ>k^M> zzPQ0yf$xZ*Nr*f=M>sSUMhO=ev-UY9(9`E3V4`nF477dM zjYY1#lp&j1Z7zTI_83IxMP-rd^SW{-O3FKhxdVT{u{s7HxFlJ1qEkBo!u)AA5!(+= zHJ!B6f`l?P3k1s1tj*$dTur@BXWsCm!U%f3b4-dkf95nv>LnMd{1 z5T*eDjJ!Jkt}_sjvtnEm``hu>pdKNBvKA14AbzU%%z=0%<-$NCwMH=dK2mx{b+iZq z`QiciLk}PY`0|f+9e94feJ45R>>tR|xTaHO#Mwf&E`o;6yG85QI~Yz zk@WxF%qNI2{nw)}znS~}=j?QBh?^aMm*jE&0*|}oKZD}>EUlmOey=~xSJL6dMOqaV zJcH=J{qA|+d)D&ab8q~ayw{icKh5*Ikba-2R>m_eUyJuX*T?-o$LJ^RF#^z-0f=DX z1?#~@7O_4qALhqT`u#sAr~7cdzpe25C=|X3J(V8NL`{MlQ~W*YTLu&3kXrC;_yy?@ z9Cc*%Lf#)|{RQd-&?NLwh(l82QQepvLGcy*zP6=B5NJb;pPlJTx1vRP-5h1)D$Wre zy4RSAgzqymp<(NWF1U(ZF!=u^4);ERUeS{LjTOldS+6WQ}Bh@5-gWRZM)cLpWZ$~NK&y~I` znETv1u=>m!_sb{Ghr^13*;{70x(Ty1pFWICwV>06nm0CF30sUZ2Vx{5AR+^#l@UA5 zRf5W;l2_`&3rdZBRGHcwjLeO0I?k3g6d+vIzwG4Iu##V!mOvm6RD=+Y0uW*HN-<*| z)`>`UQQm3^Zwdz&y{w$pwJNQ=5D7%{jnfQA z8nYR8Wzwr}EhA^o3};oz$LF_3iG%Pl7GZr+#boFI6+fPC#NkzF{yUmjgL2~g%I4o$ z3lpj-!F@2kFL$8>wsKalrcuaSpCY;Nhdi6!x%Wh?&^^H^dj1N|`ac2$VIy8w%DvcX zQQpeX1&`wV?HUP_wCCaFKQR*EkI+27H)x7>e=^u`wlMD{de~q|3V#w<2TJxfDWK!Ma=h zS3h{|ys{!{-*i-LeJaF$9S;X$32U2kCZd;t&kI`4KMxHkSIYJMk!!>e`Q7<*>Z0f7 zWor3#uLS;%#L2-+4B4l8JU7wK(+#)ZnN800L_nXTRH1;7};U7m4vCb73unor$Mh?gom6c|l(K<|t2zz~S6!X4uvlfbIGP)CGt{I`|6b@CU|%_Ery zCmg5ZZ=y1DUf_wf$0q3d-S;GMA0bZwYhL;Hv_F|i4oLP>Cw~2kJ&-2R*(<$V@5;Os zSjOe%Lo#lpUI_A)WmZlHOlrvPC<`59k@MwGGL9B%5VrAT?8T7t^ygSa zok?0m8(&dWyiXV%)#ycwEHF)(G^SndFn1-Lp?;j6*b{;h-RlF04C|4IVA2j!NlF4h zuZ(AgP0AjJtc-^hEL*7E7eMeWmT?BSMy}_B`x#~eM_$-u3R=!O z;7_3T-zxX}vPMbB@}c}i9phc}7l7OVn1PjAcVh?q+pULE*WIygcj=g;(}xhVv@;5@?$`2%IMN>*#2!ZQ}wIq#mQy!ttpuP^Ln+IBL~{Y8%@q z<=nVYUfZ-xCsEuI>}hc5Icet5yR@-fTe=0noD;V}HmDKv$p#hJ!dPDM=)s*bW2~-Tx8jms0$b>g)P*@M)Qy<}?K0EUw}STXQ_3-a%4VG2%Nki^q8gAut$ z5&#M-h~!Rp7A(kJiVmkFC6}H9MWh67BdvLqWj!uvCwWNhiIT@$8XheC%WHY`({OtD zf?rL*GAu6NSf~nG#@f%sI^*Csw$h8IZWB1Dk$)C>bhbX&DdE2Y)_#u~i*WsnUoG2a#2P8XRsTE)5yCl!Tc<387d5L#34+>K7xR5_oI#RZbVsX{15?ALP6R50N zhd(MwQ0|8Z+?8GjjJa(z!lQ8m@TzyEF)rL(*cq`iwVb(g;GD<9E*YotA)>k6lYcs` zfzoa3v1Z=R7|Hd-!M4kAi{>vA@mzKG&`?6`EHRK7LGMJ8{ymjh%j@5fNKgk|T8wI< z#!WA8mj|qd(;zxy0}=SU4fl38zH8VPsx7`st)5c~Y+a{c{{Pbech%(3rPZu4q)Ob> zX{SpfFKNZxefI;Y)-?kDZz(kB*nm>~F&PA8kWM{@SEd+=v#Y;VUNC?b3^m!uL9I(4 z+dsxW1zlB#_UA(|?AH}$LG5=s zE*#!Xwui0MC7gr7e9@ZP!D+dzqp;4V7npN<{xg#CZSE@*szrI!Um~(3#D>q%eY?#n ziGA~JFXf0Br8LWfhowc{DkIt$`;6j49j1MYa5r{Uo*6Q>nlrKc1sFUEytbFigdPQR zxZ?#4W8ss0E{{9*UvmHJ`-D^TOJ$sGyeszm`{v}0ksDw&(N@wZr`wu9Xm?_7!<+Zam%3yOnz_wt^T$le{p1FR)~%_9mS)D1Qen zL+mkA1=C`)-A&sB2oLZ~n{ym2TNRtZ1qeBRcv?|3d$u(aIu`|bvv zsWhwedh0hhoBM-LZZVyug9ZTONEcU!-OF{b8BV$PzI%s0m{a)Ll=RdOs>uSjljwYO z*Iq7^u^{UQGP&RI&-gxz%rQ;>0kEOICUbKJX$YeUkmr|q5UUy}$M2fEmW4b{C(-@o zri+@p)%tVBy%FKh&KP?p&mh@U))c#|pm%odBt@42CNQqoRF;15*xOEnNUjtM4`ACTG*1 zOVApJA`dINUG14MUmWYg)uf>~u+H!w&!SK~^T+2jcI*QjV^T1-Vu9KsLN=dWAw2Ny z=YBK66Zz~%mDId=N5q*mtHFTrT+i&&*b!ffS+IJ ztN-7*X`jj%1pe;k|NF5Sx9<<-srf_h-5ejk_-g|H{69ZW{Xfj_FPHMHDNa0*BM6Lf zK#HZ)Qu`ewzDWjvQ#!&J5y3>`1@8Nv*TyZvFjwDiO3gXvl|GlUK#~+66tccaOs_E& zO6QCv!nR7Q9S4{@nH=V2jQh=d?JS<8Vt{rgpQRB*yZRa zN_Ig1js5jKUawu6{wqV&58qIjejm(@)F$Q6yrSF^prnv+y^-QRNfd%20s&U?Ga1ja zTn2q}f+stJ;fMzC{GZGBMwYx`Q;jjL3CuC_63J=%i+fEzSNr2~;OOkmzGn;bAn)-u zN|x{ci_VATB!l!dzfefb0m z<5Stc@ujNyL9f79%+c(_brDulUnKV>K89D1YfYG##$#juHB0mp{9JNxqL}nCticH( zf>%QO!r^k9ed}+2MhfhGI`$d3PmD2? z9*Oc}ZqvvtlNji)qvj^SlrY1$nLM$PLNw-4I z0ls*y?c|XJSA7t#Txhv$iFV~C^LXUSVR=1OZdTA_Ww@{EB{LLsv}6jKH!n-3BhdJ8 z!DM63ST8NLTIQs`xTox8TI@#N|BkHhBP7D9wZ&IGd9A zb%ScS4Q6ZlUtNT;i01sf3&@_N}T^&u^O zZg-obervWva6@b|;>ZMS?{C2k6*>VESX;)XcGvTs>R zQ;~5%s8|V9eRH1lH;skuyMD_cnISr zLb0YL$55R)rJ2IrHw!uSXSaDtbNRfc4@{m8RB+ywHCg6hTg-@S*%3`_NWX?G8UOEz zoNFJ3o!D&L+4Jd|Xx!9(H9RK0nB3aTadY@w)nGxq-7aW9I!N7AEcbiLHcHUGe{rbk$qN3}&4SO>41CY~c|NEzc&Lg?OF!{o)buWhaI4x+n+7TJIsPDz zt(lXd4+0#`QvQ~J9$OE5=4Qw2+SW_4&4PzO*sR~V2^6nl?zH}jm}%uhIRssUUP)3V z$dV+inAERVs}}59#1U(l)TX#aKUUYsUY~=Gd~a=5E5p#x>kmAY@iWZSSH+s4(h;Uzl&oWPy0K38V9En9 zuc?ib9=u$TL-sP}GVI50d=};wH37wCa=tW=kjQ?mo1!Jk*B$1N!uqk^yM)cKVGV3F zW~6N6lZ5R*&^Zm3RySX&enAyBjoYM^U()(;}v_BAhI3Eo!xplDdP1~2Z zGi{8kg(ALAi>^FW_VOw^z<7t*UVVP;URk3{th~O_Rc_q|1B|{&S~U8#AyzU@ix+Gt z;^8c2H9IOVV<{jfl+Gd$q3Jl2k@}vG_dkk1zYlNh-|c({*_2UNvCzn!RYPtR>mi`b zM3S;>o;TYxqlJ-?&nLMm2DnEsqGtYx4EWyEVKrcUZ09ms>rSXOc&Kx=SY@~v(po9f zUu&SOSb5H9%c^Hy-!N%HVnE8wDz}h2PX#PL9e~gc!2tMPsi1k9nIt%?Kq7)JIo=-( z7(D)l6WsvdMEBH;jjHgQv?<(P+2b=Ox8=EfDoc%Om^w`7;U6;+FGEb~PWl6}iV4OM zF+JQglzyeWOIA{(i=TND77Dl?ZD{B5#@_p?0>~QRU?C6z>o{dqW zV`Z-88-bWaNJs;Kh`RDyj)yHE6^OwMA%*tcQNvPV@hfX6AD2taU+N_w7pqQ5zB?DDd0AYGWqrC3T|RLm6Zo>UWuzt`pyfGK)Zl7V#fL zcJ^4k3fA}5_7ep+$bmDxn}t|SqR{}0rRipy5t&Xbe#JA;;MPkV-_JBA z%TQp)DF90(Av*gilj5$7#Wwkkf+VHEg@FfCcc(uozM|5J3)c4jS*|2MVZGT*i5cmy zmOQQqD7e4tHXfN~-p23x!a)u+%*RQFQ={_Iyf6Ec`3Sptik1heQzX{q1M-p~pO~#b zujFlYeotq?{C01Aj}X+xRrI{BmQI&oeZ4pyP*sksFh9@#H8W!IQGU;)Rw(}e-2UNu z|GV!uq?N5f1;y_?Qow0YaXNLl1mJLi;WBKe*}?>-@1gA7E4c z0Xs_{+pE3tQdAg=pi%IcEXEi#S}m0U!?Cb0%l_T*xBqYcrs6((058TuVEV5#)B>Zs zZ}k7S{9Zj(4j;Bpge>ol=^yB?q5Uq#x_8_sw(k*CxAeQqBfxAui7G?snW6uoeB9G80%ci z9Nd7}X<0Oq-27;gW(?VE)Xx8nAJp?}y93a(J}nVp05ddgzbJ-7Ygx9s^)>rE9qniG z{uh@%^@smHL;uM9xTtxf0D(F&aT}xc6rewwNTm0|1Ofsw4;8wuApIUMw~6faJ-%~& zr)3Su>goGFzpz*1cC#<&5p((;#>WrxeQpoz)%6(J-QW6SoA&+B6K7u|(0@P1yL2e6 z2y3?T-=Lba*Lu5N3X4rHB!gK`iP*}xZiMK${q}^`==Rt>cH6$l@O;qx%sdF@O}q8W zuQ1KQUBtZjv%`ih3sy^lU0mb1qA|7+?ntE`zXqx`!675BLO z-J8E--+iNg=L^qu_=3X7_kY7GUaqgpM|3JF$d{(b%qHi37jM zjbCWuYHyP95h`kOwwLdeWNEj;`DY8WU4+YYrhm*mq5iY>LljejoZiy%11jdlriT5u(RA9<`rRe?YAKUt=OFuXulCdO5)~`$ zaJUzd1HE!>hH@9>Z%dN5?^yRhcDx>pF>?YUoVw7K}H`w*&dwYg{~7bT^Yd&6|vi4q98>Enna|1#RS|$O@Bj?S{Ou zB|^GNz5lLm7-`kx#R)td&(71mFW7ePhbR+Ko#dO#_A?QNo`fmvMJ)kMzc{3}O2A?2 zPg_2fg5)Wz{nE5jKV|x^E6Adojg%5AR~{x95{SGA zysGFer9T+CZk85Z5{ExU{aJ&WJ#&8S+gCD=5?0IN;^Z^h#A;;|oSzuox3@0{q=D6$ z&|z^Gmd=`*x0569SfKb)JcvSl6A@($d+;9nr)lY6?k42DcGhhb;%bjOj7<`Y&As4{ zp>YU?l*`mBERGrh3<0kqHF$|p8J-9rV$@0lU8%P0Hci6JsqioD3`=*fzDR_M^<52R3 z8?i*rPX#Z=q3tsUln2$IFNlEyA}$44In=uFJHsIwu|`($Aa!b zdqy~QW^^sU#ydtnYLcBAd8j$V3Ys$h_OLdK#wfN;`C;guhx(P8>{yobl=_c5QL%ArSbr`LK7l5#|mS3QS~ z=?k4qzv6l02J=yPU1+cBQ7<#5_s8wxyuE&b#kl-DA%p0xk2}7IzE9DV;IV~p!~vfn z^#c;x#qe7@+43;PlK7i5m+49AXd(z;Ar)~JLF*WzY)RpJ4SbcEJ~t=^byIys3$*2i z#`WT?u$^#JqOPn+<-e4tV|L(u6y%u@vx;J!JXaY~nXGr?_e$0Db6Y8>NOnZ-FNV8n zCfxuyjs=>2s=f3r#@(ABAxCm|Erdf86i#4%k^cKU z&9SX}%v0#bJp5ZqCjPY!`gnaxK$u{jKo&fxksz^?fP$ZI;?lw|H`xk%LPidqFvf5P+)lqDC9zyDaL^3c8sJ@sj2wvS2a7ltIEQAwbSwI-J1 zH{0H_%d5PprZn_oB%IDU&!|y3LM73i6<$1{)gqcIA9*{CM5v%Z{9?Gw&0LdX2)@5} z_43aUOQSuBin{|}hSnJL+$sKyPIBpxToiE*8P&;;dX_DfI~xzv^Q~O+4WkSzfI7M zxWVWMVH!7m6BeuMqUW#A$h4bz87O0f6a<^a(fr>|(YhYt*Vh{$ym`dqr}$&lQ8#@K z_th5Awyrh5(QPy!``%-WoA+`T4^%K2;prt9A_5CS34fZATq|@r7t0oYkyMlzxc*lY zyi{&Qi`d(`l9A~BNU=D3JdLw}`TRah5A57c&+IZVBs|_X6Ic6`sn74L<$-9UgVSZ@ zkRQGjPv_Ss<(&HI7QFWke+L+%kbdzGBth&3dgs&!D@Iv2b>#D)k zJtJ%b-`lsLiW{-U0FwDXTflYj>D$t|*+Q?4MlB5DGH@~ue$!d#*+=zsE8|8g^AY)O zNf)YVgu&~8_A6v!pajQhzLbV~-^OQH68@+`g;W(E6@bn{Ju4GjBL3^yE@;GtO15_H z$_MR+o2ixh`Xx{>_$*jj6oVM7XAuIOpZPHTRIE09?1QiVt=YjVK;lCte?(lYaIQ@> zA_Ocnv&gQIorWJD@=aIi-0F}z$fvwA5G z5Wdz>C`

k8=oK%2u^M=em3-e@2m=^}Q~q_(Bjs7n;r`pNWdkg9_=ebKIf@Nd-fG zpepL!yR6ltRvX7?C;6~#BDF?;`AAmUN@f;uE{iVz6^sUBJX$~hL2L zhz1hR6T|H7l1&rRO91SBH@FHH;904woDA5vQ;_s^rCC8a^*SKH%CGJ0DU#J#@#5b@ z6KIJw*|VFGB&#$xjlO-;%nO3?3*YaTXf&>6@%=KRby-OB{v@I8in9FuEQgs@(rNC3 zE$=zk^H}Ry!%csEd5h0w3#kA7bq4RCOZY~XQ)N_vl&9QJQ5wT$IFkuzr@cu#@EwK3 zCkecOMFBQG)~#3;)>+H*wQj&ad+Z0p9$)zu*0Bk8IaeU($>e|!U-IbIjzF8vOkGMYQc zRF!0>_u*JZTSV`cM35)&?er`E)8dzM`8NEaf0l77Z#@6K&_7;e0m3?Q z%R}K~PsqFJ^gTD4@A{3dDH5?2UY&v>DM-~nCRA6)PQk5veelZq*|t3TUMJyejdj?( ze0)A5d4CG~i>XN+Gz5Jv>qH-ftK{E()d-7J;i}&u@ys!zvZ2CgCJ$L_7jd;3oqorC zv%71z#??Ax$yI20vZW$(ZmrF@jb*``9|{*Er(AhtXX(o=Rs-$4be*pD z#}hkuhUHpP`8E*R+9=cVo!S<2|5b;WG=U_6i>bj)jnDVA>9@%1s@>;MhSv&})8KWi z=X8hC?q(iGpoi39(Tk_(DC}*=fw*JhRd~X(>CK?fa2Rk2<1vCUAtw79gzG<@^^4Xb z{Nr&W!}^~u3+R0!CuU{UhvI)zELjkK%v=%xfB0IPnEjvr|8`IOI=@-TzD{$0KYH0; z{+xeBQNXfnG!Wo}0}fYeg91X*I>rE^(ODQ>qo4J4^o()<4B-T8kP{eO@6eV!Tr z`*;50df(&r*Mod7)%<<8?(%-G8`$_AUcP6x^Zmi^!rNpYllF(5<^9ZspX2?Z^FNBw zG{OhE37}TydEc;60_+kW>-~RMcvXQW2tcZSrL}}=aD6bBq6})wkqUO`U~{)GdZO{> zSG1ej`Yh=FRfnNaeDi%rzx{|l@{6drAb}CH_Q&t0kUkailh1iLv`!Cy#V@xa0wWl8 zFv@8*KKif2UTDL-r_9KAh$KKQX&B!P1ORdOz&b=hnFoj;R6un!K1_a|E)wDD@fqO} z^qQsT4^D!l&UhFErL3j@Q7Gua4kJYI@1A%n{4Z%F4Eu_Z|K%B;6?GI@i{_}o^K9JC z+y2%zyVvD?y`DyR8jq6uyHr6CP}xaMG>czDgKH_G#+61SUuP%7V?wPiowcKzp=$!G zLe(^giq&M_sNQRC#CZ-3j7_EAZ*!}}-u+y>R+UHRFwd7-yY|S4I>s3dIJ=3Q>YS6; z&9QeIZ7_Yl`$tuS)ACgbQEP`;(n0o*MX_`r6=~NA;~;Y8gK$xr2a}64*7Z;=7Lf-Y zdm_Dr7((X(W?-uTZ&z&r!;Q+;NOj46^x%@(kyin4Mgx{aPICkfASw!ci$K#ewt5_Y z`)z(y-#atQu}Y+@^IGNHHy7s?zV**d*^aM{on~ehtUKFv&F==$4y~dvw<@U>0R|$4 zX9_#O&fuyNDn1k3!AtIx4>P{_?%gp$zoId|~-h?97}xUyCFu-6uFo>$8cJD(+(fom1j`3%)Al9}z<}09h zNvRiyZ`vW0Cf*AM{cK6CJ?#<=*9P|f2Mp7qLh^cXhGPKScv9BM{>f^it&GYdd-Pgb zH|9I4c(G?U;H(ArVVvs1g$eh^YyOf*gCg9-(q2zv{&zXCnu+2&M%R1ix7K;3mNP4q z#^7rr2IT<`yi*F=TA|Sg9Hig}3eKKE@Y=t&7R=chCp1DGI1f==Q$B^YO^K@1_{T(| zk>l>p>znj=L;ZV2-)Fb|w(ME44(^QUCrE*Xxmxa5{v?MCpR=|ZaIUU{Z?CHq=fiS& z@J}~x>Eb$6t{jIeET(m9U+T#9x*M*dZznS8cT}cnd-?AY1q8mQB(;H%+5N?LD;kI! zat0T!eTg0nnp=y9BnOXdv&eE&Exy(dS6Mi96c3^Mn@S?$(PUV=g`uOEbrh689 zxEuK~rbR5!IGCMGgT1hRFqKJ2T{00{C+A35t!j-6&){IYj#>0#f|gDdwMqDj!9T+@ zYpUB%J5RgCI&^QC{>JQZLbH23dxXvCxUiv@9`6m(DUR&w-6a4cGN9H=azHh!VHVDW zuUC<&tj=?9KL594*0*e)kbLX(iGV1&ia?!@AsnacQ_**vu6uKiq6rNfw3&ijgyy*6XK*_5dVnbMcH#a4FsuiEiU4tx)2XF6#Y zdQWBY(W4@bv8Sn>tV=IOwYZJH7P>5e_!@#=Y3NpD0YV5F0c?b!X##Re!Rf}r@mP@_6Z}a<@3t$dnQ9sbwf?h&)gx_TiJ*`a z`cwE>^(hNZ&EzI2QISbWvmgq{n||L5>&ls8_4CPKWEBfvAsoGrg`*((sOC?IS`V@- zUtT!nUyvvamwY&^(#Boeu$zU2x0lY7Gs^{zxi&7#48Mf~8Fd^Kv<*y$ z;Iqpv+V+JyGkNZ;l!>f$Tv@EO&3!S*?#|{(z{j21*?p&8> z-@oz%#?j@Y)yZqS_&UL<)!%AOSTp*Fjs@Jqaq!8f(@Ie&m#hV{=Sedm6mv9lcU!M^ zyGkss+LXD&C?(;rmP#BnKV!?m+6SL+J=6NICAA%E@sbP$zwaD4GZa2Spqf*L_qSl+F zV>QuG$mgIGZuLu0n6WWAtmfhDMMQ4uN8;qv#&>0A?Oz`?SQURjQtR?GM#Efz=Dg-X zXIiVBnw^SuQExBrHJH|DxDbhttrqjfn^;QTsL_z@$IOwoxLL53& z)GtlC*!}F)>s(v%Tx-5u;F?(^|M%?O;%Xqlm9g`&{+CsT(Ai{qT( zNs=}4KCpTP`&jsG^M5ax4=HNDYI{yYJtt+|AK6?Wv3C4txAh?t51nDt z5C{P=8_}WK7Py@spZnizhP02OCy``q8xM?J@4|ePn*C^GNZt^FAn^xwiIphb!C4}o z-uW^mjgT55@zlQ^d`L$qhk?HtHEi%;U`1AZt8(0pl93-p)b|7lNkQ>;1oN)eV$ISr z;^A{S$jb6nI6U)G_u5zr{rPER&4}mz^yYNIY)>d%pA!M?hzyP;%Dgd1V_h~|#f4{i zu)!>T0>fW$WiV-h2>rA-y`-}*V?~X#g6>6y-EZ&M#O1J-8jGj+&WxEkI*zSdgU1jo zpou!dJ^_^h!&8?WEyPx1u|V8=@_AuW8u>H{QmXLHB(r9mB6JG{Tmt9860g_H!52Yz+@nAYVA` z+e-t{G?grl4oh4b@gx5nSkq}52TGRP5Q_=AS56gnIO=Dse0mlri$kBq{i*$_W4?X6 z8i_o1OJZod_vc#4bm;Hbpqm3RsAau!!^SBz9mJTAAun-=y@CItgHTns`lPbtL>KW| zBm!VZITx_51(xRSDm@)+{LgwQ+OS`aOILcUz965_IBXs+knWo#skU?R# zAo&}r=x!Pz1y9`H6az4sSaRuhgah~0v82)YR3R3MCQ25C*0IJr<#UN3n5huu?C4A@ z4ipI3ZIE(*yDJG|9^sLp4INq3W{Y^|(wGnNFv0N<5a#|i*J*D!(@#HFLGwDDhZ96> z<7?qpysl7k2!e2F7&=+B%mh6{T42mJgad^VJit`@FE?vJJyNRUy~hmQF)jE>wpf;Y z!Kfpa=m)Q)Fz{tlt|&w;Jx&Uxrtc{dfJ)%>#1@U7mXk1`sDkG%I=0Lh1n`bHx5jW? z7Zh)B2l{^;9Bp zxvm9if1P+%1a&w>%gg>0eQtO%AMS{hI0hFh{i@Vrn!+tgSM?w)D|kZS>nN%!58s&e zv!%<6805~h2QaYHqL>_F$D@L6sjGp>&JOC|Z?lSQl>$w!6wno&1zSmI_=YsonRXmx zo^*}coxr}B=*;jB1Z`IS2mbZgcd@@O7Xkj?bb8=t%bmFfas2P=^t71y zI^g;k-68*TfWhZ8`u?}_^8t(x|64#%|1-~?GVbZxZ0D?n@ju7!bbmKAZ_WRKuUG~? zPulDKzw`^F`FtS#lSGRxh6IF@rbxJvbyQS?o`L zr`G4BlIlHAW>f`Cpr&Fyug3Jz=&@ZebzD^x{{mQu0a^ea6wa>tFM@_@0;P6@I80Vk znj-$OdctFWBw)*cxuyILeAIun1DC&N6Vw)tR%Sol5}c$MX|bZhT67BnQqh0Uy5~Um zacoP@!7TbRPr!07*Kz;kVlX>$fA=NkTL9005(Jq+_Lot`ZUZeXIXC3jStrlgJ7qD- zr!n9fk(Ap76A4iW0Yk>LkdT=}l#~&=eu-ERbm@Yz#7K|(wmA`yH)04NBq*=Z5!B@L z2|(?$7f%dEYrX@r8$(kqZZ4JOkG_i5Dm!Su$eo75>-v^H=^9_@nRz(KolX~zEyYDH z6e!^4#rXz+e30s(kaw5ygO9`aZH%&pUxB7k=iFx1Qa9o=^^_~f4OyY_`ly?(R$K}C z%hv%+l6w9wxIlyu2Bi2L$MxQsIlTrzvKm21cVZfD3&G`f-ItIz<#;#15BN_)^`+^U zioSV(yS=|6uz&mWeb&oiO)sPJmhun1eD(rwSe`-X@;|=+$i5w4efpPNpKS=LexvW3 z8>#$!E4-eK;b4+hhmG(*%j5iSz{JExwh$-Q{_9xMY@uXP6;ywlyq4v^&w+Kz%}AOP z_j}p+Pv7ABeg`jW-G}_kFO`)Jf^X4j8vhoLhSh!pipMYYCM!lHl?46S0cldwG?G-D z@1E&-pL3nicR!2x-QR<;=>J!%{LYscPkA#8?xvTi7xMq^Azv_S*;>C_tS_2&ex;tj zhbz_hF~1(g<-4g5{@quovDbRn|Nc5|#e%3)dvv4y)6i<)3T+-_x|v83aH)f|4qI?xO@IU($4hKjL#WA{Nfg zV7pJEpS|N*aP=f!!>51yHQYi(z>?_#dPGA1ANM)(#(N*H(8v7Luf5~$$NAf{i5yyk zpX?X#d{6h(<9nW8j;Bj7Oe26oI6?sk@6a))^gPpF)pbEoPyA?)OYkj97NH&FXRvKc zUpf3VwQOYm`MI%)Xes4w57@YZQlh`6gyMRBK9~0O_wX@4N9cc#BH%Iv6jcSGP()Yr ze9g4iK@sPFP6zlQ8;;jkYZ_)Wj-nM6Utqx>Pa#3^*M;;x!P_e=f`5ra?C*sakprjQr2Q7^ zZMvFg=>9IhAKK`i|Ey+$d+H)m|Bscy{kD1^o9up%q5Hoc7qj4e9Da}8{^?!19G|iM z{7y7qYhZ1 zg?tu>d3-Q^r5ug#4NM+MU|05kFaIahBkCdnKn4akl9Pe`ys}BY2laP+2>iFV*`WAJ zys=LRLjUA(V*m91kc9}JU;I9|w~S|*%RGgG+r9{M>X`s9g0`7zPVIGjJYOK-5avZNhZTtdGe?B1Oi|)#Y?uY#u zZ2jN1V{d=v^wJfOx}88E{B^z}lYN8`0SkMl+_V-y&dGHA1j0u*i~lO?nv@IpwXt0{ z@gt3J%0PtqtZam$;huRp@+g$=xQVxy;}_S$n0_u-d*=TavFm`ohs5>2+h6*h(wx6o z-sr*i?0JK?Y5h6=@7nz~e$UwYQ&0b9Au`YIPx0tX_Z!yvUya2WNx$&^R$zb+rn+6i zo;?BT-LJ{k_6v9a)$)JD8fS_7A4Vqs%46|Ga_c_x)?wST&0@YxDcVxDovux^3UBZ4 zU`=y03M_>CE278fX-D(0(x8`jD|9p?*JU)Qv|*j0qj@M_L?lKiwQw8tX%Fn#L9~;0 zy70$Y_4F6eGwH)?Q|m>XIw!k)RwaU|6e)jX=I>ZiO+RwQrI*g`DD$qrdtEv0#eeKS zeWs0GX;h}$m8Q5gHWB@HbQh#%Zr7PV|Ez8XMyub3nNz~m46MrS>t~Ra?cV6~n=FA)h`Hki!_EI@ubZqs`6<}t#; zeDu?%2k~rx{dJ(V65et>g<_Xfsk^@3IhlmtCG#o3r7=W!EH0=|E;$82q7*^^TwNAA z6tMV4to7XPl8tGnn>L#Ab)Ov7HEmxC-N#e)FJ+}N9|VpUCkJlcC!c2LwMh8yf1T-} z-hj69MDrM>V@}jcz{OKA=lCm))1jbg%fjl7yK?0duurD=G2mYhYM4IB_EQTs(Y0NE z#nlJ?J0OO5m(Ass4+Bkf*$tI@ITNAI0c-rB{*)OIWx%|599+C99!@GlkH&1xoFn%( zU%?R9rRk7^%a!HEG@u6aBsi&l6k(?&O{uT_e-90wglAt*vMhOKSUp*QXX14(U5Ti? z7z~aQ1!PC^B!uiKgxkqBJte1~D>e3RXYG~AhEvqej2L~h3q(W55n;5fpBdwB@FT{( z2kmO9r5)FI;R!E*=&rMl41$r(Ys!3%OT+4mmmtqFqXI zJgn4)+uP`;+WA;J{FmF29}5P{XgSLpm&)1N^dGm&kcwIMXO#==nk8j4d1q~2n~WI-etvkg8dld+e*nsm~! z>NjF-@cKQyK8;~}>A*y-t2TAK0Mam-2zt>5Dt>7d#!hjDF9I%J4koJ0< z0XH!lzno?CxKtlaUaESfdJUf0d`C#_xGS#*wzK}#Qhv$zxQoovnfjyzFbc|>nZEN_ zeJuuKL3DI)3uVSa!l1%_*L{%G-mqcf11K^U_#nW2n|mBgBd#5916Y3dYJ99O`jMwK5U!Y; zFdyQIU6~a@bFON5c%6YsC5FX%iYa;!9w`Gn*lHFp zal$d5(Out5DJ{|`cs9=p@?}EJ{ zoli)F*Kau;K7q>20#ST*N#|8wya(j}=^{C5Zi@A_a=4WFdq*5ZJ^llcB5<2PIK=81j+O0vA_1^L)=_y51u2h0 z43b_LrEWGNINHNm=xUDNLWv*C@4XI_>+p4xp2Y3gaR21(f3Jb`Me@afuc@DCerovr zloF%POqTam4Gi1HRY89pjpyoWllIQs01$(PrS`pUtReO-{$^GA3oYi12l0k8f+_<9 z{I;qW*Q~-|jMz7R?%(Vc@hUU^?tw?az*g`4`}sN#iCV6Y`WtloqjTMNQ8;E2z8OG1 zOzP}k9*#Ac{9`zNY2zM$NlG7_QXy2tjqS$1_7_+jcNrpkfTtrvsYqkU=R=t^VZ*K$ zkM9G>tEVisiI0u>(n=&I=j?h-$9oCU5(^PJ-vsefnmZ(gGjXySG=X6tXqO{h#%#gY zyGO7ukyzC8Tl_$nf5WG#&a{?cQyVrz^D?XNa4~R9K3#DM{Q94};x({>Y9i%#lDAdu zN*#RONUuVD@M8mbT_4RXWFV5bfqI>9`#J=lMbIakVL`Lv;IIPTsO9&ygJ5uu%D#tR z!wzq<_Z&ifd-FSi_QKZld`7`Z?$91R%tP)-*uF2B-q}n@LIsu=bWZNjyxHOX?b7&8 zl7GE%e8hl%@1S!@*a&pX{?^KmSM7>TR9J9IfRDc1@fN~AIK=s0!4jr_)}Q@= z^VE(|52f>$vGYGzD<@FbF}RXwV91QrA-yX;D0*Tk_2UC!GGWJ{|7_q zQUCh0e^2(*aL^Mc)%fPM)J8%+50bgW9xr|W)1u_6r?*D2j@_~LABgCu8f^Th`N2-g zupe#K3`hYUxThD9q$Ho40Db0iS3N}#tiMpm&pG#o8JVDm6oKIr)QG#tR%_MvYoZYe zn-HiDnhdWBzqv91Tb#gV0BTux-0NrR)V1pD5uNLkCWzq}RxjTBg__kKRshf1u}@?UMbPGUv}KLbw+%N1=7W$NtT;EFGdi>?}4VXjH%c zX#1tH`>F^2QjaP`SQ`r``$ZPyt3DLNh5W)=oBiP;JoDZsEBCBJ_>{L4e%4Gxc;SuI zj|VqiuGVzw1iR=T@#@T=YUh!%5jVeL1AOc4OVWj_J@Vi%vOte%hRm1bAJ6t*?vY@|J50t~aEe`C%^Rn|hiAN;UFZ%IZUljrURv^Rglo6?igm>~yt}yZW69)(K zB;v?E(6-qD}b=eROX#g5cX=X@_P(7z*63^{XO8mY zg=j8!+TrTm&ewkEe}<_#M+|{(1rwB#4iUb*{g(ybsE&VXUauTH*K5x1UB&)iW6;mo zAlqk?9Si+EwnA_B`oI12y`kR6!Tnz$H|zO7)F2)G5C3WUV}H_x0e8L<)LY*37u@_W z!@Gt5<|cj5_xnFskJZ;lJL&wsDkuN@^8cUi_xwbEH~c=A-2A<-+E4cXui^gAR)3rB ze`o9WeyZp|35Ez)!UO>V_MgM{#Bs6ZKb7W%_qqLTk2CHcLJ&a(+zhQ^w*-IyfHGHq zYus1iDT`EKY7<)H#G}r`2K;?HgAVsBOKTtKvFjrAD8c9$w>c|xQnC_SOx8lV>9Nb z4tRuX0sIHeVftR(*ucP$NFR1UK)r1LTDu564{w(dj@K69cm(O>{CnDnkPil9?%NCe zg#oVIFd3DZXZG^I`NcZ)M8WJtD-`@4Y1D}4_A9rUCd?~N*y!i~#Bn|9pIAXw8fXPW z|E8i7(m){PvErM}jqV<}-Ro%+sqa6RoHae2J^H$BN;;1Ed^?g-pm zXr6_XBt<%ElgH4fb-1H&{XclP(~SB?mgL@>!V1!N3ItZaD@cda;V=9*zdIPx^!}-a zJll=@zLL~|Gl^f>g4gV!Guk>N9d@A8SrZ&3@7N$`ucvRBb4eM~XIK#deE7-=0sqBwC;6nsS@Uq%uN7+AjS+f? z|N3k&9hLd(|LN5|mb!hmo33!z!0029jTaRWNpC^pQICb36NARs#3qa^{HtCKmh>z@ ztdLtS-}hY2y7rR|sJs7?>aK|vrhyWwV>Zs-F)BjfpH~T9i=d6){P^;+2(JWiuX#JK z@!cTs%#c!iykc92|2wea*&^@8Cr*}mpELeb0x~fWzJ>^z7@U^FW?P2kHuv^oENq^j z7@b+UUB_$2+>y5W*(f~=7>gv!1H_@Kz5nlym#kW*^nc|UhknGb-kHTZ;cav3P3^bn zuuf3rnN9EZZwovX<-4W^13nE{@vd4?s|?q;;L&aU_oh)IR37GqH`Ojq3*v_AGnzrV zv$nSn2uXz83y>LXKZ!|tpOYg<2)=O8R0d+jSZ{1B4JK=NGc96f0dm(#d+*?cZ3Z z>?btE!FKavu2?n`a4%$gj$x?UYvgXhZ&)*8VuOQ-tRRqV>W_vHF1EfOeT@65QDkBf z@{FLp8)~-i=XQkTX-*oEUp@iQq9`jueyETEA&`lt=c zQv5}F&aEwzpfIbg8iGGWxZl+pdZF_&2DLEei5)4FFMA(o#jnM_XI*TSoR)_Iz9%UU z6UptVo3-#He&B={2U(K|+E;~I9^|?@vEjErz7`}^;GS(*_FOH3`{pw>bS)MOjNh@i z#N!O0>`+fc&Wc+@)orDX^YyToUtty!vPQ;baQ?{|7b=`h`fL zzimX4GSF=m@fC#MwLG(Q>u3CZ_2|mg+fCU5yLH_V*I#Js(hk?rQ3mzpH`}!1F!$Fl z*TsApICFZ@JjsJ5E*(IaS;CFu$I&ibmpmKP+(;%qxLTq`f!DNT*n#~@2Ve?{!=NsK zavVlOz=-I}*-KM5y%o<^akJjt z_EW9%Dq%ZXYzdiPY8(wQy)HSoG(R;RTSf>k6RVK>q#aZ+)uMV2<>c`UK#>bHtp#Zty|9g5ZY2y;L2J8tcWHQxUxW!?U7J=tPkyGuN; zB@Y?MD+%}QK^vtZM3>@zbAk^|uxz`XUDV5%n^W<=hBCuoYZ2OChA zZI2cM25JchmOv9QW{ULx>jPDpj*v$gkKB>v(p4fU@={ljXfhhIs){JpKWZpP&~D&a z6h@Q}yZn}`D*xk`Xf;o3Dl`bZ(;xJc_heOR1!)gy3W$iBgD?HIHsXGc6LXbYOI9@^ zAlAB6Up4)95AV8HV9IN6(nG*&xV)5n&&8E#vb9y0HHP9rr(lE-=4X9kyQa+ol)oFq zfn-zh5X15%!(P5(TB;hjd8V};Y%B9q0Qkx8p1$a87}HPa$-MVc!@bho09$rLV(fQ51s}aiVr55J@rWIs!G@fyw9yN=;3H#LuzsDE4L6hL$PHXXWl{XbXvzaz{ zP-> z($Ff8nt>Ykj7oFx{0v-uPS*b?;o#NdoyRTeZI$f2^E8tUjjQ!a$9~hnX6a8o_X1!E z5*4DAHrKqIJ&A>D>Nq?fB51jKd`&I^r~w%8WW&L7C(#%|c6Ahg+kBs7WHf>T0w5x- zaHY+@#ERg_`JI*BA2W6vleD#szw*NOl*(5fgA}u1o6aciAc@BZZDTcgCCrj@&2K`Z zet{*M8jwG4sF{oZ&Vr$r@3>HRHf31#)S8Ir%)V*ZrCPIMKF2rzRuX)#)h7RYJ$`GJ zk?+EOue=z_F zZM;}=Qy>s^ogz)|`2LuA4C2Fs`=02}PVYlsd)gt(|61in-=WqC3@3?%37A(xzARva z#ZZ)=ayQ5O)1g+&+4OyusJ>UOE#g1*6CU>`-ufRyv{MzoeE;C(>-*la?iW1&r_S|! zz7iDTX(>zX{BLyFZ+-kXcmBcG9|+%mkHF;T=^NfkS+2D^d2$z`_&)W``V>gBJ?Yf_ zXn&sHz4vfF5%baI8oLr7+z1Qg1dJaEaDSBV5t&C<%5(m`#IU>66-EAIGD|+$3SG@T z@&~43Lg`XwdIAvt(XRl>6oa6>q10|88X`fFhwmNnNUnW9y{ol9AL>mg*S~)D$iw`% z{I;v3el>lv{6pK{6PEkVLM{J3B3H8q*uF?9)sgWVse>-REF z%{;UR^#i(5L~ZZdN%SFHT3WmeNn)bPA=@^_zYg>=VHpnaZY;aB8>gbP)K8j=7F3fL z>6|qMoS?gS@X?+KYxiO{V(~#QW~tOE3>#2kt9gF+@@yAJ5wYP+n3UIv0uce!v#-_H zaWF$Ey@*Ihm*2;j6xL#!o%FV`;u|eAG)bJ+kfZeq{a#H-2V?smfs3o7Nb~6~bu1=*lJNvUizIsyD0%&1)4{_f^sVUEV3oE3I7Q(1o;) z#o@DNjSy*{$ZbrgXbfm9>$e#?M{LJdWvaNDY++tP6jajD1P~gz)RHVhRFVGATd^mN z9&oa8Mx(f#GnAx%ZhD0r%5AV5MyBF|+6GZfBRSsd2YZJG3C?R!efD^~8#$=q)z84n zdlC(@V^&9)<~J+ON~?6aTodM{l-U}O(%F?s4+^QbW@d!Q>vc19$5v8Em>P%h9HTE< z5{0DQfSsyT8?+)~WfzROMgxr6ETSywE+};u<`wT8uO>>hDBrmql1BoN(mRjX-x5mv zic!&G+r!!7o?`Z^$&ffyqCPp&s0W$LK=#A2dY%Bt_jlhfTL4=3ks+gMWKU{Ei-TSL$pr6%JSuzkPLPgcuWL zlkStp8CnL6t5C!wqEYTW74i-a0Vfew#XuxNQxLTN<^_@=RT6y7>lkv1PpPr_s@v-U zqk9N47Ae7Eww{}*$vIPpgGY(pN0>fj0Yzenr7~{GwFoz}@YxnG7X5N(>>Pv<)HV8x z^YlGyh%GhiQb;dk@Sv@!ip6~fh3+HJeD{h){8iKD@gxH-(o?s!T4^Frz815LRG0D| zAYZ(9L3112_}!V!^lH+qJpt3;%ByC(wbi;DPyauUIQDkiSZXZ6UbVu}0n)#3j1`00 z8K7_2Zg~-k&&R@p%IjP&UlYymgoS6Uh_F*Sae)+Z)4S2fr`0Gc-4;4HPuC&eD`_JUT($=1$1Td;- z@tFyvF1I6E0(ZySOOcV_&wkbRH1atT@Wg|x?xD*wf)iqv7DfTB z%Sgnl!paH5SvaossUm>{k5XRo?&}t|f~9#tWQ>v1jrs~(5T2n7alF%2lh*ND%C*vu+C1RPon-Xm)ODGx@QG^A}h zi#rS9JfA}$@~|J{x`Oo@D<;oli4!p+IU!GsuQ3K@TXyJ)=5HC^w`zwhB`sz29=n<@XHAbA zKdP;kd388GBJ{b?IaMd*Zx2>HT_-e$aPjrX)((-DT-hv7b(-3+zD^=erQI0pC*r4M z^MjpG#oL+8Z`m^4W}`Qo51JzM?y_~5+YQQ+@pB?qeR20g9Zp6|of!}ppD9$8?+~Vq z>0CoK-wPtffIoBz+10wH<7iZOqoN}%q*$D79Bj@%Gg*1;mAsNMglD5Rp4OQ%Waq)V zi5QHADDbH8<)cI%g9P^G3z+{N{J9JmoVNo2)6n^j|7OaB=&b6_>a5VlM44-KhT<#K z=iPR6l`ZnKiO{+?3klJr;5|vIg88dmocG=^IJXJNgN?my3sHxcgCS!93G) zbLOb+F-ff?XQ^nG<08VIR7`=}GH*AgcZP93zMD>=ap)GF3>dtW?vma~d20OIGH8~+ zBAlj&y6%!jA_otHg?V~KJ_YZj?dR{WZ5yPWdnpvR2&Y9}T?O$!9T;aFcaxCuNE7Gv zV)p7RameEt!6QREC3wFCnlKE&{d7MB@KqlzMIXs~fkuBi7X z7-6q4Yi1j4*yOY>-;GLX_*jHkFo97-S2r>>Xf9(#kl(Gy75Oc7*_umbJYFply%^xt zY;s`tMJ(>nlOaKajMZXr)SU^xLMzu$m$Y-D;P>)>&v(GA#lFnA6k6`Jm}zWN=$nLx zhm5;V8e$cX4pM4%(`1A)%$XZX2-u}7no^bhnh26oT3Q2yXL%>XY_}y1nNuvsQBxI2 zhd_a3@e(Fs*Ix9hYfm@Hc@<-RQQ@*b#m6~f!`&JH;Yy@(w{|%^zEwtS>^eQHJFIeC z>D;(R-17xJ_84^*vMk^m4dE%7+wU5_&-D@E~;r=~REA>42tmMDPSNIoT_dUD% zH2raXNt2<~c%BMm%%kdJ<2=Na_A3~PPatuX#h5Y)I>fKUg(2C+&>Ixlax>T|W-9vu zWp|RNLknCxnTV=kR?d&U<#34!#9JNv3k9V))@$RCdq+Ygh)W<|>YpT;@<88RaIcid zkV*mU^lHq|@=z|BnI%@P4hzQg92%mTs9Gh5qmim`J|~cm6w=X`$vt#i70^OG4ueCL zG#x2V?zsUVmj%UaDcv$Cyut0sY+hT|uBXpb7$l+@QpcZ<47J=$88ocjc!^qKGcVFe zExp!uVJXZLPI9^$5w(esrwG)CA`p`kFpitrq?m3F<|@R>cvE;XNE0tBHE@`-nv!=# zuKohdZmv~htlH!sUtYDA3?jet{RtzK@yt{+A#Z>89aTsDW}@&g-ICz}$;sQ$;!dMm zPQNhD_|$EvKYklzE9sQ)Jijp_E_k~)IUVDNX@z+5r0n)iGLGS2I-qzfiD@P#q@rQB z5>~AQ1*YF_dKXH~)I=chgf!gsQR2*VP_j&+4=;rE&!-7Seq~h4RN*)hgO`Y%i%QL_ zdMPoNsZ~IHtdx(`Qc_BWs}Pi!>{VDijCThczeb$cFX3_DrH|2bU~E4h?mTpq`U0w~ zfux}6H?Q1?waSytRt~QRxRXZG23`LWOen1IQQ7D{PKrTLgb9#N@E*8)e6*Y?WW7Vc zNO8~kt77A}jl6>I?cBDemZDou7FA(hBo1HQ$lok(j}CKus2eC7DnWh;=5U#&DgrY& z+>_9ZLo&q)^B*@MYwXsp;^J&QWKUN_E|(l-NpxaVQ$#uul7+H!JE(OtU@YP5N53ip zPQF01b=Drskq0!%9(*`RkW=Vffr>kNjjCt>SG*C8aZ!dwh9#Kf#T zDqFEgDdCcv%;~-j#B7FP2J(*g50}Kxr$6O?tV@ULN9Rd`G7l>)E!@aCCltZeu`u&l zu4P1C;Vv}R{(8SG>n!N7;I>OILa$GVtno;hMvsi0ZuI;0lFJ~N8KDpv^$@ALF7(GL zvd{3K?S@W5?1``|&X=pJVKga|^KsD49tVem4TD?QECgn|KU(AOGM9>^d<2~z8ze~m z9t($!$GNiBYr#^e?&USqjhyFyZMuELsds;XnR$nz6v|46lwri;w`GHG4^HQN#&&Fl z4x=ua45ii6@W@TCo>n7E`7dy`5j|^6R$l`pn_EHlu-KU2MI*zh5+0`7N&+-?UqO{*_WVo zGC9F%z{O{gD3_R~sMb=OIRm^xP9cOFEo~5>9fG|rnVP;#CnQv34VW2P;1SEsM`dd? z^lAu8{29=jIztI05gW+5fK!*T35%M^sD>gl2QFM`DG{cJOBwMgE=P6$dSJ-_K zpIXx9%AQ0*AgXI=qDAbN1?1=Pvk%fryOlJBH%Lp@5&98Zp2KN=JSRNGJc_62JzsXq z6f-7Lx87>)NvO(5_AQr$PoowXvS*%#@V!})r<7~pl%$P!G;{L7N_Aju+-Ql{;BZ3H_+G1bF+B*QD^hWk;za*R=z zsDLsCDRRbK5>U7k5hKVeC!X^oyxsLI8Zr(5eq~)+^HBpC6LxFhKH;jgp;IN1^dv}9 z8n#zfz@SwXYS>yqWn&#p-!&W^{)c}YwQ5=ddy3Wx8ne~#ssKB`)I%UiWJd_taArPr zi;FS|%mUovwW^~fgJ-CrB(9^^VX4AONi!Xl#-k<~-o2{4wntnZKpuT}Sj44Tdb-@? zmCh4?iEYCw9D?O%NG_7drJ|NMS{Y<4z zXF0O!BV!K-Fjz-Y8-mwV`dy2W@%Mlv5J|TqNpms@w84@zr0e7 z!0e_zxXjmw(cZ8jQWW`ZvT&R3>olmo8VZP(pq~j&1%fa{o`oI~enO(rTDb0E)6}Ok z(!c4E8N~a~=u#sRvhf`q#h{ew0yE?&mJ<7y7%~KF3;c@FOA_Kxo?DLUvfL&|dqlI^ zdaY=vk_e@(MrlgXSLOwW%#K~_QAFvZe`RxyAy~+r(i1J?rz_dY-Q5b zi7KSXkxXr)Mg6*|n?2rFCd}0~Z1NiBWDVko@`&6e}00+HzN-&%2+xLVuum*esiRIza4CC5@qz(+Tw0c?nFY8?r4 z1bipnf*pj-BeqonoS{H0E6~+=5Ye(V*hBN+06Kbe6K8GMO{XKdU)a4r#)(};6%2eU z`bTgsW7Y8UkRargy`Xc>sv#7-6ZIhem4|o(yKiqSHU~G(hs%jZCX?0tR5922kk_Pg zh&PywESR?_=ocmSx4{2PeMt8w;BfirPhCj?>%m^>qt$-SN41joc^ ze?yKrxw&BeepyIq#OR^Tt%kV}RQCIfyp8P@m#nGQi7z$vwK24y+o9%F$#I`r2byav z?Z>uGxj?Ah=Jr-#;w>Qe_SilV-5(t%15x6}odi65bs5<$)9LY)m&Ago8V~u1pi0c# zRAHRQF>xDNiVdCJ=I_#RxlBYV2D%v$O2K>{6(m@eEy}p~^rixHD?Gr8>djW(IwAU% z1jFP$Mgel?s!sF5z>JY~}jN{KB8eo{MC z;{zbe_1wM}Zcv*@lBuIpz!B?%O^)G2Q(A<@W-@3-sY_0A*vDz45U4l>!(dhHDyq6V zgcurQ#5%Dd*t11;oem4#b-IjH7nb2uDlI2@7TCqc3(enfDzc}!;9sL$3-cxHr!e*w zfD4QKUB$?obwrcaFi$1$@+V=vBMi*}v0kN*U09T(^iMNRQ8rFLa5OZCyzB9fX9W=< z=;>n{Kujn-n0=RcroQAggnwO`Gx4();GXGNnV$X#m2o&8Qxk71Yp#-6?{R-}Q24H) zqwJ2Ea(y?|0+EIqW3&vir@mFhpiohGu^Ypr{|ingiWgv*Hd>2%uMqRG%Y$Z?UYZVz zq|>!VBCTbOk~Cg!dQ0<7=5Chk;mU)oHJBsxKOr(Zn@1 z9nQ@P7PzWpFd*bS1k8CYvd~Kw!F&N>k*;CdeY<-4D{52=O{*)%n6qo zqQjN~@W&-HcUTvS5#hzBPi?$I$Y7lU4lzznN=DgZ)ZRL1&6%qcK-dL1O81obx33*? zPMf;Clan2%=RCGh^ zdd6`Tk)KO7Rhl{qv9nG(Y~H-BBIBKOLZvf&nOZeyvUDQ3uRmJE4Y`~(RRT6of7S4rqjsilEyL<`}yu6k1)Ad7;S$$8Vwb$?B{ms=4!z?daHT--Y(WMe;$u|0#W%G4qQUj-P|<>(Kc_!EgnWH zL7$1j_08^aGPZqrH6~=qM*S*1>Rn8#viEb&I|R=sn+_03$l~%hYB$l6(Sb4mDq7&AyHmW2NG{V(eU%F-LypL`=Mu zQMwUA^Lbl7LI$Iu<&|tOEDt}(+4|euP06S}!e!@Db%<#z#|gfuSQ#ydQG(pdb(Opm z$PwnH8W}tto>}bu`u3uv*8^3wb4Oo~T{Lvu48_OR?@d#tTVd|`5pkAcCCqS@fsQwr z7VFn=rv1!Yyp9>LU3wL7cMv*tre~u08LWo9z73U^pr_8uW*Sl^@>DK*czme|V4)UC z*j`+=fSR4i7HK7pac1=yE6POgB>-TTCo@u}0)HXKu=uEypbUJW>b_4YD5>JJJg0X` zg#FXW_)kMFk(sHrAki2SAi%FD%5L3b!3wgnRciB84IJYt1C^r z?RM0zQ~YlP;Fx~6u*65RPyWhsXNog{Pu!XHe}2-_XO0ALI2oDx#Q8_%TUT8SxbHI^ zoWGRtBdC{HrVWquz(LyYzOMUEfj4X&UBk2V!N5b)b>nW+2aps*)N?>}0*+a*+USFz zDi~0`(owR!NWt}e!g+omOHz~FY6g)+sT1T0zr(QUlHlV6@vc6GO{0^gpktl8UmKmR zl7#fQ_h~y_R=2H(frzJe-Q-+y@e<|;PSdnr9q$agTF0?0=C65)jjlXBZv)<7xPF@^ z!yzpbJz?!bi0O0(BcpPNUk0ZnXBdtm`l+?1TR4+jRV}m#&$w#+U$UnAp8>rM{?r{& z(?Va~--j2w+5|Zr3CoX)a~uFhK)JtrEy^`Bew!{}g{NBOgzD5?Kg&5nV~{)@XlE2Y z&#;9eQ=zLPhXK8gCLA^uGULoKWSof{WYG8Wuy{i^p0-O~i*3xOF+iHxT?ZEj0L&LF zYBIj}W^}ku70ZV5p)t^2MSj~V4C*1TU)*1#h_?;jRKAO4?;PU>buN`>D4eTDW(JR- z9-Goty?W+MQ=LAF)VC^{$fn+;A%G@|6!9}FzKIz>lMAZ*D!POGS*t=y#Z@67ZXmyo z(Z`doha}9j*+`Bd05o3FzG{>;t31v;T}i zms%^Dd8xx-K?U{hH;nY*-Nj+ZStTCfUPjEbnJFmzbx$#loxwaQ;qv^bWZ^!&Eqnf| zDg|~PtMV|Z5RIyH z%b-N0JIvPGtFk1IfzrY0Y#@gHE0qcibcZv;m#X2I>-%B;_lh+=nk{j<@bPrz#m1`h zmz{|_K7HNK6o9Zp;&ZPenea}n!llutQrf(aUz*9?s9Jc(Yx5@I2No|G6qO4szM|_J zoz_8>dkUXFe*A0v+(@g7K;B@otCmM352r7}>yWa6IqM*AN71*vp&zREGZiEJc)}^6 zB>%M>IZ7M3dsaCynNkVfb`>r4VNF7qT{)eAu^l)RP8M5tWyu;o5(1IdFWV){@{x$v z&=Q3q2>70C$-ZmpNL+E65-y3g78Ek6rEK1zfK=k4YvhulQj_g5q5``2upvc)Yt}r4 zkC&1`%ssH^NO)OmD0F>B=h3lS6B_qJw9VRTHf?s^cXd{?X8z3OhjtK6F6_SwOUv;( zXbsqM6nI?`5mSh_w0elU4O6Ow)3qE`eRqH@R$ihAfgFw^9D?eunVZ$d9VKe@^OV_1 z#DCS}H-)gHIi}PoR9UUT%2>fv-nIldU3baGWYqR4~F4(4EJ#eoohCyNU!R z#jse6IiR8MzM~!W+3*OX>4}dh`PP)y_o)+CU-y~hx>@!mf z%%M=e2djffRZvByFEt{1buH^I)Yr%CQG}LY#a&~RgAoiKQz83wLg7t}pBE`B2-V$S03$-GDV<(#TCk*=!9?W#*q|RmK%Ub0s1xQ3u$WsE{GjfyYGcZSS1Z@Vo4^Jgf{}o{m zq##4T8j2?=nUhh~uI>u~^{I6z z=S;k{$G-QO-FBTe>Jxfn9`rC958rml*3;DnK(@DQ%6=tfq~Hol88x%tqfNFs)P8An zR<#P~N{Zs<$!1N$H6~7GBV4Xd-vNQXJ8Zf<$^<=`uC1g=7?=4jXW+)Y5wylLs$m?;nm z2C)w(ypIYlFjGoVs|e(Tjr28kvd$V#eZF)yLxyuRDl8wgWvpA~YhW>|`4wMb1ah zrVi$73eMU)S(7N#9lEUgJIBc(@a2n_r;mm`4O;ifKj2IH^Zu96WGd)=J`N-KH2$;Z zUk4HiAcXRzVaQh!zmx69^0{2}h8ex?oJfx~h29`&ZgX=+d-8)a|H#zXE`|Ha9e&&E z_^->;%-_p(&d}xPVe}=)ukCS#-A5t(yUavekhwUpuzUwYV@HE_4G}h4A{$Qp z9s`OHb5kmW#PUNYVlU;1aKsW#}aEO5;qvr#abfFs|p_= zGqa_Pw8YS8gu!!TG8ORCBX&+YSs7l{{69XSYYN1yk!i6g#F_U8f#MO+N$?CLD%ne__^W0$bC7^k1 z!5864o6&BOWHGQiwC+p4LEUc)x-wRR@ClTICTPHyh^8e+X1feT`^XbzDxqGZIruc*2aPq zP{M70B9YX-UK1qg7*mODG8$S?A~T(bK7&`m3D$JEd>N40yhg#N4ywMluF-u|+Q(vOc8yey$lxrU%s@QI>rQk+fEF(fHVp1SLZE7K4` zSbX#NS*Yb#UivEgaURi+uz!NYuDxb5B`%po)RA{CLwccx0^18BBw}kgwc6_9mclOA0B{auHsAR z%Moo=D%U>_)_)B<+CrqXuZW30k&=sXyM@f$R+BuE6HX(HnzEXm8Ze%y9-0>?x=N}k z$ac}&gZVATM&TrjGq40aavOo7(Op-PHs*qDDsEXTVZ5G#rWgbBj1>q`u#yn~^ZU+E zx9MTR^0a9Yi;5ox)3er5Em;a8ml9fZSRbW`N$A`c>w0)S0qG>@Mp*B`*SmH23O{a} z-k5AzBrQ3xNL2wm{7+>E|(WQhrEUz_OzAoWrut2LN4*N1aw@ zQQPQ3H?B*98UQWMYdeASbrHa!LSM77C74jjxE)2G68t}sM}yo9x^ zl)ec9FtB`h&g9f|r9!3bO+)QmAfm%DR^=aQ+L1BlE!}SCo{aEUVuctiZ>b)UL@=DoaJ)R(w)$dtCHPp^(HHmXLeo_CaP=P zDN0+ccz5seZwkn(TkB<@VEVnqbY&w_Et>>5)jb^iYC#_6AK;;8!=ar*l~&KCTw9=d zEb6gRe6Y&Py-@bA32BQ$o~)GlJA<}p{lwD|Pz^Jzp9VhxBeCHKx%<7S*cV!e?58dj zCL%-fN0C%-Qf{>r7}%84->Gd!KYFtT`rWJ#8YQ|1kSVIzS#lzXt#?|MC?g~Tu7p`+ z4y6npjm~o`jU693c_i8G)0 z6ubPpZ2}7ZU(@-h;Xhrwbjzfm^rBt|zyEg_iCNkk?=oG>AW9V6rLBC~mr z%|cF_GBSpJdxL=0UlVfQT>?o&FRPEB9vsP1Vac}DJSElw&M55y~@DDEl4QCq}!!Ux_EaL=-|cWab4 zyzylofwL|2vi@#6hp6PkYWH&+3naX3JT(b0kjq}C{iiA9(C4J$7SP0)#FT<%@EMcdARo)>e>7}O4C#cSYmP> z5@McvCt9(y6u|4Z;JvAo>AU`p=KWg>kPsdi%5k@`@7|%L-7=p&i7U=;AxG6{c=ASp zrgd)BR{UYk!GGHbRA|j}Ms529F}mR~KM56*XP7FDiEGQN`g?KPM*`o|mgVFcwPW{$ zG|Q#u&zlD8S21X@PS3AoUIucG(I@RWhU*QKU#+I2g{MWBf zb8&T7W4%z68~jLgBDE`!@LCwLrI< zaAEs4$~SG4u_4&5P+(BB{ZXu!XkY-NfOo2LI38mmq-$f-(Vv-&k2hRq;TSD-_!)&G z2*fV%5-s;h3Q&Rus*3Ru>ao>iQ4k#9#6pe}%uW-|CFc*9BO%p&6#G#M5vUd z?w262#%Cp_f3F?N_~1*L{zOv9AUc3T1=u0xDJK^WB*6k^KId70vE?>b^H8g z;RSP}_r>}`MYm|MfH)xHS|Npc-8gW2{GAxNxJN`GJq8LFDoF+m1p|!yAawDgSeZN5 z!BtZ6-qA_rtCoNqO99^iP?UrTHdN4(tzjGVL}N(HGQMC zT(@9?a@M4-QxwVyA?f#nD%}CusX6a5M_mB!RQy+FkqL2)R@Vo0JuxDlrn*f)=4Kh+vvg2exZh3 z{1tMyf_QkUN@=#0#h>k@A_Sjg2oQ2*tH&7Zi3g9Zh|r?g93g24ecSK{{)V4`sXw z_G&qAmiMj=N`bd%k!6entseoFX=RtnxRmiOees?!_HDp^{Jl8IG zLJsdUu8CBAtVVCsV4xLPuBG3+UkMMnD-J=RfD9$TJIx7@p(M-S3!B@&=Zxj;V)d1Ms^CSZd1Y}#YO=_3|HH-uWJv_4~XDcr|rp;r@t8h4{Z-M58eSEE*eAtF_IBIe7=T5`HW$qj# zM4)*hBFLs{K7<(Z_>W$iU~#~?;dSI(i2M_w?5M)>nHDk3sYqE4wrim#YT>h>CUHUg zE>|G1j7xe>E^F4dP#D5<0#*+GXh0L2oaty0(9tG!m=`oSNr?_|>A4XTD|w8>_7L3T zl1{D<0s5nlmkufuq=+fhy*gN}Ni!+aLRy>bUzT&nqm?WRk2~RD_uzX?&60Y&YcN_u z<+jC5rVt4WqhZ9hy*1G5SKMN_=8@$D3<7(uj`wwF1>@3_hPLVy_2eY*(Nkgcyh`*d z^d0sQsK`jAT!iMhZ&vGEfyl-2^>Wx}mFg4hB}aslGZ&J@ZclKoJdP2>+kF$V56I}i z&Or)}upyjKlQKzqky*VvyFo_A-N)0+j*TLR?9k>HNxb3!kuwf&Gg3oi+o+N*1dnB( zXF&$8{NeoqC^p|2dK=V3X6Hr9m^+(;SAD_d44nhsb)#+|TP{1y#)`>Gs#i`7i#hK3 z!AjpSK%Ig7e2R_j2I(C&EH|i!hk|Hu5|WWmFiBIVTu`CyBtCV#z^lp$dmQ;3rTeU6 zW(^JX>FAOhvwgJo=D#D25$&Vm3j_ht=^9Whd@U?a(AIJ1wDQQhbp>A{ z%DhH9sY;wZi5)t5=`*nx=BioDY1V}eGGs>$>{9W)mcqc$xLAo!6q#_zKsybH2(F^0 zk@F&WCNtS`wo$KwhfPfcjnZT6=|qyzYo{D^6r!>&l!!8YbL!?5SRXe#%ovL^4r+OSvm*DpF(= zlOAa#)yY@{tMat4NKp~2tw}DKgy&anZ%GB{$q(p9zniKPz6NG@iOX}0!U=L`tz>3! z&54Tl)5gS}ZK$8P{@R(d1bT3QwDBWue1bck1AE}Dcww6MO zQAEE_mV6laG;m*c>b$qov zrNPR|FW7n1Fhn;JR32V3#)*UIYu0Lls78>!35 z$;CdE!rCr%F4T}-Gk!$ret-d1xv=bCykY+z(+ooH(l zumHDa0anx4X5Lz3u;Qr1;ZT9WNdHCr*OC|`VS=YkxRJCp?JiiYSdEaNaW1&DcqXQ- zayU*rr^^S%*iy~v1cy18d`NPV_~9OysSL=Hq$}Hae{E$X&busq1a4Esb1HvK&Cdq- z#J0#;7b<3pSQoS($(+_dH-1v{`RE=jp^MYUjj+vPyqYKa+O-cm1(|5ROSmE>=Gt}0 zV0K>4$&`K!k{3z_euWTN6vv$0Y;tZX%O;`LEA}AM+E(x)anZ`gk~k4iqR1>D#66)P z^Fz;(^XMa(nL?yly{ZDLITIfASWSso%=&ylun{e?u4`?NBQ+#SOq{UOWK9G#wRlJ% z-B9`CPBs%)KzB?@yu!wx5N-+wqah9=S;dyX=tM13fE03r|wQ8Zv}(mw}0x`Ntfz`)oGIs=b^mE&PP?Ea;M*>RLRwgS@S2EZ!SqLnUTUMyMvK6vZ+JbU}3V^N^gIDdWS9;V7z1w#63B{AouA zlEjrf(uA#wt9XZ=VXg6|_nMf20Vo-rx#S3-gObXoz{YSi^iUzoUwc}L=M*2p(N=cj zYDH5DlfX&1b+S9z_(<22(Y=TBK(zfmxbc3s)1}<@J`~Rc%3Lg)vT$tYR5GwmhevPHTt<7US>G0W+E z^^2}cG9p94xPEzs;rUw7SEyAjn|0RZ9bv%6qZDoo((yCoEmJ`&DQVL8vb@5$CsCkd zhUz_~7A7;o304yv%I&xWSv7IkwdNsqAP!K7lbnybQ*FlOtS?|D=QNrsl?kybP|B2; z90C+ym1?&mHctz(shU_4{JuzDR?b5NZk<^cxXK|NZzEE^AkSHVg|zw-)nhS(Riy2M z-ZMBWFq6=5=9n`NKseTuxigwHW)kuBmrXc{2Ez8sVxG;&6`^-i6Tzk7z)g=r7ZF&) z@Z28~`ZLsKJ3fR`0Oo*Va6`A)gQ_VQ zgvbPDuv1e>EFlxtL&Bid`@yRq!Fkb^sW`l=4okgN&KorvLVK?kJcufjq;EzKZlLWJ z*CIhPeX7oH6~8fFBmJ}G={1J(Bao0`;lOM#v~#YEL#gX4_}Mtx$+ykK$H7wh11_?D zlV)9Hsh(uuLO|WDv=|FuHp^&KUI0edkAo_=M1;9m!f}P?*TYoqwGuMgTQm{X+{lb+ z2qq{)TRS}X=ODA=MK>DXZVa4ppao1Iq4DBpqQsUKE?9=eI`fEto_qZTega1GEl@!+ z1>S?L1L^PS!v)#(a_XsR3e6_f$G9vssjd;55fn9)T0SHN!#h^+vN&?uPza9Y)(vxX z?j{y`K{=C>1e#mhYz!;1d=puQl3g3lM^;;-ya66r?%RxL$}11eV2)O`S+7r{q}f=q zEKJAEW>y~o$_5~(V!vjQ7SsJJ%i^av+;A9FY8@HPq%tMlx#jO$>_1N&{UYiR87&D2Tw(+hxgGCA&f>P4BzoDZ!1XRsY8QOA4iz|(##hl9-6HJcYk+w?7K&dIHDQCJ$ zVn{fb{pt#--y>5Uy)q+H$D1seJ6X}so!if51Up5Oz-sE zK+73B&a=~gXe`*Z5o|F{x;PKZTu9R&yBB6&5~_uTwB6d4R>Eo0HN;71RAvnH`pK%U zv#CfWZ#5tpJrbCRdm_uM9}SRtF(OKSpnEhK+r>QuWPa<*vMR>JAiof%hc0obHg<@d zwpwSRzobn;E~Gf*ByP?iVBk!Yq!naFd0PjYC|O0tpq}px}xZJ1>UFV(h8!a% zMm1B2qqfpe#JbDdC{H>hjG5FQppNL_<-kqI$y2YM_fLZKsJv6W9;S|+)Y>}fq^~34 zFB#;lmop1p$aR zr{kP!!HTH-Wm!w(zg)Z-DAI)D@N>ehO3x%LG)y_IP9O<$9QRh8)JbANiVUwtUq%0x zyo7OU@Ex3<5NULkwHZb_oC#Q_9vP_`!>L8Om0wc2^AUjt3HWjnbsFVimS+RVfl{hN zvzn>k2nIr4g4TVz8XCAV*l+?S$Z(csN|_#X$SjXPt%ABz6p1CI-0{2$6SQj%^K5yk zWXv60NQp+@o8{#qxWqT`U$b<3RAbOx5#UPAG`5 zT}hi)3X*r9u*1qxM#X30M^LCk{k-II9#_Q|fQtzaikn)?&-7X2iom()q!gpPE0E-4rT78URU1G4t)uh@nxaD&W&c>x!`}P}f^2P?X zQl*Mv1Z(^VR=mA+!nL0r?0u#9Dv;%}43edyysj@c-k}=F6z7V2l^RWJN6Au5LawcO zRc$3(9qO^Q7%+j!aR@8??G3C$`E6?(9p(Dk=c;ihx4OP34%77Z2()tk8KAJa=}4YK zJx3`SGS3?Q(`{_ltJ3P*EiPDY7Ci;fj;X7?jnoT6%LvsBOgl;KHW{T@17sL1!FkYl zJfRxrH->=gxbFEZ8Np2b9_;`vmSb3=AnH9yg?RyIgS8!2>*_jGmn<}+=vlNxqk<}D z%bkhavoj>w2by6kfysS|6}zrgro+N~!)!{i*}BloHVqdCveQ{k!W~ORS(!~JsFa=7 zA$JeYUr)&MndGPEN2|%yZ`L9!)ajaBZ4WkaG%&D4=&Bz9;Ya$Zlh8Agr=OwVXsZPw z_BEHP9qy{YC48&KKA(4naa}UOblqjO@eyoc?WknbOq^>IGi~D`+u(Zv)1I73n45@{|nf9;-u!h1 b5aLAIeRxc2TNne3<$hy+*z7Fru5UenC_NSAG!3B(*kjzO)RFtMI>c(^I%`3Gm_M!>*)iwi|k zPM+Ab-<&wfYZe%fnnkdb*k|<`S(Kg+CAr$|5pdQ&q@qwM zCBGKrHQ7cCJjbz2A1NH8z$}N6dC{CBMK~np9$fbfzVyfKY!SvYR~-S`k8#)qqaU4t zK8t5Eh*@Y?h%d$A+SQ)c*^-|{(av5OA`*>XCDUYyCbfl2t~L?yICAps4GuhrEgl<~ z#{WNYG-ysZj43oba)w~iLVi9Ek>AvPIwQFA;5#N_;X-+2|AfBvEcuWT zVG(Jcwydm-9E&?OrAyDIBbm5YvyMAtjU`3-8g_MB55<)E&hh1qp2w6LxkW`%E$5YD zWv#`mn?7}IofUb2i4<(Vy{Il1Vk3Ti}5m<=`2O);F zDenY_f`Ik1Wd;zN%}=S+(xRBreCy@^|Oi__6|`A(eC|cClMZ2 zCY#x8Q<<24Aocbd#E47s8Of?h(1?)W!Y9&DMFW+spH3L+{Q1%*$)Jx>nTQ#9=X#lH z1YN9HYh-kqYUk|#(63dlH5#(tuVTm9$9I#p_Jio*>1W{y8z9STUcXt4ffG>NHgtvx zn05VVR|wz=p9cSBc0jxci$fGc8&db;=>uRxLACw$tG@3|k?W4injZ+5a zNjOmaIINGihM9eg#Dgtnp(~>@${RA!pyakZTGR0 zm~4g-F`5BRQ_{ZP{eLb87dgCq{Lni)iXK z*@NFa!iPeR(?Zv;>hz%G@1$YXK7))Y`DyGY>>cY3lh5T-qu{izNs$l=)tv+`aF7a< zDDNGSok02u_jC}*SK{jO<5lOz!a@Si&5ELJ*9D+O(aD-ulaenSZK-*wvbDz9t3|D~ z9_Wrmu8kS_m}}h{&l023Yap$bZPbffE|J9R2{n-pdC1)Kf>Ba7lD4FUs}1CQjQ$kp z#V@K`5)i+X4M#hfOY5X=(4)*QJ8B%XIS!JD^=c3tmdfp`n4yY5g>5_5$Zu72#G!BY%In~>Gp>m0MO+V$Pa6)l|*`vmW;osz0Tt(`(GHQSQ=YH>n|&m83e>EW9+ zb~K_QG4M{8B*+wWB9+SyUSce^C17&b11#y<%rjRnYgNnv3B6s8gvb`=7j5X?TmvNV zWV-9%J_RRDB!f|auoF^y#)AZvY)y%+jvKYih{5dG$G6?4*_yrr<6g^Lf4YQ)IW8Tm zUWhUH%lkDk)as$|z%#2RZFqO8Kw6g)Qiv+0&toz&q^L<4PD^arOHtUiVgTgn=5Rmb z)1mO_UGQ!3DZp&S#H}G*;Wb2V1l)GkcE>)2@_OMi9I|0I5aj0JA%)n2dN(?lQ2WSN z!wKogVdaZoOAEDcQa%ms+R&cm?mx}sLDa|fO|s8|zh@tPIzDyR7F4Cu-{btuUYjDW zwXVNbN51`peR6<(9)5%zMlrmwiX>lcnOeuygo>hRqRW);X5PnV6AZfhFu4ipP_rIgj|aE=%6S= zvgEfc)<(Zt`#=wKun`5A9~L1jk7h7VXzfrTEp%4iwoF6^(a2sIiq4_5f7g+}PX!q9 z@SiL~5(AT^|Hk(GW$o_s9-UQJpF;{G({EnRR1De5l4j!U7^0o*Cao+mJ*_f$s1idh zbumSSdNlkERrx4oRiz@XJ`>}YZRg{Xa^nGcQ<`kM90Mq0@|n?Sec zjYJn@9!Mae#FsYbUkG)QwMbUO4T1x;^l&bW{iIIpAs> z#nDI+mlEO9diJi+d}9k$J07AG@Rp^9-IWW~Wr?jXOMJYS@+b~x0hAPEt4&q9i`98m z`g%Ur-}ync72Dz0<01*;iM~&Re#E#lpk%SHLULel2eHeqhMMwQYZR)F(#6Tst+@wn zS~!JFRJp`2T~AtxGabguV$P#`yP8?6DH~oU?H5*cG^+6Q2VAH)Iax91Dak$=T3EL4 zF;&a9@8m>A!%bNm_p~pYExgIihP5!F#dKV9M3FmUX6^q{jWj!V>9&s>49)Y>-ymH^ zIz;Z%%gCX+(X1)Yb9zjXh?IfK%dEx2;7m|kkTHjuR)$ZN&WbWwK2rS`TadVVc-r*h_R-XZ8 zS9umvR#F(kD2t1U5;E#8XNe6V)VfnVU9J>@;V??BUm1MpZv8%_Mx-}ec|T4D%Ps^c zYw~&wOu>4-4Zd!B$n7@Jr8QM@8X$JfOcf_-ZCQ)&2ZWcfc@DDXRlJ3Gu+!_??&Hv? zs&*ayhw+nNpGRe%P(`97lSd3pCI}eV*(`d-T)x+Z3j3nU7HKJ!G#TWUlzq#8NYP0Ub0iewraRea^#hU#Z6J}L;go1dy%JgfLeRPO-Z}5+)GaPGK_y@(?8d5P$O9||3 zq*d{Ac?8PBu>0K#3!Vr3gblV)ltivxXFGBL7sx}pqAK!M%cft$&hxX@B@bm!2j)6wlC+^RVCyEho1T906d5wTj;BT?)z4)Nvg%1A8ibU3 z!U5b@VsSVK&){XnOmz+h@1}X9?4-G_OiP=Amy@9^dg}E9v}`ya?KnA;k{=TR#~isJ zy!QWqvKqqFT7@Tsq9LJ1Gj0-Ct8z@0u)zGj&ZCNcEqw(voC!lG5W-2YVvf zNO7~_pFMy^1Qs{+nVnr|$2=Vuw;<4XdL910Ir6DlbfCC}v>>g#j%^qD2GxX&_2t(h zEOEF)L%y2j+@W6tLAdxBtY-*3Q&!e@R6I8CM{XpkP3V~=#O#pPwZmeF%Pp4fODD9N zs^mIYEe5p57g#fN7g3y*MJzljj}qTTproT%8wEoZ^nlYr4Zk8nGOzF&7sFm?0+G1)kvheG@ zFQ00f!&`;4=E`lMDz9)!wTbjZ9Bt&+8bBG;JVV-PJbgANswrH?^=UQQu6{csN|$k( z>Du*zJ5LmyM-$M?OYefn~CwReUc)~=o% z8v9fAa-TbJ-ja@jipY)Un!A{;5<4PpH{?DPEloAihdsc_LycV$fUz=}g(9;oB*>`h zN8$LK$kKz2R_1f%;)>^ECxL-IS(yD=G7*T~;>@H-f<#@6%pSmbth5uA8wDLHIE6 z@tG*+!TI*PSNl#XAJH{_jL-Gs@+?NXU3cr@dCA*1wqv~ukn@l^4(46GqA)lFwfkq?jImf2XF$~9!(07?j=F2{%amesbG(;iB*{OTEBQ%{l)HT-`tFH%*$sj&<xo2OqZRAMOuF@_9 zGKPqt2@247*ogzGM6D93OLb-86{czP z4ynb>SQa}#+$d?4Rs_(4(#@EAb+d`k{UadvFwVXuBs{r`xDL-=TL{5q$geSB#QF#G z-!N%9DR`1)T~0YQOHrmXDW^|1(NBh`R#7lTr!|n{r0THc$0B?6QtQ4My<#Bcr=F5q z4hq!|xQ9Udk2&R@oCI&uTM=dvQqc0^DOc!Pc{-rd<09^!cL6~vw;=2!u4-WO;zVY) z64H_llty|b&RCn!5RN3{3Ly(Xw^y&iRk&SxoI$0Cew)x#OVv_1B?0`4l{f9^Ldvs{zYS%;%=~( z-9D)`qYeKs?d$tu(0_%m=x#j=5ZOxOWnsubl8j-(+fXH~_$pmG(L0d-duN*D;auF< z4pl01NPx8W9|}ey1jOgZk+*RC25A~#Vgz|2MC4`{1IUpYKwUlUS+Zx4uQC2KMjG5^ z{hc*a6Y=t>*C^x4v+$;a#}%nXK`=gH`B%Kj2;FTpJ8-kMLd1IClJ_9-PG1CCA&?lw zwUTyNKAO=nhsnmjU{sRQkC6Q@K=h}28YrvfD8{cKE0$SONrx2P3`S$s+gWI^AR^L5 zHv{8&D>yxbSZGt7<5U&}R?Qa4$XKA;p&z!Zo5`f^Y3D3^4|pr1#Nco-)2)y`#Kzp# zLoubOk};2J$G1Tg_s+$cg`S}4NU5S9h>-t1xHYLnI=uJBFR6PTA{wTqHw-<*=s&BM zh-kw|WCa;6^Vra92a|UZx@TC#f5L?d`JZ-=9>uey_aS zo5H-VXgKUQR#wx{vvh_$&K+y5f;lM*g6n1~GF>Dz3w{LYakKPGix)m;2ZIRg6DvlR zFhQTH!!`4cW=|<;_ffK>VR+ACa1zAL6dF=i2F2QhG^mZz<2q!rlM$<(VmfH#hK;Mk z7XtRrN^?6JkXh6ng&@7*`N&euMWTFyw%$i-!1hWS$yL~xa7O3(tH!_F$UW}{7%F;U zmSMtt5!@|W`cx^FAMTt)3?_mq|UuKD+*V#o{M8RK@#j zbq}dWtY(3D=3FX@<>IMtMKa7L&CACfT&Y*;L^2HAwI*%NP6q)h;Jmt995E$Q5lVM# zJt>PFW;YOYQHN={hX)lD87wm=zZ)ghvPBZawJ+!F!BTX)^at>5m8psg#{*HEKF1dG~;;6omqrB zrg$a{jZ)-fn4etiiODcszbA&IMJ+a$iY^kTIV|aP5mQMX4ExVQ3pBQ?>?eOgbooAx z7*;Bx$#DB4tJJlpS04%LEF@QsVZu`+3tT0B?gKM`y(xR9T<_@zg_IMM_USqvW_3xq5CEWZHyPxk~!Im^%AxX37zK#1+1yJ(|C2; zgw5TDDULlDow&j;Bw&kd|Hp6!7_cPRSMc#_piLo2z4$Z8T}8gr4#a9Yw_b>rAbnuq zvfa_Y+9dQn{z}Rg6$H3buUYa9=RvSK87%?&*d$SZm2!Sqqtx-2z;O?(2bsI#)3EcvBjz?+~Sw1xyrj z0wEfpm@ajK*G@8%YX@gR6m8jj#!nU5x1X21C^BDhXXHFR1+dB0z=MxmQkcr!!H+9r zszvAFJiynPZYW_@E1>Q_N*FyzB! z^UfSHQaNj=C=a#JQX$>O6c1KwmUh}1vQKlt3SQ$jOYkNq>oUEu20qJlQ=OQv#l)L~ zB53e?J5^I=3YfK7h1;?(TWaJ^YfVNE(1YD)lmoKxz%yc9g#GTGfxc#wAr9U zrl9Lf4CVq*;1T3CE=7?c(~OZXouX7c0x^Cf>u1ARLW<_9uO?rl6zfl+oJlE58RuR& ztHMHFbhRX3$N`#;4|z(?DMu)k5S!YHNGZU}%OYX9K2>R=MQE+8$z(v_&1$Qa16zkb zeexJHBqK*dpd#Ls1+nuSVr+7^TNR5pJaunOjjq}+?nbqc{S1n*w7L~L^)o^GuP5$W zOU1^1@*YMSe_*aio~(xT_&t57xcjH?eV&KiV?J623c@v&2Z1M@mjq?>9 z(^7?V-&X-=keQqJbCS{}837{NWQ@w(K6qJl7(SD=kON7rahpAwuv|&!$lh#;BHS1@ zLwMn`>U4Rt3+81#UMUYSgVQxO4iP!4-gjtiQq-AMc6R`C+SoGe(tnX%^>{dxMr9;> zri$wV3K-P=Mk^V)wi%B+rG@?VPY%@fD?7+;mf-5g|Ym5e>dOKr(qhzIh~+ zXzOVRs=^vjsMmjyM^;`kwt6=@dMa<)Vo1nB)>C!CMd(;)%|U~>obwvp#@u@6XA(+( z1Lm!`h*WYoyly$La0yh2k~$&-SatU~Qk3+bz{gm$p>eK>tnX|nRZ^;&hN$roKwP5_ zrJJPv1M;}<4^hS~!;c{T9nJ{5~#^`ZOHd^=0 zY?SBjo8V@)zJGatl%YNJ{r?|e@o(ihKVx^=2{JaP6~6BKyTc+pRG^FMzS;dgvAhcf z(d9CJ+J$~lRGs|c3q6zL{VAXA4g%%fz+n7E$Ll<>CnrG~}% zOH#(vP~G)pQMou(#i)>sYL~CZgeNp9yF%k&M~gy>q@}2Ql()92Wtev#o|d}A7+JDz zXP-p&v{tL}xmeLX-SH%TSR@oH;}RbTaF?4$;B<9uzjMlr9;73W+w}jD-n(ARXrI?V zM1aa&2qTE1He$D3G#Is$M_5Zbe7-h#Y2eJ6Ush1HaDwnPW|2xaoYxc<5F~Ajm?FD$ z@IpZ{6kH??DLkvQXHk?JyAIry?{o^`>qx&!B!3g#?J@aJH?KFbDK|;K zX92dDSK?=H&oR3XS6AU|^9V9@7iHu3_1?Q0#a55V(u}+axX4aHIQbU-0su-twZDq? zD>qUj+l~1Q0^fT;RmTz$NY@sfHc3(?kkyfYKwZ*vS#fN|t}4XKR+N zWVP=AU`$)*QNPE_!l|uR5(!M7&d9MuqbHIKCNQ{)m~P(3w!)(Wt&eo>JKYu{H}{hS zjC44jY!xq!caXpO)1^Efe`YU}aNDJ(w*32PZJsf~_)Jl!`RCw5zmY`*bUB^sr<&e% z6o^Nj0^!BkYA3nnxyx=%MewFaXfjwqHM91 zF7+r_=$3j?rD`o-Q!a&Pl7~$Ske4Z(CSu5#4U@yhOy45|WWg>MQ5HR(uR;m?XP6vI z0Q!}$+vpi`T|DfwkJeo>8YnJfo+Jt`+>9RwM>3;qTL`vX;ar94uDaDSw0ckNrFxS5 z%|OsuDFWs06-c-&w-ifO5FpDJM~#EGauP@CYbGXQ;t$9jRw$^_YpFOY8UFZXV0;w_ zc+WRo91z!-$ao?^xtisG$dM(dI!gAm5x(m|p(%zWrr9|3WX3qSaf}cmL5Mds#5`zA z7f2{_3!o(7ux2AUKK(|W8QUu3Mnc3vW5w(RJstc>8gu2N#wo%1C!d%cgV_s`LtiuZpB8e%P=fpMFR;8-8 z!?7HkR`GEmBxc~LP>fXO-V6IPp*kiEaMvz%?>aP+z)H>5BHG*Z+^a_DJaz3zR=w`g z!1Sv!X!OKz)H{eA!qoGorKuyWQdWxT@ZY4TL_#@vQeo_%bo+9&vQN!PK+#d5!_hga zs+2d;bqDYDUhv|!4!^d%mOrrQBZKYr@k#DIG{5nj(M*ru@Mqsw)e5qF<+r)U^zl&^ z=x_WP!xaT@v#>9U{QaA%86>S|M3%>x@KozKIppJ4*r!w(@ElVsy~oqX)1rPG&BG+(Acb4eMWQ`0;M}i0%MN~n znHpG7;KB7H;;p9&6k?scXvHeI13RUleVwqCU!*&FM%O_O(9)jOxq)1_G+iAl#6#<%7dL?o+_ zw&1Quj62jzV~;LZrOOoyO0AJ=!AaPL%Cv_lQQ;@w%8>*4bbkl*aRtUuk;8V9I@vrv*DI>tYen=FKM+PM@n{VZa;1o1MAzfHXjD{9Qm=y^B8;a}6J?^2 zg24c|XXH>PboU|}8Jn>coYQs&blSEgbg$LiQf_p^0EFr#p#ijh6Wxef5Lm z77B4z7n~So*o!>@*Yl8HqB;YYGp_})ifrNv)tnxkv}|t%60u$5c*QPfr^lO8T1V%w z0)mDur;OAmPeByL?7-C2N$~kp7$|jl3Aou@Y4FxQJ;6~TW1K{@_$!ZFy zpwWn%Iz3=xGh+IaAzUq9>7BQ@DUT;rkjylkcJH*6B1PPO6JI!#=OeRtcGi=3u5h5K zOLu6TM}Y#_fd#5W#BTI;R$(^b$%}@chI|eryue=^MLH+e@TMDrDW^avPlf^!G#~_t zeOluH<$F!0sbPAgb7m~1V6J2^Vk{xJW=QNI7T>Jn(4BPh zvO?FYXmz`1a@Hq_gjfn(MCt9rOTcLOCM2F_>*QD~;X*qahx9Y!MAbtNX|oo@Cx1ui z>QgP;L)J5X5K;E&X~RhUBm1Z*;%MTNp|PrTs}y16CWg?f(NtbBrpd(3l?(;w6RCL! zn75rX-yAm1kUSey@2*|_#j1^ZC!iwbo5CVityH%OW}|whCxA*~r`vk58lv_m;Jwdq z@%X18i#UY0HYu!99;Ur|5nUs6c?$T0#bI@#7-g-%TV^rF@x^h&Zzk0k?nv7^iy9JS zj7d_}K+I~)lp(RzkB3zR>86ukDs|&Ly2#h%WG_6m;F6@N?-t-?e1ui5SpwH@Q{RgK zR#iEPbRb7=-Q8v<_a8$-RuRr zt?*ZzqH7#II@Q_aFe$v(1k5JN0)le3!#doD@*C9q^(oCd^ps48PVPZmmqlbE30_;x z5!5zvAvN(NK#0Lj=yfAfxvZLcC|D)HX&5C)oYzG9BZ#Iqb2M8Hqj%$YsbHdnWHo!$ zol-`i{I~VnMNG>X3H&xVQWqM3f|8z!`nI!3r+n-A;*Z7?7NI|HwJml9JzekW4kjCw z^V0qwJz&{~W}e(1ZixQ}z+zLIH39t!NC`l2`=`RC2KThd8A;eKDrZc`8KKaoMN=p$ z0HPjNE6A4lbI!GZ=5d-*jEoea8a<&bwsGAba`UNn|3vC>&atC^q7vx=1lKxzqmW(ExI|sr$Z%mbV~0BB_;Q!A zbwYGDN9nV|ojWk&>+G%!nTEF_;7?rg42KCUEcdKdC9eiv9%>|i>y; zYZprH^dO^RMj;@-o;pF$!)b9eiBe=Km4arL4^aCD2Z(b-`?$f`yBQN`&KgPTFVBfd zv=ZpDtJsNvhBGdsnDS4NqK;rlkikcXHvHq`m?Y>pzjS(F9!Q+7{%f$^6t1CsSGbAX z&o+Od4Uq>lYa^POh56KGsyHfEcukrD-w7$a2?!QcP|GN?5YBWFx{3 znNhaVtXj`Un#rlL_g(nUS!qqLe}OF^5DV5ZRh}%jWcEBZTuMI9#*28(6J4 ziaCj`B_ZzHEJ*kEeJy;bkgZ{L*l7@fdP$5|mi{v+6pFY~hqTF{e<};Zy-OHZT$#B> zd_;#J<{s2tA!aIN@fOxw5t0e-=mX`v*Rd%ukq&%LEo+tP?114y=In>@+}B&}ulQ&1+`?x6tK`2z0=NibPl~j0xOa{|aT%_9e1*e4 z0}IbYfRJBuMMaBb?rR2DBZ;4SJhbsyq~gk(YHhB19h9jL3hrjMD(2}08+7=zDtdxU zvtm`utx*e7-T@dSX2~i$u$C>vnzeETAs6mXTAQLxu2lHzRC8KeZh_?!))#Ywa^40l zYC=dg<^PXgSDRB2rg8-eTfGhfv2&ZSWd|7`*Qj%0ALc<(l8ue}!yY%yy|RmtcH3qd z(&eye0xGx-Wg>u%i-EjuY=+!QNw!X_ikeCH_p%Im1$ETd?9L~e9!N#KXC>lTZj;T$ zNFjhwGnyI&kd~RQgnJSXu;uw+_Bds@J`r;o@L5EQm8{%>O zZce@v_st;9cM;DmlnivJY{aaNKQRj+pKh-ymRmN{=m7J*7mr-jdx5WPhK`+@`nqCfsPF5ZK5X10Ahu>6Nw<1wP7LuX zEK1tggoOH36YG<$xPHiKrzeEt6os#nzGm8vI=oPxs&wJ!F5@Ru^Z^%(6%N|^hrB91 zSq<{`gFsgWK+6-ZL*q(8zgvw^6`Sn18F z5{!0>vV$6Wv*mbf8yJdEU}&RV5Y)8Ys?SxI9hV7B(-TV3f0}-|(dE8Yz`JF|fPb!? zUZuxf5$n&lrw9BoU-Y}e4mH!)pI_9QB8>9cu8h2!^!P42wTJtLFBfh6hQ&|s=`UUo zu5gV-jhP|M7DvV`&ioA;Xw1@ET)gRLlTb_Kq%4A;Bj`9rB{?dHvc{g?o&xNIwb3l; zOm4$f1=@kL&k`JrwG9-{j}uYD;w2!iYNZtO7`ir&1`~bw%kVVsHqv*HdqPd2$Eh+h zOb~hPx#uw7_C(9a#(RWAqvnh;FLena6-WLidm{>=BD6a<35sawo%+iP<)Vr*seS<{%rOq(6{-e)zId*#(+pYBaYbChj;5#T^> z{?BPJg4IhJ?TGZDDuTVOMPbmA9xp3~fjloeM1|5_ithFu>_w@Q_66=%oIO?t&#|;f zO80nI=4ND6Ig5$AGBd_0aOgdZa#&Z8ML}g3L7oCT0Hp7BUxt+*>)e-IiT0dmb4vjvv6o+AQqjjCT7=5A3)4 z$4}Rt+MG@v#XL=vzi~P}&oe(8xtAz^krba)fPz&Rz&S{TqsCuc8GHmBs)4*xzK=uHp^~u;CjEi%>>eVzT2rR# zl*VZh3$%V74^>54<`U-N&xDnQgS3y$m922eP0*36xSUZ+Mu|bxk2S`Ahro}xtm+*? z=g!zt^_+BTr{i6ULwMDw=+P{&uZklHycgL#gLGMQ;vB>}Z9EG@(Lt{*ILx3po3wHh znl>t;D!~~)hF($XiXJA z=BE?a))i0jL9rIz>vGp)dF=!9jqzo-iz&Rrrk4*~wHydGp5Pr%uN{+AfLjGqY4BJC zevB~++flCe>AFlZ^N}s-I^w6#Q_4mW^3bsUY_ILlQnRG#vtYr?wWop_`xWQC&32g5 z6gN7m$$l$d{b0A52xVH8R>Gllo$9KNc7A$Gh<0frhA?Pxnr-M;E!#PEG`(?TvTFmwqRpbfBJCTKlo}EvX1GGAc9|yB$ zBx@%RtIq}~Xo15B8k!kMCriWN6WGo8iiPe3 zALlSbpA0Y#74YpXZB>;3i~x!24gZ4N?q_*oJL%2pE~C{U_nk%wo{&df{Z_IFh@W~O z3DLml`d9j1SC3a4Bv^jr;AB51aRKg~0oe0A*9Y0A{J zvd&}0ICC-(Yckuj)EG`uo7aDxW$IP)!Q>iLxrf8_q zPr^d^oP$!T2XWhUGe(x?9eQa!X38N#H&A8F^>xJ|;Ln%cpu`CddM2sHf+713PJ0*s z5GW`rj#DFqIG0D}V<(TQjGNfrweNEI4r*s`FhO1QGTI9+BM+g|mWXiAAo;cGI#y~PBGg0F}=1Hrd z&oUvj$MOYKyR^oejKg3pG{dM``6qO;b^wGv!G<)k}Q^i;^f%sXDN;ZZ>839F%deTZek#E%~^qq3f<+UBvyxa=vMte*Gy|^nY z2aqhlT!Um;u0#Q;jvYnE;jX!UhB~IrWqH0gGLyZmq_L8UGOkas7@Q9Y1hZ1OH zB9x~k+g%n-L&o5~Y?l*p1}@eF9KrMA@p6^0U89J;ifw!FV>VvSw~*J_@g*RJUo+Y; zs9WiAf_mqw<9a`Jck$9snm?6KD11_*L^hK3v!tXRV$P+1O{N|8svVx0=D8*xJUt7- z&jW+)^X500mTy5G%je6EG)HAJ(mGe>8kWjC@u{WSR8IHC#ZuE9M!G#T3SV!GQT>JfUGzU=-tR9J4Ml6Hz$XLY0YdgzMbEP%+WO)@9u zJJ5!%AbA<5P`?S@^iL}!WA$GRw?bs!N0SvDAVHnOOSWDUEOc~?>l{fwMYnxJtNMSjNt`+9K-N=O0a~eP+ z=D7mA>>QPd#2BEU$&RKht2iXr;j=-#Cm$6oLbxdn?_jJJqPG!p6}+#HgqaleqLdYd z(`vM7$gI@uIE%`Hlz3HCMIr7jWVO@C+EV`N}{GgGFqtqiTa=ju`5i`y@yy6o|?!?l}LCAg0(jVk6li;!SYcU|bzbUD%A z1#$h@Iaef6WogeX-drSn5u9&xSj<>+fQw43_xkMSIb(P3<4=UY0MxF}N4&hAE>8)*Z7M~%!a2JH zH+`gysfIb0SKEsykFY5AP(iOCYrU<3l%6@CB~VJf17wUcj)tv2Y$rSr4V?PsT* zfwiG2gB*73A+dI9h1+PI-`BrXEojo=&SIAC8*T79meFH=rdwQ)SP)%a#N?SUo zGA=9vXmYScbC8>TeFzercr&wl4;{O1{?{$5qnre9X0eLOMml=Y88;t~kfk@dekzvw zBC$^4Fwr25k*U&5N^E{_9%OA4Z{Y`ovDQ0!xi;-_%4ypv zGA(jODi^%(zF@HH<+->j)&}`1YOE(4ephpu+rW{{oT=%o6x6T7n%TEPXMFbclhTe25GBE9k?J(pP==+4CQEou99L1Kw%Y2HDk}n-ztLjk) zA3drxCMh63YfCz|a>Tm@ zK6#uNfR2e#vNs^}d}b0Er#WyKbx=-i!^c-cTzbb*sEUB)`7)f$wo=y&b1mQ&d_WJ7 zX}Ektw56KuRyLH?)q}*kIdaXYsP9x_(S=iX=|enyfmot0bfa%IIs^Kh8Fen*lM{_{ zUoF$LEfT0@0#qPOX0gf`(9<8Qz?gw6=C1P=kdy;x=+BCT`^9Qf#G7zd_F&lW<09H5 zk}4}hctKWW#T~4wuJ8vJw*N(8R)c`r(iITkp_-wUiwEGf}Z*Sb0NZ(}4+9BGu{M}?r%Sc|H7I?s=mqcrnO z`9fEZQ+Y!TT*3VGRc>43M zFsqMokZLwljDZh02+6Y4@K8R-%WZ?o3yy{kTFt`w zYI$)aP{)Amv#QROMd|K2PF6I|Ek>sLqqeNUI7R|XrD zr@@7KD=hlRRt*B6&TUqS*G~S^I(H`w#k4v}xxw1TM6z`F*7p{d3N3uD+QgJBXk2AF z3zai>x#ax}{@Jkn)m}Hc+c%|X$xvZ>$wpu2{#UuQo;a&Z_rHK7jl2B>dvND8ZVDn- zyuUX(1lcYvL?ObQ3?VTw*W;;yfX-|;f{N)qK>ip{8NPLa%gaY5Rm{zbTucj_9ND_e z8*aDdYOq&^Laa<36g?UEl3AhU=T+-iw$sxd$%uOCsmdX_H{gz>K*|a1A|q@Ij>cE z`-&AK1?rDaR@5;({m0CdDz4=j){~`EyU%yytfy2MC2NS!jY-(WR74AuAICUd_-|QL z-X8}DWsA11CgCm(JJkW|v20POV8-cOxOy=1-Q}Tvo0wxs(^3bE9Jp0Scr}Z{Fytxb zKs-c?(OepmUbHO#fTF=IffUtf7b(Af*u{M{t2k841L%g`K+w1kQyTvf0{1)dIMy;U zdpSsDA5ojS6KoXT51vE(x^1i?;-N7QD@%;!hEhT-F`{fGXL*+z93pWF2|Dqfl}^Ma z_2=+=u z(>f|kp`OccDbs=&#xi^?SM#%9iNh`uxR6$56!0_c^*Li>PPgEE6@+f)u~|_n{1>WP zA3yVK2A1+V{B`})ivaJXHH3GL$(zxfozVEfyMa+goM&?Y5^lo;bx$lMv904tZenO1}T46!TejfW^)83 zOx+%S-+nkT{z7a6%kW5etRdn31y-5uCB1v{5%yK`70$V2@l&;sz4nhj!zH!OtH!Ap z0&4l`Qy|Fb$|Zz0aM9z8#5WkMDY_MM%QF}2@3T)v4+mIy$tgQdjEQk3 zc-4uj(Ql-!hgUIYIF*iX($A#GM1Es=FkMW5!;&%r4MteFbg4dim1?|m?=QoCgiO>S z)@7|ZaML8PC#kyyWP6p7pkceF)ljfqBUTo#nyx??N;59a;aV+1>z%S&k~Og)DQ{Yu z7xnE%ZpRyR?jf(-Xyx#sVH-Ktr8Kq!3oAJFStrcVudRYhrSK45IVZ%~{Yf={G!@%&AlZ(HYO(xj(<`lBqgpRBa)kQy+ zV%3RoQMsy!CgX#3^=#w$$dZ=>oZ19a%Q(x9M>xjvz8rnnxXjbwFi=BQ3$b&}xr&D1 z4$GSgqTzVhX4gNChdmu5LNRuAWn@`PWWK@5oP+Vs4Ob(Sgeamyu_;eHUW-_-t|?1e zdwo~>&w7Cmmo!3YzSbuk+;;Wc=M!;8uU3-%(C~}KvQTksV$ev;`!ZrRJ%xHc&{@+? z(bj_!#VXInX%*whtFiXa(UXM+6ZHlxiV*eb(Z!|7tbkm6lgZUh3IIn%SnI0xBflFo zn>eu*LONcKr}Te=tD8TzQ1c!4kl9*e^*O+PlXHfL9W|qjkV0~UoG$I6W{<3LXE%! zK3;#sZ?bWQfTc+!QiRui85TUP2J{mp#X_QkXxR%puF>Xi^XJFkV5LQ594;)*b5dO6 z$~tZusQC7jB-3NuXoHZQiXssC!#+bk)K{c7cKXxgp;sF zhPtln{r@FGsB;x0IIEQ3Vcf$d?LwPbruC-A<~NXBW{ak2?Ho+_aQH$?Y-`m!X!MJn ztXf8by~EQx8I?EUo7u2 zk{0;zyu!|%Rj;R^3`wT4+6eSD5=Td2zW82qi_@f}OTSgM>mTw@;>+|?0 zj`U@+tb$Wi=%of~)v=vnk$!5tsqpp)c@>I~6kskzP=j>**J|o1n$@(FoL!i*8Ae13 z`nX3&mkTv(N;S#B!G6r+QWXt=yrF&nrc1{sollO;2LBB)=vT#wM?3lQawC##z(479 z*ojMF{7Sg(ixwE2dJ*wswiB?sZyok5^0=Sbo8v)vakIx*wzv*K|TOyEXs&SNyZS@oXa7Q7@#y0fIe36$4sa1>ZaOmMJ`mz{dkC554Q zzft31rp-j!0kh;J4<*J^Th%9Dp*;M0OXN@6ys(GqhfQk?G{&=r#6fP$Fe^!wws@wK z42DK}L3ceG(>XqC-78^Vr=NqNDxtuU@z!X;%vny~F}g81{<~T2KQD@8__+f7!@n#rKF+quZdU6`is?{~ zU&=g;XQyc4(krLr_{>0ByV;`i+QrYqgt1o&@f>I`+vV94f_X%(Ieh2HXI-w+4Q0vSA70?Qo>i;i`lG# z!SzY{_;RW5%Mazi<-*ALeCdTVG^L@@igx3sX&+A6J&;;VFlQ)&pO?krtM9v|PRFUM zh~ROLLc@Eh9adxXwfMu-De!Drjl{96ks6I)Zbja7bou2n+O;d2OHo6u!1WoouGTGl zG3;b7M9&Q!1E;aV**~Q@54n?iQZ=hLuuVSl#yVvYp0~ssdI#7)!g*-Ey2HTH@xk zL&zhJ+YO&eDb|*096p1demqfh&G}e3_DCr+eD)BLhVL+N%1^VtUlWk}@|8932yE!p zgT0GHG2)lxv1;BxSrBm7R+-d$8m*g5QVeO0!(VEcgS12&+!3D5G$`lKIWH`e9MPO& zOVOy=xqrEEHEme5Z!PnTeIuDfdcF>Y=QX`>@vbsA zC*TwZ{xvnPlq`amSvGsJ{Iyb60lTi33TM2XAM=IR>nRriv3w3sc6}A>i$sx1&MWAC z)9L-yq&bgt1p_(l)mGE^_FtdM|f1GnV#wP)?(4}$M%FH(p%V@%x1&?RSu~uEr*@L9EM1mTu47@%KMECwD5fW=V2DKGL^`ru~4g-Z) zFI`o3b`{jCmwECzSbNyVSU%CBwUpCVLXi&*MI`(&*ExSs@DCPwdtmuD?&K;U;8Ie; zR?l992oH|vx(zT{DI^%?yx9yg2(Y?%^>XnNwI*rYRZkM>#huBmF@i(7>)BSB-eyK6 z)=?1|CPRBNy16aYrFHDLptqAy9Mo=1ZryEmkRVdy6IHQjkp!Ak;wF@R49diPc@ZT|W~$juR#ACWhJm2QI@k&TVa#rj*!;gw(evTMl3Rt+LOZ*5 zr$Q;Jw3As&bimkaa*8vg6tv8Vb2*BpT%`qd84ztX0fDF?1(ulc8RfV?@@2uNFez(d z-BnsENtX2FWvAP&rD(ftD`U7o{XHyagK0qKV63Gh5%O+9*tI5SH?RS_oSs4}PL|vLr27syK`Cau>)Mq_h>0^dSZ}Lv z3(XeGtbaKLJBn7KZ^OsSn?Pp>R+&u5%NVb&rOD@K&Ze;JGho$lJxJGF#&~+Hsgq)7 z4!-Uy9k&_@fxi8e7D#I~$?jl1J4-$LCR*=Ko=-9WYD4MKiu`8@wH}`pmdU9Sy*^@FnJ_viS^ZBh+8nmYu(4V{8VNzX>}T65_vEjTZJ)* z6}?@tA?-K5Ukc)~4+NBftY5KlXo$ddN3$+__3u1hdbP+^X>P`WfasrPXB2dEgkrD` z9p;G$?cO0&;TswJwW6FYy8BNIx=XzV5Am8DGGc^P9acVoX{apX&>KG~i5@R-^9?#~ zkC)eVkcE9^Sgp5?ML7mhvZuNNq2=Y+$7m5k~- zs{*CKbI9l)dl>R(Nm_Sd5>a(iX zZftI=NFqpBXjU)c&!j{>Z$0@hGG#2HiDFQ?qk9Kv_Ro+E{*+f;>PY?*{1|xG^R$|cR3&1Al9OkAt!gUJRkkTJ%!_p~c!ky)Bw^m~8H+F`D z{a6p#Xbr7@0p2y2uRBTeiL-_B@x3hNT2C{c)PDii9oQ#$n#wF(Z6uLZ6gK9I0BYF3 zl(=4{bvO?OvjFPA@Z{WskcZC3=vNa z8mC01;DMf^RJeNrmy~u;{%O|g7#1v=O0i?lD?3H5jFDU1cI+2xgAr(zM)|qQp*{jdg)0#BI8naR)-am((jFxvr>$`}q@Hmf@8^pzjl*}Uw~?`8 zuBt2ijr4OJ`aPxm{WVp(2v8}sw-++<446`NaN_B_-Vmqx@3%r14=#5b(?hb+PKPHe zNNrqFAMv9%;_;$Q-eQS5%+f8kI^E8KCNL5K!jvcPr0bx-e@zb+0hH?>g4bWAO)aK}+NlkKx85&8xg5##8*&)VN+&t zGHT00!&2uX2wMCE{H6mT)--x@l;!QXZ`pQ|*JNq6&s&>~y@>_`~hma$-Vz`6eQRAHjtIk^SxKUSBcO7-NBIs9vAZFcl7i(kf%tRnkp_eKd!TSwd z&Zv+nYUIC4q$BX2pJnVCvVRPb%k}q zwvgoI_c|+69V4P`f6Z|@tVI(Ip13d%{2EdCM%J8^BB{1J% zNOBImW`TbY#kRKN!pBh3Q;vQ*X)PeIV-WDBD5N@d%pTKRb!TgCUQL%tjY&yg*~VO{ zFKPcDm(j2Is9@P>tBhaxsdWE2)v6RAhYuQh+}6#X*baA#XMI0&X?}Trp9lYPLpc5? zsEwD3cH^|OeEwZ(|$iEWi1(0GE10s`C6f7{38 zKW0JXkoT7M=`?P|{)yO3LN>stu<#XOVZ?*1-NQ#M5x1eD^p_G0R(a8YtT@#OX$yiD zUQ3${q?r94Tb#E2ojGUZiH7Cd{9Frh^*WRjzi9PPw-V_E$VkyM*$)Pp1}sy>MAb7q zsqnaq0lan*3=!{FcQ8}H)$fys#Bk$x!t&VD5hjdCThXyVQ2;kS>!Zf;4;LO>*?S?iz|}}KtxEID{jb2H#6-y zZj0HfD??`$Qg!e!8jf6E8U2UgucB0*3f_#F+l_peP!c6WNh)WM_(ZSdXS2=`)XZ`@ zN0|WpsWI)uJ%*f0#uim#yINbEdB@EPydMNGWVhw>T@G*i^ySA0$-HiG9 zzJp~@q^1m)7`c!U$n@ONz~NGVYNOtAu3AV+%V@KkKvtcMaw_rF^1|$Q7P#Hlbsh|v zN*}y)%o%Yru&|Hn`tRzMwKWEo68vQ&YT{Nk2LhySS^05MNdy=q*^tf&7vnk%jrD6G z4l~M9tLQIQDMGzZm6gB|6Y(*or0v7$3t|@oany%gb^0P|W665TBOMy?(`#f{@WLD1^O7 z&=c`%L6d4ua=pkWsM+hQb<5DYwuV&02YLoHvgn6ofY7#(rq%}AVpiGN$!ZpzV#g;r z(!=^4SgcbNOilN6904wjcFl30T?=1Kq%ODwJ<4v8=_-hyF{cPMhoQ}x1lV}5ufubC zZcbA2TIilQgy&)kO0JPEKL)1&<3i=EC{6DUIpoYSGc7GpW)@T!d@NLXZT5L}b4p)o zLdJ>fJG88G`ep{FJB(R!;y<9ld!D3qu~e#-3`-@3d{#R)sgWNAb3js<4!rdwLl>5-y(Qw@4>+tz5Q{VL0$F6!Thnyyn9XisBRlQu5rO9_O zfO82rXROiNGMvYOi)GCRWXv)L8EffJye^R`8zUg^Nb&sy%pj?h*g9K&tL9Tz)k3&f zX(W!_(p_t929#VBc86kBwbGeEUxeYRDuW-=OUCzkxy~2W>S3@-mp>4yHXg4%-#rIy zs@YQP@DVUiX6iVs&qH=anjF|%owS8eCSNzr;E{rYNyvu6b-a5NZ0bSXw)ICST@t9A z&QR)t7#yK&D!oYbQmwK-aogipLp%#0!55EhvOj zoVMK9y75snUW)`hm&C20jgr8!CA0zhg}g$kxSeyZA}g%_z9BVCnNCxl+(x5$Jp)yh zk;#|ChQ(N|j_PvWIf+R3GOLC9r6p>=cYe8g?B!%^R~7q?E$VhJ)n%`(&%)`PhCosQ zf)ZEyRZW?oBhkf1pv2rRYZ_zF&M!?8069R$ztKfrSZ5=@u8S(gR%fIZe;}R%=2&`6 znV&g{fXJ+G4JCXwo%asfT!yc(;=9Q2A1GzaX9Bv46!FB|d(uJ1kILjyO#&j*(xReB zetl;NsTqhXsdbeaI~-iglLE+rjh}xCI2s)Y^mK`(`H1JB5FTw)hgeXh*B509BpEz! zTdT%Hy7c<$evUJCiP3E0Z9*XDqaP~`yc}eyA3=C-PTE$Uk)6sh` zU;wa>@aQKnhzYWxde!r%@b$hcuP;W#b+5aJ%Klf6*-1ZQXiHV#2Kw@Flv>*w7e zpQPJ-skuhA)eiFq$OGa)bZ4FxSt(^p>8C-((8eL&GXWGR%SQvfIVM06y<3Dbyw3Vw znM}Ho6J9*!_dwM{$mJzF08t!(D)kd9c|IM7PBgA@N=9`WGasZOw-MmQB5?%f1u(WR zacmpBJqe;~RW*=D<0;?;ek~K*dddQ*XPbzbY=j+h@+WcBbW+-@%H~7lO$jwAFZZ}n zE0CRH=sr}D`B9}jYH@Vj8k&)^UqqVYKa#^n$-4QlG><&NP=2z_GDXsn&d;~VRjm`t zz?R+ucnJFVu1eh5g(#jzN+miIM(f|$r887@*ZC0zk$MLOo=*squGx;KpD%fWVxM83 ztep*aoiPqjHw>|oCMK0{Z5-6f78d_YLZS_;Hdge?}@epV_eOQPDgvM-xye|!^OsvN^?W|a` z-X_x#l|=?;akFLOt2tHssf;7#EZG|-8%e3T9EeW>aJh#UXo+dq%7PtPbx1?kgNt&+rX@tYjN82If&O1fJ7y=^2r^-HH9WDzRFPL+j+iKDKTiv4=LmvwGu z#lf6PH6Ud7PFj~zl%uws-jEZaV?Y9DGvt$|KW)zokLC5sfs7>rA?e>Jdg6&U4NZ z0r}+cwqry)qPbkGVDXP|smw=Nx<`fG%#XOOFEfEkQfK@9iK_yS%9NEcdj^EGaaGe} z6?b|w{Ci`T0CVcpSeaarnWVw(5$Y-dLr#rMrYcb>`NJ!DG3{tQHvD4F&Ad=(C%r*uO&2 z@%}7`#s=mr&m!RlikAmJ7mI@zFjOn8iI{XzZDy>8#y1W&7|%ud`9q0!vxzD9gyum^ zAqsmF1t&2x3AUZmi0niD3i?&GQ>CwZjCvI9X4HfM0*-_i{W9-U)K zmb^N<*HC5TIe3QuQLeXSork9M)KlTq6YlB7ro8Y?VZB+O)!l^G_*_-_@nPn1nWZz= z&07t0XLbfWwLPSk3bdNjXSCz0n!AI^!PpS4Ba+bm<-|wyva`8(iV!iD{z-R}^G`c9pXX)Mrn#ZwM`r<~@MSSgdZRtTnuj;%r*R<<%FE zPF(~?D?OCY9pLao6e&(v=k9YDI6`|oh68lj&dZ9q=%g!Jz-}Rt7YJBWK~2f-x^5yY^x zaUWBA+N*Ol8;tr*2N=F{t>`Lx4#J~;&R*PWgk`PHdGND7j z=%Z@l6k$*B_6Iq;hn_rx6DP)edubuPpWX?6cabjHa6|3nD#~ zlt!g=9t7~sN2?Q%8A$A^TPS7|l7%W=VnagrqWo2zhn2BIn1O?=994p?iostCuWYKb zVOD#KezVS~;gokYV7z+P4vL*u<)WP;d>04iHy8>=ad*P9oFw7N(nRMxDKT&ad|mvO z@P@KfMK5pqgus7;DDud57_U|hv+}&ktDqc*i=evlXzJ2BBFhjL6xo+umj))X_T(WpO!OD_O~IyDC&qH5BQqHL z3-b;xl?l6M7!l(0N+ns9b@Kb|InzdXE8jS1>U5oP#HVts8*{m^SsT%q3>pHnp{z)T zB(YjTmk27J@!P_deEJSf3JXftc0wT*g5FspiLsd`I2Ki8Nn;N#h-RD z7mv|TwuXu36Wat!&1IMN)}-aTk6F=GPL!d1f!?TeaLz^-HN;19svuB^`6TT&ihx$4 zJGDx+IaicA?QCYWeQm_9{L`c0=WI-Ve-CG-2Z7}ASr_5{AIRQgu|LNPQ-4(6zqs~p z**f74i%Wi#sX(gC$88M>su^P8tIZz5whfTEUK;oYG{IUSy!L9vq}}H?kDCtWUxG6K zX1!G5Yp(2tWn#4XIH+j4pUJMDQeG>E7r63ckW##7wNxrw<3cx3cQlZU?~;8rvTmK5 zi?czD^)M$T$5?U4F6Aqesa?d#E+Q62J%n2FaBi6E1?@4~h=ixuq(&`jOsi6<-JJ}0 zX$qc(ahTJm;g76r8R1j%JK7bgm*7LlQsd&td=1iFKTRH^GBAlR}gclkxA}{1Vr+zD;5!H%#UH zV*hJVn^$m)mGF`Ugi&ZdO>#Xa*bW;-T(+6wfsr){yR}f)jJ7owm$T1%kW5UvDYxlS z7=w&LrNbuTvyAF-1z|Bcc>Y8es^A5vsvP_X=YdYi5K$)$D+?5Ht|rGfd{|9X5nwD8 zIVluWteD$lo#Zr@evT<1pu2%}lZN!fFQWB`>9K6ciX$|#@l3N_fRALg;4!YC7_Pii zn>fh8Hnw}b7$xJ4D*wEXYda>oC0Z%2DY0~<&FM)}-dd#1>}X1?He4+Mrj|cF^bztc zLh9I`#kExc^832sHvC2iF5zBRRE}t>m^j(GS@iY3f>lOsz zWlQJTTMp?0nI+mI$FMVH#IR1R(kwn*!R|6LUl**Wto6FH^s+Q31}K@b$hHkyfa zva$n1mz{rk9~6RFR9MpFxNR6NX`hk4fewp2C^m35(jMbhTsc-fiC3sSzg^ST4ix3K zA3-SjmPOPM3VT@MAs2uWcgUC{7ZV*2k&SfLpuBPP&0)!r8X2s$@~%pCg9!ODXxvwM z@T?H%hZ4&vxT)8^eCq0vkD6k8$CQ6x^suec2HG^oNa8kGK@em3WAjM(THJ!Ki4EV^Ewj7L`^60$gV zcU4b6qXJ&QlyP;AUXU}^7yPugYS~7MI#8jlNQNqGEVRkhu2$LBcA5b(38sooTK&-x z@=>JEgK6cI680nmsbynMD?*&>s^B||fD&1p7V4y<<6kgI)73*@bJ zgU!LnWX(QT0i?#75#gbI&7Ms-w^6ky)r3sb<*n2mVNUnUxo_ShrzrXzH`ln;7xvqzb-7((AjD{S5|D-oJg&yi zt0HKbg?%=97jQLvEfxUBQgGWW-&EHPw<*#WQ#H~!E@MikE+kG|9t4uHk?D2yD9PE& zxjf=K0Hv3C5k3;s7G*lP*vO)sOA71BxiGPg6HMgkkus^sRM}f)2)HSh35&2f(J`@Y zD^1Wb5@IZvCHg?*8KA(HxHCAotm@O31?;xSH(xGJYy%%sKd^mw0R$LHBraOzluVPI zBj}jwjH_Z)&vatIQC4XJlM^b^kfH0>n0`zk-g2!=Dh?sh5omzvSS((;ho-^~)AX!ORhV219k^WAmrjdK zMk9mB^B&tl=&1Lbc&eEaxveG|X{{l2`08G6_d3)Y2XR;|+=R&B3Gx@UXws)@i=Hcr=pPJQX9-DK~^xY3^r0=MRKANd37H=nWYojvDPee7m+Y)@E;O z?MUImxtPYsddo);ZZcZtvieN9!)IaBiW2rI2A?Ir&YgKU#A}w)ZYsjX|;5iO}XfH)U{W9^tl*3ApS-ABl)tww$~@ zo^}nXh}`z>RN_s^U%Z-fu1U-^xQXy=>nU2+W?|V=FF!f25jZ~zJ3<0fQ z%C=Ij+_R|mf?gyX`Ar2_k9XB%R=AHb@y-P?io=9XY8iLS!buR~cp6*IoX@$9oS`|4 zQYiA8-A3s0w)k&^6QN-u77A^Uj~XK-qd#_gTVDv`P>l{3keM_K7X<{y-&=R0X3 zlrQ?cR?`P&_g!w|1t_qUDC=-N;ypuVj#*fC@z`OZ8k#=Wml>}|RfWDit?7IAQbv;3 zpBI3EZbVyyWK`mg*2_fFFoL@KazfTK46e@hI z1Bc&v(Ov9Re6sDK zebt8WO6e>>lTMRXkY`1>x17WZ_lkv0Ml*H6TaP*}9G=j-4|$QZEEXM!+coJnz(jwce&N=eihjrV0VeL-zdb?~vQS*5a|;c9r5 z;o`*0(9GRyu-2CjXBQ@0-d>k>bpzc%(A~K8aE!8eDN;SxIEtiT3!HiUsn$=LO<0Sg z>(YN<;>P#(LDM^eCSy7Jv75}41vX;8BxGj|n~YQmmRQ6rY6dsL0wj4V*vXx?#C~0&C+^hbgGjA~Fr>7Gjj4Q&n31rBIIZj7F$L znHTJ8Fh+ks&@Gmh&E6aN7Z`dh%5D#*@g)iK!URzkUKfdLHt9DH+1z+p=fpsBO5N$Y zV}%;&V>FP2z6|wH?johrl3znCDT#!8RT_-_W@0BVvZeEdQH_FCKrLT`%iqvHN`u_7 zrHF;96NmNe@dbxrGWU)vt8O4xpT%1=*YxmglZ3-4-t9z=;@l;(ze~)6lYUPqVFHy zJ%wFPyl5WBIPBWkdiiSxXV%V@NlF}DoN{9Ox8&ch?k|JvM^O3noR-3e)yKEdm3vsf zWJSk)s`wNt>BqNjjOO0-cr`*dG(Z|dsQ?ThfdG@5qHwc$t|=<71uqLPhPm$6$&nl` z4QfnybO^*$y1ssk#4L|D6MorQWHV{-ym=J*#n;uSZFu7@YFvxBW+mmpNEl_j9W?4E?!zD8jb9kRaDFLLy9w!pNd zhA~aXe${_jJvTCA)76nu(vXgsMW2Qk^Q1DR)TWy6s?yP+H1^i-;P9 zCsHit=#;7B=I7&@0A#)qD^>Y1>LfV>3qsCC`__vzpF*C0p3P*JEaj8oAJgZ=YUPST z6zh!EPAc?lq)s}{?F-np>MX-AoJPO4JL2zQLjO%P1@iNy1aXf-{~G6kAdmN) zsdL`Q%vzAuD37g6;pViGVuTjraU$+7-^!;-?*|3T1xMCJBN(@; z>(+dvyi}#S9lU2vb<`ZqCS-W5&hyqIN{bC%G<3zK^H1SO%MFtmRoF{H!5Wk#zS6;G zEojQL(iNn!;}pylNZ=^hdOBBW4sW7II-_Q*O=W4Vv!l)5stX8GE(95wN2_po$nIK+ z6Lb;hWscmS-mIiEM&4LfTiGjW2ZDm@29RGN+uuBKJpU$Eg?}ckBp6KO#or z7w;v^zh@6xEr)vYD=Qq>fGkZ$DLk8f6sVZ#%hi(Ubj6CBE{AGj)hRuW81Xi7kmH%P zytiExy+qbt$Qkp9*^r{ZEsGO3-`yuY;aw{VB9zGj{l^qMr7E(}uGt%rWdRvjh)-)E zb(LVX@$Q!aaL741^BPG;Wci+bZN{`oK%wrkbFcb`#I&I8V{{jm$o%M#@mH3Xag!|| zW}3((Ue3;}y#|eu9-n`J!%S&qjIB=yW%X6!XiSxa+FO+ACe8E|Fel!v4)+aC8+Kwo zdX0OH$;lvp#TP-lA&##y3XMXclygFJC@C<4%JTQfFj7!ZI_NiM&sWc& zk%EKp(WlDdqr}bZ=5~^l{tH~hy~^H(Pbf(#G*Hta^VgO)bXquW?3DpDjNWPo!3PAn zf?7d0phB5r?@u#Ax@F;8q*@(;IJ1JVI}n9<-H6BU&gbM{yA=dS`EKYT^a>vD&bWoMW=Hw?#vZb0?93( zjV41}Ja%IB<6nh_kwmNrN$O>u;5CbLFHGhL_`AG^{8bnI@Zq<8zfEh)&D);fn&F{L z-_*_A#%S-Zi<*#>m%BVS&+d9SvJ-C>*9kT#`0q=mp+$LG?dL>{I97HyQrQzHfO{KN zar5}0ylut1ZR#+BQXqjHk%fZvxJ08RKv8Jqjui0iC|8E5xauOR)@cYqGHdT}BBhmP z1s3|%?l+G1#!+}`I<6KwM=ifRB)F5UW}+v4EGl4kkxzxrfwMI;O}?`i&E8>E@>=CA zQNVve6lOeCx_7D-IZvTl#?sTOkOJ^g@hg>F?~|*;cI}(`&UjIYgKFy5yEv|m2?UqS z+=GjFi9xQ$fJ<@AAs$a_11WwrylTenkZXrH^+sYE2YB|Jj@?O8Q?qrE<3-oe;7y`j z7GO1PMJow%Dj~>EQ(>ZQE3CFgh4(>`@L@y;ge9>4mah+TztnnM*_9d-s)Y$Ea{^VvYW21RPB*?Q5FhU== zIcG7mBgSkU&5@Fa77Uh@GoI183fG2B`qFqKt+S%(<4oCjhaE35bvu!&)nD93wZqU} zY9k3TTE)_tv5-m2#~`pe^|H5Vr@xRG56lw-()vSzD8Ol+@n!8vG##TK5H&KhPm6z9 zR#qixoJ)37blvxgq=Do3Y$_1KtknlU1TVKg1r{Bi#yHbCP)g#}d#t2i zLQVc#F+@Db9+61M&M?(K?31Xy@pthkkH^161=gUmkQ=)x5+0>WOZjES2zm0tk}F5} za)9Dzg^wFi(ux?os4XH*k%55D3O4|4dImv`j(9NOam?m=ikaH*sz&72XxOCTz}K?Q z>e5n7secimhv3(brR6G!bmGI6Ue$e?;%X}I##N0GwZ8UIdKZLWLjZWo)PGy~d#%~E zl7PZjvD`rPPES8?Lk-s#i;(9NpyPyC9nFmp+zwiiuZynyAkXf6biCt;^y1WPt=j;>u$M6j(-WB79t%xArsX> zt&_&(JHpCGT+F>>uciVtixn~FYSQHwj8tA1-C{g<${11Ee=a(&g`n%pcw@0)r&f&vRRyF>myn8? zy)8!0)iY9dA_cE6Sz{Cvvbho0Y}-_aBE1-5kvCZRl7fAuPP*)F5(DKCO+bjK5PO_w zT*-7EXsI(4z%;X$TC!bJ6F7aaSInP~`;~Q5O@*Nuc`p-2Krq(eM5dDgBF5QK-kh8; zHqUu>8v@`blYV+(I;V0O&npugJDDzZSE7-ie5SfL47?tZbV_-dgzAryE4fqKDsIZF z6!^BJ>}Nzs1$MBo~zY_#aOkTRstBm?y^Be8dbT#d3g z`*DlUz2L2{ru`N)d5vA%-hZKlD@0|7A2qO=l`rWdRBA}2h$>8*J4LQIR0Ox?K+h}t zj(=d4D%JtBhIgbqIn(h+WLSKEn$gA<8FFoeXq5-l^pF&YeU% zUPXK=NEYTH&g3*k#cw|@BCx3%{}-*&K?oQjKXoClzAW!3S@4>Mxn?>`CJAT~_+}p! zA@wRn&Fvk3ACeH$KC9DoU<1ek7-PQpC$9*iU--L!K;HVGCf7Rt>pim8nT+PPeS)7`0Yy0pc;Y(o>4loq*HaEKu{8Q!+NxK;5{zf{SJ8~bWVh}I8fiHWB< zq+7a?eJSosF(|>cen7eSjCdFRu!_y6oXH!wOqf70WuXj9D#|pT?ZVW;W6YB`8ue%s z(nNOZ!He<=sL1Ma<{e`ZuEk6|sDqqpJBX?79<26*?0#URrgNWc!m2}U8gsLa$xQZ_ ze_N1M(%v^_Bn5itk<`bQSg*X4%2vL+dcKttFt4}Z(FLpvHUi6>^nITleNxF4=Ur7RM}WT zK-$vlR97QMM=j%vrM({gg_w?*L5Vu!UOahk@7l=&^n~%2Nm9=Nwsx&{x9M6S;w#!n z(1eUn!?H~DQ8>K?$5SuxDf+G3G^?R^Q%-r*>x{Vchxv@ThAArzbIvGyY1<9)eo6`I zp2>}7lXv*}cbMmMs*c34rg|>?$9_cg+{UYT7n12$-V(T2tHQ$75wp!=Vhx}XJhICt zK!=d>SW!8I8D>$z9DQ8mcTQm9;jFJ&G7`sfK|_^6`w_Zw)kxaSu6gN5@7-0!W}HX- zxcUjnoa$Ci8A1+e$m?3QaP6W-jg8RU=Pd1;Xt&SXA9LTuZaYNyTc^Y*h|?Bp1vCD z6DsJ6+WkX1A)+{;JJqr!WDAzB!qZLdMS0~TptaV@RAU7y;*SGCq@aS2F*5h2D#(?* z*?BUv1);#oy`(DsN`5MN2Vm#nzJsZl?_x?`N6O^+=t-o4vJ+~YvFe1~!j#e9I;(Cy z2o6xU7OFH9ERsTC1tAXJAd@V6L?qa=p9(dO1Llzr?P4=8#+^Xdm=nT%jBzwM3!DVe zJy=@UeM@oTDmmh4iW5o0(??6Pk&XgP{I?Q|YXaoXLowDkT%Eg+@Z-_2mUxBu^!Y=& zI+-nL_?!*`ea4VI1tl?zQ0psMA-yO`Am?qzOD1zmQs@^hRW-<1LN14O8vdvxzMg*}7B%kp@;XI_+2=T}hgY+2ctWUHdulk5cO*=}0Q9RuzQd z)-*`hYRDPnT$@=)U*hPge(8zzENAJY?JQdA>RJnqZbic#@smXX0|tgC9aXT!pGmg^ znZ9tyb69Y4(A`#-XcnkHQflIx-^*F(wn!C9pcMHL_a-Q=QJ>QLFK-KfhU)v{z=qL!_*!nq%S+xhGi99we3!8J}vwA;DNZOeZbO{xt_q%+MN;5(F9= z_wEdGiwG`Xo$3(pc4iVf51-)tVuR6x1##$7{IwnMfkz69^%+og4^gGk{XIsawYVBw ztOPEdujr@nS?)YdJqlY@g9^>%>>wo-P%y8+V@_R1!!NpKGSKD7p0y$b-Sl2!a|f}( z5b@L`Vxzy##C=r)5{N$xj8MZpGce|!5qo=wxx`>Dl|{yviR=!ebE9$7sdIxmZl#2yL9x*P3PbV9qpBe*Jx!z}k8VV!6CD*mE-tjSE zu7w2TAi-i8gi7Woy%CJL&e__aiD;Z-uXBwJEY=AmaV9S@%5fazyp(}gRX&a-1hw~7 z;1__o!H-@tU!9;=X|;RT@S1BN7ns~+wC>-<9mJc^tKD40GmNcB$Ia8iIUlzedK)ja z`Bgl%J5z$ONw$`gh9n?yl<~6U5U3%pTI33{<-FLw_B&CJ6vs1nvfkz#!IPh zKUD+al3db1m#Fe_^gOjmf?qbehB``H4?KKLs`b(o!P^0YM)+46jhQUw@nNT@rwLz} z(;;-dSod|2Bh*CkN(*`J4{+qaf_A&~NYU&vMDg>vPcJWo)75>9#GDn(S8gZ7dz^Ye zyz!%0UB_IjoGRt5$47E9VItd>Hlt)3m{W2CXlflr=ae3YV;0ePM3PceD-EN^=ssVG z#AtSZDIaP5tVY&f%WDplWaGrV|EE8Ji?iH!HFpv4oFI1Y<7g?%r(mj z-Jg!Ru1;>wYbddjL{-&BtCHo@#;YHBXMi*4DAS`l zm0USHild(ax%6^QU{OUaZG~ATw`WtFwsuOM3WU?>KXr{=ZoUqF8vzR0>lCG;lw1ZC ztyfWi!I)eiITipKEW^|NDOr*||B$dRUvjy3|xaF1f>;?j*N4bbia-!qw9rEP$P z0BajG8l^H8{*kN4<`N+!WJ48Tql%vXIM7lhHWYeH)A7mw8w8? zQQQfe05z4XdQu~ClC}_?P-0{@dMaD}wQi(0#Ah9W%Y2l}bkwuI;*@tS^mq<#szqst zu5RN8S(bWkmTttNX2?#9JwT9}m5-pxFk1w(Z6#{iG|s5Z(2#ip20k2}C6ahM8qO)t z+&b-2o@}Er+hMAq6xgd(--tBj2t%Nmit+LtAVF@^e2&qja9&D$SSasXqe3}%ye;NM zE1Pv>Dy3U1V!JC|+h?sE;*atO;fMqm!2w6b|4yiwLy!HzUcuHAl7^amt9e)PU}SZ6 zS~P0D#uKcXT1{l;;6ALyZ?v?+B&0U^S&}vJjx`#)JVi8*+oFNo(@Cz3L@LUYMXna? z^C;d=1*SKlt2>M`XnAC>2{EtIA~eQkh-D{w5GSX0!Oi)(SgW>8fkNTL=~JMfq~_~f zmavm!;ly--jAnFtb9yp)5tm>3+p*g&r85F-Na?!vqp*Cg1%s^ClKddWge=eo*j$7* z&c2}W(f7##L{xe^TYC+xFYocKO~IN9Axc@(R~=FXCQB8Ds@LiF_?<@Q2VFQ?P#Mz5 zsCM+r?3&!kYAQ)W97)?dyW!Q3&tJDexQJvVu))J+R9Nubkj3*!ym~T@LPU-#<0y-G ztX24XZPjig!JKNbW!24KetElnm{yi?P6l-I(+hVhjxkc(y<3HmoW|_b4_S@2(!tY= z`y~n$6eFI`Ujly(GlC}`ly+JLyJyynFOv}%iBYjoNQ!||75HT7&U2lMV41CACOOv? zU1fpVO1~iQb%wG-soWy2P{45`2Tp5R4O4C1xY}9-dC?#y)(DYDiRlN#^}?0R<_rYj zH4`>!4oI*^%xww(LMa8S@1TIA7YNqq1z9 zRAA7sd4r6SAICZnPvbcmJDvxoV#vi0M3&hv)Q_>(Lf%UznP(zLeDOeK=$_FM{~pgI z$?(LerJ;PAV`Bky$W?lY5GdOS3-~D_L1g-UVQ_RZF$hzrAA!2%%vKb5GzbQ2O+oy| z!=Hy;E!(VcBob@QG;d>*qpUO?ZuD46a5@Mza+dI{>uy2^h~RjzAE%@}7dUa1XR$PP z{RhE4I5~(g*t(TQB&f$hS;IEj`28{dKc@-G{)Q3u8y+^y9BML?u*=Arfqo|=hNBaR z;H=_0WuAFGM1lp{ebT{GZrTH<7&^(=dd~h%5t|a;NITW$S6izw#w+O)B=Kn?L-)(?3gPR?zGz!rp6y%K7ikFk$j^3tPP;>S04^(q_fRgnnqKQ?~jG)H(3-{LYy=&pUjXftPmiuzdb^QJWm zGrBQPTG?K+K;dQAhvet{HJs1{5J7zag9mC*nvc(j(itEUldN%1_%GshhBldRyZacJ zPWUIp)bZ!ZjMD4uk)+_-`FOn?sANGJzXA`J?qUO|Ey;i;KUOl@5Hbo5X&lP#D2@V8 z(RrN!D>K=kv_a1X&>`R6Q)L}w{JqL*7hmnRS(O4TT%yn@Kc5OE30DSQeh`>3rpTXu zlYQ}y^3%g>0Oi@1Z|$>;SgV<6?WS;Wb!em`S?qFg=CFHsgo5t#CpFPxL+B?hk!5P2 z9lVwz7O7&zm&$&H5jo>NY7@Yag<23Ag}{!8W0S^2NUjR!DDLH*T0l|s?;zJyI{2)G zg@pA?yP#~Q(?$SLM4kvYDbKq85N;h~+=VSVIvc37{{daWJHcdT~xktvJZb^)x<<(B12UP=)AKH(Enx6I=3(+X^ z!rxqtL#ok;^4yP)8K1PUUyeX3?6G&LS{u^$+*p;(!!_Ge%KR~o|6UvW9c>|pnqot9ay^*{Yq$OUC-TrJ%cAPzwwisp{^AZb5&thn>aPO_8kbiK4Qy?-w*1j+$PfJDP?kB za^CcGeL13E-{0W6P^}cqzHRyqmy&=}qaq0zSE|o=&FxNhxB$onl+l>%7$#iq( zxoA9yNlakfu1c9Owj=<>2%RBcAwNn{nQRW-Ik~T4z#r`Lx;*9BFCDJfF?*O5u@JFM zs==AjxXFX&`>4-`G|Urx_tubcAQRJR({$ICeQOS-r-^i#90I>LiAR=io@&Xc5vFhv zZ>;g_Jko2DPBK%elcaysxplG>l_v4e)-vP+uCblkjO6VQp_e7A2rz};w}5WWyoWW- z^bJUTlKdcql%=zzC{1WDIoUD2Mi)K4Ds)dzb=PBw$wqBtxcM^*7|tG*S+LaFdh|(S zh}P@nFY7WUULt_7I=EPf_z>s9?~HA%RLtqwNJ4)J@b)GGs#GYHNa;d8`!&AF*Y?|E zWL7bAdNlI*s!Fom9wl_oy3S%C^;_e+ba+W_Pvz*hpBdS2Mi$C$3G=m=_qgaU(RA>S zKWQoB8-Z)7O295gB8*k3F-4tGI5Su~#KOn9p=3fF0Oa{Apre#=sil>m!b)@MgKDg} zE~PHmUZ zAEGgY+up^@269@!YdRc0I!xx0I;fNS!Co|dj?`XEybCGkn!6N+X|~S|nGmYBU9fO* zOLJKsdN}XGNfCggiGj3PPo)nTnxQ->P~IBGMD^8%l7o3y19mc1x&9_cr#C4Z;^wG_^3%cCH|GXsk_HImkK_SRr~9eX;{)n~gsLZ3g(b2lA>0R@}+iHd|6+ zC8|!9POn7|itu*|zht`Sn-t|%Wr>I1y3y%s6+)B8yefOxsT1+KH%;5rvf(}=-7DCJ zVW2-wIrK`?^b&1~z3RLHBiW*V#xm16dY(EKdnZrEoc?=C)X*S`nJ!T!xAC1YX)0+K z8l^qj1w)tp zWScQQEUM&l_U=U{;_QQ_Yg%2Bc{Yi2-3XNzFE5n`=6F2dzc}O|VB{3=uT;;Hm7d2< zbA}CSSymDQtYJho^%qWBbW%!$8Eu_%uowF^nwD8=M})v`qNVa?B8e9sV&hax9j6~S zq4FFrH|v8kD@hS~rsjD=T2nQ&B~{1D~`cKv{am- z^&=&1-{__zj}3a<3NUgU5VgS&YnI#`8?OtGX1IN7!N9_eJd_+F8>@N70=1!?#$r&0(_i(Ga;qqmkp7F5qjr z#-T;l4-^e_p0j_~-$_O3{V=i2OY*5V?Vd z7mY=~|1#*&g00+c)JQELzFonZsxAMV^FZ79@36|KuP0Kxf@6A=mE@o6aLyE1P@wTR z3f88Ao<|i@9)51Es}yt2u<)f3?&g{9N~K|YT5u0<-^o*>S&o9uCkWkTgPNCvbI=vD z#?PB$u%RwU^)kzk*8rBwOKyRi$4P&2bG%OyuBmXVr<1fz(39t zYgY1+sNJuS`x}tUf)|jL*k!Zm`o_wqLjXZzbgE?KeomHpMPNx3 zWZ5jClb$(S4;eCCoyOT%QQ@?e!)d01Yz8=xiZCH0k_+_Go8;;}9K1XHnNMkIo^u*t zlO(H4%9aQyfWL%IJX^OH5BSz^4x!a_)jd z^>+D8vEPoCR^~zA%R*F5Q4%y|MLJs8=em*G^GK0C0w(tRYtOM(9z7C8MIiy*_Qu|9 zcPmBWOQ;v2yiZyj7r00Tg1%$~2CZ!d)J!Go*4}GB7--7zf8sEZX5d@t6%| zLUB;iML^9_mw;qsr)ane*2xE#)|lI2ROA8A-1#J(%{Y;f2o9rThX&XoEOOw@CPSLE ztXB}!n$ZVWt@g8hSAI~R@n*gj8JMWpwuM|07Y3{g<>o_gRi?Lp0u1{FN;_=-ve|f~ zUq-Nj6w(HaQQh#ch^sAU0jO4a8I|K)$p$>twLtvn;dR0mi%w1!VP|-yakwzEIJQ!l zZ-dA&!?5sHh@o5vXqDfz?yv}++8UEQV#&+G(WById}d^sgdM+ak;9Iwima6`7#v1b zN5~V4q^$l{uN!LIt8TQpJV~|n-GAH^UM|{HFRg!ycourRM_@8uLGq-wcVK91+Cmz_ z65#7vt-SSKd~>3lDN{{M^UdOLr{)@@Yx{O@z~f48^(Jat&sD&j$@hmbr7 z%)vbwzzw5aGCO+;=yJ$%Rn_P)8v61t%CY|cyXJlkFYy1L*Z!+NmjC$^CO~yU zUG;;?{jPsM__>CskN5Du>+c-pVh1WtKF(}=jo?m+XWEt+Ld&N{GEp@rv{xCKJ;~-V zKRVAq%*9;!oeCn6@K)zj?LfU-4^WGHJOGj7=P;x)vGrANVW%CSq_-LVqycr&B3B97kM9 z;+|SIGIR+2;ICNEafx#!O-5kitywua%JwXpvs&De?xtXXG>Jh+jN*O`;+_nPkR5gi zJmc2kVdrjW=KtqhO*}udrT9G&HNFZjwf}Jsy5KAKAKCst>G=RdK)k;a{)5ZDJ4ABy zmsN!(wLSXv_%q+-=Dl--S*Ie$CkL!-v4uW=PL)j`OXF{hs||nuD!%Ps03Zc@_yQzA zz!x*xq@peG+FrwdR@9vy0ZJ3{6gLy!dD;A_{|+8|-RMJVC&!P?_)imZ8E_?{fQb-W z?Rx2T!O1bu%5|}LoYod*^hu&c8q=L6E@BAzuAjAWqm~ja1`yJ5xonor`i7caOno#E zenA|;PMmGhnE#`tEN$h^X;2FS54>pQ^I0E#F0g{5gE2o6;3x4S+HWe<(;6sDDLp1`hxXABfaVfhN=4C9xl-W`LPW6NQ0y@@y0G-H*y+p}QnrqT za9sR%(9Sj}qW-R;#e_1(O1@vE!sA~(3U~M%`Jcb4O74nof%XO42`GWn5If+$WIQ!F zmG9o>Tlh>6#7c1RXTjC>Ch4CPVgLZIz9?@VaReLaZ_QbnRW?t1Tn)*#y1AIsYu&qr z1LJMbblel2ZBxh(>nTX~hBj0DK~xDT4CAbfk!$8*_s|j2@g-C|+`&Dvty&AxmPST8 zs2@WLjwJ4S_-ci1T35E83|W5QM~6mC!NJ>KI=b?B9OfP)IArVWsZTnfEG=5gtAmU2 z1UR$KQ(>DUbuVjdxtRR#*KhBhPkTvT~yN|e zqA^c?X5DP2sb?A_w=z9teuFn8X1in;&4BSDck&>>M4ImBrqAlIWPN^jb7Uh+%Qu#tKEKgD5)K7>aw!FR^tsGAL&Akl0h zV8K~ce4c}-Oj*Hk9g(Ya{vw39&j5!4ZqW!)Sxh4)u_Kp0(JG5j;o!Tx!NDJ{CDWOe8~RMibNw@rpx z$QTajFb_@>@K!{CD8fW&&7(!cdu*AWTYI^|g^5Tu_UN$^{}N?c&y)_0#MvyABS?^! zU7ye@cgZ};zi@w&{zOqrcpsk^S^GH3ATBTxZL&tqGdKrV^y_BI1*Lr?M}oJOwLEjh zkoy)MCN(6)VH$q^)A}fCKgUvoO0YSp6p56`;pa}L29v4v-dj}E{OTP+kAG71KJKZ? zxx36UU#E>((NoC9j@<>+q&Y~KOq}ggUK@oO0yF_G^gL+T^cR#m zvv3{ojyQ7`QxA0R%@i3i1fJN)9IUy--BxOUHD7a~V>(;~VriqH639+!@PpY6QJvt( zP^BqqQp@J0j4C2KqZL77OZ(68C5rHL>yxX)hVenbMeVj75QsVCL%>MkhW<{CO$-d> zC;}dCT3CXo;3oz~7Gt_>G%QXM?3me*ngP~nkum6{G3QAV4g=n694D!n#-^tU>a0B> z)~#$6Ic+4aa||Siv6Z~Z61t1fo=)7(%M%4}wZ>#`I>2znE$D?c)`IGqhk@r3RJp9- zUEt&4qhggGiWB6zPDKF}W<+l>HQ??Bd?ZlM#?jG(f|)HgGglQA6=2J7=yU?3BfZGQ z;URDmh|6>#YNAknl>3JzD6N(?P7!3Wt3M6mc88hFkTrDnm)S|4(i{CH+n~tE#D}NZ z0_+HB+>sTHz|@4R#U?tb)%ojB3AeubpBlvKSqmev!=0ajL3Tz9DCvt=D`>lH@6C%I zL|JLZtq%k%bShrbjGL_ODlMCfoi%H@$U5nO6D-6;DWM8vMw`|fK~(Is@r&wOV=b}8 zv(YU-2@hbDD~o2B`R-!&OHa}1z><#4X$hsEM;Rj@6m7#3A*gXXY)qAmcmYwc*~=wy zUstiLKdqj-M3@Q<$w(X3hug+98&8=vB+`$?9w&^UHY6Mc=a0BrOMeU7u5S^E1)q1X=@RQ7XAcE9rR241)GWY}{ih&=7GdR<5zB!sV(QGZ z-^5kd+=XZ*b!V9VO61dYX6~?qjj~4JSZEs zdF4Un_iP~{81SShIq8+k%B7ap9uhu26sJe{wNewOjjX2!1=2*=!$wJ-aOv-PXpX7P zdvYDeKh)&kiY_qvvkXORBDrQ{W7{6t2#PuWdneRKSW z+F9`IPsB_SUsjSnw4BB0OybRWiZ=~Y$Hm1=m1ND_q|IiWk42cYGEZmpUNpaJGLt#k zi^jy_ioY>1@>3v45|^U%eU}!52#(gOp2szmfFoLt4aU7E{>sx{bS^~%+i>(#WmZ9~ z;cqKNqint+)0zuj(5V_~BOIMmJiIq~inipXtH?OC;^|m-_>?N6vX5gdWqpNRBpY&8 zUWjKc#x`@>$*gbCljHefZ1OsOs;=mM0#&gLB08-Nb__VnmIoc{7P@3d$aJ|K`w-z0 z`dXa?pzxCF*a^%cV$%XZ>C-Pq)gncNB zNZjs2o?<}DHSR&GP2s13Kz&s%G~%W$n^UNk=O$sc(FwBX36HpJCc`N|p1q^>*b6h! zBt+Gu`DmuLC!eRqtepQa+yF(UYHbuQxD`%7hRTg%+18Epq2x;5p9Ka1ag?OQg0Bn8 z+k(#)k!*6RFG)p=nl3NWpia4?+A}5h4mwvGr15F>_)iur=Brk~d6X3*na#mN3{*K6 zm5d{058T;^g1oRQiN>6sv;=>XPqvu~`+#7PimVzpOPv8y)y4K`K96P!wrnQC#YEs* z#_#RA4@(6PGcDIrdq{BsF)HqjbB$6o$PiJ0&jzEW6I42_maI2`lU%p?IL)FYU5c*K zq|~P$sL5a%KrX`R@PNpGT)6+EZ{ssiKOl`Bd--D59hUFFS=q7AWI~k3jyzYO- z;X;gs)4>n>Nf`MHdeSy9xZH)C+~?| z%g|c{yESYGt<$lZJ#hHM5kxU{%JV^txT~qUYW!v`$T0gO_oB8o5W*@ItLs+ovf8ao8(MQqxRjrGn ztA5IN<*r+G6s^dwr5LRqGj2YUR!xA)6$A5pec{fKQ@83x9|*?TPgxJGTK)Kz*G38y z;w90NTlKjqXEBJ|_URzH!ITTPQtu%gnl6W>3 zgRIx#6`Soz{Huvxi&u;Xk2Wav?43H7W^ z^VOy^yAL%Ibi-x%!!1PR;3f<=K=~8jh}H9LJV)D&D(c5(ykQ#~YK;4ZCS?0UYV24X z8M}MZ-LH)uA#))orj}F(^S+_0q~$w|Bl$;&R12agzp znt5;%Gh#!1j@ZX!WOr2bOnsY%&B{oU7r&dYvBvQc`wvJ)FE{$seMwEV_>QzKbp zzAUyEFA08gO8#Su=J>|#;<6ysNF5aA`zNgTbtGqTPrJ8i+HP)BBKR?dMlvWVT$U1q z%YYNXTSkXMRMby~%>Eic^50N%v$ab740pBbcV$I)2Z=>g{yxW)JC9U;@&-Sse3Fou z1surou$VlAy^>^z+<2}Z)2$)`mEBk6T0`KPa4Z(92BBz9Onw`2%3rU9c4@-(w|Xw> zWo;{pf!y@&j=e;dq$fnTe8w$)$?=R!CqQl)Dp2ET>AH^UFAZ$U!Mk9^YISa)dU35| zM##Sz)U#X25zF36@~U7d?9q2YS8lNxx23Scl}`hH{kw}WSra~JQ_UYa3h~TIUl%dM z7Rf_>!;L8BXikVhpmz2m4vg9@Kw9K8;tJ^)Uh#^^t zG_N#n;3e$w`Ympyt{WBb(Z;pd@hPD>WxLQ*IUlOi_)ttFCNvT0ciK&_)=0JP<`^2b zP_ro8LmGJ@sTv-L9+|@*YQBz_e}*dUyF`%DD!dIM-Rehw7MM|^XPk?QLk7hpkj)8j zj|VX|Kp(8PHwE>61L9cQ2QmZ4n7|n}NJ` z7XnVmk!pB@{5UaMra?^;gE_8nER^<1^5W<&(>bM>aaD`JAA&9aM=#UyW}TV1@+ezq zGyMOx9G@7^1w6I8)kWtgf}?q*C;3ya*yy;*Lss{B8>>*gDB-o>VsNn{sB?zFjJdC^ zoLn#zG*wVwoH%nj z6xtkLHN%k*W;xYloy81(Jp#-t&IveE*oGGBQc~fvVO`5X=`*Z!r0bYD3tV?HiaZ8+ zv4iKO9}mpe1k;BCTA^EE{})P<@r7%$H^>GHy+9e)@7#ZtAP-=&6S z&uEwWX+kfntXiD>u>OfhC^;Ay=+ZD;RV2!gT4-5WK54AHK7TsONVf2bQyfLV1o{i*TT0tT^2U zZ=lJN-)MC!s|Q}3VGX2UrJR4{rX=tuzl?fQG_89$SmU$qk@3y=kS&`Lj^<_n~fGyP+f%<3MBB1 zGOF5IdQT$>K_Zs?|8&u@i%csANpC^Ug+-Y0)MSY{1d6wSEYMXahJ+TjOTSVnmIB~K z5oBj52tnm|AoQ6eM$BwH0b3b{9S^6R9OnAnw78O?=<+b3a?M%_= z9(dUGSI+sozVI^y%kFn)gzgxl-`hfy3z8yA66@(#Z4Z`BoRxRWwE|ItI=C?BLSMG6 z;rdwExbYEM>%%z*ImRj6k}&cfsH0yU)=LzSISS5#{5_D{JQZ}ML%Kx%{kzA6ittQ& zyv&ebA9`Ctku-|Nh^!NYlVn%7b+p95UYoDy`j?N*?x%vW!u%dCiOz1+xd>dla&_-0 zurI$s4CJAiAbe&nY339qXtnRG@wa_TD9B{5qU7R)O+xXTYR{4mt+MjZnw1MP?C~10 z;L&!5@;iwN$%~+mjgC4PyUcNEKk>L)f-&Sg_PZN8y6xT-DYC??Qde&W75MuYiY33P z)z(^SBVkr9{UR3Xh|%sqZ`|_S%6Kv*8uusG-RC$>4ZMy#{yv$pJT(SbaN-`YwAiTW z!&q9KckyMGl&i%MkR&b@1a5Z(llbMIlZzyZaJhCaBQcdFL0}G61Qa6?&cCrSDFjK>A6SSvA@_C^)wT4EJxevfSc(CrhVE2FiTw`MfmMkza+Rak<555FinnB$|P;E+2@tUWLRp%Mc_< zg+l#ZF8>;Z5KvV{y8wi2;eO;rWumdb6CkaM?DM^CpOhtiQN-RSNcg>*A#9%HjW&=t zbC>K=jC^T<67Las0%Gi0`9&QvZx-07UqqyPhZ;{4iY=vOQbU7jVLYn!k%6R$xBbN< zizGy-6tOham^^KPlrF7U!}J)Pr^XKf8p~#K`PeDbI%j#P!6MKx;Lskvf5~4C=Lq8z z?!8d?Y+WJ4meBY?nbehfM6A9%CzDj+c4gz7xaq0glm1h98IDP~Bu?F1@`;BYv*@i| zXG7uEqOL=C%@azHqnO<(GnSlOeQh0t6_{0p2JV^oOVI9z>Q7dm#iE^NtMi>_Bhce` zA7bNkEvrwA9avr&SXc!uMGRRzWbc|h^>7lL%Yx;&et#+=;!UE3ld^4}+jL|z%m=}? zmRADW0n1sgrrX&a&TI@z&d{V=oqEKCeEY}y_ouT}pcNuX5>~H%yeAwD-^9=!PX%ZXhq=a~G;LhmsB2|FbU_4N8U*IL`Ld_N*xQlz02AnMo zz|zL38R-mfQc$m=>X~Y7!_`(M77m^@G`1n@SBk+#xaMitLn}bt7UU%h5bkT1iON*W zB}T|bZtn>i!J`$Gq~sqNdzVQ+XuBuHL$o|am=&m8rshS9w~OR#(Gb*SuYvP0Vr*@30rlmthkX6$jEf3mR)R`tce$gHd01VRG@s}pr;)} zOk|us3y%s1@zDneBylguLV^M|^Dj2%9aDnA-rUtWo|Eiqiz7ma(ZdSSmhf!3iw7{L z{xs9LGgj+K<~y#Ez7#x|igH*XiI8z^K>Rr&tgTNLx?do($Fc|)l&he4^iJLz0-GhU zW>H;j>XH|2-g-EgSzSZG&M0ZcO;*Taz`$GdZYJo485?&B%vxw|k0`TucNSCre9{m$Lmj z1Dx+(Z$x(1Tkbap2+N*G7DXTloF}e61~3Aan-v8z$ic&A<;$o}`5rO!uB&j|iL()$ z2DaLVRuMww61cSL!H&lUVR<95>RgF*rk|ymaDI3 zZmx0rT9+G2QwMfJ;N7B5*%^ghdez88=(G?47+P@O+C&h`PEvN62#A&3(?Itz8WD2t z8*v`wmT&z>MK@k^v#ITTA!h+*c%o({qsjPXd4r*rlL`%W$>qvb4U;8ct>YRr3h|1V z;yE$nE|S=wpv1vuTs#Xya7;&QspVQgVeleD*~(Z22B*qthj$=^RvOck@qTF}@W-o3 zgJOAfE8J29c4G?14*W|m(!G5GO~}@lkd3qSPOBNbly06t#OS(UKv@k$M54*G_6_>a?Nw@7W=?H-2xM?t#BUXQ;D$}|d-Xdf;n zG-xK{CdA`eT>D1ox)+<^FVsf3X-@Ul7j>ho9RZM`c~F4f;TI75_kp95KAiP^0_$`r zLplvdm9(KCdLm>RV`KNCAJ0&HO~{?LM__FDv=O-Can7fAZP%R5*$_AH>H%^F4c{Kn zNHeE98gf*wi9pLSqfotvDvU|BeH~CE=J1CA%mN0V6tYC~JwDo0$h#_$ z>&CX%grj3nH;g3!iN*3EX1gC}E$ba9vY=kimJ-8r05y5AUc>GBC)-;{+Z^cm>hBVC zmWCtIlC#Dv$=9Ogls(mN9o;s{g5O`)U; zm}pduK444XEyUd^FK-bPlk(1?o@Q@Zna9b?E~>9&D#KFaE~u)p$;_uMHoUxQ>@Y~R%j2)_NMDYW_WYxj zOKU%f`HM=48BD^9b%RxAjl0{3zBPE<0VR|n%Wf}J?{Ereg`&sf>BrR)#o8}y3)8mA z-mQ?i_<7!43J!^+4znmn*HeOux@|IjQ_mTKla~)5S(KtHlk{Q*BL`yb;f^mz9u_f= zcdx?cbHfIrG+2miOXs*|$7xHt=IFv}dV@Ult5Q~`*wy9AB=nx>Q_-J(RFJuA^KubZ zA`QKRk)AB4Z5*-WwUl_TBXtCpV3{P*Nihop?*b5b;$P>yG6m?%W!=CX9AVILm>3Wz z!7mOWN@yFXhtU`0;jSNgvh=J?&sR{yI0}9R-X{TD303bJ2FQJ*e6K{7uIq8$GiHY} zs#F>M_P7STnZ`W_kUo9;q%xv<&(GbQp8`j6P|~q2Iha3+mbxTa1(BaSsSdnRX)GVQ zHquNyJMpyBXY;6x1VuJBogPp6l7d;M44etRdUgiWW>Gx5i>DcB1K>( zu+|4XO13BGGkL~qo0ArwYY&>sj==HC$yl-Bkf$X{bGEZGa9QK!OjDqPjfx71Qx_b> z8QOWYV>7s}_ewRKBO7TV*xqmIHV+F`17)r8x}n;mCVy6m#%(aCC=vx}^hUxl>Rl_t zt5D)0{J_&~OjFt{WTfH8aWgcZk z<<{(Ti3_A5b@B7sX=~7xqdp&Du&8g;s97_sd6gBjd{Z<edxjWDbx*p21ZQ zOpVtAoJ2+wr3TZsZ&34h*+IUh<13hgZrYVX$2|B-YoH1(=Fbx%qruObVe1#HrFm+e zLlk--$>oRVz4AAG5yaNi$#b=XXVbC*0>zZ=?8%6#gVfVmK3H?|4r6tqU{$kwLmW|& zQpr;?k2M`im?>67K*W5>`Dgt)b(Bg~$h&)SoLN?W44_xR?!r|g9 zR)>h_THAMgVYBP106`GsVa#+aN&eb22xRir7M z5dQdBb24G=kB?rGsQZ45Pp>=!piRqJr-P!4D`5PB5#C@>%tHWBbNeq<$j@Lxx+X*4 zNgY0P5&7E}3(f*u?xa_RjJuZiel%CTLT3Bf6crIDez}BcG77CplteP4Ilr$-$ZB%=FSK?5HQslq~1g&X^EhW*&e|j}EPR5awVFYuTZZ z+zkT|z?(cILhVpX$O=+o4>%Gq==RPZI&_@`5;7M%hA|Q*2sk5u(MgXjB=(Fl{HOC z$qffFBi582s1zmUUdfI_g@{$blZwH4_(@JZ9p1@E1la2E0muSZ$Cw}zC`i$_(+?>g zX#&Cxl-QGKRD~?kwQ*Q&H}BePi8M&^kP3NKmJ4wc*6I9I=3-vIAmWX8GA8g5w8Veg zssm8b<^^Des*ITph%&vN~ji7 zhnwNhkJ`#xEY0PZ(WRjpNuJ47{R#23dCELLLle7+py#ykJWec_>n{(YiQUq25sM$^ zBSWQZ{Ki<;?3|>z-i@@!X}dS8X>Ih9I%>>Z*3-E*1Zu%!Mti$Yo-=M12IpC-aN!32 zJ8SzxAJ%IX>DMvZ5)8UxktQJ~ISW0V9o4PbL3RhyXbAOFycxJFS_ zaQ=4xF+e|G4J)|as(y*FLmiYpQTS-{HNa|!j3mPBp|Ej$P$m8+48NDM;E_d1&CKC3 zhpv9L&M)R?9~GQKqUQi}WOW5S;UnjB3PLi-T>dxPt$7UjvyLaQ{Y^o9`sbfm{?oFU z=clI0_GZVI8BS`WHCs9jl(8{X(!_MMoaXkKZmb}_sr|PDUvp61o{(9nDuJ-#`!K+~ zVk>qW0rTzmm5c4R>+Gc$RhHv!l3<1L*0kZq2Ure`OKL-@L#;-vq`G+<5&2Xp!DWP4 zD+nKVN4-W18u=`&N|dY$f?^N~2ym~E8*1CjL6+Fqrs3;w!pwnQwy|;Ve6E4LJj@LJ zn0Mo7;(9R0>vdFwxiR)N>!=GDYXp{S7&%r(o1We$(|eIVuzqbnviU`3)x~D~dd2v@ zCHdvQ0${y3fV^t!f))eND@bC#BxHz>W+TYKfq-uxB^xYyvr?|IGvY0*EqHAPj4VKH zZ@0pd;tOK>Lx2V1EuH;uTZH`pSJa{=l-Rzd|pW#U#WuL10@ZRz;Fb zJRPY;wOdJA6!-C^p-YViA|0UF;HaBWRq*o9J6@$c)6Hl1ujKpYT9kel^Lgj8A0j?w zV8NG0U4DBm`azzmb&#Vek8p5_aQelmp~f7@1bF>SvoXB4{>w9CJj zCBA(wqP4EbtN5L}QH5D-@VOJtMt>Ns^N)gKlMTz*Go4e0lv^0V_R~w)?Rewm^h2NV zIHMP`gRa0GVSPTji7^&cL~1U^q5~>Vu0t7NQ%r#`ahB`6AdO04A+~N4-FwCOi$0zB zuFJ_a05yhhs!R>$@Y9BG${r#C^GfZV(T)}a^$U--z0t$X@GsF@iM)<}$7LW_fFr7S zT@Cvro!o1;%;#zqN4=MfCSdfvr&b=p}@4rCOBx%`QB2h`cbKNxDZWx|sT~n&_^}<2E>$=bM?-lr$rcj%5HREJ<+T zw^i%gq`Ya%jGCJGE8ajC%#gLl27&ljjI4hseq08r_-YUnj+32?poFo}`KT;U?I*x< zwo%r)*_bZqXJJH)J+NzV!^+5WaO$(yaJC0~IM{f%__Q4)nTV9M0G7GpibdaoKZ?tY zyhH0D3@PXJ=n=z(M};6iD!%Wb>woWH2;=hYOBctb_)S(5eu37HI>^zh!gWdrp|sG8nqGLV4lmQ#d-Lc<%(Sm zOL8kHM4SzL3G0-L6ecX1KLVwM{FA%1g16%b8p7+hzS+Rbh-P0;<$%;t=!aEjD%=RA z%H(Up$?4z}6Wm{_@Dq0N`fptP*RsbOG_W19%Mp2Vk@tS~;WqTWR=u6cFC0#*V{c?h zRPY_A{|il9s6#?l+ZRfgkAZ!>);iu62_$@@BZ7MIzD0Fk3qIeH+Zqh->e&_JwTF?Y`A4+%FJuZjv3YcnX);*yCVRdwL&HrjDBE9E zy%Dt_UHDkA8Qw~P6Clp}E$3+DlsZ`81a+`yC3?ktKm@wm=D#t6w$nBwI(E3S}vl2v7A+OnN8fn?s(eyQL|0B(q9@QiiD1`OPbskCV~CluAofV6>b4J@T1D-~&EmboXg4no zlt)H8O2uPjNNw3E)D~|P2z?$=GiDZR1ch9nlc>p-T!N`5v$&#j;^Qz>5L}lh=B=U_ zOd!U5B<6@Zcpk%LEv-NBXyL2*b2i+5zBf|HBtIPVMu*kckfPac1^e{yDirhQ<3UK` zARn!5hG-LUZr(Yewz zyOB4EKoHcG@&k*+R}=f)&!l#SP<#%oY509jcS{kz+v_-hyE_#!Y;hmC_oA@jIMOgB zZ$Mn^@gq4Q3>@VE$DfLDP`1LR{5_2fX|)#w9%igpz{D^-f!m1?p`hR5O5;S*%@1^l z4JbOF&V8-Ks9X;!>UHKJ=$>S@-S|O6!(2tX6{s~jq7yaaQ-I&J%3+7O364B(bFzV} zk}@@D!|{TNCk}NsG*ujD+43LCW{O^D$j)Mq%r7l)YVgJ1gA{bWEA|HOo_P- zQ|ZWcJ)3gukaw&z91~2JPHIKX6-TO8B@vpbL7PfyXAxt+@?}&|64hrZ~B;fjy?szO?C{$waVw>OpH&OSW{Ic1Go|OmOw#o7t;ljl0GdT3)8W`v zYltoh#t|iO<2rdLG^8iW*D~GGCkZ(w238VID^Y2#SdEKn7+BRf24lxGgR2&)YLn9S z2y#S1QXZvurfpGL_QHtm|Dbs3Z=#8q=-SS+!;Y{vy|<=nCSv|N0K&M#Ss=`=sMT|% zo&NbV_nM>#hJ(Hv*^d( zXKwz=es{{eUxD&~!rlK(l-@%EU@PCj$fK30nau|TxArJs+M|D$Lk!Z|wZo=bIw=yn3Q{G_hs$50BTr0b zK_|)!6$4$o#&}~n(@dGmzb_t1^oX=$WbHUrJ%#MfB6-33voneE_`5uwxR?CqwBam% z&U2n4;exzOT`?SEYTi=UXhl_V&qR4PJPJ2OEPpG`gXJ%kmXid2OEyV$ZRIdIThq#O zRYwW(>s{w>J9#aX2A+wQ9EKbRhN#>Kx%uS5cX0M2WjAWzJQ)%;=mvmxoE=SyN(!$0=agm`mimTu5@~noQ^P z#=5gH!WoG?#z+x<&pXC!(wl`VJ&#!+^i$_-?IIeD>Dv%FGrYS#VZu{GWS}Oo2!+vj z>3m*u2$-^HNQasdKE1P4@ZF=6md0bu?QoW9cTb1rZ?)W)<&vOkrHJM>j3LKo;HDK!1yA*mjyQT6tVWFNw$PeO0 zk%t8Of-D!oS9laR^Xd6;piZFA6R3dxp2k{73t8wG>jlliot5bBDrLSxEtn6sll3_c z8zyLd2Q8k2NDB~lB?pz(vm423L@*fpvpfdC@1%&2Pe>1kd3#-?_B}2i3ML1nbz9-} zC?nHpRT|v$$~A-@O5r8Rp59Fy!<-#fOOyCf(6{GsB+J!9BrV3s?b!9lkAsMz&yqz!!`a5}sP!@U)V#I}pWR8_@386{ZO13yx)4wzzN! z)@0d2$!;eg;)J~g>Ad_LYDkkoNq)s@yOq?>yxLYoi?g{XEU-aKf;4;y){kRLm!oi| z*g%5_D2|W5M>`~aQrrS5$gm2B05g;x#XH-1zr8+Sp5=qm{Q(IWu~fwz2^%m%o)kb# zWThKG3(ToWO@{Pf`2I1Oc#-|lEEc@qqE;3SmE}3K9x7T^p4cose+9OSdEk0t3_pDN|23$sp5_!6E%58;+9JIY0%N$ z#!VeUG2iDSSzykPom@=wOGbmtrqlZFHV4%Yd1zpX7H5apOx^%U={*mSgKLS3 zkHA^`DC@;f-JISW{rnp2S0aL#Ulg^R4-K^$^UyqsqRL3IXf4f9;*6%5MHfLt0+4w4 zPV-8Pt0S41$nY8kfmru>3t4Mvq1(SOFv_~VzJ`O&1+sA~ju6;kD%&aB~CXhLNXN(=u)t1Y)CEvU3CQvG6K%mI+abCS_?*}#^^ZXV79z%XWCuN#@eY0=pvlIv`ej}O*vygnEho~ zPeXaD$vL-o$#AMM@HGy^8hA5%NO!rk;(8KK#%ZjfUOsl?6=R=7z0d12k`qw8p5UbN z1Ln6N9o}%=?0r=y!Q}g#{3m_Y{};=EUsx$2HRSiaW!6D@BsXP)Uz4DT-aQ-rr@UOH z94lv}5^)~_h!yg2Y@c_fPmZ|&X%_FV*W%j1Otim(t0K;y8^nZ19G%RL6LpSq_we_) zN27*);fuOzc9~>zdU>r;wP_0fyHmcFJ6$$<(HmiF-@}%Ssj*)xZE@Mo2O_cKJs$@Z zR^dF9coijY3J6!bCz{D$f2mEv3~mscM@%sB#IbajPh4$&6G%2jmkfE5qpp;Xs(j%g zg$(=3E1$8ZgK9KR=HC&XO|=akBHzQxSVZ^i>Wysh?42Z_>mN+>&d;)+YZTs!g&|pH zI)ynXU1hK#V!UTYARcowzG4x0B_JuZ1e9mOl!D<1j=9-QkSkWOvK6AMsm^qOKCM;s z&|??bOH{V8!H(6O28?^z*|Cq*wVM$KE#DV)3Sn?FAyAk?d(nf}oHsoN*n+LRk(ZG> z0Fbv1rOJ&i*|0U*P7U?c$h+)4131zh^a23)Mfp7vgsI8F_$o7jFe#PYycu(Ioe&}o z2lyvb9~AJqO@*E_UI2p&GhI7}c_)KKAw062$c*_%mP`&p?n4%b4PlQ;N&Vg)*~FSl zh?v(K2S+vSjT}6UXfbqHIO%M_EzUJ{KPe0D-fy(LkZnxN<$~ac(3fD2lea7o4nkfn zL>mK1@{G_%tST6=9Z(tlj$M8MbKHvl(=w0g4Y9o|TFcSxCVX#z$o&KUd2)G<*f8fM zQX{qx)*lZI>jgMKddELMssQuod5^-AY+?@vb`!)n)xF!>F*J`AtT@f5_$ zW8~2hDegI=DbzWH;W{+SVATu?#!wMBE_7xr&GmaMbtq6NIjz2@4c2y{KSaPzMXKVF zT{jk4A(a@K?mOHyk4-DFPAXqKJcw}0v>hGi50;!ZvjYzf3e}UmJyM&)4bpzq!44Sk z4r-!G;d2h_M_TBTMs-@l;rxc$s=d1y?`M}MO>un`_|_Rjt5M5h;bVxRRM|5sJiz?6 znDDc+4qP5eLz_>??t5q8{jZS~N*2|3Jng0K#mw${7eDJalXvpJMsKT-c}z@dlW9|z zTw;C?jE9Xr;((Z4(_Ui;UFkf6U0@`_PHYMjp!+B{7>wu`q=_HNOuLjQp3#0nD8>;5 zxCa9qp;J57foOEbNP5KkP6XO2N~cdNnFWD%k|#$(xCT|5<4!?Q*Nhd+#Y$nT4vlOZ zEw9^=q~%PxPD>FhSo!?~kY1;P&4z6^4{eqhIQr-WQR8|Q5v$#Z-y(r{n|^dVk$4N) zt))KN2?<9FHx%WrI@YyYFj^{n^g0|Y^amJLfrPIbt0nN6C&rbwQ%LKZBD#Hw)8VaP zbkcO&$Eh;Xs699Ve3Q5qeYdDv9y zHoyxB+MuT&mq{CtJ9IqtD~AK7$66KFy{-;;LiTuGr~T(483PWbyt6 zIl*B>2`Slp3R*0fx*~XZOI=YY`br%GC*{x)xOl9pNI;=K49uC4ZuJIe@9JrT*)au%uzw6tA-3mKYR8q=arbL0F-`JdviPFU+ z^g&w@2@J}>Ysl)3_5@^pd=rPUYH&tHfGlo}q%X!xtNcG3E@UkaBvbmL`8lZ{YoCkU z#l+6!e2ub?)}vn=(ywJFQ~fPdgSi(G0t_>^>xivpjO9WEbycg*r3hnF>C(={kZX?D zZ9P0>CLV2%a)V*R#&hp71Uc}i*JR)r;$j$~-1m1D!T^n_Sq?6W1KaIY9@Ni3FSEH( z>V#N0*?YFtwv4QwJ%&)Y`t_r!oIdKCWy*PtPg+`KSy}LgUb~qvA+Q2RI;ur;oZLtn z=gx3FR!v24g(o3uz2#U*G9FqHj(hD4vy1U2Q*7KS8a^4=;bN=cx8K;uMSDrGxhfh> z47TE6WVLxWI0r<_O+{J~-_~Kfy?%jk!a3l#sq$A%I{7?2EYV&wO+F~Rvg18uC1h@* zkxy0g=)w;1sxs5uKFh{p;T~!?bKEh93j-pn%7!&Ixa@V)c2lLV0ej_w9$nDKfWvNn z0MvF3Z0}Wiw!~)k@tTZNGg%6mv!O8@xrUtPHjQ&{pM?LI&P)$Wo2&q}E*R4t!#}VN}_18O{~BH}MkN z%wbI3MEuEz$2nEXv&=QhV3#pMrR2!ODZ-u!-H$nFjNG(CSl&1=7E8%-?1@7AIZ^3x zmta1DTUF#>G^QU31sXBWI1Pz12L`TEG3AaNpCPj(NS)&yt%5|yMdvQ_{gvDWN#o?T zW~HIzwEO={JF2Cn2)pcyV*Eaf@| z$-iAVu#Wm>WD#bm)o8N)v#j1`Ix`VHZ5E=_IW_0U|C$i}FiCk^^?beAy!!cEvg4lSe)9daN{OZQuAm9hQ3 zkR!$rQ_~y7c$Acoqo7|GF*(TF9xJ@>940rV^A9l3r!Dy=hnO9-(dBnS4Nvu$eNmsTd(V z9l>4=n_^QQOD*HeFwt0?0+}MAVZD{|2Dt!%Br30H`oq|;b1BrqOydBJDmAJ=^<%Qk$IFu z0y4YP%EV5ETx$R|K+3;lT8qL2@zEqjsNDLC%lW$Mq0>C4Ay_qE=LDTfvd*up-OSwx zmsFji;Uk|BE@RmdZC@%=R!>y1VQb(s_en2JPM|KPK@E z!#Qo3N6cTWaf3{P-oUEm-<5ABJ|I$90dky5>r*kFW_j8<%DsS^X2q8JdaNM zaSY(v&QI1JUtlPNu$FP#J#Cezs4vY!Ken)2K8qGPvuCY;7oHg+q-1^YGI(3z+kC0q&%=i%0NO!9n!oH`tb#F)G$!5RtmkFG8P zmFHOciABg2R}rR*)7j~WJ53&c4?>h0`7zV7vYnKp_ya@NI<*XQy2T;R(v5nV_fqiI z;jrjPkoE}%OrQum#~?bJ$@ZR*>2tF)^ZTJRz0`x%JTXOe^SRrKpsvz)!NrYTgUI3u zert!>kXRhkZW!2g2%n6KZ2#S)mJ=u;Cgj?%GX%y!?}A=p+m+cG%wl_#*R}5&(*K)6 zr(s)*cTxsfVP&$+VjmTD1DiuoxA6u^O$dqQ+P;yeye6xdni(saU^OW@r?^-un`%VH zq{eKNhxW&d?!lr7{h!u7E7c% zg#oiBsJDo1*UUdHN_A?ysu{U@XqHqpIv(7$2VEdB5{t3JyvHV8oQcU! zWTC?wDbfH-&<*}{w+S5t(o9u?^D?D9&Pj2?*V#uKs`O$TGbcjQ(}!)%O!yn+?;qO} z8VYr;@l8H+VksBP*2yh^xVB|SR#+Me5Fa9Q$WzxR2`7yEcxZuNK_8TK3k5l6Z$}OO zQd@jQUmo8-O-!3}*HoQ6*>6s4&Bb#~de*@_8fAc9dlfF%IFYtg%%9ROqeo|ZVC7n~y5ZaeSd1-Lfm z9zu2Mv9+?RwL(vHAbG(6K(BxhKfoaGuYw3FKN+GRpn5h9FS<^}u9L2nh2)`ytauaS zzy*jH0t`BS>X_e@RKhUc`rft@DRtZG_2sRkY3~1(P?}F^VLQ<;13c2aq`dp`xybd^ zd;HIRDQ0f=s%Kl$*lzA6U7s{H8OwY%$7;VAL+JC_o2ov($+hsfxT<&CeH^Rf`HA^iNIR`jXR{|rpB}Ffuu%e$; z*-cV1JZ}VpHmY+1afIa`2H4RY^K!&i<^rkOK;KxVhY0&gnFO{~u~vvKv&T%G`3w%& zSYx&Eh%OsUHEcM}8IzvlCJQX#cDio-KpO9Sf@?;j0zEbN5hwTH@Mqs)I?5#QO{48jm?OLicjFd!Hap#b~Ojz9%z44Vq9XdsMHVPIn73+ihR4C^J$JYJ?O zpJ~e4^OyTiC*SmNQTvJhK8`a(GZGiN@V`SOWhIq$8k@Zbks1^itEyr?t{pd1)b0L# z`(CT2=6YN56Q`AbRd!va)@JP`q5N$YUORXE$#dkTh1))FueGro-^ol%nA32nZ-2z= zJ#Qnw=X)NTciMfXEEI-w6FFnIWv0KTPNvis=Pj>HDge1SN+BLV@oIc51(IK3a=2s| zw?DO`%E(T2P?CfXrmPJ@9s*FAPYGVdZzHq9J?-w?@!DVed;lFtS{JOBq~yiiY0BIt z!ETrFVxiNz5oo4mzp()Eaq4$TGKw{jB;VYo#W`tG!uYc(-sHoy*nM#fwN-C(faLyl zrpllOubIm|M3wmngBwh#3Ou{7DnUBJE53-r zr>oK6;I1C<64p?&tQ0~!FnKu=4-*Z28_aD+N z8pRvo8Hr8r7qS@M^8v1kz4|X!gu1Tqh!x)X6U+(vjXB-+8j z)&lzf53ct=X(7a#b5>jU0G+$J?uz@UcI~%46#D0wuZ0E?A{(6gpr*-);U`ERrs?_8 zX;ou!6J4ZC!`e%>RmKNyNbnupAmMyI)>d>BOMG|f;=OmiE4_MdddV^&5r@ai4hpqr zaa=XnIA-+^RCf+;At@|;=5D5kVcTXpUL=OSAKaZoIR0I{WIeU{eq$Ol@{#J?-KVK% zK@ww^bhf?%)p~Wb&Gj(FZ*W3>gfVe~p5mNawiS>bII0>~&bGaw8ujkrB9U-?oi3A( zTr`k25*NtITPhm7!6U155Su3CbMW=xu}fD3((0{m8XC3INO~?qkl+;U?9sdz{_E0g zVG&d83BeS}A$sy>@QWFkIG1e835_lrRy?T=^cfwQ5%ZosgpI=ES6h>g!UNGHp4R7i zt5kFTHLWPKwuEIIs8m8=Q|zkyJSvoQcq^i(U2c!`Gsj?6T-7g`QmV_2jod%RPEbEgb=4a;L{U5)Q&U%ucsKrpP)`ytN6i zS4mB=ui>!+$f@`H!mz$r!2MO~R+y ztbux^=C_s_wuZ<&DhsLDt`u0AMUKF+DOpFczrsX!k!Exdw?b5U+J>Rw97cDG;7r0s z!%9%sVY-t~vb0P^+H&(w(oPUqK`B^6r?b#wMkhq)1ce!bZ?<_|7Er8aN;V;o14xlE ztHf^jyIn_JEG&2yRUhE5;2c9$lIf_`RgRc+%p06?Kz$}QsIp5vgXVejl2D~k>H3|U zF{k6!W0TEJd?KDwM(*2exvkWR3ObG>d2)GnFbit_8U>8oC!2^XHLyl`r!9RqD&elE z*v3sQa*Dv5pDB1&D5b1`ySR3%tdh(|9DVEh+5DbGxe~YBMrb}(E?1@AwEs%7(QhWg z!ZLLP4*`>2uCxrzn_1nw*jboQF(N6^B>v(x5n#K#ZbNsP7{JpyGPg@ol;+7Hu!e$z zIuMj|wz4;EoqHOrQW$q@*6Iuar53n3ptKhdz=_-j1V&L?d$~(8T zuCHyk1ATt(ayhCF&}E=1%_9DaRPLlY0VXv=qvcYs#>a~twAU|>BNY6CV!Y3RNWp^4 zFDU-d{T7|dl7=^zGM@6(9lXg0Yh6tH4FF11XWcM)JW7&SBYS?c8!uHmr#`Ao-dvG4 z*IJ2Vd{Z1@O%cxi5JEjyr(wc`Sb;?(HCnCRVoYF0IbpH*a_)`<36gE~4g;yX*&A=H zK2aTNM$nm>i7F&ECfhpDyLRTo%q9LgjxYe-0ra9eKzn9CRw9crbcx%8-9ZC(%FKX} zp7zN#?Y1pJ`syGly{(Xg4T0uv6YigBDc;6p znAR~*<)-GvTD!4+JFM9`In$83X^FSrV;NceJ~CL<5|YQU2RRy^>jG0i#$WE98I0@R zKx^BQ=<9iMxOLni&YKU4%<3+d_8a(n6JgV0t0nut2&}R>s00OYblOXr^&$H55H8p< zvwKqr6<1aXi|^GTL3hP|eqJv!aBJ1BZsk#mBL<5NrAS=J1Gg_eHTC@nZwd}lgd%S= z)&&qR==AHQ>ALK2-8$9RNj02k4&mUz45mnK8H~qJ^VCtvdd1Qad5w$Bl~{XZgFHz& z@*?4`P>Nh>X&yD1owM#W@f=m-z{DgIm(g1qSb>w79p6o0oI z(={B@0FOzU^#&xUlxhWX8#)|247%s!%1J67rP8zysXP;{VF4AL>T3f+Bn>d)vq&16 zu{LFmk5I=GxrUxQZy5_7+8xc+OHV9Fu|7ChGT|^n#xzuZODX%9S4&oE6_t3^2k@i2 z0u?99+`-zI->!_{m+F^5pKiED(w(o_i!A!Nh8%R|DoYrEAxdhz2MblD*-lJ%o#>k} zpDPiW0q0!BaAWhelqFsg!;ISBp_6W!OxX@3;XE?n+1kx;c`fPc9O0znXt}p$XLWoC z@E-Xx@M&%@+hXRNi?Er3(oRU5q@6t;Kx8p=jQhqq zqVarwMTJN}pcK<-n^gu}lv%6}&A%NsRw>CS;5?tUKaAu#a9*e3>rtbAras#i;Cia; zBiA-?RLX9T>SS_kO|X*@#nG^hiOtY4O%FO_wkPn@jXdHfb<$ogJ4rOW$e^5RntnC? z6gnNj+{VZ)lj0OTF)~KfOwGN?orlYu%ZkI7Vsxo=$axI}yq(+SKrQQ(eKNc?*>-qAh0UBX}5FG?SUA zD|uH@`K0EAA!EaeY}cr9`AQS


5+E{Ua~t30NN}{e zAkdh+MDr9ujJqA(jP}(Pi3gt0DS&kiPU#(0!Ec*I4EpzAVUC?kbzCeT3F!bx;ux^{ zKd$g#iW`~z_KhuIka`BAM^bvt+%0trdnvOLu*pd35h00kin%YiLuA~jwbR2I)wtqa zb@*aLsJo5y4wo%R`M0b*7>}_SG zabqHxkEyglt`C>l-ExR8L_kA~xPGji>k@5T<{m=*KFARfb>Az`dBiU2w?|jYPoz|O zN)J?;B)^MqhMt>WrNz4+)K5b3bSF)fg?PHFSxst2g%|(L5fKy>G?EI^BVU2~Hn5ep zLvLtSJi65#{Pzu5{l=mVG_-=y*Yrp#hj}Vi@dP1 z5-N+ON42$Eb9b2Xlm6coKmE&pC5~kbuj2h%e^$ra`kk(6;BT}yzEgu8Pt6;%;Rwkh zAnft{?kJ<#P$vFpZ1egD_5u_Z=mr&aVeXe?EAPfoIXoalKq<*pjj)F z#A!yByn;nk6(7jcbvYN_r6LZUsX~KKUm>Q(wYmJMWmbh;r@?#+q0wQMr4(+Few$u4 zEHN6?xQT>I^s``O+ysauc9NzJN5+z$Er7aNBdxJy=lL^X^>RUp>eb72pPj01Q{Qct+UVxhDu z4T$jA^GRIO_lZxYC38<(tb$zPoXnGS6Qsn#7fzQ9msoQEvgD#Dxoi+X7=$W~|f^ z5f-*Eg;Lj_kXo*`Kt`64IV=;42#P5FLsLq@YPB*V3rNuP5HcGjD$uQO?1;SGNOyme}#((`hRCE|9WV)QC63uo_fJGlB40ty6nSw@U3IbZ>C?KoabHVYxKT8 z_v2(9zo*R0{Y&weo0&kXV1dtM+9U%pDK#N^gQy%kY1C%CJ#W(stR>`pV}LCEbKW9D z0a-(cULdRudJ^|%T?8SLSZGaL@*S%Y78ZW*?R zSH0f$snKvQmLi-OL_(TS;&J}%*8%Fhy{iX%e@@YJ5?|SJEmsqJEyqZ0T&M99_HT(w zYTywmMX1H4N_4IQ#zQO+uGzC>RIWdJ(b|oT;S)&I*J{aSGufVyPRbUsFM=pCLM+gK z`~NywVuRcT5|>n=bhVr$yecH@1Ou`?jsosU!mfvX-|cvk3;lnIwdwW+|0|rF_prLb z-Sc>D-_5Ua^(i5k`K|hidq~pNBl+Fbtj{Gcr5%%Xy$y&8K4J!j!fI9G zI23hkdw5Fok|Lf)Z1pngMvn!8DgF{8{b)*1X+E}3qqZY?&Ona$X=@uDefR9`g8;@D zAVog~!D@?1wUU}Pax|jQ>EG~eOI6UyhNeZO4XQ(Gkn}R=p>9>hkww->4-s5gj?mHF zy=(RZ(05)Zt3mxIp^JR~E~gfm^s$?HHQ*ml<-GknzM~@`$H?dGdf!1aw6&!lH7oON zxU@l45!py6s%o~DEQ_*y)wHd%TK)@1Q~CeHWAyJ1;?wpW+g2ZFknZ3{r%i32Q+<)A z@F#@$*ARWn7LgUEjbcQhXd9->BH>FX=6zr5vFG$>*!J?V6aPAi{@-^0>2vS?UpX#O z5#L1!zST6Z?>7o_4M(10Dx0!gd=IuCR3JeJ76R&pdI;SK*b1#R*|L$XB!_Ow6jT}&8d0U_ zo4T3r@2G5;hk}>(_L9ZML-?uFt=L<3PMY6cu%;l&MeSPTVV4Tm#Fk4BxRU}*FqA4Z zDAF{i{_AC_qnGb2SVdK@lOWcf1T$DF^rxl7oqs>MwcaOf%)QOpvARlV?kv6=55e6sM(0?#3TayN$#vmD)a2`ow_*CT}?VokyEpr=@fk zh9*fqf?@iB?<+GQu6D?|@_ zhK=1O^`Zkp>ZM8*6ci9>L{#BG+cBcZ(lj;G!^O02rF)-QYW_Y)65S8%?rr`FyE%u& z_zS7p_*B|@VJ+niGBA6@QN+)Ki4DwJ>yGt|PoVbJ4j_86gL zT0zE}J&SdfX)$F%Gr5oRyA{R3oNeFLYtjE?K1an20RQknzQbBy+<%4F$kZ!`>8`R3 zGPjOc^^N9zvyrSL)Q|l}un0h3MhHLzwMUYmOk-5n!o$Kt4Gk@4c=E0N2@Vci{O->B zs^zXx8-@euvT{3O7>^lkm<}uJHjbg;)sf$IN?kj;r>8+Ks||#H6Fut{R79brr3UE_ zDI@A(=`2KR8bwr9zCme5y*$w@MlwkelA2y>b5NMA1beX+54L?Y?Jzs(9 zo^{u`purKVe#~GxC)!AOgfJw)>KL>%l2IC36{Mx_B(pMD32hx;%e&&>0K7oL2>@^~ z(G7ekK?E2-7c@Ho3G9D+v2U~-eWxJ(_xZfsSYyA)(We!yo0Fm2TDxY94r*7VLz-(!n9Uvk;c9F?6W6^X zwsbexcf#K1od+$6TsQij)WyVF8h*PPPJUObv}rGrno8CW52=O5D9Sy|Hr=$l7F45} zse9iBCcH zC0Img&1(^^(F=^IDgNJ=%wJa^wEycXu95c%zeDFHuK1knt2Nps$|9+sK3io)9JoXj zed8+UW|l>1cdcoquiI>!NyBBlzThCyInminW+bh>_<{btFk0dS1GW(mnTBUe_Ha z2m=EGN0lKT_iK4dpJv@?Zw2n`A!oCfj_~7JTWd_pL##MIHa-ujkFN4K<>w50%nLKN zHxxdD!;G?i@*V*b2hQ0q3G)_xN#EA*=JUjdpmHiZZ5W*C80f_7qp6$Zk|+5^iYDY) z22e3;-62XZEN^QLGO{Mm<F2K5czWDc1%jaQa@vUiPE`3$$|KFu>zQu&msI4x+s zYqQ3iWYVF+6NK@a$Z-(aWNoeH69Q_QID8qGx7tfpY?FPTF>$xJmldYg&fjS(FVITc zwYy5KtMFdU&_lY&fNu74a^xm*8qcrwtyqb3tZRhuRjq4V7Q44tm747u15VdM@=~{s zcH4Vmw-_ebsx%#AUBYS=DB5MgYPN57@AR9~1L(fqdl?pDdI290`AyLIVZ`^o2_kS@ zn%6q+b{L%geW)Pqmmpu)L($nPq#Ih|SiA#QD|I{u;RS~7LTGXw})wlCJ8(C2w>BNCy z5fy14-h>u~^m3w_iPjK zWTjt8C2M5_O>`oyEh?y@{pJX*DpoI-wXHw7u)GwCI`&euv?kf|GY!{bUo31I-X*C_ zr(K_J6I3YtMx zT2_i$L(?SHXIQHZP^ZP^_qW}Fy9TAJEqZxUt6ki~6XjoEw1TZtabQE=NDD`K`d@0- zIVr9!QGPQ}+QtlgJ84^*$z{KRIo}(|+N)9fGp&6qy#D#!_ghZi>~@>KE0>|z?y>uB zmn%-7c5YXldg})bD9BGI<{?GscMVl=)6MuZ5%3=EDBLu8jb8G{lS4JHJoWCKIhKy` z4y~-*`CHWT4wFVv=Q-K2PK7H)pu*?1LFS!9uJOLkmg+0Eb*&xOjR5BwGMY0|wZ3Lm zbXil$y8b*fxDXUFkn;}>4Rcv{$-ISc+BSQMS?zew4GPpd+7^Gvx*jojK!f1?bQr^s zfb)ly{T^59c{*#rcLXXogMrzJ5&3Kd6kiVMYQ%e+Vl`tDMQhHr4uTL)`bulE`fN79 z_6_vYuSjF8tgBQW+Dw^qWf4T$B(4H`|IF?0>E0dy%}?h591KKHb<++8+yW?`U)Gf0Z7>}P{-?zKe` zT2Vw*XnD1K)u!<@{yeLJr{cX`rlx#}?pnDsQ;gT+r#73E{RX@5Rnqiw-A`BN_FX4G zjm-4@o!d{Tblqw;iHfORJ623&vUYuxH*V`oJo`tLPSvbTiCm`!K0SjmuQb+SFAR*q?tZH7xp1zCuKTchcxfuIwH?iuI_VyanTXDFy?|6dIE9Hi>(F>-0SJ z)r<(Jsv?+-syf!Yqzfe?zM4@3^ONk_X%a0MhoqFHltosRr%1tZn*21YQlhG9BtS$} z6?1U+?W9Y;wFyR{l;tpRNGjmxySrUaXFtZ#QO{}(Fa5OyU3>1EDl3TS z;kdFo?AdH|2yR@iV(vY}5k5OQXQZzZb`GcYu-L%LkuqnVyDU)a$cWp*yti($lPCr1 z-Bgzc)97utj0+9M@1N{i-nAHY*IQR~!#fK`lva@hR7Cz4;_#>cH?GQhR;;v&kFNat zTWZ!#sy2s)<6S9K!qgmD9z4C)r{rIaVk)E4NGdOsFxV|i?cotlW)Y=D=cN%57WTTQ zpmAH?f$}NV7?;?j?tezz@4LLRy?mHtAkxL9P+EJLQB+Z(8vVP!qqUq3KlWJHA+z{0 zy}EZ9@2WjVf2Qtx|8wI%7ftJQ*q!Ipzxp#z)5BcSU!4xo)p&be{^J?u^wN&G&ciu` z@bAgDMb-EAxvleoIlVlkt$mwhJ%kIlGNNx9lqiUHk_Yg=39EGd z^zM9l&R~kDw7v`p?bs@-ubp>s3!b)0O2nU8EQ_~FgJ0tyzeR_wbylJZsrU^~4L3Hb zA}9JJABid=QZ((8^nb1e$|8qW=jkDK!F0B;w9;BsQ;gK58d0G{K|w_MGA$zh{*N=e zzwh^x3A9M6bL=TK@*k%B`yaNJX%y=r#cVw0e6;WR)s}sn)+}c z{035u9-BAwJ@h+N^t{ZhTwl`Ec3sC$*>fIaw7U^qat_Vbt1;Xm!T zM!iq9^B=o)R<{8^UPI-iSEp;^q0l!_equyl!eWZQuJ#s)qKcw)k|K{j!$(!^?RK51 zh0wKgcJ_9tc30ZSj&Badl@T8AA{IpzJVe&ov}{e(B`-#W&g!~J@0=8lEH*d>?Bp&7 z<3bgoBcR8=Y9P{{zG=PX+Z*NR;z~0!A#n@kmXt(aGLfMk;ziHcOHrAZ4wu5bGcF|x zh=}p!bRXFaTi`UAua>cE73Oc3A`3$3WWdnLzR&B(8$<}@%8Rp@Ew!|zRa$OhW5OTh zC3`6<>90b{E}0{$hQ$rq-BC|Nb+uf@_AYr0ypD%;<*p9NyAq;mVGWFm+k0y?r)dvj z-*X5pDyaP_0}B-=?nB@{pVLeRB!a4{DkAqODNQRxM2vEzSJtp!mFh7pT*fUYu}MPG z*S?dW^uEID?|>yK{QjO;dQ>MhriS-XsljoUe%taBd4hZ7{V&h{o@V3wQ}FsPE#Z8R zuj#lR79CIGbAF%6{U0^d=ACTv);kQ(d#^N&=z7HJ6T$Zqq8=JmZ{LR1X>+A`>7M!w zpR?KSuhenvSUyiaSJ<|fI~I&8o@J=0y$c863_e%t>TWKkhpCm**om0}0;2XDKC{-{ zSLbsOvYgB#U2;nGNzf&S1CxebrH9M37t2C>h*S~nckaFG=M7*G3p#K7G& zvf0l$@L^XCE13$P{_C+dPQLR3il?9M=1tn$S1$Q`i|j?rNP?8BREkm#AT*qn14V)n%2!^ zEw!e))QUBBQg6u=8Cr=!oft#Yu6$p>j6HebLFgB&AJ3QL>dC9ol{IH*dQm~1v5_<@ z^q4Yu*SOfY+Ff?Pn`wkmUt;rOSXx9;N1>gKrBnSfBAyYh|+e62NXyTf{_8G zS`-ygr*A4asj<6nVD36=VdtCLMG5!#cFu8qQ2&@!0st6<4~5eZ?>w|9q%`4Fu!3bz zWAMj?C@VZnMD3T~Lki$Vj(nq0h97C8Or3HX&Z1RdX!)t;Q%(36{r=w`#sO-=k0p;! z4u!W(EA3i73lUUMML2phwzbzk;V-hUjUZBjhQlt_r4bPnYtr>lv)M?Bri3PXN$~B- zO6ISR+MF9`+GosLLccCb*vxNxae=K}@Uy#NGSfAV3 zPh7h{__yJ|koGU#?E7xVO@~L8KIvPA&W8<10enUC&fg1)|55IJLm zKjc#OO(hvryT1Z@8_SyBv~jH}^Wpzr@O+#X(%0m(1eL~qcQJK=uEtaclLBP58pLHT zQxJHZ?TaXf5sf_T>$!|K+=?cyq!mog%GGAS%1^leb&Nmw%ZHnl1*Jr7-rFAPf~vi2 zAdhv=$C{WM@mQ@2qNj%=RNV;H*7$apN_rhttcnVT8PK>s1@@&=F$hL{X@=U{deYnG z-a``Awn~>uYw%lIEiX@Q&#c})KPM9Y*Hzlxi;p9>vHCk{ee$zqQ8w3F$|9ZWNBi%>^G5utrVB_pBvaPY389ZoB2xK4fFoPVq#$RakRVkzWwaC{!eQlGJQ zPBL@${u0+A#-9>IX;QM14a^Zi5jD+5k)f|tld&IB_hbw zV^RIIvKq9SSrJN66gYA!=ceY_Nx9nJYU?%ET&2|-s6As9p-bCcbr#|B{fyMqJK>gHor;GwDbIhjwn)#s|vTkHLZ z7h;bfhHv%Uek*XJO=7ZzeIq=UBsVI28E3n+ScN8RMI3> z4AwM>(=kVK)UV`EI@*;QPTmrPR8dvbBu~WtX|hYHRiUmL6X-zEXtPSRq1s7E(5cI@ zMA*udqCCINwOD#cc?%rJ!IuqED$ zts;n`x%e$yi=v9JQ-HVhv!?$qclXx^^}h4wPj~*%JPucL;r?!u<8vQFyY777lHpy} zW%<2dZN0kH=+Hend2DZ=Vz2+1MlK~A4!gmZRo*uP4YZkGKeGO>N96JhUQFSqk-Cm$ zD_wL^8btVs4k|!Yri}hgizO$wY68;Iq6*a_i1J|{PSjKsTEilU(dU|!mnBD*w677s zCFx2p`)_4grBz0>$p!Tc=BHKr*BX}NS#Gz#wfCxeNfB!nMbpS3`ct*E3~gL2jc^#! zsI5N9f-Bsx6jLJ`adpbj(9(@}3Gb4}lyKPKrI#@XBmaKN#f;fmmOQg+K|Qnso3R^g zr?oOA`&fS(d0yiC9Q3WH^vW&;YM-YGzd{0{D_t~=G}0i_i(WGxFV2=4x-O{$JJcj9w@HLjs`SkQ!E=?Umg_V(R!X*4yM;3)OJu z;^l(6*hM$V60{^Az{jT@o zp61$6g1!g22p?`QzZ2&FP+<6B1D2dVAI{Vh|6=AO#Oiw;uW%l5-QKS&hmdL{AKZKW zlnd)MY ztA$lZ#`uf&^H;si!G#y!!Xk$>l@U;BL=b3Jk);$x6=+6%|W=P=dA ziw2Qo%(X<~xi*GvrV4KQyv^1wb!j}SDG{V_!ZrHvji5u&c($`mBB;MHgX-l&ZgWk4 zuk}r?N6-2>D&AS3uRW*eT=cw-;sR26fiDXCL(2>Tgby$v1pF`>5ntjI5f*~@!tEnA z-=TdNI_oi@XR1v5iApqx zp5=(Dpo-DXq(+TgIlBZ>mW2_gA`t}Av_%yVRTu2XyM={qJiVfbqP)a#Z2l$3=infV zN&W2gPn~MPw@5Uj!hxYqE?0z&Odj#-*0$D`iLOb>wMmk&N zksl6J6g$+7q#ceuzYC$9&J3$ji()HOv@L9;1UE?*lWYB2`&Od)`piUfk|wKrV#ssc zc~(s%BCal0*4>tF3T;!zl92|1cF1nqG#}X^)X0q)l43|@Yi)0}2qkF3Cs5ClhOIqg za$NO|SW7-pEqX>DZcI=f`NaOpQFch{cPcKe!qhN{8=Su9cRWW-+Dg^UPT}n>3vGYL zadCX3obh>!2g`9gKXK9ZKb_j|t?aei-=D6@KA)=eACLNaWN3J2ul%GrHACf*oYo&4 z?S8rUJP$McFZX;!{r2(83q1;llH~h|xb879ClTqacPW*|^_Dt!%sm%B)OovIT89jo zBIdvRmJu10JFekBg0mQVjkF>`{o{KMBU;<-YaoB_N9j>d^Aw@{UeGHbiTpLMS2# ziy9{;5MKgCR;g4uOj48_$-r$!%_FR9A+l(XgKaAX?t8u=+R$FI)s3M3j z*Zs>_`K&=#WcayvSkaL&VHGfaYXyWwe9QmMSX@+|2_o}7Uq#m4d9?GMj_eP_ztGsM z_O%(^6|vLSvl4Vxf<0>~RYXKN~g{ z%P;V1wPN3>{3Y|F8A_;KhRDg4#Ck0riJ;uG`?RH&=;FSv{N>xnA+75afvQf4p=@vV zErH`hLon-luT6N2Wz7xAn@&2)zh@;Z(xAXU6%ShE8{i^eg zS)@bT{{#y(j_O5GU6y>Y@tTU#G&RJ81rZPYgrQXyl7$6SX;zWIl@+QL6|HJ?ZJi=i zK~|cj6g2F4?ZvF3tvZQ6vPP9%TToV!p-~T+2r3G>ligY_Gzim4*-j!@1yoAr=5EUG z*=pr_lp}$tuC*gZgBnE@ z2=P)QLht*jr0H+68lCjB=Jq@LRx^4n99Fg{SQAdiX6YXTw}U7L~m$`$Al~U+;*&eB#VKmkobFB ztg3>e&8B)B7gXiA1T%fk9hLXsLodD7W#F!h1QP=)_)9PvS`+k`BGRg;<3crAiOe;v zxPlz?f{3Bl!cw#f2m17Kxh>67Dyo{eN~C^c@7lJ$MQITg-(ykvonPi#`u?Ws-EVp9 zKH4w6Jd5s7TLE{34ff}yBiwp_1F5x!7oIZD;I|YFyNaI39-5 z+PHjcj}Fig5euZGRB1BLJu1V@Bz-J0?H8&{*58vj_BG9#MD}SKR9$u%WmE;H(oHR* z4K$@ z9$EdF-@5Cy+Nc+0N#96~D4x-%_Ara{q@h{`3PzN#tdXXaI>`|$ZiK5sIH*gOO{!^a z5m80T)W*y=PZuP56&DhX+7%C%wO)DKV}q= zfDf|(p%Q(4X=+mStM<#P!;z458$m{Bs29RD`pr%+?0Tyk3-)g(n6xj+|9M-q`W`+m zGOgX@vEXpwW%Nu;o%Nh~ax}D}3aHY17A+v=G)hjQ5En@!$LcuH`nDyWUVCo?Klz)hI|*Cn$kU3-OcNEWBKS8XhBsJeoTsrP^B$;|G|}H zM8gOt>@j_X)+{QD*HY90>`;VJTghfRWQK3})W)H1Lc;0NvXaT=pmN>vssstnnxHz zF4TFB4BDJaz)OSthOJmb+3dkkpzEcU1CzYNfZ`^MvRO|rH)i5NS!s^ zbhp~U0bZ|3Qord7zqSTNpdz_aSEz)qFEK0@e41#XeLqGJQSg|Es(K_dEsXutyVht= zkHfz$*d^j2rjW11e~H@{e`SeEVM>&=f;I8ywGzs+#cgF35v4^ixmF;e=CCmkie<8q zX&Qag_sn{p@|7T5Z6N{ETXMJF~tC2>8 z8XDI~waVya?OdGqUq$#|g+3kww#ecBUp@MrmL58NAJFtA z>)YUd?O*5Q_oVSqk$s|i@bF{ibKTWJ@|ZC_FplIct}9{W6YLZWAb;1O1|!JkY;c>a z57yrFHy7U4i;1?lwO*?5@3$i8D?r)p+X^R#lf|{hvBt3$>`MiKq&x$cmIYt_giMV4 z7Ft%j$&z_Kj>h$)MbJ)*7Kkc6`zdK@eAI`^pK-GPERLcP5otJ`t*!5&1MRgMIwZ?P zwHl1=P4#zO^gj;b@Yg&;+GGPs5Bb6(cx0g#BMV=OqqqWU{(pCje z=1*<%ZV!m@o6u|qn{n%w$XRdO9OkNv%0YTehTWY#5I%EV#AVyKFu zrFsT6&-;s5X%+gih&W-?xi?o*oNK-|Pho5EWLgmoRD~__QsZr9gl~s^ZKGsq$&g2u zaB`cxvun5gXIG}U$2s5XeoVZEV`1*1N0Y zi7Q~)5O?@xxJf(Hb9KM#PXI@OzlGrNhdj9qkFhyiCH0BOsqw}@kwc=ju@H}cAp7Kn zd?-Y(!jW3Z?QLaIDQyVSzTu5{(5R!&HK6SsRsYLrPob1Y7FyP9c28SkRzL4rtwzm* z+A(t43!5YSo;2cJ!L%K#Ye7U>4~W)weZ`7fNN=Q|S~edy66=`3MQZ6|XK_|kK_B|N zv_sHt|Ko-DAB}+d4RpeLE_#1M^@7Nm{P)bW+y(5?rRv2lVR^5A%%!*2!h~Qz=L-re z5D*Xe8`X{&05L&S3b;Edbq(pcf4}L=+lDMXy@xn^Cu)qMuzp z%X;E>_A-*~;Rq-{A8l(=wO+X=Ji!i@8$T&^pT>(3`AL0`V`9yWEkzxSIZd>$cH}L^ z)`m2QySwablIE_(m0?9fNUbMLEi8V0(@Vm!V9S*$5zT|~ORaMMZ)q)bs+6>=NYa$* znj#`CClUlRB^)kZRm0oDUd8fyOBVlTb{Hh9J^1=sNfNgL%L0+%x2W@G5((Vht|04Um{mg++E(bUxp$Y?Y>ItFP|8X6V z2B2w6S7zf?%BJ!YYLB%3iyV9Ch;Z1PR-!4A`Hq6)MY&Q#rnO2_(MYuMC!0$m8@U7& zIaqC0Rn;*fcu#NJ^tdk559oT!tgB8-KduuC5fNHOm35vhqQbOoelNk-9%2_O-q1aec$ zC4|~+rG?Fvh@EGdh3Yi8T9tvB%-M1!orVuzW6{g(yF`Oou&8m+n4kUXZZlHxMwJnz zI*(Ip3Jo-k2#Rhb6v|9{7*f>9A8PZQ?7OgKVn7w=mHC3`gnJaAM@TRd1P)8x4|k9# z*WQ3Y{NZ{bJ#)!tb84b5pf`+v(KY;!;N^P%Ly^mMxppu;kC=hhWXep`^KWSW*T>Gb zE+M)^^-1KdT;BHTEK}&^AE@p;mGxwMpV+m&Q;TDImQY1n6j4UFojs5Hx_-o!`tXN& z4<%@aT`_IWS_%jwO49!1qIc|H-fDebZWcdYPufH2HplAiZdat18fa_Gqh_NQ6Llj(V!-`7aX;!^OIYm(O@>6c5kIw^ z#DM+`gGzqP<5~)S{3SG^qV``dTi8jy%7t&d4|BJ>!^Db${qBlmTzeZ4twe}?iA9px z7PDw5@o^=DQKbRbptYCqG#4E&iB^DPu6*%wFvS4L5J93J`DwIRiq4}O^)D~JPj1vs zx_M)$x{M9U^{2A57Y9}Dwz!v=1H^<%@EK2*Vs$d1JXvP1kW+%h|F#GHBxqV%1ZX-3 z3T3r&hkqgXDgWHZ`dhH&VYBri5%uu=#;l6&|7KV}#R#H^3Mw(5!(alVDeroYeY?hXo1L)H2Jx%RT`y49lZa(|)uyk4HYCodhsOkuOuvl2ii z^oO%Z0z$qB0bKw=f)(%{K{CL$J~v3RUQJv^#%^T zm)*5r{jktOU52&Ib57r|mk7KE(x&AuMOxJ1>25Cnmz(IqQJO3>?{r#L9aC;+Dguo_T*I>;^X7XTxc;`{<(j3 zb(*`jg^_*iqS!7l-3(YksK%eyOqRTRh+hbzba~dYwn*w>7Y+*_M;cZ1ij=Jjg4VL0 z?TdnG+bL-kt#hAXp7n!6O*+|A1Yhg0e|@Lcl?&xWWq;3Q1JM5`lKzj4e~i})W4YYo z@Ao}MhaVW=dnwiQdRrxTUN4-x{d_og`n|o6&e%+Fy?4;;CASwt7H=&Ggr#+Ipx-ps zf>L=21mrY!9p%NT%x7Z6#r`Xc7gZ=Nbg2csBGU49wz8-rlhfPU+uz@ItM%=sZbVf> zOoS0usS>+1<=Y)D4~KQ!X*F_lY-#UUI!1U9l!{T*p$_NxA!ShJp&!hXI6_vhkbfk55D={pYrZA`x*O54;M}Ed_3*P@qAx@?7WB9*~Wrm?$+$SG;4jNC>Koo7Rhd44q;dI}uGHMNBZC{z#}O z7xi|qq9EE4r9tx!`9^IU?5*5FcE@ zJ(PmE{0mq`T4?C_bn6 zelNMYyBrV~9#`DW^qtkmp!Zu{Yu#hk1IwZB(#ow`6#yi@`C)l~WBs=OC(-vIewO8Y zcUOLJsFUm*Y4?**i{loc9B`8aFkAtHP7pBy62~7{Tk)pjD&b8(H~2gKpFfIZk2N6D zY@r@qAd0W*!(P$68;-eyOHceTRC`QISXB{G5QuOH_KYL_slg(vY_SFa=lbNismpk6 z-n+0zW~fv5+=XOO1MQ|b1O^MTv?&uX?HhV8~@?8msY@d>_x2>h%~Nr|4%V>i{S_D zq@-F!QE3*Ik)Y9gX4|O}+e;h!r@)mdp)#KG)%{J^Lr{{GQLW=W6BnsT;=KK}*6_b> z>n$T&Oo&;eYjD(25ou2g!GW*1BD5gVwfr-6`ZpG@0!0-{)hGB`FJ%az{}HU2*H3dI z?^AAP>(s=+51a-9-~FOkwPMhgXb76G>0=Pr8J@eoyVQdaH<%>M6w(pC8z#jdniwJpr31K*ykSq$H zrjZdIo)ffS;FGIQY}JmgL8L?x8Wd3NUz_;4H}D?d=FQCvUXb z>+oQvno}M|kv9%2u+`sg0~+@16*k}5Yb|49%ObUsQ!;}X5wM`WoLP)eP$jUS*QE4o zh#!IJREYf&M{vYUT^wtV3k0?{8z{(S+M{1VkK9is?O@EAng>@Px~5qGl0a?0jy#HunmcP4|27v;p`~J(jQ4K7)3iwc zt6Mhan#=E<=TTq3$mN+Pkj7c8;fqFjOE_Nw$4XMpObEG@Sm#06x}c$ z*^5XnLt7@XI!IJgS!5dO1>-$f2ly@G)xk{plP z#`oBxx@RRD7sN21M}45jYZrvW4^2W?RkPqm`0#IiF9@imTuj*Y3s1QD)jO8Y_Y6LF_RC$y3AHt&yFFXe zu?TTB+Mex1?b%;`ULx zE8`G=6d57RCDU3QGq)=z4=27G~FPP;nbbkKQimuxRj~ zCQbIna~HOFm?c1Scb>XGHfC^&@Lbz@?ai)m;EqACEfJZ_Di8seN^3WnBO?e*rkq*- z)mO6bnFTAb$y}U-v{VALbh=WY1tze^V4)y_oX-3R+ugGb|$f}UPlw7j3GXBdYgpV3VNjUYS3faDN?hAfRn8>?L4 zPbiVuB=x?U)ocSPQ-voM8yl`HsOUQM+1;sX$2TTZjc;z+gv50gCazKA@MUaM-Ff-s zq{Lc!*#+;u4?AH0EA@8rUx#&?eeytl0};f3apg60NT}0G`V4tZMwMeym+K@{8*E`^ zP*DU#)G;_W*?VjlI$b|mgBPKZwkaD;l-9hgTpXM=eW&Q9s=0+cyZR3L=Lc=35^h*u$VrmGIVIZyM=JDuSY4@oksuZ?}_Rqe44YDyj4n?6yxU z>uqX8QF5X3+OzlYj|yej)toQt4wzpUFyeh+{s30O|3xwczFV*#!dKc8UqAH!mCydY z!}zLoxy3vC@+d(-%&;a4&*I9_`uIbR|0Vlw0~Ia~&GL3GL{2oK3*SodZHMXNTJ;xL z!CFyvO>FH@MwVM2AN!(Y8@hUMz_D89rC)+TNB*5%;;UwkKO_9!h!k z$bt$Fq4w6bKN=X4TlrbjJ95B8T=sR07M8qrh>E6Lj@hhsCwP%sX%P`=Mw)3971bo_ zv8{7+Lei?PmJhNlFd%{}!*5{zuIKKI_|o|tS0YP|WTonS@39@U_dK0FoxWYUiD>$q ztFHe@e^v?Jq)zFLYT7<8pqigQ_j$XFL|Rgp8cIdfFjZVGHKL-eG=sI!mZg4l*jS8* zRcehWsyXQhkxj>^mNFPC?-+A)ZkA};{vEB@?d@jJjzo$)G$O8ii$XLs`xrrTS%}1U zPP-OhygiFF(YncH*Zn+gefO#TPJ4aR>9UaoRqog*Dypirmk69jA=@QI6RTswkZU=J zE6mvQFVgTOZC)d9tL%M&Z3TP}?T@oZKDRD6$nrDHQTe`5Y6(gnc^Kkpim*>aAOl2z zJsUV7fi$8zTn8}M?mYI-%VJ`RD5#g9r&C~ps=P=+L{nCihdE}h>b-q~0*?wppJKpT zMMYOs{5w_F`u3t4|6Avnkh{oQ%8bmGtp*}= z4Chh`m!w>8uVTe>jS^0$OLeJCd}~E&*}Rxo=3(!Lq(vIywcXf)*UL#wBV9vK zR*jCf);-Ur%h}$~kAmtmw3f06{VRNj|C5rRG3S%;TK#mt+)DI)pPLv@ag&*AV{)F`8yBri3hw4jnL6GyyCPpoBw(q^VA(P{ ziB;!4B*B#eE^H(HEkiz0bD44GvhED4vn^E_zxD4Zk0sQzK$v7G5Nd!Xh8?WX9((qu zzUb@H7%78ueS*-*rmWvJ6XWt$5- zBVvTvF`9|`hksE>N6lXDj=hSReyr})rah|uj>p*7TVY6He2n-`?$*!6mw}E=l5}Ej z^)0IUv0NjfSeaszFrt)pIPERYy-duaZf0(gM36X!_6?Od9xCZ{H!@S7_O%?EsBnlE zVb^PHI`X?bhXU4UOX9!J{`jyYm=XFuX)z>{C@1{Lq1(KR5p)`YL^)3~D@8^ANqTurXIv8`Nt+guBtwl-7YJSX$qJNyI(_R7| z{?SEz2~bvz#FV2@0HpWRQxYn$ot<`}iJPrU7%jDs1ZL9Zs!)!2d~N~$UdE%FOUodk+1Abxk|OEfBq zC@75&{m5lXi;o~#g3>2B*jm(@clYI`tmJWTvi9OdRS{FGs&a%Q_-e&escUJ2!-9t8e((yM#ug$yRGpX{Zt z&T{$-_cOq@6%@f+DbALLni8^DJp3o-Auuuj9Jyr_$B|S=C;zQsY1E%3mhn4_SZpz{hYi-{ zUi-;1yszou`hx;^(2PkSaCPcUJ1aa_o_?>5|o=_Q&yL;DD(r{vG?`VZvi_zn1kY31qk{g>YJ zWVXjEnNWm0oQ>w(4G4M+WVDGJC zgwBh}TEpN;TCRRqq`Uo7O|F>OAk{C5kt^-Uq6W34i(bAGTE>mWeUEL}+*w*nn#IT+WL*vJ;2s?lbI$zja-J6h!DIGu-i9`mgJohQDxgLiS^Flf&w%!2nf(1cQrG2$mZ6m~{CDEm19WRg>dcptid% z$~Tm&uqzAp67y*GpKWFuO+qul?H`q1wyQGsaab91tQ$J%StKeVgb0pPZ6|=c5*a`iX+xa#A?c{g{=#9 z(DQ9v_;S3piMHkKWI;J*Ry2SrmVp%-?%Uq=F2up;xfhqT(%MSq+58F4wsItJzv*af z8FQ154u0^QRt+Xe)9r4^OT`*Sl|fOYN<{udsZ^+qDu}x#9uxE1D0knV4^M49_XwAN zZI4{tSQv?4s*x00QGDxBuNk0?B8t+eYLa@CfQv?!K%d8NX?D?~%Bm_2G^t5Qw5a#; zQVOjop?F~!(+g;zHb+w^LJL)ZHF+rY~^YdEnO7lC5O{{ z3u+scOpo=JYLyn3oSmyyeLOdtTdL=W^GVwtHiXVNs9o7Jnj9SEQwkH4pQE~edu++V zlsJZ9!X6CoJV>n)M0*k!piyCwk1CA8&&INsJNG*l7g4E% z|MMvnX~a$cp}OBw|7BUF4E{VUf#n(_RG_VN@-jm`Gi@^&vY>$k;AI9IBR-<`ZuL*E z?-vJS(MyYRAD)6eB0UoYY^keu4O^%}QYh1_Wi+bOrIALJO)9bXuBODJ`&n5$^glZ3 zONk)uC2E@bX>$LPPk_fcjUL5^_rJ55pLvDDf}-&FRxL=hIt^5%f38P0B?z?Kgy`|- zlllDzwDec?{!^pocA@aRJGv<_dHj!GZ!B%H`^WVB&J|9=6WwTpRTvpqet*Q~eXZZv>no^X{+{E?d5^QQ!O(4NTSc$?an34U*W$BG z&*_k9MKOHki1^OamzXkSwDb&Zrt@&zytUBTI0yTkjiX2|{!zPX-3E4FZ*^augg{*{ zWh&neQL43PC6H;PRen1u75OkA3S{WOvMPhiNlGe+h$zsiy<-!rgiWTt#k_VrX(-n> zwt8P-ZnENE2%a^kk!ZQbnGKXj8H%3)g5B+9j7BXZMhPie6=+%yu#i5yCPG5_0qo^L zZh;YK!{xtUH@)&cH&5id{uha}?|jd3wS0@6!Z>LIB0y!}6V1MdgT#0L7UU+!T2;NO zuXp^15{6FkKF%SBpXO`BGbpP=n~5ICZw^cuMt6jL4L94Az7K8#Y|X+bTtm0`ebDEP z?(XM8>r_D>L%@nA!F=agO!lPbd<$5pdtO)b&k84^$$EqP;BaZh=bw$&jh(u)Cij;c z?C#mPl6O(R-={x@=;6h!1Me!gHmiRY(M#dm-#Xk!=Ukfl`&by&i59h#Z4g>jX%Q57 z5-mQ-JepY#21;pCn#rGD(P^VbR9b0&(nHR}#jynK9=);APeEv^d3&vpGVW^MF5?I6 z?*0YU(Z1adv*ya&`#nX2&wL1f?#o;Dy=QYSq5E~y<8z9&A3Cz_{qoT_A+6- zdO>~TaVYiktKJ?wK$soZlDgEZ!Gus11*INTB`Ttcs(ddi=`0xd^01CsA@S#ZXs9ah zr9|MQR-EqoS@IAk?ntz1Bv&SWZkPKk7osSt{<9j*LNunv8O?7Sla|y=HCx1~@1;#< zHj>uD!msxd2&y^}aNRD_yxp)nOM_!zh=IC5jUp(G3tCpSEvZS}^|#z!sx*Soxf2z$ zUE5uaq5TlSYL!{f#A?URlx}>@)?bR(^x7(-ii)(FNesP&C5cF>S5J(Vrr44zs=8OW z_0p~7Szj%>&}jwL$(PW&PF=c8ld}w1O?dkE-%_^pyf{DsyD2q!-i%wMhe-2!VjD%K0>vp#Vml2QnNkX_G z6GwY2ifQ%*uDCxc(9KCo#(73_Y{3E?(-9SGy7cg}BBT5=q441q_!3gIq1>fLsUD3h z);yHDkZJVuntMx)`(zPlX+y+F50jM|-T98^Wp&}Yksm1h%jXTfEAhA`x(=@s1$yi1 zCNzhxNY}rA8L)#%%|d?RUP`axC$U_OtH!qSN zr+1QgrzW!j?aoAT8`N=*F5r$mjX|0+C|8j3B^o}3m^K8TpyWnQy-q8`rg5%8MTjD8 ze*(Xc3-tz?D5D4==myt}*j@0=1S*NXXN&TU6;vtX$QO{kWt?zQ@C^v*9bmHGjkV~Z z>thAr-pO8iyw_nx0w>V@MRW5C8TSd%nr81S@G*EEk!mQ}jQ}V4CCyQ}TZQ^RII^~+ z2wEJ*ok^N?gsCKA3IHM#-ak0kh7hPCZdeCRD!iH&K}7^wIsXdBV)M0NL>#FEvuCU7rJFXHWG)>S10gc$!MSRr1}>f z7svX)m)CK8ZZ}=s^cnAC)cCv{&bv1Ie7?^Z%lH@hhuZr%eIpO&^?Lg#@K_6hhr)|N zIjPNBapg`C?HD^VF3*t707&?S5@?{kaq!P!rQX+4)mYqCTOx~Rj+AE2Pnyq& zN{IL+63M!3BihN3pTr3ngDI(R6=GfHMyZvJM9FY{noK6`c}?BLF7*e~N!Ai8a(9*c zciWq|{mP>59zckzTe(5yYa|ngd)*;jqveU%t_sUWK1XC1e_S;Q-WdE3L(-AG#rN&7 zV(o6`Fzh)bIVy+x_%^VQJqRP&z>i-b(yt!Yu&Ai(A?59Tr$ED@o*!v-knYgwZ4eq1 zQ8F~vHXQeds@7r)Uac*IS1nt1xHyuzZhs)Q7ChWPjkRv1biHIYSlat<@WZNW>Dw02 zMEVV^!LMJjfr)@&;Aj3493IeHy5oXr_jmEcm4HkV0x7|j7LZXI7wTFTaktXRikUqTacZkwW6Acg zFB(iqQE5!pA|is-q(eGHzV7#7)A#*7*J*jbTO>WPjguU8_Os0KVp+aXnFw~t*rVIhxmaMjxwjTfDNaEQq z@GCla)5BP)e^LituYcebx7?hiMmtY)b7jL@1PX)Mm{Os5-(eF}kqq81kl%g1_c6GM z@Y!Di>1X+8J8G5gJZuNg`j*<AEC-Eb(XXhZqA0m+_0pwd%pU{$p9_;nrveye;ln9Ei$UUWw?ECLiSqwC(Te4rb|hSC`2Y++Mp5#sM4iip?;l2cqtQp?S7oDt02=S zO1fTBcI%+0M)dtZ*`U%v%dLQNIKd#4v(`ohly;ifT)_PBC&-nYEA2sdelK6f{ zr|PwP>|TSw^tu=oZNdQA*zMBl>zk%o7A0v0IeY1iA6z!m4ew~e-23d!8{L^m1{$h6 z5UbR9LBp<#wi)hGijLRp&nI&tiBb`(UKs3*=gHBLmACA~f+BH_%`h=3JQU;hx6kdM z86U4R3of!((}33?J+Vs)mT1q88k&QRrA!3PvPZ^4=(?B)OvDFojTPuY6^26io9 zU9KkoNB4eLQOx=d>&$6!w>mb;Y|K5({5zuejdzWdQO1N56C2rD>k_9)2>VDzxuo?? zh1$(Ur>DiWhnxRC#_p>9lfG_rk}C6T)iRZ7MQIW3&>#_zWbVYc8Pn1(cy*l)-5hU{ zj@cV`>FXffe!Ez0u?uwduupKPnrQZA+$^96`6n`8-+P1@5Hig&H@iSgf$n@8hV3n~ ztJC(q2f}w6C|crm$aD{=oAuJ^`qNfEwQ}@)(&Z`4@?SKlAIgBNF2ERTXMUOU$t@9(4-}5D5dc zJ>TA_J;@poMo=U&YTbOV5B(E<%&DrDJv5>O-*##9=lvG#D$O(@KqgnbA)H;5j=G|9mAqwh~foRe+(jtw2%pxjz zsZy6+E9+Vcv>?{~>l&7nwMj~gRH7iCkKfwOIS$P-TdU97yR`VdZ}D_FU;e>g)7^H~ z|J*%x%c1D_o^z9?>^$e2<#L{%@u%wQ!|Z7}X8ye^UX@E!b8wWji?P48av%2l-JVV% zjlq`XlM=_tuv*Z29{Zh~YpnOWJM7g8bwrkW(drn8`jP@X38w62vmX|29p34)YI{r?Vq^Hp-@x~oA^+cBh1 zBly=`Tw-=sEP^M6hbhsVd)4q`?TF)%Fi9S7vFx|{U6!o2JqL^@=jH1AYk{|S%=a^o zfMSfVSaL^wWxknOfeIdO?%GqxcZyK-{{)TIWFiLGMVf^=U~!FG=a{HHTRlfsr;zn- zq5;L{lJ6LdBe^V(MDYQh7Gfik%1Ie&@RGlDeUifmd`|spO#KqyEYRE*H_9Zt#iU_u zi!s*`}0b}eVfb061ryIma%_#WSrwBclUN}0z#(TiyM7t?heMw_*NJ=G$- z)QYNN6^)7BcbGbh=!h*SpBu!rg?x|aTGXvv!2Bpm|E7r3LMWy`lJYh^3wV@@(sB@) zl6jnc-Yvm??o7E4BR##bn|Wy;n;@fn0I!7zAmhue!?Lw&O4B&==i~X-Um=t#5wD9U zFAzfh#8Hs4#48glT$9#FJc{U7Swg8txa}Gph4AfFhTq)t`&M^4C1=`pezGvZ;M84g z!neE6&Dk12kFSMw3A+oSofwlLfu8 zW5T9T4`?^N@0a7@RD0(t-8wuc{woo{B!-K1aBC*LCVt0q>Pq{GfneQ4#gfi^pP^m5 zMl^ZCc{JmP6q{uM00=_}Wj|ZJtC(o(Uwek7BU`B}tV|!JxW4PYCualnyQ%h&KAZUu ziu~~d(rBUXs|o)#4+o*MHR0J-eVIb@{z!oP!h!&yv0gYp1i*k0K>#qr<;)f?MLpxdZBI_}{S5dq6#5@MgkilFZ+M4NS^DN+PBbrN9S!ERMU2e7 z>#!srkdRUJ5Q|CQlLAeVz!$x~XD`O0|0$eN7 z$yB$`^>WioeM%g8gK2fKpEB6gH7QOdp=}Qi)nxSYp~-<3o(f9EWqAIM)}&Xccl*n` ztF6}CpuFsHz1_NuSR$#U_?k|2&RXg{KorhgJ zgy=j@7iX-`F5W8xCv1E3ke%{(E8h0-6*LsacxjWpw(e~Tbils~2k;b* zpRtd$?4g2&OV>sL;rQtDlFe=YIcG2{!c2;Mw)(?z)pOUU(Oq?ycD+nUSp8>8k!L&|{47eW)SPvcds$MwxFDtSO{ULaK}?D_4Kz=Ye&AX8?q9 z2q(FaX-w27V-I@Og&%g*c1aO_(m)sYkoQfI9=cQ&pkBg5uwt!}cGJnIq>0_GuKt`0MQKV5Cd3n#acTx-9H7nrsc;&7- zm`0jLoOw&$wq0bGGPsQqP-*p&W5dc?iF_~brCiXUjszplOxqe3xrr=C`=rOnv1gr- z5usG^bh?Yd)n3ZWAQ-2d8AW4B9t6f#( zX|E95=nq$KE~$0YN^tBYT9sGk$Th5zm$Z>ZY4lA*R*|Gqm3$@}#De27DXx2~wRhJ+ z1#9_#PI;@m<+km#%sy)c)G~~j3SU{)OAqz4T*dehfadA#mfVVVx;E7#bZU_dSM0WE z|MC!Pkj*5hjV6<0D#sp0eoG#Zlc{64kVd3}(k&D3IHtIet_3jYlI8^-IrL2Pb1R&Otp4t#- zM7mF14v7fhxc8Y-i?%R=aHK>LUY1I4cea8xwVp!8E*o0zT1+XG*UOXdHNLkZ#6_V| zp-^c=MF(QTv!AWfOO1RWqA0C7(1vWe^G3Gb|o0zwJfJWUueDTAa zL%f%K8NBm4fgIsylxhHT#ykVT6j4i$83gZ(jzj$qgrY<7CTAY7=Oa#wxJ(Hscfn>> z2Tx0C0~@7T$$SPBmeL)S$$ORi5n4#)PbgoW>Rn>I`gFNA@>l#n2E$O)D3OUQsi1skMY`yvEi|;E zhaN+pgcV=NW~sn#dZ>4)m*juu#eTo_!;`{8(Q7| zK3NUtYt=WG^~>2ko(wiEYwUYlRH(u85-*Zs3Zj&yAe?y*z-aESmk?ra<|A0?w(MmD zYXv9EkuXAFkm66PVkpt#utUg52J$k(jth`AfjZX5!Fc2s)`~C zB4@Bp*$k_AHX~0{&@mt}Fd&X03la(k@)woG;qY!e`A5I%$8Kli{s!fq9c=XU%%Vt! zVO!6`4yvzJKO?#DZoD0}**Q>}Of2#HY9BPW8ynLoJLb|Hd#LKIK9LA`9c^?UpHDiB z2a_a16%^7>8>L)mRWM*DxFd|Gi(Vb#O=R@^GlznB1oKC}zujb7&%o}RZMQxIy&ZJE zQhEFvwc7Yo+=hUGS!?3DYAaKiu^254{**exQt(pxc9!YvuO+jlMQR`+x^~sCB56G! zZz5h3`iYe5bCl~_Is2Vl)dV66>@8ZG_qhjrOBqbrNMts&FiI!1OiM*ok_#M`W=PzLHQ0T{+TKrpvL1 zaGKXWqqa(~)@!@lLjrTI9_w3bqhZ=++r8{ztJnBeCxw2t;JG~hyZ5#iaGf*h{vEg-Zk=YL z22NBr4RgD=Z(Uxanzn;gh4otwUqawG>5!G4hLcID@V5L68$=FWtuBl+8uD(uLpu!M zrFxVykkYvBp`g?>Ed|NUrxncmQ^iUyd}l$>+UhJ1F#~YclaV<5{(n7jymd$hS3eE% zb4Y7cQ3ETfn9WCC)oPtaj4MT|<@%a-7Xv*1iH4w;_nusWb1I zhPOGA{P|RKbm?dfOA-LW8~kP7cS_7E09;@<+#-83LlP}LnS|Oj8Vt0+(aWL0-(*Q&2z26AR5t<|L+3$S_pw9wD*G^wZ)oK0gvW`(1AhEg2@Yoz8fCNSMF z9Z7^ZL=EWdv+RfFd$4cF_b54SC zIt_h;Y?Y_uN-UaGrRen1vJ-mI<=ux08${tIsld^{*-EZ~Hw|&#FRqkr-e(q8V?o5& z&D52cnF{URcZoO;Q^e!jrcQwka$!x@HxAXid53bE8);jVs^DRU@hgbpCRXlNHheWn zWUMLABeRu$hCR9_jn78|kFAt)xxQP2b}L$aoCP#ED^FJTzaYXlJ$cd6K<`XClMa=O zP{X@DVaj&82t%tqbEs+6LbRxIH!*8uyLnk{7bSCUCjM6^RWyzrG%&lwtCLQLAq{^m zDCex>aW;iWRiv&6ekZZc1!g=VUP&-8=V6>2>n7 z&b1D7%XJNMJLAEPSX<8FHw5l@J>y8^BJwvhTF`Pam4#}1AJonNf3v5!*{nM5A{}9X z?0A^k6&RN6mj`J;afruN2y?dR&=N4`cZ#R5BeFC*eNr2F*BIq6!f=>eMpF*7!#NG5 zLYyaPb~v$e5arx=Zs9|M^SVh|)H5`Y=3Zl2HtCn43|B}cXA0I*7|miHEUzKX$TdQX z=6m>Bk!bIdcdS#w@Ss>lJzg}c0!aZ?Xjk5{dbp*R9y72**xw9HX}iRjWXXKvl-wd^ zFj4T^cW^(~C@02S*T1cAAYjB{Gi9AkkJo($fOruS2}1Mqu{;=qjUb3YkA?n)2KK0C z2L-eZX$TMe(KWc3G1SJ)m&IkCO=qIO+ygQ}J>7|gKDC7J_Bh{*M0nfjseTrP+1lqB znb=0;jeYu9h{;6x{>g?2-77p(*1P*XyL?R%_@3K*&Zc1RM+1>T)r4*p!~4`~2uw2B zOSNTBnRtX!Y06pA?T)TPt`Dz3C2V`dGQlp77w@{a=;j@p`v{FGt z6ObyhzF3>qV7+nJt~mG!7H*NTjk8&#st{k8pyiEBO@Y7YG%(@DzXja$Tf1WCdRz8Q z>MAuz*QAj_^XwH({H=9~_S%N8`RrTKaJH7BtTnn<+|O428)* zJE-~>8%=hnF6>3iOsl%%YgsLp z%}XSv%|%gFPwzqsm9%1%(j!b_DN3#K3DiHp+PyOrP8&o~cGH$ml-!DyrDI5|P^qvzumg@uSD;q6Y_z`xx2)bQt(`6v3Bej3Q$qs_~d(lMb^O2HS0 zthHF)q*YZ_R8^#3&U7sSF(g_S?=kwlXM@u2aBuyVmhShU=1quaVkS3Ai?|fpYAsM{*d+rTRBYlX-MHS~T zckmJj!2e!@`u$%}{ejmTT2mvoAoU|)POP&_lETS$yF~zcm?2s8Qvf^XkwkoF>(}%s z+*IX4;|g35qOHp@3po2bPGu^OsQ;OMaL-)~??D6?jj6WM$66K&aj~j-b*t5sF9q43 zBtU(K2XvgNm!&bTv0AdhcFQ_77L7T+s1aKRR4q2eG7*l%VxykENvzp99 zK5i^g&2syT1WMATQdhe`#_Kf}ui(N`$>?IfwH?Hxb z%^Y++yIDEg+jCAP{%9vyhVcydlBrt;vKphTYUDL9Qqhuz)dNN0p~S?Rr&OC(wrR*h zwyyD`JC>D3>n2gRYjoB=T--EiQ(A>db);|()@#Sz@ zGuqrHzmt89VjRmssM}v-Z?x6hJ*vGcVwIYQ4=LyN7|HHAsjfiPy$?MrJtqQyc`qV5H=v-hz@^1U~qFnIM}%r*Z6*q$mSlEz=xFd za~BQr+#YV#cj$ML*c3z+$4`4>y+YhaC)UfWezH@c19>UJW=JOu_3E0gJv?3p{a@k%^wQ(wZIe(6L&m>3)bC(6KcNvrJ3 z{Dkrde(@K+E;g@j{^U4@KnH$Vy52MTw=b{0xHog3%jFb0PI(aEsmR`&Rq?JJZu_cz z;z!K9b6A0M<&Efz(a2O_H@g{~R2_wDe~aIvvBlcE2ZMTk#q%VoT_xAbi*_w1t(nfA zwVaKGbH78oPj-+F@3kw-A@N7>- zH%6SN%GzMWMcK{f)8wjSAT;+#8{*=6S@OWQ&x*@S6FjGZ4*izqrL;(Q2xzw<-ZKi&8lmg9Ur ze`~Yh_*))tgUn;&X=sVkaHSQ!K;AWfW#_HewZ2N13j{3%{dF&g8h9VeK07hoQ3 z8s}jH8wI_7MrI*$Eoonr*;;87(qNWETFydXhb1i6r-VhiL8*P4v#}4#E+9?*!@+z; zBSo&jIq?WamR;O9>p9V%7{n2Q#cM~qm*Kt^K~!4CV@|j0+q>y9>|obnk+GbCeW4&9 z-y;0MAiPB&ip%nP{DZ{e^G(+ug}21twcKk2%JXPj;vChz0n<-!AH(%@9Zwx6?+;@1WUN#$tPT!vJEQWBuom1n?m!&;-WWO^G zUj~(??stMLQKCwtD{=+bTZv~vvNSOh=pZMEdd%7pdbFf=gf>;`Desz<$a>I1$u1Q)ScRU&Nyz_?lD&YqZs=Xy z-c``MH;>C^e)m*^^sieJ+rkj6;)FA*x#vn@;q#TDLp{JQV3ieH>~$ zfl%^f9K=}o=Kk}60Elyn14=!NqHP!ot8-lgYDJ}`I{8rfaE2Bx(Ft82p0$wCks43M zgjyDrq^5=ABxn>G`)mbI!;w){KWBO7EpnwQkC0Bn`>ZG%sXq}3O$s!rt7FB~d%G7h z2y_UKB%6akhxv@<%iZSndc7R+^f~_}9ah)z^;6OQ<^LNtdm*3oh&^XDb^SXmy<(*_ zg3_ooG^!0LcXF7YHQL@nm*lca{OdqkMv}g&5EK)f?6+5JlKYeG+m&M`)I=7Mc+-fM zM~Bx+vEj+p%t`94aH*xdP)uvt0_ z5|J83r`toBw+Z$)L#ft6Hdc&D2gIDdl3etVimK|8R%|Dq{k}D^@2JySGBsO&!kfFg ze>pDGK2_(gAy1c)RCE1Agv;%UoB$FZRRUvR7RBbQ07~3TJ^reF4fFnoBzgA% zFm+PnC*tSaTq{VTx$u~bcI`*fN?)Z(ZnA4()7tNV1O&RjZydgrVuaEIg(@%^vI3%`NV)lksf2KB|~&G`nI* zqtMeq)H4gZ-1dB{J*r`yw{K#}bY&^MVxS&hkV>G&i*w_d3O}pGaUL7$9We&^Y`SXS ztFJ2&lh@0$eI8AnTlzL~%Df4l(rhvfsR2nf#kXn3n!;C8k&_{5P^B1PtJ_D^z;Vdt z`r7{Xh-p)3JFA+G^gd>+_t>89XWk0;I{dC)P$XXc9*I~RO*Rk)6}Gr1Wi0(GXfdA- z!(RZPJJZplktLopdBVjcwvTZ|I+kP6aX%eM>OlMobmBqiX*{ep5HPNnIotD=5muM2 zY9me=1YGHBb=@X)*WkcS_1inD<*!?_wY<|4+`=@|>0Q;OC&ZEIAaqSxdv-LPBUtu` zehU_ZzCxmUxfDi~Y3$OXG>H2q2&(6>RA@)TYCY77I)76uD(SkNwY#fhHdT4pN>NoD z-}Z%-Rn^O^oX5G>TkpTrfHr%+A%m_E^gMN@J0Z;71?Utv(t!V71ydiZ933L_|KweF zZcHEf^S(B=@$Y2k`FkFN7JnPwG_*Uyu;dg0kMc=n|m-gOr`occ>2#UE- zl&AVgB{aDyIkt&h@=w}G{=|Zcym=q$of26UMG+U^%9YKgleLaq{6@V3bWM4bF;ND- z>Og4`q{qj#niHOrSD9;5Lai&1&+w54H3-s!NQkX9>(T-vNwG+&>^67$JFEQM6w)Zy z?r2ynpoqV?&o3w@U&5Kn)$W&v$P5AB1c17(7HN6;=AwZmpi(v~W-b%?+9QO%5iKnGIFV}08hzRqM{|`h4B{wyqcv8L zx(#JRg6$Xk!P30o!pYxWSK^)M3`L<(iAw??3)2)Lz3pCkW%{<-wQUwc%hDt=D9SIp z92@d)FVW_{z1gqjb%|eF53klfwJPYf!Z(WB~8y&@< zqKK*eQWVmLLR9Nv1#2Us(6!$`Gs{}#-pSgqR8Vh9g(A`-jc24(F|sUAVT*m#?4%TE z99T*)CmKM5<1_&C8hDy~ZBMQPx1&Wq+-z_LUqGqKn+}f)@9%ilQnApsH_YxNM^SOo;UiHx4IC zYj3O5X5d3U42GZ&e1Qu8@qdukEaDx8yKMxzFN|{ww z+7%%A2Pjz7ll1w1I*cw9AYI6v>mh&(MPu+ccK8ck(-iTsn-;%SHAWe=Gq&VzN~MAQ z-J^F)roDM*LwQ*t$qo1`yvS)v2sM>~u?cP^=rhwJjmIz;IqXe(8%x-!I$U<{IuA>$ zS(-9@xDuBkw5NR~E|HVd;wz}&EaKa`HYnx7zpcdz1c&Kw$ z_CJmziXia?o*^Co-+Y`BoG}2pHYY^b?cZ|z--$fq_wSf%a`_+Qo+nAl)NT16Ji&)$ zbUyc6{uVVn@9bO`#jG0dzB48tr?SViE%o*H|2X@9{`vJs1FtABeqg`Lm>Ix4p9h9F8J@-ap-mi)*~B z^zP{^_P+c7KdR%qYP^CO2f&r}n|Ypg)mEmyV;ZDZkrYr-MQhNcew;g;Ps9A{zPI^9 zoX>}W&tP_i0y{s?tPs6EU2a~59O<5UO+CYDCH(?)m;xZ@Utbqz zArMO#EL2crluQ@Wz|e27v7x%?R@+#!W`E?3U4eqR5Qx@1{!0-Qz};#1keo&j@v#*4 z=>Y`uQnUE?2dr*Udbe2E(&XCgOYNyhZCEsl4@)*7xJz*N;1d$u2_(1= z?(P~SSg^r;Ahy1VLDcU9NisjB-t_(Z1#Ej}C(nmdk* zuBbuKLNH&Zco7W^c{bxzl%Ae;O*dl5_Y!mu||Mdae4%#kk%TMX)(K9-QM zI4RqxjN!JWll-Zqgr6gG2j(+JzlLGtkqPIuH9;+kXoxfSIbK5~i@Eysf)1yH{K3>@uRC_8ljRv)kOXFM>x{@-Qt6K+jb#>$fq)yH~`%p|1nu?;Ua-M|XD zWdEv;H`qS#Sv~aY_?O+sMAqH(e{)y_^aQwK>HHp9#Q2-U4jW~*h;JB~GpCB0X*E7@ zbyAczUc0DmzL`4^toub%M(BM$c4ZG8pwuUJGAR`q(=5d}EYW{Q{D8quX?R~qK(byo zAeh}*rL-u^h|&K&xAG})+0e>Y_S@qz?Leg2w=o9?`Y$$oqAbxaZ{D(9QgP}lLyB^- z3CC(PE6cyp*x!8cvi;H8S8Jp1+_Yqt*Ha`^+b}I?Xg5vk$3u;}Ge7ECxkM;H7kbD- zer^%gH~+w8z`dBBE;M%^4kM@}r+gN4{@3rluNwt#g)V7fqWZ$M;pl?EP9!M00Ph5y&6-^bVxLl_w4vj9o1pRv>=g zd+10a>XC!}*_E9+8!!@6#{%~tHlrA|LcWnb^H(;|{S~S>y2$u0xoTN>p;QEIPeYYS zS&8bzQk^{nZ|p03q`%4}r|Ml*0~wamL|(@?WJXjEB`+h3YPX+%&skpPJSg9qKfugP zOC1wA%_&Wmg?u$j+U8$b0#obnw1Q{tkTHJ)v_g}v{}m6{u&i;|qSi&>3W`8i0c+9U zUXrHw;?Ms5K8q+%dF_jT@pw!3Z)>7^qayaCyTVw(F&LyB^s_>!eCk(vSy~<9J4&bO z68^VAON!Y_qzW#Rnrc?$zL;Bc`wC-BrZJhy)lxSuU()zPE?>H$A%Y14_g{Y!x|2r( zzwvz}ZQxC!Z{cWvlh#s}O%v5cV)=r1lV(LU_;>5HYhRz3r1WD{OK^R5yXN4jYZ90G zUv^&nIPf^kKl29km`nC#%s}U(cXffQy=sOa0`p>w@AUL!WS)lF0WzraTh1C= z8ztKjBlu<*H4{nAnI9AtGHQbc%h8qSj!RfNXOnwpAK3>?3!+$9TdjVF{`UO(eBF-u zhS*VommuhPQBX=?>}&%`a?*A=gnYJMJTC?54|TQtXO z_bq){)~zVVy%Y*^gW-1(JWOjsghHbkW6MJIzpMN+OGk+pBQ**5ekT_;dW?T} zFRcBbmhin5m~F<4jk;|*wCE0^te)>le$ROs+|UmdGg^BJ`T|1;9R0^xgxAVxy&wt&1#pIDKx*3ob3_9!d zzND=P^!l*y$o~~}->4F4t!}umGHfXldJw>RbwWXr55|?Qv1K-^Bq7kWpK)UZSIb(a z%1t&4zpTqeVwBC(qe1& zB9Bkq&Stfv>+ab;7wjuRaL{Jo_eWlwejLI*&Gktr+IM%gbJc>%VUnMipe$87B-t=^ z2%P=!t6ZfkU34^7+Ac{wYKGR2{p!oFFG$a{ZPaaV8cu_FSxWL0S$FkuLY{e_UUGcQ z#6af8aGYz#u)6jyE<)g1w$?Bumip5c;Ugs?!X-H<|CP}n)|evVmioa6*#h|i1r#wS zN)!FJs5F1e#S5I5EwJIzNqpZAX)Vz`1BeD2X z5yqGwUfvqca;MSsCZeF$NAG~eyGGrKvROAX4W~@F^Cgokj)PHCfqtei8@WH(sw0Cq zT@JSCC-1d>T$l9gBGndsUMBMuqF{LHcWgN+t@2Jz} ztXh8e~kcfSE!fW5 za@Xo7nA{&iHyXn??*9e{gWyX}>J2pJ&cY|7iUabAmr=&rrAB+*f!@gcO0w3qeBzT+ zs_~`17V67YV`r9|h4Du8&T3N^exeWC)#IHM)(Pkd8HLA7MyU)tbWP&~=5_JMd0qqZ zH~fzxc1DnPWWAdt$(bfDY_|Ro>pP-b3$o_1Pc7nPVcS_aO5X>M_wpwZ)*fwqIo4HB zM%oV2Y+a-p=RpKclqGSC#uOGU~Fs8Wko;9kqrVuycy=#htav=n2c8 zP%+#dB9AmeDo*$E9ya~0%39Az{bsNxb5_$F!1A3!D|IfpDQsG_%@)&3g#vu6v&lZ* z=e|-g&O4rz89}fCheqRN2@+q8f){SPQB>oz(BWSv>w;vK;|a7HU+r9pWbWbHM{VmK zbyIP+4H#`LU0Qj}{UnTjA8(FN*W9n*e@map=Y z2NlcD9d(;~<$c=@YqlQTXXAFM-uU^Y{le_Cgu`h*D4{;i0%F~U5+`75$Qq`~{)?Fx?p#{YjIGJnZey_77PG z(ywn-wh#yCCJr6LU*8G>FsaT6o1+oP0Uv&nZf}YAtg#*mx0;@V^Z8NY1U;xFWg@4A zSPfHwUr5%irmE_RG_t zAUTu(4=IEn(1&&omlgWog?BU=^bH}RM`;f#y8Z?>c`1V+Xh2hrip`(q-6w-$5&~sp z#TIs`!Ezprg1uIS`U#=SJ>byxxnB-LGhcUrsT;E~iXTxfR+c^V=r^Qvi|BsVg_Vk-v#~6+TH+%Bn zG^fE&we{j{jMd7$#|{|obNmeenzU8(+g zUqYSx=f8e0FqiBGUBsE2_I#;z?x1657`i+&_tMg*5!9yCBNO=Z>aXxwWZFo#=$nbW zm)WHHv;GG)&BlN1N&~Om6K^74+pu^GtTCVM!9_y!@rf)Lx6G(HDymp9Q@Ye;I`NvB z-_x8{g~f6>jcfiO$m?qd9m(Bh2A36^q-K|K9?)%QbD z9LBk7<l>#sOT1GZhTslPVj@*yv*JvJ=xK!=56BKN9GBrVSJt zC6z4~{YhItUQ`O?v|Yx!Cc3Au@*vcm7PVID>&p}CIh_>V)F`I97!42{5*7)C2`k6R z%&(i&s#S*4m=etc!+Y#llkL6B!jH zm3@-dlHqV#R0h!%_mv;)qV5Hxx#HL|(4FTqvV~#z0mWNOQR|g-a&WG{l9fV*3I^aOtafjB}$!8F881gehO=Q!bJzY5Fc4z{oW0wMWHu zVh;R4uH!d#cSjqK8W+L)MR0xx?*ON!QtYy}a=uG}8dEk`g4rbO2@>?cEmXnWHxy*u zb@r#KoKN$4U9(*xD#d9d*|V*6mXVjHbt%NOdI$8T zxJ=+B^3=r=F;@T42{J};dX3d}U%+#Fv#cC;{TuWA z?FmZbA>r(Fgukn{`Z#6h{jtaRA5U)0o-7Qz@5q4q7LOFmfWd&Bh29Mc=pX^-_aUdN z<%O|J$uvjp2fspUR9U7&BAm~Fuv1U3XKKDH5i%20ea>J=gDiMG`QNs3@iq7p$?gD3VTBd#GQxMOiIMVjw=?KvPh-5~|-F zt+oIRefs=VzJcFkIn5NavcY?|_dqmJUBOI6rQ^F_<#pcsJ^@3lmFR>wCAoQ633~kCGq>I>v=X9<%XuBGcFfAboLCi5ujfNF!{7qb?{ziXvxs4wbTKoXsNX zTw9rKw&&54OG9$e#l54@3sv0fByVP96)Qy)xt0s}s<)p-B17)a5A?-zo4*vvwc#ie zQOwU1c1zN38a6R?S`FT1m-pxeo9U*NCUEco(p%AGY#fHGzZsSp>ZE-5u6D1JYV87) z%UsWztqm)M)yM2-ZWdUU}5dG;)@&@#92% zVH&|{&{*eEQOp*T+LZWV4yw%iir-a0%g_dskyBSGNxCy}GMgadOq<`osCm9{Dh}>J ze1Ob^DsMl7W0?sQ3LWJoRuNn>L)TyT7v0l}(BHVGHGX@+Tp|xaC$~Zd479!mnKvr@ z+ZsOk7qDf1Iz$+o|lE;e=dmu&S9*Eq9;_w7fiE%z|bK@zJ zB4bq$#-{-JK$86cno(b0iW%>Pe7^DRq>q7^7g#@|1NZ+TqkRakh{)%Qw)EM1TYgp1 zXe=DpFo$SN!KUP$K$f3gU`#V(R3)j&1WMG@T18d+%OeS_5w48$^aRQQOJ8HD6%f_c zvQzj!E2R6zTaOaRK0g<{^Z0cKxu-3jTiT?tLB7QgNzFXvZ>B)nE*_JHKzzG@O;>p} z{w6^Q(rZ#bE|(jZqkZ=UGFunOa+M^3Pn-QPP!)n7bxxaDrM~!w^5*N25F49dXteLO zGVAM)eM;pR#wN>%s6ctEnuIVW!P)&}wBGs|RSs44#sj^LS>GnAj-&oB~Zo7Q1`kiuh=tqR2{ri)stR&Ys`v zSw|fDqFb?TwM|t<7h=WaIAZwL%hC?n3UFTy2--V9+{~jkj5cI}o3ajl38+QK_g`6X zOr_H+yWKyf)G0AeAjwgZ9{K!`?%zALDxj(up7p%zLrN;6kKHcrzM-`BQ}SrYZ2wTi ze6FV_iWhZjyAV!|kz2%A? z`<_rZqt2U&U^Z&T%Al_D<0offFz;GO_Ht31Z@V~Aj8vUMvUC63)UQ0F>%gIZ=7T3_ zX4aFIlr(?BI8`C#+UTw43>zW}&iSPkbKt*h@7^nN=SP`ELz9VT9e)DvrpEp?=>dN; zE8x?~FT6udHkVIrg%*zQtL3pK)jnw+k%IAKcIzNWsVIPT(_CSA`T zIBlHL3|?>t;f&&ORvoqn7c{*5pn7^6E;YXKNfVSb0u&zP7Mj<3!9C&u%Fr7 z_`+#2I!A89t$N}ZcyXo}DSPP(MGH#Ar_qNbK;BIJX+R%)SGY*!B3ueS9zCk@6X zKOHVS%c}P*Tgj0FylWy;)ij4(6WPh2iM9aEE2Tl9c;^0H@zladcYY%eCxPY3SMaZs3 z<2F{{%w6t3VdqPJe}f;TFMUZ_|FCJ7uLHYX|KxEY|4Z^16ql?sz-B9`=vUy+Jd+YL zIhL`f9X#pkHNew)$;bH}DsMt;=tN(IC3jEGNY~4OS<705X6o1y)>8HLI?4UlGH|`L z8un0V^hh=3udsO80+b3!@%&)%N69S^S5oPQ z?4VE#x9=RXjeZgf%U2n!_y|h(l!1t{q#5h7HdPm{{HKw&jp#2v76)X9=5{3p86^=i zwu?3sdALEOE&0@NSW-d-#bd$WNiPjuI|iILuM4~i>H-*d%#vIxRoz)j|LW`ky(La0 zdin(HN@^TM3*S>sbT8+0Rjb%~)+uKq^vhE0T3aiw375nw9auH8^?Rri&mpA8C}S_= zj_qu5LZysC;CbaZ%j7zgQ6`boH9Zv(w+ypy!ZiXN2DmxAxcM7YlS+h8lhbU)Gtif2|DpFuy$_`S9A00MrJGQ@msxXiqC5Ol-~3@f z_K*unFQtC3U(pc8CY0MlJ2<+}ij9l*b<;8Lf~(WZ*pYBjG4gFbjj0PHj@xQ;*SI5f znblyp`415d*IZzYsYyg&nUA*J$IExig9pXtCnnJZNrSHG3iEQ~COYhLdY2CYJRQ30 zvO@7^WsBSz0Z!uMt0FaoZ&cuP&83r|}Jrx{NACAs#g6y20hN5Re6JP%2 zukZWMpPn@hk=8^?%S%*@C+od-*5^N)zs~L8+KMlJ$-+vL@4Pck?vxP>GA;QYso+N# zz8mNv9=NzQBkcU1rViNhQh$ezHZ{j5xL ztNHK$SAd3(ANOHy49wjkE%StJ2;ZG@>?qbVdh6ZrSX=c1GxazdBioiL7$3~17x`VM z+)^hiMcfq2)@p>CR|Hfg`>rnyH@5=!Pi|7&g2lSXHsDy0ADzpW<*Ef>`Km}k7ZLyf z4YX^aw_O(T((Up+Uvsrn3+V)d+kD-FFHdTf2-LJ~<*+?{HK_5oL(n2DG`{U=XC88C zYHwpQ%N>%{Uj0?v*v-h3dr)ND&u;eUklTLUS>vuZ7`iM2<@Q<18$XbKKO)(64?3MT z-FgpeJDbxG-S7tmf!0ikc%?5b9vrX@@G^X0e&^kN4??hBbLgRTw}T0lE69zH#unR7 zFnD86NmSCMEx5h5R$o}8)&VT!?wPAZ>btZpL63;*zuDchTMf$1(D1!Dr?q%kn_&DV zvZ&EiD?4Sd(J66ozHZfJw{~$c#ACnC`>`uM(Nt}7_}41TL-FF$FuSodKbvK}jb?Ki zx}LX8?eE(;>2unYWvk`7=GvIh-cIH`p}V;ibbE2vx2CPpR$FC&L3c{IoPJT1SY^UKhWdUAqIKi=vy&30aF6bG*^r}$BJ zcfeXVH(`C{S!bQ2oR`77`{MV3tD8_?I0Z)U{fxz`-@e(>S%5xo&lZk}t4M7VYk7^| zpP;iv;^3>BI_cn+Qvd*f07L`=0Bi`-0Ac_RW+^QY$pe5id4FzQkpn;&T0;xeb8B0z zH?0gi?=rwKG#7{9R>{p(LnFPQX%s+oR1`i~Y43h*EB!_gf?kkrn-&fN5D5r?NNz~C zYiUTW*Hcsahb}5JuZu@}@I1`dR<$;OrdyDJgtXy600Nj&rv=Z;3*6|50YC$yiGkWn zES92sXTeB7+7LiD001fh-0^oH#<3w)q4}Qo0GvoA`|*H50DzP)s7E4AVH*|#K+FH7 zD?Nk{$;CZ?7ej5n83T(BtEIp-E&L6tBmA$hpDm;EY3n^hc5rTJv_;u9(Ji^<9t<+LqdcYIlj+@V zukTLkyz2R3bEZqhT?zwEOwo^gSOO7Bhw82m4*>wkYS`c7RmFh;m{{Tf#E@$w#t;Bt z5CA};2Y^vm0RM^B|6)^Sn#;iJ2B@p52Z>5HtUckjYTm_X-6KFUJqY)t_53jQJTJWpGohOBsftSs)p}=#iUN=5^^Te&|c)q*4a~ZW;GG21I_u{ns`^CB?cYCvcSEuy( z_@Tc~v40P!K=k9~*Y57@)@tao`25;IH^}}^_$BqHQE3<`$6t84zP$7j_w-G@F0|d} zSd89<3KWCscX8>y&p#>pk0E z8qFf-RZG60cB-Jx%~Kjc9B1GEn(Y4$WI}>5DE>-$!?Lgo$I1XIjyLW87}96aZ=yn${B0AIm&756)=Q))d~L_DUi}s4!NC0W!m}0S z)%#^7spiX;`r0<)C-blGvqe{OX-g#MqK>Lfv;Z;4CHM#|B&y0BK(I2BZZW{us>#Td ziX9>WAS|NybDCYvg;(a_)GPu_Md|On4ZvxjpKeDn@y=-X4_8bSNbA}z#dRF<_w*a@ z0(+v6)yM-7RIe|#N&6vwK4OG~_MqcwT!Mn;YM>T&4ZT)6S~S9dJl<;E%=IcvWts+M`az&5yTm53d}f8R)E!!Gv&W za~AB$OWJ}d-4E+W^MZ;d+gqG^xJ{Mi_Dyy3FSiC)_%2t@TRdMJH*RZ}!aB}ZFdR2$ zf+UZY7lUys4eEn0Wou^Yj<$?0YUirmf^qzv@*j~i*Fl>nw~&xKx6P}<@*y?|;Mu|* z_hEM#z6uT-rJ2d)G0))4g>@I*cMcQ>picHLn?vhTG~XvNDLyj)3f7@{?^ z)nA;u#Y^u_<($sD_L3^Qa~Ov6l_4TlL=jA_P-#2GeC3fLzIpM4t>E#;AJ;p+U7f zqsj7b3%d636GvMHK0f>E!#X!RK$%Eu>m4q=mG|#pP|;23wkIqIAQNiS_vk+rcA6C@ zuAm0$M}rjhJpt&n0My(3T1oXEhFyJiI2r$ z_&gW^)(cx!+Vl&&xH!AMbkFa4Vgt)OI`^HMGj-A2Ye-1|p0xcpL%$USpI?~dbPs_6 zbe^KwP^v!T0JudUYQGq|G*q7BkiSB5M+|nD`qXyzSPn41z<%ffqAi5j^2+!<;#uvx z9YUS}fGtm&^Tj?qc-H}7!awjI5H=J9AUtLRU@D`)V=z1bBUXilz)!)G0JsVC|1Hvv z000ia9I4~~`;z~i`LE#rQyv&G?tcjY_`e7V0?)677ys{U7~>&a0D#B$TW=c;#k%;11)e|Asm8MW zuhP7(X`S7YMhLKetB>3M_J>=(K351}B#9k7Fv~mlr=<8JSmfsK)!(KT06cIR2*j}R z;bR&372pYb_3(o)5*^#6Ti^4HOb0+(CbAneQkS^&9nG|C$+>PDaHG4Nr3HZ8Q5S%a zA}?r=PT~x^=(OTyI?gTuTEwe(0Hon0q|+nf<(bH<(Y1R7RRkDRleYCrAhWlg5+j(c zd9HXy8k2T?H5~d2fTo*w0qwJ|FY3EO;@-GX)xvAoFxJ1=k_;-Z(F&%d9)ip+PYj=2 zInupL3f|oGo5kxr0bo8)Ysw&cM7L2^iI`pS1cDq3doMvylu^v0TBvg~^knJ`+dpW3 zJ@l8_#{r0VFZAd0VaCcLYzz@b>sA5F@2BcT>p_4O1Q#lTknzevKT9qHLjb`+K|OzZ zmPvMY=O;e)lY@I)UpWx%0j`I2tWt~Kr}<5 zY6i{lU68C@RO$h=cjliUH02(l#rCYIpBZ6L zEGF{0Bmn7q-l5kR>c+(xLMc|1fMgbgee>Y3e9N~#2!Jr}{tOKPVD(<&0Re!c7MKLW zdJ+hNLJOMqZ$QZTI?L1p>(PSOl0!Tj&+7mdf_gjA6@>M1`U+luxS;i3x?YdLdX;*D zWd7XsJ#R0_(}U*9L8Dv2^qx0p%Q8 z%Z4lL&s3ymb%f`^hzsP?prpXodtj)-(PYG@hpR~h0M!4Ng;gD+7$e3qiyu1#z@(nZ znyH>`Z7TrpF#vUjBjoY2%xrp6!BdEp5LTN0tHElj}9JWXC+E_kr z3g?Klw&>xq^>D<3-)77Lf8J2>F=$87vkm9@4%8bQeEv>0)`CkCqXf4&PmSHI)^|@R zWu~-VG6wyR^~woJb`Ss@`1AlvDv8H5mQ!)+b`ESJbw!Q%>KGLvKK;p6o5y|wWh#af zH?LdoUJlWmB7~-?XF#SO7EoAXDiq$xK8uByC6=3?!WQEF;k)XV>JswJ&xy1 z9XHRWRnsEDkgYHTx0%!K>}e*2TYN6hU51{Av z2)vz*c`Ck8rPp1{d&#B}O{-D(RN$yGr+J94w*`JK5F-FM06oTC4L>nfO5OZB90SBc zPVkrKPvXn@rKDq>(c7q*etTcjZUUM9#Ar7HoF>9g7T&{X`nZqTX)%+1;%+$RW_W;6 zj#14KgO#HeN2NG79}02RjMNn_<9BVG{{6nChl(@fi;YINtA=ZH)XzmV@zB5uJ2y{* zw5v$VC3GAu*&XKA^DN{HN{jBomx;?dY}=S(&M^S6nd;~prkTHupxCB8zJKicRJL{=Bv)<~N$F7gPf1x`x5jIDBpb55_&3Jwoud3r(BCDQc)9*dDnG|8DRuDxV6a=z!tK4$zk?ud=`UvJtK5!y|$E4TCOU0KzA4Scy5E5AfLumsB zxHYdS734l|nM!0!?gznq0#`XdXy2}*)fR@2eUGnBo90z1*fvJ*vl*dRyu$ywk3qZz znfqadzQCz+E>$N=a2zk%%2Sn~Lop9ckT2o109PIVHeQw2Q6H!YQ`9I0Fga8@IMUY* zhxoDn)+OfPTH;6U;X+>L>7a89Ug=zM?{@Zlwx#G_rvLQxRQvn^t8zXoR#F16h8Hkq0aj|+;(r`1@*e;=>rpZ(*j<^?&uZy(x z3{pK-;2u1ob4JggedDEs8l~jjg!T?lm;q~9)+uGe-=k2jGyqDu%=S%}QHDmvGBRhK z1bjLK?esbi>^3&+HTOK#hsvi+YLzIzlcPtJSLbKv3%m3d4NkcbWx~*t)#GF3(%B1N z+WMHo8`*%sHkAbl>8Z_p5AMPhJJR>#YOZmY%b1l5KH#>HN$;fzPP{1NHr=xvO6BN? z(23HXv6FKYQlWR4Rz#8y&5Kv97HF^vXG9MJEMFwxN1$==8@}xrF0L?}rV-@_mC$7C z^;P|AOeojCc3fUBQ*P z+sIz={ZY9nXqZTT4mb0SWq0WLa)DZbFNG8a6oQW8USDm|Vuu&b0lXm%cf_3j_7m8x z6C0&MkRl}bK782#FTM9)tClXZUbBvX`P^jBTHudCpTPo%9b^Gj79$etkDquG-s z%gt+{TH+2YTpHFw9lQkjQz@l+;TGsfR)oaqNl3kS9?0fw-Lu5OFZ(#XYHmuoL6g1n zT`!&${gc*7{db~%JWl^xNU)OP$1F{{&F;BqI>Uu!-oy!0Dub}B>)BU!rhfdUPWk5F zHTrsdg{by3Ckyo|_e)lY(;J5C?r!^vQ!n?MEyl;UQ(nGoC;y0>0g6T(`F`(-FeVYL z!&D8BXH!EuD5S*O$nUuGdLDGSo}!xnPS-N|71ciXZe9i9Ek!tEeNIuJ(ieL8yxMVwR*V7T$ZNAJFWw7 z4%&(%x%{zr<7z%Kca@tY4=7yl2CMPLO7ca)$yD}z-+I4N5Yo>Mc^xu^A+Z6xYc^DQ zK^)0(%}YS70tq&(SYW}8y&spbVVQr_cVcuJD zE%MrqmpI(U*7n&?BW2s_bi&hdit=Zvs5dF*%ju`=4f?Kov-l!K&$_8rhp^@#y6dKr zbi?yp9$!nLohm39!gtDJVdt(36>nbypT^(4OKMh>+9-&i@#C)02nM3~L#m`)v`~$B zb*W1gLt2IAU~<+)uN6};vd&Oew6DQ=*!V=5&$nnRXY!BC^5+%C83w-lME?#9#uVW| z-7);h=q9WJ=$T`oj-4%<-MXc0GQ7!IU-`E@1q*QT(+;SJLbq1p5*>NB5`70QHH&4t zVCPQ~`E?Lf$Cn@N4|ow;4&~BIYtq)K2VGj|M!1lF^Z(kf*X7#CztDfkS)V!oFdZ8v zTL1|dc^~!tv7d<%b4Tcu*&+Sd(zK1rXb4~H=1{eCwQMPGVr4Z|k^b^J;yE2gltiSM zorB+S=KgPe`44b)iLv3>u^`RnXHnkI4n#(*SVRW&fBg?aBraLzB~pO{GrHjkFxqS&|NM9^cD%WU*%{o2O*EaoEQd^Rs=@I9z z4>eO$?Nad-CXS0z)*sSh#&}JN|e(@|RoWy_!NxCBR3FaMdDytR*$T(aWqO6Do?@ZQK zPoLgWl=A~Q(!b8uU`$3SXj5e;gF=_A!_Z|W9R`?dJUVDN>tO!npvoH%HxDVb#jYmJ zXKY7`umlCfK;O&(>fC+Q@ALFp3J&V`AIvdvhI<+6E?b|EBZ4D2-ZgiQA73((!Eg?< zC)qz%i=Q%4q{}v8X{eXbAk&jFq0=U{(g)X#Y=3-@Q&lNubDf`f<$G#=bEjMqo$%9r z{H%a@V^-4Nea_F%>Is58vJo*ox4)^ntSes62o4~4|7;SG^Sor{mHI;-%J1_QwcC5f zw(!BkmFdnu<zYy*@sGvmTAT*#Rwj?naQ0N7hMJJv>#G1!y-lYeQ%M zFZ7Wm_YpPV7b_FBjRdp48q%Bwn(`Qm*T3}C29z3DH5Z+>j(gufyEXQbs*Q5fKEu%A zSMx8>JHHVASaJqc#KYwY;mfakY*74WhIdFt#oiwxHg>9FM8pKlNYTy5$enA-!*dOX zk45hkX+r{;ER}IVwqJCWMRRra5tN89tBA`O_u(LT5Mg32Wm4IHUHX7MwV=ZLMt!r2 z<7;jl8JvKC{J%Uk69&6+o2owuH3m<4Vw_}j0D%vFojjZi-~OdBSpO3$i}rS1L>a)* zNiqyv4?@Ou#3QNyNkqI({NQ=aq$XO|oGr~kR?uwUP%2NB^K#AVb*UQrHBH@$KHB4_ z<=Su|N-3eGlF<|&0?YZWrZhfB-Ga<@p`9o)n^fLe8_}2c=}##Mtfk{Fm8}b>GRa!s zf1mTN$rCqV6xZD1a|}JLxtN{XJR}<-TtLx1xA=>{?IP;Oan984*C9V!poe_y`$HH* ziQK094S2LDt=g-p@))q0T=nbN9ov1n9g!?0x3SQp$~iBKiEd=&%go`Ao>u>-OPGn# ztRxZXV+gq_Jwk*sDj2M0jSM9e;a?RM;lWf0_TRgHB^~`VSNp*y(}J{?e)@uo&Rd<~ zEdI;>$%twMZ{mFex~!VbO(HWz0fxtB$acp2{?9B6l=7q~A#N42&*op^=BA7n5yP-a zm@G%x_h|y{&AzUE9IpF7!m;o0q+OXNc*nY+h$*8N%b3ObyR2O&dA1&K*dMiilC@ss zm#sX`=AGb4Ax}{zgJlSGAe4`pB`CTBvZjU>G15NoHs-9Z$LG`@3+_D`i%}&Xu)?JO zbi*0sLfwDvnEGKasHA1+gdv}TQ@M)2{}>#5M1J!$Zc?h{A*ym(mO}*mX%tg0%ISt0 zX_xL6^9eNeI?Cef)3_+n`2#i{0T|F$tB_TnX%;!lT#%5?sp}8?>oh1nPhGA{F7_g5 z;Wc9F#wv(O!oSn8;rGPZKXBH9Y+I&MyY%{!@o7-C&t1goZ3Zej>eSmHL0!e$ggn-C zm&3c)S#sCsah6)*kPUP}S!%{mt&wJXDk5XmWk;?`r=f;7==ece@`dz2X*no|HlUY0 zQEeHRZXG=T4zv;6J5bd8m#JR{YX8k1*lR`B_|>w_9HzBlf{dMo`) zn);E2=rgiR0U8|a*2yK~>c|x_W~_B>*TXe%up~`15B-l#pB=IvA9ZU#Vk-HCsAX9u zN5Xa-hfVGS+I&iJRZ{{Hp<7~4QZiraX@2~}vX5_@@wv$kh1n4AgR98T*-+zAeBv;1 z3XUe2Qcw;{r0NVRcETfbpLeJ(WobuM9)dVC{(5>S0$-0vuC}k(?reVS1)U}QDN;~k zV3UT!?YgqbCn!>s#xe=b8HM_UFlcx#`R3TXsQb2i#Y*g=&dLMX@S*R_X-~K_Slw}& z4sx&GPd4#$jR;OyIu(4pchEO5xu{H^C*C*`xey8&+2^qjVh6~xT4EO&)kPX#~-AN zNj_9im)GT?{JQS~Q>Fbq$-o8Coy+;qf#h-mcA638CBwZ}#-s4BG-dT`YIsU=c@sdh zNn6ZT??Kz$-)?0jFLmm|5xenj(5ffew(sO_fFn5akj;q z^|0LNElWbI>B^6?H6DEP4rNvaeIyyqP{b8z0LM2%W~jxyt-!2$$wByzo??B+Z->9s zx$}aKv-9Uuu~x{APAlo1uf_-T3WhH_QQ^t!TIe~(Wng7W!4&KvMj;viJ8>iHHp_Ef zwoW{&t#6S_`S|nn+v{S-OI6DSe|!pjjF->h%T<|@(h|n2D@95#Y*tb<_x4RnOOPjt zc9Jat++!kD0J^PBbyANa{T!)C1}b{4><5b*8L(M1ZBPikP03-!hsZZNPN=H~EZB zPRgM%C=ncQJiux5A9)t%gjkDQ5J@BHCDxkm>tOX?64dFieb2+H=Gw?w|181$Rm9GK z?-&sfb}8Gugfn3QFqPx$-fwBZ%<^|$&0aCOHL)Qf@iNnz9)G5?CNoqR@;31~5P27@ z;&S8QuFmszCj&=AqrSbJFVk{?z2!*wGo*ui>`{zI%CzB8M4y)RIk9=lnNR|{GPtR+ zz4H(`Nfae|4lMWH%6~v3R#%BgxE4h4H%|Y7=YK!^FON+I9UrN&(Ea}cJ3z$0ZHp)t zFexA)&k!rH@2%W~*NXRHqo)dHCx0VmoF1$eJp{?ZRuSsJB>1Qot&hp`h11z;Lvy0{ zZ$!zO{XcYKbb8(kY{8*LBpvq?RE(ROtl5qM9fe5qi9o;;w7XjeH*sd@YFz!C`QR%0 zpA#N)Q}J-(z`bz<8Dl-xr19m>e)474DZ?kMvXI#wW%Um{lE9>mUqs*AjY^bkI}EE9 zjNCqd%=W566D@t@b)R|!&YH0Gkl&0m%dWT zA+;}cs0!dYXU`B2p~eX=9T0epw=QeBb9K`AQM=R8k!XZC*zW-=*szkgG{@BuxFA)H znB|IqY;nvNYL+6Y%oQk3rHW7lm6|RjkvT+dS4e0*tajXAzi8X0BAMNHe)$U{Lo-m= zQ~_#SU%VKw7lh3~7?I#0ayPSZAf}M1uR*kBgk?>GAW#b8wG-%AEkabXq)3$lR=pNZ zWfNV5$&s`&g1n?aU4;Z>Qw=0Q2S5Zwr-Z-(Uuy33Rj_EKV9d)XARabhM zN)ZdmEcF58MAKfmLX20LcLH>SEE=CJxSuhR3IdeXBt#@H1#-;7Ch-dvszEIw%W-yB z;dC&F0zgAFz#;(#W&=#uD0!#M{2o+vjxm@GDl%MkHkKm%mSxTk`iO5Yp6PtQ+V~%y z&;ue$gKu`@)v+7=aCQ8Y%#1~>WYS!yb=ML?>eDpY?`yc(5vkn91Bauro5g)KKY8z| zGV3q}3+@%cks=P6K?O!ZPZzo1#;LWV*bGJ+;W*#^*^u!}aB{OIS!dJCEkp@> z)h(>|+UjpZQ&?SY&3N5~le7B_2LI&||D^Ya@*Ar5T+c2Jray%_-UPN&m6HI73`Io| z1VJkbfDAx*1dLE|#-fLM+FUJmmoYk{xzXKYcz-Iws}sv81WC3_Lef+SfrImojV%oO zSvWmsW!icxy+q>Rl#GNp<{1;GJ;sf1yLg7oeIeL+aruXV&bN2LrpzVN@Hk%2ysxHc zU3@!ue!j+iy0hA&ik^wwoYEvw8T%zXbu`H{Av%Y^b!KpSqLXD2=e?TMgX|)GWYS@t zMMStWZkUM`QEMj`BG7MPj`1= z3}EIALl-a-bRkSpFcL6E5bgI%?-&ohje&(571T>s@(XHhFzsafS}Jp%sA8?}l)MZp z`uoniul4yk*~3<_{n%A(2EMfO+hhkMPr5@y8brc$FPS}L2RquSo57mHO|K7n^@oyP zW2gq&haSG;dLHn8rOS|maEU_fAzVh_mL1}Pu0W2znf?slL;U{ng@vXuDjf!okhpGg zVB)=zw43k>dK!&$DT+>;8)-7C!WD%Z1BGLUa2U1(JS5AYL%)5!R z@36N(T+d0gWbB2MGW@n}x5s={R#^*-^YAhi!GkD=A$p@7YQOIa31#fFbYRu)Ps0?aT-TZreL z-h4g|!@8|P+??<-Vc6eiFT|qM=+f*J@sxA;-=q)u!;Nq7B;rV2RK4+eybPfdtc0yJLApTsUAZ$wot6>G^rGW)M#uURx}{DnY4-YR zsdY`gydFbX*KElzW-~J>n+(bx>O4H4i)-V2%_8FtN!I15>g~UAR+<%gYOTh*Ryg}tLXPuK*q)^ zbvF%&Ko|pwjI=3J%IB)EY#A)g=9j)ZPCV|n6k;qgA}^%$M;bs>XyulLPv}RsEon(2 zhC>)2q(Fcvh0$@~8;H9s1lSlglE4MaKX}(n#v5Qk-yuoCwL9ky#i2+?Aa23C;`Q^l z4Lu-Vld}+9x6g4u?#$h8Y+V^zg&bLKG2Q^rxX~LMq z!OF8JrWYY8n{s(t6RIrHHCLl9qbIbiFDs*W5!*QA6i z*EceFChoq?SR#A9p107$gZn@*4+6Ho2e@I zl}S43D9Gy{O_!pu!zd&>H`iLRS0X6RJLkC@go?!2$O6edJ8Z$m`xuwBcsd{OaP+*FP zW7>Srz9X?;!I}><{PFrfLdv}s)WHjDf;(TsD<4scgsoI)YasimLM2H+RYDc*txaw| zz$!E)g0Bt?eTB>QkLr@-Jm!%#&cPI$};WKhc2t6nPR2?AYoDhncUbMIJbI~u4^6{aUOj>S$s znQDQCg*{e%o^t@~RfamqO0A(L^vT z6pRvCueH0aZA#_FvqWXjTV+OWe3*43rR_O(B?e+h1aY~5dR}23WNv8?wISjFb=a31 z+EmKc=&&u)%DGoyIy(*&#f>-i+ofxK_0gV{!OveX`UL=7j}C^M~F#F00x2o*HS(Zsn1!^*cRd4g11~ z3oPDXy&^P}+j-qOLWRd+zt?`qcvOA}_}lHJA+{kenduKcJ1Q6hoTVj`6bexz5#RgG zo|N!tm1)<#=>IFg1r(42wX`(B;G*NA<5SL0W`klI* zz@R`qsxh{p&{|(-R7iJ(1U-5~1R*(!p#vNO^kXiAn!tcj^}P_8w7Gj-RVC3^g} zZ_Ib^d;e6CcV*a@X(!9sN6BI5Gpvr`QauPP>;7blJQaTJ^WM%<6lLNMCd~;B=*<&F zpc;WOOvqH}NlSedHw;W^W-bdd>*#6-DN`n#;wU0XQdsU8If_C?Mgw%pBrYz|?o?hgHoH!cCOhVKZT^*;SwU zrU-*FD5jXw;w9OMfi{;C$8c;)u2%JRRTM?52Nd~K4|p=Sp) zI_rG<)s;rEo>O>Tqo|ca$Lfsc(5sQpS({qUh!rrSrWB5t%CC!qFMPbg8kZw-2-@)q zx!h9;dQPtcivXz|xT?O_kFwxZAwm}V-~b{5AOb!708lcm_A zG;A+L_d%s6)q`H$XaPbt0Q>wu>?=PhmTE(&!RBz5kcfu$Y%od8e*ufy{5v`uR(9jp z`?>JpomCTU5b>wqc5Gw9)bN5EYoH9WamGObNRy0-LI*XUnn={xvGFyg_ZfbTtu6Je z(UfDk-oKN?w=B-Bc)2^K=*aDIPgh;O5`tIaHu>&n) z-9CjMZBU-0AVlqyP=gR)+pFItb)sO*#JEKPNoO=Fjhp=*ns^WXT6#mg@~9-mRP{?F z3YKB6AW;THgsp0Z&P5g|6W&*CCkni|R1kq=G~0@BkN_Q|0~H!e7M2)k1p*5M015NU zG#rjXLp=2zrW!WossE70wqD6NAJJKsp3GF8_Regt6)O+h z6*R!pW?-VuHd$w^vdZ6%F^2aZyjM#PoY>dsoBYU^l8IiD3L-qo1rAe<2ja%IURP6$R8kxb4H>O99JH}9Jtx7HXXImiFHOEX3T2ZD)z-pbj5#+|7(LQ~Fa(DoAHmAObm;TC9ffn?OgZBW zt=;giH@T_I!g}p6aui(1xEKVT@4j_ZAu$*gV|FePaW+PsC+?6DrLe72&aWNPvEjYF zGY`BKbQ?+P+c5kNPiAinb+ccs7qqSwZgwQv?>ke{ z*wPnW>O15l`xwr*`z!;-6X6p}?&}#P5-^or5fL%971$D~l@ES7YwX(J+o{3MZ5e!~ zzuoo&{!BXC(s#e{EEE=sCRVEhfW{RtF<@gR?TFr$=5;#_T1Ara@%cInWb+qj?jeh` zGz6Rs- zcrB?ixi`^pwTz53Hw~ujb?dREN(^FPNM=w>%qS>`ltd8@VZ|_F1)__jB2@|oxV1{H ziS10EY0-U;;)vtb$%;AwKhI|GD7MnEA4 z%DY!|ISLA;WUBW_!#dbB>FMXF90 zG_`J5MY@;2fB3&&S!PW#Q|^h)4Mj7NI& zAlqt<;{*s~NeNQWd5s&JU2xvV$(?5?Y1p%DCFnFZ7EuAn$ta6N6HxCr&m0>cErw~; zs^JF(Jb%T)*gsPp`z;}}N$a)i|3~|kQSii8A&5h)ByrvJ$b3Zz`FQ_d!m)b;u4ZAn zj)Ig3;75~A1P2m+2A}q`*rAWD1vq$r3n{3C*N88ssXM$ zW2l&fQ>tx};Dr(mde#8*O^cR>I`D#p%~RG=jsbtcsGi<`f3y3Jc{NKi!?sr>3{cIx z7mj|aCIwF1tqBQdTeQkDjfjAM*(GNo+rA38fD-~4HU|=rw)}9=(1TWcN}3UH7kc~| zj@?yfrZ0HQL9;MQaPpenFv_j9DU4PM5Axh@>?wxDyC+<|5osXN6lC=ai^putvXZ9_ zc-4>7u2wq@mb)3^MSiby$aij6a|G^BKRq(RI;^deNl0}HXS~CfL^Mv+hUBd}c*Ub< z)2>&}S@vI|wH~~Syt?AJtQVEr>7$zHF@q0mTlx{&T$Tbfo;b ze_Q=c7z1AGFqZZ#$cr>`nTV~`A9+HfA~UE;Xp-d$l7=km@+g?gz1^wmgxHQC-HAuv z@o)K%)18qA%B>mdsVhOR&Zd(GTs{zRw=A#~0yfBFy_A4xYzt^7vYj%KCzqT8>VW% zs59by4NYB~=H)!=s_0E#_M83{{O!#RDakMt*_hA}?;9HkeZxT-iFla`e&#Ljh=f1v zYQBKnk)iKzG$E&J(rtYeA|t4waK!CM*f0-OnQs7g5ct1Gy=Z1)L-kB1={ejD_9r!2 z4TR+~r{6n=rqOqMHcm_QICd}TC!6BxV|>=}Xe=_y>Y>4PG;TOqZj+);ojJ@n$)%H! zVe!l@O>ec7G8sS&L=FKD?Uc+iB}-l3>{j*MLKT@2u*3LM=IwAcayUE-tee&c;Ouo6 zClx<24J_WFHdB4p*kr)(8M22V-tI2bH_SPkTRm1>r`oc0X~|~!hR4L;Yi=_)Y?0|` zcHK>rqDh-NH;=-*Xm8Npyci89F38_I51II$zSEv?D%)o69V6+T&wo zwqqvI2q19row($h2%r}N3`70dL2Y0wHKXft-1E3IVX^ zT*TzVn7~g2LSURMKxGC);7TS2FGqn04yB{Fm-{@dt(12KlJPq~CCD@y6Xb0P021RY zi+B`|?;l4#rjFFBMMkGN&LKIKUxtK;r&&TAz#sgb0#*zR*=z4U)6jKW9ba2pV0I}B zf6s%!VfGG<-I!-*{db7r zKYK*&iMVs4L+-15aN0(Ic(CL2g)*tN7Itw+Y&$|4^bQlyu7gx8iKQ*3V z19FDto=3!WJT5;U-5kLQcjDfv(j^@LwDBc!PX~E&7PL^yiV(+?mTCe(q3Kd9z(}Z z1vDJGZyCF1TFKZm)Ufc-;j_a{_jBiQHJRwS*VjDnEM2q-L(&{tT zr#TH*)ib0+X@=o}p`9C=c}5&2dS0Wy$62P&D4T?a!Uv{KZ&OHQhp5}TyuF4FGbfnb zUDGse@o|i7;&?c`B+&4>&IyBflby+-yF=7+X!1)ATMmT{XLyrz!*;;ovKlufp2KxR zLk`t75*oU`zeYseJsJj$y^L-i3TW)^s{=w#*R!Tc<+rz}WbP0-sSVbp<}!HJYcr%^ zY9`KFFdCS%qv|<$;kmMJwrt;UC~PxTH0oYcG_dM(r!L(r>UWfrQvQXHB*7Do* za>7q9a@~vl^!ltjbXdG?wm_DW8Ua@Jo-7?KP zoXFfGbR(4O+%8(&AYo%NWpXNtvjIy=)p>aKJOCP#Fog;}TL#<6Nz)hY^EdeI>Bv)i zb8KkqTEejFecej_8Ms6QAaa;V2Kf{0VU|MKM*fZ7686Kb2Vrl}^A40d-&W0>B z9AVPAMQtJ_aWR2xiW~&XEadso&#x-KKl1qYJnot>T(@`@6kjH@f6?zwM~1ptLwwtE z@7xzUssGOMS1G=lk^lsV26A-UhfxwVCG2X(}M4ykS%hXqZm;aQlIXMeMAJh z1B_!ILet{5HE}hnuw=(h6wzwG-{THko;GUrT#imir<5SX0zqIfzI4+x|b&d&%Lw6}KRLK5zZT*}Ihso1s9X1v7KH7m@ZQNM zw@d8vR~3P%%KNKCPf_b8?g7c?^-Y8rlY0b^!HHprRoff|JslDaa|Dx|@YnPM!6 zPAE|#f~Ss7;<}hfxj;os<8(ztNVGs8C`daq6@}Oat)}k5*|6rBu2dZJ%PDb|F-j$N zm|(>$x|A?6MR8>_#n9v!xN!%3%4c$6nUyOkZHS6oV8j$mC6_E}<18ZDQ5wdnWyr>9 zk(Jlckuk!=#$%OiqbjPbQrK23wv4To&`lR4$udtE(ISp1Mj{Js7A<7CQwfAbg1|MM z8~?`KVCsp!4YOCmb%W!D`+tWDH2@-Ma&oCqkh1IJ z?7q@_EKs8%HBPDaV%)&|TQRsGP1Gc;TgV<=Q|A@^r5nsyy;bZjZ5GA6$d>4d$ta*QjgJ%|V4=sd z(UbVg>&uJ{w=itv!E0u^@r(p1X#T?2hDd{=Rc0s%fy6(MrC?SSc%=#s#>ZV1HNS{8h`a6=CFhbyt`G|e}#a&qF^!J|!YxNz5b8CCA!PV^g{=4)UCwyo@>3Kh6 z_?_0rD~sIjgAPZNVNPL0WFjrt#7?0Juc22#OEtI>)T=*qkj7lF-6p~vM5oM)ao9bK zpJ95NAB$|kaIKadrAW_sZMo~gD7SCPT z&0FKH&j|{#`&7!1@Wx#T8#FoSi*+bM1|HJ2QNqfi0Vu-m6y_!v*+7^v$MO)a0uX@| znGpjUtqHn^F6a&OjDr#^F}2dJ_|joqkua4Zckq}ETuEi%2YYLo;jE?g#y^sI&2MqW z`nC=c0cCcvrixU$Gywl@p@NiLHcCC?lYBwq9W#g%DclNhUAr#BV9>tvBQnO(L#?9^ zw_1gUSeA0GB9y_jO|kU8w4gx3ARiA;_u;FN{~rw;5WJFsMw1i}Ad&Rz`Z<*g_9%5j zt{CmlMcUmyCX|P(<@Nlttm4!qS>U6XvKU37uBBwIDov)Ph@gQprh}^xxSaivP%GER zKFVT;>_xERCTbJ!q9qGjBB#m73j&FeLx^B&wL4PQn%h`Cuk-Jp`xHWJrr9=xQ=BUND)9g#i)*<%NZ0E_Hdf7<)jXNZgDLLIKhl7_yL; ziB(}=Z=gwS0tLFvP`5d_iIyqQHknKDH{(!o0Q#grdWWD3LnEEI7&Dsras)ENIfGqN zT3njevuxA(Opqg30j`_jz2Ru-%^ipw9E>y)qcO4VB7eW(>+HGUT}b7{i1_Ge($(Bg>vK z0dhCOPRa`r8^0<;knoWLe$A`iMXKNIpJq0DE>VMJmnp~S=4eezfXYK=?%CjOacX-P z`@FIg3d|u2lC*U5^#f&?2^a_yc*Fbjp7{|<16*6pQG6P2Ih(xof|r#lOjj|m(u_sT zhl5EY1A}V%8bG*ijhfI5VF2K{EKs>$Nzxa#M{k8S2@Q82^OFw4sJWo9;~3eLc-XG$ zjXetSfY`R3%#HJTKIUITuNAt*lx+$n%Ll1{TfjySiMoUU=)^X;@zgPe%?6kNID`c~ zN@Dj77^g`CpqB!dT`v_e*MyGB*Ef9A6kl-LJ>&` z5xX-V(GV$T2!X3NVd~5qLw!HWe``c4-qIt6+v72Xm#H6ci&<$-3d;i529X9fqdxCE zhRcMKMwErm-J_6t}m;E-`>&@!bB@e+K|<+lfRfDUOpJpn;2 zoXQX_*|26ys6bF)Y)MhdK>`7U91=?aDPwKPI%?NsqZ;KSO^zghTT_$nI=gg1NQFXl zipfDHfG%;kYQ5M@=-ZycdMYJeVotpaodY%k49Vh7>ikS-Ise^5GQ5nPC=O~a&=S-m zO7>F;jQ-DN_^qfyqD(TCC4e6$qy)9qB@#d+PG}3nOvFg4h_q`W6$5e-mBhI7;=nbM zbI1&29=jw~wd$H@reUe$Vi7yDNh)QyS7wsNvmQ zIu^6oV>%}&i4fL z^qro{I6h_-+z4r11hCQywo)ZRRN5_U2{B)_OSvo<(goz5E=vl z0h(B4+WVbsa-&VkJ1q8m>LHOtM%})|TuoMItKnO=tYR3B*Tubc1ygwHgkctn?LWGQ z%zKytb`v&MoSjO}V^M1~G2u|caHk6%fUZw_Ala8yZqCe09eVIZ=J8{lt>%1k=mlf_ zCMOijlwp({je8C**qAlx@!WjlpG|DOE`N>e{tPxA1fz=Y`fI*N4^t$}7~%=iF*+~WF;wOz*pb5%)yQnvqBHw!0cjt6+fRMQj8th)aM$FDP4yZMAFDq))F) zMgT6Ej@|W~_+s!`f?H-!s|J;f^ix4dXK>P@08*0zDniQC22lYRK@pZf9Ho>_)Y}|s z96!bTb@6T524f>j)Ldnf0`tRDk_&=KM6FfL*6ghljiFpFlwg zb3#mzJCMa&LADOg9H>^R{9bLW$f}a4yjiLno4u$S0rX^f+#z7YzTkefSL^LMK@G3C zMg&77!uc2o$DzC7w>Y)_Wq&%07V#yjK)~m)1BO9 ziNUo_i~6xJ#L&=Priweaxp2p3lvZxi?l)L4A;P6!_B{{#Ze3Sb(=d!uKkp*75}?LF zk0hpjIfz9UYbJ`slVB)~xXnG7ewohl)p_bJ_T}sJb!}0}y`^WoSq2}qHEXm{9KUYb zS)csxoJ{NU1wzO`kd!W;gkVd;MFb2eoS>lbW&HumxvXF&K_F-m1~72eb)er-`bK5d z@c+bqvT-sk`u=AR!|2l52|M4T7194tpX`(ZQ81J3H<5$e|2l>sh*Mbsr*^42&(wKf z715Ot=8#X}q0O{Ai`KK8ZSZPP^pZxIIsmlx1ket=P}WwE;IuISKxy5&jH1FoqX6Af zU-4W{aePvob9M@W&j%dk>Nut@4S5A2-R*S^;YNA$Q8(GX5#{>3N8T99&`=_5MYoW~ z6;Yqqk(@e}3$s$kTtg98;dkTP zknlXBfFHY8rIpC!^cPpCwfjwK_Auw;ITZj6I0_hr!4ME6;t&~!Uor$SE?)&T#lfJ| zstym=wqqb^5pZ+kSGl-GqosxBLi&bJ-!Ce(5A8E_FHQYUYH_?X6r%2APq=wn(kHE1&rOhQCOgrCwX)eo~w zss;`95HeL>_bCXbWVJA5mO|PkMte2NS)H1Wno6s2fT9Nt#2VvN99eEMrYaIZm=qN) zL0~8{Eg&mqY8~9Ca>lTuuJR8FFjJBYxTmbUKU;WG0haa)_PChI4rEJ(U(JBLs?Yq`vgmDMT@W)$1X zyYl&77Z149#V+cI%V(peszo9$6CMSWJvVIb;9vp|^!|3}>U!IDIw_)3TAD&-C0R5s zGEt%J6Z{(N&?7fZM~<1{Tg6UL}?P+GN^DFg$I>6`ZZDly(+1n6^$Y zcqeN74%j@m6j(%Erc#m4`ys>;@((E6r|&?(iF{U!@}`%Wz>==a{FonAvj^$mwx%p_ zH}5}-^7t9$|HJ!4&>Q1_0nEv;2kJ0`(~RsLNzZE%Qy=^jMW&q+2$M`)*s#w+qM|EO z5Fi2Huz{4m`@cnUI}0OPUlASll=&ZRq+75qZw_0I?RsB8_osI6BhfgafL>7(h#TXV zM*&s3^t4B*fVK;26uJ+iDSOx>{*zSrlCopSxlVx4&zv-aHhdV$62%Zpdy{JKS8|(n zA!9|NP;3;AQauZTUeP&b$P}PfkOJX`;^2G#APm9^z@f39t(UdhUNWVsV@yy^ zR#R;(3aaM`PE43Erbog~M%>YTYnUGcb6NtZQvSX{lL5bU1d6U8$DALaaqem3UCGkeo#f5H^Z5 z7+_~HlwjDkWIpHe-z>*j-)@ir9VNGrtLY=CDdjgJ@ zkR&XCg2fQ2BS;95fmglBw}BB`F1S7o1$JKMi>|WpZX`Gtihqe@6KTbvwPFdA!!nUv zLvKnbhJ`nrQZs_f$k3@v9fK#dL-jp-uq5VWW!%-VotHIe3-Kg$At)*!4{-eZxlSqc za}-s`vCbZUTPUv&<_-^pz35LR%Tb}Ei|9g$cXcA@Rt{5~ExyiGjn&6&_l3S|;I-Qh zpn8i%AdkMyATVviBJl0sp1lRP6)poTo_~bGdWCdU3mPZhB`Byu`GXT$**JFQtHlNxf(n)=s6Dla950yQuy2sXY-g{^G1w)s?KL?UzIpeitlvwWc(%YEMJ zs>1KEZEzKR4%>dr;r{j&LyrM~UoJNDDti*Miw|wC&q=p14QU4UTDv~X?EiPAeZ_DF zCY28IS$}M+z4-oaYVAHTgsUac+hx>pVN;fdyX&g=lA2!t5!>#(h5tXqiCEl;c;x{M zmX2jaik$fl1W`EX`ZefmPAirYrOOR-V<*u}|;(E(w<_llBG1ndL6iM5pDywmc z8-JrIi2u=;+^vUG4AGiN#pQggcJjuP91m0H8{HSZSICIcusG5C|nrpvDA=7!U*?YB?lQ`As570ehV$%#PoftN5WiW3_PPn)(bKn=2| zC=v~#i5WL1g4}J4Vu6(5R37eh>%v(~jb#opCesX%M39v2R%3q+rS{+Hbe^!6=9Dm% z(RkoIH5w6aZ3o`J3mZRYokdJ!u#PlYjIcHj`iI2u!~#MOWJMuFp5#ab zBU!K3E8-POU2znE(<+9YJX-i>AT6NVETbCXsCVCD(1zfMxcHmxK@v#-jgp0zZsax@ z#z+gA@Wr#eMq^OXX&5~eFcza$*Fm$};DD?a?Ay#i*bchXCRdBV#6b$KPhZqi$b)Dd z>?d->>46R()UZ>M6%}g5YY0@K_ZF(s`@?h|PKc=DgOlD#8Y=qh{Z3_bkG~|30wF!Se_MFv1xY?$Ch(LNXl%R+Lnm zOFhjC4okROxa-?`gLc7=w|TzkFL~~;FQ%8G(wJ!(FBHZEp#m0+g_zehbY;O82l)Om z2R`V-eK=r#ecwr7V}Jx#pg|X)qA~$fLm$3RCp7$|1aIx{r2s+~_=LEmKq)|61ek2owO1|dsliQKj*r~)aDov2gTaNIYIa>~ zYG1>E1Lj$2gTMSp=^YA@y6TP>HE_zC=JaC&XPdUTV*Z9@#rqIFoSd}fvztsLkT$J$Bt{vwNdn&Q0piCYk)oeE zSC-8Nf$O$WVC0fLq7U!NF%b}@$xs6U35-NERSerl2e60B9#P}xNuI^=8Giv^Lj-Fy!&s`P{}45e+3Kqnyy z=Jx}|DxLURFkgX^QOxZlT8$?@VX3e0r&V|JxobUp9H3d@v4+#qXfS#gN(y-TFRuz3 zY26-og+BJlZp6*+DfJSdCQsX#@!cveUjNI+Lm$jr?;!-(T7rbBR&^VEpu@*80UUol zIhAW{{axEW!VkXK6j;ZQ*I?K3e%{BPMVYFRhuk_wD!tKG-QE!`dgTohj?`#4#8d)V zJss#=1{2^d#IN)mNy?izTs3sUA1r`85-)W+Z3t!@Co~bgtAO##Y=(QhNY05tu;oI6 zDJ3YL`%yk+zI;M);-sP$7<-0QjNDDuf^=>@h_X?MTpl|N3_{a{g!2*Z%E9h#ckS=FOc@qNkG8ubSBRjt#Zzw6q8h5ZV)5<>HT~eXlzicbYiQ5 z+2hku*cp)Ub}k1_rj6184k8FlhRlrl*C|3GZ3YZs4D|Uii^0eyX&4fr#z|Eo%$2UH zZuWbBg_oUpnzkLAb*{s0`NpfXvf@c4IhLiHO+Y>PeezH@xQ9HUK!2UNXzLl-@~6!- zEoi!7aPThO+a1PoP7+;s)wvr-E*?eacQ9*8z_vt0teRntWD0<6T2q@6QpHL$oOBv8 zrH>JmWY5-*8rv;+yYHjmd#XY*4OrI)pXQZYs4B??x_efwDI8Jrsp(N;+H<%N)R=Cd z8@YhMsGLZkfDO|a`uv5&aF#BQx8ty@3Kxi>eD=F_bQ`q}Y1XxIlJ%~3nz?d^d?D_? zpVt0|$ZhM4+<^IJJ{&1MnU&X?LoqVgZJmM?Hgdt{wvlGj!GHF6p0lNK**rD3;X%RM zr~-P5`J7P=pFDZ_2QjAyA?R34J^s;lT9K7mrMnIn3HxHC?eZ4)Rp~;yGpjC8q_An)^1)Mzzv!q#9t?+BBdBzRr7qkVG|!|9InY1`7IBIyN7z{=5~QL%)m`_ZX| z1dx6r#h<&$=4h_us<&ns-^6{q;c@_yNj&=DABmc1FIh9UU?6@sC{x1UWfu~-%qr8k zXEr4N?N*P2AM>oGgMQ(499YL}2r3WZ0{{Kp8uWa}FGVcN4*fytjKg zBJ`mfj|PCg745Tt)Rh26&dG-ph*Ccukl~>@{TGPDgrF$C0|pF&gcVdb`2`KeMj^$~ zm^iRREuob*F_tMSV-X>2u(Ys77M45Iun~ic2WJ>eS)r2?MTN+qSjyCvg@B+fvXhR1 zVtP3S6OI*~gKtito-cUWi<85n7+z#~a2zd_g8?J*A#eSbmj|w%t z@?Lg9ASyBkpn~d_6oLRatPQqSg-a?y2w(75wZNX+xkl8D1Aq<)7DSyneClxCgD7NH zPNz?@P$*Jj>c#)$R*l!B)X?uYX%P`WMIR2t(zXxA~)5dYbem@1~m=B zo@mRp$@{M39W_G1Nu;Fgv>hZy+qxuNOuO6hgKSxvUEcjqF$Iyd(w?0AjX&g{a)_;D zc6LZ}de(H9IW3<$DwEO#g?ZJy^oLAOT=FYd}V!OZ!`^j4Qu^(P-giGxr!dFZf+*+`Zv*# zF$njQINConK_WstTmoPXU;qMQ%4{S5WDp7j4NT7w6^L!P4eIfs;wpY5l>Iap$!c%7LJHGcTZFyC@V#qEllQ)Ogx4qz33f2fo zUGs>T;DME(ac-rE5{-0X-`?e`TVLFJNAw9gUn1kLqAr}-^;7oEa^?M^zjlq1p!64v2!`18AWE@Ik}j04A@95) zmcd_JT^(}(J3z$0Az1@kSr1p9&f!jlVhEua>zCEj0hTxE3%uSU`%3$1rj=z+1QUc} zNjPtJYASs|N4sHv%74)x#2|1F*-1%7vl@Bgp?9opcX0(lU?>Xb=oZXgV zQJ5Zs#kPeqiIah7s3geny+tyP+KgG*bMn>eKj( zY`1i-UaUH^?6N|-s*7TTr7=f^Hz&F1LrBBM?EFN5hMC?P?q}a?O{R93-L^UY4_?NLo@-+?Yw7R%i3Vn0FwodA%}`VQQq^c>p@BY&JeBT zAM9I0F4GYP$f#=Jw8DCd2rxvtI6m5=jdWNL28@v$BxruYE^$i7iDr)9u1$UH!K;b}yRTiQ zyzNsfp*TAjnT+V)XmBHvcQR0kfLrCFZC3k-p=c8Z|8U9?Ma@ZGb5qbW+;`dH2fYir zzyauy{%$jo`Wm}WkMF)UcW1P>zZhMtv~6Xy6&v2w5G^a&;21bM~C^P}=bebVNjI5FrLF=*0`U8)&#a zNdq?~Lyx(w$VspV7fLL~J8D2^=E+BFOuw6bmm%DHqrr_4!8)`2%zMlK_m5)9yiD7c zTE(+E?miD@S~X>eqRIk^%Etf)=ipb~KilKgdNX?+YRVG|2t$Yf-z}`io4PN>AKw+o zKl$?o@wL(2A0!R$l;5phB@|su+U0)EC9pT`p8fjwyLFv@=Pn6%_83kk)A+fYt9A50 z4(Fa?d1JP;unXN=F$Zdqgd$)GfEmY$R)YcTV{BO@qxK0YEJoEgi%!g*6w4gOZZM~T zp0+deNmDlvo2;pfAG8r!&-$KCzQTmGJV#h~mgy*e5Vy z2;ateA97U%r0fbo3T{S$;A`m7Mezo0c?@L!o-P^!fAVHJQ29IcavgT<|eSAPwYK2*MELn&Sjv)L*}|FB>s1 z>^=9Z-O*&V>Q>x!Sq=tk^_1rHUkks zm5xB(Znkpk2bh|st%i1+rUgJc#!S#S`R{ORyBc*=?OgrTB#f!bvBXYscZ-PCzb$h( zBv!)aZIIyL-u+Kh<1sGv0gjt1{!Qp}GcLUwKij?pLTsPL*deTwy!MYxAbJNEoN$eK zBfBZ73TZo&N5XIu{+sO-JQR2m9z3T{rWbWFjZu_KVmM_*o&38NDM>P2@t%ahhmfiT zI;=uQfYu}+!cC3}RhtQzJ9?*2j zs~kSe%R(1F>)zId_?*1KyPkoVxt1fDMG`j|qZ-))MY90}X18=O$-pO0u3*^eG_mxW zM)$P%zAh~hn~^h`Lh06-hmDwoiXdeiDPB1g@w_ip|6iydmoZ|?*)D*2yUoWgK>5-I z3TNRUJ%Jv|9u2@f?ErJ!YbzJK9y!nhICbYYaN&g6s^S4T0`_l3i0cpsTJ_@qhI8{L zBMLUDU-p?u3it&lF!LnG!0vXEJ(#>g<!6 z`Npyy7gQ7kGN_)-d+Z%=|0TqtW$2;ByblWx>-%3(;smh>eV|wNnkpm=3WS-hwAT`1 zAR-{Q3x8U-1h&7LM;zd8fiOWaP4lFMDM{|#e9H_4u5N{$t&F*_c0(eF45tuIE#<=o z2QcH#3ku%kq2+m!p9oRS&kKZLT=8huc@W7PlA*yQyDAvY%2Rt5{9E&bQj6q@t5xOn|L=KKneluq&g-d6h!62E6Piv*wepwokC2~k9J=P6uDpt6 zWY>S8+0rBAXO9BjwpRWk6_HFZZR4Svlrp@EW*i`UBT>a#&8a|V@AGqBifmyjS)j*z z7$(Uomr>4(1}KpvpPOXO!W@PCvX)cUA%U7vOY!X>K79x?Qnn(MT6S3|5wF_F=+q*Np|EQWsZ01s26 z*8V-res@~_Tjz*Zvw=4)+@S=cNq|%&GFuq{E(<#1g^>HHV@nd$1FXW8ibX|v!ZkgM zX@w3>1VvJIBeJ4hFlRX+J*iwIkc6fhfP%0a)yb{jG6N#;{XNx%#WsfO81c`oJi44m zr{9q6sZ-SuXxMXL;3BzA+q$reRv%jmP!Jdp&LKi#su5agy2`0%GPFmQmR$ik zA-B{L!Wf6kf~^?q8zZ7ck9NWh9L<_6+`#vSsWAaDUtUL|@I$uISF>&H^)fXx&j&Be zQzjd$;o#Xrgv^m<2_Qg92qRb0L%=_nX=FZO643uVhq`>vzkbVYV@mDiW=wCsfnA&m z=p5|<_iTT@Q`OkbXMgV#X_GYwDihJ|w=*+r%j0)?0lxdELuH8dACmX%$-9Sr5T2r> zu^8b&48GQNg3gfCra5N|0#Ny+nmW3HhE0WSRnCBscw zN<@6K&UpaoK-ZDg>^(0#V_adnGPYW72sqS30d1|cV$32zItCCQ&QXm}32OdEF#Uy^ zS({7T(Q1`SF72y&xZ1O?5~@z`uoxq6g=V`|oGQIu%aU?DLYxQ+;MVPfS95o02biIO zhIQ~E<`ke*u#I?dYwv)8pyF(HbcQ^!{?kni>wts@?PSY=yQP4?sTQ60Uue(90vEOU zMV>GZWYq4MAJC9{N$iXi+GZ*d$SXZ1T~5}5(t42l$8c&=Dh>)As{$sxjNs}^IwTAy z1wip%FD>j2FEzTeHcRstEe`6rRaj**gwi9?!K2qsViss@26yOF&ZQF0WE9Zl_xENG zkw)ogd2~G$DVIwLN3`EX1Cqz1)^WU1^g0h@faD;Kr=siVK`{W7oc_D-925&maO_sM zR*PB;U;sMDGA70WXV@m`)8AcT88YAewC3LuvB7|!n0@J&GY*8J2G)q)%3wf(Iy+IE zdJfjccDPWO8Opk6Q02dra=e>q`{92(zQa6x)3C-A8Fjjq9<=(L zl&_X4ubg;DqhN?@9GZ}kF)zXJuz~Pp^;Bma(Olq}&>o*jqD25(VZQgsb8!PDppO8F zP!kZ_MNZa=TvA6YVI!#V*~h_ju|&K7;GVshNGj_*g}H|5fjuDM2rA) z0a+OYbKj$P9XKbR)JZF(X>6&}xkQGQH(3glf|lmjdj2j2K(8XI-W8DGf-aGb_Fcbp z+N=eDQ)ZL|$RLzt0Kx74j;kQu?_hk&)3Cf(H=Q!7$y)1-R$C_VL_u<86ZpETuVuEs+XI9C#|=I`>{D@-u*Q0R1AFTfhsT z)2s)op+c#F#9RTYU~Uw)Mi)ckpNPnxa^&&0cUroIt-HsQrYQp^!7p8)9~Y`Y$3tgH z+zbSPKyNvlLoX-&0$r3N!ra=otHSCQ%ucT4ME+_FR+(tw;_( zE*OSD`;1KiLF~@1t|>mZQ?g-LttbslJiZLM)p3_iI#ky8%NkReF`b}viDHY?A^`K$ zi}`N0_5~v_h?sUB2}&C}I?B^)KxnD8NP?5XnZ}S|1W{G(3SZmxpB{*sJ7^HlAWBgx<}`p zg_b27NdGUFPBm&u)b5)MRp!)mDPfUBn55COzU{10E#-+uH4T|ryv5IO8&F0t8zMpz z6J-&IBOSf0%qix?8kx2tDkB4vvgeJJH&yWfo&R&B3*YDm!vqWiA5D-Hsz zML!S(W0fV?qF52J%;h*Di{_!AgFgFev0~xFr$FTW&nLcpvCrC?Zr|!tNIKxs;$%6B zG_f#k(h?pTiGcHrA|l)HHyR987@Q}7M+Y{$0 z;C2{%dz2W8rBQ$yEUL_%7@8xLA`|R+E_+2T;x1Tpw{KWX)pQSlaPKrXG5Ffu(_2m} zr~@AdUJ&WtQy59o$eB?AL3v;v z5rV;*I$hn+$-Lw5bOUolGxoV#h9Kze05fobl3>t)5)QdzLqMS}+#vZ;z{wa1M6HqM z6a?w8n6(AqOaLK=JUD_L9ag54{xK~DghHfQn%jkX$J!|XFtiv`d( zLiat)=sYb5y5m>LdH4CEkXWbnX2f@Z+)&qJm(*CZqWJ;(&(4Z$%1qZa=X~}2oH%D| zrNtar^n7P!8ONuQ;tprC*q1UQBN)Z}Qx9&*9BpNm!nuxf9l%Q9*oHs9cS!#j@vGnO zclz|&-QCN7$Dr6Qf1dY6GN@+Sd-`~AxozI=KANhdYCM*ln}Qew86XUSYn>o5Q`P@h z#XD##`)|x1mZyO9Lhn08lsnkXy!`i8b&W=g zA_62O%cZay#V#!<))Bs+HvVPMVcd5noov96-%7{gt*;rtM?q8Q;vtSZLab_r?C3H3 zOxc|*8dhtTPj7FW>E1=xC{=$DYLO{Bb9g_NmoMF}&IY`9)uR>F*rr+>oCU-xrDv^P zcvHRWZo_|9SDf&{PhF+2ksu2c41ES@sLKgRHXYVPM2Mh8L}no{a?H#rBBCJ@NEH5x z_3r`TScDweb2g~gH7sx<;;T_e$pjc#jiO*H(J40vvtyJ@Q{Kldd!@&#Lf7x8M$4kB zqR+cGN6;~>&q}rT-88dA9yyu765$T%#Ak5@rl~+F`jzd@UI`Ed8%F1^ zbD9VN=Vj!5(3J8qaPw8tMbTl;f{9{MNa9e0)S5GPGzbN#wn3cf5N=ViNUhME5iqtF z7Kz4~C6kQ?aq3Bh;ndDJesQGhrCU@Wf>x!5a6FhSs$!+1a6vR61z;8-z1MHMI+lwe zOJlw70R}c>%fYuUY z8_O&<_kJ>PZf##SXN8`WB2Y^p-uSw%S(H1%%z$%sA=w4@^lNuf?Mc7GvsXsY{~7x| z1T(Z!IjCipIoWr0ayfIIsgaZXypzy{!UE$UND#Z0>%7#Cq;%Or6c!>we-Jp|vwq$} zI(ap#l6cuFu3%2}P~;Zp>c^_<6|lIwT;ZcfWO&7D#_%m7Cnaa6)%Zlje*^Ee$JHzGR@e9+OFBYR5-3ohD8Qku2504xKliho^)=uRuhIjIJ3RV zuZIgF&M~G4=ez(H&Z+1-X-JU9X!W6IR2ZUr(RrtZd?$0>EU33(+7-Q&2L+jLZU%W11PaOI<<)h>L4e z%H{r#b%EP2s;&h5EPkW0BZ1T!7!rj+_B}Eq@Dnt*v5)_?G-V1|SXooHs+1f=wHqqh zYNM;(M!MA6nq7<6TV|XNwaTO_6H^$yS#7Ro3B?9P6>f2aL~fyJW$&4%W^pqoHm!8q6a|yFn=rFN zvuSg*L_;}FN>$S%*IPj{L)B!O-CoH9JX>18?sb zAoX7!#xO;nEe`~Rda7*&N|wr3A7M}Z-o0NAxLY+qd?gD$ zmj=Rct-Lpv!_qK&jHKlOd4hu`{*FgEh*f458=Fd}Jezv^+xF%-d4Cb=nR(RY_?cTd z+ytJB%z9`E-CE&ql4dLm?ycV3@t)RS*lFow3@Lh`T@MEPtP4xfk$=N^i=O@$0q+NgWIVZIjfq{9I1FwR83XH- z-fdaD4uteJ-%gV@;%T=9%Ff~G*~{v0H|q?sfyZ_zJkSIcAdILen|3|j4ax~DWY}+# ziwVAkVpKUhxQ$Mi`|(xSLN_nFA0Z*x)Ce+_`E(0>6$sga@H+549ODvTkq%rA3gYg% zZfI}1{y1RWiSVMM4p*E67!1Naoqhlf03zsl9kr%(5$IAmFYP{9Jz85M}j>uoz zZ^LoXY+KhU!(#gxJyvI%cs%AQf4{|bY&}`&0H6XG3Tvgd!WDQ)T}!DeTEGAVKd=)R zhz`0MKiDYk)TAAlOu=B_g=Y#0L&{EOb7YLR?`$Zj6NQCOGynF6!zm&O<Ipun}zew@Ow&YEN0}LjA*!UBm7=fX0GsO_S(eU6Vp(ZJ$7#>Uyu#Wo4-x)_5|?a=fL({Z`g*&cuQdp41U}6Lz_J&MOlF%rk zh?fmXoGD?>D3qTjd6+);A9ut1GViE_n4J6`Qb4Rgfd(Mn+JOg$fLz(1E18HE06d3~ z@iaSV7+0-Pql5;b4c#uKi`0v-{}A<^!f%1Ki#?cjio9^bln3QrAq&zH9BowVPw=yq zg^lU8b-T!R7TjcCnK^;}>(H_b_F2&f!on&EPV<-VTD|jJ7$aRyi$Kh~L6<3IW|tsX zjg8d=+6OK=4RDb5RaTv4%jFvAb@n!{Oc~fmZh9sz`h)W+(NcsN>Z3?OIo0&*#bdTk zh-5*SX%1YS*6uJS1j4>BnYH~f!LbkWM{eeB^z(tyrV`s(>~$J@9&a+;=vOfBtr7_v z!U=eNG}s+*dZIY^aWhP>lgrYVp&w2p0E9?rP^s9t&^T`2FDRCK605-38){paxys2d zU2%G&Ug=BLQ}&p!p5R;Z{4}uTFBBfB$qoM=(S2^(upW=M@je4C*s3b*%+?(1x6U@R zdDsq}E^MirVCp->GuDNqh=GIvxj`ZTU;%~1geZs<1YOUw>yXqcdw=Ca0t{ny6hDAdLa00)arpwgMJarwZg$RU*yO(bR}Dj6S6y1#{N|60{=>M{ z%hbdo9#$42Q8AQndJYS%WiBxxY?LrHTXLcIhok-Km`B`DU?U(;;@Y0Pvumn}y^*g7 zYs#DKZK+&kgcSZO{?P4I!tdes2}4e_Xc#s^>)hshPKIJRZ9MZxw}9GvStz!(k3r;f z!+Y9v|FrN3l6rEWT##WJ@HX?o6c82UDwwkK+HAnE*soOp01h!R!84x+jx=!|*fI%) zr(11~AKu2X0Jl&SfyRe=Hee}yO2qRf3JhpuAHBL>=xBHnMgw|m!6`@xk}!&HCX8#R zV&-aJy$|Bxd&q+e_%S#f zuJrv6DrEIEcl087VTI%`HIXv}nt4S}`P6iJPUrmVVOwWsWVx*fZ3}q@34b=0q+Laf zz_#J@2ml~$yj=B)0MOI}u)m**!XNM=BVx{tT$w0IHzW=u)-(f6DvGg`=6_u^w0KmJ|4RxjWq z&^aw?+k@7mMG;6ys|5of<_Ky-&0469u12q|&B~6;UZiWX-S$`B+?|MLd@mxxg*$Dv zO1`iMw4h08mc}ivMDDdKwR8E@$uziXj%J|J zqqS#E39O?h1G9yrNgs&JUlZE$1s3P@u>M2C0V!6bWo!hXldx#Safl*;j?5KM2(SN& zW)zpQs@zcunX$J*(J=%@rVJ!hN`if>S*e!R4a=WFcAPpFbQj2{T=}< z)Hg?#{8fc11~n!W&bRP}UGS72YxG_kIm~DNXKQjRKwOL0z~b3ZtM}kII6WG8qL01n ztD>K$&VRJ)o6f;q8)sBQjIv<&n05BoW}LTc&<~^?lla}b%QbXl)Pb4zTo8Q@gZ7kA z6=?Qbvl#1FhqK{r8(XoC-<^+YZ(+?i5K0;!42-$uXzkcU3XXYFZ3H#iCWOuku6u@} zi0?EioJ9vVkmau0W>vEg8Il8iWNB13wdPQD+d+zQ{=_&K&vM47Eb=F``ostY*IlAP z>rsM20v5;Fgvb_VX8)Xrok$eTU4ViYVOY)`^%XzP^H_&9WU25*)%RR`y(~C(XfVYi zraU)R#G0nM#t^{wpUtoE_5A{^IgcEj{}5gz!l3&4{{?chXa4t5sZDYZZL~C^7|kI< zL#NHNS^9e;Iw_c9CPu1aOj9S6X6_i7C<`x#tlR*$fRV=0w6s?;p@XBe~ zO*0XJ6sTyjzb3fgQksJCrKx)w0_deKt|lENn%JgxmWJstA&V-x*>)Q4o2{al5iQcg zN=%h|O`Lb>kTF3t)1n_VCnCrwh#6v(M1AkHG-C13r#!iQgVfA zXyW(W``MEH_v|S4sLIr@5Q#5(99pcwnk=^7Bre*OIHQ-gvIA!>ACgkgeuVZdCR zI5JcTHM|OOc-wv_AGX=e;&{FUY2lXaUcR#T#g5 zyZ@isrrxQulDThPO5WGxFFz~ogaEq+ydY@-*7g*_I3#0-KD1o~vLN)^`OI99aj4MX z=Ui$W+ktD0jr!Zk>N)4t9X;EB^v8HN<;VTkGOj%=5han%6A)O20zWNpk=Wa;#H$97 z9ij74od+lf^bhj9nx~0YMI$hQ@;qz;8`f%T^Kt%3lJn?rxOD0_bYvuSbLqCte5@Dm zcUB%k<@{4Hz%qFflZKHCIU%uI&6=hbFSda`P~2q^pL5!L3BTN&S8D^YkQ4^5eWIlB zu4l4O>+DJ`0`m1uFlE-EU~dbN9*!R0jJz#>hv#_(CiG2l;N*jsx!y<!%c-`io6$tC9ylat?nTSZb3=9keH@os^fde1eRYDO| z18FHCkg76N-V_A>DG9y>2HbB9&Ft?za=NU$63W%;o#B^e5@<)d93IfFkjR zWuz_>0}B{no;lPeGe5G{rKs|qo|H_!D>_1hj9)jiO%^&%!wiH4iCPkXY$8d<02m7E zMd4j%94Qh7N_h9GhE|03|D*Hu3=k!wsqYX%X$U}}%t&Mx2CQL8#M#*r7#RfzVqzKu z5CL=akP1WB=>NO+4|b@J`>(&NY*Hre$14=qv(=TA@2h z=Zw2aj?UFczs%naiWL2o-2uIh9uD4)A6ui-G<*dASo)i&F)+J04T;VlPWj9`s!V-D zY-BRw#D+l*>{34MP(Skji9A8$-}-y{CQj(`^PhxuOtFq_)!gsD(F>rsL!MT&xMc;x zsuj_nU3Bf?^Ky5s`yWI5ZZT7_O0)345ls|l77D>Z5C#nQfU$TGpo%J=xKm!hvC5l= zsqwfQtNg{{vl}HoI}{~_aYh`WR1zKstJP^u z0jZAumMDRfh9+vjAKuFEs=XY%I0OKhfgOJjX5tEqlwb^Kk`_Uvvi=ox?Ej6V9#(GW zx}Fg3lvuVOl8qa-+aM`D$IG<{T9J+#5TulY5Lq!C?Zh&qpa}+RG{7^|m^q|@66921 z258Wwh=gXE7bl`(@f$TPn^s#fqk8{V&>S!Gt3xpcpYHEm2P7W0{=;$>AD$m08pMS{ zlt3rUEz-Jz1_L;v5nbcm)q4w|quh3)!%#fMA)whnu$2SVB~ zvnu+qe%ZmZU6U%o9I6>wfLAi#o1B#{DS zumk`>U`Ds6JMpPoWhGi1n+-;`bglo%=R=|EBeL0MT3Yi|K;lEzmUXBQNTdX-g7OTb z=XY9II{V+9S)f^%E?Ds{y&ia!U?C*Ar8q)V00V5eWq**n6PHBCJDr~!`!b@qk+C3% zDCcHEAEBJ_rN~(z8}02k`^V*CV8oehHz}lHO)iEmU?4%jW)Cm4_czytHuBI1^h{e- zt6u^02!PHTUgMQ(S-$gF;hoaOu$(`p>)8Y^2WV&7V#4L?hoiv-$7~WC70LnWUkxdg zW+}u4flvVW6BnAiqWy1GA;`G&MTC}FZEX1Y30N#b0nWUEj9n4~!a!L7c8Y|FT2V)T zoB3B(T)Om4d8*b_=((L<_E=Ht>f0JY-986Z2duS|c6HZF(9huc{stn_&~K~cF%}Nb z)bEk$lXgNdAr=_WIei9i^w>E9>>-_FOUo@H0u7fc6y!aZqv88s!5tbFgO1z~=hE%pa>cVXHO*#C z+@Y3cLM-k$^*sx}bBo6H%S{2 zMgppWRe4#jiqKc)fS{9cA*4hUk*maEJQ__2k>O)d71&fcQ}B5GGeJVA7YJ^qkq-Z6 z-2B_kSUCN2i~8kQsoyhg+`X_R;o*v*&U97+lx!`t)6R0NxigM!lHxihwN!EfNE%|? zB*m|DmE!KvZzhvac80}80!fhB7Eyp1gycw*lUicz9QOeECvv+~Qrc((MAC%m2`CV# zP(@J4(^hvMQVO37S|Mv@-^=cqOX=~Qv4R3O`-8RgsQR$|ZU@JQR_FpuAU6g97!09n z4t`a+Q<$j(2QXflV|WrA?Xo$&y}$r{oee=5fIyvXMUxKNndiJzn>$Y2rx-r(N*Apt z-)(a?({)8*C&G$?;GjqX0|O;oLY#O^0f}yt4>E1wvsSCskvryX>tqKU_-)hi^A+4!R+aDrr z2qzF(ucrh3*eH~vn zmReeA71HAP)zy!upUL~~)YOfL-4^~&{eIgkm0U|C}>zvXQk8Wvo9ainS>a_mD|D1^@>eWC(Ltm zUyk5~aHqagTH=q*YgwG51L^c zRahO52A-|4NnW!7F5#*rD@@H~wXWw#N|aE=7lW6jngobaQ`MT!anua=)4m@RXqXih zSlqnhNt6npvqBeIT31@BS4y@=U0kQ9EeE$yG>Qlt->`(FE@xY823ba;D7X$5V*=?B zAsbBrGE7N&Bm>h`VWCAq30x}igP0npsVKlip=2b`0rJ^lpCc^x*|3@&G}Ok2St=P1 z88S?j6-PL$U_}oIkwJvsEuZ-42${tqD1#Sg1eglV{Hev}K>(Gk&;b`HyBkJvhy;j{ zVUs%oVCWzkP&lo#IE7|F!Q^3Gjs_P(6fEYTfI$Lg=a_JCN`_*LEXJmd8IwW^8t#=c zDU$?b#5a3%%P%^^ON25s(imZYO2wLqh?58`h1s$gi7^abDnlo2g;#Hfrfs^}kQLna zc#>p9AdwA3C4<9cmTxzd#N(utRs*Wb17SCsY$ia-HCVPgDGezw8>2h{h>q1HDlC!P zq{v9K424TAgt38DAy^fu5g~J-fJkAf09hqTyh0d2h`@-#3IT-vMo3_JOarxKm`R%t z-DE0A8i-GF&lp#qbW>kWN7|z82#5sf>q7)(SowVErF(DZn5&^U8t}ziXhlX-95E=vv zK#80M2UH(MO&0>9OeA3jFj0+rC2^jK!h-<-NRbe?6d@$!_9`>WjNmZQ2H8zvHg$w- z=-y$=$7S)1ipQ+CZtTtZAyES15Q&4F28Xz4w@|YL_^Y(^=fpW(-uN(>^R zQ)u-36>X~lL6ss@d+K%bDP}thHoZOkMsumJv3J`-tV2nRW`rNGbN35w?dp0^rNUK}((V>5izpCP;NZgJHDjfI))KIEJ(5ca{ei%xN(p#6ve!*VyvDFL~1F zI`>t&-Fj{~XMCB38?^MBn~fft_!X+eL~0(-P8J#@}&;Z0DBMz~v{<&-yRA zZVPhC$MKpFqI8A9?1h(<>;_#If0Nhuj%PW5r_Q4tSn!mW21y>nuNB7{nL$}YfR;<_ zI{(eVg}o2xh(re&D( zv$61<1czHOm`-J-h$ob2m1PPa&x+xBu84j=>7&QxTs=_<*-nvAD;u*ZvJb-@uN~(< z*)LDqm8q;Z8N9|hk>FkV(`+O0eQ#;1at1M-vV~8CK*tvrL$qLab57OxxnJRPLjf91 zTv^mGH;8AibS3$%!46m$bms@=?t5QpwU8ygzOGLa)w^N+x`u3OXqa4BZA)+__I`AE z%`MMzs5V`N_?Mf<`M8h~qc^GI{@N_k$`R4&(2D3^1;B~$z$}Zz?_j5bU>!e$;zBT{ zz1g-@EeM?DopY#bQ$xtjD{Ls7&Lqgv+b$}W!LtOS0*6&uu#E;ywSp%&Nh=;xp zHRW>q=)1lUtI7WO$`!-iQ)AE~$I7|jOG^g_t7qr~9x)2wzJnI9pa2RtFQErj0<_1J zxz0ssD}BxNIqr9nGi=Wr)v7i|p_qTgAO*48kQ&FX5R%w|FoI6k%6#0#=9_k!;k{j9 z-(v5PO8>tsF2N#qQSa@QRPRo}YjdHYkAJ_q+S_si{>9jBI|FJEf+cZ-6FLxV*ReV? z9dS@W1$gei16Q-_c>Ui^?EGAm0V4$H`rT@7GU~8&Z(xRj&r%4GgeVpN%QSw|7h?ao z@0411Jjd^RI{{}kT@NeirJOCeV+*Cg$Ri>z8CzpAmzXk9hZ7~-_CMritZOsvEdGud zEZ|Zp3oM{OmPlMVyw|K#b%F_Ezzpz>@-#zd_u+Z{bYWgJX8Ju zg{qy~uc9v#s=B|EyIOQgQ0hL7E zHbew!BfQA!s;223KV8&jJ>UrWR<{oPJG!4jJ(QFHa!0tQBwFWHwXsStiO#t2p+deL znPB3$$}0%ED!k5|2nuBR;zD+0LN@4jIIUK5T}cR?AW7h%n0^a-99YH&aHhcm3MCjb z1jay+Z!#OXp&B;*3X!1V- zr3~PApE1NA$fA)YK!my0Iea~8n6TNSipqiKFK^KBIPVVQx$5fqUw2J=U^fQnAk1hJ zv`8^4t{_4kfP+Z{QOYbsMG7W`j~of>R1BZO%9gHH(A_hlB8-LNut6Eu~Tj z(ssc%)0TKhIqrdhsoN;Vssx$pGYp_eCR8X{QV|9z2@**+U{uhLjS(i@NY1H8MztB* z9mP;}Kt!^j;Q4M|?%UvYWgJ`qE|wu6(uDy)IcD`}efgeq66t{6-RMzzXoC@*r0`IL zG@g%<&y?NW5yFnOU9=w%&#^I}F9L7gUt8R*%#qfzqeq&9UFHhD7Umjvv+ig2Z?_nN zqrAJ;dOej`|JC4osZFyybLAQ`NIQ!?HK`@ZqssYy+wi$&6M;@@h1igB!|41%fhdz& zXw}*k|6l!ko@S}pXG1#@#@AS(YT3eXoP*fgQ9ootWeHLs!IC4sw5bNI_YrSe^&@~+#loGr&1r$B&O5Gk>Kg6b?# zeiw`j<@nW#Ds$_B!F_WiFR2VX&-h+3ujrZitX#KRK#5I=kZ6~Zg>$~X{gu%1C!iAP zJp7%U2q?YAL3Vi$pDDOs!iD6z1ynR|27%5XBO;GKru__;gT`9#59%h(guuG;3@r(U zjTMv^-s~SwhxS>_j6yn_<3?1B zom`47eSV*b`^jesjWAb7ne`+}HtDkE0xg2}i1C-(;Sf@gERwv+M5JmdfIk?6Lh8V& z+fgoS9=`i)Tp4WSkEpY{ZdZZEUn+P}Cs7kUCpmz(52K=F&1}L^w2hNj8fBirVx%v~X6SDc1YUZ)G9%h*KXq& z*krNo?Iv^q>B}>x5C{9bjo#h0UmgW4&<22sdbS*31;Vb}sbmsEPs)YGPjnFn}eXp zp3pq-D*a?ISdmf?=Abv)q#E7-ww;+X6eX->xPVRV*8Zjr%Dj)*RYHre#M%@0g5PZUK$f&*OD>bs|>046(RM!a+S^+LovUs~S|kvRgJ2Mtc~vU($S3JF}$) z5iJ__W%d5gv}eQ`MiyzXWFVYTlU{HDD?rr0fGkjn6XdPr=wax3n(=8@(qK-&^*!-R)*fY%U$4yI8PF)=Sv z4qUkpeH8d58l5tcly>ou4HN+~E?^jeK}G^635QLN5on@iRU(-gMnpL;7}`;+t8&pU z=L$PtE0C?WGA9J0WWYdGEcR_NqW=S)=G?&rgnO}?Ue{e~RI)BnlkR&;6{bA+&r#6! zBxh!}sY`KiTXUh}M-mDNX>Zp;NFpE&;4GpFAk7%Sy#qa@TQ3)4oP2U^^p^(}^>jT@ z!^_PMy^7wPK6MMQ1Y4y`6=A)lFsfPm^8qp&r3u5M0FVd-S%X~FNF|AyIdF~+`L*p; zePv+7>Myf>T-D_`joW*EJI|RxeT*-fVz)9dyWB$wtgMA(b_+Dnu9sj%YMG#^RXj<* zRsolBTwPXUR6L}en%h;AoyL3DxIb?77ZD{A9#$i!?n)VIdR7Trozt1(;CO&iWrr2i zRiRsqw0tiL~ zk{|@oS&6B7PE>OE_?lXEfq1^i0hS>m#V|yY0huB~6T2>tHwCcGq?|~~#OEV{ak%OTTr5UOB48nA z1%wF=Xz%Ru86<2uE&jA2ZZEcFKo$^N$6PbQ#p-cM*xuf;j=3UkF2p#9a&Zd6WFj$1 zz1~nUTAkxUY5DU;!O1crk!&EC|Bn2v-kQ1ir=iK~;fsan@fHNA1X^_G40kYM2m(>Lf+&D zVn}ooGz+v`I2#TnOkzkN7!uGR5t70T)KK6-rxz?)#}(0(sCYmLjqwOT7^A$K0O1g3 zX5oGFv;+iTU<-u_)e_Mu;_e`n90q_8pn}kaghiet7Zazx(%9ML>W(VQZgM~w96Kf^ z5ew&UBp9&=ONE`T_^~cmu-~B*zLAVXNFqrTNZ+?ZEh+k!I1jtc+xM@kx$b>?6T@?$ z9uLC*2e4SSZ|?>1$)ehEIqPut-pbUdK<=|8U$&Fi6=v@yI=Jf*Jeg7Mw?AS(~T>`!3yB?)o&W~u1MYX zUgKoY%a+RZ=-^Rg8wH^7gfb4Lr9lLeOo-0sovCXS_KkRsjO&wp)}1>s)mg%3U0zcdn%Zy*kcuT5ao-dDc00-<(S%Sx@3Xw5v*z*B8uE-bs{S+~K`4K}_6S zXJiDG_3XEwN_BXy@3HVFndj;^j_AM$i4Cdp3!p)*@pk`Tiy4LCZcz(P zPkl+0RZs!5+9+^a9RY|rWa_UHnE=0y($Q}H(@qA68_`QylF<|O`)d84R~Q7L_?X>v zkulP`jOrUgcZy3#&1VCP*%qF5geAu;^GXH?Ncj7}f7Gs_oVEjm9AZp})0dDccX`@hP)R=bl*LF%%lpTfvmhMj52K zs;r^;yRPIXX(SESt=zEV-!JW2eQ=4#4%5`^s0(S7Imh!4(WP01RQtpqicS(LzfDOh^M)&_=_s(V?i3t{L49zFI@vhJRl{Fuc%0 ztfT@)0fcJE7H&3MZq?LI`qbHmSqRg{g&Uko9I>t8p#(7~$HaRW#C^lIq`5F~w_-4$c(e*b6>&8l@AGEkKXbqT z>kd5$ttJ^G`Y%-qqgiY{1gw=HQKQ}}4k_9rxDhokDj?r6OrSB@Mu~e)@~L_nvTWBV zc1%{KK0$)S?_j3o#_grxL>wmadf&LRfX~|Gh@P>~y(_J*D5?$f1Ynjc@vdonZ67f)N0$$Q1|rcAqI}|z8BUiUqY)1a zcHLehsnl389>Mf=wLIzRNQ2`Cp_5d)9QIkJ?W@}z-w!s^#c#fUUgX)4rIU*=Y#0Jh zG=S7^kwbI57Ja%e%Z-zrNr2rWwF^NUvqGN$_TN69i(%2zmJ$RrdkFv{hTJD`P!N@2Smi4M zRSYJ|TW#kB!GKUF?^tJ~m(dP1u|n8rTJ`dB^=>%?6#(uW`Ro^DzZvbC6?gtReZ#78+s5_Z?Vg+*)v}w+ zMdJN$8V(OH(>ZUHHS|-m#WQ)mXA=`04SG&C2}HvdYd8?(rd!($P+)sJ48wvuZh9fy za-=nPqXu;VZ)b8t?ll%%svOb3hhG%KiL>t5fJ)5Z_)k1{%F|#;^Eq8)QDqB40#PEB z1UL3szh3!nmh37@nn(f`Q$Z(YYLFkIG@X&T!4l|`Hxdc-T?&~%fP(6N4byI_$Z3A3 zLj^xpB!C(S35Nb9s(NB9DWqCC{RZFR<)4k0E-;Q|pLsB$&OzStuG!~Yu^EX%8mSEu z%PfiReb;NaXwb+k*+QBDbt>$SdH;kcHsHA*B}R7RZVR%DEZztvbsZbkhW}+!#Ok@8 z4hG~55#QJ3$40H+iR@`#UXyx#_pIKMxvIA?Svo|v&S=CDSn`}foLP;+h_KiU%_fsV z?wS|HQqJjc{fUUjQD*O|zq(gm07m)45QZbiZlLHUMp`L}D1_R%eP@@C@XJ|dLn}Km zpqXYVvW9b*tzg}3Z;`sD3!4I_F9CR&#GeqS`)ZQN^2C_&40{CuP)R?dv*jv?CW8*h ziRY~2Dz;kJgt$wGbUhDQt3fesoW_!&DN8Bo2Omg8+Jl_+8PlLOBniDX4k{?o87U~? zee^>ugThgkOW{!*#J9oejRC-g=rKe6Q5{;K|40wo%|av{xDgDg7VK-SN|weua__c# z$h=?${d^|YXT{KPrvK{Y$+Frfadp5k2@o-rV*r%2AhDA|K)DzQ(K0e9$cQ08mSepu z3kn^>5{jN%7$&|)L5>0(-wRGOB8oz=uarY1==(6i^7+nEFbKp<=fV&n1P};C_&NJ- zGs1uHfPNAJZvDC#3?pNojE{K zt`}C#v#xLiV$lpV%N`shpu-V>6RpJ&NTN3a6?`fXsDppZNm!0Vi}u=T-6lZMBO{*miOTkOfb>Xdv;5#+Vn4G46^KNKh+I(7^VcV-C| z?(6G+E9B<0=Z>~*;l=z~?3o~-7W4uyH~=tK_U_h8zZ_8AVVkf?LjDM2Jr4cxuv8AiA2*GXPaGZ_V)9v<>>71^q z2hl3zwnW@BevjSzz-4wQb_7@Lc2Nyw)B_H!(}faAU0D17!D*-kW!nH`c>IMij#Zcy z0EDb18rY@rUl#(C-kcTzAu}`Zq5M6RhQE6;lRF-Mz&S2fhw%swLkwq3h95@;@-Lpc zy`5B>ydksX#X7avl`RNEA8TeG8FsHn;&y)PPK!j|g`0tVVH|_kPB7W>BbAww=}%1{mt}Tu0W$so@cOITFOwnfPyrDS)QU%^YbjR zEawvENHui!I|wd5r5-SZD~&A?l>lNc!iFU>NqEk161n;sJpxIZBam<7i{)*djw%2( z)GsV?Ib>|ULc2`%1MyQv^1Hr6&=0vfjSN(FmUZesmfxperA3gezdt+D4h*6pgBgYw zL@g048H1mh|9Dt2yFqussQNPnE%&m6LzmWl3X>R9CM&1?y-PQY>0Kp#9kT#)G$pWU z&UmfY)A$NnTA=WYNE%^Up=dJRErwlXJ4iZK61uhPFr{ZKxAOkmKbs7cwX?>{@OHMm z92pPocUJ@`uO3swD8oWF-R<}6&X#0&*}Ouy8^+TzLn$N%s4%;fN+7drovmh#Y;Hr- zOoq08fNmaUDO7734^8d&x_oS!pc34`pm~C;dMbo@jd_&5_sqrva-0=udXP(|%L7YG zVt9W%CI79N??N0rRqUEkHpMJ09gVi>9cjjZleTjNb=Ey?y%H1&G@WeJDX~HEAdmLk z+Y!__u?L=uXBULvH50W}yAvp&#sMKTH-!xw<2LO8(m^0uOxiz@Ia3aoc^eE*&7JQQT8@eLg2I{3#rv;F_gn6CAt)!CHhdV+#dx1do=o zQS*uh^VEr1%f^j0y;CRS@bs==3boLK#qMszX^Bbg>0So96Bx>5Lh*f^7`i658=5J{08eNb$kBnck;s7s8~_cfKyX`! z?uE$9LBsG51!<7ig@SPU+>h?+c6b=>VJvur@s-ocgyv8I?&||vi?7rI5Vxp8Gmh-b z<>bcqr!LkjR5MGTJZy+s5Q;%>1ui5fxCzFo@pK^OFKI+~ouB`1vb${Jo;RV_UNrZ2 zxQx40wtaem&|z^Y7K-|j)(!1Bs(4 zMK0xl|Es8REYN0!EYM-67bpJC#tfp+3%AP7-hLBtsQsMlYteij6S~BW0A^BLa1a3` z7b#{qf_+Dbml%5Hg&v%SiBa~U5gdd?_{UBIxbprF?A6CS>sNUBytgdkH|#om}mCZt4Uc2>?sk+&SGU_N|w**JQy+kea7+{IH;mkpuKqDtT-? zx*oNPfa6UyPl_pG4={eaN1pG6q3irldastfxiz(<1!$vKK-SM&(s^rBC-`&MKWSx~ zRiR=E08(KF1cD+(npW;cb!pF_tD~kFgdr3TpWbjFnCd@{gwRe2XsXA=&xG!llt{#r z`wpJjgyhvzvnvHQL~tCb`r!zHd^kjIPAN@q~|CFo`NH6R#xvGg+o4b zu7rg6iQIGjuHQ>1lC&>X9HiuPS)4*rm!sF{nA4@X&qc?@S5lF@Itd|4fUn46bEOS^ zEO#_eEkLY~XOh0`I}IIpM(h``!>rDc z>QFHcBKO;QZqCu;yN6V;izqr0V1pi2J0l{-Bo~4xLZTSO972rq`jpORod*sBJ0M~r z#E@hhEg+FB?){?dYjds&#?d_BJG&XfD0o>mH$Qc5oMLmsm!Ocupl8BpQWP$lrq_<{ z5f*L1$7oW74S^v;=a|p}x}o^#1U8Dq&1l)Hn3`b6B7f&r>xskPwpXmRp?%rC&v&7n zBYt%j)evbUFY(d89df&;1S%k25P*}8;!c^NR4ag?6*934U(C)=Mc{b zVn9zPBB8>_Fe8ag2w{MlJ>I70#eII6-+5lQZ0K!}7-N(TP9eBJTIyHIKv_^EXD@I% zuU^x$Dy%<2YGnuUqr)7o=cKP+bsRY+?{(7j{63#~rcHjr$vkVX)mrdbHwn9EkLL#ajHv4xn`Z9*IXp~!HikVIs8$Gf!Zps5GAbYrbGmei9nYd=Qj>?3 zDL~-mOJ%#TUn{Un_|D{4_Fa}Tnx+u63G~;^zJ_*dE{myYpA6hbN|ltm+(~u1G49Id z6T(=QFNcpd!q##DQ0E2?vwC=Uch(?c4Z3EKxAV7=(syMxK6Be~;*?soHXP&T^PiWx zTJ+$24tG*0yQn~R@_Ph1PEN8+aEM_kNoaY3|x?9i2A z4c@-$u{xH%=7_l{m3uMq5v@%5mx-a!8EFxL_Z7w=At>a;RTvbh%uRo2!GUf`F)|@k zLl{w76`2q?WC_i~2+4*d?;6OaNkwWYQ-R;~ScTQr$xow}Fd+@1Tr)ONrb0ZFqaZpa z04%MAGW9hghX51SjzqwO7&rw)mV+=kgd)?1BbII-bAw*zB}Pf%CA;yjHSGGorgfHdh*IntYvP z^@Oquju_41WfyRyj(Hx<=x*6i--=5E0bGCejB8KKY3L>P&k5!h-Fx!&nn)>(r0g4J z{2fxqQ|rIvN1+}AJTUTHosYO6LToEvTRYXV`?Wfo-G8l(+^Y|~LpB&D)C2#SdRA*D zxriTtj4hz0VH!=ykVZ+geWM&nY*-qBR4gWJb*bbq5DDap38q9aeO_?AWX4T2$OzD+ zr#W<_{hB6bc&X9ep=grUB~Blw`=t+G8)}?ABFG8AZ%UzTmC2;jskG-f$g!}9N?{`B zP~>iw%+zQ&+J+85tic#DgaRhC5GDenWb2&nTDK_4SL40I&26=Id^~;*9$uZcQ^YZr zBaFHBCXU>ThThdeHE;9`TgfZVT0i>QDX)foIHgO|(B2?66InknxFL<`&kJ9mgN z8e|De|7kbi8(xxkJFhhI>pK*!M{zqNp6mJ=nxC5)UhsHu%FwAw38Hi!(4M6J%ECdO z23P0bdk;Tm3H{v-V;;x?(SnK0oj3lg8fYmp_2HHbj-gj5HSes3g9mc5F~n zg=Zckw zHx*FPL#o~*?Shp-!LQ+3bDzD=-FHB;yE|e~mHMfbJ+W9MlCuZJxZ#^v3>UGh)#K5N%hRzvdfF}o zppKg~2O&-sQ@stFFVE+SV~(_VjE1gEQJAgkU<|l2C-=L&kK*6cJMN@hAvpn#8aQ{t zjNTJqpwc2O+AufRLjC)dm#t^c`m?QbzLGxZw}dsu7E48#^y52XQ}tBlc;AKRVzuq= zY(rH2ZkI*2!W_Bb(3Cf6a|$K^C{?rPsS4hlCM@ioyE0Ag|ACS&bd_Nn{i^S{us9)= zWyf05O~HaJM>dD=ySG_M-XKh3ggr{^0xUkKpG0;wkn27ER%Qo6R$bs3da6VbSzp}R zvY^AQpYGi>{p4;k?sdx-$qN8bg6{z!fj^;k8w*%2rbmNsLq)2?Iz}Rh-`fl$!Mi(J z+v+TeRf*KP74uEAt8-@ABt(maxx}+ou8*O;t*_1WeQmrVb?AD{77)Xqfv`Xj3BHxy zpFN=y7%alFNWLII+kjJ9dv?&72FX{>Db^3Xw44;@O2upm3gZ*fm`Xi~N-Uq;9zP#~ z;S;)^qU_?htt*YVcS;nkkk+GVEc(_Jld0iJkFe#t{zB(5{QXNupLMS(zPg%tdokdA zIvs-(TOoEO{CAE^Vhn072Ve>nHXkNhb{WGBjLlo)chKX1=;8jT|55rEx$3_k%=jpu z$kzLq>t@zLl@f4U8w$ARwodO1vmnZo24w^Gw~2;PT0W40ziBhyfz{fXCSc9XZ?tp9%~NocnKz#xG&9T%ceJ(k&lZ~N_; z6MTN(n|}I%*vnOpU`g7Xt`orm6b*yI1)VHVE2Up&Df^${nB}vWX?fj$8h1gC5D3qA zq<~?%T2?y`1g>M81)H2;7cb0YIEXNTx2tyTBd@mFUF=xCy}C=Wi(78%tOAj&!<|YB zXHUF=F+dZX+T|oQH;?Hzl&zMQafCx@5}d*bF=S9cd~tsNJz)!$iEaS_3y4$YSU%;= zg({98Cp`}SI80(Q5EDu-Am0s<7gEGXXEA^S#26@D)M^N#i}ehw8BrS)LjE@p<%|bA z!`ay65=Zs$lp*;WwHb>9#dai*L#nNrXG#iQh26B*a#8W~92Rs-VM6MD*^U~fC>(Pn zb4uk+Qu5tMH7;^Ah$kT~>Dmb0r#v`LfS%s$cWnsm9m*q$k0W9wwyr9)BR_=q%2zucQ?^&x0}=bWt3XGonIwO#0V*o(dp0GOlbnw{bnL> zJgr})Xi-dOhO;Mmg0%7!CC6JlO(fz6johzW%&)mrAzT`a$)$KfRbuMJ{I8r85C_oT zvv~Q9_UmEVwI>(D;A;PG7aiW;i{hJMI$rkn9#_EZ@(raJ0h-+VdqaLmL%ivE%5tUI zBp9JSN8~p1T06(x?Gmcfr6)eOR{HxxE|j>Og=#B=N_o8@_Gmfj{fkf4w$3@N5{atW z|EBVH;61seyi&=pPHIAOqKt@e7Hr}7QAd?<#FUmJ-q~yJn;Z2i>fswLc_9=tg&+fQ z2!xM`td^k%c~B%IG%{lVA0lb);PM?0rL*p{+{M3}=J~Jf`yGjYf|xHzc=IqYPG5@01umCgJ{ zv0D)9_{DbxRlYBvV)T1MW9$Y?=atX3V8VIK^#7#;V*R| zVfZxPc}a4>gD*iJa`CRVrLC=FpPRa0xIk*|Ea0tmWGrao){Q|=8^%H|yAk=rlzc}L z*u$KaCfSI*p{8)Um&jb%raj$Ha=BU0<>u7r!!+lzhaFBI@Zf|4PSxKs*^*yWX$0W) z$>+st=DlcXv+kurSuHU<@=E=+JdFiJl-x4F{ZV|nd)Kfg_sZpIbloZ!F%eCV+8*kP za#%=FR*i%@>!r-DO4S4)CT?vU{f}vT*ZtqzY!{5Uz|~AxMpMZ0PK8R91jQ5FK@yKA z@%rd#3YOx#9hMcS8|%8wz3-j-ey;si`TzI3%Kl#sXV3BbsiY>EK{h~vHk4p34Rj7J zVBGdzE{re)0^rRwRW^+1HH@1^g8&+2N#r-s+EaU}A)k4jgbztA1~KDfSL`RmV5&7E z=Rg#p42SA%sVpa8>Sa$sN^EKBU*5VFp>xbzDv-RdwN@Dl2{S#O3bwIff1@4__RJ%et=&n-zEBq0L~b~&Aa_}Ue^7=o2WhtlH+(Y*w@K}OF6QjO{ z)t9o`J{iftZWxa-KXnr9mkNp8x>%r5Z0p?6se%QU3}pq_k-WAjD-O?DjBvZ6$X-F%5v5z^nl}(cx&rA%s&+UBN6g@b{iBDdZatZ#f-%-e>+3?EZal zG^Hn-+={h{EI+K4Ayc2F(wk%ZFdw?;>3!TJK9L| zUyr)7SAQony1SEs3g>x##;o|df741GROTTg1UI0a=ar>Ms1oCJ6^Bf9dzH4sX(d=^ zwtSfvaO`ogXe&OB-5vg}@vb)MayVWsB3;y=Qz4W|Rre_@TzHjvx>NyGCcIo9gX(+qbehd zE|J^GD44@Mk1SCH%1d6?eY)GDIbqrKRSk_BGTth#79bTq*+R5MB@??R)wF&Z>8euK zTo-f{vs7myM5DiRall+-Rc7L+OY>vC>2>$-)S$5G=K;6*5NC?vn1u8s&;y$x9=Xzu z*5ew$R|!vr>+SDfKBsBuRz4fPL4|}ip;Ay2igO)g`ZY5t42MMPM{3|(jO)p@wwz-W$LZ(ibFWPtEH|7mu6t-c;feN z1z;65vf`ytowAn<$U&ztmvq$}?Ud;2QDo`lR{N=ujvF35aBw>COWB^sAA3O}o+Qk< z+s5)}hToNzkK~@Sy~Y=8N=k*}6exta1?;9M0UQD~h_H>NiUW&tjG8!sY&u$du0*){U0p8Z0FVh+rOF%-M;;NhrwEOT z&0()z!nW{X|LQZ|6oS%1^8i1%R^1Bdb##N>2&B<)L5IN2x1FCqpVqwnXedAo1VA5{ z$`aYHePc%8cc_~?d7AUZ>|NJb{+<{`@eG3qfQUdUiG(UfC~Rp_;MKa(ebW>)i)B<+ zoTeV)6;9kG2D`s+_1EF`_@j14#3a`&Bj>BiPoSnoC%;A73GIt01UY zf>K$qZxBGk527ljw+%i@`*+1=)<+j?u}lvasE|>T5y`_R%~)7W>HUN%-W4+lmgN)zpPIp=X7m`}W5Cp=MvhK46yG8v z5rNrE7z3rZj}iA|IuR7;l#m7z!@#Q@gJ+eds^I?KDcQjwN|)HxSryt>_r%t5`;&s= z6bS=~W&y384a5G4jP2jcW=Y!MN{-_aKFU3o50;Sbu%mmkEO)wvddgpTi7u-g{Ul{I*==PS;`1ojH3fK-4@_sROu+*D(+6D z8#pb#<#i(vTAsuQa9r21+R4n=N7TKLblTu)kXQumS2nhY?^o;B>vxq+dV#0c_P%wJTjHSaKG5JBw>jEC{g5N5gLII`8RMYXN%v)}V=fjl$1X4o{~25-rix zEg#ByO*T1cWzyEO_{(Eg=&MYNyOgclfyRs^a_K>lCm6s^gGMK&lp;~Q@=O2?YKp~T zeCO5WaqDdkcTdRe&zH|jd9sr>s& zVJ(c-xjtk`=vxmdijdxSjKL*{Lw$15<7vTiw^Pki><@|X`7-Nbx36G9Ym~6qq-NCg z^Ri4Etky+o#e=9FbmAsCU6%VRZJXb&e_LBOeVw|yOo8W)n+Em2%)z$r##-i^M|nOq z#3p8CCw-sS#5gP_4%n=!+l|3z59R8`WuR*82g6lrI<142#efv9P+(y2C=PDN3ZzkT zj^%#_D@Z$d*+)%gnKj0OnP)yHz0fk#)vk&bDXc&RXxFyrTC(9n18rxQ^gi{~Bd1}3 z5E$$iTuqX)wXh>2_OI@_6`Jgy2U~M}+jvB-X|K+PQvB|@70XQGk)r_n(ReZh7ns83 z4keVln~kV{BCR=}8^MD&EGBE`slUZI z$X5;$tG{y8(SXg~p_|TOSscIs) z9kjNtd@GhsSfjIztxU7!xuz3kobTWO>Z>F^+*oYyGB2s{6z4Ee9_HNpdzv9zg?8ofR-FwOBW3(OJ<20C zJ!xpk``2y#nl2T6hwd_K#=G1sCC!|r4h5ieysOF#CrPE%k_8@>9shhPWQ}8 zl#()##HE;%Q4d6mC}nM?T>(sg4q4L*BI&e(lK=GsoU$2lfFI$c2wnHze-KKVHj9ti@J+T1s z%S@~alqT1KLhb5ERyxX+(LhcM9nv8s?22ksrcI<<+<7S_=3|L|a9+)b%K#>9s2o-5fVNW*^x8;pGV`Tu< zrV&h1yHf84}gC0a5O6IZew;@0GS0aU60YNd$-#F|YxJ z1Prv(9VD}*si`N8^#9QV9gzl!eDfBwg-Ua8sG4vux^nopih9-U$;Y5{thP3YR@-yC z7senR_hb>w&@?JMZLD@a&k9pUGp@@n8Ib%vzKUh$7sgjPs$GrKEn(BBTy$J+(|l&p zUmHsvbjEFA`#n7zbI-QC>&7g0g@Xi#^cBAaHL}A5HY?Y4lE$Og3tedLEa=x)<1VZ| z1mXA2Sn@il$*?5Ca-S~bz{=(-RwgKyo3L2g{iT;Z!0q9FnQ?C>Ql_Fb&xEV5Ygs^r zw=ro__(%(xt>*aCFlY+1OHyQui#YT0xG&jcLjA>R%+INB&v~{2Xf1+sd|ubdKUTEg z{xL(s$s0+8ArUE0bfmO81ndbDpoijisC?A1IByVC-Un$a+alGneXUp7v@2zF)%14n z=Qitfg|-8C4^vx8;Iw))l$zod+EAqGH_MKM0;ImOKMtfKn$rsLm%DC!4WP8n02826 zoUM?mTs2AB*?qi7thF0_XxEr*gMdkM)vjUZG%Zj&; zwTA*hx!e5~-$Dwk$i7$}Dv~5JF_ud)L>0P&b87ADwlX={*(EoCmgk8a8HIORdF^`E zU@(?ZNdZj)^POe+tS>)nPeBwr>Lfo;K!GBXZQR0kc;h}?&8V{~PeM{{nXYQ_Z}*HJ zULO`T&aDAuXC8HIHT@rqi^8YT(W}Q;Xx9TbPVRq$xdize|MdF)`T~<7OGe!cfl8PP2pEZ0Oe>i=@0nRFb7ShzEGO zwW4&wIyWW6w#MY*bD$EUiF9;@m`t;x7M{N~qga4~H`QWA#uN6j)wr zH}oneAYZjU)z2oP(unOtOJ?NfDBN*b^f{7a^S z0I;u}>ag!?2NC&vGKLtVHuqV(l3%*$TBfEODJd0Y4<~mP1{AO&qh;bTd5fe{aI@II zLPgTqHVVrk)QAijZ#O3cTy{^xJ%ga7eg*C;Y6EDmb0w4siq@(zPR5fVNi z2O-3V18``E=2D_$hciK9A<#D1&9-!HZeGebZ|ru>g6waFpLI6WfYhNA0hC~k1`u1> zmgJyBEUli2<#WKc^!=}9z$*T|XzyLUMn6YG&wqqcp9G10)GSX2Zo&2=OEv)>3Wwiy zS=)EZZtJg(zvO)AbHU}|m%#sKIjHD2vnRCLcwF7SI zP_~{eCLnRftc0EKGCB#<6YYwyjUrJ9n$y{nhhI{}??=$gyFE$dyC)ixEkr{c&ILju z80=2_4-NJhF+ZwDVX-^;9Lhc?l`XN?Zvzs(TV?xWw@;-u<#L{3tYetL;Y?fw=NYD3 zHEnf{li0IfRpwpQnN6q4W7&5+UeA|`OI`oaY{a3w_@Ge5!h;)#vwfv@?lTMvQD8Wf zHBl^wsl(%U$tn3Ci`qNoelNTH?whc^o^m&BYDW4sG z&TjppSs|!K9$8i{E?_WMyJj57bFyHhiY5vJn{H*D&P346%V_+JX7DlxGI-(RsVnHBQ&36}%ga{n1RxcQ1f7faV>2xiB{K&neEks%LX4d8nSr4O z0AvJm2%raFIN%)R^zm)jjU2Pp-1!`*hG#a~I1c>fZ5tvulF2zP2rkYFa7tq3th_Sv zw0q}fu`tdRA%i95@J^3Z?>q48OueG+P9cwAHDAAErOezNyt`WMc~!qbuG{w>r4> zZhHKSRpQL0Rzm_Zh!*DzmW*{qyD1ClKv5{?tmJLfO3-!&34@j-u~1CpISxjCR(tE! zdg{{}oKIuzFV!$Qb9j|Bi3m+BOftwfppm;>(%NBOpQBk@a!!OztsMFL%eyb>EnRQ& zs(G3cb$O+tLX2Vo!{4Zg_}C56?A5Z=RZ064wRdA@GdQ;c2kgiBzCCv=pv!rr`zGbs zA_xE&B%o}TCL9tvEnZJsE7ElAKj%LG{&6tr0sWq$5bf}IZFM>;sah4sUZu7(y>Q~r zMHS$`-J;ZT^-YK}igiY;?4ISPVz(oOyydFiC@wRLEE6cq6EaVG-j=s7@HJ!r1g0Vd zrXh5Yk0}${J<0_Zs308CdJ~-O>6-tjgKs}d8FgT!5Uz&1kJ(4bAn}5XcC0GlIRcIlF6Y{gg9~G^h{#=xCDQ1t zfEm+~kGOBN@)Rk_fN_Sn2=zzjn4$&{-&zV)r>8mqb{r^1p)xk>R<1?w2fl0#;va$e z3w9CR4Gau7p^+k)8d$WH9F66MGKlO9$|R0bP${2vD`#wgy#mlE+5raz=TnU;dtU?h z4x2Wl%{obR<8H=PTJeE&9 z?JKi;>ht-0*xptZn?AKWmY<0=M9-D}+1~tFpFgoMLTgfO`HTf1i)yGavC_i*i$;-o z!S1VW0&8MtONP8K4xu5$!T|`BNC3G8x*x884Aqb-mHAM&d%vfw>Cp$1jsuh%ctCT) z35F;Y!R5_Nn2p_^)i*ANTC(HlqlUD4#k*=kHAG{ciF@w}Sb?l5X-5X!bKJvcC8GJi zC)$r$NL#2X?QYf;fC6t`Q0p-gW{iw#~;U6rS})2*VEjUoxK zF!_8_h+0{C<7+?TEfl1I+b4fCQ z_OuJsav+1}%2>ohi)VvNExFzK%C4S9TM;!8h{Nzi5Z%mFy;)wO)}?`rMvq>JL3;rJ zRg(g)qlIIKFrB*1)rIQs_fMo=Lu@qA5Bu*)a6&{_JnXlA2ifDDqN&92bmC<4Q>Ab` z*L>j@i1Rm;;rRWE1Blv&68<#7Q)@u$G9h0%TK#ryM3=AqFuxlbE zb(OFTNHeN*7Yu!Q5RrsPs`7I(0wS^{rIm8ll@c5yd}cjoV~xP{d;D_8|I4^_eHqGi z$T(m#;uX9X=kTMRWMvg|s(FNJ8_a*<>`MyS=w~63=vWXo6 zzE;Y4j%!t~L+$A-Vo($BSoshm$*B3ZrzkK>J=Jc+ohgYC>=q*mS=5*V2O=Yv z?C;F5STP(3dDLIGOsd%Cp7J5K`ph~Sj7Sw2H+@}-)X>7FeGk^xnPmp0h396jfPtYX zI6c3AfeepGf)p&>eOI<0O1MOY5O<*$Tacx8Oqgpp2Z5s#I4)5#1>8XrZ1i@6I`+{H z++Mcq_c|Em^az?rB%;WZG2=?K(IBXDC6VO^XRh=%|9pPZN+__xvjQ3~N!=LZ2nW{= zKx#d}gw#O+Nq5x<2BGiOC~^r1fdds#<8f#L&cKyw>LlOKgP{I}%9y{|>HZ~I?0RT} zFy#AD?Zo!pr~`?D=opn$c96$}dfOYz2jwuxtdOCPDZ*5N0zP+vlO4tib6t)#uCdep zIJ=a}v-}cY;o0mdaIt+qmG7VlYo)HJ9;#Fn(=xaCcR5bXfOH#t(Bu}=ck-$8C8o)Y zg(E__l&?N<5FjAbu>u?w(S0zrj0xFo@~%Sh7NiE5>WpD~b-}sto z`R^;uN~E+H39ydy(c+bO01n0hh(qVCG^bB zHI`%zZz-UMrOV3&82eu+-479s@7d{nwMx#E3wQ4+k=FJRI`w9s@XRLrqb)4Pb7G z(mhqADcJTG8E1@Qn8iIK44hKA<2C`7S~F=FlS5e{QfMnRmC=#ACo1cZq9F9(v{hi- zIu~=zx`VO;qUb=dkdQ$q0_VF|GRn5D!!3G7L;5;}w7QP6+d13UruKh=sCet})jgXI z1VaQ+q^6Nkg={d6JLMp=14>kx?svWWx~`_Kbpg}+AE#;(@CwzW3Mj!c5cPbX<)U)T z1|kuI|83#X7pjD4;wwK(ey-6&5e{)w#GxU?s48F$e=OPs7Tt*S+Vs9ZH^;ug9DU}C zO9diC2oQ-PHKhVXugEvjIFSnl83X{@nkt9Ksh2f19<63N$|=0cILh>0(y#X*QXuJ- zHpW7?Gof`3ZAAqm{Q-yYW# zSyY-3#MmG1TtHo9pupsoyyWmn^@hzBTSj{|#&Mv8LvogDP1`Fuq1exzuF1afED%E| z2%w-RV;)r)QJ3`AwxewpUhk-7@P+HD8Wh(MPULID3vk)dDS?QHF0P5G(wiG*tCK8N zG9ml7(B>K(owR(EN>a!s`8e`|hr zND&rz^&*jkHjM$Fk$y08KoA#90@KpN!Z$7&<-o|tgO}3Quh7+IYz0wqvglL@K(Fac zhtM0cS^Dl?{WY7=s=lvP8pomBeoM{X4Y>G)OnKO?>AROFllZ(=<*GFJjbg6)hYCcn z+%K@vX&=^7aE>e&Upq2W)9XOj@F|?fZL{n_^ORQJmuCFcQHlpKi7;U-kN5^7Olikt z6uS4Eh#53f!*(F5Br#7^p@9LOE$YdEIJdLn1q=e*g0dxC8_3p!_Hz(O4ALwK=pfnR zw2Iix<`ialFHoem$2AP-F#QBb=0wAMAQB6Tu>lzln2&oOUd!=5a9iZ7G?NlSubf(+=ecD^DKUoRC2tpni8dy0;&dvz znZ*|mUsRU+$d;!+<6~N1OY$p7kqHEGJhBK}!;rv{hZYOK;Refu+6K@tz#xUh!Ovf4C_$c=`p6sPgg86 zVUX5E$TLeZb8(_DmC;sA+-173n8-tOpLf4B8s%@n++UR#hw9&B@_fT1>GC;YeAu}% z^{nN~E%_tag6}<>o_+ATQ_5p$mD4XLlXd{x;53%?&kFy$FZ0D6>eeW&0=I;6jT! zt(8$-*JH55Mv}cQ(w3y_NsAk#X6$HZe+$(wdRq{H>0m&Dbu<;YR4JQ`O)GhpiN9^z z9$T?e_w|0aBWIDbou{iNmjuO!X`g21wA&ZGVBVVl`8x^7OB9qV2w{fty?~TJM1m(0 zR5h&57z7y>2T5@lj9KtaAo#Hg<1@u21Yyq+$Fi%FHJSJi=QHr)a^{}~TYhyGci35v zbAjx-gl+vUf$+*Sh&(e(DBZ`IJZb|AkBiq=j>XG6dtxW`sB95rF$u@7^EqV~T|W7!12EMZ^ivaeo=v z?A1a5P8n$kQc!X$xXl0|6A&atL_&!|u8*|E`k!Nn&XsP#OPk?8ekS;g=rLxdNZwB3 zd+EL>2|=du4$CN@NnHg1lb`w)LxIQ9^M9m>xLC;^=hu3g1~ zw759B=2VMRo3Csmapi!EtEST9QU{Vo`v)zk{TaMLFg)dT$2wlFZ_038NlqjXlg29< zf<=pl$Lvt54oqG$MbvGwf~*?#YS{r|kznDvNMl8?H5CSUp=AY(dJ>bN{sggc_StWL zt0NcLysDQ!YCCWoGX*MOga;mqc12rY=(!0n+CnqHau98Z;AcNVd>K^IXkrC4WBHzX_UM`f||y1TOs^ZMcuaf8fr8!VegR7N!Og18lOX zY5+eJ!VF+IHGi|D$qTCt_AhUrd!}hg9AD{XF&C-T!GlufeiC&MTd6MUdi%pMA=89p*EfkFYf z%FAWfN#r5q*+CG=;Ncm%P>vr7gcic3ZzWFZUv0a7)h%A=jHbJ>3O%ljp!{7Q;@=tX zicaWQ(LjFMd9)TCO{qIyl=_g+0D23C-pnTiU1{En%AlepBb7xQs#H^3pj zE%d#=?l2r80W|i9a*&!xL@EyX72!MQU!ryE`H6Bt(haOob_bbEdJiMH>)UtH@hWYh z%u;+!qLV(()(tm0(Sn37-BI*Hp;&=s(-2vub2wnsGE`Yi2Ci-*o7B!^yI8juy_S@M zz-2cz@+iQmqJ z>$&9k_>`N3fjTl{IJ-c2?i0XpFedqAA_<4OLO_b#DqrTH%?K2PRu9FTjk$mV zrfeV>4;ufS{v1~RuM$^DV3WhK&=`M~X0MvwHjCdzUf_e2&3Ft?V;>KdVwKBWU|;M; z;%HtlG~uVnTPRj1L4bP?;ng0O3g`OEcKM9Vk!(WdDP58WOI2H#sf13QW`VAUT>yQv zJ_?pAkQL3kA9E!$Nax~A@li(*C3hX5?X>?r+3eH7IQxmI9gRwR2B#EO_WE_$>M}8~ zq$vqeGa!XW00SJ9G_YQxYBz+~D82JIqiUqY6A74?D1i#gR>470{=Q-_h1 z5v*#31OB9lgzm_Xz4+~s=9qFU%YpgTe~pk!SOeuy+I5XK14{OTbf<=G9Wo?MC>vEC zg;@}cNU*Wl7a$NI^(CC;8cN}*j`&i(^MNN4(nbs21%mzxvfb1z7Xd+(>B~yk|F7er z+*0N|&@RGVmp}f^QbT3@esuo7rz3Izz$8xU_Y}fZ8V43EN$JTMok)N@`{4HZ9fu~H zXSL3WiUw{zB0sX|hY_XIP&+C|UsqWQ18XAefyc-BORYf>@;jCeJ5Yd)HyFLf71^0}$BLW36C& z*~_LhF#&)q=%b+b9S2D{bv5!S>X-cATBlsY&**7o=V)fmG)gf^bHpQbgbHzF-l8O6 zBt<2RHe>)XnF7QC;IWCN7CKB2=%%9Qsp0pl^5@AdIrLK_2naJ>;&mI(H<6qj0cDR! zitbv+2YZeTm1gx*#LwlXq)BAH@0WAvuN{anK#9!aO^tbFmxtE z4iOIcK!gO;?MqWW@lV-pV)vc|EC+S61wdmNDzk4Jj{IN7!g$mqVU$C~2y{EeH^Hg2 zwO21T)XObOuey!SlW7YlnBi^<=PXuOkl>2}m@<(%Uqimxw}A+yxIPczN3?+1HV7ub z@nKa4E5rcPDfRdC~G8fg(f5dMts|+y|w7LzvLNi;x(6c z6?=rK186=le{cQKOY@flZaiBP!hNZruV<+m)Y)-n%7KV>`!0O`}0|MwIua>*PCwn$t%pyt0hYUV?>U61hInYpPXHu zFbb_%i(8<%A&R(YJfh0alw}bKL>N5)w?cyzk^ionTQ;h*Fw;%efQGwyo9yPx%DF%g z%On`DutqTD7z9Q}*o{J~ z;%VK(;=y$>aGk%g>46@q?gz2CDo(#=fr$PDo##MhyboxHWf>nW%aZf3xY-HL z`-Xk@rnw0ufQ$$o*rmHaWNkWiXPDCG>GZPNZ)DY*n~1hd z>bpqV%H&g}S%Uy+blcSmFsNg;`VR@hYQn*(C9HRLhXzk zMRMd>aSK=E#-!wfRVo(}g(rky7^#y}VGU+s4OBV}icFXzuIH(8UbCUu!IaRKYLyn_ z!oU|RCg-c!#!T;ftJ$#MY<=D)zh!k(X{J12mCC4zoSO410=7$>!ae*?9E4 z!9A-l8%pt-^9(5B=IE5D+1YE>LC? z0b`AmC}ouOjj~LPPH&8C;2|q<_!+ zYtevj7qr9H&KN_4(Oxy}$hJ8Per>p>f>IZ4^Lf|vA)fqnl=O6#dTM?pnNI?&Mym_B zK`5-LEV)){2s-2LX+RYeh$~vn5a&i1X}O)N&5U~+SvPooe}{d6Z#>h>_nDtZ5X#Y_ z`O$V3MZ@QzxK(C6j3i1xX_R4eO&nNRCQ$6Z=QVhU@7r%|LL7M-aluGOdPD%jBr!Z4 zrk)F^&KBeK&oTU;$J?-n0=_b}VcBF0K8a%y6BLCN1R+-CC;e~q@jSF1O}(o*p#Ath zw@UH9v%{mO7u)_3WH5MR9uuh0oHXCFj%4p|9@_i?&ZIg@R5lunqt)GYVxdr;{7E9> z$_ms%g%H-D#_izWmA;>uQcvfIA%*YEIR%PqT!{-dblGoAO;;+G@0O@Nssq_d$;P$* zEeXD*>^)Lcm)CyV&!JF-y~(xpym_v|w>%uRaJ%zAo6M==sjv)Vjjgplp%dh_)dfJq5h-@f@-*1pV*o>4*aiyN_z!0Rbizk4O49xL;uB|l9n z99h`fr|^2dE-bSL@Tua5dB_GeKe&0taezT24DEe?kEgthqF&W3HdQkU%TT7tYaqrH z*n=7(?(-rg$Rsh0(A}uX%OD84>>`kv32QW+Nm9bB+NRQ$d3>}%OcMUF8R&FTWdq#970XgQOi!h;K8F?OdcSU6~LJ^C? zdC6-0@h@r3IqK8K*eRxkPIHs}i>Mz=^5vY!5({jUqE^u)X;7d4sbi^~h-)&mT%UD& z4}}%*LhccJL}4Tgsnyv79L6#3xe#Kaduk@o}VaJ5Q2GV zd)KQ3LLHD_$?)O6#JlcGXteas7I{3N+!Teis4g0l(8ETaj5e@H+ac!4 z$?4k~wU8~W%ibYJlVo|5!^cJr8*hdU~bv4t(^0W+N?G8+Z27@6+eQ+KrGhNi6w!@|CF zo>)>~=dN8dGCfTl=N0y|*444O?Y&gvlYjAT{MhSU5W*%@9YUq1cn)!jcdq ziOJY##X!1*f}2=jIV4R9ah?ce)KYA?LurM@(8E=lcLf6`8W{vdl_(P%Xz;n;<*GBr zs$lFiIZJP6a}{46IXjx}*%OCBvX$A4>Gv?#m&ZTVR$hy^4_)Q^DFj5cPoPjxvRY$O z%m_d!|An1zpJ}(4>oT_-mxL0}9UZ*2%`8idO^8Pnt8qJxXqPhirjp|r0bV{!4L9R? zpOMh1o!!__q?0vq#L^(`ulenq9H3>{GL88O!RKSCTZ{+lSZf4zXEj{Ve%CX={a4?& z20_ZElI%Tq<{h!r*oQ1a>+%(}ND5N9y+CCU))YB26Q#P&w)ToP%ExlJ$C59MsPz_o zr`RKRPDmk>K5jy^_G7Nqm?CT97v5Mo>sXa(bFdG*C{tm2@Wx>%&i_%SjSF{LN%Bf9 z4__=~m&J5&*U09dvGV`Fp)`EQ&&(^C7WdTCMF_$B)p8~LDwagl3`qv%ZdKdH5ab&O z$}qlK>Y|A>18gP2Qj!pjrldV2PVI)%qsP;;?sj(jo#v*T#v8QF?w#)4-Z0j6Q&F98 zZTS9@<^F_1CIC`N!;@x9)CpSzzUqrU|WY8bvVfsd|{UH@rZ^vZn z%owgc7C|t~L(p7hkpW@V2*VB@WgwH7qYq>KO2@@C`5;UQm z%bSr50iA^|gQ4uXIO95DruKHXaj!>lxtwVS%PQ#L_V_SF2>-<41|k9iFBU1_#E1e^ z3XzlfsW08xa!+6FEHt?xnlRM68JR;nl%s+)z~Wp?1#u*pM50v&jgkS*Wu8jPj{3`- zwe`6N4JRSvC%{e?l0bk%Fc2e#7i+#k=_bgE-MmXmU!E-jYS@$})rZ7`|3~yg zFp-2b&5D8wfcMq&){qSHlmU9oM6>a3?L?}S@hI9#`GQ1sT1(u5OlpA6yDbsL!)wez zDY_FX#rs#M(Y?L>z0V2>Ef#79xP{aZpfJK<0~}BwbYgE=~a!U zs`keUR|EM!_R-$60i`h{HTX^lE;Jy_caQY3*~weXs+pY_z328od0%)ZLeY9Xc4Mh* z{+VT%MKH5@`d=zlW!$R=g=tbzIjRsX4oVUkYNcgIx z_Il9x9-g0NASdkK1szu0@__U+HgoA8aDwA^q$b9rfEsfJ@PWNw zVRiIyqDO}BXCowXZH(INs1$7|>$T&P0xg(g@0%S1Y(XPkI`rhfg1t32Oge2nz9Dv@ zuz2n+e;mq#&lNWf^GDE&1B zK;KndBgFhHdlX1c^%aTT!3<>w7#-llIXPaKCe(czQrRxA}_ z#UQFEL{&m`oNdNB^!ilhpmdx{b%;Zu*WKb#oT^+n#GtYsRjR>YD5mDw!D=sv{90iq zZHx^>U5~}NGgZx;tg4Ejh^itebnW+4D2OVmsw(QRq9Tk2+QU@}tXQI{l2t}1qCLnoK)x{UIOyM&ePQpw9;U8}Bv$7DLh>Y3R$ z6t6FrLcL&`(Tou9cUMi;F`A-?^c`hc7GelChUGJIBL*Ok1(ZZZ77He6RZ!7u6%~2R zD2l{lq*$U01x-XKimD>03JNNyqAy)xP*50})T25ZEL6p!Fcd~CQV8@3D5(WSR7IM$ zZ@77HncVTWc+#v!J13Csa+vR~=`|fASUo{U z4!63ds-}dfrtv2K6?X}_L$&?uo-WI2rx5rxQ06+t2%Xi$2AkzD(LT}ktb?Ettmc|X zauySC^LHIKc^k$RH>$#_cV`03c$-B{pA}9jb!jzOx_b6(y?d-DI@UcFrNcWHkI)%l zIY}z9MFkVP>Ueo_ncHaA#86nXMA4Q5CL*dWwyQzkTw)3eD2l;F8%oNOstYabvA|}5 zGIm=u+AEv1;hGtSOfXQ~Y`3LMgga-D!wD5bd2Yfhs#WGW7`S^U3Dj)*U0jX5jW`Wt zf|9a~iX#}RBEy-tmJTuoXt7aM4Ti8|79G{GUEQoX$uy@W$WcXl%TZO5I@H-rvb&~M zL|}su+_j7p6-bE0j1^-Xtdv1ujAF$V1sNH>v=J2*4cp)HbsR}LZJQ#^RO`R5nrpkg z`#@UZEpxfC5McqHMyB};k%2?R(ok#xQed>AZMg3=Wfv2_#m|0b3ob#$3eae7475}^ zT$O-|2t2X_jA7hz=`(93+~4>hWP&J&ixCzmO}`3S>hTrRfsT%q9`E61yjoE=cCK$(H2D(3MhJ(RFg-=r***d zpED?F9vRr)fys&+my(=*AENBE=MfiWtWk_&2*}1P=5!Z|?~Le!5sEK*!iyJYjgC__ zgfkRTixiAO6%iFhyPRQBRg2$nEW%Ev`Ai!r(=zr{&0fvqIEv@d?(vfqV!%-u!ybw7 z9o}_NP*Lqux88JD5X|88oD5`(1Qmm&D4jZ0Sh6B4MhJ=s#T5lqROtA0!VE-Fy#@?G zSSX61f-0gh6@nth3aX13iv(6I(wn53I8>RzS+JewTcZ;;bmI;By~cDmIwd=Q8Oqw# z;pn=TQBf2WRY6#b6-dN53B2Cp86cvfB04zS+mX?|8#|{;Mlvd{;?!hQS61q5^_blz zn2MmQAgIArVvtpbL(ZoqhEYXB#PqEmF7q1u+oTaz0*pmO6na|?tP;UsDyXU`qMQCb z#8HBZimaDj@^UILV30*-jt($QjqWfgB5^sJJN$!==+4;A!PoN_j+1AL!ojG-QPS)5 zS0OxG+a{yqT}=gwr!LfddsIO~i_>EQ3DGr2OX#~D$EA3D7j=Utu+%kq4y0dd%?5z- z8HGg^-Lo`BvJR3Bzm@IA&ucMMkF++=t&M1OTl+d!m%`L>C@BN*$=%VG=Zc4pF%qKARu;YU%5?hhx(WQ`a?-`YnYoG$e&4(w(LMANGu)@~szG)LgXmCGOepwbg%-+jk!(mshsK$ntUF=kH(uD>YBw5SW&;qz* z8chRlc~wA&q0a!p%n2F)2N8nO8_sl)Ehg+%2$>=C21AiywVG+>Q&{5;HmbP;*-T0b z1+_`Q&uKYqzfegPv@SR#F>eGuUe8S8h(jB2QrzN=;Ogk%ELB`5#g-j;2^@ z)nsp_QPZ9p5p+oxO~h%N(<$o>pBjrW)Tq0HqD78TJGMl8lIH$IVR`D30GBd*Oazb% zPEr~PwUi-pRSFhX|3Y#Mq+tfgK?{7{A)Z8nQb3-`(<_MW!a$4{HCTL)C(B?WL9*f*j`pA1yKV6T7OC6op?WnVM)gI4DFyzA zwLZM$TnKq)fJ0_*S%c|@X`vlkEzk<&*+N2s28o0CIGAt<(B>D9N~`e_6i)LFVCDWK z*i!^bMFfu8{nui5%QV1f8PE|OdtTeu*m5U56fjERu-;<#7&(=^5#6=|Bx-_Y40V_y4&s)R$*?Qj1T|7KvQmsmE?XT;+v=Ed zxMISH|4RliVhlYG!CFQf6gywUyQ5JDSE9YH$X^%JT|qLtw^V14&gcKT{r{CuP=J5O zuB#>Z*0gMV2T;IJU@j+{a|MJ&45993pg;4_E`*MLVqE>zTYyRBo8#P9$AI3XbRoNcp8w7T)Icgo0CFQK!!*0IvK}w5|Cpy zugg~F0R%V3MUAx0Kxkbf&OXcOBU$=~$v;kqnPmNR;6DL2gdI)1YdITz5uL~ng`$Sc z!g{4ml7WY(Bt6N7p#z>UdFXYvtCwT$RT`fE6M*Be>M1uvub|%VJb!(Z=67^HwVq>G z*?jwQ4=%v+F01ns`W|Mdio`pjG`=27S}JImL-K!3V$$1hqPp z-#Yg{V}Rsu2=_(+NM!Il<523 zaw1cSL@-1m#z=_(Uhgp{{I6^LY(6=F6UBeX-9&n`Y(t}0IYrI$NLWNVLM&s{HkHni zzCOAh5s8Q2YG2`IN6a949Qh7S+S2|Lg7(_)m5y(ggGvNYWz2#0_4+s%`uHwiE?3E{ zVA+fZOZ{?O_qmx5q}m>P(%rZ(;}GydlQs=iqIC-{4_)h^~tC- zSf$gbN93UkrerUgpgU@n;th&M0gV1S0whY_ZO0lCUi%6H>AG#!hHfQ_Hu(+(vKDd{ z@MKNIhzTKulSK=!8M++G3`O8!bg_geA&3<^g#-$XsmBhMl3)Bb@nXy{qSaDiVoRMb zb($FyP!cjQ1(rcTh<~s2f8nR+W^BHsZl98mVb~Z^-(6GtdP(bX>F~OeG9P7KxDl&+EAuUpQrw z)H+K{u&lsXd5mdy#)HcCjS(`i+WHdiWtu97J>%-IkH43T>?4a9+d_-vRZ881MuvM} zIbfnEE_d$Lq~b%@SPEJou>44d$m~vX?pa; z|6lI4E(u=h(*gTGpUX-DF$?1nd7+d;W^*aG9vW=6^$#x|G2JJvPmb+#ULDoQPR*mW zW~zUg5544d-oxoW<5zMrA(MH?O#RwK&)T2IG`f6LfrHdioK7gbg*{p09Dt|P1- z+jW{~zRjo4guy@=)kL?1C>6v;vK3e3H1CIR(X(MyjIJ3d?l$CB4{v(EwT@VZ+pRc~ zKeG-Br$iI)th%Mw5U6kqD}xuDwL%mJu$b8dM5DYY{+2wp%PGXxzK6LI7zI+fjO*Ae z!)#j?Vbo=>F9is6eXzfU`-i|gx(dWK7?RoJGVnJ(tP3a)i9{&iX1-~YZsVp2e@L%u zzse_dq*W>^=5WVjjbrm{?;9|O(xP1M>?Ak_Tm_;l#jwqIRKZTS>m1iCH$mJ;eLdo* z=)1KDBX#Q#9nsP(>Cn;cPr$*`7s)koCjA9$Vi0(K0JmFJGoX?)c*yRusAI>w3yNn* zU)Qm_Lm`)0!&cLokgad4w!iMX%b{o7ENd2AGIqLXR$_(WJ1P$CDM>8PuaKw~L~Ky4 zdSfSHUF6w8^0zljs&ZN_9=L+j!{RMDGl{DL z3tFT|EF*%9oGv#&_3{UH!eUD-@|rdb-7J^X%_SbOT^%@(X&|gBDVJ#JvHTNtN?rx`McfDTxZ zYR>xkH)sMl_pmCS0E#)JDCv5{4JOmmLKhUF-yEC5(@zg++_#_6%l`evSYCd(hIBKd zqJ3lV_V>Bhgn=9Ek4NHb3+ejY{X&Ovw7*eX2aS1u;liNQKw&_N*Zojm=I(d|Adw^( zm;^*Y^IMDc-Ie}-|9!VNDXNI5uQ4yZrqW~HjqbnI-*iq{n#jJ(ph)pcFw0~J@BHf9 zu#DPW7xKHY>{|Sv!l@dh=5<=rmK%Boq2wtla(z89=K4>a_+MMX@*i8y@_c{c{vCen zjx3+o#_GEsts71XWMV%9mZm&L?8(_&DFquNlkrFkEF;Q79Z^| zDx&OsO1?WzWxSoI!n4uS_;p`bBbeY31GADR^V1$sm=X!XCkV5i|IW}uXL>}0Ktu#I z{89iE4%807pm3~0=%lncJtP$D{R|}!j&@%@H2pi4>euMMx&HcOi_w1nUyr}_H$?8c zPVdwI510GxO-^kpEdNSo|GZ2fKCdR7?`6B~=6uaMv+vl4PzW1){gT&Wq_4yEi zAQUj?0jo$EgWrfpIG3^EWoWbO+{B_C1t`+i?6)gKy_4uRr*3S{-k&c@-w#2&+^ z<@@ib`5%Mf>UJLQb+HV$?~Y~$eCsRh605-bU#t3TxII>!MHXR{3G9*sFXFHnnaV#% z`hq6m9kH;F1Jvx~=Lf|@#d=t5b`HWfyWUlkk1noc8~)?6^z$Gj)b3`itQg0Cn|+T^+Yb9-Okl28LklvOsgT#Ff7kn8 zX+8bL@pE_aO~2;h(R=p5p-3VEa0md12#A39ZU_qioNe}V?0T;kjp_Jw2esWu>e8i= z#qaoA{K}v6uX5-NClk&igAl{{lde;M2(UJF;mnAP6ui(|`zI+L+?%z_<%fPwoZk~O;-e1@}35$5^{zT4JCR=%m4(-I8))$@i z&2t~`9257~#>m5Gbv^RZfd7F~8bv zBH&#-vveVx;w4cZME>RZM%$J*LX@Fv)kwQ|GK9d`L>gbXX|!8Z~c{V z;Z5uFx87_uHS@nt`?S+?G&9M`e0tk&YPWqI%6IjCO437cH#-jkzNEf(9^<8K@1v|T z{}MZxtdHc?e&*WF|FG?XJ3CX!;dcLt`M3DIwkzG(qY&Ba%q1>EP;dkf{TM#^Q;4*c zgAOi(ba$ki4t4Va{eLJc*l#TA zFUUlW9h}+!t*hl~j9E^e!342BkvbZC4U;gg^*;_Q8GUOO|Gnv74O%?fFbF`Z-#H=) z{vYqy`Qc?vzB%Bpw^Q{=b}DMOj=NKa$S1du2f!u?GKgbq8W zXR^l|qSnRK4jLMcX|&A=tdg+FlYpKE>#@dwS;jB*Ya9?b^AG{Z=DW9HQW0PfAdyHW zK5H86VYksj=#5}xNlO!#B0^ba0RTpgTOD}jA~mmX`Miqd0z@HsfN|G!mjHDL0$r zb;I0f<2pQlBZ8-D#_VTon)ZfSMsQihDK=hnu(^5wAOK+j5Yw|;vDI}XP3w-htbOMW z1>6Ew6+%!r0lZD4977&VWdDw~#6fH_UqsFkk`oig+0LAa^aewsFhEq0-qN-od9`*k zDiZ+!% z(7qlF3r)6A1|56=BhWgoAAhhj`RexMSWg6mLPQb}&bw8)M~*f6IZt=885i?5yL%yM zz))2dcN@{FRzU}NE0|*8 z!>MsNjWG&#oXxrU8h={(m&;-ZsRW zDFH~JA`lh|0?0uU60nE|Kn*qbrcj(Vw(#?`r!vsdoyLLU(D8R>Nx4p-aY4(w#<7O! z5gfWh-lQz<&8*>YB!C2`Fd!z74c+ijs@&k3L2(cf*l28a&ImgEkLb)@eYW}Acx(fF z6pfJEr(`OD>3yG4R@1sr?rS^J;U$Ev3UpFtVkbtmtGjKrO|F7_d(W!)loSvKg~FiB zI?2va7^K>(r)tb=0RdnE3=25fyhy>>sa@5MHM_nw)NF(dliBmjlqg_GjkdyWqiBNy20EFA zk7eXBhIbj5zictm*QU|knE8=>SbeEN4;_EH42mHny##fY#}JZCQ)9+&lTp&qZ3czh?W!JtMW zo2{vvS1%|)P(VOLKtMrD{cg$7LPoW&pmaK|@6mC9XTL3#By+38^+#3y+lM;fyz6Qd zqySDpvA;ls0T2-Y0E%uNL=gZ14lvox%JN7>1c7c8-F4R0Bnip6)#2#D*TCjLeaSZ9 z;W7gjp5%*dm!T;Y5fKNA!0?@RLxL&sv8P)5Y+1p#y*MbG*C#XRE?UVwO&Lq*D`!Vu zCO9eNX?)S4K@gA~uEfBA#BNbF$Bkmg3fl^j<;FnM@)d-ueZc1tZeP+OHXF@O_b+ov~VKtF6qW`IF`S}|k8*zDL~19sL6D+Z$S;w!_ho~iIn zBWKBQHsdYFXvz#TAaCc<7SNJoBZ}IAW_Q}89Ud6j>Dk1Tgg`;;v;%wHn;owQH>zQg z3oJ2Xt7-7Yu!v1tW6ePPDWbp?^z zQg#$b6snYlHVNTCpr_j~70lSXGb#W=5&=ZabY%-OcjC0%yp!y0u4w3RMrLWU_!wKA zrN}Wr^=UD!l($n^!L^2_za>R0X}X*6s)fBPBcONpD8i+B{d8T3McHAVrlJv^@hAWQ z;XRrpnfe|;GBW9Xcv$8BEi!*x+waD}N&?}4wH#9Q<0dke-cP`aBt=6%)b|hXJF0)1^eG&jbTIp* zCs8r|GBXRjh++~y8zJEMkP~Tr@8WRI3CHm*Z|1XQLCE)YSmcmlULWDWV;>O6ip!B@ zElcON4=5=`&_i(hhO={ceECm8Yc=lOO6rjynQvK%B>oGb4XKt?xcAVA>e4L>2av;} zbn~dufkEZGyya%(SN3~P=+E_Yrm4AbdW~BaZD_x- z8Q5OfUM=MSO```e7Uy@|JUqf43=LWC zd%m+q_|A^9DRnO!u*N-d2IEEe2~%uz9ntQqS%wiKf?-8PLwlg6dczVtUpK(5^AE~A z|DuPgs(4>-o({{P<`_HyFd)QQNO~rto~n%mnjnQ-!h=4Ui@P-YhmO~GXV0Y#^-~4H zG!WY=L`#q0oZ4zalHy^WA*EIkKZ*gQ!_3pS4-?|p!;&!ci2tp~EMMLDKQbcG_C$PR z?LJrf>G-aL*4A%RdrNcEG!1uSW{_q>g8R7n%|gx;)DQ2tK&2zNAHXc?gjt6djvq0Y!C5+DdVG$?XDvh7HR-{g3BYB7W@ zrfd0=>G=7$4Bl!vG=Ph%Kam z&*ojos_{J%#MOufuyX3i0F6Ddc(Eh}FV!pYOkR(6LwV?CWhLLC>a6)Pe~aJGJ^lIk z{~I@DnehBijYKq?7lNMzwStx-8b&{x^CdtoA?#l*Woim5{6vNE^%u(rpH_05B!~-W z%$w-zl%A=J(XH24oFN3-FhYb?9TfOO1^lOcy*;lvi;gqNye&=Fg-Lrqy}*aF6_|^& zWw7=F9?6RAS4Q#xwh9zqSq_ZBSiZnt-Y8&Du~^1r1LahGQ@b!{}T3sKdORjGRmugqWP_3CYazx5gah zf|Gzej|0-?(|JLfd~e`n-?QttUsE~T zz?uBlWnyh9wJC4;oi5Kb5y0Ng{8!2(H@TWIBcwMU`?8nT@iJQJ)a>76=~?Vi_IGU( z{(jSbS504b3O{4IzS`oe2dsosns5tnlXbQzayJf>9-IJlOpNG{0g=0zGYb+DUy6@! zbB*2mgCIJ|zKe0*)yl8o|lZ<8b z*qA)J7vcXVF%#lH0TS&M(mwc(=8u=|ACeao>iPNoMtBxZlV3e)kjBd|DK7Fz84f&$;`J4@~Tnow%?OH(0(NMKiT)S?28D zW3<6^`a7p7V4V*Pvk|qThq2=4mSib2+MuWoKxS5%+6>OiT@SU2?>YDnIj24P8BN`* z6!#B*g1z;kBBMR6tLS#R9E_EIv+Vx!Jf>=>{C{uoI`88D{ki*p16No@M}zxMsL#Uv zUWdl~Z`JR0=l(oq*OT)Z`DY{P*;j!>a3W#t_gNsiobIm*_X? zk89HUGro^f@mk-u8Ye}?BJkHaaBzT$z#;-O^aTVA06`HD0T2-o+!OBVekyvj*!v{C zuj%#uuc!I5yJg>cidOmn<6 z5fBjz7KLUoN1RU@muc+edMMLs(eM1~3tG-fR%N$)#HwL+ z8u5bx0TA!)tpB#3TdbiD*WgeU@5n(oK!4bpu2CQA>>oRmc99#_Kt}Vn(dkU62obuHQk(V-RSuYea1ZL+}8ano(XF|)f%1` zdpf;wqp4&FsygyA*XdM$O=EWBi_!rqBNUGs?qF=yjd~=li{f z0H+viBZ$aXbug;Suw%_k-^4*Q3D7Cv0vaMp>)5t38@*ZlD!DbtrQFrQ6y5fn*Ldge zK@p7>1tSy)_(;Oo5H^f)k4U5Pbov{Q?G4fYN^Z+JQq6X!!X)D+s)(XojZ{Jg{=N3Y zv%IgX<7NMEi=jE{)4+P$qE&PMY>4+Z6I3Y9p|9}TM9IvjEVsic_j{g&e`VTKbbAkr z&+wi4zhA`PDrKUC{;m7ii$|6fG(@3l3|F<(u@U)IxP_x3q5;P zMPRW=Dl#af+**7VRw!yDs;oZYlxNbR#ZF$$Jznc)0C&l%#fB}=$x{MCh%WBa8DkIy zR<%V^Ugnr!qP~{cs;pHISAT4W*CeQ~qH3CsqlOhL(_on-G9&DkFpKXL7-2QaQ4Yz9 zfk41R@avBw=b$JebZp%?AFmY-<Vlq>g~R+D*D3TcR6uA|g`Tzy1QGP`Mj zrwXm+1)yfgM2VO&iE=9JIDh+nthVQ%Klk@C3_rJQ!M{G@V3RUBJS5r6+n&Jx(lCO# zl*1v>1_LW`lEdKT`b;md=@mN$77#Bi>NlCPsEl<;J=GFvgO(AzHE%!p&?Ptg|C;Xy zAgG8pC}Cd4|MVx~N`nD9R2Ud*JP}~!IAbD}UZXAEJ2qlw?)jY-b1A1+w#!lS>8#CH zAve=G-~Fy~fZZ^%g#B5&`AQn32@zj7pZZrV`RIFd3o_SAaF-wpUlBI-L%8ogO##Ue z@#nXx+>9%l_OJ2GdLxtcFh}mEV6*@_jadR%{Tb#e0|X#(o?lBFTsp&lxZX^A={U)T zM>&3Yhd@H2oPZP6&kHgqWX5m`a>9^+^uI?(G(3l;viZz}T0V)WD3>!erKW*36@iQ< z7rS~>pry!t&x3w%UPtIDh9WqO7AH}80)gC>!<@R-%SBm@5sC^LH%?ESITH`yEKjpL4%OPwBfV#5k*FQ z^Hqw^kzrLjYhT#EXokjDuWBjcxPB+*|3tkhFQR`cpHQG?mUT}c|b(r(82g-p*#pU;)c%pL%Esv@TvVsFHec^ zefm$u!!v_;D>@2$cMdoB6ge(jTTt*D6c-%6qYmKz z4QsUcih+K`FIJR!#@ij&7A(b5-x!hPF;@vr5$W?d+82E4c^K6`xsA@I#+$cC%@77) zAZJ@RW6nHAJDOBfbZ@ba;js()UgIv4Kf>{T%eMZ!^z{uDk2|N^7Md9Y%uxb>h2^n8 zqJchmu2ZkWwd!niDXW+uO36;%bJNwM+;b%~+%M(F`)<$7bzG0E{(mL-zMH+>a7EN= z3Mg~FoAmMj?vJDV4MR44?Wm*q*1j^Q+<)8ZINulU{vNKXswgO-_r4?ZGW9wAZ?pJ2 z9G-phI&Ad0euA4uCdrhg+#Pw+G@?sjv`|v#&59yoyT}g1T zJI&XFEjP5PW8r&KAMVG)m~Z5ab+@T;UbQx&)qKg;0Na%91M$Bd-z%+9jFh}8A}36@4OI_#=X$@%^C`76ely<6H0g_=xL~bqh5{y-mJ(p~fb90_OA81pZL#eBV)U>hY$$tg%F8PP2+~2ubeUsFYx1}H^KiXkuRH4`*9#B{ZS!md$}|%!p_~K>N+KYE z0JdO?F2 zQ~@bLzRWH3g00#v2OlY9;pB_%?3GI5zaf0hc%iRi4o6oIyL1aMmJ**C*x_KSam+#ifJ6n9cE4wr zW2e@@$-Okj4Oi>d38|-Uo4|LmfQ(2PwUR|4Be#^UU_SlZcbQ|FZU5Bj($|HQ0#shPhBMINX zx^?d_DT{9Vy%wHLT!jcQy!|EarYdUDmU+$Hz!Z+kz@UJj?)x}m^?fG)d&J^B4cu?J zc$_n$y%$TVv(OseH*+^=A^?uZburl@1VCE8z(Nt^PiOD``v438hzPK&&gWf-yA&SN z42TGbi@`2djtA8@MErbhdN|3j2AV-w2&}#^QY>5D)>Skj%JtQQ7mGZT7q2=wfV(2oOYq zEr8989|t+__Tt!CfdIxAS+~PxoDP9kTttEcATGsMSKLCB0%&3eK2Mtz3GRv&1dAQf zrO+pXy4U@e0vnny*DeO(IRV#fY4V!zHvEyy@B1Dvkl|`@)guvZtB0xOac=DE2adB6 zVklbZA-e?yC3hu+VeZNV2x!}W3h-RkYkhzR_wCs@06-u?5OpHyNl8pmF>y!`URNv} z8r|l7bpg;40?kM>bMNI|y1+wO5L8j#oUKlqK3V20oj~xoH-&or-+|ijIv)2_4$E)G zU^yzt7!Cm>fhdzyT$cEQIECXBIPmO-*tP^<>(7)BNPFGWcb%P9MPNQXeEAk21mQtt zdp1)xA<01sHMX=a41j<#lWvDcdZh>oF2(?pxSO0iG1hL@-+DoHasfA&S-eOIp4rS4 zG9H?BNFo44;03raLS(f;ZWwmm;}T9HG$gSu3jhP6MmPrGKS~A#NWg$yxtz6PNa~0K!(^a0 zE#gz2{w?!bk zoIE`dHNuvxr2{HJ3m4E@#L!|I=K8_Vy~W>i&>R>YAX*zSrNIo4+Yl|wgwe+^n8yH| zo!y2Jz>dl|^)jV9BzOXlpu6|m4lQStjQ~J!S%``W0@knqxMcLWSurOL#Ktu1NTs_x zvaCgm*rPiEe}5UXZhr$HMhPmcW#F`+5!=gP4X#QZ4OQsp&x*D&4E&v5?kIpF$)-U7 zw~H80SeuJ(;gfutwjCf;&oP~D!}{8w-rCH$0ZQShvJNh(5)c}0?ILo7jVi18Utzj=a=j9A)2s9yxF825u00(WAP_;J--Y;|%AQOW) zW!7;70Bi>-ZH@p8IkG4~;=9P{$V_V?+GVf9(#8PruuPx;z(`XejH?S59ki;XBGqSr z1TpKVKqbvluOTUIK>=4{p$JPtodD}~Un##FT^Ygx0~L5V%bZ=7&1uph04M;$&7v^f ze1cqw@EQW^a_n}XNp-bHsqzqz5JZAEfvHP;Ylr|KVFcPjqySGet4ZDZ)RC)QJ=%g` z%p<#5&;SUYUk>O~{Hk6HHw*;R#8;Wiv7nbyKmgUZ2V14m>1?b6tAwVsO|d33wgy~L zCL4Nh0=)&T>c6;cZ0*wEI9`q(z3AP9ETwAv`?smQnnh5U1FSjl?R1=&2L^)$V6fYc z4$Yx0FNX;97wukHjz?{Q=BPRKxH}5UkPdRAK89nIo;Kt0mW0Fzzycx$GNFE;F4dq= z!voz00o|qVy5iuW06;)4DyBAj9w@qDR))`yAwJ)J;U!yNaaaK&ATuPxd${&}yBBQI z!vM&Dh=hs9jThDCFaoNlWP9Wwf&u^{Nga8tTKhX7Ap4|j7*scL?QQfYs6=>S1;`mC zqgmMct`(a3*I*eS2?!!N>e=U+JGcX!I$iWa|keUlrO8yG1$TWQy0Kq!N|-MHWA+-{A&$HqE!m4mh0 z<(~r7EyTGO5D*X{AaFVjV!{>dZ5pNc@!Pp~p5*W>005wfi3CUh6$vLUDSBwvQ&jfH zsfr*G4x{R&a3-o$2Xt-TSO6<=@fZxm*7)axZ-=wZ*s#$6fkYvQ=K}2AHd)fivvg7x zc>|OKd^nr2gp5+SHX0D+9!>+X>ysyjiLc$JVZR$Ml1S_j|ANH+WBotn{z0mppv z9Gw|2J8c9e8AH9)@*EHaGl2_e2DZpyF$riyNC9f|>vDx+x;`F~hXn!kMaTpe9)qIEa;pyN;hZ~(SQ zChmkAIIVqXVV%u-Hd~5CxrwL@HUVxT+lhm-ks*k%w2ALsDF>iY%az0di=lLKZ1o+W z9RMnhfL?Ig)dyL#Hn0F^!_Nu8CERKz^5X5&)eL=L3z{1O0Ur<{2+ssAF_)&tfy%i6 zjAyZbCj5#J05P~x5CRt!h%itcN9)Ufb;imK>($I_7{j7qCJ2S9GUV5`rr2P|g>(qA zB?d&A_oIZQT07Bwc8#zT%i`iQz+CdsqCS(d^oEh-AS9aKtz2~U-3 z;%V2skZuA1T8apGvYqTQ zw%p)3fveH(wkdf%2VkeCnz+iqkX5k4AlKe*0}rx9KSA~5PtCj7QM)~%41P&KR;^eo zHsAE7qDR-W=(nsjpZXY3d}-)Ap4k&Ln4fLZBN=37fE zUBz7P?*=zi<^*Quc&gor&o<8qFRpQ`4oB1DH^k6Po>mYZweQ8P;Z3VEsA&LCU~o@WwVB|NYc7j#lXbh=(9h zHg;U%MfW?*dCRu;7UT|3u95^Or1#FAB9KZm?-|IK{bnFpJ-L@FmLP2Ai#yzuf9$0a z$G|kXiItC8QnE~bU0nxA;$*KO`wv1rr|!{+WlKg` zNC~u1D3M45Azv3lDR27WV`{adZCTk3xd| zCr#2$ACwIMWUo37X8vVxShb81(3pbIg4E0P6klS1wCIv?wt_^{vT=;=X`*yRBA_Ia zA*HC0Z|h<>ja4?IdP6Cc`g0nXT=0aWD;8vN4*HuQ#a6*iiQH0C!YOM+kn2e0Pxg`h zAF^m*B1QxLIx%nc{sh=!#Wfh|XvJY#-yNxu_4)H0xr3N!RKMmb1j3)hLL;~O?8F$; z$@Rbe+rLZd@6RCn7@(d>_lvPxqrDJ72s;r86?NIBIJgAHVS}tx^u!uE9>CPf=0Y8*9z}I91G7Fyu=0Di_3WX5ij3*={d>aB@koqD7WPWqbC^ib zM>Tz0z=SY&t0>TGJ;C;;%{Gf=CimqC1d@3tA2=$4#y>AnNqz53Vq+Qvh!A{1;R%GE zn$P9P>e3AgkQ`*8NUAv%DJ@h|1i~K4LXpvHZ}^zpb7C=r;q96Ig8$#4wqoPnF*Xs}1@%%xefn5IrHwWxc#VP`*{k55RgE5$rx0qyhYK%f1l{@M5fPXm5JW(Kvi!>*X`hD2{_#F;!{hb8ORcIu4HqsC9%Gf@ z!+0A0zT&+ZKlrBlCR4K9%kN@>C@zLDw?#NSp8UlSdO(U5JKPg$tG-`%$KY$yg{OLout+DpEC~HD*srr=G z@Z<3wY*{TOuOd64R`F?u?cZZB+RGP8P7ff^fvz!%QM+1Io6$w&zFG9sHLtjJLBHQV zs^Q?gMjSW=qqi@#YxUvMu}AmmPH7i0DgFP;aE}bC_!ZFJ6wk%06;kRP+~C~n|sbBLN0Lw z4su+xRkEX)(TEh1M##*u565P!9+NqMuAIl_0j5Y1ee64^Q=*_LRu{zQ7vEXG<0v2^ z!e>rE#0%Tte#$^B3c?RM7a;9px5o76QD{8!0uO^?FARC?*D!B3vf)m1R577|Xg1xp z{$6*c^BjCF=DZOZCeaLGqyo{}y9|w=H?-!*4zM#ewL;E0%o_qgB7vqWw4v}Ik{+8f zoDd`e0{HH2^COmvyc)krAPfcffX#?ryq(8-b|+MU1J2u!Gb9MfHaHH}#NCYO-03Xy zIl^D@I1+8%Qz`SN16R3aaK`Ilo@iW%Q#)i6-u1^28Y88fLy?JWfeu72zKCam1Q-oa zkQS1F7`3+((Tt#Bta&SYM&&ecwFVgTbtdq!ttEROOG=f*gx0*P0i%^59Gv9>Z%Y;Y zg#-x4db{T!V-i|_x(+k0AONsTT@?eTEr(JB36*3TRR92_S{gi6@N5R|wj-;AS`tYt zKd-?a0V}^ zezT)a!5=#0mqYH!KG`?c)FX}IPWijfSqB;33I$vqF$yWgls`{sn%Qr6-ta!Im%k{P z+!0|1%cS%_Hh}BKiII+3VTaQA@E_yl`v2XvZo8i;3s408A7l7Uz2|te|I_hRo8qBm zARY%}7mNn%p%2RccI-VRkZ7DCS%6`kp`6m|6cLe-GX4av^3|x)eQ&Sp7;2gRQR)A$F}zLS=r+GHuAcQJdeq)$ zMl&_0J@%|98m8cnwxm0!k!E7}%K0B6AB*qzuVmlnOv2=T4D+>R)zH=f6#o?3Aliwt z&gdnI0!Yb}|BGtsgv=KmeP{iVJoqwf;QjC2%ISUy`*kF$hMJv#JXr=c0Y4!)q8pYS z+G7?&L+e>GWZtCvwt41dT^joNXK#|4EI1p-o0=QkoMEF^b`L`YGfx zAR$&l3{io$yJEyF5+V*n6p(D-a>vti;!L4~C>e>8Hz;4EV)-b{g`XPVsUf;4{o?{?3R=DS)a3U=^cU1p%M6)A2?(ASGAp>Kz@Et^m ze!z>%zq&OLb;cM<=%73RN<+v5<2$VB>;Lifx^#3~8;{4Q^0-*1IijlvnQ86QdYA;6 zn57MOjp4?bBZPmDwiN`&5QlbhBna^}$19y*P@rhNf1msR?`@^N#UDR?Uxr4O5r_Uz zt~+)e10nkB^UN65lnK%3lspqmLIlIj;&z#2{Y|1S=Gbv5MPSA&>%Lw;|9Y$B^j+@f zd2yHa`wq*%%#e}EJY(6Mk_=Z<)p-pslBEDlN(7i5Do4RXDV_#KKc{(~QCPuyk2gbv zt4$yf z7=m`C09-#6GUPTaMfdinPeYS}il3!#;NS1T_rE`5!vDtyvh;eN|9lTFSv`j-(N!Ox zZ4Jln_#CsY8W51?)j8|`#wXMsps_Lv!nj@;>Yg9%70CrB$X*j9xeA18f6%;yEIlj+ zlS_NZ{`&c*$PbV@sP~@L8m*<>(8KKzrQp|M|r>REMNOe?on;hIk+k7v@>6KSyv) z&#*w?3ls@5JE|LpnHgR;a=4%CoBw5{x&P`=;HwdoWM0INeR22uOh87)&)W9=v%!B} zab3M=R0p03OVHzk1`Ha3yMSIGy4T*+(^Z1N+1h+1NI?w)VGZjAHT};bs(O#F_<9-| z3-;h2x!~rXAmYmV&n|-Ziwdr216&OvCm4+mlQ1@T0U}8Oz*4VnAA*N~C1&0&U~mEf z5D^emM!SR~kYjnbJo~_6dHXMalRhAL0r4P#1VBW7@1rd_obV+;5m6aPv9n2XOg3u$ zJ=Qv}YF%rjf-}y3p#*~IUcHL$|9WW^P$|(GgpkOeP%sumgZT?2mP1a>`s8?9#avH- z#CHH=a?D{}U>FjiL0#ll63dL<0I@LxmK#$32w;N#URY48{5xYT;R_)kAC082~vV+j1fYv?c+t(();l~x0!Vv;AALYbjY7!CqMz9(L z7U*+G8bl5x5fKp=CcMEK74g%@wmm=+2yC@wDjRezUgMq)d7E*wY>MhfmPlmsVeZ7j z@r1_iOLRHX2JrG^Zj2v3EG`g02vj@O$^p7G26n;caV72Mh+<%|aF)S+JBxvsm`RWX zLKq2k*=5H+^K@8eFkIjcoo)zkhH~M8{I|ImdBEi&Ede9zb(QMN4&ea*4gd{Swd4^! zqGHiiHRKB+FBeF-CDRCgJ*SDl&YIvIF%F{TA_SWuVPFVJ4J6~!zq;_edkfC)_fq?y zy1=ECX6J7xH24!`Yj<4?VPQ-4k{cH~JpkUWw3O3XhJ+uD>{?`4jPY>Jh03=GY$3*j zX8S-KSrr8qFWH*V1X#XgQ6D$Fd&2@$-oymH}&qa zc^wB|xr}*3Rjy_TLP!C7di8cs#<_?CleT4%cyBnOKq6k0=tZ*2Fw&!D5k%VgH zr;uH&0eEN(&~)R5;N&o0JqBUA>dJJC)VLA z?w5x2TiZ_nIL7llx-;0tm~h($K#Ru74M`f-5gJ5{a&R%7U=CnrrfC)cj)xX1FL5$O zm?isUyLRSXf?U~P2o<*%Ut=}axETu2vKHWkaC5E!t;QpPmDvtZXp(d{YG+@vxCQ;Y z`yi#%lMReED&dYy3lVN5S;idq2Owb$mB<_%1WuEZ`*LlC#u7lyO*n)zzsRbfLQEtk z{aScKSP4E}#GtVk5))I>-P0V+GtM0e`L&%8<3U4Ce#`*~fB__H2Rgcz+1V&{&QRcB z84v#X80I`#UjXfN}(zvlO0Ejd&hE6*D2=pwm11K*V*|)=0 zg^5O?b<$8Ik4Cl_dGs&P-X2#7L%BrU@KM022pkIuAqF3K8_1|)5Fl2;fG=teFx%JZ zYz4UEXpMk@005H+kT3>^ozJ64LnXQ9;kNAo#`qEP06fS6T~V;+!?Ljn7KSi6i*2yK zi$^GS`ptj>3CFppv!S6SuIR92bvi)=0zJz{+v4bDp7M#Hbo1GIHzmcrAm0FA&V$b(_UAuLvIfo?)%dnVcst5VKE z8n8B{VAQVMKuGpEgR;X4jbe0>*OVd|WGEPu3DyFD363U#f^6Kj925e~t&eI+ods`( z4r1X90g#+(!T`e^e1r?aO@R>y)(l#}#;R{)a1==_0SrpF>~9CgqH4C~20)C$*0}*{ zEu`Tso#nudwl!0KKx+?iTl#fFe1IS&<)*Hrv@ie@z6u8oY}0jO)&;;SiWV~KYal~p zyLFc!FRmpDBYD8x4Wy8OrqE%)6bUv3eA8J6|x;{R>O!1$HJ&qo-177wH=aU4Q0aU2oNs6&;Bz-m4qYg402UDv0AH{v zCwnxL_kV72S6|h5YQ6u z1R8n!O4pH=2mo;aw>h=WPALH!L0czQGFgeTOvx}>jvK-{I&_8u5rsKpYQSRJWeD4~ zASoaVGIv|CGWj$Kfk6ONSTgkXL%alm0eedF*UBUgePuyW5X3vV=8vIHJ}X^TNC3c0 z3$K{qf&;civtqkVX|sZ$JZ%RiT!F$khhAWGfY5;}u)TH5cgWdi^Yy@OhIBamK0fIa zl{DjuptMQ=krJ}T%R^A^>gj3U*cea%NnpO1pfLt8Vp0JZ zW?(O^$;)3qXMV~65<6=ahcnBtJ!An0sHjO8a)JhN-MO*bZwYT2n@)1mJArINscVN) z&|WAJeuFOyx-(#SB?E+llcCYn@7~im2OoR0yxwhdyMA`54YY(N1|7gz!y-sRT!(g} zfClmSLbK>-HX@1e=iLBsSsS59 z7qv~-Tmx~YY~mLa5Z&z1#dKqzVSj6 zx-fpL{%gSiJ}2+|2i@vj!bTc!>v0uK7~|{XHyiHD$jY6m?pxG}(Vv<%)gY?wDf!BVz6A;$iyl zEsw#=|Grlv9fhp;-X_f7Fy<^j+SNzgwb|9Pz973t z{`cg5HoQBHC1RoDzen$K{$%YP2r97zRqoKDpD_xIQATyNv4{40zpTd&p#VTcV+ZEu|0LkpMvbO-x#h9|z`jDRYbe?sM*g~Z9kTy;w}l7NH{u&rA8-0)o`+ic~c zY&nss5ZU|uJVyxF!n8&YU|B-v-`g~basGOh;||Z`l?!Yl1YgQg}FO-41P? zdlWn8wftB}&)(tY$E*+sKOQSYVd|y_@Py4;jhKgO&}M=Kspo;bnBh@XK*+M)^MGa( zmnQAa`mpY;FxK&{NtT?{su{W1rhyM0U?%THpEr?AFkVmJT{W)syR)n{Jgxhc7=Z$X z0sxRi0nki`KQ_j?*-}DuFYEN{s*nI-w*iV{NF_QFa3R8_3P^8xQU1Zgh|r zzMwYyd9rJ|1Ay)zG{#;=c`uibJUf6m8lYUj@b8F%AYm0$usDQ4fQA1C))xX}Gc{$n zg(P9ypcP=uZCp65V+Vqlb%t2NEm>C32C>DoI87P+Tmmw5fGW@)d{-% zysvEj1_%JifCzwV4RIF3qqggjC<<16tSBKb2sR)hMoh_oivVA2WM3F3nmhzbS)AXKvE0Fqo4 zwh#aY(?=n}kq&E_%tl#xeWYg#+Wn)nB&~=Qx^M&ti7>2NR|*6`fCm+xjXfK)f{K8E z08mKwQ`X*Q@Gh_sVg=2uW7WE^Sy?b?*?Dpkmdr|02q8Li*j=C~hAV1bUd~Lm{&z=O z#c+j|Axgb!yB%k7DV{bQC~~9+7L4=q>=+jX7zklD2*9AQE{+O$91!H|26l;R(~*7T z5)p9ag10Amw^$NMMP2Tw7%uYc#&QrhcbwKZ12y<^WI+h<#fjVu+Lp=mEC2wUdn^rP zQD;ej0`}+^6;l|58`Fc)0-;$zIu4q`Zu$;>3A^4<4a)-W465R6if_4iH19Y5J8`?< zLdZ{YBr*yq4?al2piqG5fIy}-SwIHHdEht#;sC!%48#Z^1EQdTkDh&u8Poy;FqD+= z=QG*LKyXMxXAl6`ZH=>$AS44(2Uz3->gcfDDOh8Spc;8X!jNpF2o3051oIlHR2^^v zkO>%wlEUR6V#mY48sw41EeH}V?g!mL36(eu01t>e*wJ2^k^rEAEr!K{vECqr4u-gG z7=c&=tO^@d-i0H}sr3LK5Meisxr0R#9-azp+gt!O!Zuq45Cq?AbQ1*W01Rm_HR6E+ z2fHt<4FJ>;7Nf<17XwB0eAtJXX zQ)tToonBpSir6^dSOS0$BT$rpyt}y0Ku`pLOX9eJ0?3d#uk?Bk(zAGjwSRq(f!>@N zFzw?fN_zY}ma%I(Kp>-uMYX`&!D&#ML~CB!I3x&3LTEtR9WA?i3$7Nz+K|r2G_O`nP>{_@kqX-TzO|SvN1% zy|yE3@5hxrqo4M^U-7nx=iSkF*#Q6`$1xDz-g!(Z0~^-Fw6tP9;hA27wUmy zJqdq(AUp$leoN)T8!w4to{!~`Kc7dxZ#9tz&!gxVX2c=2AWQIE4tmIl2JFaSSa#k2 zD@=Z=9p;q-t1e}lyodMQbB)OtBM)HTu^xX{`*C{3xBGgD0;H4-2K|}=uO_&lInGqV zY`QoPUGuaWr9*x#?ONgaRVUKOF+G@kIqiAXylL1MCVM_YrGV2iehrw}c^4*C95J(?l?V)P8$hP|fa$p#k z5MW3>e}c?InmCki6of(Sm!f>UrSg4+55IB*1WqH-@hD}{CLfKAx14MJj)7fjc|1>- zui$=OS|T8de;0AwcKJ-+;gwg_?mfQeEcxl4EC2Va;N_C;zMA140&uZj#r4?hv3$Bh zz*vsuE4t}-H@J`d4@X(X%BG%*%M3Q9e;Qnt;WP?S=pBIS$}s4Z74*0t{hTqn9$7=e zG0iDVaYO_FM~mQk{__6AS+|&n+HY5R|H*+sKu+|kNCy|cWqNx&)7tv)*1@4Rn-LeQ zy%U80Z`0+G_^x>B|JSYOzUT4qo@~BPZVQd-F$N-VfPsRi0BAs$zrpMS*9}Xq?-$y@ z%R%R^l;a{p&fv;<_%`UR(*Hd*+*h|IW{xpO{!YsDx%otnw?(72_YzoU4XdrUgDSWjxP{ZDV$1`ysz z`F(W7JsW0i0m=ZwzyxptgShp9z$E!*Ge`%EU+spOW^1NF@C~@84(Il)O7 z7ZL~vVjr=4WIrT+sOI)OT{q0H2?EiEeYjzBo;plEXe=eLHG)^IgJ1Um zp_K)vy>1Yhi}}B{Kbqo_k+Y>v);r0YAVfoEsUQ`P=1g;am8>29J(H*qD{0JjN>B1I z80>*YVJOXhq0<-f;8yE8%dW_jg%H#+;?$J^B(apGC334b@$*ImZE$Qdv!|VF@d6Z3 z1=i)|vHYv&cr302V0N`{G|HP!6IfIM0G|&)H)_ywl0j-djzZX=fC>P@(E+xiFCQ=t z1y#2);T#LX4)ZZe;w+fLHz*K16SZ^!u^-zx=qb1y&LbSJ|`- zQtay!b2#Y34^u^+O839Vc1xRrpeb>ZbgX6k6AHosj}aRTO$~C&*oak0A7_jw&>Nim zG~~ClNK#Bf@WeSpHTP>!)bsG{*O)d!cTL^0&4`f9HD^jlNUXE6*35b&ZE>MFfZ;L; za7rZ@AZcDESx7i40ioft5(+?Eo^`__gi_cwTpBnK{ML7Q7AC`%FB&bTNCZt?Yus+V zR=y>`E!Gzrpg5rjX9mQjD5%oAL1$lq!amEHEt!6doL}6y5E4KUAp}wmhyabZpTu)? zx@E&Y*fPmVLI)OLt^o4ZiGOP6QE~w-645FL5mgIYAvi-G&y#nA1SrbgW$z;hM%cG3 z?sGX1Qra2|m=fC)0tNxgxgaEf45^!J0;B*2UCM!DfDj#?-Hq(Ds6fjLcQyD_CxEB` zM`FvWYUuZ>&2s-TbtDKtghUBwT)77$bE-lG?n%QSZP`cwa)|(#FU8q810f(}G6)wK zH?PH6U?XBlS`22+2O^q!`soFQK*mCnYVL7zTrGNbL0};mB++Q-LP<82AO>BuSrUIX z-mnDffe9qMS>B}OPOQQkMuyv1cu)i*Y&Dg5m~WmAqjlOK1Oh=45q)mD4gq5oVa^8z zz#IU>dol<`qq~?Y$6Od^CI09V?qkfMF5=7SE+k zw{2hSbM^F#Lyp&L+`IrA95>U_5}*J!Fj2um*;F6~-QA(o;3w251SZyS+GiFnT%h2C zA!Isj7yCCBu@2dJaHE^`YMhdA4+133@yX22LEw zY#WLS-F?=rI2E&8rq0MdHY+nVs2ng0ZS2icX-R-MG6n$DrC$KssHHX{h$0|~j8Z=u z4kK8y2!Sr^7$K*eOj{(7Lki%<;8{{ULWLJK+gkwhtU^T)Nt~qVhQK6%_1jg$v$zRJ zR}d&x+$jTUwdk9?kRVamPAaH=ML-^{ZX=KaiO^2X{rAb;EU*KCk`N}f7di?M0~?&2 zjrP(62AK+O>R%p1D10jrgij^?iNOJ1aGO>`w15EH1m&%`g2&P=AP|WUTmtCwxb{$V zcV8Ti1K9&)#3OrvP$WhQ;z2dh0AK`=^<{{WZ@C@!jNJ7)@@yb!HF!Or2)Tqe+pXEP zCf7f*nnPuqz!Yt2qzok7lOGHbUpnAiLx8goi_RmA1Os%~B!p}K~05?iNkU_bzcAeUIHG$v)TVRX=$KKRX0C!Zoyjy)9U7IU` zGP`Pu1SxKpwQ_biLxr*sE&x&;HJV{7ShZl}3xs)F0b`ngQZf?b@sN{<26(5rY!>1M zNXP-71{2i zuve_cM1ctq(@o>t*tNi@00I?bFtpV=SR%jxttBA|Y|3WX&(G1EG6ZV5!a&^&J0sDs z`5vtC^kY?xW1q{NAtjzq>h{e+9fBzsJr){vAEf zt+Rot3;B%toP1XgFLxoF7`oK~V0R!c&`vRO?x@` zs;}NUdj9*~?P<*o2JeT1ymC}WeM-dTQuA;4Vvi?Qm_+&%r_(hQMf|%qJZ4x?K~eoJ zynb5@qKpihBJ&ckLsHgrufK6LHHgkz3Vw~M&A`1KJ@cE!(JFhZRPE_sw&eT#9beLD zF#VRMJoA#rh}2Nqwi+4ucq*GHXBdxx{#`byQ zBu{@&SHGvYb4MzooGa|Uw`W14mY0)%PZFH_C5$~SyTLp+@DnWUJcT6`R7He(HqXF+ z)|~etA|jg9qquh%>ALD21N9!$@$u>{_nO|J$FX_iIZuM;igd2yR++C<)Kw9HCz7;$ z-mYfEVtNzU7WxkQCCw@<9ae8>OqOO(m=tv5+U1(8_A5EU3I!4*a*1$dA|L;<&u{@lLD&+B#? z6k!o{?VIiOzT8AXxXWvj%hDg_P4&M+AC%Y1H$Wg~l}cC6Y{S>x=vM82j^TN{KV#n2 z!1lGzw{gKr3jj%T5<8&zmoX%-Wp`@vjg-3WcqjqR1rtf|axSy$wuM^?s^Y&<*ti1) zxOW`($sej2QO|Fu=3kGKo%j9b8+XYz3Si7&ObDpK5#U+t?q%uU`4mv!fspXY)+C7m zw?1dh_6#T%>GXeMRJst}bx3o??1LIXTyBLmfe%dBV+pBEPsQP#nB&3oG-`1kTk^Eo zonNfv3Hth?!>^+ZZ~GbrV|`F|e;;-wgh4-2?&5xpxd^}@7J5WNCFRY7VRE-P?-pg{ zzv`6r5fp%l<7Vp?Te5nHA5a3ikN^y*uLj|Dola!`Il)DJNQ z-PLQk@&2rnohop|3R{)2+0njTn2^rH;22NAT_|vqjimuQzhbtnX}90UMN}JWPDcpM z)91>?&~NL966)9ogpW6#<`AuKP$NKtJJ181lW^v==q%_Fyq&Dhr8|N^3>*sNVuXP6 z0oNif<_dW6EY(SzZ!4A3z0SVIeghmU!AeS-4n1I4LD^{i=A$OJ5b#a<7g|slV zIc>g+04>b}m$BrWgp-r(NDX620D!SL@LM?vT0ql5$p8pl71T&*IRYXI)TTwy1OXjl zW8RBv+$4Yr28sZvw9d4gP3BwatUz2wv7O{l5R>+ z9Em3gkcxnimNPU%18M1VE+8@^#l-N^a$sQ_90uR>O$iH10@;Aq=9C8GGfGDQ16?+` z$zV3eSZWXpAOW?|P?l`dxN=LQjgUMb6?oQ;P4p5oU=XC1+b|MQAsNep?i4Mo5@1{! z>0#i((_xKKMb%*;c@^+Lf@ljRBRXyMH3AWEG8mV%Chz~q0tF%%fGma+5Ef?dFtA$b z5E(;vt*O7|=P`7Fr@06*hW~JN8&foe4D>QqL&F|`)@T$6ZI{s#jn-I%T6-I(0wyAd zNp3R`2;ehm?f3Gi000h=kdPWZHT=ayIS8l(AP5di8|eUNi{oN_1R^i%6KjtJY~Y6= zTnW{LH?8U9-+1zXV8$BpU^rVp9S~rEN)lW?1L^1=UIIPAblgYN#z1gT6of08>85~n z9ldQ}$RvD13VI|d2>W2R(^Jl&3A4SEu5<_x7@RtGgAwax4yKNx;A?v(AOrhx@>)Ry z7?7F*SWXxj>Zlf$sB3lK-B1WlzP~Aejf6rE4+K@xKn}o=9v-8&GFCwVGupLikYgt@ zfp7#4HdU}<5F>Kkj*)%G z%@*K3kRbu=I>FHR9FC8Z(sy{)fzo%nJRGM3YpOb9!ORTPp*HNpq(ZWGShPa`P5`|t zoPZdqRK(flZu`s0UaY4 zl~R}#CA_y=J5}Sj!WeO55Q>7NfHZ4lv64e$*ajMKq{YY?gM4mE88qiu2p6c#VgLtA zh@e0Xaz%(V0;&fpgahr$8&_Ra!NI<^Afzt}MwgQc)(r#E@1sbeQhr036bwmp4 zfVz66-sZ`F)o@v39!Qn)t5E&gJ0Yrs61bIc~7TkO-|6qW&gJ^Xe zi32!HF`rzWI;W)&8q^5*n7I4KD)(XgC&+j6>Odunnej~$KjNx>U#%*V$FJ*&998=x zE^vEJZ(M})-4fx!h*zbh|D0eqq4rssKz#xRMM!?!boIUrm~Fld%Oesa!~U;#_s^I} z_5^Xx(E(-He+QhdyAFwn>4+%ZkOwYtxF!xnf&%|Mpj?s=L%#f;`xCp)?KRw5G1vQy zVK+9x>$kYTjvAxAv_wTwi}xs1Vhr#v=R25WEQ|!1OlaI4csB{Q#to+p7{#2#DvVUx zLWsmo^TKekScaksQwWo4%dnK>HQ-X}x0h-4*BigR@j49W`z)%wM|X;w-)V2q_}S!wDc#)vf1cnD zdh(eBgX>by*7+pw5a{wq=T$e+RT8wQ4)2EtYRdtcDJ*9yIHO@{+J2CAU# zJ{Ai*26>ECMNxYTRLbz2GqAMHZvPc`E$fj$g9(%fFfN4zaw~}UWykcD^2^`$>=|Ke zT@$m=poj=`C~b4PzOLKG!$2?uRFN7mKd<7yjf<;p@yk2ksTxZpctzcDV~p6-4AS%@l$1w}g+s_{|* z2m}!itC>&9&}*14`v|CgRK(IHG=P1)?aDBR_e0(a{m9kSbIO^}q&vzcQBGyEt|&wy z_8<}}cqi&dpqLZq-f(YvE;zsEFI02{tXDwY@i!fvjjH`80~Ju}Y1kDJ_vu4=Zv$=H z2ZL}E?2d8+!S5yXOrD~G-Qi}!Tpe=b9YCtENz%4Pi~^K`gPKvagOC{Cm0hpF;$U1H z;67~GG<1Hl?p}X$AYHzvj#A2`uk>DL*7smCTR}M}#p_nHjfG+Rp_A?B&b}5S0*IEz zaCi!vW0t$b_F40PhPGTEg7Y*IUnZPhI)M)vbR(~!mVJ3@J*DTzuDczC`oC*#-SF=& z`3AQiR{j@uMQ!q72}3+`6YMJ~!~#+};?&wMP-1&3s;B|kVo-benT%@LR29Xv$Zz>& zrJ-2E4oGBIO#4CtBoD=~nt~< z4svVhb_+P-*a*jw8v5DPQUF%MtEd+>iXVTV3+K08BnINwj8=doY>(){8zi!$=t9?; zCNC#nDIx}wI4qUY0il%Aa3F7O;V3PWi68|E@~+q_Bt8n^?p7ord_A>&NFfNwN=`7Z zT!FM8gs2sY1O{$l(|c?ZLIT)=N_4c41kEI<06_=b*)$l0WCZL09eu>)uh7krf+Ta`&|71rDr+zgr@=7*oE;tG00xMZ4J7L_kRcYp36$YS6e??{C_oC50K*o!g2F9`2Q}_f z5D|962LfO1b+nuV5JuaEAO?1bQBguUUQJh6byYx{6m#LkCuAT}xL6PniAyMq7EBzo zM|3)wmmn?}gGK+uf=(&RWb$X4E$){t$Kv1^dJ=;-s>C0XAa(4J@&zekfdY`1!zdri zR6FS)Qi^ypr_V-EIh)@S^%o#IE~l-;mqjMuReAlNRCIiEFyC=Z7j0Mw-*I6-jWLWo|qg~;`HV5rOy1FGvStAf+yjpdm^Go=|o?K9PY6zS_6 zj}SI1KEvFzxH1(MC;$iF*?GzcNA>PsY?6a?enqXVz~hpzLQ)%=GFd?aWvbb(2t@?Q z@f<+{iQKT_32&pVpqBv3Br48m@-kF`ADJcvb}W*$x6(i+5g=P7mCOVnVaK=zY5-8g zAsr?X1>$r&&v1VyCAb>!q9}MOIqyeo+yCO&& zAsT^5ZEwn;Hh_w*T-ZCh7*GK~A&IyK2hIy#VJScno^p^1HQu?N8;h*!4nRBDaym$5>1*+ufHmo1tD77`VgWeRbi@FnHw;1&_E0Dg9#N=n zhJh}5x>6JxU;rl!v(LxDnz#}m4EGB>QLYUtXu~6*Kt^lrN=$c1ZrLl2x_Lr7JsmtQ z$%us2B;BR)944GX-*gP}?l*8Js@V{NNa8BC%*_D^j;)cgue>v0>|Emq_b(q1J!^m{ zLUs=S-1CU(>s8ErWG-g3)LJ;`?J81Z{Ku7phiXby(Hr5~_!|z#5_*FV_;xX$cQJpB z&Co{SNYi;_>t>+?$mMtI;o^gX-W#t_T>??)Y4!+tSe?#~*hoErViBh^W?&1G07?|% z0m9%wo*>zDehZ=?b{YkOmSJmHmSRVHLECT@+*gH!{zpM>82DoOggvkS+bXe9C~JE; z9g3p}L-mM-z(jvj?8zbFg!$$Mb|tQwcLD2=oUZ3wf!zTd}eN!D24q=5-%KQG48rVQV z1PlmJK@Uqy-P;v$PXozuey`Q%#`7P)t&_MPNxaKPjxx6<8@=vA*#b0rYGKe>VFOJl z0%6W&tx_tCixd9dy?k8A`t`Zw_6XI z+TPvPC#-aQ{+Y6T{2v2H&*r68R!7Rm=Wz0HT_&Xjd2$gT&3Y`EA&` z?dm*91M~j-c>M6Tkue9{j6zH3{t3W5yrYfV}!4p6}zTF@%us0(*Zn;7}eiG#0YZ4?vcGo-Q z#^mTQ3UcKadj$87uZ-rGr6=2{(0|GS`N5+J-~LfPw+=D~#_zj-FWXzJqM{V^5D}tgc2os8(%$8JSU&BfsEfPrB)EKEJpM%h5*v=VpwETl}#mWl&`&$*XV1azUmYK9-#W(BeyWwoDI5BGj z@(?FI%4{#-8yvr}j`M)A05Ql=n$R0ym)r+L0{cIb7DIWk4PXePLtl&lm8{OpZeP>Pli{IXzHu@^=7S7fW#QRHdkVazoN|w8**K{pry^t%uB)$hwLIeaphOX zXk8Gt7{P!C_87w12?o~bf}Nm4oB?z_W^dV8mWf1iTN*O#szBELqJbU-Cn)W}0ceDY z|M4xPNCBp=+em%%5jcOugOG&e&QJ&MWFT6p0&EmqK>!adg{@qz5hPf(1R=v|BmzHy zhGD=d4PhdXVp0ILdYcU857E@jx943PO^tsk)FP02vSt4Rn8ty4y%up77T>9qz1k z4gh`<0?HIcFWC?whiy>e)Ya9Stm332gL{c^CH_E81BNaDSP&Qb0mg6*#91Z7he>=F z#5sO{H}C5$ZU78RPQmMD)x@|hx=;wM`(qNryv74s$YKySc=7C zq7q(J>g2oDIXH7G$;`Di`9M}76b%JmWpe~gl!O;SkfO;zh`}m>+q8~6Y7?`EOqscP zx&EuqI?M~b9%T$T^Uxp$E8+#zNkLrrrwYnkKL7#%A-^&x?$QK|FLq1;*Y5FMvm~=i z+FX)%DKG=FcY6hAUc;7r_rP`hiZkmLZ< zGjIoIqE+f+W106HTnNI}?SEkn`i zC`%cN63DDaAZ=%bdjei0kdKStSPVeG86L2~v9a28z3+(84Nj|}#5o=JAjCL45}Twt zggi##y`(qY71AVRA!_Z~*I6MP5GO{-K$G+eKyV}}03bHYIQf!7F=lS3MWm9@H8@tH zSm7d|ML|Mw^g!gO;fh80`vKfm*Lllm_pZB9G-8X7pQ{Pn3=Qt7se%h9W`_H;@D1NP zrRy2ZhNi~PM`k#u0HoitjiyFE?LrWmoF*U*^S($W<<+u~2Y8_l4P+XHZ2)76kXiKX z&c>3YjE6?@Knc=(sO7B2#E*5LgYS5FH(_y4^cV1tqyIX6zmP}y?3SIE*7o@rt}mYG zev8)osDlGus0ow_|-w1TXeu+|D*vvpZ15= zW%4v#Pnu)tIS8lC2Eh~`W%0uGFXU=LzhCRhvnKj zwu+HO6;xG-#rp~sXH@>%JyVlC1+Yi!pTyPr8RV+t_05~~oPrVJkIgtO3M4Ac=kxj>MLB7%X{D?Wy4_R)8K?LKnh5x}xc6!?X*HEG@S96V1qtNC6# zahfW@Vwkolv0dwQu&Tvp5u@Xfs{~jh#Jeop$koevoI6gRr1O7|sv0|YMk&60o(`88 zV*Y0H7^|Kq7b3+0JjK>$-!RLL%8^DoS|TDln`6>F4~eGtGu~fSj{)Iu>M$s_F~%T) zGl&Qm*6isI0~{lw{5il_B5h_94RbJl3Nsp8z<9hUbML|BY? zG@z=7Pwwf1hv}^0eGKp!{WdWDpY(IMho<@eAI)?AkIeIXJ0wAfpgQGzLY?!TK>#rb zcl>Lx&Uu8Dg|fb$?@2*z!R-{8`IujIylQNGjVlK8;|r&#hV-(f+WdqJIdReL`djd= zM}Jnq_~&r=JYW|5m1LY#Ye$~D8I~KJOZt=+y4uc){_D~Ny?f~k1RsI<(in$h==ood z6^L|vSOFCSDRRI;@OUtQG#?peLEYBF6qt;?+Sh9HCi#Kp`?~p|$7=PyI*}LUCnY!! z>t%}`r#?$)$hBDv7A*Rcr&*0?D)N`ya3F{>L-D(nEXXVw{Rv5hkC;oaECoKchT{1< zs_rXY=ERYP#hC%>+TzLZNV@Va+kOVK-qmlLH3Rd4rEQ)q2KiguE#sm&iL$+xT0aGC z8Ex&l8DUzSt|%bHdmAXJb|MVq^H_mQ!~op!Uq@2t`ZMOKjI}6Z6Y7*ca2%SJDF7w_ zp1~U4Kod{p0YE4LId88-3a$Q>Lx^(x*UMo(Tbd1>$m1{>#sdiu=4}N5M%_Rng)b0BvFjzNx^3 zw=;nvh=5W`EvlU?Y3PvXyWFu2*CUmJPM4d@F{*bor!LBe4JUuT?(rt~?*hmM!E|i# z)(fiDdntIjs0}3AT-?JA{(~1TBpMK@T+E)8Nv-JbZf~feDaX?2pfr!Ze4#R>2Ud@) zZ~&UQ3kwAT1=p(Q4!Qs>7=pZ_2;UKmsa?Km|+`l(u8*q>SQT z!NZDjfjX?gCn_;?c}>Bz1StSBYZ-g@Qb63-+AtCA&bHWYpn&jDQa}J|``u7M4WOxj zH6M>MNw6FJGX=1pd<;SaOkFVpX8AyYpg@&`jtz$}Z-MLUN(u%W!M!6ZS67-dfDqNr z{9sThSEl-{fJVOS{gV-hz&NJidf|tv*#I}!y+A;V=DHd;g~@Hr!|r@5uxanq)B;Z+lhVOy@Gmw@P_OX>6GGUlp&sO zcVehuZPY;4==@7@;A{%)I?)s;7zzi1U?I{HYRtRvO#<%|*hzIfA58Z`zuDvyJ}caf zFtFP2dp9gYo2U7sZ8gf)i<VB^zQJy@9pzFcdhWghmG8u#YJML;QkH|;7#Yd?=F)gxuKguZ8eD*N93=y;U!)P_H)^z;l8 zI#PT>;g^(LZLkoJlPx5_{x9FQ{A_)^v>+29(pIMkw%dnk*+6VwbHjzOvgLMIpu@=Q zK!L{Z_hjrb3*5z2GB+vLgeNn4U)fE5b+6^F+C%G%pF`pN=Ef=ozl-nwg0B4gKVp!L z>f)Sv8TLZXO;ke&OM-LJdYe^SS>Mq5{Pq#_Z-mpaI>&YYwb}ZXFn zx)b+9eRl&7 z*+6NHpCO@7CxM}(oxL6Tai#$RjfKDGA;rphM(P6+W@32Y2kI6r%06M>&P`(i)~-Ns zd_vK66E@^klmyK|G8~yr0noz>!T9{^!^lIsx0ov}eas_woeh@hTAD0H6Tw zFmNLq#4Wys1|SACg3xrP;OVFp?OLL?(n&!p6bMKJfwFmLl?n!;grQtqh!jS9ub6xA_o24aLBuhRUOfz+fY30l62{0OW`m_!#8iKSZI*-RAhc3`V&aPbX7;|>*r98mUyh+p1(O|PTjR6ogkh8(Qk^;TLsM~6`f=CMG zAWM*xB!nUt0+IkTW&rJ4DHsiq=VI3SNXW=VVFNX|kfWf01f*?&fo-qIV9PGjH-VIZ zBZ#jC$2o`%2>_iDAOnIx3&KXQ2DzEk1t%wFycCj-%$-%9X22e@2tb3k(ZxNt_&b)` zU;sEC4u<1^)vKMvauIQu%r64U5D2{-Qh^o;x@LOPdMtIle%g;M`kD)hAD%32a~WTeyDd_*b&z%9tqijq*+=u zd6ye6t=?kdum7KIqT^{^Q#U!}r5?BWZhvG;R{iBeSU$*CDJ_W}_r)N4-+WaBn+hPJ zfNFe(f~SAl<$LRMukEW~jppe?-}3ixU5UGWs(o8*?g*HYh>=qa&;{rbH74oW-Y?8u z&*S}Q8;B&kFu90`N)wniNf%mmU19TN8IX-l1i=y^Nk#-Q6tG`80Oh1mVlb8@+cxCv zD>5)@XD1G3QK+ItHrPoZEmQB9Pe7tTB1(gn=zL1-V^RQ^S3^-vGnj%Q8M4iFlInwX zlx}9Q!bD6J`Wi$5Wd<*s8jLQ{EEy)EVGiBFxo)#k8lx`0{~3Q~)($dJV5}93)KbJx zclKNpA7}X==EhH|bp=saj5tk0_-RpyB1S4Hh81FhfU2E$BNHAqDQzF-Wku-{wv>;M zO7Jgyh7=P6hyLssZ4SBZbx;|S&>@F2S9;EMwAY^K6H$iIkt|UdovKk@i=A+Sq4-_3 z_m4%M_m%ru-PTd(EIAw}=5*1yW<=$WXB&-Z^XSN(rq`+vpd z^>tHm(RBXPho6O{s)&lBF-WJJYJ!YYnZdZjRS{7c|6Ow79>Jonv-e$(^<#_adk)w0 zv(|s4-lWF;VPJZO1IPXL_%IR#Zx<7*($Ks#6;vxk)X`02o7d6ILr^x532XNXd6q`Rm;j>J@;rXN- zx=Y}*;8clh-?Kh4F6TLr#K8CTK>knOZtvE{WBChLl_Kww2JD#wIOgr%kI&il8!k*8 zE_HdK!&o5&7941J|6@xaw6qBl(M&9ZSg+pD^{~Zs=E-(|U51Wk0RgdCx_>w4FUko3 zwEfF~aB;xEwv~ESt9<+$Y!~KO)lJCs;GaU1RiUppnhX1qnQ zNY$X57yg2%;%$K1`tZ2rdziQx)(Gv8ITZRll>!JHd63#B&V*nPKqoEdFuK>?@&V-nWu1^~byrNZhl`_MaXg42G450qT9TZ27AMvcaft{Vq6*z9EXgCYf(FHK1?%vo zYHNbo5X%*S#MEwB-k>+a-zao-^_##Q2sZVf26Gf7NECvLKw#QlR9=G4pO^W|g?dT= zTU6H&=IdSY-X}?ks2y?C;O2K5yc@(FzPqdK4-ujrpET^bmk>f|B&%KrFM?tv!r1`; zlr|VK6zOi2wcF(=Pz+1DkjX$;#czxcvnj0ExzuFfrC5tKqb}7kn@*cyKKC7vjcg8K zgrU$wx3&;(sNuJ8>==Pp)hR20)oxPu!uLtlAGaw3Xy8PoG19D+i0yXnImCh4U2wMbT z8@;{VD{_VHbOXXb46lRaF$kl`cU=Su3%q7hN4i^A1tG~%K$cdeMG4B61`yJ5I|JvD zrzK#cO@Op9pay)9-pvf3o`g2*hQM)%&6hQ_OK@TU7*79ufX>QL8|_{{CgQ=Jr-j^Z z>kS6DIYtZ77{?M51>dY<04E0Lq~_qgE5_PF}<((7fzJ;oI!Z zr1^1KH4y?nQgwlU#2vD{MbdYkFU!Vi<4n%`1-2IQ9p{wd@Be!&zjgN#>Sw735dULUa*GiK6<35!&>T)^uK=0G-0ciD<)IVlSfnIVt|8Qd4a=xWXz411kbWy7RPt#M=8E>X-9~JNL70B# zup)qxRUO;Om&Ww;4ZautZBh_N6g^e~VBqnEFo=WJ?uh*zgngv}p^xl;Z{uxxz4f2G z67ISMNOGI`e@3sH&1To_;qxoCoffo^C)uS4l#`ZVhUOcsl7R@IpM6P0>0M{bW!3-J z>~q+i$*=S7*H~;#$0}faX7@KFi^5ItTGLzjg9IsxbQ-SNc z+)peK&loNg*d1@$6zOTT88MZ{#goPaed8p%Vlu;@@!2sm=%AQlN^7zOd%u zrj+Qiyq=2~Ane^ZyvDn|WVmhVKXn{PkdXMF68s?rtSdzHc`yVzid6h>zFf2NlV~IGDyIl@c$MYZd6wsy;UL zjKZnPvYZ+aB*1`SolKZNgo4ug?f)hlGhX&#zevYD##i4c-yt8>W#U@}VspJs$ueRh zDsB?Hs#v0~i&i45*!TFyhLwH|s<>rhiX8xzP-|61MfDcrxcqyKRM6;Q*=TMyC>4o@ zvH=qhl2GkEPl48b@7%u2ow6enYSj_>*Rp!2A?U68e@jy{cogBc???bq zIk5@0{5E?t`&1WSliI$cGf3AAkdH=?1Iift;q5P<{>8@LgLqtz8FjLY%wJ|afUtO$KMYLJ+RlEB5oildf}YNupru_l75yku88x3u zn8_0ZkEFP;O`_e!dJ@|@ijIe#=Z_f(#J)H%3>i2mNM}TX^B2WLrz{E`!i?5z*yk#k zyf;Dm$T{wxs`0T74=7s*=Tz%~R42!`!NCH@;nIRck> zZv$voEcuQ|L^p{31Qzw>+z<*p@jw>AJ-&hou>Q|0s2~xc0wa{9;t(c~ zhU*Ad#6sqxfY}j7e3)&B77=qdmS_Q`$U>$n5WlzKO~ES(1H7%*>NbFn071rl?{I<+ z97^Oc2FST!q+B;j3J$F$2|{JHxb~~)m1RI*&>c|YkUPYJ9qSkjAOW3zHnvbgL>bCL zL36scaNCGkF#woQ))tX;NnDj_iq5kd>dB8|eDzyp`$s6H$m1Rqq2wnRbf2UyRx@*KlA+oTeM+(8bwt3{9zxAKoS zjfPUT+r$0-mgfAPWLC=w;U7*9hAZGhh$V*FarsTT(jV!3q&ynXzcfaO$OumMZo~}- zGRup*uJw8k6krP|$%0y?T^^obSXsd5hsNcv?MnROL%>8oavH`0nggjWbFEZdUuXLM zymAeKbEiMkSy!2IuRd=po~K9xp!kYA5fQg_rJ*x!12A$@6r3_-0qIf z{9?*3kVXjoW>-GMTd4+wz(~1&P@uq^|E$83@24wNuE-xliD{}El?|J2ZCGL}qDl0) z4LuP_gDl{QsYFc<*$Hy#a{zg60*5tFOVrU7n_NW_Ad)s#jU>jG=2dMQ(V?jmmD5b| zFp%wDiMqP&ZuJr-%P(M!RnDRDxqm5|0@Qn|LI&lwnI-SnLXYuE)ZCVY(w1}qu}-Lg z1}|#RiCC~ev5Qd2+B7Z9>Y&y@*(og%NqVA$&Agdgu38K6=(MbyAEli!_?1rK0|KN{ z{n>z*qfq_NzIx(!GxAy^i0irvy!P=?lGgrHGAt>gsXn6=&h-F-W~pBIff z)5G%j*s#ft^N)|WeY5$@JwrW`dZg0&MD#5CqBaes^I41`xxF8E5ubC#qDSw2Ilg~W zC?*JH>r2#-H`0*A<&qIKpAA5;8=pdHLjxa_mx8ilc|l>9xx$_#ut!whnq*|fDp&>2 zJo}bs_7|;-BpUs)hW2sBM-QB(vkx{y3uPjdkJ)qtR#cY|@rxKtiJG066c9t&mFG9?b{`xEnr3^)U8xS2uBAVD$;aDsEaLws zkjM6S+pX;OH=7HV6PRy7r-ka`6Z~oICaqmleKfBu4HnQvW zG@`^s`-f?j-Z?9bLwJDe&&eEDO+H~BU<$jYmX~98=b$9<5 zDu{}6cbK2dnRZ?OWsHuOp}~RLX>DWjv|usQTj2gKG5ahk57m9o@nhot9*hXgaXGlj z$*cAIisN;O#ZSa|A4x-(rpMa-KUL1@_B0%)P*v?3i_~XkK9?uH_KzA!LLW5g7!0y( zP>$T>mLz4Zr{XNk?s=vkL72M4%HH3!@2^^z9VB+X-|N-{xIg{&)x<=SNhhS`)EJHd z$}JCE`d)S2CSwF0<4tx2MOJ=VP~zIgK5~cLyGlzl40q%_Q~nLm%wIp#i80J8s7Sy% z0tvuA-J~pi|HAnYOV4>B-}|$9ki5z7`R25N-ZFET#GOJlY8E~Y;z>o`A5MSH-14+M z?@E!AUU2{#2!s&W6&X_$1Zv0x5d)ln?MT{MtH;Kn^JBn`;(4@ml*QEU}Owi1i z0fYP!dg%lIsp)oj^qg*DNr}fKFQiG5CCT{kd656p@-;R}lTn{K;|mgTN52rE7~Mh* z`(hs0K!ItqV@CV}t%(7mVA2cdv_TO<3uGf-cFB~+;^#*xk4@xbv8nXW0Jq;Sn90} z&-;(6u6?;3&GtvX>NnJk5z>O6R$r~LJ!iS$&6VNfZ!x;rUaW%DwrVbG(*=cdus^&z zerMUE#t0*uXcq@1h+{00NCUzbKFy-+Ku4=l%&(ZlwL>3Sx6lf<14f+PZSUOanfTOQ zY=RJf`T7od7IdrM(*`1&$Jb$DxN0`|c9{y_txxiCS-PV)E(J9q2H%V~<~dLW`Zhj~>%<*8 zuymqaC!j92xLjV;E`US$0Hl##K~3}kFV762{Ro18oE;zYTDZ6^tyDIq9UnBbu&4~4 zRdavg)-)~K=o=?LbT2pq1WT|S0symJXgsapgBnRj#a{gPgoHM5>U-NL0L~#kydY?C ze=&$gI`R6W+@EnLo;3|UCi}9;)718^4R>#wZl$Y3C3<2fZC`cr7{rt$=*-!z?SCu(BJpvSfNkBse zo`!BD1&k4Bx`J4(yU|+6BnfCS+^FH6`9J{T0SSuU94ipy*ulpo4G=PL39{| zR_Q>RgoI+jNKNG@>*RXkfC}Y%F&WSvVRrYnCyAmEF`D~~?+`N<_RUy$_O+YJ5pAQG zR8+#ROyi{4LP;LWK|w9$7TiP!Chyi>5l>SlsE`J~0lgqw`UL^`M&iGJBK_VU>euMn z@XR~%2bf91K_GF5i}G)l_&9F&iqC^`)m{?a;57GfM|zTksVk~zQsuWHk}DCF$3e6X zJ^aoe(NZa`fqdU_}94I4&WQSovkc zelAWIPEm-g;;}#z3l?)=#y}U^XeBLAI*8Ed9kTb+N}zII=Ehm=sq1)#5pb|dmC=~- zG}f9lQ)(mSk&yoTGCuI=aCX;*R#l?}ht+|+NdydL&$swLb4hM>eU8fA%OI^R!|nOc z!&v`&BAf@vBEtf9s3E*gLl6;=WRfMb_rGm7!8$;)&(JvDYH;jYL9bw?ae5+upi?2` zE}_9lV7=vSq^+c*@4a;^a;&x890J*4dW2lEo#Os0rP5b17zwt8AFP)s@9upbd)V73JFLEG)8eb z9Z}!l=^cg)|8ur|o?cx3)}||B#dlLCE=av0_{2jI}{p0a0^!!F+5OZhgt)y(0}0 z1fp3}dy~3Usa1xF1k!?WMUt&|sAMa@oM3h!R!!iRnnYE+6Oq9w-6dH;dKR!>LfGgwq|mkEpd1(#T!U^7(&AFt3UF6}a1dR^4RL=>AtpvBS^QZScJ|o&a`9(E`NO zy)FQ+RQ3!H`gUgWDi{LLg+DH&(9mQE`6v|u3U-_J4Ihwg?D}59|Y;@6}YK; z#39Kai$d8HVZyOsu@m>kIFKm;J4bJh{9qp;Lb3$tJO9(C{prP0AaceRi~-Jtmo3Mt zF3C*_GThXrW(Xqb#czx?bnJ#f>IM`8pkzr5XB7+NEIiJWw2{tS zk6rlPR|eG>MMpZ?x>#mwp@uqTuF|N0ZAoVb{esx?Hdh@AcfIGBoBGuEmBSs;d5HRr z)M2jey-Q&WBMAhBDQGp+E0@%tv}@0YHlLhd8po7^|7%;CSbRlR1%!|GF%%!0-OB6p z>?anCPfA-gM}(Yc8HVOcEy*gyCIT?F@!eK%`IOHVcF9@a+cY(qFv16>)za&7EIktp zJT5glCTg={(M1*t6weu@(M-6#wv(I9wjKvGcK>2kfycI>1=9eG0@jutxZw~%9Ln*o z4|nus-dB-pXFc~jT4;DF14|U%pkD!@t!{)3+Hq3}k{NcIFhe#RRO!$hSq_!dPNALd zrJ5O^q2PLK_}cw2yjkiDG)cG<{2E%Z%ABt8zlIX~D0}iCUDaj@UkM>_w;o$h| z(SOyy^7Hq%Z$Ww=0?l?X@!YQ$7*wM7E&xmK>a3&fX(u za+XZ@SmNb*3q#N*5j#$!0fcnYh|KKUe)q-Zd!)%kM1BRXt16(3ul6%BeIr)`-hGSXStQfd;&X4WwLpPz~EAKLsa1_k(S_1&H@>on(5ho@{oKh5g=rmvU%%sc}i z$dljs-o&P@tR__l-|2gP&SC%j%`a_sM^Ehi(Vg|Ko}c_yvC!!)|2MpN-%GizvNa7K z-hX)(`scFV;rl^zhiEFPVn20;*^ZP(eHVb-@9`Q_O|Y% z0e5qXeSU%_C+L8B9<0X)$LMi8UpLB>*!lh>j`L6JlR%2&+12-c5u`KyBtrAfbWm;R zC+B&La2Gb=Bk7>q%wM~h7w_5Y7G1v{xR=hmB7*ljjB}S-)z3RNC`5MpN)zFp`SU&F zO;a*(QzI>Q=2Xie2MD@M`?bRS7X!^dqE=H-?ZPY7FMI%>SL^<{fCIimYdPUUkKsk# z-lUwC3skyvc}1UDoVV-UvwVIek?k)C`h(y_+|`fCWVk%_A(Y?}Y8?}t0j3(Le_mRKnP0b@W-Qt1GHT%p+M?n%}_e*nY@ zEl%ig=A5et6TSp)^K=ty7pNN*t)Ww4WXBjC|yIo|L4kPP1MO z3$-(ieeBBL)#6na4^BC7W;p;lKLnm24fJ$RT6cvBNsGcgZI;5 z#RoT?zq$wrbrd(YJ0|^GYlDr)l>YPkm~H)SwV=Mfqm#b6Zioi~V!4>BI8X~0@#wMA zND?O}FgFJIhH`*zh!bdZJr4=Pz}svL=Ko*2N&q)36avuK%v+A~Msf&W6dsS2eK=Gu zv@ab%b;uG*8Rh}GI$9Zq0$P>zE*h<)0BemxMrYx+aFF0t2ChAW0B-Q>(@3%w!KA?2J2C@nuaAZi=0HG;rR(mZDJFtzA{6UIVg!1hmo53XtgAIudrj4B(2NM< z5dpR$ARP~li>}Saa}4ObO}o0^7EEAww)&=c6AU1Z7$Tw{BV*uo%IERZ`pE;ul`F-? z6v25(tCQ}GOD^~g z?h*`_zvz^HM&kM-{QXI5GoffijLqWKpj57oXpC8KG};2d3`)k7(}|U zaPZ->q8e*$qk`2X7b4^U(=7H=U`AL>tL$hfT)lv^GMq;bU5p;pTbMq?=xmFFZJIb) ztklYFP6@Y--K9q_Po8qgZhqKte>X~dM|j~;*?zB|%yfU#;MMrVey#133;N3e837VO z7idN5i5T!>cP8XChZVMT9d3-+y0Av58vf68*znz zV>2<7kn79wco0sIuP}i>qjVgOzg7mc4|?h|^PN?Ehg_-IiYp7Wf)0>*feNG@yn_wo z5={$lL8|+bkT8hZe87U2^l!NlHJYprv(*ezbA;dB{H<;eK(AqvjNTNEq3*-w` z46=zZtmYKxWyD&e)mz(Iz(FICm8)u)6843L6ml40>Y~|srn(iC1ryvH|B1r?Kkn$# z{UQ`actW2#D8)~RA;i2H-b$FD1-K+9b!}S?rr4)(}?Y=*s zjft}Dxl`}-6-%IN=Ze4v7wP3j8u0=>A;uC3-}t}}3XemWe`-qP1DqzthUDNlzqk5+ zLpx^@e^Fyb=R{HEFd|El`$ z&-_BE1aSG*U{|GTqM1{~^*yd;PfpZD7gL>#3TmZieL#XB9w{T#cz7g_icsc>kuPqW zv4|8zHQelG>#0A#^G@%=+80w7+X;4kf3bHnyVU!hv%kzWb7e$EL`6n^r7Oh0Cm$Ou zn2hv+F?80-vo!_-@;~$WKX!J14u>`1e2U>@0sc~m>XPG*TkGQo)&HuP>wbihg6C0w z`-?y_ny@Yg~b`vchS-jgW5DPz!BReqgpmW3a zvx~EoW&9h5`r2j?yQ^;^%aUY}$&$L1+)F?9ILEYj*U)^zEr+vsKkL>sUv8;Cy2SJc zh1xm6A7kG_?$h^4Pj6^H7z-Gm;=UG>@cs+qG7Qp!Uss~%c?M0d?*7Hk;cKo<S9M_(Zp4B5Hn)pVY3ou!Ozj*M`bo+$WPu%%EdxrHE zBKWJV?q>IY*Zjms^8Hm-{aX+HtJ&(E)rmF*0fuvA$)1Kj?r&z#j!m?{J&xJRNxLBVh$L| zZ=sdGi7X(BIO&Le$YehH?RiJmy+W!_wSW#wowD#OQW7NM2DBY~%s!2K)YIWOfXcF^rCWR&ecmMY>Ewn`87uQg^Qr=tioC+&~oF*2(#cZbm0 zUN}}@I?{p3Lgj3pA7l&xMo=haz5Rv)G`C1il#YBDHbMXh)vnOl>!@nKKY8t5>iHDx zp2>&~J;lRxHL@}{4l!#E9!~|LIK~1Q2Wz9X-8l78oLpb5NudbnHj9VeVqpp6v|tDX zj)@l#lU5KhggxsJ@0=6h7QmO;dQ>3EBqRL*GA@^|}a5{Mu``=68~xl4>@CuEc(IxcPY4r5dH+ znSo}c1x_*GTVjDjAJ5i#3yTnfekVkrP|>1CxPJbf7V?5VuIpYOpW*O7K0d4U7A)Gm zRisP-_xW08;(@*2*Pid;NPCHC3lS)UAgc9QWr%>P0DGR%sf{5Tv{j8f>mWPVbp`7G zqf_a(+^>PBHzEz0%l7SCkGdwAS*UmipAumK4)CGHJRvzzEeq#J2Gi?NQ8*~IUaj&y zRt$N4Pdo5~b!LEII|@FDl@GKV&_^XCCQ<;ZnC}5l3!yRJ#A2P#)g{P7yLae%R_JH< zvRW38$BLMsz zts9+Rs_wnM9V?f|`4N0_EdEL_(k~N1Fy^<+&qFaM9FywcH@xIfVuB*G&CGhEEaAi_SEo`B$0Uzj8#*_wFMA~7*^fGebOR8 z-%!$Yxg|m^4~}9kxX7OTW1Pc~j{LT{4m-YjiESd9wy*UmY=pDOMC!iM_sFsx$FEq; zLC5MgGt3Yz+qADW{1vg8Lm%g}Ojjj;>a*M{Y(&fh?_HRUZ=K3QByueaeXqc3km9pna0tG!1 zP_D56$yDVasM1XH(aU2-?SkrgWj5Llx$DEp-<%8};)5W;&@ggDri25gR7m6j1D!*< ziO3j0JOG*a1Ts4sh^lA%KDOvT>2SS9`WEYp@4et-+s1o-IkSo9#+auq#Dbj5+djT0iX;}mRc~D zW262gC)Qf5lqPFYCG3B zt!%%(_#f9+Nv5zb`<^w=w;sWKou{bMy*+gZkVB;XrImfl(~dh{yBfK298Ft%KDWkk zG-#berB6o6&P_eKVj{+T{<8$&_BrkYl!tNUX|bp_=%DhfpO_~^Fvm~kF!l%ZNZkXm z=lSiuzgIbOJZ?0vzVyft;2mriAS)3fDBwhdVK1NeDv{77flrqMhgDU3;&KL zf6C{d)??TvPER5D3xn_@`6O?#N>KRc@VM#$$c)%}=Ri47>A`PT*8ewq;D76P{500F zSoL=OOU&0TQR4Qcz-M4PYRL5&f0osMCRmN zhG>#s;z3;wCa2V<$n%nrb+Chm(ywRGm*@7!yY>lL|8l$R7J4zSZ3FvHxsRFhXuq^l zVH?zXSArQ1QNq*|^h5*%L~`o@pkogq<|o7Bcb8Hb>fEc9hQWGy`LkP&j2v!Llq1z*wol8E$S2}|*0 z>^aq=uKua9*n5+?+>={k$Ym!5lPAEV8!n|^ujNhiXR7@y9%TB!*@9$8+&7c%OP_>_ z2QzD9v}x1s7(zP)OYlP_@o{)ws*D)KM`f| z$Ultz8sE+V*lDEXzTv{V;PtDBBB~{9!$*=CS@ihX^BRATX2uyDqP+j*m>>R7iW`+- z!hLU6g}o-3zswaHji0{4H7Xm6q1ORfp)Fl|C{Kkg&nX~QfQJF#s76p}k2(~D3V{Sf zJCKl^x;MsX>5o2lkv0-CXios_7PDqUrrctf*ByZlIrEC5o$!bQw=zrN4+tSU* zXOo?H;yIoZwiOOY;O?K(=Hsw!J&Y*OP}g;gu^=CnCX7Iow{LgmP?97-AP^&BLN%OE z&^R;QVP_Hu5RQMQQgrA$ZIaNF6SMaMs-d*s=XIFBYG5&oeccNKwaOpt!dq2~{XE`h zUyyd*JJoV>pL4N8cdL5z4cPW5aZrZZ41|BFm6mzR@l{O?+G)AZzIFha&XLDncd_*y=9C9Cm$I|ptTV~2=Y4#W=I54 zVpV$Ead(SiXAZ+24J2aX+$&;UxKKt_b@Uno6f87b(;I#QnDM>x91N~d@%-irZ4wVO zYpv5HjxdA!?`1}HDFUJzm) z;TM;n8Hv%E3Zfh9jPHTL;3qveJ$60$=JMqBA7$Db(bc+#tKNsB2Lp%gHu0G|1fY|b zmfkZ5jw9fio*7JAfniPoLP++0BbKOYa2U1!U*Gp8mt|uf%j4B}tX#BFkHNAX>|A$o z#@y&xB|0I|qp|6l08z2BZ|q*dqY{t>2jjb0;o%-Uc^u5GXL+7;F|JYCznwtnjiKkaRyczwzpQ zeG$iMsY`v9<6h)OZ}TkLN8{$+2c4rdQ9C>m(EY96QvojeS$grH$5nF#3k?{q4)eR` z#-z3W73^IzjS?k@_}-+5aE7%7(DXX>4^n;Nn zxI;y$-f(etGl{&YED;S|Sj%D)scIDro7{+<0G5zZ)+*AFkr^d~=|scrl7su3Euplj z$tw`M{F}Y={Np=^JYT=6@iploe2Ls4W9gb4YGsW$au_UcMZq9AlTaSoUb=RUNw#$* zY_t|_ru&gY5*f9=g-bfPw91p996}B>@qo^8xdA;2LT{eQnZ6|!1UP!xx$1pV2gvk6 z$Q1c)^qqS2fh-^&ax;(n6T>i88}U2oiDn$v|IA8-V4NPNV)sZQC>%lIdB3jhAAu&6 zgapF;K$6-is5e(Jey_axab>M1=TQdmT(0AwpQNg|a3uuH%chV-1!>K-xKDu#DY9be zv9$`HGAGk0Z!v}1sYH!&^{8?e0+&f0H>oF7L4fc0{$cSCk5Kh2KJdKTW=Umy^ zk%?R$PiRWXplmq_BqB?=O-@x24W@3(vlNY_ZnONK7O+#6c&XML=zTC{jwKvap5* z=-M5MZ>bm*1Vpgcf7NGg%f3*hc&!+YVG#ScrK?r%_8-gtcZ_ZK0~k(cf*;iv>!?t; zrJCqq5+a#SWswk_RG?Z%7ynFJ8&Sz-vRy7QaG4+a0rJ=uAUpIag0Z9 zmI6f&11zUm=^U8tM?=Ay|2r-s4Kav3OQKNo+IW6@(EXM7wPWm^s|K z8H|A2AAfjl`K+y#9~Zyd`WH1$N;1mIFWwt?6Apj(@ zLJ2blmyN;N@3ze=Mgid^9lECpsGCS!rrVfTuOY1P3gtAMmD6@mpw!kC4G`)AP1muu3;;M4j7uxw7#W1Lx=)0_?#U=ktd;E>gB8=?GpC;rQduZ;Jb^7C)@t> z^=N?@52sC|=Ji8!zNbS^`njBrT(gzZ0|3$b|EI&gnYd)Z8jBbhmNO{^qAz<1Z>=aAtRp(O&PgXpAYPcPfT0-uKY2g*a5?>! zKG$z2pJ`3&jwuJX1tP;NN$-~a1S%fq{wmy1D{qy`iq%0QoFr3{)qfuaaw{=!AW0Q^ zAFK4?XJ~VO9TY6e%5*BBJpO(~pWwR@QHq*j@lTs?VeWJ9KXS2WL{rqJYu@Xm+fv^(fl2r9W{ga7A zg}3k{JCnxn6W4JNn4yV|IglQX?v$AR{n#hr7K?$Y5wHo=Tk6*br!_< z30U|4v(fPrP7QfUv4Sm2q9i_S!yeW*wM7z+>|<|DxMY7^a(5;!lb}uWPrGZ~9uUo< z{L@;I{)kp-pBe2=Dm!JX(wVA=igVM~EUBA#ynlQS19UR1=DRIzw-4X%!*s7q+QP0t zf%SF?^}e(<8;o9IwG=d3GjI?m+my?!Mm`IlWxs_!j%rEmlH4z@+z*g@Hqi`A@PpVL z$BTK_efD;q985bGixDSEN4Y2-9+FUOKY{G4VEVE)`)$6hpa00ko5b@!ZsnCfCaHB< zM|t?W*nhsgs4GK-N7elQ)1JkgIoo`UTdz&Ebp1$SW#tOC!}57P96;2@vS?f%O=CJl zE=D3t0m*6!WS^>eMp7B%LnPfJlm;0d-Ei}KoNkDQ$cV+-11!$kGD{&4?=jiR40**$bHKgVyw1N1fvS_DSJ3)BY zj|h+#+bC^uAjBZNVWX{}!OR+!2w^bE!lEvOk8#SD0$Yv+dgnIRCCXssXRVYn5&5Zv zF~|k88;&r55e*g@F(m;3UfG|pQ2iYR0C4LnbEDv6chYB$0cP6+q)q!chPJ7Vl$ne< zy$-GeWey(uCdbIXvSGLKb9?V^y^tGz3Kuz)A#m_;s6y>1Z|OoC&8n1C25}i0SeRit zJaq_YZxkyq5n3!O%R`qi-2yke#Q{A}R?_eJz|4}OfC{jU%_uOjWS|5<=Mn&IuV%`s z%ek292D;>PajB>M%OGq``X8JcL_S}oZ~mvT-++Mbdy{}* z(?Y-_{Z^f;t3UZWVGXQcRrckyryxaO_bd6#PN6Soj5nC04K2d#FVy^=O6ClG|M^p{ zjDLQjm%@JZI>rM71PE9R-QEcZc#Zkw&0wQbf}lwk+rCS79)bJT{}hn5UdsRB@&5?&hh4K6(q_CX=ymEg&_h7o5 z{m${&PW(}B8A@+^p!vUR4^Cx{xoxvZ<*U8(Af0}4v^Ww~kZbWc=C5O=>-7oU zaDgu$6DF-01t4HD(g=x>lnpU%cPFMFTlr%{XqW#d zi;+wjxNa;>=I-|SndHVDd+fYR>)3$fqr|x&j$^oRj znNqL1)#%I%2ysQ1ut4+M5-$C%!GP)-qG(S74+fH(Ql`J*``Cwu@4WkimFU~~@OS|1 zAjTPWW0)VU*>oePda?7;JV~|dC?p$C=$!G85|A^R&B@5_GTK`y$#L9BTru0og}&=X zvNmB-ap#t`B!Ci7!5*$^YUy99U!3!n)^=;R5XgUvttVLcQZ>OAzJ|11*S1%wnl+~8i#9SVz zmaBZ5&Vu$uczwo)`O(Ge+{6ByefcWz`}cf7=|p!t1X*a4{@t_Ai#q_WzzR6Mws$ED zQkg`i;OF?pqysXv3@n3~Y-!93{eT#~0%uH)1f`xe(Xe02PGs;v1aoSkC(Nta*rMDGu!0qJzcW8>iGKkg zgiz;(wVl#&nao3^kMk#wKEC*)uHy9>I@}#iwq72NLUB5K);!G#*X!b;4Uz_kXb2z% za$H@sq{d~T&)^7e5T1RY^j!SaBRU8iQI?@75T_?4S?Aio|b*78vtNX&k0;vi=7 zB!d%-z-y;^79>uQC45fS4x7vPe9vFE)_widh=~;HdcUaf^FGV(G~y~Rjb}>3{5*5Y zIT1TqKPIIQaxj6&)YVGS)|L^B;~Xy#_(jJe=2HCIbK(j{qyhxd2yh6E+eQ}=_}-Mu zS*IR!-|5-!A^6gL?J9uS;BFcM5H_Mg3W5WY+7vW@`z;CNvd?(^)^$WsV4%n14TmN9 zt`+@n5r*Fofy^LL(I@H;N$}-5C;J>PT4=7IBnjm+8?JN#J&E~@K@br*KzSlVn-lm@ zXM0@<-v@>3gZ}`2AJ#4}e5WpAdR9lIl^ry-W4EDC)_=c3@bx$QTTkIsi2ZY_!}G{) z%Q0wWj>8=3Q-&hh6eG8o6Yjq4^(ak&vpQD55{XXs=wAk41eR6dCU?83T>X z_sMS^ND)mw4}+Np+(>u>J-W?W%Wh*Ki+4rA_)qXs^9!b--h$;Nx1QhkiE4wOd)a@V zf-`G1K-S?zARr{q(_=lILqLkM)yqIr*6N(zHzzNyu~+842PULp8UGKi*~N9yIW>We z6UXt-6o+2l#Q6~1RBGxGY@mKuRNVv`xT;?Pvoxc~pAyfuHk+p%Rb;B@SRGrbpsj{j zez|6NFW{n@d``pdHty%1;&tee>)aM`O$nUo_e1aNMo7H3OgHeHjZ2mtBp_DTQT{Ib z4_n!(PKsZX;isTl7(35{t*=Kn75f6rc&KrkVs##tA5+XqvMUXArHjuNZ*4mSirweb z>WWr%2`CoxBlt7?dcR6+R#sE&PGa5k^7fL(z+(sQ`?M8wE|5nW;J{sR>tbHE7=YRg4=Q`3rqk$>? z;%Grm z`6J|U)BR@QU)@P7=M%F2QMk=d(Y3qI(tBA|y0lc7F$PTT_D4s9>A?HDUgMH|$CZWC zJ|Sd(BX)tmF*|P52n>EO(Rq?7HT1VCl2fPm%B0piWySOzJR$#cdk*=lEiiKZV$j!` zUMQJI_u8&+WB%`nd^XyIKJV#Wb4tE*@WUexyjv!RCep9gQsj^GaMoj=-!uLtSX%e< z*ri|5tZ%z&wB%*u)6fz`08V~xownt3LGB3g_Wd$ZtB|<_50KiZS&TKYv1%W0Z3qy;^6@3N&6<>d+X%{wcv~a*7YieTwH-rGz zTZH+j-LC^XY5*S?$J2g%iIm+%AjU#sEt95FLGMJdI3l5YJ`FyHlS-{qs@xF0x!aMA zlHkPY^GZ=#Yw&>BRWQTXCgFvkgG^IDORG5(8l0A@*U`Xg#CHGTlWQ^%n0wE;%kB;H zOyk4Kkq%*ZW8cNEBYoZ(|A)5?-DVqTKJw{J_UZuNhlZJcwayCHq+*Z=fs6q(JY*jv z2KDDG9`s-VdNQH}37;Cmlr3ntg+vM|Zdt~4Q|MJV>1F(yv;Fg_{Fep6QC#S8pT&q+ z7w&U=sKcv`L5ILFM3COcVRV16w)ePu9}=lA#<|Pn$L!r*DhLtx=H9Nq_eraeU_vm{ z1`I=-<*$p@rn+|lT(bT6ZfUJOFizjMpG}4lJ5{(!v2d0W6X&PPYFE83kA9n(o?iUu zd7NW=_1N<7Prv>Sgr{L|;o8MJBDv#|pJm|je-mTyzaz@(D~3rqE+hySZ~Of{r1D3g zSLlB(8X-lic!O3Sm@+g%p}rx^=2URpFZ|l}H-8Hx&#$JE$XFo60voT|yYCi?_uLgT zj&%%y=FN_!mbyX#5M`W4z$XGa7R-!v_^uEUXPC@gK*!HvOSA79p;bhs9jyzrm-)0n z*DkJefI4Oz%^G~l8ddkdWb;f&hME0+lyJU$P~=Ghd!h;Tup&eZ%NCtfMu5RYIc2MO z9>-w62yWe{Uc4Lj<#Z3Hr173Tx7m!u`|fG^It6*uk> z4K8)Ye81T7`i1mR+eonm`jejmvFob%3J@vl(V_mZHh_8q4~)McD^ zm-UloB=f3-9|OLU)@m(a=lVh zMnrcw@K zStb%X8ThUu{R6Hyb;!6$j-vI1*o1I{Q5u0eqTjnb!U0oDGi^4iW_lk^yQOYzCdDeq z4<|=3k{rrNOmp&_u1Tn6FDwvH^Ei+S4(J3s5d!{osVAS-b7>o^yl1GpdDLWdi(5Md zqS$)67SYTLjwg1TQucBx{I5~@0><{%xq1lQ&FQ;{U5Y{wegAI?a{O8A(hm~Y9krBTf6{r--7H@QN|S7mRrRBnM+F^H za&|}d`M1}>0p?vb^l|nGtuHt zZR2wI5!hRqpC}X1`2?Y~FP%t!b%mT6fqKMxE0*m1wJN(V+Q+83kDADxWPKJo45-GB z2zedZu=ATZxoH^}+68B#_5o_&3X6~Zi01u|-#$=3cC)z|7`>n&N&c#y(uvkpZ=v)Q z_mV=%<(u||i*_CaBWJN}$8y6ysb@^5rLxaDFj+JpFHhHo%smBdyb~uZK{yi`^(mv`d-U)JQT>&5?x@c1T-`?(0|N!^7z31caDM@z-s@+D00794)pBiY zoeIc>4{3SKMqDfmab@N)=?%%3Im7r@K6UvkV2>)HAifn89_9|;+q>H3P$>}B5CPmM zMAS3{oR!osM4$k$kTwJY0(HQw^!$OP)(XZZ`2L(FBN$&aGOf!##;((ya5gJYhe%|u8z&+JF76bJLfgeS ze&dzzIc*?9aEU+hv(D$qZShb5bw@PNOQIzf+c9O7BUcg$mk>S3#UJtT^h?mwSwL@t z+qWj=kU=(Yxi)Z}ei~RL49og48;hKOvs{I_fzP1N%|nB|!SpcnXl$gf_3ShKom^z{ zkS~_)xSFIa7jn@QfcLM8s(o)}-2>V3w6Bz%{fNj|1iV<2vVDGVCl%}xb@BY&d7Vrz zXD~3s3mjncZrJw*TFEvgAlhgM8~vIEK`!&yQ<+jcD%m+jS2VvZCtqS)QRj2r^-lxu z{gc6{c<#=DHBwRsv4L#51rz~@%-4qk?RR(J)q854Z%=9Duj$K4sYClnqG5ad9n47{ z^&q#16P;zZ{eSS$%hUH1G_$OFY!*d`!||Clu}qn`K-F_YZ${?^eU1K<>Cpr3Q&jUk z7IJEH?)`?qn{3tpHl^(T*I%ylHLMs@rXG;Pc-#mGbl|Xx%#tIXj+C}bE|J@}GX351 z{kmq0o}ai0n+02?favS?GxagxAmxW8*5F&$)$j}3^?Y*cJ4YOe2E2lL$un7sw9Osl`5R3Ch1>4 z%oYJ791c(QwEbYXC8feyM1F)wFW}d|z^7JrNQWgA=q(Mmu&}#ip7B1_S=2POYoet2 z4PQi@_;vzv@ed17sy>A%!BI!IeHR}u<8s3azoTlXibVw?#Xc3kNQOQQuYHVrOs0;H zr^nzwYu{Z7sk3kcttGg@c(r-46Mj;Rq!0C$F3N&=g&V$9T}0-;POxkQF@~-{b)*7o zgaL_Ui7q_bXa>Q~d09Yq{q)77&lnE-sF>}0Y_}UZjPqsOJ3k9@d`M{yFFTRV^Gv6w zwb4quhL6-(~ z8no2Yk%62>$N64nE?nG012Fp(!kvvOD;_UFfT@l>`wV+05kcqIyu9P=f11@Ixy-&8 z!)^9_mKoCsWnom>vEh5r(ArvYIfQS{3 zb%_EF#mvSB#14pndA>#vi}p=5aN1o>ivZn+gW* z2Oa~;i-d>X_?a~fOGo<6%yKg-I1NG%A?JY3 znvwBF&Kt8dE5Kd0;CP5m_A-gdA1o?(Q$;9y{0HVvtp8nsv+&&T7PBfo3TippNtfJbkyNf}AB4wL0t9I3gimlTX;lM>q)K8*R zDRrdskKSObC8=`Nc*B=LF%zLQEhm1>M*RG!Sf;Ck%xsuN&7m*Zd72nDP@MJob!*Oi z`t+4Dwem}ngfgDRi^m9qxad{@Q9!Q04tpphR)Zo6{ZgLvPIqa*rd9Ll-9OKKNg{`^&N1<^}n}M0$kP(ND{~rc#hJ67i zL*>Vzdw7=3&5CXqzC}-tPFQqD_wjC2dpAoEPW5Z)L{UZTvkhc@ffw8mUEwyHM66@I zKh0%p<}F=DPOf9fj8V@8>TXZ;zK9j+y>0z=HW_?Hxx?Mz<5$Ylz&YGo()~xNsgT-) zY&Nfr2RK z^gHM5U|v+RGMarGec%qdKg}RDOOXQqRqpZ&Nz& zG&fzX{+x%u`8QcOme0j_X-9lo3!nI{3%aQPe=}sl zL$gF2P>=yRII@VH@y9}?K73HMAE{y;I~ht^8Z*jq-FbQ9ra1CClapH>oQvla?(3Q< zgP^Y;Zll7Tj=&=+g$w+j3` z8qS712vIb<_5_oRbm#0<$^2|8QR+`V`NNsMA zl)xZQai)V4)LyJ+ge-{&4j`aUB*96fbKoupdq(POHL5fOEUJd1rMY8(`_)~v0w8jn z%7DFb^PiQH93!Mftorag5&EV|xQsx!Bp^*L9kYZXUx9Hr2NjsOPja_k6Z(WQWR+;G zK4Ym_)5PWaVXTG6EXSJ@sl z50&4#W$mHtvV+r%V{OwfOY(mOsn4gv^*EN&uL%-Q58!iI$oIA$3^#o-38LI|J1=uD zcFNvM;h@flL+KdJm7#q`o##G3&h2|>q~-)BXiW$5%tZU2)-q-@&0+hbdx<7bs2N{v zJxVk^bh_J|zHCQB<)05iqqtNTSrh2;K9kd#t#qshxeaTzV5XgYdnkLX*Qct26`Ok0bSPl#@l(lOuv764nHNs$`=uKuakhE~1;H2Nrl zCwogr>Xy*K$Ya9t5FF_i7Cj8sl0be*5VSCM97g2v%Lw~)K}XvD=R3vwb(klvWJ7u= zxWzuL-*KMYU!0|5L=9N4QUQ!u|H{}c_&;MJ*|2KaJWWFm7r%}{%uU;}8BHwrZ#ysi zetLK%FPYN!`~Nm(M%(&PSi(BjBjWP(%wyDt!=YXOU*Y(wz`(bY>x^TqW7$zs10khx zoLmLU-UN~#|8bcSqoBFalEU-`0Ia64;esognNz0Eu%G)J_8xpDL{?a}(4;-|CWsU| z=ie`+>|7B60i-cgEMw}_5Fq=7xF9yJR5ynA-{ZHd>wAvVU&goO<#-Kmu;)U+0SqPMuF{ zshh2!ud-){wU(>#T)`g+D+O2x2n+Z4`dRvI2u7tCIy+AmZF&NLfP_+OR#PoUNh!vS zdm&Njkzbmchx@P4+&6DCf9rJYImjOH6mcT2g;tOheZPmKYW^D%vSq5Kg6Q2tJJ9Z7 zl#z7BWq(m%kJ4{3=63gU@Kecsr7{#) zkA-Uu^C~M7#oi7A#YIr^wyJf>ME z`12>xAh<;`UGuv0^I?YYv)A)%yWZyObAKwIgZX$cGd{HPI;pHSlAgz+kI97U+IS#1 zqNGHF4QKIPKs$BR@G(Vz8ujcR|7BRQYa0U@TiMXv%FTJZp3)bR$zMKetKy#3gPOvY zx+M1a&eOjB#H3e?`9*&?|B?(ES$(n$R^%rYgSBR`MXWJ@9b6=SfrKt84@>_bx;xHY z3CaFU!$D_w!USxwewj>#@-i!G;u(K9HJQFct8t6jX?J-H=2eKKCgZlwigOOmQ6sMN z|G(z>H?{t9yvP1Z#cWU|8iGfP->$kJh&T2W`t37nPi8J1w7TZ>Q?e>E(XRrwdJ(e* z?kBzzOe)k#EeVjzX<>JM&z-Ju=*54_nMduSSiv}$*hyXko>xSw#ZK6F5bH3UhNIOf zUbFf%n_4~)rm_F^l_x0@WXMwYKZhX)FwuGac zj#OK^T^g&05bvm6HSZeJtlg9uk!iYuO*Wt#Uk~$rwq&)}m+rAe@Xh<5FU6{`8QA>-lzT&ES8cRI;&ERG8?> z342WW3Ed&sPFSb@4_M2Ih=4HfY%cAg&>?t5i;z|P^Bq#Dbo*uBk}hr0T_>PRY=4-` zP$i#ZO+k14eoYbWexR@y$yD2?gz$Q^f5l(@oqfDk(g20W?TAd#l4gIa#~1wut36Ai z=Z&6UB4U8pzWd;7I^GqDA*|hQ=os@o)`MwCSO0A8Pq38tZG|?erAms`@=`BajHgI|AB2Xg|h>%MVpRe4bLDlPc3iJN{qYJ?MdcoN2Z##S*@3zRU z*as{_$aaHMb&qZ3F_CVXmM=5?MKe2w5F+Kyo!dXQh3na_Hsh_*`yr8b$*_9fWK2P{ zz0MpKPUXN83b=|sA=2Tw;y|$ zz(&_zVi%OLdouq(^629-y#j=F$`f*w92%iPgD%hFlYszObDMKgm7x#Q<$c(qeAeBs ziBs+#yp%FIOaIpV(F1KH23|_f7?2r9Ma6&K_$%_|!*`&Slmgbcxi^Fc;|9(MEkZ(A z#8Bu6X~a;oZwQ*03UysIlXt(R=C^slC~{EkI$I73YwOq>wBa*whSF+(Pxxc3=g`5& z@%zkWCrI`CSDC}T;uoPV;SP;D1e`r<`V3h%!skTO23?ed&^c+n*1#+={__C|H@7%l zIRltL3zpr3v?P*mA6M^Og&Rlp+Wn3oA~{>_+O-=PoS=_!t}D%tDZ4@f;fMuGfukE^GP z-I6nB_HUcdhE;iGZ8e(4!G zrr|+6!V=%fy8Tc$S`wp_Z>mGYU=tv@IES>IoHmCIm_hl%|3l9lRCafbbS&0ZV2CRr z1x17R^(lM4MglATd$am{&EN7~)w{R~ISfo(9~nngkQ&f`91Je*%jix$OeS&nbqFBp zXc9=oCN>a3%r`_a#0<@E2ehYa2KQu*+A)~*kO1YwQGjVT1I~wc9>}_3Bx7g39y;rm zAU>#-=>tqZ4>voY>pBe)9RRN6kd?w8Yt|>KD#i??7CC0D*0vz3QHET4!lZsgdCjy4df2<>o5~_c_|LR)Z^F{UUnmWHoj(p=*dF7OXuRRCviLwOYpsb3UR< z8!VYe^r5HZf&i-FD~j)Sup#{3zrWT*2GMn)?{|epe*=%sJ1%0QG_#mqe7_VRu&dxw z)Pa-%0jr(iy^vWooiEut^o+T<0|`MOH;7;N885(L&sUL{%cD60imC*YcsJ*$gP$4t zAubaa>7PdUASl*h*4XJVQjUqL1?j>zpzVLT#U7**rvd@A_5QvW0lk-eX2Rxg11|em zt9z!_zX2MXd=V*1x5fTMfWzqbjyx@kH@=iy{3O+S87smR@TSioPx{rmaAnvPXoMXEK{sTl60!jRp@bbY zymZt(#&m=OHJ9-m=4Gh^eJ((9xdR1aGW31aqNldLdHA`Ycny#XcII?Lu^C95nFa#(^3s zlHIqZs{l-Xw?|CHq11M*a=*#&oX)_sY!w2Gu#iOIIT_YY8j$zcg9A`tw20i)aJKy4 z)P0lp+S!7SitD;;WD!9{gnK_L(Czj6&ht~dbz+f!6@@(lQ4~(|eT{sA_^UeisONHf zJ|DH&+3fz8Sk~xzn`}yj(7Z{{o;brbb^oPcl0i*xyPp{MSvv_<$~L>J9eDWdcd9p?CnL_H*9wQD&uKv3{?e2cz~W9H1LQ04wmV)j|Xewz_*D zy0};I8UGrw|6f|D*BRY0e1EcPmSD2_5mLmM#e8rr%47kc0>@fFiH{&r3B+;4;(qYZ zzd~E;W!gMv*ItpsT1YV{i2Nh~C3}b(&CCtxr8?2HyTie7#eH83KF6DXM)#zkXvJU= zI7HzO9SGjGD{n1=0^zlWfrvO>8*DvWD2us%2dc{n&|aa>B8M$J%Y-_;?&qp{&V=$9 zq&!U+uC&~^#-n}BylCg8m!oE`lGyN^BJ=6_t`NO$Ut<5)sWzV2_!KQ^$EacKJuR5zoC&4_$}gkt99Os5 zE`r1OgY~|8zL-4xUQuTqIldc(vA(6_-J0A}DeO2t<$lX-jeFc!TT8Y{CO_a{*=s5i zGghmVRuyKN^cg_i>?->J+OU4V<`(kj$1ipJJaZoz0FG4G<_|^@KX|84mlj}O>uBEZ zz1=)Hy4xB^%;|XlW|_hM^LcdtSERj}9HZX4F7JkKQ~UDwpMM-ItJ3(c^b;3{Vs|c; z1Aur08vT7{kNhnKwcLElbS#GDItC5y?PFRwf7;o(Oa~se`h(ou#JHvZOOc1(`5%p+ zXV=Z0dc^#__nb5*|5f2yEo8OV7m>T@I#i_=F8`Mn$W?tC<81qI>4yK%alvI;?=|p6 zE5CaWU}ry~j2A%5m2C%O2HJylCn&Xi3R5rSW!e%IO&ljJUi7O$n;!}c{W}P6ozr_e z{YHoSby)aXg6GjAz>4@hIk4}`9GX{7f)YN+glW<08RT*b4SD;`mi|M;QFUtH;Vo%U zTpGT8p+Mca2rxS6YfHo7M?wFzH=ibraxCnLR?e@v)%%lml!?TT4Nx$L{?oI)Iw79^byBe#&OfVh!ZrH)~wDZLmJTZNGuZ^VF*lO-yR zvXm+>*nP^|nYM~L%HoHUykzCO*O6WWxvwu$*wF-vRkD#wlC`)hX78Dptg~C9pd<0f z=$IdgBI^E$UmIx^VQqR}BG#g>aQ&h?n zKZO3Z3q$BxW`tMzedg|GC!DRn+iAl^W*RNC7qC1j4yxtpgQE5^;oE(L9e7Ke!OUA^GP0I)LhXf`fzD5PRxgG~&pRm?tr>R;{eX)R7F92h=bJ z;qvvB;MA*Q1k?X>e&MzRn?Sw4&)j_>{l+MM$;zjy_2wma53q6*g5^~4LFiNrc(9tc z_mnvJ(Fi#|_cfIf(V3q~j48?9AnNEbuyGlI4EFy}!`Bghd-jG=1Dr4v+v?ME4i*Ex zA{-6}LBR5FOLjmR+N(Eefq@KblmmE3Mz-}Ebrh=~e<67%P-qu&bjHN_8duoE-uLV(?Auh$8#bSVR)nx%3EnHf9D52c_ z5SVE%it?D%`nB;GEhAv#3*eRjx;j$gQ)06zc*foKhp3l}(6zk~VJN|x@gX#X(S zlP`1L_~(yp@u=3j3f}JZ?kuQB;0 z^NoC6Ne_&w)pFTz2nU3GaD#jK5;JZTiGTUf`I>pQm~8*50|bxXI($iw+6DzsXaLpR z@*g`Z(uTUcn_!HBQPNFiWb9m`+gzE|5mAMc6N3_EFi<=k-XRYP6MG<)0zd^@i-U-wmJ*Xz-ZnH=>syjRhh z-0~R9?9^}?Hg`IS!NhisY+rNsD35*W*}IN`n+A10>WUY&aY-(y^}UyME~_3z{I4H< z(;Xgu=aseeo4)UZx3{BPU5KIzIRAyhv#{`~fhIyDuJujcS0BeA$6i7M3J7#e)I2{x zwoen>yb z`~zGc#fj!*?7T7RNquPQ!|iRf-(2#S{Py?Rve#cP4j*^;P*>p-CdmS$PxdsCpW60^ zMo%MqRO$tukET3NuQrCWo)_}j{gF_HW`cH;&mSvrH`tEF4!ajcs>r&0RY#G?d zx^P1H1#ugy1ZAeWP@_!NWpQ8{nfgK7JqHoE<01DW3M@*O|}pYtF;`4sGd zUENv-V!8KaukGnWR%&b)HaA;u%-Ujer$Q-;DBF$ST-B&;H)6(kV^Y|;kDLLNE{`81v!?x#pRF&Xcy?q?*jE)!n{IqS=5|#Wa~Wy3dWUF zQMKLoO&Lv!P3f8X#>;gM#7W8W|6;zIvb2Xi+K0g{O3Z--qKdd~uvkT{)QZ2YshvFM zL!s7BTTT9jb90r$p3Ki`tS!0C(oegcXtk!=!mwROhK}S+UH4zdLcsl?*Rcfp0p`bB z$9wNE`tj5a%iEdS$hz$xm$%>E`O{3nv|GPojVgnz`P6mR$`!%DH5U$ls+0=@5s8F@ zr^RmcsEyVNj77FK&)lEX&p()%^*HH|AK|Juam$mKlgq0|)%dq-w*241&72Azi^TE8 z@{kWvR=#Ti>hbrEs7Fn+AGcjd0L^>|k{%9|MSFVYNQ2s-X zC&9E;wVO`TC>mr0DP*+TcSp%hO;WIGWbP*?7lc5^uoxnHj)!t3N_FD5)=cIr17G#Qb~M2&y_@I8N@5L8T@X=B}i=y2F74w zZRJyj4cX>gA`l5YGJq$3UmRDMg7$BU%NeY+S4`uzU2_XS3t!CZC|1RSLR`nx$8NhO4rZ?57l7uCdLaRpe!=g^hV+PU_R78G64)FV?rhLBfta@c zkK=nUXvO9axO)zNz0WE5_WBPUfA{q_bL4K9+|#bX;$Ef5@}Bosq0cl`fgq4+L46L5 zq0yhQ_?dHa4*5YJaJ%MKkn<|?{(rHTOVo8*6+u1caOBQ0y^f+(V$l#08-f#Kb)}+u z2p|{ZgWGKrrbU`O#=t!APYzTK^S2{CC<_QSsZhhIZ`CmUfgEP8KU@>CXsLmymcvvTm z5Q8Kkp)7qSuo_xJGxxp^`+;9O>veOi>nuZljH3)15*@^dm4Tuouj_U5e~$tim-!wX z${_v!-&ZZqH@08lHxwIw&T`buJJ8m_f0`x;ZP<8>4kbsarbgGRuiF{Ck7)X)Q;Xp3vGbNJMl3H1->bSM8XmOuIdEc1_V1mDccW7VK()ggDMD{LQwFC8mK6@ zYf6%LFDiM3)kdy6{B9a7+f|!{e^mlv0T<(Q^jUh<`j0Un!>aL?N&;!*tm8*K0zwOH z`2zufIae8ZNd3z9*U82@e&0M8O#M0OgN4c#C|yTHl@Jq^6A1)I+})`r8oc=cfX|B{ zk#Hgsjv_i(`a5QGbviz|7|W_2Hl6+>+82^w!&WCben^o5AiKtqpl%x0Y;hnX(xLPO zqGfOI=SIC5)h>PKv>ot@&{??2F~0takoNzAJBQTdr|Axf`Q&WB9Y}7_SxROfRO#Md z{Wtuj^}T=Mc5Xkva@8Nsg0!^6;Sd#O4s`Iu7UZ ziRx{mV=l3oZtr)~#5LJBvbFD8NAKtqHq6o$9PaJpcV~V@56NSx+>U~|xev#8c06dK zb+aWoO2+YTL|U4cM5wXf^KNn|bv&04 zf0nZ*07*2Z@h) ztcUoC4$Na}WywMhBeJG>4#p7j#(CV7U3HslG0XqCs_~Mfm5t`90hdtnp9raX4Fh1g z1$5m5WtA&}W`9E->ek;2xa(iP7gjbY51%_1|1V$J(Ksn>ay7&q?+Kn2rp`XU#3%jb z?3ZW7J0|o7d(JcY#U+pOb8iJo4!yR|zR~=#_1XR<7GcanDHU2*ivo(~44F&=RN_9# z{?%Yj%K-^MG}QG7>O`O&)v@Nfu)Mb{Inp|JwfITD=X=gU8;&F|a{^j@QU^pqtg+bOKe*A@RN?|5Kx^*1_CM0I z$L{A}zF?w35sK!=v;%@PgWE^wctzT>QhvTwOdYrS@mwDEgv?lkXKJ8pUG-e{An%L( z)7|WR`&SJc7wZF*BS4Oi(?Zb$v$@YTfE^we{yxgVqoz`idMgMlj=^nL#V)*Wco?nY zaSwHcE72*|=+Ns72@)FBe+`8jiPrpQ^7UPeb{bMH)-NvUy4AF(bsBJR2GUhuP@^lj zo@5XVi>|mg@D4p`-%H(C9)`T1Q|tO~8aV_<YzoZq@>3!v1h3LTx0RK zcl2G6^F z-YdH>6Z&`BU3!4nFdvbEEI=T@Z1~N|&i^hsVPR0p+4U;V1I^m_nR{`=RBYVA7{$0P ziT%~?B~)2ud)8Zs8lWU5Q-CXr-r?#g*BeWK3OZ}}eqxoH0O-+8zK@Kpc9Qf9=qC;y z@*14IUHD*T(omllU*eqguCOb$^Q*<#>+S!3&Unjc-6h*wFGSqj-tKeg>x|eB0F43z zh@^daf(8tXXLi&WsoM7cKP;bAl^s<7x7lUU^!edq{M-wJ)-9jIadrC~rw(&ZEAfz+ z>Pp0&k%!&oU7UDDLs0fcA9Vf%PzN`dVAzV$OP2Kv+`lEVejfLd+P(6PBW`${*7JnB zD39Kwx?lqT^7M$%jEw0eWPyX`PlY$aeCWg>+0dCkYfRAEf=HkQ4UAOMN&uvE@_Np` z{_sC$%aQp;mg0Njr|}KX-BaisGUhFVHaW*W1er>E0%fcd`jzkC@S3w}w=73_htjK= zLc=5AdW-Og2^t(7szaCzg=6`KYJHha^v!k^gTxB;tZ`kAKM z#a2r*T>jQHJ`$lcpTm=QVF3j&lc3`2`eoBWU%Odx6YW(qCh)P#|GGml>r7v>T@gSq z1Oq8MC=fw7mvX@vcV!WjM?Lm=n1}jEN@@CXxF4yN?79CZ-u@pif5+$a{YQ!Q9XE&B z>iie||6i@sbNyFN-Vwu9H`c{RkpG}eJEMjD2UVHnfc{ka0thg)l76r7vtw-Zs%`it zn0hkYQFs4%Z|7M5@_1pV?}ya7?{Q{a@mXL{0t|$O1^zYw&b`zv+>;9HnQ)B!m}djP zL~*QVSx79cfl7B6@_eMPe}#^46-beKnY76;6u6ucv3f_Y}#D*V9jo5nAUs|h@vp+yt^?@6}CUcBCZ9*qG7ekkYzedy9Y-ToStek#6`ZTj`_uj8&QR?bzcFkFMJm8^(|7S1@?wstkaSz|D7FO$2OISef{bBE~?%8l7mf=9)CB=7)lwx^2&6szE;|L zT&}5MXBl0Cq7KvEHYfQVaLl7CKF6aix9?cKd!5pqjR07k{(98aLOxDQ0c&MdZ~9ed zm&tyzrjF`w0~Q{$+(J@4NG6OfVXx#Gb%bqsEdT6L+c2A0{*ltdlgzsg*OkSND)4pw zY%E`KQG`B&>RQ`y_Y}z`hV~e)+qQ^VlBHm_t5ijd3ouiPNS2M>HJ6j_;#gk@HDK>A zdEIbPlh=Gj)FDMHXlKdw=kh63A}AL+I(~kZE$SfLL#n9^sJRShy2x6F<0wSN#=e-K zB74%VWW%{aw(@hF^+cAyTH*GpYijBavC1$G*OVl<4zOJ83q+LDf5Ijiim)|T47V;L z=-bS}F-q>ZyMS$@d!=V_XBZGm!Jq3esZAE;bH_Iqw<)S(5VnPF18r|IVwnh-k$zLN zP)uQlyR?MB#U#ku#Pz+ZrEY{MBNYT%CgkdCLxV+28!@F=D-K{tEWouAwnGC1QDt

cbg z-NJtVDmRt#qHt{mfShxQyt0H9DP)#D2ik-uZ$i3CVbEPVjhAPJ=D%QoXFy}p%whee z8%t;lE`+iAm|*g_n`Tn0C!Dgu)gA0)S^2gaf8D zY@omp+b9FSmQ)CAm&+;CaUreFQc5Iz<@VC+NHukHC=Km!($Th8#Rv0wLqD~GC}C${ zZ%lR;io1&tk{!2q?e!3xW6ONEa7;KG(&sb5p7XJ;EHDPxRC3p1AZZNNcUbkprRblf zQVjz+$9c!*<@)Obv4CRHmQ$FQXyBkCU{E)F%I~`Gd4V$~E})HQN@dG*Mb#FAn;@y) zGirZVH1Nz+E#K+P{kW}{V9J-ojqW|3MeI^~cx*&2RBHkqj~-v4$c^!Kx8BVM(%bOx z$)*1tI6GKxG4zGSN7d5qc28huAH=%l2m9?v4Suav+#=zVZ|HnU!j_Ns`?AKkva#l$ zbn$19Z1mf{3c>C7zZd8G&%1_NE_QZR_TuhZy||8m`=omo{n%A`o=SU5tT#AK6eEa6 z-VJI*wmeT?ar1l>OW6J0CNOP1O)ov}NJ6s((ksFdrTJhG4dcwtIER=#MTj6LL@klcA$uvAEv?Phm&i48m`N7$W#sM((R`lQ@Yq`f?`WO=2((5#JGwkh>i-u zqQ4uR|5PFxSdd;HyM-3$`aa6Som@}(MnXzT$_>~6kMM*!KKnC~1PDmxu1&42F$*cE zl(&2G>?hFvORJYrrfPlTR4INV)(Q$1p32I-t(#kwDF1s-3y+|SE9J)%E97++tVNgj zm#xJnLeAj7(tqch(qHZOYbRvsD2W>h(GWN?v|gEV3(hG@Op(zDgt^2Ag(*&4#oNx| zo3MoP^_Pp;lp7uln)hpd#JqZCTq-}HYH$HFu+FMHCQM25ZExUix-0Q4zKS5Och!*M zTV}r^Cut#>=%5o9aY`~!00@}?;)&N2M2KYpqM<+fDxx&D30On@{B_`5aqnre^g!=j zpb5mE`Wf@V>JC6uKq`9G?=FCpWD%$E_qxvx1uNLM-rD$yi~7HULrkz(C{@PadY{vi z_BPzy*Kv+1x!PA|6?eU8>;#Q4-H#Y2ti*8ka;x8@3_PTWAZMs+5v1rC5zi%! z1PTAfP_HOxVieOXP4j+^m$U6>#5VxC2*TKo&R9EqyjRM(L-bisSC&69$XF~EeT%Ha z%H(~hzv+y!f4S+0L2R?ni6G5N+VM$gi%KUtTCuOY7wQAy+A$053POw}@qZd^=e%RB z>@2{DfdqDoVpytbQ>7;#-)GIgz3V@1>lJ}|?Akc^^BFGd=o?4{S6xG+_#Enc4=TMe zu31UU|HrV0-B1i98#|TZrvLHXl@ESTy{fgzRE}D{g{R`_$O;H_rYImlzKp-Nb~jD? zN7qhl-sc)^uw?@@s2d{h!1?~l?2FxO?%Ols1^Kh8`?|HPJc_Bl+c@+A{~YTS4LK{r zqQ4W{|AtLR4Vz*L_IS~N+jKLc=>pdC}0Y zp##16xlIs{XjnEdrP}F_gLxG!O>&#jxMsBAHa-bWG>>-FA<$q=KmCGo@2HY=UMv*z zW@)(4MC!kh<)sjN=A-|4Xdh>_!E5p1Lt(Gxv6k2P%;&uxDRfqi{4I4m2@#ira4`cO z1drqUvufrJodZ4^D7{m)(ZHEok&VL=S>Oz2bsEC-Px%VN4xLJbtLlLGe)Gg#elEAgGU#2TLRj>PcqEX zXp~@rSs69n8q$dS^JQ%Y;u(<#sJLPfPf~&969AN=QiwDw;48hH8?$&cTF)PK{i!}e zZ*(-c(Oa@}{yt6QXnLT*WSBMJA9_@H#>Q!_(kjWno$@M!o;>2{hSu+SgmjYeefpm2 zI#rrK`jt;VN8CD=+M*m-2T54SbZhPMX>1x0WI!%`KM&g;q?A7ZbuJj6xIXf+NpN$w zN7Oh6`bR_s02ea)5Y?R|S6kyIL=kn$LX%Eoe;}X!8jKP*@kY1EKxn9>@&Zrsh*A8M z@0s1r$iL5Q47{;$|D^q~CN4DkmjbR7m<|RFrqTH6{3001Dz6gerZ8 z5B$g|BJBU^(+Xe67qrqk!Im%SO)z4Xb_IZgSrP%eB4YRpWE-6f7H0L}zv?OoPKn>+ zac`k>VM0wDV|YD^_N(ZZSozddF&j8aB!Yk%2K64n$C>EcVzmWvmjpNCk>jE+2uqbR zbchwQQYha(J$3d@`Wu?Tv|Eim(-T{+4pPhkLbGqlGAo=mZjfR~IxIH!4~WBLlP1kS zyb~bvLBOBUhI8lLH0Eeza(Kb{eEqc7x9Lhvail1h(0k8&HYXS&qP(KZe7zaZ56bpr z{MuPQ*Alr8Q^D6a?0<)V$M||p+;JafRhV}$pZ)vbDk@)~4P-}c)$7dn_pG_Xg|)}= z?hWcGThF}nc+~Lu{^zgU6KM_Td0#3>e*~BnDVRzh>S+HnvVkxv>-YJ+eoK!T`YJJv zluSSQy%GB)zq(~kRvA9NU}obQLy|mS2VLMZ&Y#2vn4o$(S|<5c1&0v`p?Z6y7;2Bx zGDtp8>Fvh0=`jB8vD5|5LMb+*s4mgkL~p0|?N}Vw`27!=9h8+sJ1^wh=yy@cFf@qv zv_}&Cf~}QfyD)`+6sdu71YEfAuXrJuG1Ab#o6%FQ z2Mf`-_83SsMsCa>l8*?Vylbrv0stdC3Qh6|M?qYrAu@F#kCv3mECMbHL(1W@<;>ig z9PsqF-FHJ!@y2tKy(Vu~mxDim&59|wBcHAJaDsuO35t@mgdi>3&)Sa9D*ROcoAv2$ zTm}OELeZsT8{NC87Bmgwc+`ojwsx7(1FC#LT!_aO%3+`&FEnsirrAIbos?Vsw#eMy zD*nYU`1_nl+;C!}xCSPzf37u=&@AW;FmgxoE}sE__s8l2j}VE1Ppi$o+^LS+zvS|=v-AItf`YspVEeXQ#T^U4y zVoM+(8v&%c9A|VtVZNIs>#tA2qf>{4@~-XO0Y{HFV4{K)dUS+UI6q87-CQ9T)bjwpA8@Q{PNp8I65d?&*fQc= zem^Y3Z%}X0=^a{@*oTNxITfxgWx}5>+6Ahkm+hIu2EQJJmz`ulf^v zy!yPB=V{$7V{=Rn0s<(yqXUhF)+9%x{;2%5Gm8a!wVv_?xox+0q6CIIK4q3IT~yx2 zgaY%9_x<~##rrfp4V4Ge=_~2zza2R;uie&V&+2BrNNr5OkI!!gFBXeIIIH`k^KT)1 z1vNCeWoW@q6My)8lOWY+xQF6YoKt=0o_xPA>Hd5niZ}e5OA`UXMqKgdJHUIzTVAMD zUNIL6QZMk#21+#;rcMz77i&VSr$#ywEyu7=DhrLiaGjnsLZK)(^V=0+&u|-^r^??)*61o8^H#W-alEwZs|W=9rIy6&K`_C%K^xV9SU3Q;wLAVu0-Ocl5&-i5~JA zMye1;C6NIQRVeN(gn&S!s(k~UCfjdR>|)fBT)(oLk0^grPn}V1h+=|`pd@@@K%6_X z98<_*2>_)Q$2~oUx8U$z*487v*!(@Z3Sn4WZHLLK#yXf}(t=&aaV4*8lZ+glB8UCZ^ydbNQ+xP!3=%(NKFg#aH zO3olZ*SqsmJ*J-{)vwR|4UE*23#9vI2L2@YQKah!U{TfUp>=E69Q#aK8I3G0d4&ah6ta_Aq+p!WA|~B1WEbXOvgzg zNas#HS8f-RZ*v%sd2?B863OCaF{gXK$f{Xs&%M;u*H95oAI>qr6JXp%XXy&u{7T8N@o|mG!wp%K~ybC#BzoXAl(ClU>ZP zwQfz=KiT(_Zfa*~*^-nc?2ylO_I0YRnv&FNmB~5~x-0+st&u!1?mY5P*&>l&%}Oym z|IRGph>Eavd@rJuOrQO*fmkvr92Xu1DE>#7JuI5cNu)uPDvckC+$nW$sPpfgEExAB z{d8e(^it>4M^PL<=R%SKq6~#%dea+ika%kXh}?F}AL7EqeNXcED>nJ<1`}9;@BqSBuwq5$KWTS50~0)iXr z=<*ywa657?eRT}4rkuc^aCg9GAMs3BM1a_Z0v0OGx4!nz!d2lW=#!A;VhO~=28T-} zG!%9tfXST8KyHeJi?;$qjBeDV;*X(4l7I89DG>o6074?YdRUeS+AFGB-$j=#8Zc+} zr26R2|H1)(iPujT(iuE0hbl-ag3 zn+sBxFle;LkTDQXz#|hI?r?y~XR3B3yuyEZ+LD3OGCQ`f;P}R|kkRm;rEzjuOY7LV ze)}z|CV)m(PIrnE$9?>*gNyGk*W=~dpgc`6QWD#ef(29N53r_u3<*?OpAr-FhAaWk zo9ewWRHOeINkPVZ)ATP}Ipx!U6CSqEHdP8y=8G8He~rJ}-2|Eu}`BLavjj5qnaD8D%@(Tw2y$-T6{63)(kX6ZL;LN3FMZ-P=B;#qTBJbjZckCGD?DIZW*@M5YePMTRp@&tURi2u{t#^nir8e(4Je?4(Iwy675%604j&_{bxGzsQasleDzJOCB;wuHG&7!f6b-b zAxu^uD6_77_3=?j;_#966ILJ5TRREDSy|#>a}xD9)P&8r*ngp*QvK>bE^oq^{1pt_ z!C19!jh#{<7EDj=fahn4~Q~hjsBKbJBwmuzgC?;A)czs() z9rGojZqA?^TLFXDrp)y@m0UNwkI*WS>o5g5(@g%%%`=2T-4o?aRwuzLkryHWktVbE z(xoJ<#2A4}Tt?*oAEio@k3Z=O%$LV1FhDqaYZU#EsBf{_tKg7vczlbNzwK^~z2`sQ=_J zW2F=N56`lE?bgNG@evOM<2dNzY@QJOPYF+EfaHi8RIOR|`wj&rBL^9_<%kSuBMqes znaEpTS%%v+0UYjyp}#kX*Ed}VITE9$ zKK3$yEP8Z*20vcM+tzSieF~)j>sQ_IP}0!;9cX`@&xhgYqC6=!nEsN{-!b$z4?S~B zJ?zU`J~l3e^`soeB2Kd@%MWC_vKw>0iJ9y*zScBGq(fcQf|>SU9ETbzDmT1U>)gA> ztb@e!y8E}Cs+}L*6+W)tWdpebJJyV*vuC&3`2D8oZUC+B?q&}KJRO%Em~ozV%W!{t zi=U|T+27M}!-fDtpPOWc%VvzW(zlV$1{3-+!}KoQGZ#tzPmdHnX-{?*K);QgaYgSx zTqXqOe(PFV5=a9idyIkvNi|L1_t&%BA=HYC3b%y8_@8;zUk&ANl)Gzni~f74qxT)6NZ@m-LXM9%(*Y8`TafxR=#_VDM0P>mM74>qJ{M~l-N}Fed4~T zsEONOyGzy9Bfhzled}iK-^IKRCwEQv#r0ymo6f(JSllsl{!e?S=r@O>Od9#_!Z0)7 zxPOmh?4le*Pl#PBW90HUe~w#zV)?<4oF@=C&G_WvXa{8*^?%G0Cw=l*0vz|atZE(D3xAfN4fXCOfIIOh&_Xu#{&g9LZV_TZ>;x%I8$0u&gPZq4}=67Z$ z?}0frbSlI4Tx3dx*;K+WbEEEZgWT3P^YCpxso-oo8WTq`4?d&k4}NmY_gV#VtcH zM?w>|sj;-E3qz&qF4bc4=w2yAiU?vheO5nrJfjR=1@_6afpz0(WgkIBCix$c%4!So zZU7=6@3mdmwY_npyJi(rS-a@}sjNTM(R`RdE@<=WavK+S)P{->fJnbaQvW8il))La z2^?t%BjA`__r3*8GD!nZeLpHsdWW=`fh zY#*MKu9%{+6~%?wMkX84D2v`8y(1x3l7gVF*3I6sXJ4t++CB^Q+?n_W@95G6_OJ7` z$KtkN5CVIn*;!vYDkW(t48uzvA18bgbR77=5D5wllq;G9AOg$}Fb=8! zDY(y>F$mCt5b`5qSD%yf*opoB zqxY?7#gFrO)vSD_`Cik?e5Z5J#N++vU(^`Y^LjLbq*Z+@ELHjE*l_S=Kh~5zA_Jz^ zb~+?lBOLP6OP1$)?hj8n36M!6cvlGIvLBG3kMp32Z3VMinKOy1qaj<`TH!xQequeu z*#ra}5GW=b?jI+bc=xH;DV}4lPGIE{5?R*vPCmWaPeElL#4`?zvC!*ZYMA);#pr<5ZxX^LSX1ZcrfvPH*t+ zW7nv3!f!?ks9v;ugZa~=+I;?Z!{&DDCgIP5%o&dS+v{h}r5Bai_Z;1FqZFLEb2eCc zDDkxD&G>Zi9wH+-A`BKEkjnJT-z5G#blm+JsGy>PCsAN?8H7s(>|Mhse%%@jADOL@;x}K&lwb%akBx&7%M?NLjLS(^J9TJ&%3^LB zqcz<2^2Xh)?i=4ZyiYNn4?9Eo69VYB2eVsyMQtxLjF^EPt14nLFx2wyjSMT^ePnr*M0Hs;ZGX-rvOcMp>x5rn`i~ z;JY3V-gJBIUu_+`9mQFk-@qBZheX+@2c)QAH)g9AC_PX$?$85sT7iH{AVD8Vqo0d! zBIS1fJnG$)&~eGyqk%a~swjd?3;_lQ;UG%Y7w}|xe^(-4PzeSAAK6?cMYo=>srOb5 zd5x{VO7qwZI%Q#O;)9Om-ol2Unt7ly1*ohKNr%$S;kOakYdiYAZQ2i^{-1we;-xyp z|Kkhq^N6rXSl94hmnz{9$p29jE4$yFf==}HF=igiXz0JqW+?HZ+d2!6my7lEvBoj{ykl%TE%2#pgs604yyHa%gBY9PqUemwL00=-pjI#H1 zvPjsmlJ?;}yS}RUSx(l_-U_6htR>f=(7j3xUhl7^m9p1k#?SxNz~A)prA;)9WYCnJ zHN-kR^h@r^$(c$HTgc;NelI(3bIw-ZdvS@u$8dy{%kxjn2NEnzZ6U<|@8A83Ez>-& zqt`rt0~FrTF=PtldW-mNe7rfQG}KI=p)<&hHu@j4DF12r=bMx&Q)-_Oj6p2}WXRS_ zoCHNWNE`18lXH7~4bp z7~oRA&8$AgZ%5vJevo(`=kxn#@1-d|SB?6ATkCBkI^rua>Cj$!xqz;^?gxKfeE%}9 z{Jpy0^c{MHG7K6t_+qoPYN}#D{{zS=?Z_$+kJT@=W@BMto|+X^s*QvD(vTwJ6D>lI zt@ai;6P-?|jj{nPpoP=goH!|AlxlR@)~@~{Wkk@zkO(N8D|}2O`U(#-|9C5Ku1rKz zh#+XuafPu82K2qN3l0MZHn1ysjKqsGs4X*PImR`21XN}vkcMgH&WeZ>MH%nUGC?DQ zYJ^%$hc!lG5@EPd77g(L1W>Tip>CNl72am}c((7ET!mGa^$TJx_yz^oXrF>NYODd zw^IuWHxHac>F8!WC?biLB~$ogN{_V;thR zk+;CNXeb0%3yoBnc9zwB)hsSMp!4UvH&WKU%#)H=9O z6CxXZB>~2%KEj5rrEt_|YQ|zET=B2^G-0*b1rq=^#=OqQC}jaztcDjmP95QqcMVC9H;=OLX^^A5gE2HoG+Xv7Kpi80|AfJ zW(0!xFgzaez{m~3q`)}NwQ`yze1({>olKN6&Cem&VYs1lQ9{)iFy*MvDFkV~eoh4k z=^9Q!hnhDdMTP9-0W%`;ee&5_xWhK`7xHS8oSD-c5`~5tWKd%>nA-#kalgZ+-~w4^ zQ0QIXG$DkCFu!#`2OLj6T|jxH57gw>Fh~fBL?k3gQw82)-#y;IYHOV!h9tqoPbUnm6z@pf^x}glP~A`P(rQk#h#X zgIX(kmDi}l?G;;M#uJbySS^5wDyQ9S%9xABkzW(F;BRz-v|?nL0y~L6j4b*n1WR;LqxE_89(zh^pza-CK?zrErm3zxYQ^Nu}uMC2q8C8 z#Myu`lv_IFh=784O^w$<`%FJ{DXL*|FQt?$(i3}Y0N5ZmttY-zBDz6`YNy!F)E;%L zi>lENWSJwBiDj#42lU0%(oza@?NoY9o;9k*BArTOByOE&Ce}ZH35x`|%cN zDJF(da^g=J{xQ47Jdgf7!a7MSe#U3N!47?mkZj;E)JFk^14i#-T}NXk1K`#+^y@+< zo#qQfi%yTc+0gn1Br{7$U#-VEY;M29v*$wA&W)!8XV=N;tZVIM!h20& z!;(BX;AAyjz%B!9Dtw+&Mbekf^F;*wWY}~Yt8FK~egln*H9(JkG@m$0I|cY(NIBZ? zqxj!k|J(Av{f?4y~+$0l0R`8+^fMZzQ zX6HLj6dci9prZ9e6Nv*gYKEM;beGn5yTr>Q^0$VW)uST15(tc<*7vHlNd$XlUI4B7B_gOhvL_S^mJ8wEMkq`_e6G1e69dakj>RR-(< zL~8>8ro&2T-i2!zH)yi%7qg-uEFtlsM=ze!%kbLQOgXH7%9OQH4|CLXo1!jFHFkWr zLX4L&9%iA~gfUyw?0SpIY2PU4ek{3F$CaD4JQ#R?hG(+=?BR}<>*l+=Om1av&aihV z*Bl%j!O&s& z0H8Dl-cNdj{2dFN_SpovQY>JJjKeYtN041V>B@u3P})p6V_!R9-AD)JB?mXyI{=RZ z?rbn|pS`zbS=aVd-<@9!!Ozw!=u+3$ZB>sIXXj!tUokl*wzWGT$y+8c5J-SckMiZS z)XMg^9n0@WJTkZa$1m>%Dw=s_qzX_2DHbULBAo=IDf!*CejkbbO?TzRf0g>*m$jDY z-ioi7r998D?yp6qvR8_AEC?TMZf8TlEeOu+RAR-A6DR3FDOuHsGml7{DX5$NrF zm9ac?D8Ue2RPYePvdVhv^e`d__o-t@cz1l9c;l_yw*x2jPNk}Ur+b}GHTst7BSWP? zVI$xXgj3QA{l?1efui>8>HNtwWW9L4Y?aP0-RC@@X3w!C8{i1-n+NGM$s^!=tMaWR zlqaHuT*m)Gpd|uAN~pQ3lnM?yOE#QYW|B@+y8Tcuvjx9!|LJR+FXjUd*<8yHM#d+*VY#2cW+6Z%s@DIwIbYpQhTyeNVS{S2y@_$48pCtP&Zm*%@WX~%v z9lSiXcm4<0*LrHGFEHk06zoenPT;+N^ncAQN`%E`F*3~y>@@rIu_5kymultEsSueX zcR%{+qE@bKi6APo)M$F7Cfl#@lJw4TeI}I%lZ?I5k_uHdt^Dnelk6fCe1AXdit=ps zH(6lfpKs~lA%~8$ER8qa=k_cDXMj!`>O3Gm?Ilk_bu{le*&D+z+xGvld(_lI6=1zzRl^q!SHNk>M!|0U-q^@JQmyNuL%`q@Xt4vep=UlDt~-jf zfF7xBjR>qEcs`Htm;$!$S6D#@jhlzx9*6GYHy@S~{RcPTMgI#|)3 z$03|E$Z`R70^!s#+3 znUk9rNqG2IcM>_kN#O}D>=Y1QiHYMLW!dyqc53&!7XFICtx$(#+u6k#axEpIgsi9( zj1pqRXQ;xFds=3~R{7c~RXVF=X@U~PWG3aBch4_oQiDZ3jgzpbb+;Kw?uQJN_wRL- zSJlljR70XOq*2zP;Y<^Z3>BSDMsP(?ZAV(q6{t~CJ~Q4_&bdn$R? zEw^)$E<1~+C4Ff!x}aHEjk2>)%#>N8%u>?KXWzNbh0B-HivxNZ2%fwaXr%-;mg5jk zEPYz$WmaW-?cPGhRS3^<7U27Jwp(kJ(?(Pko2a5TXq+5xC^k3}$*P4)8U9kIv-96XxOmAswSmbp$i5bf@!^w z6`LrUE=C0q+D;T6QfBiicJ?t3OE{WjX23oggL5(C~zB$unc_VIy zPh!-Dt})Unfh<-fr9fed1=JH6Y4Kc{d6|kyn@df%ZN&v3m)gppQmmzDi=|~NGN^sKl|uux$|xlUwiIK(TX#gvoh_B=+>DEXt5lE{D1QGWh#?C5?$j&==p3j`O#gcp@?t=y95!ExIxeO!UX)e&4WmU) zs=xQ5q^~J9<*f=5@ncrxB#^HH@{@3@)rpALb@xzX8H5t~=?6x#&#s+i=bsCJd~p1U z*Sff%{=XjDo1zJj99?7Eigm!S$SEvy#4zz?cWPYp#hr%?m`hcKY0a$`+ls^2Vm6m` zJPkSl_hC98JL&;W={pm(%nU6odsb`R&od~E4kAs(!Eu)AO4^3ifjb(byizL`l=BrO zO=3?)Gd7hX2AoJj>-##*Yn-{6RLRvQC|E^E&omoNtF(voQD9eMS2U$n!OaL!3l}I6 zpe)A%+Xc#@JgUP=W?Ar?Jz;QR5{~fbdY`*)H`|vLE(CR$jdm1wD^%k# z3$sG&CBUSQ$RMi5QF74n%m?M*+QRJ`=9XQ6vE)aNg?CVqD=(iP$-H zLcOL+{ES_84Q|F_nK>u2m@2nrQBJxjmB5DN>Vacb_o62)yy_5uDmEywbZ5rgNu>)j zqb-`II0qJ|$0KcwD(g^KcRh;ucM9_xd0jO^Adr;RPUI9my?w^$=t|~F$z+4O?ncCNOSwMxJ36MEP4`U}z6BLneBVikcO|OwdsMA}tX5$*CVze^ zmp(XaO;OecJmGePV~2+!LQ1cj6Etew<>jxGw?k5UqBt8$G;XSPd>F~-#5Dm7KzbZ! zsL5WNgc8gK2v`0!OD)OIdgO{(F&x?|md#>R8;NS|ot31x|5Y~bP=@53KDN}^h0$8h=%04ynHY#QAZ)Zfj z71hF^<|_{Zj;`W&QdA7PY*w(avlT$L8I_e!`L=nE=&tzWSfN@BGC-D>R%5C%9ibU7 z>)K{Yi!GBafh;|7(;kXhEHE!Lt)hyoE_Jt?qb0r6RWjB^Ejd+WB8g1qYFfEgI@F7G z;$cVWny8his*DgCLa5nZR)D4{Y)uRomw)M=>ubJaG&Mw3>_ji9vkVQ%Se9f=5T?Q> zV_y(KCh8F~x5>o_zE)nQC?Fv)MR9WCoGyID&$U5CB;-k?);1cL=rF-jtqW5Cq^E4x ztQ<#5%~q>nOQK}Uur%!|OKz6X>oEl2hQMTya0G5b(@QSXO)~ouf+6l5hSZ%&#lpI0 z8JdDOR`aTSC2;RNtXZDR&wV{K(C$prUck9=&#~ZE%c+s^rizB#Q)1v)8+KuC0Nth} z6{fg^9(-X5#+J54;|hA~%K=FP<({cbWLreGr-?=8T<;8LQI}yq{H{u}x>R`* zw&iF_1Zs^Yl;?g!Tm!jJc6M&;!B85+;>J+qCg~?Yx%+BV#fr9d8L5W?WJKUm0ns{v zTiC|@#j?9}$h${DqAX6r`^ywas8}M@*e^1~6ouRqmmb~0=+XqZA5UG0Z=0e+P1`Zs zRfdH(3=C{0cv8(N!38;5#jfS0)I9WQnCTL=D{Gp@nhQr$6`iTnu@=EyJXXrrG%~g@ z(kw*H8E%5FZCHM~Q)TysCMnyt!iH`^ux2B&SZkeAOs#ls$Dv(R+ykgzy{HW{v3E|g zBu>SR%uTl(oz%s<0$hRVzVt6V{qw|jD>TT#AM_x=Csl;6Cv8(Igws`JFhp>9MestF zCaF`tE55+2jkcbg@>;i}bY`xlXXJtOMrN;`culKgW^r3W9_%d*yor5s$8~mTw(DIw zYiet)WrCoa3u_jJCbJ!@35-qpk5Y} zW(=uIPyJtJrYIF=0A?c#5JEbmV6y!fEJP9+A_<|$;hhHNFv|>Dq*}C!!{EtvW!-8j zo{9L4Qd~ocwXF(|9L}3U*g|$syItj~*H?b3RW5ZD%9)^)9PX~BA+{Qs<_+A*O)n>d z_l;gAHvTGdGNh_-r9&u91!w{)vl~j7n`b`V0D`ATUCe5QqjLHsrHw+Za!{1Y`wzJ_ zy6jS>gRCvaKp;Q81p@4E9XOlJ!g*yabga4aif`eptr7!Ns+Ew3VZRyUEp=g}y;obg z(H9)UaLohx8=UdK1Cf;v-e#!Ytk$*4%dJYHV7PMy)4nT-!4w|Zs*nC#%;&97E3wvn zr?B*3XrapBWM&sN7n*nRjAqZF&EP^5=iJZ7Vq`Ma6npRFsR;|sDqUf2v%b9Z&J|98 zh-H@y8GUl2IV+fCK^kR+)Z9>FP5Xk|ES>PDCE3FSX5a0$-Kb2owrHUOaE5Tm%X+mb zA-FX(SQdi8W;{+YQq7gIIjF*Dw;8C!_Q<8x9(E>ULIr5zsboB@@|divDn4DSI z=cUBGiOEj8CCybz4SXqr79LPxeYd2kU_31q!!Z?F=&6V0J?8?7@G{-SWTj($_}fN) z_S>@Cz&N7Sj0(DS=ERDtxY(|@v9~vLN`@x`<()7zm*f@2g{zqFHj^3QdRhwWX;$R7 zC53Z61F+j!xYbs(hn66bqap(q5i2XSRiSbxQE=o)w87b`Rvm{tEHxGe8;#phPjWh8 zYSoLUo3Ee$T6o&JluoWQvd%1bFh>QX<88^`c6iLtrFoK8o)WaTm#VV%f~y$8EZwCv zGRB${R586fIo*z)TN6SQTb`9JaJaP$*W7``gwmNp!}PD4<&FQys~j0B$)Pyu4Kp!1 zhLnjdOEaPA9BHd=%+s?Sp}%HjJ)%~$YFg!e5lzU(SmB3C%L>@47j@xs%70@Es?f82 z6#Em~TaEWHFf~x=45?+;Muu4yV+I-#kw`KTLSAzmmnzcTATZi}%|RsERU~dXKyT_x zJQ%lg$ZKrZR`JN6Mg|h!Y68&CTB5xNQY?THL4u4dCnOw83)%~BRw_^m1VG44t{fL~ zP%)xgDSqS#3>H_Kdsh0UF0DQ5DCDiIt`N~w0;M?vRQ3(R1S)w7kO{WIP4vkv!bO&i zQP*S{Lvu=0n{wD9>VX6iZm8pky2WYVP$|$slb02zChOFg;!XR|ecjw1kc>c!@vLIA zL>HZwyBZm2F<5W1ajxrBxkGTk@Hi!*rU_>S`?1!2(~{`dkby=`l)*sp5HzYL=Qfnr zGorhB_PG=|+U5q2Tyln-;H-zDZ!@bAs=KD^U`&~j&x3DYIYt@=y_m)DSp$`Bs8sb> zU=X>>%xqM6T>2~80bkcA1qjn>$*$ ztR{DbIt*y(;iYNcvgI39%|2@ElGNI2jIlEnSyi>QD{Y(DNkVIy^XIo|wAD&xvZ!85 z>6PjV@tnvvvK7YB#@tz61kAj4k-d$&_@`2^9kR;pi!#i_%;isbpuQcl3PQ?|BNh}c zzFvUV#BSD`jn51?%1d|hbf45SQuJ`(znmq z_>WsIb`%~MUxCwm+xYj)@_T!Now-6~9HWL@;H>PbM zHc-2{Kkj-OQzy7%-_za1jdd$L$s6ofcWG8SDX=|dTY-JBrd@z z;F#V^U|egC#2X5TCu6vH^4{gfIGaM9qbFF1iC{@C$z76xa;(qc zG$JmH{w7`Ku6p@fM*sHjX?Eu{X@Wcg-wr?^-_HT!s%FD5kN}_{69^A^Bk#j^#0f|v zY~?cGVVuW?6KN1QhC-KIAZ{eVdudgh9la_Bz=8(kH$;omp+LORL%oVe_f`Vkni}CC zejp(LFvVsI+viZgQF!f5i)5Q{Fm4OyWMl|$$#-_yF7GI{0s^$i{Pv@DJ`!AUQKKb^ zuDy%128)*iJjqdg!log&6AR4J=jpnzm4s^leD`h!PZZ2sgL|91{hWTkYc|u4XJ@)X+Ue!ym8wy>;qD-0d`+{{Kyh^NFT>c_imuHo z5Ko<_bE%y7PmQLN_i`($$yak_ismxM;WltLJ{HbqVs%>A2&(SwB7iEYFn{xEZ8E5& zRah}PdQpgmqbnk*?`@XVQ9t8Kihi*|#1#}C=F|n7t-J@8%3oyF5K&qFFOkOQ9(xnL zW)$cto(t-)hl~B}s`u>o*sM(r5kzIRQF^V;=NSpjN^l;vH#t>^imW`lEEQNNFT3G+ zEV6>Z>#y)I)Jgamg-m%of5(+g-?NEn@z+bT>^QuA;NQe;N37(x;kc2R4n^Bm@OOOc zjJybu=&Vf&@zW~cHJK-z{TD|zbu`_&PQ{3w4>lBWiHpQhSW!(v0K;SW<#t&b2D$QdPC(B|-~>feR;iB>KcWHNCdn zie4^@gyOUC(;|QbQ)q(2qS1*tUjCkW&EVQ=zt;4XqM!6{k?+4*R^Fd84b)#H%j3be z)@AdrUo=(!&iuWMxBboES7(;+sxtNkYah_OiIW#li=1BWAZqq^a0BB)!E9C1FSQp_ z9#bs19~e~A7p&10E?D@|p^yE64ijZl?fe{4xhv%oXmW`h#{E6`hBA8Db6Ve@MoxZZ z8E9o2S?n!aOH_z2Pl(3$DQzF!3#Nqsjt__M6-@nkn*w8d|2+itUo;Bja&UP`M);Ea zq~rPs2aD|!Zwk*(l}qt#d(A9|fi2!J?0aQ-0G7SGjSL%p?G|V%g*%j75lLfc~@gUMtl1D}MlprO1brJawneIOBgfa0=n2f}oa#l+8) zAGaisoMsU$^mZFvHs+E>|AUF?C(8U`x0%p04S9G!wq0EMTQ}C@QUMd!gKIr`+}9@4 zZ@V1*{>Thm3jv`mdab86xc5FgHenXCyypU6+8itXB zfbK=7X_*)k#P)Um^aY$uQ)E0>{w-)y6Zho_SF2%jnSKY(dfx~3b4I-0Py4+wzhTd8 z^UQwO(rTTffi39nl4S#31S4ab3y)9B|IFD7AY>p#p(NKa^y3XK z!%V7)w82YQu_BR?azpZeSgDi7*kv}76Yd>WgY20}- z7h`+!D!CUT6)$+gf&&m>U^i=xA6U&2A6@IU3{iJb^-se z|E29XmtVg2hDan6%wbGKH$I~q{yFa+SwH|5QW6x!1QQhr7_? zOYtwubR9k?yT8KEb5R()x}GLAJw2r@m{{ z!t3GG0lU$a6b^bn^p3ae&wLF!T1}?!`a6%}t04CNwv~xyQ?}Xncd6e?ZMB53!^nMDJ`@j3yauNjp ziX|j?9s@XGdM0=V75X+Phk;GtWZlPzDk3%g`TVN>2Z7>fK7|wLYZ)z>;q=*fbIrSm z73%1E&91ecBH**gP_DTo^OcB)k_co2e*oC6#%z4QG?Zd-&&SIU@KGVq9!sKu-g=%} z^VEjcqz_j5i`4U>n;0Y^wWSFuB6%VJ_)ZOjS@x#t8NRPc^rco>#74~S$j~5h4&Z?= zRH3hi%%{o~BQ+v4>Q?wS@xGY=Z_H=>>>KV$wnnVQ_VV-M@P>ET-LT@FwT0Oou^>z! z9ap3^cE3&P$R-hZNvMJ1mi{&E*lC$%>1G%QPDaq@`;0U~0 zdTL&(OUrVgpK1FzzANNc))Mf%&AT=`3I=NUdOItsHk$te<)AU2IiIL9PW}Za=#@%C z5N!v{`0vSlY;we_1e%`q(ZoR>k;QYqHoSP<&tIjBD(E+9Yi#(|`z-h7<4Lci6h$8c zgK)kZQhBEs;5d(MYQcK$w#=NnD=4xoK1+PVFN{mD(HF^D`ir2zQ35#GNa4yO+~g>G zuBwWiK+8^v>7L#Hfm<(=-cS|`B0)<3(RH21;y+rDta@bhSg5@3pUB7b=V8!0dyR}k zH&HLtsA*o)h;l!PK|f#4`}VIlCgya1yPbW=ve%aM=EjjEoO-`1-b3u|(W$6^eUlvp zhu68mSjFr0kf9%!nRvbDd?tR_PZ{SD&pK{^JWE=t(csA#y3Bf7Q z=lxQH6apkBLS_jTe+PWuZqRE&JEC)<6z^_1WEqtvB7ZS>EMy8l_czqDaEg(%TVC2u zQ$mnDu{NWZEkUnOYiE*X`z^B{x`WUuwrsY}T{ECsj?vD3)&cM?O)d3l;CQoFxMppD z!w%d-Y~i_Zh7Er4hd4lN#0GK0!q@RBh|Q#AHlL?M4Dv2>Dg#`B=9mv`e+$oBTT;@} zuP<{z(Jd7Z5aj9Vwn+mgW7{+!KW}D-Y<w91a=(MDKf7-Ou7JzyaMn+AtPx}DGCYEU$Ba{qI>#9- zSC9oVGtKA17gU3WT#a6OuGt3D_x~9>i5QZ|L^>17;KgAb9+~BU;4)QAE(>=c<;IhC z&*S5APC2lE9?`=tVr~61ytH%#JszroJneq567JA>wIm7>7vxS$`I>p6lknsp-?ydE z$~BfR?Q>xyc2d{w*J7iS+3!WjPSfqo!$QCiOElG{`;t>>{@rX zsCRe#Gnqay_I~>Lmoz#S&JWvTA1Ca2sdoH|dJht)hVDfTEfGI#!-D%GH+^TT`4_=9h{6JsLq$ z*b@;6<+`M*LLmJ%@a{ULkuUpG_~?w_@LDks0g+dKVSyGK4$eUqd>t)bz87wQ?8Fb! z_+K9fYemFgN$FMb>lgT&;#Y0pVjmE{Us93hvs_@Owl9uhzxWr@|4ZL!B1ezIwpqSc zz&idJ08dG9#17_-cP1rB$7?oAl`RbvU{pgHLL3UFPHQmda^abv@j}9xRT}uV*@sr0 zB5a|$dKY-kX5UAGZunMe^tN^>u$d>a@jed!s?7O97X+7DNUM1S3gST97leoY+YEV2 zNq?=MXOdUc4WHqszW$|ud#lvnV6KKNo)4Lewenin78rW$yp?|^RD7Lz+h<{msXyyb zKjC0OephP}Asn@OwXGQj&QioAHCdRZ~ya1Qc0U32?i z1B>Ga^mM}@)*txK+H$&I38&fHtT+DN*W+VZocF=fQ~Fc*zRKkNl2snw*ILn^S7<)b zD5=l4(bM~|2Y}(9!k$;|a>4G|n~%1#EQj5CpFe}`TAqap%s)y_+%xA}a{&YO8r~NGy5rF*!*-n}J zyvm@6C@IpVXBL%T_q0*jY!wD((bRandzWC(0|8M)uwEMeN-ZeLS)>lCuy&^#b z6AkjxEIGPazi;{(iN$6%&_na3`f-BuF)s9t+(WnJGW1M7SH(_m_WeEXZw3E|1;T`KwQQYhGb%71X36s8s-CU8A_&-m3cJ0 zCHVaIrX>2^HigEQpXq!bQ}X&`pDkYZbZNFy8jd>S_z1Cjn*Q~?sIWHqB~J&VY|^ly zWFQbClH8K$e&PoxPR}y&(D!7V3)C>l_g%Mevw1-&5^3qwIs7Zy5#ecTG&rUHFT`wu zGcBwCEkYQ+^40cgy?n;_h68+HH9r#TKu=Y-d(Vv_zrw8i1Oz~U0~j&_P(*~TAOx^R zB@qEB(jJ1*iZJ=CD9UZ%_lxz8>51Wz&$37%weep4O)jrOkS@G!{b+fKbW+dt^5M1; zy-l}6xq9(qtjb3+q$l7s?)YcKeLg9=@6T!e-5+b#@jVr-I9%QS;i_*POLw;3Kab@^ zJP9LoP$0ng#_JzRl|RcrO^T?CKh^AbxduzMY9rka|Aorwf1f_1cevZizTHFUkQkr! zeVv(_AD!dn`?}(5KTNdNeJvGP0vY)5##&uM6>Z%0=vu9IKh|pkxB>E%-59}f1{i^F;%iqd~Tc6?l zPcr8FHghBODIGx?W{*i)Byl;#**YYXoJ9ZC{j?w*{C{Au&|Za&?spI1v+ViA#@#+u zSLOY+_1T=c6yVMiFZYbayUOTsk|y6BJ~I>oL>pGW+io38Z`$gC4Ys4lLN{Zq*dv{} z-6CGL-miMew(BTbIfLJCH_n|{7s*F$lN)+3BS>?uY<oPlyJ1zY!Q=4<*x*gn)%Q z6-&^LpS4iVp#k|`ius1s?QZ$yv&p@RB3_aMsUUkes0+Pn&F0YPP&rIGl<#}`d}QBt ze=h;U>?z6D>Ua4EVZi2kEV_=8@i!*m7$cX&%*(YXpm!D)9ayw?ZzecgMP||u=hLLe=F5w3)kX#wLSt6J3O#BHf7?ujinv!hrMm4Z%4>q z4&U$6?=*O8I9<3V!9(FqjhK8ED;u*!j|+XG3eQSOqW!@ssDu~A)Q++a2L zyWAOSS)pSU_DrJ`RbP`ziYfh6#tNTl^YMi2tkmG#w>H6hicx_;BWNLem`*)<=%nl` z>61ShW8X%bcN@T;kkRpwd!b!rX)88;t3RbKz2T5VNEpfnIR62c0|RAImHCgQQmS>a zC4VZ*=$k&bZiWSWHqXaOb+(|39vfA9Brg!I*&~x3@MP{o0?zNdBRs^hCE2Bu6)ZU# z4;oD>Z10VbV5U}vTU{*}*S3gMQ5F)Vg%(i2jHM4;@7<>_KFR9((P2inob<*f6Cnct zH1gAza}M|CCnTz;nM%z(zUSQM{JP&C*lK60qd6CiPe6H0vH#zdt*j~` z>TUSH!}ve-?)AK;#-^yMz6N->^^PK}&pyB59&caPKoIgjtA6Om>-g$H8`+Vc@l(A0 z3Aye1tV}<}X8;g+n%;?Jnjnu~VW(WVHK5k<>6c1vIb6#6I(|fT<>G2w@srdMG?Amx ztBd0%%b5RDQ_Ekd7A&Iqh{3g0tISaV{lasW#OR1VT%nA1^|=nsQh{lnVgR`@BjpLr z$zaEu(?Kza7=TEvf`u2Tb_trPQ22rYg7=FsI3H?5NA`+G#4ZR0ZlP^P-^{FzTfZa> z4+O=fB?-ityJZ7I=Z$>XO`t%KSg-QzTYkd0@Rp9!N(>~-UgIdI2Z{NK>g$LXxqO;q z2DOitWx0d$bj)i$4v>dbB!KGQiRBFk_x8G7#iH-5F8}9dxmF&==-qtg;urq!_IW;M z$Q^$*nVl?K{}zPkLUOvJ8?h>W39U-k>qli5`jc@!V59~Ylg-(=2o_8Lcd=RQLM&1! z0|aw%zp?vkxI22L#KC>vf9)J`552kX8}MYiXrK}NncYlBj!@2&x=`oL@V|p!>&nLQ zS3oXy1)C2ntV3YsgZE7(kRj@-x;|NM%HOn)NJJiz^KaP#%UHI$9^^Ix8*Y&p(g#a) znaVDL1cR*6nyFZI%~nkfQ4O0>itAd%)a-Km{EyI1q0;S-0mM4wF7}ha#XqNiNA9~U z^4wa_B2ufMXF~m=WSvbZ72BpU2{UHw*E#0Mu3-KEM4P@A^4f zx{jq4V#SO3sb99-b22gzSbs}>%{z<-cZ>f!Tlc_1JsPO*Xq>XB&%Rz>S~Qv}V8>ll=+N zD0;u)&!30W_R|79)+QCRFdZ3y{v7|(SKj~0JcIi}4u}$=fI|o8VlZ4AqCk8|0gQes zw~c?{er#Iwq>jRn0`dYtq0kfhohGIPn)95!?SHZ{f^nsiEF3XB(f+1a{2D8tpq>V9 zc@*hm?v`uZ-Clx@?_Y}8slV0h#aU}-tpaa({di_vF2;TX@-4U6MZ7gV11Zn(8gc)< z$MAlq*XQ*}5EK@$v`ZXvoOlJdO1Xn5wF%h>X*9F;LaVxy0SMs&eU7$*ZkRXT=#6 ziRjX&$!LoaSkJMw(|(!dCl$>&mY#z7d>3%466+u8+fgFw9j*uWvXVXSwyiC+|4_-KY6BjpR`jj}>g9u8%qV zz86XVJ{F&asjG;Jrv0o#ooAQZ(TB-DlC$SkO%7x{b^Xzxjb4|Tb*C=fuS zyBm>oc>zSE?6&8)RdHO)QQMyF!2F-`nikJRuH5%+-;IQ9{Xq^zY_`2>X^T2lleKF;yf!<+UNCM$DK_p z=)bui6xa5;NVu3J;Ro5yH%s_l93I<-r?y3Y)k-n^e=E8d1!`J`g6Az`>AmN!-dkDS z_2z~Gqwe@#ZQHX1V9ARA5H1635G2;^nZ};KFg$FRgx&9$mryQo>1gm0|XI?HGQA4`5BqVdusKqh>9##5fOfa zW5i0M6-ci7ntKZ}QAPPSRaJcA6jgpFxW*lC2AJ4tqARYN&LYHpz1_Q69V>{4f9<|q zqwcAF1@vBT8o6w5boi7sXGi;bo`)QVKbK_@S60>}V?V0T$nfZ7kD0SImp+%tQ0I6K z+cm%b?DmN;Aa%U6ZfN<^;zVs5FtH>N`Nz$0>Qc>L{9_6zk9SB_eXi{foxE2AIC#T3P-bK&gZ$WKAmU^UZsPubOO_ABY0@X}Z1x>D{k#tAS5RFilS+M4QBPUyd7qK` zoEy}Mm*te9p&&UB{Cv^`eLg(tkk?zQ9dWMr66B60e&RHdcY5m(Fl~H2wgG9kd)kmq zL*j>UlFSOj!Yd__i(PQ%`# z!!w8?Z{w0JX90Oq7`#2*11>TEb-wq!Xnm49KCfk(@YXOCk*s!}%bmK;0q@Y+S?*Xy z{$}Il=F>O}reqA=9ldS_9>XEGko=>zWIkeFjl%Z7YyYu{m-F`jDY=vJ|01P7X73-r zf8U%OC(Fx#Y#}aM=BzEgPE5qKfCR7<~;wqE>=TY}Tyjumu{4%>eY($lCiG!rKSI*hu)*vFFr%!9)CrX$R zGrr+IKTrMm{IBNJ3<{&YWT$BEu_s2&mv8U%Om?YJ1@zBd!|SkSk4M(RUv*>Q;M`Ml`h|4Uh!?3m@CM)qi-y^ct(dqlo*~HLx?H<;bcF|t8%6i{7{`{vG zI}wh_3K>i6e*y*M#d3^~dollb-y41(I%&F#oZ_@2#aCWY{H4#|M-E_kq zwv|2_RUJ!D#!aL=7xGj5KJ%=>)h4K$Z4=5eyIL@H&y&xpW*OMBR21;&R6!V#8rEx4 zmeqjvt$IpUYP3`Q5^nHLojKxumxHm7=po`#lHyTW7XgP zzl%m?Spy*5_}eBI2+Yd-)(bQ38L1<}RsaYd=MIav!$M?h4RIl6$WO4*k&irWnj4(5UKm z9N%vk|AGMxG_XPQw&u#jn|4@?L}X5NqMrMv!O_2-%+O7`Q-NxIb*7~~cC|9T=LQ8u zn+=C1Ma?b)FM;aRIsDWkZAaws(`A_eZInqN$WS5AuV7US*SYw>JoAD&9WtHE7by5g^4U!z4Aw%A9*GWiJMunzp%t6^XD*kN zwyWgczx?+mbG~&k>AfB>@46fl2Zu`qSjeEW*rgL!@%=a3_W9`Uzq|jrWQs82KaS&% zWg;;`Dx#{aSgcdqQlHms+TY+VDvEfw^)mavXa8L!&?x>zq)uJ+xT6*;BdO^yTv_=2 z);~KUq)Tv2ocvMx)GA`rd2CTd5ksn{FCScl`>KlKzy7i$+RVvNky21CBTYWmNYj zx3G@uzWkag0s|bpZmZY*sX`rRiQ1`E@jrTE01AkNFBl0JU?z`!f*VW>go2VHK=4q$ zUC{14?fnm}(+qgaCEZynMRzu&@^)G7UhO@;|4xmU{?6YX&(Qa@^BfKbBa6AvZ%{Z4 z`cBXEFdYlN6LiV4@e^>I4d&zGZ0Gl0j{IFaIEM?3k2jZy!G`X&ajV&My#}4h5@l(y z_i_K}a>aUmn|W{c{^605KY`+T&G$alVyUqHh^8a0miphSBk8}dCUhZLd4wrfPmAjX z$;Y$&V_1iNgA<#wlfD`J#hU!)cRwcFr(tBsG-x-EXtD0uC$un~JCf$r_T*T0=~%!o zJiJ0?7e_GtpRztHe1buXaXon)h;7&j1Z6dZIJz=7??c`GT@+G^ak!W5P}OhyW&tV* zgOP(~`<88<&&oRGv%|UomEiA9xO@*zBCI(#s0X+bcf8|NVlZJ{<}%Ujl}N znK>-=AFcDScYS`R;(n*~=ls99?M+>m(a@uD0&24fNR89e!@pj7iUUxJ18y$mN!WiKnzx2}AV4L>hq?U7FfwhLz zX)<-@dLHBjbDYGKSG?Kx`)=u;ffl<2Hin`o5Q5@ITvLi6Ks;gvorWJ_^&=0YZ5zks zW-MpS_;s{M{T5k9|Fb@R`l;`%K53B`$Qoo1PuZJ% z+v<=l-w12wX}3^L;J+sbLP95gfrEfMUKGpoaSOp+1?gvUq&+Y5>t)(~UdM9hUl}#0 z`lU?dc!c1Wt@0^-{4;W_|L2Idi;6$Dzib>f%LhBP?vuUU`dhvN%mg*x@Q+}?;Stl2 zvGEO@`%x1*Q|!Md8D(E>{J$G7`?-#X@4j|eh^lX`iath#5M$#1&x57PtWg$4SL7x5 zjeJw50(;ELciQm$ix|%+>>@*q?M0^zf2LbFEM3<$Z zjBqiBB{58we6ZhkKQcnjJaKl-KZLK&sw<5{?~j05FtUJ76snX>KPT%mvQbx^{b{u+ zMfS~Lxaw}e!N^2bln3SeOOJ6%&9?VnBA7i5FJ|a*72rH42k_d9>{_Ib?R%!mEz?DV z076`5Vl|TJqL1?RT3sh=!PED<@66*@4NAZI*5E<;fT&ykdrUk&ALM?Qt<;}Qk@s)z z`cL_`F9JVM!mFJ-dnrK^03sqGzt)hmWCN1<3C7oBuw53EV?Ut&iwN(g!`brJx=nBh zOpjTsF5Sg1gRASmtM&DNf!@919#txRCr8+RenI5jM4tWVRl_v?MLtu!`4_rPM>ME? zCzmPY)7mq3`_$2!b4l`CdD?uWJ(eu_$?~^8V+ZPg=l)nczlUIbH|Ad5o90c&(Z9{3 z`Z4_Mo0pZpy$T%7pPz~5pQ~rqZfxOcr!7C!pKQQxp~oKW3BzH{ax~mCwCi=TCu04J4uz9}yP>{eSZ=#Mk8zh;haK-()uGJi z8?9WouNnJ<-ls#*({__XJsTT~hxZqwPOuS;h! z$ph|_W$xZfCv(T}c)1&-f{+)$V0Y=t>nu7=lJ1^2Pr}6QdO95Ta8R8Z2D8jfwA*>; za^8V86*&pNX8k)P<-1JjyGnM+I!-kXB0HPij-Wkm?)48=h8S=Kd2HoUh6`dZguA1drdjf#E*0b^% z8pWGo%PR@4nK;za^asyFYV3_eakJ(cr>f?7oFA!toVg zSy7V?V&dCIk9)OvCayCwcWIEAGUC&kwV_r%kog;vFWN;5&p3Ue>~E zv%yago%$~J>fL;fa&$?|-(CaS>t}=4x!&)e zY_<708qDdq^y$-$(%jfx_34QUYa|r zv4YNW8vT9g(mapZXjVpr#gu7UXIvy_3jxuCECD&(ohk3=ldk(8+%~x}`|6VTdPWP9o+9w$f z6EgC2AcLVfL5dJ$AOQy{pf1B$%V+Fd`q0<2S1WeEzIMyQywLP;dwEv*I41ZPjh%}> z`n$XTUWe6``ss7by3Q~CxzRaB*8P=c47}}@eNH3?^=;t(=~m9vX=nPGi(4@)y%eln1Yu~-(c^*WMaWx%`+Gxn7D-E38|FNLs&^``V z`Ih`N%j6M+gK7D?mo%LYtvxg>C6-*9fP+aw7QVV?hvr5!)G>=HjoHsiUc=CH^RzRI zTN-xdflubKiOF;RWb5mkQCq>Op;#kxtT`XWwu!Yw9fqGRbIKpHEV&GS*`xnjDCbM~ ze*gZlS|p7?<0>!|xVY)-YCIL%TpT@Tya3X0uzujrODEc%PA#{LrK2@avzOyuQo|{r z&}d5K+_pFOcYiqYB1s_Clflj#ic;US~^Y|5F8H zo1@UhKYKgcuzk&!>@}U;5%BQ#U&V~`rVGwsrkcHuPRT-xiFfOtc@It3+9PsGM?&JI zt-qyUQwvEmO6JA<@8VPi>^nP)4tNW#CJze-d%}a}rQ7njClv9iif2n!lBWMeDNFYC zW)HXd;v}>}&+*6K(Qe(30-drXD^(KC85NnYlv3We)J_&LVf&YBo$CL;&2A>|N(@px z>oV4PYmwr^x@^r@=?O_1TfL*;3lWL|$s0hgBf7h}xASs$SIxcqd21Qj*I|qOLfzY$ zZ^bx_Xdu~C2G@Ty2%hdty$yWq_g_4K4_seY2FwJY>Vw)u%0|VvO1XWxHmvKl2G7#O z&nFVsd8cb=HWC{`vDeW_PR2alTui})r9hIjLz~3c+!*!9?g_968^VMrJByY1H@LGr z+Im zCq-aWRUVa$liZ58WS^Audg!8Cj_0n8RhPxX^Q-Ct&s&~@ruIFAk+BNV6VkonY5PH> zjXUg}&(BW&e7Fy9Ti=drcut6c;P5~1)?V98&prHRey?{Q%3UQ)JMjPc{dz6kwC4GA z`#YYe{Z#Ho0qdYTz^~ok>|l_)tKCl0*Qu%XYFE13)tNwMf;hN0qe}{kO(1P}lP?>GsK}QMCi71KTaBx0N>C?rCo% zAz^h+f}UT!Rt)#6Df01<=^37lJA{X*j18V0rCyHq!JxKQ*=kp( z>(<4~)TpD==t10_7m@`xyB%{ExwyZDd`q|Wxk%q9xIcqlnS9G1rAptcbjhx3;^r89 zY2YVwC%wsCOZca^w~!Ajt@*^BnuOQ|D&A0zV9@w;0~*JJP0z`CS+ay!Iqw`CQM*LzoU zjai}$ALQCJAB{v#z}JE8!j)78y6uJTGFrETxpfk8YCJRw9#4YbCY^nL_X%D#@Az29 z1HbZzR}!tgk6L<_QRM2J&EyV1`Gjk;Jgx%F5&J+-Ene+x*S0+Y>T`pMCm@VFz4ad* zCsW54b4x9k4QR1hVTegCN1m}BI3?RiuOCW~c6;s_J&1Czp^6W=n%Q-7CosX&%qCSu!#|3Dml}s+g>?8a@ll}li*CPde_&D!s>(>8H0=YEOQ4(- zu1?B{dG&Bx%-yuuoy-sopn<{B6S{{82!?2#reIAl@zd=eps09WCdh6dnw^gZ{110e z9-GuWvIg;sC%N%97)E&psKxpTMs!JdKVytU*S{6VigVu6Bu{DUQvy5k75|XIfxLF6 znv?`_+F^OoAfF8KR@2G#xX}+OF!<>X*r*ak%T}Bxf~O^$0<5tlk4XeAnz3?9kCRKm z+1+K65Ku;HwBuR|^KY1Cb7tE!4h7Y~wHGFdhi6{YJIu{?2PK{%IVs&C!FCvZ>o(c0 z#6^ONqPp!CGkIw6ZB!LO#|Gfg%ayDa@^D~1sLgB?Q9)6WQHz@vh^nd$N~p1Av=k9y zDk3PcMIqO+@sRtbaM1M(`qY8Tc3Hc8CK+zG_XKw(JN#Y_-Z7poIyXDn0T(YaZeP-r?nT4an^kt=Th!EJh8`h7`+WM<79b5 zTK65jKC49of74U7PRR|vJvSe7W?bvPPaK^Z9Ss>6;$)(=(7Itq{!7hPQ ze$*G1hZ%(Dpf2GyUA}>28g}Xfa&pKI&aL|>r2%$mGm#cV8-~cf(bSLEx#dSIxw zshSF7Q{Z6DGG~6x2`6%p;f&yOFA)#7=`B}TqL$OVw~vingL<7WL$isyPEs4R;43EU zy}dR%d;&L}dpvCP8AG*0qS~h6I^OQ|Xl*AaoBVhKY9vusPT{XLmZeSFSc;u?dUPpIL_4(Vkj!U4aO9xtW^;dRaHo;#1U_2j>U%gISIO9q(KrB zD1c}jqCh2^#b8?&Cn#VX9(7Gz2+}p6F1VL(gwVKJ107mUrM zL`R9svzYf-*1>vi9Xed7qHd5q(U4PIhJ=^-QFbO^6v*tgJ@{S2cpX-vv%1Hc4)6B;QV4;_)w7cIj!4O12V8$F*mZ`kmUgvROaeB+Hsm^5A zL{SA4IDIbz92A_i@KxWuBs@n?*WqQ+b{H?-AxE%fMNsRVb=#z^Y8vU9WQ9c)5l2^~ zaW^T#Ox}x!j6mk0$7JN8l1{CLZ)1-YiQ?Vr6G}u@6RLJlFe;(U>MSse2ZLngbsQ{o ztU6>nmSl%yhN>besAy+G&Y|p%x`#;c6MBKi+Pd#6ZuL7>6TsitZ#mtmfG)ODU860q z-bUcD71-BCeW$lNc5$g|XOzGdgM*;?>$OFUl_q@M9%d2A!O+rnMV?L~>;v`!_*e6DPku;vgPvztUpn+uhcdgAC%L>AUxb8!{u{7gEAl^OaZl z4J0nRA08zyk94_1ai>jj;_48`l8eW~WacDd8LO0pydiFKlq+k~mQM{1Gn?IXRPQ#f zsvSoj!?t?#4qFbn4bt}4RTMg;;-`S*f!44(*SOf%!thhY_=}Qt`PsMy%vK^V3A}q^ZD_L`tH)0Pf#EY*f!wphcZsz244h}2pFPpvQ+1t( z3xjv>2Z2pxNyB2px7M;A6DI9DMejIRI!;aU9u3fkdWSum-MWgecAcVd-y6)c!{%EW}e zS4-ir=-6te(7i6+6h%B+VyNWREiJZ|6h>Mst!=h$SXqjy2#u*|rL^qyV&LQMb~m{O z>%F5huZKg7nIl?jDkycWRLQJ0(xAIr`YDnIeXh;}t6|U8D2SkQk)f zyhg4_ixi59HW6V}1r=g5e~S*yn+SL5x_KQJI}=!B-=~7k-G>?K9Gv<4+#81^?s3!L zI`w$Gx_Fe;PC9hml~tX4!AZPBY3teB@UB-E6705h%s8&?oL!0<;-V`Bkxf=|cwPn} zw#~xrT}Yk+9P~I(T7YJeRS{%W1rZfsprRtkEIN(#hMpZfE?p-=?gxm;tifb*va#qI zuKLtP>24j;@~-XMLrQBkTA(yXG}yMW-bOIiE+7eq4CL_Lfx5Woo#NrOOCch?VA`+W}#7Y9s(J5^qAgP6PC?J2WP#Zs_MKqZ4E3Ov&K3sux>gV zJGOTsaoMOn!!~$#VKaedqR1)GG8Kf212%CP)#YRq z4vD)~R649!VF71Al3i{lCcCoivK@mBDGgmX$4AAXHCZxAGz=wVi&#p)Hj<&Lg+MZS zY>?2v$p~ifkebYxNvAfD!b~9|gcKsl0}QDa1X2OXNhM^`l3@VC5IU5S6@-T>*#KEI zi6qjH%r6={iJ{ph?*;4`UYZF~Q;3B7CLY1*(i?0<1YoMMVbL(#>FkTH z@SSww^p~UOQ(b_uiojBF)0EEj=vZ)GsSbfU&RsYT_jS=?PHnSoB8wI%h@z+>h@vAD zQBehAs}vZBiYO|@1Qk^lEJaa>EK(>a2#Ttq-lq)g?43iqUb4=|sh-r+>l)4PYe;r)d(WozoQ`LCgP5FjJVG5>P0|M6b7tWu zXWZ2e7Y6m6f04nBO@0PiUf+#y$aW7vm4_|pbWXCVp1Jpm!>6fp%QWJ7}~K+_Z&ptO{*+`4SpHjEIiQdtnSW0yP!BV?eF9NTM< z=Ws^{QD3`L4h`)aRz_ySx;H6MCmTW!C}@g(8WeFBFKzbDcSe*-=>y!4-bZd9zei z7%C$b5mi{CiYhD?DG*d+1&b9K;uCnArfv}KH*}qv8j8eO1x6yOqZllmK6r$~6?k@v zL#|=Pcg`G=a**lX^@e%aECwWA`41ee}`wiPCVYst2 zIwqpdVsh7Bv*J7#5RL$@DzGe*qprlal-g71a)loIxy*WGj9s@Pf zq1iLHv<+ntSj0sX6^jKYX3b4XaNN-r3{_Y&fko6s>si_GsAyzWK@|lARbq&-Q3fiC zq9Tg1MT#QG#08s`9Yh`70P2~Xh>D`S)XRyUIDI#Jj=`Nk_i3q>4v(m_tJS6Ltjz^E z-4*Oji`SRA8`1D-t5_bcacoJB!+4bWdb-6q)PL?zSvcSHy{zdX(u9H4xpfMMa9B z#Zg5O7@)yX5-6+W87R()g;76S(ezdUXuSa@b&!WXtId6@6&5*O6 zYTlhU$X>IFj|H83*FEddx=`XLf}8g{Nw$cGR-LOjy?r}W4;9niw^mS6C>*}}!+WWA zd+QGkI$(AlyvkPi9=rhX>bj-BJb!HMpf~l^>+PUL`!)2GRLjjI1J7*fU z+T9!QPEi)fTP*fz8^NVg=(;7DDK-<(@%OAX*t4@kgWL321DmGnCfg1Qb&my;b}JA` zx=Qw42N%9F*=K3cU4A{9>CHq}k+pnVsO^kAB-?ybIen!!Zm(5mc87e(r8=nIfV%jF(jBUeeyJrQP$A`w8q5*_8UxkJ4}4DA>!D5xl?tS4e8YvQP6 z$gxpbGU+IGJ#`71D2g#bMT&w9RfxqzL{$-rFjKH*%e~}K>KVyJoV(8HGMr9?&l?Ew z?9rcpvC(HWUBfn*O=c(u9Te$Pt$K9tT^*f;7z$2_;JZBqn(PgyT_&KCZ`saC(kD>K z*CCDl(wyg`c+X4YJTol2?p-HNCw0`*t9wN4knghQcR6l_WKcTvH>h=L%~ouo-*>he zh@dEns2#%%gofn`o+9!vanlV=H&eFDliptMv$0LiwTDKBIfqxd?rilY@2Rw%4hQ4thkvI?3NcVrVZvn@6i^r|1VI%z ztnHA^Zj&8-H9E|W`$qR1y-IGGxI?`_*X=1MLC>)2UUIW=$aKlPK*C-w^8q}2+OW%` z=&&9&?wa${eus16S=2jh@L4%%9VT8Q9E9h*4rSgaHGpnYL*tn^EDkbMIB6<$nzy88 z*54NsN+?AEL=aJ8imITBA__rbz!;(mk%Ee#D5MosSg}DE3j|`t6j6%77%IVHio`_} z5J6(BRUnL0xOj(QxWw^}(Eh4O;m)2&&f7nb?N_v4K2UC`=(-NVQ_z=oC6z z(y)6QgMr3Tph#g55Du6QDUM=|0ul|j9o8>%-fpl5Q1&{PnD=|5kB&lA-cf0~P74lK zBU1$I5_D<3K=0l z%(o8C`-OwVv!mcsr+KN<_Y|G;4y&NDRe;4nf)mi_qYKECm8ZbIBhQH&Lug(bRSAo_HZod{R0j0XT;;v?=R? z%HN2+oEz$?uP!<1OAOC|B{Imv*BYII`i*addY!CnTnlLE7$7suK!S2OAUKUcp;1Dm z7#Rv@DA5KgRnW$gNk&2~VvG~2lmUvg8gn5QJv(fKf20TahBSCQD4@Q;$yuyN0RaEFcbe{EFqi4M&~o%7gXPn6ysk zC8M!g`t0XiYFVgVV`rP_djE;i^xn`AllsR!J8<&vMj&u_ZS3uAR`A-xhZODYFj51e z1QFSKxmLJaF!D6j;~D{o|yR4cM?$z}aUm-G>1N{DxWu zIXIk!S1t$7gPmeQ>#k9U3y;5DXv^N;-TUNyAAgbPlkmshDp?`>8SC7e=!QRl#g`hs z0sta&iUy|CP)vw`ux?%hMWtvMkC|vJShgU0gQEvS>HIm-N75k6O91O!qTvW6z}55& z!l9Gr2h7i1l%&&oZuqv!ARq!Y(Pm`?IsNQlAoV^H<{3-4r|V?Q_be0visHq zw22Uc+!>+QRN?^Qsi@^eqkN&<1CJYDp?vV!!$%7Nhi2=1dy{sr`t5SLA4eY4t%yw9 z;*73U{OvGfIX&_$q9ey1MXLBh_HT}s7rX^ym_gs0f0df$;A})jo{i&R99gey=rZVr|0>vHa3@rK7?@=`}-4>3{bq^I$s?rB!O5U68&6@HqE}%%QVW2 zV*>)5VJe%!u{h&?;fdvTTcQ(53tMh9%pBs^u3$I>)LJ{#-C5YcE9>(Seui|w8EcTujhr7nNz8lYhr7?&=0CfG9~Kg&6j zd@S#P81K6sfT3ce)O`u;WopT)gkM^9!-mZ%+a+gI2B;;1W-~m5b#TClh=U;^Mmh%m z0s1WwwLPPZ+|YQ0nFPA6Lj4tHIxus31~CW1V4lcqT57J@5%ZT%onpgJlZ^}(ZH)p1 zDytGSslvg;rGi~p<_j>8p_b`Rg0>`BKq7|tW5?tscGq~YH|7!6>C+rO^jTIH#f>Hu z>8SQj5cD4WwAq{wZDT4fxziIkgmhi-y-t^*72V^)^iIEtZG0XNoNb+yH$m-%8h%)* z5JdP450^rIqB^161O?=$0fNXqs7UPqV2(o!5JnITX5oJOIr;i|b7)d5sWJ6})$Yuq zz@xF_uQJ3D*50EuENS>h-4MU{jr6QU#TtkJ zVn>X&usyZ)p2oYpyG)lp=LjB89&cyV1uIEH@&MQ83L1QBz!A^{pKu}|Tp{pGwDkZ0 z1XiF5f#xI-AAzDKMG1wfViE`}RE7*P!MP0P!Gh(Dap^gLVz#vj(=kyEc<-Z3+6~%c zeP3tG4&T?a>#XnN+uPsR_ZDh3@i%5}&tNi%91ty{^-NMkJZ92q*(fU^LqR!fL^A+E zn5;F81V#ciVxEiQ^&{^v>tjzd zZt*!o^@`U^Bq&D1Rm^zviXj_KGId@6btY=HWMQ4QS4) zi`rVuEjGdqAW?-GFefcx(j}+M&C6x<)hTu3o@5#YF~I~7LyrJSK(@ce6L*K%Z|=XZ zr<>KwiLfQgWTqf$LUG4t&=EF$;_m<~u6nPEae6C#m~H*_rWu|S-Djw^W9c*h`F|%8 z|3lY*ml7^qUY(`Tq}Kp3f)$IP_`K)=p=l%`J717NIhVA-UUu@^xnRtSVqlg&(egmw*2nFch}ylgY5sNJ~G|Qp3AJH zrw#>`oiM$FNbC0Hj8w~WxhO@mR%b2vIaYltb(!`4E;B~vW(|k)J|54_5Q?|8M|#`f zBUF2edqmD&OSU-f%P+?8h42k-NGO}RH7g+Hf$3@r;@W_ML``Ltw%iXkT>94lk1tpa zP44sot;CXKDl`hf(|C|Cz!41 zIuf-5;Z1Oqx2S%cFlc|n_lINX&@?a=+|VeDpK?On7os>O;S^eW-yvJssFjUB*og(S zb_33+B}IazZQBzg0rZyl@-o_Wso7`(yax!cE;Yi%6HHl~okrKS<8RsHX0-r(6Tj}8 z*Z5A^@ru~P4}(LNEVrsD*zVX>a9J#4#s*6B9T=6uBOV&ECu;qL5&S4P=z=pntI{z6 z2X_|vdV|o$d%RLcm|E$HV~tIBNrQm{wFrU**Y6|L`V_28oyl@qC&a&$JHgdH}=#5f6{?C&>*JxpAJl^t=|j2Tc!35p%-0 zZNT)C7d`Abdg_XHL`wE z>#k!|NaV(7Lw0df@i(9}PHYTCXQ;^#TDCkucFkMD72qUm_>+ebmIt=y!8K5Q3%KXf z%t*jDcb)kUqOyqnE}$j=6hI=lcns@0Kmrqzoi!#~XkjZC@nfm;m!lJ2D)>(F=VjIO z^$D;fpOb*gHzAgqEJ4?SC=RhbqV~*y5p=DX1oL3U&hG6at(PYFH0VlGG*H}$$i5eV zBeGPWqzg7!Ug(#0RObmH8>V((uqAS)=#dLIg;@`OY6}^saKE5qjp}etg@Hig6*cuXY-ls{YCda41~7TA51c7rNYq96*0yZ z$o#1!ksc4Z>bh$+HxpVmCcWyUFsVn0pCO4zI78k?IMG;j9_H4rUtr7S;#qgP&#_Y5 zXCXK-=4I+Lcym#4HXbsFYs^4|AQERk5o-hsZ<+iGs5rypN8e)83~?(``hac8fbo0+ z@a|tc$mNB4e( zsQ9MUW%m9=ScJUKhETuAt40{?^gacAEL?;AEs7T02Y-ax5&+S zm*w3&dyhP^M(%3#!x}aIMryw_q)Ml0Q*O&lwX1aOE%7jF!9fF%VFA7{fJOtX%<%e_ zK=?Zo_V|y%KUCd4363F|n&w%0FX}rjERNs3VlLw5MjoMttv2y@nr(n=Z@nW3BS4@i zn{4JuN2#G6xN{4gBBsDsXd%7K_ZQrr^*gN7wd1C=+$7odi}p8?bCI})2jk!MoAW9 z{VLRKgi+|p_dLPyQh$17B*!q(ZRA9;FtI^g3Y12DFEtb-X30>=`>EUdkp}Sg0iXZE zA;1Byz`)i7reX$K)Fb2f=i*XUK0$g3hu|x(tmx2gL4g%5faIW&7A@?LvG*7XZYuAWPDu6Ts@}UFtf)jN1B`|MT@C<-MPop+^`i0Xv1Q7u< zen$x_1Ox@x5?f`*4~Hzd)EZQBrP zY|apd^Bl!)JM^^Z3xrXkNd3U1#ft$4Y9l6!^$Dq4I1wZD;fmW<$*L?Hi#_Zl1GbJ4 zSypUHX9dcwkpI7-cM30~NHH1a{jh{9H{QA00tHM(HHb95Wy9C zpdnN37*}o>h`11o5N_x}uV3j|^?FNfIy42m;IFF!L%%1KG!2Y`E9;%Dy#i7UJK;&RMW)sxEuhi-D%|B6NLE_L!QLDvj>WUsWq@8BW z@s$Ua%;%WQi6VLhhU{?ykmiMjRhDo!A zh6eex*ypigz?0`%;l0-l&;s?jkyOX(CX*Mv@H^owZMj{|!SEp-psh4@m!l4eAp=Fd zgy(A>#J%Y{|nc4mw3ZtEn$p~H1O?3?O2RP$#_@lUrwp7kj3lW(p-{=2FQRv zkt``Oq=A~w4ZDJY?f^~E|yq}KF+97rWge0GTF>MRnU zB<6*b@P1J;$a;1y0#Dk(cOg%X!39))uo+nNOeI}4Aqe;kQCu*+w>y^Rd7={#I+vs+ zNqld4?a+pjX?=-uOuCY%70n6kF_}G~A;fc_kJ3pSx=(VTl!SL=eVg(VB}JBlD)et7 zr|;el_(HJvWw;qT`|0>qOTAu|6kcZ4iBOoRZBM^cW_E?DtmaeRZRR2IZCF#_;`a}G zi|k(Dc7Jz{Z*;-ei5SwWkE`y{->}xjmd_$7a{s^b38CDc`65gW+_(975Td=`%H2|} zzjlYCt?%{D)JWfq+qXHjmb;_D^fi5_oH(_8BgQ3SjPC1ntycTSx2Q9qfZf&0oLaYT z_TJrlFy>73J zc3zH}3-X)-T_hdvZB5uu(}h+&!%K5G$9Q+d)Pjo~H)5)$$u=nad!ZI?GG z`y_cUNf)i64R^h7awJg_+6?AyaXaCl{o6Hx{##GgxWkbmfeS)@ zd=ukUfHt^4Yv5GGu@}XVvwU+(B#=Qp4qeR2rTF;M?zsy_8f@zqzIMEe+VmYtmB2^B z>V6o?zfLPJfnrdr+o|2%t}VbBL_PR3Jf%gkqe?QhH#Ypozo3&ht%}wjXcn@}L)Ih@ z%Hb6Jy_)o_>u`4d3T9v=+9{a^%*lybGo0gEhJx1qY(fz%BZ z_#Ky%(74Q)UgZwZdk}m89xdu#0$z%8P$!oGUS#&J=jG}(*Eqk^Ppp)Ols@ycu!FLd zFjMTUSwZ@?Evcf(=c~sZ0TdrH!+6ZSCZ#4E-@88O;VM)1lMWxNJuRpA!?jL2=XWE<3$~Y|*6kGEH-@Lv5w_q0g%|a?N z1Gr;kO2xN(aMLC`=JEDtSKEUk#NON9Ov;tLe-+Iv!IZwKOEwQpyZcmJd3FNmvghBo zx$Ip}r-}dMAzYs5SP#c6ufww)!^y`RkI&50qf_IRJ%b3J6DL2D zCmLLcBSd>=(NU+RVfe~TkqJz(*at~$OzO*F>+P3 zUfy=7(4~^asRCARXKP;b(Q1~40uJgF-ki44orE!Dk`y4V&7w<>DVMfoQNJ>8gKO=}aY5%FW{}1QIZ=!cgsH-I)j|T3@$~*DwVu z^wUT=Z;2YNnI$f8?~*m}kZ)>@xlwpmb-a!!2el|Y1#-iY=uZ6vQ&8GG5}_yxphGl0 z)}N&~Lb-1*)9f~3K!wF{XR#7M2bVtY)1*V2=>l5aIkTa`_x}fvwE*|;WPN8&HnCI0 zR+9tY*(cC7bz7m!seHre)W^L%MF1!l0jChw3EPIY1(mVd21vk_oVjh^TDQH-w`qNT z+3dHV%G)Ymt#<~9rBb`*V{|Bmm;4R(3k4_5vz(Yrr(cxn9suv$S8WrH@0*u&{O3=% z;y}buHiDGJEMgH=4KBxbN1~Ya1QdE`_t7}@e+JSia|{|dqfwW7BXB^}9z5n@IzjO- zFlZH%&_WJd?fH#QtyIkq1Bw@z#QYgiH?8ng9*I^)qG^*5chDA6U3C7dJuZFEh@#@l z74w-B@b%L@Lx)_Z5pRZmwwR+Sc+^qmASGEn)`a)s2@nrtu&}RpOGQB{Jz-?H(wl;z z`EXJCkx?Wyw|6V~lZbpS?l~WOeW^DH65nuPf?Ywd&vHtIzdHEe7O}scc@n8%w*a1(;SwVU|x~*+#i?FDRn4$~_Ee)iL_6* zm460SFIer2?)WL_it49oJ_f5mz75r5u%1G?Y_}upA_ck!_T8t-4NcHCA+#W_Fwque z;AU%GPmaj&ceK>R=%267aUmyXoVr-7QXqgU2qk3ZkpOfkCd%$Bb#0QO{br|MTh4(~ zgOj`4b`3XP8DOpiApJ{9vt{Tp_3X=l_I(>GxW>9Dav@y2GC)J1@ZbXEY0o%zL<7mZ zA$=E|M~fLY%V483ONp;zo#N*Ejh@Z^1*43*Y(iP3_1YV;TGFg|Sp^ z$GO-;eqcQqpb-{~5G2u~@9Ls6E^+rx6Hy3_34#=5=rH>FdAmoHVv>=|DJF{%>d3OA zWk)t@0?&239`~I&XLb?fiaxJ@p)14A#>+4w&6lb}y354X0W zl~VmqEz##nXI%5d_Cf8ke12Ju-QU(Zbfj>D8;CIx^F>>m1Zk;z!#>X8x$LX=w(OI} zy03bRQSD8A)aTy6g*i;1L3P}+_bS5|jk@hMGf%d~_rd-2nyS75CzTewv^d)KO!wjKejrt>$sjL%+18V^;a7;)ruEN)>rXd(omS8B0Rck`-?eS{g-VL` z6yIGFL4K#hQ6IyKul!7wE^R6h#BHe%_+DezI&_Rp*81uFP|2@_Z9G1-ZeSTazK1?Z^~T=hr^ibmwV`bn5T!itD}FMcPRd+1$W z)VCt)HsY*V%POZ50@NjTf&>tINP)Yxc>?Z)i!dw2Nv!H~km~Zu`#ga$VM?##960P{ zZ29kSAHfR!Hii=N*6JP|MWO4XcPDU#@QKH2gh|3Ekb|lr4j>3l_dRf97^wrA2{3a8 zZ#oSxZo!adgv5Q51c@;VyzY7rL(`nABikD8s^7(7Bx7j{wMy%wI?eA+{R|0*f_Ca2 z-kNSnM%M$|iU^s$a1rSmkCtIltnq!VZRyhTVD68z^W9!CGgL@%52W-kv&kF(i99pM zcMR&7t0nBQUXPDe3qbjTE4T7b)B}eHE}YmZ^&rHuHz0TfEZ?#&TgFdryJ+>BZZAS- z-aQkIEOhc4_A037fZ@WNInmvbfwre{O~l{uI9xO$OrlFH*L4F%5zR>l!K0@H0DyXO z4iK#XX9u9dKCWiJ)5Of4th3vHs0k31A+Ia<_y$VEE&8L+JlA}ax-A<7y(%SlN(xac z9*?S_2x*_8#Yk;)Ip2~9e$Ror@bq|(8S?(0+6Nh)I8SzY&zEuXbH6V2_{sNQOpmP} zsKJE_?kaS|M?0(H*5cQG(-z!W7$~yJ)Uq$(cwCFTkb;83ecDmux>paBfCUe) z48k6#RbFHEK{YO-qxb&nu$X`P3)YNCIA1(3kKL3p$e&`K}+%jhYlSHFTr zC{Mojc6~|G)uSEHSL7wdOHqoFKZf$B1)-1_YwVPj+xH5xH)0e|bm@1j0Fi zm_y1@0VwX*lioy42gD4_>yMS*ZK|fV78+#K+A$&_{7-JqNJM*B2T0mi?osK=KHO1D zdo~`_5U455J6xh7JUY|+adnrsAT9Ov549Z;5oYZa3>bh}uNROL`jWYg^;haS0F(!- z7cG8+l1*p4YKzbYq|V;zSRgm_MyDs<$}aNh^-({yWs8gmyRPH#4TYE7+Xviy4@gP< zxNmD8L}^BNs2HWASG8@)6qY1ujKLm_pJFl&Y5>xSJm))9v9M282ShwO=rd6Ws%hxzYNiR zK#A$mUH4U~$}rG+x|-=SvHh2`ac$>Evu|Tm?lfAEW~U?KM4}~n|C$`n$)(+aCTQNQ z`%y1xTK2w`I35zFUk0CM)1j4@YjC|dE_uBbqEB3YFdzuL``;NdscQyK-y}|gA@MJF z?4cm_5&L{eD6KwX7>D~5Sfmzr9-|*nK{$&d$IiK4;due0z>x^Y+ zV&79mOWMiuq*5Nz{Gc*l%x_HNe>d8Ccc`6{@+XGelX`O~*eJVyA~K`S9)6X-gx+{3 z&sgoX1>@-ZP61Lm5wBO<8OkR3tyjL{>}mNQ8NL^N(FXXeV1m=Pq?+w?E1s`s5}xLZ zMzTF2_ee|*f!XW#!!Gp|44Dd~zeS6KLCJAR4XbdgEke$sn9GU?uO&6r;(E=#e;O0e z@59Y~FMaNOr_y>H`d8#Y_v!0zv$zUed;`trYgaAW;hyjw0Zy%lg6PZ@v1af zhp}GOpltNK$TbdLW>IMhOsr7vj%<@3YZT31lN7t}NJb@lUr5n%E$w79P%#U5eS_En zqefb8G<=d`R)yvil6iaL_tdF79`%P216}hqfi1rO+=RLBkJkc3F?PTxC}JVCRT)<3 z?)cy_oXrz+*l#!cmI4X_#;e_*7&0Qm(xcL1GPyzLP1HQ>X+N{er*FF6{3=kW@=(Q+ zgY4I!M%@knT@F&c?|Bakq5&kk(h5HO`Z->Qv12}6; z^Vm3}zPe>Jhg0mLL(qKB3%C=Z>?79^9Ms-wNUs*g%5?pe>EDaota{$ah~lFq>oJsb z*~st8SP1MoY8c5cIQu2rXL&6mG1uWz^k6=`_T>*MGfg^_j%;FmSDoEMQQX_#t&cJ- z=WDBYCF|S4y({#z!tFhmf;LYk^E^a6;KXE}rvvBD*=2i~JL}59dHsHO*3kCM zxSh(HpKoW-+(Gnj4?tPHn%L&WPH#2jxgA!D={s2MW|{uKThhGB+kzI%%fsX94%>*6 za9X{{ox8-;7zSQ{u<<lid+GA-$bR_> zpPh0&Et7Cx5wl~Nub2qY)%-t1dm>;*qtr7I?MI_YhqEBfd0rc#Gwo?3u*2!oDA_og zDDx=ums#uhK65hijC~|x`JLS!}lt2yEA6 z-662wyI;OcNd$xtl}(HEcEvk-BfTOlH|`hfchO|sZX2&4b9c^|zlV7~0BBbb&TX_R zO%Y(rg!{n(K$f7G`_D(#G55UuszXB?eg+DM8?%p-DCwx7HZ8@Y7q?8$3637&_RnIg zIqj^zvlndX4WlyKOKMticYqqr>M-nzb_6N!F z>S@XB4E&Sof}e35`Fc1#TUsimAA)_Z^2ey}!7bPe)bBrUsR6j%7chgd+70IG zX8?gt6)ukmCM*=|;zydUdHy2~nlMr9Y-Ii{iY{TozaKlzv)N8B=T#SO{DTi$>IrG} zv5Zv_?_0sS;CZ02dAPuAj=OhZ{fMr2=#w{>@4YWIj+|HJ;)d5e1e-2RId%pyHM-*j zi&tlcmBNnNY?un|nj0m|)eWY|iH^V%2yG+*yq;XXpd6N3wrL%+dIyRzNnN5d#4!Q_ z8bSQNhn|=Ik`<^VHkLyTp;Wyl58&*P{&f8Nn$^8flur#*R%1SjXvE%CEpO#~RK%?` zltqXt@nNoJR3cGMG+S<_5MRleAhEx{Q2X#hq5Gk3Oor%gIAN}4})5ln?dv}Q1QKxNK(VlC9-MuSiK9-^DP)5 z=qOUwd9jV(V4i+f&)FY+k>Yv&XP@Kvl^FXk0GpVfxAbLCRSI24&GX2ws^Z!YCIi@j zeE8W(dC$0-<$?oWB0<)CE_g6E_?O-Q)K5w>po>^6+?Wi9rNqqlc z5~dz6o&)4)-zHcrTWwGRLZGU4`(Zh?RS50wziU9pW}2XAh>~nJ>#X*Rlb<2wYW$mv zO;&cE>SaEsD**`3xF1l%hPA7kYO4Iz=sVefZ3ALWKG2&jj(C#ng6)_d2kFl@mf3^Y z2ovSt1!*u|UzZOr%LfEgRjm&!A8fsPVm!I|jiL!WbcM>&Y&P*bxR3?}*zuGT_JGfh zZGqIh)poAP%of@ckk@F(W=1-|r7p{+1ySqmp>~R>!ellek1P-!nnD|DYf#PYM=Lx4 z)TB1cW*MS2*R`YOJ38lj*~hW2i1~(uJOSKw$;d^Lr^WSN!^ce{>re4lEIj=PYf zFevd=*r;s%a}newB+kiZB-jI@sydMPpMmFVdA`owPvqHeRotE#8aMpEDZoIoZ!nKH z4L<^miSvsvoHdh2X{os`Mg^mq2E1*bk!7^WvOo*6+3b!WlJuZWM;u!T+bx*{NEk1yIzoMwL0<> zWI5-EX9zXUkJWLVa!979WGOnlRP^&OraxwEs&38cM<*c`{m>fFj~y9id7P_MRoEn|=kaySW{v35Xq zOfrev4q+gJV0jCyfFVj6;MW=$dC6;Ww6FlJz9+A!z&& zdMshp5D$ZmDC;E-*ArMqGEUKQU1}r>=6rW)NI<92)&`g^_1R?B zh4~jcFJa1gX*LvaMiq%1gCTT@@eun{gpuD=jUlC&ocRI46Tx@(&6IY|r z6IM|S_IKxMxa8!jj#iimj%nI9n$7`;gc^vsQ%V}xg23w^@pU;VDXV3v*6PYAhPO~j zV|4XhQiRh5h4gkf)v{X1nsHdBov4lICD;=>a3HouH);m zFNhozblUzPpRc#RcI%0+J6s|_UK---*WzoHPh6s4i=9~N1P4%a^MrM}G6t>b5Yxp7 z2#%*xsKK0hj6$AmG0Ns3`%|f`1d2Lh>Pf)ra0;5v_&9vMKC)I6=;)1RvRTAg%4-0F zFb-4*LcctLtiS^5!NF8O(>HpfwLxF0E|}V#3Bo5{HP0db2a3<@L-UKoUYBqv?VhKN zr%`|^zgq<>D2#dz`w*#kjK{(;Dq4j{PzbP%%r>BkX^+$9f-aKNn*bRuCZA3NgaUUa zXrYCej-c9CdVMGtOn7QC$4)`g9wg-H1_{)@l{Ok(AU4Yvg&+%k8#3tFiGZPykK@Uv z!_BG;yPFg%ca_NhL1O$TwcBfPu(IR=^spJh%i11K@J5mow5juFi zQ4nNYV@wGILwl<$TP*p=VdcQd0Y+^or89HSGoDXG`Eb-~h^)cP&j-h_)aqpURD2Cy ztVdQMmKwbWMILj@q1W?uhv*eWU4Db~&fTs+3yI^F?wAf}^OU1*zu zs$&RwP-C7MZO?XO8)|5EOw>hs2cGc+4W!;hxg@FgbadLAjPH9U(#p-gkaT4L(r-Gk z%CD{V5&+bR!LFFl4tQ#{1i;l0xgci2a@Eiu77vq22Rcngpfkz_&jV+i{2?%e{W*w8 zhRyT&8T<4DP;nqRMGa2?WEc*pbif0@5rE#~#cIHU-!@Nt$3&K;O)xAYHX32om^Qj; zoiOQyZn3!FIzYvTAZdyl@?-#xpF2;W3~m8<8gSMlov0CB<2hvy&c{fE9BoDz89gC1 z@p@f8oeY&!TzUCi%$$M1CYezpF0PBg)E9#M@@t5Gr%#@?oT(wf(r`_|U#JKXPg1`) z9`Pa(ClyAlwOQeRQ==WtXCSquCfv8l7&OWvs=>Eug+NBZkF|{6+9#94RnV!GIVo zujcSrOzW*_kdIqeT~Zfm-PBucPy@#dbO{l4goSMR=XcaZP(VO)gn}DU4hVoan3V_u zr-_AhOXn@NZaHe8B!^659EC3L~!(z@KWr%^VF${@b?FFvOp^J@=uh_z3j6Nu_ zf(?Y=UGJB4|#z$b_Rvq{u09H^La>p~nn@ z0G*M3Iy{7pzDP`X}y6`IzRR>H0AuQQNydQDa>`EqWE0U{t5qIKw;AJ9M$ z6N7<3HQMaD;mQ{oK;MW=@M_p~*?>Z399*y|2vxG(hLLm8SzJQ^>W71*-r|Ne`Pia< zP!}nF(=8mhCnoHqG4dA(M4zo^vYBzW#5*Ualy*yQCi^fha>pnW%*n!=I8R8I~89QXsS_`(!Ls4qXf!(AE&1oCKE&E6a3GY-dzvKYJUI8 zzNz`I*l4ql!TA3(+%?uV5E)GM;sSQ0AVW|ZleHtM)8h=U6H_i4&6ZfWhE&mdqvkZZ zsFXE8dl=0=r&25Q{4mt90A(YrW6(T9z>U>ua$IVSOQ}FdNjqUK~Sdz`4s5{t@{HWa+e<{XS|5Z;-qKC!d*|T!24ElMGI}8B_9j zk7Ulu$|cy@U*2rDXeB%3rU!PL;s6MofS@FIg`m$xpTYAvpJdGnKW^0d$#$%YPr%>& zgU|VAdhNIaVCRUrz|;$X%)_rR!G@GtyTnXGM9KA7DSdT%NJrO~h$5}l_VAZ|h@4B9 zTnl5g;c>njjpXPj%SPlkr-)nyvB7j9y|@8N>gwBZbST|Z-GxQX(cG4r5OOzgnii^B zf$ETM7Pd%3cM-g_-P`gx8{NoZu|;vPM)!BhxeMkUhTC~tM@%zgt{d#EF8i|a7izUh zg{X(2nGjXuq8s5jHbc4-#Ne&jFk#N%U_ko!O79&WQrOxj!1Jv?0ldp z^eA8}M3zPAHpL78FIx_za)A7tp)MXs?N7YQu&0Ke%kq5^3C75f*+pm89o-p`P zHKTV7K(ie^(KB_n@sHQ~dVAIy6ETe4@#3bJu@TUg!Lb`JN zvp-4WutNfQG^z3*GWvEIL{sY1;J-BwHj(p`3jsV%2IH7bT(0&3@L`Vk8J_og#~fJi zabd1nh-2Sx1Uje%?iK;U5U|^_2{AFTd<3_JRDj6P__*5Ohsla6S~~1}d0@dX;o)K9 za_Mn#K-{csTp--0TMFD%F>wwZ$X62^VS*vEN4!Gyb}hy6$zyH{gm~d$hDhzOl*;bl zF>xhEYaX0~BG!nXOzRtlQs}QsuV4MMpAOq+Hu}Z^XQdTQGT?5}R z`mY~D57nofbfTNaFVv;cFS_Zxw8wZDp^Hev3l|W$h>nwJJ4h2_9S4nxveD}V?g&1cpQv7z{A>M&EW_z>->Xlg#x`>M#L%dr!$XVZaxvba!A~fj7Ihv&zW6jSn=a{xoblFp44SDJ zn_PZRBg%!L+e^T3H@3_z7~36dw37_GO*Vt0YC8bQ9)*BR2DIE#REDrMvXoXq&_b(T zD_cY%muHSt;0V|O$&cr;>p0V{$Y?|EP zVcz$-n;zo$qzsWTKa~u>RcMw9h@}0r01OsV7EvwLT_-qF10=-vt z><>K`99Ew7ETed6M2*y; z-cjy4D+A)E9pU)DDr#l+$aT(B@LCHOxa;ZVQ}&SddPo7W;E^%VVAf~c4W5eNE$yx| z#BFV$2UrDy5(T)Br3(PXWpaAfJ6j{Du7Plj&zuLE1h(b{+V6S2as z*^CXKn_X+74UM{&&Mg#!4Ho-hDdWK7C(dPSk^|UVT61KIocus6c5vs0+>z%{%xW!kHQRPN zjd16l^ak{mm*#(9TPKNAvkp8L8&QK)bvSA@0jJ`fEC^Eqb7xZKQu50^%OyW#+MjQ% zTAHewh_`D~2AY&9gKeB0lluz1J1R+xO~o$wXDA369iakvPQlTT;KM6u8$JkT28S)H zQc{q1!?qfI?vkJ?8&z-*jDg%{=G|#51_gNU`#Q>8u+mhMnOqop8tFRhz#2+i-3=k9 z4%vnrop#%~(pG3F@7nUD@VPYfbburw+Ow&;7xc8;3Mzoh z%qc3e%DB|^8Zh5uRZ&x8(}$aP9YfBwtE9A+&WXc3CB^`2G<;Iv;%;$i%1y>yPT^{Y zV^Rg1DL(&-;rQ6|1Ma(0*VR?4IyB$W{M6|KrWFcc(eZx%4ZuF{9T5FB0I9wOFxJs_ z`zq<#>(sO8H;rYqG+4d;?RXuh-{Ya6N)OE8W1UxzP|BYe*fx6p5oz-^&PI=PJ(uGW-}&CkklC48Fm4aE4`L$nFRc! zX@eXHU~lmH5^Gvla)eIQSv_4pN1Nu;4{PDs!6Mw9JiWAjmy^8G$!UrMaBA5*Yk1A% zgqV*1B2jL@o87*jH$0quR-$Kren8Pq;bKDPz~1n8()x)>3i*(|*0qPg`bJQj-l8gxzEv;Mz!T8e!j%{nr%%M!zVm1XgB)`3D|kdAk~Z*OvK9PNlVLK zmz9+}Hca+egSF@1DL4~a?IT(-y4~9EDvf!h(#$y7__z3m#I+F`s18ez-wFbXNm8F? zU_MxY<_|?=rd;O1df+kV0TkmvXX*IFrE3XUN;xQ1-c*EPaFzo`6GDNhgb{LAO7Qh) z#|a44nd$|GD@)<^OJ_>Igku*VB`*fX%~cF&&+3Y#&~mgqGf%HY(twrNCmqI)vZvgs}- zdXi0aM)IYlZPdwG4001NylQHM-H|eiB19^%EcpqFp!9h)g%kxAE_+!$ey4kBE5Psq z&%P*V1N9ZU$nii=zz|@A=;2NRAZ@a8Y=K-tdnA9YinOcXI9yS#Et`j*F$l=|QK?j@SCTKG5;1xG#Hcgm zXH*Exx32Mr<@Z|=OzY}jn;n|_Z!xxz5c8R7Th6J1oUU7{HgB5pTWb|@@2u>qR`yb` zty_<4Cq@-vv@kh+!-)n1mMrfjRm-=hkyEI$;@S{_BrO=kX8?kz$nnzPfl%v51O@$L z7&nRl*}8$$xdoxxinjSd&uiyL9s!ZMC*^VPYUQ5K55>#Ouy>!$q8#TZ-WHBr!BY-g z^`1-%&W(8UC5a{Gi|_!;JbXKl+FTtWsiCK4>A6hWp+5Akn+BUF(pa4b#DXwtl}Xvq z&1A(QmMv;%k2nTMLuQnB82Qbd?ajQ6#;+o>KoYQk3ZBt0lXvoH1CMJ}k!#zh2Ec0} zFTen52gML!oq*zf@Y~ctB=3=R_wZVeYAqZb%>*=J+gS-SJUGxr#vqiyV5s~Dro6Hm zJekYQVQU0vM2Me#PEB4SfarqG@$~l%DjzIvanroySatb2OJ=xh8Esz3uXN5EhLaaP zJx5ts7>67(Tn3kaO79_i_cPdT$g9;E8@FX~VYPa_PL{ZbPhJif4OGT3z&X|p!gE(Vk7SFu=mo6Bg`wq;?5j8(k@OvMDq2W*1VDAt;}P30II z3U7fZ$}PcmVr{UA4JLzh4ujUyaCpTTyGdaq)Hu)wJ;I`f6eriEWNk1|CLS(n52B?9 zM+`%{l&hSfedhMmSb;$mCUD}AS>8%6BNJmrF3nJO5=cvhBPlT=hZ@BQkt~zIFyhkl z7F>+Y*jwPG@fUGR5GmP!H;TSxYo=SL7EVea;f!ikwp(MR=S`fJ2NVGEmHSpWdZ!fh z7QZNw5`?LqBXCG$)?O6JP(dN73KD0SQKj2(@M(ydRN*vI43R-tVANzVX#@;H)N(`677DP z?aopWEi~jR12pQ366P{?fgv#k1zEI3F18~>7YK~PrGmGE*IhKkMD(uA=tPM$gV2PYg3v}L$vXsPB#h#wka&avE>Uue zkQD_29XS&%Ct(r`s1|8FU2GYoB4;q5j0K5E&_JLNTuFs7OknX)V#PXh1d5=949p%V zNhsLCL5f6}voVBAm`Jf@HVi=l#H8Sm<>b^x7$nZ|!(5^rU8cOLyyZ;I2H}IccFnf# zro^$@mn;mXgGeQ$g|nLTlZlq9Y{o#w)uxCMy^!M35HX>EVj(Ki)gnVN4t6H6P@yrB zktE?jRB2C9b7-b8MepO}arH9!J-*>bOCul{a#TARt+qGahr6?}j~%J&?CzR(U&}87 ztQ}|)$v|)5G54g^4;+ec z8gXDj<`8MbuahwF6$IF&t=~Orbks)IZL8kwl6jTGd$7_IvsS&HPKC$v@mrqCeoF*# zm3e$#p6=5XYuN1j-KBJ&cwv%2_68C=^CAvm;O-P3V>z2-b+D@-0g3=^h=L)v$^$pd zp=j?tem)k3IlDkE5G{KYB0;EXY+T-Y9`}8WQ)i>9H1pQJ**ygSfW9CXpSW;9nd*^;m4IBo06+#kszvu8Ru@u;igC!SV4#i0N@Ed`&w~yFJ!Q& zS`hdnxH*QF%TYr}DPr};6}q!V0~$_%-xFg=jX2M6IkyypUwRS=% zD5BrI*~Qtf1zPHKAZ$bGR3u z%7r*k5Rdf#YwN+;6N_fLV+OfR34V;dg8xsW?4ZyMn72S z9(4*C9q6obL(P!R6uc6o!eWvQ>=2v*u>gU;e*xqZMEIDoa5rx=DmFT?aYvMK>xOd9 zT$vfV_-`}hwe4tue}heIdpl~_h_Oqin%ui8^k0E`4YVnu4J9p7_V23uu$UoU1`2-h z>U*Q}Z0f;zaNAP1VUz{!K%FaFQY!+tVmpk`l&ekkZs);Ts9n+C@og_jCp8=OVV(g| zHKeGIP~~neR@}wN=n&g;;i@{K5uK5k7n`<@IHzX)%W7;Zi^@D&x1dtneUjN&dN~gh z5bR}-X{6d}K?4n;!sij{Ec%&K$I7kd9cxPtf#@*DEV@cbs*aK_WZVcBQ9xT)4kl~1Ibjj7W_mE!Ui=DmH;5?Rz0T$DbQTjz_+(p)QpX!mf z=+oHX`Sa29eH>x4fi$fhK*sugM;2a>O>hVUHU-*Z6#ZZkBmEdpJOD{4@h>1JO2N{0 z>rUWQcnE3eL-3jeV>`eZui#PbRsi5NhfCk~eLnc^e02X1nIAn3e2|h%*-aGV$Q1B>~n9 zoAgG^UenOIYhurt(1X-~=3#mYy2p~x(6u|c!gf>f&+YCPUbCNPB85V}{jo=9e z*+3frolF7|n&?)(uZ@VIhiQGiZ7mgCw&dA+Lg+h~PuJJOxZqi?QlMZCe}hZ0F6IE9 zWIeH=qiy@@$fEw|z2?*1L$9i{w#hi{w~cD2U_wPm+?Dqke_IyT`XJ8cTm{(M?W$e; zm5->}ZYluJ#3%!KIU@b3j7AgDEMR2&nZ_@W@{<@lPI588_^Yy7LvN^}IY&EIfY#`9 z;F}H5iHApNz05PIwgX)ur-DYp+N;Hgq@PB$V>d6xI44iS=7fQC$WO*h&M4Lu&wmfo^X9ZNbay z|1BSuPhVc^?^hZ_+k1k$p-a@sRVDW$FSjUb!VG{NZD0lz0TNImGc#KlBn3J6iqo-P zBCXi9^_UdtvrAnevFw*4Up!~2*^I*0w3xU1>TwFetuItyCK}fxVTqdt426q1{)!Y1 zf2HnMz{^-%rc8M8ryNL2-kA+vU0l#C=Pu-ov=a->G*wP` zmJ1M8+0^FyeH>s{nrY+kgF4;O>B@66Ty5^0gUF(cn80Mmg?CpoNOF0E7l<=O@6|w1 zQ?lJ))2(G^E<>2~Sl-CV);`N28%2_k*f!=wPjLkwemuLNFu_XrM&;z#5R*A~dNj8n zTVy%zZqc?Ct>tZm*$}QduoSzhn*`iRDZxUO(J|UH;v0AL2OlkPGlB}T9dzs8%^FAy zi`>SW1|E&&U#tw;d#h4C4xW=6#0S0Rtw#c!Fa)8BO{)C$gsT?#d<@7UM8al10kU$) zi#K$?RlBe*V9yDX-M+hVPubj22u3A4&|FKdAr|F(cY+64*L45`bt3A6aW?KUVCr!=Ep}6k$Mn zd!E*-?~mnxW}qFDG|blxmi^X^{=f(22zp@kf>9`xL_|cFIy&qP2E%Ktx4+F#TpC5T zw)kl-wbJUck864wfDk3Pg~syrv2qvQmgQ_S^;w*?z>Y2!Ba;E4cnYDL0*TtKOKo29 zuoXas&jnoGE~x-o1P_z|glGx;FArk-mOk3UpjVRb3>iMRoD7|F`$%k0=;1BR5SRLBiYzb%sFk|v5r-Dt|w%*Xiyo? z$DQRI0Nz&AAUf~+e7KfJ5JV3!(73K_=g7w6SnOri1|m~_j6TzPv+ahxh?(|bQgi2b zcm!|VcBdltd<$(~HoLyj6a*Am7n>G!ty=h!cz*6tt7ppK#q6vDN98e^Op_H{MJQOE zgLoeiyd?R421UWVjoUaVngO6_*J+s(s97Vj&kU_p{l3;JWOci(AmC{A@knZRP&iDp zGOM%L7hk}L4L;f0pr~WBbgCI2Tn7`tpRa5UnvJzJz}|>pVC4WyCl6a_%(DcK2m;Uy zG7jbv}%!%y2-;5Q!Y03uiviPiyYsup5*5PcTn*H@edtMj84w6(X~-CId*0taB0rpz{%``yMy&fe*T*<*s-HV*C}ru8~~ zBpf_N6*ZD)p+6QA5?6GGlV$tyQsfBQfKmco!m}hOBw0l)JnFzxNS!5P;270>h1$D^ zO#>FHGPh?on@yHl=@BzAQ2_yrQ1UJqN{?76Ov>v}7tZ!Z-aHjAf=K4a4k*SL z0VuzauHaT=$p&&^tnu@Z(d|TMA3a8Qg3d+c`IvM9QvsK*UkIsNA!sY65>+Av!(hZ_|BMF7xjaA-6(BQHm~ z;LH-1!uxY&W;mL<3%mMyTf2s;&fQ8lr`&x+KF014D5i1}kh|vG8tL{lLBUSkk#vb= zO-%&k?7KV;9+rEtZ8{|7eXHGAvBTD#fnYLbGL`$JbAzvzSQ9VFce^MLrI;4~`8{?B z30IJMiLn6&>#+kSbRBxE|lFe}pP*Fg?Hw03Sbt5a<9~{t$hh zi8AGd8)8o5sUkCl}w6y&#yCeM@*dJ<1o80iY1g5Q!2PkT>K5KOH%71Tf0^p_r2aq$a zVfXI(J*?c!)ZY)Kwdn3KC&p6WU}_tH(oT}(IS`>Ze2)&z&9o+e5Rl`b?5oT8)0Dkq z5a5Q3AV!6D(5nt~?#9?dQy#BpnJaN{R|TGZmWBkzDJ8a4SyiEvA+(aT>?`gja?q6x z23*9tvhfNs#Y&cK0MxYEp=UK?>R_ImYr?nNKWwghNqR zSCuWZmct<=Wx`V|B;fK!IzNFdP8If=3int;n@bSu@$e!^QX#M1%*)V$@)_h}Cn!4s z1Ggj~Z8Zb{=#8A2?kpNM=T}Wf_PH%V!lF?Ae9-{tD^6qxkf>RC{!=9})!^VY=ErmdoL$j`all z&08l(gXXuOOZaHo{nNbpx>b>XysMB1U5&ow+=GU5G7v3%-NjyOc5*{7Nygg@)laZ`dM&q2bKQM$YvrDXv3)9 zOqlbULe=oe!{FLd+Fpf9{sC+t*pj^xLAOng-xpP|BY}G2_B#?c+|u1BD=R~^Cx7L7$cp2gRp%%4 zlNk9xLWQ9hRLqk=^^ku?rTt(gSo=|d(=WHpz3XM)L;&0E3vB0A60I0TPIv0mVqLkC z#&f4*UK!x};}*m(CV-KIAWRxr3J%!x#r)54Lk-+|mP16zosj^ME?t8}uO-{p5FCPK zN1q-1M2v_~Fu&%tk7(O}gu<$BMa})=N>-Xylnzn?s@0fKvV=PX5W=j&932%3i(Hl` zaut}`6Pf~YoyQ*5UhSi0rf+TB*F|c|Xu@5)jEm0^9I3QjK$v8tE|JMsu^gMyw^{^~ z2c<&MIS5r6TL}`v?QDkEZJ~U> z72DNCU^2M{pi!AlD9QK4wsCdcAG6rM9 zaxD)gnjYkq2+u1V;-uHyWKN22DYTk`I%3&~LCaA#kwC)k&=OM+lRjBgC|&_4o*SY| z13owUs7L-OwLY<6gXqgr@dQv1`3thX-xi)U|* ziGBHy%o0$s7RZW(7fh>6WN!8u88RCzhmi2jm%v_dp5?^V%W9&X4H&%;4v2`FdT6yL zlb$6gz?F;(t&=#?=eijIQSG_P8WtK!WdNC2Vq$iMfgJmUNCw(-Ld}cFt^{vhjYbt2 zmUJ!6Mm+ys@Qte&H5`R);ZQvVbh5EkC!4(ELy0g{5^kYO5(xs)5%P9plV-k=+QK%K z>1*77I|bINuXx>}0f)fIGNJ=6&}qTD-Q2_6Rxh{il6UOsvmf}vX-!n+FReCdreE1A16_-2 zyEZ%XY0}@F?9hoP5T8)yCLU%|p4M7RON%?TK}a%iq;o-^1bFjP{4N%=W*3vx^`yFg zL%I!yOpJB&i|%AJl$38WO4j<(OMObXCCXyPLbCcBztc-c*GU!bMi00%dR}5_Zyv?Q z%;|LQLfMGpzKD!_n+E%mI&K3@-DpisH*qpM8%eB~n^&4xT&5d*C?Gp%bUv*!-JB8{ zIURR(X9j|NIgG=V$vBEdr4Up#qM=IDO@ijpM4S$j0lxXM8zZE>YcQNNV$5kUxB)`) zqnbG9VKY%w7sS0sUA$Q*B>)^)ua`_2WHm};uq4uF zn34g<=ELWc;^zlXkkUQfBVGq=Y|YNr(&?72HiBo3btgL{(K)hPXo{)`c^*C#WMGU$ z1e8s>9GDF1NrnZ$DiBll;CmoS0h)jmcqMBd0oS-e3$MwiCN(#?^FP;>3NLd#jm1+o zbvr#24h_0dwvn?kfjoAK+IaD_K3Jw_lx)FG9pI1>5G5{$oKTyP3vobB(Q)AH2_1nD z_@mhwN-Y(12{1CIn3O)2@62yj#kB&W6dwvug%9|TC`P@y!iX8mN;sR1o5`(m!!3H2 z@B`Z92C{dckU`}C%HJpr-MIQ~Fgyd%;A{Es{@&k;rMXC;rOgY&MSl(sx^MKQLkoBm z2iyB~!7f#Ld%TuawoNmJJee`y4;WBnM+6e&q4#l}2m*>wcAHcHMTL*=wQM;Y@4$Kf z=Dzusqm4D0pM5ym%2$Ydv~5H_o?=10EPKTic9H7b9#9d1j6n0J1cV{S5{%P1B_@6_ zGL^!B_4;@mEGW@5&P>8gMhWGNhkH_Yevq1KJ712tfh>bxGkAmX$DixGg7 z^Zpdq5dlYCYqXzciiiSIqdXtGbOf8oyaxaffb|lvgxU|~`+Y9JrN?jA-$xq9M=~yZN=*1h6FJ#ao$g&v4F>db^i9T8nj&h-WSF95_KVQ8 zb&0*fH4^vcDOLpOYfnDvP70~(=FQK*`Li=0#y}x$&C5-u!X!gqNZVP&f#PvF@Rcxc zEt|~jt9&_dg^!91@{$}*h}2nG$Gj8-XHbDI5UnHIELD!LqXG~(qX3M6pf1M|RFOss z;o<&}G;n;F6&flpjU6AjEbK=s=TyCCXo{HnX+1LSvzH_qe%*l8@R#iz8|Rm^x@}k!WgJ;0Gs*-xHP<+#qI=E41=n*IV7v~{ z%u^$#i=`PcQiHK+ge3#$kp~Jw@n64)(@_o4^F9MiJZ<&3M6w1aDfJJ!$4$<@XRgo~ z^R%h$zV_f#;9qr*g@U66j9-M+`fqD~9-Q#a6snFau^6s?mf|YE`?GM&e6%3}4?MX2 zNH;GHzPD+^&k!ELsaE-3V)x2IwYqcQySSUKViZHM)gmxTjUB%frQP^e-Psf7<#xvC z^NS{+l`);$4NAo-xxv}(+TK1dLbHBUZD)c;E^Tu1Z#YqcNui>n@|JxU`}yy_R>8~B8T1r2$m_*4@tCvA_Iga_Kq2QZwp0EDn~A-{PcR3&Ii z8wtS=t!Y}9JHvjay;I#wCn^Y%hP}~pRt}+Gox_aMi6yIfod*sd7vgXBHh5Mex-9VI zdkAcKkS(nd4j{xPH1~T+Lwye?R{7b{s|GqfN~(mnK3*8Uv(LO#W3R zVzKwtQR?ptzj+N|Et^-Xgca}|UN1Yt>bJe-zz1WXLON<_NWWD;Vhq$#AcUi~!>hK6 z`liVZ--S7j-Uo1FS_Za$DfeFQCWUq#xoLBQ=F(mTA@`M;3gS<(FkgMi>bBmVM7_ zKWnvhPW~?&`^tS3c4>cLf*s9o)W5zthhrF?)#Cw=KIIuZ{}`ncuC9PuUrl3{=hQaY!9K*J3!GzKl$ z`>lP>cKm5^jFE)g>+$aIZoi$Fs`E`Z3`<`aPZ5FSl?e-;q114$Wr1P`1LFTwoiApS zgV1gU+O$?tz$kXe|4wIaHc~m%o0XHGO-lPY(fQ1fcJosU64{UpRnaQ7OI52F4Uxl& zaC26~D1}F12`qFzzeQ^kIc)zJH?YB=w~(CAN=j!}C8dMlPU%hrg%NUEQkHU3r&4_= z>xQP8iQwtVyHbQ*)`MJW5WppFgtUt}Kqn=oWddS3HdR6i(jy8`P_YOB<3=gz=7=Z+ zfG}jCC?V0w1B?CFhYFE^PCbSQC$e7Qr{01+AMtRChz8nB)$XxeFja$~DHE=OJZrQT zi5mhb$Y>)oW3U+ciaoC+d>af#@gdLQno}kE^!U}f5AnwP=~d;jF6XlB*dW>`vN)Zp zb3+b2^hp4U3Th$9*H#ozproY*z@R#JTWH#lSWHnm(Ja=Lsh{M&*DXaIM(hZp=YEj@ zvo6$_H1L)4;3z&O-F)F-5#R`d73N$1kkV-~*=K-=%x~&s7EIM89k5H?vzl;tNam72 z?Z5#<-O$-%t_}x1NnCPA3%>*Bb^&IV>;Rt4?dbIBJLAgk{55>;k0yt#18U# zyN__*&})Bbb}p*IuFOQYc%so$_^+@Y=!b1;1yE@&fF1A}0<*TnmR5!k7nvMl9Z5lH zkPs`^vRp_BO1RFP#gLALdWAij!k#|5RLxC0_Ioai@0iT~~r!XLJ2nYxu46h=q z1*U?~G(m|j8uEp7{;bQOfjXrCjU^Og!U_l?N2fd^Xs0deL>u8)RYJJLHccc6tB=|& zN}90YXVzH0og{hLFsJO7!39(bih~#lL|KzkM`tzKDQ1`B~k;0?Yz01pzM z{z1So@+xNpjBHPZS-_qAE(cO;J8q+`*&Uj9OsJ!68vV!CT)hXO>3m0!-un*-@!qF< z=KSNl$y@>RDgBJRT7JXab`c&v-235ok;r@)XK`bA+3Y>JxiA#MOTAVK@ibm`Du|3!tGjdIp1;u1U;4Nl&7*W%l+XGvkAhMdD)MHmwV%cK*i z?=NT2m6z9RZGygHaDkF1ijrEwsw(A_@H{{d#mSYCma?6qbj~>_+=9qU%#f%OX%JN% zFy}0ITealWrB|9AP}%jx3Hmr893MW^2RUo_BF>c#iWPD!BG%nb|A2|reJhw61jC|j zo|O^fAlwaR3|gr0yC5EaYq}fDJL)?}@0Us#@T}UTfxwsA7!{CwJVgi#hK!-P50(%@ z5q2=Wpu_|sKn&X0@A_~3|zB`lwlC)i!@-bLlT9lj4lAz0>My>6ZhlEkI=dYic+_v!=y z9Kb(WPS#IyAd-Yo-CvAYg;P35X>`)IgswC#EMzqG?jD-1$-`ZapIFN!H_+BAN?80Qav! z&_!OjL{TMJ31ocDTC=Zku(*zzW3Vyn_C?H9kn9;0xnyi5rWcqCE(R0_*x1xSx?V7t zY;jbps91EwgKYI79IlCvXg5oZ&Z1Sa7rpNs_!CtKj4o_x^2 zS{h)aXnd5F)NuY+_px&?+U{-Y1<_;C7~9$(MkMf~kJOS|4$!Aaj4vqC7PWN7aER9&~t7kS>L4QoXO3CiRV1`d3;Q^-Y zOPb|GIgfs*3N=^fW~2c4!VRNv8+!6f5kL<>O|D2Nh2s?W)JV`laO6m$St%h8d24_N zmMCQfpIe4P(lt|uIYEGzvUq>RswxE~2oOf|!kP0(@$Oxd!1s;YNleu2?Irr!M2S8G z<$sQiZiN&k{D6(=y2vnHfXGn$jrttt+eki~+tyBn0| za;|FL5#Dy}a^g?jDyFFU*KV5``0iT#TKq{7$FSXq4PI6qq_iJ^bXR4+DRgtn z5ts)h*W(=gh~g!@79i}N=7LcRN(ulY?N~&j#4fSV0iVTfS7}lZAfhTbT{;*&VC7s+ zPGBIsIiW9Ca(8i7Py@wkKqfH~YzMbA_f!uZ$+2ZREuC%r;4@`dPu`fSDdPKO3Hq=`5P)DCY0nyFB_M9%V0+!&AlR>ELllu1OkaTk?SUOSc-lx9##=E6 zR{t8Q3au)A5LN(PmPAfIS7__0V1LWU#A7@dW<3^|e!BDrq`ADY2DC5&0Zw250?Yx! zW*IPqF@O^x)(=#G1PYYEA8<+1#ZI9*>J0*}>sk}5gc>M_s{^-ghT?eT6t4t z_@RNYC$!$iTwd+(+z#4_fc-|wM4q81`x7kvX^|+v0)Kq~1U(_hzz_o>?G1Z}a5AOm zzYEFRq`JOS?EySzC8Vr=h#+>maKfiAOIbz~;&qMXBHe@i zgd&%?_Ssgz*D#iTvY<_rPM{R~Nn0;tS6kU-muP|eK_djWF@eyj87gE$JLY#(2vKN= z^Q9?a`n7qaky2$|gHi!h5>iwc^@ z6cASnM73}`tg8$I9Aib$tWff%0x_X}ZtAD_%_zhJ0IOj;Ij~*Zm|hgxXgP!&=~(Br^75h$i86lKHB z;?hDM;?}9YtyBlPnQ(^y9Q*)BrP;GR5h1Ep00Dv!07?W6fWS5&5MG61EDAkSb>f{W zXdCiI)f|TNrd4!nLaUJ(s8*7*|OxdZVW%&m0a6~^apb!eCpqST4(2YK8mYxxMowq!T=IM?hok8uF zO>EZNLc2__b1acl@U!@HUz9nS0_CGpo_#>7OJAXadK_gZTcGobdSiM7uN)Vqpz7D( z4kloOdsf^%H6a=R-K|CWVmbqFS-CI(I$GbNEnomhK*kX4G_+CoZ3Ie{mjND@--Ldd z&=XlN1$J**l`~K};VdE1%Xh|j?=7p*Xv!TX7BOzbt0k2kDGLINrqP~gw1hpdvbh0Z zL8LhO-)hP_mfcztmM&ebKbxzwy0t2Yg;iE_W+5XW5Sl{Q1I{}x-LO5HWwq_>Vgo@f zWS0O(;N%zxe?e0ojD6Zgj}CyMhP}`jjBO@FF0YK_!@HVr2vt;K09MprG?|do=?qyx z1u3cE;I|Pt;skTly^nmHb98r$%-`WV=^*C?C`KX&4UH>SE9AeNuNHaGVgpJ-iy%6iZ&`@!}A_;(dt z89tCy-#ZwQLC+X4BQi}Jwc6GfLgHo7Kokbj!YU@~upoPuW>k^$`bMimKrx*HMZDnl zbi_KCBs7$Tq>3j5fgmTLD3VK_m1FB;E%uNM6bK}z)ow=MKDF*uj;7*;{54(6sF@nN zc`&YMOXq7&5EzxpAS(M9hA6aANA^GIa8DESpX@mu`3SLi+^7L4%k2okZFLo^7(c58 zv@h#JrVj2c&Puz|)3y0tDO$)2Luh!sOg(AwnpvD#r^SMU+`NW(?|L&BWdy210dPH$ zp{Um~vIB5qE2P#}3>Il4TQ>4gE&_lKNJklTz&+)&0+hMQ16ctHJ>kVe>XZrO zyDDrm0V@ZbwICg4)xu;eK%C~T5KUfHLm3Z>1&VR6O-vHAu~g1*wGLQ3JeI zq;Y^mP#r~tC_j_F8T3B=XMS&Pr~1|XHtz08YWfDMpmg|@4!vZ;r!gDnqd35BGf@;W z_6HpVO^UdA_h2dl3bA1HOIkPk2&j=Fz(74DPC|+#3vpRvW9%auM4OP`trSbw%PM`s z&HHl2I_!6AYJUIaD{ZzOX4Gn+__J$!*TKFG?}WUxb?W06xXX};x&c-Qf_Rw5p2w4k zxND-darMq=3bU3FGCI{6#thzEKs}xfB!U|R2qm8+@e5(O&UtmfyDX|Iv&nadG7{1* zq2FqvQLGc~6v9FsNc=e>yPnlY-{@3G!!*1rR-#$~cG!PmKzGNQ7)3QDTb^z0TWw@C z+B51pm}|2{-P=mbyu-Tn6bTL1podeWmUCC!38OstXOKGi{I%sfRhIr>?uUZ%14c;a zGm^}y0W0kk6o3E-dVK+p+KXsmAM@|%SU~|=2d?}2 zC#luYKJ#_DlpobN5|Rx8pKcQ+o?G(xTXYJ8(75o?o_X-lfIPK6?m?y&fP6++k<}o? zOj461rC_X`h3*jhliCAd52<|1a$I8GKfU5%9X6h7PZzi6q3#i+0gDha)dV6{V$^Ol z)Cei}l_ z9xlIRCf1}P$2vI~B14#EP<`riwX zaO7VtWmC7N{1OXnE)FA*O;E&+;=Q{GnUlg*c?Cn`crb@>*L8X1`5!0A;T@FBxK zAhnqUP#7jceDDGiNW$V=mxP(_qWG|D^5f;S>ogH@wyY?I&RdFfydOKmfQTT`?ndK1 zws%7=?g{(C=iF~G*Vp7*%uH}xy9kNEFdBSDI0z9%n37naEEvBg`K1_jkjR>_FHNj| zG1IFmil~GHC^^UzApkC4x*`Z-L!C9W#NNU|CzAvfn-_8U7|1iY7kd?td1fa?I7A^u zFtJNSWRDt_GHRglDGMZzpe8tmXQ;YGZNMWH++=O_7&ps|-2X$=qod?$THN_#AE1kx zo9HcA04mxBtu!?OC?Na}h_J#ms*mn0-fv2RM#$2DEEh?XDeULLfR%uOgdX+{P0^vT zOmI8OamHRHCYdk1JbA@%R)$qArd}#?i8Ro z9=}g>Skhe0Ai4~~EK2)32WPz;uvMA8n>sOr`~G%U;rcvdclDLS}q4bDM#9>AV3>^a9}=79BuIdR2GOdNIpMT z*;u%vmT3mgWSk|4AS|qL5t~%0q0Ol@uo3Enme0+ntOVkctYTrj8(<-D9~vt1QZh8! zdf$F_2x#+2Z#x$9-L^Or{qq=1sJ&J+vqWn5E0=2~cIou_oi;RVZ(sb{}xpz9!6FX{2YX)Kf z^sEMfY*Z<3w`+V_$zRnGelnEDOKjA5$fgjRB{;ks!RK04QrrqMaGwmGBdVa0Z<&Mg zdhCahT=%K#q*u$5nL0^Z#N1oZw|t1dOP)lp;0kifB^U$lyO%DmABeyDeAr|g}dmPhOUP5b6( zV*Y)wTy0Yh(3qkL%rtnLcnuU)cxg~kVkh3U zMG#~6wBfklHw?pwiYPysWfSvl56pbeVdcEXRoVOP=U=DJ`A<3LyHL<+bT+Xy+UpW* zg#kd@#M3QOym^&3E&<9MVN?;rbW>V_=Br#QJyjzJh5jorlVjD=E?fwX_TsJ=0eVeK zY~{(&V*{^41tky+92_SgHt`Ycg!&itncdEPNzNX_*P&fyTRnxF$uE+sI6EC>>F-Rz zbi|YJ(@tb8S2&cYw|5T~0X3y2*&!IxhL2pt{-DpDgvBxeh?zADJOG)LWX>7bKI9rO zSoF+ddUGH@RWVO@zZRDV;FlT2(4lL|6W{p^aK&0#||WGCr3pokod6R}{jw z+hsSdFgDYhj9@=b=hR%qGg7?XM(-mvGvPA{fv*DvOl5-N*wghKF~!zq3{`5YOUK4I zTb%MT-@0-xONZOI=Q*liqA6LsxW#2_TeOxqwOSd44^Z)x>buV~@q3%u z{0~v=zMIx=`xd3xn=ulbUpQPY1J4mMO^$}~wl7}7%m+IY7TZdAA&T0MUd;^V7+A5p zzh3WULpAC=mglN#lzXg@QZK30_+HwS=Y0=r8_w>h@~c1lr^e`;T4=A#^JgyclHYr;((xR7Ne0~XnkT!$Fo9bnuO1cJW7C3whe4V62`RQxx@S&OMFaw*7^g~bPJa(8r!|Qu( zl>nyqIm3dG*5QHkrF}txW3vw;>ZDe=^7l=RkD9eBVfuHt5%GD^w$+F)@Ibkyp^bqG z7O?Y+b>6?=_K;CfvvK#Fc6G28?)!%eue+7r2Xj5wJDYVIEg=(1+KkUx-Bxw+^R}L3Cph4TXEdV7IUr0xmMF4bT*j zLq@u4LWC0Piet|eAXaN=cT8Tc+U|GTtHwZ@NDnCXA3q#Xs2N@xtq$>6@hHnhdtKYO zwa*XjNPS|Ix@yAD@1B``yfzulV6`|b$VyNkpf71Q;7XH{IxWZXb(EBlBy`|EyEk$O z5y%3UI8Nz=48x72h%S?Z(i&)GMcY6*rtA~aty+CjMkI8AP!07pUE(c-gF%vI%zJk^ z2>qg>q@P;9T-@n9+|NI&b@vR84SF4T9s~m1*B;uj2;1O`L>4l;jvfg6Q=Lexg^~;8 zZ@xMP0kfwC9fxZQz@eBW$VQEnf#Z3UrBU?Cz%L+YL27K?7AXOc;WPvau8AJy1o6#p zZF3W&7$*9hv&sq6$;VS4Xn6t@QFX;2L`zf`2Igq1n&exNd_|1K{i;*C*;eWa1df*0 z10TyQV~U6hOjRhmgG6XZ3tW#$;CQ|~7Vxn@jG)WkT6onQt>>k`DIGsItYZ!n7{9@4MisGV<)MXV$e$9G$$`$g);@1=< zh`-|UnQYW*>Gf51v^P3OdJz}SB1=kCxv(jKW!uo+(tSYAw~=ymaUqrRHMU_%@D&IA zZF`Y#cfzOwoNM0zEN0>N(q6bz(1~*v6IF{qf5BkHtd7Rxia1A@0LmoTh94jIt*kpE zSz zWg_^bT{$wPRRl?7D8T%2fT_FXJd|evWs!PB zA(;xAA4U0aY%1;zue*f6%K_jsdq8>?46cycK)`q=zffa?x8n#p^Q_3+1k{m>4bbs} z6O1YgiE*UNLaZ3=$q7CHoDsxbXNMNtPM>KatiR`4cMxNEPph*1pk0*_=TP&Dj z&p?_UVkyq<`4$J?Lg>N(TZp7Lt>{f|inZM75Y`lN?xF}k%DU??T0r-Yo>(%j2v&fb zO6Ar;ArTqcDM*EJ~j(FhkFQ#!nN$}=kF;Iv9j$|xF9rE3gKjz^4&5HT;?*| z5n3|IU)BqqrM$bFift^%l=0q2G+{fv(UsrpcwHzH*YD#j$c?T6E%R0xy>GBDLVqkd z7-GGeOq4ZnwM61y$h$ErAL+2ZHaSTVP;;j+G7C_(Y~r1YH&O=6Gm4Mg9Ow zG0=gR;0dr{Nd`)wqET-PX#X&Pd8U8^Mj}j6a1i7yh;RUTPYKB5^wXU~+7ci;Ti}QQ zl%-^3u{5|zdqtEJU}sF)|JynI;ew4a zNH{3+$N0^6z)5yoPVuLos`kgGqwV8>^B`(pDme1!V07_U^#u()6eDyfXBT*M>Gyt2 zt3A_fW#H)weXP6=m|a}V5U12n8&WQBGtq|P9zk2Dh8X<90SlTZLHE|n6vH+m`4Tn< z6~lfJ#fOK&>JO{3KbvhCg8Z=pFF2v&Rx zVR^^Vz^#n-4C!=r$W(*Dw~!3e<{+#=W_8-6Xv7=>C~}w0_ik-!6pf`!Ixug;WXHX$ z=u@Rvsd4SG0p0f)QVM=NUPZIn15XM*(12mMWSMv=wt72Ap@5s{pg4NbciXso93j9= z^e-qnDFCm7pj1XfqNquU60J|duHt2YU`QH9tUwy_hC{a)L6QH5%)wn?Y&2F}wzem+ zn8)YjCy}T*atNRrd#d9K%w%e>{2WvM)X$f@rV(I{$N~cBvwU&!1iY~lC2|nLWF*c& z4bG89cA)~R-a@mbI|zW!68$8=Q*o-H%r}~OxMBcfj;@KH3PeIki_ke5iTHR`pyxUt^z@VFRTGZ~*Q+ z#U1Zv-N}3SD5X(7??tf5ws4Dw2#TE;Lxxa590(UD?WlSy4k4na0WE>mjed|ISt9!f zZ2G6xO3wb1rAYu}wcB!*jEy`RGV*4q07bb4u}cyb2dliG;}|?qAV<>>B}U*t^Rf=S zC5;L4Xb|(D2Bv7SbhlONo_!@4LY*X2kYNe_il>$WPk2=)%5EpnC(~8HrvODjy1!3P z^I;3rG&|`QjIv5J32o~|p)oZJKAAVN^q6+<@MJ;aVQ3eQvU{-q#?yb>) z6?h?g;ApI%l{GXLK=CDjQm!yS5RNcIh9+=K^nzCGUh~Jzkr$#&+kqB>k-`xh#9_;- zXbj4iHRqlAYL7hZjt=yNEo1jW0+0b-gdkyqZ`(2kwCNfR`#_ihRr7lm)zKX>tcG3+ zwRNJ!XoJ`na1GNM?+I!gMx}lbjo}TXsc!Xq2D?On>~zurq&G)`6T$<*@uobfAto9y zdga52DL@04sh=1vy_BY|`jxTu+omH?)|0-$I6bh|2iVzwWB^y8d?jo-mM=YvZa(Uy z@1Mrp{{QL|wN{o)euztsiLu97m%gmP1RudFhL|Amx~&5JLx!rqaLb#u2_~)Qk$_q&P)-aW8ZLO?E!<|aYZuI> zl2vsxG(}5borVDvICy{r4#N{Eybq@erz0)^QFg)bx4etPn)1!ag9`%4YQRlc>(?+2qA#g^^$+4)yp`t*fP>E zlY-a(7%0xD3)b|5*k?u?fFo%I=m@LLRxA+X3FU;G4JN&Wq7($9ZH5GwE3$}|=^a`^ zE|bih6Ai*r-(2u#Rvo`!PFC66Tt$lWxQ9{ z#qE*|r51#n6iGsTAcw+T@dVOzVp6Rv9luAt&PI29`&_+EGr?}R6YA0)Cy@5p@pz@r zY1=)0BGp(oiQa)FPBY;lNB65^&?SzUkz%#koza2G*^2E!5y&7lY9yoJlRIs4?$UgX zRDXu^wAhK)MMvoU%I9Uk!l{2W@-D-F{#=)7IN9Q!#Vnm^| zL32YYVYtvRLo< zQ3C1UvVG&QW%s-vG-xlPU9rjs*H3ivLq*^(+e{fiHQC4AGu}l$qqC)ErlPx`ECvV@+BnGe_FI3-SU2tjVFAy*%h6GN^Qk0ZH7l9}h;z7fJ zP#h-8A7se8P*tZn^nbH?$-^cAJAJbj4dGAT&>RLXYg_@K08$TTKZGtZ_vm+}?zjPj zz<`a)6(mdED^}b-(yuN6iAjEFEs-xof-W$ch~eJpLS;P#5T){piAPdlk~-1pfuB@A%Llp}rb0ONXnOwel(JePoC7zK_zh3X_94f> z-tk{mQ#&>gN(X&4FmJ|+{=O|E`_PTzHVOPyWC8R&13#g)v_k3vFrtdUNALl(5eWeb z_91%phmT32s)&$iK>`B`0bm4)-Zv|F#uh+Df(8s>HSh%WdEo{PhS$Vk!Goa+2Sl|1 z7^l~HoH{zugde8ad2EmpzeXgKQia-LmN3Dk4^@RF}Jj zHg+{^>C2qf4PXxyz^b*}hY!0%r}6#^LrQ#XvFB+~=QN{xKqU<@aG^VF1*xvti#yX3 zo2%aR{WF}S+=eF$1K0)Dm}5NvzXe%#bqhk|73}(X56Na)lgxP^?uv_iaPn}@&AC-* zMc$smpM84{zB&HM`DH6O*>NE3V4b{?XKq#iRBi81o`%Q8sl2Mrq=zj4h=>TB(DSX# z1`#1jQi;GpDF`BQ!ZT@LQl&>26TwJgRw`4}p?x`+_1qNT*c$rxLeqg4Zz15uf}EuV zU5L;6D5jO4Mt!wt5P!!MDKS=9ulnQn^=hpg+tc%&O5CQPLvy381Vb2yj>Z(46Pi=K zrQc8Fd@w`h60zEz6v9w@go8HJqDI^=K(EU-@ogEffH3sL5HZ0p0v0HVCDjRBL6+D6 zi>as!c~mCRJ7YY0DSPb>1!b5Ks^I{);%HLjv8rZFr7o;clr($<3kE~ISP`8CbyXdp zBkq6~DZPpg?RK!3I>=`tj*;J&oGdhC_eX{@3zgEXwan3m%1Ixs1WUcALZ)>Sg6B(i z(dBE3`reQ_d%O6nuCg-)CN}4Mv^Bv1l3y;ysLVVX4!n4cT=@DkEHuiEE+BH{2oC=x zD|khsMIGMSs6Zn+n|oDy1>X5Lj173;KQ$hJeXNJ~g99y@TYe^}o*4pZceLu7m#DTsW6GVZ* zHB(0_aRyn7sat8p1B4gJ=mr;Y!E^#NzZAOVBm$&4@kGX5RV`nl6tF`5fd&iEdcn+n zV^F|fS;DoTVZ`xmGk9H}EqOY%S~1GmHE0f?&TerlmsQ7-UA{pdKRNHVHZ}C$0h>HS z!lAHHl-)yigr-#(8i;pw^yjU+;YUe2c0Imm#WNq$RT4n~J)rhn01`vnnrbjRp!R@1 z48Rfqh?IjvSB0AGhr_3SlpEwZyI)-d8fBq92I}omT;TjQS)6hL>T3Bs6CVinI(m}w zM(~$nh{p^iA~Yl&F|b1VCk%bWeuAgwZjOD**<+bSCyj6c0WLv|bLb=ES@K2j?dy3d zTP9Es#c{>>G`Koa@_wy6fJV7M1XAa>l+YkR7OFo)=C*`(86Hqc?u56nAW(0hU}<9| z``;R%6B9AA#6)Vs9MF~F^YaJ+qU??(y@mU5r7@*Sg8ndg^eMg(vJ=6>I3)mpB4E__ z+>E>sEN^-bS;2(`Fw)@qM+^nQiQ(NYCQ54>-_T{74IU&H+uC-YGc{ZJTs=j-F%AbR z$6rLCa|NL05Q&(U_zGQ|Y4&)>&|O;sax9dP1E?_+&l&Ncq^pN3cN;b{6Jx5+TMB6s zpcrIJIf?!yYzHt9034!046;H37d{6ww-~={j(L)Zqbw@zA|87{QeJE+2Mq*3j{X~8 zagUSgdbmN@TUTz!X!F9~_HDh2Y;I`#7IW(Q;=0p`nel6Y)9TX4@tRVGq$h|VK@hko zbj0uzibIIHOl!RQx(SU1WoakZNui{Xn+f)l7R0C{4$^|zf}X50dt!^OvY69GUvZ^< z$&v&G8unq7#A?mNAt=v}O8~F-L1c4Z-!4)48jY0TA7;*cL*d&^4#E=VTR81ID?f7U?-!QFohq z@iSTL2?W8dd)nB>u$vMiUL*lc$P&QD9X#Av?3+fG&a<1E<}wLeN6(EhaJUbns-aYX z6dZC;Bc29O^Lh+OlIY#kW`>w90mvB<)*0~`QhkLs?&fL;a=)8}~d829`&x1v;- z2dUtMY^_Z9u4_4fR%DfJOp5lC}y%OQpk6pr~n2OwnGFWJjYukzSnE$LT_3S zcw5uh$rH5-G*iM8eNY&727G)_|4>4C0un5{5(We4t1zB;e1^6}coLW{b`AHU`12L;&|_FNvb?-O(vdwHz5^oCU$F1_Qu# z=%BREaNVZq!t=i!YScq2JSBkkfoFn7jdXQ=A#bh6zl!MtfHB}7Mz@SlSh5!qkjD*# zI;w#Y3Y_CW98frLJ|SKTy$-3p^WCnD&rgxt5$Bu`9v+Uset@EtsLcU?$VRk_=(Tta z4uM$8E380@4qF z572M?j`+sMJ|`LQWbgox&;V7;qOy@%cginYNCSk^3Q3v%PY?< z+~x24yC!YE%uyaEqw&G(t!KOK$+njU+E6%Otw)04CEZRVaJ$=q5)N=lrCq8Ho{j=I zrx*!(m;gCxJ_MrNP*-M<%Nz&ds%1}rho>eI z6?Xtyy{-F~UM49IS6ISNLKsdC=#~!utamfWyxT?Ixd`HdL-H}F?-v5M=oj|y-vaP6 z&X19}-@N7Sozn{fuVSNQ57C2MT!*zNCY^(F2~HDIw|u3nSJ*h1j#pf_!A7eL>*wDg zUcGA(jIfaa@N`zxCV=hYb0z~cHy*|k2w&TRN}g*~Wv_ITH9_Clw$E_ZnCc4<&^Zzg zNm-dnOyzLvbxT#pnvnrYEkzL!jS&UCC*KnWRV}e%giW^5JjxWP*4VWV6^mR=dXDR! zE5$;B;v&=>coR6@Gn(~`jV+(T8P|!@wGILbkc6Si3C?xDz9+7CEpq~EH%kyow%$%l zl`}EB1Q@$XdCb+n9pxr~RIp^uLmfhvj|N%qH8Gspfm&3&Qbx{K&6_hI#bC(f^buR>b>yyPTdrHLV7kn@ zD5-=ojm833E7U?u1|Wdhfa`Qt_5ySaE~ciCPUCE>H;HD0QW>pK+fH%3fkets;X;_i z3KHB4RF3S6IiWKabjpK3-ee3Tph${!TC>zONQ!Pb5f`+xLph03W?NK7BJwq?9SA8C zi79lUZc(6BY>+NloyL+u08D{`#i?--h7&Uvk*IS~m1s(~Q0J;MuFVWJRu9C*Hg>5E zX)(o9rd(rJfnvujIw8+lX6OjVr_?psk1@=41sqs;&Yg{Pl`c7 zBz1k8Z4OQ4m)Q$>OCBO@JAOP@KX zG>zZ)SGlOR8caC=8aQ#{?oS>r|4Sx|wzVw$i5EwMOQ&;?UAPd?6M5OG{3bNP_d<+(I;{gB48`)&ig*Acn}71{i-PKz!cxYH zmV|O%iG_%7#OK#3%$w-Oij8Q%ncl? z1&iyLq5#*q!)XB6rluPqN;A!yQqYze7 z8oKq*|FXj2EOuuQAr?ut)|_MEH_P`1g zu|lxQ>8QVK?1P`>9h^W7H=qRyf+R>Xis4E2f!1tKg4?$H^8Z5Ghc)^q*qvz$4BnXW zP+*6m9J%pj4@}1H>Hy#Cco_gBkjWz!4`Ps@{OIO@WA#oPln)d3*fbT-og$1Hw9?4H z4TP}}f1uOdKtnvhQy^g%CwR?(H4*0?j7NeqiX-cxx1P1yKfOmt!QnK^D+24STT<)@ zDT9X=JXsQHBc6_gZLm6n=#T)v0f(u$sC$<74giabTuEZwteQTiO^jh9eZx1f#LT2r z12)wmKmfDCZnWJu&X{fgL{)wohL**vFR9dDad6 zM_+fVoXaib*UTXOJ=mGC2?UfUxL_!CH+yh!$s~tSZyIk-IAfs3W;``c!9B=Z@YVBs%o{<4%2J{;1#vmc>bbUqwvzwsSY#*X!8J^@kCM+hG~6RV&D9q z>!CDq!gT@=Zvb$Ob;qt^$5F!+U?u_t3;}-F0vz5q;MpH?CjlH@UJcAEDlumZ<-;V~ zQ(=Y(;DNx{AU2JCOis}a_9O@ZolUSQJorsOo1ha@^LQy9i?lX(A<+lIu)zcf83%rI z!2A1WhTLbRnTxB!TuIby zpG>{tZm1)hZ)ZpWv59S?XbsW>gMbHfK&?Er^bI6z{kd(c|36r7X zR?mD7H_1|4ePQu&BV9*xFJW0A>PL}blewF(xEA1}!UPSmRxm|ILJ3cxh%9LcVUrm# zD2RsD1u1Qr86-f7Y9K-_w_l-`n9W`0YQ2`e?$4Q*e`;8Ts{merrKsSZ1)}qJIy$ag z^;sh~)cD*Ro*Fov{@z7Zh9Mp4=pEsbq43rTPO#thiUd~Gs68ojV?SE*dS`F~9)F~B zse8Nie+H=dWXL3A(020&r0cOV3qtL7zcO%#`}_D9LBFi-^t5ntUM%wRMqa%*rb2_# zn0x4>G6Cn)-fRWHeA52!KGtGh)Yvl|$=EBT!+EU6fJy{C7C>Bb{4qe}WX8&Y%b<>J z0Ock!AZJyZ3W2MJ3^K!73oMlhX;h)a223W5LRPLT<~G^=vPlFM$DRV{VS8kh0=44S z!$p~^G?f$T-`>O%Z$-PgylPEMqrWb0H{e~R*7YLc5$|Z|YEnmIksMuV2I~n`fHsXh z0_ySFID;X&@7w{Ly^&stZ-cOOfkFZ;bp;|Q9J+h|P~-zc9@9-*dHAo^3+JgucbkSd zyo{X`bX&@P&5jB3%uRkXuvU!luOumOWA|;K;oM$={$)rICx`=lNgKc>e2D;niieJD zbQb^CxDUZlRZ-s2hum1cTImf!xvz7^UVpB|!+X_oIqjY!0s*WSEZ43}Ehh_+(-nmh z&PLFQwj}_lsy2$@W?0XhTRh^ zmH~nitWMQXK-UJY0Eq!tz``KL;KPgPr_Bf@xi%5Vw_%_W4;AX$?%#MSbUat8U7<}A z^-DW@A5RZt;-6Tcf+)|U)*&DR4P2yPf$8S!@Pb4Oy~s<7tB}+o96Kr)kf@%C8nVEk zas*{vN2E~Wtp{$BujH||@(D%BL%a)jaWAhA!GX*05C9V~ok4t64L#l*-wV53{#Sk2 z@-Op!+;m&hX^=Rn!U6x1JedfF0$vD2&y1dkT(W_U5i<>ncpxAm&}ti!{PG?lbS+u3 z((ZIN&|6npZ-h{z}sG<$18K*SA%S*4xzxac%4Ie6l+d% zZ$+2Tn;PVp!F@RM=d~aKC`_^tlMJJMfiJSOpf$3g@(kjV0N{3xT1Y^KevnI0yh}O| zTbteNEkpuBmh)Y@ayxy3yjj{spt~o-KCKOJ18=31Id$7;eGMBc0XvYKzP9-=4rPI~ zK=0uO0KTP&j}!;x)f9nyL3Fi7p-Ic+;Px{r-qz4*O!>Gh>EA7+U$j$+R3u%-U1}${ zzG0*p?ki{T;NP6REx1?5&12W4Lo}NX$mEJtAbgA$*pBR&Zy+IZ3R(A+IdyVP{@+_X?!E9w!r_TY1|CwJ8;85G$#w)!$XLb&{K>PAq!XmZ zI)x3xZ}`@2F!*z}jAUy8Uvs_GLqGbl8->ik!O;EV=shW-ulZp-TOX3Pp~ zd^Rg+cWHFLN|Ong7w?YwLa(9#W5IGCXgFYmww0aEN~+@#+Qs0f&|8<{O_GFA#u{&M z-PMZ9*NQM_ga;Dg&KQxXX?>q+`94PMmw!#hZpi2+ccAl@r> zx{Zfz0?p?_yDaA_Uyq9Guh>FI&M%ZIh3&r7u=sCd_jj)Sj`@Ca&GyTL&CoBjLhUVi z%*=(42LZboyrohUXdIbJ@kKb>M7{aKgBS#Z+ld8L0(rp!cr$@U@ri>90oXf`4qgM& zQ=yiu#Q=RLka@>R4Ui~pobj<^)*gC6fc`gukY|#dZT(hasUcCXK<4jjuU+*2u zVnSTRW?#{H=F1+f+PGf>RX*r>OU?!)JERnA~iX2n83GtFdp!a&mHXin-%CM{&N<8qYDU z>a_zL`$cka=9c0B(f2zF7{GAK4)xoEwkfdB$_5vsznub70HvW~c^?>OTlWk4Ip(VAJJ;YR4DzcbJ2pE$w6)!NW&mcu zTr&Y0pzX3~61C-*A6XSl=S?$SQ}hf^<-!JQrh16=T{d)z$!kX7Z-f!iqW7`XQ49D! zJ550*R)U9PqV>iKqr>mson7y6XztW}rli0D7-*G&r(u{=#OT>@H8o1P<)U&92fQ^L z?FhvBR#%p-_nkc$yLanZX2Y&;bFwt^vyBZ^gOHWV@$+2qwRW$$<9kC?;t^FI%`ff| zLElIfL=Gn!DV7EoDrK*ia~aw+@KU7_&X!=7+gSkTVx$Fer+B-fsQ{LoUj_Ll-|^dS zd7cb-cWMpaAU2Gk=$PO(z~GMl0vPisp~ON|d-Fk93I}^(X1a+W71EuN?c?LHD48lg zd2^q%$yT&bqK-X|zFy2+cafTzGdnZ6G?J zyWO`U@VK1e-aeZy+OPt_*eo2@#_P8+(&g1mfUsr^cT?j!od$;4@CW$Cra}y`!Z2w* z-$v+kN9%26IvN6KVGk~4ax$nhcrQc%gD58z%LozRo)V?a%hGl@c#R3*vt0)4Yym?R zAbA}_A`>8hARPLV*X0+rBoI2mIwy zh?K$ofTM2J@j|cd&*Fii2eIwQwWC7tGEH~$<~IwjHEmroV5S1l1qQX&q6h#Ki*6(_ zO9Y3;;>0aVp#VtELyEb&kwr;D4+biF3Nb@1$K2}66=gq<=~K;rmR-+1WarFYRAr(7 zorV#xPd!Y|?ObMq8iR7np7~Z1F@LyLAzZrI?$Fi|4Lf>gttLf*1!ZKigp8ia`ybd`%iXXMxZhJHQ`a@xVa94GUmWW}W%df~5DY;C5y4RZxV%Py$_G2`?v;=U9Ag~^+N77i z0?@3?`h!fk#ljjs_3%7mf#ehfGg4jPt*J!<X$K)Q!n4J@TTtA?nnCunIgjck_{C;L*sOGe zf#I6oh~?@I86gD$zl|r`3akA~OP7069Eb!+nH&2N^8CwD#*A64!%-ZORh%}e1ptgY zebPk(33qvS-#4 zX4dW4{ef{FR||FR<)1-S3(EAR{z4z1H8kO72)C?ls|lcgoikOGON5;dYz z+}c=auhD5=z)aVBHoHy-A-VJwx7#~fEp@h8+F<|@IOgI4AOa*fNF^#ZybNOzVvI(5 zyCwxyVT)lDo$G~QEW%n?D8Et2@P21S()u1G;=ON<*zz3*Nu#s!Zr6#YB^1#D*hYkh z!vI(@PYM}V5ls~SN@3Bzws*8uK%NL7&IBNS>V`!P6;;jV`>=P@1ju4R zp@`TvX`}!%dMRpMl?-cXOsT~%6b0=-xM-uwLZobTD8p0k8j9BMGi*IP0W+74M_ zY3H{hg$Rb>IaKjQ;j`zm;RqjW6DWHx9- z2|qPitD!N*V+`KU_0XhZgJ-7zVRbFXBsh!!@i=6kj+=g0OTMvujg56 zGlbY@mL9d(HlE9+m%;)#GVvv$#vAZ@L(CJ+DfpOI&E@kJp$*{mL*0tUh&*V#)XzRI zrAMdVMaf<3-J`g+L)ygnwAF*3Q0nq(%vU4MOSPvq5eF{}0I#1(;|{E@xV{daAY^o_ zgUYqYXwOTz8VC&DMBa|u8YUlsT^b`t4H)JU3b0!e; zg4b`ZiTpI#Mq&J@Oxhyr$AiO&lVK2*yf1ekW8&WkjCYVsk7MOUgB=>qW+^vW(3lMD zBzT6;!E-ou_DX>cj60WnrL=_O)eu73cniin2_w9PP(x&;-%y}p23-GK?tZ%4Idl^X zy69t+8_W_eHq^}RiPA{2uZ5ebSz2((=%XfO>AS~!nOTe()~P`sY6q3HRg zwjz1qWaC&v+l%6hcd1t@6Gr*FwdBjwEdDVon2I39*w~~zt;_&&Hyl|CoegHQdi84Q zNIzymajU!QyKb{WiVuaf+vN9s2bvu&++R=AsakBfdvH;J1~H+n9zg=y2qxm>B$Ej1 z00T;nO@NVfm|MTicdC!BmWK$5YLXNRAukw6G-V6KhL|q0ynv{JLP4k^ae4?5Y{(T( z3X3{++4Bw6T8@t>D%$oMxI4It4KO?M7c1LEug6=rh;au>pgT$o)K$OG$uOEt z^Qm-&At(mM!zQ)4U;xq< zo`F>}G!LXg5wp)C;zUXbR8r?LLzbuS)G&u#HJEzE2eiN-FoSC=tdoEr6@0No>j$)0 zJWw!ege+J=L=8U8A%-}i3{SH(Wjw=tqmqp+TsHRO@)| z%{1aRN)aLzWpJb(vqyctxyUVE8Kj~3j33~DS%w$10AQXF39Bvfaf{lhxK?S2M@B`0 zmJ+cQeIwo7(8OqoBLKomm(bfoK91LDG`xk9Dy;rKy_PZJ6R4Mk#DWh##Xp`j_?S_#WduUDFWs{qwHc9v>CjlLKUsGY0OHoH@1OF$!K1 z!WhsbK|r{Dgi`h4UZIj@I}xKZqvCA34hI{Z~KM)4!iZ?#-J$Ua`9 z0dT^enNKfyr6ER^W2$N{DVMQlrrs=PWmI-?QZ zJ<7H-B|E`c0h;a$J<`lkEPzA>t^zzmoF`ddl2`=sFw092iVn78Lk87IVSG zV6|1X9J>Ie5SusOAM0!%`J5u+Nu?NL&|Op20xg^zd-l71bjvo{#k#)KSO zJd{I`oCk3)~p*agnKtd+m-%doENUPR)z&ne(78kGenNUKLXc${Q3x_#|jUTW%$II`-r z)0pz*N>gG$`ve>b-Xy8y-OlFan~WPy6h|vkbqU+$eOi5^p`7uVx^)|x`9|wH8Jmpq z&lyQv*^`E~5y6TpW@sp=nY%EFOuDJ4c}88G38)k%G_nY}fhf6ymn=zuBp{bIvnlZ9 zpEz|yOo2>&7K1W&Rg~_`d%=1y)^+@`<*4Ryp#fnKz+gQx0Hla)^ES4GRCI08Z%QYn z2cvHKG0zS+H3=}vHtNU7e6bPYa|2EpBnW~f&k;!mFp|C@6W)Kw9cV-R&-HgWIyT;Olwe>|Za)x54dzgA z1#kCDAPQ#vgXIE<2|4tfL?{G(fUV{4K}S=SrI-moXXNULy`ML&B6A?9esX0Cu9};P zjk`TcE1wAykb5v5z=b0{X2;Yx5eG^^{NE?NakaOa+pQTMW8&wr&*ga@2CuvI{)@|L zpJtQHpa*1ywp4{l8rVTe3W4Vk!UV!%*@hTOiUH7gKK}XdGjju!hm7g{KWD9*@Vs4< z*||wJyGP1-j_-_~^$#Q0>X@D>OXdzi0mM^?G*$LIXBt})Vkvk=Z#hS7&oX%>$HeNl zCu%<+ShdP{4kR<8P#V%7mgV~qP^*jB4!57;u|wQmN5akE4Of-%V%LB$%Dk;aOewA1 zmIfT6>HX1MbJw}XCoe~f_z!+$O>xr`q1uAct1KOSl6#?%vTri!cz>$`o zxPSoU@0{X=02N^b40;vg-D1{bFp!kxV8}%_2rQ`q&>$ma`INO?=uha<$-D}ElXf?} z4#2IBuS<3P7Hc7BQXs4|UU> z_7|R?8R|qR5;9Bgwu5nj07@Wwtp=~1JpvC>kWhy^5(#9TvVqh?FbfSjV6~Yf*9!QY z{|WUX@I+Fb9dCZXgF2oV9j)n0 z<@WRW+V;l)?g}rIbCfU+v0C-Ebfk{&>tWeIG+ihI^%_VR21p2YV%*IIY_9uJIRS{% z5rQ(f&mBwFXkQesPgXEN5fh|@2qy>#!O%Jlxp4cZuat;qert%^k;kfUb#yc{3^s?K z?b}}~S_rGO<~~OIZoq2Ovjj8JvPvP%T-Jm53UF(%4A67I9&rXL68J+8C!p%P zFHc)fV#-#)T$+9c#nAK^&7gt6gLqQqF~r0W=FGB&e>PR#TgPWUaa-N9F#}&gwl4Yd zeKZ7d(8DWo)%g+HctHUV319#j9jD}nDcGXCcc{nbCfC;m>(01(P;i3i16GBQFn}7A z9=b{5dRaT#qA1u*M=(RVvwGvBBb*`lsu)H3;K$kSvgVzmkCA)B#2!m{4br3@6IMO# zQMjGeD^GE6xZ&fp;uf@I0G4`+hj}SYL#7J=bysSKHR^G^ zE>LgD94^;8%xJ~~lsrO9Wn^H(iza=|N}jx)wO_ROa=b23IoiG1UJN6J+{-i>H7`H9RG}ky#3~5 zhMh&;)iIJc#5^$o4h@OzzlHOACJV|TTS|X?uXGcrdCReA*Lq)Jr z5dk>*)S)apbnJXOR<)?0Y*WyMN?h|nu;G_ppe^9>9!O(2cMrxHW*!3A3B2XqB7s{a z2ZD*sq6RmH^NP^+Jh-(A$2;yO>7-VHoni*A+7&&M+`ER~M-}z6)NeV$;Q%635sSNsT!iSnf0co7EdAQjp>aotGB}x2G z9Wjv>8$9bHAB(sxwj-KaAm0tl?utFa7Zu&dvEKskSx zwxu&ml{Uq=l=#GP6xLJs9_D=CjKucqNMtf#Y0~qeCP3{i9 zRdnO%DgaRo!zUem1-AGT72d9i0&HDu4Czi9f9ao2xZp4Q6zO+d_J5lUag%+;l8Ru zO6!q=0YK_02r!z47yyB2K-jW_=29H4)7SeK(e`+CsKuGQ#s_9brz@E^faIGZmx+ON z5Hl=U*+j853Q$fmve6Z1OllO#tln58K$;yM!w2ASDO6t-JHHxBLi(d&j(6o~;P@qB_Ke5?txb%O1A z0Rs;7#=N|~Xxb$i#zNMroeU_70E`T2O9>#cnwZ`XkEW=(-inyeZls=2PolNPEFDgXlF3T|-pdV1Y2KlxoyK!+fPu#f^Hl${X>?eQ3pq@)nuDK`2A zFP`g3Ln=A$S$7^aW}V77x+OyDd3_wbD72|&1m$PgQ2%Z^TO0>60N@yc00)8yK_}j4 z)f#A|duyJ=?X0f5A2^R3K!PTKA?B{3vulGcHT!61jpDDBm$v2B-|UqFQ-%3umzzq! z#6NI(52<~m`6^<#d*`ICUb2B8w4SqL31S_H%*81a1t36|j-3S!Hes?;stz2xD!rH*05P}Yd!F|LXx=Dp8UYdl35i4J4HP<);UW9(87vd zkxdru?jKw}%vFAJj4CHhP(@_rKrWSHNX5{b?3(K5ba|PS#fPB_&9lv8s)_LwPO;GB z7iXliE%n?68y+pr9K5O?9mhqeOCdq`sPA^|^b1?JtVX&XKx!RTq&UMO20(DCDh>~v z6~QCN=P<$MAqWn1!T@mNzh&2WyR9y(Z?D^Nt^6-LX}Uz9S!eC{c4ljH8r6YGga#^r zM?&^J#z{57icDf@TZv644K9SqTY8R#xKQJPzU<{2qn|x$a;OS1S!1Fx9R~L(4s7ZQ zMwI<&i*-cn%GJAxg%P)%r&M$LDP%Yb01m{DW?&e=TiN@auGRxcz<1}RFffy=Yf=VG z=xsPYL%P6eby-tk^vS8I(BofmzsHW{SZLRwuXhH%Kw%D-W|)yS7-o}Y-0D;6y={US zZZ@X5<_`B_R=0u-^t{lD2hiKHA~Hf1$FC{lc_MVA`RAaB5F3MD6@-fpC!LW@nghD{)oC((-+NPtjC z7|;rIi_q@ihb9Bm?i!;>o0n0c*ff(8Nn;j^B=U$!;#i?eJYK{m zT#3ekG+eO{7eI!JDk|i=oJ2_gu_5EC z!R00_P_Tr>7!v{}or4#7vye?J#e_s&veArL07^28hIUDk*;!=7qGl8n(AY|%1Ctp= z`Cy(lluvN+Ja>(8+PoBo?{b3^;#P-gIv~{oYAy#vZ;>0)uA<^3qB^HJQQQ!-cKfb>8>N`+n!n=fU54 zPciSe=Lz4aqHq$ionua0&E4FKl`tUas#dNpShFD!S&C6sR^^OrHT0S^OlY(m@q-_K zjId^-GaQnG70IiFT7qNBWtK*E6`YHO?`c;fUm6hV8itoXw*nC$5(s)2Bn@uI4G6LYWzFeWF6X-HCnf^kL)%xdl6V0jez+4l@6XPDIG)lRDd-LMUdqJ=Z8 zw#__kYj3kLB>3HzZL-JB>>5LfD|U+T3$$Iws*ARxCXwd(V$T%bCLZ5!)?#te)wrvl z&*l5e2M7`&U#n%2heT7}MGF+#1)B~a0Kcrmx8J}Qa%?sW06-4b5kgQPOS*DU4f8C1 zVc)DB`t`{BS`2`O)>;^la0*1Y1>yj}PByx8Tp)S##&DK@8(D8@8W-H`cu7EARFfH} zt-uNpFi=LD7`ez|1XxT2BDkT9=5|Ut`sG}#t-_354t!h2Kmjh;lEB15SR{_Cd9O%< zba~0c1w%eA3PAeOmtX}w#@`;q(A-1zk@P450I?ee7$pSL0RyZi80S_{ z0QmfdpQHq#uy>ZY-uG&w1-v>k)B>acKm|-oKyI*5+;tz}`zTZ1%O`a;WnJac(d;u5 zeMK$Ei65*~I|D_08vq6XLL4GPkiNAlA{8{&NllW>lIxLLE=D&dI?;90g>oU*k!o|Y z5HynMgo)^^aRdPFaQ`DLygnr2nbX*fDp0Iwm9X6XfF!f2u386Z3`i)kB_so zi;LUxr#RYULrw!Gga?xXK?8&vw?MUhYYL5V7UVjSCTDQ6b!HL@Q6d(hsTSq!X<3ec;}h2 zi>Ru+e&UXmdMoQBavyKvLBnzY5aI~M78USmigE}D2{p7??wBAWS=SFcy{?{&ZReM3 zE)lh6xSuDOObwN=9QDsRxip?9lh}5ebA7wSVb1M z7`Vksvx1axh^vDDHU}j6>EIwOWluJK_7DsuymoA%)Q3AUux?5q!e9anZ{u7$ZgF!) z+VMEUOW%QV_$fegEy0gj`(3m9ykz|(PL^#aEuw_XAawRHJaJ1N$Zy-Q2URXxg=kME zA(b3ELF3ORlZ4F6cN!%`%b#TNa3yH~BLdGHqG3S=0s+IQxxVvXo3+~V`<-js$BrDP z1}`?nD4Z@H5)RIPglUt(_#Gd_c?Ef;jc*x~jWtnGa_#gxWdM;jC2oF~r8MiE-o48m ze9F{2Yxiq&(?|r_p#j=Z4F^)gTnd;$0J#tWWb~#Ew)&)rJg)zk+Ec>6u6X=6jCPx@ zFR{<*&SLg^uBI*w&1|NH%W26S*$ASzDrTuDl%cHAWbGCKxM*t2v&gP9G+j{NMlA@} zOF}bTBGZ#Gl+TV|V&^^7Qz1&Z+14Bzs=NqM19rsM6pK1`5+ip`V@k6MDSAtz45S&j zL~~>@k_lR^g_jgwOj(&Qw^QyNh+&dyn0xNJEVU7hX|%E)UR{=4Ss@USuFD2-LOgKv zLKj7p7R{Sd8KE!$hnvUoc>C&ooO--IroCg=rBKP>4+KWNwR>GHcd_2fODTqWU&HB> z#(S4IlN8>(vp7UxK@(M*5^)mrO}3+XYWvbI_;$wt-L{oBGsQ!xYcgaA$mx2WbYxZh zZuNePTf5Ul8xkc=K5LV!;s%xNao`y*V8Efgg{DaKaNHaL29Y1?%TQ7TcUl9Y(Cy{V z`mGO3i|u1(`vJIE15(065J5n>8}r6)elJAPlAx100~U%}N5#&IQJiXEX|VaV_{LN6 zjcr+pwQZV&h%(HzIJk=|O(tl&6iT65EcKe%phM{*qXKi?jMTx4qCusbJh>#=LfL4Z zF|p|(MZ{EF3|Crew=))-#9E3>?8~+hj6&nsU_{%FA1WjZG!oGO5dek(BZLqs3ATK> z6mud$&ufvsePFpu19xHHq|%D}EKs=hoO@K^IV_Y)eRNt9bi=B0glDyjzzUY|k&XXA zRNM{+ineb1KUPV0ELAOOBPUt$kX9}~9yD+v*2n7FpQ%$u%hrhigU%LoP6O>)xXGA=gUS&dHe;Ib?TisO<2bP((~Cw_ zK=_Jy$Wv{WDqRfI=3#aa^47Mjb6~<~XGUol+EGDO7S@$!8`<<&ZN!TXi4WH(2uO30 zldY8GsUkdhK*B9FSGeHja)9ZP*><`5b?Hfr_I=Fq0UNHqhErrz0&1P3de)k5P3Fd@ zD*zu&&Ra5I#DLUM7cIyDoX^-8%Jm9py12XS*pzu;5(w=SY?<#GGX|ecs(seUxF@#9 z`JMY>_M*p#2mvW@v7LP`DGZokF>+x5s6k1F1Ssza98f-vNCy~&fwy;-qk=$OwQLqC z{kX4@8Drz)!lIxYnOjhC>(;5tsgofo2+%v0?cYK z({3jqBYdkh+R{Yw76js<*cclsNkVW%ea2E{5u^xPJTN2gRP{kB3GFMbQ?+#poE%$^#gFUg$0};>$CPWVS!2*b26%Ys8p?Y9F{TtRNSInlk!vYc|J$R2p z7eJ6PV#1&gDmLfTBo=MSkB&yR93CB$qi0D*LdwmC-TDWFX<^KeFju-kaSg#9*jM&N{F>jj*L1003p3V!JyFPd$px1=s?pf*!e6`fJH@L!Iag*Jif{mK{eU zAG+wyOx-m=m7cuA01zr&x@As3Eo-#0R`SOPP#J_;G+(N(#&;VVyMbq@YUyUfV^}fV!MC}ad0|&& zVZw3n)j%`G1qMU|d}QiP-W(Wdy>?&3jcwjEUG#Z5N(73`IGoC}MGX^xj?jp@ve_dCOFg--Rol|XVmG#w zgI9FG79c}AE&Id*Mk+3>T)g9VDGdyM`=p{bX1a4|#2mA;xPZ(wM*hw9jtl-cX&l#3 zgK0fBlWcBUpv*%csmT)uh*0O9a}vZajFt{P27f%MX24-*s%e9+bQTevTHcDrOGaB7 zgc#Fsz=q(+7X#&}!NT%ndPJ~gVoVpIc;vV&9(+MU7sRV;(P%Yn7-D>NZ8YAyv6B%L zge4;Fle8T;G(=y9{;=b7JGi^rOVjFLcB;bBl#_-PSHWLPUG{ZpkQmjjS1ByjwTwbV zl1~E=F=rb6-oo+SXcZ6@re2J;Dptt%@kaQ-L_kQmKxBr@uo1=K)&{=v1+8ux71~_| zO;PA*3=Etfq7|(Og@EUgVKVc~0v2|4;0UnL3nON#P0gk~lI_bVl)~R}r%K~nT=?zO z@gfLKUC{*S@H%|g9VBN?*@o+ofH4R=OmBDm9!YO#rop%AS`z87aCk!c7!-?}9f0&B z*+41ffG%j$xM;JMjh(X-+)tlvU6g}EthtO)`aH*L032(o> zaW2&Ctt3ME*=R2gK(c>OjW*~xmc^A$RUoz!+O(TC5FQqZ9#TqzB14Wo#Eu%`%sUZ2 z(WLWbz$}~ziW{|Y(b5M{AqRit&F1`3fu5}8^P*P<>(!_=H&8`S(I_w^4M0lL}^Xk^^QqoLfOB#vw03;)g1oh~76!68`}T+pqAv z6-JAcXV<8DiEj9Vvby|ycthHG)XR2IYoxtQsnPKo;HYR?>3o6p%K^z)!VuQ_1LUdGN)d>}*+(9@kd)R%KYLrfcE?#KmB#qQHP9Jjy7yqR$Sx5U%Gy;m8GqjV_1!(y%XVDS1?J9DQ#8fK}p4K%ds*9D^*m#o1miz4`H&K8EJjSdh}6-)avmCLpY(N_tf~M z_nZe2OHKrJ3_4 zw5U=nij#XZYvx783Kpe?_-{AMI__3w#|;VhjXAZJy{?y6GFcqr#xt)GpA63mXSoU6 zE}JMt=i`Y>aHoYa)fy>YYa0*3ta=xpD#|q*M_&JijqJs?D%w=Lf0o6aw=cmvI?5Do z?4Ekq2D+Ya&lP4EQS*B`)?S6U_JaFRTiy%64Ak`5B0vH}f;?griC#NM@z^^;E$6f9 z1yovT=F0Fhr3R5{sl+(}wB*7fwC40U=^zzsY425*I3G=sv$wmWtSl? z0;!Ih?sDa$QFJmAv4T5RBY0H+RA7X+NFfs_Lyd9vbV@pz7iChbhy*m1`g#^itSxQ8Ku0dWMo`j@ZQ%eHY>;-q@T#Hgx;H3X zzZiP-7n|I5)ulcygE*!@D;_6=G4L$UO`GTC%i+ot&ThHs>v-jR*}Td#_qN7LkdIA0 zyCK15IpSnz5nN-8;p7ssPN$hDNJ!7a_J>w`u!s#WqFAVh1olJB24_B@vLowed@_fU zGXQ$=6xLw!K0VkEXV$IaVxf+KZyLOo+W3BSwK@UnsGjH?lVi53Gfj3veX^l7YlkW4e>SJJae48XAv@zK_CiI3l zV$+g9_ZY;iNSYiH1&S`DH5H|SgMv8-6QF>EK<@4+7J$-X4^Tr*9L`6ay@tuiZuCwb zdfm70_7TxmR~;9@B}jI)=4aZex5!Xksk7pXi>vU};&;sG-$bxGk|L5C*3~&ZcIjLb zjBM|cT})8cZE+&w>xZ!mMiUz2oT@2gY%hw>5^x zka^7k0GP=^HdR!ZD~UEKuLfsR4&?{elEah`5W#yE3|6#ZmMv!K14#)B?xiAVj3WVwntN3ak9$L_A4j|ZwrUUJ~%4^@EaZX;?cyE-NX2tp5Sr-XTD=@Q_gK!& zDQMfR_rlv+6XewO366h55x+5~lcLtXbm7t%3xscNsGeBC9?>}yF3)_|s}+@}rPpdD zqFu#SM)2IY2tfdk7!f$l$aa=?t>qc%h&~WYwBh31#AZw1U2r%n|70(h0qiMHRn+uvOmE@O)3iNjB5;WgU^@P*Rk~Q@was;KN-R3Wx`_K1t}iiVR=!~%@SI$DDLpsY_3nsjkTW(ehk><|G(Z->|Hl`r4R&q9EL9dDPLsTvg> zo_>1riJ(y46HmVKgu}f-8ZUat#6~rca-yDyWTui-q3{RVIlY|=D8yin)6C}rPqS%gV5Cs^YPKJJRjxcq86 zGG(sx>2;v{S|on>&oPsZ-#o$`wND?|Ykuq%@8PEhr0UmWgd4s(to=Owv5- zPC+EIrS`TZ38jM3MT$|ElsRlV5)A=#Vc@9=_ubp*yQgXl1puM9=Rw|V z&90kNRf1_x!aWtxEl0eeiy}rSiBU}#h#JsUHXTKjC78w;aK#p9(8$_o0kBYgmq$7> zC~8fYvi^&jgxYf%nyIsx1BbZn-&HV`x)ec^S-DG;mMv<$q8pSq1(ZGj?KivL<8zac zO46BG`x*1biKo}Z6+IayR_%;5D6{GS^z6-kVR;n3mxoFQTg4qMFMpbB4cg$DkeHsH zl1JL3eyIdQD<&}a$pz-AUhUE|aR9e%XwW3Mg{5Yh!Mz|Ah!&pRcv8Sm<*I5727T)* zA7Jh29mBt`xQp2kinZTR9}#87-`Up6!WIUt!*?&cSwK1rU@A&mf>+Mvgc%4bDLjzY zauNmzH3sFrg^Pk&b*MkOX!vK*HjHl>Rb&KVnJJA4X06D~(#bn3u(Zl#R^F%v+sI)P zG+(@;#PbC(W_g2yGy^7bC{ncOmS7-G`ufO(t=T0!R465bSvA#`$X0|G9Kyy2@&(b0 z63rGTNhvnG|(-T{`*4?sS4g#%F2cAdKCYKsMqS1lS9Bv_6Y3Ak95q8f0U-)eD= zbAjMlyoRj@9I6p!_X%5aaBSf3l-*Q#tCV?}3eyN%0Q3ywW@5X8W8K=AaRpDzWFhq= z7wck90X4zwBfUBS9Ns-$zngrsXkYEskS(ngznM0ZPUeS$yRV;bRz^iTI-7tn>HrV= zSbaM=KBw2<4}F*MVjhWxe{)Zg|0}40zxK9%qdig{uN0qt$bDlB-l3lB)=>Hz@8`fD zQk%9K=xZ-J$?$$f4uOQ(`BXP7hs$U5B-R-Zb*oLJ*?sdS!}B-0IG;86e+talcBp;d zBJchV;~04_1rMCUyWTAi>2u;=>Q0F!my_=(VV^lFOxcq>PK)n#YJ=kqXc zQhWsY=ou$Wg!^N)r1{L~Q;df(51f$Wy$jSN+-ao#*OSrRcd<@G{^Z)vuEdAu?OjyK zoy#W_XDP2OBJR-omT%K|&PzE6bWeDbwRLxwMl73qbUy2(=YO+#nZ##M!>~hHzcT$! zpPz|1Du#v!Yuc3PS=2u{I4L>%;`7sRAb4rYXGG4S4GyQ(U4bVTlS7!P*zH|*9Y(gC zNjVQf$-qv5I`(wz-lr`Mq=yZimap1iIBC9mAFJ;1)1YpXX_I}^P~EUPC$dd(M4Oa4 zG!4&ZPNmrE?EYp>J0YmUT@EV)rgf9VZZ6M%aG7$odAW3~-X^)wbT~Thzwt2xzgILm zG@ovqXTN0X)1hIo?W3q!$3v}o&a*RMp!IY$9pl}knylqLhNV~vv3|)n?z;}zT+%TW z6;*-2Nzik7xR5h>R_=t{;Ij-ar7?oxCnfL`A<3dBpox>XaKKf7F&9^jtAca+TY8=5 zbCl~3c#@*XtG3n)ASft2iy>4=IjD7vI|t`78}T8=WZkkAoMaA_)>aCnJBAgCLuDbo zV4$F*ib~dY`k&2-%4X9hfu1Q|m7NY(uYMjW735O0SE0rQAgZcJv$SU3@{=T0CuoGK zk#b4ab1oQUtHo%dI8OrMaaN5gX0}vCH(0Y7T8_;)!-%M(1ZGKbZM9JjMX6=1R| zzO!R9mzz4qO3TbO_v~|iy^u~q!Cgo&C+!2 z*>!DD%t39c#a^n>SgOGd`_Za&0G@u<(Jh!}XmL6##d+z~Gp%%tif|ZJO;?=uEY@Vr zibf)jEwE4&6+~C;P%5Js_*cJSgjH3ZEdz0}VX(vPo)>p^)5P_(<@6V2B8s4>$Zu1* zOd%Fb&Ls_=6*XPLbcs3Iv^w#66uca)!WAPjTTm36uJ?O@G7#!_7hxg5V0LNaQW{lI zMOGV5*L`O5Zt62g>sq2K2#BlHwFM@Jlg_*+wR9Sk1(U7uIKek5uhZGt=S{b@bbda* zCmo!zhanD~nWPlwbQg%6m#}7qcqvmtLs?M5jirZGwZX(R=;q+xY8FGc@m6@0(t(OAL~!0cTtiw!|Us3;2!cU97pAw)z4ibWWxD50qDd0b8AT)qC*HalGKDamI&I^L%D z&h6_FWZO;~CY|k_e|Kj!I@hw?=*Izu?=Jftj++CVoGuj(ne7>_fs-eK@zi3d^%ez1 zf}pFt-SjyVr%cdb#ej@PF@hp75Q`QHj2NJ*D&V2Ja)C zd3@ZAxcu&KGc!_`NxG)%SGB=6;=Kc?%y=F*222-u)mR(hPA$Bw@iKXg&wXT+Lw>`g zPXD>@u_2*ViYynhwN@y0M)t#~a_MXeiy|VZD#Srm6hUArMG=6h$4Vl>P*GShBBHAm zKv5HiR5hQ$Y6J?Vd$A4`jf)mQH7PLs^>&A$z_iI+vP++t;#cBEUi9 zGIkg!qAIasBoRkwj0&)I9hOduD;6ROEbJNBpkac+RamGo5rTrKuvj7jqZCnMF%&^q zDy(3jiZEjoL6KBJkw~zM6oSDLEEyGyRH$|6PN58$B7zJNdp*1c1x1R+ZFPM{IXruz z0c24XgOv^5Rvd)t_+1t?4-;sL3KOgFyF5&otXQHdF-WjQRtT_Ssak-i9Shx1s3LZb zt28}lOJFYv-ydcW(zF%aGAT^Uhg&EBr2J3a;J zy4p&cuD@Ffs-qR;c2|YJrfgM3QWpkbvB=US{)Mk>Wvhzcx3j8zdq5oAFY3mB1Ntcb-T#fn7{SfZjVh=Rdn z79$0V1r=g~Afm+)MFde+FLluJ@O0@jWH;NIZyv9APND1*z-IJC;UwX13l6yrJS(T9 zy3Cx8ipkn_bm`s_Y9!w(u~89Vuw+Gw$i)#H3Nx}{d;74+VGYu6*kin+aqK*YL+UUd z5`TJmPw2Bpk@cA6q&gHP?GGW+Q~9@ddPfVF-Y||*k6g7+eZ5eyk~h1g+bwI4o_OR# zQ13CJe2E&b2lIXh@A#g(Pw4#r`u|?J;*ik2X4Vfo$>MJ^?a(+3)lU-2c{+bObz9H; zUlIOZLq$*U-udt0)cVc8>d*Ogf76fS$CTmOl0Tl;`Yn&$u%YCVx*Np3l3-)Uvqmn> ztNz6Pj7o|uHphbUM$8h601Yk|RkS$$L-;}{Q!IO&97srXyUVhSoM3>8m5%cd1$1w=uabeP=o{a$~Y zt(pI?)Zl;bF0XU?`q?TU=B%GLhEJ~?A{*0*#T_7>kYK#DG|BsP!tPgaiN|LM9I1$i zh1PY2*0=i3qQFk%IKP~&RSnAfBC+3O6|W)E&Gh@iZ4wSkt2Imq8&W`LTt(D=mj=TY z8SK-(X1b%D0;(&iP78)Ata(*R!Bka>C~=yL!C+NHXVoBXk{E*(RZY@WPj39yOg#$< zG3gSgt>fbgkbIM1DO!s+l%mEUqB*nGKCOY1AfwA{6ugRIMnqH=k4bHCff?(qlD6QBXldRbnSiX(yMVV2Gf)-8C?Z3dB_w zDuOXcumsq;%)&1fDkz{S6+#LMswotU0Y!qUBvllGBvpaEv=jx3#S#i5A|zO{EVhcU zP*6rFsH!UwfQo^@=y%yNBR_Eh)DvMb+&d6QvEk( zBa-m@&Z*eZBkgR=y6}kSXGRF9qCp-a0S+C^ZD;sV)jTK$?*C5L6W4XRW}q>jvzGgN z-RLJJo}Y26iQKpCP_Yx-uIqjB{zb(&9|@>Kt5H1h2>d_6tCEaQi*Bb5AV?>Dx%^FM zZ&}RA#9yjjOX#)4arzxlnl(T_#rr%BFU-nF7bYGR0FYkAZ8|IO}{>;gdNhvt*r<9QFgah_0*zVW9 zeh>UwO!7BU*vEyW^X8Br_WH&N7wBsK$E)_b+D#(VwJ+gzUsv{jecN=~CZ?||^k{ls z26*o2eLX7p`$g`W#TSsnMheD9)3si+<@McWdFcP14#6@J-6X3PX-Y9*ufl0;y%)E* z6scX??Ebp(T-YhOOa4t%W6DeCP^?_r^yzoDsiCS2dfmk_KODK z?C^G(y(TA^|25C&`48#s^*z3srYMZkltgDr)lpb6h={6tmZCf#eMyBFBJS-)7(D(x zCK4}iVOAri-=x0T!YF*NqtN~jZoDtYv+mq}hrInCj~MRJr1qJRSjM?)(zvDMa7^jg2*B)QB?ORRbY&D zl7cZ-C?n_TRw4>0#v;LE>{}5*5Jh^LSc;0URARq@eIqdaPuyb&#e$Ip6gT#%77GPc zP!$t}^%yWI5#*(L)`+P4npIwJ7W<5=6e5VhRXKipS1FSRg|Tte^jI)KWJfjyK~^Y; zpu`qWrn0CCEJQ>^P!Ul;V#O3yK|xo=@b&V@5ddQakz#GNGmTYGr8tn9Jm$P3iKf$YZE z)c|{r-LV)o#4MMp%6B}`hk!@RxRDfa?74QM84cg6`fbB8fw zG8iZ#3M#P!VK*$o9fSAJy-AX&qAHPM2#%+=!KgUO6&NvAId=5GD-=cRkg2I<1VfSg z*ufs8l@8#jJ?qhaj~dNt$^#)_tG(8@Grx8eB{@epyCn45u{ zfWm?rAyf<`?Mzxbg3aM#@dgokzVnY)Snu&^fy5dp>3h@o)k>4^+G_W|54!kK5{$GX z<69z>x?Xzbh{i}7-}ZW1x5#8Z_*gLk2Vl>q3)28G`S?>r=oDE(-iOM9jZ!?J{GaU= zFu^oX_NsIF^lcW35cRgPM_O!%*(`Lj&j8Or#Q_i)R-YS?^khN%$ zR5cJr@ezr<0YVqh|=F2J46PbAQI5Mk;RI~Iasv;XFb#Zz%gqN1WIsSc5`hso*Rqru3` z2luU2f{ac^i#u0|olx~o`xOVP^_euhB5-CP!0V9AhkZ|lxRhY#;e_*7?veBN=@IKI zm~gK@KdEMG-O{K!EU^xm3Nb@;%Fj^wM%;Z*{(pD<-#1Xv{1mZ>ya!#v97ev`?wmzb z6*Fu14N({D62<+-^*(>ef5(0JzrE-*{;sUnL=toiE>Doh;bea|BP|Gsuv~_v+xHix z{*T4=zyH5a$@@)DL&*O}_ctW+>{%mq))w#%lY7oV}&sARvI8 zj}kP#&is^hqzc|A6N$V$?MMLdy`phOWPQ8R2DfK6P%S57=>B=}&?_-A2LgcXNFs1R z+ZA73sfmwwxVrzzpMCZ@m=S*_%0F2`_pGr&PHm{MLFg=_4;xDsB8Y-2#zOPTaYP)O zvv1Skqj);;nOq!lmS25y*3F_rVg1wc1l~oVQ5OTZP=?Tx4)h1=+I2y4b=qwx^qWe5>%Uc;lvL84NzR z$9UXj@*SV+_V~^Ase2dSyBSba#j5I3ksgizLqA2+ne(yu*en;jK%`GWO;6I-o@4!& zPLD5o*HOu1;4=T7oV-v(L|CH*8Ti&yOV z0|HHdl!+yXFeLoh4i?XYwR|7C{=2M>?fdEY?co0`$ICx!dExrEm^eB-=ekN|JU+Ap zi0m)W=AVvDCY{x;kYP&`IR$Gn`;Y-TE7av7r8&X?L26Re2oY!_&f6wlE?jSFV1N_b z<%^?uJ2Gj!Kdif9fM`R2gFlVSs$oAGj6@Ud{AO$aVL29qlnEjmLbihIL9$}srpsmc z=t!rbZ(xV=K1+sXb3P7XfdoYroST3C`di7+K`*wcm@NU2f8O z>4u~}Ssw<<1EOHi_Y8U@a-Ec`%1plHXK>_W}(|uqe z1VL<5%B2Y)yVz)-{_Zaak(fr<)8@1e6ML4dD#Cc21V-)Gpf!<#i z-if^#!zeWB)2`)u5dp{U3A#BiL+Y<)C6xk9j8{BQrzgO9EX6QxWTZ|M!AAHD=+2Fg(02=CmSw zUjtkF``jJpR_A!=;Lre^0uPsvpg@BoTERf=1T-n3y*LeDY(%Z>2^1F$IQlca5j(K4 z|K=UZ{Ac8i=|bpz^YC^d*oGWe(~A?HAIFRVqW^`yC-4{_%h;_tsUG*bLMchshiB$B zc?&Wb^(>k4R(wG~oFzBBf>@2IT9N^jf>2e&3QR#DVxm$~go{&XQq-`?jcK4jgeMjO zxb#!q!PlRD>QxN1LERMUu+XyV@G8}-29OsG4nW$aqSmFuWire2uua|fpX-+uW6KNd z3UQE+eQd6aEisje*t@h)z5!(R*rR31qHby_3m7yDNJW(tMgQOV_CM(P8DD_Vp!%+9 zYh`7E2_%>p5=ts4s}>9u0YMcNRp0h_;_kGM?CIaK;7p)vx}+bZI&f~Ak%>jqLkkis z7zh%ChLz<*9RV&+_*?%OgDIS9MeWCaEb@eou_gnoWCUoHXJY`6SicJBI|e8#O6;Zx z1kltQ3Di=PvZt2MSnFePES54(s-8j?fi&Agi-UZq6MRzDJ0`$%q8i5$#Ty8H*^?`V zW_2QBg)Z=BPC_8Sik%`iM(ypT%iFRgZ!ufIEz3UUUAa(Z*{?;Thb~mIHt^)TxorHY z&PO`NgFu!{%Ca)Q4pJ&h$j-V#{#wq_Sco>#XEna+C`dX`QR*b(o0ZJ=Olt z0;FZTR*eEu&qxLN!rF=qkPSsrZ5#%`%7y`m(}kk*B+SC@E3~+I8XQ$>Q82w=h`tT! z(k@$*9Kt3An_&s)wPH7>XvjbyA`N2D1^Zu-TIau)+-9;N^Yp8l`a`Q8cR+%dPOZOS zxuQ|<c`EX9q!}7TpR0(@+9G>uL zm<#;vfk-CSQjpz^Hl^}Wj(edGY>=@)$ETy~vBTfCM%k_U%#_yKv*?wJ3s{46e#OLt z_v%>bC!YJ%r4x+vp~#JF1GFI3682hVw1E-bGS(BJFGK_kQqRzZm~;`iyHQ;W7)J2{ z4cC%h(*s#trUZn=Hb&c?^qL7(XpV{E~{`>5)qh-VQp`8wf|fHp38tbeLGP7Udw^iOhO=MtNAc1N(iK7C;CQn zJF_R>;1Frh<<LhC zCsxybzV zIfERkL?LC22$XQ^Ul!5d zc|d~K-EQ__a(C|u{+lc0iQlFt*PwgdiV87mPu()6xw-JlMhil%_U_&l+OAPl+MX^t zY!hQIK|n*$iSl%v zIip)wJDlb+xOr5|YIPr;1daX2&+*BQwH8EdLw_&(yVN=2=lG1%t_2yqBVcP(Y6 zBGg1;UlzVjz{CPbFspC_i4P(PYF;gZ47_2H}dh`ZT3FD_xy)n&eYf$)W3bZrcX;~qO;6eo6Id+E)y?wk! zc`Q~uea$ejiz1xnr^>nsL}uT)%|v^qp9Vo%HI5)&z9W!4LZHgQ-86@Sg$69QX|$j z5X73wB)|l^QaHZl2=+(0`Ct70*OzJK_q?uN>RpHSOZQ%@r}$_Re_>fR0sKTp)CUohU06YUTEFmBp%{5D?)4T2y{mJ?23y*NIC-PqzNZM_;=^M<6m4l_fXyZ{SLw8BPLpnK}11r(yZqI62O1^G5K#SzbmwG__hWtA(c)LsjY4cZJ&){xdQl$!eLCDW=Qm&AG*Wc_n zha-5ry;yv=)P2r69s(V&#;2ftoq)RQtR@Hn23x&;S$dV&P+x)u zxR^yzeNmlCa!$+u2}A@k4Fp0r!;Q7Z_Poz5IUC=9{av3+z~KA<$DZVT7>mudN4cKq z7v}7xVXi+{YaIPJl7N1K9{`*mkm|G>zYO2Zo$nS(Sl@8=ecg-)TvK0hniQ;`Qz#c!;^XK)pnr1e0p)+y-=0MmJ9eK@oOwd>y9_1T02jRy@ zvh%-l(VQJ@1OG*A%L|WT{}mOaB`U;KfU-<~)kB^(b%1~m2m%ZPifC1i&Uzi4VpNIL z2{=W!A%L`0sv4NMRSxLX__g1}MB#aL-Va95|D~Djf1+e){4h?+B^owT*(MO43=1Lv zVk1@GmR4cyC;)q!a0NSkx^u@2laE@DyZq?zL@{p^cRC^n2z?t_ZsQrbk24(#%*eY5 znX@r5Wz(hp1_C!#aZqv#H{$K1Oq3B4l;Z99k!c+0q8SAup%TUvBnCLBP0%D?$ekBu zMBd~f;BBqZ+(yCw)HyHd`um^6h=2vw&-XG8WOYn=4{U_y_5m|^o<&GIlj6b9N zr2a|lOoN5k^nUWxzxAQoH5!{n=B?Ki0XyV|GKR>;#z@EeIb`ei_0(%C6Ys$(K^(z? zFr?JcVV!WCB7L$~x}@o+_qMEHDMeYRdt&fKHj{J(RLAeoVT-6_oQKP!WtaSxNR zjh1|02Rvv|9)YjU{Jdipu~;ZRev-akln_J}SjdR5QB_d{UHvGF7w!_VV6&LtJe5@h zMG-*}|2Fc>0DuTtO+plW;cX!Ve$_B6#JeIPpdTm3NVpoc?>gPAZ_{*U9x}kO!XXwx zf*%@|Fi{m$b?pV>TB`+utW*Vw^I27k6y5Dm!Yo*kMlewmn~u`Tk$n zd))5pe2iYC_iNG6rv{B2hRyvzA`DnuUfmzQz}uI9I|@(=v8sAss=WPX#Pa=+?95`~ z6Ivt?%Fx`oFe`9Lj#&>_34l^b3kfnD#B9I!dz&_}FUXp!*7%wq&I1{}lysb>3I8z%*w`Ew62UIYxi zdtrrRhHO@v5#Nb6*XQ{O=XtwOv-j+3+co{^H)J5#L(&tN`gjHE3WK4ECal;-$o_8U zw_)HB`#HLe3I3;*hU;>26n|P45nUGpe~I@Vr}o%o=cDdW7J-Hi?>{TT2DT~9fjqdPZspt$@);F@KBNxToEB$xPkTmg~x%A=y-J>p4QcFsGP&; zp;$Xb;a5BAN9ihQ*QmjTP@E#SphA@*X9%6aHNu}`P5zY?7I`5JE3a6e= z0NksUZcE9(>Hnm5 zD(+D3Ad4OOA{K#3w{qyry}3thm7akx-94l+Mh81W+5O zXf-E;7_cKP`k_7dR%6#XasSF}U~p4vitmCA>c!$C{Or;$X+2MKp4r!B+=nP&!XPBs zN-VNmVeC~Zmw0j8H{=V6Er0P|$FE7aQ|DL08@Qr3Lq=D?G7HHT5aIuw1H*oWn)Vu& ziN$)-^W;PPHFsB|i9`6nl%zT!bItpk`bY$G$SLM*zhPdnAY8N;_uZ;gn6xqPzro*$ zAIRrFmUlsc2>(8X#eA!89Da*uN(h1W(BY;M;bw1U30e*gTf#DxPeL& zG6y+^Nfwz)yZH@GuWr;(YdFvQ|Mw-WiU}z-f06&GQcUJZY&kuj;QoTb!$<9VuVeRB zhFDlF7p7xPeiXPY=NBLAJpX=YnlU1G>vjsNbPs4{br>j1>@x5ww)ZUnMnJj0cA-D_ z&1noA#pw6uhZJCk+(R8lsD~NR62Fv8zyMNu4vqFNmVnF@%%AZjR^|G$ANByJLx_L1 zaJVKyUO0$3JV{OO>%5vR2cHq%%1}G1_GH>50q>rBQ-7cmy>10FeTHL=ts)NCrBI=d z-J|ZuFF_s5?bEZw-)Fw@{Qhaf`|a+=!Tq0y*l;_)73l9~{awBLL`4uto9jgtANW$Q zY?T_#U=3YUA;NakH{KrYW)%KaYepS`u-$jj->L2CuxnOoJL{8`Y*grWp+sn`H zDbw_t(}a^G=xvNTB(ELbJq}h5$0Fg0sY)npjD269xI`3Kb#7i;DYBhzWpQsGO)$+isr^{S7V~*m0*Ly%CC!gHqs+Q+d?fj7 z%i?IpIX`WTASyorD)smLoNqWd!o+%%sGVa9qw^V25Kf^eEKpeN(CKj~s~3XSd`9u7 z=4s2;$F?wcg7@sl&;3p-$d4ELS-(u8FMV%>zN}#oNP#&f)KKJ`2gZ(HE%H7*hrHTq z_wU$Shf;dtFPms^I#eI=wNMNRF!YjvASVgWU3Y8Rd@*6RjNo6NxR;(vdD%V9u_Cbe zh4kV7lv2m+bjUlo)#?-Z6pIMDb;T7#tA7Xis_QIP=k?Er=@URKJyykJb>4o>fiKtO4sP;`?r5SoV~ld ze8b5*hX1|&efHxR|D``|Jqw!+;&4B2=H(E753E%T0&h{Vc5rJUnB{|NY(C z;r#vf^ULo(7}Ft~??DW{a|8qnSt?MWJ)w07@9@z?5D{%ml+#0h3V6qK=lPsjLiLZ+ zwvG@vwH;Yb2>xfMH^Xf6P#};YgpY5x*Rs?3uGF_xdeDcBrn&R?-@I0_-i+O{(o3yV zIyj(izxlrJSf!xxNt+F!nKc50!U+PASPdtY#q6>fCVdw6lxKq4X|ErP*V;c|JLZ^F~A zYI^?rEP9JoUK7M{3anY9-fy|SpKoJVQhP6p#m{3o+#%6o?tX?3Ri`{Xi&jk*m}Dv< zpwF_kVERT=kK?cyXJw+F3o7e+3?88}U8LdSr>VLbh@d9BL)TbT5k-tfEL}Vwy~Hv{ zDqpZ@;m-vUF6-3X3kD*2O*q0Lc{)_re1)gMxQpm{$jkX_q~z+c&7ydlH9KbaT+ue6kk91YK(aPaWNUdYqS)~ z#A0rXy4^sTNYwHE`yh)thh-X6%xnRxr+8$~^S4R8Hea(7mL zQhkFsziad{mye;jf35!X^BZ<7@w?sYjvF}L8uES}Y$_up%UuO$>V6UqbPD+YgVE|3 z@+lt0hTQAA==nEdFHD$4vf75ivLt2Jln(T2ll9OK*vQ=3{(%VWlF zZSZ<8i$^AbU$QJZO2zQdymw3uMfa}gpT7{C5I@~#q&(+m`zHt_Ecol3yC#6>_G7Dd zCPhemxPP$7sh_}U3&&^JxWIWP4eSMYL-I&d<5=Ha?y&TOHR$*f6_OoPA+H*KuwNfd z>j<*RIwg;`P6-Y%%%)GL&vig=NJtw_Ql^7SkivS5|9AbQo%zQF6DKXQ%L&NT;~`Mr z>>I!7R&k8oj6p7oZEA&|{{D(-mo(7-k$}D;+mo;b)Ih%0~J^4HGB+=pG;6N z?N748w4xB}7H(^?0FNJO;IqJn!=jX*^W=#h{ED$yoKB-0Jc5e)RTORdR~X=6@Nqb9 zYu)yhfIfy#M&ZaHz!E#<3=A_{nlOXlmK8*TKP4C>iq>KdT-I=2R;KBKCc zOey&9T;Wf0%Ac7>zyAMKPS=M-=eO^?$~zuniUsnFI)s6&qX-ZO3lH7m(HMHUp*`sl zaqduR&wPtM-44sLBm}pxkA+zxT+Q(IxR5u1AzGQlW())*$OJe=?4L#Fy3K5WKewA^ zpz2x5Jh!mS$ltR(b5j#jy0Z_QZ%Im$pn7Z{nCdgy%QcKfannQ8rb42lp^~fS z5~4AWM%F)_Xq}2tMSZ`_!H9U2sv_&XUXOE*6W3|f%H?e}3;lR3Me->k=@K`jpeahj zRQK&2x|1Mkp$^wU3-kZ&B6LevH#gX5yFaOCW`=70OLbdc7rULj@p>PC4XNQj~b2*n$seYt2K z)y@!zC=N?#$%L8yPY2*{-Y(!qS-E7^LAHQ~7u#eT*rt!gpvjfDYP%RgR;E>OfSDVr zIo1^dib6mk1+hXF8WZE(FJcN2(FJ37r>&TZHtaO*yXhV-v9?`&*iq$kpkqAx#g++; z7=+A$FHar`X^rmgJH~}lx;H|(tr_bXza5ci8ofHa5ua#O=!L&jfzVGf-9 zOm>)mTYfxTWRds)qxgSSY+q0w(?>53 zpU{bSjpb_XB~Bbc+TsZVk`(=ymy&6mE@V`{+k+IBYJSy%2m_Dz{1Q)&A^nG&v{qkuwFQkQ zfBiS`a92?AQBy=>0if<34f{ATFMPZt_wMtS+>&r94JDcYn2;KlLH~+XAjYqtdH|wn zO%dXKk*u4fC*`!n(}DGAn4|*6S2N20Z?uZSrr>8Fv8^f|Uo=Oi`RVD#=!+;8m&e*H zA_^5x^hgxUzs?s|UlCgIR^rWwy^3L~v;|kX*?W4<%=j0sh4aFIFJ?f2{g_FH6?Dgv z`kzl~)%@)2FQuRH$uM9L3w%I)W83A;9RnvHUC2)@(LaD4cg= z0399<3hnfIUGnlLnY;0%G$+%eW5DQMo1N}00o*% zJ)kLj)j6K4bUS|avm37K|DvO@7=j@UKM|otqJv(@EJqy#tQJ4Bc>i9g6@)CGJJ(Y@ zs9MxJw!ABFw6!Ga5qX5rsaBG!iEJl>ZTEc4JG#4H`vv61&A6C{fQL(aD~O?7n3^Di zF=&LsXYL+Gu6Pv`Mep@K^ApKtQHZFAE`@#-sKkRGgy>boW+a~Y>3Caa`PpjX>ct_* z+kO^aNZf;mKZ~;U)8T6VeyC1bO zVhFNsZJ%qW7(TX@XX@Ik%D2<@_`@GzZ0N4vWAXYgUzlkXW5D`L*LGJi6?!I$iuUb- zpJLAt^E|JU{og0a=kR=A_Hq8Z*={zEElx+++^61Lwl;p7&Gfz_wD9_zXaC>zd<{D@ zZAC;;i^YD~!YG{z5`aLT!FwYZ1R-U^{S<~}+Nb=9j7ev&XEvs))r zMGC6?yHjw7hwUm*%=lhQrz3>$wLf zQyA{=Wr;-m8)EPuf7j)al~|wuIb!~UE*htWZi;<|E-f0i#`t~Jo-Z$>in_bpdt}K? zU$;so$C%FW8qtuqdg9n!-gM*^JkWw7P>|W086Gpmcfu_CFZv)oju+~MA6aNqj z&indX^On4R>~)OBvFbCQ6W*8s(f`-|J_pPDDPQrcwmxRE5ehhHL8B3+Fp`hpiBNL! zS_NdJP%2A2H6)Dib}%Tgl1Pdg#RkXu{#Cx%JQB`%{f8g+yxOfn`ZPL!E2-rFYcu+u z7vla8naK9f<9)A>`#gskr}A)LyHB(+$MKoUu&Uk_`BM*azzHOqALaMa}uz4Z#j<~ipWg;2lE_M zd9nGoECel_pHQ`z|7&@y5#&|xL>yVQW#;(j;Jj||1XOHLLIv*$#D6o~g4KNZh1peZ zHTaZqTb5N(d!0&ahCGLN=~itJ!b8UF%wP9mL(77IX@@ru5RNCIq6WHlw<9)`mFO@FTB>H)LmEJ?FQ9B~Vb8}2#lXQ6} z_p6sauxn;u83S8zjX$*#HzzZ(^3zI$F=?BI32l%gg>ZYpG>HdN<1Ai##hvBgXn%V{>`@JdXYeKpG=6=Ew973MU8 zNe1Ezt04o*lyyS*?P|r3os&;1*fYb7p|s?BsFxSTf6JeM@H3*L6&K3>N3_9^t2a$W z6(EQ=5(&a^cf>A-&Vqd3-m;cH5t%0!r!YSu7faPL4wb>tTqZu#on|;Ub=B@LWB2qa zgR$V7|Iy$29f_>>+#Ig+B01+<;r%GSwcDL$>JAMOp{wmo5q-8UB#Y84%jEoz)+mQA z0dT3E-hMC>C$A*b7#XlQyP3%9Zy?f}6yr9RSbC;>COBLJdW}K402ku zD3gq@j92z64=O{$%qT(>NCI#P!Xu)&E;+XyNII^QYW~6t)3D@5t_B0pV_nkuEKGADpGBAcRPh%T-PZqc;3=Tf^tyZxN0HoYn^q$uv9ICU&I8!U<953LuF1hk99skAfvC;YM7=E(U6ld`xiF6+aA=x&=ZbTo`|4s_>_VkW_g}C*Wsp+JrGT>b&3FZfKNCf-(%j* zo{aOgTQ7UQ${LTPJcrNbaxtF@og!i8zH=AcdS4`a6#ESG>Q#(=ow+z1K_NqUgdS&z zR+L1j`fx3I)QC0`B~wXDqUJQ<848MI)u<(PBJ>JEFo#LZ% zZjWz$Iq>cM&eqdwBd_2{HD4$BxbJ~pwrJnQ6Gz%EDl&k()DU`d1cB%w&iorsE!HGD zgikp0)znB(vjNl*5ulBGI(uaM_KcJ$WHAmp1E`z(XYpJLy`Sil$3T_YJh$IhBAOT# zV9k6(=XiX+c|y``nUhdH@}|>U{9V^qh$UPbQe$08|EW#G2XkyiYW2m(X0-XLJ$dmn3s69^1e{K|PM4CD)`+Z?RZX?&yi{n0afnPn`X>zY8o zFcAgIcjHc{f8t6dY?Afx>zMhg);)G=cCgz@zX-lVb*J~;@K)c39zF`uO0GR8XH2@! zEO(Opu9mmLAay_le>8Fk8f~wL@&mkX149Lu3Iz+_8U$?N`-kev-P*mvoiuiEe>DvG zn83omX`hYajER8-j`<#LJ(t{cTwfo|(e(zf_?}NekZ9dqBi!Df8F8{Or(;UbSd@Iy zAF7xZJ8cFrPdn0FIH#3y7@h-Ndwzcx7|O6`+-=?@i^!@b`jk%Y)fM=Sdr`fPcOCBsgT8(J*x&g69d1Uj~k>0 z19{G&?VZSiV7a~%1|*no$VdOnr)=)AKK+}7ZA9#uh#-PNJm%w+ZeYX?*S14Dcl+Oc zPnWFT`>t&*ef^p@eqZitb+aMKo{C6`hr-pulzGi4A7^mq?N`je5&?DUq%=7h45>m>-$fJ; zA;KDZEpX;d&940Bb@=Sc-t<-r=dVEx@*tI^%0;_AW`|SX|50*T$A?~jb`BX1H^?X- z20(#P$M-Bdli~bKC?!${3sP=ByazJQIj{TQ{r%#>B>3j=9mA+Ufy#er>1Sm^vqxbZ zv(*BpIWnCMnBO~}+4dqr$@MZsqMV2^d!#^9DORa zp40Z_Hv_z9sx@4{5-YudtCNb5{!o!DCkf;uXvn}Yyy64=^*?vN=Jq>tQ)jvT9xq$3 z=s7x?y|2K-?zo@Bdxx`BQ(}}(dsKfV-Vn!ff%mK!uX@zREMdr!1KXaAk8^|Iu)$9) zlP2x`-13X5_AfV1wmZ-EX~E;ETg)+mN2|Y!ibWXxJ(eN9)w2vyKv8C!_O2CEjNZF> zj1l4`5&!L#oqAqUSENZP=qYqHL>@XG^XBi&=ZkX)+S`xeW_xEh{GL4Vj4~ycjxQ<{~~g_Ga{68Q_?AiyM9>W0M9mkF9H`q<(Lte-pXuKE7qi zLh*pF0v`B_533^K=y!e}ul>JexHO&r`KWFgr<>PwT_0b(cEa=)6}HOuSiK9=vKr>p zP|`>f3L=9TIRZ}3V$D}SZ=+$DbRJYzNHn0xg$8QAL$p*Meyy3tGI%g81fa~I&@eX3 z3_<olyPC1hi89nP^Q`fx{5A>D2huM7H`J=A)#;mI!Yow=QV=3 zSpy?W0O{JqvKgfbMhF;d7idK^CdfJ}MQ823y-{d{2?P*KilGw@^IOBq)#5Dd=ep{+ z3Wye14qKIkgE{`Xpp_M8dk=jfL%HB=d> z7ffO}rX~(V2&!X+_3509FVGmkkP1-EWOH7uopy{Qj4Y|y=A!T}@qNpw00|Ho@>vC3 zraj5$WG)+#OaF6Wwje7KD3eL7f%VRYm1|N)i9nEVQqepXmE%V69wBq^w*N>VHe;l;$mF@;iw@iJoIRb{n^w<=&qI!v%sW=%|(V9NCQWq_zf z%*`^mni{ybBy6 zpk$!|5JX8VLjw{FQ-TC_l$bj-i>5{xVuKMlyS|D~IH!Yx={kT!0$KDK>p{#S3<`EA zb}YnGCXsYNk|BGt-!=9hhG4`II~XyxMY!gC>v$BPD3SpFB7B7Nlx{pnfBNjul2IWu zv&rMaHzt&n#1Rk)6$F>)vJfD#gyTa&!GpA5?kDw=7(d0P#v3?^0vL*!LM7RbTaT_l zka-(V1Vf@7hTMk+284(&6dDO3CQMJ^Ki@owjTl^Ew?-xu$Vx3|6*Bf%#%O&bhYo32 z@H5kl^D7)!TZ~I_g%rYSd|dlp`sbk*l298$D1YD~p$oD_z5bkMC`6!zEEzT*-!#Zf z#KL8&{`+#uz|9`}Goy3P#TA9Qzp19{=z&v0V=txuo>CdP+G-}3EULo-V%QE;sEGuS zh(*FoLl7Mxi;m zCx6Ib(Y0yk6}spC`Gik)uG4Lz+R5BSnKM>-rd^6rBFo58Qb52`q%rd8qZ0-o5@drH zE`otUL5s4aMLA3aOw1YOB?oetz%fKf7bLt&f@UoyFj3#->asJAB@rIa!imxnkh3xWZxvOEZ-x3MB?k&0)|`6+5!3G5fLtC!6$juM1YIM2Xt71Sh;e}!;y=TGC*9h zW*jo1j9JG>WaQr-p5I1{ct`zaIwJ;^JZBCG{^MhR4A6jipb-qfgpv$PG{!Cv@$MOe zEe-yB^A%y1Rm{r}!;?g1afoE$6++yxk}Sqnt=$t34X{&pRAiVC0VhEt0LRHA+&XlG zlo93lO%m|Ps$uz6W1@!Dj*MlsW_oTIxNn^Gn3^-TsI3+iD|Bj829_9eN2R#Nc&yEo z%HPIrY|j*|5e6(6F#*ta3`@H}IRH$Upzw@l<o8C`7ZCO$JH;85IXGV+Lga@o^ZY zF#x%ND>APgAnZD!Gjkpl3`IyB{7Vt zl*5gSfyq!&R_MjikYSeDp_pcQTr#DYrg*V)&mnMDvZTW@W-XP4K(U2r+mTEHlGi5S zGD?d_1#y6FDq_;yU@IzN0l8(1kyv3RGP2u*P{75_nP9Ul?8%jwag_wANobTPV?1Mb zWppNU{TWOeEZPD-Vs=QtxFThML^~!*5I?%fk+eeyl?_I^Z7x_aMH3n^4D-(sludUN zLTF*0%`-F1z&4qQEy=}2qE&5iW-@Ry4N8+D*3%9Zm~n)0gDY^9##oaEF_Dpw<%;2= z!AfDqBvTGj<1Ddhi(wJDQw*3zSYqQ6%_W~pl`_uZFw9iN!r>IS(UmeXWUO*(%rirS zEI3?|LzNW(h++e>3>WpVMT{LG7AQ&3i@OL#&<@RXv2pk$NQNL!)4-j=1_c<+f@ct9 zotVQ~sY4_TVJ#h8v5YxmJNfv?GIC4`lComvn2uK%#l{U8ncR%iK3$UMMT?tL2Za&#s_1K0 zoRj~x|1Iz!0uAHIuyDfb-(R3s6>Jc`6||XpRqUu%qG+_*hB!_W(wZIR9P%l#Vmz*Q z>1wm6->I-3&c$BuPL#5KD#G1|Shzp{4Cm74-nrW&_x-$fdN1}b`1j-3{BxLcTuqV9d%iEYSab>S(R3k~8saeB zr}n*bu=Kx6vvCd2{OLXd2boXtVV;>*&I;D_!=bcxpA~?B+Yd@Xjs96~cnC!APK0@Q zZyx!CH&%i@9q9W{ugvkC)jDnWUU-e!yV2v{I?t)%-NDG|uwY`&tGlRgyWU^&qZzIw zuke{))-tnoNVNPOyW+?Aqtv&#A`r%PcNe zq--){p;JTI#Ie!qdP=pNQz<_vXJ``OK<}Czq!0j`D!?%ft%=#+t3h1pbYETtALPMx z3p24?k$BTzkl?fs0EYkK9c-}#KmaO+lz*T6>+xXEbSF)SbG1);V-v(;Q}pl!=Ep); zS5;QX7E(Z!f(o*tQEzG?jBvaj+1PobDO>h4Vt8%JK@+A#49?pv3}gyF;P7!grVABN zMIvaY0o%x`D58XzU`WCTGxmGubH88i$k;`Mc=L-6;UYb9AI_xS=5N``+r%aX8M%B{3m_S-4%FussGBZ7Z3SrzwZJ$bl)%2 zb?(=9FmS!6W}3m}ii6-=bGkaO9`P2Y=n%Z`?z5F4JbCckOlcPXvb!eGKePuGCA4td z*yCp)>3)QPDaz|ZXq^84`j>pHeoaPw{R&>zR8Ei}J;WrPQF&R#*+G+W1iMumFk~T| z`BOU!7qlCxc&=XetuM59wOtG(ATS~3A$7o0Zpc|&Sw<%SCyl?s22?oGf45m+KQPor zaoyAK+T;Nl=v?W39ByeL*V7stdaZ5CXj@$g?tc!`4iav&(}3A$qUYQ{RPmB}N8G2_ zZoNOs__wa*f(|q-CW37X*nbZ1N2m5Rl-ajgpD*w98f$r; z^9DN$T0Z-WZ*^+A73S-VLr26&!}ja#{7wSoC6x+c;>N}3%`(PCsa8cM4N`^M>$x$rTYpB*E3KL5_}VaNVYZrftoSaS_fOCU-eIR!!FT9UB6N4n zzJU$<(`P{QkM%Ncwm%CWzqL-?`QNd*F}Zi`XIIyH-?RH2udM2P-sZP&sTnt-1Uzh< zUfHSaHRHW!*=-umW`)DPq_-@;u$Qx!OB1O;OwTp*{oY<@J=dJvL#pFz;w&@lZ)uM{ zYUuTT-=^vJrm~8~Vyo0T%lBWcf@V#{sBvj$D$(jG^b-V&GHNDz*8+36*dc_BVIHN% zDrvSmbTqiMnKKA@l!ZkIq*fp)0brrPwNJQrI5jC@uH^XLx*4WbqKm7ZHgdVQQv|@_ z8k$&R5Ue|sgZ&)6Kclz9?mwSCV0vxe`*yi+TABrSPkvGz%M+rc>$}rw{fyR>YGU*Q zk}w3PL&cn}nKkds%qnkujV*YYZ z$TjXrohaC%Jhb?j@%XxF)N=C2VE0ZRVez+E`^@Y89mj=$$XLNuhXs`0rJf?_#XBee zJWgga6<*(41`*&}7ycHUdsPvUJGN01i)cG`s_{~q&uE_y>ihf~y&nftRm_ZBuM-z4 zSIo7DuJY6U2x-AkL5hqKk8S+e`fRVR)btoKPS4!q|E$X^xnj;jWU*C6RXlsV#kQMI zsazCA=`ZLoz@xgepN=LdaT&+p-zJ&Cd{b2wQ1Y)Q79;j_x}Q=1_A-w5hgWR{Jih}( zz`Kt`}lMl-%M{M_wGdA>fU`cqI)MG;Z)HlnDD5C6KKKkjljM(GzeuZn6ScPV|sALHl$3uo+p zN4Vu7k2Qk$hSEa)S!TWsCxuJ%C>kic&qTpLFZ{|22#?rFOg`&};Y{&j;@AEW)l?gH zOn!}?%kI|QWLb4LO8>^MXTnqhV-Os*temsW-X!AvY@kBOzytu9hqJhx+e)2b+pQc9N zrT++?@96ODl0gDSdaKqz59IRuU0nX7&eKoLwV(Lqb{N>sqdenSC~%U-bJNW~3CTWl zwqxl2y~-VH&w8IT{aBMg?-Tq}+Wq$L=??=i*Js@8P+!0KR|&sogq@#hbs3?Cgz%o% zd%N$l^3PYxrn5KfJpR=@NSwY~_rhoo(yB@s7!6SU#s{&RbhQJ)4>WjH>hQ%WtQ$h@u{`LmbJLkwX;7f$IpAKn|1z%KKAeJ%D0buE z%ge@V-=*VRX`}B5!-F ze7#REfY7H)=Di-j*LiL>o)=rKfL17c3*ER}tx?oUF^H=+d3C<8MGFaYb*#g2bf@sh{pTO5A zhcvu?C;9iWC;rW^0WjC}n8tFKAueKbZ~Rx^so)+xK^AxwVMp`-3@b{+1SxXL75V@X z!oPuO~W!Q}lPd!W`eEs+u?&+uRmed7C_6Zc=KcPTg^$u(#V z?2b$F9k)uI3R+j%RFNL2g)0Ib2i6!k|8S{pzAoG2jrHJv_`gc)C$4-b*%}W*P_0Cm zWgr|P1RUEpq53`yiCN-ZrXmgZgg6Q-htua^@Zy5V!ytNGx~sGT9KNgldsj_yl-NiH zL7WvkSxD9(699(yixR`Vu#Us3KQgtxsrmW;TpbFeuo(vAvXG3q2MmGJh;{fM@atlJ+T1?A!(l2ww2DAN(L4jr6+`LQ-JycLQ$DnGw($P4 zk{)n_!Pq(?jG#rW)Sfa&JQioES6S;v2hO;fuII%lPbXI*&7>I-d_VEQI?`lYi!$yF zL_L+{JPpfdr_N0DP(Nl+xufw!uh1s4gK&^dUQg|yFO>34lk6YhSaXZE$WJqOlq zJYPwtbvbG*MeV*mBci z4wDpPxwVW`X5k8h$Fx*c6^uoQi}0<8F+osN<5IrL)KO;b3TXe2?d9G%p{O+?h{cBb z+zD+{aLUI8f-?!Im^!@cvgH(tVq3iF@q;E+vV}@E++d{OdOMrovtJiN@NN}H2q_gw zP3@J3LvnDs6aE)Ged27o9|KabaLG{nhlrSB<@GkM#SEGF`ASSu>!)6rO_w}UiniwB z3lYUSX9GDdMh)gU34{I&E@EvsiKimFbjaS>Qy~hT@uI~|l;GlwL=}o|{;HS|=p97* zn`T1FSu3w)!!31p_bIUO5biRS(`7bkM8zq$O2uNV>FsuDM~AqkB94?>nqd^cIW$3v zqB&Bo{@B40&Dq5`tz#z+@EqKfL{>kiYN`plWrpD>sHV*;9rLc5jzXGJ6jUAkxl_@m zjHu0fL^u|zh>ld15m+zfr58IU+KG-1RbVSFd=Ox^6xHD6Dzsk<1CkfjyslBSld!p zfYcWhv>)_?GT#6;l{4$PAx9BEG}n^dGOyu!i?ge4DBJH$hjJZA*C^?gV{o!3DyN|c^& zeID~K`(;2d+muNB55xCe)l!F|M8_E;;|$MxKeHJD`)i?P0m2{$_$dSgLG{e|=_8 z7w6*)h$@{eF7UP3rA0wcE9aoq-IJ#Gzus_j0@(s2I9KJWGNRkn}$ zOL<4~c0PYgrd;d7i*KIW#!yh}O@sb&=%1ubsN`KHKMZ|C!|f&#|$I*?TK4E92U*;#wYq zs}ERd<{#k>ZIhe)_nSV1T?cpN%?;_vps;P5Iwp2 zv__fTU3&yc7f6Rk#zJfUq)?_6+&+Z9T~pr_zBVcx3oC1We5rkx+Wp7e{r@vPe}&j{ zyC?KNXZyD~PvqQnCqvoyA5Y@75raLItm9h|f`Y6TMHVV3F^oj>K4!xoVK|jhvR=IQJ$`@k;mZtJo-Q0`P~`t zy=JfMvteNoPR^8AiYly8dKSe&L*^mn(*h|FQYjV;QBhP;cOEL@C@P4kEb^tvF?yuN z6Wug@`cy@ah4o)gk@xwZ$&2#zV;awr@jn^6kCW2(`JTM}$}xOZL5Tc!VneejD{{}|9dB{nU|y9=}*?XAu~33 zu}>EY#BZhbBQKs;VYc@+t<9xtEGJdrrWd6JC)R`I*DPOmhkTb8Ad^Pw3P0I9()v zPOo(lUwyBH)cPM=sdk~;amm5Hi$%cT;XO!2O>X|c_+I#k+LOt57Y2d<_Rr?^WZTnv z_=%THQgf89%q(=7hlfq<(>bCss#bj_WMGH>+EK7rA)w*M5XpOsYsBr~f>SQPUS zJR7@3!TaKsn$SSI>6LFcN$JIPMLBCi-*`@nX>!{cTjU;CF+NN}f52w5q1Mr>=9_ z{k9^k&VnDsW6Ih6uAkul58wFhlkR(cKUd>}#eSYxk}DMZUZ)W1vW190YQmy}2Mr#g zhl2AmC^3qXYq_$Srkp~GC@P5J%7%=0m@4H(P@~l*F&cgSrWhM+Dj0%WYp#`33h>+} zrdV=v!>Y>6B)MQ=lIWOUAv#2$g2Yf4Uzq$K@yqM$@^|AG@@VzE+woR_nsNEbqA_E!%IG?O z?Z%1IIz&~6inM#gQKaFrPK2xpRUir*d z>}f%YsjPjKHy*1z8=rr5a-xg%jq&>5P44{mjS=bkTY*=Zsjb*$nv6u_4OLV@dbU*X znNb<_+rP!V*nLM|{2uEciJ#lLu6$o7jJ)a8;P=_%AH%=g?vWJSeZ9ho&9u;z@{jv9 zX_R;gzfHY-<{SH03$xph;)v%|{Jv-NxX9`)`7Xi`-0eyB2s0kur)X_9i?o%tYeOae zhC`4*Vj%bYYcKOzAlnR<-mF_e33QNgM5^(q6(@o@x-Ul`8QZ215}P=b`yTcig}I8m7CquTlF> z#%qU&S~|TPd`AfRmicyZ_Dy=)ktc&4)jZUM;#0RzN2bpaE*X&d3NlCbbtIN41uE2) zc*;llexl6;44^Bmh9?^W|3XhFx`kfC;(&fp~XVo-kooK{SpYXLvq(l)_MW5-l z4R-4=+r==l-<*|-p!&NnlItn;8DHJ-IUR;mJk$I4Sz+DWVy4&e;|cH5zYlfC#4_|& zk6%j=MQ597=qXkpimHOBZ_whi4)N_;oScn}Q4kZBZeZ6(gYhP_R#2D|ss|U1n zmsmaSvsPVSnd>)kO5gJ_*s}5dPeyuzoO>$~X2w{;vHK4TkLG@_tJK_V-v>`C$>0Az z(f#gs#4LmkxV|1L`cF&F==ZCqqkkVMT5cE9CkSv$@1iJo_o#EjOnTv!*@z#!M7)6v zP2!NyNfKaBy5kLQnl+36J6|71D-UgwfVg@NZvoM0U<8~`8Q&qhRp6#2KM&1bvJlB5KkXlvGP`m^ zFK8sdBS0(G;#d+`0$nX>g2(ofUsK)`fR+pG_nsE|b_b}kzu!v7)~PKrMKE3J@0i4i zE_6MpMWP^`kX+50R?PpB$h2%B&49`wz~##~}Y#^qPQgQa9E?U*)Pt z{ZeRqYdORBRLy!$9*L@qR*5kuh1XFY!CD^+z*RHM@yfv`rE2sWFi1XK)Szk3rUQr2g=);=He;Q-|YA6Dh;q+;Jpt!{;&qL zmMUR)h_B}VQMGtJfrG3UQa`51ur1MXf3eA5yR4;Cg&$(fGf&q_kJFU0&-DLNb3H2F z)5krwB<4K{XHRqMwI>o?&X!N)ONX`iMZ>~Der8)dhjs!}v^a$aGCexfZO2|QNquci z2N5cU2<`gLeaI`%haZ2@sv;GXQXf|zeztI2av^7RW&JnTP4ud znKmM+jYful!9+nY1jCt8Wv)W%EyaV68pH!vrD@!P>JSqk7H-m{7DW*e1XNNginAm| zQDYZ!+%{EhZ0OVNUq0l+d&jWCDk-wjiYypA6sjreEfx45KV#YXe-o|7;P+le=Laie zP*8wh#wx{We4E+M_9Ldc6S|y;ysVsH9eJoShy)1$hX{)=287=A`h65%;(vvhd2|ZF zf1lOUu*;+AcCnm#uVGJpmrMHncGr2Cr_a)&4B#gB68mdK;WSf{)#&Ug^{rJI8ROb_ z&Gt!BdjC(2mn8-K>s8uT_BcMT5Doz#jyj2Ee*68lB_omZJjWU4BPfhSTRg$VFV|jf zdyLI{HL+0F>AYVTYdN6dQlcWo1r%AiYu@+X2J<~18k%^#4>OiY-=$IyF2Q>Jy+awh z-s*7tO+HK2TN31S!_p4~kX!j)mG zGQ3go=%c#5eo;Lhzm&t)iT6uc$L4h7`4{cGx4@G68=aA z{0^5dHKRgt?JX~4*hgEqzA@Q;da(4I8(!0QCB= zI1QWU$03dVD;ML^h${R0RXpzpEKS>*pq=Fpg^E5^K9w-3^|#PC6QDU>;~5GH!5+Gr zxWCVCMb;RdKzw=~;68(RzazKFeU%k4qyj+%*YlgpbU+{xR72RFw$IOUN38a=#Q7hU z$l_(0KlNc%Ua=@K>VKyggZ`A%#{;doDDO|*_g?!@_BZN0&y(ajKDwHZ(l7GgWb@uu z@3)+7*DW!3D$~!@*WK_nqgg$EURm&r5Fmg_Aecbz?fe@-&GR^$diG?;$XV3l=H6?v zhow)eOwklo7^B=J536XfddpA!bo9WibxTuARgcL__#5nDQ52qW2HQ&c8eMLAgIO=x z-IqfiuJiHBa3?Lh{>qr_>EI_#l&9P!2U67G-BOSQL;yfU?dc$jMqN3L?2l~HDo62K zh(AxhOU3-Wpedi*pj|k%bN2O_Bi-b9b*v8f#q^Z-eYa%|RyGk>-#>pZ8&HJ*AKtHT zgxKH@0y8AFZn?2CW;_OfBd0K{N%);N1-esB2n%P9U^*@`*>@W*Vw_W$hvuJy?Yfre zW8|<6@rW!U9KH;ZuL&denag!z5YKt(dfXWY01XI!g9f;t0YvIYGqnVZQ|Hk5J8>X4(T6q4!((?HiHpWXuoOgcnTrdJ zp;CFIU~EF*$svgh46={OS|ZK=H_1RSU{WkwHL;EJhUegY&U)kJa0Pk%uc&PJJKa-2 zRxzKVIUMDYOo=3z~isvw$dDblums&Z3Z zsgpfzy}DEs!&kaWoEmz!aGiTQHfUqW-euPG_gj0djlESoH(Z~GWkaWZYcUwA4`KhD z7z9!My{t|a-tPv4ZLZ_?aASvO4;4O*HgUsG=gaAwOzA-rt!oujowLGWi10GAg6=ao zUYjf{=~+ZZCr9MCJ$I}8ozF|mRZu!xEZaPIf&AEz6c`pLQTqrTo?0ga2U}!S+V|Si2kzBl>3+t{(d|SWFKkeBQhWSQ(=M;Y{T{ET z>N*2?_&pD={2cvvLG*FiI1z#>JGQ5Ht4w}teO(UIMLSIF;8LtbS*h$ELyuFK6%pS5 zUr*J3H%@wB{zeJ>L~#TQX9sv)CXMF9*lXL4cDel=LTE_v{+KWdI5#*e zJ&7m{H0Fkj>Sk~@7h_(;2m&Gl@DS^ISBHQXS&~0|U)?Y|x&D#*TZAbksXx_8`oT@L|m#ewh8%0$f6ZPnG-WYvN`K8UT+t zd4KojF`D%{T2Qes4(RpPz5gOYXZ`DzjU%JWwb#JAbb)9U21S~=VHwHv5bj1M=3eTh>ayMaF$n$Lmn&1gpB0>9LcINlLnlVAko)m zs$u>#v!0fs6g8;x(rV{9SwfUc*4_$1pz&$Y)HKWdvD+ienmL)VgXX zM1ho=PegSh(=LqZj95;I7||*k63(2drja@nf!=ZX-`42VIin4i2-TZ!2I~Lf-OqtL zKkG~h1fBV$<9{fQEy%PD6e#^8Rc-d^gbfKeNshCJjoKYrXCF;rN#Xd~ZMh)&YE@zL z?GRkN<-$muB>z??dxMymR5rKPd^h`ZqCUrU$jHfKwP-8_L0HB2qhFg#_^iEq(&8Tv z1gevlYKVGjSc&nP&pTy54wh;)h*+j9DI-Q#a1tlum?`|^n+JcVMeZqOu{M^9^m z3>d7?E7Wz;XQ^d|0T7H4|d&FWu6j8@g2yIabAIm-k*r8Af%2U6-uuGCkXnyd=2z_Y?0N z(qV!sqV8>03U94e3V028HeJ;UXr#l4A~X0~(^8DvZu-ii{XLVo94pGSJ=YJHk8IS> z<|p1J7EVQ@81)~QanWAA!>?(TwW#k~sKfWOrc;G)n!O5rG8`<$tVSc9u=u;oVKld6 zR^z9&TX<+?k+A)vp#yFGCrXHTRL<{E!f=nx<=$3#ihJr+ zRv_`N(jEX^%y9Rk++4&#~UK_<&+c=MLqVKU{%u89)Z88 z-KLKc%I{uAC@LzjR8?P?&o`^w=almFs;VzhN`imYy5m=l-}PFHeB)Z7*b?#b z`V17&&MZB!+vq%=8=JPqCwvP+piY<<+xxlq$2!5=`^&FU%su!qUDR*7m@GiF=yt|{ zSX11^;{M~%^cv~i?M^%C`)qOdi|#C_DEL;PG_qBxxyP(eFVJT<`5X359#eepvXZ1# zJH$6Q;NZR|$72e^a_cz#p63P^VH=^qC~bRt(BvK4iLBpb*t2E7`?Xb3iV7%>x>Zv) zs&3gpRQB5(Y>b|DsHmbbSjedBo$1cR?UUu>@c7)FPTyK;0xB_rb*+K)%KKLWuuwIG zI&{XhZ!3A01{x9-1yXNPyrehIcYT6ynUJb7DK`nFC!Anp$f`w<%9P5K5r^C$ZZe|7 zet+eH7s@6dB*9bhr@h=n+B{!M9z}Hys=)g{2)Vb5da@0CzK0+6zl&X29I0pID%Oa~ z#ulNQ|N5Gd)ZP9?dw-Rl-Y>-e-s6q9(S>J7ietRFDvBZ}$z?$k>a9jkB=|qszc$vNB=eUW~(xQs(TJ^Nq#@C6y6E_a`O;%{3Q`i39 z{{~6*4HC79Gk?FO(Sk6;O6bpKtCu)+g*EbZKea@`2 zH9a@b@_z#?{dd6rJzhuqeEr;Rh3xFmo+0V;r7_m`Tp=?!)5PGC6K~+?I z@_)kxMEe^>V_Df_!o)QkBD|YpKAozu`K{yjG(6T{U4n`ooA)>hpsN*CV)Z{S*tLGO4u=Z%YbxuH z;>fAEq;osP?8wnQ-g9x^1T~JsC?oEUi|74hfm_l9S*->CUZ{$))?Jv07ydcyC&z4q+yJR zNDx|1?nzBX7l@y4j|&x^*^;Mb@_#<$D?D|}5U9HJ{wzwwVlsZi`3%RpvQhP|7@(qy zA}GXU?UIU&MfELKC>zUq8((`uf~&IDEFDT~ygmIn8ZWA9FLckWaOk($+gNnzjc}GSH@%4 zWMp-X^OUKJ#>E$`e2yuBfh5tzLT-U1YNSZ+NqN|?a;~U-KPfB6i`ij+_*)@4;U7GMGE#-s|5X>Oc?xk zON3YMnyx%X=M!+5yt_xPycFH=X1|+MY|pg zcA=8WCqUPv(GHe|N4c&sksh@zZOzZ%qaug17@h9S@Nc(Y!`I9AJnrW%FCX6i_2fTIXox8n zTeI@r-;U0B%``?TF%d)))wO~vHCSr6=RW5Zh%8cQL4cG)e{Mcj{cK8v;AxTw69iRZ zJnw&ho8wq)kISko@DMr|R&(r)|lL?_cl-J!o#o-G=FT+U4JwSMGeZ zhzd!84aV({UYX*AGGsvVlf_2qAiGgIFuI1JAcY`1Zl{CP^uLAB0sV}-=tvu-^xNjl zA&^(w`8*|gXfo}z1=o!q6X&_kJQ;{ueb0&jR@~H|hZbJ|TMQx23!t^6ap}8)4 zLm8;lXf%`fA(h94XXOV1Q<6BWyYhKF+#H_QC&xo+z%qez3oRA=Yi*q_0repH;HC=n zb&1q3MQRkYo^7nij4rpNbPmTls7qX&`96WJy;ukR-Mx|l@vG>O!Z^h(`lAE3hE3Aq z)I}a<{x49+gR<>kAm?mMe|O?WuT%cVHTrX-A(9O|Ga5N%OwTd>YgYfGsb(crLxJ67 zN=SJ{u%7{MwfGVO*P!lz;rJ0Rfk<#6Kb!Ckd1h8rhAk9u^`M~?I`DyAK~Xw+89z^u zj?vXU0RcgNX7Sk3$(a*``3eIxLy0L5h`;jJI z@P=j(ZZQtZobsH3T~gv3P5~N#?TjEUoF;=K6@J{naE8`PT8P`t_j$R}qSQT#YR3`| zFvct)I)Xq&T|p!puNv0(X?7`Pnn~efz##h6+tO^qPxV?8(6ZH#j*vuoFEf5x+Aq=? zZvr?MZ$%&9JrI4K5s#sf%CDW!H!*zfo`Y_>bG*XX1rgA!XX5NZeQO&rAkRy$M35CG z03c>o)52|2MJ1aWx$b+W++3W=aO>u&;=S>Bo8?o`it$JQVnP78ffS+;>>*5ayL1ll z%sfbnF$x<0>{{Fq=2hX}m2}$_2sR+p zBNBcje&>gmM|rx{tax6y$BMKc{G_4UvlB}o03^ObhzR2DZWTaVL0D&M0E1s8N|zOZnks7q0QtZaF|PIe?ZgDJVZDe7}52Dz?aYIdi`8b*P2-cj7a6<

p3Dn8F-;HdP`+GP@qFOoPW&a}@5Ky)OsF0qs`F zl=9d%j%qe=F}O~}kvDZVswP;oGlw{!{HI6KvBU)}s({~yL-j1o(M*||h{zQ+!*`9# z(6qlQ{fb35?9pQ0;1byuD^nIavfCR1TRR$vvd(0#QW7>%8_!1HL$X=}j;N=IpUz2C zwjBxxW+fJ9Ow^Q{sSMMy1CeJQ(^FxnBbKuzI~4+l5^2jJ)=3M1r2tn0h}69NM)4Nj z+%1EY6I{VIA5U4lxR#LGRJ$5Th}~)RvtDGeRi!5k-;%--w-Vo*6&A`g2XR+HnD&G? zUjkdF$r?q=$S zl6>hm@mn<(BH4qeRDrf(_aJ4-qqylBMRa)hYWg8{6csLFxv^Kl-EAX-74RDj38;%^25fDZ363~Bb zLLp8i$Csm})4$7=FcZ-U(ROw&c6eqJ05+Z2W$fScU8j48WvXer@o(y{?s~9Pn#mLs z3&X-u07tHq^Pyd3Mb8@sHDm`YY}-i^HxPxXqusTeUsuNr8G09u>dA3#Wg!#C!Z==k zG~nylJC3n+xdi(QrV_0?mIbz}th%;a*Kp=+HnU<8?>X0ZKK^2?^-b06a5imW1egz< z{B^RCBe3cYrFKVKv&QPx0eU1=Q6Fn#Q$2+!v>i~FXQzr$*xiidS5z2W)igNkfv0Ck z{K)nd35u+#;ouuerMSl~wj~){T>%JFtA3h+`G-e9Rn{1}K^G1ZGtwF#(czC2gNAU` znyY||tuY*kaJmrJbTU_t2M7!vCOh;}O)HAY;hT-{M_VCe-SnB#4mGhE;Qr`%3DsIa zsb(s7LS1ZiZD>pbQaTKnxz4a7v%@LKMPe!z@Uvzmyo)NkmX=O1ei>YeY-vY&C60ke z7o~Rx6=kuIAzL6vzZm7D>)Irk2z3^YdH9qY|AzW1YYeu9dg&FGPli9jNS;iiwXszQ zy4}~wM0laSn~6hAn-#U}vgI^8<^%HB`9C zUa}45dE}#@Tj;lXFjy3#w756ij%Y z7-d{JC2j)KD>Q69d(sgql1pk4Iy0u6kJne@BToT);ONdB)BHsero6EWo-j!p#Xy68 zLX?=z1v$ls%dYtE4FU1?)Uukj_>(7hQXclFc0^BGxFiKUSTMY2JU2Z>v-e*gs=))B zZ>C3;?FmCM>n67nBUUu_~W`;`g@8 z>O6~&Whk_1*XSLAQG4ipM{On$7_OjfW9N&_i8m=#D~VWm${LF;64U3KCp1wC#t|Ht z96?OvDp`i(E#lgvhtWiKo4BP~cJ*t6IQ{)}TZuHWUvZR%*2a3+nRY&AiWfh$y^`s}GL2H&aUSs#5bFhYMrjZ5J$l1^Y z(*fYdTYE|hxh>oZv_+k0IfA6oLZ?iInD2xTZE!DHwd?ZF;QK1OSXlTy?l}B*=%5fn z;*`AH)=fsG=+v)&gS zVR+|2O8UJBbF&G*%nZ zm~lWODwhj~L*yLjqGI3MzRm zE6NSwEHn`Rfm9~D;OI&NBz$w=4K`_z(ktYpWH~;sLUj5JHsHFvrvEUMj$3n=vuLb8 zRaTPN(8$Kps#82#2|UPA;w#9z20yEVoYTKO1zg8frxQGGpLI%%1w_8_(E#ymv)Y!n zv`nmBCp_dFj>azmU}Q^8Ozr!0DmJ667NH86BeXP_J~iQABpg{efia)KGTZEmt^{&S z)VuKykpxn-PCj|6Gd54eseso2>fJ+&M)sVxU5FJ2g8Ab6dD>1=hPyKm`v@SqP(=HWcn;Vdqt`ViXnp2HLsNz`9K{lX?? zhLyrXI27e0)}qMdxsQUUUROEhtGwL zMETW6bk*D9xyHp*fE~A}tYI`p=Ng4N)-c*C*AFY$cgOOi>M}`oThs-*9Xs6HG`y8& z8C^20qNYc$nBs#5$8RMp_*yDX&E_~$=5f-n#LqK#Jq%;=hsK_iim3`$X3cvBiY49W z#)SCE(?*kzcC1n?X9q!O?vP8s5mVIBXQjndtzpcV2(?aih*aSLdTa9AaQS7KE2Qrv zY#f{sus`MNna-F(xM;8HBj3&paJBeU;yUAw4x-Z6zb}ER7LnhdPqoffC*oRVi2+p> z5J+1c2`xnIOq6b-M^Uj>oQ;-SFpn-~xCvX{N~0aVFop=1h^ICje|R?&C}JbV`nt6K zJa~8S$s?ny|5~zbIp6z}YSHp)3Y*dIwbg=a$PDMBh2U_?&_!pqYs%JCqX#)z4|t89 zA&#<4l+YY_bfUpO)zm^6d=4;>s#t24;RUl97jME0Z2@aF>!;5k!j00dkRN zU85nZib&^{C43oRNp=A z64w)?G%R)yb|HCBmZGP4R`}wWa2z>x6hKv)Q>qMn-IJ1SHV&*)L3O2_LE?Wm=M%)gd8(PNFzU-W$Cq*H zGq-Sq0x%5Xn5Z>L5RZcopmD?z=ZF=FryCA&Wsd((sQ`!Az8H&_L6L-Y^!R`)ioN`( zbj2SRW~N04rwDp_swd~tKs(e=LwquHvScpBo;lj_pYfcb9!?t)!ktxc8tHUXC+;}T zpzz)!Lx_Or@P`CQ%^DGHp=Fi@mScK0xTy;pXV5K3{Lp}bg!!o1*n;tD(gQLRc*S4b zGIhy9VWoG#ZCyuaad3=zuiEoe#9RtSWgrU0gd1h_xkfp{WHuG}>PBpi<1o`;i^oXmJ!geR9x@JLN(Ivz8&w5DIa%d84{e<%4&ts# zYr+zE`m;~gY-MHRn6dr;5cy-MTOXDjt@EIjAjYXszm?j0Lo5mS*gmovD8a(LUx6|- zL&64AjU=f{Qb;t&xkYhhViqRT1WaCuHavV6A|*Hwk_VrYY*WP!pEc9qlhNd0^4Tzx zGH)^#-=r$q%1=>Y<7tQ=0b-r#2$MzBUjARv>7m;Q zyXl9XqH4JgzZ9Ei_$l4?{TFni8z(Bd(Y&-CF*tgVxD^yNfJqmu#e0(z713eJh#;Ey z6*3#^IXbz=F99*?3p-M)OjzI{Bs#;wC8bOtv&Cv{)EjItx+>cRgI#|ba|Kg2W9hwI zr4GYA;}tC0#uCu@Sv->a*H+~!aY+20O4!dp!dvv_5TX3BC@;OC#CxXew9Qg@#b!T= zc$heC3&H4cUeEKAmen(tr7)zi0;eg5(yV7H<)hB;)yoCVqsMGyw}g@tT$YrDe44Kb zD){4Ru-nS9Bxd<@lw3`^(Fts4qd`7XMhsPihg%~Rl6(S`LsG0uT1{Pc8RXv3;UKJI ze;*l=tY|km4ytF4P^nNMI<9+%POzuJClW*)=cY_>wW47gkC9SJ!yz8RcY&Po(kkzH zt{v6MYYIvrBtw!`5hN&Q0Vczki;o%S99xpF2zq(#dMZ4M3=^e9dr>mADeaQ&f{r3~}W=K#s9+qpy(=CDYLD*N7v%bB(3QD2eXZ1;vVuW*hfYuMF~@ z7Ij@a1ZFE-dUackfcJ4!wQB+pxKKN`>!gaF_pi4y2<6% z-JPqjT{UR7SGh4xUk?_1Wa=4G#FV1mh_u@$ju3VaMXaKd%bW<&ahAejvpr3^$X^$S zC_E*G^va)w(m@MWn_Ea~BXD@6G}}dzd8tG@H2bW(FSLh`Ni&@M&surmrMy;DA{0&@ zGv_XkI9pgrRhNv#IXtPa5}iMq(gBfYP!Txpv4u$6dDEw_@JrY!8FWr7#aw(_^xS_- z>i5>cXMsexyIQjL)R@t|23&|Y>rjEmR`u%bTT-mSA5T&{eR^u-nZZ1phVLzZy-+>Z z*~~h~q$7msn|mR1UN2OawsP=T1wBz%IkNa^?CGqvJyo~Ia`o`GF}W-f>;V{wSK#Md zgB|Md>ab3)Mz<vAT*pBhCA11#$ zb1dElp{|vxT#?EsN!7T>QMk@C+C!lmitLBuDRqpff|DXhsKnQg(!!MRezA;^IX#Nf z-86>_-D?Dcu6oHLQJ2^~3z{^}3=!->b51i28rfxXzB=M>mi7QKDLQW2g zoS1DF$~2u|ahN}_G+TTuPWK8ti$y+{V5s9FnCUvFg7ha_RW;V!tsAEaMsge&Z>sp5 zAx>_ro4v$dO6w7pMt8n>lA;CylS39<*4O5dR4xz*zzKr+YL}nY59m^RFr~uEn zIsuOCEMCf8y+LF&#h(e_q6W?oQEUcxlOK{~`~6~A7S)o}@m;cBhYnOQDGn`=a&uWo zrX)gmP%djesuqKcSJ7ZGyt)|)AZ40jl*;u7rQB+q+;xj~Oo%!{-8 zwfua_`FHoE@RA*$emW;1k0BDixi6w^9r|4^{>ryXqfoVGZB(jwPGCXK&V?a26!Z_tYweU&WN>kPd z2Wq`)rYRsH;h^IrN~{Y*6*6-1Ks5d2e1|d3$A|i<@{cHr`>@k%78KYDF^khu!Hu6F zXW8)axYEi3$5Lp4rxQ`nZ;ZM#nuPXRwtsm2NP9%u0yyuWFy2AM}t zA(LL5M-If!C zr<_)tELUB`rF)S68MQecdyN z(GL8Er=Q>}Pp~pn__!EtA2wmO_?Qj^I*Bv9#ytdTUpFx)VS0tAGbZDy7^Nr;Zh>_C zp(qN0O9)JpwZ~B=+8R+^+%CXPC=F(jvSJ%)gHoTV9yV%}wp;~LPQ^yN2i6t&*&OJ4sW7iXN=UMrp%G(gK^huJ{( zQ2P?%FU~z5slxT=xBm7E9%k0_x_%jPn^p8#>iwj!X3NQ&OF4=9vTcpS5Z&AK|9{>+ zM<_iwd%^qX55+?xc~P8UWW9P`ecEeNp0`3Jzc;9HI||UKt6Js?=Uej_SDJDo1#3~) zUVj0El_<>HV=XY}7vM=OXf)a+F^`qOwjryDfsB3``cncLd-!fbkq>0+K@Mh}gPE6^ z4wh-SIw@#ic5&oCcz)~QRI)DAWmtOF??9!Zs(>^Gnu)@hTs1n>aWq!EjakSN2{rznBJI{b*E%YSVIB{7+IVx=j*kK> z_G($sR{yM5wxmLP6|bK6vK{tAA(~C_$F2lh>~t$*{WwMUW_`#0OcDHszB1TmxBYCq zmecH%B^MNu1amuP`<-T@MMQQgo!6&eKOxLSY$y@VqoY}RUPk(R{#vyt zl|K;q`)Iu*Zn{3E|6<~QNiKVa=4hRrmi%nUON1#44FWWqP`c?&s?^(`qK62ctJU`s z)`?lpk=YYZZ4}c1tUzFA@^}bz)2eqMCx&q9pyDdn#^R{WK(zi_d7wn2R+ll;MG|n1 z$>eu6nn_+od#mB-B&sHftrJlii3TH+IT7?i=p%EgaZjGj4n8$iP1~nclPXFx)eFkP z35zt)%2_IQX)LUPl5X?aK<8peclQ4cD;)S?ys!2_Il|pcv4LJl?5D=^EVa~4z;y94*bL31n{FttjGke$hfb!>f*PvK z?Hm#IV%8Ddi4mftzTsaE{~p>*4L5p;E0t_<3a6XB872s)`FL&qzJSg_gtR*uVZy31 zn_}#XEpOM zA`KqK$(h2_ix8Wz_1qqf8-^!2y=N-B>ir2kSJTtY%kLJLIKrA|G-OQqoaU~vO8j;D za`#F^w)AF;o?^uuJq-P)_a!BNIg^>qH)~E4a#_e&Orynx9T#qfGw5kfvu^qAFgRK1 z-p)F+VCsZ^o7j2n8zRd+zUzQh7inL`CkGV;Mk1{>Jjt3=+7krk%lQZ9Em+?=@y?bQ zYcEq!a|(kDD@}RnP{bm#OcORH0687e$tJSdB|2v`KT=bUT8EoxavuL@-P%h#dB za|TSOrNL>0^b?|x_*4YGZ*bda}5-h1qcD7$Z{LRqSVL6X+25H zQR^Ld5dl2#-JK`en+yozx|OGf2ca*0)=;WY`q+5$>1WraM6i-EBwEBT-BRB=7n&O^ zC2lZh&U(y)t6V$W++-$mXIjmxJYGplaBa(-Oz-&4V`@JlReBU@^_G}SD_&bi(T9xH zDZuo+-GN_(o{r|{cO;R`vP+qOPzQuN$E3R+NT+T|Xl%isWNb;=Z%MJHCl_5_W!KnK z-dvd zy9*KIBRet@#8LGnA{E4nlX=*VCeu@ZMK1aI56m0b(QtrN&r za-s`NhIB0zYlx^GYQ2H6`GK<0Kj{g>w6X2_8T73qR8Dyma^beiKzOyX#WYt{p31V@ zRAe|0-VPBtE?tbA>vSPyj`LH;-*7F_8 z;y`MHo|36Zw{tQOlzc0Sh0Id_Ql3nh2r;q>;`zDNq~7eAJ&3%csx*_hrhr2)XIBxh zxaA&MCPZ_xn6|j=rIaw8XFcSol>*(tQ^G*1+5_^F+0y4@Ztg6(Av|nqCtqmQSIRqN z8dafA)|T~c>$MK;_3snLY%;-I0iFc2tB#i@rLtP6Plgo4!XS|H#OImZI*D@=_@&G4 z(WH}4i@XPo7|?>ksyz0s7(}#6*{Sn49-E*!cGevVBVndGJ|5}-RU8;iSDF3*qB9xbD5C#Vrp@FQO~!Xn%Ty`Ug!uqYBCB~ zMnUT}*RtZNn|ZR7X;8A7i!QX6>BWF_$wMmIVWWhVY4ph5R_Eg_kcMPzH4woGJ<*-a zb(U@!OS*ByyW~L^Tg^h+)HWc`*Ij6*}#GzQ6v zVq2Kfh;DxIO$$a)p{I+1;5KXnM7tqH$P?vg$-0*j0U^AgKjWP}7Cwe`*-H8hsNGlX z%TmMjch~GfNJ9_q6<<*H{^%a6pVI7g1=zp?USG8K2{n?uMbR@Niii&q;o%}gh&LiG zXShSu2=b=yOHr+yzgrc%P;i_rz*izpB5JCV^oP9473*pxoGin~@7ipyL(_YpJzMd5 z)DRVYP`k|{QOKy@X$E$E4qSdX(S;POrX{?Qw0{4~3hwx3Rte(rdvb|BT&UF0l$rZh zukYFrWo%lPUeOm4VqyP%^U>#XW zp+baPndvX}R*P0qQ|dREQC=gp@jo z=drdh#gq;qQS;WYcER{>j2?JYN?``xc9&ZIolJws1E%qGd&SN4Wgn;UujErTBZp#srK#YJ0xpHDRM-azn@)Z*999uYMAyXjRtOE90A((mgScmmv zB_ZOR3RIY)LiO6>8Llwc@!!*mpfLLHq<3T8 zn(t(Bxonvo4pU`GXd$%Q10ETT10-VIf$yj?)wp&HCYODE zX*tmIa>Oacc=Gafc=cKQt`8#H&(v}|r9aufRfMuhFnX-3i}hE_6FFV+{KKmPlkKd3 zjotslyziIzMt@0b81^VY7sp2kQaBrPCGiob$%K;}GBe?6>#ND}xg5ALw6tOJBMX2m z6t*}9EuO=8sH;UfTbZk4xzRd^Oze5*sVeNfbSraq6x}9ZHx-0ybG^Sj{S3Ctle70&mhp)LO(U~Y^m@yRZ6{&YgKyAnGRmkPA zIlJT?WUG9zb!nL~dv#_fKNkTMBH*Ne^6_m4v@ zQA39?_<~h+OfZh(R+`;XI*}UQqKTkIC)mp*#0VP**~0E|$G7jiRBmFZrdHY3^AV{+ z(q0~I#Rc2Snjbw18}sWYX7eq{8(qpBg5*F{3ISp=@U(G$c%-IAq%94q>4zrmv?gdK z$puvJ{JIT=*-EdADRaS42Br!Wq7w{cn(Z>$o!Ql9ts-wDFg!s|7?`{suZ@w_jn;%FFTL z)>VM05U0v$r7j9ZaTYgOq;+~)>ii4dAT`T2zoCJC-s*o)4#V9UhiXgyKk;L6Bq1`Z z))Q=d{=d5A30uyqzg=)HCh?F`iNoYQQVj;Lj&PAg%SMfx@ek2#?D~MIS`7^@QH}bolwg&woZ{{$0U$a8@sM}Vpc=qz6#dW4tw z7L)EJp#wt#6X^CFUUp9%GrnZXDfrmJ1TUSZnA{X$rF2jyXp7~o4PL6AjifHlN>ept zjv0ERKES}X->ZM4fU`v*crE8APQAUen3u5 z+l9Z8d(&q1=%{PU$SLeP%4DNYQo;u>(x`H?Goqg&fOl7UJO+oF#6dRjzzo2bQ#v4P ziFA0Bv;33L%was2z6PD2G(2?j`6!D>9RtfAopSMwYH{9%&j9cEhtcKC$6Q+ z0FG@hYHWNR3)2R3HlC@9BDq45h-wODV3!nnDmVI}-p}y-KXOv!tbM|EjiaDUp1)U5 zs`@Z?&WlX|p9_=~tr!0Njq54GuW9@fS1V}5liiij;OWtHmHz_v3`Iz1IXR!EGi9zB zm=h6NB3S5~@^YT}^;=Nda_>#HL}KSF>60;CA0Y7W$-J?6ix07;VmOyNESyz0oSl7>fz3dr{XD!TJX{@~sfaOl&|FIS z(sy)@t+Ps{H2|nZdv3N5n!#HsOynFT9Owpf5Ep`bFuNBQszb7-@aFqLPBCFw5!JM? zmq;0@>4~99>31YP2n-hU8cd&EU6a&B$mr=V#=>yH`^ra`pdsEd4|z2_ep_O6>o%Vo zhs83aS<_^}z`kt?7SN<*vdEhjgQu3@Ig1<*Kik28 zn548BY~~AIR2k=}$H~9DEUT{KWGb@Q_S0UGrMiC=DPixzdhRWn4C&g+P>zFwZ#Zts zQ-&uOCu4$o4MGPQE)BV5&67LRS&Ny?`s71uc( zORIWZ3(Sz3f=pLe^C%)Ks}~tA06Rd$zZWtRE*ds6U2ipSg)Dv}LaS3nCbVVw_DJoFVUl})@DgR^t1bkYKh)rlptO5alT zr26H?Wz$gCV>66((b8ALt$^qb#eLjIX(u?F+0FF$o=N=2kdd!M8pIEukhmL{>N@Eg zZ;ir)Zh0)35PJ4j+LlZ*>S2TwU0&*?$VlQRyIq7x3`w z%e6msnw5p%MraCbk|!N})~6wBs&T81Ee+0J79FYGDeNiXp*8{f6|e`GGWd*w#n3~4 zaYsdkMrU48nZDNa- zsfy%$rHsX1ZhF^L@l`nw5hUQ%r$qM%N0kG=5tcl*W!PRSbS><(+{eSlAvIY;K|G~` z$3tC?pH${Uj&n3ON@gM#D3@M3hz*-yE^V-gO34thiG_7$6&&mrD4NJJ!XyJyxZ;Cu zImC?}jL0aB!N<@$uY*=)3@oTZFV%S2%Y|>n3k>4){yt`!ig;X}D_Ftin(k|A@iy_i zM_ME6QfSd z>|Q(8T}-SzRIHC>^kS5`qkJWE%Y#Uo_-$M(c)c)Znp=?h+u)hdCdWHG^5+-$@eNyf zdv+-;KDQf^sw;h^%1|Q8%#jRMYBN)Fph9aE>P84&rlA3v{>#qv)yrB%92$OCb$1n- zlUta&Bf%&QIe3`MDBVckg*QyzhBQ#hL#r(*=X&XxF?FK9ce>}NFLEoGP1(awgpL+k z49vS#U2GyzBN6nY_=RcG7U9(S?Vr7jbF~=pcMvI25jluwkm-&*T6sl;Jh` z;ZUT^gM^|kMm0Avw_I2|iwd4F$p;bzl*q9SK?ja}xlI*kVqqUI3WqVY+ymIAMugzy zGj}N0e39@4ver5~O2k0K3HtVa{x-~u_Wu1nG`K$8?|wOS=jppMNMUt``YLu9bF1~~ zmf`an7}BS8wc1;s@3FP?8h!4lxuPD_VEi#l6_3v$3NH}z)fGt?EM1hYQ4ufgJyBXr z`|<@hL`x^&H#)*vSi+bv3WaU(CcidT4s6yWKH^{&FA>Z4Xe=rrX||ZFbn0WOLbX-43I)y_;;=fP0PKJX$vshp`py;;xmQvJf2&dDRcJX93gzP+r+O3+VrYY;2W~h+*6rpW4e4pp+P``WVlknYMi+b0)S*} z*;;4E$RsCo zM5D%&u;TT_v*@mD*(w`hwiyaU>rNO;2;@6N)Zj8NY$;g zXxA}A0;1MJKF>6!wbAh6#?&U8VBK1e5n6=lie@pJK2XoMuoH9W7qlLoyA+%iPA-$v zu|CQz2e}sz=DdYc-TY1VGhZTU3>blw=RBRqwr)4&|vZL^RZ7OzEZu2ixrflO-VmK%FV;c z#+=QC1&Gf(oQ)G}4j9)BYW7N{cNhm1k*6=Nnf0))NgvDu&sZ_BK$(r z?MFBFzx2I>CRhJv-Fw=&_9K43V!j_4ly~$xMR!l7pWd{w7tOrZL0?@)NMa?4zyf=9c<7nAjm`$2eL^)N#S)5J}x-7X&it&B-$@a zl;MqohgEUv*@C+@fm^seXNnO&#-7FV3I|t1NGpfMW-}fMM&vUlGJ{nxuD699P5AO4 z?nlYccOC+-O=n5_Xq&AtCU66~!I`M~z2^1@F}k5xz+S^S+@NP*On&yF^CBXNI)rG! zq-dCyr)aK0ajPfqE@#yARLwG+LXX;lv16l>Fi;{i;OeiHrED}T*K`FLXc@kbsM3zH z`_7LZ7T{c?>}Nu99KL$UuuZg$iW5>~D0v#|I<_Ze7TD(+yQS^2VpdM}G?8Df_q9;9m*I9|pqu7t4yGmqM3Q?Al5!PZO#v|81@j9Zg{;OO67JkLP zl@8?cxz}wgB+o?fu7=OUB+Bd0bi_Ye5zKcLp5OJfbH@56o{7!B)1%XG@Fb3~Ui?0{ zaA8Se<4C+eyA>}WVRZ?wu=^P8Ar7-@r60IIVN2AW9a zxTXD%SQnQ{e!j>&XI2j;EUgr80|EzZOPOEz2#JiC2Dk!aAxkTN)`F# zZF=>VOhD5oCIShHi;)C;bSY_Mx5cfBol=&8zv)1CdaK0J!=XChCX~0QM3~Y)Z0ct2 z^}1)*{8fzhrp|^gtexLN{wGCgIekg}iAQ`lCW%2!YGI@Cdnxq^Cz>NY#H|vly1L+# zl5uR&=)>CGM*ql9<_{k`F}1v!JRI&Bu=eb6uTa8?5`^e>ylD7x@*mMIr+&MrRiVmr zLwZ%c$_NB2Zshqn7A7q2v*T-mThWti)Ys$rntX_rDM|Q5={t#`pl+0JQOE<{nRxg>Mi zrrg+M*^$hUzElQ-Sr8_xn_37d) z%2+ECfvX@oN<7r-6yhQeWenFEOezSrW8l#@*I0V#Br;YSw0#p5SC3prEw-P}o!>mR zYBW-b7d-;u;1;a>I}2i0?D3zWMWW>MQr<0Kt_UTPR8C%cB*LbJX+C_3nk7QH!mUc8 z#N8y_DNj(ub!8cBLOOQ5Ow|mO$Xcg$7YdSlBu-Y6B6w~b%sMmfgclI?Rl~*Hma8CL z^rfCxi+P z9xbLlrB5TtixS#ZiTZ`#_G_)<_?#=*uVg1a z#moF6)2z>SZI0Sv5N)J=4R-kFHiEV>=5zM9*`Qf_8I*jRDIE0tDC?EQiEgWT&2trs z`QiSOi;NzuJWIwi0e6+Xs^()C8OA2VW&quyx{b1Y3QumJpFOL# z<8wGtLg3xQgOH&zIgT-8qbk&#Uc#trlYxY|tmA~;fIvyyq+pZPw22#jRMIB zWlGY~RY-WKHpAzjIHaNAJL9|1MK@6wC<&KvGZ#Qt94Ra^7RStjd`FA>^%D+bhJd=# zDhEUPs%F7>oqjZxIMsb(Q6DKmd^)WSuoX!vN}+Z#K*-K4?i&ee!<6+A`$D)E4N8PT zccMM!9lv+GL!B=65_L-8#~6kK1$(K;*;j*ke@+W7KOP<~e$!h#>3IT?t}LqoB6(_+ z|8-9i!(1rW?B+vHo8du>brd<-Ft8rrTS$W$X2lCZX>qo;`U>gANQ1Y~d8B?fq`n|(d^X1oq8Hct~iuG$!`J7st^N2bnCM^2&v3FlN7Z**9r)It9&eP;q ze>KA`cNb`3W}d`ZaS$`3Dyqf9s!rTd$;vL?Q1>G2u$X17$G$tIk|QVDf6ZxO)Sn?< znf7bh$#~#oJ;thqPMFzDczk~j1eFVuYv@qmU)<#jUe7M;iNyK{O3Ozn6VA30z@{Bw z(;$2!%z}k?1dPo=z?$fzbZ)zN~j_d zLxgqPwK1ANDhTp}cBI8k4q4Od4MjPikMQ=DIL@TB@fxW$=lf>qdVbB$%B#P*Ld9s8(_4nt^WBLPcHh8rxSytz=IHG+Z5 zE*TG!DyN17K{qTTU}&68V#}Fo-S>&JZ5s*vEr9!w-)UID8$0wA@C?jJ%t4KS$#|&kYu~D%9}8j7 zQm$cUUciBacbK<_z^i|mE43{>hjcSxz^L)@t{TV1-+_2Qdsmn((9ABJQBY^3Plze} z)3Dujo=96#9CO|E*y=Il#=@6g!ZP3!8HJIdF%FeYi670RR}(o1y$QI$Ky9Xy{fZ?w;x{`Nbxa9 z6$BH&3qCEi2w>n^!XsgNX!s4!05z`4W}LjdgSm63=`@osfw+BzDk?=BViM&R=?#eJ z)F(pmf!!S?jFogJn|ASS7U6aGDd6mdok?mpT_%(DMSTULN$=pK9|Wv0Kf=i+`kjLL zo!P3J9YA#KjMw)kV1mV$j9HGGP=E&O~*T zQ3|D%%p6GW8l@3jnQafCt5WL~Y~3MJddrvbf_R1mAyQ>op+BQr2Sx>|P+qWMKSV1c z#;mM4d5)K?MiIS2B|Q|zu%n{DDs}~B2NKCxqYNu*t*V6wVB<8Yb=Na)JIsMdb-t$&gqva(h@*y)n zO<=kFgwZdb(Nwz;PW_?~2mf1?GLlWtddSGG&J1~R2m@DwTBQM1dP?=$)MmtYK!r4{ z${=Y@NpIsmuA#d_8e^B5$1UO^@RR2;TBihKm5U?1HOuxuX17926gF+6y>xQ+3GlJfVRhP*Iwv1X6ueT7vc6=rG3M}6&h=b1lw+Mb0A#qr zH}>dr#Zt5sY|(WDVl9`214p2t`g3C>v$WJ&JfND!eQik{M*N4@c*-CW_CM|}E0mzyDh`YBNRBx}X5%%G3M4d5ax@S(_#w@U=PoVATx z*;h3xUl9%C!oxdjAv3Wd;z3T3IE>vWqGj0GrNobh>nGJYcXieP|GJGLXV5wf6SS8c`wWPl)rWqU?1AYq_%oI z{{;Vxw zDs;?Zso1=GM>l@}Y-OBf@Sha0G%)NPQMiSkA3F*i0E>sBU5$(<#3vF)zA3Y)b`~8O zlQ}Q?k%@rsh|1;GL1>(X2d^7F=}uoke}Qsz7zuG9>X#e7RS+EGDTwzS6!4+Mn*AK< z>?vnXaO!NlZej-!TGV+_eks;zkYl|z1(_EV`VG7Fh21r++wlE+vuga`Y_zX(U+V0- z3KKu08a{M(zQ(`HH$SuYJ03PFeWOvI@F{6^+P{L#nyni_lagQ5-nQZV89rvEHywFz zWp-FEu;s|dP|f=J*=x>BvQjyVWAb#`S2JkUqCK`QB-7Fg!_vUz&`*b#LaX`cfWY~z zou{i#=W^>;Mx-t?q}k0|t1<{g*HGxVv3i{IbElOt9gg}1%3Dyad&!2n^-B8g+=8b4 z+&vl_h$Gw#wfA2OZazEAdSPG5IHqeD4dw4wZJj}tebe|TI{HXDE^=MPI*%tMiz_9d zn_J1lWdB@B{{Bp7~%#{GRHOMr-4tBcNDTC8* zzV@=WlGz8utu2;vauFoLvSIBsa-`>EV@#AJx@fi1-F7>CJu{pQI(;=cs#ej3<1JH> zv0n3L>#+nig6q3(DlO#E;5x&1shD|fR98}}<}OXZ2g_RdQ#9r*2a+Wsuu_fRcsA#pqwW*k;v_ey2;T`^Rbmf>}$$go-I|PsolqG z%xsP3QM!>u3xk`Ui-T3e1ejuYH#iDUU66l99?~`#ek4U8 z3I2)|i)uZ@XVlX|p3e%j4B#DAI-~luteEOu`n2Tu3-$&noV<{RsTt7+)BMd8h8$7; zW^gNtNE-Sv>@%0w!XvGwO(|?+6s6`~G3t|>i8Ky*7){v>r!(SkI_}8hFThTU4t*R~ z)gQ=hah({q19g_Cn*^f{rx!8u8t{CrbF2HUjzW&<{~|z~D6z1Z$YtuYbJx(JZw~R& z)g^u{=XjKn+CPlHPt)(SA+?|D+Wl63a;RPlc=P@ZiyQEnHJH@H+H;*%Kb^5^OVj=r zmRno=PCfE?+f0 zn0C%)p%iC~G~L7DyWO6xVv_h5nk`TUcy|<}O~`<{?VU@>;7fj>oiwXjY{z`Vs(^dMNu(R87luMaiH8*F^!)A;tX6QX0*Osx`S52Rde)c1be2f&iy4Ru- zi`k_cp)RFiu+pNmfMwbVAVIvzIamF_hGx7of?6lQbZ}?78I;5o13-3A_(2tdacxJ9 zGEjjj?6Spdo~V?k<6<+AFGO>jnu3y@Z#~WXFz@i`a%LytpF*Gq5n&>>tHP9(JK{>=NMmY;CSywZST0qU zkJwOsKzf2D3XN#3+|B=r4kbs7<(J21649>3bHk(@s-E2gtOQU3V(ID(hq7NuGEM z&rBIpeUO%mNc749;ASVUnjbJ^n-14ODb!|5U)?`*Gp@DTaF_`akV4eUju>hQz0o|B z4g?UHW$skq(a2^~aGWMsvkq*C%$Z{bo)km;Dmy+?&dnh8%6@$v=+)w%rei?W+Dcnt zs2;@S@JO73gP{^2vCPmN)zp$FYc-K5)4AL{D=iYiJ+Hw`(X)y3Th(8U8wH&V_04&h zmk@{%3+>WNIi&Tq+d5E-#Dh%xdnvO64%iYMR^^V7{6w)BSB0w3<^@1>{AOGegKVR7_MVSSL6; zo0AI;O-9}sDf4Gmy~2`t2JrPRmSLyUqKqi2SKH0nuroi|>zoN|w^%Ckm>3#Y1u6wU4)#JWFpyK_Ubh zF7Vc$PRB0gOd0a3B~nc37c)2eg*-=@7_K$AGESU0*}CO58=rQ0#g+6mg2>p6*jq9k z&0V2wt{i08D-xYlo>ns6q51tjz6TyXdTCXiiGtec(AmdGO>ON&hzC<;O4>8fYN<|x z1~Oawfyb0Ixf$3HaPS6_NNMs>wtDtxMD7)L!a7sXkY!o6TJ z1SO>$Bh%aC7Fe{7TDjEB-Pkqs8#tk=X|kmXb}5Vx4clk5c&RgHjcp?4rAml(9dXM# z6t<@n&}Y{j1LN?jJVM7Cj>oKU)bnsBB!49$>l08bj3LXKyY#hs8EfEH9CzJQ(c5IK zKTxW%1;St~cwpIbAS6}>mjSs8*q_3LvIZL7_KUlnAhVIWurwS=Thk* zksdR5b`icjQ#uapuEC3XYBsKgj)yo6ok%93O|K>Jzk`E`W;-8k@^0 z1xP~)8_-;KJIw8NUtn#ggHH-0`=Sxhp+)N}PfD>MDiR>A?52E0RJoYYs#xhORVgX* zVzQo@@R8Pp_}6mRntp2jvb-=kYj+kGrA@r;#<77V)COQ@Yc27H##>OpDwVnKTP!hYiwRMs$1iwWL!<;`v4C~$~M7Dv8% z(*)s0W&yVct$?di;}>kG;hlXhs!I~`I9adn%sGDSk@^-a&}&sE5J5ri6T7;4B14Q9 zdDCqr=BH3Zbrp{%yvH9}R-K&7Z?jXg=qi(;wvH5-X%a2Epymn0kp!~jR+P!-B*Kz^r0H=xp?YO(Ngz9!|s%6 z3abqP*e7WVqD)2+s<_U-q?Ap(IzmpQj|IGDs*<$<6sEc<_+?-pdMa##xJl-@Mq8vg zeL6@_udx{l)2nMU6zawsbHl?)!`i=Hf|c^!6(c@FSr1{Xgt97B#H>JOVJyn4G~OHt zYOiU&M%nC663H4>M8qy`GsVgi?^77_rwKU*s9bj&Q!2u#)#g#(6W(ZDJV4Ha2|_)br@9e>7?FpIq;c8 zp@w9KX?z)0U-K9DN-#P-dMSW_zVTb_K(EwqJY8p0mqT!YFK$yn~i zg%bC$xshJ!`RQ2G)Q_jV&y~_-Z|<8`bP$1>9`~`N=f9B={7Ll2J6d6#kPhg1cxz4? z*&0d;jz($AN@6T3*yX-X65iWPYT?o)11YJ`o1UEv7&wd5YG(d}a?8Cm)fSFo{CFIA zxxXu`bz5%EU(?NE-|TQ*N<)un8M69WVBa?jJc?_%pwd=mRyS{y?|}{U`LROxv3z2; z*?*viA}?Lv#rhM%l7GWT`A71^tq|d@B6-RAlE>&&Dy9V+R=mGT4%;i`-@n5FnLg_) zn$}Nm)z1COFfqg54tnMD?~Uos&&}i0`C{>d&6zZl`_2C7E#a{*#PgnoB7~V=T%y70 zS>d1dJyBl~m;T0j^3<=p2Be#jL{Y6%83a&oJAYUxPij@d{5G1SZKRE%5g-bjkA(E8p=yR&! zr#q$UVQEX=nQFI8CmBhYBtn#C)BLAg`pC@0?(=wt0du;GR6j!B0nBlX*r9`lsdF1b z7Si*;^ka;6!re;&vAprjMVMXzEv+49nQ$A`xxybyRbMi>ytw?tR!OM=Vh6ngayw#^ z)YXO>msTsZUxFQt>=}=_0!%@^;x9#K3(i2tRzmGypkw7YNmrua;HxIJYY@Y(?*)`9 ztO9D5Rr-zEyCE)9l(kE)YGo&0C*a_(ijy@rgq}w;F?vPnm|8gFNx334lLuMj@nj~* zLLu=^Zt~e%aMBG~G9ZfTj2BuKfL9{~MaQhG^+1I@WqM8NkIpu3nI>DKxLwzKY|!@f zKuhrSI%c_*?7*gv1ZJcpQ#`0M(dqc1DTxfDyoZO2e!LMdS3yA>+_Yx!{G{fXHfjJm zn5Y%1@a0ECLqysq@@AiIo#}}sNL*+*_jxQDP;28HpO$!-)b7K4aEF%hAIJLmd7ORb z?K2Thu|78LCy(^?>V5<=bnc?P_%--h`Zc$^%Jd!|#?h18*#u7Q{aknnxd}!=2@_#7 z5jepYM#^r2I}t}xwZ0E^QfT!XMa7K*B8&EC>mU%Z!PsMdXAYTZPHIQLjLVqpmULTO z)OWhDetZRTk78s8Rby^C41?7(*CC1d@7i5=kY_NrTKqlJutWO#2j3Lcu=KgMK*@K@ z;MD~^Hx&NVzQph(o2-D)1#l-rq7byK1mKXdJqz|!p7Zi3os4#3cF25oHxf)V%^EM(5J~s{> z(fh+Xgo=)O)WW=8T11$9)sI*4v0Yn4bI~d@?hCQfp0PmI` zmTU=Ry3oSWh`Vh`_A?ZRlM$Px&66OQluSM*8F!ADuW6Rdmgo328#w~3%t)8%;4UJr46uN(nC7;@{CZ zocO9iTtM75v=K38EOe1Fq8#wIV}XTsoLH2w9X*$K6;i=vVpfmNMKJ;@=t9gpTx8Wk zP&7G89X3We*LAB-Z8tJ2sVnH$joL$Dl52Aaz{bdi0m@kQBWBYU4^Zt0Q4C<)AulNP z2MHIa>TKVz=x^xsBs%5CwM8(GzaLKI`zl#1;^0D@NBbATN3VMcC5ZAiO?$@bsb-{g z=4rY_g_0XWEC6%sJGL$rouxZLW=^Ns=P^{fEuBbA#_=a#%54L5<3i=CO*TaFM+tdP zEbHwyRk4?NR#-JB1fcVyfJiH59fHb_wDVl$J*}EUH(b750P7hPO8B*-c7}lBvlP>E za1_HSTgNqKiuVHu>$E%&x3!zTte|D-9LIgq6|1A___VC|_iArcJ4l6D>|P*7`u9T} zSmf1SEF6hfhdv95FBWp6#>;ADAGZZ0SIu4LLP-yskPNdSQFy`OB*~D#xpg-?LSMdB zkeNh!eCBsBEpf#StEe=504N;_1FpqOVuajvwA=>U9*rIc z4n&GELpWVrk{nM-H(ed(GfZ~?KVKa49t#Pb6>QfaorHu}ZNbNb4;H7r=gH9HVa{c^ zD(6+Lo}ZnA854)98BHS)VK%1HgyV&+I(tayBc~?9QYbvE;er<{4qMSA+ajzfGA$P- zbFLxtlw~S&&ppSyuuE9z8IYGMt}}&Pbt);kO#wP)^kT8%=i(pI5Eo(KR%eGd$hQXS zDmz@&E*Ml)kziDsrN!PRg5jmLvn=9KSafJUCTqw%YZfCx%+TeD$W5^Wse5Uwt?0w# z(!>Eo%uI-UGwUQ%4=)k&%;cqT2Rxp(EiChmOmw9t6Wq5sA%Y0yoUCj-!tHgGd1$h^ zEmh;&T0k}2?p9g4C|7`{s&M5spWL76P(NVCYqd+(97M-DL#rP`_0nAB|^Ob{(`)6@p@Akr_+PIIY_T`h_Ti?=V$IF4TL1~&lSLc^1Cacps6%3^Ef<*eCpQ1)_+m^wI8z>`9cUrST9 zM+_(=!7C;OLB)3jtWmh?~ATf@>nZ#1~E%UV`<2cpf@Jz>s#X$-qX8HDu#GBZrf(I->>P zafrVT_c)h3B>>*X8bSPir^#UTI$ZGItKW*ns(_ea+-}jLI?NTgh(bhWK+9ScB4{&; z7e#5z)=k&xg%L#MX`w@Moa_-oDzVd1Q^n6d!vTDaChHBM)k8r3S=2nU&*9)2p#_s!XiG@E6;iojzmZxeYGtI!cb3luQ{lXYUm|N% zx^|rw!OO(e)G?Gy8F26@p%Bu}8|2dGSYUbwlY;SVMzK*1Hlj;=Ln=HvdSmEWv4FME z+*Rl11%unEb^Dv5yR+vYZ=(4BHs=n@qzR6Ys~uxZHW`uD#N)hLe92GcSQP`uHoC7a z2!@;tTuhqBTn>(oW~r9#GBtL5050(%YJM?SCgDyZ&HU#Wnw#d{#xC_-;eIx=`wGBYl&w7rdq zU1qoV%OaAzcWW>*3K^}11)M*DZn9Sm-DST=m^LWd{PyZ8Vx~=|pQmPRW%-^%EpDO2 z4JJtuN>*UcG1|PJ80H8dU_^u%;`6PxT;|K|GtY2!(V*V6AXT5*Pq@b73h&~+fa*Ry zc{^Mk(KK}_69M{iI?65~s;-1xEjmpm=A&n4PTfMRVJ3`%I-=}QQ1}ExT&$+oAcK;M zhRU8%NMtNmez}T$djh+pmB219Yhw`>8(9qN-j=y06q}<$SK>VHB-Lu z#HbHnEo$SHo`)ZN;nduB6V9uYu&#!ig)fm>Zgx{#5}atBMRB{3-cd?QuW31Y+MET6 z=e5MYtJhSp9TUtjT1q$uv^AiOQPY(bd66W}p-ZS)QK5J*n7qT6veQ_zA?q*^WK)8} z%x>QRikR&wmSXArDD^P3E$Tk)4yDjYQF}+T2T8`$dgROlv|CF|{D$aHWUokk!}%7; zpwMPYr{!m3h0TzLp*&3=Dz3V8G`$R^OY6g2T`vQNSxIfXLiK(Pa$z=l6FCC+m_vOv z#QBo(WC&6{nz>Bw9aPH`9NV*Fu?iW_AN8HmKW80|LA1uN$7gG2+v%Fti-V8TmMNDKSPJY)R>b1iNc{DO#+s zrQN%)Bv9x_8G~oapE0B4QVg)69#x7n)0l~>K22-klIkPK2?fVgy=NJE-RVlidKXFe z5@TqJRc)`q;-qBdxLHtH(8x+%6NE)1(I>^m9s4iC(r8_gEMonH|@ZJ=uFHNn@!Tc6i9aO;G z^#+hDIm2Th?jR=u{&4a36vvz2WWQ^wV{l>^ndmSBrzqKHJck8T!d;z{AU3tyFN(nX zR0*}1iz>1L&++;V5AeA~uUiFr&7g`18X@RiV{3hmMj7{2&M0e1vw3!`+eXzHb@8LH zY%#)wMeVK375)WYJ5f+*m=-lf*LEqJe&(+*bF&&5!auaw8Pks+JQ9ejc!-j?axlag zg*j5vVeeAA|NhTi2g*?pLa=xh{!9h)Py>^>$oL}^1kQ92b) zLehsg8RPYG2P$9;!7a2B4O5QYR3TlcR0TUiy9YX_r;%kHuEeB>Ou^(O~eF3Ue z6j!LwplqWNE4V23<$#U5&RB8OtuX~sk6T=*#P%E?7tzb*g58>a?kV>q$9~=TG3<|U z{mof#n&m^q*c+n=6#dWB^Qh*r+RdSYYxB6GHb*H!x`|TY9$5>BwVQ#gNZ1(7M9rYd zf}tw1<=rQO^~{U)i3=ylK6&bdMlmFzEV{Z>hOyy;ak7IGGJQV)oL6|*b=|KLo2c(t zK*!xv)M09ZmM)54ylBp3WJaL!Cc+cQwVw!+tlKk{Ioc#g z<~*d3K;R{$Fgj-g^9u`cAwesR?{!&YAjObV&2NvNu7)$di|gdERomdBuqD;_5nV_UKCSgU$^ z_n(1}5Q>zd9O&@wcL?sJ4x$B&O%8ZDxk_rJ&w`~haA4PR{T(u)!d*`qTdS2xn+P! z(dOC?5j$Iq?YbG(jTRZ*nF}SemC;a5Of)-4Qqq3*hY7ZvT{aw@?d?Z~LQISqFW^Gw zjguUt_XvE}Mx8>B!>sZC4#ROpIe^@K?KO+sMG*c(!cLU509Oie}VRTPW@`Ug~ZeCyXcz-zdSEWX>S25&kp21?-0Os4x-P)V^Z0 zg)|E{DC^P`2ZwnD1@}y>fV$^-_6$BiX>8JLjK!>vOZis1=xuBMGrf;G4cB&Y2qoAs1 zS$lUg>!y+`rhxM4D@;n73`;{*K~2NFdb4iiYU}n#;W(lRXo%z#1i=7@+lV_~0d?#; z76ZVUC_%xjJltWfpz$Le47xLPCV2BTD^Z=*+hoMS`A_NsZdCk1WGmiZz)hKgJ$W;E zlUPK?m8Z#Nn$LXK0T!GAaP<-K7{Hd4mzWBwD=Uimj0YWDzC|}SC`Xa+s-4l>Qo)AW zOvAVOhTeW9nMKD~mS1T13-jZ5>!GcB_h`?=hL0AJ9fFUuXW%37Y>~|#_~mf9IGGPn ziKH@#FK>29={1hXUhdQ;Z@2+Efva%-Bgn5gW%jz@gR3?wT{EmBBi(1_ASzWL!a3C1 zY%FRg=;!a+VM{Vs4@DF#5a3!=T}b*GK6s94z0vP5+2xVdV6lQl9EnuZ1OadqyCz9^ zYjdYQ)#c4Ttf~!dMq7}}PV`o;Gn33>JSj53rIIk4_DBxV_H=Rlu+7AQq-C_y?@n?ifs#W|PsEAt!bZL2lZUV4T| znhf2J9nj{g9U5cLM0)tA%iQ9c;$UdaL6Df-*c%s5PTU9yQ9ij!aoE#gPp%SM8@(sl zCosa#Uel{m&SpiuC$QKVmk|P-cc>m3^ogC>G?Y)cEBh64*f_`S@8EjKWTgT)vQO*w z=x!t_d~-u}jSM8wnyZgwg4iaNsZ>;>y=ogU%)()ZQA-A*+m%0ooN*sbt^4jRZr)5B z_HL)4j@;|wuzb^1zuudIxp;CpM{~-A^GTp={b8Z_qaaFwPF@>lV<1ggTr6)pxN?{*@#jUYh zAEB{=wl-5~$R^h7@EqjIG7hU0Bx;=0Q>{ZLb)6<{aL&CaeY~f9ot$nTDiPgD4sQbQ zCkXqt6FK-tH{@06b~LhHzo6GBt}FV>D=aPIh?kcLc_cWin<=`%EGk;em1t%*nzZFMYWuz z*nFq-PA#9Jnj{wN*7CM#@omG-4J#Sc^#d8?gUuh|k{@6wFUG7cLEL1`tuqkgp7VMa8`Z(U|dI&pa^@~_f|LR%`h7-&?Xm{Lno z@K~C&#z^)S>=9>EfRf8yqH;_=ea@d<#|nBZN{^fO(8J)bPST6Dwx_AggG|!;ltgI* zlGS9`d}aI}xE{oaMyKv#wU0%%jI?LXi%Qd}T}EX*xk~O%R3Q49F^l@nJ7T7a&_af} zB$JnHsw}*Xlf1mX`!aDLyH&&3kB3%&IMkMul3Qsr7Ef7LTqlArz(lW#IX4nTXt@&1 zckEG_E)D1dPSSw3BIzWI%(CRMlNeePYaDogX55uyVV`7EXB$UQ#CHX|36Zd1`K0d; z6}@Mu>pe)}>CzhV-asZi^WmRPdYBjmWQ+Q+m<0{Ei{RbIAp*-~6|jMVjHeQ`E+92g zO<$DtQi0N<-%e_$OKGj+L~lD|R712Q)Stv1B;=^VA+8ge>tRu*?*c_>(Rkdm7{P{; zD6gI)e<_0YkI^SV(oa=-r`V^TF|`*@s^GWpT=X^zwHbg4*Jzt!juil~9jIP-}(5?Qj2!78$BeAs6zU59~3IqPXM(#?6oUSaEOrECwm72|4D ziGqb3R_sSt;?h2Kd^q93?i;%Ed7J!3YTU14_M^mW0*$811UOA6M}kWW_XgYHYV(=whE5ZWcu?r6aY zqXhfsr#Z~1J5*{dx|G5@olhG~NOb1OUwYm;EU3cB+i<;*FziOo?X(>MHVLZsbKqM! z&63<~b=5+BF%bYv?$am2Lw!;9Z+T8IAWvt~aD-{M>aOdvW-Jdf+?@mxMeQ-zy$2e7 zh1$L{(I8uyxRj(x83vY{hmdh^_wiLtaS{Uvs%$XA%5N1MleH8$ShVhKe6!CFIYToZ z>wETzk!;z@ouG6oyfaK{udXBg;xnT($Mc%^jteMPOgB?GOrn!fYoXurbK1dsu&}Ir zHx5XnAYrv9K1r{Umnros^iv{Jj%Q58Fu@M$Dl-h~OSu2NW z)&N8YGX0RbNymM_Izl@^I?QbIWgtdfNcnySMl;ek1$R%99rVS^HcuVMUy;ITpqYWJ zfOHNaVoDS^g`o-w=ya^6y<+OB3-PcSWv1BQb3C|6U2*kNE!pw_&i!&}D5CJ?u4UHD zuZNbI<}iX?;pnK71##vm!6Jox>d+J_djXRIO!SZ{VJV3z2 z7x!5w%9qBPQkE`p@A4L_%_V^lS-_lDKUy0e3j|Q+Ra*>KTrMP~FLg1DP-NrFtg2cq zi&6D#jH&xOt!*+$(oF5s%QbUR3M!=P;d9$YzmmOs?2bHK_bQ3Ok5^39n!319CNXe* z16^RzBEo5%t}}^n-Ly@f;a#+tg66p^A`^UPsFEXB5fiGJ?M4Z(-MZ)pz{(RrqEoTv zL4Zycd{*a6G$dlMdm4M0EEgL5bh8LFaNua4POM*%41G>?$~hfuekq%nRM@eXIqTQ> zBvoxqI)f3vC#ikEh58&!`*lpUpI#S>J*fi#rAnWOz6N?I=vjehXq^!&ksmPY6F6bW zL%^oHkJ-k zw1+@*6m*2@N zf%YujmXV7MD&vRs+rd}rNANrKO<6lzHnaPGx?Faa&7_+Y(N59j$3HbkVFs}FtF@P) zu{}7Yje69gL@f$XhdnSfP!P>a4B|Al&~k-GusyXFlAh+HX*I-z9%a214o*eYv%(8y zKMGV}GqOy7*4$}>}g1Lk5y#EoRk83tLU<%>s zY*)&d9Mw>fkSbG$Q`!{@#q)IEsKQ&;h>Ka1vroU7Nm4FhEzwnDj0&~2>p724OnoBE z&Tf$wC2s``b@}fepgS^r{~7j6VOhBmUvU2;G8@N1^w*Yzip0x6-TCpMb;6m7US}b~ zUDHUJJre`$k5S;2>)_zKOnT(mFD6n)n-;jSff_CYnq4=ztK5-04>-mBlrA{}tdBY} ziDa)AEwWB~Lu=|0c?>GcCQuj*h>(LwuEQxcb91%vv4zT8y!&_6rL^EzithtShbM>|2`}WzPbId++-QA~crc zITfc^O7LA5Yomu^btbJVqD^fs0(Iu{GC17lG1JstFwk)?&5veG1TeCz)PQ;jG5m*z zA6Q_EjO!6jxPh#}MU3wDRPcsN%2b}g$fopHzFKi-ka`JeP}{7Xh;ueMF1*6=8>{vC zNs_Z=2a_OW>~6cayFR}(HzM&-n+BOR4cGR~Lw@pH*WMuB9>91kQB03RMi_oyk4nSj z*PTHywG*K0!X=3LX+}wjWJV1n>q8oi5hLs{fWox$7U7Eu9aT(O8QFH_pEXe!!b(pz zyYuXx`zf0w$R7zy%IKrm%~#sRoOrAEp}aQfkI`G z`pbhb`u#ow7d4uYyc+g|7BYyG(1`+(GZ?g1G~?6G__#Td3vtYy!pR)%{l~AyOBE)! zw22WeGN+anCPKou#pQ|MLwhFMs3I>swf45k{7TcJ?>*LuJqB{RXuI&PC@RX@dFxqo zWqBj^LZ1J3H;Q5H#aF41T}TvyUiom*=#i<_$V##R*d3UA*&F#pRZ*G>>&2;;Rw-^> zbYe>!ak6wdZP0oS5^8!v4BW-jjatxW@6|ML75u#VX7n-xfewi?UAt)tA{G^Uw$otd zQ&PnmhLy%ExZKFNLvm6@aK%w{6h|QWAk>_B^C666!cxuUhoEs>!Cr5U>DIAUH5OB{ zJBji;<+gr*Z?5xK#$xhrRk%yu0upxf-Y;$&z%DG7-AI?@4AY4Y_Npt96SXrfME9g7 zVpNtolE-e)x65=?lF|Hl^Dq-RaFi>ryh)(w8HnJc_mtp5GnsKLSPmf-p; zHCd+5H3FXsw9Bv{g`;vQ$5~TTI6YHa&g%1HC9er|6IsEpKZ+{^fGd}2FE%1}7>a7wY}SiuYH#E%wZ#qfg{wa*TBK&RBj#l`BNMsalmlG$l~3=QfN~bNWpkJE0_7t4qBJa zFHgrvE2^_A#KDnGMJZEgya|5`6|)+vjXvoKZUr9E@tvHIY-(+k_oE3ZQj?7O2p7U_ z$wnU5g@GuIFAH5mc-d&oJkDN3Y$R9i9ju?S$n>22px`T3{X*vHdeo^aV0qdjvmynL z&z_muQ`L=(ezy;SE_Z5Z2%8Rc`zI{A80z4PLj=L|k;a~+z+36sc}Ifnf-e9}U$lQ* zmr3_5u6=&0Qx3B38RLYo^P0C}&70z+wYcS)2d(laGfi8KSsk^C9h&(zfYO3;I`k=) z;2XuKbt7Iib!&EESb~pdDKW&$tm>pf)x*An^I?+>4B-=4#)A49(ct3(@=>1ju|X|A zK>MU@pPrw2npHkCRBT#pucTFoa6vsgdZ!NJlfD@XV%0G!wJTS~Xsyvla}&a0-IjJM z9{N+OU1+5$TBklB*ja5B)$#$&Ft;Gw$=A*inDkL?l^jqi950i*Y$!TC{?c)*M_5t;o!U!HjnTfKg?sUbiaO zi4RMa%I|Nu+}gm?;XC7`PHQYuQYP`C&0|SjOhE2H#B(1py?vr8s9N7qElS#5A@b>) zwCDE<>Ulufh>o3|r`;)=-ZDr?a|xGk}Eo>^Y6kUmBN zj|vkWXHA8Zqq}&>doPs>HoAuoPxGf__vJk`ZiH5hIt@Uubnv8s?>JTYG4}KbWU~w= z{kC=;`weLt-(nf`Q~4+6OlFc4s>bEPYg3J12V)$z=1w(Gb-eS_sq<=@r9P2sRPEhB zejLmDG)f4lbnH2cX`F?VkR(ET31~q$kI7JaZo4m5lj4I=esG!<5Hwr_2*gJq2&s>4 zPZ;TV6C6ZbwB0E|_prhT#Yl8qNhn~Cp8$4p2WiSZ1Bw==*7{*$x=bF@MG?c%=}axs zY%enh5dpm{==Pu3pi{@E(l11ol1yC0d=8EyrqfZ%rhH7L6kjfyPNE!zogge&;3h+u zt!_0vW1Crh3oMkm+=Lm`I>_CvXdY0og;IhK3obxbo#fl6(uLQ@4_{vn8npE8pP`9T z)HkU^fQzSv2YTwn4=*)CSob~HCBh4R5bKcnb$f5sI$S*NF~BE$#d_25ZugYpFY&d&`E06*U*x4qv^6mwbbdSpDW0 zDSanyv2s>DYVjLdOFV7~;U&0FVDrsvxGJ#agMiAL=ANy4C;My%%b04hxDGEk)oPw6 zBLp>zTSb=bUNf6Zt#XW-N?8F1f$K4pefzob@Aq?w0`*~Zs~j3w4j@kTX35(p$eeIJ ze7o|G3Ohx@Ht5QYdY^>=4Dkx_NGgw@b%x{lQSf% zRFSqE6t7Vj**FjI*+AoGNRQbgBNU^K#wSeU$UXl^gk@7mpOa$*b|>_B0?9&804t8c zM;hdcPM0w%ZiGZ3YEZT=t_K=fEU)cn-^z%^RMy55uv3e|p&I=lR<2kK^7~Yhp`l?` z6{=Bla9@VGMv*FEUSXcA#fe2(QDi{FjX0~Mpj#E|DVNvwp)bwBg%yK&Pw4^f6^b%# zV&CDUL4_E>WE%63BOH46Vk|Dg)~|iMmH_fy9hA1>0uB%*p;ywaSOm>v?B?nE$DG_d zYOga98aPb`0>+mlvTAV z$V)!v%RB zsI_jHIa&{$wGjRdFq&FK(u1A}lk#1yV1--2g6WKOMMeOO49p^HSAxv=db7x;{(psa z3_OQRZncJ9D?!=jhOMM+XNz0;ob9B4|URmB*>)Y^>GF zg@!~k$#5F$wa+rRr~8afWj(@Ua;C&xY*a^AyAO@7$!<)A%Tn`9mYPE(N794@Nh`qW zv>qdH@^~xDlUx5|!V%=nTpuPQ9h50HkmVq9Ihz7P zDibYi60qN zbWTK6szX?9@e{GudsI!vup6%gr;)U=C@C@{kRMyGY#IQZOo|p?cRP!A>jsDd-u+K5}XBh9}sOBrExKNT}B?D`^YB?R=Zq$zCQoD!t8gV)syD(J7LN$co7I z-u89NVQU$F7exnA6ZMUvU(SFl^U`ayc=wqp{;-93Z%5$;g z7duQk5M{5NopQs~UZYmNyQS%4v`4~Isb_QpW8-hX-tE{cFl84$WFRtqURSFy~2Rb+=eifE;<#Pp>l=Lkb1{HO22oHmA@0n zQ3e6pi=E!Gp*1Uf@SV!mr=aHoLBop!64fz{6+CD{8I_8L2vAYgLu@E<(q<0T^wbjR zYRNR6N(0+x2!=gGHsFWezf3gbxBkg&j?HD(;yKDP;mFjSBxTQJfy?D%DS&~O`A4zR zz>fco*XLr2g{jwJ*XU3oT;4%z!tl&ICDtxfJ7Lp+3&uS}E}@zc+*rhapfR|Pp@y2J zmbt+^5nd6En$F~5C>$L*3i#S-bY38$%1rvM`rUX-=)FT(!?5MMgo>H#l{ppX0H=a$ zzQkI2C2}LJxVmOSBnI7k#;&CD0$^!ERzlf=6y66K8lWs$ zjms90E0Frx*(hj9kwkFT)R@`3o?#4Xk+HCtk>+v|bT|ORb#yrj!z4;hFilU6jPhUG z@-HkOuv=Ci-e+5A|98zRn7;(ZotYgDI-*C%@}nKE%$^8Wtu$awXK%k5W~14QQR0pe4ZmZ`()ocvu&>j)CgyN2q#qjd;7g#JZ zArV_y2yRGPYZRwKWcXa$B~o`QL8EEiYIBhMQ^jH*!sbqR${lI}Z(Ki{@P2{3a!>E| zETm4`{k;;+jV_G%mqCbcai7P;;ojAif|)9E^D>X}?quO9mibo!+M9|x%`w@uk=J7O zOH5MGS`&T+QWLNZI?!Bc5&)^PeM|*&@8i7S^N2#?E*m>pu(@7?9nA=pR>ex69|_L= zQC^)I&0ixH++L}3Ic|6Mn{|4~A%lsWE2jV6IX1pJM;kZOuaDB{&9wcW{NJF5+mA{l zNATOxS~6Tt)Fik$3lat86nA!!4f0&|{FGLN60cvV&BP$0dSKXWPjLWO z)WQrSpKv?iYgSGDoWQA$biXsDif8@hlb_|(>wa9IB!As+eMg3F%fCc%embI6PHF*v z0Uu}ogA4S@Lu7CUB&#Hj5CSL&f2JWV1?m3kg{BGPQod=iTA14(dC%c5tV{Z1H}!wm zV@fu+!n99z*W45O;yLtD&i)?_r_+b*uy5?L`O@PZ*A9R3A5H)arVT^8bmJVAvAD_*Ba>#D>cpt20Gt7PY&bD#%hU+Z!ITst?#czH64Y6DND$ z4^+ewCYGf%*UVIu1186WXZ^AxmJl)k6r;^RR+?E0U6cSE#*=BGyT3&PNuic>ubI3I zN7uFJG59y!cZo-L`m(w0Zo~b1+vq%Vz47cFo9a_$*Pp@e_MR-07xZf11xJimpNaaM8@;rMc)Y1`EKO{u_B z`otlS{7NVbNCR-g4`YA+{tr8u;D4VQz&7t*%!qZ#ztef0O~I~xV^!zc)#&f-Uh%Wi zI2!DgD=n{J)o$?d>>6GCqPo-#l3-7m>=Tme5Hb^#AaK*4>ocqs#A`2^fP6$O9o_V81s>W;AJ_)hqd>gsn zG1lp_uk@~ZR(ffg^xaO%&qoejU3ynmHLYy%+UDL_s@QXxwhi|8w6z%RUh1=E$Au5Y zYoATN?tkO8YnBkKeOIL9d0Xq+_3$?d?UJ;vD_Koe!L0VSXn9Xbv$iv**!GsKB6B+l zRBw|8#s`<~XTw99e5=IY!>4(@_ifYNm(oJbW@YJzq{KM9Npcq0Wwf5Ho-X_nq5U@bRXH9_dl&xxd#57hW9!uAMHAx+HItu^l*6x zrb7jdf_JHZE9X!#h(`znA$fmrXL{ij1%Lux>>^Zk7P)XSM&Ho%!Md(gf;|3wl*&AU z9(cj?z38C_zLh-t?|NNzzLQ1)^fDZWy?)Dbh$=sh)J6Sfq6#W1qIsP*gQvK>*K((m z^f%isK~Dt_jN7V}N0MmMrfWg(ll33oYJ>FJ_Xrrr|4NE~EbiRCV$W=vM!eJZbujTB z#SCM|51-dsyua7X^LW>qt*olE++_l|=1V}#FDqLniqX_V)h6Kb7(PKfmqseEw(r{y#VH`;Yp@`+I-o@c!eKm;Y1A z^8M~lyZ?XSeYdvwN80(_uO-$OL!4yqe$T-aEZ(k~1;cc}FKi+_Z}Rq@64Rhb*wOS| z3U5g8jMMT!hrQ%GJTIKbqp(om2+*saH1t2R(-D;A=4rYwZ{}yO?UBy!E(F?mV>n^H zm40eMg1OS%n#>Fm+)=@r*Gc4H| zYP;ArT7_NeYAGXyTi2{v4L$ReU~;Sw92^Yd;5wJ(B-aQm@Vak;`#(3>_upmd5zPQS z=N};HepzI3!M{Y_)$=yesQ5Nj_VzB=ZV9i1H#c$x<9$>`aW$V2^1mA@4q74l%am{;)Vxde4o|>>}8Mo%p z?`}nKN=DrCy17N)+bos`k+gT3@wG;SjxD8+{~5<>ElbrAnHx1rOuzRaYn06LmhboA zLO9KHCCVui=H(Rh$jKLFw*JaXyNpL%MtPACRVU-)2^n7Kru{Oo_*)JC>|ElDPT0-7 zHZS@$Sp)x-x!m87pp6Eey|!*@VW)+{K9R#%sWNM8A;Uqt(MaoB8b{7{t$6q>q(YBM z+MDag=DapiH(`hAR;Eu zgly-qO;D-{tWFfsLfREw664POlRuVtN*fsqDtkYrmu=M7V(l4$ngL>aSX*y{V-W($ zk9wN7KkJr}vG$86Fz+n+bH$w6{V=Bdg*u_}Pi8o$Db$ttUq$&?SmEN+bzHtfp+ncy!U4%k}v`py7aaHm>vXPH6YMUJiD9 z&my?*E>C+JqsvZvlSV_R2DP2G)@-sxU=2Z2d}!BO@Z$&)&f=M*6YY$(=;HP_bSf^* zI&yR3;{ihf!3w@DF8P+0D$52lsc3v(jw?lxzhtiyf+5kp>t;_($pL<`wpVNnaDP-L z)48C5Plr2|pR1w~!X1@01U z(_Z6D-d9?|HeS`gt93|N1#Tul6R~lKPbZ!ea=vz|YJu{0N#}EU&GrDG#@B#2Mdb#5 z&>yQ_`Mgy41yHMksR!TJqP2s z*4Pe;rjrHgfY!_vTIczF6kz*4*}nr{9`_aiRiUo4b%dO+=aEz};scXS5#tMAWA*d` z+4fZv95X9R*+b$NZ0LvFUieO8uv^pcZd?4so2Gq{z%65@vp2sFv8i1QSqZc=3M7yt z@%kdNe8V^(jy>Vx#b!`in$KAAg}dZFP2XO7*)XSMS`M*bEd5*|n?0Q%``=1=O)!C^ zRGj-Obgogv$JmO@rWY`)qsxcgwu@KwyEP3ih3p-Vx0vPg#l_C7`K5Sxx?kms>W%2A zV+DvN&E>}Z>|<@FcqCs>p*=A^Tig@iEO|{f5cFim#LwN)#HuBUvz%X$iC64rYVWv^ z57Do-xYU!S8PjUQ-k~I+?7e~GYpSs;hDhH@)z!c5QF*&(ld{)^m0}*AzdO005qTfz z=Nx1~R$>?r4Vaql_#bdw$UyT=S6^QHLsYY?=h=I2@M(`MS{bIy9b8kfhw+mrHRhz` zefq1`8YT}&wyz>;j4S-huxdP;p}8U0hTa{42cK zCzj4d_B5T^RErv^f*0Y1YY>_E5jon}%Qd0*0IBlEvJdlaKHRMA5&K-}kH2TW5rWnX zV#w+{BCM$SlAhx9HYx2p@^{%>lC3SP}eBMSOly_&&k6xE8_97#tUAs^zjSW%>6U^ z{FDFySsDh47vyob5AI$5e|TBW6>Q>h%> zyv(j&Q`l*FZ5`#6f}b5pbaMLyq&pHJ5+W|`pRS1%A*D|a8ytP9a?@;eMhGomar0w} zNnC#BiX0bK&V9t4;GPH__Z`tqJY!X+m#zIww!kgCmR+MD)I&2RcbeI7hHdCS1F!L~ z;AO>Xbeq&G?qR$F01$-Oh6=@vbx)n5%6QLDT6&Qxn!jB}7t7dv_0sf>M~^SuxV~$& zD2J7t+n#Wcfwqa6NQE^@)H)Th0C?)SS*yyHEk@xIANsZ|P=sfJsLs>U<6!G)Z%?CE z7pmsjZJ2~@HS8e4OiPvS)li<~z{`^77Tru^+utsdE~tq(kL&p5W;f=wA?-3724hb| zbn-}Ycuz88XcZR}w6G^}D|HfksnM>O56oX0s zUV;L1QI5raU`U?+)Wx%jXp6sQ`I3I7X>ko!@(sY{aJ23jS^{_n5L*0J)H=za2W(qGxif zG>xHRy-(!76Vxk9_d1-~I$zt_EsoCms69N;#=e}3hq2tw^Pn7u$@>H^7M_Xkl%+5x z`@XJiH8~X3o@eN1*ZP)?fc7|`5wejAQ~rYRAu9%Xm{)hf>-27K|(*@M8DSs-X z{63gu0e>Ke%G%#zE`i~S&lJd&KeKz^(4aCIVAX#*Qz~_^KtE$2FJ=S&2h4KcAaop6 zp%S}i(S9FH=P%9XdZYc@p!lF$C(Pd{E|N3Py{D{)+A-Ab*5oKcm*d&=!Vfpi@ocK- zl27#nAHDhT0UT)kP0zph2@mNV*GJjc{ZUq6kKV6QqzXc;9LbpU3IIHILS#q$zb-qX z*+hhjBrE=OO!Xuzp=R^5)^pE4UbiRO>(VUn>^rZrA3s$Jd^u@`4F@OpK05zZ?%IES zt#N4!aRnuZjPkS6VfS8d&sYn(K)cN_C5EHP5B0Nu+CJL#^_pAWG^KL1IP(DqrKRRUv8jLkWvmlUZK@eFb*IXT4MA*m zYp2*rqc{dA(%O#0h<^gQDw;~<)Wl<6CVfo39mm;Jf)s)bUs><|E`@;mW{3sInymyf z6hEQxx$`SX^jPo4@Fx%NyQ)!`F~OeupR+~45_bXDP7qX4S+c>*1ZZaNuAV15VX;t5k|cx(K91AFlBh&A(E+ zZdv!tF2~Ab3xB#J>@3o{*l)tGMc2c3&z~@Y8Im6dZS~%Z)BLQEfIkRpkQsovG`CgD zm1z%9b1dO+c=b#2?JIRNO)muco6>_TF{2xw-0OE2oexXTSl~WI4%a8lf3~pCIj3cb z^B=0$tZ4d)pTgLC3||`-2$pWr^ze~F5g9tMw~V9?=w$APMu!=H0%RZGh<-509gxU< zT_=ZQ>V14&8?|2^P-yxujO)pondSgA&9M(HumqwVE#_UH9oE+%G-@-1)D zjeDHY^{^9Km6q4zHN<$0S2Mn!hV;0-ZsSS7-s^Q+Okh6Ks%w1F=Xh}PkI{OqM(?cE zU!ka)SM0uZ17XCJc)YHww$$IIVsQL7Vu{&2wFTzbLgFbmfMtpV{<%HnXJB z!}gu(c1;K3z3%7#v$$H$H`>R>^mz4M-i)$ulcaVHYCQzY2mpy;pn&)av$kE0JBOM@ zZEFAODf{9>SqxBm6~_Ei4s>mRW!cq`ok$zg-)l}Fjr8$y&*>v>NCi2*1FT90*%^+w9O50PnX-+<(SAr{5OT&(szZ4kHMuAb`XLc;&Jr%zPh(^N#Su z9+K?DW95Ibe&61}TAP1|x%;<#*IVi5s>Oqe1GqxRuwhHsNVL}X|2G!;J%0k&b#CI& z`@S^$y6f!yNgdlpzso}6W7?-e!se^GvHk)I3*f$vWCf+Zf)HTw^Tk$E*zhFMpkNN1 zz5wB9@a0LNv^W9y>dfMBXI4&m*)3o` z4TScU{<_j_OYaH&j)tp4&S~$|Vs!pTdHWbUZ(F0^V`_LjawC%>C}3az49|#%#P<#>sTSYkV16 zl(M6CvRbob*Rn#%W{+zlNMDr;OIwyM3{)KDJW?3Y7-S&>*`I}inXjLlpH|RBh!O9` zM8Q&!2>DqoR6Ih1V@=1%&)JmQdp2FK$V`0#JtF;frS5-=9&i7nk|{#(5Uyc|FZ*%l z-LL8RZ_&giV0IRU1BAh6@o?56ME)q}!EA`={?laN`G@rPV=?}Bg4umT)Bka`5)aSV zvHPM3j?T*R*u~XEu25l2B5mC^0UifXzqXM>(pY}FW;(@okNPisqJ2-5LVxb-&==b0 zJF9AfFYuOo&I}S}B}^*#V-L^&Z#VtNz_9s_|3f{+>nX$C`6vwbJUw5si&DeYKR^F@ z{U7~84~;|0)M<;o0QujI>WTAy-?{z0-^<={^HrD63=4Aqm;146=7v}F|Buip|Naj% z-TM6Rql^B(w6-4y*yeg`kAEM@_J8r>g}IBvDiNH{Ur=F!@on~g_qq3HwLJev;-K}s zZ>RgeC%QB7e!tQCzbCsm1)+F~au>4ZEc`u^M}4|I@Pe2fF4or&paf1nNM!r{KSS$_ z!R+Nq-R!;s?81$uqS-#4;Z{70e~UtXN8h#ApLEg%9$ko3ied>hDcOPIvKq?J-mrBC zpg?$^S0Bw2(}1o0y+)vFqEX3);j(=w{cpVg1l)r}EQp+s7yb$H4PW$68l=S~^&R0| z%b#?Vr#261nf%CTF4c=heTGQgkE0vNt8A+LV|RZ{XM5o^^)7oA&uy`XfJqxEKW#MT zKh6GmB3+y zW<*XK>aYNN*3_Yi7xHUrb0`UPqxwh9^#U{O`+k4PKlVZJ#M(cv-nH+3$QgT0?n0HS zd*z5YJ-C?sAAwL)_SYVljq9vY>Q$=nUwJR7fwz0kwMWxrY{}@2ZVz6se=W|nP+ko# z{o~&0@j0&WM=#(@_m>PZSK$)&6C8DXSQ%c|ZJTP`jwXz=t-Tf$dV;Z*hwk2^ zdhl}pkljIJl$DIHUY2Lh5rzuRwS0KAW2+6`MV+{(UtjgH7MOpE>OAX1W>t=9d2?K$ zB>G6Dj2iYJ@o7d@Tc=*l43{v5g)2tPJD((bckNGz!0bDGKek!_*Zyd`OD?nJ;H;>T zzouxCc=lAxJ`rPl( zc-->PSadSWu$6&1GhDZACAK$L8MS3%76DzX-QkmO_46+5$cvY$8h@X0wdluV2Mpn& z{~t=ECf=k1mQpEb^jh7j(60Z|+Pa^I8&F}!w%ZlZSOzi#I5~!enJLg$WZBA$Lu;~d zxx?YdEWI{n^Od9|!DZ`%(G#5>JA0Ur9lNANEgkl1vxe*WQ7Pw1Jm=gqePE4{MkrDo zL#xrvLzCm`$D961p5|D5$T-RGcsrKLlUQPm({+-hXZ&a16ht?Qy)S?_6 zoGvi8T;)l%7a4sCp?OV=YH^90OKD(J$YvczDX6u4bFgU6LOk!mRQ|^s4tsC%5gt~& z{7JO`#rda#N1k@r?;Y!K*OfCoZJfk#k<)|XkjifQW`4F}J0a(PW7h@a&lqbuBV)aV zFI=Qv^=>^X_Zu+hiWwf{L%qH`z8$j3h$T%s3(p&GMWlQYi*^qe`$zAIYFU-Nx9*%& z3-Py}w_~^5q6vi$)QffKHY6>3{AvX_bLOQ?VJkzqra;CV9zT$qR&PEO=GTo)zJ1`V zS}wU{`Lyb;&JchEBZN3d>rG}42{MS{%*y*OZsD%19+fU3b&YOdkfNI>I%54YA)I&Jl`a!9l`?=2;v z=J$e6731P-Q2ZV9`#rseEr3}vN;Q=lBwvQ}yuK-$55JWTJKyirZ~~>C6P}YMe16j$ zGtU7ZSF@$U;;NhUqvBmh60ouU26!URotz6=TrQptXBX3JLnM8n=_&}e2Xzv+i!W0Q zlMVHbXnJg`^cw*Rihs42Sc6u?m->Y`vzEdM;czk+^H*=uIkrB8a2U=tvs?P@P!4Gk z&Iv>>`dDn=uHULpQ_Jep7KbyrwQ+f5VRhpqDA^t2QeEi^DV$M=ul;bka) z3FWRh1Q)oU>m;6=F3p@uLf0j&ax`~~u|XsP6OG2dvq|ajCt|4K5e`KtUkz;|$aIrx zJzU)yAeO9;mhie+gS+Lf=Gcj+yb|pKi1lUdu+b4FMQg+3e=QurM-CHQQbpXv&S2-^ z?G~hquAN*2QUEwDejMewp7yAoN7nXg0&<85?SB_5m7+R%_TTg=6)YP8T(Iba*Cw|d zOBMTF@DJrJh4tWpy>eKM^Lz4NY9bv2Ql+u`=Sa93j$Ddl*RR=aUjwpFYC>^ZoSkos z6Xd^hrHeWk%C4t5(gUcKq|!eGc;d1K*j z>ZGp_L_moe1`~}Y%k+_)w@oXff(LkcSb>X-A3yD7YU^_}7LqAJgJ>Yd?DK2M0epu+ zA}9(i9@0j;-6lVs$F?hfw8Zl`I2t@{-_i8C`yRVavBjGR@r=tdL?Bs^|dqmWbQ@JHP~*(xF#<53+@AOlr;y zVS1#QBr?fQrxXayG@qa$fwMF}e^~cxb=^+Dz}$iBDey5%Rjm#@4|M0}B8;`Mz~_D> z5@(c?;6X z<=SuTJ7WHP-;%Y+AwPUbr1HIFsZQkBVNz8xtV#>_F{LCor%F1?WMXQ>Llx}wfqi}TS&Qwf66I8p2 z6y@1sX<5;sZDbEZbH@UQfGJGmKx|6>)rLYnPtR0|>-VGG(l93qBO@)jaW@HEhP^H- z1)+UH?k)`46k*A;?R61oa$8zcDb-kRXL=pNVJLqDd8l!PSPeyN>8}8FDGS<3Y4~Pt zO|$gtj>8nrAlcANZ&kKFp~ZZu_(w|7DDY5R5PHqK3|C+tg>@AHOtTD^K$0n)yIzr* zIqSt0=$>8yH{++|zSvDM*RBm!iZ5hKw5YYI8G7LW_mb>Y!hhn6Po8VefMT&sIE|xH z5F;8gU#0XFc9%q(+~W`JD5b6fL__YPKq3~dw2k+DVksDKsR^9cCJvOCe_$+@c_iE0#knl075~XnAY5OcRlrzrLOEFH4 zq%^$i7EII~anbdzP@#|!A)Yk|!`bUzJbD}mVJZ_vs6coGziTWEokn=j4xuUB%ASLOVE z$`wKT_-uBwgTd8#>^xuM!D4s+g#^fPLezeKf`Fy@WN09mn2`T*Ca@V{e&7FHARy?} z8&uZ!pl`Z^Z`3G9#BWc!f$pV1AfhTC5??sHh69HBh6KMPXl^gxb5SN+KSvJRlBx+I z$?rG!F>sf7K~^|<(|#8;p-CL%j&Pyf${!i<`p|XUTWE8UZr(nM3?JiOFl|5(AmKwu z%0FBGf7w-d`S4=`7*BQ|14T0Ku-rZkOTF|_&RRH^idqnT?viBq=g(3nMjAcl#|+2D z!k{?}Km}eclR#p`m++->@czJnIiu9}v7@`DkRMOTekYKB$uKAFy=C>|>ugL2Xv(`j zyC-Dg9+$09^*67YZZPLZ@xErqSm3QUJ1Z@&GIq(UPdd@u?Q}UDPgQ`Ufr4gV>3Fvt zQ&H9QqXZh_5a8+r7Q^h1lpqhTEgKD9C#HE_?fysX@sJXI zEPj~%uUGNEuTp(oe&xA>J=q_o+Kf8l8XV>8@OPu^^Kdg%QUt(+t!o5Ek?bKKGbf~; zR>Vk<|K_F^QhrZCxVqs%H}lxFW5a|Nt?v3QX9rW!PeY;H?RT5ZkTnik3r$kekK#fq ztqQBSYElFIbNw3$rJZ@-F9ILdert~oBOZ_5eXN2zoz<^eXQwBmGYQSXw#1=>ZI%{~Y)~ zBv0F-d-rYXd*7M%KkNQ4_w-`wc(i_&@Y_?|zQY;%?{%e`o9csn31yNBzCW{C_W< z`@a9?Gwyxro1emBzXlNq1L599mqEPj|- z$95xrf3Ba{-XQV%zc}H~5fj4qc0&;^P1I$p2nHWKT(Zm~s*Ke{|9x7Q4%Ylbu-O5_ zAc#6L;ro|(!pM2{hvH<@LS1eo(-^GMq@7ck=3+k>e|ZVI(nc*jP5sJ$-Bzh|8G`Ys zQoxP*x<~ye1%o6$Sp`n}Z1zxj+R_Ha32vnpS|2GCw;7xI&d;GM$4cWPI}^%Aq2?dM zR-pb#^v8xE%StJ)GCJ$`%KsxZieI6h`B4wX)%rds=l+jN^h1l}`q+?u=jr+135#>$ z{Q*g)AKe%Nk@Wvla|1AbD8=ZdP4J8QzLv1RSka05zv1#x%?Jp>C;VrI4xPRK#c(`v zryl3ay9E|KD!}~;yZy>hD=)+6>s#AI@3@mJs2zHC)o7#Nh}o~-wS1vD#NBJ;6&8$c zHVO>~uRpU$Ky^!e6S%mBDS;|9s7l8ia4*xBoX!dVha>}ZJ9Fv=SQwg2XL;mEN`*sq z|6VhFos~d>EVQkWeEnrZKkdwLWJXBq`F{ny#nJxbGcHD3^Cy?keX!uUD-2!7fbCzo zc<{0o`sODjj}kd%eXdSd#+?-2zlVd9)0!E0G)y4J3IR>}X7 z^T8YZT`)UhP@f!;`YdMJyWzDZ?LujEucA@X4^EcPW&1=Mhp7f$2iPak-kmXvrb)b% z9bDAIPJIWmDZ%Qz3h?v1{-$+%Xs<=)-Iicvdbm(Qf&Z((fDWaX#^vlTRzy4dzBw}4 zO4HlOO%V-@CroKTZ zU(gCqdY>G|q-0G%O??R%oCPEW4neYW^V2_=x$K9&=q+g0tB%CRC3O@qUIxAqs7AsQAUw(_^6KkxX!;gF zLhX9%F0EI%G^ZF5-{a+i3p0ip0kM+;-)BJmU+S>^6L(jT{IBO5WxQdXn^&CQYptyY zbAHH=!G266f?1h0CeQPwexv7p+@@Ogd!#)J&Eg_FU}#W!I*!zPLm+@721TvRXcrvb z)|fB}$(bWj5+S+n_xs?vYkGcAuaBf9?6XqduZjr4+-oq#w>$+o-0Rws+=I%`rT+tT z)V#K5Tn$?3g55lADg>yd^>Y8as@|ay zWf7{|WtEG@r@j>)Ds^q>>dIx?!UO!~zk49<@YAtm!<`H3DChP{=9j_H&N;XJBw@$R zFg}SbAV@d#>4Ju7p(l#n+RnH%J&dc&EMABt?i6RKgp2vl0Z7UcVOq6G$B#`DX1Xf4 z-^H}PRb$`3CZ#OtzFlb`1WWaObwpEk5D+YBWa(G+fzdFalYsdb2hEDHNv1N7CP174@nzV%RqgDsl7-&66iWa=Bvt#epV#5 zjN~@rS)x`1x$H;HoE;SbLWOA%4IjhK|7B;j;pKu}epXW;c827E$C;^(0K;kb9sn=F zpRaj~T@D-Ku|{`9^L<$=f9}I=i*)qC?25co~os}`=+$7%S$=wFyJp4sW<@IAJYnEr^rkGo4jk+?FKnsAi=|FvYauBfNf|R zl>^P7WnvZ5-^Pm*L~xwf8Kw{-I(;olFf-SH{JNyT5iwmB|&AjfvXP7xLZAv zuuA4dvd}I~<9aHBeb1$C%ooOv)xYWW=wekneEsiTZ5$D2*;#?B647xZe5;Xy1O5O# zK*GP~{nZeQNRSs22#La#3I*cIv4Ekh&BpV_f1{7Vzxkc5>|gTeo)-ZzLco2&%5ra< zJVbKwlvcI%NO7$ptS?agqkmw6c8ICUV{})-IDZZ6^*h|Ajh;nsculKTkM1eU6bKWe z``siw{&3faOnJl8OK{1~QMTaQi;e%q1UKSJuGyp4VFSOj!WeJx`oGaV=iyW zDUvqWyaxPTpKlN2eG&lJ^R4>lYrugeAnZ9AiJ1k@FR$L?{*tYNj!8j4@01xmWtQ0c zFo&`47yTov>%StLTk|FWS7BKZkue7Xt;3uI-M>VAxK2gp6Zud8?zy!z1L47MZHfm3PkT1ELkgs`*)i2n8 zugv~WmHt#*>-%>&;vd=kk;U;do{>$ky(r2*j3p+^COgxz3lkth1_4be(Um*)f=&X zL;`=J#sEGflRU3gO#f9+I)vU`fpx2g^^_mdbPUI~;S0f*KRPuD+}=@koIpejzObjY zBR+G6Btid%Nw}{oKKhDK-Q>9Q&bNBAm8+R+5oqE|qQ+KOqm+_vjUZ$w6F;&2K2Law z;2_O+w;@lJZ7$pG9%7A~|LN#93Ua61fAwi4YP2f`pBiGGCHwt~!-cx8?B{7fHT5`$ zv>~RToyYonBmuAUS{~}`e-3=qTGppt){irxZrS&Z25I>6v$JvS;OeJnfsg3Lz7H7R zE$Z_INk0riOdI7OJYP1PaYKX6SO$oOhe2&Pc0vJkbsm#Q1IHOq-w5 zK0e9O!v4Dx=S3G^_{9%N17IeaV|>~_?GNtiwderhGekRw!z{1(M{i@(AVdK>cW{hveDZchc&Fg{=z1VBW3`A0VNH+qW`rhM-r7gC_0s5Gh~(es*sgSMBW z?^&65nN&=SJ=vLM`h6E_e3HI-nKT0UO5B-0zYUwwB!G`i|~#QoEQ6ki#lZh z@6Gc2rDy#y-Fr~|fV|}9fGvM{^y7b8$RFSJK2LY<`yX$zhwc1d?-R@6Me;xQ-0LZc z7yJHi{d{jntK-K1FEJi=OhGgKZAGGFTL>osNE0Y@4m0_{eGk`=<^4I`~?0#lihr8^!|_N{w=qB;b`d5 zSM%mulc(C-1uN{nh2_XT+Y{XSZdLSDPFA1MX&+(eXgwWJAFD5dY&MaIhGagqeq9jz zD37xFk>k9+9L7G3y8)K8wEMXgNB5a${?lrg5Aq=+s`pXnMFu4Hee|8ozETVi^OQ%y z?~_Al{MIuJ-)rqSIkfZijVWeg9}(^TxshVujgy@=-#-OmDo8I=BKPuSnSLzx&T>9% z;XVvynq`6rD9D%+;po1v)1Tnekzc68+q8v#y5xV}u(BU>U*xI|KKzS5`y)ie?H{Mq zQt7C%U2AnO^}nO)o3H%8O=oHQ1AuU*f2%r`h8Q4z!~x%EBKSTiUO3(_aLelce{tRY z_r7WViN|L{@sEZHfdhB}1NR{h?R-PRdY-92v{#isf4_7??@BpA)I5 zgFZ(EQ0bj;~fecIor(lC<^waaBM+{;S!K*+NttzpKf^A-4sic)9(1b#N3;*4GY zD2M*IwC{c){%^5^d7ptQuSIU|2e6hqx2V<4L6bjo7Cq+0%2jQbZKb?+r*;x*?jZ}P zw81g(c6By!evikk5@x@TCY=GJ}^rHO+(p5X0n;z!d(LfdmFiBFz;i}ot{ zXI!$tS+uFJd2!RZ`E6|fE$==0yU#6~EbXQ9czE60;pUM291~d{Cl6z2(SjV^Zp{ll zZL69HZ(>)`yD197uS?TWH~LKH^pFg#ImzhH%A&6HDoY+UB-exta=U8W7cyx^L3<;D zbZGIvaIFtX<;NPlv21EWZBf%bhsyEe{xjy^UM271fl#IbD~BC}I!IOpxFeT{R|op- zGR{WVWHm0IZ#0F4LC>vmU7dd&=VZo=Eys?_Ai#l91`dPGjB=14c)SI8NOvr&_+u=n zY%9F7*cV30V?6GI#KXVYj|ayiS&3y)Veu}_t03mjUiBHvPCTe{jZcA&Bp7tF1SgVB zgnS(GbbO*{b?-K3l(~&bKXq`mAa7^!S@1xxXe_-UCpj)Vnfd|&cN@(HJ+HBr_AA9q zdFfp7_-%et;Rmr(7o>OzSatAqnhVW_mrkuNSEtgspx%V!@bHJ_caD9_1$OQ{GA%NV zPx6_P6CssthSU)xP#A>aOC_cXR&M*sD zF$w(R$b~6G@<3^*%+R3yK@% zaBv9^`61S6k(e-bI&TxX^uM;7LCpoy+C?3Q3N>0+DOv2?vmszi4i4Kxlk!v69{c8> zZ->Hj$&+1+wu~}wLP)VUm1p^wvWHiN_WK_2ZobqQX@hXPe;6j#pZk& zzAdIs77ij^^Jq(j^Igd8HD)$G)*)BrO~P+_kj{6QyLEwJScR*$hsI+FIHLiC3i`NE zE`+csY(oL<5mM<5jqd}=5=sZn0yRz>*s4a$e$_32XOP?0bJg`buvonovYWSu4aar% zZ50nS>w-JN|Bkp8_>Shg))kyZkspMRHYWXf$FOv40@i3P)`A<+y*{fT zLL+oUFrf23{pjSsnT{t6m3Cokscu|WXI~Nom2{h-d;=#;=i%H5fHZMr9xp6!xNLwcS zNUP(pbUtoMStp}0oix*;y(x{S%#>ujwt1~ylV$0&aUHK|uxB=WHY08nsL56f=xd8L zoG3_nYwS6-o^Hp`O8T8di;u+y?VoA@h2j1kwGNwdb&KbT%hGVOr5K7+3SVW*l{btp z;o0Xf)&lr*MPMBgaE8V_QJ1{IbIxW=sEOdn)i(H*K2xHmL?i;$@`~0(dw1MDlZQxD z%Wl_7w&U4vuLE~j*4+71nIUzxQSj%{ds+@eQFeT~2`>!1{G5Eb^cF`yx0tW>|- z<(tSaM87q!VUcY2m>%4HI8V7k+~vYNHpk0Y=8kZHO7n502Vm6OkLotj`%g;}Be%1T z%}S*LT3WSh&PN+Nc6De9L;{0S_3|eJ?$_p$Ut=n8We~^8Wy?~j%Ez+(^brVe#I|+q z>cUDP!IFy=rlz~Aw?j!To2h8=wdL%dBpOOCAeVO90|@F2L5N1=>^T^v9dT$L#_`lg zOu=_~1c|Fe7j(+Vo8P$PlD1ydE@wO39_Kj>u#g-flnqMCNp>;gfy%0qcZD_y66Z>? zTj9F(XxIfM)1Z{fE@obyE>Q!o7cf9U2Z`fUKtx9A#6gf^Ok1?>J&ZTm689Gnm5P4s zqovBW3#+-xABiO|`XL2fsZ4zjo5M_`3oxh(iWm-IUb}PKvyW1|8Va2RBWg$xMxQjU zFCE1Pq7Y)~G6|9Ogm8JG;rWt$9NNRvQCHv)p_p~0+k9Ca;L5EjP ztaDJoEt+s26_5_gp2KE|#Av^C$J%lA-4`F%uHU$9ciNQUlvo?&!8Xm<96x~^XN8mp z8d}K<6dhpSh{EZWTNUCp8bzZM%70EW@%XMVI$5n(z~H$;&*dC0KlGP2`NNM<35XG& zR)E7sfev^<&exGX-9=W#{Y1}{Xp77he}MtJuAqt=Wp^6Y(w2S`U&hIi8KdtQL|Cm<719aVvB1=A31GS4?a6iUL z+5B+x%jiu2x7odr@m^}8uf#xoVv@|sN1K^t03sf9{lCrsL^>~>q9v06<_MMk7XrbqbsuMTb}_kb*`mb+) ztp7&rv!lWzg1(r-D0!rcauD+hR0_ZBsnPR_z>mitD(ZPOZcMg{to;nE2fTd5i{VUZ zy{B=1wqjbKUo;)IlK{!f#ltl+TMsisDtlv4eBugc~O&+^q|cc1?LFX8L;{eGzUyZx=a zX%Ro~+e7j$`8El|_dh54ZZAfu6|Y?-dNk!FwbG+N{-aPAXtF5%$x&$$Ffl!Y6hTE* zrLHK{6%T>XSh4%^iAzo^Q9#jZJ#-~6<)ox*H6VS)HL!olv-myjtgRsT5-IDLzpp3V zNss+=TXa5a6hRhkETB=+Sa=7zGI8kp)F1ZD5&JozM_z=Y$a=CG-Xfk4UR&)9$pnEU zUvaTTQ<8`K+I~`36D~nTg~bs(Ee4vE;JCQF!g#fu50NSTcA#PAjkc)+dHuW}VG!b} zUS@pvs#-rcm)cfT{LJ+f#&??1A*AKBph`3&<&obX&hT7|RuxwajXgYqI?2Vgww}X@ z;9;wpf@_{VwJdCXH>o@xN0a z#p{zDD8SdP`>$KW^|iXcd&%*>_aDpopEKQlU)$LCpF3CG=}h@wU;2Jr|DM6VcO$dz zGyK27=3D50g};mc+daQ4`Fwx+|1bRge_!_ful4>P!}uXALn}?TlasL-lsRa@P6<3`;YtWcYn|RKkxs~9qk4SL3Tcm zrT^Yf{wV+JI&SGCTIDLx>mAXRA=|@yF7@tlbja+*`=433;~cvK@k8D94-Ajber_Lf44m9 z{b4Whu3Bf6ER_GRZ~2h__hps8_l6Q6_FoNOi(V7`whjBWRg`<Nq@7vwV zqvG|>3-JQ-KLN467}wu-_xeAt_4uUvxyq~ci}!L(e$c(5m)yx zhq<5JNZiA#i}3y;k(x?vjbzG)*I0bl^fo9wJnEB(U%!v$lN%(HA9e5pJG+-k-h^O8 zIZCk^Vhk0bigjbVg7vk~#vkH3$t+f81C_r$~wjvORDs`0g(t%?n^^B7oVAV@sC25^Ky!CiH5AQ4{XrPkjCZ3SE z>z8BF|K=X>q3WWS2U-5dVCyXAq~lhIMCPd+tIGT0JI>iDh+Tj95~g1rL|S2i6P34G z&v5?bTwfvylRS>2n(3*d>ub$oTQR!rDAJzOSq*jhT$>8SDzNq^tovfR+~eT*SxB!s zHW1E)9TCh4T89pcSR(Z(<##sat85Qj*mXtip|N`_j^V!fIZD13f$TP}yJJ$_PuA38 ztoFR_&wmW>Ez4Z`S;}+IcBPI)tW2zi{JcCzET8ix<-UBLx#Qm6l2YcT=VK2mkhDFM z)9|`g@Q*HB4lsi$5F&_ihc#h}#yf5vn$D5gRc?j~$n}*5$CG}E4d9aPEk=AA{be-{ zQOQO?tSRUh~!o<=~{?I5xqF70Y7QU}B7I$>CUO&bi zR8egw1fCMz%2LO#v43Q&c-rOB^|#`zkfGj|0SbYf0TFjz5npiU;kqJsXPfF7@Ew%|zJ(~(4z^o>^TtSm zC>9~{GjpCVJl?4B2_dl3#~;SmtdlnO0*~2-IQDGAbXEEvDG4)b$y5uDeBMLcGWzdF z!-5NW2)y{}q@B#zq!rwErz(cKHEaCs0uqzGhCM3w~@(Sg?^w2|o2sTx)c z!Kxn|o~ko>J+HU9*1Y?jAEPsoUKllKmeK(cjzx+&sOU|RZn^h;Dyb*n{eoV@?RS5w z9C1m|+AnhKxJ8p*K$o=|nk!DPmU1Sx7Pgc`CT?SYH9PM>NjHCZyTnWfOiv!_nZz9` z4)%@ZWc(^4j%rUvLZLhroC?weDp3pTGhU^zeOGMw=-uhkpu`rX51pA z`9KHQ@5Z-wh^LI!-n}t)T&sF~Y{T(k3)wlz5?t-Jdb|@2YFZo5NwMdqr_}`gtjb@G zPMl+`+%)(@OE)hys&0{BXg<48v3{&q35l%0xUg>PWbo3;yH0<{cNrjM#BBms>|&c% zuPLlPPOc|tCtSZ!mtZ4-a)Y?LsDY#1DP#^SnN3 z{#LC^zqJltwwgnzTe{gbaIo8GEk%g={94y<;3!4!MtvQ4Jibi}LoyMgs}Bv1JZX#+ z$UvncD^2*{;9CbSojsCYE_jqn!y7(}CiABP4KBGV)#TRsE0uEzAAAOfp#C9T-0Sqf zOcHnCqTQA?%P@*$AAM$-xPMz06f5BZf*_g!i+z+g`*HQSklBb)eeJv-Br%SPgfMS$ z3r2|wBZ52hNP$F@wE%w~#r||MX{A{i?_1daRVkb4NuZj)RJ|@bBLz9N35V5I4yfS% z-LC&sr*UQWzO}XdL9ywV`}cvM7=ONC?X4kpEScx=+<))t5W5J{|If6lZ{H9ldidvl zFKD%_zwO5Mb8CoMwF6;k9X8z~&ViugEvki^9A@`-=fha^Y(}5CgaPj{AVjcPitdSw zNWPGu2`AN=zn zm9AtFIlkPGJ%k##l&W$s;lmz^Cmgq?(nZdxD8X`yAY1j5PfVx%1lt+Z92l*BVP1Lc zfnCOT&2=nmDg4NrvSF4vib@OOZut}hX+|>Gu`yu&g9-VF?yoJIjzvq1Of1mc{fE$y+Qea+wt>mO%)j0rKW8ahL^oOzv z;3cqCF<9}xkJ5c1!R*ud@BWCET4atRz#!1`KYo6f(I5G+^qK3l$`+Xm7v{KnFy_FP zKT8B$;%6U6cu_?7%zapHQ#NEuKjOs}@&e04_7Ttf<(3p2IHtf@fq9@tc}lAO(*N=% zJc`a|IU)uV;m`Q-?8dqCFdjp`&*M+R*rhw;0k}ul7+v+fdja4cAqp@MC#xff0e-fz zu#B6-C;s?44EmWk6fYk@gZCMi;bKL~u3HQ8h7~o=Lrrh zJbKq?Yp>*N;C8B3$ad|mKHGP(;PvBt1Mnz6P+skUo$IDfBDY0 zr~OhOU}T@&XY#Vv&hNAKwLeSD_n!+a)}a2Bs3js&B8x(*i)az|o~G4hN7_kA`Kc5~ z?==TeBSIgd#Y7dPXhlRuk!b}Si7LAm3S>CW*67kIKieXR4a{9sF}(!*Y|I}@>6HIV zY?h-+jtZaBuip1kj9xYx67TD zQsFLrwSTvaix3veu#pW24dPkSf*D`(joMj*mJOj8TOPGR>bFVoQ%(?bWDWK1I3lcm_2mIo56wOUq~ zJyEd;mKNH|Jgg`@C2|DS%Dt?lgzlgz{@3$zV7fX#Wv(}7AwXnC=4#wir)I0To}v{$ zoNw8uiJ}fbjtF%v4WjS_5&%_1Q%=+s|2$Y&P-)stJ-mgB@qB*6&0)ZLy@c;S?H_>| zvl$=oLekVQyR@k~<>mSX`z+N$6UYdVO$>1WQV;kG z^odXYSit;=z4sG^{raES!_@kvecAFv>;FGj7+XINi}RQN&&8s&6APG?hH;Uu41v-$t`{rtbn z=Krd4z}NJ8U&r2m-!z-xA?x$Z>IK&zazF4!m_?QJ#`hxsS0JCE@lFz7wM@&MC;abl z!+izBY8TW1krN$xB0i zbrz=g@nY4o`-y@0`m5Ox<{sT6{K;mnLHJ*7bVeW2o>TN}uuRo8vimz{rL-um@TBGQ zn{F$vH9{LeJG=_m?!pCj>ZDPcQj37p0~4Dt2qf@e)Vg^c<{a<#^fm+v1dK)K-mV^ zNxH(OuWXQ!CiZ~Za0mA$;PuDn5p8COWqKf*nc*-cFyqUC>k*qkb{-;awq zh4y8T1d9z+g2K-qs;d@hx&Ot_H5Oe=0Sqfh?zL2PV0G724;h&t{VTutJ%6kp2J3X3h&kiAhsKvy*doPd=~lfoVe!RLdtF?^D6`C-6)jm)r)qJBCur{Hd$P$VwMx7mh@;6E6o zHtOfuu=hbFjS?*%W19-4#!WIu-E3C}=w7{#`TO}IPmfxb>l_&)Ixl=aGxO1#!}aRi z>T<0lhqUyFP$%)t@*HWX7gs6-0Omuc$O&Ra4sKqB z_*8|51$T35wZ-I%Q>#pdQZaesJU&H}^+y9{f)KXbP4f%Y=Z)LCX5;M+8#+C3DAO}4 zCNOE~lNO(1ShCw^=eXkcM(Lld;qYRJv}(wmyL6MK#J*$sj;E!og>ZaX6zegMaqL))8@HE}a zEiRg%H9HOV9eF+ZnP)8hPB`g}p}Lk_nyCy}a~uDU;d00;t)G0GSk-}dO>B6dX75O$ zS%{;s3LMSGK}?Z7FBEy@sq6JO^~#BR{MFxX%h6uHuEAXTVNKf37oZw+PJ};J!*?7a zay~(^LIhm4OjnTFIA0+x`i|LJGVhpDg-JgcVk=srzWTT7u>rPj%!G_KQ1u?s zYG|E<6%EfDR({7be!~81Uxm{PJU1YJaC8oIi3UCupJAxxo{Gm{!&U&X?6 zB`g!r9k-vd@QCqpoECJpbWi9zYErha-@0;TNuqS?^C$#2EOBPsDDXc&l&t>^%5H(6 zOcq!`B8Q?NCbR!`NE-l<$c=LKjXbEKXrg`4A@;X=hcE8g?ay^avadV)G`x?k|8ZIV zVt!UX`G}ZP-l-hHUJ>;<-X9}f>WMGQ;=f#h-DGkQBEUz8SNXK3#6Qe+!&&59`!!Vm z!UKfcO--lo_Sgul`6~Wj_y$rB`{Esi_E-}v>3WV?bjIeVAikQ7`M(5npZ(Hd_s00& zc~F3c+lj@5j0oWp=Bj}-{|2Cq;LqvLs*i^peS41+%&g`Bb=#aatDwdL@B5&~uU>2= zuZ#Dq1HKd>ejtD_Pr|+cJSk*RAK`?586u4;j>c9aVcfs6*##cCApP=mDf~MLdgHM% zH+DLA&UkJEifnRS{v5RV$%O=IK~)!HDpC~J_)PZARu&EIep6<>rN0Z}xc3r9Y6}Vo z5(oPdU#i1gxm-jT87}ybq2fGht~C-N#+L1j}w>h zkEifHACb`gUtQ?FHyh=CPp);h#p&@npA{v=zx3bTf3gohJKfFwUnl8*pTqoi^bvnc zmid04;pcq}Z+Gy0-o0IPd_TAGK38MrrTAK(d*Oed_x*oy@&8xL@_zT({y)d~`_9++ ze}|*U`LzP}Fo_`FYNg6p~5 z9k;T&^89=#z8{&u7z9s@%o4gps~Gdr+o-YQT7MfU`C`q7zU1U(+=m|^S@On zM+Gnej4N})1M7N&c|J$F`U(999^2^tD)v@;A+?;eOi%B7R02O~(oOt|tiq}?pNyhC zKe_f^+SXRC1QEANS_dS1s_(^;5v15IupqoK%1+$(s zV0iM~`AV_ zhZC3Q;o9J*CC8r;L|wSw`U=9*Nh6!APPCUD=pNGF?PDd9pJnEXYjZg`$OiATA{^dH zYrZeWRoeZx3xaa|)^w`kYjE42gH!qEP%SUO?MZMbLv_a|`%@Qyi&|E$Jh3&B;n-~a zg0CeoZohcuEH}Ho<`(sD473zacyr)})GYOacDyT2R0mB?@D4d;4rl*{4wWfS3OFL< z4DYj$6#_bwvU_XKaf+SRnQYgU0<6<#hXY&4*qJ$HUJQ*(>$$g2_vt8?S zw)(*mX?bOfzlCX?Z;rRJV`o8B#ThC>m}|y=ZNqqj22V;wZdij#R1MQ=_C$&%W^Dz( zw&GA#rw1!(wjrALxhr7NwnvNOX*|4%(#D1sLU5s`iuV>vTFR{?0N8}!mw!p!W`@bb zu{DjwweoQ+n!nClufugKWbNmbUhl1r43~Ayk73G=Ii2o6NCs6e?ze>&Z<2GH-66Ge zWZYK6uoua}5WfQ{3`mGE@z~-rSC+U<_k5t?e=@wz;GySL;f|yU z(aUQqPQNVbXs8E8t9OX&^Y6CC4~`EhO3G#~+4k>#u9*+p!qmAQyuhRtWcp7#xci1_ ztuMo8rb|2`=yD5#&#wT6u~a0sE^rU<)D`%4ZvuD|%p@*Qu{^w!+km};nCB5u3<;lq zq;Vn^2~Vz(=a2n{M_+!Bvd?F8VgYjE<{ETq1tg-Kk?{-b$?>x;-@L*;!MBMrGX9Pt zW5~>#t}pgZuVM$6ccfOg>b#3Nc5OQfzdr%~d;S5|8bKIAEJyh?cfhS-+PAe)^ypBZ zKLF;jOVA$zRi?1{^10$+H?dhU5wY2}@%Or6ovM$<5%s1`w3f$RzI7rzw1wEAq^F-{ zUZ)2RBa`q`*Jq`y)uroqegQf!Wj;IK5d-w3klFtmqBMCP* z0lvV^EWQX$QEVDJ`V z)T9luz??fS`yaaZ#KZlU@4AcZJpagRKb2fG0WLc}6rHZ+gn8 zx(aNhzMlFe7Oxez1GW}vOSiDA2!sp=WRDOEIZXNy zw$d}k<*6EAez~mXB(IJPlUX;`$wBAN-pltfd5KXhz=IcWbA)BbgL!Nnj)PfOAnjEm z(ycO!$=1|(JXef1qs=GrneluirxldEeAGFarkTjV;b9*encnG<+Qt1QZpRd{~0$Qm7fy*v34J(dOPpP#|^x**LsU*6J{ z_HUS3F0t|RN-2u)5cx*z%kGqJG|3n>YIK%|v!>jrUU*qO3ql|iIaDh2TG=-znCKJm z^1g8L7da`&#KpyFf%1b8{x`uF^Mp=}fj&{(-=3M)_}ZZg87!_L0#n4L3|)gjHNyR2 zlCk>?iLB7?*c6Bg{9ii0@gcUN5I8Dz)AZ4HU&}CftDVh2ex-^`5B=kNGAfYZq&@?} zpb)@T=3_bLAb0L}Uf|*T!~c1od(tC2y*`rS*1ogfdz%Dvt>W6B?l+cnKHYk<^ZiD* z4yqhH|5jd#KkaYi=UrC-dYZ?D3$~@0qx=|-UMC!s0fZ73{WXYrnLprAF%3MaV)Nc^ zSb}QH@0tf~JHk1pa6(yyFr`w%ZVlpoaQO^H^M$3MnZs(1ORv3sM~j`u3qu%e?qXqc zl779!?fnmSS-iix|B?Fm>9J=%d3!R!U-N1f-~K1Lko_M!rx)oR@%sOz z`V=qiDBt;kc{4!EQba6f?+gE^1Sa{Hc=$vXua*OyzCnO1eYHT{(mtg{Kb@5h{2#Ti zcX#gx{J@9@h9<|9Agf>xkA= zF(qCh-S__fyKexz1tM~n6g<4=+CVx@NgpE3mOcHOqM(M`Q27VnujzFYUORy z(hH%f5tu;Z1K~OE>~K>$GeSEPpcEGJPq|2?N8i%5qoXK6g49V%hW;*&m8I?vVinz2 z10e995YRd&zEQM)m-tdE02O2cx$bSc0{{1KtY5aI;-ebpe2dD7D0J^m=Z}s9t+RX8 zGaZ0oM2wAP3|+(Qq){p?*y=j>oD;bdx(IrMmaY9rx3purLn=}bxlSqXy!2Z89Sf^0u>c_oehHbLVmfci`fyVs>|etu%E5_TRXO511usM$o`R9wkWH9L6mv>OBAL zUikWTFHpz=uTXk*{S?eJA$+_7n)1yMoWNGm|nU^32j>yz-|1FnPy zfkaNB{j254_tY5Qd~%XQ0EmXO@!G-bOq>4u%xc-&eGCBR{l|^|v1f0$lFYiAC9Ony z79PwYiyqL%0K=6fFbViz;N zv$LW7J;%=VH^2Sd`rpg_KUWvs{zOfGC;fa6?)^^N)+gfsmWC?;y|`iD1Q1`)Aj17< zHvS*|dEd?`_|twrOXPfi`t*9=Z{Z@L`99!(wQueI)EWMoPv6e+c8{;v8MM-(zH%Au zkyQtg*33q(1oL})WafU)fKmY)z z1UU`M)id#g0dqLHEqI6zrTkx5#%K&PWdG;S!tY=9>-W5rhcJB{0#O*Ze1r2wj_32& zQ%SmCdRE0E2@)KjCZFpkL0;)sO>SfSy$ds;8VT2d($V+ECVjW_{JCuCu1~)&t90k3 z_vstQycum#jH?NM7{2mV4>nPj-l#$9h@@6C;WW2NU*8oR@ud41X-qV9g!N=YEs3_y zRK5n46$0$eq|IORGeTNZTjTt{j)qOBsb{YYQGdR-obww|M>;LbNQ(>WDM*R})@xZ- zIe)h!ZKf_kPKs<R5)O>DG_Ko0^6UH*g+jw9@QvE{YO#uS;^bgA=X-eKk?5>@k;P7ZWt>&zj+}p_9=Fi)QuNxex^%s zPbV0C43&!yy<>^8`)Qm8R2kY zV%F&bOUxkA9V>JvqIs{k)AxH-Xv~|YuBIu2{^snJPCf`g&e6K?GpPhcnnTjF($_!e zOh)9&x^3XWjo>K=RW_1ZyFr7sAa%zGhSHu!8r%P)ZgmR(%EL6+?&6zO(c2j6pwZKNJV$?8JG+pN_tMCG;cJY%PTAz)vVrRgPf| zoBzH#hdAXBvC>p}476!@wt0UTjC$Oo{-07^MRu?|WV?9VE#w3cUPvfnKD%(Hnl#6N zhu;q>Fz$Fni2J&WP`RF{p7FI*4qP%jVyZ;VLKZTpoM{ocPc;YFW~TBga_Eqj0AfN& zT(Y~XZjN#vlEe5Ph92ytTm4v~Ds-5`)8{_D2tIMH;dM&nKgp1}HgX0xFUKSt-4hoqI`e>s!Rch8ht1s5 zt11XY=xM@3K;k|jps7mfQIgkV52l0(X`W{oa!3=DOLla+e0@D{U6KU$nU@}KmLo9Q z8hs(OPrNve)yBzwut9itu><-aaJzmXHaNUmVjTmg^jTOWoS)I?HylSNK<+H{lmqJijO0$L1gNg-Jj-h56s=Z2TXg;GfO+ z@Z6t%r*sXS#Jbkz^CZFaiv^v=W%Rz){9^&bUUf)%8*^c;$CI|yy>V=(PhFMS*x$o{ z#_-TSUpT($EMV!=Zw76iXm$Fo*$;LwD7(mK@18RTy72UfGKgTXETRAmY`Wk>;g7e` zhe_duPf~B@3k!PZC&XU|cZaloXZ;feg26#1z=3zpButGy^=@cfz7tH6&w-`uoW<&#Hxx*wxvD$Jwl#BC84O?7~B3&4NYuu%g*a~&OklA@0 zXn>z4WJ>yx(rQ+!XXkP4$zq5N4er4=-Srz$G@eKwKbmGzUOuP77$3{qw#Q-;nUz4u zZWK~|oBJ{|v%*RhIPxJ6PB5I_l~1pnuYtwL{UiNOVV=e>Q4*0s_Lq!}tE*>GmWc2o z+gv!h?l3@C>{1RY=5RA6eeY#YVmj3`?zwb@6+-c^lq{%O-8|27_E58ZPzJ%QgYjKL zTJj70>NO=ZeYS&34uK}a*yNq8`<~tuQn{OTkh-va&YwkGHq{)0s#N!e-b-cNpS}jD z3=aDaK)_1eBJhar%%DYLy~jiw*yR#}37o7LO41qJprH37#EDua)LEuP*;N8^)3KW( z3AtMDvJRfCabxZ%dou6mj@thKn4{z<2{t^3BR)Px2LUw#Cf<_%q~G%RNOJmW3sx;* zersa{;!qCURx{7fcsNqswJO>1`6geGHD;%X>VG`=34T64)bPm^_;Irw*Jx0c$RNTM zb?&ed2l>&P4~ZUV8dwV270eO=BXqRGoUz+T@rqUm$?QB}*ct${{N3fY&CMT6D=zu? zT7g>c5$6_;_xDWh^%;(ksSH0w1!K)Dyb*04b#5+UPtLRG4ikR&je{D;1ZC^2BE|pY ztlk+|S>}U`YA85WZVs7XMJc+q_bs_E@XEhByb%5)A%aIyghLIZOWh_JuT|99(raa38;ows@5E8+c#OqO57!gj*jR&D3@&6M&pJ>|hHtlQ$c>iiO{}rPsVYJkuiHOC| zwwDvTv_Rb6yvar%SY(z~BK+lv0?3FS1CKXR?{0k8vrlNYp7MDsGKj%)lhl^Xt)2}? zV~e#jbZ)kz9eLQ2A0}C}l%R5dbM5#{)LtLgvy=5U2t6I13hS)q>`ivql+6He#U{6A zY3~lesD(QZ<;{9Ig%tf(zEHR+z-nOc*{cG=RAz@AN9K&M5D{R30EmY<*)N_M3M$O0lhM?A*Z*;LLhNWrIIFcA>P)3231*0H~tx5?YhF7!B&8ym?$$A_Dc zWE%%Di@GVU-HfVt*tQj!+swHtG_Zduvl@v+AT(8Y!3_hN`&MeHbDKizmZSiu)!oS- z=JKJS*-b*3teS8X-4)Dv)iRJ^{c9ncS(hldV8dn9{{m&3&)K5HY`Dpd)5dtO>K_Lg&?D-cFND%)2!JC+60faS)>d>C&5IEmm z0Memi2HnrU){HT5yK>avc{bMI-7a~tI@V3rF5&UChT5iOi#tWKa4pWBH3C zFB=#C*y9jtg1HM%{^GD5GM}yb*wl-ZivXa&D3`&6AVxJ*r^%=u_uS<7IWorpIp6kx z9iATgK2Hr=AfxWw9S7_W{E!8Qb)eqIxa*`p@Uxk>GH%ZuBWpg*mpDZ1nt#xbjDDB< zZo=aaK~!{s7Z5Q?f2}UV;9Ht;k+6%U7JQORu)X8_#@5*S{8}v&Mjub%2V?pdF#X-R zKCG{@x$@?V=DiX2mdg|Vjyo#w)T>z+CF=fsA6je;{lDL7ghV%G`9EXKX*BSSXXvG5w<&WVA#PHu| z`40qwAES_k0E#h?KuT}{KwrAX7fprG?}*XIyJNom^y>bE9EFEzOAmK+|2G8c2RpM2 zJxSB5x9G3~Qa-O`MPO5lXeN-33DTYbtM1Vb+LXzK9fT1ufg*zU|78z9a5lnS8E-)hyo=8A>6Iy`9Cj#kK0_6%7wMGGJmHTRpO5phGvH zTK`D_d}P#cOJa5Y>b^jy&&G|UbQ8dzN?CRY;jHX+e~Q0FOyGO8x z)q?#GOX>K?+!bF)@Q*FfvsO)bBNrl5FNAiH+IaEG6%%1&jQntzIO#H;)swKoG7!CT zLwF_v4}l2t)l4C7BH^x=xq$zn{=@dR#}zG2INvq}j9JvSrKkSnal43BpA9?vL-*tk zk?{W$Jos8|evZ4K?s2I8oT=dD|L^48WJP~I705vq6!#JzQH?6m-)*5}quexbP_s|_ zvl>mzpVq^ghCtC~j1Y>5ii(Xy)Ec*U!rf|i`)%#8@VU%3;?s;jVCMBalK;;CF^~Mq zK}Q_B{>Cq8wr7|aZ}cYjc5C+wdF|PH9{%US81-Mdx3)J@KRAR)B>lIpVf~+&(J$bf zna&=k4I>bohamj&S*ZDE_<5dWpg<9F*`(9sHBG%!J zMx}ogHK}2ymW>TRC;j$2{ywu3jIX<5+Ouho;zU0oAVHRE90>EVC>9_BG7OiAVR~Qd z`3r%@zOR&@BGr1do$AE-zTCepIk1;;>3KW9Bj^5Ua?}0)@BaVx^8YvCBjx|I7DPR()f5Es z1)|Mp!EOV__kqN>mTt_2^j!EX_jfe zRq{XUlrE-kOXPi*%D(_VK@$&>_BwGAeS%+K<@*X+HjMG-`wVJ5=4-CD%@+Mg+TP}R z9OAv~hCV7o@ej#hfdrBXA|1j}D37AbRUKrWogzQ*lkgh8#%^AbnVakI>-Jp~ttOuV zf{|XMYilb>=`-zQ_7X2SAdixT-8`+u@l)==frk#Q75$uP$618K^e&xOQXEYDsOl&0 z)MHM+mmES09A0J;*8H-dCCbN2n~7fg7Hs`df$U%8aP4lz)V5alA5i=Z7i+na#WJ(~ zFI0cpMhtyno&2+omQ;VOh^xeEuCeb@&Bt+K)n6GtHIUcW)x!JQGR~3Y^b;FQ5=fFk zVu#%#n#buc7?e#s(92M5&UkK5K5pOcNxW4D`^^_6ZlFWuFC5N4bTGBIGW z|7|UVd5E&0l?RZ1lqL#(I#aLZ|6k1KemABL$NRpoxc<*^xG;M^(!~$){k`Qw{+X+s|BK=(&%xEHl$C5W zzRzsvQK$=Ai`7EsqJu-H`fUQeG?(Uh!5!1Y(ouT9iito+yIg3djz5*I9Sq8TbJfL; zeS23s>m*M4UbYL?^XR9zg#eYIy6R(oRu$}Xuk9QfD*L1yN=KQDL`1)dCk9fjh6M5& zUQU)NzaGPxsTr)ljk_~BG&TLdh@G1$XNSotAn#S0&VvnbUIr<*vwu&56FRo;joHq% zeQ`#V_&f5EV=w` z^Yg5YY8Q(HnDHMm|B#!@14*xJex4q;9`KRlwdeM4(pNiLZd$l&n@)N@+$lo8ezFi$7^&O*;Z>BbzU{L;afRJn#8HQCo7K@2S-i;f1Zth3rw%j zw%pw~?XdW-yWN{LXhfbW6nlw4a*Y|UQX*~<)fRybcVv7sY%h_NFye#sapZZ#?!;{% zrSE0;!iKX*sOwqqC%CI>pYOp9=3ChA*mY?!@mYLu9K*F+ugjQ8;C%bfcP7w@&Dyfd zk8fJfc7AK6yKCTqul4T&V#XN>-*0fW>Q(xxpu#M3AgNg&6S~-fTR14}nfiNay|ROs zpTJE8dV%?`8mVnEeBZRUgxZXCPBadJa@wXAY@1=O;=btgXu$~zWeXVxg+_ChP!dmG zIgTqW{)7W-X*ZDuV)BrKj45v=?djIR)eCNv)|}WTjOpX33)1lQ z0`dojco0wHWV1nc>nkPqh0om=cs>g&AEeQyPRo)_afG9>Hwd|lZ(C8M5#P|)ML|hG z%U+jpO?KC+?^G{1Dq3f8_+o3r$kBk$CRy79YnP;mcA<40{#Q=SQDPwMJ5c@0)DWc> zWC`K)Fdk^ss4JJ9jwa1Ku#BI?T49w;nS#Cj^2>FH`exLP>47t2AlRTRR z+va$)RE;_v>@=@c1WWr((6QTIug^z23?;+;o#Eh5#gzAIO0)H0`(JV{eh6ndsp1^r zk5i~^_?Di(*|Y27RcqW@n*z48KLfjb5Oh6aT=41S*>Es;WEVI*aS*6F>4RtUtl||t z3OHaG;gnmlbyfMvBdvOw5yOP-S!4qj`q#tBimTrA3PC0U%+EA;)Xk!?aK`>yud zJ`QGT?IQxZD8x89_OE0#bcdJQ;jeH-1A0&LJ9&SFcVznu;7ZpAQV5#-PGX~@ z3a@xcFDxtWRzm9ge;1Px4!2!9=C(=JpR5-#bldJ6_Ua~#*fL`-Uynkw7^+G#c*_WP zcTVKb{wT}Y!lXll72jX*hh1j*aD3iOs-kFl``6)b6I4~}ukX^DlgDBbN()ygS^XKe zqBO(DZfXqzk%^+$7c=jXt=xzntJ%KNTr zhF!J{L*Z|gH@X(hP9#dcUPL1otLRLnY_$fd*CCNKHdlgqL^^qg^&NvAb(ir?0Hksu~XV zKxmBhtXdGV@SX*bOAxCx(>PkU;OZ7_8e;8LX^@)J&4nX|Vw*_GW$cU=5)zde+l9X? z_uslf8%tH;ln@Xwhdk;rM)0y2s(rROl(Z9sEVBF`Rqf<=FVLXPPTY8_gMGc{s@v{E zk2-qqNB-x2=3fhn@pvLf{QSp_tA+=#FbZ?TCEEAQld@p*{V$W~D@%X6GP}m|6IAmg zfOHTAXqbQ>RqD^;h*5Dy1>Yk`>Wr?&64_f-8s_m1VF2Zdr&Z_K^_Dzuu+}!kg#J~R z#ZGDe7E^e&kZQ1`2-%tDJ!4gvi46%=#a}T#;To$>aDCjeNEj)Qz#=i?#M}nFG$8La zLr9(Mtp=uo)6|Yk@d0@$h6J68t&$!YhosJ$-3UnB>9AXm^EjF(3F?ZqR9gPe06>eL z14PiFz(=#h^%W$1lAujzjE>xZhAoB?1YfFzc#00vObG*sVB|xX{CmZb8srI*LCYBS zoR(rtQXLzqykIsrlqthd!gWXl+iCr8=XhIHM1bNEslrgrX2ipY;7x&Uo_G3|2^a?snuyG`_u;h-%21@1f6saklqBz`Qk1zFkQp!8pt$1JS+5x>S@) zK<^qJ3xqJ3Ex-3BrZv|%)FHSWrfv$@_)f;cv8l9 ze`5dT!n|d-bFjhPyUOC67-jN}b<|`}MP&c+8q#pzEdp7AADqqSese`o3chS`~fi7-;g$gvJW|IY3omB*vO_{wg!_WTK?A49?AM;8V8VMi1N@0gYThW;d`~P-p{dcD_zBvQKi_$?&*b^2)~e!TDVyF75jOxF3Z^^*Z)LR{q|;Pl2~rb|2%r z?hl9mkf+2OY{Z4sqt}c#p2}GkW^SrMe|m?UsnJDqZ6TrzX~OgHtL(ko0dBRH+p!{t zd%u3=d1{a(eCZ-l|4*-+vR=>Ak9mUwhW;a>|Bm-MnrgSdIN;5ade6E2a5@x%z=VdK zHv6S-|Dt6^6TZ4i5)6DMpI0-=gcvl@*FPIgY_i|f#)_g*p)|{??0FJ zs4stU&TE>^`hBKW=uYt(+w|GKf2wBa>Iz_iIq_i~fxvPhdP>VZ=MD849{nU-ltW|# zeIKvGw+4HvnHl%zo|N`GOWp?x%c-YL5Dv1Hr}GoaEtvMQ9Hk;j3` zYPM;9wj9I#osRDS-Mr#>-!BF4VF|#RPO4qT-@?Bstuj^yuquD+ANxSLvsv;6HzTXN z1@tp~pVM4J5&w^m{%sG~BDArg<%ohX6|edmQ|QTnU1oN3`d27^FCOL}`kDfs#WWAm zGG)Obf?We@_y4IlG}MXq44u|P^B5o_`Q2yd(o(5VsucaV?Obax*pcW($ihM}AFr^O zz(}ke?hlC@Px+tAII6o;q(L_p2Tx$LpDPsu++u6X@vZ&;;lJml&H+)-wY1yr#>8)Q zzV~5c6ixPAvse>7v(~>!hOze@&+|3Yg7hcX}Hh%rj1U6+Uf|z{1h&*PmJ2r0uiOMR}BkfGnFh@ z)--!dB@&Q81hr8F9Kh^r>}Tm|F}?>=WMGNfhvM<}Ht7|ujev*;op#S@?r)fb*ytql z14Wn5jj5{Wb<+R6EcAwqOT5n>}|fu|yIb?)N({UoGTcqr%az5WeELCf{&&27*BTPewHN%~PF<@L(4+5J zaBLiwctFAgi_#qA#sISVSp{C}yv@qS$p4O$m5o=YfaBMchZ_XBHZP%Q)I2?o3wupP zq4jGYH^AJFHg}jWX!yF+W##6eOdxi`84MT^3_{?CE6X?~A|uL~SUB_QQAD2c%yTu} z1CM@rgIi*rwl^4cSRz(#W_Y!fNqsLtvlVmn%kk2!JHF3P{~u?by;wc<1GMPO zt)0TdH#m)+k(Aw%NYzN1DY8_37tZlf{1Pec8S;<+(SNKR?oL0o!79fHU+ysdA67Mt zhri-rarJ#tzh}-;=l^p)SIj--`rqp>`&5IP5(Q91`PgCle0~2T*H{0(FYHxx&&tQ! zdRxu`*Rr@C`j7k}0;9dbHN39Z>_cC#00{2%nWfZzM~ zIDW_dxLK9vF7v-9Ira*Q3?xAR@8D|j{h8>cK}yOfFj|`xk819d2&A$D0em*N)<(WbR2o$} zBybU3hk5hbuG>AEIKrpgBTj5zYZOu&2-;CMmivou7a+GDjisRk~}nY?*d?gCek!u^9vgLBKK)55W*bAz|A$Ls+qokMz`mA)?8wQe=oP z#kKIm0Kc#A`5sRW-`@706XgBiY<2a?Y6OZ>1BAY+A(E@PnJq$;lng;q3 zR{puk>;3|F5%>y)>Suf+hBv<4iWypNPsc*cO&*hOxD3~cps$`E86`v@Z|Y*o@#ikJ z+h0>6KLQ?j{Y#%`P;Y-)$XU*BE;h}6t~{|-aLr`KNimP3MKpg>C=IOzp%oQW|Qo8YQYn{Ih>sd&jr4dNtt)DYr2&rhVE+(#ZGU@S_3p&s)$hzY}u+gBNTGCWjYV18qIrrO>V&b8~hyD$(#^Tu~l(Rt7C z#fGk^ie=ZPZxX=ni4WfQhm%!y&mUP^uOgZ$)|)ZF*%2K{I&@NMmR#`guwlU>cdo?| z>LhiDo6p{yNh)sV9}NcW5qI_;gS;D)iEzcNeuLI}%0aOnu$1ufyZe$qB4P53gjDJd zR@TCubhp&F-sCJsXYUT}y|PqVnxZ@+krU6LN|9}C$Qra|bLnj`q}#Jb)-H$ZaSWR< z-7++K%&tS+D9bh41?5I1)fKcymMerpE0YN|cv*9|XVGCYePbLzfku{mhxLE`^<?mS zM{5j?>S>S`foshH1iN{AGaDa)7@se?1+8kArp@{k{55}%LSfv|Ls!JYdY}A|FZhdQX`jGnh4Gxbw_w!E+#EdIBvIRbAc#W zOj33Ds@e7jxJVTNW~$Ajrc>XW?+$ir*gTk-VR9!f{GKYQaktIGBjpY_{v`Fz>o|nO zMb3hJ3=fxYL;-6FkJ$wom6fa8J@mKUbx&FS3(ZlynTp}fXj9)@LV3MxosD2DmfRqB zQc~OJ5<}cG(3_VZczNr{x{iwQS|MR_y`@whcwNtupI(lI^5|aeB+{GK(l0zbrcw0# zs-x6NfFA6X||k;qv-#)wCGgbKp`gUYSB8*{sf- zO!?T0z=L~S&zYikhgmBn7Q;PsTv5gd4`Aa@DYWEG^_+j1{I+^+`+na&?lVGXaq=%X zb&JRA>ekJN`oqaCk#S(gZB@U?mm3!eIPt5ZiN$*L9F+3;E);m(sSeW;E#Dh0-1^h} zI7+{F)9AM$RWWsWjte+#WwU_Jkt#>gQw*Q;I^crIi?Mpih1% ze2fV2*&^XD%6-_H)W_2fVSGM=QG)G# z+f+98fSSjH05cVT98R9jvJv|S(sw6l7D^KGPd8HeRUZKIfd zyMplQ<$#^J+TWK0+Yhay<$y8NW*nDSZ}E1yYR!|+I3!bho9Wdx>bA~jhJtP-zSbBQ zGFMUE4l8jWx!di zje&>e$RC2Z87KFeUvvHQ_mVYWf9;Ivnlei%MaRUg+QeXo~qbdCg{VydxbIbG-`qp}zlfU-Jzc7I& z^Ij(Of81s7k{G7d3T;0V*9y9M#aOtnF z5w}kW)+UZ_+hcwlnR^~R*j{;hx^#dYRX%^bv1N@!RS~20-_A=U za3>$jOa5&8^s)pHK*0z*;zGU*E8qp`pyY)KEDTzh%aue3*YRK9h2st8kM%^2a;7BQ zGo$$oyu6K1!E##uxDgYWlyr$_8XQK=DrM@lyX`jk`cRoT>K z;5XcKJXy2#dnxBUv%S{{lf2(g#|(uohD@nI&+{q>;XJ~2J_Myf(J{A|4{QVi{y}rl6abZ%u|Wy_3*xmg`sk*h zzZ5g~(H{?Fszp`D))ZLc+J&@KP$+Z#IBVf52nnc`dd zr4aw;bN!UI;O?G0lZ97=8GQe?pZxhg>-;~@+WnzgKmIK6wcM}|BtNI&pMCH1`)a}r zep+qRm|HCULisJa!A?L$a|=)){^=r10I3yv(RDn=%B5RU(`hxe)vW7)Z4 zWrO5=n=?Dx+`mQbW$j};kzc5O(QO}r-+~BNe#6wjNOG8i83VACCgT07~Xs7-H^@|i*viMues?@4MuN>jZ5 z$bp=hGtdms5ST4p<7c%Vk~ovUP~hCbxup5-Rlv`xF-N2Ia}rSr>$c@d5^(p-P`k1R zN))Xg`UWxA0Ik|S(XMN|4Nc(f`nz%d?DFOgC*f+2gITBF>tWEf`KjHt^1Cb+rJ+Sq z=A%pe4`XRsrgZWr;qiZl-2=hEA1&}w=8V>ir{-D!@vpP*_6s^3EsJ&d6!snxTo7P4L{6JUgo47ns62ofS96Mo0xvx5QtuTe&%BHor` zWL!dJ-Ex`|3viA6t5yy+3t}b~c$1it3(=!g>iwuZ2FRw6S z<`p91<^+TPB!DqW1t6>M*h)Im^OL=&BLYG6WkIrn-@fAa3CW`SGZ>D!q{9WS&?Ja> zX?J*;fWIy_aUavGy{a4|26?8$go{{5Eb)#rA_nx-0VIQZa9Mhf{@)NI6d}7bi2tkq zER&^ZO@yH6d>Jas}dyAbSlkZ&a}7pHDNIjjtqNzF9_3R+eiXR&U@+xap;85{yMk zxJ#JU2Ci+7mtx4G)}aWWgUrgX;d5WpZhJr&M;G^&)NOHOMk5ahys)R{72VsyzZ3|7h_(6rK`2#TmJD2dZZr6W)H zN%j~ht?p%|XTX{X0TsStrIUip=}}bZ8A5)X2q=e-H8_&*mitpD(RMPkL>VfVC)|ZqvKLIa$bJ#JTM1|K{o$QXG?> zm{}OB+qifm0n}AAJ5yn!`F07EG5*^-qXapewV=i(=b(melL3beM7>c{BP!pibf%io zluE$}e)epuE=pf+l`U@ru(egLfr1mI&;g&t=${Ax9EzC6GVlj`f0@gzUR_Hnq*B;f1=Y(mBc|f59R3THs`#X1Guj&Vf_VJ-!pj=4ZiYG1FI28 zm65dk7j9wDL-%>h`Mvfo3b|4FvUEFq?KS#Tz-yRvEIx#YKf64;`nrqkDyvtqq1r%# ze+DJ2=CQ~3HuZkHsOI^t#tbA1l6u4Gel0$qc@QQ^Aczoq6t)*__O*+g7G-+{1xNrRAcI0ZhSx*1arXEOD4>*xb24T2`j4;LV&!4P6Q_du zc0G;JQPW}A_8(7O`xt?UzJduPcb^R4SzeHA%AHao>{J?`U}Z=N!>cE8e%4`b!{x}oen z{^L2lr`6`%zSbfQWxEfDnMA#E|V+o5|8P=bMwhwbmAgfRzg* z6=+IBe;}xPt|?{kF;k@VeI6ccD!Lyg}e`0g_)P{SpGL8KcBYD z>+qB#ZjY5ppvB>feJxymz>tZglHG`41O%pnSJ*u@_FS=v6qOI|u3PfKexpQ;#e1W4 z9Bc?NUpASR+{r3kuo5^R3?(GZCz=z~WgqcfR*Bzq|7N zxKv9ktH1jFL%zp8-*4mwcyk_n(YpOHD@OajDAIpogq>1;ufecM)kvqL59xFI-E!LZ zJKq!QFmIdqelL&nRJJKM>}L6c*IlhNVOt9ye-+z^e%#v_mA9aW)tx%!Rwsk{5K=L6 zM4%sQ`I1mFqgTt*JxN(&S=A=okN8^MlJv}Yl=I#j*CENHUer+%{7-8nLlgNVYw9W*- z^HP30dlhuxl)c9GHAa)pZQm_Ze{-iF0xAkTl-!K-VJ5YXUtBOn-$qMe@tLgNwusgI ziHoQGE2EigtO3iy4&8k$T~V&tz8-|eTxIzM+mM>iL*$) zbOB@ItFe&|k0bP#2C_I=Per@oVUIEr(}&LmxC}Xmh}r)aqBP<*ql6m*7OWcVgwF`{ zTdwY+ioQ@9=dy1UP3%L|Y7P^uSJ~D_mSn0?bs0z+>1|`PnkhYgO{NH6hV-bxX+9Qp zx4y*8^R$!FP9(zC(I83@o34hN!DjgkN^+c3Y28vKF)Xuxo)^DSFzx z+s4{@hU>l9+Fk5+Sz%;pv}~}EC1n-7G4d^(R&ktdn*`OOEUZ`^+xSjkj zc;(RyoZc!FyCXohpKd&%S1a#i$>LTwj zy`$A&c;IU$+o%<9zpTux4~7B6H>;#;A11^^Ae>ZHzu})FcA-Tkc*CTgq&lZAyYKe2 zU<&kiiK6DbZVg_bqtl4G!f2Cnu?$67lEGB9P3{+KWjULx1wuPvpAK>rvE2`sth1DpSF zQJ_(X_qhUsZdQqQ&a2$foH8b-rFvMr;lO&#-6VqGb}U4f%g~%y&3W2H3!lW0X*CxN z_M!5hQxPkefV+fPs>SfI9G)A(=cC^b&%x#A)Kg&9Z_$lt&w?o&UgMQ;cU|IkOC3v^ zXfqS*Z9-<9gFRH&ka0A&bzB__jcxJ8K(%RYrVUl!1jT&WBfyU_>{2jU&rim-(fI36 zj2|;Y)t=*TzvXP3ERVgH)PnZ1b9gLMT<2Nsra=2rv8eGwFg)8}lLU%&LB z1w#&x*})9129RKTm9%NdllDcOSbPNBka7FDmcE#uKa0O^W#mkc%wQ`xs#a&pIOL~{iO4qOr2V$0Aa*F`O@PgHe31a z+>3yl0r)e#;$kfGN87A%Egv9~BM_UxaT+=i3#&IyB^=sUmu)v~^-CN#IM(OMlJf~3 zwj9qSZ(=QkWS^tA^pC8dh?$Wp7vIyEo}HzNEQzYdQmor7)4OH+%2Ly&J>~ab*_mrf zk$jH9CggMi?~WOKe(3CHp4xKy;(V{S$hT_cO;$SBk2WRt5`|_VqjTH#kIx0xnCW7K zRA%Adflh=MYV#}|e{kUlfN=m@wJQ95OJd0v@`QyfI`^zhfYvuBqYfK?ft`LEQUEQ_ zC;Zk=rUX(#mP@lb#s=nhVf6EY?4jNI2u6Ezfhw`OLnKYIR-QzeFM7AE@VL~Vp?2rk zbjSG2Cm$@9Q6l(^3y1YmO9RmzxjDQlVF)_hzArR0r4n$#w@< zm+4)9<@(qs7m??EWPS{M7Ab*M8?A4P;aa98`+onWRXexGoD)Y?XwZQF=J0zKkXZ+1 z^|L4wcX2_Tk>@u*tLQSavo;!==9hD9tb^FPBC0C1gGistDj=gy@rZ77HoN`~9lo5+ z*nFEuRgz@VsH>eJU-tVON_dPK`cRE0o}PiSjVPhorBMW0L8X1J2w6o$MEpjGD$+Hr zYdxzdsY*1_jFSToO3LvXl!7P6l_^mdn@FR=NVNYGp4qPF+(5I}$S87Dv~8c}C6V5wUg{H=VdppYEYW|~hPLTK zd?-LgYjLEMT9u_7Sy0-tl&8CDB2mMU{s6o2BV9u&q2B1?{l-&#O{>gUes8o%jpY7g z$I%19XyPB#aY8am#XD$GzCK{~NNgn5$Cpo6tmjzaL#PUi|UdFgM+ z^uJj)LSm9!3smfQ3CtsJ2MIQl1z?G@@M4a$k>NLkQ$%DDl27=%$UL5{1gMC2@&ceJ zDcZFK7s)50wwe95Xpudqpw;Si8ck1Et-E`dt>yA-yK?C%8ht`aS~tvA zlxbIsK5AG)TXxScY0-1ol~{n01LOILpb7AQle){;R&#+KT`w$xF^T7F_5W?o|Ib-U z@9ppC=z!T&P!Bn|Vp1fgLjR&sv4^aJ<;GWxo=OvEK;bEYpYh(GP+#`3MtK3#Z{p5W zWOJMPALf(&@o1|{XX`iV`N1m-=zrq;%ND@Cw~%=GQT$8en453yg%ee_}lNt z>1X~adeR5h`=YEkOb`9^U6^P8vW~wB(vPKVp04ZmY*BafZG{s7f5#WnhR@(STvfJ7 z#4gw=3?+UdAuaCw$4GUqCSd>SvIswAp+B0f+#CyG!M+{EPpXSbwM|d<8iDpOhw5c) zFWqC1$;Sgi4{JA?K=;rywE|B@iA5u4C0%nhXkiqCKuRY8F94#QXn`1kFCE{gHQmg% zdTk56E*H`@F54;<=Lbk}+^0W~ih4go17Dn)Nh|;?MW*>Zp~6nCei3!x$`b zKbA8QqXF1nF%DNU;7(|oiWTuHDB=&atdN5Y>VH~|*nMz2KuIxqe1^qtU?u-XItBe> zXFCLU9OfpO!4qL5FA41S8F^?`wUlQ9*ha7`eF{yi`I-ZWfKN{QS*DN+a5c9RK6<2* ze+u1-(C6w=$oU$o47_r#d=CDED(0e(ID+Zkv}%Yw`mRg$bR6+V4?{xxSNMb2bxps) z%R7vEn49T)c`1@lS5BUd2yDPoaCIv_)e>p$-(sJrt0V1P1f8{7m)#Pm>5^!!3UPG| zjoXYai)wHjBV6!c*JUIQQYoU^b@3`n364dUsKnj44)er~t5NCMe z4}%?w%UYUE{!yNLU;VW}Tido&62~Uh)NHbKT4PF$BT99WA4YXH=Gw5)7IakDFw<})SD|YM$(2-RB~?|E z_S4}YSjA%s_Lj9C*eTXZqfKHeBAt5$N`0&& zlO^q5{YI|E$g!hwlWLFgu|)UH#id40!p6BSYOZS`f)?w%&8x<1w@hab%AF@O!RPy$ z4#TA9c{=Th-CLK%>o-?q^|JT@@%%Un+uNnB=zFFXY88e1s$_~Iv(wtK?fRK^-}#up zHagTc>;1pS%J{c_OM`LL$}Rrv^(}C}YU_Rie`Se$hQFVdakt;=>n^=Go4Ianm1s&< zsZ;P8CmWfT7QRwcX`&m-PBk@|X^Q37h8dap?NlJv3&9vN?ohxl8i=? z{#g+Zk0Vd^J4+Bv!(AF!Pd^}_(wx!|MFk(Pxt7)T_Uf+jUsBxeq#RgGX~g~CB_6j~ z_+bZr~Oz7Dku_OwY zmWsss!gbCID@QV0y&XxR?Qr3}4ERA@U%T->G-N#(W8a>I*LCW zq{=oeFtnnHOOHVvmrcO32r&FXP=P0Sr=k-GLID7Tcl?jJa4KJPcPe$~FJH%fMyYH# z4fDJoHeW?Fs@XuSX@NZm8tTv=_C1xXQ7YW}`QFq)zYnv+_TAOI552+hdBQ!==Mlx{ zZG&w<<9zg|gs-&hPapZsrKvQA{GGDYz%OCldGuiN6ixJ=`E~byEHDRLAWdPJd1$r@ zyx>``y^Z2FzGL#GU(m>gwF?3t!aO$Q{K!~G+6m;DXVQ*u%bhL{RSdAL)!2i?nyl$Q zzR&Q%axvVgcAmXWgdrPZID^Q9@m|F@&qEjHGFX3)O8yVzUb^YPX0oL5>NE6P6Tio2Vm4IGru4c_eqD*Zg=JySW)vwM zWG35q(m#`Kblnxnt!51RgF6PyNbZ+0Rmr2cv@(qaGD2(s_Hs4zIG!2Dou3G8mG7zM z&mOy0@0oP+dd#`-{&is0Y;~%^on59F-%&GevTr4q7SqB~g^kS?Bgd*w9E5hxJ&^_{ zyN@6I%@d2aN}|7Odg{n;{w(;M~aFIMX}|Lvob&jOGo!)6?6#dj@z?d~JX znU+wu|FSZpSoDe1(3AqMl*5V-E8M&hPz71r#Bus2I(>HPS79DeK!R$yN092x2>=VA zJ64~7x62uH2MZFrvp)+4GE%M;ogzb(laW&C>GH<|wP)3#!`q_ESK^vD8sJb%f+Vx~ z7I!QC)zcbmFm^Mk0|g zYe`il2R^I{f6QN5nqf{a>(dvNc6@7Yk}@QjmW+xqYK1sE96m((_ftu!8_RCPC{dJj zc;LkTGr;@#@9xw>lSpv)^d!S2`Uy((30rmE$im~yK11Df^GdOs4&yCvWn7`+S4Z6k zB&__dDpoN8#|sBOcFOC4FD)#Wx^k6;!JW6cZTzQ0{pE+Pi^N1%rr7Qs5Y)|r;PN3Tk@JBk=?JFKeFC_C=w zwQF#>?eawVpg$p~-_chYp>+2!ZJ{;XkhLyMzmvum!Md#X$z2(D^*b<$#R^z8F_w1`rWUn?eZJ%phTzp+_xZtO65h zVy~Wwdt~WP1=Gg&F49u(xC?LsgTe5OI+_bW823BG*S7)YIqMdx2mn~oDsAlU@v-RJkyWuTJugJ0dG_8!lsRf0H_8*;el1|rqWrA#Jbp?~x-#&yby{|{)-How9 zVeJqK{&LI9rN0DH3kkEH04T5~10)IPaQu)aX4#I`FU-!b`Hs68xS8(P<4G+)p{EBh zza&KP$DR@{bVAThe}7_eMR8h*{PV|*^0;;KM?xaDngCX7`MpYow|z5Pu9S2|$TsRn zfk;4lnY9labtuVQ1sB7a8%i8S%V3SGh~Fa!G2Yal7K|zEl(v~2FCj8ptkrzBf1s-ga$a&R%#_&}3 zGjX^1ueKzjR@BXyItfitzJ&*zS)8`rv~{Px#J53Ksx&WV^=9o}HWC#r^V0K33}BeL zJ;71ieJP)9{O%|F&XiCcT^Uh;gCUARVXifbCQU714C%4tFTo!hp_IROC>fvzkOJXx zNE4&OB2GH5i~aI(f~pJK`Ts0iw(?ZC>^N}@ zcTxUF2#9*SzTC2+0iQR*;oE*T=bvZXRpg=GbpT^wcwRyaohr~f~di5RP z5CRQ&y2gSsOj}VbTv7v2LGMJ?2s8xR7hGy70UBwf=sZn7$i@iirq4~AmxI@~;X!p7 zSx-mOHZx2HHcYFmI770CJwK}&RWw3+;f1t|9;zEi0iqRG{xPgw8R85sWBWy%M{e9M zotGX|7|&1h2tP>%lZrAi;#h0YHq1yOKToNEH-J1W3JSy;l93}LokjDl#a+UCNO{<( zKTpHoFngJAs?>-8_^r?wXjn^n?6z%Z?dNXlg~e(iHc+1{nn(;ZX04|s(i<2!Z4a+7 z7Xfk?n>v)TC~a|M+Bm!V3&M0?sgJB^V!u@FIJmKb-@?d+$+m=A;JI(ROOs5T_3$?7 zhuh$__;psxd1r*0+&m@+p|H@@?N@QWwJ~C$a0wivj};3*Yg4FbaCjsi1R&0s5b5-q z+-rjNjHJZIXF8d#OQ%B$X=I^Gl54GC++Do3LS^fvXC`Y~)HK^}e$;ck^v_JC!P3~; zv>(21Fv-2iI6K;g7o`y<;w>M!y8J7b!CRZ(*mz5ilg{G6vI!hVaqPsd!J3cICETTl6aib-Sgjey*kZBq~JoTEXgK#O?Xj`KJcIrmPQo zIj;T4RtX6W5a;J0p#$ddRh#&bWR0uEx%%lgPkl2zoU$ln3DF>hqu70XTNG3D)>ZZa z;W5`RQ`f`uJWKB0R4T^EDRf|k18LE&z5PFEjIb#pHeo4}V?gTt3a(nvy<%^=q9Nw~ zpV*9&g`dzU>oA5I3R;pCs0}2J+S9qLfLg7bvwlOBBvJf0rJX7=Z+~9=ps5tT6s%4c zaYbnO3-eOLffuo+53XrV$M_%4KCYgNxSK`ZCPfY<={`Fc?Skabd%TpxOEI6rL!B;7 zX=3P1bck-S%P_|p_WRslLVkB~h+F&CJ_syW&)=mYo%@=sKUthaX}6UpjRZ1_NqtFL)#Os|fPwX(Q4Z4UIgX3rm;fcKBnPVF`Ip zF|0nOH9o=E19XE1H63u;b(3~#cEl`QVH!=fQe(T-dZ!T_ zyVqdslF>kS;p96tbk=jwUVyrZ-V%U#zBw708#)oHCj*BEfPS~%dp~|}Cp(aeT=3WK z3t!;x2gmsLcl{_Mg{pr*EpWbn!UsJ+$NA%z;wT4=L-dbwT`$e~^Q_;{FJR)`m!hld zxh-!>?TOUDdDf5 znqko&CpFt&v35VOoELv`7rx7tCDOzDQLUcV+bH4$vF4!t2T^2I=BA_0L{Q6ai#eEwMV4@muT`<6q_W}pKy3W% zN~JFRav{o&W;<4Ef&K6A>`n@s{%sZt{vPYNr^5Qnz$_SvYAcxRS8d?R_+XE2aS>Qv z%t9ZRlWNue{8(={M)px!Y5dn~e}5(Ju0QmcH9=c0=sHLI4CKO9AEeT?sG~k}USM~) zcgJ|SYGpZGfQ}7dWWAo9RFI}LHQ$203GDTpQUX8i+v&@*3_H!QOGn^phoV_@_HG|i z)jC=jJaiRrPAm8<|9f_hKE9TE4*}<`mr6rdpo_LsNHx|4xwJ(8GdEBf(_V&Av zRiZ5UxoNVereIodk9*IEUQ;?LB4P zFT3iAUZ`3r_s>p@#BY;6s-&_in`4U#Fe}fksLK#<$t|JxgUYk7cM>Ka278uBYb3Ze zB*VqZ1yN)c;q7FA!A5F0S@Y^6=b^g%VRk7uJSfgbl6er2pR8 z(nG8E!G*9~48TbEXwIh1dhsjqK|3NJ7A)j~%UgZLOSs>yy1V#6?wXT`59*8#(nmaa z*kfhHWw}-6JG0>#y(yB?iN?4~ApuH!xud%!sF(wd(Mo>iV;I7oPQ)>uq@|>HR3hk= z;n;%;JOwg+c5=1G&Qx27--_-}p*|~F=4w!793#6HeC?qq!E+F9Ch0mQXy0EZ=1i&n zIGe^i-O~*o1*;h5sFil^S1GvrODOUcACY7p=a+Ob;m(7IREouu7zpM5JI*+=G2+t+ zg1$aL&OqQzi^YL0<1sf8eUyb1Lj@_*X8f^rKjBP2>J0?Ik0=78tPKX5}=QYg)rGe!Oz#TCs4LiDSSm%T} zG*EZNCEPt;HaIeJ!)WXtB^4jpJ{c7AK^*HAf44HOq85XqPYa>ZdoFOb{o4w2wV$x# zw-K`I){Vv=O@o1OON$0yJ&auu zl_1i3+P?1~cwJ@y`QjhPpzwOEc`*SW67?4ROZ~ULc5;_iY8OHsdVoPi3E;>Mp7+pE zwFVP}ArIuO^7Kv!>p@ddO%=+oO{T=wYF#Br^yS0#%5-S&@UodP1ExKCzFR9MTXg9? z8~(iuTk6e#nKY!fhXV#Y@K9DRqr#2c8raGg-;*RiZ6H9tYb)?4Uq#pYUZPD}Tg#Q{ zXy(t#<8ghIJBsPc2mzlR)mRkjaSX?Z3}t#dNxMITH{3g~)22B~$0;z<+ddR)#ngk4wpYJ&Mgvn=2MHcDa5oZK26b8*AhnArA@*K&YIOl*}gpt*{_iof&o58 zAF+EgH)aZ9z=~F|HX<-SK?SIGGLk<5inAezeTg!}xzleeo9)!&3pk*wmc*_-63+Q= z+i?NSx+rbPhCjAcYITs$b@Lg1XJk`DrGUvI9=GVEQ|C1)p%viU;l7E;spPZUw}g|D zh*}c%I5$|#aMF-*;$B?lMu6) zO44qKRc{8LMk;E@*trPFqpOxq&h?IvEWSS#u8?Rn_CblZK>QA<-k4b%!G*p?SOVJ^ z0%#emIKga&DB_3^K?SnNTyaE1w0;kZ>g@knpW4QZewVFg56o=zh`H91R7(=^6Tycc zx-|7BtyZHAMjtu-Wc?l9_+X%faPGCI&c?p+V7y9lMGeXikVZ|kdhrK0gg%=x4Q$gG zAdf)^2!M>qKUqZ{$(DUFbcMT{?zK81;ar*%gr4wZzllDBt-Qg8!a{?}IL@zR;`s!N zvPuIWfQSf)fYQpZZOq{I&D@I+Al%mtl@v=LXCKi%F~720*fI$B?grr%$X zf!ei}rwpw9!DfRd&6I$_Y*7;$T!>xa1veAUXU^Eica(xvrPq#jEfMM-&~?Exxt^TCG718iJk28JC+==DugD)? zT0-+Vg#a*xW6J08tZ7X`xx#6V7;S7c$kZdVl$Z^Tt@e$p0|>Wi{m4I6+f(MhRfH+v z>zUt>lWVR1Yuf1L=;+z%?drMuHa9NgHT}OspFSRV51v)L#vv8r9vlJyCpKA4ijot}zyo zA;ZpgNR)b@84)>m2;=a!&=b5P5bK3C{Q+6-DS_{1azp`D3>GPsaaurtUi)_wQyZKL)cf;QOmquja&4&!J@262OjEefdx7Vac*(?jeqT zhm?AcT%kiDYGFl>77USUPGcIwjmLfWHN%Bkl4OQ3X&#dz06;@_m-fg&0_%aADE{A- zU4z8Qo4%DaMk);r7N!&&fNy#gW^U;QYuWtw0(c?S5I1_gaxe$`~N8w zqu98;P~jH0LfNu>X-#2D{049novi$Z5Q-&Rakn3K-MS6YTgtXlXM~6(u!I*MFBW>A z-?7rg9w(8vRwfw#85w#v_L|{Des|HeT7@=@8WgY0NuLRCpKC-?1|NRAO2xf(oZ5KO zQUpxZnur&N@f+z8XRM0@A=|f@E_CGA^~@W9VHp%r2T?`8V_&ZO$k4-vXv4v*J-1gD z1j76V+DkHN?ibol+vYgd8k!*Y+f<2i3$-Uxj zrHG0)M2Xv~4HO^g4{WEVHp3i$B29SSbV~rkB`cL5zu{TbNpE-RXQ{g@2}fO|&mke` z6G|b6)y}a-HwS?7+udFR2E+3vE>Vj62VRx9e)Z%Akrhm=++2a986>0$2k#K$a8nQ* z2*~j@tqkz#79w{=oMllJ%G0NhrAdz22ub^k5Tt_sY2407cJmu&0f7H`hLZ*$kym@G zSf!*yM5dZ)T2uMt-N>paw7P~=XV&3MA`A4r4ZY>WO_E9-e*az2<8W}8d#M#ooi$Uz zl~JSYq*uE_Dk(+;BGRa-T*M-&sDx9yohzAfDS5dST0yMLGRQ47ia)H+n<^%ZsFd?k zq0Hk;C(x4aZds+Re*)K~7c`*zxhXrZ2jzJ$o_v3i<+WO?cOK6_-}GNo2fD%1_eS@F zp7>kdsq9=12fjUNQRheP`$Oo?`6^O!F0J<@7C7jI5OPTie4@zY1fg+k)VyL^4?Z1E z(~nTawa8a@_d)Maq`oq|dSW18@ZtDxNd_C{bvqvk&jLCA9xfY+*d<>yP4^DhZ_%+{ zu>?^)kl!nhqr#1p?iT)^$kB>sm~b8Tk+i{?cSL@~z&jUfA|76*g+5Dt(jM#{`1Z9l z54n{*{P*L?nbpw}IarA#u4^Kqa~J33W)a#}1P{;cGlIE&jGn=+SoTASw})fLB*x#{viU#uQ6NGW zIDFSAqjfyo3S4?rKbz=1n?r@=d$8Re7U$t<{nf#V`#$ODq7Bj^t5eLT=Yl6(&|23KhZ6}e*G1n?7t|t5w#v7eF%CzO z8eGEs2?{WQp%@T5+(;5`6T84Z%PS4#N~8q%q=+cNSWy8O!m}Y7@V^b7~?bvBX}lm&3`NJBpk^ z3v75SCrb?+n6`?qf8%04BF3g4tI^Mn35?D3bo7h;b6Rcq*ua0wCtO;MT@;MU^V>aMRuYA0g%owyR(KxjjB>dMa;WLFhmN% z&Lv%T)7v%~prv$9TJvWi^%MltZGWi$Cf7CHiuxOT=)95)+vmDQS}o-JsL~-(4z%9U z7YXf{f87Vz|G&k?GvYYD0Rt93jC`Q^KLAKL=L1fM(mXx}{Z&7+c!LMkWsPXkT^Fm% ze6bf%;S^DMZo=e0c#Th+W^Cibj*-#gtUEJJV|;dTx<2?wj=u_Rl2nN`cHCV#p~lf* zmaBCV3SQc7cCcjozT0rx*^=)kH!anyg_nzlh2*{xd*DL^(Oh}Li4~fC2n6&~Q>IC{ zt3LWrWv($Aymy2et`h?A*t=uWynl8<u1IcoW5E5xr8>WW>22n!Gu zWWs^Gd(uVYBBp5;lkSa+{>zYtdj*511iobr0S26RZ@B#h4Hv4FqVK)67^bVY>F-#% zOQ9;&w>Ei*doBFlXd-%QFcz;mwDjs1!e|`JH(!C;or8_E(n^Z}kk(n*YCb);MewOl zMts}_#V4%WCaX6uD*@ih7_3Y!LJMV>A?M~)#;ZNJ0t+PLJAo`I6*;p}#w=*O*Y zEO$O(2W( zYG~s&VZ$oc+$+I`RLsrRawRVJ6VQIQ(=1}qKs;UhoXH~$L}h}i4t(qlSQQkGKZDHwr^Rb z=#L@5Ko;3SrTyb}ps>ad=)|gf9sy{2sG!32xJ;yEiNL~yrA-%TsM&?n7D8qFf!9lR zD;J3@fZU26WFwc6=R`^Ctyzr(6B1!cW;%T#QTwI(vv{r8{pS7A{D0WP?oxnmheej7 z{6OCklu6lUBXLrb#_}Zn?_kZ4&4T64TIk&<|Hv=J@JKXJl7Ehm`1>Q{QOL~(gU44n z3-29300ZzOz5p+#>sAVQj>H%p$|#M}qyp%f>bURE|I>{ke4nzS>;e;iA%O3^PIHC- z@en)*tMEvl;O=YkioxxZsCcCHGp}av1z+~v>19dQb!14)kej0Zz;-8JioA4NXh5-2b+T6fFtPb( zk^o5?VpT>~e6a`)8_w+zws)q-uNVS>1PuPCO(ui+%-hw_3V+lyt_qrO$c0VBxEMe| z1KK%9g37jw9*yK+y=aEyK@tndT3L+X%$=5?j2U&m>xDKi3i6Nd5|H$B>e6;cj*gb0 z2?woJa$FQrjT&W*LX#Y0yAF&NjLXe1(!jlJ+$U?H>2oi1P?&%2iYtT-N=t-oy|WVB z{+hLO59}J7Noe|?W0`l%CfTm?d)zNahxOprW?up zM;MMPUNbniU4M3)_|Q!^ z5&w7kKhnQxXwQPTosF7W*mFM=p=1h)A~?hZQ3;4KF~N@IMWA`|qPj*YrgC~V$~@C2 zx@eK0gZ~bQ|1RUd`9f+}ipl0)4hv{5n&slJA6R{6sZ#&q&Fp#Rlb@!`c$3e>1}PLx ze&dZ}rqGfAMR9Ob#67MLYcQF}z?t2(l;AmuSMyWl${U~{k!weC#0LSvZDWqX%IF-z z3qrAHUJ7ibAVhHrWjf8z>XA7D?O7x;JhMSH%7lt7^XAO+cq9rg#v#~fN~ zQ77#}9T(e{{y9A~^Hw0!=%EBrUEd#Tk$wAPVJ*$E{qIdIc{%Ou8Vy&S@us`>KkD9H z#ZN5sNpHR8cE5>y`<+d&@&6*x=$x;B+->|L^l}e& z-|lE52onN9AmUJh^s9$eW%}Ne_v2DeLH5Q@cw_yZDGnfjLKS`NvUA2i;L0(G;y8Z~ zcsy7-xO{CEFVC>1uY7&lJHl!H`~9!f!)cadOi-w^i1ul9TpVo5)OjP_W;PulA>n9j zv{4{{Y7L`NE0*R?3u8e+Um({w?&)&ZHQ7xKYZJC)=kw+_u10F-XD0!wy0-hhS}zb| zm(sAS8dYg%(od!g!$_R+7@}+^j;8)KJ1iPkLb$42BUJUMftV>#kgI93b&cbd$1S*pW>ee7+qziEq> zAc&~He>9%p|LYZb$7vyYQ^ z+x?H$Eb}8_mOTYFt>M(@$}@5);ZYHlmTlzC^h|T9Kz%m*RoDRPx;CWWDD)hG=t%-D znZfjo2FKAGV(3TZlOfQ~u0>avmSw?8S%&HqQm}|_f@2{Vx_;AN$M$@l3@?Y~?&Rrt z?Y(At16eoShIIET_}ZyH7&7_vkUaRLrU%9OdV>2!8K?lPei%wWX8+3j>|U=X19>w1 zwrIa554;b_f5r6bNcLo}CUiDyA2F;1tIud<)=Y>W)potk$x2^EEC}TXV#4xXzJGrv zg5jir9SadDGFjNZdJW3IcU)N>EV%K+;I0L3I<@edPaou{TvLd&+gY&tjJX1(c^;Dw z($6un0?WU@_noQk)q4^fGig6h)o&CMA~fNp1#9-Lj~(uBX==Wzc`${B)wxjGYN+m4 zY$)%fKq75pRH&({Dt>m0agewbKqv3$I3^Puv za}QRShapJM;#cE^k^Mvr(rMNZ)!cfRHCL#Jr=vRN+h$O_UVHNYNg29C?`dtBIJX6+ z*y)uwQ7~NN-#pIKjSS~hHqATjFi#fje+f4am1zSQYT%4yn^C&F_3tsG0qYy)_)8x- z+qs6_{uePDZIMB8*(e6@HLUJ2M27`{bOgonC>*gSKQ+{xEhCte?R(9_;WqXwl;X0S zypU9}GGfQ;+QdDY3Nm06FRQG-WbbVUjx#b#)hVg1z(9rAhMBf~C&B}t(^j{= zKbHn;+9noV-L)XynFz-H?}nC^$@%ARCl#kHc^QIKWwAK${6d4UD0`hw-512m7z@aH ztEZkU78K7qo`^^EN$A3=C%d@qpt);^p|h$Y?O&4U=JG6i06`wBO9ymg$g&4=?%txY zx%7howUu1WvA(|g%um%ERy8tDMvfGA;D;eksW?CY%w+k_!M6)p2Wz}InLyh?!_o*q z3w_sS{F|_GpCC}N+*WWu?G}yygK?S%`gBF7e=mki(9ew3%OnZ{eDG@8muXfcC!M zX!L!zf{{kS`R`h;+pN{D>COP+OC@krPS1fDjUJSZ{8gW+Ku*%@o*sW~$#s4Yo>)H) znjMhXbIOWihOcY@=T;K zSCvSY`}UD+4=)w?X-qG?rM@lSN$=iF>=Y3+V(5@nTCHVgd(FZ5mq3&h8m0C1kl#nm(9F3oj z^XGSjaXXtq9#MW1Hmwfok(insDiIhs@DI2e<>erXIF!RM_U^4!pQ}wTm%uWT< zbw%!V__q0JX#hyI@T+2b{IA??zr~;#)hz%a3?U6Dn;~PLLE{N1-JMnIcd2I#FEdQR zr!yDGT6`|xFOF_>cC!R$P~A$Dqc{@eZIXz+nF~Yu3hk>*bop4 zdw}memK!Tj-*Lak&)y3FVrOb^8i5V>L?8wb01yI5ctHl|BdZ@#0Ot=F5IJKaui-FK zx(vy#G~U@{vUUl=(tQFE>g&66vFrW3Ekhrv^`C1kps&(XVZldSy3$Hm5);e(dnS=g&vBZ_f3OpL-3JmacqL zNPA;Zeaj`ajexZjm7Zx$?Z>}LYoLd{Coo!v<6*qC;JR%Qnduj8a`beEQa4TjVs{x|MlW=wuN_|MVKp z^A-e+zAU8zvs1P93MpHONi!RhHz4*INtx`mpr+11h7U6E?WVORFCD9!OhnP$P$ve+ z{!ZfcwVZ=#7M_A7*~3&`1>~#XdhX3OTzbk6_M#q@Gv~&o$n+tGWdPch-I{QmgxBg~ zeOsQZ5jIL8=JMBPega0D&oJW@E(Z#$7Sp`(`FH8ZP1FfOsaY5Odpg;i?8igyt#3$< z0pnS%_si6YIS~2kcGwog_K6#l`D{7q;pZewKFPhBzCnq({)-Q>gzl z@MfL?DoT0oe(F6-2FX<8T|LqD$4G!MUwY%{Krkvy)OWg4%|$eTJP-Elt_}>uWMM-P zUr@)y@p&D`?C$?}K#!y#PgH7*lo+eTKFRYoA16e(!Qyxs=Xgi^EQ4|dM{cLvK~xT> zMgR(#0VMpjW$bo6P~)B!58tAO+qJIftQ~cXmhEf0i0O4GZ^Ep zjN}Qta11}?u)XX4qOIpL$p{6SS!xudbBZ*74FU9raiCb{zML0jWriF`YZa~@1+1`= zZR%aqNPzsYQX?fqwnp(l|HB2%BOi!yniwV;19)bbV$!ir_YZpt8^{N!;A5hYiV7M!@zk(& zXx6Hi!JyK41x^SA4QLpZ0pzE(Nn-*iTS|LlyhNAYqVeJ@sd0s}}?rcsd&jr8(bR zw}1s9PTEH#4&NBr9R*0^4FI#cu%mKinSb4i2zFY3q6ZI0p|yZZzp8Hh3$SSOdJw+JvK^FtOlxm9lC zw)$DUD0O4&I4k>fIuR1%`&TH|Z~G^yK|E%o0-Cbf_=*I(x_XoS1p!>60g2~wmKLFll^69|t@ zN1?ieU?QmXaos*vVXYOgl)wQT)piGBFOLsd3?8_8(_WabsDf2CK@J9ulT?c%hOLCiElx31<{_oYK^7GXApufN8b@2`qX5D;z6lXvPXAVFWO#^qBT z!v(1n!X*OqLyJA9@{#Hd*A(_y=Oc(&Gj290(8L&J>-=Y0ej_A5i7V24bf<=Ra&xy}tq{4WyJvmAM-T9QjofHxsrV_churC)&XX1N&rbhyr*mMzMK!Fadn-?A3}wb6 z#F}0RvP9>k`JWQb*A4xAEGWK(8xChHtI$25D3yyO7#E`>45My3$rdsrmfAAUX?il= z{LYj8$z<#U-I+JU3!w>UNG)fxkp=f_`W4G68W%ZoCMB=n(th*s%Yxd?K%GxS$6&hA zoOW7eL~gY7(|_6UmRnSr+4ojU_-yP_PhFBG(wsg1TW-Tp9m9`Y_ zVq@1h7QZxkaG-46ltYEzmH1splzPfp> zWf1|y9A1NMm=SvUs~R3&wq%_Ekj*?dJW57f_!8}3>!W-vJ-%~=jCHi#v(T*-3i(ba zYf0Y>#(c9jvWh}1dECjE!ppG7!?FhAy9c8vqL#+@BChX;chSJsVMWv753En0P3J89 z9()|bmvBQ2iEhgO6%t}#}H4FgK z($Y(bju$8?bl)5hPzX_Em#7%*LII*+I1_AWc?sYOcwU4`b+DwGz)@HygAr%d)-z^(YM^xKB zy!cdi!2+dO-s;%X*hi=>x zlyvMOz+*a24clIA03)24HZO;T@k4{Lki;S~A#jWX-ZXo{0mLB;xgBuCc%8Ms)jt$L zAq2fV*GB_d@-&8Lx|JDsctNRjJdDeCIoFKEmjzYl4sU6{YWxtR$5pW2ZT%Lc!*47} zaK&~maGFmWAc}d+bfS_x!;*Q- z?aV(bu(><)Xflod%UlN`uq`4ELzcyz%d}J|Cv~XwIu1Q+7v{ncrxdZ>yv-%i*p<%P znaew=ly8ry?0WM6FSQ|Jj2*9<5%7#>W53|6Jm-?o=00CI`5+%>RQ5oyOvRzSGpZ&YV> zjRL`7$On&&?+JJ6GK0Sx73)RfG9U$8m$m}(Xt1fCgmRGY4OaDW)>FMn@tEqY2Fyiz zxb3jB-g0blPgiR?n9_O-H{@i!PL$6vyNO4ZbnEA6#;wXY_cTUpqS2zCubyVZKjdl2 z4VG+;QcwZhjFLQc=&}_vB3Os$&drQ&a~hkAI2dFFUV)Gp$RZih>KsQ>PcW7;mDiA+ zjS5>L1r*=7{y*jV@5gPl+i0EBpuJWYoUz|-rrjHKuz{*YP4g)GSw>1Q+cxTIRnZo7 zYQrhw+^4Iw@~ncv78t1!!M?6&({3gp(Tq+uPVmCUg7<53zW}<7JxK-b5skq$LUTCIn)98vO0_zbm0y_81{7;G9@7*hfhnOI zA5+AWGEvsUtnOll?bzb?9geb>d2X}3tp=M^&S>3c%vj8#=aR}k1cOcyiwT^uD_c3uFj~~Mp|d+QOr%|G`5t39iJbOg#hw^i8eL}yQwd8(m(2wQ#C!}A#68=L9N7?{(Zb^FszOCgWFnD|QsIbl;Igcj z3N(;Vir8x#G`m*EC(O<~)briqjr%E{crb;Js4}_eOV=^vCXD(I10V$g2{060 zaKQn?Y?{_;y#ls{%TcD&j-~>~Hkm*}s22?LL_sQWI@B$vn0E3zXYMmJ9SjK_oz3HjWlzQnilq|oV(@vx38`XJVN&Alv zQRlqIe&@#TyG?%absm!AAJhA6KLq=7?4k_ZhMLCzu;0FYHPLDsb5t$=TF+u0?r44U z*wA^ntHBc)%WwK@Es^Fu4>`xdj5VlmmXeUtCpi3z<9Q{}&vEg!Mj4+pgrG8*3EBRB zwa5BTI+HZAFsRjw21*t(i7{sK(xey-!rLE&rr?o!ujJn%MZkbfq)-=9ftYlHIf!EN zO>PwC0whL8_Mxh=hJxfa)Nr`A8CSga&r!P?X0^YRjd+jpo=CVNh65-gDErccbPLx3 zJV?Qm+lk_3>Dy+^W=8-*I%|QoZ~W+qikB!D1yH97AwR#PZQ9mZia=WfXd4**>Bq{p z&9dNIR7Hr{Vzs=+P5UgWrGt%|u#~~R?o&O0s99jv&1i})Z=eVU7I3G*l!T2uPB!$S zWVAF8VM<}bq#8UO6x+>*B}7NuS&gR@9?2uCfI4~B-zjXN0X{>6tz|OBNHmwMHj9V= zI#D|$a={WR)s(P7nmA62))uI-&xFfI{O z2=15kMwp@HbwVV7NC&JwyUlO6eq{*|7E7VYVUGV$)6PN}aWAFQj2YLqV7{w(z8n3l zg7O|OvDA3}*A6?v|S~1f7C$#VIJT7)GBB#xKzMsh#wzwl~NYYIS9bOm>Viw9@VZl zDULayJYp!>x-~Vctmx3a)wu8Kt=r)~QKgS=3P{}ZZpWxwi0#f)pX*ug2|d@S>}po8v>ISMaq<-LC`)Z{N{EYY)Mm27N#vq|D#B1BX?w#fn5xToOwt02iSIdr2}zhBLiZ3wZ4-*nt}i;^@v@$yX*RKdqH3tr+E5L8j0WmLJ-Q>(hji_kNW;<#6AB!9(Ht} zPb8*CnTKoCAhYu`3H-&NHfdx=0_gh$;zlQqY|kuuAe8H1?7{Uxz?Iqqw(K(#97my-v-lN81Z>+Lid%D`%-GuO4LI_)mvn`` zfjB3%t9i|*kHwA=mZ_&%LDjI7uD`#_H&u1!VDUVuY|G!ILD0!#{#41-+^{n_1g(Y` zOA^)>#A+u&oNL0eI;f5ew!QBYe0%Kh(2_QNzDM;T*js9-tYgcfq7u<=W^$9%ncMw0 zwCieHc+I_W+j%X8Hu*Sz3z9&oQyJFE9%Y$hCTx-cqHJ*vJ_BYq6P<7u4>*h6onu$C zkye(n>OH{PHjCE-JPRudBgbpMCF;XoZCBIwA%`hJSpV#Ku9dYW^wZXMH~J-U&C6$I zE1BUW+&4001>T07jpZpbZ;6<{Dt+efaprgU8-gqxVW$#)0@{3qaKap2c`F(Pzf8p1~nUqt&8*LhGvJa zvdp`Mu|Sj2&zpROGGIW-4I^)2|#ejBps5hnADbBGD6_KM=5)RVY`J<-@A(ceZfE&_XV>)we`Sxb2ULHpBR=28^{iFN+V(9sD?f==3_kclpP>au zXHvl`XIw-`rhlBCBH;477xqd#k78KkNF4jGxsj)`Svf{h$Y9&@d1nF+61x2z<@KbV z+C6Ezl`}w*J}r~f*BI_PAlySsajUb8P z*EoAN4^D_{%jM_MA2*jEMn0jtZN5qWMGrtBB!GC2XYBfS5)hF7$;Z%c#m|J#f%??O z{D$I>%#V7pGq(G$ZK`w1HaAR7Fug_?69z{);;n0KGY$X}xy?o={)wQaFH&TO1PO0h zXf8Dog{b9(X^Cs448 z1Q5e^u8n}Zs*P%isXo1g(VQix5U3(%t5qaqYJYhxW$@+8H4tht)#3^s*i<+VY>>7< z@OEr{nT|MBi0WkeL70@Jer2d2ae%@kds?tZlcMe9-y5hbHkNE*!3~%MSWvruA?)_R zDa|1$R;w7qc9r}sea}%`F)8Z92x=$Hb+I63i*_UKl-?uR5JtETWvlqHdSaS^53f7d z_7K#D&R5-Ly@}a2%u8WMM&#GW#_i^I%q{sS;y}9gSpC z#k|ArRm5STpl$d1_I^vU9vl~sUOXLw-c6W!0=%M;J_n0q$}{R-$)6UEJL3^qTnaA% zu3t!cCPu9O37s| zZy`n4Hng>E)sUvg#MZKPIR+S1`h>(qSk-4bqKY3=$tm1f@F-PN{ zSSlpIdh3+PFB)XYvip`sb(s~n&alm9!O@zs-#dw(@zUfJPbi)=n7}pIb+gHQU@sb* z;H(hnsDws9e~3Vc2Sxx#K)AnnxOJ;@Z^c&$XwNyh^x(%w-%8pcLD5>+-G{O`fmVNWV)!y)b?9SND&CZdc=v3?R?Mvp`XDAVEQD&}fFze- z!M9sU5hRWV=dVq9z(m0srvZDRaUc>2X`9IU(}l{JLjr)ZDb1-8$BDsGA@Hb6ePc1~ zu;LH$h#9R=z(u%_%0xJBpg|ykknFOl7RcGQ@R1cG31T>`h1TKv7NR61B4|&`D1rr# zyw(_CsB9K-tNNU5kXQ&Pr?e+o+CB?vZ#4F()V zGR_GIvS<-f<_y(%If)2@#}%P|O(=U8xYU9kEmpD9GATwU``MXA7GlOO#h+k=LmT4Z z(sV#BhgjKfm(p2VNLi6WCv`C_UwpZ4YUbF|`}Xe=r&eCJ^iE9WLT7GZX$^g}C*u3x zll$`pj2)5990UGwNDlx(=>RdWh!q}}_$FkA*Sr7uYY(9J1GUhYIs)=SD2%9Icwf2p zezyV=qM!0zAxz!Bb~UQ)w85f;!*vy5$F1hUObJ#gIohYnI)HB=R6vd*L$=`x zFY>Ub&6Ybc%a_wbFGKa31JKwPC;q$rPwHX3&gr4Av#?^mf>O{HVpqqD|6B(D5}N0; zPTF`}hcg1flpR_16;i@S2mtk;3}8U}!wlgN073y(0*;we;vfL%8thBd7sK`bht1sb zeK&3Ax?DQGUo$lk(BXN6iPrGhBQ92!;+@sp-+RzPYy<1k|QFpuxd$X+d-(zX%M6mOqe>Z{b&}|{RK0)^S3n#>i(%!Wcr?St3;W>?u zX1pY_`K)^~do2|L8JU5Q6^kREhvtl2{CShN~rN@-!j&*DM94|AOsxtFzG^B~*H{cbmu`4CMu^Fem zseZT^Y3G;3gkRcFQ5S0fc^HK=;g-+k@r-!xaLtt1i;|TmZO@T5s)R{NMiDrnmIubX zr1C2kbPD(6Jljn!dldJO>ta>QgXd+(j8~rl@#yL7Qk*FvI*@C!{aO~8eS2PS1mnJnaUAi3zqR8ADN83CXn#Ql`Tw*<%10{>Wo*7YWDaI>y~Oz=^i$w8g&OO8e%=gGPl>ey3X_;y6-hqdDEJws|dIz*wI+RS4VrN7KZ@ zFeD^x+RfqT%fAkr*t14F5be`w`Ay^TCF5hsi6PbWoH50oiEpW&*8h_}SoE^snPf|j zz!D)8ganc}ho9on(B2aN6OIbgy%J@YfVJ+9hPz$+Te&|<`2xvhT(eBJReo4C+A?i4 zCvTHC8ZzzLGUlDMMzA4#!el>{_guIZivB~MYPrqT^M}545Bc^q$hmMeWe>DYJDu*t*}Ch#yw!H)fOBe|FBm}@m(0qz za@@W;A(nP5V3%b^uqaD9bi8&I@i1Cm`U+WglSDLN9Y~&1C~-DQ%9rQU;zi6TbuY!7 zO#E%YQu7QiIB?zA7@jv=x~|XQPZ6A00WW*jLNh9Y@p+Gvqn}M{X-eDB4Mb<$1K9<= z+cypTeW8n3yj`89qc<%yog#VP)3YsbT^vSNvWxiCBw~Jl);vo-Bu^I1V5uEZRGSfHPNIj4Yuph84?em2DpkwNEnv2uv%x6NFF2J>@yy*Bx;Pu;KD zaMxdl=!{MFox~;ys<%YchqCQd6a{E+jV*JamD@wp5(tq&SIz!o{(t|TJ%u%;O;*B- zaK_M5q;jg0->8zf;4ltJ_U@E}Ab^N<10h_%s!{!^Pzca`5u-*l#y)Y138s)ucS`yn zpIhT>3g`Ep8 z57C-WUSK5wO_-e#IEE4bW2c5#1_0w>eP8p=-4zb}iAU{U^hr8*D|*JZ1FkV&Jl+@V zrCQ}(oD%*2o!b}A*#39V^8ZFcln4H`gM-ksqRo-w?~0YEf5`Yl4YTe4w>6m4Vm^6M7dQkzZDw*p8A|4imu5aa4;0()`HhmKFPaZ*SEU|;l!nq%S) zpDpj4fuU9+0)QwWFx^M?8uk3n0Rx>*#fqw^i^poVk_%_swPvXmZ4wrkCjUbK7{Q=F z*hB~Fkni>AGzXW{n_q#cugu-#@T)#a+2r&27~$ov{jAN7!!t>{YewhedB|1C|7~NX zn%|@mr%wrwATODmOJ=sjdd~{&HPJ=BYUPh$+|%Xx>l@vD=jtWKjM}~GiPTC2dV>(( z>+F_NzE(NLyU8%E_0;}T+i`L=dd;jBYv1fmYA*)PH6^Y_t~x9YQ__#=nS)asYO3-- z^gmbspSd0eE@m$|i>T4b)Z$?-&B9~TO*D#$t)DTlD5xzGD?|er5p*o9b_U zTJgV5aBNcD#x0J2;My3+KgpDh>`x{L-TwGv%nJj>jwh;VUU>A%3HaDT0~jqi2KfSm z!f^Me7=#Cp`Unl~`5uNUn+K*I^ilU#7mekiP@u%e4Dtf>LRLWK+rk|Aerh$tA2U?~ z1P9E!%BrQ58s0^diOx8)=yoTO#jHebd4f4w+`Va0_n!CLT86{k(cf-nP`7EN>azEC zl6ImtS(}DBG+IZ>E&J#%UcJ+Sx5;AHC(|Mx*Fy?Q(zEKT-sML+)g4q}-U_$0NhiDC z15xq8tDf3XJl-oXLq;2@=;cbJ{jN=bWt{XBf-mc{1Z?RwYsq63{B^Ge+W$6E+31)U zDq9tk(skyiu&bv=m1F3w&+D6*5(@&DbueLI`n2UY`w2>g6b%etxI8ecQxkUk@AShC!58m)X^RHIJGjbyu$oowqBnV&ze z`E#~@hF&EaYrSqY;CWm_u@iE)x28?8XMreLA4+b$K^2_g5)OQ#3CPYx zr7A#2NcirDvK6dR9hc0Z^NE{dlG66bC678S^~SyfiXxZ&1|}*8&|n3}d}RVsNM$j% zV$xdn4jP4V`TwD_IE$FMCtSL$*suI8sL$FRFe0ZbEc403G=wA6uP1l*lNc8DY@*{P zujk!W0c}tIu_l!b&H7R#Dam2S5Mxd(2l>3x`g(XrYtf^%c-l}GK$?0II)~(7biuaC z<99kl;A1SDB~EgkYlFwWles)C!DTA~E}R;>n{>|pNxigiC_q@_Kt7(n7jAMQSB<#} zKs){bsRC6=qg}aG=dx`lsOg#i%acPmyD~+*{nyMqaeo#u4+5Hc%OA8oUh^mhK;OFj zv;ATCV#y0EWlrDTM|{0FMe~O3w zOdk2CS%ovh^}_C_PGEP5_<(`x6v|hrSer_ ziFI4zJGT~Dgf+2_?MOJg+((c~);QSEFQ?Q!ucqCHoCBRELhy>6>-DNji{WOo*i^n5 zRhp#dOGfKmRpzC2OHw7o6T=05z7l5RZszq7gjCF@g$3Jj*8X>l2XWnga2yNtsGJyf z%Fatnl5puHW6>RIAQg+=85kbSoDI)3Tee_6K%F8CgqsCIYwJ<;!FQ5D6cYKnrco4p zOxr(qt-nHf#5hQE{9MgV2Hb210SMs?H6z%UAqlQv5ldV{=*dRw1KL_Vn=M{klQCM3 z{y=K-`}t1~mjhcf2Dm6}1Xe+a5H(uyqtq6MJ`cU-UE|=N9kVuLr9H_D80#iTPVm94@LnOqJn8-IHsa-zGLV_tBhNkz#)AWD+ z;^4xF<)6~j)8mMLvtG&nQ&Haj72UdP8pK6CyRb_Nz3LuCugB-FvrO*%mB+$;(^{W< zD-cHOd^{Hy;b@8Q_?}1nFF#emN@hTcxbTViN%r^rO?B89+}eyXD@yuV<65_EpFr0I zvs!tG2;oHySu59ZeE)^ye1aJZ9DW5F7_DqG)|dEwv#=yYiGLyclNTq!=dk@p>ib*` zk@7Un7oTM(X(jIb*L4}gPocN6?t3X^y{GTdI3u%Z?;lh*DUk?yWG+*_-)6Oc(pe6v zuiY9@1RDDN-<|9$7`^grLr=R zi*9iH!BI7E!kf@$Ml#52}h z&uwC3B&Ues=dQWOmQ!?X0|yj^ea}6Vd_?RMHS^bs{(D}fOwzMu=RyR=_0ad8gh#Z{rK$CRqC|pWkfZJjGA8E7O=x5tTT^##P%)YB=?^q05*Ip`{A2YcSm9v)KzAu zXIA+a_B3q<%=lU|W1+fpZ>@YAsG=9gB4oUNr0l*pQ)!G!_(vjDDumLS>{O?!NSv9T zDfcTHk~vnw`Q`pa4AZTo%~tXOkn23FAT=9EM67M{G|vreQhjJwt>w_h#QS@^YIc-y z46o-l=>NPk9n7a<$9Q_oB1AEsODmxXITt5JLKT6~L!-ruN&~OT{o;xtv2;=SlR^d1 zZ=x=vy&JXnYeKr|Xo@Lz$~l~r1xFJvap9Yt>~xvtDv+YxWW!wRHFUc}$vwVQ1_-k1 z(77&UxV2zidY!+93$EHb3^guTr8~iy97OyalnYaX7UUO@I%dn}^Z48?L}nr4nk;i2 zzqolzB(^@WG)6=?v#*9z8pVJ&>oU?#n{?;+e}G_lLI@UfgPQG; zJ*r^Zdt^c*4>Q!Tv#6qVW})EAxYnl{R4FA3Lo6lCPqFTogxQ+Jf36~5O?I2v6b$XW zwZ8){-qYmLsOfy}Wfb|x+PDS1g>DveSkkCNkk^?|;bF00q1seuv0yTymtnv~fAW}tTc+jcM_Uc6*h|t?7w|mqMiW|!l_3V8m1l55WhskD z;W)Gl$&Q=-{!3jQ?|<3-f0w^ya{OWK3{Gdv=>$FfxJa*BH|NT6pFImIu#KFrR^%mP zeRl~Xjgz`hJb4D+ucTx8QRHAPoo5)@zap=$9XXC01Hbm^R=aQXx=a=f*0FsK_|bWD zzLLvI>=77G9zBbKMd&)oOOwBkRq5#AsTK0Ob4u6CkuOA&#MVfV5HUTqe0um7sdBc? zB}u8G2-gYzij-vSPvDDh;HwQMPlj|!1LMnfRS&jfC+s03BC@R%9eS^ewIGGJSGzNR z+H445nr?q=?b>~a(Hys=3|=uVys?uQayK%eh(|JUrKf{2g8r7q2mRH_UUNx%dp0BxbB3xtN`gUlhM$XsuJu&|} zOf>Agt)3TFBxgk0%{el)kMM*xy?w+K$U=T^#1i zFX|&vP2Uoiv!EO(b(6B<$_)rDxHBqbU9_jng;(@$OSrJ67TAcMF{C1ZU2s?+Rw@-_ zeNd`;M5;_`juF_@^FzR{eIDBTrwun&GW|JNe z$_9IS{39LQ=pFUr`D@f?I2w`Mz(XS>D<%#KH=sRW-x>V$N@3B>i`?$lvIEy$>xvt4 z<2@AfolHE9Oc(Exct4g_F?ztSoXxcOIPz+^%pFF2t(|~LIDu`g@*Xfuq^pHb8R*Kr#5(kE>suv ziPU`k*kw)D)X&w<{co&O5=qY~90>%$&!3Pdl*d5ZddH-p- zG!-Ips511M5ot2uu$)04`2|^KuzT6k6BCGM!x-uzDFP%j*z?66enex z`>~f zd_8peA1e>%T~X~IPvm1>iV~Gpks2{)6RiBp1>*ic`dZ41O)V&@DxxCNt4m0KfKU#i4SG$YwfV`iS>UY@l% z%gO(4#?u-^r#2G5H|t9RDs0*QaMU*Z=|46Yjg)Kj`s-S-$e%IH^p|5deO?ZiKj2@0 zRc!slweq4Uz9*}OABi-%9X+cM*nO#`eh~q(;MZ_9{^6KpGBYDld>`3=x}t9y>bsSe8{21^h^F zm-c89iT{nOf5z`*{+G+yj~#}}4@>4Q?CyzyAdp~4B%f?a>;7VPP~I#|JyJ^hf9r!D zy!~wBlFKFP5)4c`0y>^`Mgl82H>|WK=#dXoT0%JWmm1NocxK^APT6V2rNu}RD4G6cDIz zQl@h`9ylWyN-?Ew@O7!JP3{!fT4fIbEUVF$xh|~X#3gJW9W7``#-f19&sCPRjVE`r zucc3)u++h5-^3H&Xml^Y7wo}P6cLf_K}Iiy+&+<8EUxkTv(XZDgHxJQHLDr&B_ejo z9s}#U$g%^9(A{l}xG9Sr7!nKPq_l|SpOL|qIFI&eN*7L`FaBdG43xi}PjZ8`dxE%< z3>RRC2gZPQ3_1C*xxzYbzekGpM6hQKXvbZ7tHj#9E4Qxx&HUz z_lyg~DzIG9I1>Po1$>-fAOfW-Ov5D1Bj;c48-MB|hfX+y+@i#z0{TnI?7WmG-d9@R z#D&j#+J5Sf%7Uf(P`zLfUDrWY+;KGnzciDZ&sYzmgAt!c=`5{ z+S6sNT;7V|^f@5*DZW8>Wu@$T*&0Ojfj#cJ$Za_xAqf7J;znr(#gapnT=)>S)2XNm zl0U0Wq8TPZGDyB~s0R;51ibC!X}a~bo~$+0J$yRenXOAIvcn-N?2GBg7D@Ns=fR(5 z-Kb)1RkyKSNuCA5aW25TlPm=R(8+Y+?R_lo-iv-R<%yxu`A zaVU8djG8)R$HCYl?tBakN5RFHW+YTcH`cg#Ym9Ecx=R?dv**6uG{rWTu-wpQ(sB|? z&3e5dd-%hPPlA>%T$T5ii(5IRWU@~oPm)ArP0FS5*PL8e&_mS?<&DSB|DVSxEAR72jj^+-xro>kDCnfAdkqk!3VE zDt><>THIxWO>0kl3bDP^1K{~e*dv<1Q7AueGB8977=e{#UzJPsp5(^&eK+U=5BhQW zlF+_|NSs$9u1vU(SYik2S0>v{YXtqpc|GlYpeRCCf2snI!Gq{k>?B`CkDYQrL|Q&K zPWaf$r^jv@uY6w=IUv6v5@cGgEjCuKh(08ZU(jL&7>q>hoSQ1}c}Y2C@F0D>8>&oX?f6p(&@cTLjo8!pC(&7n_wYZNzU)M>c_+E%6H*(ZtFVX-d@T zxZ%q@`p%zreh}A{pR?^hY+Pa6x(yOeM++&#^z1k|rK#ZslySOQS{%x{k{gGM&2!^{ z6X6waZOZA4cWpvPw{smr#epNcF$jQ;8g$6O9Ar*zKOJw$q}jLUYIp_1j;6dEcvYjj zg-7aG_nfIU(?OW7#hla`u=86unTP5Y$V`(Yve31hi-j|TvTF2dj&jO{>+((Ea8lwS zql7wRu%NAXjGkh^NmCgEILPFYbSt)M?J;QqX}=5Dz_$bd3WzVJNHkm5@X8-q=mF3j zYR1-DDT|S+#rwEvMWNK}5_;}#(*{oDeYl1!VRYU1J&PZ6$E?cldl&eho<=<0acDEd zfrkPDAoV`4!uHboj}?`<#`Pku@|gFCrOhdP(!RHjgGJ3F(sDWkbZk7siYu9qqsOy> z=0?xmCaA%I$!a0#jmBXt##!$6j+=)+p#422xC(O`UqW6fi1;QjK#?)n2%y1bET0OK zq>}k!cG<4*2$A<+w!(t@>xbA4KYUy)_h!2Orq0bjInlQP&(Zf3vmKf7lYm>#JTVO=`F19v-PiO&(T<>0ID$ z(Z1ZyA@#5$CS3P*l%V7mn!u!Hz>-N{_Q8=GIFh$G2qRHeGg(QDd>cm(eqsQd@A5_C z(XFdP(M)Rj$Th6)z3m_Fps+LRF^|II;oh_AZMo9ftd9Ld5dR8`-py-WRHYi`Jm>gB z4NKaax{Q5H1wPS`8ZVm7lxVPlBD+k9(8S{D=2K}|3WNEY7Y)h6#;p@>>%GYv3Yi>z zs{g$6uv<=QEDRPFm_lzykMpzSqh!#Df5wPOJi#tczuP@WeLgQYueAf;!1*XPHgm=JAK1+%k*E6$EByud zg7TCP|A@@p|K%ixxyAdN(ENU`FP8hs_0507Ws}#^+73P-Y+n2S9ae3|Q8ji!|4`X{ z0I%(AH}VL@i6<^iqUQH;t24EK`sFL%XZXokz?_p_^|AfYJghHwjr9t244>e*%YWw;J`W}mvC;lpjWwtu!hRbg!&pWxqzx) znYP`SFcScQ_xK&LUXbjAeW)kAcA6kV^4VZY`z*3>wUh-J$g+VYi;K?77FAV1%(8s? z8TvUBj_K)V?zCp#3?&fprrAg+ICi)^1Ad$#E*Uq>1Qx-h&c)RqrINqd5nao;ri0kH ztGtd(Icnrou{fXe8lT_LJ(=4R)^4NP=I&?s%DVIG7w~+t&;a>1J|cj$8DR8Bm(*)r z^<54#_2I2h$=9(vP;b9Iq;nAE1^CVmJNxwjmInilruD>c zeUX`L0OmkQf8hy%;v5U!YLWnf#{T)za{wL-8gK#ykL%yZUxgs2w()|2l9)(^qG0<< zAVYI#Fo**ph&o&mJF=UUlKmvsjN!Q4g1k}KJ2c9LVDsD1Nj+H(JzL=AE z2>4&<-|%8~BIQcXRo@OBIm9sA;U?UOPZ^en5b5ek(BYtFG5 z2W?+o-40g!N-iMORA5A#6-6#p_V!VH`m3_$!_c{LG3M^R;^nLbY)qAyb5UcgErkQd zW=UNzJgEWGI4jnj1CW2%WKHh#?y9J6B)JO*YYJ0>%ICO^dY!F%Q;_YJ_UxD^8eUUx z$tjSjz~li#g=)rI92LzhAl%zOu`BR7;9O&n-4V99nN|2?{tk6k(ZVYMdCwVneZ`zt zW$Rumg&$mRSR>@JwTAE~!JvniK3=lLfOC<+@1+3pXpn#w-fu|Vb7Q4HXRdTS0#+SZc64y6 z{lRchsYRG}wB)|B-$?=Im6?|xLrbF(NbMfWOQ`w9&cQ|;FS^l(LkCzvP;#2AvX_X) z#fHrr7M;l#Tqj2FmoP=Rxuzm<1>ph7CzDS6F0&BP+3!0$T%P8P~dZ@@p$%Q_-$O9}nU-plOIyx31Cu;c06 z3|=Mi8(lEuR%{v0TkO+{<+XV0Q2VUfrURO}6L>PoQcv`ka>CP2EO?OV;drkR!52j= zZ%%ldNi+<&%VX%fm64iNV~4Sqf(Z12MB{0ORF$vTTh_q)E2?I3+k9oPE(AXC;2hnQ z0-{3zo;jEYze4eCK^qwrF&Si0v+LML>hN$IK@nLaXpw!?LD5v@y0eEMng>A!Xk$0& zd>@PMxOx8Y|GfBRRFlE?;a_eAmE8A^g#eu6{`=<*2H)6g!GF#4o`d7J^;6IJk+Db4 zA!k#_`2VpiP6>(C@;++)*va#4`=Y5iIfpFO=@l(`WjUqSJrGA%PqmosCU99i_3{WV{K!uO#lh zPLB@U8z9Ec&EI2$#A`>nyM4}Lcv+LPk|gltP_Y35YQb9wF`}B0wX%_f*f*j%sZmkG z_R|T*Ok-Ou#@H+trM5^yaNO~hznJlOjsjrQh2Y{y$f>!FVwTe+-`lseqd(G5VV>Gz zMf*(6I5$~%Hx*}Y%j{)qcf*$nQRNrpy=+T3Q|%Ti^^dBieNL5B5(F172}g9w$SFnJ zd>Xx4bqqDXJx47ASkd2N%0VHJMrXRp5l~_kg9iw-=4TpLl$|@EX=TP3N~64=*U0s` z@(~v_RO6psE-s%}IL))Xk9kwKDMv&XCH8o8B5@B3r%~aC#kg+^3MFkY!b~di=U{f!?ak5FO?hLuoDzG-A8=H6y!mgE#%7`-N zu9{`^hXLDSZshayLGOG{k<&4xR~Y??U6il@K8nLbQFb@p}`ImL2D!am0`XKM%jFT8(Mt@XmumMvgu18iG3 z%GaQdi8~o7Qj7%sDTI{{KaVe!)K9}{l!N4G->BxbUK$9>;#x~A?N%(tDiFcS(>vd&{RXZ%-!abPwpq=b7?w3C}`br>Tg zctuD6N;?Z;6UJJABC~Y|lGaH)gK4(e_5~!CACC7Zkr8%L@kbIU*nZe<=t)k?@qFylO*)q>RmS%yLgptF7 z!;28RK5#My6e5^n@xyr{gSo20o*L)`Sb&#yR}*+lYTdtSxx{xl&hSMW;F^45zWKOIJ+W4hAvkp~HE@Qk#LFbh*ws6V-aI_11%R>F!h0jlTiGI>MWA*SFNaz*ES+UnO|NOK5cU7q{@n@nj`d zufY|hdY%IImOlel1uNLYxoM}cz1%&`z79M&yfgd6vH*9~+3#`dB}_qiOx^UPZ#p#; zMNYJe!Es6uuWDOst2)4}NuEgrKquYK*4P$lX;)^>B#w@krdkv;&N#ah7|?r^EUh(O z!6K+V+#riYmF(LFR-@DGGFys<3V48RQ71V6-PlKiXF+^MbmxR200;yD!4NTUw-0#C zFHN%5<;ej(fWb=4+r>VL?xc1fNu$^+eD&OwvI;%9ycFyp;wqCY?&KL)7VTzeZt@fm zX0mZ)(S@g4qM2^wb;NL|uA!13{o>OR0X}*Kd&rppY-+(8Mi(uZ$yKlr zCpi;T@g*ds-$dPO`nQxAZF{WJqJhpiAhR0X?MR*18?kAMSez?_{$T;OwFBC8bv5c!*pbWB!#JL$yjhk#pvV}; z1Dxm>(n@_dj2YQkuKoRND2c;x3KCA8a^g^zwk&Wd4$LBUoWx70)0xAiKEiMg6sdPA zv>aUOh~5=DTRq4eOD6vI{ymBB)0x$7>%H8*qpIsMe|dy45&ei9S3ZgIKMIWza!*OK!LlpV>C-saBGeJxb-kfM%XQ63^6&bCNK*FbjvBrh^EJ93G~UHqa)me zwOBoTUtZBHLOyFZLir+`5Z)?N5h&==j#^RQ$*tkAELcFI#2tvUiV1CChL>2@XyX=(DF!jy z;M1Z8e~AgrYXxV@dfL)YcBr{6LErvzb3*RiilVVl$ z??3($nfS~jq%3|2$_}Vf6io7&tPhpwL~P_Xmz;(%oI^Xk3&g zV+Fxv#ry*SgA*UMuKT!DPm!hr2hfkaocsooyDhRY^Z-O!w!cw*`R!wB_qeyEc~%PY zxe~2TZY(T|_1cM{exn7{UNp5xie^fJqSwUqQ1hQU`l}%@;jmoqBveHyQtPnW-?QfkMH*GWoBK)>r52UP5>rBI(mglp#fbzH06~QX#BrQC*gH(SJX3CUX|1bXp0Cqt zcD6U^lnsd(6WuL+q~n-CK>gCk!^zf4AQ8nnNY31k6^&)J6)%{t_qB4PTgGOvTHX09 z+iLXEx`rkZM?aI9b;2WwoyWSar78A!wkpfLkkUdbxhzl^#Ayvag^nkths|+aGGcG| zHVX~OTTd#s3o0AQKlPk6Lk~8G(LZ@GyvD8?-y9Dx zF`(zg#ouw?8MKbGL)O5^M?7ZkBz(pjGts6xlEhs|hO+r$jx#EnU6rXoNkUloSg?6p zMD_0}rb=cbuch`O(_4K7S@a-K~Ky`Xi>^=YHGI6nw?-t1cG65UE1L` zORl$9n_cdkFBct0Qouk#1vF((sF8ge1$k&e1zK^oI<^?t{CSt7&*K=?r@?C`(fW;> z)*Uhy1|4Y#lMA%)@Qq8CP;!$etxUMV$Q&LGZagE`8UB5U9xlCc;bo8R8gbx235dhk z6V7{dDgXFr{cEj9ruL_k;qc4K>6Nyfjbw2(;VOOqq&x<|kIZMeL#7wecxRxGg0rzI z{ABnZ^j{ZQe$YpUhflZ;YQM`5pIHP&*Urb!>eh(Bhoa;CSkU^OEc4&;Ave;6sKep= zxKVHqg!w^ay$o#073z!fDv3C))Fz(wwpecOXv1ZRg`x0|1=K}*A_Q{{3)Tz>ugme} zx96U+m2<)|C-n{XH14__)GxsHH9Ttj7e2r@f(p;#D;2k;Z)=G6wz$5t39dGDWU9u(~F%UNXiX zHV8ICU%fvZvA}aIXQ|ioAXc z3eci_A2kP^Od@j2V7{T&yW!Tn&j+izROHAay`luh=*giq{Z{w5VmX(o)X22a-Bzd0 zIMk23HTNmDo%mcalSPwab%(_}@EB~*T;DWRTwek2M2kn>_Vm7beTC}(qjsuGv8J}b znI>&rQ%)WQg<+r7TDD?%GPgnMZZC8lO`|O&U$N{FqdsKh zx+o^k#)|ntmJ>UWGD&ydZRwp8Q2GQmS z*>kHdlNDxLhdiD(5UKGq-Eb*;O-Ye*pzFbrVw@Hr|M*#xhdSV<%ZZ!E!#OWP`na^Qti8LZ9( zP6iC|oEc>Tb2iKXl8)kh)4rdhT*unm6njuK?1h%A_7uD0+WWAb1)r(noh#_PVhNt3 z;sJ`VF?`(IILT2OAZYcecPD}4GEo>?TKib(FO||xhSP7 zIm88^j!JNe(gF{zw459`#z%S;dIQMu13Fvz4G2oHF-%d$sYEo9O3x!(F6ET`+6_7N zHT48>U<4Qv34kD-+!pH|O|zIC1U>0z;a;>%fW{S@j=-G<`Gj!}^8egs4EbXLxVSUe zXv+*^rZoIxAo}piVUT9Z!~f$-9dGAt@k_ie0=|kV z9I(a+Z`vPhNFx9+w6PxU2Wx}+Dc^fqm_I?DR*Bv&QK)%c?uZz0v9d$(z4OnA8*|zN z&KTo;fAIR=K$7?A*>Aww-zetGMp;^Y)EcEK)2`wSN-xBVVs$ zJnxA0BZMSt&jW*oWTht*d>ZPTu(SJm-pCzX0zjxZ_fQ8oGTG;i7Zmp;m_)t(oC=cqi7|s~y0+E9S z|Cy9N-zw61pwINB3As;EJr;1CdU1W!ZXD%M__mB+zjg-!G>`D`aZF=Uij&nCmaN_}p z06?I%1~Z8@EwK>A5%+qoNlhN;?{p2Ll$_pg3@YX zmYT-oN9HFlV2Fo>2%4W~x9Inp?UxIOiM;Feou?zP#>D3GvmE`GyXgQrK*hiKdXtTp zm8yBKRg=p$gKyY$UJe0=1b~ML5cvIZ zjlAiuPL${kDdtqH9Z8c~8qCp%Z?7s+pj>j73ihWtn$`4llTDzwHYp80WWuttrgJG` zsu`U%a%fUOA^{!VS*EoZpHTLtN_oaqnouAWLDQAvZSMW0pOTxHnMc>lhA6zJgxL`5 z76ihhn^fhWwaKGeGDy;3hG3T6H&{!*!ME0;wQC#1Gr?BOur2 zwe1}+OmdNO&#&l3@Ktke0P7w19`nSFfkw45q`7_xWauZ4;TE5PA9gZ$ba*zmmp#9t z_{<4d-a-3648Ia_%RB+V=DQ3+fEWY8AY``;9;OI1Y?(c@@kTWQw^M0jS@m1YNm}%l zJ~NOw3FY_Fj3L6ymyesByOr$Jc|9eZ{drH(w(#3DH0Lu^os~iDekm+^gdtmN;lmy2 z_z%lIo;C2Sob}4Edj|*VF;p&+w;L1(u}*HYl$KRqoJhN{%}5# z!`8$lcoeJbMb8)Qjz@Oe7LeD%3H*|1jAeo>NJS@_fw7nTj<~DKv+BBNVGpdAF^dc9 zlPge?Wjtq=8F=`vg^%0TyLn34kcv$wYY`-{ zS+uUE8b=?AxLfd%KMp_K;oC-%cyK4nNN=B40qIO>IL~jSp;XQofI{2n5bpYl%Tv2s zo&^xK={hhP({+e5SYnh?3Hj^GVqcE9TxWs6to?%wHI+<3ZaK_nHcBd^NbPBecFsav zCTQ~ccB#V>VxXCt+Q}^ zyk#dQ5k&gpmY&B0tCw-xzhv&6aj;5KgdrrmB;<^x5SHihy40)2(n1lB-@_?CIBxs%b21CPU8_M2$?l^%3#(}29~Xs$fvJqZsOwrH z#=cf%*`@u8q%e=5jAr>J^M^oeL}Pc~b(rykXYBba{}V{xOO458pYUlS-$Bz@TJ7Gk z2u_8LG2AKI@4QlY%-?hyHR0``$``BGPucXl5o`z-!L7>?zhHxoEZgq7PBaTos+lxs z!pqR%6~1}4H2zT><`Yj~f?cCR9MFS)B8UO2`PCN` zgegwL3v20dYc{f>W(Bn69GDy}#3zPaIA+bIhv(x>or~>pdqT0nf zu@$!i&)sC$CxS>EYO(B}Ub`7hA?t!zLsJ#=7;%j!$Rgfay0u5gQXQD)3s$+!Q=NBGJaro`0V2-oD7(5^I$bD7eBH2Nz>ZQW~D0x8fl`rV+S3f zt)h8-s`WY zGw7dd;e5HIt&s{#k(O)Gn$rm8`>B+=g<9<>{Eil@5V5}ln{gDP^``KdrrE1x;$t1- zlTk=k#b zw&QIoF;Ex?|02-g0E`idV<3EFg?^Fmi%O4f|LViu3V12e_ulh~`?RrC+3)NkvbBwh zVK{1VrDtP!G;@pwwD9C%thuL-*v=P9PeAzbe2=z$gOc8j&KioWZNfIMrU~!{i!`l3xwcn>@wSoQ`kJH4zqZMR6RV4xp2uU#y#cOA} z(VQEH`W*+dDj$8!XRqrCUrZM`#q?H73iB3<77+;x`v0wHS-GDEc-vr5w*pYWRufs= zz+^XvX7`=6c>anovA$x@Wty{W3COEJSj!!B&o(iJQ-f0>lPKavE@Lfi2us9D5cCHj z)ha{!7BwPdIRa8zN}Py^g3szW%m??aGyHRkc8w#g6il%7xXH&{8iNnA^^c(SLCfsD z{ewg;va>95rgm~p0vsP{Omq;0csp@-%1dZ>7N3}KvA*B#G5@wrq2YM)1j@zh*n|l3 zmEM$5^?I74EomNu%_NV<<*x_(>36Ec$eCtcnv0k9xp=74!0~N2UC)UN>&r@t{&&ij zY4*7?r$Ge|V3pHgsMROhNQk`iDFj+YIi!s(KWWnWtowJDd{4%|69O$F9}mvj)w}-) zU3F3BpQ+8?WY9@m|3N*#oPPuK*lHBKt3Z!L$4v*xrmOgxU=i|2!>MGEyR8EOqyF4U zkBDMo-HCNHFQ`bK+wbL!=l`u1zN1lTMQO{$%fFaqAV(|fSQ6j7Li9P>v^yDY%`ftH zq@_YTZrxn-$F*dy$*e?FRTWoOgjR<|iC+7McAx8D!CD!%!F0&f^Ed3|jXub(twA57 z<`WaNLf{r5fqM~vD}nKoEVFiSY|4T@oImbVuz7N(rw zKGLCcZ^XWF86LPm^(mRAXQ{3s9-!5P3*T?B>6{=ABOq+k5k>d!H|5uy_DJv(fhg;CQet!R)aI}&|T-&ukt;2#M;tYF+U=T znoHwRaT`EwH$?H}9E_?OLR;AL5Wg(O{T&91Q|cV!+NPkn~*(_R*%fWPc+`i3i@J zn@z@87FQM^b3v_z3Q}4xjodo=sj`kZu~yJR6WAI&y~Ip?q27xe=o0OqvpV*{7oU-g z^`&p+X7iJm7Mvx0r*2e_pnFDb8hx(1q|^B`bbB4yl(c@1%heuT6|kjv1eA*rAqT{J z7HNu0@xD*`wU4OblN1Oo4LKgD-3RKH-j|Y>Y=#+q;1L#-d+ScrP~*w4lZ?+`kFw?h-LjfFS$`{&U!XHCL*S9<7{+;xv%vR_Pv)P z$w$NJq$WwC8K8E%l7(B*+hnV@8zXf{C2XM3-f|i0>Hp)1s~c?BkL+1iN>uNF_wLNi zk_y%A5PTktUDp?mI8(nzT;*SJm1M5erH1R|U5@#$P+USiLPvU%2oX$+y$V_Q`**(H zlFaokNXy{W9*#A<*q4!g`gdoHh66RO-F_VIrh1aU4;mV3OjfU@(Ji>&6Q$_8e!rnY zyzu!N-{CV|;{#TFj=a-ZuuNgZTxOJ}ksdYhFQ>%vGVVdWpFP%1)YfxBx4C)u&4=wX z7Kqv0dS3b$S5}?$+fY`OK8;p!op!XG$N}Z6XI6^ z-Tjt8Er>-1qFaqPHq!gI&sHjLDF4gQK|+Qz6;ug|q$s@m@gJzi5MC*bfzS1KJ)N$1 zRLYx8_LCdMLnqc_FlZhM-Z(Z|1cNo!Hx{nHqfrGO=hl`L$u~SGeX@pZc=2@CMtmtw ztB5kFtHEe|7k*gclb!yvOW~}U{X{kWr(cHXv zSuq0$zHL~t+=B!uTHreg-knPhqug@=)~=cKr?s|lQ71tXMq|%3G zy;-j^5T2v>xe*9zNi3F#y=IoI&%!LH-7v5?3?FWoEt*HzWM*dh8I`fqW7`HURco5k zX2qdWkvZuo7uQOP(unA=X%mkib?8QvM{dCuv+{X2Tzx480aQHvBK}K6Z3wD}s+G!5 zQ`e{c;tI20!`E&v3x9F=od#~FhY`JC+#IDko%})>0hv&NFxy9vpHrZfeEr9;1=9Ex ze%-XiXj$!Rr2HR%v~sK@6cne1bN{{LH+Qze^|c{+3hvLRHt5%Ws=Fp*6|H*z{oFfK z+#PdY;Es|R`K%}$YF?z2SG?F*eT`ZN__DPsn#9DA9js`3hlwW12;G3=cb&JG^xuiT z?ELpfzT1N)u^nL5SRh{DSdnGII zFg7d5>01`ojM!aJn4o^RkKsPE=Fx|e{*HX_vP8@t^L1WDgviyX9TG`%k%xToVP=Kx zC@`6A+bRR+G+<}`)lf}-`Gj+V1nj zibRMK0Gmhd4lVG|w6bO}=C0CUzKiZoF;PoT$?K z#K&?8E;8|dH-k0Kh91KbHLT0Em*2`g-@pHhX5fj6|9fEsN?N2uL{$VqX!ETEMMjZP zR+Lj6CzDO=u-jV7D^=jKy!20l%^4c>N!!iW3xO2CvYvRG5KUy zj*z;!SjI9lF{}{2pf7?TbX)OHLl9u-ij737<~5R)2GcBdYWta1LPl5?wR2=9AJUQY zWFk*3K^Ruwvaz#gxc|&L0V3aQK;;q&@lrAw6@qCxLYLV!zgxlX_?Xf0y?*BxwJ&*5 z(RyY10UW#I39aPmiK4&F@|u|Pnk}>XJIQUHKJUsfV>7hbj&GW3V~kcKAol%?8<@^p zo~^dB{;F?b;-w>sSZ&hEyEt!I@KO!v@urvr;Tmu_JDNBPCr#`7nylz*jw2+nXj$ul7fVeR=v6@8^v`r=H)~ySNpYB;1WU=jD z$H_t6(=2<~R>;1*nns%2X6=>?PAxvoj56xQ?sZu2Hj#d*Zf|rw%TqRlfKYM;r4i2=!)vvS}4aauQ}U`cr`BpMucCHOWAvk~`kxtoyq7T}V+m0BZDgQm%D zRvZouWrHb4yv8&!XFs-SZ;rUybv1~|l@%rD$H|`^?YD;xeceqbt}vHT%H=s*(awKu z#p+&qS#ZNHgS430SS5YFNa>?*L?30TV)esI7M2j7o^G8?=^9Pk?8@pdgVsVc&b@~F zK$o)&6N^S|3PYP(D0*andd9+Mh!1&a;1c7G zQ>G-0^FcuIH`*T$;b>F7N?jYW=2}B=n5zr^O#$yX1W@(PWm55mf@)*OYY(qeP7qF% z%E=OP&j~KccVyA}?!@FIr)aV%y_vYCY>%{vvzy>tC^0PLGCo(Yawl%K=;e96 zUjg}-H8#b(z7=R>wpb#u5_<${-b}IOZtc<#7@Hc7n}w8As$+|0J8dx)fHJD)Y1kQ| ze08_5zpw3=F+W%AKEVC~yq7u+-bhB%qy(nS&4baVqi@t&muD=rllGUP3F!YS-_-gH z=t*=wCc*}o@fQwIk*1}|7Z-hzSQ}+<1PF`~*85x52d^sCZYVsg+A$lg zXC(%6ZnCmko52NelV9Lnz|9aiLc0)>zZ}3043LP;41)>tOWHUO!+14sg8^k2Bud@W z{1NTwVavns>^qL)^YLJsQEZ~aT#AC)SjA}0UIyU>)hNK;qaI{EMfxTa>Le1HuC*d6 zC(vNN-Nf6tf!5??l?Sau1nG$BW2S&ijvje#%xbp-1w<=t(gJNGs`|T`C1;#ORqUvH z(uj4Q5soOWRXYbvbcM}k-4Hm^e%7mUl8IC}$VrUUWm*9cVFhdt9S73BKxPm&3u}6< zYjZMdLi2AE%mnR*8=18>UU-tC!F|LK@c{+_J=mv)0HF*I z>4^_H_AwUWL$t0oqo8dD0G=TUx;INHyk|;1CV})`ULR0kWJ8{VO z|L->3+&$}yiJ{W8puQ}KsI)mUBA~C*?sxpF_FhE8YU?ESX#iSU6JsOy&IaDuA-k`+atd2)RX}B1i0@ zMoHO;2Rax1atKo~H&iCj$K-ds|0((B|x%ttK%KcUd&%0p9%*i*E(xHTp=kjO?L2G#lTL?hN zn9fDea89qHhl{|Kfma0o%U3hPmp}f0mebeBEoxyuQI++j+c|Sz*(YGew#;@OJ-rRt zmXA)J2a)m3Wr}+}!@qaQl-&YAB={x@^=&2h=kfTCOpQ|gMq!H9^c1CQ;Lg4y$QG)b zJFh37$vB)mV+oeAn&*{7Xy7A)lk>tnI1EBK#*R85g$N0Z9X?ookClDl)YtIq*60Gy zuG@jgs3gn8iLZ_1iG#X}u7rOio@jZ@VIaple9%HpL+=PGZXo<5Xn3fOqCA_o=$NO- zL!?Ly_}D11qitUla8_N^#qe^)*R!Pf?sW`Qq4Bj>jT1iw&Oci-1Y&K5tKL&xof@38 zcyB2_$GBXsdXEy4MW24{#65v8&0-&UTFJo$Wdk0$Im@usFNMOb{}a*Ay^ff zo+{fESUStruv}*C^}3TY*HoQY>T#!2II5J_ewDG5VI;b8DY9lFToZ9P~GK5=gj{70ffIPFqbPu{2407FNiO=D-lLvY=(JXpPM=v!hQxx*Diw8f{_FR;>m6iD5GGd-uhQ7 z%Vj2sj~ye!i}fJg=vj4VzE76X%co<~f-v&IuDZ@R!s)AufdpW4y$rOCpgx`9`PU99*J#lmAs7dE6Y-+Z&bbY zdwMU5W==cVmx)m34i^$6cPUrU3&+<27z!a1E{;4qbmp>L$=nok<1cAgJNaFE3~NZR z<`=yH*;&|s0^T;hdA;k{LEFqHZ7D4{(m|YxOV~dN$Z`BTs182>8Ci$@`w{Pk&Uh&+v zI0FABoqw?!V6{5iK$>7q{JJdYf!Ix?MwZ_L{x>6k#fY(0@qUjxIH^zI+o^dseOOFs z?MloSJ{LU;M5YzG_h>OO(?%t}NZn3wzNL+nd@vCi)1Fz+^M@G+Ud4+Go~3s{Z6@Zf5BC4ufA3eiX3s&ZI8 z)GjN&E>$@sAzJI0)vQ;?&iT2x^6 zbQ{wd&*XTsq=1nXdpw-5S@$%2C?kmZUx1+AYCE2wI|$$8kvWUnaTs~$3|lNbhBQ3*hW+1?klFqE{F7A&UiKw&H@o{J?Dd%n7ddlwxwVVr(NHUy{Z{B$4 z1!5MH%m%{~wgIr1yuK)7hKQvePMIgSN7@+~`hlYy@gQ;>@_smkfKIOVncvMzW=su1 zMc2Z=%N5R-$TS+9`(98#KgJ9K(*5E>hrTPu_>C_y==|^N#vVGq{rn0>u}rj|vwtrU z+Oj-orjqh6nl?w*Y&jOFw)~g1u$p9ksitKP_m-Xf}qkg_R=&cHAv*c)A*MbViBp)%QPvFk*M{yf~i_V zFDlnV*;=g9B49{@C$Vp}R7R0)BkrL)3GY+7+4lG=;k`x=ahE>hc+&KHyH%7>Q!!I) z)xD&O|30(PUFY=JEP|{4tle^c?ZwEdqe|!dpRr=*UjZGlat84wlj-@t`6!i51?%R?T2 zKh4H{DtPeswfxqt1{&vS7Rz5&gsnTbb^i&qX?3n zHuipUSRqqHBcNU9=m{f)x>G9f~SixhJqeDxInB(US$lJTG$V~a=iT{I44$@92Gr5CT?^^0WnyT&Y@>cIiT zM10DG+#R-(eN%Ll*HHSNDUUwV*|dh(3(61R{EK0O8U+7Qxi=P3VA99uU(~0t^6yTc z7@)jp`CV);4}kQcqL0(C29zoP}E3?n<0 zEk|4Irjq?4UHDMz6+Cw+X`|0PE`iBsAj43=SU~CD+`k0gwcM1Z-Bx#CsrF|+I>tI_A_SgOt=@Pv?&E% zUJ;}fiQjhf+A8l;uzdDGu;?%=mnF`w?c;!QEE_|%=fSrb!zvUGXHr-b5VyF{8E>2K zw~DL$Wndn;#&RfY*)p2ix-HLY3{M^|);rG+hswsA_SMBvx|8GK@>fpD@+rQxFRw^>n)%123}Yf<{ee-4h{+lL z3Y=kgrtBI%f%(Tti0r zNGa^!P}xK&{P_2+)}4*5TXA`M(q-~__7n&IX=z_StFM!Id;>o(p>_--1Yw@m%A_%CosE_wTG@IEFQE5$c7KByu(2x4asMC>^YO!s2>lm&H45_Xy1VL3wPs0Aoao2%;x6;<=x=CH8N>SwkckU<44L z96RKHFhV|=5;aj9u%mG&@2bM?*c$}2q>K2%{7oHPZF4yccaXUwJO17pyQ-`1#P2G0RL5E92xyTW}EqLwca~xC6qb;N%898*zC&fWm_vp{^zhEf zmKc{7^y6ar&yJAjO(ZUIccK~OPHV{-HI1rh@bKy zm;~SRsPYh{=O~g+BX1>2V~7(GX^Zm{Ve7N=#)DPnn3v9Eu_%E(E}@Vo^q(O-nNtIm zK~{O;tJ58X^QN_PGSOKCF?eEqHmcl{*w^5m+QUYwX=bbmA{KUQeY3Ta1t<8rBF5GD2`A~^>2*)D8w6vz zYq1RYGf-NeVyL}_LhDs~eMQ=HC338wk}NQS7Vo7liLDg5gi&5#cAWz-kvvi4IH@^# z^>lIdIoJ{JZEZEg(z7yaN#`{7WHFHZ!0wvEt&SAnV9hifQ68S7 z3;>LsMZZoZNEOssKRI&mVKW}8^N8=Brx4HX!%Tlr??YB`%cMZ5BH;9u{f^ENu^aZqZqu2g>`KOhRRmw!?CfJu8EdV zvDaqPa0No7Pav3lAzEWCd%cbiT)FKgvS@( zoG5l}IEiP@eVYhikS>#f}Nb=UpS&@_&~9>sddd`Go-h{^^V6AN|aH z*?u99CxgVhV;fsbg-L$>a!bq;H(%TQ%kRnn{^$b_vN7uKiV%LmAozg*Qbseg>njzt ziktXj|4~z*c|RR8obfS(-7-&U=l)75qdUKbRGMLsPP9w!><}$p*^}vi+XgC^K=$h> zT7!L31B^3F^GZk1_I|@GL@69X#%B8mcvg^K+r5M#v$iX7+(QsxXhh(Y-+Nx&$ur>;IVg9sYYn0%>S{A%k_!!eNbSA4{|2{R}y$8inIFmc(y zQfM1jOEI8p;XR4Zrc#UNg~w5EG!vKFY1c|N5Q=pN!iM|FvtdmrCZsCJPY0zCIud8~6x{ zktZ3KV&zyp4z3n2D)vu{3|@ygPEC;c$G{!k!24*7>UU8O;}u-gI>YDmyJX)j^AjNO z72L^9CaA`QN|)BzGfHN|VuaFKsXk!lbxw?>VhsNF!Tv`n5O>P*nDokwzL^2uoU>GW z3{;(}8SVX4j+tat>ld%n`Re&(yF7JzC9X`s-+{kgz)nwAiounh#_5=`O<2N}tfxiB zl&bqE;9Erzah~-!6p&SCO3n2_25h<{8k5#(BVu$iVfIKXc}3+e!ZP?%*l7X^a^f?6 ziTef9)9@guFR?$Ze3c`3ab1$Voi^5BI>9PNgVr}zm#dD4x3g&|3huo7Hq2hAb(NTb z;=x%~ZFQP{L@bP`f|c2zb_Jl}-cC`{g3N_GVOkEz%1P^?4iP6e=W55z7A)o<9zC6e zP8po+o@*QhX$>!Q=tI?!8zikdQdem)a4ZTCW_s>5NL?`Mjy3FyT&fdrQ0FEb^Ahd` zcAGnMJ0Wi|EA_YcT%Zq~&ova}rDQShcNwQtbKp}BJQ1L@LTutQF7%fz5LNgLFn)T7 zQ;ZioW?JM7k%0$J#6YBcj*)R5!+B0?76I*H)tMB)U1TWG*3urj_Lkx1&k)C}vxc#7 zA}Arfho9U$ZN5D)!9OIYS(#9VXUJkdpOY!+dOsb)I1*}@m0W!VpY zTe&QE_=$y{D86}lnJR_9*25$QoRvj024I9Ip1p!0*|K=KizW-18ua70)B<}#kzM8Mmz-?+D@Dg!bBj!t1 zZFtRxhi~e*O!z3m>8w$KFN?LG+f#lRBU9og6%RK5u zp?ZCsNrt&*VQM)g;>v4IWF{-4Yml-LNI*_XWR)B$st61#h+=pJynmSkh??~YC)K~d zErK>(SqS(Ti281~)an{qz8VqI`}aK$uLGP&Ia?X`Auwr;WkZeZ)tFdm*q6(0Vaq^B zxF8E3Q}OH*79TpZ9*rMW>)PosGcq$XZi7n$2raP1)exfv#xyzthH#x^XLWQ)5Q7Lh zX!&=y771S-6;Od7i_WbFfXWnSz zVXrrj6lg_!t3mzEa#HGkD*;sHnu;Yfuirxw)80FelX08k<`V{itGflwK3+=qJeYGA zPwkVvhjiFgJEk;^HGZ>ok+j#lNq?Eae!F*{k&p=k*`cn;o(F5|Z{q9!MBzX|!H)&J zej}RaGdypHlITL?+ZeQ>c?l5A^O+d@T~3oI#KjQw>_K+SGke?`7-pyQR-TGHY2?z? zKf^8`O{nBdvG#k}&ks@QV`f0!Y!<47;oyVnoBT!-3&!;W?7OF>afG=~W7cGf(l7UW zt4tDJ!3KpQOt>N^2Mli&I>HK>^ApINXO*!C zyvML{PaNK7+(u%4X0;!iA(Ocfi5DpXKJBnW;55^TT_}5zjY>)@^xGW;_5|Uf55{pf zLnrRx+}V%DJbW_tUzKbIiCv>Yt3tK$8X^j`zQ~5Y-Q}@8mBqgzVQh92%DyUH@+7Wd zn#3Tv2`K+bEa7FUA4YVxsEGZG`paD0%34G8SZUz|5%W4Y*0^ZJYEwcYzi$PLAtY&0 zMMYORinwG}kVK`Sp=oQ&C-b&iQCeD1S1tE8o+QU@_T*Gce9Kv+auOl#BpfpCZtGSL z(dKP)-bqd@2z;L>EjX{g@8w@xi)r6a2{pXcYvQ|FKVEfAqENMC z_!6<_FvW=^f`0*N+i+WEnOH{w`P(_-KTO1eHGS$IAmzJNp;HPFLHcPLr6Q-J>(g%i zgo7~}OKy}#%CBwv‎_1KP|Xs)RFCuF`0kntZ>h6EGgE1QzQXk-n^NY-!mL^&i* z-MvYh7Ub=(-tgLSW>G27#OQ{ylTl(45E@nbtwxl6?8vk(kVE6Jd`WepFKw-!7u}V8 zB4W$z8sxPgrjdp7)H?R=_i5W*cE{-0t0Ew(l&W1NB8nptDy1Xunu|>>WJySV^upD$ zp%g{vnUtNCh}@7(LFGSw+Em-SdttEl&mzRier2QMHHOs$k3so8TL<(i3m#oh75v^S{oAiY76K>NAffN1FTM0h0xPYB-g?Xzu)`KE2n33SMnIBxzgEWq!6Xk@eM=+R zsA_{;XYpl{4W+rg++*po33M!0lhYwah%;(dG;FoSp}CIAYxcXV$XuSZ)!;7 znm*P_9%>W*;oXL3{1`G`!tkgVliwum*AEC(Sg3djx$OH!@@+3q|s7w2I!7L+4(q){yOBYBgn$B=FV7>&8yL2z-is z;tX0ChXbkDRKTH1L0ZP83J>u{@ylWrVG+@brY*I7|)q!uO-bfY0%84tT0^Bd<^bq1NK$qS>D|({GrNp6Ji*OUa0I&HjAM2Z$CY`-^x@s`e?ILz!W#n%;L#=N{q={ii zi=y$jiI#ow_Evr+_#UbKqv9s9CBi>MTF`gP9hKcH>qa7)GUvX7C)0=3Ozz!NOYoyf z1nKqF$tU>R5b9m%Ibmy8U+aABQDD$i?w+Klqo$L}dIsPXmb2r&b2~Po0^bn zP4c?q#e9^NOH?YJJmppOvK7p6Xo*KL-72CaXEK- z!w=saxh7q>Ws6Dd7-g<{bV!0bZRb36pd+(lNHECB;~XcC^u)p7q`MRH*9)0%P4+tUb>R{CtK%4VGhAmL8&B-AH4*3FR@;VBz&MklOg>2rXZNfinFnXyz3)A}M z7zHaED6O2}!pABg5P?mS-9=RyTX!(r+c!ncJOI8rB zQ%1e2tU1y&ReRmP?Aq)@O`Si&`l2j$g5^9wsDJ=>#&8foalu>G^;(W6L|k2zcRAjt zso5{~x$5|}h~+Ta*WmPa;y>P=Rqeh7zhnOI#^0VNq?cSwi7R~6L>82NI}v?MsfJaX zYF@7z{w>%V+OyP2L4qE|wR$NP6+upFLX{O$$B;o#K_5`TR93l2&(lbG_-lQ9E0#{MD^K+>r<{ig zwK~2nj)^$l*DDW^?($^ntIjv8ro_^nH$BL+WKy9Pi4uL~nj#{7L)^3i0InGCW{y`R=9%(I z3lPpRr_6Hf8}c7-Np^dY$a>8I+KPEDk}Q-H1z1VP_oKjrjfk(?QKEhx9U$v>O0S{33v{eAA(OBp6u>IVVAC*A1%)JQ=P2Xj(2W6UE!SCo+6<(@He>Vo z>=-oZ@6=SX=wahW(ZPew!TcHs#jtR9$kdiv!8G}siSnrMNY>}H6gr~Jk2o7;c|eR2 z*4wms6Nf9d>zP8RO0m36`;%9s)EvY!s^Hi6j*L{*Ct=LqRXE1 z4ISquf^zDBO}*jT*|RpM!3!~Xw8`h8#!FO)-a?Hg72jn(GLfBb35O%lpAaXl%DPSt z+;tYd@kB~KIS2V-`R}jo`N3YN<@`cE5>hE-xECD?!b{- zseyAs)Hf@{hK&NDLc&jT4&Yhh1HLs8+40plaXGM!4(2__(Bo|v%Rq}Q44@^+TciI6 zP8UN_`wh2~ep6OIz=phe7mwYd7wq6M7HsF8mMK*yRFo^E-OUu4%Ayy}&l;X-vUir4 z7)_i+gMb0NasPxNx(gGzmiG5gBMX&$gAi*1Mv*%f&37$a4K%8~s}0+FShVeXOR@iM zUw_GAz3(zD|CmFz|BJippqiKwulQaEaUfTrm`bvSLG<>@BE>O_4DC|!#Ul;(uBC#_=AD$@Rp3_-Oh z(?mk2bLcJYTDhbJAeL>n0wW;>fs+qgk%DzUqg}lU*P$ySC!u>az}q zQ92!c^cHHAM9&)P8qvBmA&Vl?qe3DhLYVBPghceRw|0&Vt*j`e0u3m7SydK?Vvt%< zT2=YXTbr#KXkQ^FQy1DlnWcazL0<#_uZs_dmp(SGRR+|X)2tYx_5>5|23*ZcMw}S# zpkR?B zrPDb-X*9;@w$|<~u%B$9iDRLT^)bT{duuVd1O6(GU6f+yw@X!zM*E06!08C7Uxd`N zaXVy{5F6eHjoaS9hBSeyFZfP(tRtL&;m+}*>2#OyLh3Aa(S&_FURveFYzWBwooLD- z^qdkao?9})6eyfAWigz+Z#qGfPV_nk%1JV0*Yr9rBGgGOmGC~w;3=``5~@e&l|+{O zXV6!IhEybPW5$}Xlhbk#e!a zY%w5h^M9sD?4yziQZG4%mukjyU*$IykG(gLT*gtOkD?L$SKvmelwSe?MwOCoQ7bWE zCLw8TBzXq(cdjCv{*7j1;`$|#JO;KJ`6YNUy}V9U=xInz@LOxu%`~LR+h5geelKC? zHJ!E}{s2QjyuU0ex;ft$O03$k7FNjAZ7mw=D-vV^iC3wVtGN6^n)3ZAT?P?M8{V!~ zCw~QG)0c~DQW%SSaQu+nL&;n)CSQ79upQDw5AYHuRo*Qolva~VxA9LDhf?SgN|j)` zNcFEtE;yBKl)=Ky z7deHsd{XtzY|OD=KgmJXLyR{ zIcs3))P37>wt1Ly#`*2yjMzvE%+Xr|N@?_ik+2KJr zOfl4Ai{TKgmkoJQ1&Q%_YVgp&`c zhZ6bVWnnj0K}MFpC4$h>sQ29EtcycPrgzwVZN2X;<-0iKdf|A%003?EAbw$S&S^!) z`}lCPThA=v@53Bn6H+>Wzd$`SSJJ`+Fs}?8AL+YN>{@H2$)f|eOifqao<2_x;p5~c z5A?N#aikF(+2=gGxfM~-b{_Wbk;m*k?i#p7M5U?}&0->ms$))}>U7-4U(4cF4%$qX zIPx9;SLUv}g#s(;Que9~!6L(Rg~>Y2!*6TG>;DzOjRnH|;@H^es^u zu6}76u~CRLs&2XXSw%V)r67vZDk|z3LxKSWanQZ?*AkaV%2z+NLePWur3(l{PSx!PBc@R|ZJ^Lda@(9h zci`&MK1k9*5`A45uqkh$j@KPWH`hzFG1coovm`)?_ZU!vVp>nj)o(i?8+{LL8@kEs z8B0Avj?XP-s*2|9kj+rPtB#-hRX%?2)P-Qz=v)c{X;6 zAd6o0f~$$l_nRLZWzhOBJvv=ptle`=<+h!X-xC4G*Ae)Dl5jEa&E<-0RXxJIVfrKU zO%zb~HB;dW4no(dQ7UKLGp0#^Adr@(>2t`=NIf}fI$bP!JU z5>u6^>)UzR+maUqB4QQ{~qEm%HU4$tYSESI<$``iX+cTb^>Td*nR zzi(~YK{jGNuIy03k14jTR^NJ65d`l=qSh3TZ4wJCMww8qDkOW<--6ZBwVlP{61v1u zmMV1cFvQ};e?|+zWi6||q?y_=Uce1I1_6wfhy_5PQiK*I6OL(a6x08Dx6?iPOrh*h z+2A?vM0*$ANh?cDhNzkgqu9hX*}+O@7e<8DUt$nL)71@aHQ#4C^ZCirPv~JEnZ@P- zScq_WRwX{!h6LgVzq5Gm5Z+FPRHIW$ttg<|Mt(62{1d%=Q8uAj5*uTvrzlCK>pPp6 zVk|8e!rSbk554XMwUS?U4Sa~_^_2iE}$XAv$4 z;fTh6f4l1s2H$Gfp;48~wK(#RVH9}Dp$tqVIlr>>TB(l2P>J*E`+thjtlNS zs)3y#3mi_5U%~DvgA43ksXMb>4%@x#fb&Pd1QJh?^HF$uuMgl(aUP+7MSJ9faCw+m zdLJbyu%V=2HBR-SG?_oYYXBm$g312i`<8>K5CPK&9Wa0h>n1Ld8OugKJp5;iDb_yc z;kx!hfDe{}-MeSJ#qo9|F8>$Ezp?$(0yyZ6ZF&2x)!#mhB{;1{k!hqI{HUXlkrktO zl?rN~JqU)Dc-AE%dAJ;}AC|ZOCJg3|MUH4oQew8W&ln=6`G}6S=6T_J`ovpY9p$H46UPfxF}rGKtM{gixXc`w*h&H2qYi?K?A-`r=6xSV(@fM zpH4>U2H)Xeo&{s9L?kQo1**B`js_l+_dyQztAHL9=?jmBYiF4Ab;rtpuRnVqa;4Or zTDz2j7Pp6kDc?YkQGUzG1m*;~%+40>5r$5)vt$uwGs+NO{!aTTz3gGw2?3swBAvL`!!eW>`;skFQ2KxBf17>V^VT- zmMo;gv7~CYF&R-+*%o^e%;^-StPKdGRE)Nf*#H!@ zj*+mU4$Dy@0^0)1u%{RvF9l|wod4Y4H#(*w$l(SaNA-AtAONB9FIGFqh9iGuv-8G`KS;2@h^EJeoDVil5em%(E zD^%)s)ky{qb7F4XdSHEIKw*lJ-e@j=Z;HF$t%BNNRb*D$wM~Xx6LT;qWx~ zWmtzjc&myE19UZI287Omx|3LRv06B$z|hi=^G5}z2>sb%n*nmB%fxo42Li35taoq| z7P}jv;^t-S_nSUnr*G;!wV~Ou|A`T#T;@~Su-P)SBqLgjW7-~X2Ij%(OJ8k=k(OFi zQBfZGj$%i8(4pvfvaS;)7BqH`Ut)O-OBO}`ygEet51M_LU&lHKnFj-IC8yi@HgW4d ziqbbd>YqB0*^6osfZ{vg{ac^xQm`HZNi)O%sivRv-tG&}sVXLTf(kb}k4w#BolYjJ z4DaUFaU6Gr!{6b=Xg9Eks?xOji64FTA=%wg7t+WmqAhBrMP395o?R_yyu3NA-h0UV zo9haqk4=M7@V^@XV10X46$PPbPq2}3W+kPVbdF`FvSuM~LkNkL`!+0Ebb8yX(K^S? zH{e`djJWGi?;5b8BCUFsB8?`Q_gOzbk;#;>-58$}+TXwIf4; zl%k_cN*s3o&y-wbuxkRd@nA!lYExM|d1jPXo0Z%pk?t5GBkovgk_d}O+>q=4GF6&G zJ&5N+Nw1qr;EwI7NY)p8+4m_6ZG^x7p5{r15N4eK$6P_kLbaaJHRYz{kyNeHGEup4e z+;u=av*FXhm7C7tfjIS)`3<7?j6M5VeOqV0!Q_X4Wdtv0rk~-=l8{z+~EEd9Y|$@s*TZRDd)?vTG(9|X7J7Ai#MuhE_493!a3=c1k(>lPvj7KP^@P&kt z?h}lVARQ`Ec?nDwW>;I9(e#4w5YkM~iN#wm`(L>*f zWpArjhW`{Ga1IEZ?R2fXRxZ(*uj=cn?3A#9K0Zw7@PLD+oQRq1N1lryL>=!?p!OW$ z&-Zv90}fztSgu-D=Ru}^$If|MnjSc5n4nOYL4LOInd07v_e!P2!yWZCd(>1p2gYo$ zTYH3h;yRlf4XJkKcNEDH?zx+C-sf$1(c|04J~wht*${~Ch%oxXh&%)xgXFFtwUUiA zsvcRe(us*pCJ&qW7X3VE14u8Q@hH=68fHZGLg9u6E}FTWkMUxP=^70`?mf-oE)ayG z1`Ob#gh)X9p&M@Jh2^`PV{P#v@U8n+^34`~gVt?j-eJp2AkoTZ;uxu9PgIenmX779 zqO_@-s+QZx@tvY@_+C@C!h9SBN0x`1v_>UGT56F+GtzjHptRP51r#w`n|F;&4ke*! z0r7BKCAyW(kWmN$1$^8f$l(SSUL;KP$le0DQ9|7dE=B?Ic|y03M`C_+)9 z%^iPUWAJr$`&D$4(a5^;;6(m?Y;~(aNPrb}387cF$BNz&DCB63Y%29gpV8chMa+vT zy-%oWzX3;39`y_qs#o(u9yuA80>a%F&ZqQ zsy&eVWw)XutWRu)2-I6iNDvD zF$IT@I8l5DsYoYtK&=uD@-M)%h$^#fTQC_Fn_bY%K}ASbZW>`JqCGa5GA8@pyScM$ z>wB%7#aiN=In+-h^+X?!7b`JG;oVxwpo9q)F%3NVe4eXkx;#(Y=eo_7ob0GQJtZTfBbo#N@W`~8-~LxYYuvOA8hpxs_IqU=76 ztg7B0^y`zYbcwQvKk^D35?42FuANDkZn(@|-YWG7clIzy>y!Rz@H&C9Miuosp@I-r zK9sLN7tHWKTHepvV;KISH?1p!_nQ8k2g$#_-Cbc*0p;ac^Q}gaRTIITdtpVS5l;=M zTRmTmuP4M6&55 zCZK`thGRs<-~ISIfY{2|g-lZgPcvDPUpM0A%pC z1R*eOvKkg%V8QBy)6uh}y{7XQN#V*z;DFb^4md=gTQpSE)4ApFM>k zu^4xR^n}bT`ee~`*mRuWp42%sutFtl_g;BjL_3sqVb^I#XlyijUE)XYY7JCd!JcFd ztJtBL)6hX%sSZI_z>Ax#)ill2Ea$Ob>e@5Pyr!}G+M3;|Y1;(5t8qM8aAdAl)K-px zL?kuK50TQLy*+7~+I=ij>986WvBY#0$=6XUWy6vG+5XaGaa8Lj{;>Nb+>*DK2)A`_ zPRhHar)`WW<}3o*tL{9>3JA@q?jp&6eYwx*gzBDI5DM&9w}OXMdJ2ncUNdHIy5C-) z@rVI9bPP~LOfED;IQKg7EeRHSJ-+#em+Nekn(T{4K#44 z*KOzL6|vK6ZEb{m`BqR|$)&X)*XCuwqAel#TX=f?e*(q}*tE6PLs@7l3s3gCyG)r- z6Sw~BR@T#%<{r0%yeZ=250(Ld6pFkFULf)4pRZJ{BiW}oq8Q$s}evvzl z{~ywN8#g>oo|>7jCYnCu1z2l8}V^=)vm zQxT18l1!-E>G+%3w8LAGu*=y6!{PsV00Mdh2Vntx{741f4`+sti14srecDA828Da? z3R}HMBGhQ>Qq}jQJ60m1ts-@)H{Nf(wbe^adPi)QMM;CnTH~HW7X%Br`3B#c$++6J zqBsPaJy(*KN#IxI}N+V%H;<-rvdJ)c`^5AjWvr7GxXSS=Wy-ShS; zaJgM)HPUkX2f^_?4tss&{FV zdBDrZ87K(g6fG_iduNv`SF6d{yH}oBevP*~5}Y(rVC%ccEVpV!!;dpP z_ja{+WxUmpEb1h{941CP(`WP^inKMooCtEJV8|&;<;01nxVPG%4cYk}=Mpu+DEi0Z zW4Y}#phrQ={p1>YN^4eXIhX7^EZVlNIqM{xO5KH-jKG72BbUmVs&eHwgv1x@Dq|Tj zhz$d57Q%dsjYglShQwDcJb!jkkytoJ%1nBUVMC}oF8AlC~`S@Wb(nC1++MVuA+VySHUiba%xdm0BduiouQ5VE!Gbzf4c$QjKYqXWo z9j(@Axg)&MwH7Yg%PT_CpAmwzH2>U%HA&}lsEKNzU}p*JqK?roCzp?>k(`5HIojGPgml=YT>^ly(-9P)eMh)%jN&Bl6lDVn5!#t2cUty+ zds@#0!D_{~V`w)unsRQoVsq(~+zKkFh`+rhCX!bbt12jnjUuWw%(%t6O$(?jG$J~t zHF|lJvWSa%IyNk(d_J}`ENvCrz zm=Z0S&am_>DHf8R*_WZDu|GRyEkZhtMS|4PlQ{`yno~;0N|9PnMOF0a6{OQ7L^P@N zEgGvNP3)AmArY!rkF)N)|8FFT7Q8*v z3o1sHJjo&6Qb+rqn4Q48=G!NGR-qGb#zZ-#`#P;Xa$b0)Tec8Y&F5F?kB7aklUP>Y zx5_ctzc?DliEHFS(=HI8EQyL-&7cW$sg!;;jTX}IRS0~Hz`I+IQ`QpNx zUG%6sSqI4meExmr9X$^d6Gxsc3gYJ2YVhbwjQ~A-_>UksJV@^5aZL!QeB&SxjO@pp zvIK_nfW1dbHMTJkjsT#RabQyso+Pn?oX%=zpU7};dH~nS*~r7lfrsHy*S5`_6q$0{ z5pSJ8rEFhg?$T{`8)ZAj)UPT@`{>!>2z9%}%i`_IX=gtxwzC(;wZh(4PQ;k7gUKMK z^^>jU#iM>5`CG3_jGz8fAwM;SP&GGpIOv zD)@VX${5Onalb=EwcxuXxFNkn?QrHLDQn6C0Q~_$^3HvrqMgjB)q06$%kh~)h$^78 z*&(%SxbUttmv;|QaRog#yU6+y1kgQ3wda2j~+X62t&%?;BN89#<4V5I9+U3~VI>XV)^mK_(wK z1Ow?hn067cxNGZKhLJbc&m7O-SXOg5?@ zPrXEB>1-7`IyaeJ*K2Z|Aa_h?i88J1h198b*=#W%C$^K8-&HgDdxf(lHJBUg+i@<$ zDy+>Bg6K-%)*ozJ8CAloRRRH(P$P~TjRQ-Uwixh8Dei5?B8K`Z{6?1+(!+{!3icJ6 zd*aHs^YL6BYtLIYj7n|+CWEFV)8Kj|>D-d#%1DT*(9g2nWx|Yr5M4JHe6?gS5HY}= zsG>l1AdUSr$Ry~Dp?DwL)K|}?dUSy31PgZykg)e#;=Xv<6KHB}mQMko#_yf|Z>y=G z;);EF6zI|{VbykII}+&7sx-8o5=46WLCEqwhM%y*>AYL7@3Bl5X)IYEiy0MFM0>bO zRD6WTwMvhnPbqQW+M`Nlr0~}v;!3j+J^A7&koZwp~xW&HiI0r0v(<@KoNw3#m(ho!cE zOg|?W?v*Ta6e0ludR5^s#R&LU*p>q)#7#R}FEM;nMR1Wiq?LZg({q#YEO$D&h#1t< zL)E%}7F}jqcnx)5M-s*d(8we8nuAK(K~Yhqu7e&5HuC9b^XIR$JXQh@H?W0~Y2);_ zUwz>Jl#0-+Wk~aogUm@(r<(OJvL!vvu3AG9+|N06tFLrg>D(!Jio{uOK`e>U>~>wl zskL8ksz(W+ck;0~hK@d`1o+QnZj)GHSx+-?_+UI`ecjVgv@+hwhk?cqh_|2L7f44F zjl6HV%g;I_XMyrrl(6~vkawP2w`z(}@5IDiL;de|k8&J(UpjFIAzZz&PLBPv(RIE? z>8R|aBAnY@`Ea^bpKWaR?e>0JC@aoVrQHL<=bsSTpT5>r+9KIX%4ih^ucek`9Kt!Y zlqEuTCL%z!+^RT}(?HWJgq@9*QgYc)Rz0@>2>v8I>jM_Wq4hK3NN5buCzzzUv8eHS z>bBW+@23KRG=cle)0%kz+{?xu9z^ny$Qnc#i74F{@w;T_U2ZPH=XUC?Em70G7ezX& z|BlD3u@y#^hPxTwf4A**cX~Han1YQeds!8GWc1CNX+w7i)85GXC`DCi#F0I#Q3Pof zRS{@J&}u77SX!v4h>BaxODeRAG&G)$N>-kBO8&QEme@i#vMne{b*sW}ON6_PFkJ<+ zN>2@gvF0u6Zk0~A_U&(y)D&FUM;lvp#@+L-1xJI`%WXN-l-Csw?W5HvrSx;U-tY4K z_c7B=4r?RWe!Xwhbq(n*u9{i(|R30Iga z8G?CP5JQD@EU2w`ticJ(HRPRxa-xDcvjb(V)z-3(=6H4^zUH!StefHK(|mrx{Ir(j za5qwW7xb<0%{yg=K%{W<*fD!h@#p-^T>Gj!el&l<@A(=%gUH`i{?m)=T~Mb6c-Ha# zKU}0n&Z6hPX_Ia^?8ElDdie|O3n$p9QPr_w4aW$B!b`|6apNZj9MhkMr5|AsDqJXC^|W~Fo6S)_H>gp0}d zYpi4JIR2^1^L}1dLUqP^O1mZNtnu^sBS)BzIZ5R0gcB0e(v7K55bi7V7$bw%d2#SP zBmWjL#C1fqJ$j#E2J}Oi!~(mW_kMqa=<`@Vw4TwjFItCATr*hE1n1H^qC*-dlln6@ zUTX#%I!xoxjMe_+;#-jYpTqu4#!8$9xaXquIh)#TP!NHx@OUsTO%li|%BGE_k~pW> zCYeJXeBMJdf$VMSG^lzx#t56kXUV#<8heQ@v6!95i*D^$&`M7yVJF<$V{k_I6OU8o zvvvEKp@5w1;OaOAFAJXNm9Dk;R_s6WT}UE#ZBI6l2fay1sqET_k9yG>`YZ;OR76Ct z0VWAVXi<6Azsla#EU2_O-=$*0Dk`nKk40*@QCjSrdqH|vL9mo7Nm`b741bxGN!m$N z=t_v9)g8wx%3L4Hm(ui8%a%QrqJK21pWel$mYRALis@Rfe3tjn^FHqD3qrjICf;)B zDcHgvhQVodOiEN~9Z{3!|9^pZF7d+qg@zAy7ykq$Oknr1uH#*?cROmW*4an$7r+&c z55oN3m9R6uw~%uC^?4d&fEU)?^1qMy_jMQ!Q&v`&)39wSM2DGbe&Rqfn%P*D*FrR} zWf{--w-yy`>mXW`rCRzgNn%pOh$5Y=&ur4ukji6Gg8`u2NT`UZ&oLFG#!iaRYsG3J zf?o)VWpC_Sg`_sAhQxYE9Xi;9{IXLdM!f4OO$b3+)Y@444NQ#NdwYrgGoNi#sYpGH zmHHALevG2Xs*brQg6u6Ceq%V3!QJ!TgLS@0mtQz{hdd<{_PG?sEGb7a#3{(G3^erZ zz|9;W%MPGd<=5c+VS&%Y4^WGbN&h!+0R6*_(Qjw(2=MQ_e~fy z?Kp}dwT8CuY%kIvA;JN17%HkN(o%oAL8{_NzE`1^X%>f>Xp~b%Ga3}3MKaNmbQnEc zf~sdgl-Y>a0z`UPbiAAa&Avr8O>iEQq|Vgz`c2laF5K@Imgo50Eo2`YHDA#Sy33vY!4%w+T3@9`Pc3&IOAdls3~Mtfj~!PW~O@c&&RK z_788czN}{Cw)$C@`e}7o5k*X*9vfYzjrOnno=^NPE$il)v0kzfQ1InS6Vk|yh8W3| zmZVmdp)#ktLdY+)onux+_z>N;(lBdDBL2IdYK?UgHA_e?)&$l231L(<7PWy<_>hX4 z4pLb`-r~Z_{#JA?tdZ*ErP8DjQ|m&1REV016FcBbIw{Ju&~REhsZ*zX(`q@!3Z42& z^NmFQiBgqO%EJs+v>N)iaP0*hx^*6I8z%I`P6MR64auAE z?kl29MA7gWgj#EtkWO8c`Q(kWWvN$~kfA|DPY!Mp)Z)Ts=5%@2m&Oa;yau{&Da*e4 z>>-&5Y*_qu8T{n3s=Ik8MI?h0j+u?aNXI(FR)snJXM=UaEy3g6ReElD9p;mk4L@Cf z0n5*PP%^@2%k5e6Sf17=WFxAA50$|SbWcp~bm2gkPn*UUj2EbM^`Zo9jdh}(;CSbp z;bY$Qk*n6)n$^!hy|iYUvTpV+zhh@!ZoBBui(5FE?F=8$^kgl;y6glxoC=e|5?(h#Gh?wfbXzqu z3nNALQE4=@Z`4DS@SRqgR!%SOcW`DN(grI&DD1t~cAn<`Ff=m^}r;4?1;vPRpZ_XbY@YhnP|5Q)|ef0d|KQ z&)m4D^iO*}2UIXfE})TRa+`=B+O3E??lI@EA;`$v%DiXx=izF{rE99mq|G-69c?w~Nkck$x)|gE z00AFRUuaF@5eSZAB(dnNEDNw|AfhF6jPR2yrGbXIxf-o3y#OFjXDhF}Ak^8}M zeW1d+xwj_wghs4>=J@V+;gK@>@#wQ|`iWh}`TtW>R@}~ME1yHPYPZSGI0m}J(z~2U zVx@9g4g*2MageP>t`)6$w<*H!+O1k~S`N9cpU=Zw<-H@*aHUqw(P+$iSE$RJ>Q!CB zfwxMmq%v`4BbB_JBS%>JR*h>$299B@v^m5poX4B({4e23*ED2x+$(F)$Kh*q{PuPQ z7i{_`h?tv*7^%Z`Zc22WJl!WnzLnA^qG;5$y3#_8<5if}`3w%@sD}xyFJY{BX+XJv1#*9329RGhSce$02>zy(N4V0`@>z&^A2a;=2 z)+5)Zk+Nys(?+o~Ia;ewVe96TQvk^H+#6-4$uu$MPM#W9a_cDBYOH9rz)0w&Ynr2W zoV!@bU3zg{a$M1h)pKncC~(lud99SvJj27@&O&TZ)TWgyuxQ4_nzoHzeAK4xs@l5R zPbiccIs02wcDc(Mnsybb~D+^V*a`qc*6kdkeD8tWY*vfeBhHk>ta?Kl* zqUUng10Gh{+a-BtiJb~LjfAQ-L%I_`SEFo%-MaMEaAkBzah`SBZQu^ae`6slT$=>p zHItnUqohp)F`CJGBr?!5Q*`6C+VapcQymR^!)Vr_m95{lG+H=0b55KT)7l0Xgq2*q zplZ4N&rNp4=33cdnF-4@S=zOzYbgygS*UIrIL+RkQJmFl9ow$KIBiy;dP&PM)V1l_ zG5Nmc+H}!xXyT=1$UY-0^`8QhHl5D*Ek({so~kjY34(|<*f%% ziz?jw04eiTS{NZ*(0R!<}+6aPS;1H}q56SkeZNyp{^6vZj z?k((dC6rY2RsJ?C{YXG|ncj-)t1~AQJf3YJKt1Y42H3Ay;+o$cBVOOHn7S}Sh?JMR zXJ~6$>#o4mlQqP^PKAQg#)WgrENNT&yRk*Ng&{eWe|0{hIW@}rXPH8+EMpd(`CnvF7Y*ul{PX~UJZrU zJxUkgmo0OWI2eXY2mj`6|53w~1Y_i%YA@%A=WVAcEv?1-T(m4a>GLA^4?;TP#fB)4 z;*W{2|LmQ#dwL15sH7vCEUr+^M5khmg+@LG=_X5S`wp5ev>IP8I>a^ zg4&c(Rj(J)dF@{xU*mip#l}wB3}*LxVyv4uVs_3l9)8 z;vCmNI=t1Mv0k^izmV|&zC@n#ZD@9FvSxbj^W5NEO){mq(Dg<*2r#@)S?cA~_Aj$> zPZUZEYQK}=53p$fk{O>h4LIFK!O~fc-wBZNNq+#^%BVW@wiLJGmUl4PqI&hS@DXN~ zSUCpZywRABHy3|>3-)%gv6K)3ta{H-eX4rD!nnb9Ys~%kHbv&TPhT$4yujM(^^Y)@ zG^#)S0tktCiS#Ph@YV%iDX*JM3J3gGJuycn=@)@P%|;6z1Q1)NpM_Ihmy_L@Q{R&m*3j zZmv}s$yM-6Mu1}sds6d>~%7Z(`Tr)Vs-kP8fL4o-eIxr z61_88WIDmK*{5#S$)k{m3x5K+hL2IjhmhjK8LH!IF?&n9F4h{ByL7H5(soh>=ti^L z?S8{T& zMvKz3laiV})Yvp@Q!j%8w9Ok`L@OgrEQRj@s^B`uO64_Lw%qh0ZMYDu`)?2c8 zPZ2opF4bqc?R2i|naI`MqLr%UW7xlgHVswHS3bwL)IjAlbG)c&_ndnZP5u7&`u4aF zTAiYG{sb)bzH)Rgqw+AoKbQRW$7{}ZkoN8ynRX?QJ?H%7zcw&K#IG~&-VyjIdsK$G zf(8t9mWRIVztGpjOa3X~MpOl1dtpET`?3TEmcP67`PswYGDawu-{ckd;62A{-UoLf zl00CD?tkc+UhwEPi?&WkqF<4@^;z-xpOWFh8b~<5i!arXm+2puL5d;xXnw- z>5K*LhUJNFD}PO)?1&%QX~IZ%6~zDakFdx84X49O5*QCf-PrH- zegg@*9W$(0e{HxQ5%8t=hyUmP`vx=lzK;Hi;DU6MEem^8J(JMgDELV~mS*Ql-M6CG zT$LJHTH#9U{m1p&XM#EStY2VS5_q{!>u-&iZ5} zcu5pR6>{1Xk3-g4)%^K$sN{O<0f7blUG%S3)y6hN@ZSOJwKBc0p_O`e4=~?mP;x0U z7MbqYXE#!(;>`AFi;+I$;UNpi~0_K>sD zHPP6EOG>|j#qgx9(-c;fLotKgyFW1tmF3!-_9E}vifY~+v#mtt(kdvbA~cGkG@cSx zD`0R)2+^dF)jidTgA!R$Q-b9-R8MD`$Jgv^Up! zExq2d?0h1KeR(5nj$lCM?xE}&O&-Hu!W12`Je{osJz@}rC%51etu%F*<14cuK?ooT z$QjUy-IEfq%}IL1#$Zg|ly}YQXhE|2XndDQfs-d8#wb0nau;fu5(>zK()Coh=wKMpIWWf0z-wAQrzrp@8cbjnj>p2M-Bzj?u(BXy`1(&q-@+gde4R~Q zNIMe2IDx^#DLS+*LZvMqn*s=}Qi`1G2B~R5N>S>>hnq;!-5{bZDk9gUkP!}|Rwas_ z%0aGugPP8N9@TF}g4TLG7Opgw>t|DG4A{xf8w7b$(G4~xxP$a_8S{(pbJ-F9D* z&HMhRqv(6B!QAy6_I=K))}e*-e4`RvnE|C~u(-1ZE`k|dZD1yJap-)#PY*jOxrkKu;odaA(Jz05lJAi;n;|cG^&cN zE`w0U;#$av?mY~ye_){!3_Te`lj!=i3FUd%v!&5K4Fj)L;7`$c?#pJrtE;!Ieot-c zyIzEBd)v;T6_1n8=hDB$Kb}+ip8oOQ0f?Q%A{}U^v9;GSZnX;Wda|3zyq}vfCS@ew zv8;>3?2;9LtJatr;z1Xty7MAL*)g-U#>~3%(xm9RCebGtN9S}1+G-BQ#x@3c7ok^n zK8xquSEfd5zOi0fy$8_ymP#~gc`&yRYpAu@+Wy+wYp`%L^>$Ssp(i3hRaUvlQ>1>a zqANltI}P$#r3Dmu*VXxWb`9c`ry6P=k-C+kT4|(d?WIBNZDQWm9X*Jyi|}*L{cG`) zu6D?N?@Q2Z{XUb<^*c^JHtpW;v%(@L;;?e2WEDH_UGGwyOxDG^pkO zEwL^){^L)1b`~q}r;u;EE7aZET@J!T9@29bnd}de&8w)ipU*7Q&!!s_(EZ7ye7_Sl zx1U(Mu}!$j1|FEhWU(;u3Lt(T`}-wnYOi_M}Z#vkHUP7CPeEWK5!VG>RE_m z1N>!2ErYRf55uh3;{A5Fk00+Z)4Ql`I3>00DJ0^BtRWB*wZAQbFtK@tN9LNGFC&%K zi!eVDAR(K@;pK4^sNODRwqyw_zUx`R#&0YLBYc6sbB|Q$liDn-5IJmbphcPbINn4G zB7p{|B2rMgNt~_K0-}#X}lOe&qgd-17JQB)wJha-{-4O^7Whs-2@A%0SyN zSKct}WZ^QAC`CavBd$f)9`meC*Ib(WesdsurmBCg5v*52%;&jvvq z&vh%?-8@@NYq?F5yyWdHeIzV7jAcaq4I zd5A%LyfpqlAH?YH=sg_tPfmG<&b+I%72q!K%pg~4KHKEAye}`%!_>RSeu_R;!8`6E^K0utf&bWvshT9UT1VqGsIc*ZCiu(Y>RD-_6t!VhvP#FFHJ zXWlb!%w^F?_KOvs13U#d7#}@Vsmgq44+fI)C!*UG^*G|Hc?d(32sFR_DpIRTtHyx@ z`BEyP(aL2CzJVgub4@`FTMl*P+adj1iC^lU7ovf34J{)|Qqt0*FU5oo&8X6}qCEUK zHmS&xk!!8rVY=<_v$5IT71zm%$7gYFCD4;2M(m5Hx5Ej3HLnpGQAGUar5lrFqRKm#}?bXVd8Vo?~sz>+b6{9hVz_m2dymbFFW60f92Z@ zY#zt>`O8&c3<|u-ugTy zHVS~EsPVlIle+KsV9@O3$dkZGzELq-aIi}(kYpnme=`P@&z(-J`TeBqcX*piyG@5R zi~&T+%oIb6F{zFAi`^06+NUxGajT+uU2+5pxI-Qc8=<6uesH5A_~E9UQdmp9`O!%q zyn2((O!+BJBwtA#WhZOb61m8*W8YvK*y!$2=57p znndg(h8a3!xaXO3+IN;algppm>gzp!sf|3`_WsHR-0Y~TD?-qXQaXmV_K$%Gjy!_D z+QAxYS0I-{C@8-@JLQ(aKpa&TO4j}^9??RSM|P!_NMQ5tmJmTt-0lMel*74 z@%-;y?foVS)x9UH=r~{L`acg2!xi`*UlPdk--qOVrY&{*j5y%XsH;LCo#ZMYh&0kP z=t_bwaM8GR?diaJj6T=U{>GC9>aWRo79!Aza}@ey0)zM2!h-}XJM3t}4Uji9 zvPBo35Sh55bN${xj6>7G>y4xm0Z7<4k*BRzoDQd%;ZaoG@X4>zMdR3TI6UP>?rrV( zjBkiQpamAmaP?vBF)UVcIzpBMNMWusc}0N{ts@?zZ8Cx#f2rm2Iqlk4%QGahwPkmA z@GjLUnL1c*lh|4sB62vit46|mU$b?}UGpqiQA9)geB7{}V`&bW>`MH;f_s6D1eO( zD!o?1*WDTq#gJN6q*j)iX&23;6WmEkcav-5-D(ra!`wAwQj{9@UHyw4s(UQydwn*9 zd*sRA!sT%#bTbcgd}zHD^;uHbtj@X?Ox5mkb?h)n5qhgtRiNkIp=WMIt=FbuFX^Ls zIEcyixX!Hvn7-34>*_Twfe^t6xR9w$G}ph76h72~3r?}3B8shY9SX+GNwFFj}uUY5m| zI#i4Wkd8{iAgZEu=>$YW9nVU#t|WrzuznPxX{I|yN?fY0sv7pyzhH>q`q=kf`;TYL z^?iF=PQ$y^_FTRWzD~=r8=^Q46J(tNdbgBIWRPT$@S^SEksf-vx8tWpubV{blh3^JZj!XT z&iAJ8wfHss%-X(dv(eG(-}KW%4!@pmOOg!@##igZ!}#;r;4ufMNR0v@*WxhKu~Vgo zPuyHvvz0_?6%I;DPC7*UaNF3$KMq}t!D&6~4^1HSj6_svzI@A8uSi_By&!^8`za2> zKvT;wXcSRKlv=(VCdi=14Je_@T`W9=f+*+hta299wo1HRCvRfivP!Z<+NamBMxDmy zd0T^~YRq7lI@?NVy^oS$o|&TGF5<_-O>$M9ZH}fBp@&Ai7S)6jT~P0W#tv*?#a$?z zOMn|APe(*t@S$R`dMV%>NXr~kz!^~k=GQD9i}wXh8x1j*5+5gb+=dKdQD+bXsg8~* zAs!6t@s($CO3N&);`+!`lYoh5B?qSz8cQ}0-P22UQF)}F-}b-jyt~tTkGto8pA^PFx7qqDW<7>w5K+v8 z*6v|vlPct}jU(uqj|r%%swlUyWVEu`kRwkX#jJ_lqz>iBYRIZ7`*Jt_cbvN8_aI+v zM%a?Q?q79pB$ySXQ)`CBk3;G$=Wym)wL5%ER{)Jba=+~{@gxQESSKaB+)3f2_Ht6_ zK$`eKzj5}haw3YnW*4!>nYNX>*0tC59Or4(^xcj4e2nd_*Y<_T^I6`$)3xt8h|+I@ zwRHz^=?`3Rf)tJA1ol=UVH*gw-ZeftiN(SAM=*^&YCPi+=uZjQ;|G6t&E2OeLGbX0 z#^gl_yM*3r)0Ljf+9dvZ`D2Q@_@Em!=D2cTpyfTRByY!U(@1f=Kt30})Idc^x*H;` zd0A4BK?R}nGk~_8^Uv|&n1$!{_Z9-iBV5&%A|fOtMGRIJpQrpko#Zd?{=fHhS9Wh> z`yIW)he#ldUdM09wgVu`cRN#G(ps(GCtK{Oa-t9X7v>W}r;p{1xPapTwNBa*UDS(* zJMbZ~=y7n@{7LI%MSIE8w(DdR)}*DcCqM4dRZ(dg>ff5!R9fjF6|YRh6Uj>^o2ZxW zAp~9_DoA&hsY%zh(snTaopiwRBztG#wPo#@O;V@1Nwf9So4Qi#By})5t4-vW>21Yu z-bV(a9y8*1cr9P(oHVemm7mupOH#Rsw6T=f$^B_zG$asM)KddTP48|uw?TQXwgwBX zw^Q<^Z?8I+_?}+)9cOPmcI0~}&{&@$ zMIM3WHb2_YY@U?}0;0673M0987K5{qcPZ!W9&*sRg$rG+)-6l>QZBM$wQc>-z?V{@ zauO<*Xo=7Fn;Tq>G_BGI#UWB2t4-wR78L zY`xcA*(c1qD8Bo+JPUTXmhJF_d+IwbI?%#bpC5>NS;Ly2WRIM0 zfZA2yDR-svMIi@xeaCTleHWJ)gT0eX9IMeXL_|iOw$?9Im46J_7#>&0PoH!GZ;C*H zD?W?XCD@$2s6_`aT5lKCd1=(CzO3{-yp~=t4&%LgsA9~1^2YN!PqOm)UM2p2yu`&Z zIgViF6=|)sh^-vVnf_vb!*ZyqCgwy;NfD~*S}cpeE<2dC;-p-^f=!bW-0^gh0Dth_!;;+-My&xPmoWt z*5wQ}bd7g#?rpv9CBUznYEb&Q66sQv749Uew5W(U%|KNYd>;!1*H`dLhYm_rGLjG5 zgbtCYgHMrSw5y~@v>>PMLU!GxvaLPt4-(fZ=6?;fC~2FXBkxD0)2ts7kq@J{KZ

FtSE*rS(i_1pl{h@z7AP|#+w61Xy@6mpm=9#>tN&{ z8dwf+M|IK55e{EM*yQUUW%Idn+Ep$Q2(bDe7v)Maqup@3{60;! zp&vq872%~7DB23&ZWM}V=#>BG##qb4&=cL|KtOOd*cJ2HIBp5^%MxfuBivq7rrcuV zAR9cOP?@(31ps)~A;z_tP+fvx6FCbcVPT=$7E^9i4()2>N?P2Wj&9tA!vbkN&f0o*Cd~XFv9FE2GWl~LK@@Vn;PmL3GYrZiZceFa<+num zATwPE?<~rPyrp3R55>8ior*m&-LA>ezRP>GLyvi(FeFgj)hOGt;LA5esvqCG5;}cF zM5NGYOLY`qz0pqfyIuVBY3Xe68&J)p{i3Wdc?KD_2)SiHA5+ARN54_^ZterzTDLT* zYXUIzO-Ho=T3UfoTV|w+-ABV$N{~i;vC(oBejsU}ohjbcC z0bTKcUAbeK+z@MH64w)eh%5w%_1f{}r-&%(^Nrs8-+gDZ&!oC9F-tYgGPz49sAwA$ z_nwhxrW%`wLW|gf*^7u1h=qh53;B2qaO2`h$HEYEdl>xabyNevEIMNE74z#$L-wB& zvH@64ohXFjkh^IL+w$vgZ>9!Ru3*Mex^%4GE4}WUx4rjFpcnyh3?qonTJgx-IAp(Q zIea>mU?mX{5D*ax;vw%ul~9o-xC zn-BaU_F7y5h^RsB1PDvO35#rs-_ve8Zqg?i1J_~&B`t$ro) zV2t_vD@jf+8#x@<%E$aXIvv565zIj`N5QF(1c)94qY}`iSsagcWL?0&c;WU{esg9+ zC5f&LG-heAUm7##8BVrH_nYVhIa94Ab#8(V71u?#6<)m>{Cu>@u0~+9a zfoEW~00944iIcGHU`~;MM1+RPfL7iVX8y(_pW2p*h@v(PP;#i~5GBRRwCu&F*i%Rd zsl_06S@XGjkK>|v>gl3c!q^sFm^$?@)K}18^0oPIf%_xk>wqSVIP}}B_B&r=?OX!j zQ?TaKWQwQ^bd3sN;Og(m%etG>ZZel3FflYsD(V?%h)feQwF~3$(zknym|Mk&u|yiQ zw)5lDgcad*0_*9h|3u5~whZ{+#9SLq|ZJTYg zMo;hb`zFxzZFXcL6hk8wAPrtQ9X%N@YbPO~k9kD5)l1{8RX)W-K6m(58reliD~v^( zzGxQEiwT)UB`itv7xcjp4H}-^#$>YqzQ&3!*#qVT41qCB z0jeK4c;)uG_6)yjEuK$&Kl}*#FN_8E4emBcEtEeTB+#wMdb5fMV4`VuL52YSukn;f zBbb_@2oL%jWz{5?!-2s5E=WT?UV0{}ZJd~OJOzM^tb^A>s54lvOvd4axr&isr=mav z7s7Y+|HMb#$I}2dgT+%oQP7ehv+Anx^vV|QUH2H9zoI2s`j(=z(YGet;n9soXS`Z= z{6)US3v>bWL0&=J%aQ=8IA_dKDTaUs`(^s+4AvZ}ihVE-*LFIs)QUt=8QuAbMU5SX zk#lIjuY_^)I z!s++B{{OJw`8S=?BYd+mxknE}xmXT{p96r00B9q$GNuJ3*jd&!SqeQ)?X&!(8zVTx zq~F9eP!b1g;ShM^x9tO+jkql4-9!J#ERiiCDvFP!hiV_Jn2IVX?MCX{e%@C1H%FU0 zK+(qua_%D#=%F+TD?oky;E#aG(Bf67-+JHCIDp9iT0kMW7}Kc6T-n(*T{!v4K-lZp zfNj_~*a1mx8lVmDxhm!R_&7A!grNee-5!7h zK!E}4h`@r-^%@F(R-(n;qxYq3-xkZ>yX9iB3rbzFsM2`t`^#DHJDt~DWG~d$3sOAG zvq#h7pG((r^XrO%4bjQNj-2})Ycum_j(u71sE8Hq;=~hIDAc)8Rh}=2<Gq!n_;qZJkPRJ?$ zc>-QV607a>8=uAcO#roV0Ain0hs#f*y51|=J2iLs-dBxx<7sew_S&&N-}IkGDyE&O zu79rF1VkIY0j`Ijo#E%{-%(KyQ_|dvk~TxSDm23JwXefx*IW}5~r8Co@fp}>t z0zJTG9O_2-q{MR*MLtoO3c`fw|ItNQAcO-)b&P^~)zdAN`mY(mURotu)~jCdTQvR|i;;Pq(?l#FL4=?qVE}rrT_jb}q!ev?M%2{w z&~$!l8%5DyOkr@*_zSq5Wli7Be=i5CQRCKErDD$5& zy)D#!{4e}97Ed;2g?py@)1RzfC8V$XsP6NB^C#GWqjj!DV&$SgB2k;XLVzIGe%RK% z%+E81R-fh*Wr!a-A=W<#6o&{X6xS;f952=z@&$t-_WT{(pvJRgK&keH#7k>g-QX;-Aa6Y^7B6b$aSg(_ejEK)!H-c)6s-vO-7($To=7AOHA zy_heau85I<2FCJG;YIrnu4-C>GmZ=6z4{GZ4FM=;H!ykYjH=l-xyC(jr{8VJq>>vP z3*eB!Xlr$mA>%{-VK`G|0Y}us!wQXq)0K_MJ!*|5h&hY#Y?Aq_2z;`xY41^+=T`A{ zdKO>Bv*itTTDi-!AcJneTik1JExyb5xT_}G&q?hVk2RIVZEktSy!^rXTAW(E zW}C1JQNMT9x0BQ}_b2VQ(xA6n%*-$f1VeKUt1-2qjMNi|44O^X3I_$3$q;r21cc+2 zMM5CKpFKT6XNvd)a!GvQ9*2({|CKB0!_VomNMvtGM1Dilo1e3ZGV6bc^c*Ym(muJ8)cN=KhHvq0LINjLINb9q-;8|xE0@AKNGl|!rcVEn`3-?TqS|lZU*&*_*LyVcC31|?o{96{WiOMRo3u3 zhPCoVSkYB(tNSnlF@Z}Jq$PUby%d$QlW0E;j7RbXj(BQ5ZDchR1ib_f;t6#6wj>F* zAVQ|=H6*rW2GikLTrpSCy!6^^MLa4|^qsNC+bhDE&E>G|v*1~Z8f#7L`s)UyS1@+| z2YY%p>^H%=vDeE>bXzod+3KM8RGm`CVT=0dj!NlarH_A1E1RXK;y#k_i{W9$k!Ufz z>Q`H7uEtD>=#Z4%wYZ2kA+S{2+D4^zrNXTU&;vkLC?wEcDQG7nEg;x$>a!l&aw)26 zr3i~kPD(B$y6t3N0~>2HqrPG?pd1vmX$%bPrWJ9+T?+U@kI+5^hW^|Q?9JanOuQu} z)RJ*rgk34v_t^7dbf2gaYApc8pMdrP^7Y;Y>=4oI=$xl(mqg|)EGzeLQAOh z)I__C7PySLxp+T=c#Br+K}kEU(9Peh({9s+k5NJ+hRCLW-O7*!#v^1x`CCoMJ~Foe zmsXjSd`e41D?71*xYxDX_MAAcgPb&#emU}r{RDte3B|n-cgLCFdh0p3^E^z*+*tLd zfZ!5HAe*@eF-71*A9=b>*X*pamTh`-eWWt)L07!#YkMwjOr!G$fzs`JCAC`1jsA=| z`}q(Ly5(T1z>uvMfvpJxgv+BG-Sg@W>RY_GnbhLcCAdLm8Ht`w|0c$_eM@|e(PtLg z&icO#F0?loi&bkeP6~TGD;x_4M)6}F?MzI2Z|?9(f!P^s%`IvFPe^7T8(TH(Q5ymg z3vbg7~=OM2_|C99nkVyWGvL z!#G*XE;u4<$o63G)loOAODl5Uwh%0&%WFy6VjRkqi8$KvDp-)#D70TenOZRC;^QJw zY%LuFDi37Td2DrjG`KQu9m(8a@Rj))X;)}fo_9~5dse;PuRYX7Q?+ZUkzKC~NGS_?-99^kf`c>l`maT69fddjyWLERB<3%k9 zEpt_O;X}mNcipcF=q#piO$Vz`@r(OBCz)E_PP7%}e+y$+W`zwGSXI{W7G5tE=}R%; zH)cNPi|@BBD6DJ;N&FLQx(QUHWp8R!OW{}aek zLkQ?fNO&6hsnD%;b6Wjgp*CWc^V+aN$s=tT+hWl&@*t0Sn6KqjcrGgC7odb3xR@>B z)G@8_@~_$QdlEM5wlUYRaDAP3B4Zh>AFJ-ueIWdgF4 zOG_DC1IjNfzmBl|rGTQ4V?N@}gi!*{E^aOJ1{sQh(b$&HIwclR;n#G__xhtE`-Lo) z*IJI=>Ff?@-`9hMLmDlbY=&!hlT~E*X0V9e*fYE~CY?TzoVs$UnI+inJ}9v^5SN@!Zu``U)i;lqiuB6)C~4B&E60v-6zRUNMQ@deC7*KQcupZ#PiX5hObxm7Io6&{J{FvfG7+YW9E$8@Y7nUeDnsBs#@|23j>$+l`-DEJK&C#>pT zzVTJf3tQWAYjNzn9ZfPg&6bSfsyo4wwlI+lt{oOpnO_ntX8_y~0b9H8nq{d|1Xd(A z(7z(3RJG%>H+S~!&~=sN^5c>e24dD1zBAa@=xsN)#TA<#YiM&TKB_AAVPC>&So0*| zKMM#BKy(6O6g_l%v|%<-R5=NTZfkwy_=G}%kHBPUzh2`Ffx#Dc%y&vdHR3a=s@@m> z+Y-+6TRx4GaP4utPYQ+=x#}jH-nI8Tm^&3FTt&%N`80}F8Nzdc0SWHzdhgIn1$>Ei zkdYA%e>D13)cpv;L*Or+Q?`?G`PfuG!;!*qLe)t&!ojABUri^Go4=?f?)*%4rsI?0-7{|tRd zAOdaHnqtiEg-<|A5q~#fM`qaZxFsrs53rpyByu|qcOaP9`dPSL2>j_`i%;vMZ=$i_1L+tvUn@E=Q}~# z0}w3L$=i*GAq8D2L@2d#lgSE7t=2lJWi2f|CJZ-R(q*(V!$Th>-tgAKO576`1=JY4 zTft%SxrD$sJsQcrI}g4fuLUmA>c6gBUN85i?~U5QYlK|!`gY*j=4KKtibGOGYfU+j zCdR&{mG(WN^73&mf7Mq;gS;t5)>E|p=PEXX2y;ee#`hx>(8=8$wax{K=_JnrS93N4 zj9g-uZ$l&*9nf$B^4q?YlRR!n zE@W`?tI0VsG1oUC`RutKg;n7}TR=$B<%l5tB}OSq5EcoTXf4ML?wrgz(cM>^EVNA| zT{=0cBAHF*2NLRyNeN;^oCblZQ>?rgX+kML0P!LW0XqD6d9y6$&ZNqTR9027b3qCt zM;i&d^bae6yupi*&GvGV8XHo!y&Ps z&?4FYKUF?i;gi)Me!Xo0{iJ*YgX4IQ>N4{Dai2(A%0YBleg17@11vX2+n_zP`UcMu<^bSajWl!U9lt_boz_$}nP z*atA08^Zd%zd`2ks$E7j+AwuuggsAb21sgM_fN`2GOnWyTn6h z92r06kBL!c&x#9oJMy^xLZNUj5B2kYlGA+O`Zw$M8AyM-TAhOQ%A$cT=xoCjNuq!= zUs)-MS(1P)lhPell$gLG>T+r$JNXdzz!A*jRu0Ny$gnn%aFl};0^30?O7+)Gw;F<1 z&$Fg{fhSfUm(U1<>Wq9nGMD{P%yOS34u}{++_Bt|MK*U;yt=`0`>$u{zUr_%_C`V- zX^SeXJVLG<3wcCV1-2H07wB!hq7pbNvJL2@Wy||LVJtHEAd^tU*f#k*gw(fRdB#+B)7_G&l=b%pus)K}W>O z;{DlX2bz@@mgbh;t11qRQPyzoM+1+%X6xxL)Cp>vK?i%@Q7#?6z9DPJzP4le?)yYV z?oo&qG*}xYP(a|fb5?3Lm`cBKMN+vQ^%e~s{%9k*Xz;OJs7ZBv1KY|An9`OXgt%;Co0jc0AO6`v z6j&mrc2af7bjdJ^K?kF?ME*V>*7o`4_122^k3!%SJX3$sd%S&a3MBvKpdu)+<+d@l zPQj{%5pLqvkN9!v4ALIiqOTiHF*4I~$WSeOt_Wcj#TP7N2mCUjlMfn`Qx~vwvxcp5 zM%9*-IKPe6oLr`anj2}Z)abJ5T)eJis^O~i%$J##Syagm4Wc57D41=fk@*Z{cnVw7lW1*ihpNEOeVFkMOGtHq2rEQsSx)a z#pS%M*UZN!wje=PlEicZu8x!o*@-Nqg3_Nwjd8p6XSk3EK-^7B-@>&1jJB`rpMw9| z9!o*o!qtBS?;wez?LLNYC0&t>N6Yu34UBFxE)2ZLHU)PYVi)j-ABY&5Daz6}-7!d{iaJSK; z`q++r@9B09WPca@+iKp&`#-8Lnmz(ssNpN@pm<_aY`^%Nzu6-`@1(8S=)1LC`>IJE z)AF)eM?nX~e!Bk^;%Pi4WO~}eHSw(Z50RxsbNLpU*z@uNQLOTSxrP=Auw#+YUap3H zA^{*a*yKg4U+wz*Nu-o~?oR&r_C{Ejtt87dioS!iP(CP00&LZYFq+NO6fdiD zD$^hO{hFU0hc{mvG_ML*jhXR(_V=Nu{bFL5`B48v9GBgt?>%3BufmrOukT^Muk63m z9n|fd=5#$H-OZofJj=uAczWNH>-E3K(eeJ(ORfQbBi#OOdXE2OYCYZO)%@!hu#HzP zqZxBjgi>A);K?3KXs&9y&KNNwL}8L^`qa5Qe;d<2pJcjBTsaqm)Mf2GG~MbZQNACU zqhh_mstdJ2^o&Xq0Dq9*kfOjd8Crj}mT?K?mmlwc+rN@zHDfD`cx&?Nm>;bx?D>}A zPk)Qgrp@>BM)z@@Z1HV{meA~l>+(9bHd=LY-29&vS7ncR2#Ulrd}Y3I{$*E06!t1^ zkg%m(3?^ah1#E_hdrtma;}_Y*>%zU?KW#adD(+sc-H5GMdKkQSt!*~swsCje%6|hB z)-t32)2v8B6w)Zp{BM%xY_~Y4MOcE)7JhLP7(b%lRW%B+x@yNdVh@wELAX&p2N=gf=(x|cSCxIwP2N0iGf&s5KwPbB7X&S~2li#{2 z;eWoTv}l-e;l4QY)K$==d{4g4fp z6ATDOUCf}Wt*rV%y}PmOe`<^fzeQsbf&v@CBOLK^rg)J-o8$(-Bwx~T%^0x|0RTvm zAoZDn;*zVM1%QzGM(~-tmicb1mQ?OTV}Bb&QR?d)3|T1b_``Qy4mBck@jxE;X!sGt z|Jv5=2IMN~WjI_-FIue*>WyV}HkZAbV#{Ds+J^pOk|jEjcS&Q^?{P8-{88sGr*L{G z%}a_EYEb)4sP|X>-^bx}+v_sFGs9S@{QC1~1j4;#~Z{x0Z^(=LY_T4C*-x2|VN@6D?R{RddSg{0;f`PR->5v(P&SPf;}) z0P01!KVzipV1a>ylGxQZa1({NS4|WKe35xUGz3sl0AO$Nw8i{H4=^K%5~zy1ke=gP z1Ux#L7JqEC^cHW`Er;=r_ChSOo95Lp?$gQ0iN%50=%J|9*it~0!3@Gd56Gt38hJ)F z$m+xX#gH&hJPIR(1%`Y{yGSPgv6;$YI)?>(g)LkN#nx9{vVcNL59)ORAYjdLA(dK( zgLN_TLB=T`D*${m1N;rNh)4PDi#ep12ubSp@DJVU{I3i6TNK-t${ZT`HjMYgks=|# z_qp&!Q34*HwKfO)y!}%dNiIdvbjkhI@jGivSH7V1SjBd!lZc+w-5L8kiSv6B1;4s5 zgwd>GNg?4EW_`XTr3GNPEeUzlejwjz0A`tp?ylTE@0!(JOi8UuNUUVlGa-sGA$vTAG9F?RMz)fbAa29|#UReXaRW(109y=NYT`2S|JzdA>_EedULq)emI;K3o?N zri^=c z0F@eG`FKXE_nX4zn}k%5H|x= zYA+`0fZc+_b>Gb&*g`h;Yn{e+_dopfmlWQq$wVu`QM3N@-(lXa*F-wa)@hrJfH#hw z+(d@nm7{K%v9cT2Vhv5VXJ5T?<{3h%Hv-L!8W1Cr2ob}Yj+>yKrS}?h?TN*tiX_BK z9?DiX-u`%Qa2O#I$|N@cLmyON{%cr7Y`!K}km~}PUDtD=*LMD*F~edZH9+(j?xexK5Z!JG@~dwR$( zZm&p9h){kkjT$+WR zAO?-VY|4%7kJfA^ANHD7bo?lObkhZNhxTlN4RXwZ%}d>-2qiwb`VcG{>TPllb<$NX zRfseio|`Qunx3`Ksiw(-_^I7Vos*?|sq%R!H%>BIE*PyBxkyGW>$8Lg-l5G}RmesS zIZV5OKt!WL4;J7Xw!ODmpLf6P`i~Y_gy5a%2n)8XT7+OSl8?3R^|Sj@PELADe>JM& z$*|wF^L;l_Qb4rdXzUCo%B7pZ|L+MD+A%^qbtzHzS-RfWKjK!N*%RR^TT@dd|ExB9 z%1Iy15b-QFlJzG(RO+>Rj|*CFPEnsLyUggjEqH7zI!EQWh@Cs!VCSY78QLm?6;bYN zqq$Fr;C3x_8wCY|tnZWA+r!kR?VqlOlyjqMh?_`NSC?fqEpxkgsHwQLnLosa<0}l( zu@ONUK?9IDP7n~$2oPcHV;we>(KeAZMh6HduBLxMf8~FjbqDQ)4gG?7au-Fne%e}o z9{un0f=ULiURp-k7S5p;P$4fEmd0Yjcil)4-5m=Zp+oZam~ft}v3srh89m?9`F!7d zr@yQ2ad~}^KzC>&e*gd3?&QG0fdPUybm4cFlDOKr)Y^RP6S6^4az5YgI%XM3tnVvFNK z9-Vq8Y7*5H|JehIA}1?5zc1vn$W89ILzYLC>n;U<&Xp91`^#LdSjCEp+bSxmDbn$9 zRKUJ2*s6=F*Ux8+1GQ=*Dn9YPRiLLqYpBpoOG2eh$3aagu*}~~);=oO_4bLWZ-=jg z5i+L?!C%eSrWIJKtGL#n8RasMGSQ0>!f$b3`*#-*bXuA%MeK)m;%?o~ zUz9MXlWID&%?u8EJ$4QIGq$kyw7P8q3?n9B2?SP_Ng0*60gXutS=zG@J7f3x>B)+z zxVKFzgExN@1`aLUZgLDUpYgXV**k|PB?S+3KtvPwEN1P#JS_-~Zo0nOouOGqWARf|N9)h5Vn1Tk))g(V|Za^L}=oF@bt!RoO$V8=Oy+2Ey7 z2|g!lE=j5B+ZL0T?RQg_xd?*rg#4uAcsI3}$NA19zCWAGh58ag>tFise=is8zp?Bi zULDgXOGx+4^ETer>rpl7==UEkZ$syT>Hgn8_V&Dgrk+{x-|UXV#IM7R?J7U+n~&LY z@wa@6{rB7dd%ow}>HS`&C#?7$h!61dyp4YAfdL2L`&<9%^Kt)OmtQC2_WNIl^U{8w zxA5ZcH*{mP;tU2?YuD>tf-pA+lMQkUgN}KQ2t?R0<0PM;#DV89+?&-cMyZbIQT7jQ z@Li$3ZQ7gdn{Vd*FiF*IV7F}Es`Ev_V!-im-Rv74YecvZj40^s%j+(GS$MzgJDVVU z1-20Ut|yq#O0@0VniiL`tw7%GeytygFjfQa$N-?QfkXrZ2H=pQHYc_df5wW?#Uktg z{z8I19-Vbs({{ep>$G&N3T|A#Q6ee)WndUJ1^w5iTrjB+;(qc%3I2HYm>uf^Cm9R6 zQ6ET$c7k`0J!g|zib#UCL_6djhg1E_m>LRoWG>v6j0x(E+Y%gmR#Fk9nw6U{QqIG3 zRuAI4s@#1x?HIdEJP|zK8ADI|MHPbdk~f$!?%ypN9QI~(vhODA>dn$1ShJ>ft7M!4JxOB$m5{Jk$tJjR&u6+(8eq`5`3Gc3qygBBg+4?TWFSM|l;H<# zsq^(xc|BLbh2PZq^Q+j4!^+T}A0(%+xWWAW-7l~6|F^Qr^wfb5xRUX(De2?Thmwh1 z>7Nj{_bn8Mh!sW!>R|AGbY>&!C`w4eviy&t&+?Fu6F_^F8xPgSTm{dzz1~~co&Qp* z5$VNV?JGx>o+d3<<5Fd%bxf~(B9kN6^Xin}b$&TEf z*&nzDuU{3o@4};kfE-D)|C7E{!Y4u_$W%V~yWKCrv~*yEetAI$P#ZV&3DAi43wDfv zJQVx|RFEM2KWN1NW93(qd-8-{AUu6eBO8*S1;9aqOa0WcL-0dk2E;ZI~M(j8`q7uA^?uDbDfR zZhZ{hZk1L@eE;c_>PGb48myLUywr2N@VHdXmyvWDh?N4IKRNE39{n&@0Qgq4&^{Zh zRw(Q~MJSJSld%z?*eQ5&CE15b-x2PGrXi@; zhQ6)(BZxu!xm!l>(`4_fgYHzr|$!P7aW{Ek(mIU7~Z3G~GH~B@ihb2#3A;iT5AM ztMMb)$jnvC7znUC%S`}g)=;WhIB(;#yc3L(!=trk8; zOA!$vXC8IBEBanGS*5G}h>qj6g^>gR0C~l9Ewj)|c8iN2iL}^ue(QmV{k*;shhCYg z@AW5mVQ&!n!~finhv5H&7voVV0g}80VH>Uj+ssHg&y1YI zdA;jsTt{Vy#vBN5s=(SU#aS&@mIh*iwaf#UtxUh zRl#bF;;x#*dN7hI5t@-;xbvUJSz$Lzr*{9U8Kow8=uPA9^x}FTiUcu=AY&H%mV$sf zM~oeKU+!){!?ngpD?C(MUEoo>fUtvugp`J*;WDp{NbNT*g)GA0mP8pvZ$1Z-Qqvh< zojQ#8YhADOtKrgWzL^$ICt&VEw(t>Fz?iZnFZK^@$nF0`3GPye-L@KfuOA z5%!H2e8Qem|F_@J`h4n&ijiW)79UUk+F(fgyHybvwxwC;sYR2qLxqZQyK9Gi?6HTN zy}^Y=>>q8r%LxzKU{)%~iie$iy93EE-ZEx~)7wAphp%QCC+Q@gkjy9e>83xH)K-65 z8M9HBBFCtw2Ndr+`d~#X=-K`FtN!L@o|pA(Ir~&O>8ZW7H6NF9#5<0n@pHOcohA_U zmgLI+c8(??;(x3C7SD(Mc#90*T_3W5ptSzFbziHEB6Uo2c;T7w9m!0N! zzJKhzl+UHq^3^W(fG?)#?yXR}*Zha+d{G8Qsirj%uqbkj5$SB1VLE~}%Ma=^{&ZLc zE?Zi~FSs#riC#lF1^Xl3`}>G+(cm*lJN=3wb+sea;earNGGKn~o+xQW(7Z(4-SyO%1Jhe+sGja|`dvRbXnt&nzVOx_3cr~@6Scm6iIh@@pFoAdd) z6ca0ypCzXm`6o7{KH(tFEe z((j~HqCd^ezyT%phqKs@@+mCdsoUtYuj9J@+P~0l=u_fbPkm3TkyPlZBF7Vtc=-NT z`BbrWd5j)Pv{k^TM|^!r_ftpGlB4JU$Csh<4Mh!sFo&vRaHE)Q8KkA6_0q+vUJ`ef zx+~YIRP!)RAsf_+UT{1(L<3SffhdT8&v4XEEtL^s3ZkTaQw#P@Q}lTJ{l0cN``stz zaP;py4gTXyHkr6;utQqb3XD){Y?4mf3h&&zwa}!N?@zDZZnax>ItP4`%q?F-`)ML3qkUgDM|JuvzCui) zC;T_p5W95A)U%A3`a72soG!&$zsIInTKH9HleI}Xb|1j{Av0ngK7HY9osy$gf%CXNsx{5esxja#Oxjr7^DK@duvh^QAc%Y9mOpou!u8&lQ(vR^oPLG&8-t?L z?K)Gc)z$k=O~=}9YAjfag289Mr*_N(JcD1srQ3arfly+I#I1%3Y>u`=gmEAs*;yv~ zMmM<6d8yNx)mxydICpx=Nw>oa%-Y=At^<<7au=Zq_P>R6sgbc_(IH?aip-moG>4Rp zh((c0`Pef(py8gb3lo?*tEBWhN%g?NrFgOLU+|2N2`Wb4pXKM87Kl(3ldX8gcW5vT zR87=meb=v;x4H`D4^It0^2OhQ-(_bG$@Ef!}}*>EQ$g#csv z%ZOX6`TxdzOR`@Q{{AUus5f!`XgYT9!6!gRaaGpuT?9l(L&?RYnpHG;F)S(((D9T$ zUTSDdlH(@+{vx!IT#Q=93(O>9CIX#dDHWv*m1{K-3ILYPAVobacQ3KofSYv&3f3HD zG`z4E3NoNNo#)m`Nf96FOJzVx7mSs*&-nSaRS~w;dCtJyR6tx6V~ca-Gjhn&gl5i&?Ps8Rdv7CAkcxV=TB)hYcOHDU zfmyMj$zBVaN)`|ihrv=P*GwZK&?&6|D5NxZcvQ^lDcJ zKp%a_ZQy2w$^xW!UP4p|4`cKM$o?L>t__;*J}0>r*m1iG>Oo|op=}1)^?gf=Ck3R?rK)wr%su|!7? zTGTF`Q=O(mpn5Knv0)@>bX_Gp^&-)!xVWPmhUo`B+X{{3e8ih|g=>UU@N(EskM-go zDBL5cNK(TxR8Amr!(4Aq#rRy4>bucY3I@a4mJL z))&$}{n!CeeI$cHY99$@q995sR>%ZbU2tf2D`GU5q_BZQ*`Pc*Qle06&Py2ToxBY# zsh=q}Z@8#7hez4YF&6=1f;`91swBcjO%I)I$vF94+=fYnf>AbAn@Eh|Uq3^6dU0qz zVii&yu=I^-NdS6!X{1kMLt5Gw^hzLA8w)yt^Jv^TLs<)k#~wIczPg?Q&Pi96RYyJW z?t0uW24yey+}y7HG}=Jxeg~D(#K(=@UM^p|ZwQz3{e^ zMgP?t4iE^eY>~`OL;!Z9vOx)8%>{&XstW?d-}?8f@};ixys>w{cP@q`FT*Vd4=7S5 zWLYk0K|WFd;r`F=tPb-7Z4d+gURXTSL5f{(Qm^y}N#!&}3*odPf2A%*?qgW~5~hVf z{*=DkX*t8l+CjcAcmH4FKrmx?fVj;A4bVW(n$C?FujM*}s^mNProgUe8eJ!}GYTZr zbkYc#mY^HzBU$|edM^)<5Gbz@ z{V%gi?Z%KjH)@x&WPknlF#eyLz9ynM>t8eFtn$qL2Z)A;%K3xXVjo=YQ+wWW{MJT7 z76RHP451C_lZByXUTucohU1)r9|%Bz3Ch?P%l@RE^?X!TmJ?ImCy<_-NR}ns4~~Cc567gZk2*gZdtWl@X;PYH<)!pkw4rLAAq+x`_rA$5hpM~G$smT8nTD9w{Z+D?-{}5F}U3AwsydJPGfey8by~s)}pKj zy^kPwjyM0`=rY(MfM7+LJatWPWEvM_5BL8ZE9wqhn}B78ANjYPOzO*LqpFsV3>Ziv zNI?h)A@L3G2IJ7nx{rJ7?6aRKu3G-PO4BVb zaqOLC01-adksZ6$%EEy_+7U|J0k^nxtU9%t0J;_f$U*JhGUj;j`|s~Rlo02CFH#aa z@Md4df ztM~sj-|XpUzoy7GEWA%OaOVl)?TBH+J!9j+57|dTE7$5+|t3eDU?-fIM0j=7fy zSJ-+U4u8mA7q?5X!FPW7q5PL6h+-Lg(7up3kOV+PUlT(&LMVe1mo0h(cwBw&Wz(FF zKy;m#Q>(>JvW40}Dbv>q^j5uMd8PoELTOf%L-~eTcWK~|B%}Y&``+6MLT>x}rh1BS z6vgXSt$J(+1LE!7sfy)`lFw5Tq0p~$W2TR#shX|U3{m2gNI`-gm3WaE1n1$D`4}mq zHO4K^FZG?QO-zLcS;hs~*TKzUDr#mXy;mlr7AP_3J$V53o(aT^L2F&dJsrIN zqo#-QKfjiTs?+1vR&&q~<{%%1moe#rBe_3799U&InJI+Ul#zmTc@7Z|o9p2o5P#N> zSF1nm)sc|w<$uXw;bA?;zx;pS`sJ5G*9sq6zk2|rI`uMo{KNYd;VI4LvQxNY{Z;mN zTa);3r1!ht4{`QMe-|C6!OuU)=tJ}FL5SNTNgrJD03HA!C*24fQ4y`1vIq9sub17& z#muhW87sX*Zu`P%QRz@nY<9rFq-))pI3X$KNzl*T#_(}i8 zB`vPMHOQgM`lEZe4==UQ>y!^Cgz&JIJjOKjpM^(Gf z!%#LqTSAA|xM`Yhi9`3ePx==7X?x?}^7H-g^<5tuLewTeAdNH;Feh+=Bv-LZxdDq1 z0U!_rSSyRQz(hSG`ta!A)cKZ|mv?)%P>czP8t9r#yVt$Pu1VHDMF#0HU<`wc}@o+BEDa@DPF6gfMm5b>fFzHMx28A*grCn#b}zyi2$ z&x;=lUMd9(S_aYG=XYJ{JN}YHg&4a1G*pRy$NeX?=29wx3Ff0s>w5647yr#_+8QxPI(MuTXmISam)lKhH0GPK_LQ;-m)4W(P$gV zyttU34jy?{r!oSI6N3mqgZ~d`T4wj0Bb6z_WDyCFhzvjoj$f%%sD{`P$Z0oKY!NWP zA|{|p3W3N_C>F5vaAOYJT>qV7e-u*=-+BAp3=#X*L-Q<*$gt2R&h27f%7*~q*=pgb^37q`>Gh8@g_K;5V{kTA41$7#egiH{QHU%c zCFrQQ2nM0WIArpoboEpTTSqG63SvSO!k?+v@4T*OYs_+(bZ6tVHx{w$2RE@_!4c86 z5J_N6vT`Y)hA>e?!m`B>#Q3>88y73MCM>B`9M;*a5i!jdX>(h}pw!eZ*ezP+!1*8t z8-V+K%J{++K;F^0;c0vwo+Z@tn)22C->Di92^u6bJ8lpMgOEIf9(aFdS}}Js+#@9> zeT|_u`Z!NUPK7Umu5-P%gwSka|GW4ZDqp^3rthla|2?(FIrl%yS&KV1Y^|Qd$LmZ0 z!uDk!P~+=(!cDX#A6il!w-g4zl?==MFdq;^l4Q--MZdt_qi2c+U)Z0vYTl-N?3~?v(@unD6nVlDGyr|r)< z-)gyx5()oz|3l)>f>@5}V7mLLy9A2uyU28&qsDHPa$hfuoVy*ucJ3Zo`4V^&^zC48 zW1(J9@Vp6pWM4yVFPpr^)JSTQ&xIo2IX3k+>}zu%YhWQ+cY?8G>mZv4%P}cD(d;Os zy2n@OcCKWCc$f|wgK2H6HkDlxfE3^m6#z+Fwjsp|vS5^uXt{wlY9p@SZDld7j0PIS zRrcT6gU4lmjWOn_lK*)PTN1mtql!=A`r9hp`@)bwKtMsn5%EXAg1MVWa#RKqkTI&r zM1Jpj%g{o()|XX-V~CKP3&@$ZT3w4%Opl#$bRy3q4NH%eclvoycrBi4`_$_64O`Mt ztc?}-^Vq*D;EUqN$-=o@nbVKJhX~Tmsu-S95bjvT&@N2zKT8=Vc3Xh*EE>O`?Kz>- zt1Zcmu^`bN%%o5Bdx}EMl=qeBCuCq`UJ2#A?NbL$GRpZAZKY$+^L=IaD>YYbG`zTn zp!4RScyI+PT<`fc27B-I+H8~qk^R^;2zN-TthcLkVLcFwQgm5y$-H;{vOSSqg;h4M z8TbtETgEF@Z$q025E2Ifh*iatL1g!fkemO3=VVxTCbf*nj=DlP)D%Q)Vs}u#7Y}RZ z!u)F|=IuWOJI2Jvw5&~-OX0-uBDg*GY`gMVUoY^E|6Td}`YBI7F{Z**&zs8k_J1E9 zx9ffCN-O*z*?;f3`u^?zy4^1aan`W-^gTcIKpr>vmZ)=Z+xTcMURp3h?EW4vkJ~P` zM?_g=k96KkL&NDO7S3_WCObR!9aPCQgit^???)d_mJppShEP;Wt63T{Tk>9 z@|#Xm5~!8u4ei#_XvfSgn-(J_zxZu7YHYLbUcmi3Q3FHN2>j-jX2%ts7;t=6#WvzH`wz_b?Ld|>wB8pW*r_)M zJSEj1mVB-wzk`y4V}uK7|6XV`t3fdt{$4;j``6%=Cy0`DrlP6u&;j5I8^C z8*1FYqva)t;`yhv1YIQ*f9o1$qTYe%w*CxXzC@x`DDpg;cuI=4ZyW^UVJ z05IKwQTO;QS0L=C6tqJnf(4i&XrxOXKS|rlOhGKFkLf-t?s)R`R!*zeII4TR>|GGx zk>QYmge*}1vjho&A&7k|cq{!r7kqQdND_*}eRP|eW2~NQN3hHffC!Vjbo8xk&SEc8 z?zk(+pYUOLcQCHS%b?=2+?Kml_SUGDbokJD)e?_qJlE!Hm$BNzjwHjSpRC);d5ZZ# z-MEtuM%Q)~gJDL;ykp418XLe|Y@;cQW7EIncLvlQ#s6w6nU{69@Xs6Q&asyE3u9qS zfd8V0&CatjRIW1>==FMKQRY~P<&)-l54i^-_M-I0ghNzqR;PoXDz?&4F3_9qNly!A zZeKkD%;=ykki)}{+0?zZsoZV>Tx2%0>Rm}EGVq){+x)2x@7Gw=c$C0p#f8qe?pY37 zb$Gg9=syQYO?Z{qnAn>EqHF-I9jve#&S|9q@;LfADI$S1f zttEF5Ad?SVN7*R-rwD+0J{EPYvvDx8dh`0#lCQ9{v=3rANRI!K%$UB`nJOo@*#O^=2ZIcNTzLRur z;_2RRQHumvEKxfotlHl5^>G3RAXXHcP zF{6S8ZM5zu#7;G*fzsf^HGYJz*0rQ?iDsmL#@BAs-Tod6?CFiYZG@$(ZF{ILQ4K|~ zB8p1@t|{qwEHx75w1m@;`CqJGcTt@;vHh7s8F+LDZKAHELR%$lg5{R)S612B}@cr&04A&^U;8yhery-@x=keW|vn*Vv?|B>tdwI><@__I(0a!o= z!9(}dz3>?a)4J{F7KKuirXz_h`) zQQXbG8tGxKZ+Btc0)he{Hk-s5x>VxEi&~##WiXzOv&ybmq*n5ypRUS-n4Xo_vxFTL z?mZEBP;L|NY4;gpkxGCNY6SCzMc(6^C8?OpA2 zwQsrVD5V0ml0s9+@3h}MZ2rUh<8U^6mVf|oypd}M-TVrk2K7jZSBH!K&-QCmMQ`p( zE2@+BDZA;M8x$4<5MW^p1bh+z4d!+qWx19JQ<vZE?+pj+oC1!lAJ>e=~sWo zJYl|gPrSZApK#L8UKy>M6j+06%%YB(N{nC-}XO^uNDUEBl&gBG&c8C z8>^>qS|HS60S&#EdoZ1IHfH;4MsL^^93QI%v3z>4Noq9{{vSK&RQ1@S|Lz+{_Z$vj zg>OE!&%yVfjfJm&M$lD<@eM*H5Mx}G;18wWg8jSKjXpHWb@6Uwww8?HI2?n zJAc7_4RBtwNK0bR2Wkc=V^Wl*@?nIR(!Sx`f z(l&cdIvuFg-a(OMFUocj)hE1<4)$70J1i|vuV!|qmD3%d-!pyKl$6LDtoIQja)ExH z=Zd5Q$qNCqe{S847@N)?^fcZEHuaFbl>|iMA7;j|4x-E%0J_)#h~*XpN-Yp+_5mT7 zAh>LpIINySavy1o{WbyvCcshvQ8l7KVKGSIKo&yP042KFgH^EdAK@}?lsZ5mU**T) z27BoxVofJ}Zl5ki8dcDtyNR6?0L(xunQ{jAS(%t%axcupK;W5c|MGYN1FH`s+^Zp^=hop`dzi4Y{!R&aYv5!ySySkNNYQz!IL}P;} zBLHcx>r1y;UzLg(kD52{@+s2eBOZAAj*K@<5LQHQzn+TxrGobTXgh6_mN(t4hWF@5 zvaIrriw}oMl`T0+1+vpkEYMu*{w!1oidLRx?TCeP$pU1Vj);~+=w1IrWj}?)JOkO7 zwpE~|1OIb3U+f}(_;W?=8^Wd@L8kj9G+{Z4F=Mq;px@VZgAu!viPo1HVmD;%3H|lF z{=M$Xleu|+^|D?>W&clMXS{+g+{N1ZO8>EDW^rTrS-#{`{7ZD%710N)W;G5D8ETff zO!y$;!dJ*UoI|EfyyF*+Fa`Fz2vGj;*7wl=-g<{3K>=R`0U9v>p#tfxT><%iefD(8 zVvxNS03!yg06+vO!I?mmim1+G`u`1tn~h*HjR_Y^pkToZ{OM*$ z;9oojr%B7pSqO;PP!e!V0YpAX+K2(a0(XNIp(a8fbe#`1#rOeK+D{e~(}5F{J&kpX#x&nX3;J*KNMRp9iSOF!fKk|2@fn2A?k; zlkt9rb5RV{iP@z-zR_X5yEu}G{`Mcoia*6@lb3t+#F|(Y6rCk37tYvK4(ie)C+Q`F z=~?>Qnq-l6=|P^2D5vpu7I>VzqcPdq^nIN%*jp4)R9u{7aPY@0PjXI(7=AT*@>`Zu)#>B8ZCgS2yf>Ok!vL>RyVOr?1GcSoPfwH%?4- zY3CFE>5?P;>@k=R>a9n2dAZz!2(bR-E;X_l6%C|N_NC9&{0wwql#3zHGN_CH_j{%E z$O;C6pt&{;g0>7qQYj0C63Vo+sGxd}VU{AvlUqj7S#37)jCR^R?{SudJX58^_-Ii% zZ0pk>k8A39o>$5J4`bK${impr)c6jsvB^XdJrGK{1hA1^q#MjBgpsyiZCT$W!=1}KAQw%mr!+@%QwpEd&ThR2tq%6|Mx_hhtH zb1jzPyl7PJv539@bGRv)z{b0SxAhO=j3i{aS3J|dBL1h=_D)JB6S7;%{;MU$72RbX zJ%)PS@@n_V-FBF@{|&WDJ2SP9UbwmXO;4p&`-p~-oiQky;n!n;8>UNrS8F;FyDM=qLdT*!D z)WYv&s5y(^t4rFfWxt%=!3}Cb^C&8hS9l$(u>@{15=by4 zf^G8so9X-g#`=!SVqv_SL4&wQOS~8(-@^C1IFEACjJK>ru}Kvof;DXp2(%$9*RxHp zezqrf2DmY4p-)DQ^E7*9H54%(P7l>mt0E^W8qStIE$#X(?zB5dMi9hMcN@<3 z*vS2@6D&b0yAJcQKa1fppwSWL5B~h5DXLpoecq3a5v7!u$`d`LxLC9D4>9O>F4pv0 zc_<$p>}`7)bfWwDR;p4@Zv^$?7>Eig#l@po5_#cCj#znq! zsFj#r1Z&&X34~84xyH-1J;LR}fk^qn*|-Ua!|42{VJCToM*cfn8(es3&za2{9lV=fqBfk1Sx@RjbE3#1Wztow%aD=J+ViUW9#s;LxR$qe-onN%$ z1@~&KEg^s_sFVQ^1QM;>QUmtV$e0f! zZJM_Icn*wjJmKpY`}-w*R{9URwZ`F?AKz=~z>U{YZI*NKp~i|16RND;LwZ3g0e3gU)>;2BQ@3#+p z2KZzCHP#?1C0|V zJTx)EFnanNtYZKm5f8vF6N?xpXD+E}r49j2bAGtGY~TT&*r+Iovjj)J*+M*@Q1L#?mc;~uH=LECY5 z!#766s>QTrUu?*OkYrB*d?zJnO)^(<7N1W^i5;A-?Jdx!c0;~g!)fX2`dc`=zlBWM zZmG<$OPbG3<5)mp?Ah8MeQEzRE;)lTrh>H>cgTM{v}bkw+!GmX8W0qiXd;RU2R?b0 z&IL@91mA*{I_mrVnmV*FKCU-~-078Ys_xdF=fKp90-Gja9U!5wP5zBa5d>Qp?=^n2 z(1)HCi)9ZSk^`)riElW$-!Zv6pA(`X!UglArZFe@qK*)zndCR$Ckl3$r5lCRqQQNxfEkP}P>7k|BxgTJN zbrbsB~6qk~~&oCU3`vr#zVU9r&ew#lT8LMH`DMvXb|6O&}rc;vDd; z{A4&R=HCM*wwd5#y`QUCxM&$D1UH2`uIm!U#0In}SJg8C7Tds;ry$hc8Z>7mK4-ZJ zushlznaedK2T8oLN~w{Y27+3T>7xoW+~x)3qgwo6g$n-ju>aA92ojI*8)#kZRaov7 z&#T6^xHo|2Y3bcf?|Z4#zU#Nz*%ay1qont7TsjO7qwbM%bpEbziXX1RvU9q1{ zs=>9zG`WvD%KixM-_dCue!?s=MI?dQ6nnBgnGI*zW^Tnnj=Dho_kft5>)`)u4~ZY~ zV28S15^F`^Zm+lDt*N3*piNZ5RNu27cW7?&#y)kTsEg1XQ&XbladYl@xYMkMb2UjZ z;Iy|rJ9r1~|1Vut9hJGg-P6kidh9fJpEresQehLpVAbTP))cZC-s2z`a&b|b8^`P2 z_&f?=)&+;ucr6kx!r^4hnX6P7VR0KedpoI#5_y8IljYj=QH@o!86u;JUE2}d!7$jcX0B^1ROok&7=whNTEx{>^Jiv&kWq`Z zMnTqfny<@l@Tq6QSyz!8e5<=MO}z#I3^Vf&Ghs!)ccw#Xc8%E z$Z%l^1H4iK!!pqBXm87UCpEKWQJ7IoL6%WwP>TljQ}sI1l@@vZ!HtnBCZg+b z!>S@t!7EW!ysczLP_0pI`g67~T%}P6&{6wJWQcIW)Gr%D@HcXr=};;^B_ftTN*2ppQH-*hJQ=)Jsf)o)F z6M5qME)NYP*T;&S3ldMH=aSAr2|=$KA#wuQEkhrbZVLUII8x+*Z-75*Q3*&iVm{1? zBT@@+QO=z-vtn+qhUzK4&U{Ekm$2FC$lUn``red|(X`r$i*Ob4l9pTxdAL02{*D8G z&3rhq8Mm*0$Nil+k;aly`xHaE5Rg0_CtQGBp6MV?BZqzQJy$`_*UMx8%{h3`dY=c= zW1HJ|z-yb{T`p=K{fejy$yq`e8GD-v@qeTGSL33CXTUCe%*=VfW@xY4|D z*P3?Myy|C<1$9#Fy58%(+dW1nB7_m5q~`2ZWXYNlW?+knGYq|(L4i6;VgPcrH6~R) zCm8zvf_cXD=GImPY&6Ig^Etg8#A+h-RSV4cPE2W`%uJdYCKD;?A(=*veZHir%e_v_ zirpchYa6}0Zek$T+^o(=cy?F7ids?_ z^?Hcz(cYqo{#N6If%9_uTkXmuH==K+r)Bvm^dFP#cD_zu4&RjOvxGV!U4}_LfiCV{;3l zf*1Y}^WW-U`%D*VnWB+Mtp8+PZBuv}DX#QDL8dq?A&yp4$5d4t{ zgwovyKR$*8%zyUdEc(@%ESvxG0N9DeeRi@_pLdSN4wajHXDTE=^ZDe4EB29}H;M}Q z`Xy>W4=IRod{sw&UIPkRTel4_KV$9=?TWYH)VuxH|8{?U`fa!Td%W0!koF%rlWT)(gk#3sUv?0g zN~Z!5gN^;IK>(!CiwpF-i*VGb_RCJIg=q{po^6I0jiun9hF@`w|zV9gA?CScK)H2ozFdr^66a zT>a!Lyucy<+h`6satGDgX~!29JM*`z>M-v8|7%(QfZL59dqt`u@zFV;HbM!Dgchib z1}Z2*K)@s&-RT4OS$m=_rSgB3o5lkU+1XdHEb`S6En%8KW4Bzq0?flw&(_tKz$i9b-S& zyV1?c6-Uu?w;Pu8d-0ZrHD--^L+D6wWb6}0;~vAR@Wb!7mY$exBlD#l zt@LC*f5j*|7LC`T2APnGsMbUND1TpRRh?y%eSsem^zFPZoZMH#C1sB+vaR;_eRnr|Heuo{cA$>%!EuIg&E0{4*zAeh26?(_bc^Tzwe?yRSFzCw%^A^{%g4 zHY>E=kG?G=toJ_z&Huim?E{!VtC^-nr1dD@I*xYRbumzg`2Q!a!Dot-L*tP>uDSr< z&u7duf>3UngalNTV&osgMMNyAV;mQZnL~qB+vomtELZjO22* z7~lE_QSM+>_gHG{;T?Wc?9CL{N4@nvc0RO4~9tsV$}Kasumn}P87ogV%VN&Omr zf8B4xEu^n?M{Ogd(Jss5p^dlsyUg#i@aD6T;Q#8T?TPb3O98)xWt?#=dEWNtz5JkU zJ(5jF(cOlsVWZgpM~Zq|>Uaj?>-Rk~K7;Ugh~Lq-Drt^r`XG{zENnY3vL4=wB?{5x zLd31_KFxMOd)QLXTf2w3_Dz|!K)PV?uR86;*JI4a&+dNIQB*a&=A(K{eA2yTHNF0S zie_&wbH=Sq@3t7ecA)nNrNMzX3}uxy(re#1L{I zBOR!Z^}R7aJs8+S^H7rz>7yNV$qlCWWyzE@pTz7_9`q~cfG@%EP=!fGoBw-qerky1_l5zlcjR44YBom88? zzE8;uPE@4KhJyha^ssEVK^fne-#5=w_U0hR<&)dM$D!Tc-ZJ!yFSd=L`xW$et0T#Z z|K!*;v21-K?Sp|La440p?tYCoDJ`AWYk3I2qt{&dF@2GePZYy6pot7+(8Xsop+&&^ zb*zrYlDYng(0-4JZ2NAgy#oh7+4X&&RleWF5fxEY7AT58*=jEHcgElj4c)6|W2>t$ ztiTXp2_vjaX=R&gmaU~5hktiR*W}-o%Y*rILSO|q(3)&q#xmP@3)``GNtHS`4uDV9 z6=wUTH8eL-+%@TL_4Pm-BXu@!^G3W~-}v`VtLz&eA{rFZkWgTw>2e|it!5jyf^h(3 z6P43)bMuXk0qTedL-xd-mF?-dbSqmlOl^>F(1)v|h)RV1Is2E{+`Cgy*@u)Nuhw1* zNd8#<-6Fw?F>_& zw}I;^AZNIq@&Eb`+2YO~Hx>kwMD$n(zek8}P1!+_v`N=8RtK?W5l&Kp(n}k={x5XZ z0FDO_hBKj19dgp%(lA;H+NGL>?b`@z!#tjBF z51A_j|HV68Z4iZpy36&W6Q4%*g*PJe8B707D63fL4F*bgX54}?G+8d2HZ+$eM5Ghw zPUYNuNx90UOdFS+HWlB+V4BXFi3;GUFeSiPz91K}K9Inw;}!db3T5bzC!l2;G)BL5 zYxjA6g{IQ)%I{2Zz#e(Mui6kJmj>66P2ijg9c7+S+`*Hp2;`^<%*30$%7zxSjM{Gm zlW)WK4W7{i6$bQrQ+(FT-Fe6VqY|{N3;08mQ{S>C<0P#Is+L3_sK-`)?o$N-SL`(; z1;C&@*2}kJK(7*QRrdd{bhtdE0m6&q_lyng`23iIeW9P@dmfixQ}Y>i@|r5Sv-VKo zzJU5CL9}9n1f(Bw;eZwoP2Jk+)sbHSDZrlRf_%p!S}y39ZQ_~a%fA^#LA=Z{M<$Tt zJrQk4_FiAdHODV0u(G{15ZUAWo&#)fn=P)R>F)MDiVq+=g#(L<)?0-g+=)^8n>g1! zlk&8X(+%f;kDo+lpEAwn{aP5fAMM|HD682>Edcw?e2HMF`*#!wTuEpl#Y4llBne+8 zK)B-(2Az4Y?Hl4ViuEDUFY)q=pA;TTRy6Fnnh*5Gb!erKyY(!52%R$@D^neex3b+6 z$x~A>(~%m2BSgpS)=7O8wmz9h?VtVpS7<V;t%IitL!WaD5#>7pwVWVdiERC=ozImf9%=ZT(DWMN@CJ4J-J$Tws%a? zm58V;Sh6W;P3mJ_uK~xawRr5aPfKuO{TyJ$wEI-9`tvb)_omivPWhC_NPy~8JTZp$ z$;6(S*3}UH$HHCq_VgT&=)14Me7$#VV$`5+6lW7mZQop*d^rwIWt6WkRvL$Rk?DBp zp%2wPp=0U(&y(|?2IKaq4mpy5Fx?xB7k*&B6o8HoI;LPlkKyug|HN}UFHqEMFW6*B zBmyDqIZIh?WxDrf4>8L1erF?Ic}jB-#24YUAN)7}ucS zz~2Av>)Fb?^KN@@>!RX$FT2R%L37(a;85Xd){tu z$M+x1Vz3E^UNilAhRKE_^8E@db3qXS z2q*i`(mkpu{sbVLB5)No&B85*H5kST?4Cg-;q+BeJ@{b>-z`U`U*aHs3I1!N&xnfC z7v=J7Y?=kld+aFRe-ZXne*B>gLLum%?KZw$EIY?W{od0a83}wfaJp204cLDg#(iWJ z^$E;28C-$n_~a-liAO$!+kyeh`i+VN60U09tTxxZW}paf{nfLr~a#q!(b zws#|xlgRSc^G;I0ZsilLUQBj}Wy&URSkVCBwn{FWm6FKj3-@OJl)X zRR7H)pORTXKnJEs5<5~687un>1HipblI0{l_x4Ce6?%=!;yW#0+xdA@)XLY>!{uEM zLt(_ViCHRxEABnVJ(X}j_u9Ipn>h?mBO^E^4mLlGw?5T=+vrt#J}JI4)O_q$)kF4Z z=*sG#%0(vNa3y&;4!@q6DV2lbiF(b4>qRQS( z@O&-|>KEEGEYb7XGmZeaZj}xVCPc12PTuA>RrTyE0OcXQ7VEJ*1BxdYnem+F8r8Jt zZAbt?2uZJ-{b>?KzN>0l{cLjM1OS4JQ%Kt`3?WWnCnn8@!?p822pDJ|3t0sO1|B$~ z?#x-f)!IxvvLoxe&*1-wZR`S%y-Rc-83wuhMVhOl;>0-&h(aJ$Awa<$z3d7BZ9IbG zfIs(q+&3|d9-=vs8g`!2tV8_C*p+yDjBmD{f(oq2q}e`b=?_#wh*QqxDi8u54xti@ z(I&{gseyvf+!jXo)FrZ0C=t45@t zmS>|O3oi_Y9-6aks2;g6TphT|h`nF?%|B^4iqT5fq;$cEcnN%=K|_IeWJWzIQl=9X zMzgZypUM~beY>8suBYSA{yaLrEB|dZ2vILhqSYT7?D@J+hZ!~B%5TQ+Pp^s6vAbbH z@4HVdYGdKh_Y-#bB3&@E8n;;I*Ulhzfo@!x5A4t<$W`?(nIy#o*o?%iud;dnG|4Id zG~eBgq7p1k^%=DT_k0ClW0bYnlBI3q`xu;%MR**JMhs{YA97Nh6Eqb`$UOjAZ086b za2x!%Moe`(A<5gQD3CN2V$z$K^U9S;M5`MEjYYsEguhD7ew9|YNCGhAO zvB&U^6j3j5P`@Y`vqbQdeEsMnk)*W!9NN0?ljz-%0pr)+w4kL8oj%SB-345Cn|vpU zn?RSg(su^@@_P>?e1w@tY$ZKfbUod18mue}Y~M!g(H?J7INK^xZ9EIepp+37$Vp|r zW7lwyBJjVy`jF9YXoI`3@|iwr0KnlCM3^E&fGbEJxGgH`6Yam<|3)Z?H)N-5ecPn` zVn&DmMeaZxD4YAr+MH(Ts^EZ5Qk{={@ zT~ktPf3xj+sCoA_J|t)Q<-)-!L$K;{bg)TAiOmE~7hW|Tq)oS{>HNR)0WQ9ZE-38y zKkM99dS3%&ww7xC5x(bez90Qce%*v0N7MZH{vK}g=k#S5!sF*JQ|vBKX)IqzhTze&tJyG5i; zspR?AAw*6;(ja$&VLLz>5(3nD)6oe3itOte?R(ayFoP*Q@~*j4 zEKARC;&B?LUhQ*GJ>Q^T`sDKAz<2&y>DlwTIIpWCJhyCor~lJ(lz2( z2W17Js=5($44S9za!ZAhdR`-ef%&G3jUT2VZ$F4W$M#)GKWi(I9{tD+K>QX84JEugb*!qx1#d}4*3~6xRCGc zJqVNQ38$({N4Ia_+P6t5$cDGM)Su@pKQ_nJe^9sKMr>abRGP$>y@gO4C$U?`T58Rk z@}jd|5}p#L`y*y=CRI;6uzU0Pw^=e}0)%#>vG_b zn7tkYj75C$wG#mPH9d=7vCX*Mk;Yim8Yfc?3Wrt|#gotw;dkzm|#8$t|U4uKjH%)QZMtXSc{fhFAR- z4#iu-viKjq{E4sb)M@AJVHh)CaV~r*p|t*zSGcJO-%J{}l>oBxv|Dzkm?daT7xv!kw}GfS10muV?I<9~ zfDEoX@*x$qE|jE5y4U6RZA*45G0aiM{Kyg!Lc+g|s0 zcak5B*iSw;(#ZQ8N=p&BZ930(g$@2Ugr~({7iub)DyVl%dP78EtS(KR>#iYA1+gej z=TT=(iB*x`!}d)ZQT{*n9eYssPscw;2;sl=_A4~-F#I{ue|0?5)A(^_v2F?1Ib+wA zz`6jJ>6<@Td(MxvWm{F(SN`gh@pbUfJVPL0Hs|-q9q|kdKP@59?I-_i%iPBH=Tn=2 zZ3pvB8{J&CI01s?t)9N%hu(P$A^LtN@;BRz>x3&7MGg)ByMr&-r~l?<#kAceoyYy~ zWAJyF{~V~QC*{~*$@m_V&}3)l{~HIC$o%IIl~1|F1)rAHkKNFt9jbBm>A`dS$`oh! zwGoH=f5RK>s4tdp>bLft$3uGD_OXB4Xex-T(b#HH6|SD~d|rkVHoVMReB@>;%Cl8SxBqNa;BTqjok%Z_SY zwCNKMPV@V$u(Ru0Zkrjpr)i78%B&PdCpytpL1VJZ(Y0c#Cy%va?6wQ?t%?e$AgZE^ zr78VZ>1;UkG`l%V5K(pMMNDOkYo@LMs)(p4qZLIF6^gMo8AVsM@2*~&{ho`H6nzKb z<&l-Lwdk6wGp9z(##(e(Drjbk?BG4dc^Imy%YU~WA6?Pt`I(c+v-=ZOfQ)!ILQEmF zoUYcBKB~*3r@(%b?K8QnP~JvXdwMopr)a z1M$<)xjW>)U17)VsgtSQV{0nJ@pox}X&Z;r6%llDC)HuK*kZ28UBSvy?^7K3-|x9? zWVql4ch!O!!L+|33jCYHo@Hl9Lwkw5y?g#2k9^FPf~g1iQ^sO$d`GMC9|L={q(0MHetqF!?=zsC;#uUxFR$HP3OZXE z(Ax$e&FfY;f60;@fOc}EQKnmT-C+u8ML?>F?%g32!Fy14SGjrA(}xp>a=Dm%okrBbMMw5q^g zYThS5{MhlCPNxQX3JR$F>p5E#hC=oGIPslbGs%=y-HBtq*`B`!Pde3R)z!sazJG3Z z9w$MgU3G2*VmnMJyE^Skk^LI$Vq$i?RQYOev~Rda z7P=XHJogSkp#(`F|N8CVZ!FcMnS=YB?@tAPpVW$IGa6-_zn%6hgtcPazr|Ne^HxKJ zg&^?$*{xDC2oLax5XqTw2p9ai#e&ClRnp0L|LxpI1#$TuZ%$NuTc)s_PTZio$k?>q zKBa=`r|z!$G8YG#*CI4)-gvc=ljyGgk;M6B51)+r_teRKu~43b`lxG1UqzckaJlk- zp9jkHthng0x6mm+*z-A-|Kt8fejkUjtn$@0K$#982%I6vtLY9m+T%gk|Ev#xzw2un zZ5aHQCiu0~z0R5k@Yd^n9_3%N^x(jM=8$3{k5e*EY7b*W;HBjKU+2r`|4#4zrR#av zpLf#0s4{g7LmmVX_pFhX6VLmKnLx-MBz3E9_wS-VIMOIYQoktpP%jAcEpu@aWPdT1 z`|=sDc#lk2()iJ!jRu0d7YDMOBjYdZG^S;!TT6rL5r3jg*N5j82f0g4s+_>0=l_%B zC@$S$y;mb-tpeh-TEf~B`J?hsure4Dy%a-wLHmi7|6*!9s9)e+_Y+YcSU@K@9ad<< zuf_dJFFCNMq2n9v|^N*^ENe?$KZvO6AdOyawaFKV&2 zo-XIe;TlubXp06uaSolmA;A}lLxB;KBP`4i~m9idJ@|3 zt@@SG{!L<$NsVjrkg>~+syQ;CnfTMK!|qeFv;W!n{|4)oU|cN=W$GJbY~G10?H0X# zr9Y9L^*e2O@xO4o%wOI(Wta7g7(Y<2wongxCfkWw5D5OwCh&)F2k!_==&dYp4Pa|` zsU&z*h-eBxPEMfBtD>s{3YJ@!ZHS8cn-Og7 z(jN4|41hfN)CV9W$V5H)e{+KasS%tu1SsfqyRNBe&7lwBcCzDbjdqaTbxs}Vmuj|e z@rz*_Y97%difuYWRf9(7|Jj*fg91n&WT0SnWdbMPQ&n4*!6JqedTiM5t`7}cA8O<| zYnH8+P1fc)I~bW`6@U^4Ww(@w2Z7m znkZ+E5*UZEF^QQG$(*r9gCZ%VcC=o)Q;HE?;YfT&Ufj82XTS?B?K@AZ7F<8J^Kk}swA%W%?oI%I{TZY`lYErVT?L0#W zoT)5t2DbIS;g!URGPvJ|hAcpG44AbuL65>BCnZIZiSF4$d8*9}9Xm8MPTv9#2^2mN zS2`8~QAR=p?iWYSlD;!H-fVLtM%MYjA8&A>{A@45&H$gXUj0_5ibM9V%5A5{gfjM& z24Gzmw}yl10PX4L|((5}7ibYzZ?`#{1Ax^rCeS z4UXF6rXsN+>L@TnIybEe{jxCrrY%U57$K)IDAZ{K0R4IreB!^TOnLvs>yMTxk%N2h ze=5?WGZ{q&(I9jL2^YvKEo(GQK_NjsYtZnC;E?QqlUB&p4&B!P_c164BWJIy{6rFGBjW88?$Z%-W$<; z^fG%wZN6fCC?1lKZ`d%|`pW(8ZR?+Y#6RyiT;U~^C;qxtBQ)t#KLvKsp%Mc8wqHz@wgM}92*Xd+C1SDeDY`j%z(zd zl|U_4`mxJmpS1e9mcH89W_pJ7mEeVdEP3#=shVmdo2^^qtucHLb*+V{mv!{byF`{4CZ7%v%X*g_R>W&BQIeRM*-x{ug^q8!HG*&OU8VCG zj4=IFRlA@)vo%>N$5Rs&$$yY%{P){{x4J~~tKiMQ{(r)jif@E3ZoU%iu2E6C*ea8Ca2hCf*C#HsM2@NX(Lo3l+`tgNw{1e-kpN_roDGo8;N?^ zH0@Zh2w67LhlFmQv*)E@JOlt-1So$wdOaTRuGZ#@K>SfQJPs&LHda|sU`bX5fR{ME z;ktgDq>w~J74M5*CeLGvkze$u_G8TIWMJJ;u@Vd7nvocvcbFh0U`vC`=R#13`7CSns3x73*ztN=r+be9>Tl7yRYQQWu7&$|4WqZyKhx2 z0P7TBNCasxlkLx7Ab^Bv`fncfnkefNarJ*m3=|tB5UOfkXTu&2;|OlsbW?TH{tA5i z4i|Hu8Q9i)J025XORPY zbN0@l4OMN4_4ag#MF_PKdrvoqN@sQv1JOAa( z+kaUPCtvgP{S8-F)BG?TwDSI`oYQQ55B}b6k@I}m{9o_(fA34n{k#qz=_~Vie$K~B z@;m*WkSF;%5)mWKD%d^wv2r2>~Jbx{5%V;At$&3{& zh3?4)&#+%3>HadQOffaoK%xz>Kv)!WHER5KKkwrO{8M_#rmuWIi}oY%uT!1*RBryH z@`ISwQX-I{L+pNHL*i7oRL_5qlbRG-NlTh~aH={iC?F|;u4)vk|9+{W);aP)F2xKA zYT$0wbN&aOt5=GDs*jU2)QYHQ>_VK;nW6KP&|Si}I|5MV?@J9OM1rTTMi4}+VnaG; z?7|?TmUhU@9B}EoBHxMMHCYNjS^eW1B54=WiZ-%}cX)uSj z|GI$Zex{Z2x>G zk1f~_)d|{F4hV83B$7C@Ti*(hdSS!V|9?uP3BT#BaygR8H}p{LTL=3MKx{nkS?ZL6 z>}TS1^G2yVQ34*-&mMaD$|x}B%StkzTZb9TFUM(tfRQ4A$%0;F;c!dcwf_Pf;1pj9Inh5W?6*f`996$=yAB z`+Ya>UL$ru9t7LRV$RCmhz}bCgEPWT3g?+nU?Qf=1D|JgB@gRpI(@75&o7O zuhXeX%$)eM8VkQ<$RaDEpIksg3F0Tmi8*&2ai~PvTMTZM2SOJ$P~$EtUnu+^fGo1~+Aynd1$A?04g-UScD6k~Md)ccuI@dC*v|$;=_E*~~dbv6_y2#XM z1TIKlSfZ_vh?Y7T!E?UAw9VAjIyoB2b@7yx2z^9=P>>`+1#I}jZ=?y^B<+drHX@*P zYWoOKgV(QrMJQsTtlMjo*u}?*J{GUY>&tA7K?Uh$Np0`d_UQlAAteU`*`;{J;$}5j3L?ZI5hA+ebQP7^0(XW zcRMB-{Pi`!vG*uIZlaK#2Zcvh9>xwq=(#MGt{{{~?1!%9HlO>cg!a4`j=lWi^KEL>H)4hA3F{lc5%)|V|*(yi#%i}W)&kN#39!nex1M|&!A+-+NZ z;i!L=Iu_h&V;|45c8Y-pwqtY4jnC%PX3Xqv3{FNJ4x3k099cpZF>(TH`uHJ`2x%Dt zu$-paXeiy07dJ6W_c5{#^p{p*{_T!|yNSjWe(bEZ3$>h?j-dP$T=mjiN z@EL#8$#=j`k%<8IAjzEEUa%?sd223GxLdPD^`z+Ir7DS)7O_j z{>IKu-Y~)+_2=Uuyt$<)Tp`icAr11@s;ivWac#2#IoE$%cS1k72zlUa9HP=FhNan4MWE=fe7 zb|*T(xLak@TZ|+j3E&|ZpE5nDObPVca$$wjyxCeC31WuSH*jbR&~mN*mWt$p8<(*@ z*PCxBk{%0f3ZfxhAr-5l4)Vo?vhwPY=&+&7RnI;N!rCqZ0r;2D_|Vy3?d67QxlNoK zBr|M3S8vVvg`Fidm4OL#q`*Aq?%dJcx$ezpw!OCd)qa)7AK6*=?3aGMzj(lZX2Kz} z*R-~u+4KAgdQ1hQZwqI=waffB06cH^ma77|$tyVZ$nzdR%w_}H2s+h5|5}D*qDTlA z%Pr%bfyEwSp?qI9^d^|drE4RnH6lY{f|NfGQ-NFi8D3g9|ID8G@PUBqnQ^}L{&Jp8 zw?NzLb&Or_ZP{LiGLQ+Z{nbVTFBTyh@gq7mD?w>KL<|RxhDQ0YOv~4>Qd;KBnQDG!}&=90UP@!I?cu*m2Xy9w^{8nH0K@O(j$MJsc#)p>Z4}) z(P1&xFb%m@7;f)})4vD^!uckS#=x>Xj(Fjprpe@Z$NO>LzauI>=iS+c4CB!AIQ@r{ z?lZyUX;Lbv|A*gT$5U_b|Laa!D#*m~%=Wl1?0oC0}VdjKMDVOdek(l>Qnh2Aoh9w z(}*e$)7l~j^FQx<7EFPaI+g|=^{9UW9y{%_z>F7s&O#sNXQ$7gz*a0+BA|TB!okDE zJ-aII2D6aU>CmG)#(lGfDf7`4m{jVnG5oGcIX!>$VD~9MpW|3-3Wm3Lw~w++(9CN3S``rodv;P+G#sUf zfo&qSvQxaK7-N-;2$2&OhJ>oXU&6P^FwX@r*(U3(1hJ^fN z!b~;@AF#_92&}?eYCfBdf_vPmkVvcy(ov7&+M){LfkqTbQrinkK zDVm%XS`}^l)+J85)Uk2}{?lHw-m$&wI%fK!6*7zWZY!yzxSVS=zx;kuxvg#oo)(8W zH1+&9oQUYL^RFk$AG6VxehMD}?uLkeP3tx zd@j4CJ~xp1jrZ(5uS3A+Ub#K%gn!vesk>@&ea04RT@;iMyE`$W2M6K_9^2`|)O zjA#Cal(On}Jc?i4+P;EsNW$QrQG1ia`aFTYrgY{lBsFmrSJOR}t3V-_5~mucI4 zfA93R`nsI^TBEKu|~}`I#Hg4$ZrIzxwn78?wR+iE#$9} z`w1CIJu@F5jTO8f>OxTLpRcyZ*~@)_P6G<=k`m+WnrU^HWb{ z@P99HA@1r35J`p7iTgzXw%Icc4_(S%)w_er%E;W!yifS9U!-;CK30F?y67tDRyWZb zS2C~Bt^PLot*Q=Zfqs-Ftau(b5#PbmlW~4FRpVt*;(R@ax19dxvSToeY_`pkG)zn4 zy|zK3rq~e}t#kA5%QKc7gl-amzLzf}t-eo9C>xQm&*k6Oz!qn4aZOs^$tzfD|2_7*DAO z2#L^e^MwWC9PN7TfY8S4lOy#A7pb(@cGsJV$|nB%D`v@->bz4JF#h1SjrJY#kP*QW zFt>A&i1ve})6qb6Up(a3)9xCEu?=?>c!9;MqNnlnJc;Hdn9nxNKg2g zKRdyFUE6yI2VZu@xHo4k!81R?y%URj#<@#eyt{4!v@W#U43c*c}K7z-&X3m5WyUpS20oqO!#$HhQL z2$4Sn9OIWfY+n8~ ze-zFuwN%PklVHK6ry|_6lUhm9&fwUVg)lGL{1hq>wY8zgS|Il($;UJ>;i2Diu%U36 zIs3Go;?E^ZBp!ikESI8t!;PU?Mkd>i*QT-2WvM0ozA)e)SWqbhf*~jmq-1T?tP6Ho z_1*KU?|P^Q3Ru3K5?iLy!>gMmTaa{4%tI*IZbi=^m!MT9X;&>y`Beqr;#clq;eq7K zviLGEot-FI>xRiZ%u7^Jdv{v(Ybs4U*Nvr=&krcS3T~y7b1v?#zk^I4n*G3o396m8 zaddgM^`v2eW3qPZxpt^kSPB8{tg#b79Xwl^()oM&Ih z&Q@YoKHvF`uzgrgvCpst4IU`&H=5M3g~;w`LpIm8pP5(w8!q$F?3BvK7|PtIM}k4m zHknxMJ~I~O#?{sGSn2;9+{h$_5_luaW`-!^=V6X#7}Xm*wxJ|4S{8|`vZZZwl{26) zF)K4LOdWdgsy;lakOqf!q~Pr>KmxQcvD35&R`V4w1YG&3uoZ`Zim-VFK~`fBhS_HIJxIwn&oe{^v4sYJ={(DtBk~ zhwgQ(w2nVb2M^uak+lgjsG&0-{z)f0;6kgVneZSt4(luCXX0Te)2kHqGF%Up##o)% z-jFx0A?67}waq_CK-0a}g%7Th4e0?h%S|rJ+sxeSvDEOa4aj{CH z{GQD)_GN9<5F><-$H$$^OYrB!Vak8eL(_a+54y;wm!bg>a?}v_l&_C_gr6V6q|I4# zvSCn0Rc)~nyu`So!(GM-Wo(NN$YxFfmifz%FqK$!TJn_E{B7i~FKA7BV)@*2!hb1+ zhBs~X&dnsGpl?5YOufooSbzB<_AmX!S7;%7hnmECjJ*a9bFq?~ z`)px<5i0$cU;g}m*D}FIf3NiLV2{4ERD0%A^liuDS>*eBpZ@>TaPoI}no}fL$As9$ zSRdlvuARbRQJ&J2MMfaA{4S;``roD9WtaTlxbN@hZtUJ^qAW!>DNUM_`>wpuL0STM0B|{KL7pGchj7T zkB8FqzmE$G!N2gQyg%BDk;?TuPgB_1%z9qO=l#C@$IIQ}fA^PN{`_no+wZQ4Mf_ci=bT0epN>{@Mzy?;EmrgprXlJ^mL9Yh|===wK%4 zcV?Kb4;PH-S19}4^Uf|)nsa~ZzPTR*N9ZE$j2B$BGXKlA~ zJGE@npcZp8BxG(3qx}L=rWXpD93d-EaRRmGmhw1TC3MRP~L*E{34 z|Mo-%S+DCEQhjgrVd?lC_u(#6@)s>7wBZyX_VS@T)}-?lRr4@DEk#of%lQ1vtygyg zHaC=LD1qUE@x9?bN68drVa<2{>|xg(DlRnES!<+{3$+=7>QlR-QeJo2^fO0 zeVsfO7+w#)H%9-=>+d=bAB=Rnjl-AL@49a9^!PeDAI1HdKcxR_Lf}9q-^1R#bNr9D;K437*XOWVV!Y7&>3pd| z#eUH~S(myg@ZF#_pJ*nj5??Q0uom3G~=HqQ1o zGDbKGztQ*g|L6VCVpb)KcyEhyHwEl?V!KRgQRU_SKC6aXrw`0u{t`^N+xmRc^9}J2 zLg{B^%Yb`?1w!sMFds%06@&-kKHYC9I%Hj6#RX(Mygq2M=+vjw0KEU|JL+Ch&!|&b z3>d7@i~m2HZDKrKt9$m6M?9T$HJZZ8)qt@Mj?6#s_{9eA%NxJ_*YiIQ_8gZhMj-=G zvD4AVGwPf_ZHy_`9*s2;UW<;(kpkw-E6vAQ3~`l>ub+BA`4ZePK*41&`Nxawu7XFY z_VG6=zq9!cZ!K&X*%859qQ@sh+JD1+(68g<=W@;U7!GQ|6ax*7=f!MWP)oM5@KgM< zFhUX@#ixk!85P6L=9C}}yb_=lFGogT?g&T#sQ=?}TL)rrHcp{{A`E85^Ojfjm7zXK zoYbxK`bDP6TzeS}fvUh7_AzW-^A^-jQSE%HK@(#&(wZ8;u&6zOi9r#EKWk0HBRBfk zAO{faOIxwd`q%B}m`2AhnWd6U0dnn;C!y_Bd6gOZe~*j(w15JVlqf51%_tm_1b23* zWH!VBeXQ3T8$G!~&!pHeMoV5;vi@uRorV(theRs*qrz;_lPhPp&d|v zG&n>w3I5;hVBhb*W`Gt*p&+mbZL$;nNeKf80*B=_j}PJSv5+hUISllx=wXm?xtDsti(&F+GVhr@Q%j@6-Ob|ObRi=eikb7?1%X#Y*`eF586_U+q4CY zO$|<_nEO`cSyla)4hwrM7>+z2)}7zU@Pmic z==q-4jCFn_@HPDRQE~`8tSr)u0CojEOe}Tn(=B#1p-qcnw}th08?3~c2r2Au>Ct4) zZI!F1EAoHRNkx(ercRV+Lzn-_hN~}65zBI2gd?a3kdAah!D#niev!NPpXof`79=*U ze=WrrqhhaUx_;&u)m25DN%z%`^kLh?|bsR0x4^X3$ z13o#aGZcsRsbn;l(aBIMsFb>|!#rP4@}c)sPzrtbz5}Pp@ZLXkjc;B1{r-0>t$)jY zftrY+4K6^RppUgyJXU+>KgQqD{&L(GM(UN^KPf|=CeWPeqHN9jNWb~bd+a2t(oSZ( z?S|*Hk%jWrit?9|5Y15_Bp`mY*(Uva5B;^Nf%(7BE0dz%bQmvZ6ituG!0*GFs2w5gpR#F5&~o zFYtU@So3}i{G$(PS{_vX6(iTg4{pJIqA}7D&5GX_Crc(Q#sNMYSmP2hYHf}jTlI76 z;B|5T9he^D+$a(FpZI7oI|u|u z;QW1DZZB;zn^}|MRB7wV7ai5=<|L11!CQtI1H z^+2_)^0IsXow&)_5XmKYC_p%p<}h6_ToYEkSoLc!pGK2o&^BQWK3RS2YXZZ zmnUR$8$jmM=?MibSvV}YGYg+jUPE^kfTJa$`uDn?JZ5-gPLwuA`N1_UY@SK?M?CD! z{n{I2Um*{))`?}qhXsT#ldiFV7!c&@A(1-ES^KnWG@vWt>>S~EXr5P(FWszZTqtdb ze1Qdpt=Y}siRdWw)A_pg?d5@J#F?P^*?E8zAF4jkLifU_C-0yq+T=&V=HHH&-PbbX zF9NWm)VcUaYR}~ENU71naCgiImI)z5?}4XiQ;-k<@3<)bAHoOWFX`)%ZJD^m4dx{s zpz4%t)Az@?Dj)d^k1uG1*(3O-C*TWP6MQ=?(5Hkk-Yvlm19L@_XJR{Ns~l)|HwN;2 z$2qv!DDCvh3m7{ua3F!RzO=_wz)=!!4`qzT-~kR5L!xDai?!oU-272-SJ}!}vTK+y z(Q}JL#omj^zRh+S2af5Q_D>t~#P9yE;`=BK%_=wR25v0M;M2Uq{k8e?L1$>?xVg+P z=`MML`8LqxV^HL#fVsowGMaHRgozWPs8(>tRMxUU$>HdVox2nY=>k_K zl}LrCt&ju+M3gnmEC;I2L!&)m)Yw&i@fe|L+c$!fJxfk|#Xhv85{%4R(0u6;7nLSdOS~Ltg3nSDO;wm*uv4-C! z?*-r^q?PrXs9u$+YEcv$qT~4(@Ew zjakjA(1Zs7h&K4h9pUw+ow7z2&Ys39;7LXO%T_M}jZqOp%HvP>e+DtPvA2%TF9#gm zyU6ObG>iJERhvX1&C6O*BVRURvYi5YA|$8x+H-*vp>mXP#h9TJuFy@RJ@e$s?hN@+l|@kD(+b|b zqPCLa8M&mFiLnRLmgwqih~Bv-9ay+bLN}Lnf7!sY0y{?MWwCzJuLNPGRX64hAR`0Z!Rml z5@EsOA#5FC5vJ7;ckaM}e}!JkF*~f5!W;p*+ntjRqQ!cKYR;L0Bg-PlturxQ4)G&& zWsz})BT4+epC!Kdjg5S2$0JCq6=kivHo1gu=(J>WOHg|DK%1m54`_~)&lFom(?!LA z-npG8q`?tE3NE48oQqOnmY-P(>+Oc-$kHTG7s_IsqsbU|M#<^74D^Pob#txTA8eox z%cJ=S%hkBhtixu40||nc3-OpddUhMkdVY?TsZ)t*?31y{vGeWTcb4F}6E2rL$VWa* z9GhLM)cv%e9hYv(jhbT#$!eBtO~PQh6$D{44$YVnDd+l~SmBibg<7ESw@P3W$Cl~b zu|SG4nmr z5Xdf_1Wui$wS8R|6uKzauHmzkX>lUtjJuZ~YGNoh%o@|C<7ul4k|L5w5=;vriMdus zVmD2(7>&}v!CaDU_T4cSv|0f(pMpkP$0FxFCL-c^xq*QrH+I!<;?*9lk)Wb8_RBbn z^eD*9D7_}Vl- z!dT!w6PyG&1G{S+UaQ~v?=+BeFcpsu0?2s%GOSIr-f&eE69rydN>8ziMG-t9?fX`I z=k!jW>HX5Sa@CXn*@ktoL3y3k9J7@`ni51i+5?rycq2E;4&qYTtk9tS_4$$@{95c&#Hyhev#n&(S$b+#T*Z8Pr=4Kz;e~m-Q z^nSxYk@eHd_y_oP4)uQ&$LL$ct@HyeVUeoWLWU?bcZlBmPaO|M8+JjspEIR=1NG&*vK_onQYjV1x-|X4wo#%qUvA z`JeN2X3#G=-hwsagp8rhRSPZTwooE+o{4@Pt!B5Wr1v5#H2+u}bonE8;%qi2gygDQ zRVrqO@i6psW%Psoe=Q%^OquOf{XA$4xL2JCKA6A@;fHaN^4o4kMlvR5V2BwQ7O2vN zW|NtLM>ZyBA*pbtw%}*&^uUp{Lm;1n{J2ue~kfp$`Y zT`G~3A^swQFW$}-!Xy!JjqE198FSx=!}W}a*=ye|D`zQ=zc%jqMQl>p=pz9m3?vQL zB(?!C(_Y391RS8Ttcdknh5Jqlg&_n2pv-Ly1wxxnJwgj%E+FzlDk#i|J|T&*tL!ct z&nv@qgJ-d58E5J|E)&h1wj<#-0EOa!kOQ8_vN1%G0E1!rMTmoEZbA`A<1`S#S`Y9v zQ17?^4337%_GzFY=&q~*y3tektS)Ptb_@>I7l^%1G<3OmA#J$v&o%Z)@fZ}^ap06% z!KK4)tmB#RZU0;FCj|0|6VX&!fUf8p{p%B%(4ZU64>TW&#g zShru57ZdZ<{&rx$8s0Uqim+Q~yFdK0EFa|S=4onLvvBcD@q+4`y@q!8-upLLuBSIm zkmlLDwuInzG~sK7}2@1Z>f1{5$n!D%0BeN zI06arw&|^4xbTh{j)BPj?=QIh{Ex3qWZfs^J}nJrqY7h*jEHsVu#$#wNB3Fi)P8J? zoKEJo=kEIjHSmBRSu3BnC4TLc{>fc5>Ma3;a!=l~$o(zuburKG^(NYURll4z9mh;S zV(`Yx;pM4V=ETTJ#_lQ1JUD4n|83e*!S{I1v#rV5YrffE%RskXnqQg|*YOaqH-)ZU zjOrYa_n+xW_3x6-!?;YvM*~dTBQ#oquiD=;iZE0j_TOc0^TMam%K7H289ieu<1K>) zL{LtzmxB=f+q%VX-dJ#Qq1>X?-(OIkwd>P__IvxNs{K8bc4$$F(X>)L+kFR1a`zdS zM0#Y&g#i$~f&xfrQ<@a|5%7w>Q0L>1S9(-DVn;MF*c6JOGK-3U5-P5OdHNGVl)(Dr zTmGI&_zct%X;#RL^3MfPgj+&=4MFPvN<65Vdd0M`wa=iURhz2kZfsT}czLXShlTS* zlw2hfg5X{`R<*9KIUelwyo3??T47z|(%+R&)@1ZH#Cl94ba@=-W0o+|X*lxeG=d2v z!=30;Kp*)DNhkfkqH2$fT2KK{Dj+RRLyGkZ*hRxCwfi?6^pmR3ozQk8W&UpeAHmgV z)zsG5(>Gj<-W1_J7kP{%!g3P`D2gbmf5ko?Dzm5QHF#W0$K*4v#^v`Lo%X;vx1j1@kK@lgS2cDpv zMLqUfG#-;&i7`znu|*);ahRj2E7R{l*0OOF1S%YJr;+-a3dO-CFle7N+KEa)m_w#| zqzVKX6yga0ga-;!9Ch&f!|Qt2W!=nc3K-kH=F?BXSi`oCTKXb&_Qo+luJ zp6%)wKzk8TedPb83H|Vp6`q%KR(giuTq6<_ycRs!dtwAsK+w!)e}nj~r@*)qOH&Y%G6*%q0LUDqVqr=R@8sD4dDv3v*7%(MpBbgh{2v8(F#PL}igZ zGJ6Ws(AwV|`Q(*&Qbg?p4f@FdipV4_Obx&xQT-vv2eik!8#ix1=Zh$+LFAqhr||U} zj7xk&a@fCd-~v3S7Z(dAK5>UJ^$?ASaZNN$h9iT2hQ2=sby%lA|(dj?gTwm;Yva>>%4p~8R2pw$}lWUR4MRV(uLu6tNh@de91Yl46 zf&f&CHFv~L2&E1f71E|1v{>D6h{C(RZ@g*SxXo+1suqp{@n&`ylEUk^l}O{zdDZ3DnX#NbGI|CrFw4E9-U76?@husuc1rAf+#^`BtaS`Ie85- z1epx-JzQch?)LJGLLn3uhVIA9KSEPuxGIZF0U1UnZH=_IG26^!OT1y>G%p>dk{0vA zjr|){Mx3{EjYj8Sg^m;sR99BvrK$CLebYnty+z2$EWSd$JqC%2&LkOUTU~2=F>Di> z%cusu1$F#3hiq&-!tp`~H6_V|2LF7S*{4J5Kx&8}P!n7uWq~DSc(@nKMW*6$Mnn<8 zaP!96GNjygoh9(08n$9JyJXrDbN4YD)B~teF8_pZH$P!c84#L;mSh0U(I_7u((QiT99zUoMp^|Z1J(#=|ZkC-)DJ(78yhtgEa@vx6 zD{xFm2&l(mn6_3GN>Y%bMv5uWW~{`?Q??Jdn@v^ZGgKvX2I7|ZDhODE@BHIL2#Llr zZ4m*C8j5dT3spvfv0ZB3>ux5X<{6P@rqNVQRH~)ngu&e@AWIh6vdF48vaLwCr^jwt z;4TrzBFN2?LBB{laB z9>!sgIXI_!x#2Y3K$T*uwu^y*kmHy|mSIxu9F2-jK@eEeAXE`KWnV3%;y}3MT_(dt z`N+T?3``v(F>tVrbjSijl1Ztau2zOJpk7eUx&XWyRmH3V$7R2&FOo%qagMZ5iMr8c zP5T%|Qk&BhA7v1l0mxxOrIj*J=4VWZS8kftospe&1|YSjv)9e0aS$#^Qk6AH+{COb z%w_MhYcSL9!1I$R3OG4aS zSn6754XxyUX=;S@^{o$iws@atEG63 z6jrefJB%36s4O1k3~j0i1f+z-3$F1X?5*gfEsN*|ZEyi!z8V zZ5DyH%JH?Tp-d?z2;0qSu`FhDDAIvuWo=en)e#|?(^`9MqGAjh;7Aft6_`lGl5QZ= zC?Jw_s6kK_OI*d!kXJ}w*hFISqLvQQXE1xg3wIr%B%+X;q6{2_?#LOuTP7~oCjK#+(|U}A&DA=ND+2okNPU`vql4(|ft0_hPr zpp!&6c1@$@Z=)#^q>-8q>BS8esV6a$voeAu(U5Y{HkdgCNH~i-Gbb~P1}Orb2|b4!%OM6ygtWPy{jNeX1)k}gXLvpa?;v6-2OB5^`O zF|_D6qMAlYVK>cm1S^r8U0Zm%Dp3uV=o3){!riV`xqD^$gpseOGIJ=`m30CYq z@p_~~Lg^~UXGRWKq~23XASYN^F?yWPGFy7-icq;$%XxZ52lEc19j5>HiOR31MxGS~ z3o?KjIHIu_2#LwYi%8VsmO$i+8Wj-WkVR8=#S|GLXK|pzeHEQrjjJTljU+a4L=s*l zGZZdbOhK|XndwMsW+ot#M2SDbSWKa=MWblFOP(~CJyK?Yg~B87YiNTr7DW_=u>ro} zUqbg$nM2X7H@9*%xK=1SM2)kiFnOqB;wX?w6k9=w1XQ4dT~yT)8dsb#2ND4S8D_Mm zfJMm#fhDMuJW~`50-Cg3f+Z?kWkmx*XK>V2V55gj#KFlzi$EamV1ghZK{b(F-#ED< zXed<5xyLEObcE$|4tk=xBNW!RLMcWpSf#An!J9MAj+)l%vr1@lQCXqSJC?#%b4xYK zQ*AEgfJ9YF8h^1FycX33fm0OoqRVJ-se116b8SxbWRYe>p322gm` z$~L)Q8{hqJ;`;Yl2Ks#uan$7D1ZHL_cA~@J?t=aYE=$4-1|2F>TLl`@+c= zKqi?gp{67l#MV)PBmZEc4N-T68L?`8>wCA%jP3N5*)Wgye#LQkR$RmvBY8g!-ejcY zbc6*;evDdzzm29OGo3^cQHhZSA_*`6vJ;`0d>6dZ&%qzgjTR>}wo@2bBgx5xfEGq` z2!;AHl;Z%1CJ+>vK$+TwbN_qdLKMOjCT`-G|ICnu6%!8@hzP_|Ll`zx=B38LJXDI? zf?yccPDC%hT?j#~uIH1q-i*+NQ@m|FAgaZ+4Dh%xds|YbAMqPhITUuR8M0QZI~_FF zX<@Ep_A>(veG3g^IMFoRQV?=^{iE~2xR$Rr1~E+o1_GjhyGBp1?_hzB2VbS%-gLa8SF6aOZT_6Z(6n$ zMC_9WAAn?XW~=JR?v1bHF3|4rq42W2-9L$+nSAPg7It}-Ubdgam>=px?|a;^3;2mx zeIj3^vY?`@;4-HGPw-FhXIb@MgO9*<9-FWB_&$bo-~L?;DlVT{Lw3$4`$iNG+)5&v zPr|ytfpTYX?tdfLFpVqJkvCZ<**n*_19zRvwpMuJu^Y79k5Hq=TLjZGo78)jj$NRSCADt>xZJum3?7|3FtbYDH_ zt^>Y*L$vVV;Cg$>Gu8x`>c%2DI~5s3}8$KsU#x+ zBPUD`{Lzbd%+~2RC`W@S7O`Kdv)Ww?CUH8N!;cp;_==ElI;b>gspW=qxF}1$#YApM zC>j+FUFAUy`-(!sBiD0Ed{Yn%Pd(4H4m99bQBL*ZY zB92C8P$mTGr5Ff`uhjAaM3Q~wyh0dT%BwP+=r5aTt2dchQi8)8oI@ECtx#lynjqJ4K~xVbgBTQ2o&k4k zS)mO;o!$xBk?cFbAXJI{;|WcE!>?p|^*;s%rU~C0w@YOW!ql%|vy{A4SN2t)nr>Q+ zpnx#hxGBdZGXx_}=f;~b1GNYNnqUWo__}YAcp1zyT-I>^ksfXHND(m0F#4V*yA1OS zXJW}uU%>qu{@M%;v-%P~a-H!nwTIkAI%wV7+T2HXxEp((FuyHSAZnBFE)GYnwXwU= zw`YA4e1UWXF%mqH!k>N=yyOn}e-B`QGCj_QRRZ{6L6h{d7!ml&Pi*Jtm@5AnK|m5$ z*w^E-;&%iyxVeBm^~PpCq?#j!DfVP{Wivm%Q#bz}&VbAw2UMgH6KwT*r~&P=e(eAo zC19!?H%4 zbdLy-CrX4Wbx@|Rp}Ne=Qp2itGOwAi+-RqcK>zN=(#CoU6&7foN6BJjsSR|x)>IUB zcQ_0u=qCl5xm_E&U3z4SF8bGnx!+~5!e+W?Q^dM)<}pPkgf|ZP$VJ^XH%YZ_mTd1X zh`O|>pt54{unS!+N7>vnZz}4Rh@r({Mm~CmqlAi}j5i5hM#Uzo8E@UxS zkwsBr$)46Q#waSu6;z1DSn+9M2%;h=Xu7F{RS;qdh{0~}i*ns({XdD3gjIqf3LuOW zQ58^8VusA>u?NVNKVtJYT%n;)dOy{`)~*X!BshX_AGYGMu9uRcn)>fGfl2Xk3Ar4#NI^hK9i7(_ z@WF64ySu;5WVT93qa~V{gQ@|5DLOOqh?UpzWgv6`@^l9r$Gd>W)@XmJIDw1C(~Las*Y_uF7%c-DBWms~d=X4R z9BLL2V8{>8`9b+T6Hj@InE(aM3LWNSNsYO=2tXDs1aaGk?|#L7uN@qlQHH*+$M$YT zZej(&izo;dVc}2@F8VzE1=!o$Fap6mS3j?F49p}tIm4NdzSMn4@I9Z9uH5@hgG^@s zHo?UO>^E#5uYb~E_)Fi|X9&_Q0GnpFl48}LLe-wtc31ZKogx)@A_Mx{e)SLuuB1W= zms|9usZJRVfdI-SLo#gR;OYsYkm6FD0E!mc!h9Xe-mQd1#Qc3r7muMD1L?{U6B;h2 zZ&?te83>BY5WyQ}jC2K6cAvvbOq)4cld`K9(9vg|&y>5+|M_dc58~E=NHx^-XOVB= zhhIn?$f)}tq$#eNaA9Un)0<%k5$oHFd-)Sj_K3bJo6D~|7ZA#6M+Zq&r@@`VUDNOJ zMjgI&)>d~_+{oqueJ?v>vaNtFJ9NapiR~wI1-#LUDeN+o{QPmt3uXyS?&VcbS>eY zyu=d&%|(E#YTN=l1)X2;Z} zG;aev)PqGmE*6*zagu8xgO`Dw(|T6Jv0xBNUe)-Md$aG?1L)N-gK}j(B3$}H0U!Sd z?@P3T6PkMp0jvJUfF>}MU~Dat~A+fw?Zrz6n?;F0=rxWPm<*}_CRkN>~AG}w!m&k7-#La=k zZ1NDzoSBPcJc0=chmrl8h9_BSBkruIs-i#7YLEWuSiZ;D;}K7$YN{ze@XJ2doqLZH zY;_Q+O22?`Og4x4mShmE1?0d&^E;S94yTmvBU*rhtV~NpLcR z&deU50J~48Sq392G{*`+f}JpVdJYyvdfp@=c>fh-kAUxpv2Wnjw+~y$TeS8jC)+!5 zS?_8&pYc>LM2^b9)w-LF-9yg!#`O1a(T=~2kPnJ0)W%*{aK0Wz#udxgk?+#Sa1d~OIXez(U>80cu$5llxE8O7t5-JbC z^2HCFAO{`qm{r7_nEO%6$IhlDiX;U3vVkiOu#f@YdQbp>k`&w_pV8ay) zGVb(iNE7Es*)DM)qiWj|Cu;Vs#j~dPJXHtVj*P{2BHbKguO2fbd(r8LAO)^Qw9?u_ zlh$bD=!$sUF&$Q;5+0K5>~o}?g0R;cBJh}Dc)wo8;Fv6k6houAHx%gT4a_AWc~^2$ zyDbUg21pB5ONpK@a5!0I%$46GV&2b(D69epk_M=$I{`qIVIiiMQ)GcuMVTN-18 z3QtHLqDxt|Sv};Q^bFY5*utX$D^maBR4XLuat6sNG_BJb7$Z~I;4RC@W7!@WwH6cJDVwd z5B|K(xBKZ{hj+nE%ywrCzJk^K{MOe^pQ$TvL3UGcd~x+wS!E>*Sm^9~X;-|~wYt>h z>Um^9A|fD2L!8C|5di=Z5g?KWl)%nQu7sNrMtz)$#mT){bzp#m0!Z{!Bh0vC;3QH& zefkLO%jw|WYhe2y7gFwir#Su;tDmg7{ZZ{_tyifjd3Kqqj+;s4EhGAg@Q*=+qN zCgNNVV6*UM*qH@UKD7CCW-{yVw9+-J($=yyp=}W-B>p!6)|O`rUB4gFC{X*RY_67E zzUM`|k?k=P1J}gLZ7J8uhI6LGEchsY%f0nsKrSMx*68W5r_@sX5C%HUWfdEgxeFn} zxai!K$!)`hSi2K91!N8a%W51siyMpi`wPJ|jYE2bW$$o?P!JFi0TB=o&^|P9!8{Kz zC4RA&83g)EFLjH(ynihVz>q;Ohe$&EtJyF|neZ)ZUd5|=o^u;+pR)Y~ErYJU=zw}f zMi@hb{; z;pw$X&>=#v0~Qf5#2pCeVqxPx_UfBUkX9*2z3M*VtgsM+v=vzB>N~)Ap$W-2W1w;OHEpXs^mi z(v$|H7F;OpiSHf#xL9jnJSX5W2R!b>a{YrMPAWr=RU5;(+1hrqaH#4Sc{6&I0} zSvhpX^un6g=847fsadB?GZQ=Fwl0XZ_1k*Ua6)qmGu+!N3bzhebZ$ZsL!gn7!U_{S zM4fKMS6zDs(tY6-DSYT45s??BGj$Kz4IY=9=l!26rR@LP`Mvg-sKMr;aJCF^0S?}Y z1n3>{b-%!xJS}D}#Pl>xa^4;rWK%AzPZuE>L`QG$43?uCx1X!w>#VRy#p=61bc-CPj|Z`~v$k zV)+u(4JVqGkK=W(?fkFW{u^)lS}(67OH~B1{6)X#h~Slfpg~iEX3!!1usvFeS5a^+cSNep3V(yJ6&Ab$3U&W1u3#;l z*Xh*Y+S_UlX6Dniq7+@XW(-`q=i9gD!s5xCe%WhvCU4_jzl+@T74ny5iU}YywR!4+ ztL|Dot+LImaA`uTkVHxl?LCxdx|}A0!S3H@Vw103z^~$=-4zW^9n@;91v(>if4fFW zthX)6=j0YQ$`=r9) z7cIVOqZ#pNXG|d&{Oy>yS(pvQqb*6tmT=vpyTz9?l+9{@pBJ!K}x(YXs8R^ldZ}Nv^b~ zU3dUF4{fM@pGGhHsbSH*?Vt?%oUa{W**W79*#iqdXEr{JrWsnK>4UxB45__VsqPH7oSs-`LUF zQQ&%lhQNp!dbb7}~F87Yewy*c_ysLeTtv5XoLt#6DPWPM3$k^hGg389O zi(Ke!I2*7CB#}|PG+m%RGKb|bM1j=T(S(THQ@N{}FWue^)rts&GiA}Zbu0AbFdon_ zA|R0|U}+dP%WZ4Rp2oaVu6DEvbE%F!@WjXbBPlJIy%B1r5?{KeC^qpIf4zSN6EW zKX%q5zNMPKJBN(8jruR6&n`|y_dfR+SIDO9M@7jV;_wqfsH!U#Wxch6&YLSZuAEUq zW|1G9kpIS1+Ul&vidWh=Rz+Iq& z{AX8TtcPEsy*-nbZ4n~oU!4)3QL3&p$oMdU5%`xdGEg^{YTg#FN$9%X?_Zwp_+4H% z8~txNpGmS~jpTYT(2F7}pos)PiIjTVp}BVml0nC~xZA5OcC=k>{%iJ@yFEPZul9Kq zVBp|S#LAVNV9{)2%u@pQXATrFv#BTr+q1gb8V_6iXsL=lX7bx^w4wTf`pBo{h!Q$y}Gx`od!%m>@YQ3zhOxw&6TNJf+4o+9O#D9n(B2%PJV@dOL{2zJc2h5 z1FWXIG2I(V4;D@Adrdd!XH_Dn6e4N6Nf@pIcM0-00R7ioP0j z2z6VopP;-g?ypb6%Is--%?7*`6^XiNDu@|Q zii)Q3qI@eViYyUclFB0eZv%~%NGv0_%idm>d7^VSUk^upz0q^mh88F>BG1}Fh=`!> ze$M)=sti$w_}Yk%>z<;+40$#NszAdciVAbs7xr{qVTA-yML`h&5EFm|Kvf_F)RjYL z8(MahCaM}|R1@Y>{-zc|Y2gGSG*_^Vyq7yMc8sZRmj45uKPqP64w<-Bmof- z5dmQ6Vf}vd#lE5JTAijghO8=4Q}<~*YjUmBe29bx5VM6?sGto1goFWovr$f#W)WIw zJWi+tO}BIe0FWA{hUf=;4{W33O{X&8XW#9(?9_2Bv)My7kg) zhN;#)HJ0xvYGL1DDjh}g8+o|f4XCNnX=Wm2w=$}EuN2)g8aqg`G2MdHxP$vd6xhtd zVV{e8Ej0r2FO9uLc{b(VO;mhqcoO5(x4TvC?W!9Pn*cJGsW>LHlV#9-f__5Q@TElL zAl2h5$g~rnAhi{>D2Nnv$lLQvcK#OM0B zW%W?>V#c%@K^_Q_&97>~Ko)&4g-e5x-)mLy6y>*T)Zj4da(dA%Rd?Bu*PuP|Srp)S zQa`{Y_?%$|A|4zZKw+SP5IP?O!Vt{hWH13{EGM1t>DflLk5@PKV~(+cl??Aywqc?` z@kr4h;vDTFvv{OWn+lP&tV^pDDcVjP%!K$~Z7=det))6WtgXq_t;iIk+z2M=ZR`{tqjOQ_5^dDJu=G z(MP4~{7!TcA_@p{+j|WEF(E2`!{wC(eWIh7rHtm|mhq!|qla%&)beqcUy(znlc$`l z`mp%TtN|dMxNg-k_U|Jjhne>Gav`M{Vk=@-1v0Wo9a;(tK+#*I>GO-HmACwF9~7*z z99rq1Is#N}l4FeeG|V_JrBwJm;vko*YjZEUxre-Q)6tEZ&W*3)({55--Ti%7Vg>|~ z2_%q6Jdzvc^+W~|vXybRV&_*ZnPsO(080W7fA(OzZf%6CH}F12Jd3~sp2yGsr?WnE$VaJ)Bvs?3Ud z27na%H;8B4pCulFj~Ttdv{f_xU%KIgJFb;gTQ})e&fmW@73Pb?HKRGYTnKN52q!B7 zfldxhtfMvGOPg8YSHdBt)t=Mxmt!-0#m7)~+ zscnaj>Ct^m{*AP3v+uEmP`v3JL?IV4^csP$oTOfUI%yPc!SQ+r+URb5KsSp+B} zX7<28v<_m?w5q!EPd$&-(VF+-fuq|QBVv(IPTdLP8P-bcViqAX=){5BS+HcC&j{?- z|FX5kGx6)$gld2`d=J})P~ritd;zfaV}l?%;*&vDH2aHG66;E&FPIln?s~@n%Nu~8 z3h^_sm0*o2esO@}iw~Uw3yQ8x6uX;@8}||4mpbtLfeecYf`*SIn3Gyp#)TcO=ik!* zp7`4>_%E_TX}ZBO?4P^m^Qe=M%Y%WN?l{Y_fMkuB11t+*<3;2-< z);GcpEhz3+JCaenp_bldP>D07Il2562S3Ms3^^%Vj=HPjUZz*NpzpeH>n(Tc%`GN7adH5&3 zt;$uGEAirjhumaT)YX#kSc|fNwZ1aXZF45qjaFxqHx7xoYUXmV@~n6KmPr_Ql;Kv)*|e7>Ykn zWmQpF_gbH+^%-Wf?;qV^<$F$#8W-WThyEB}Dd2ouiTcjrG$J$U(ui}Au7)2|g2n1n zs(e#8FD1~8x8=0gWp#MEFc~EK-}v2*{`qG^{2yguhxC2@{c5fkj+)MC%jWM4?!Qry<1 zcr+c>g-P%2^+xCj686Mz?%T0)f6)Y+CSkbD&VJR+*8UCe;;Ru{=Gn$gBLMe=B191x z5`&=z9gJ%G-pl`=<93lUMjxNUaUbDAS$O?NT^&=CJHo!@sf3q0(QfuO@zWgLynR$- z>mIH3J$vX|*(FnidL|58+hNiZ$c!f(q#181{Q~-xT02eh3<)U#N&pZb(Ry&NY{Qr) zEpAb?=_%o`7^&4(?{5aTFJBsaJzaQfiadKLi{Q7cYQ;wgSileuC}S!q*7(w}Y@?KX zD+G?r_^tQ`?nmMxsGn8V|m+#w7RH^@8xEL-mKxej@zf6TCYj26Ec(B{aNVPnaDB%oar* zPepg43?x#DHA21V;Mnp=2chJ?^F;aC9SDoq{e}bfm6^BMJ)Xzr$Z`>p`65p;Ay`B3 z2`L_TD1Y}(&orupqJbeG5(L6Pgh)X8-?ciFAaF*jc38nWf0ZkQm70EBU$p)w*FIv9 zJTc8>;{#0;*vc10e$7rF6)Vk3JD*1ShYQ2e{kgBLp8NY6-?eNU%$=HVMEQok&25NL zx##=db1|%4e(h2MEZKPZKuIO?gs+qXI7EN6ZjO{K{I9;gsdta!pdI?!=bC~Fhfsd} zT~6r2Xjn6zuhu{e-c4k0)du$U0leHGC?kDl1_MW-mQIXz2pj5<`b1mhZqV=m1pz`@ zXh1*&@OOs@1QLV=RN(*wdIky%{KIysDrG8G8=A59ZD?ys?~D)xZ2R(+!=<0B?IK7HmHEMf(19;{iaX}h21`qVy zjfI+U4dAi!yemeV!0@rl60}@?zVhA zS=1oKj6@r3;h~R%q?u^vGwRm>DkQ+=kf34MO3H6G$B{o?N2oHWyTvHU0^@PZM+|6! zdv&@B&af&fl}ovhdcqniKl+x4$#k@S%#%M<6wkJ*pYxu0K+c3X=V zcG{ilCkd_BKb@Er{YDy>CA+(o2nZWZ6{9h;FYegmq??+lY!p2)_1+@ZF_2QA*Vn4M z{nQ`;?EOz?>h_&qRn=EWg98Fi006@fIOB+RMg9%}u#+GhWhV-8+{=N4pqxJRf91^= zf||+881$@p;#0ru?``t_K^s5Og*6{?Zqbe5e{&SXxPRQv>iYhV+?7@>JHOKTDNrV0 zD;|u*^Ns@^I+;?B`22?dMZPf#9i9dPZPwMJ{ePmep-d9D|9KtEs9+mw#(#{z$flcE zzFl>uc7-C}b=v|@NW(TI^OiI@QN91KA(6&P(n0($oeE-6H2>oElK&hY4O*Sty=+`W54e67&-dcLWoy?{@K|`qwbkYSyCYHy z?r;15hb#&w-dZXr>b5~*%?VKZW?g2Z__nyX)>nOJ|mwGJw9@t z-O=i=;lGxL=_jT9yM+Iqr4-ivZnwo{4EUBqvSt@>@3A_TP1Bn*dCqS6l`0?G@@e8w z@(!YDFW2KyFq!9P;N^d1{{GuW1(Q+O@_AxSonAIFRtPX+oCbz@-4y6?pC*NZs_v|l zHv_hXRQ2gMIJ*t&>8pwqLINNS!wAHeTWOw&(}o}bia}(w&@Dg<;H-XTR}Yv@-f&ke zhyQ7HKl3sBeZ~AAfs`_U&PpUMNqfWV{mQs+U!zUaa5A~4%kQQ;g5(k|9$>R9hQ7q{ zd0k82GcVWaRY*A|fWe67Y(|5R#_fS+v_{f{`lry7TcgUj;vG# zZ7W`sAN;z>$j{en{Fji=K+e9Q2Q=hBL=z4=P(K|=f6(DP7m)dgAT?uOJ&^ov^D0I@ z9`hp=7;(M-LD_wUTY0Qd|LZ8NA~DTrp9WKx!1sSY>3;V{9fzUvOaj2j&nH9cB0zYh zUZGAealGsop8JDdREFn(a}L|Lq-y86?Uh%B#p#GC+{?9Baa1q@5C_28MEuT9$KY-=nX+qTgo zoUQ_;3d3C=Xvt8aD#Zdmxe!&F!bE4ZaZ^xubsb^FJX;U#ha$soz#7aZb{!{LxmJ~g+i&Yk`a2X(FPJGM)5 z=~H5XJ8SM}XUo2w?yGFnFZrl^b*&ZjQmeYhe$3UqJVl;&);nHrSnjE-cjVizhQF9y zVJX{ygG#45HLPfAI{xo9c5gCpXM#=?qjSSUuz>)>{!8)Guee}8Uj6lYKWo1AMpb(V z#iCm>SV9Q<6eP+H?dfS`XQv`-gyW86*SqI>7~obv*MI)d!pvsKZ8D?FV$9=+A}1Vl zuaH;bc9=i`F$FLKqnkHT>8R{*8^k*+umDm(t-l9=Kr$Pk__PA}sr%({PlY`?OHsXc zvjJe4R~x9N(77V{FJ(X>-{Dm9-CNb6KmK)P=xsq#-UGpe=O)gEjp6@K)o_1}pPw;W zxEy0CNsdR*YL4)Q&e9eTT+iONVa||BHKlXuDK~U-DR|0q%Gd&v-u4Fk3q}ozIlxYCxFg0nH`Zq>JNRK z?;XVY=$7OM7XRswee4(L<}MXOkBpg{2gIVF62RaUPHjQyx*mGk0yuI5erzql7Am4kCGD@UDA55~q2jWSPzqR*y5jUW;>sI_ucETqwh(0afw7(Is(frgz z5nbRZXIkrl93@bVo20V88gA_%u!~`~%ByAl9@PD1s2D6dT=ms%Ox2C-v19+KTV1&& z@7Dy`w_2*Yy9j~qa2^rkZ?K_bO_lxIgsMM4zM^|cfqIOBSI>UAbD>}~N1e^sPb>qR z&}Ho3hxf%IOJrAEz$(`DK}V?fTbGW>*sv)NhmZdo+7B0`ED#z!Fg* z9hrdeH%!nbdf1e}ZRT!Zo871&Y<>$h;bf}hQXsPE%2uufYhTZm~MzF@7hVyHOx+B`O(ha2MFHrOdbLS zVxap~0#G;lluaL3ot=Fq5DyA=Vb3G8WVZ*u5({ge!|vzYi^V4s0O|IT_jurOPd30X zr~@DB)f!hy^cUEh_qmgF_xf*tS;IF=?SIwSQ|NoRoTwTN^jeRFdbz%ViXI53$~*h6 z?qvRT2wdz< ziAony?ENwZQ`Gx-XN>^`(%CS1u}cyGSn?&HIfTQD*{+VCgQJB>2HLLS)d@2AKxDtfO)X2*Tk1H{+f5xBL}c5g)J zL=yl<9s0|<(co?x=DQ)B$7!7^uDTtKoUqiRdVMsuc?`_ zqj}e$@fr1V9$)ui&Nq0yQUeSs9m)J)0 z56i@#_^EWnYxSydy^-eVSy&%-$zla|@($mK)SJKZs4=mzBsMhr8ms#-gTP-hn61{l0sm zYJ^!)fv{~J1I9k;C8d^Zm>jt8Ih!d5fQA8?fQx!ww!0U7yL{53wbL`{D^enJ-0L30 z;O6$e>iH-xvr5d$IqKlTALSnZ^!LmJ0m@iDH)`O(zs(Oc^Im2UJXHt=(*rB;W4=Ln zqt@^w&7e1cUDB&j{$Z_Vi4;g0^V&xIZ?;(7>f#Aqa z0}ixUuOt~ecE)vbDQdJc2A*b&Ra4o6YUJ7!AN0*n5&qtEN zM1t&)W)YI22Io&VY(qc32|bf0mV461@Kc zm%WoH4^N>lAFJ<^mx42Wu(dtLWM_v}hu2ArZ)tl!IUerLS|ybbhh$zl*A)L#s?`@7 zeKxenI4BOiBff{Z`yU}sVU`s_|I({v%eHM~v5kO)VteFd^lwdv#YcH|cCR)9D+0(~ zRo7FRMb{5G55rMDn+*!MowYpWetgxZ3_>C>bViZNMGo7G%4I1XYnyoGnU^Qua;`+< zrNpcG(SFD~p8qOf)?bw(jLyii#ME$trVfLRsF8Y#NHGrk_FVU^VgNz8|AKK&g^$Dd zIwIkPvI&6#G!bH1)$f=-DscSYKFC?Vu5+fLV`MEkeLb#pdJ1Yeb~Z&^d3!@njKzGs z@L>cH2rwX$AV?wPEkr~~nC+aCPn!Km5^AXExXUDsgqy$Z>~koUyEOE+)^|2R|bkS%Fl>!Vn zTZ@D7`Tnnn_-DvnEAo6aIt}iB*n5)hn?7?|Rz%HPZeC(h98w}-L{C1}qe+hrF#G9I zC*&JPdlkwFAP8*S+m_!Hz?F0{F}#%QX%WvDbsXC8NT5`e;Z;GOs*1(%)OP;<<}1pR z2=^`^jJ=_-P$BmODA*}O!zns(PB?b~XSn7gD#J$egU;*oS+<{w^8Zg1x8vgZH_mVw zG;?e{D8N@1m5=`vhm4zRQSpZg02*-%_6P_QUZ!CENauPK>IbGD-@J?MS7iN;`sBl^ znB1-38ETWDk(ysyB2FBtKgl&4Qp^;oZCH!3B$%3P{$Ha=jOt8P3>uW*9pqkE-OKM{ zgl9udxjocp9U1YX4oqjvlRHEvv4sZlar2|k_|H9-Ixzn_?9aM9w_VW{2tas!NBDd` z*E!p(`5ePmLTe=WUp|M!b2?5j=siAA?_Lha-+iZVpUA&M5Y~5ddHOw#)O2U|{dywH z#8?&55Fx}kx`W_m`UQn&#%#fOkz__7#YUd%|C0F-4(PhQOC}>#|H@qUnf?FfbbNq= z0wRbu@9{VP@^1aY2JA!ezwy1bdxLB}V5RUH1V7?2yj?dFE|X!G6#tas|MKP#md+2; znKple|D~Vx-F9F6e(h!x*qiFOoK=~&(V1jD^3y!U0ASGrhP{3twtU`=rv%|tPFqD0 zB4v%@4(q#m(=A^T|I_!JW&#WUvU`qeFPXg39ac$gTSsoczdy<8$dDsAAX1Ikon$f z>(4~-fc=lSgn0-rTf)KYU!0l!Yfi??@T{Vd6&=sm_>8<-W`8nNMHHPCEA8k}h^)f` zp#IG~(qRRP22`RXU#Z}B*bIkwpKkNUPJx=JcTCdYN#Nr7+Fzq=78{4vV$J=(EA%hg zWnZ3_EIXv)H0Z8c_8BBpU@+g(h@z;BIeXhVF9Xq44Fe79t(~ct=j&o0X`PyGF`=G^ zQsyEip6l?j{%c8df?;(OQ8K9QbQB$jwZ;A}Fbz-JJG8G>=A?aMG-k-1X_ss(V4wr| z5sl#&Ug&zS+Pf;LC^17xFOGtNKiqJ2$UOy*A)h7CATfu|WI-fJTG=}hPuWlxMSX0b z;GfY-^)2REp)agr0XDq;+bb?I7>e{#+*i1F^GI6S633tGZg|T>KOYj0^P&Hp)^%4{Y4V=CHec&qOe#Z6t0U`W zA^Bz*<{y4xtU#!WkLcIt>g>8Lp33gps9@nC_gxD%h(LbALCD-6EWl-$4W6xbU!qYu zByS0?+c8joC2SBH)(R8mEmkS==M8ZVA%#ljmNfa}nnQRPv&@y~0&?ORegbw_O&LpZO1kHZ8>xzbkC}XL8#=$}p!u7D`}%C9ws7 z3TcA4C8K$p(Kw`6?Byg}g%tFHziR(;Wr6>u7yE|~G zqFIH#;z?(P^?PzII2arvA|x0BJ(&m-4^xJmQ;3%!s1pRcvcrqZGa2OPjNF&clI@V9 z%A4c1#j3t{cAFlB*x_bgi}7iXkfsJpWs$!3@_lR9ghSeoMbMBvS9z@7^SF5TW_g{x zQ?oWsNCX%HAVJR3(qQBQMVfhbn1Gv3bWi8xD#vnAm7F%IGEfv^n-j_i{}%;cAHt!{ z((t`@r$+qY_TJsLcA|0h$79G(w4?Uwl?4gNG9%jLbpSi2_daSM9@1-O0V@ev=WD%i zL4ewL>mHSuxGkL57v3N5COaI?$7MCdXA8TKmzy1AOYGz00XA<1jL+~%v9|~ z-4R-jg9%p-b#77nv?_2SzkyWe{^(CPA-%pr|Ns2|}_BA(v@x)hUXzAl_ntGW2!S~30 zJ5{t<4WJa2xaR~luR7G<$+N-syOWB0hp^-G_}Zq{|0L~y<>qO>cxZi#@KgHJ@%)7} zD?a1zJYGC{9jV+NTeSN=>-(=|+v?9)!1#!L4wn7jy538OUhCRob;xslH4O-={rgio z2V|RB6i`EPN`vZ}9m7Qth%D*fjF>?gKMv7PMQ9+41lqDxJcTR-NGv+;+MYitp7$w* z6)PobLkzxx6mT=)vly_gv{7p^``T{Y|31wO zFg}62E98FWTux*lggo6V;w+3EHDXH)ej{MUJ1LVNV`&#-zIVFNEq3b}7wzt2v& zIH5d3d`K{&KoK1|K&N1cYvxe&*rp;guEq>8f-zPkdTZHYu=7br(QcnHsrujYz7MCJ zhBx1mYHRE{`y9MK5B$3gCZLQ&MHT^m2R;2ngouqqKo>d^Jph8y9(B{p3Q00BwGTO=~E1O~U_G#DE3SE*i$J)-*+kj9aJTCQ<;IA(RlYiqiMo z_0s?a9q9Lh2L@n<^Kd{4lgM_~_q#80A>Hq|6GfTsrcz_cm*90*ayzakBer?o>^VTy z9(z^on)gq8PI+Kn_ZNqZE0?H{I${9*&w5jz^j#Di?TK@o}nE-Mb^7XxwJ?(JG>NqGtn)6C%^cZ!R|S|l9LkX!7P7+oDDLxtfQ3vJE}w6}9w-FeGdR&~(vh_KkVWWk=hW(7y& z)+l1ZU6a?7ZX<=^3xc5Xu_GrmPU6&eU&C`kV_~*bP+&;+MH2!^1O2=&4>xrw0$@BG8um_GTs3mu5_?bQ zwZ)+uBZtF%-04)Md);%WTf4E#Z@tni-Oa5(;)qA2$>^RmkioU;ak28b|6SyFKWWR5 z@B8k*>Jm+sAI6?hGGKY$?DZacn($aj?|mJCFpvgn`Oj0|`fO%-(V07x=3eUu+I?U8 zzL)kn|7qwyf1Tj3>*#cRi+@A?cn`v-H&klCY!DoQQ7)m8Rhl@{N~ivoqwl`1&nKz9 zJ#1EHS6?9uQXQ*#lsx5|&(Ao*L`cl0Ts<>G2*>T_Tl`y)W>-uy0DtW!lnexkU{~Wc z+h1kZ0~`yw&<&e(E+`P7H*NUPiUA_uqUqk`9!i3o%_sz~# zB4D5Cg&qo3`zgu&%}OL3<60#njM9zxIKS|(8KE;@k>H(F%V8@dTM+YoOCIIA!2l1_ z)AhAlnJxvv%q}NUGGw|~3phdAi7dK>00SQ;cIWx?t5e2dkzjB?KFST1Fg}BSUyksT zyDC@Ff`qvOfkqjxoH2h)=vw^|kTrxSy=FqqmPdJI&-cJiqYV|f_;5@D3qmelHP`+-4h{C z$&29s)7hyeX+t|-3R?|@cwY?y@WDomxeojGZQ8Sn^KGxHeHY=?w6eeq>@2ov&9$$r z^6|(25}fcrU;oqp1o>#bqhb%&q%y?~`Vc(I+HuR*^=MOBw!7c&v<$5p>)(t-7>c@v zdUuZ=>crY(c-W|@O#+-gZ|QC&rtRQ2>sspk3DluWTII%>4BOfQ{EP)~*hz`$0cVU92eH$n5m=S)F@q+dGJ>&fB_wVg8NF6-~O;BACx|Eo$qk`oEtw ze#+PEW!%RA-SFL=SktWPMDZ$TL{|YS{xW9Uey>WZHi}l}Sn53tA?!aaL zC2pH@owZt7CZw&JDNb+zARO(9>Z#8BKA^Er3r#H>ZnTC_VnB}bWz%-qbGXeHoRKui z)Nwq|lmU*i`_6Rc1gn}8R4aZjS6rOJ9vJPHpns}Asv-CKd}27dt8SJ<>JtwYr-68g zbPrp;;yQBu){H*_t#TGZa|?I3?E*a1hvO>p6)=P#A@tCz(?V{n+-DuQ)ta0q5UlAU zZ<&LqFP;tr-~TYLE)<`}sKrW)E{RSaqg{bzr7!fdTMSBIPV9XayGrc8-<}(8<<%}H zKb3grxxcUC@7xZ$r$`P&-3~6sG$W)m1_t1^Fyzk_bC8Qb-IL+9wcZcs-wM4HIZg}| z5B)6mjPRaP9bn|6`uP-Is?qQJV;DAUnlY9O6h%=zZ(C*}2nex;#hZ@Kn%S4$_INv| zC4ZjWTlu>;0H}fpC!Ik+kO?E3Zq3|wT-Hs^MV}!*_53dx?1~-rwqQ9}uwqHQ&nCcp zf&6r|dNjU)0TKayvj0cHgec(OHwS^Hq~c8L0!<06GEvd=Y^0BiSfCJh`UTUsK6O*Y z!C64|>673Q6NKRv30z(la&=Z)FBLP~7;MhikLQR(K=KuOn|#U7xV1cDF{wcTsHFwp zSyW^4B_fesbwKWO^WL773~yRTe6{Is9U?2bM}w?Cd$B62jeJp<7^bE0L3l*M4sGz?K$k4)!S>u|;P*G#zs6dc?|4N4* zF^4f_$qs|@P^9=iO6h%-mN?|?GhHKRmD+5FClM-}O~oQ4E2VVkBE&AWLALHLmo^wy zM_V-xc7-xY0Eir-p700@vtjmfv6!rt7#dM|Y;M=R{LiPwO1hzR00_bL@JfB zWd1=ht`sR?(uIaVmsj$hIDrks7S~9%>&V;Cw{Fu;s1}x8t7$w>EtYe>dX*qQ-*(|s zuDyc%*G}0oTL$7>z;v^B;C`#t&uRLZAHuF8aYS0YO)YRcxO(zI69LalPhdE$^ zCUzMUIWYm2-F_bY?zDhL8REURU|Ee;tE~&xM1c9KrQ7vNY*BF-w}(lNbI)z1oDa%- zJc`xhd}P4GMBZs#6L7}2 zfTn%9z05DTbu?T&PZb#JLsNC_EiG+A_}e>QmOFYaKW;mtr51J+D~c&`xp{WJt?&Q^ z7EwEn4CW?b=O^HyOBiG9==+HCWC{<-3^6USN`d|biv&Xzrej%0phWAl;&DvnxE;(~r4A$~-h{eH& z^ijSA2(xtQ+4#@sb?nN`F6IJ~(~9rcM%oM65RHb+z2$mG7P9Cv>NG3B(dd2}O7)n$N`Uq48RZ$K87hS=k~ct=hRuOzgz1`Y z9F@`UjZA^&k1TJfWBEC}_l0^E<#lfvT1MP_unm<>6f^m@Us++X`N)ATs%oa2+rTPB zxtPK6uu6`Qip7yu!s5XZx1;U$e9@3R(G8&y9amzV&pOmkR&2O{u9 zBnH&Gb6z!*UD)UIlGs;VeG>X`{JFp3Q+402@r8#qy(TLNvfm{Wdq=lhB&+9L(&|@Y zCC%v_Uv_mHlXP9iDvtbDqgyk+Uq&QZJ2uroFAD*mVzxG0hN_}y7;|-nttnx8P%Dpy z+&5LT%iUa-i`aGtZsK0r3YYmx0+k6s?Ql(BMVaeNylvghn~Mu0C3VpR7(lHj?ddgI zDFb5IvAbV#t&?}G9SakW!b?irxWq-`5LHe0gdwp2!Ms869ih*ig<&iTNDOg)}#eH3UsX2 zTuukoFoLxAC#E2`lgAFJUbXtxT9{g|CM5DySq5+$!^Xf+Ui0Uf!-HPpAdzX(B}S>7 z$~~k65!>iM{JB%e*BAHenpAUobnI~sjO_VQOna7^k9sexVZR5P`1Jq zz{bMrxTEz%JnOly&fARJulc=)f6ZDnkT9=|fTS-(6w%lF`FU39+|!p#n!6^-OcyDT z!vTO&Lj)Kr?we5a{AA)&Wgt4EPO2mWX%G(Yd6J7Ny~Ck!97=rgGtnv*(r-) z#$+jP_YW(LHwJVd%wRBQrkQrgBn;+&_L5%xQ?R( zG^B%~G6as$ma@&NB#Q{mrMlN7jVgJ&Sy~qrKRGKfx$Y?n(wyUt>*4yJru}#G^>h61 zQguAtP*mXHizAL4q5;9Y5yQ1S>nQRDLQrJ@D25LViivf7f8FcwD%$X!@q1iB@X!~( z8I?rUOqZaCs)P>26NW*O!YmlaQR%U-N+vr9AY*64Z5ZlS|vtFVMH#p>s26~8-I_}N(g`!Kd3F)_uJGs1vp@JO|GLee@k+2b;~oMz zwi?W><)_8dWrVen@56}qoNq96e;1&8iAGo-pMwI|Kds0+aWkL&<;|1qaWcAAuYURd z)jiW5@DF?EP+W^&7fu`#$HZM*cZp8;aVol^mBJj#!HbpoZ-b`6ds@NWeyAg9#X6Fg2+% zv@n!aW$G|uf0HUK*15lJatVYK6ersxp4BnuHFfftclJ{%YCn0E4jN>*Fa92r&RoRV zPLCEZ2h3eutlPAIKll4jE8=^A>AN2C_>RxJ8R{}m*wDvvqWVr;c9Fsc!}_UFxvt+) z`t#^q=P^t(L-=~L@DRZKZUvbpAb0#;^G`QxMnBV||GtZ2A8gO%>iK<2AU`p`drBvL z`nbn?PT9fOqr*xYxW{(EwaX*j9;}GApd96tk$(fkJj5gwW>2Jdt6~KFR*B;zG)mB*bFz%{yK$1Xpjg{V)E2u@td`F^yXvm7rPw_cSMDY&l!q;wtxKt= zbKP!@Y*9aLu~A}cQ{y{~tV79rY#2Wft5(JRjOP_wqIZ1!io`)XQx9r!5KHsD$0w!B zNJyN_p>uV(wDH^vqj#ywVXTTH*LGJB*tKEWJw7yGv#qr^O4U>Rl8(uF+?n?xfB8Nb?sxyn!AGoxt6Yb?75#q z(BThed%w$2=*STG#0|e84`s>y&w}847{VQwqm;|M^ds29J=AL8-` z>`vH;L>>!_ufJ*t0_K0aZvT9QGtG6kQQ<{PCF&U zF9;|C1flYslF;c|tWbz|2WG?hm|y4YE21x*rnIPZR{G3fTo+kRSMY6dAUg9t zVCEd68K>%)BCrye)r6$30IyKgv(a~M#ibS!16?mv@yR2PsVxA~R1RUTA=#wTbM|bg z2R~=3bvnfh)+&}2crdDGl;i_~2Gr#Rg>e?U>!v+^Ctq$W&)etZd64fVDr}Tp<~70o z6*}1NBcpWJj>CPoT8BGfU0@DV_$29wi3(nB-z_0+jDcw2ia|^li3KW(l&Wa)R6|{e zonn$3S(WS@2m-5HI1AmIQ^y+}U!GNvAdhrN6Eb#a2NlIH2i3^YD7q^Is))W?4jFdL zUaSva1OamzzT4xO;b~}&k^DiYMQTF8vX<2J20h!r^82p65{8ixg3Ss}S1O*zw%G zjt?7D_I$l}d-9V9rt*u)1m-Rw(U9qtX=F#|5B!uo)8Ae9y%g$BnwxISH%!1S8J!)c zSuwmxZo#}0DCCK{FEW(pUR;Z()e9@Br_;j@u|ijUTH5>YB8jX_li;O7_#PD(nU^HN z1}I;6x6ywtZl$hob3;7XCy?FIJ}4_{){aB6A;6A4_yYtfaPTP z|H|jdTdr2{h5_Aa-%}^29aI>Mr1t|6)zu*eF@*=YdFgB((1y4VIGGk=leASa@ZTK6 z@Nh@<4my;~_J};yk>GWUq3U`*!@1pfT&y4=_!IYIveQo&c0SnOeTZ;UA?QFG{`|yI zM=5w5*vmk20Mz4vBE;jGmk%_UVh+ZbafVn@1+Rij zj(Jl*N@!mFm$Y02%@&AgG%xY5CZ2hV`8>yhhwaN`!ek+uiM6ti#${@ELZd%PNJp*= z3&M(;L{b_foWibDXdh$Y+<1XbZGbkeD4ThoBVKfUKAW}ttQU^(|4i{(#-_3nL` zzD6xN2k^vc(OReq4JQ!PlA!4=wO-f~xOqRQTy+X<}O!4KY|in71J~ff>Zh z@<>x9oG}H|J8i&FEl%ht2MU3fvA}3&c4*!iUwyFwUCnKc`;dY_6{adgNp4Kg|3pxP zL11g(b*bZiK?^j*PxNx+ObjL9MQUC|4cb9neW_MI>};AqQKGa+#67=7rhqDKjx08# zX_Xr+HJS@gWsT|zv9RLrou=x5{``(w-eZSlV3H+yAKDa-eT5At@qg2;hZ^9l(r-wL z=@yRzaW(i=1%|mMUf585Eeop&&au_kD%lgr){nTvc4J|%U7iWC%fIh!@l34nsfk`;`5iOTXQBT+M9B`IMse)T7M5i_f8(S?3v{kNvJ= ztNB`((C^Z*PQ{#8UvbXwJbv$Iy5sp1AoC3_G@5(PK`)rCTM|(ny}^%UqkBZfJkPvS z_$$p_FI&Nn4tn~Lz6>d2?kkv3^GFoH5?F6M#B~Ihi9ipNFgGH!NldwmOtvKu(=+na z-bS%wpui2d{%Lp2aZA;p8w>N&LbBgtt zEA+It_^HXiz^1C}*Z&z<2!VkBk_aTjXi;Q9pd+{;jKudogrqw(RoO+E9WtW(J*tl& zf_?#a?{k^rMTM`tx@l8yd$_nW2>r1lkY+I(wjk-HP9gliCZc#@e8BXYZ_P`aS|ovdPY`L=PdKqv93svF=sjvS!(wd!MXxg0-0eepd&#q za~~Rf5wCX)GT*pc&$^&7y?3Lu%q!mjhZ&qjxi+^ zJ)LfOK`N+~U_#TaMun;w=MhE`%YHvG;3(%u#nuXSq>egzGD7UZY_$QE7p4gXMoSvW zN<8D~Qff-%rCPPu-LjolEaE)FEpR%=o&YP(g}NwtN^q$y$7BZh0yS3>z&uNJj)BV`<2=Hmt82>nt$qaaBH!2QIt?7)s= z3*Y0TfvA>YQE)hjhodP#1~P(}D6t)t{5%ERd(ml#*aafAnCK+f)%&xt&w-%^5u1mjmyZWDEr`6fei7svTY9pcdG>$ z)T>pMLbp=oOGKI(hb;2CyyRO5v3rhO*3(_0pfWLcgAN3i1{kOsO-Cs%T)=J{bPx@$ z&akqI^DOffCrmT?LsqMR=DUwI+>xb?N*gV6DRPNaJJd{Z7*fSuNIqbjbhO_hLm5yv zBok^~`(=HFt|>}l@Z`G78R2NJvKD&v8RuPz;)_w{J*9aPCaQJ4^bk2Pg6PO;9roT5&>koeo?|u+$r6j!czm+> zqW@hQ@;PrEx!v06?P;PiNF0mh>@($KKn+b)Gt7Cl4bEO~%Gz)AW-|;e5IceeBtUDP zl)C04-lVtGSrxDQ2a|PS1K3d;jY|3Gbu9tklqACId?a*BF{w~NihU&Er z^*PigMgABWeH-~t_EG(hn!gwh((qfZNSzPbsF?|(qdle+t{)J(%6`M;fBtYev``9#u}y8&kAO%Vcu-`BBN1W3`hhXxbNtl+f*B$15Wn)cli4YXd31&crzQR6u2x#n1<-( zT?PbZ64>4^Zqa%O*J_+e340yhH+-i8fS{3J5-o3AUA?WRSb?@9L>)0X0Okcc@PHlD ze5b)1v;-7e?WOL9Ck;R~1hRg~Bo9~f>lcyu|5~Y63;r`uAAx<)6S7y4(DdVk@Heyu2jd zqqR#JV&d_2-L9>wgkgo4aUs{mRO4I6%5>6vR4DT$f+QKJsoWy1z~fT>W=L@~@JwiX z1l&0!b3Qf!THusKlQ>V}_8iuv_MwA3)tMyZSRTgDw z7^7Ze(?b@3XqY7@0pTUW74F-zyg9`p!a7^_R;y1#AQKQuvjPLGW!pi9(A0V)eEc_n z_^2XB5g9kQ5{23hw)MF6GFXR~XH^o_NtPWe2!trLr0Wfxv1*M2dwG^B zW$SJ+p}>pi#Su!|ktlIIb}0nlN8XuWE<77KDn=-QC?K{nX2C;DNl82BU~p-SM&!HY z(?ttbGy6{yR)s@F<|^IB$?&|(N1oX%y1VFjL`uO~r#UtlSITDH1aE6U`lmckJtK_bzsA{d89q?m++ zhuZ1HBIX1@Nx?d=*ut8sE5gS82waY`z@dz%YGP%e>y&%7=3_cbJcnsmm>k^1W+P?m z4+p&AHg;U{-JwqbrcD%sL#oW>L|NsLvYU*&oAqCek(t~&9AQn5Iu*lfgDPYqgl<^U zyERP{E==YnD_q+Gmwabqnz4W?$RvSkDXJi921+X?VQEXNQXI7^wxu`aIaxovo{(F0 z)(ARW2u0Iyf|64SnvM+DOVY;`4N#4QKC&oHXz$#K+@P9BF;%m!?eT&as9J1&Hb_{b zt<;`yrr!<6CQ)LDI5!ZF(Msi{l2WsoMoh3QZF?|fL^&x`*Oj4`U@%=P>NPg%HkuA2s5HIVfRdD`HbLRg}EL9)2%)sykR&JDxE1P4FS;TZ^nJ z>q&r3nKuSWy9i%-l)X`?9 z)tg!z#*hV!&KyAuX`a;#CSnNPp$RevL*At|QI5s7&2$KjESeRJ39TUtFHM6GR4# z5NM^KBw+&T(kk4L7vj(vs5~#c8HgZPo~hK7vzAP#Iz&-+_x$QoxqxkNOMzAZ0FAdN z-A)gxyVLXFDt)kZfA$ClltGh15a1Cw;S+-&Mo#B$cq}pa*5&(0SRk;7sG$nO!P!5H|MRVD-yi#Q~Q5=FL(myC^8@EM_B*+pH+j55WFEoBZA|Shu6FYR6P-WB~1dS2{a0( zdkyZhhe}i^6Cqb&%YJI9gcuvx-EkDS6kW3E696(bfm;pxHCni>yi&oE0J@=@3cq4`GpT|NK`!_IztK;MfU=wuJ(*P~TdY=5~C+*Mw%v(~r%ra0Z893;xo>yG9_9uS9?jK9twa;%I7xz~Y$riev?RUu=4!AEHp= zF+>;J()!J|(|HI3%3saV!EeXR(yUiWDG6~}{mWTCUNA9&KXm^;CZP)miC;kf2aDLi zX7(2P8XNTMpT5s`r!KcCdELeD4Tx+vdG9*XHUy;BBMI)%99Vif6q>DqE;T`iS?J5vNf1ZrbIkkp~sntJ&%mhGXlH9du*V(1Rp z49}L&=6HDpe@D;bfsy@R`?6^6`2K%WITT~=?^V3W@OTvJkkBPK;|8l9uI4xri5Am& zHP;|A?SCsznlDrSVfdF62X$=>nJOLPhT{uj_7XMuND4*LxI|2hmq1~WBb+> zM_HI~BA)rS@UgRsyG>PyIoZH^?|GOU?Om=nlFnf^vg)qPK|D@qBoP$F*+>E}gp0^= zgyZn*YGWy*Eh*5TX2_c{2ouK)XT4{OaMW7yRznX>)e9A_;ac0*CjL*}gfUVA;rgtC{f z@ue|dCIbOV%%GiSG8VxE15FiXf8LnC4?8>&xk!Ryf*Z`t`&%*)AT#>l{vAwrf0t=< z$t3k(pk7+HdFrmk&EKlClE5jt^!Uo9yD}E9b;cI`Uw=+YyA5Pz!EI`LCyKT&1*|a$ z2!M!)c7zH+An=p{s^aB`*5nngE%rna%!2@&pj7FT)`(LdcH&!gK?H$oYbX(HRSgYI zS&OgtkwJHE3~?K&blD!H7>_C$tgN>#+;i8mtMOB1mhj=mYd{Yp1TOcQ$qfXu35WrAX9uI}%5!n9MAixHscyH@Z-;|4l9#(=_E8Y+p!BH=JJ&8aiSDtO7P8zi*i;+EoTV#<@a4CGcS& zZfh&h9U7o2jH(?aD0cdiBCN+MG`1hLc_2=v8y63^5ElVTA8C@?o*v`tjs-Dq7kEe- zbzi;*-?3I&`7G>~{_^p|6J0-9d&OBxzf>*pdF?yi9o?(HUGuLC(qSFrN_K||M^{8g zjSZAPUkSvg-m|~}sL^R_uwt1pw@4j5X0-z3aEQ(gUgl#BgN7|c8*1@P%QQi@B1hxF zH&j4HQBmrtMk>YQ|MM6Z=KAb=eiuu^zPn>}$m8`H==Ph9zQcX1Vsj(-;sqUn0DvLk z4}$S@My3_8Nq3#m^)Xt;^3m(U24J6r?~6vrteu(T|8yw?S?i_<;&6@G$v!4AD?9sp z)b0jg${=9vZVT*8lf&FMe9Lq*UiL%TiC)j+ERY_5kkbY#!M}V#cE!b__XQ!Vz!%S9 zim0rZkq;O^p`Woc06;*$zj`P$nk@v7%xCKqOq?uJ=%HaKt*bT4Cdl*hrw~U^O-@{7 zy1Z_ire-84V%sJJ#}$o^i0C}rtE-B^Ikdo;%1i@B`vo^)?9;ZHQa5P0(2Ywtip%p& zb=+Z2${e{I?_RRV!96XtA|p`+cC`z%D1!|`2PQ)iq+t`e&x-5Er5{ZE@A4Z(l zeeu+A>@#+hu+-qM@|4(RXVC60BvJ=DF7`-$a@NWe@t8KLp_tN1fV@MHPJxluzM(ge zn~Df<=x1l=w4<$U^_?2y&yZCu+l#o{OzlR-`g{%!jddK)55_25ED0O|b|66j3(+_L zf^Yx`oN&O9;3mc&Gh4^!%HNLCM&?iy{mHU>!H>etip}srxrJ))d`rz&yb2e~>pmCzp9ou9l4?`V@>rgU})c zUb*X#%Au<@x7q!)(?0wn+0hFHq1KYq7~o-LMKP)R2c<2t75g7A@A*X^UGG43|I0tl znq;R8v>voj{#VccBl6WC_h+s5;Q1~o8sF`L>=FG5UjH+DKl^cq*e+;79Q#}0Y(PIa zLggb`7O^Z^R&rOdT^2w?$;ekh5U=JY{nWn~^4KsZuRS|L3H=IF>)M@tEJa|X5o5{w zd}06FMHEwgcz7y%Hh#-Ceb#sspGD*BH_9ZQqebacHXo9Q-+y(Q5`0!3+r(L@tZ>!L zQBh|>-}5QT``r6Zx2o`d`udgo6s{!Y0+}5NWOS6Wzi6Z1q7LQ68-Sm~AQUxXa5@kV zL{1F7I#odw@`+bk^77Vq+BUTQt~L9uV*rorAz!RWW+Xn*wNemr3>xzbI~5ROl~txc zw=@_S5z6n|2#kys`~;@9#xSRyb~4YZ{ojfA=g|NCx3LX=Rh9`L_e3ZHAt+j4#E`+a zR{496Esznd+AgC>`L>o@@^MiFMtXk>S8H!;PMCf*z$>6FY#fYLW z%)RbDgM{Iwj+f{r27S9InyG%${q8SV${_g^I1cSHJsH31Fk>$B-(wjdgY9IPUGcnk z6O2d=4XzZ%iEV>9Gmq%I{KO{82&&XV-?wmzZhN~hF&^=z#jIGIerEMDq3jF(me8dc z;$EV-dRu}BSv0kbKhjWd6JOYLiM>!lhV7iby`5h?o7G0z3ai{KRuS}mhvRu$U_8_K zTFbA>Tr=ko2Z6fg_znlm9*T!Aaf1W&u5W8?JKfvCHBWuVI=<0I8xPOtSM1I&IQ20f zx~RW&dvtr5)8BFaG_HHrdfo`G-@UetZ&?elfm0qC%Q*aLP7~x}BI1`rMc6)Gcn5>x zR6?eGh^#OP0?JB2tRU#TAR4h03^0ED%q1C;zrH@y6Ux#xgcuM8##mw8ISF(?f#bx0 z0C5S&>TEU-$%!CJ{uOf&DV)2N{#5v@KE~D7Jam_MYij(Elq~PK)hKb2EQGh=6M!<5vPSnZ+9Iw90LK~X3f~ArjUjM%51BFAHVuisbE?#!d^=!EK_|g`H zBoMH(BXd^bKo4hqTVL$i$%Sc@V{M+2l_an^D(*5Emddssbga&B zWpA$B%qBTe`dZ(U7$HIg??Znydz#h*jeeXt73W2#Rmp=4@?H7M$`mH=F;0v8ZgcRW zd|YNF;oA_e!>_wf( zD|rB;;e{-7RX@cd1^l$XvW?>&QB|z6t^v@DKwLa01BeMf{U4Af0qy;hH3W^E6c7Zr7v^^Zv9TNBqmeg8Sy37b>*5}KzM+`FQn^aXu_(bqrXAXbN-CB1u{+ZdD~V-+64E{N^QHZVt)_B_j7W6 zOiYXEq2d0Dh=mObDOzNZgjMYf?GP%T@L+M?N}aNNqqjO1scdJ^Bn^>&)h}zljn;p~ z^^D|j<<+NQ)KI#rAf2_X5>6lt6xTo1QbN`phD?xfqFB8U5Cu~85P zMt@oqbv7B$t`j0puXLds6H70@{FYW(g0t`yh_9j_ljBUEtw(xbYM&US4i>v|T>d%~ znl7cy6YMz7fBif(j3M`nv!?E-aa_IoezwqdEd5WzxkuNv zcNUKIo#Tceq0nE{aT0B%jXTuwpuckgR4XAxA|(hd)E%($rfr_ zuOn+%h7mrbZ~ZkIuo+O^c*+zP*J)%P6iVNdni{spW=kN=t)uMNXIB-!NMw>}@> zTyRk6xJ^-fo8~c4?wd*$BJ*ufM2V$1iHL@)ba4N7Aj?*sZPUZn#M#qiQ#2k$sjp=f z;^%`ldgQ={Yi_sd;{(2I78%y^*~vp2H0${thlSX7JT30mW!&m+KCS-#AKQ;l()k~1 z3Z{{!UI*TgN2S+Nt=;>bAOBFz0#|B4LC+BY#QR7hA{@;(&!_70?xtlHBvf(ITtNgM zWp5&sJnJgG4ZLRc7O+=k=u;hcBaOTB&kv&1>bRXQohJn`cg+1_v%0OlwsIZUTBvm{ z=MC|4BRS{)XVx@haM%VbxB zR;r>S-dZXnGV++i5!0!)b%#91n#&?0f{G%FYv-Za#?ymsU9B3&Qso|t|C?Lr#+PQH zmzdyZ9<dZVhZr+$ zFWHyfDi1P^s%B|-^}cHjNfzACTxs})5U$3oI1K{j3^DEAl>p04S3Q?be-`%Nlh%!O zg?1&E9WT?)X_&?*T~cQ7`@o>j-7gpyjc?oa3BqNA*ouXb=sY zB_@Z80H`TvA>ZqiE%X&d{7Y*B8#7b4Y3|PGHEb=L{M4n{4r?@0yvHZb&blWfWkG;K z+&QZhEyJ)cl;pg#I{_BTXbpHFJdiA^LOJ=>SBcDS&3gi*K&!M+pq9E*@D=A2snX~Y zJQucl5OzSeh^jjjV0)|=C=?&=?>qLsYbc@>_3cP<9E_~XtziPu86;l3O|}9=T91F+J)%gJyG-~{ zR>L$20Ma0W3dV*EYc{*gD;9eu5U(M3^FigD!sDkf13bZu265-%LYWz)dy@!MXfKg* zpyXclDij^{%{J|g8Ko2Y1X#?ob2!`!56LGT&k2H)GSEy%*XWIV($*_Ke<|fOJp@>qZ(%nInSr z6RG0JbBgWoXd12IK1Uz?5kB4675a}wP7De!!5~xlU->}k94VP*V>IO@FchzLuI*pJ zyL+J3b)=eUQphdndpl}x!woQft0eGWy0(cy2_O&~1XIH_w(t9^EK1vW|86}z+5dA2 zT0OU2NB?d*?EuiUH2wg!mhKVN`xc)_b|?pRthb;lpi02k0l7EovVxo2x8Wbn9pDiQ1Lvm*e81g|#jM3z zHzjQ=QgWPOmNui*s)6xlu;FmoUFQpK2%u;gO|R-%0Dy`xPl`?|X;OnwU42`9=cHR%jhCMk69}A=qdj{`;rtD;2tvCtb!l8af!qa%)%HgC`4NMRU+=LfXvcQ zO1V#pt;&J?HF0zO4isXf(K9_BgWPl0T(<+~!Ag4V-3kSk{!Tnu#Ki#M${GUBEv#a< z0{x8Pv?9*ZrBYMc_7!{X{9d0!*;a?iS4{SM&bxmO zX)KN4yJ0}RB2pJbH$VNtKkvoy(IlRDb7c#Z_7Stf*+|Y0PH#Ia&Eu_RSv$ zQy36c?ms?;7-ehKv_^Fek8D&AvPa8k2LwUJJ#ROSnIqavGyo?3T|OdVMk*S2&k=I^(SW8IG|ZCO2anQ2bb9Al6SULnqd!B*qt&ICzQ-fR_4uqxPT14|Vy2h# z5Zu3aGLzNrtf^5@%NY_4@G92lH*|c+DiFD!YAN$boJ%TnuRcML1VkP;a#UA~&; z)f9gXJ6v%%F7vL@o9Y?c++($9#wv;tIgR56?tddm{aU#md#ssZp|$`}2$zE4^&i=& zyIR7vsHsW&K6uevBX;lz1jJGR+D$F%D`H7(lXcD>jA~@kzB4C$8+2W1ag?~_Z%b#D zr5)w58p23OK1h9jm0oaXaAR!2Y9+0{W#>|O56a{=bi=CScU-@>YG1*w^fV?V{UV#n zSoCbK8Y;GW)#6ma9+~(U-BzdZODs+Z)27yH%C?=@;Jt~{GL3wM_xU-BN>j^l6Vv8v z+5}oO%v>%PPk>q7{sWMti9fX27kr7w1Sp3Jz8tCcd^B>GAuu66&8u$e8)%8nR7)IF zM6v6m&&_+_?wsVyFV?ij@xBt(^ON`5uXn`GEFGR%xFJzP*e`3hxbGkJ*>)MT{iptG zHCAL;q2{Ewf8kG#W$Iw@I{Zp9wFY~nyQ6F1i8uP73`t$F@b*TuSL zGS$CAv>`~S$w*x^frB}@Yv{#ZvE888UdaYX=0u1#&4~sd_TB&PwCq>tlmi~#SNL&h zCWEE`miF3;b?$NFMR#c{BSHhUdiK&3;kBVs7jirr{i|3(ck>1lHqdNb;4lKn>X?9H zK$DxTw#|r#rK4mdYf}zbp+!0mttWWL67MY|J7%`5`;_-k@J|VW|EmZEmfD&W054s$ zefw`pa!1VBqHzFXSj)vvBj`^__$y+gq<*t}{VNjj^sCUb!7B6{1WnIv79p~79ZueJ z1L27Zjf6lr!>bL=NXeg5ro4u`Nqp}qs%uD?W8?AIj-t)#R*LEbNpQh(dOC}%ZEn|y zT%DF~TF7Jz;JLf(H+fVE)Pg6HzB)6;{z)0cEY+)*EE{n)Y1`Iwe=1ZJwsv=TksU>Y zVna(_YmzDfHqN@rKv2*u6rkeOyIXS1>~1c$Y|S=-an2*K>#Jf$$idsgU3b-cddN?* zfM)u@wyaS)s?6R7RN@N6xad2Exs4>S7)62!MowK6sR5=oAFzO%CjO%e)ru zP8#!Vi-WuJme9OCW)=(&edfu-g^L$QbJXhH+8+BZLu%Ns$!aBrUky}Juny%t~Ir5oQNR5lK@?Hq#LV&T&Cd;R3XvIngwGou>%5O&UzTKFI1acL-Hq1&{~0UJ{GsbJX^SIHl{P6z|`o0~xThaJK0LUXaFl^im5E zk!e7JkaLhtlg6$qh?kgTC^g)*_xyiR-=F}8;CEaPd&_Dg!CamaR6`%3?Xs|63<_pMXH{uUL8C{GW z7z80fVun--rXM^mScDXJJ7`j-@u*$@8kw<#uz*KFT@Zu^|MoNj|LBUD6^P_(Oo1OH zaI8Y&V8H}68OMuSH=l*z96FuanU_Ae0zANI;`8Z6W;X5g1EU zF91J#J_y`8oIpCyg;0Nw&Oy|}Lu^tG5w!5G?e16TZ26YzuPza&BQk!25}diI$wVr) z+p{lJp{?T7a>ORJzUe-XLHSOqu}HZb3o+gM#rn*sWF__)<(Giv%`+|KjTd*VAUzy2 zx*Q4R;3Nvew|?r0l~x9_SsV`Y^}e6eaC*pPyb|Wn(pR-%6d1wf)#2~s$78GC$o7Y~7S`77121Y}URRMnQbVJ^H+iD~&kQ+L{ z0W)?VFLs^U#P5*JZA+vGxcfs|Fk`#bc*>9p0yawl!MQ;AJR|XXY@v_Hvak`GR_t)i zd}(mZY!vg4-t;szSRQ(vqX$JBKjZsoUb9S`1N{q?aSu(ydu?hZE`ruOU^NNT7QvIt z# zW>o34eC$If45)UAhYF%7nAP!*Bi`Q~(RX!yf zngR}1g?hJiVjP%)f!*2S#*A)X7VqctwZ0%pIIu<=*OZzc(ufKoFhH*#nsrY&_V`k~ zav(b~wbONw0sRtafrS>aKi`zGBGUlQ849VZ-Ay##cwtlM_4vZ8P08RIu2s$ON zIqUjLWKvt@G)ztAA`c}4Y{YCXNT^^9 z9h?fSV3*oC#G;BruWd_RrcKenqeDEZ6v>XMY{^?;BT#l4;cITvlvRmvNm>8eE!WR3 z<(sdI)eHkvQ+mmN;D=03%Bh>u%D>2J4^Qd5FkZY}C|JEY4!*|1T{wEJD#- z&;5SEYy!iqJr*>WE5ybV!$ls0?jkna--`PbDbUKauf7v+7~M>kuW)zboBEWg+ClJYj###k&;k|Pw(eCx#+=b9@#!N$hL9!@s z#5w|T!=;iQ*YW+T<@=mpUU2tD@4_Eb&Ugz^UE)yk4nxzJ;>@S{o{ny8?GOgpcZ$2c z15;r>gSd~T^9*SZ7S|qN_|Lb&WlOv3ihEk?%i3Xb^u81-$#BoBIHGH|j`(~qXVOzg z!Kt{4^Q--zhWyyC{zYqQb!``@lM>1W-@#hVq-J`5&|N=)>-RJ&`2CSXuI4&wuwqS~ zb5VyElszMd!`U!j{AD7#-vHZUMT9UYQhpK4AkdTaqbUOB&Hn-`*yW-NPC>8mF6DSB zP3j*J$<9Ipa6tAsNC|Xgu*^KX4Ie2WXx`Dl3jDJbHYDNhS*yfYRUrV2mq;q_ruOlWT1r|7*f?2iJ1`%Uy z_jt>00+LGQT`^D;q#8deQVlg}Dtghnt$`h(APOG|=uKupBY1pMk}KYL)bnAh4=3hG z%<~pSoSO&fCn|*{TL)J5WYvA65h_***VK?{`Ch;=9Y3O57*8e{k)`g1=n>W2VQ~l> zDzb2_tf0m2t-|m{y``vfv}P_s!H!$TOag+Ftdb}U8k`sf4$NG5GUwVP05j+)X_vam zu6+Q*CYErzgwjOkW}Tg$_WDDT9`M0()x;R~RYMb~$+6p8LAZ=ng~3}p{P}u{rC{EM zztlOR>Fwu12=_^IoP_gGZCX`?$Q`~K-IPRVtDSSklJ+d`l}jB;u&p_{&V%ALc*>=v0{fSrBW& z2##KU(gB0&t~epYph_*o1t)QX*qs28qauS-C|X$~o4AFP(EZEjA^=z((zO^Az}<*$ zOr)`=X(xAP+Mr{U6nyylr9lyw3!WD1Dgw4eYUo9AS~M5E>bRRVOW3BuS=VMg9w{)e zRN7lwzV@<<9=*+H^4DRCTG4L1+30=3x)m)TX>skI^CKV&i6;=C#dV&`=XL{TupAKMZlg1VdUE-e13-UhB6JK)eHAR^VCX z=yYh;Ss801)q=rQKf#Te=w?`ch+6CwV{F9;X`?g8)Hb?gK}|kocC#{ZyNm0<$h%m3 zEgtdhG&-MJ0W&aAAc8?21-WLO?M1H^uW4aHmdfcQ9Mgxk5*(FErr5lP_Li0b-6AR=F^60XR=6Om5>;^d5vnG zmnn;T(ID~dn{?gnGrQEx_7K90hJXQ8$?($MR#o+`L@ETVW0CGXA%j8%ZhN6ZS3v)D zbg}L!oQ6*ziwx+LqBN!qMP&5U;K3H6rWD(~q%c4dOz+;BG9uxkRJF7*Ty{sFU@uDJ z6w*GV#ZAy;LIaGH*fMpYD1q4rCwi$yxe`pOv>~1FgtngHcoZvYP0Woohbk!a7l2V9 zW!6?3Rz~&F89n*y7X=E1aXWz}J@R&mV3tbCGd7|+%|;P%-gqa zE)3$B;k3^D_F(_*@kJCCQ#B=Y(8wvp!?+Vjz?}H25{#C6bRA_>N_H!Omk2U zyq<*%=H0ai+O0 z-w&TT&Fr)o6Gf=6y!)~&q)@<`l`(wjDC-nk9ouop-=R?xxK=GGuo>4ZWNjJ`9Vk@3 z*%B{gLoswuh4Iu(O@v|ge5E#?zH?5k7i-mu9ZPNh<_ty6B@;O68+WcLLtKlSTN5J2 zi6=0h^;KIq;!uSrXL)kw74XV&1?i@3p?QLgT`5{dD$}afg{xDVhE6PVNdOz+7cWZl zPDuiR&ZY5)VM4BPnxyEpZ1-=97AaY_f7^TIYc~(O@;#=mk7FLA=C^cki-O5 z2^j^bGB6V*sS~IaHRei^lLllQOeocyyE2n5GefT4_)@6k3FiF2q4hq$zd!T#3G}&j zUW3p2zge{jgi;5vVNpDHr1sd)vbTgh0kAD+@P2(1$@gmQGibggM(Cqn9!TXFY~$L0^G8YJXZeEtKLO@pE*jZnWwjg`2RYgLjus91QI**R*KQ< zBN+d|g((nUC?i^BO9HSL(L~Sd^O9|vSM}pNR7iP8uOAdj zmEB6@ul@`2UjIeuyhYz| zGsCk^js54>p_}DxCRx!%?{5!0un18qal{+}L+SfZFh0AE2bHY)vQaRQXT!)yq5>F>ks~lYJZ<+LWvqld%=X$a2;7xtczQ=xK^}sv!3$4AMU> z(Q`tbRsBq|!_DX1GAIeevz6lS;wEYxU+C>)BteUWqRywh!H?`^>Uf`t`MG)yr;X?` z^qfnt&)#F9@Ts3i(qs64;=U{+NTs^*njm5xpe_Lk2~6W0LviHhj|*GkMykv|A}}M@ zCELqg^Z46(H`@H2vr?9CBJi`zGVyf{1k*aEgAS#m?OH0Lc*ddi2~Hv!+gvTF`8sq0 z4!_}89^)#-G(+N;nesvyqpXBJkkjBE?CTkV>$Z6JT~W9o5ETvu0}C;}d!)3e0KA4* zn3E&GzrcIGzKYZ@Ro#TmI5(KI-qvA%Tfru(_hYE9%H3!mcT4MPU$j-iTGCy)FJ)^! zfsMA4w+3YpeTlDzFcJK9xZKHvK@!s8cFN^uj5d{3c_|VJAmPfR6)tlMJx0qfDZq6r zZoMue$Av`Mu*AANyPj@{n^m9gN2i*5hkMn$vJRI{(!=1Ipb&j}OQG!tvKn&3BURC4 z@~4A(OCGlq3H}bXg@6UZ_P>aL2|nO}X@?27WE+DV0kNhHKO4h56F+t0m^Q8aGm5yW zQW*Cr@)qSY-Kc_RKI|9fnjmu2a{e+!zO%l)xY5`X{=+@3{$5NpL)+cB5%hk&k7~>R z3sVMa{~&MRu9eg)bUASHgdd>J&KWL#82-K%?p*Vaw77WR(q^b2*~g7+{^pB|m-I#1 zG!(u^y${jFWI!exb;~%;=}6_Omr_KKE{Fh7APux8iJlpH_eX3tl^@Vg;ckJH-vW zceyQd%E1XRPEdP>R$snss3n(6hTqgjhPHZv&0u?A@h z_Vx=Sp}^;tA$OZvw9u`$ET#*h6^ajUTeX)$tw>rXxgSwSRHt(hr`MxN>Qsc{8k8X1 z!8m~=5Y`F=Hz_;AR00IZ;Up&@`AirDmCRm&H>#5>1c%&>y)2t~ot^AEnU3xS6l*o- zO(`o4g98J~B?H^GbckCLWKg70N9IUF2VpUKoOd67!`3xKzJx zgM?VOZ5%koy#?zHd2?|`B1x)n1K^s;LVi`;UuDL>4*MQ-#0b_zamMm=KII5-E=s==|YIOD!J!A6W zF_n>nNqVua8OcMnzMO-cKz2%07O}OrW}Y=9ZZetPYWsZ-fwz<+A^{vXuARAx(zY;l zQHsh8y4+@1^s|FmFb%rJndM7^4Mk}PVqWVsI3J&GD1+P3Ib*pR39=AYLr?Y&=CO?SHjgvSMC5ZE(6K;lA*I8V1T7VxRJx-+CA?5R94_=RbyJ z;V7^>rni#q4Fn}p$i?prV;)$xvqs%0K&`MiwMInyXaLq0sph&Znq2cRV24P=e*Lt{ zGvSb#AjcsABVqPFlI7l1vZopn+*f8Kv&sr4M86$8q;6rtmZob0M12 z#+yb^$$OJ|90+e&>yi>=DpQk!4kvK*pCPRs;h+#IJ88Tq)UDa&u-_x_R=j2NZqi!R zO;k!ATt@7Pk!u4CbC3GghBGUaFn1HS;RD4mSEVOIzq?3_v|s zH7Wi?hg9%ng0jJJP?$W0MG;UI^nv21{xQ_JX=fxq?(4bp8bPr@nVNMFl-?zOUECC{ zLd;V&2y%)+KuC1+o-C^4n@n!S%zc(KX)oSCa3$U%w}Z6nOdQ zHmzwXO??OcoAf^aoUAQLr0>0CpUsAE@c%mAOS*!*pY6et@6Wi}9AJyeLG>17|A(b* z;Z@ecGk@I+SpA{@$*rGT-##(_O7+3JoGyWUyEfdD@@jPdw>)Z(gqw?{5_r~(7bpxg z1IYQTI!8)#c8JfXaCQ+ejW{Ub~m++&%!;Z8-&tt8#?mn&$-&z<~i_NeTp$2xb>$S{}WSa#FZdkLr-qTV`Bu}T8h4+$y0M^zB7^CK1X-n_>T`4 zK7Q}8!Rr18<9>dQP-qjB)Tn6 z75&uw5;K3e>hks(>L*F~C*aSj4zosxi1`h^yNc}f`~pWK?8JkTf`)s*@?;l7hdV?> zIl*c8d8mWp&TwxX3a#J@9@L0_(SMMFs-Cy%X8otM2htHK2wk@SE{dI(s@ZpE03pjp zmP_4J=Q#sRx0tr-hO|%)%%`phFgKyEg;x@Xrurr z>RlRq$guQSy&<4tLs|KgqAYY?pg^Wru$tLW_7DB5&Pz$v8be54o_-aG;K+|?v}^u! z&G{=P)$3u{=?*3CgwzQHf&#B5;}lU%-_q)8p8E2*_V6`zSEg$h*Ll4@m+^kb^7Q== zJrvNN3H3~pzfk^OU!{Y$WX<{B?uO&XXOFl~B>iSQme-ux`(M>&ga)rxotL2i;I1PT zJvDs0XMR6m>GngvOU!jGt{e9&;FI%U+4<+V-vi|Jetbo*+4{yla`)dm=)l8j8Y_2~ zT1?b0bvAIgc{)|3@S_fZ?V>xer^d=zroGg|GwGTS;w(RzVa6e58vO`pacmxbr z6ae9TRjBzEdd&J)DN&2d zS~zEUlN02Oq6QF;pyPW;zesUlu!y&KH#J;%CRN6An~PWK!(>npZACU_(_5ekHt^*9 zCF96ewUoiK@;AjjO<(QEJZEFWkq(7?mt(GR!;%tp-y^J)J#d zj0y(3S)n=Wby1n6oW8TsS1<+P(f0tcK3=YVDdtfkl?umA0N4f0X*x>bvBhJC>G)%% zwHBiELirGY^k#f+LOAG?kz38!v$_2HvtXUhRx>ZWAb<_@O;0<|QV?rs zz6-e3>k;$lir+<223X^v()5y`fOL4&%Ni?`vlMl})@oG8v!50S7lm5~UBKwvO}FP( zd?r~6SI0T29HF4Lgf6V>n6V@!LPJ^zFv~D99i}fxuSHY^sLDjeh}7dvH6Wb{;X63? zwzW?6zJu+9cM1S!D=V`ziQb6zx+~|oWcl`Jc$A+Y>s!oY90eqQO};%Uynf)WShuMY zlxmxYhzY=ss{voITn6(7jH1o&3Q^?QsPWaO+$N6&aAdv1T`GnV9{CFJQ!Pq5*ZDt8 zm*&&dP31S?e9xVB+UN2aFNcQBVdafpBVL4GLx}A7@q;lvx5PF9AyAAiV^sfh@9BGz z5c`>Z31_p;d&_r*3$D8t-$k!FmjbHKx`4S9#L)ia!1d-3kU&6WGn$gXjaU<#RA+Hi zx01d418tthb*~K-(;U{OaxICniwG-emdv(Qe>~Lmh9;m|gE!RUu%H&2!H7wLlaN>4 ziizwk%vczML>`RC0h-V;poR$uo6gXbcVY=45?`a?iBxo2YP(lWcx(vm6*ppu?+^QS>56pODspMaLa27XASSWw1GasjO z8%iiA3E>HlYEtarPu)~L7ali%!G?dODT$;>=mzR9e5AOjGqHVD&|4d~gTM6h-&e#P zm?lMb7&TUqNRaDHSlW~PY)-n8wdvLnY4H6YAK1w!web7z3S|R+l1Y9dcD(!K70=4w zK>B~F|K{D(>(BQ7R<^0~9j0@@kn+i^*$^I$bo5g{S*DRfZX;>Y%iX8TYT+{rN2`nG zo*vp3h;coS(47y#^?i)-wLBI%zp>B=ej`@{Xy1?FPUl>;D|&?Jy8deq!#73z9^d*- z7u9p8qnAy$6tK2+;SBGO`UHTjRs$AtU080<;+F^N(CY z)D#^Ks;Hqt( zll*icI7_2H%}O(iyOZiYCz}_(KwV;+QfP>jx8L#}eR3%n3{*6*3N?64BnXL8D=I1L zJIQxCN8ol%;Q;!yIp&lcp+|&H)Ic=7WeN%kbtZ)|#{uXXk+J7t_HohXpr@1P&UU>N zK_TxObYzu;1p2+JFr^3&nAL>Q<=to0Gk$C7x%q!z6`0X}E0ygJZbtd!#?e6TRyq7B z?0s6}>%98S6V5IRH8>1$I0X+znt0Tn{-rpW*1rw@o5adKx9OBSf*k?8%Elr-e(mF@ zbfgLA_4SSb6NpSC-5nziiJ>?gLQxFD3}C=$Ys&}p zi|Y!h*f#gvC`K^}L1KmuQM;(s&=h7_v~47Z65VEv2nX9?%&1&QgS4ia|7A<0m6EP- zDC7`3WhD7F%n!U$RP16rrvR$O+y@~ywafLPV{VMtwoip=qRnSm(d3;_PM@#k4iRE^ zFCJRhdJe7&)Lg5++EST)^rrIDH;`etxd1ClJVB*$c&-@kp)uel{sa3i_j~`p*8)Mx|vW;eYcyu zfXBFAu5O&vb1T7Ha@Zg7vP_ro)|O^I+P!5|!aD1x2<;6b){H$~DAU3=;(uVSp>WtP zsa_3-koxz>fbt(lNb(3-F=0|u2mQ9*t!k8$ghY0F@)?br`>Ud^u}ODnxqDaj+ErRE zXg?4O;sM*k*xB8BuQlcI;d!2e!j6Qe!=Y7*j6o4#tW;D4NT_sHeGDH-ii)RQPpf7W ze@@V25cMsJq3E8j{CsxIJ#(N@6c#72cP{UCK+8aakp)R_lShY)wxCupNH2Q(c!9C@ z8to#m4Va>kHUoD^(`ICjYF)L2LW4}=P?0oCii_S@Z|rtgVA+t1_HVD?_`<6nP;h$~ zhrYD-wk*i6ze9px1%rzE4uk<@4-o*oN)~F2IgVgH)(6$C^=4P3ziZaUB+JH$MX!P& z!5)(q@6e|nz-Xg?E=q8p-gnVW-5g4=G7b<_PuLg7-hdGD1_OM|e$k$0?- z1Ayx=jFtaG|HB?9!i7+e5SfY`7@~2?iNXUyKg~D%p58wMj~9}vh+G|30Y13cd=oJ- z|HOp*ZzZ3ik1hI=mrQeLu4H#@oh7nRUr`PmRl+~6^>J}Qz->uCy6Gc0ff50+1>!zQ zwf)k^U_q{~vQK4kg@|uj11yU%QOJ4bAU1!(!Z1it9w?v?H)k_}VHI)(G9~sXG%N?~ zif4b~Ea$2YK4+a=AKNeW_-K6tqbpJBe-~HqXcCCoklrKa(m}jq{PpF@LI-7|4YR|THW)9#bc_`6HRRroK4=tH*O;}HI|1KB6nvnW1F-zJC2W*IwH ze0*4PSYs3pd$Erpf_ywuJB~I3dA#zNCV`wZs3Xw*Ro3R&$ky?{Uy-WEm3T}!PfqMI zcdx|M+1=zAL5aKH)88O=sj}!{Upm6GiiZz9j8Qz>+PD?o@%pZQT^m{1plMy7O^Lfq zggBd47*R)lp7-Zj@!6X`uU^hSo%dR~PD*eP)fw6)-P6nTd+dF44w(*thmPb^bdz1X zyEJ8I)H0fvseVpZeDFAZ7Bw_k#I#gHWrpbw)8ck`=lypd8n4WHY-`_hmhn19XjjJZ z??HE)862b(K5IF>oq^f2T{jG<`CH+p60(uoWf*YSc1-lnyVs=oeP1Jel-fbpyJ;?~ za`0^7@41+o1Uv5X^epT1?C@$}vt{I_1PXdcy`BfzHtGftc4>vg$zJUVF+I$NU_Yo@agUA1JwJxtx7w1BiE z!;Bs>GjAGpChi zL!d48TAQ7Z!)Id5zKtjToO)V*Lys2UeSTgc_6gReQ|PBwnD3cK!@NvNDti`H{0j;& zH80wIjz=K+f5gOwg=f_=ykES!e((5jX#YK%*8)Dihu?iA$sgpUL-hAL*wosg%=#9o z-PxLIu*uuD0OHSC+T#Mw%?$kYqpF$x##aQ|a12!!-=<9My$uX6{<>UGk=LDD-u7NA zfuCUCL3-}X9X3ay{{G*_>VR(b-!R2KFN()g!_F@2g#a}`%D-XcQ*F}h=d+2?Xw|_y zqvKiWHK{y%If>(a9n|M;^yF$Y!_I~ohsz*-0s)Ra(42D}7@m=wiP?Ch0BzsUSwRHX zj!khs5*zZf-BB&ZQdNL*rN{zX#)Ew__Wtv6rI>CIJ9vc-_ffXJSLBXEjH`b>RSt0I zb968yReRIyxR^5eH^^eYHp;P7Rxyf?D%B=2$RZO#poP`dIh9vceoh<>|kckjY*6$b)?UR1tisIOw za~S134`JzjcRxRB_wN_K@w;3j2#`t9Fz7P}yP?J zi*{1tUc&6G8A^5xTb;H*pq}8w5#0(*Grus^LX;vfPh815lV-fi{@`{JY=1eicwV{! zoV%mq-vfDt2ohn^Ack(0l~bkclS~ReIdCrAw_bx{ijLpTm5d;D`ZtizN}2OdcW2lp zKKa05qJ|yNO+}RqpZJdcVvSWflL3YzeRIUab;#Ob)7I$#;1TJNJ44aUG0~a_WjGGO z5CPxfBGB`K@OIPqENxFaZ?mO`;H34MM>Gx-J^sNYFOAWMG_&-Bz;hah8gp2W&wbz}r6ENEl@jcLM z{vGrIGzkOI?w3&O2q0{Td?r$26G-gLP$taZA3c;2jo>We7Y4jKs@qh&t;OM>!IO=Y z_NtGW2@v8Hs3{i^a6^&O#2^81K#FK**Wi;HeR8DM5)h2|SvGT^fk1|{0CNP2aA4xU zE6!%36?L+1>2`Yslbxe;up5r#VJz1uGu_s&VzTN36hXd@G?HeYrPMG)#j(!VBsL0B zaIgqRWTCM#k(?J>;-Q=AM5@K2%Me~=KnZq=0N$4kdIT5_+1hm-eRT}OO&B`X zFd5I3TJjg7@k2xoZ*@1*!5EvW5k*kuQiV&zeP zv%0_Im9R1iB&@$RxY7b3;+#h8-7KuBha6P#%eDA?+}%66Zp zp`{aia)WKu`*B2}B7nvt<6J|D@6IqIr0aTG+ba!03=1HBmgcAO_-gk4JQVfc0kN$fOGF>r&$#*x8wDrwVB;?Q-m~CRR~&arZ^; zGElNkkxhB)FR!yuDnQ|me#I8o=&Bd9&R#RRwq2dftjCLad>k9yeF%4DqX1dL?vzrO zR5Un1+SJ~MMpKzXuu0!jiamZ|5g!0j%prvCz?o&1ilw*U6%ar`1VrPt;(jIe1uidH zbHvWE#MKdnlJXZlJ@B4$89Zg}kJ3%5LX)mUM?pZ5a;tIQ9JdwA7iy>+gpfMa&J1_A zXZoEH266r03sYxDEi|%ndb@!U*R`K;)Kq&qb?n8~oUS%`$G*BTeZ}>dr=Qi;=4NJy zsEV;71GYouA6oXX^I{TXRfQDvvnM0`V|6CN1W;_Yy`s^OEnsZ~`z4deRdRP~YOBE&#~j zEm@(%KRAhl#Jbkr71p2@6-bX;Rw#_pGg5>kTla3NX3ipVS)to@kk(Bv8&aLK3e3}j z?Cxwe!UN`eQ~JKfU7OAu&pTK!wnc~1H1WBq)sZO{GRaiLA^nBq6fhAMQXrNEh(s|I zw4%>Jc8H16={xR=q~>`WPA6640`c!}XXll%o>UAMsmGTWq(iRW5Ch?1{8Ko*A`51v z76}A^rg_|o6$d7i^921m8p9jMed@nSg~>uyf7USWziaY^x3sQZPH$aIDWM2b%2k~t z!ARnBI&>yO7Yl*8=4#mR&=0C6LJA348?S1*JV)+~Dl(pY_cD;`@LO(re80~A^&FYy zJj@MaL&|VHZsBhHUZxb~vK2LXdmg(lV1&zWZ_Z`x(m%C0f0i`-lH%ZWBYNtx{2{jqMPf^aWJ_>lg9-Zb@o;injhT}o+uud!CJpSLU z*UREC<2_m(nrGC~y=w!;rs0`BAJWq{Xn9&G#O!G>Cv=@VI5`#`?Jo}Xd@}XBt&Ki2 z#N|9ovLxQ>&mvFzWezMlVo)k9J4a`8e16S`DGdAVaQnpBRbSeC>%sp=_U?Wslhrh$ zgY&-c7=2Z<*4wDm1rY^MSbg=UrTYwH-zUGe8WDA7-Q3;x zY|t2w{tp^s@ja#q$bG|^fmi8z=0*dZ-zc22kH+h?<@srvu|QyUK2C>i~t z+)L`*fU&uz7aRBLn?!?o1PD3n;1PaNXi4l~Hvbd%;HSl{q85p*; zsH@P~M}1997iyP^)m(VITwTM$#RZHuX=bi=VB=939r60D1Z1t2vufH7Eq=t~yyM7j z4F)>La@ZObu*BaLkcvcj%MrF*!uqC_XvV_?NiZkv<|`blOr~#P@nQp!;!TE@X0Px( z?9gjOSrMLEM4*SBg8TJ^$<`~3)O|U)`kKC}r~R}vG93$vctsLDgtMOJdXPDZ9P<*< zHe+@M8hgg|RliXoQE5fomVqP^GFAg{&OJi}MX;#QaKsXB8pz3dSsn^eN=ggpY&E=b zX^cwqs2yzk&f@aG&{tDxJ+~ZYOrfC2YUVRxwCv*gLc$vTQgJ+Y2i25fY8yfn0eL38 zM$FKb@-ph*x^Q_Qphhb40Ejypg z@~KYYZ)oEEXlT%~5L6@)2+AzlUr)JwoXvK_LNKX)6;tu0xonNn6oc&uy2ILS7Rh|s zJ|)CtPKM9d+tZ=yNz<}+h9L)9doj9p%eSd6Id_U*s}_? zvBbjnjHDJb=a}D7u;d)K9eyWZE2Q9I%Ml3Nb_{t_RzlrpO56Pd?BClo2cTfqdoOX7 z7?Y5%Pt7?lipNTig5t=ZEd&FYOC=o5&9s89Rf{rWq#X{rlm#TS#an7e7Y5o;8pH{o zLFhOxWLu#CX^B*TL0LyNGvl<>H!jHhQrbl7C$(V306v*Z+`>Z`a z*3Y9IGYsRx&fGO*Zuc#c`E0U@BJ9x3HW^`CZ~rS?egxd_*BQRI0rPm6B;tdZ%iIx& zlaT_K2c zD`XicLZhHU92|nfMb{)zFRYs{p6V*$$V#GzOC;5pZTP?aVb#ip97a&0whTbv5nCc1 z58cvsDCJZ6Q4h`BXj(20C*!I}oKgC}p-VglVq6vb+3$S05F&iDdYl~$ZTd3nO(Hl| z4zkQxL7BZ{u^K52O;x7xEs~YwtY*f}JQD}s5f)H7RIFz|!&vR#^_|RXAi!^}<6k3p zgQdrjVRh)*Z#9r#ki{O@mZ!c`>e6Mfx_&+n?_nOI~qRkN_))4FmU54C2>Wx91=xyq~QxHQK_ zYCD=$XRKpBXL+JGF?D#i%>lPoyb{ai`9;S-$blwc1+?Ydneu04L{tY4$(d=EV*RSj;Co4TI$g`#=Niu0#q42ZpyBdBx2O5O zsfkfu{6C#fowssJqJuIo`dnX3(ksl!Xf8V}QH9e>`ko@u9Xo0JhJ~XH(g%utsoL&U zpN05M=K9SNzzr0c^wsdpzO^-u4f^#?c@(6;uC@i}(2&^t zUi8ygC|aOex_#UQ3q2B(5QEdh3BYRng0Fqbf4wHu`9qetOfVF*t6NS}Szr^w);s$q^ zB|;ig-%7NiuR~8j%k5O?K{i}ll33eu>VnO8`QN)kO)Ay3D@g!(;~7Xb=3qA=QrS*O zRl>o~B}0cLiI5!|0JE*c;2|nVD-e)_lEcdM1u!V74ZJ1|d9d5Am9}u%HT0LU)7-y> z&Q+Cw#NiOUrW2a^8POV7Y`VZvND)9&ifYR$^-+dC69NMaxQ=%WdUm;b1D8(v%RdAz+r03pqIT<+6jzd!B%eNIOv!gG=w z)FeKcyPwF{x`AXfK90bD`@u;6CIsQi>s+Rd4^Zl_jd2 z{>L@HtDfMc?4lBal&hZYxF*zX#=smMywx`Vgx8yMIq!&umV;7{VWE@nH*N`>QrG{h zS7OeoXQniV@s(de3lSQAcaSj-9;mGA>|#m?3&Od0znWTnmjOe z_|1$(oK7zP>~(X{IHeKH^dAf0`;5&5|1H-OF10g}M~9vCIatroc6hqEoIjIhgiijO z*9*~eJ@#2Vuc1Q#yC-k@Nd%7vR&xgXbtGg%Y@^Mwzus{s`zycxyu)fcuKqO}_Cmlm z{M8{FRn`3E#3_)I*3p(9#3_LPE3E@2(F%{mu&c zMyGc87%bu2;;H4nf8gNEQ`trSazB*jotNnnKqc!K*Jc*AugX~H@prGhMSHv8aiZn2rm%?@)`ZLv&7vB ztOEVI=?M^#tWto0hF2*Nf*S1$tgHdtBbN%Lw(R<_KarkJ?%%s82Y0g}%p(W~9nRbk zF78PHzZa|&Qpd#hS672fFeLSvRkAfr)C162=lht{U+Y32ZKa@87p~) z)cN(Rhmls@$a6I2N0R(WtqrNQD~Ij)tDjoiTZc?dmu>4BYp!sr`s`|vb!J$P-zfs% zf`SLwxU1^UqicLSYTQhFcZ^7fJS70iD+p_7Lty9V?-&GO3uiLzI;RTU?=*F9R0pXz zKAIYODa-)JrLMqhkqbr{L~MuyR;OS#wP>)|mUh3h)V(p^)x~H4J;LA8@F9elzcK81 z16x}{^wWWfKEIgwjpo;uM=s{phjO=)j%-j

eNM;+XU8oHIwKVOiUeUwSc4QWA*@ z02=iDX|!J1u|nHR?`z%J_qo+yW6;++1SyaT3%RG5|72|J{lf#?e4CdMLzuov$*>`z zB_x+`P;vu%7OANYV*2SR>bJ(a5Dd2lQ}FFoxOy`>96FKF+v=j~*YhcpP)F1a)!pi2TfJHS(?n`)4k#iP@PG{+ zpZ_B}TDZ83$-szRN6N~ir>EV1a3r=2e$y&rk3t}C|3K;En&A=qgqHU;*!WEu& zKMt$V4=qh4fC$2|L4vNA8RXmVsa!O4mh3u(vNCHz0YrBB;m$OU2D%1Yr`Kn?fi~kn zMTfo8JIkD%q#)#~q4H)t z7leJ9c!X!YwM7NW)+n(0l)VKhzP2dI_15J78;_x}tKz=@+hv!Tbq_1+wXx+|ioG9) zy2^XLzUk~Pq2>CFE)YF;?A!wwiR||qJ4hT3mZ}-ch+JQ{J_8|aekReFYL~f$u4I6H zh?0$&5k;IEhHEEy$y4z1V;p#01ItX2DD2HF!OiB`3na24MW^#EdfFkBeUj^lj>VTE ziWrwFx8>8zVqb1E3}Vdql#fc!+9p^c=LoMdC!8UTrIz(pD4E8&*Lm6} z)6Ss^#6N;p4T)m>pD5&lxK7l#pfqd+p$mfCCGnk6{A+TFuO!$Wgq@80vGGwiy zLJJ)Hb6J`^K~RevYhAvMEv3$}UMoCf#IJ0}CACu-<1Wqd&YNtIZ zPL9WqT9`N%w<87v3sly{rj1OdS~%JbH_oTbAKT#tNYvW^OQ6XOdpqkAbo@R|)25x^N7$ZMazUv0iTH~OVyFLMFX*QN+mABR+meuSv}HBe>jxIQGOra9ps##n7zF@Gx;u7!oGls2}?OkAYtJqDGI(xH4(1sSR)0}%sKIjwgwVT*RoG9sxvU3CB=4p%5^@~@j# zId<#K10N#h`rT^EzizE|c$%;vOq)7#oF81EKo84KlxHoIs$}aE$oAaKb!-Eg!`AVQ zYzIZp=y5i;cd*ZFmmOXO>6xtFP6xjuI1nx!PD^JcJ#y0RE<<;F))-uEDZ zc8t2mnTbDB0+wa$z;su*lDN zumfTo8zl@HUsT}7Yn%)K7B2!Whg|^#y{Lf_Cj+8l>g*z3sVWKYYo`@C;4DfyiiS`h zw5ogS!Yd>NQpBqnIq0oVn)5tN07+;%J)_{^>*ensvHCWzyM0yJ49K%+#pzSGVNlen z{ZUyK1p^0DSk$mylhpS{KJV!#11KRH*+zRg^qo(MyV5!OLc;ykZPWyrL^aKIZ7c3; zNw(I?;0Y3ULvY>G%^;9wDK(43)pKEG3A1&*HE|{(BdEp2y{w@ysvUdw!#1)UwUEHJ z-I$Ke+ntoQuvb-j`?2nKPgcFIy0Bg_1@R(-O&JZPk~xwyXXoASmI~MVTk=_T%nJnx z=IOg1F=RWEFq|8Nv`Ee{2>JwqajBuwZ9x@s0Q5&jO^%qskzZFuVBm?8L$SPsGN&Ll z5+e{GA_*s)s(qWpgZmddN%-H#f}B1Y6bY&=YhsUGcdr#Uy7{nX(&;|>YrY@sLUHY3 z_+5qSa(3~f$W@wUO~#TY>|ss6?Y-oT@lJz0m`XF^s+2mN1IJ@HKY*2JfdC>hDxbYA zIiI5Bf(491oan4aK(QqQ=CJD(ewr|&h?HFG(*5)+Vt%(X_FfU8FS}#nHOYd7^$2I= zUYH>lEJ%bH3>NWK`Z;`>iR%AMu!kIR!IwRKPI0cQh*1CmWEM&1yyhn9J+9R&4Gy1? zyZi6V_Md8MZ#7LHOWo=ofxyIa$Tr`5T_5b9`m=xa>}#x3(cJ0WKIgFBKG@3Quk1Bn z-pF|J2r(+h<*`za>j&8S>cdKfPuP8^g}V=8}v*{q;V>HpD&>!heu; zhP7^po0$!4c6QFPo#Owc{F;f-S(NY z<)KkDYX3hQ9uH~k@u{gDhP!=s3?h+w#;gRtaf~q!F>1h2UlnCVLxG=XjDstAZ<4~% zNAc~?+F;zdc$Ab?5zF7}G4TJL=P{*_!~X}`#d*RD+h0#*L70+E2?U(a$7o)Cvjk>B zBp4Hk0Nsbj_Yf8EXqgN{bo52fN>s8VlKuq_WTt2JJ6TJ%BeeFaji^n#sjkUxFFS(# zyi)?^q)=*-|NH1PtHFP0kOYsUk%h}B54Ivd^V3E+=-P0jbvX3I-FkqHtID7)1cyh-+5@Q2cavf4&cg znLte;L4*Er)A7=Pg6Wg){kJt3*JJGX+*@>epQc=jH1@Xg&abbIh~jQUA`(gxqvl_T zYLo+v$2;BPN6)R%25Y3PgQbbh3bSlU{>fQv8C^Q%SmCpPP3@b70) zL{`{X|4z5iFk%*9Q-j_hhZ-zpP~-~M3N~yQfe_jqcuG-}LXC2OW)NsV6V<5q?A}w; zQFpdlbEevIGH_g7W&;qDh;WSB3-qiMfmY??ay(L35DUY)`AQ@Uf&pA}2@pB!yHwaW zX3nqy0YM=?kb_*sCg$bco>yYj@@UCoS))?p|4$F+LZ^&Y;`y4C@Zw6E*&;pdb{q~{ zT#x;6d^yzmjK?d{KBU7ICZp*pl5|7@(bk&lsaaz9>ir`jy&i8)i}Wh$%k3N~7g3LJ zClg#qHrYr~!W&vlMC{v?4bZf2EAuYU&PS=%%yi z$FbOb=0I2{8nry?nTz8PtG93-_XlTRx>$Rt3StE#m_U%(+lcAiL4#LU3idH%Hk)Xb zc?1$6U?|XH057@1ZQ&w<1C&XJ3;@6YU^PZN3t@XwJ6EA7VQNeT&*`_ON>ixzrlpvg zK}&4JZz97$3>wBQlxw+dUDF^bmP+|`q`s(f2x$<0a)D-W(eM{D<~nJVQ~=2NKqb|~ z(>n7+1`A})QwfA15Xo2)X2l1zVpG?(X2LKUwOEU;kYsno@i5o2TM<%yb&?Atq+2Ob zYa~axCUa@#raqYMrq!;h>*MPgjIl1FEr~C*hKcf%d>z>+YXZsudRcv$Nkwj7q8o?FTjmBftI^J}Sa73@0#INHp=Q(Ym#ARTBRv0^ZBzIbY} zuF`@c8pD8Lf}5d(C|2B5Hik3=Mz%m~P&%?OP6^v3ro0ZT>nETP^plV;YB;xLNlLv! z)vh@|EY|=Bk7s45NR?eDT%@50wv)ew0KVU^wf)ki5QpCOsZxJSZetH0&u}08dh(oT zIX1*2DHi=`CgyPSj?d6pCH!>kyZ42T;nq(5p8Mu@-#q_5=gD$E^ZDA2pMLiKyJrZR z>B+D__GDUVki-xPEiY`*kNjp$wvq3eaU-Hk#ay(!w~xZS&D`~v#wYuR;U;9j)`GqG z&khk0AI^kw{sdbho)<5N$wZIs1f8`0>XCM169BX!D23Z}LSH+{mKT2o zlwC~n<~ajAPy%oO3g;(hOZIO6PtCXfcorq-z@QL; z8z0wv^{iSl%My|pfKep0h=`bGLv&Cjnc(*V^$i}8f! z7HoA6nT3WT&D}Y+U}2?o(R=nG7A1Aur>{vYg0+>@%ygWS34j>PvXebG6vG6d=a&P5 z(-~k%E2Wn9ZR&HKBjVBvwl?C5MHI#er|v$|8mmY2{_GcKS;=U$1XE9E`%_zzlyPvo z_$ws)ax-8vJkSQ|^R093?VlriZ;|s~2!Rg9d~-j4m1Yr}aNE6xra6@1!tN>|u%Oj_ zCY-m0h9MDnp>90QAQuBz96{fxJBS*l&EN9!!=k@k)888F zy+Hy7kL96+{JON7XJ(W7kDn+=bS$}-3g>W22<%)j$UWhDPjwJ~ zV4)EUfAn)Et19ADI_%!!2%SkvQFx_EKvEy|zIFv9RC)vYXW!|Zw5Kk=vf03@;M3eQ zaa*aER|xaw^I5P{rN+>h(?XuoCGX2`Sfh$Jt7W;0g0Jdt#`V* z8ME11=@Zzu8rSH&*qZ1dn(fDg@jdburV0G!%CEJSOmx1z|fRRMk46jBHv>>sLN&?Hk%3#nw<-r&!PwlccfD-J5o z#)UE-XXMVKAtRa7;1~e}z?fP{z=JU;b&Y>=qzNAGd^|JAkg5W`f7#fLT;|)ErN&M+ zy||?UK_84l1am9EEJ+usqb|FY#h?vJ*cUFX8Wt>Jfc}ayp}rPbSh&Y^RQlK{rRu}Z z92haK*3q>ISWK~qqCZYgw>#RWi!BSjL*dp;>8c=W<-k z6Fm31Zc>rvXcWD5ODw$)ipO}h!s;;GN;qK4m|%3(76zb@)886J7L?}n<1K(y3!9*O zFmCPw)BVaLo_2|3mcqd$Vwvqwgxg*;*)kVd87!ZBp;?NSSbPKaZp|}8S-t3}M{I(7 zld@s+EG!y|aZz^ytc;OH)XMO@hQXQzj~PVWv_*L?`*I>=bWWUu7)L50pvzetZ$?7A zhS{#0bcG^vX+GKl@W3ZBnTb2@L5d#z8!ZXf$~w@APE$p69;LO`G zOFAUyZi{-`7cCej-kO52pQy3apc^w-dVQQ?v0Z~+qfJ3J*&tLJvsO*decO5NpUQUM zVXyC5K6-gK&OD8ZY#?r#4jxt?YWb(myu1E^L1C#Ag3F*q)SGV0wLIgvt9F9l9QT;L zTIzQ!(FsuPv~3FuJcAtoxVi3af<9&sqOt;Z^^Ck0Y^nB0cVP7i`d!m(+%J)uj6Pz! z4&(Q&huXs?r#@q^U&Hk+yMJ0=t)<+;4j$yhamO_|7 z_sa;sal3~=gJ*ES0W3p#vy&bVvfXv9T^}#OyvDYSD~NrG*NVc`o3>(a2w?hU3$VCg z$|SZVuq0=TR?A2r5kVuB;xp{k)rB&9PpdCz=7C|`u&%a%CR zQonWG;Vo|SiJ+>_dAfWeN5`!(gY6E4W`aEg0v*_`E}^d5!N*OvpwCGtwjqZu=~gp<$&REaB6c=&rS>YK>-Ipcx85G zX1%(1GPTS8jGHk$m&81#jGsF`u@G(mxy z4RxEUjYZy_hHG}E+P$_{l=`^nHe+)ITX3b5lC=YVQEISr^`VB z)|jF|NQn6>1oqJot16cAXhbnk!6s%j3lP8}9|W2;$w~5B!+S8&(2*E&w$3d^u+q$S zFtt*EChg@wGBA<-V%CUJ2jsHGmVvj|zBgE6n>8Va0?Tw&rh{EfX@5zD(jm(}txDW! zdcR@bOC>90S|Wq4X`*7QaT72S5mIzNWQNIhs{)ynB7jsUOwQpAM_Nv(1S6P4!5+M$ z41??~Dv2~0S%_BGjAVUVLkVL-N|{j>xh5(%7$P||%^anG-Y=HChgKLXc@28SV5L_= zCtk!dHW{h)YZl4k@E;JWmP0h#E;fkuG^m-F0h23Dc*>f?Q-!K=nqhKm;n+d=85c$>oqU8!?5WaMvkimjGTi$P`P0 zz)6<+AyQyGZW01+vJ0#x9n&^?eSY&~cP5NP&b}>rG+C`OCbK>suGu>SYhpB3A6D(bAHoS)+*k(-7g>yrZiEGybH0#yT(HS2>h>SxoS)d4f`7_i>lIrG9!?F zfA+p7jQp|alfJs1*WVzD_TfBqFNwG%zA_I}| zCN4EaPD?d5wec>oo;LEiroXPTvq}|)lqyYgSfDU4fGnW05JXn$X0{5W7r4SH3W#Dd zty`*cGKsWuOh}0a(z2A%3zSyyziZrdoM-?B|8v_P=RHSbSFWNE1B^g!n_pKOjt7Td z=UeW}adD<%4hLt72#9y}OJYBzDsetI;|0(2O;0YoasEr{f6?%p{k!Zo=pyvI96u7w z1kB%MRz$d;TjfE(=-~XzN(YVK|1qE;RR>8x0iX6t7FZml2U+|Pv%$4(pYu4;{fwE_ zx99e=o^s^|$pW;I1X<~SQd_BpmOQAG0#Q(ZMDu?g^9m&oBKNd)m|Xc29Pi7ons8yW zF<7@A{4Yc0VzE(R2gH;@SrA{wSVE#1>QxuXNVd8Tz(+;dD0o^NADJi^xxjJ=fr5fr z{8S`0kW>ryU6Og_?*65W zfbE(tLgtG%Nch%xp7-v47YoRZtrXx7@_b)q{~FM)u2WbFFx|P_`siHulXdn57%6GQ zp-7BiTC0m~80i_9#IYec9BF2dKmlwz-_A5vDL4K3zb!@|ghkQ}2z|23UuPI$5(0Gb zV=}ydXg*>>miRi=~! z<;j4s!hcij+)NyD2x`As4+Vo?01KD-}=UzrFf=9P|u0 zXct9NUqNK7SUFwxblot`b+5I@g{WYZJU>pv#j` zn~M9kkgLI}M2wFkLvPF&ZPX3^4wF~LWArh3bnEd%`zEOMRJ~hb^>(??-1X>4gkV1p z?aOn^cKGzD!)XgqW(}$IGa?!}42UEdF&jQ4M5Lm1y;iPs1S9ijGYD2T-A+5yMpMe< zFlza<8U}pY46#KNL=+c)x2>Z;#nCMMYc_bAb9C->7kj4f!I6S|mb7VrpdW=x?9_(| zOC*U8ylG%huuH5c6NGjBv$-k-NvtFrS?z@FFe^StT7|5|*}Nx*Ir{MrpmMg9gzO5; zDBvT&G+|i^OAz}DG)v=JonjzF+cVQj!=dphN>zIGZ@oBJ2~n{E9V%!CFwI$8nt6l+ zgaSe$0sICkYzhI0$LX$z($42$!!a+ zKA$qp544hdOGT_W^k0?jE`8lIOn~^FW`z+Dhu{&``dnSNlM(LvC$;T0Eti}C@Q5U3 z5!6_r*&mu@>Q@!gWGFY=m8l|%5lnj<_pEhFLptre$IFAfNj6m0D65FwZR*S%XyKq7 z{Qg_Zdj8VQ`-TT@6b}z;AKO4WHH7z;%L^m1F_!AI&$iGzE z($)t7TaB|W1Lh1jQDgEUT+yleH>!dE#eqz_ihVn)aYDTCjUSG~{B(pF_jo@!`yWwn zX=o67;Q-`gAsI5@}AC~p<7o%y8Nm$0uF_ha>IC2yM!OBa*L+HU#$&_n|HXuTY0Yi2b!NPiv z&Y*G_O$S51yo|oXvBy7^oSgOst})tW1HtQiE?@^!rxxS|>ci2RW(o1;GZ-HX(*cnltBc@85dY0fjYx7Hgn@XmIK-08F+$0&aqU zyciklek6lwsTCT#sp(z#Q?GJQGEDaWJBf6fBwZ z1#t`fo#TfFFsxwf7pc@`1Pv5oeB)!dV30^X!uE2;80A8p(QmMTsyOM~U5J=Q?vXKs zmG%;5lqu}*n%)!KI6}m&3nqa)fs;vs8N(fXOs=D9r)f_TB0wR@biX z3sn$bB6@q)6vI8tZA{R+WGti`L#i2>-}FukuA&Q@jn@B1K+k$VaAZ$>9Cp!i&=37> z=r}SBwik{uHJfTLnF7)j&ZAreqn5J-39zFW9x;(Ks`Qy2l?A0#V8ycdA|Fi`-)yE* z<{uekfy#HsL(fQOLZ(9NRVvvcetJcb&R36nk+Psmr2-q8XFBM>i-%1}k^&vLv~Wke zG!Ag#!&&NxFkUHI4k;!mBoGq1w7WU?-scXh!UGXt_|WvF2h64UIN5ukPJ;hG7nJk_ ziiz$PxPxKgl$QWl&`?oIo;U~Jy#t32(PRF$Pdm)+EvYA_o8jB-o2RT>0h|Rk2!_^9 zg%7cLs0A;2asIyS}$a?%)y{dInev!|WR|J#2B6QD7h(DS~84vY+@8Rsr$r$ zQ$S>rE^+y@pbRL+4nCcZcES5S-P)gv%b|pO7OVR|ZF&EfbAJ-hRA0-WW}jhnAQ;7b z#vU1ecu^Sgb8~9UVS#(Iz?Odh{Hu`J?}YGuXVMz+x$u9Fm=Ujdr`tBb4Jcm#FaTtOKYu3DOpOc^FQB^pq zQsAY8eoo?1rA|r;n5K5l8crg-oc2EhWY_p^#whH0?VMz=MHGx*bf40i+I28&E}AE9 z`DJ{k)m<4~7{)zn8DfZxL+sN%t!}rV-$ut6E|dQ8$+d$k`fa%|CYs2L4ALO%4Q-=x3+)OTr;5r&Lx6aMF$8Gk zar5NW&J*W|M2_o|xX=0}7d~MXIGZ9&GB?|X^M74rclVfev&dm0D4{Cb+s=q_h)>X)-x7sBI4r&aCP?X8^$uJ$!1Ek zZ*N}ryvy#%ZIbKrOGHC>&w5psGLd2E>`G2@K6AZf>Ku!5#ibp zcta?ZTWg0IWIzB13YDLc08W^YhfoUOO*yoVo0+NBdR^QB)uL$j+k1lXO}9TZPqkkr zb=Lrrv_#&y3Q6#XXi^xOf2-R z%|dbN7+47y6_1n~Kor2IP*xTZcA)?wV4bM2vDziqiALbG=G-APrIS`!Wu)U4sF;Xo z=g&fM{Zw*q!2l~rV6?tc)EmsFQKCJ;0q+2YK=!1l!dcp7?ur`eSBq^_g#4IiI_g0hyEiZR-o|KRvPj{r`dG}s*P~%YDlE!|fBY_V}H#5FtR!)nk07JZ?+ppau0MnGoEsO(2uIC4Jy`4_7yl%1` zzV-|8p@U%QXi8%eL}HV)rUL~55kly9WorjM)R)=J9U58R4G3uckuOPZw_NpyQX_(- zVjk;8JC&EmVOhii@Kb!$Z!E0#v8YEGkwds7ga#o6)K!ioUFP27!jMT6cIROFk&P8Q z3_IvLZe!p`9r?g9O1y9=<3W8&WU?T*cw{Sl0#VXEH6=h%s7UCx$uL&OR9kuWp<6AR z=TJh+^ccLaEZR51lBq9WN|4*GuDIc&Vr zh@c{iYM`J!NjN&ey9(HDGNb`2C(Ytxv=#QWg|=LB`unjl=>188DF}#wh-DChKG@WW zQM61j7QQ~wjlcX;P&z0gK?IpjzSf4PwLd~?`1KKC*)_t@!#8@u4|hu!A7ExZ;u{|; z$f}_nQ!)QA={*4SeS>9as2NfNE^n`gU6{lU^zo=hKoAGYg$=VqmL6#KO%7nmhW=ePV90`FZ#vUdlIP^Y zJ`}IyT9ee*U&JYjotI}}PxZHu=u83%2$CXn)`R_i->Al3UX_vRUaj%3fwf%~6j4D% z6^!>uU8eIc94oHq4ctKl{1i)I!vovobDICp-?2I%c zIL0u%>a#(tXysa+WD^>;ZuE7V3TDv=n~d)Etg*oCqAfPyhRRoVsuqd)4Eu^l0$Ay% z5r5MnpFvs?MQ7}se_3dP?N%t*`(~uEL3VO@(`2V}@z9=G2*oeRp~f1d!a)L*ExIA? zvW_dVVW3;0&+jVl^uXr3555Ms0Bwu}^!i@D(vHG}I*xS>&F|~)e$C*5gJQVXayl}l z?KD|MaWK3i&bt3#uT4z#O{9)IK4?99Xt&XaX27o(b^junrGV(92luN{?|r&S?k;9S zpg;arQ_H#c+?VrWNU;#D5B+IcN2T$rC4zPRwq@}?DW=}CD8RU0$_eovgbpfv5^}BE zAKP3QI@-S3axsg#bE06klR&(#!>#i^U$Q#SglcxTBl}Zn(!_c%=An+GspMp2h95HF zkNd=dAt4bEk)gA^M?ii4$w)sD3a<)gGT{G-TQa(Q)51~9oylNJ*&cBOKz<@oj73;? zRH8eJQ4jc1`p*^4#zMptekH~{P6Mw@PUV#m7{y}rKLZ$C+Y|{ShLPo0rrtq`aKt(5 zJ?v;NQb3SQ4khI>zI`ShuNNnU+TGub(KKa755~K!SEfBJn0dB}MC@%5MT(<2-%aN7 z43yEz$JhGrTMo#}N{@^1DTtk)GT`m4QG$oBP4|U){ClBZ15k5ix7y-#{Lep(`PP=_ z+Q#kAN6G8te$ziesdwno1%wcDJGSc_T|8Q>kb9ZyOm#_=<@bGZ`?z*$aC{z&k@ub4 z)6AjoM3o!Y5gs`O+e94mwsk+F18-IoxNB;vH^!4{M%e4s#!+$_EAWrVb1z-7(A3a| zLp}*k3PBC{oo=5Prv-3>@i~Bp5KaVhd7U13KR^KCww~LV;0fjIi>`8cRvuu0ZZ(ix zx3R~KQfz$i?gdTAx_`MB zZvH{RRb?a1*PkJDcPsiUUz@G+@PVudYpe4WttP^3Tlb$X^>+3CBKhF<#W&&opARFO{ z2}@5HJu!=Vliz`l`qHk8#Ur8tmM@g#UJUap3nt6wKHtXTgXO%puC21C&*W#F+|Pyg z?eRPePCs)_ncZyO)eYZCdLHJG==YR6l$#E-(I9thn#c&uSq1ErW#v}u1po#_grGoy z5P^o)rMVK-#q{fM&%6TC72CqgF@nIWrnjSX#*Qo{$9!7A`Zc<4TNy-w2&CIJnIOjJ z(6rDCnCFKrIWvegYR}#SuBZ%YL0s9xG6Nvxl)K#m2ZKfmKs8Hoz^RnVuP}wo<+>mm z3{!9v9T_N4?W2*zY9CQ zZhN{UYmJw+>)~o5t!E+w0ZKq-0=6XA5m2aDxVYMKoVZ_Cf~>-{VmI2ao;_Guz~@Vw ze=^gbZDJ9)pEiT=L!#uHijWxRycZhH9@h>xue}2Hgzf`M#8YMJ^W)b+7f?GaoDGn) zS74?LwvEel5acRu940YWip5rMnJo^)C9J`ET)2S2)e!5eRGWwfH_LK@?SS0FdaB3+ zh$;r!!SnUPB{s#4?NEX41(huvn09s9)O39l>N&$`Zit8*PfgR4Wb}tJ(a*5m#lp>t zg;6ht=9uALdZ1?aWmBujqL?f;u6I>$wh5splmz;OcSW z&6ug+<)S za63(ihX@UDHKS+$+o7fibq5##dq9JOd3(B6Hjz+4O#{%XAI;nmKV90eWumn7`fBS9W#CR@o{=&)wHjhuZi)Q(|saKrQG#J{N-pVi23 z3F;XNtDhH9pCB7F@YwwE|06^DW)vSZymgYw(*}4oXlQhO134GzzSk`OEFx5)Q2Z@4 zL!r|CwU(FYA+5jdwh^ElejH>NRYo zs8BqX5kaUd704eo0IrgSp#@1hANtD-`r63_R=4uaBFHf={K^gwfXIRbj$G$4Fk_eHDpx#JeSmH2N6aRoRx zgnmhMBHmXezzfh$;=$NKVya>LeO~hjtLrbDaKEKOtbbeV?hY?27@utJ9P+Qs|8+2T zOuvC)FRIkM{H$W~?5p=JATh?X)wlbW3{JG#f zdplHB`1dUx<}X>yBio}mR4?>2zwG%AlFucqkavYN(F8)G(F@_F!jDf>dv)U3bVDh~ zvx*(s{^h^O)-m&3p!XBYl!fuMK#hHCF<*7pHIDei^xJX2Y5YWk03E|=sl2~im!HJm zTaLEYD2Opd1Y-T}o@O#S1c8T4Mu~$ENj)UDai56zKXa&W+bIdMAh5cKr1W)?K>3C6V~@tyADF0pU7w@rRzc-0#j1Q0b&r?o z7Iw@&n|`{g9C?1EK2BIeLxC5P_SU<-LLKla%?tGETZaQz;b&;$(fIaE5*iX3F<-5T zSblT$z2}~?H&oX;$dobNk2RmAu~e+3E1kfN+aFF9?jYA)i(lYf`nwBA{r>~$S9Y(9 z0Wg4sS`1)fFRQh#fJn|iSk;Yk-e-GycP5ToDTBq?@b^-P;uvBz5e_X&fuCawF`=)G z+7}K%MtyRSK9;#j#jN{LJMz>Iu*b;Y&a?dua`3fuGz;3cIOh7%yLhj~Fo!owP1j*( zN}6@Ic<#4U>iSF6yS5cNgg2}dIWI`+baV?NFo7L^34_t^6bY}yddJ)^tk$i(-y6E? zlMs_&N%lku7=RLC;s)T*p|*ITi$LQ(kwNKdDWiIjuv)fk*=*Jk1waPHq5!HjA&5c6 z1{eqI3NG636hi{Pu^9x%? zsX8dmfM`fB6?klML4Q>eEXL756s%o=cB!F(0eabDS|sG_W@%WoSTHs+MAkNU5&{Ao zRyX>G=`>J4?ZvYUz|qDWRDrAk{Dy<3Dyd>yv@0PyQ=dL!AjMc=0vJKDn^qtZPD<@Q z#*?5v7d8lb^uH@JsCDHGB~8n_5%cH>o+B$oBz&-~ryCopN7n1zb7)rId@S{fSp$Bv z9FVNjQ70C-S{WvsrvKFi1PPWvDaRbOoA>eiz3%$C6vw+BSKCB4^dmoKnj z5e}a&gAf~fKF=;>kv$^zp}@B#K(_$`QBlFT_A}Rdi`Ya4iLXmO0FgnBs9CZ;Y?eE~RG&573V zHaE$_!Gt#{>d`XoWl6Ssd*;K=(Sv!5)v^Xgtly`$EC7f%ze2|%<2_hu-@=enQ<;qy zQzU0+1g|`mGG1eGhii4Y4U=093vTAPUb4UqU7QwT>{zj0V{bfo>nqW#6)f^ZK>J!R zzFE8Npb;M!A^xTgPk>Ao*E$$lV8Xw_(P5~m!Lc9^aD)hOfb%))fn2qA?5pmW+f#&^ z3M5-mcivx_;)S=_zr-ui=WOt!(O7jJ3L^^ifXJIbYbJS1i9hpokXA*vZr;Z5@aPA322a^3}L*jqBG$^gX zsGkH|^*-k1!~=FeQyGPU)hnYep;%F88V25qbk`{5n3I1g+gr|3h|z9`jIJBihs$`{ zQ?^{r6NOqgfAdq$zvlaq@wbqG+uh``d4&5MGbP!;Xjl(|P^#%$A?$>w2pfuKaN3oygngwe>=!3P}avPAKFT}Yq zM5_mh;7!EDDU4KE;{UDW0(9h^o;rJEseev-9X>D6W<0J5n{n-C3fk9hX`NQIFIb=> z9^3kHzy2_us~ZR-d8V?ufZ${gqS_gef3?Oet@dBJ!rdv?av%Hk?CSrgIrfo`k5b_N zpDk7BTS|RN)xiRvo7cqL-9?8)Fhj^6TehB_O1xMu<8~L z7Pt(?&)Rw9D7t7Mb6xEJgUI5&p>{j^KR(ZrV$b!f5RidTXmkwcRR`cd-gASAWyOQq z>^NH+4c^vho&bN3`+5bQ3B)monVQow-Z>V{b4WVBVyjt z{-0vLoNLa-|2i)bGIOS`=XE<`8d5_}PSNICWC@J)**wNoQ?`OOg%Gz(g!?&56xVZ= zIsx9GpiBXTV388PaqKV=hs5pvFlPi~{+t-87x3g;U9~ZJ8;o&1>P1CQxT5D*_U}M2 zFd%TuI;+EZlXk?YnK9Z<{Qo1Yy>xMLO5O{MG%~MJ{TD|(^mK&YcSYDL*jMBoA_E`@`_PXvn?kch}XQZlcc&&evR$6sH8N-vj2N!suK{#xj?RMF6CXfb<< z&~7cI=~JnXxceMw`b@uD58w7}`mZ4Rq7cBP)Df>&%gK+tn@Di%_R+w##L4-peAc9aG)ZPstk8>IU7zksg2@Hyh&I< zFxD}$k7z(Ogoq!-xACAk2>6lW&8=qlm(<$IC|FNxZr3q79BF>h%eS|kt{2;9WdVh< z!>?xrnL50>p_k?K7@dDXO`UpnJ#{;Wi?m(K3eKH``4tA(?S+&P!65*`<$JYL0!S6a zB`wUDU0Mqjw(!NU7Pfgcuqic~DfLdxFxunSRqJ{cwPLZfYMQp>DZzIhMlA5$h!zdO zcVM`wC~d>Fa&7M_pjZ+C;e7oNkP6=HZr;zrW`avzjgvOs!i&^f0!KmN61{EZe>DQ8 z0{~r>U6>G}_FMylP_vNa#4zynOwZ=#l;JYgxbx&lbDIH>Bnq0e78*oWwrEpdM)m`$ zRXVGZy>Qccx0ut*9d-x`>f4Eo@u(TMq-FHh+A`|Mz1j&jqm`<1FK&T4jzLf(G6wOmphztdM|V zu|MSI==C{mmL6TS(rQjZ=h#a{OWfFRk75Ev!!Cm^hBD-OfJc zx~=3(`}FH>IJ#{q72*i7%fzi@M5u=F>|=y5aLncW7T0lQu_pybvj&UXHTlK7wjp@( zcDjZD5e|g~0n=37O*v&(XQFO)mR(8m+BSTZ@XN1lm2~TbzFH-4>OxZNVw5UcX z=%ifnF|MdXEOc4FrvKr_SDTa}{_SED{5S;OHdH?dV<3!z0t@du;_ZXNm)Ayjcff5V zO-HIrm%A_Vo>6QJbMeWiJk1(t*|a?j*z?-2TB9k-G+=%z!LVJB^#ssv7X9zh(Zg@0 z)3`}SnnO}|)Gbqr-iDPjjFtLqw-Xny6tqwJ{W`nJP&}6Uqqv5v^dYs=sab2h#tP0ha6fMwl}CfcN7Rp@h{ZBIkUr>Jn0qQf)Tz zA-|RaxchuMlEGtGgFQEG4*haYV72P!)OqEIntR3=sh9zD*KZw@F{I82FP+2fyKfXpSdjA>7=ogZQ40~r(QB>kp|HQl!`Wr*ehtoM28&+C@G#kvNFgdZ zu}D-LoEBe?{Ufw#OXdE(O=`)UdSHm_JhRg9iUu!7Fm{RaYETY3PjC<9!^;;BRG)%x z0j|Pn+;7OSNAE6s0r>Sdv_{0fi`|K@ul**i9@vllXGmEqlTgGrxrQ{|3#)YQjMYv0 zZ;|`1vtEl6>{AarPkVB$_TSO6)Iw^R09xwPX~GqOB=uadMP4u+Qs+tWXg~FI{bHQwRJb$__0#y z*s+$%SV#PYXM9)nw#nU3{jF;7H|*bmV3Z?!|JmGDn=f896A`Tnd~G8GAUJvpoS4Bt z)44KgfbWfG_sZGz%m#L%ghAzeg|Q$s;h__tEA3VcdgCjuG>Z*Y`7x*qhHNJ3+L^`;yJ&!ym3Ikxu< zrCd* zD00|^q$qfFDtEQzzX}|uywlU_<=SfPZcerSTv8$QtrL3F|6f^*e>I{gw{?&6xkVYL zX5(+nZhUTek85k80>5aNq_zq%4=iM}Y&1ey$^Lk!IFKhv;0#bPI`v=K#)j30d5O?Tb6Wu{A7P3<;m+) zknhP3Hk}Vf+LfWmuS>O%(6shtj5jXYx-xrR5%PSW5&oEDHkuzfk%0ANa83Ra5c#GD zB_V$T{#Og|w;uyWkG@0i5I;AI_0PTgEadO?e**!;_#cUmu|Ah`yJ~G76hoSkIc5U* zz8JP06f)1@_Ke|Lu6Gel+4yTQi${;%u-`jde-?=8k1~Bdg0TNme`I(F*1sTj2kE|@ zKa+=V6mD*5&Y6cFWwB!FZ>p@{ix0zke;(i8eMhX0Ud=#pvSuq$_;#xf>iDg>BA)|m zVN;cTa9`loF1HSc;I!sBz5l~)jrOnno!hpz#F34W*!(na92<@^0jw3F&>{GSwsm3S zo{z+*;8-^{<1l!xZL*Sv6Q<4>365>){Ofp}^MN6Th`v4R*m?Tog za=rwZbU(O`MsE0PcmMJ!DRlVNmJQJG{AYT=TTgYjsQ@1$JNy>V160w4@rP?y11{m} zGT~IG^k90>Y!tnKtcv={ARl})?Qi4Oflwgi3wsXs(wLhy)078Jb}DSQw|3 zn~m(5{)3d*Ly^$WTY-)a`+c zgB9&`&KA1)&Bw@C1>L;(?w&m|uC;;gm4*JEldn~Ef;bnkucfSNk!{6-2yI`^s5hF4 zpO>5`UukxSUK*fg66#nL27CPHbpQjw)-X65wb89{E^JSn@t(AuZu%*%cjb9HnWH8{ z6NGX~79;Fm+EGbgx6FjVkuD`M?=Xl~V8L0!`&3WLP=hAZz;I_iT+{Ij<9S}fO7@QX zxTNXk->Jsld$y~6*10aVeIWx6NhYv2!EIyQ+OEtgQrqyHFbM-26HXDrw^d#D@Qe76 z@!T*7G^Q&HCb*|&Ny2uD0&pgbP_fPk^~l*0;qz0^s7jMn$+Y!Y6Vev8RN|5<1&-MI zn^`(c-8VoTk8I#Brf$%LJ2xs&A51`kWxaF5tc>d=@XC&2VI*^pwMWTwpKrJMEeUMY zw)g2&(R94)Kzn7?aEjQ6AEfT^_#a9&(><}fg3^`pr||5zYs0djpdDrQPIS>TQ{~f! zY`O}TSYqM@^VXi6$fP&P2ZV3nUPp{7KyY1OXlzQFv77lY`^Jj zS=)D)?-*q78k?Jb+TZ)WmHeEk`hSytMpS(RQ4bJ@N~089Gw~knlLInfy~7Fljt_43 zx-$2dd8_0)o(=lX-0i(*dHP<%xAH&D#?N`!`cL`)_q+2wmuuqh+3)+`#N*>doM91) z!HK|kxDQO>fFc~h*m8iFP-tIh2nVeKNWsDyNSDb4wMzDhJwYM57X}K0-ku1~EnpxF zKeyfHI2jeZxNpklnwkkG?B!4|0q%Se(8m$eLzFTEAM5 zf^1~_7Ckr@%huU;OrM?>pbOboL=XT#;1_QJ@x2f%cCFi&#aEo(>TN#;IO6*YwXH^9 z&yvEHSjyRdK>_9e1AlTv$om=WY3}UT$8aC>>{zv}eq^p?f1 zjMpx2Z0=|HtX3|~7O6h3DV(}QB^(utZFx+`IawROfUS+$v%9reD?57MCC}254Z@^qa8HHi667iX#3_=dbT=}Qn%7(Ylr0!n7ht=XkeXC*M)m;4iFkQI5fKWBLuGOucXfrb1$FSX}nK}%>S8h!| zJuzOh26|^BTNd-c2q77lXuwJ~_%5LYBz$^YgAzf*hAkY32R519u!{q6qSJJtmtziN zgD#YS%mC=iy?Cj7Zn|6I0N)vG-LB|z-CrW1L@M*Ul1(a*9106~NJ)>;F$^FdfMD1T zY+Q)wqF`Zu)-3GZT}hB$MBJ^GHJa+o%=r0K1~~8SPK*)06CWb^?DJ0CvzBO&eW~*D z=oH1G3be9s#9UzG%haU_;hR_@W2qktN0*3Jt7ETtC<-}o%Zf-Jvy%@&G+Rpwpg60b z-E3Ez+D*Gkh7a&(q0-`Lss?c&Xcnp8$Je?YB{W|F#eT(vf-2^vTy&@#r`f~MKoB}% zXLQ5>ZQ}u*PQ|_lFsK^XqsnwAq|RBFj93TbHuhqf74U4F@`xoI2G)uUPq4Dl6G6-d z*!gIT;T1!()}ff?nbYxf8T3-X1^{$q!=_`Q-3DqR^SvrKnPaZCjg|t-(J*kXJqk)L z7M-p89SE+ns8@WUu$I=kfInoU3YOr`$14Unv4b%XZZbb&w3%;xuCe zJwsVDE>^D0w$`nK299_P!iXJ;<*p$6{brA_SxqE18aON+euRgQ11_dTFe^nG_za?{ zk2VFD>(dMqY_R?ZHcz*P)lqdW8=|Ol+q>2{HI>e;2)L!fkpaLWqQ!z+xr?hxatR00!Y*|*2A8mUe z(ebBj`zw_F9u0H4#P@e+%8?1!C}hL8wxj^$eFrCVJbCU+oqf)V^G#b&55(|%boV?P z+baTlHMs~LyR#>=uKthtDP7Y(bnxulm+xil-#qd4)|R399D5U6SAzO!BXZh$mEadBTFi0v`}(6A2qDqG5$ek28__Z|eW{Pq@FM{Q4;h{NDM*MOYHeKbJ*i zla-_SF(D5B{JSGFoBX-}YU<56AW$ z23f)#pd9ZUf!K|hfM^6Q*OLOj)Aczt{p7k+S}(-G!0^1~obr?QmlbohnoqKIF-P)0 zWh(*Jd3vDIv5;|n$#F~&@<0B4(6p8vfeXC-He4NSb%Jlew)`N%F%e>{sTlrH7i`~o zu0qL2f0CXw1qG1C)}MSSf3(qo?;?GILzaH%69|5DEDO5(KbM^_aSv!B#Zv{sd4 zq#=q=hb_70ApZPHt$o{6Oxi(A1)IiWWr~@vQqMoK`EO39#zP@GD!kNRS+;CzV_4P7K4#ci~Fc2mJmMYdrVG$ zO<>~69SX4us?m3&+c=mvJRRJ-l&7mo8w{)$#C6p7FG&9j#nVClOB@ma2#`d4;o|!L zrjipV?FmFOc@<4(-V`gfFAacY57udJT>EUlgAu6uzZsoL=-4qPF(l$;5tXVdNcXaE zQphTSYfC2tPsvv>q!Xh*+NBJX-6w(C;?Ozu$8>Ic^^Vfq1-Ch=Be|YT*2n2I0W;4H%ky1mimy+~^>q z>D$V+V5~K*hQ5uhOTF~Bc=>hCu(vv^1;xzDH*$!9p0`~;i1L8aq#XtpjYbhL+4L6# zU_pVbsIh>!ro!&JqKHw#A^NW`q^;p=XK{~WfYviMr$v-1wgJndt7!`m2L_QhO;eyM zQ_L-bg56~H+$}+5?zt3-Dx#eSGMGhQB;|@A&qqozeLLYWROGeX82eALM2-?ZwwtsG zw2~`qyJ80Gf4QqN_#dC0*JkC!XOTe~gfZ%PU&WaGBebDcyvS<}%gPSxTaM~up1Wr;d=oK@i^-N z1BxeayK;5Wr7fRZvnk_E?<3?mht|BIbdN*kemb@s9?$czZF_ji9Z%tWwh#3$5T67^ z8W@_-*zW%4xr5hzT@DAAiKo1%7oFSnn_S;EivaOK0)Ng9kR3@B$$gCTedd7Glv1TL zOAcD&i8Q}=%xapq*7#lid^44pKF8d@D^~vM`6I^}r=c1$Y+X7gSrAs|PDOt$ss)F> zI@VdR?s#2~Zl5n-O8WXNv*k6`jrV&EAN&Uur+IWmgY1%cd(t< z-O79q*4hl#<>ZEGre*xfz5$)aOh5?rdDAJY@E8ab3%q5*MFtSlbq)sp_KWBkelhvx z0ksybx!l&-VV}?YC;_uD(;#z10K@n8N&w)J=#VQ22G~fe|8%PF4dXm@v(i*t%dL>j zR%ur_C!mPd6%##Qs$uplrf^G%QlkWG6B0fM0+G6Qt~7)Q?M4xEQ7eKq34_Ruq=jvA z+eSD_0Ky2O$<|G1JYt6YT*-;*GPkyn1ojvMb{yBcUOQ?4PfQR`^?`OXTDu85}m8*H2dgl%qiT(0?3%_GKpvmOpEHTOcLRtA9>vmU|W);`9J z=HYVGn5!fc_9@moky#o^F9Gvc~{26$w zNqp+{X_53ZtMJD@zbdK{fY4c_j@p#eZuRxoFnLiYsUGgXk~LYOUDGfyc(}Gqtkn}a zf*>K_y-cbrg_9<@p9lycjAUr_nn*Sz(UJiTh6AK92qDh{uJ!Dyb0I58hlB%Lti%Tb zHi&5f8}@bMj272(yfHcrg*~OAP4HQo17){a?L*vZsQcTC^D5I#c4)*Gl(9(|M1kI8 zuYpLW0ixuGV66Q$vHmp42xFy(f#>w9o4fu!YybZYKyTgySPxJ(QRnJj_W4u2dGI7BG1-}gX9`yEFFF9 zp-dKel?^?*TYUkwSiokjylaw|i%!<@)M%l6FW0D_8@GGxFDCbiD%I^du;vy*B!YgsY80^QC$IWcmq={wxGnmH~& zC3#;4aNbtE)nPTe44${Ag7WQyJ{L41bUYfYK>>(_Dx&E#3_(R5fqWtX5Hmq&OK3w zto1$JG~bZ4tYrnDa9I`ySOA(N1AU2PcW4fhF7(vBj z$W^v8#1J8o7`#cXcJi+0dasU*0u|G8ubPmmQuQe-eUbT#eA`8#vI|HML)~Bo#}}9G z4*PN*(1v*Dj_$=3uz2)=G};UI&xM@XP8h`1o-o0D&v_TD=$6Qg!gWa)tBWF_8lNFi z0f^2aY1j4iF>TVoV43Wig)R*f02|)m?hKg)G!}OEUo59f)?c!CkGAM+(C+tqtu98v znlV9C6gqS(&}`;#UHJ0yxo|SlY6}z?b)RQVCsx$jdrP{|1 zpQ2m~rJUl|9R2YHJ472JwmC(CQS6`|Aui>U68f4fEs-v--4t;j*wH9jQ31F&Z9;#% zfP_i$-e2^8;)nz_wrSI|Y3kY3yY!s5mg(BZWs$~B@^7iCVB;a2|~P=b_G?L z>Ry_R7Zf)l0J#;#797>Q&(L|1v$pKR3>E{W57)z+m69aRvNK-!1kr zXiGm6rNZ*!9YuDLF%!A49h@)0T;I(9JoS`-c_!*o2lo9WT*AyI>i0W7yZ*mZY42T) z0d0CKehacoah2zT^C8Hm`N=P#+;0xxG5vm4F(N#s`?3+Cd8IWb4%Z>>$*e!n7_AJs~u2hCdb?S6|0wcxe+sCbm#WqyBAd-TX;!x5Si@o7-tGFE2IdvO)!Ct&2j*-krw z{luvzOwy6+a>Ot&<*+P6J5^Of^d2TCr2AHB|7&+&lW`xi{=681BZ3e_Ypkd&GHj{r zzC@*F)8@^(`#!(05O*TS(l_iTzyXzy#pyX)Pnl(*E;|qxeM=2!1*0 zr)&8=KL`9fzaF}XeA zg98m$#W#;-SpQ!SU+wb7VNg*OQ-trH@iI{2eSN@)u|0#Q74fMz&L?Kdh>DD2CK@Nw zZ~beioU?b!<@7x!rjE1Udk)8MnbL5zIt|DF-G5Jy<==EW9&KKQ;UX%j>#sZB?c;{{ z$4kkzc

  • OGmCybG9o<1;TX+-Se7V5(&`d=uTvbr0m|NOS(uJ7WgYWfrH&qT1B6%nIinFh*Ur6_BMge&v>sjrpi2jr+viewc zt9t3#ap>lhK!p#aO2t+zjDMMu^tQ8m!S~yp(CxdEz;oUb+fPGL=vN7PZ}}K*Ueosh)Q%0i%#Z+w;5$_Kl5bfLdbtC{8wWRH z8+d<2B0bb1PSWv-V`4z|Jo0uU$q)}jPCF2Mp$^JhSjn?bKeeCr{Y81yq&Vl-?Mv4O zDfQf*2Q+2pJS#PO=Bb2v-XS9shIcxJ@^ECpyDnwten4g%_OVJU;dXZ!y4m z=;>Ij!a2!K&DyRs7dk(7#{+Ovyb-^&A80w3eS{2}}G?X1rO4I8?EGk*mEgbvpq%zmn zIm^0M!~q)`Oin?-Ew`k>ubRfnmpK$)VO$u{5pxua3$rX>-C~IL(Tb&}xR2zo)AWqR z&wHk@-RbAt4comv7jWR8VX)Z}1kYnIL!Sms3#68WiFCWTS}+hV#fmTGK@ub&EF>fP z#kkp4PEM0l#MZXr;NXC2lVe=r!uA6OOWXzkxG?YTK-JD0nQM!u`K&pkK1-){;#>ut# z=|$1MRFr^sE=px7S?lEB>%oP|aIDWwd$V%C$29E%Z8_I=Zeg~t9mZ|nRun&)(*2%$ zq2M-&MGvWmy+u=IGWzS9w5zJVjLHL$_05u-blmMwYKzEh<325oG3^7SY(mv&95{3k znDrqTk96!x&1be0ysA3&pvD+d7=*H0Y7XuNCFd?N*tF0>_LS$sP|;?No*MSSp0?ii ze178i!xh6n1r4;U0NwL-_Gn;BDx^8LyZY6w*jBLdShKEO+cur#1+oi6-S<5jDM203 zB+s89yf{nWo1X(6<|JTkWOA^5-p3NXC9#e>_HbTj4||~6=;kpDlo?hzAiZBqAq_A^ z-`>{C6WD7+J2n)EI(1EHENSU4flc`CO15_aLjVouvKpP#n!atQK;jQOXwKD@P^?Bp zuVXg+83bjdg4E2V5vqc}0m1&o({uE?ODmo}PFi8U(P?t;^A*iUPur#CHmu^AmJEKO zp}cBOWxj5!9pjxEd)6#mVa^`i>QUI7IpaE^$G1?Ea&$?m2>Y@^^P zSM8#MhtjQPy;*5j31d^(O%6pAmeil(oeYdj7$+_tRR%iB<5;WH>diFSaBZrWYdK9&JyCqMQb3z&-4VQn>hPdn&bS6e|u&>%NI*` zpt%#gta2T#5WXE1F%#=ABL6Xo=LwKNH0Y4Wx0MU-BlHg(mxS2hnDJ3~g`_duo`Pti8n*xYVaYPeEzry|^ zWR`x}whgxnOuV}*!TPuu#>@9iS~?DxJDbGa%3^O04e+y1k#9tipIUKBJ&$mvolL;0qU%qv{4f1=w z-v>_3Pu!&MF?ZLnz~TTa}t$ca>2824CC0FTCw|eWvdb4rh?iYSE(ke|tLLjFJ_hX`!yr)yGa%0S=vp-(0JxV7;KY+*}Ph=q5t^#KdSZ~ zf+!x+@2P$n5oCbVs9?MvKkCVh2`+V{Ty$rL6iE{a7<%p7^gHUZyNKc4Gjti6ANhS< z8`p^>zz|0m!4bVHRF0LPfH5I%_nn(L>Fzd`Z!p3^Eat4SJqpcWiH5FP3_80cU@&gN zX`q3}PCe7ZiKCn2IgHUTb_i#pn1G1L-YB5~)CWw5Qmho9O`4035WH0aC?H^gi0SuD zKctcq9U=Zj-f=mY+WKj#iz_GjBtf?XKv8m{TH!WZ4m^VkpWB?5aPt! zuQQQFuz@A|eZLR4Rx6|0y|wZC3R=~$Crj1h@|D($rStH4HUPfO z$KU#Z1+bw{WMenqjYr$qkKr!`1NOf5Gk%BLwF%`cAq|~3=*+g#!2O5VXR;7!T%bWn z;75pwI!nm^!h$C&DwMJ*k;HPJ{J-HK^z!5-iK8cq3jg;Qj}h&wi(qCbACr0O^Sk-` z?*?2>#vgZ<7;6^ylItF3Vwwp@dl6_Y$OzN!D4_~2wr4JH% zSBw^`)TaBp`uzv@?C3T-6zrS>Fm)r|qfYXKjw{z~Il7{P0X*b;=oNZbO~t`T7XdGf+A>@*&Q6dG|Xh&LIGT+l3%LHrbqVA742@ zDZi||%!-ETmZyCr{)oQyBVut51+-;gDR%&zmiN>{Rww^aDFb8x`mh6ur& z%{G=GG7dt9w_`2VIn-mIV_6WiDU8k4O)6PhvgcLW5Z6)`D%tAlLt(h@A~-lj}Ia39}js`;heWAz1*{$o>$sxFwt`Lc=(5C><);yWElOufG zzmFakm64K?o|H$*fS0p<2eYnTjmWOVH)mGT_^ry&cEx;e8?_NbV$~A^nzGtyUhka?Xpm(N0K%pF%mpEd4G1Shj4f$3J3MG$c193OUc&%v(`perIJhu2<(U!S_Z%EaY=bocNyy0FN>XTIiyo5C8%GIK)8h4V-d8Mfu}?R8btiaT=dZ4(8(d^&T0+_cjQD-T}CrY(S}4w?Y@W2YHAbGr=)mn zJ{vQUMHOPNuWJ+(BA$MS{C~Rf9Ov(UeZ&?%8dUG-PhNHD$D~c?>|De}@bA9I7X@S7HARS`D29#R3@WifR7Nq1s;f9&zqh@IQ+lsgc|DeT z9X+=2?B0(m;KuT+oZyi&XK3JK0d`++)1zT-HA?(MSQ|iaIg}G=sg))qP}lg%T@05U zVaZQ(cf|QIsb)wEfRaoB2mVr#ixEUo^Y&M`Y3W`T#=Ur%XrBqcO7&eG+-ke021^OB zr3!$>OOi)|WfZq8RX4ZJh{3%uh6{P?K3Zl0sRhZ;Qyl@k+<&H%ZxEoFjraDO%YCv` z`c$Hi2V$6r4@E1e31Es6KkH{&2v^wX*?4}|p7i7P3D;=AAIoc;huUrN2RQ^Zcul2q zcmGuX-x?TRAQnt(`O%xXfhla5V4+*3HL?JF&`K6)d-Vu$mLPG2N%*dsRq(x}D$O6g?Cx~Fjdfc3T7#AS9y(rbO4E~-0OzT7})N6D?nhG`#H z9ZkLLHuf?~MeLq@*_-6|DB*Pf`xjHZmx$T#4HpMHw(MZpm%{d=cbqqs)a@E+7R_fj zL&buOpW`-m_>mj$7BHL{jy~-_%|Y=%oI0%%rR|qEzuv&7aTQ?;&~9lCb{$wEbI22h{N=$@p;1>VoF1ITOaVP3Ea4avTW4YK!Pr_ckA?z?v(9k758%I{XDJz{_21&(?ioD2Ex}yGFP}F?VaFj#RTz~>L`8xYZI@S z*fg-#G^&UuMFe*Slx7}%*ITv>|Ji;Ml9A?Zt)(LT(oz%tWt*rqC8P^@Z!6xJP4@NQ z{f#I&dhdh(#g=h4pv6KP3CSpDUcQOtcemBAFNm1By@1WbJ`$266^{)pi&q(?#U8YD zi0eP{o1iPKKkt6W8mTn3brC>PKLiYzyR-v^3qvU%{}>yw@}i8?GxatZs2lT{MzuWd z6+(`Uz_BReM0A$Uh{Ik%_`93cH`s3O!tpC{<$d789fS-ox89ue4HkFi1*mRzIe;ntCrh0`d>~Yta;ACQC22WfAur<8_^z| z%7RWmQaonO(X6)NHlBvuzPdo(%qpapI~EHdjU9o~N_#8lwCXzV*X_v0UPTvFEyH2c zY)UnFI+NJ~_M^fO-icd#RYxfRcVvMRDC(BAmB^pw$HyEfP8ad9Cf7&Dm5sle70oJ@ ztdklKYnf72qk8sSVydforZ&>C*?+$*HQqU|b^7)%5$f&~-YtA>ei;1ynZe9=4c$rm z;{ODrbtI^OHEc)aZt)}XnCult-4s1&y%rd)Se7Qg3VTT`IZu|7yUO|J{d;t~Y%*DT zrY}W~&Q!Xto^eXu&z>2YyLQaK;DiI|8{zKiwc5F=rt7n{VyrTNxb&aU@tJvLwh>n- zW}SPfaz>eCX!D~#|IsdN3yEDISCf8{krBqMmDeClDCR`c|c0DZ6r zG7wzbaS9uax)8y45a27OkXM7z$c+<)&D5?~vlFB3GcuiRttrP7WToVkTyfmqyY<+792x!pgVW&x$NkT~2nv zhnJZQr|=nXrjjN)oQf=|TJrLR+f4DrcchPoc{5p!xjHhW%+Z7C4yDIE)rXAzYEHi&{+Xt&f!?*%O>3Mh z-K^Y0b_M}J)g_(C`)L(iuF@h{y$QSB&Gt(h=0)3j&j%bO?Uf?X)>;3#$VkvPXaC_6 zJkmS3)^G4l_p|JHCxQPt{sqaSJ$Aw$gciV=zqN_~{C=p-qGz3D-ukwmbAG}vuv1p} z{YPP`tOcvA7f($3AO@@IP+^WQ6c?Qd>WTRy@5Ox(Z=&+dCG$q2`MeVZMMGUZI{S7uBo zA#1)(UJNMlM2=1ZtSNI})QxrzQipLW{ZFW5NU?4L`KGo9S#XB<@R+3?L$9FJZ*KkQbM44b^0Z#L0Vt7Sho%;tmEa`xlq zEWwZ7np;)ciat5}X6-dzD$|eftU9k!q`HE43ajtqV5Q;}LCk)Md`Y);W=3l+3SGSs z62|ZnGUtta=H!vNX%Uxg9lLu^zd_U!~%@jCHkuq^+Zc2|8APh)5h-6aMv2TBwLj=O7`AlK?|pZaCM|n z(eL7w+?R=OCx1Y%g=4b7$ath*`Jv-`3J{RLm<TO0%OcUU=X8s+BgtNc^} z4c|J@oE$p{VJ+Xd9m;eE+V#V6o&IiIFyiTA^BUYM*Ix4KPs zt0LQj-V>AM9KH3{ft8Z<_WKh~AjPp1D7@vKq??3xnbI(fgRXIbZS36l#%JAJW@8FpsOL4T_ z$QtLyNE{`Ri@zIBD7tjJZ|Ze%^fRlghe|zuEDP*C-CMd0rb_$vNnVY=Auy3Cp9JZ? zDy(!Aye>q2mJ(?<&dm^>rN-i@sZAksjnd&D;k;q)(hYs5cGZ5Nvqlnr2m?HNCNfY++ ztYYhydGWyOyDsEc-OYC7mBzvAE~v$oup4GBlo-YPWa-K_>RVw)6;uYj_T+M^NK(@0 zNlT~?uqAO5&>Et?ADt`c>tB)pdi4=CklmbzANIX#ihm~pt0mFAhqgIFR9WaPl=U?F z6(;#&fvCK!QxrDbeJzewy?n7b8h*4XXbFELv4UKF$^suF*&d)cm#wdnd}JS_oS~Eo ziJS4ew7B2Sit>@^ae37Ga@BRNVsyvSGn}Ms{!BZKMNW2JK&@!&CUUG+u3>NAm zIMZ}oqy-ay3;XJx7Y$aM4J$qeOV}*PrUz8)S;$(7SdUO{mk}%-;(fN5vn#qV+bXD{ z=d~hyCA#iBXjb1ReY>R^@Fl{GC3<8e_5c4ChdKT(vM0cDI(13!#%V+gS)Hmu9?=?O z#Y5cai!s@w>+%(Y^OZb*5pA(Q;EZJtlL&+YQ z{LfEd=Mr(MKe1tEN9u8Bg?RM%X7Okh2182B+e!+6uEFS(DnGUg`FAu|@R^RyKOL1@ zt~AtpxdNWTJN89s;%8-mnyx<$ug03}X!HrR#igKoh_G#F+E4Gh9*_{jcC3fl%5A!e zvwpWKrV5xIRplNgX(;5+xJ8tDeg-lpDM#(7XV#>R)=4aj^8U4Mnj0sRgH0})VKrDZ zn{!j=pWtoSM&;?x;+>6S43QlgPV|)CoejTcSt#Ej|5Bb-s$?|F@k$xQbI00z3kx_2 z;p5!Hd|S&sK1koEijwXw&rYYS#II_TYMxx}=&+e2D#-4%+#Io@&y>w%;i)^AuTA9UzcO&o zzha}fdq0Xi?(d$P(w=SZ5E`k!{5$`mTC_?4TH~vDbnwaPa8OUgjsR&P?($s-8ljIZ z$GR7mifjK+bnN~yHN>Or5Xl6<`sO9m3WmJij`=-^G={}S51vX432IXIJl)Aljrrdw z+)fZ*zS`x1F1hD|E&qdXD^#fr%S-Mu)scb~Aeq|pLvz3JN#gV;-exaUl{U{rhhsbb z6#X#hjt9EAHIS=4~UM`Y!f7SCwefDT@5*BRj!$PXvkxUyyc5Akt1-1!X4Nn+aCGDGd{ zx0M}iQOLsAp(K{K;iYG1;@~r)Hc4wH=}>z z{K|CfRClh4OW8c={oDo0KlxJc(#a^mvjNrIe#$r4uABKD*?-4=7j5k4e6xVL+G!%Z#oZ3L(tgvC&LMA#7tiVd*&mIGvifiX zb&EtJ+~HDTy5lzPem(?d^3xtWK<9|UVk0bZ-BfRRa&$G+w1lzV)Z)=tPx13Bc#`>1 zI37i9jvS7tXabG?ZNfRJ#p zuHjLaE=0$Tpc|{=@deS6e0lUBBl^Q9UDRBB1uO9;cR+*nGToB;+x;CBTQm2A+`C{8 zGX~7A!}7L+`cT<@_XYa3YE!Fq)Md-qU0#$p^lAXKs}(K4;Nq+G*l*fT|GGa z=VdGVW}{lRGS{{Dy7?QaB*Rk>&E8gT64a;*cb$!6t%NJus>jYZn#Iy#A60f+s>^ss z&iK#v=8lxU+~quEsQpm4>;A78vu{gxW^h~!HwPCl&fSW~(e!M(eQ9Q^NsaeqBkY&@ zH==C$JrL2R_kB0oDdZii-hZ5n*u|%g0I_R7&86zoa79qEv;z(m(q7-Nk+)7}(i8VP z#|Qltl_sdGXdx0Q(O?S7oEybXt6e4gqlF1xbd3La(KTW>NcuQ+5yA)1ta$vII}K(3 zmBQ@JOI085Noh_E@29v5CyC_w`p`wY-H`Wz=WJXqV$eNo&nJSqvQz?{d!OCA^p;09 zv(!vo&6TYkOxZM(Tb96!512S@W&8}AqVBIf9MUAeQ?Ba>QE@WA?rF-V6@)48Ili;I zu=G{)U)FF|=Vp4OMxNeBbLh7e8WC6Te|_Cu_z3eGqs-RFqP$H4r|-%cW{7)g?1zS@ zPB$(QclI_m-a|5GW?!ZtW;FTF&yOp+iD_!B5(!D0rTJ=vwr0|<0j}Jq(i=QeF+I1P z?9qpW4jLIHiKTOm51+9*x;St>HBs!8U?lX^c{go7V+)!}t1W+0h1t`8-cpB4jeKK^ z1LBNDrHkyE6meaSug4UkI@)XHH!r=qw)+b!rjKQ=o|ZN=8?y!tqU3aKBCfv?4WpU! z@p|4rWIyo)qWf{JYWQR-)?W|pi4n!k3fU@LS|RSlXG;d?9cyB>v*^1Ja-LCcXoc-w zS(mZiX*CX91oiq`MpYw2=#Adm!B?9{dsG;l?Xp1KnyRdEcKVkv{W=c{yFc})c-{SZ znPJ?=Oa#Eg3G(F^m+InuLo{zF2|zTX2S)Y|2J&yCYiFwmnI$OfEVB7A^PuzWUd#K$ z>IW~$p`)t7`rhy2$L%-T>hw$Lg5XT!MgGhhj|RUnFNE?~dlb?FnY75+@y^uV;7tpL z1+#D7x16fFC)pnji)T3*=a^K4e^=5=9kP0WX|lH-CfjEPiR=FUJ{b_&_tih}?BGnd z``Tm1#uQn6i$dCaO=~|L#Hju{Vi`asI^bNZUxJeq^c3!H&Q#9om-^$#O&Xln%0ESJ zZA@{g##HP;C+{Z0DqrQOj0wiFdA%9}7h^OF zg`r<_zT)N7J7J+0_s3#9tgYmYv2Ue6i1O)i5Jin$0pu{XOU2wV*=X!F*;MQa<4ZL!Fb%w3eG=9gjz2dW2(1gi%QvdM~I z!j}5AX`yrRw3Q)y=;s?~v|SprxZY81AWNAbWMuV&AYLpKH!puiR{^0xmPL1sIRD(Ykr5Och~*vd*7Bwtr-Y|=A2)@ z_Q&H&JlfH)+)E?x@YBin(#b_tjUIocEBX5{`~K@NU2;xDSM7dtP9K-g+~%I4pP|G{ z)%nDF=37uUO1`lVwt_VLsU?JCH4%ES^n73J>UW;iGtN<*$SKg;fugPJcsI+KAnp?) zgRpVXP?9zkzpQx=K?w{coTU{U>Y|~(^IK_mqTNOBXD+56&S+CVO=rQ%oDj#VwLAaMVm`^ikc&We1EzW)!6!ZTW(Nh`! z>-uPMe*W*ee~Y^K3-ae{I=rP<-0Eh1ST25=KaBoDHF0@$h%MHy0^<0qZSZ7YU0^C6 zzG-C06t>E?5sG~7GI88vo?^PcuP?ga1HC6Yp4llmWI4aZqu?d%{Fyrvy*J#{EeHIC zfM4-USsO+3*{ih0oB5mM0#W@jKsG)K9?w_xFh?2@-j`9ApZl(n2Vk0s$V0Nk*T}BniKnLVVu0Oj;F0OZOMj=K%gw&t*EfNr1_wv^)c%LvwhZ4MzP(EZ&Tt%_Y@T@QALaP2JSFyV3<*h$lIsE@MKIcYYZ^x3qZ@Vu0v3pc%ik|Fuj6HdL6Pon zK27b@&(X6=CtJqUJjq&@Fmv{xr=rb>g~w40#5g~JgQSB6^^i>Z?xJAWv?M>#ENU5h z@#H+sH$D;+rkd~jRL+n!*2fjwS zf8xZzCj1NH4X1vUmmhr<-PEY?1;7&>@lr8jlHX3Es)*jyQ~3R1Kl!_R^0<GY>o`1^)d>2|8) zFhX#d@owm*u3w{h<8yS`S1|bq+beS~MhR5YNWDv^1(#E)i*W(CrX=HvX!dlvTF$*! z7}00M)vG$Kmqo7jdajvVE{57;c>6xlvlYD9eDEdG`#-%JEz1m=z{S$l9B-GqdW5pW zB!x6fFynS!hIKFGn8MUAOaDvcf5lRgJ${976sA>OkdbtLb4;r^CfU}ut18ihs$9pX z7yI&2dYazBSfD&g{Tj)E!Tg>VFAl5_hItgl7rX25#!T%^DI8``RQ(3^8GWc z0B_e*Qf0YIv9q9&ou=~!5}^&4s>l4_a9N_di5I)UsTvCHsv##%_^oN&9YHc(%_+U< z*?4{wUNLF?kUssQCbmZ+5bJKP;=eblrWEfcbGMAG9OhuX5ltWHd~?7?J7pACLzAhi zy)FE09#uThuru#_W_bnF27PLe)LBNgc`J9KEeH5Uh2P?E`%QdT-sSeB_i4gk;+gvV zGN}#Kt=*+{le=m^h7Fx}8S6*z@^X5LfxqwgA`%lJ=)gLvisx=bgeX0=-Tbqb|2to%{|nWRQ$0?zA?ppngSOMW<{x(EZVGiI zkmrkT-M_z@S(Jd2y5#Fgu}=uISn2-G7+Ig(j@Zd+ZSa$=!QSQqz0HpOc}u(Y@3q9w zRvK^2Pxt9pIwwcwq4%HenYF;1J-AHM_){R>gVY4aHF8fYNeoIlwK3=TxuRJbQdw*0 z*JFHkqWslqR+#F15m4H&>s~r^0eLdTu*5mpI7dH97`S%+;9%92 zw4#O;G9OiQH9UF+jM!y5Nth{M^heEn7Jy>L`DWM^C{)xv@evV%cpKtc6v-%Ttzj-B zXMwR{Q6$A_Dfg`R9TSKd4)`;m>MLChJJ98*hEq2lcNHu6Ru%g8zw$q$TJl{XTVH~T z9WmDcukP+hWxB8_)#v?X8Q!YZNXQ7gMr9G2l&@f4-)73CEB zOqPg#=v-@$V$QbM=Jr9ye{^9Af|?|Op3(iV+jjnMER{rKxEKL*5~r5Q;f(x_CwXJf zEWP(l7!APsC02v?+QEmG8w`A@@vY^;bG$dd7cf}_-kL5{D|askMWQ-dqV@-SfHcLB zkqRP-1Wjet!;O~l`qX~T>u%3{8-LMnXybo!d=!wE6mc4u-sg##ox{^DuacqWUft*4 zS5>DVe93UIbN7{!-{TJAuZz1}=FUE+9i>ee-q6On>bHZb_!4Z_*AG1&ugdkJU%J($ z17Kg(+((rPNcFG!*AeBAJR1S34_Q2oyrO#YMx0_=KQxDA+XL z*)aL*1E!ogYra;tIa4AnPoy34Li)=yP_tfHV_s~T`cKRKS^ZSIg#GP!w6XB!vQ$q= z$md*d-T0?>m&y9ApVe1MKWFS^!>5ZanVG=~jN0M@hf^ntGG~dqzE#>$&c~tRvJs*f zlR}S}b6tJ;Q_a+GG6!^S+Iq7zV93dhe8@yPUjd@l9)q1HX4zx$!c<1ND3nh0q*mj{ zesn6?LVBVtf@V*awBNN9EmTX!YU{t#SPx7;Vy^6WtAg-GjbrlnRdWBo`}=6p*t4k+ z`qSNilEj|aLNwOFE#A+nB{H|$Fpq2|PtLY ztuEt4c(%5GG!o1FpP87Xw*R!6i2M35lCke6Nw&+2xoL~$&Ewu|+!V?z0ld5$FU8<9 zzIMz9)S9j}Z~qtBe~!atRJ#PMTQGk6lFlEL;5oa#;Hx?0Je}X-QovBQzZtEAu8C{I zRW+TuOI-*!p!m{*P>iF(7}*`ux9F~=2IwRtbyh|>4@Z|{>7 z@N={3E3t}K0uoQDNJ{nF2i{`(gKZ!2{z6K=d*Wogwld4*2&RFmawMAM!oG?+!q^Xb6%wrMAhB?8dM0kuX2|g$BiM;a!vstekp(ZSGFmSIKZf zPLaH`Q}a=7x22w2_v0=-YmmGfidR#V7bif7Pn1)?>@l}%YM1-bSO!}etH z>D>Y{@J?lq3P_g!xh31F>){Vf?*iFq>w{9jMMTm5H7G0drELLaJ+Wz<^{f5joTqIr zgf=OM>CML)Vi~gSqblx?bzHpMuxSLhH$`!_b{i79JPOK)UtaL$|aUdCaLeytV zjn$LQ{Sr^^YOAFC*X?Kc|BtvGE=Ou!L7a|*DQO`Ps%-Y%eaA0FpD+j&N&G*;%lO@# zPAMDt&Oy`SI_4y`u0#~+K8h>jI|7ypH}BFQ@lo@;`O|dyJGJF@L&*k8W`<;S&x%cZ zh27a=Xw5qS&6QxqyEw&bu=rX%>ptEpo$7f_`Fp0)Pduy(r&oHq zbr*Cqy|qbBNsg2U|p?+gB5ZT34Y4-{P3#{3oZ>*I{p zf1^-jh_D0(j2#`H%SD;F<~wOp7orN@_;FEh)dKF;tLc*UZ~m{fvv65#o$u84ei*bh znqmAtWn1W-Z(K8*x|hG_P(R_qi>{90B1sAul{`76vmmt#tR$XHE{yzQUv^Ah<5J zZg*6E zZ0!<59Q*jf)@a!#zLS@;g`HH$?*GNzMQ`_~@)`R35qA)w_oJ+D=r6RE!$fnnPnm7s zcb~yAh9n_WlKIqkH<&8?{p_l3GJ6xJaNVW?_;*;?TMEE)c^0i}@lmwgrO%}2U**8? zSTGcru_m|sxikyqk%Uc}@;$PgPt^Vyjt;^{usG4kHH}KkQVV>khwb%35C==r?h*a^ za&stw^(i`83ftM|J7fAi)J-t_p$7B}qi>jnoizVO{&SYLL{raQ=L z?G;qcnUtv4QQqlu*%pUsBz}U8`6=@z-D1l;T_qwQ*^QS8h>L0ex(}HvIg>(JGR-uu zF{UPm26Zepps%)xhlXDR`Hx&&V55{*OgpZ>Co4Uc6k4-|V*5iR@n&%BV|KBOY@*bW zzf00b-TiPkuN^Eu^^9_`s7M4O{}%#M_K%OM*+)F2 zu;A`;3AthU)re;od&72Bg?l9?BwL|73lx0n1iRd*%&(xeaaU$xKH6K8z;>-Z*`0-2 z+8>$P5^SYGJ;r#Wk<8!c)MDhnL!2Wj%`3jVac#4i-HzZh-b zm)7l|s0)#0+n?!y%5-F>4*yg6zPck?Q6kNQ~Hh5Y|H zOOT2i59e8QqYZEl)%!n zS1A&cMmaI0N!-7M@>ieWv7^!k5YV>`66xygmca8r?=a%osI)nWCmWW%`21+;b_wnaZL`W7iDCjLGf!t*S@kqbr5XB=PKBZ z9;x7a5N-8_s@zt>+ZSnnl4?$rYG)Vw`@dNvGSa5O-|6=LO-R^w#v^~dbk??NvEp{D zeV!Ax0y=nc!13BbuEZ`+$ZU18x&H}Ok~@HQ_XiE+?@bZ-{x&Zlvfo( zM#@Ge8XlZV)iH*}hMFrRD*ZnVA;y81^l5WDbdh4;`4Z(M{1XUD<&xfH==~bS`oEgT zca`z;qDH9OSn846?vbUn+>v)`>psH-OLtZcF84(3rGRMoUCq8sEL2v^a%Ie?Xec1+ z0tTX26-|wrG$t4mfbE`!fCcTk+e<+yze*vgy<$ob_(UbnDEQf%jgSXj=NY?}tEt%& z#=73gqmJ^Q=MUPZai#~T;Lp<~OoiQ+sH@TV4C;_Zv_Z35n2xglamV=u-3BG;oez~Z z(rmyW+bbug= z>;)dx*FEMuo_s|#G7tn(EqyAy`u*oeY-+Te+Qs-=Q6fJ@DulK#*~n{rKVfKj3ZH78 zHK4b^{pu-bQ}9+xb>cl!t?43xh!=>SL|9#4>hxL0VJ&}MTieM(-b)QU?WYu0G1hJ! z7+-b1m#C*m2`}+~nC^Ee&eG@P-$iKAd=w!QuE}n#do0yi#=n1El*k(YJ*aXc%7N+im-d|37d3#QBpgno|un z4FZYcVg$6y=s>L^DdE?PI0hWbLy~q|j*Lhb5HuksVOILp)F3B&DMfm9&EVM7t9TTF z1jO?z&oWnW89VdJ`ZKRk!@QSA)28hn-qYLqR;@)~LJbDPJ$_Db<*I9^15lXW0CNbr zZ<);^)}6M+-)J3cYrfj-CNmS7>qrRn0d0lGWImEC*l^2b@bos@l(1}>T{c1%+};XO?GnkeHp zda4c}{)aDEj;87~H42fxV_hPCI~Pk=GKX%Ui6cGRl+aSAu^*O#ZnDWwCVdpF;4r*L ztUcJ&+8+kg51qx|mIrxtXjM16k}G6Qx!M1!XJ6KT`Pj z9z_8v9D4A!(atNpH_)V|h+PT{Ff!7v9G&?POCoxi@`7 zZN!QfWM-wfMf9$tjiWPD11tD{TkI>_e~TZW_?%Let)Df*R+o47 zw;GWmvf=Mpyr^yWa+4^8#&T|u-#tp^P~g$pX3{I!n5eWzE)Y*Mk$qS>lu}|#cblYR zxZ=9Fh9%X+!VV0DA*HZOyG*3-5p9DH`KVgs<>!?`9ldp z7c8q{eHv2bGVBF2j3DpNQhu6ektL26Eg z9`8oXq^y9pp9GGrZui9G`$-!#3RhCiquX&9RMPC_x z*~4k|aK|JM+JIrfdD;57rR}UCWt3chJKn>%$#M&0Ti04rgb0REuB)(5ciX);PSXsrPDS_P z26;Csvw{RzZ^Lf=gDB1a+5bhxxCmQUs>j@dZ`B|!{@!@Aw~-h~yqa4+1HdNOMCS+h zDMyj}AtWSj+yukYA`jm4^Uw>3U@ks7c#=AS^-C#d)my@*DWhE8-1+l2oORaq;R#_y zwv=ij>kWXf5B9RcF9t8~Fx|PU0<*W&M-Lu=Uc1CcNeWLr%7DH{<=vI_#x}+z(?XUj z6ZVO5f*Sh^3=!v~bsbC>-+5G&|42 zv*2+G+h32$?i`Cqc%jA_MmVD`>i=PQX}}M+t#pFkoS`R;W9IT)ZDQ_TtIr;3G{^-f z)_tA@R#tF;2-i1dYm7>Xm9=89k(C+ik@``LF1vv}6)(_+VE~l}fdHoxVKh>!=5Vlf z5wmbiC*gWR-D6wH(_W5znQowj_Hbt-aJ~+tsay+QR}*7WP?f9Im|RVWNhx}C9cHh3$9^i2;ERn|ag*QRz3j0*f*{ZDa& z3(2WgH?d|&?72)QgO3yGHKRiO&Jy|ZTub^LTdIOv-D0YMFCU@h=?1kQd4f5*j11f7 zOWrp4-W1#S^WC@aUnFdFzsg1^Z<3fIbgOTEZzk+Lu9*M{=MgG9suV*K`x5o2J8PsX zErk?OXslQ(*$K_&W6;j4M>}^HOJ3H8L=UKP8d#10fF zD0ROH(p_})05^mS8XfgbBxHP`V1@7+QFjE-AMLR!vN;c4xaj0;%XSeiO1lF0U0eO9PIG?5rb z9bCPG%mZBrFNLv((S@SQS6ZyK%vs!s|Kengj8Y-tdyOM6E!1jXEig(`7Z!)x5z!xI zpkxk?leNGM_mmw8JUhDGwyr>MnD$-m@8{P_Hjj0dkIzyZb#CwWA=m9i&kiEa2rm$I z)yeo!?pDG1tin$Ywv9EXE}4B4;H|WxrBdQ?J>+Q?eK)q8^3oGB7GSJl$7J6tP9P_@ z1Gy@le?<@Rz=?^j)Q!%4^*gJpx8-~U2UZaPFB)MtN&0d9ixTJe5c3?v*HNEFhRz2n z;c%KEEyk*w^wqHIC~N!Xw&0;CnV6Xc)O>p@e0P3o5s=*RUM4*)oYEvp)XXJ*N199T z;?Q1(h|#()2~qA2Vj;zq-DWk?LQaKT3q)Y!E z!t~30qb0S1X4ELYGVUEB;z>*_v1?s%5Arf3EHWYeuMxfFaM-u8q(W3?;+6^Ln%Yi< z?8+>PjCW8p=fVJ{?bq@@`U9}V!&x4Nk(#3Sl&fGJ%$`;e9soZ;z`t>8359gz%goxr zPs6nzTV+$8kYO~fKV~k(eE_pT0+UGbs9GT~J}`Qf-~fV0<3ebXxkSAUCRU5H*?PNg z24VS4e$D|%pAebm@@`wsYMHUHbm3?0uxXD&qsKdMV7b^At&#ocH0 zFyx2@%pX6t{52K6jr5x-7(n7LCGD5?ru|T1%)p#iRXlpkiE!7yQ4$3}P4}kMzl|1s zP#>C^epqQ4gT$N!Y}rMm`kfTlw<$@6GE{n@9NiXy*IPN$ALXb06ZolW^I(~vuuE_o zHsYagFw|sFWV)p(1y;Pho9N4C?_Ii?c~af{Z=|c4{a0aY#sTKENZ`>!3c+_Lf`WlI z)WU66QuxvSs4FZpP^Sz4zFn5hxPTgF74_D*3m2}Jz;_VmtMf=C#Ve@K}y(jId|3C99QH@Co9H9sb!gpaY)nN6Ov=F=TEc-yx6CK zM#^`r(cD;#T97y;Cw9<~Zh-EHI+`;lt`#_J9+aRWV0n;cE4N&snA@5J^>I1PZ6kNc z7HxV_>hVKYTob#;GVF#Fx(j}BLCvrnr_xs!8q_x%UAkFM2`T|Phl=Yt(fZrBZEzfgOY!|7M(Zt zCr;T;KJq0>FDOioX7gQmfH&pCOdm82kPR<1-Wv3#HsbJLMXjADM$TVO6zRa!j$|XH zY+)6HKtg2-_7|+{%2+gc8dRfC(`Fd3QrkTu)NvN1%TAh=v^i`d@OWD2Gys%~y^(#M z!CquCB|y9GYU|VI-nAr)gEPH2_qRmhv7JMH` z9lns{=Hd4BK&imbMoyMitLCl>vtni!K@A8E%^FH{$!=#gJ_fJ6uOKn&N^0bCQ6rwe zTrA`?4@vx?yox?CRyJ4*X5Xh?K7im_D8&Whl|wC{nYNKPEGeK(0oUV2@7Ciujhqnl zz5_8fNVUOIZp+itQ2+UT8;)LSquUL6Ag=Y-7>@R@nzRW~dtg?ccd%5lcv#x#nBTA1 zEBc#1X-8Oh%+r|ckMj0u3C8v@Nn=WF)%=irJ$prAq1*2=fw0>ubduAO@6c5sD?5nA zcH{hhzuZm!XgN~V>J-SlT1O-23$h?sNl_P9ZJ+Hepwkfd#VFQ(!|mfyJmhPaHWyJP zbSFYPJq??&H?nIRG?xk$Ek*8XWIbu5ql};MA``|_88xK6n~SlV1|%K~YtRCQpM#5$ z+V=|*$Ec!sOSNB1Ue@rbwjo(_-E~$CfDF_FZa4fI{&~=5R-;#m-xNdbs-+Fq=Mboc zS&$tCnC0oT0#Ga($7Jz1pp!#rhmPuSY_0S!^F3o^y|i9ZX@Qr>jkL8BK5Uk_t~0Fm zzn*g?fTVpHr#;pP^CZY~7zmugJw)Xehwv~O*L|0wI`9#$4jQMo!$KtXPh`J2cIdIb zvX>QA)ztW*BVu?-5O*O=6h||fikMn))qQiBYxJT-*&Uk;)1#pogNrN;FV!k(fbuCs zM(A&du+b}R^#n6)ijhS-@NdpLRymBE=eVjA&{fBz<-7on$^xp3G6p3@@@S{53&mPz zlKis2G7j8GZ!t==kZv;;Q4k*g5|6M?UD+B6Yy88(PwpX_^UM?UewWBWIq65#lQfYb>oS2POJrJJy#dd+sACXfFMzo|@)dCp*xOb>zT8fZz&)2XW$x10P1kTJdhm;8am3cSXN@a=;&&0_JO^&~ zV*ND#(KaiGwsd=H7p(!n$98i^onKM_lU+oI*hGcxrRwOGs;o)ptU->IDQwxAUMdg( zY0O5s%?dqIIxA#_RCjQQ)f)-@-dP|%jgo%WQwZQcsF4o_d3FV2SGgr36jE2(J1b$S2%b?`uH;IrbpYZ=GNG|deQ@{0>Yq5X>Ih?8+%CV zEJ`aCY**YhWwghR&&EOEV3^J>P{k=lnv3^%Ghzikn(m^J6M3l3Sn?8f+Sj2!?-P z6`Z_lM|${1VyNOsv&UBf>bBTfXs=TWkNo;HUvB7DMgv?HGb%s(N~~j|C?jh?VNQT< zvPeSd-@Bg5lm6H7R;V5mmr;KiW}*CZ*i|8H(LRG5{E2BkO!~?qH*25`icaQ^xnt!o zm9BiqO>Ds@_d!J00|x5puu933##x$h_k*d4G&*i-ZZ44DhKDPwrUj#T!}734|8St^%^WX zbFot&!QPJQI-KaNkn5+zo$5TL!Ks9Lx=LiZXa<)^@Eo}cSAZv|cC z!ft9*&bJctPtv<$hN%!@=v{uj)iw)VB{UXJYcx*(Flz)?S^5lVdsIB%Ebt6}Dq53OoqDbXh8p^0y5xz5sJH02iokGULdb{^PYdMjrzattsi zs;)Y+ss)KsTBFWqxfS#5(|YTu|wCCNC(Gkf^MmkwU+ zhEW!5HsbmAy$w%&t5G?6%Hfkg%ud~yaX28P;wfvVvfKV0>^lgH6Dqnfp+ntO*w0F6 z6*jZu&<2y^B?hp=;-Yw|RTWn?o8{fLiA`*^mQhs5LnU7v4UR4c21pAtUwTAPmIdRN zdSbQqdYS$OBd0f=XlhhRuLWw!#h>NU4QO4{Ai95C>+#@shedddks`E5uDIw{3-YOF zjoOm0_vqESzoBHpboC8el^U}SuZ5}PR+8e?8?lTfM-H8=JP8OqH`~dk z(!b|>^?P=W8+}fV2tIwqk^9NJk8Hq<=PyJZ9@>nC(qxgNj)t&edgSxUod>FVYMIsQ zsi>HT72;or zbma{#+V}YxKx+2PK8$7sdV-upww3@ zhxAsq?A{OBr)Wa_93L6?`}DgX^V9uZ<_@cAuA_HY*On1MdFJBc+&8=8q44 z<<><4r;IOS#h$s9H?_A=tF6HPV^+z3r=Fquo$lf+JkkrWQr~VN4!05?hu|G!qqy{^ zmw%~uDyh=&s)ALGVy!Ma5zaJj>T9)GFt=0ue7NZW+q)KAepXdvo!il3i?Y5da&p6` zQ6GvPFfcFuFWy%k(~W7WRVYJ0mP{-j5UY0A*FuQNtXE%skK^gMK`PCN4>THnX>9ze zUVHX;HCq3q^pwYv3Moz!0PdE-F|%t0`V7b&+|iOUv-J76bIV&Gg{*?Pq0m@4_xbAL zG&X;fJZQ(+<0^vA?&HQPemVSHsFU(bp#RF9(WLh!{-#ak==Va>-m(m>R9>K4;bkl4 zD`({)ki716zhqt0q)0h7zx!-qujGH-L)9p%nne&#c9!D#e2QdgcW<}O2D|RTCkFFxZo*fj0}wXG(;G}kq}+q1 zma%-eTEQTF2iSXfv)x+s#HoL@UDf;?bM_-z+Q_fN#4B~p8)(Ocm?^%scVS3o!Qyft z(eDkS@2S=0xW?n#;(L2$QYouChY3`^9n3x0Jjrx)jROrIA9FKfTc}g8*F2oPUbwnm z_#x@`Cex0x8$?8MZ>a``7Ccs79CT)?lH}!ECqgH)o-0sT*K|{*^&Q1xOVOCV?f0Lx z@G$N&N>W%1bfFWG$~KT$uge;N=V+DA;u_=Nf7qPx5olan<&w}Q?%23VX-Zg`60|>B zd^h-jbQC2MjkSC(( zlr)G!vNdlT#Yas?UU^7CB&c)?j`%<}8bjvNWWE1!kNNz=2dzLRtUp)Lhnrb-)r@z7 zvtj)VNQZqcHtm(&=h+OKE?!GqkkLFpJ~Md+ow>jhTza~@u*29nfZyhHiJY^$q;m0S5Y_*sg`?ybA($}d;9NEnP|ah1FpAzY`V{N z3*ft^_||QyRONI{jtM@E95z&F@3iuMWpiaIy8|A3iuqI1HH993HOkwJuw-1r=mDOz zb$F^wh0T^_>_c3QLK-0rFMZ{J)H`JnSZX_UiZL4Xq;WYfAh=x%bA!n=khye*lKDvk z^Ri1qUL1?jbo4RNwPm}rae70C%l!#^ZhB?uNQAqdz7ku==(6f(;23m#)bxpB%umb`?Sgn~d9QtkmLn zj`^EzDANT~?s@)*-cu<$)>Mu931h)X!&wNEro7=Na{#TZw)2Xp-s`Of+_=WNijpW$ zln3W8yR2*bg8Y|fC}8JAjm+^nX#(WKl7~{JCwlzCr^-(swqOd4rJSjC+2r1#02Qz+fV)sUt5%nDD5e+}qV7sycmz~O=#yo=Sh*<)G* zP5%LlqdqA?0w7J=;r%hV?`}=3397yvnF%N?8vfP4|zM`cIWmiE>ml^q7a!BIaE*tTbII~@?y7db%SGnL-8&HDYHDn zPIc~rvu+VV4TWT##nxT+^_J3n`m7|_|Bmp_q4^E<^+5OJviZZlp+Td}s={K$e3wF7 zkfw4t5&Crd1wqSSJV_NLm!kw#sI)l74IMNcMo5hGO-E5ughp!zQRP^?V5+Th=eu|_ ze?9*_WL>^Q^GZq(+pF!iHH1;rMoZ4&1*cw<9mg?@94EKG)e*Ntf6OJgY#6bXtVe%; zS=@gGeeMYKZ2ore>y~?pC+VtpAG&3l8b9a_FB~dbAtP&=(sj_N%|er@^LF~_mx1e5 z6*H`5;Z&VLn)hY#JfO#e2Kyhk7!aB51r9*@({kU6#@W8(oWNp>j$6fPL%Q>0{jjCh zOA`H<<|E}ziLy41?#@e`=WM?rvpAyuN|G*x`qCTWSmH&RZ|Wps_g&+FZ=)BRJ;?7I z(Av@S9+ll&O9cf#D>Sm2o^~1{K>WC z1TTjFiZ1Dqta3KboTwH$WbY2Qn$!B>%4k_Fyz2Vzbd&{2vhTp2vT3>w~xAHA- zHJry2*B%(oX`{(ib$Ql+r*sdqmDcx;B^d*KGuMi!WO3FX?=&FNNlW5iJ{uz&2!65( zlsTeqEHd)1sc5}Zdoi+88<_Fq5d4h)Fl{vvJk8VfF!oQ?;PiLbeIO*01|rQxjLkuMWfDx>HDF1U}1kjnQp^IDmClBiFwoarFy1uDoO*rjkL3I zEuO0mO?CqnViwy+p-k~|!d`Na=R_LJ=Qe1|Nnyl3Iak@5m1OfvM?e>s`V{NSA3)`*b;9KmQXjYBJr)XUZ)nDpFDXfUQE* zg$Z5{s`Jgcs@v=GC|%HY?El?FYPQiY^)b{P)18XDZK__QMRu%DuOa$(B!7l$6qchb zIe!Dij+DCGEv)$zI(Fv*)+$b|6V}E})ZBZX$UcaE4T_z5N$cT%>Cn{HXSv{)->|*2 zT3m?$wrrL>A~pew$ZMUH9-&4JGwo7VXKiWaMkke%zAs;afq2~KY>z+ z0X)#!+>dmop$H|-Dg@lqMEC&#iyuq7wmZ^xmFzwOGv5rrymw61(2tr#ONtxW@AWCHIko_Wadg8 z%J3I^%zE*1Cxf;9%ZHT>8=v54Vzh-Qn1@e>B7o(m8i<@N-d;_e?X=xq0qi9=NI8`1u(KaZ*TM8;%$=jTGEyk%D(#biwl_9Y4H;{;J(WRm zpwSxwEfr*6W)J9@Apgv7M8z8`Q9q_hr^#P#3adV~L27q~= zq)QeXM5INGc2HXk9M;lp9CV_iGdb$zNS2uOC);_n<`M*Q#s-$Hj4XbY81|m|yJAU} zt5=mKil!TTEgf6zF4-`xZadAVKf@lRXw&4t>rbD7YXndpUVW@*j#q~J7~2(LXSDhY ze9v&eHA?LRl?SN6iHeansF}Jt4xjvdRUt2nWzw3e;9OBjMW6y}HQlH3eeD=(G-|Jb zBpBD0x^-LoAk}3{9`GJG6cO*i_S7$0YwZ;o-%WAC`L&nfWNABR$lSCd)x4Tjfge3$ z)faNkp)Z&Psjhz-zH51DH!5ItUs~$>C-uH-WwjWF6+C6K=sqYNCSMm$TB`0e@#0>& zHBZ6=(NrWwl=mWLe9<3@Omi(hvT=iM1$*M72l3REb^Y7VJSkQNzj>3*o;p+)Z9>Zx z-oeokAFm*S$CC-j8EF}GDv}|(g}l1{SR?>h*0JmKa0bQ6Rr|v1Zz&_X(JRdF!=_LT zw6zth7-x*MqtKp^HD^0)X4qN~*m94d;QEyTr3UvkPz`1?7-3v@d8w*X_32z>&NLhb z6?D&iaG6z-RE;*+zikVf4Gy@$_Uu`6bs{W8o-?RvUwo)?Pi)ELshaPD855hrwT_l1 z?_Z})V!iCRpfSsf=G%_+-fg>VlWyMEt&ONF$GhHgOg&5J+V;`e81I=iH^|hY^zA0_ zNLl?idY%EbQ~{LrGZry&r9;=veC7=4sA~jBZa||^R-Y80vY&&R3Je}DruldEC4{p4 zaBGBP#ME+tj*M+|Q2;W={SBFK5t3U&OWIso+fMt^CjkD%1J3S$z(g&WixkdhFMD_M z|56XRqOZHyO&%x=(|-zZB!Ns;m+Zyjlb0V(h~>deMmeZnB{odkU)P_fH}P&{vU?S}yCx(jl5FZBlN#;b{WFc ztx`e{)IG-ljKY1ox@z^)HD925+i%x1?lP{@I(a$C(TtYYVb15SWt@N8^0UVoj$5rMtl7d zd@d(?J>I%upXU+!(1~EI!lSw+TrZ&%4K2BI|+tF1rGu)nt=DGd!L2V)WemPJU)G{ zoj+bW-FF;;@LNK}IupA^ERTnO}Z_(sI{9d8e{ywiXJ`trVjV`eGdA(6&Aqu;i#}NN+d?rqw5Y{vrTBmbuMsSwS1b)DmPQ|I@fpNv_1jNiWYMO6l9;E9XCtVET<2Q1cK?z@bcj~b2QJmShI&N zIMV#ub~I{_k?ts|{#rIYTfv)yw;=TiesyGg)~Q+msRU*GA~YLjq9{`m1N2j&=0yMp z_akA!=IOtxW#@2gPg~63*fM3#$a@hm$Tj9qPHi2C8O%ry9`49TPI-ePmY28D8jI+O z@jkZ#qf3&bfNu=9yD7kj7lCRV{%ak@bpWTbt9U-kJq-|>0^a_$j^-SibN5_3zjf!E z$h&i108!jI+}am=1WU!dWb49N>_RPq*%);87E?yEho07<*!?mVA)y=~F>vYkcdD__W>+a+I$sJ#=1LI@NaMP1t#xXnhtHN@F8)VxN-wW!rb80PK&7 zxNqKNr+a1$jg-@R1x0nInxgL}N;V5|r{JQz9};YhJxmQE8ht9_Ub9>U7|{9KC&g96 z?e8`YK~UgXiA9tKbmWxBu)*-qJiLA`cr$i5>N&RrdS0soyb(4$Oy26SW4zQ{6d*b7 z>}c_WhuASnK>$aibMn#O$!AoW{u<%50|~cU!~7)S6)LMCXVIZ0qI{e&E5+rRIx5J; z)beh9>5*1c#4P;+MdoD#brc=v`Dit^^@}T-Ir$QEu%o_SSP<-3kV~d>Vol^2o>?)W z%c*a}g&OtIX2PCAnIg`Y0Ye$&`~-92fE2>6%%F>jm7DP%@&xIF!Oql>n~qSuSt#Rk zW|JB%uWh^`EdZ1&$h}@wRHuq!btvbF+}ulTv&#w`Jz$NtE>t(ERC^77R3snk^6%hI zFO`#qn#-`;ti*NRUy$dfIo^8Ip`WhK zClYMl^swUK6{g{1&#J2I*jYWJlh<^V^dvUddwo_PXa_0ig{X^mFDz6nHixY+c^2O` zhWcHmN|iwl!L?#`{DLtxiL4|(7LmUQ+ZnFpn|cfC4C5jbyEiReoEaeL zs7vz=HvJ9%9d0~lw+Wh>qvuUc;^DUx`S-3OXQc-jMe|@|9V@=8PK#1Hr*i6DH6F!{ zHPxYVxG1Z{O!^F-?#V7TlRw*6iW&=oB2;|jewwZ{?NG!bogWNmGM90md8MIl!qT%d zV+*#^1-O!B%JGk*C5SjTP&S$?35*F!IoTM+YD1PpPd=nOGzCVpItq7FqnzjAiQlI{ zh`+crZS2~EciSX~}+x5+*xq`BT36{jG&Y3ng6g5> z?`|&4d2TPwtoZ?9pZ<-}OU$tf+ovap8%WP?GlFxrsqn^0#QmdG z&{@#l#q3MDL6t*k%z|i6R~aC2!|-mvE-mtz42%|mD+kc)akh}J z3V87-&wG~W5MG=}lUBTXp~Ps$LtPi&D&60EO{KZnDxc)ik0EmM!V}NUQTHlK4*Hed zTSg}nkJENOf6L>4_P>2RL-~JqO+-`jzcR^(CaVQi$3uTpzW1>|9Y+K9ovdpGWNSOl zQWdf`ZFW+#>fwcR$w%-1nG@W5Pr+-QMWzr|%@6B0`URZk+6BZH7VWGJJnc@&H7YNr zpr9jJwT#=zX!KiTEcKWafyA2Y+e!5zHW_X7SQ}lP093{AtjG9#b{tucw1f)KvuG>_ zZ4d7Jss3$#j;}0L#miiLp9nlB=fP`?=<_)!{G9QwJM&kaZB z87_^u{7rIPUsdoTJu*L@RROJwO+*l1Kf%HTvD6bMB7{cWgHfuM;oN0D#I?j&mH53{ zV^%U!TR)_p1;i)i{k5D~tFeD`}% ziiSAz-c@bKxn-*&fUS~@Q@0$lPj5w;%Jq2ec7L{Q*jFJi!@)wf9a`tvyZrfB+mD2R zlQrLKLUfOmK2>^adfsti5QuXU+=TVC^Q*}R?9idI^eQ=$s_D~|kN?f|@vy=N2@4&! ze^cgSIxd8@Wa!*+`Y(Nbl9f~OeqxUOZ9GgeEyIn?Tr;sLd}i8i1!^bHv0)Qk?P$)H zTFd47EMw;L-BRuX=1t?uLxkvyf{-x2AY9y}TX&+uKlq$Oc{jg0W8Zdy*ehSqF@V3! zJqU}{eyuE@HEGcVS>1BB{@e%xer!DpvrG~nh+PzW-^jHp%pvRc?Q6(St1^ zoVVmjPOy;&(^$q^cM8x9nzF&DBdSef85BM#gNjzFm9MQ#DRdU{u`8}pp#oUydo3;v zR_;8^88IysGj?v)d-~1DsIWnLo9l7uV_d@48eH>UR(N{W&x_AwTUimvh*L>F4ZERLG^es~&xa zb%lL0x;Y04x~K$9mu(~!lHb@Xj??>rDPjLuU<40n5b#l93d~fa^VICq3(p~uwx_!< z^qknHE9LLqo#F9?MmuNH`#7t5)cbG*pOOoP7^-{ZYIzJ5BH6|R;v;ir{KIJ$)cjDr z$numcUiB(}wzNUMuXm1dv(mS47j{ zm_)bUl%{(QDB8^8C~XtIi8OEH{t|oV@b@%GM!r%|lKJ+cRPz+6XUB0#vbMC5adPNQ z)H+dsu?dl?l`}=r!aF@7H=(}qk(Cpnl(uDl+Y5K`H{>aM3wV?2L!M-;Z!GA57jJ5{ zD%k#{e-A9jU!(l_JLnWjNP;LddAbmmd-9OYlbKB3u%E8hSRi!>BIaHI+V*kPFK9hJ zQP#go1+bJIQABKHlKbjiTeyU~TmTao0B}nFpF9DzJmXAp*g3m6Khp1P~tT`ZY<8Eh{)S&r$doHgcaIkJRmGKZ8V;AB2?RUE|R z-vt4^VY?gsnA}5SHrP=j83%{0`M-crfp6XQmZ=7XlKt7HiOffWW`9QkU)=QVv&(@@eKuB;{=#%v(R`9`F)SNlhytgmi3LayBi=Fkw| z%rvzq$DmEa&T@+5Fo0HTP@5ZNXhSeuw!(c%AQyOw2Y)%Fa>+6n^nD%&;zu!zJsXL`wX+>*O=tFT9(I-weINMb^wj=}K2Xy0IG6$JX~z2`8JuPf9!yl>ZST6tfMmZ z7e4O4e}25h6V0eD;Pax|No^*GA|_(0yBXmGybND4%054A@ITBgHfhm-^vRdcult3r zbPM5rkxVB*6;!`MW>+bGE=Bi~8jC?*{vYqtO1_ga4l^wU?{7eES_1!tUao@ClwVey zBIybI@VP!|4Zeb0>`2#Df$2J9q<$bjXrRMAae8$7KhI1g8@l*4$I z%0pmxznz&*DBahU1X=w$P9-&a^@%DYWcq#7$FovAxT$-mWsciI8E>l;O25lgz15T? z|2e%P0!Mk^{IYvLl^b4Nmyos#V(k`EYB^;6)NRyFTi$KUHUsOw;{8o^xl7ce3Etz^ zFaMrL_I~FKE7Iq$;b{Z6q-={3l%DROu_$%NWYb{L#Zpz#m+dGuFpe$(H zf0>x*jlms8;k2!OhP~?4oa7MameCsVI#(;CNHvgQDZ^46Bi zo3;p-hVZX|k=B&I@#a!*@$ZBgke!(iaN$?z(ycNh)%11h%Z61i;dg8WF&i!J2PJ4G z0^u(zs~OC5d_xIY;09Ibeh)_8J7t*Gg{<<;-Inu%W~kfnT111-9`11X^*_Z^dNf@m z7XcD7Mia9F6SRf$<vv+)%Zoh_^DPWxz;HxF80Myd3`?^zM zZf#-w#fDJo7;5rMo zbmoW58&qa+QTEeeX-O)7ua_IQ!%{?9L7_^MWSqE)p`)(XM1w}vxLb=|8w2s=g{+r< z6`VD{oT4nKr6{z^60*YMFqMX&8G4qp>Wr=?)k7?a)%6_`M)N8)UE0JL%_*IS{{KJ=wyGfRx?y3=0+sg6xd4A z9+qt&mo8lVj;4tk)TxU?y0<%i?AT{bGZbD%`?nNsP1IerTl;kNz9r}1g9w?yBs@9! z&=0`fCYA2u_=|Nj=s&JUekqH)yAn{SoO?BbfEDB9(CFh$) zzWelYVHMuMrrpe>q{t$~ei`s3^z5mf+hSBilZ`SdFa;^3tIgrm30Z0>$ri=Hk#W8qWuGCEzYJ3fw-M<+cyZoR{>s_r6 zxvPCj5nhiCTh|cf_eT>s78 z!EwM7vkJZDZzMP!nHf8O2h+zie>4i(m&V6}EdiVd{sOes=iBrA$vbSAc;&q?Y(Q-K z{c>B7zy-mcw)adKtJU6=#xC|`Tt7lq_wT5rkUt)c24LCBMjXPUy@NK$TJ<}v9pmya zz3i>R>aGq8UF!hUM2fyvS9qD|O6VCr`)jh*3Iddc@ByE9$dvN&@;KPRH8EUOXx_=$ zhL!01Z3bYf>V#NP7?@C3C0N6;NP3ok@C2zMTcSFw3M@}{!D{a)9v<;ndj552t5smC z7PRMurg=rv$)ilaYGb@zAln*^?bAP*x3}&VhFY7`yM!u=&F+e;&fn>+#_DGFvdDTU zamJkyR?Uf8jY~v~24uIARtq_439{#X*I4H6j$#O;zGSv4NyBaBwCIfZ&Bm*@g<>>t z>u0|Rdpb>S!^z_b;^ry&!9FkQ<&^;+*~h92rL-l|%}%Y&SB`YAVp-Q?S&S}X1Ag7+ zN9GTuSwebR6Q^`H6C41iXzJX+i_JD=xQ4h?2`!mlf$ql+w92{{^SYSPsT| zxc?x-tc^w#h~3chCCS{^N=p{oCIg?j{;=9gCrOTsn>Nxlbyuq@ckX5^miX<6|BzlP zFf(=WBjM@A6M7J?8*%efV^@<_Ev*?nUeBeKZ?95~OmZMsMwQ$vR-EeO!~{Y0`)rqj zg6PYVZKS~y)v*!EbOEWh)zoz`{e8ZS$kxM!O+~y8Q#S3fu#Jyx#-Nfu-$B%%bL&r>={Ywf1cOFqV9g{QUeIJi@Ht%P%{| zb;5$B;6v`<*D>nu_Jg>2YyyEY%{kd*hnza`Te^+L2uFl+8n%FT^x!g_kHgdIg#e6TW z8M14l+W%-XBks9vZsqLxD zq_X=HHnSxI)WPr`q}0)brE8pmXqn519v>HIPF*}vvoN@>^37j9n%pz){qG^uQthl& zHpL_4`bYc0p=0s8g1!HpcxA=DgWod?>%D6?OwwB$xS`%TH3L?OdzL-6K-y5?3A!LZ|&Vy0%D+$7+j#K=5%i=a(MK zYVss3bEQiLjYod{n&Psa)x=E&sh#vGU^v3cQ9t{xzEe81RiIJDMWk?X3B{>uo{MU^ z!KaVgFDhM-7`RshQqCSe#+cxNusWq7G_v`oS1_AFnSg8PhuDoSE|%jGH4qIF#Hr-xMF!$;&&K6XOSbZzy?S}s zvN0R71%c`#xf7RA=ZdnfwOtEVjSU(X|6F}nfo`b00Qw#EdKOqJhTQ;aF3I{RYEspN z4IP%T-%icjki?igTyD2QrMstN5*)Sp5sEeEYV}jp0D|;YO;0KT5lV)HRYcCCbCv<4 zBXJUAogMEJv2i^cD*qFk$y8mQOF67WS_hp@OUgdqIS-6vpYhq;lY-HIlL$jXNC8 z3=p&acE&enL~%G8a5vQY6*2=~R{sW9Rg$+xc~DU~FuYI7V@LskyuNy5^k&l7eJf3< z*ah|ml1)OwEyyRQMirNQx@HoLC{LM8rM*9=ZEZ4qN{Q#noL2AEcOBL*Ovgn1wAQ6pf!c0am{+R0_O`DEAu5og$6`AhgDMcWVIQt)rIMA&@}B7{ zC56hHkKx~XmSkE&2Nd#jkWSDO>)1==>VP_EZpf5{R&c66$F!bme4~`cF=v@FS>I8%!t#tz}@AsoTlDO0iQBGwnFp1QnbH2 zCD_VsO0{a>{&y{SbR$Kg=91iLQ2TT2eIs1kR>{U0OKmSLBL3tJ|TClI6cfI&iIPbUrhmlRnDqW^kLOZj$AmZJ# z=f|=!KV;*!z+~SE4*PI#CIKCvHoFf%`|`OobSSuHrrnq{7(vRfVhl0_6})uRbTVLa z`O(T@es3=)=Sh~H+}x0^aa0i^W`3A@nt~`}Wxmh9yy~grrr3Yw??G3Cqh_3uI9;Y~ zW=d>2u=Lu~0fb2jI$8(a-GX69tryFwtfpGHG$6o~!Ye5nO&$WlhowRVr3IUKOEe(Q z%A4qG#T8kle6*w$x2#)J<*az3A4*~qq|@(G-|;Vx67y3n)<)?Vs!@;T5oKk?1Df2RO5}p z18omPg{l$?h58DcH$vE?TTKRyBdMNO-&?Im4&Jt;yu*IHwZf!JDv}SZPZx zxpxUA3V~eJ;(zo@uy)dS9lfV98K}&4DO%~BWyUbVJ-vY(XZi@62P_U)C1R9roxcHe z({n?Bhi2phdC%)sl5BC4luFh{w5)UXss~!?o1Ry9Dv`a;rIm^*1B;OjU3Mmh=Sw9p z-+W+BA?;$=;>b8%)*FnDWYKG#bdR?_>M5}$YJS1O0Cr78tNK>DP!5e+vNd}9lNCi$ zLPwlUSler3cQZ$6fJ%(Bd#htw>TvO-uY60%XCl(HZbRAwUMvmNb$xE+ z*0ry049DYDvA`k1hEyP6PYIbG2OHZvarX21Lh3HZF&+?BR)%_pNTy>EB;_%q7Qj#} z(A}!@ivP?HLw4z{%Zn(#q#ea=KJ@Q{J0Th}3LZ9-3l*va9)BCQj^**dWWZVaamf8k z>xzsUi3Lpk8s$nq&*fK3h2xeoRj<%u)E6Q_n=Z!EAk0yi+`sHQq3`0+uXU*`W=JeuAwz9XQeba@q+O8#@^w6rSX^Bou(8~ezC%TCL8pb0591W<&_tGJb?ZX<@fdlGt+CJy2T8iSBGU74M zg&r*piv+;omWvPZLuD1)1slKdn99m&wVjI0SUpi8uaJNGU=t;hgc?q;^Z!Ed^t^Ge ztQpT7Hf1W5gU%f{8`VNtRTX7@hQF>n#Z1{6X%89Ey(GvA)N1HNrrd_;@LfJ{#Tn`Z zpd$76n)^^0epUAv{>W7k)kunGKX)%WdgXPz2;+Vd zPy4aXm{m`uG^aXDRtq0h8%lkV)RA)9-P#AEHnY`yu-v8-mVz;Qb|$XW9%C@2L=I=` zYdoa`@3t5ghB^s^NEcrNaVphI`G+#?H*L2E6zUWXY2%7T}pLf#XJUV}o@Auum# zuI&G)Jtk3{K18lr4cfA>*+;M5q44+3XR{96&NcuNnDMiF{mjHF6*Uua@zaiLpHrgl zg0W`Ig&3#e<}xc?BzIoyS|g z{U09mAil-|Y-u)J^S$dzhB1DhE#%Rm;{H;+hk0!D=midD31>qDYGF&Ky&{|2emh9j z6(Bm7tj!Kvdo%G&sqPz&;`;0zb)%U2>gY?^uVv)}lYzEy^gK0}rqlcHRk`|TE3bu4 z3n8*!Kb(zD8Xz39r+ zLC~!Z&eYAXW*2sz4_Y#BcFc|W6QEynxAiqgeb%c$h7c>*hI|J6Dt;}J_5<3<6rsE^Sctz z4;7NeGq(*q5@5)yj{J11NGVjr(dewTUd&csr_nxJ_h)i_7rt~+5VsHHzCPqFdmO2~ zvR?|@_>TM?=ro7Dev7->DWo9-Pkbf=CGJLcm#)@uufJmq*SV&k1LG%Y?Dm0v)hz|y zqC{?D=$QC2CDRM?WkZ%?X5JCQ65W`3+gxVv8zZ)@C$@^|$7)o-nQix!KhdhNpG0Z5 zVRUrr1}&dHek`laM{ies+QMAf^7&p~b6BSyDGlqmvA4MDxfGw^>yX~}CvRq@s0vy5 z0;8L8*h#*F9%`qSfBloQc==ZFc4O|7p;O#vvZAe zC^>=P%Sy-EPj&`YNUYn@r(+(Yl$2)>7~VM)ZCYgW$-1pz=qKVy^sSxMMMc9pJlkDS zAL$WixUwR`v;rxOVEhq#*q23*+)1wGb%MSK%j>w8#NI=G-8D%Gos5h6lv&W=s`7`;uI*)~useLb=5pUSR@I7$oh5IA>$SFXuz-$>$W7%{ zkdBH0!Pn0EeCBfW71!DHY{sgcrtSTm9{Ch@<*)+OspY?|c8W%W z`b)8u-mV`vDEC$J}M zqHT|mYkmcT+t9a`1sJ=Y5I6MNM9^Bkhsz6fkLzVvO>btQ{&Boi*SYGTcpUuhM}s{i zZTJtZKw}FHtXZ)oP1|F;jls1+ufKG-5o9KKxD_lD!t|=DMnB?&+^OqOZchZgTak=m zc5j$U$tWYoL;<%>#ko4B(A+3SPP(vBibn zc*LTpn@dYAqBXYSUr{KIWoy8q?i1Cn<|CRv$)5xtH4oM5t7!h&Ui_W?m;JX+VH2@e z%{hFD_|m#bu4}D5swh&rHip=UtK{{%nw-&XzkWeeB1sNV=DO z%`UvmVBRxPpBb)SA-A6_Hm~0A%G6&rvf;30y|YZm0)rlk$ChLq%T8OtJJ&2hNL6{s z+UTWc3?5ZN3O>EdFlT!hwC0r%wBNjqiwAk=L3x@jYK#K?6&P=G%Cm`odi(K`0-)-# zf78wbz68k9tCNzRw2N~d>4Op9)ryC-FK4Qe3~Gljx|q?xCvsoB7*u@M%I*&d`K zSy`Yxz35L6@YEId?8JpcR`wo?D$X_W33E$=n!ap~Rq0U8^u*|S2#P4O#`{w#diTFq ze{UuOmwZE2#;zcI@7f1L5J3Fu@DfW^gZfPH&LAhkW0l}?64?f^*jK!Btot-vnP*kr zYxYGQ^0L%|B0@O0FeT2#=;+7aRHRJNZV&3dToDp2C#5^v>K#=Wc&t9owBMgboi&qC zS&p#@u%Gc+$kOKY)!o+lr68|6SXeAFmD`xfm%$UKw;0sNpTn2NzP7J>9ig#zph1hH zZ5li|YDmONMgTHe2PIx)?3#zdvEDa znYLF0bXq<#yOi~nV`En#^!P8iSBCDE4;v;E^g6@kYp>4!Lm|*i&zW703#g#dOoGD0 zF0%cFkV*Jm@*7=jbLJM9_PN^i_nyOVpL^(<#ynsHUh0UnsW&4@*}1?G&ELz7F*2x0s^5=O zBPi`StpervA{TcIBEY?7`h+%T-Jr3}*H)>;+{l1*XzH^{)nIhBvWXAa(RH1DEm~&3 z9Y&+4;w|q?f#Ot{gCnkLl~hzY81jG(Td;R)D*utaneEl<=ttGV zsXxVL7wf%7L<_)DZxPO^G|)=0kQ8add6hEZ3e$ty(_c*emWveb%yY_%5NWBYL(9bi zUJV5_U$bFZ7N+xs#bg14ZQm-Z8Q(gC2ZO0rL(}5TVwm$NK;5$5e?pWn9s6?Y-s)Tj zESQg<1Fc%S>?PF?ZCi!%q&%fw8NPz9!kHWlY8{6>xE=TJ+4Ex?0n*t)haojWt`rVG+cfjT6imyu+re zd`?N{!c5{;R%SUG2nn2$?wgMPl!*cSv)(s`EBUixcsnGjoQuame(r|^NDC*x<(<); zw2g*|VP161@VVN-$l4>j4GoVrc0t+d^5gRvUb5P87^4e(F|xc1OS zA&xUwdvKlD*ix`EckFUoV_7t*LoP9mm(5u*w;f|c=6-qqEJ@1~7?6q&X?70_auV@g`t^a@z+hQP#)@PHp#>WcRN_W$GgF|hBJ z22QW41Gw;$L9aC8(y$Voms=SyT|^7c2o|?M%2*09QkGF(4TU_Y$=+S7DYC%i=fLl0 zG53YDlg4@ZB79vBp^d z<<0fC3CR9W)u*9aj4V6xU8m(!p($8;_ls0&=sq5K@t{}fJuOO%9#4IKeZ&gem)qci z=eDy*_L5Ai{*PT-6e@g-_!SS67m|BENQ5&~y1b&)91mK$+jw-e$aqN)0v#3v^{83Y z@DJ4Q&Zbzq^E7oVd>F%+ue%kmlGO*9o@Gv#H%`5{9)REc&NWZe*0rwzI(Mye-coIo zMo&>>)OVRjbhy9`kCHed`Sp0y?QO|{p$}JkN*jHUv!*GfV#ft4`-`0}dGOF?pIM-2 z+y^3(J(t>0b8%1^-qWYdSGT4z+7Y){E5r$tU1|8Ix?h823~) zk>vix^BhDT3gp5mPJ-o0>BaQ2QR5fHjJ29XYiva~09z3)sDdCYLg@yn03IutTnyQ! z+pdpg#KU2xv1CG}rO0}tQOn>K!q2FBL!mkXXMj-)?eL_IAk{1`XU*~+(M*xF()dhk zLMY8$lVfNn;E<;{Y=M&|4s!;NJrFOiF=n9yVXa#gBajqJMBVO%#q45~2@oJ=^GA4| zuDA(PMu5U<9N6U9M+LIsYsGi5(O5e{@rmY>#%`r|zoJ;**!AjHkR*4Eh#t&U#f!0Y}RF-HM9qY3jD2%5EPZcYw z-pHTFv%xx}K$Cb%(b!4WY_JfTf{k8OuoCK}(C%===z=KD-!VvvwbvSN-j|}A)nR>< zq%vRLuH;7$l`9UG&@L>%o~RDF+Xj8a!lh?{6`*vZupdg^=KzWwU+wK^uv)xGLhK); ziAhUF5VAoKWJ(F0YJf*%91BweKk2EtB^feL-d_uqSKX)0EroE%WVNq z&$+*Wr-s&%e2${4_#{w(_tQTKHaewG@#LK%t_!|0AS7w0XrY8H5N@zf-}6Oo(0eH0hP^|0@cJ!a?K~|bla4& z9T&yuzi;8k_+FCV=&P<1)E3Jctj#tHv*|GUN&0y=r#~R47WD&WoODS&Vrt>hyJ;6A z%2>W;>sSHK@H^3)K1z>n;M$j~JD@MazkgS}GhWJ&?U?46AX9V7*8;e(lkDt~hXV9H z@>Rt5vVNcNyrKPOlJxdZ8HSr3K(`wrOZy<`#lW?oy~+6E)&1 z|I@_t=3+ZrypL16MQ#U{QqTEse!Pd*o-Rsva>E{6PLX%qab2#f#Kag zijd>q0h(h5jq~5(dE$b5Bfc&+o+$&24*7IPPsxiWyby4d4ImHo56EO#wsUF( zrTAFzU7~ue1eQ;c{I1t)qYtYB5Y+DS^axBA5*QfMMFTbvQ_Nu+lGRSxBN{Vo$8Sz0 zX95JQwICqv5>hl5@QBV*rwurKqqVN)#A;Ble$u4kQn63eu1&*I3IejI>bilc!}BPP zeIs#0KC%0~@A>d76xlNGHoY`S;HInPn3n*pcbq-h=t*JJlG#+e0F5K^K64jJ7JxoW zwT*Ak`9o`_ z)&~1aE}vtpjoUee`0mNYI^YcWH2w}Rf?^`!1ffQ*^N1x=k2*7e&Sf&~K-CcK@drk! zZW-vN9wDMt0cY|l?euSE&~&Y#XpM5QU+z_2V%5Y_*s}3D8uLhU0{H0hNqBoyhfH*< zas9h6DD~~j@qO(SmH5?NZ*60SxWb-4?!hivPG1o`^iy!)7GeoyOQ_>?@@Tq~AN^a+ zpH9Iz<7s`#ErcaK&O_@B`SL#J% ztGh~$VfCBg3uqq_3#_*|c`WO7R%!jT@h??aYm$1W-gi4oK^36p2A&eHJGG)d3=HXH zpkqYcCFNX^va$*lC^lW_!gseei|&5G$6AtFGzAAn#)T_bd-))HO!T+S`wc{HoBz~3H5swL70?}t|e)w)b(vzHo`j%9_oJ(N%vO%wpd-3 zD?2I4{+)Sy>YIlZnxE6B$Aiy8gyoSvfr&Y(FK%kn8WTdr z5@&xDE_&f|ZoqY6_9QvaX%jvsYF*&s3auF`Hq=D3VJavJJMV9tSoK{I44a7AQy@T# zEY^zsZaWfz3ZrRtFLRCp_511O3bUlQvsW#{Xa_s4FvenE}X;jan!kftEo<2{` zBy`CW_%ZtwkL_#95vS=9lzx{Z;2|VxqsAz6l%6PoZnhB81?@7v@p+Gh)glv<2`f zjaTMRE%kEw$@=wu=ml7ISR?2S*=!7NPkwP zMFptun;f`R?lRlJq!aK4>P%PmpUG_1?XKd@r*m;-;wfr0J1nj}OhN zp(&L^f&NAALCz0uJB(*n5ou}u(Ss9^22!tNks!UAukH(xw#rHIQcY_Nxt1n9)fCUy z>rk=c6eB|5L9*4AA;fnYS}(AwI{MQjufy35{4ah;Z_J>ZBM=^}0m9e1+vJy;#oC}Q zX5J78W*!=qWw^f;BYTvJMlSj(!tWS4=$g4;vYMPsF~OJ zLD8?!M0>igtDTdfE<_u&>+r>UQ?+$xG%(*J(UvqqB1XVqs<} zCWxrBp79qOwl*F{@_$uXY{d~tM9L@;n%wle^xR+~nu$PbRD#>dEz&a+I68tc42H@o4W&uq2M^$d));DqJ-X zJcx%U=S#j4M4|N?SCS-kKQUHfX{O~zL0d_uI5=9wsUR|6I&H^4ANnxMiKhgeZLuOfyQgh; zrV5jh`Sraq+`0T?Aw=~PGB)=sOGayFvx{xq9zyvlEZF3M2UF<13JHK^+IvZ4?%Pp* zZ{|wdsUz0+FFljFabx*kkeR)1txKcwk*#_$-i+nBx&f;$I|~Nw#T(yt(OyXXelg)J zVBWsPSpu#xQ(@fdD?ZZ4+=(&nAb7weIrl&6^AX|j*fU#B{O`J{(FO5Xv$Sp;5mE+V zdKj(`jf!F4eL=8$Qwt3p3HEt+uG{!% zNn2x?e+o)kydSMewx(f5n-lyX5YQqtXSCaiplCA92?WjGVFBI7*zyqt$?XzQxHEhP#x_Kl@=7KePdx~}WCq9Ajs zDudZ2>{v>*_99WIi=vkI*Iiz;uWJ^5_1RZ{ZFM9G-}*V|AeV>@ZABf`XAzIfI1sA7 z&DmWvkzg}vOq5ROwic0oDZfdto1Vh@feUipq=6x%yxG9JunuJ*Kjpjz7m%Mb3B82! z_2T%_J?=gt7UH7q z>hXGbt8eDh9m2N2K117+M(ss$GR7G#SjwwuOkJEsc=Z872${ZGD}eJkb4!^e>K-im zzALy9?2w_y18=Hcik59Fce|JML3bs3rfinS*^T+Uc!o}m1_1`T+@;wrd}u6^<8#Wb zI`WNY^QZ9XRgpc^m2*?xB;4_wX)2$q)(>hCVR5TlNX_SH{v!D5+-_)n@on6mRWr2y z1>}bt+rn|tpF2mm-ox4aP7sDB1}X1EXE?`OW{sI{wKh&`@DTWoqsNB#!0l`$k{(1q zObg(cu_MoD;l=O5{|9gUNxqR(F3py>ihY%J&kL!oFKX2HM>jO>shQu&kI%Nx2Mk71 z9~Zcp)kpGaFD-p^2uiE!?iEQ=0c^PwTsArY#(c2YgR6&&8&Jw(nh7t$`L-$WtxcXEd*Rbg}XHrO$8Xk97BMAr>*wm zqXZ^!!Ev$wuhQ-9x(Q34F*wY^o0a_(ulbR4Wq7Ioh9x#BHj_xoTF=h5)U~pqMv%*= zM0VTS8=N3)A}JNAG_*#|E3TfF>Mf-S62$fIeVCM3+}Ez((Jw8U^i?Wr0Po7szZ!Jx z++Mmsn)SRewKb#;tMqP2Y>j<*+5$?AiQBQr>|Q|SrftO4s_)Y|n1g_>PUX1TPB8bQ zx{50~SRZ1zR*#Wf!1vsm5rHYDe^BHmkD`(;Ok`$JwRdqDyNf9W;Y%Y|J*1YT(qd=J zv_f%N=qNl0xkmb(cfGhiW=-upgI#X9907{j+1YCFs57o)>#x-MQru%ZSwbClSsu+w z3w#U(UuPbxsq~BGdF;;b;-`HM&c_7p{5_g{f>|60-=|`mzVBBIrry1uHji8&UB}@S zL!RtCnW?8glC_4t(bQfq}3;WAF0MMSto$j z^fMe>$$oW>*6Z-Sd^9t1;%&7JC(&MBjK=WlZ%BEjR7in$Su$*@S6NrE$5M}p#sy%j zenM+C+@x%oLxB`(tnV0Za-Tf}1HSI62IKexURAwFZvN27coLgg9Wqsu!m$#yVRrIo zRZKyw0Uh^lf^Wu0xrej3F=oGIZiLY$DliI*DyWcl z#BPwrCRwXWsVrYIRla@bH6LgtLkxRt6)0BHlR}b6ATH~?wW%4`r4oa^9VL19bDw4! zaWmD?N1oQ;Qg9LT8!0)vQhv3NBSf-)ntClx6EgGf*?))f_%7CAi}J%`2J;4bKbIbm zr+UHc(9F`-_(3J+o@xJXrm7v?FE#4f)sD1(aD7Y&o%Nfmbl$UdYmcv-b8k9N@RT!+ zx=S0FP>NF?f-B*hc7K$>xiV@4ilDyH%)CYcIO(I-t#LfY8TIyVO-+2wCE?SYt){9E z#7+z(=YyF`fv2W3uXbb?a$iiC#8#cb;Ib=h!Zw{s*w?}`_b#D)HcDj)uF3Rw))Cgw zi4b(LEZ1KUwtRM#OiM9_ z>afsjyOH@38$g2>AA9N9VoX`x2Rl1YyzQOYIQKc+g)tsBj6~*%$8rZ)KLoA{FzLNZ zvrlysF)BZoR(`kaLK| zHi-B9Js{tC?}4zJg`dg1#yqh0r?QGa&JxX0zb@^l*KLf0x*O-4_TBhB^>F*BOoWp{ z^6sNBNM5rm>2A{7oMA)vU$^SuX%yQD_m$e&_iyGc@)H>05vFUJX35dKf2&`gL&Yx| zjt-1FXsYJYj8A zgmn4Pb_p9vq9&k+sq~Erx=7AP5};_dg44KwX!Z3~Dll%g+v;t&Et^Oi#&I#le=irO z;rv;s+V=)NOXh>KUk}PmhD#@Cu!U9x2a6#!sCTy6^E2=`*~f}0k; z?6k@mNur4A7tL^+%!&s=mcD9A1bx`iu!1em}HwTQ`%H`;b-ipn&m@nfb z;$+VUF^u)~{Tf?&X#=VPh#&Wk;>= zVQlAF>LtVZeqM8}TVM<>N8=mTglVz+KMU5Kl#WaWu(kw*cq3yQ8tk&zqI zb5g3F0zB>BsAjUPR~MVIaE(ywuLGM)qO53MY|B%l)9>WNPsyFQ`>$4aZCGJM=oy&0 zs^)t3G!)i%U88keMe0{rvJj%AelF=gYEh5j z%AGBseB9obd^Fl-X1gP}noMeZY)9IRP{-^nk;}KUlV!<{xlWneDI{;NsbLH@Bkm-l zHf90&-zL)2#nBnsfwzcaCNK(52RKzzS%Hn(E~;#s2sg3u5;c}o$28dTcA{(+$<&8FuY z#|)eE%%0=!elvw}^xvTeBG4Sm9oNtzA??EMDUNlvfy*?lxnMh$3q^{-c+zYsJ!=OZ zmJMm#{~vBd6~}IhPKqW?czH_U_jby6+lvm=3H*1W;6## zo!m~DtaIV2kO!i#*7v*V>|f*sjqRzpo5*>2Q(2x0jV^v3Ld=5)L81|nBI0N*7@Ha< zi27~K`cFJr5px2I?#itB#ErM+_Eb$h*L#;1L!Fia=KaupXzt7 zjdTRK)y3{HN%GNfuePJwXcNk4uhjdLgfKigIDlZv)+&VTs~-z6YSzigJ^iA&LeVsf z_0!kvvA>5*8!2e_9YC$FUY-|k&eN4i$X4V?ta?O!5k^q9XU=fW{tTD2GUPchb7gBP zyFtMDn!D4_FLO#;OVMKgnsEPqIRs7+G%_8;J;&UZV4S;GH!8R* z%UDOtZzc?HGI=UZGap4Zg#KhDwu?Dtvw-ORZ4U`!akh)kl`r(O;o`OKOxsr?b`#p@ z{`?%;`ar1I%PU>=4P^HZ5<_OP)9dqgJm7%sw+3AUdugM5l=~7gud_lp3H8%JuKsqK zZgKg4-S_;5I?P{Bt)mvJW@JH-wy-|-S`aHvxrVn3 z*CVvylbHdLshj0NSj+KXSG93>c~e~@9b+qfiu4}>8$P&QC=`|f{U3dg$i<%}9 z;A8r?4BAQPDuM0Cn@q!+zd{IEEKc7u!})VbD47}!&-R|Z0+(u!K}2Y5n6U$^f$1*n zIaIl_5oiyCo6sl|LIXtGUDiqr*kEm*p+YLVl`{x*7rfI3EylCTxP2Pa)he7K2Jq9zp4 z;N+Z~3?0<()Eshu^DI_)QxfRH?nt_8UMBE|(id*%5jA3>Ms!9kl04x@y%oGyEW%7= zggp>o)*PSwpO5&1*2|5DJhQ1{e4q)|c_$wRxNNv`38jz6xV3{$ z+H{Mq8ap(xK6}1oPd4}q67Ij%#$>7mNr`N9v-S64w;#+%i)U7j!){Ig1e%66LkXid z!#aXO^|1rarhOp3X3s14+emxr3x%RtINGc5qvlO18nSm;FkH>b?l|Kd%_lDMOU*GHDYeHQG7yX_ov z*z6M;P&U_#IZ~)C9wfLBItI(m_WU;}co<*3CT=1X6Rg(2#L87EqGixuqjbS~>Yt#h z?Jp-Rw~BkqwBqSZQK}O4MJ$iqW?U1vY~|!8yHWeydXLv$VIw>E_SGRCT6JFm-5nAM z$g|3M_<@D-+A`!MOqPF;Hj8GldAF+J%ms-}yohzK#6v~;yk+N6X}h!L-wj#o0HZAR zi7oigHGGo$#n!zO$ij50br^?X@95Y8-wt=9kky7~nFiIoqApjBD(vvZeW@lr7FSgw zCi%eo2MyC#>eM8JLPZqnG6w(LmByBG-`jQci#qCQjUJ`^`DU|iYu+6yX{B_!%xJ3> z3Jd_Pn2958DS%LRp+6qFdDF;tf1`qi`otT{YFnX;oUbG)TXf6d^`68|D~LCp;hEd1 zA%}6MEnVo`9oJ1Fw26|P6)X3JRr>Bp<&Zz-l{;pT8;aHL-+8ZxZ+G?(IiW+@Vxb4y z)5-4ntEa{ZMm^xi)1;OoN$8AzHi)SZbnAvPF*s$*F#8t+qP(50MHvMfH=n;k&F5)3 zQm)aq&U^XV-0XVEjV#B?x1CdZqv(d}9i~kAe%(E?`Sd+CmUtmA14Ww^dWh+;$GKs9 zJ51$Gxl6=mNv~~{@;|qE;!Vt-HskeHB-df!OE%xF59d06#)p8N%FO8Og)+9!fy1V6 z#+9YS-G>|wmb9*6+6kk=AR|^nVvS)z3JXTis4RUw_S){0r%W-3P=u#yaIEvNN8K9-z0bi?_1g2NfURgSjKiEeqWCwW|b? zZtX})#n`OyO8UH=`Sf}`1|K%S7(t=5i%?H$v3DW0xPk9>i^pE}@`#X&q{}B}1Jyg+ z$+adZX8JW*V{w*dm)MKHrCRdt19?77c*a_yuG(HTS{oOC&|Mmn`ClfIcc|GhV~*C8 zG~DnLYnK>U-pb^{N>m~&ef=GaZMIHPZ54o6qj^Us6B#P%={%2p~|5?00*(AuQQ}E)4 zQj1`sj&>^$HRz!_e=~LoYc-?m+LH4Gt4t={*U4}E2D0PU`B?#F5&s>%BWzZni@N(} zjtspbQMAS7m6Xz(2OMcFTfD^2cg{nmKIM30Xg*-tfO!io^X8!hNI^K7zMw#Hhm6IGb);x%v|IJgoD=9GxY=@|bp z^L}%F=0@q}!}QJm%{mw#@_w05A=Ed&Ql^BIr|~a!Sxfo7BM^(>B4@%Ljb?%;g4m4j z{56!V;TfXj-6&3o7IlaJPOHv7^2^qmjc67Q$sTwgOc}t>RXKe1p>Te`%HmW92H_K4 zy-3ri>b@q0{NgG=Ps#V9Y-{SofW*O)gqk)_ze$)D7`qScSEl7Mp*~O1IyX=2=o{ia zn)^p8=A7+vrmmamsI7ZLQ8a7E&YeQ_xj{f^Ic*S?6YDa7%eq&<%Q`rCyZi1HHJ89* zw5?H_kte4%lcZ}gM9uF>%>4)erPO-hsa^ltBt30(_Bdz`#Ba>TZ2#fnyCiD@#P z3Hy7sTHBd8|8`?1B=P{Kqy-&3^z99W?UuTc-tG(pYRt^x*CH*??xQjW(SM*KtVD zT};qT!{r83=$tIPyM?k7L0jqVMs=o(KCP7c7ivM zDEBKMDkAm5oykB*x{+16gu-yvN_7R9qQ+{FBEM$bkSiBbgMO(v8%=PP?ei1 zL;N30y-o{qh;s8Vjko@J@2})zL<0T6`)gAi}m=(18&E%DHCgK zMk!2CqA%Ks;jN-gcg-zp`y0qYxrrpKF3q{00{YYEoF}K?Vi5OulJi4V-BGxs3ue#u zqvLoN@GySu1sfU|@&0pQ8@g0>(LVgweje>9w$XZ=BABdjQEE+6Fuq@O2!63t>Dq#I z0~ks_bhKqucppvK)%LRbX1=-=du-o7CUDjN~tgRdn7H$9hO?x%JCi=#hGh+g(od7Df5UC`oQ&(PWB z*q8D6&;5j=4?l(yn@~#-$D^=E%OyUsxVDgkGYmdSzfj6B8Lg*`dAs8+2$>y?*@?0x ze_6?Om4cBe3%UphqDD$cWpWG(2zbmG3>rhu5Yyp7TQ_AHA@KwJWYpWqwe%`d?V7|= z6s7Mf8xLo46Z>Y+OF~nw;yRk5`({rh*X|EInzUxlw(A?|kr8!1xMoZ-z0Xx79z5<@ z=#DO8`Ps>9g})Mw5#MbF?d^M}H~HG4cD+0IcjNaSic&Qi|9a$m>DQ`VuL*Fb7{N_5 zOn*GxDKLIb6#PE#z9FZ&YS+%S_Hf4Np2#-a1oxY2#|JQBZhX73gaJJ1>`kVf6Bm)| z-U?F`@U?;{QimYknlVu<=GQDZF`cYI8f)is_~h{XFdH_NYOr3NyJU7!?B@GdCW`d* ziQb}khbDO<)c7%CG)?ngYEEzaoUys2xrC|pAS^3ec^|R9IeM4|?<|3{Yi`@&tdnIS z->ddkUGR%d=pOO4rET4h-o%`5ZD8R21bxI@s64tj3ak}GM7OVDCT+^NZNB&F%v6(Q z+FbOuacbb)U_PKMd$F)Bw-z3`A4k+S-i{nw67==f2AwjyYh^i(bW;~FE5~)6Zr;(F zgQFkH$#lgIf~)wtf92c>?}G|0)&VnTzjmfI`kGO+w~p{VpX%R<==`BI*|j;yTW}u> z$-06so z?*ey=0GE!D5Osh#&)KkpeVYHuXKC+^sSNj6rr1$EUNvVq3m#ACR2vN3fff~=aljcW zuRXSL(|<}^(Bo&1?2W8kmvvg%m@$2{hp)9Finag5)6Z^C?46rX7nsF%>+|UXZyJqP zbTYY^d)6~Mkp$bf_f&xzW66HK3$|uP=G5bDx^=l;^PTVjcyj>bCc-$~-LHvR8miY4 zr>`G#si{Zabyc%Wsr&sUq^h#>ST|-P4#XRs`5L?Qcpax9ZU5->ukHL9@CQ3-$y1>3 zV{nmD$g@C{tE0N-%L4b;-fx&il6qH(1|nKSQ?ypT;JiFaR=7UJU6zu1dQkH#PU|#g z`nHWutStY7eZx-=@~3a^k?EVSSTWi1y^^!y;ze7VJD|*VN^cAeUCeXD`=$pynG3?N zO0>Md8>s60c4?2mdoE(d;N{(TKN4cbp)W!|oKIN2E$6DZ3vrzEC++*-jf1B|!6+x= zaB}?r@$9UwASamg>_0`uZ-I3A4 zZ$t2Z&3=h+rn5$-*hgRDYSlps7x)I9Q#G?2LReGKtTtEC{iX?>0cL6{ykE z`h@^^1SQlQZ_b0Zz5~VRDxxQIQE5ei8)#4l`O8v(vW1o{azt986af{kTu`7sZ4|Ly zwfj~l1kybo?YFd3G*{<)4&AM`Yh3fHs$=I($+qkFuRo6gic+7|+h|7uj>Rhorj$h~ z>lR}BOoO}GU(QixgsB*DS^CGSRBEbvZ^6^$!>kyZ1gSFH zy$x+?!d_v_icZEZUbP5-*V>Z)bZcoc>nP#qk)!9+dAFY&uR7HO$JO%Doa8xCU5WbT-N74~)Kep7|s5x>nWDK4~d!vn$@hoFWKT6MG&`L|r~#Ff#ic5UpD7 zYD;XoP)hmI*SP$}m``%m0FoqQ7w_&sm+S6Zl8H`biC3zZqFXZ*o95Ft1}G+=eYxY% z!9}9V9m9W@aH2ev&p@XV5v02f=7Iy46Xu11&+ThziiH+ge>LA#RpUX~!?%8w_tc?I zKsEng`=s2}x&yTnJ0r+PkR(%??b@?t9GwVwpu*_<`o{`t$~sFmg zjS){cV_F)nzPqF43@PKI-!O;J9?)RZ9Za-a{SHwCcj<}e+^y`;S*;ZsrS=)BcTVpt{ zqCic9MF#xHCh0UMm%GQ~M$>yNO5qol^BG&MERS?We2sW>`8)z5#fp4YD&yieu_`xa zwPO*GUL<0|VKLPFCN9#YF-}jx7D9a9fU_vk!#LNmpM+$*s;}+BUfX9*0{6)PqSI=` z*=}{bLz0w222-)bz!F#C!u2gm@I&pyE>wwo%E*4TVrH7G(O1ejO4XGffX%QVWIT?? z+c5w@q$J!GJd_FXvX|VdYiAl@ntWYW+2zFdEo4R3)BuTHJ3aMK1Ka1*pthIFSe!46 zR>?CErtQ1O^DQ^nDtN`BhJNSFQ~wQLUie?PzUgc}p6%V&SDp#U_X8(U^zrp2!uzmq zf{d>seFZP@sMpuEkEzkKr7%fYC0Lgf?&h>1#ns-pO8f%<5RB9#9X)bhZA%uyFR@!| zrc_0))CJpeTr%$E>pRW&w`AEoUE>ou%%|-gbN&UE4Mh2es_Ssud-!(P(ACh@TA1|Y zgXNPYt$5Yhb)b}6y zpQbPuO!hFU@F!NJs2m2AyF{|32-OhlhJ~;|#wA(7DCjkdn;WR3b^Fui(^9<}2Q+FD zLE>fm3X)Y;pcn!u@lN}*I49s)H&HA{P9`VSsgbUhN9$I~o0Zu?-k;CTgFLUNUaSmx z*Hd66FboIn$%z_ymZZ&gU>mUl*zbPl0&aofi77d>%6Q zc0k&LuN1K1-T9g6=~Wr+aBr#KBa3v3;koU)b}y&y=TFB*X{h{MQ5b9faT7bm>pnlR zLd(@|Uo$z4E7Yw1zTgni*~Yd=o0nDg3GDN<)CiD3{2XEd;yToXP_d809}0w=eg{># z-=g0DPe8E0VAFlphFJTkmCaTU)6e`%&zyUh_Q=yec@&m6nd=OwBovZh4yCfmkA{w@ zC$i9qOuVTsK-Zkq7s4W?tZ9HZaY3!#>Nrg|slm(lA4qX_4;KpO(x6gqs^`-31!R@-|atW@1_PI>vg+)0U3wZ}S`h*V(H{LbrmrX@HFFPZBV=e_wC} zNcRghCb)sX_$7{>TnRA}s98eLP3{S*bF52UD^!Xhhg$V^{}J)ZwD3#%b-0t_`a$s| zXs%P_LafmMjIK7GxSFk_ln6@J*$BAjjd#FWPmf`5DkGe2NB^haUVYNIAA2DydwTIq zUf72LqbmQ&x}&Ewq|_}>5)&0DbO|1alyXh#zx*4aqU|na$vkPz^ilxKK)BIw<*!j& z77V0bY`o3uf#3Y%0E!^8^uc>hxT`UK2CRK=R-HB=Q;D^s)8}*93hwo$_Bb{<=H>PY zuPphnfc+T#yOK!PN2%e#(c}mEnyO-5`|}xk)Nd7JBp;-imGlh=josOy1}R&$w19DH z#KeB4``f)QypL*wGrYp_#yDiC8*X!MG*Uze4f40FN6+AJY9&3te(Udx+AF^}V0JAZ zWw!0B^I>ZG)bD1trD5K$k(U6iwWzV-Q+L!0Z;hO?7I6XKrIDcrACECfL!$h{jzvo0FGm^T&fn{T`Zq5`HLykSH*|hL2v=`#N@BQuXG(2AYtvE z(Al*(awUYIoC@4{_FVkhS8f@-hlg7ET@9Z2oTC^N_j#xdwR;M<&3o?X!WT|Zz6F4v zw%|H3Q-aAm?=zgpwI6oL=tIxF;hBc{lBX6P18dX8zTmlGR@At=xxJ6SH^mF1V?3X= z_;&c9M1PgE{rM}4I6H*zErRQd>ep35%(go{?_zXAErNAU_XBNc@z7@yvQ{bvNymLB z3Tl_MoX8ay#ZAy(KjUH$iPV(LIz%@)3RuG?aPPE>U}l6-g}3J=zNd?1XEntK{1{(p zR$N)@s;R6Ns$P9v!hwA{w`|sXhyjUv>2K4+utd7ev#axT#pR5U5+2my(=k_$1UM;@ zW#(<8>?+lhiQg+vY~6IonbQ8PE9+@k(v$|>*lac-hskl@if7V`+M}|Tmw$-_t?ZWF z`X0XTN83+>mqM-=`d5|j{0sHPW@Y!;KBFB#wCkT zA97ofrank!(k0U+EtvS_a)6}bfY1$cDn7OpUrjB1i7HkCPnB+fJjK%W@4g1C2EkfG zyY0oMs;Es-tc`^!l6WoQnontSXVIdX&f?ea1z=8c9J}bO`BnK5 zHTBzE3cM{h3Qb=STIAK~BHr3e=EbqEV{V5(h9-n0fx%f*!AgvGF}!M?Js-N_BC?N7 z+wRSiqtI*HQm{8rUYB(&Q(`ad#l-oF3-5`#(h@D%%&=`b^K=3eZ12Ne_&9|nq)7{+ z`kFab7U!%$_R%dEYiT0%>)e(?L%)*3n#-}pu8xLflnS@jjgR4F}KYD+Etz<5xpE1GJ7!Sq)focZsapUW5nTa z%!L0}N3f`jQ9KBW0Y)EDuxi~E7LBZNh>}S02VM!xo$IM%66oZaX|YvXICRk}QLKYG zMbPGc$XdXF-4pE<6p7NFjl!~=*nz<&6pL;PSV%Yb7rb^o3P4R&W$f7S&vo32vy)6p z4UVkO1Fi4(Dfxf|FnCs$w}oQ~_bfYiA?3*JvcqU%A8AN7j~>-U;AsAUU1i?D@}Be_ zhnKOc#i!4)Ou4|Z)9m1Ni(}HRnd@wM;05zD(Fa3P{12qxrOyn=a+g`9FODSupzi)4gQ&bq>nPc0|;?Gv@+7wfP^Mm+W z;JKsa)?Jqbmn>}2JQP(49?1B)I?SqN29n~wRob;Wwi@#*H- zfxg*?s5H6?n{j*fUx(DESjZ~mpMifMn|>snBQC!1mV9qK`qIz|o`P7rMf2w*37{Co?y4%=qCNX_ym|2;iv$bM7L=~Wi{g)IyN-x|5ZbGUU`l@j)pWld{m zW6#@`oRE=fuy*dQOZMU1;&pR9D@*TKWheP3`!PO|(doE@ zJ4o&Ubl9u-vtQwTaUAK_rz};c;r#CAxIli6DvjfH{Zi$q&BPN8=Z5f&;JY0mc(oe% z7Exv1mw?Sn)w6Xx{E}8}$2JR~8JGr&(}$9TNFz z#rQ3zrzqRZD>m(sgLM|*nf07kK0B-~m=%`v(j4u(0Lbo91#iE2RFf^ILjPU$m zAGrs7?eLMra=R$^zhJPzHQ zAq&@*nW~l8AQ3eQ(v*u=TUxt+if(V2Y7p`n0ZR0`?9x$}e`P%T)Jx>hpRgAf6WOrp z|4?Y!|GSw(4O;!*+3L@-2|ct{HHu<~kH(#Y9)s$+p}x8|@L+`QD^rqL7QGXZQTx3k z{eP9uqAt@TsOPu#rf~$ypQSkqpgIRnw#$mjZh+2Ny{><|__sd1v>X?-dzSuo02QEq ze{9gix!>LR3DT28@NCmlA%h#Gt|*^O=e`X3Znyh63hP$Z4Zo|A`}b?vez12VP$4cX#OLQ5JKDq9m{5QKhSARaSmB zuJ#q-sg7EXkB$u>Qh>rGD5E<5MbY3B^90%oe_i($YlLDzw1tNM%L-uvEzmupBiR8f z*Hu9f(p~4(x5Y;)@UbB6ejZnFktdHQ7>==W6X6uDBxpxV?WP0dl` z74^O*Ky0wg@is`0yFZ$53!#yQwdHCqcb<8(@gPV;gO~^je+WC*nM9BO4A-0;bv#Thz9B-h;sE){W!-Xo79Go#TFQz|PU^{g z-CyMv312^Y+Vqc+t|qAr03z!^TFC-0WG6PJNS!wUkcr`SFTz?N=)-Wxr5wv`{(H9A z=>(E&H>*Wj3JBI-!bk)qS#WnLnjBXOg|8v{^Lk> z(5#OUsmR^rVFuw{_K#XWqFmJvOK#RqgQgh8vn+8V3((z+jEPnFGNB8SBod4CHVr6{ z{E8JiSasRzn1JawO?6ax2c%OfXQooUFAe?gMV^y#7b;gcpHI&Cegw(NXryRrMz$nd zkjibC6JyB{JlAx`wLB@1Za^__){um&JJtlenAE*0OI@}=6`RjZ()Oa+=hb~xd=VBh zN~M(d<9&%;+vE7YCdCfKUUYL8ogjv5O@Xh}t;T&7Y!`s-KV>>ld+)lOj0*1C#VVt0 z2EDHjHZ`v?w280z^yL?`AU71T5$^6&9uOeMWfQ~=4j%|}aMglgh z<3~jz$l6SX(xJ1$rJA{y&TjD*^yf)-CJQvAb_MTYJr3seqb$Q>zFqG&AGrx_fWd=1 zt9drw_<5+U-8=eSDx_Zj?@OI?E(Och>bSK3pvM}pH`$M?#T#Q~nWKKm#2XznOWnRE zO%i$bdHpXMc>Co*@Gk;-t8A376~aIUzOAbvPTM=b<4Mo<`JL?#rsG;t-ldu*q5v-f zpsakPs)^*>sOFSp<*jY+9{g3+f!~<@zEg%wz)#eOmD`k{O9?;b{eNd|V^81wi4L|( zlD~bpGzCWsv0~2%O?Q(~Bp~65G6?VAM>U>*NE)TQ^&|1<=JdbaS>nhS&hr0+Cbw8f zTgSmLKpg=mQvFvXu}m)TuRo&`(^yW^usTHm;`1d4Fcdmsi*e{(Hk*TlMHf<6g1}HA zuhaFmzXoEyoloJkatWbm$55A910~uFFMdzhiRO|igBY?cN)R)DCSGLao!)UI^z50v zvZ0mmLvWtCpM7ZiRrLMl_WDxY1~hu!H3tpx8-6`+YuP>t9RFite|MK7sINwBz(}HI zp7-|x{-0*?mQ`zfqHJ>Pb+qtt7(3KAt9x{Ec;hi)GISX_$iomT5}9;)jl7Z3+D_Ww zUFL8B7e+|xE}h{^O|HzL=4Rxc@mBfcCXon?txp+hX_qft&rsB6r;Wfl*Vizji*HOmt_xnoTwdbv`E}ZUuF3qgzmUw| zH{7V`AHlIyE^`Tz-HWjuDTT|srf-Pr9lnmz&6R?n|Kr_v)P z&Di*wT4xK(RO;Xav+Pt(DpVOi?C~1|jcL zD7%04OkB)3Q3fZm8~JjEsFV`p9`Oh2<3@(wF!$j^eY@eDm0cN>1oY$MfAgg{rk%UY zlJSasZv`R58s8Bg3WWK94|vwe04`PuoYN79wB>NBsaLa z>3kw&CN-oLX#ycj!C1mpxrvA zy?9+TV>u&R`=U>ncdr&N0SRl|%tLA`j?B$%|)CY-F55JYFygw+It%{8WW=1zQ^Z9yQd40XCl zxZNmPt`X3u5WRG77#xhu6cnK-qI&7G%7)phV8rJUrI1b4m2Js{Rb3_~2KHLkOIk z11lrF+;ak8mz-=azUiOZEBHk0c_s6zxRJzQVi@!2T%d$2c0dJkzRVx~7H7G8*#H|E z3Y{5%YgAyD4-lL?OI`X}OlWdvuyZ8vJ;d>xMFl3Fu9Tdekf*C8`R$Xnft4z+!AI>9 z8pL&1@7}J4uP@c?skvPc^HAsQ+sEp|^sRwbLeS8C?0)<77R48pSXu6HcU;?}g>tw8 z8PPwB`7tEl*KRuD1Q0X#fFMEtqIaK7ra*GaEC%!!f7Ef+7^SiRtE@UGp9=SuxnS$^ zx7@WhQQK7DPV>!RqSbjhVR=W%dKHFOD?&>I1aAYW>HHQo@1+THBB<}N$s!%j-|H8_ ze#s0H%mr?P48`G5sKdDBk`s3)A!pdYQl-Cb%?PaLE1tx}TJ=`Ea~mHc0_Kl-$L4Nt ztwEaX<86v)na&heRM=78j=A!AuR^5G7R15UufY;TD!*Lgm8jH_CdR7y!?MBX`WE7@ znwy@rX!ZFraU&_Zk=3D7QHnZMId~^17NC^cdatah&sg`3w>GQtZTF9Fv?eSL>vZ3J zNpiq|e*q;?Dbv!blNIUgVLDCW+jon@K7HmgbhQkk3Wb3ZrvhQ)l@D^ntB}7rA$(eV zEF=I_h9ZeQgN+0js!FwiN4BG`w$;WH%A=3Hg8FoOfu&p~*2|RN)(?#|yRM@e05{kw zYj)xBi7nGG`2_i`$=EDENK*TWQM~-R2eD7Cx+RY2%dRSEq1?hzPdS@ zukS!xw@dSCE0L4tO1FKEyoCw;NTKK2;5`-zwBDzJj(aneb*;>;j))k-tH3wpJ#gX! zL-E+Krqk~tE+})Zqx{LxY}Sip8{RfAP3^?GtxZzil19~{Zz4=e`pChzw@q(49Tv*& z=sz7VZ)!r{FCSJEN~SOdJ2`VC)8WAugQhXNoT^h`P(ohM+_u|Z;M!nX|BBklJ3D?Y zVL8)MoCj9a2fU5a0X2n>&)%UvOl@225hX$LZB0p-$W3sl7M&O7W14k*^a@3k@l)?K z_+LR}pCfT$fg3uITq29XPrs324;W!fV*{QfF*w*Dw&^0yM=laT|Iqa5mY>sS={E%@ z+em4Q200jA3ym7QOO`Jcw|J8=#A4E-^ueY@kqCAeCu>jvDw(CZ>41ySJ63u#j+;rG z80?N|Cd$VD?EXo5-Tx1GIlchDkDSvTGMSb;j>xUnJnrCI;l}ngeO*tbJfAWBuwP8@ zDAbpd2JkA>v4gXB(GUTsFF`Hhcvf*Y_YFZr4W$&(a3JvqpKv0$Xl6KQuQdw{y zcw@UM{N8&Kc{WBnm;D8w3MsdBh|3T%WgDT(RL`FYDk~zwDWIm z*A{xaoP%~QT@B^zr2dFBQ!LE{Z>p0nv7*))dGMCOwBIFp%RAr%BV;ef`DWxDj_sXOL*jav^h-HdRjx_^M3m_N3g+e34E z%6j?7rG%+HM<{$%2A%e|V16j>Qr^o!q{2dNrE)v(%?Cm>0jhW5}x|3WI8JxRsQ$uD0Z3&UJf5@BR!~0q|@@R_w zPWEjJOx#!OeXNR9sOr~bsf+cy7Ot{gK=Pp>fhYB1zRl(V`JB~98NxF(@Cu9&ldv7a zHh0sSt+TgC_s*qAiz5p{ilzuMvcY&R=Y?~(n@ZEr3gOH1WzW>bQl<^^ugrKZD)OdK zfrcT7X_^lyHB&x&badE1b9iWdzeu@?kNH8yB}A(@!Sixy({0`T8KRn|Bs;OKE<;v)#?Y+BOJaXC zN&@99od^m>ajdlbYGhJ3=N3v5j~n|QP;*XVvV@3})PCx^N_{WG`f9>;u_i1zV5xD~ zmzme#ZYcG4pGiSr&91f*^(NA^zCNn{Mt?5aM9^LHSw1!yb9}4oH|BK*+KYgCIrQ;z z-ceTADGY`Bs_95s`OW8g%>S24PcobQBkgUs2cKzXlFds}#MX1>SO8ZKR0$d-y6U&tPm=!EWNG zl_UFay5oX0c{?q<8`2OT>|Gj8;~Be!DhTRFKIv*@!! z`|zWIhxs620}Vg7B_v-xUaFV(!nbB>PCf-Wa6Lr>=QUBy2W2x}k<=^&m|M`u6P?Fi zzcha$k_LcUx6Uvrx|Nt-TbslLgp(0RTc4uC%!^Iz(%MpjSIo`)pw&+LqMsUeF#c{} zLg>~D2jRrR6T`#Nl;`5qm9wX>Xv;ta@%|kDr)%HE?msmw{s{%WsX{(9d^K82_qRk_ zLQ%w{N?M!|aqA_Tw!f4<183`6pLWE9X`mv_<6RxC4=H?eGOX)wvc&B|xYva%=?QN; zvnRIdIhwbO)VRZtgVoGcDRSQHF7qlf-Wsj6m6sE#DQ(*P{H&bdpuxpmy0WyFK5nh9 zES>m~cBqW9#xbn?StZ34?RU=@%Emu=G+eZ#@&16;%x&oM6PhTfe?pXfG}vdBEJst&W0@TcKpOM@m1)S9?op`LuX~Ps_a7JNe$VKbsi+a8ra4D0V>cZ<&9${Ft8JYu z%w6{>So+z4!V7|Xp+JFq4j}(9+Sw&X@Vg~MrA^b8m6MQnPAWdSEOir>!^aQJ`flzR z_bUGrY$~c~rn}e9jt>wWODA771OF9B(`+m5Fxxtidrgv1stJm?o=_eRqDty3kXUy<<_tZi-)w7VK_6*fT5Wco3t0=mHjd+u zcNpb@WU|%21>;z;xKa;*Hd)lE(u0(z*2dbEDCo5ob^EBL_d2m@I zXy&Qh)Jyy?l)ZT!<<-=DCKVOIf21u3(r0amis`}o_o40;v9pnuUz5;^6R-ucHQ_1B z_1AA-gFQ|Jf3NaP40(4v36fZcw(ntn``gMi546EWKKRvHORS4iprh7_1b=gAD?M@ zDJ1GQ9^JpSeWsyM@!s>_mmgsog>fvpp;j{n{uwttpK|}eFb!rB?H~;4t`|3(PWk)j zD`ndhx}&T1Jd3=J83y~IGXA|7`+q8TBTbR={969?xx8xZG?VT-g)UL8)SuTfTkC6o zRF~fv@!G!zO(}QfX$jv+iX6DT#HKLb(!5(OjX<8?;DHMJ#A$Tjd6&WOmYyB-&Flia zUk`x3?&dI~|pygr>G!3b}Vq5p_P0 z{?D&w=czyN>2nujHx1xjp4?!2zC&Lxc-!Ke#iY49KE!*BJ^mCjQ-_d87q6mOt5p4w z6t}wv0l@fEd01JOy zmAL>oWCvSZ+G&%#85W+-rTGexDD{p`gk-zd_N9`ht-5|2naaQ0^Y~4V5?}gvOz!>* z1o0fhSjxzoGxj;#!r<{IpR0}Vb0dWjowlwb8FA`v4>r}7`~5umCbfEIf?L8!uzjP) zN*l0l3-nk9TCf=KHCUOvCRpLu2q%zYYV2xg296Q-}t$ zC_q9qLtLi@Oj{+#rEtV>y6L>_lmd1rw`BklZ&T1w7sdfpbjnb%B?4odpwnPej{vAV zVj7d7oh@Cq>W{B-V%`?S9h%+#2RXVpd3ru@dQ3fvU+OLtF^9mbw3YTWLO*pUuRK-5 z=&ge27}8G(lyp+B&kjsjxQS4B3aPa6*THzwXZkNav?~)G=|KS!D>VhZLc?xVs{W9R z0$K`e-lmK(!p%THh==Z|;MAM~G;H6N^1-h+182IsuXWP=hIH^kK|{q1r`NY1L`^_I z0stT#ied67aXgoKiPE#qJvw)N=aJOb$2URalX%Vl7WL0mo=dOG0hB|Z$P|DP2`Lg2 znXrV!Crm;5fZc=O@HpL0@J8J{*X>sBU+={U`>hP_(FB5L%^%n?&?yici`oVb2pJZq z!ax;mKWO|`j)2IYR8YkU1Dt;;&9UY15DzTMnXhA+M#D1YGlj2R8TzF|HBm5OUgK8P zu6{pnb7O7Z>$l>J98`QQ-V^{+1>YPyV&qB~2GvCZYCYgGL%h47;e=|!wTKBKa0qt9 z+WpL3lwc5FSlMGvHKkj@72Yo5m2GK304>YVcuj`LfDU~1AuZUe>+D)iOG(iHr~nfj ze_r)>^BSZ*6vXb5O-bu2#cjp!8)7{M0*NP`dpw$=yMGv)YnNNRmX^GqRsNeLQ)GMI z3y2NwI880lrfA^y)&CT1#Hd(eFhIn{(rWD>TGe3r)}gMEgzywkXNE0Tm~CjZBnvH_ zO-_yJNfBCyFfbHA5Ij~J0tQ3e+)n`Zt*4`p36;48T>+WRn7EJ#0R;dBe=kR;`X3+F zKk^&O6-HMLYMvuzke!4(U_bzPl>-1s4%Y~2AvYi}oJ1{%mT<^*q+%o27$6AGir7FR z1+Y7jMF$`rx|dgzES-1(Ed!4bnXR3UFYfe?tHf{Ro}e%Entk&&q;#~+iJBHWdQ=kep)hn9JglSK+b48bcHw0@K$}%VE)bnHps|iIWI8X0%DW z-L9Be?|4O69*)MXytlPfMO^RpqHi8c?XEr^S_+spkR{OwlD{H5#zHbF*`n4div^*JEW#995evR0E|Ha?E-OotY zYUzi!nmnASl?h4dTOOt_-Y^RkZiMNCK&IfLyL}ItaBO#S)k@>yJMoy&Nu_#vpFjRa za4GjZ>Cs3^)}6u5wu(#69EeNK1LH^+cm?-rtE5N#d6A{hk=EPYY}#p-@0L(A&# zD@G)j^NMNNsex*TVk{3PttFs4li&mh?!XZ{D$D)4OPn^8sO1Txw>OGL7mx8Z)`%JM zw{-8aVv}V%;Xg-+S_UT9X0>ZybEHq!g%Ol#=z9_D0N56YG~WbMN{K&Ks}j{!Mv)bH z0l1E^sqi9Y87n2)vQj{08oH+y+lmRmDhA4Gws}fe`bq81fWj==VL0Wq>fWDb>(|VY zG@gNTLoM|lRvkG}XX;MCkTreu>b^k8nD8EShlMyDNwz9LYq`%u;guLW9C|we>nOc0?)V5kI!2Jm4`bzW)9v9H-cl=Et6T>XN@I!zDnWbt6i zM^_%2(N~Yl<=To@>hon&teKa(C72YoV)_p39J8?0dU(j8>WsmDb?lJ;ljrWIJ%_ph zCf(}cSufRtPNk&(DlizxXxh=2U2pF*wxokV<9pIvr zSAga2_qjO`H`9spiqxl$r^pf}C)0QD+Hso{YRP_mSWSi5kW@tXu0R*upP{3n9j`J@ zR7#cl58D;eVfzc%A<}8+oP4XCce5y7y%j95CYX|fTwO^&IkG({ahlMEeO*0ZPh)Ck z#0l;AV0(CRt5K&aC)GOt8N|K~T@pn@y zk(m#ob&QQSNazjz%D-Q!XoGTaLrNhb_gJ@y)HQ65932UTFAlw0{w&(pu%y-KXqgeo z_Zo0GiTZzMf8q@N1L5kgaw{$FU@FYAUaG)?W4^{@O*^&@+_AykvEB3~(dfyLJpNC| zblvQS?2Esqwl?f-xtn-_fmz)A3^A0E95%Qj^5}PVIX~g=_slYkeG0)^SlMhh>oy-6 zMID9_74kmEZarb##=`Ah&jCv5%{gLs&2b@!2QScW;RzKM`rk6IDu0 znZu8Zq5``a2vI(oKJIF4k1nEsP>SU{>u^VI=3?}RxZvHzJBj4HHgDn^zp_Hx*+g^-Sn z%LumfdFIV7YUwvV=SZDyIoCyXa=oq>2-~u>yxUx9F6ty50VK!4=&;j;9c1reqfG7q z3S9y0IomBAGCz$+_e&_H8))_&{&qIDZGf@0j|@Y=<$<6_^Znmn`n4i(e%m+RxZjubsxXq*X7i1L_V zjP#xBS|t-MOSHYT6_EGc-;VYP_j<^Aa~g!QExS06N>er>Jl$S=9rf;V8I>*l&h6!E zJDg$pTPkE|9#gKSMcjyf%2BDYwgnZMZk$a&(;G*Kw|j^;?x;+B2|Wmpojs{P1uRZ- z_j%NW(o)sk~@@^=I745;8ZIi*kDw3}7VCUMP{Iz=B%h77-3h>9cm&au9e{q(H5 zyb(H{-ZSbvC&RvS=aHChfNgFIbzNjyKE?}h_5Zd;mlt#NZASW?eScN}zqA&PAR*l8 z9a%*?eHSQLTSAeyb=p~mM1Kh%64!lqmkyqa|1nlody32Y%h&NV%&Iz&Za6F2$H&9H zPtil@Kc!y9wC*2TT^^*?Ju5b^`xO4Q+2(-PED=>-=Tz?TKqp$4VQdjBFV8U$G(LIw z$Cv=?%u0h7>ZJ=&4S*FVqMN|>4rIYKR%6v-lx90f&4vTLKdc zpW4noxSz+g5OBY!1CQBSr7YA*RwWK?kd;X)b!yY9g%6Oq*XyJEQD!&#E&6`Rn`0TG zW!4m{%L~Q>0&~| z+37hA`4T&0I9UVZuIw(lhC7$5RaFlzniP6{gL~9TVmx%4QBs5bEcsk#=kxAi?AHg2 zjs4FR-PfJFd3m&tQ=}bFM`lz|G7-YDa8hBC3Lid3BO? zsg4`AKbeKMO0eibAz~kIKlB6r-5Y~B;i|cGs1|fy4FSZqP9&bEIr338Bu)1JkBs5; zEo=QBidr67d|Jsl)p+(!Qe>YHFZcrEe^xUZ5JZoFA3I?1{FLgrA z@MXeb`MLjmurfeir#M&l+*5DM4fau5r{rC4jE5d6?@Pm?ol5aRZ3#?t=#sO%@2Qr~ zMUFzr^-GSuh8N;IWnS8iH291AE3Na)54~mW6_fj@o`>d~zM{5mB0057Yje#O0&5m2 z*z?3x+-$x|PK7P%d+h$8))?8Fo(|h5akeJR@9?jr71^+!P zYI^uw<>IXA?(C!OcY2&lS@VqJWfAPR+C$O#X{KX^_k6huoO9|UXL+N3QWJoU))MnN zlvZ6bInlXWEskd$ zimFY)3DMKy6Ww$?Q8ul6nCf5y=lr>j*g95o07!s6!=ExPWLP2ITowiey?VjFF?L66 z=IP*QLhD@0>aZ%*6p9lS`-mi5dc~rMtf~_itx-2t-~}1oe3P}?QODwTNuxU?coig< z_$7p--YulnlwsH+fm-R$b9qlJU2Fb-=t!1Z8H(U9P2m2~fc$%3qj7ta-<3(k1?(Xg z8Gx+b_hR?5Czb^wT zp09ZkP*Ig(a@D;5XJ+`6R_^M#;9!qItTwAUaciUQG#^@qrr?XfDHEVabCVY$qQy%D zyaCkA{Uu6@k+Ayo^9jyEa8u;NGpBTt)qi=uynV!kIsla7oeYn(BBM~B$I;P*XD59LbJwVAJPyQ|yMNzbWn0%?>h;jrDH zSPa@DhTh}`R<*e(jrNQovTZZ$u9u%i%GGEXBYdU-hPz-&5RD%!ol0gq&}<`Zf(UPW zqn10sC^sUE>J^F*7v&^{Yeei&O`;C>uNWY(tR(x6f zq09RZr$(F_6_+6vH-O)tzXl7RyLyJEXvgVqq;Y<&wcm>ex1B1gqxaAoeZfd`JNuP< zr1385d*Ec&r{ds!S(oLw`P(f}FJl5H?)Fn~zYC!ySAddbO%W1)|5t(}B$eVKu7kwg zL3uqSL;iOr?KbP%Lo}tl%{&eUixAr>gS^nyn3x`zi*+Qs@I=>3x@d{~W<~3vxWyO1 zA>L>k$|vVq@yuxAYvLNcvq3uvu9E<@I7&221|y@+W2us?z*O%B)Y_z&L`~u(At@5T zT_B{545B7DEYA|cZh9q4OH?VT<%83{QAxP8k~H9CLTCEb$9cj^S#>Ji$bW9Xz)den@KbwpgK!uZk zb&V$IE7nN0qFss5(>LhSvr*oHnuuP0Xfcy`S9AT*8Q?BmX*4k=iM6NM1$BR6d-m+@ zt>4xXwyS#V3LfTidlJ)9`h^7nQ-uCKy1d)mow)fIU2Ij81CWR1!rU*Rc7gOvF`TeC z#R<=Rkb52mPgwB3I@3cDCxQ1fu;(vsiN+eGRVE}cj%gj;@?o|i*m zh0?b}jt3^=J}pKf#w(5H{mY>Ufvn?@tp?o$wKJ-w%LTey6A}Tj`8U2LbAWyLSCyvM#D&LwSBg>dQHJT zmgp{{JQW`U(KQoIxAofNq`tQkt<9?EM)ZlWMu*Oy6rnYn%3!LTHf#M}M-d#I&J9?x zV0kxc?X*M!O=qu>z476WjRDy>+J~taEyplXex{uJU(s^E_x*pp@6WN`)2f@1luZUH zT-|kZlWDvua3ogqF`8ruv{EH(Bd4^x(n{Uh(w|zA_~7>VXjhd$92vD}(fC}+=Uvup zqJ6t)VU6d)I#6%l@1O8R5s`kHLoe<9*Y&C-Eb0h$!Pp^87v_zIw@ZagVW z@wGAj98=Wc;n!t&G@U66R#BG?hzPFs-*K>l~3xBUR}jrUGzOQTr^Ae(L2@FV%OsZg)Qkj zikFqV{w`kZ+Qj4Hl$^=LXyza+sI6Fp|Hy(BC1gQ}?8?694Y%Sg}jr6a4!> zwqyOx+%Y_xLyr#y`&iz}UE_-hPt$Agwt(1n-$G$GyhGGF!RDfKX+oVF594H>#H(ec zwj{pH_JF;zXzT8Ac@t&wO|jleuVJacT}fL}gCxBQ^p$8y?XW02YFNFk2s-IV5xu^v zk3Z46h+>uO^lHkyue86?kbuoD1a+Kx&5&7^wi#AhA8KiSKjfIM-2FGu3~$DnlK%U& zZN6^hROd;MN1Qdsq;T!Jxlawms;m$S(=I&j<9-u&?oSzaS5S147S|gMg>V%cm#hCSTZ^sdlbAi-8_>7G|%2g zZ9UE^?Jzd}^y+)Mr840v@HNsRavt92&3ob`OQR40V1wXYhW|>uHZj^&{r;Q+?BECh zZs0_fB?yyj<+;4jhyguxBqksjB~9JArc8|A-LgHGzSWVbT<1}ylg0p0WpTAud^D(~ zxf{1BZ|;lmDYLj_XsrfusrID*R_ISLR{NX*vvLBasa9v2gBEeQ9st-sLUNh+YHbcI z6p#iAy&Tm2224r*&4y?3QDSL{!NI@mZ$C!9b1eR%__UqO?x#`OPV%rTv}^2?uQun3 z3Ur@CIk6wrkn;^5+7$Po;gg^W;a;=(rQMkL&7J>@x~sYH5$C@o6fC`G(NI*)cf8(p z2$?;EsWkE4=v5pxHj}82L+S_Y_4OB@``i0ewl%d;ed;4Jya*N_!9m7doS+5yv!q8OY~B41(+7;Hq025b$|>>Z?(m^MDHP(X0{M6D9s%W zLxk>I6S3COJkr+FU9;rBt(#v*IU}r$mUIOHi4p*SfQXzhS^8GV^}h?a-EsB%Juu%p z|4FZid$!F9L-M-4jvs-w({_FDih?FMrTIo;i+X($v^VBXa)ZGUD`7?JpLTs%$Kmiw z^LtjbU^v7*P+9eDe&DVJThXucEh=_sGkhw=4%ef3z@tBqBdv+Jg$GV%s zMkR?QkWCg0kRXTk9QUo-c3vUeZF-K=vbS^Ma*I2;=rR0>Pyj#t2 ze#PS$$<+QDj>p!~xfnhlr)?`FZZ#Qe<1LMib~58f5?N_Pb3K6`M(l9aq6d~qYUYe< zKIa5d^&+6*g{gla?J&a(aZ%dQ)noYLL^!|2agU9_@Z9%iG7ZZSn?FG&XV9wGIYSSc zZfxJaB?l4frkOP$PG+GXcE2Sh%#SS}(*239|8V2;NO0bLOw6GAdblH#!0|^%=!`9B zmB8TMa_frkk`u29Q>x>jSNUDSmt}JH0dqSny^p{8sVfHJHZD#paKOoN^fC7KVXqhB zj(YmfrrQ15kW`x4%ox30U3bgY%&c4N%HThg)`a%ME!eG&M^vT=f|nXWnz+v%y-67jR7Su*YbLqNR0kNA?f7W4j^ z6?jcS3z&)YZFV?!{dnKj>zJcBDE;YLx9D(!T+h%!i1>JR$L^a(H+IxB=#VC0zru2~ zPvp_V4cDTT;4UYgQ_H_~O(c4snYDf2?O?4EqCLr6s}=B_A3DDr4-xPhD|O^TtX6-m z8!LaIf9`6_bNBwVt&>-wWiJ2l1&|R4qtuqAJhwxCzj+(*bpMlZJ39{?Q+1=|GQzb( zr~0knE}Ool%QD%oYud@0Uz!pW3v}NZ3;tjW<#eFI3Wz@Vm)RZBh+DcF#wbEcsp{Yo zRd>qoY@IAEelF-;78ru@c8iGRZv+192vawesrrfR&@?VhSJLgye_7Zc<D?%4`A(iqrM zQ_;mUdQ*!jb$$vy?T^9Fddm0Z%3>|i5u zc}-F1Fj$$MM@C&@Tfn!Dtc{+nuxT%Ef*-j}L zea$uL-{W*}A~oFEowOI94&3kIk^l+4XRrBLX@JfKz5`fBB8Sf&7Vie&YMjUqWwmss zNcuI=D(K%;+;n{X)1O_7kGzjSda8BS<9WyDaxPa`6U5{b86YK-$@9$#x>A1azGo5+ zsmd|erBs@nT9kL!4C(jlh29>~hNhzfNcH=q*P>DCc$g2iemq{rNRe>Ct9O^ zlY9Yk(8jp-0P{Vd3-@FOK9U+J_;S4kydH)op_iljF?jrFrjm=g*fbQ!!-Nt(v}_|s zRl^DUKJg0;Piu~SY2B8xq$dgX((-ES&C{l3U~z!cGf7fV=}UjnxA!?Bo3`6CAUj~U zhNEf*wLUGG)Xizi@!xW~2CGKP zPr!MwcYWiFH8k+{RVq=Lx1Xp5ycmH(R~PtS8pWIZZ|1-6^QctOYd~(4bCg##R(EmA zf_Iyz51N#}^+n`v*`VL_MbSX@naw78Q3?zB?x{QB;Ln+{j4hp<}@Zdyl2Lj62;GcsvI^&p3E%6%hQQluuH- zb$S}S#Oits&!$@;-Jj z1xgVZglkV@!`w$L23P)uZ)aCT;GZ4S$;?Ws5hiycb zn@6~2H@8yk76d#gKnH4XHcUFNt!YR_JP2KUsn>bj>w@#iO19iZLR##NG7lm)jygQ3 zwsP?UO^!l1A!T3}we)KAx@w{lm+7De1=BvY8v-k4;eC;SQ@RNu<6f(5r@rr!gI61& z1F6+{P_cK~yEgw0yLS#4K6nCKdN-^Fou_5*ciKXq(wuI88tqzCs-@UbbZ_=#m6@X5 zNzwa%Kn2WhH=5m%;eBzZp8jb~mOf*-e5(}PS5yN8IBHd;GSpi;dCwHS-k)>k-}z^6 zD1CK-E79%oXPEasvV8dT;e562A!??-Z`i9hEuQqRpHejdtI1rA{(`orgzasq%y@VB z#wpv{XSt4IwJDJ?U;W4}Is_U3ISc=`XYOUW|HE<1B)}+BTJVZ#?xoe*bEN&s-Fgqd ze2ACk5n2Lw@BIta&V${kFX>6m_-y1^tJ^_ePuD_?iFoGf&$rV5HET3b!L)L$W@Z@5JD%kk}VX4z1|N09d^F=u4PaO&0X?=ST$ zB;;1ohOc`Ix@q09 za<9tqT#wshI3CSAsmy+jRAq~SyM06<1LVWG10*2$_6nNPvVUE76BFjqo;+GRr{K5X z(rxdpmQ+eCl?DdO}9R`rHPbM7Q%gUk2mvfUFZau&?!f?ES)gZl6 zW^|34>CcT>Vme~00b$B!u(v`@8fuS|rOmP6yM7j!@acRRff{KR6p8f`>Ev%QzDE7W zmCQQZ%Wd?O1+w?-)|sIh>-OsMMd8ThN}0+3N5>;pW+an=pV>(ul77nA9{QUScOwUK z8nZV72#}NmHrUF@!PAJf9ccwT6mz!7hGClA_a$Lo|Dd96R z(VPEMawIYsNX@fU69u)cr%lnM(NeRco6^DVfnNvX{Zq}b{c{0(wMHASOLtz!jzruq~XtU9*OWOC5!(*dzmij^>9f68~%P_E*`yPPo%;%RxosAvzt=Euh zlKW}o6PJ4lIcAt2MX$5PhoS+^-1=W6UEJG3M6{MAzrx?Xjcpsb##Y+OZu7{3u|+et zhmk|M8v042t**gRlGu?~^JU-XL09-MO^MyZzq2ta>M29ConB% zN^nRcVLyr-p7R=|Z+A}EMZGI>t>|ewhbciFP-dbU@uWw+dZPN(Re+12)J7$Sh>7*= zZ9gFH8;$ZNQPXe0#=c3_(?DdH?VC#m_Qk~3mg@)kT2Z4>SN<30Fh&oPP=BsyOsNnHg}(wBc`Xv)jio1RK# zCo*!Ki1^toO*T0NP$>i@vg@1P`rKD}-(r)?DjSQc_QB)klPpG6>`=$%S#R33=0nN* z5-8D$+vx5$e4p8?S;IHUD$xEZ8haYOWn#ayQa0^C;}8`J22U~fJ5~P~0Cza%jS3RY zg(|#KbSm+q+fTQ%PHLecH+I=Wo?P0h+(FcL)7$6Ho>-cmX$~K_$zsXx4YsWKubah6 zcI1sE(2~U|^M-b8MB%5(!`g!$^4+!tqQMh5TJIgq+pfW*N_EjbT=tx8ZWZk2ZfL}w zO6@F5)58h}PsfXV;}L!n#bfH5LKDU;#cnjJHH;STmYc5Bp{&QtgnS3Sk5RCXy|27^4gr4c8vHJ$?~)Xmf1je>D|(8B#hI0X-ZdtT zdX;*TzwojOCQ-ZK!2vCDFJ`My{bY65fczIg+=lK(M}86V7`^YmHV`?Yk0~;+zWF|oqZ-%DrqBR@{4+@ z*S}P!CP!%0GI+InaD1EXAUNQU7sIpbo<`0Sp8Nn<+G354r%w`~sX_Z;_G5M%^X+@n z7pofdKNEc{b(U&J%w4@G6!|cv2t{Iq6ztX}EvSu)!>GSGUR`8g1hhkhVJUre`hITn z2SwSX%UzlHx!O4Vxb~GhGEU&xCJ-X{WH^4wREZX>^+BG)K4vCGW1dv#Z zQx>Jm{Py-*0e|&Yb6xgic6julV!7!Totivu^^|Jp64AQODT+u(+#Tb5oV_4T+iY9b zkOWOH#tyrRwRl?=4!O%>5bI+Y>AU{VnRb=O+L5)|07OAj8j(sk?$mjjM7!eC86Z!< z6w{Bf&XUan)xt?(q6CKt!+mhqG^&xA@}Lp#G`pd5dt?0(kSc}fdNY@8&Jvq8c>Sfl zIe2`EoEg;L>Np2udJ0C~$YJMe+0_9^ZpQvFoq)nS4~1k~@fjJ3M&nbRX7_PC^J>Hb zZB($;92Syp3ssVO+9U3v=5e#GC6)7e{2OYSAh&LE0CvAGB=jcOs_P*&Dgx(^aAv5h#V6 zLZqivZpa=lgVB7kogC5*;|-x$H>2j7)1=5gMIJSfAGl?AY^^9z{2Cp*#{q~jb3)bj zk?Mc@ji9T!O+!SV?^h?S`EnD+e=X%P0Dxq=9nA%rYn7{OpI5^n99k({Ahh0?*<<%# zhgF^{L$HhzlEORF?W{mZfzrpI@$_ zU&&tXb2NDBs?$sCb)`wGe)5Is!3%0G25BN|&=P~pR+Q{0S_b?{1v_*MbjV?kt$FP0 zoLU$eI%N-C7-GC-Z{w8cv96S|TW7;Nu`fxh&aS z+dF4z&Dv1bqs99y<2D0b0&J9sBncRFTHzBQaz9Uc@0)HR_jp98WNv) z8$D8AzSuz6Xn1-Jsn5szAI;MvrHPkg14o&AF4*s~UakWD>;S@S&lRK(W~d2XMv|Yv ztlH%G$(SIciXXb$l=|~*`3J~Da9^%&k4Dp3AzUoZTvsR)U4iYjFtu#J}&?2%93sFZfSR#%T=tl)-18ZH3*@Kx((R;bf7pl8ZdaREEFnzALgg_u~`j9w)IompT z8A=3iP1dmK_*P|G!?5-GWtX7T&}~8owvinEB^x`Dsyf_?4?&A#ko3#d!F`(kvci?6 zR`!|Jyc$~>Tq2$V`Efd7i;Ft~O*C#)lTCyQ2%b`ww!@8s!o5-*=9bdpvIeH0l%W@{MfU(VUbdOqtL6nJxq>+ zLXn?CBmMhQ);WO}gMN$@6N#U^puK1C#2ofp{U(7v1;_EEwoAGCQA*1aZ^n&vC+VGdMd$#cc-(Kwb9qB-wf6^PWIa` zFw*+{II~S;ELXefZ9B*nKNJ#uES>90boL2uaUH@VBxbqywv#c-<_aMVg06)LBgP$K z!p;cR^w~#A+|0vyqc63M-ZPrt9WZFP6bLP(e6*K=G%dnxJ0c7Izqi=pYk7l3DW@HPZSw0&C`p4yZF1BIop3PZrpz^P`M>AQZ6Eq%RIg!^S(EEuI87R>J~5j{cU3y2+kEX?uQZsNYt-OIkWQ zOmrV`>~o7{A`Yp*4@+MDMu+`>@j~*z6?E%|p`%a7G0mIOucfJQ*aM=fjjM5x-%>Ly zY&wu;OI?wXcIz+j+M=fL!meFf+>5C5B(fT7<#M)OPYQOw@WbruAj8_`WzL<>*^~U&WogeV)n&z`A+c8o+n<6qD5U^OPtIrc2z7ABg z?xWl8(o%pEiWo!(QdJhEiyytpd8R1EhVYp zQ9azOHMyo}YQ8sVR)aiNQ|nET)Fa;mUqRKCHoz%uR$&Eh3(wx&OLmQyRlWw2>&ctf z)w=2UyLc}M@{iL~E`OQxiSN^CtuV3s@wT$KFqqsSSPcwnAEh044|qWYX~X3rf?O!8gzCfwtvoe%s@}FkyMil0 z$5Uo*!Pwq}r7AM1>?_Ut45?{VD^RP4DKUqTr&oG&Ttr%yLUjw(etT?}E=T+g zKbT!t?NeB+gpY-!d~UfqhXcHo4jufsvN7v}5hz)P!}jR!G)=tn)IIM#{=p<9np4#2 zfRC_{w)=fQL`IL*PjN9y^>`t+Lb6IRu{cL~VRW0s@?A<_Ua1bP?ges+ha3IZf<2jr zc35Emwc+3ps@DRim9#a#;JLS!LN9wjcldNQK<5b(*;P#1c79wbRf!;w!&0YF2fmK9IwjnbR)+?S<5kSB28(O^C5Sp7`ETa zNM~-;K*ltM>xV%22VR%Mi7N3CKv(myJMmJM20bh%G;^k;*j-v5U^m~i^GRCbBiQIS z)iY8`Jj$m2|CIBbB&%vZf+VXWcr@tou5&C-aH5_YuktJ8#l1tQHNs`%>lz1x@4oM zn5LS|j`J($yPI>MtQC7K^LZ1f*wo+p3%HPi5@6>UH-qod*uhWU1#C4obvV|HJNH`; z>zuTA>j;(M3=?S9HR?A?;kMd_DOyOX*MJ;C7ZZnAj9 zFdsGg63AU~vz7<3dE1mqnrVHvQ2@NYCo9=rnuO^(nk`>4Bqds}|g5LQhGK9cos8QGME0bQGhe?trxX%;b!JTUE84&%#xfwHdTaw(e902)y=8 zQ*)E3yo2!TM^#3+aj&0)Xm&JD-NO7*x!}o4&LV8s5vu8I>%`_1DVl?(`nHhr()T%w z8wJ*#(GFLou%3Q>1*D6y>Cm4Wu?-eUyeSlBf;diX32~CiYyNPcQPWpCMTViGue2hh zwTmKnuU#jMd|EQAsPCl^Y|{tsFE3&c4u*;q<@EdT=2OPnLqf!2>=m1v9#)QSxCLj- zZ*s%O2+|@#me^uG-KxFSkiRmO&`AT();HH$4=0hf+PhKC0;Ae89LtFpOYml0rxeqK z{a8o@^FrkW;9!6M2Jy;Yt^GQYe9_2T5!5RgLKl}Oz;FMe{#$nVbeF$LH@74!SCYog zz_kHdw54;s2Q$*i&SrbY%bbLucbW9jRpO`(VIoW zCN^Da=H^$ticxj&)4(WNX}5eDJ5olIbPtzX_C698!lHC~$*SP7RY%abW1uQYP?|!S z?<>AYxzF0=v-a>XI-wzF86;cU@q6JJ+;~xLetUV5>_zHiOw7oE-7nVmyH;m>-7xs! zyQ%=3sU|(O3N6sQ?x#C7FhXSgpIW+A>dgUz31Ox&Lp@xeeu;0@KMn&0^Ht^j&>jQv z99Yv`XECe5z6<@-yfr#ciIF6w9*s~OFE6jHT%_!wZu3O+z|3p{8EooUxH7j)b-2c`_fud8AAf0y`k|+nK_2iVqf!!7NSE> z`a97qM{cH$*9=Hr-yLr$KyI<AuhxoD+!)Kw${b|#@ ziTBz?Q@jA`C1_xu)mN)(j}l*5K8Rc|baBGTuoEf>mqD+tKAU^m`H>q*#NtW_f6L z+OO`SV&TnYkeEt|nAw3)*9*IvDlklCtq}OF4U54R@=V;6)|k0JaX3sMx%t$fIFF_~ z#{3t4)?-b=osA;)83W(dinT3ffdz?cAfjt~~`z-M5W-!*QY{TR(jX+g{=+H8N_sD>|S~5Crb@McfEVjZCvE zRCQnv{;w@#z*vK-_^4I(=rcwT8ed9Bj#T9zG^t`1uGF9$`Bxd<)_YVQD-C| z#~sK^nkYvl?PIp|=xl!+cAkFUUL*C+0VgnTRa%P$-?Cv@i_@R_Uv)C>_UwUulqa%q zOCx@RTMoaH<(?8MFPfL0rk?)IOphBl;|`s!N0_E_Fp#`7>G$cP)o$~2WFe(&v@Hqo zjiQ@f>}oV&jm6KSHA#SlcWIT-E?sd$j-yuow9I~P=q2T=39qegdoCq1pwe7fyRKbe zfp=@LG9B8`_*!nyb5Xy0@tX4NXFHEzWMcQdCC+Xv5~fL|QYB3pAB;gM)DP)5$2WmQ zu;j~Cyy?A4&R8Yu%IR}$A0?GWHLl&FBvjGjWek#9Xlyst zPq)AXC3&dM*C~`d>ZLA|otS#7TIPbWWj_7fwyIU+3Z*`B;;@JN*gJSfpCJmoEr;!r z?t&_BBsNT}L+gXPUekR?@_rK&7>G-?qxsWC-XK3UT%>KyY_6Y09YVyY(h8RQ-U0u5 z@*TNvugij^+0n%t2}-0Z*zR4*7bz-*s;0IX&$o~2x8v<2NhuwGKs4N zB-V?z+)dZ(Nh1RyQUj=5aXPFd(@DO+yC}8072LaAJjzdFl`AIam`@9vsWMM+T+J{em?;K?j|2K|@hIFJ9 zCjpyCsagJ$IcLD`JdPVQUsLV_meEf;XXfSm) zB#gUIkQcBCCyYxlY2P*WJG%&OJ+=H~U{s|_D;Jw<^gJ{Z7$+NXFXI)zc?iQYH#}N` zh$5axtJ@RezF$$aY{)ZV!J;osthpDIu}b3tP)Z^n1+EuR^F>oOB+k z+de6`A~>j)R)#z2d>8kHUDTCi*0_fHyOFr6Gv;DlgMwQ>*odw4SS_s$Gwnuv;LhH6 zc4EE0hqJlMQ@G~i^w|_m?9TYG{fkT0z}sU@@xo+tJqETZw|J1_6W_|Gn%%wJTg0rLWS4GMb782JA7GOO6eUqz2smhXAoSfl^#uQGc ztDY>;h6MjWOc^%;BPMUKTxUjme1kW;((iols|Rfm0zG)im%ba3#^!ObSI@5HPP8~? zX*0l*rdvA#nx=Dy-QGmBuMVM#4|LhVKv{OV6nF@%R;ZJ5$V zvYmO6ctJ<6`jkkjhzRFJi8JS;XnESO{>I`jg5VJwY^=M`w|-ot;w3*|LenlYoPGuP zD0XGHZC1ooCRX}aKT(Lt3h2WX5~Mhxsy|}Fj9Hv17sXc-B;Jkaz+ zd#N3SA)YWlS$c`eEL+ucWjNLXCBy2r-!47$5mZA{k_)F3pjg`lyJgg*Iq2Q<>gk}j z<}cEruS`}iBR3s?h7?wW2U;*3d+sr`>yf|CwoDgOZQ$OX!qXj=w6;4tCE5pv1j-Md z-*H^}n{}&BQCsd?-Se%FPu9&soS-zWmzHfa`u8?@9WQL@s0(3JYpt#8gvq+p=`!a2 zA`*<%9v(K<_6*q7YjQ)-(hvx%qe1k6sQr3V7eypQQdj9LlRYozRHoTZSi?bX)wFEc zVPuSx%qq6P1TL(-%wW|%Omd+V%XEBZsnt3T9A%R$zkuP7cBp%a7b}wl$G|{?%91u6 zhzjCCcEk{@_S^27NFHquOic>N;>bcIugZzdk37#+r|l?)OVK~-`SU)=ne0wl{X;)=lcc>iSXxk+JCMV+ zm#&;Q5PBNLf*~YSpm)$dQ2>y_qPp*0!AmhlwKq6}!|v8bE44OFcQFd1#9!(BSIgiZ zUc7VM(l3>0i|ri~jgP65BXkFWqRNjLFZ4pL5gKWMn?b?OQRG(9u>wmyMQKD+r%H+l zn^49n(>mlUbXSn=1RIB{0Nthcv6)~rcJxrzZGrLn;32|-x5h-#i^`+A z0*gE!9W_EW-Ci2SbrUL3=PK6fS+8daPy+DQi3vl!jOH-Oa02|K=iFh7kSWZ*Mg|Um zlLN=Uts_P|BVCXJoE6L?B91g9z=2Ja{BzIsEz|lEsD-Z9L$_%+(Hjd*EVO()*>EAS zldEqei_5A=5_hyf6~qIKbpvlD)O(NFHxMPRoYeWb*_UVqTSG}fUS)M zq(6Vdg>O=Qihfg({J~`IyZLzZlAwKYB4&1@J~b_$zJE>&6R%}I;V|}^3Tn`n&9FnP zm`{n&wpXFL9onAFX}xJ%`&b~mZyqaw=U%4nn1<23^bYr-gs;?E91z{(D9Wy2_nc}> z5pkj^nM(An2-T^{j~h&PK)a}|Us9ZQ_tDc)5ET)wnCiqgQ+xt5LwJfidJ{P*V~^zc z?i^Sx4_kN*4QlT`O!$3_|Gbq}0P6V4QzE zC}wd7BZpnykKf*anQqtG^!^w4A-?R<(}}a-lb5kiW;V`tKxj<;ZM{3?Xd;@#jE4-+ z!AuD^yZx<@cs(q`#{Z&BQh< zTEIv&u1pVBSoiXbU9K9k`D{E}gkxE%!ypvUn>Ljz4v*el0QqO57nckM;-sNbi^9B? z3a2CH6(6Y^wKBlC$n7`VXo?0?aduBkizA8-sx`vFMR#iTA>`SePiD(_YS1KcjyjW+ z);W@ra!A*Drdj$kc!uxfM7&teJvKHUv>YtW3*?YN05jsW8c18$moN@UKxEW^WzI8d zq!!Y7)N_w$p?>8!kumYdNhZ0CXv~D6O5ZBUay5n73rQ79Xk{jiaQk4?gynu?OHXQA z-xK^EQA?n$NHunMWXj){jgu1-HA(()O4H;l={QF?65_*X{cMMlR<{fin(xehi$$Xp zy!_Y9v!lU*_|tUN{X{OAWYvxSXmnj7fTF|N*Po}_c=#V~&RcUAr+?DN3RNhs@-kG_ zdJQn|x%?IWq?ACAR{9151K@V`LepOJ(5aih z4j%-%bhA%>_3z8DFXbrD{LUZI2NaS_5;hGp)cT?SwiDmGjNS_;RJgeFC&Yfm&j)>`KzB#t3EF^@-W2KY_ zqImff*CqBVSX+NIJYscwwww`D*Twbd3)D*b+id$_klegmpF7IssZ+8?I-1p?TMCt=8PZ8G>Rm~myLoxna}+nTw!K_5Ck{f~nl%D!JJtF{c^?V$J)EoIisi)7U0F`R zpx{}1$@%wJEx?2Sgu~)5NkNE&gI>xsYwl0w!8ULgn-Ty$zjL;+7B=2;t&Ir4!Xo3h zcs1lWk~>?PB>E6c_#2EThsJtrYD!hy25QKD;GzmseWd4Xu==QELms4h17m&jCw*XF zx@5-?YqCoVzg*rlh=VY=Y+xiKSoM||r6#oY+K{%HP*tvz7^d~uw4H8svFC)7=ve<{ zkYzEBK#>Aj0!(W+Gm@%<;_>Ry238fU36Avp<=|Na1x~nCqy4kswWe<>;kwvDUJo?ZW$y%p; z%`Qv3>Rr@M4D`v?H1QdiLC)uL#;L7XH8<4s?6qfA?!1=?w|c&Net>X*?a_N5FGk-s zo1G0!2_DOZXM%n`-Kvwz_?xxCiJs%n&w?-sqbTWutLGUthToWW%f;4B)DpGc{xq=H z1hO{Q%f!?UE>v`_BN-&Mngdyx)rV8TaoUkmw$Jcz%gTxjNN!rg`egFR>O~wfT=!Qh zT&_|V%k8cek3mo%^!gv?@YcmFU5e;|583MKy>sJtPAdBOkHKDTWX@5+Y{JD}HSIxq zT!3}BQJ)b!K4#8j(^!kQ6^oa8?Xm2*qSBa_iMWoh;2B?+Ufp*l|4Zn$Sa@<=CA zLD!|5G7FiB4}>y6BqmTYu5vIocxQXRXON2*L+RxG7vK)&#ah~%=h2#*KX6E;In?C2 z;@_s)GgQa=&gqglK8E;o{)*!%j-${t|D%?qe=OJqbvFis$#y5py2r8nGZHj97{gkS zH@W2TxIh`>=}YG-30*d_9<5KBOGXwpTN&vSK}QFcY)m(iXx#8CmP#JGL#+P8=pU(z z)s0(a5Y$0)($VVA)ZE_%sL%0Ti%%5c#t9=tAR(OJ=Qzb})i4o*j|-Y?O~<*jO0E1}GQP#UE8i2R%I5I23YU=>;&qf^D92*ySM1i>RM6`dIOmUaR zlQcneCuxe!Hsbl63^%f$-lgM4n5D`)e+M_}XzA%|>BkWkS3I5q723!G2zst**w(af z;fgpTrBG+v<>kY&FBN9PebO{BUS)8-*6U0}5j5wtlric@aZsZ|XOWksx||bE&CZ!W$sn*V5xXG^IsKh`TMJqE;yOKu^HpuMoZCt75jbt zl8a=#Qil5a=0;xt6&%sTw=&V($k-QtiII}AL?Cgx#kZN?{Pyv&*)L)UIDwx z?0GmnZbZQ2HqDJP^?cWd3wN_^8s|In?o~Ko4}c5uw(v%Z`T$F8nXrvaXg<9ZkHk>H z<@g863QmAseik<{aWnJkxQQTYZ*^?gcWqe(?Ea>!FP&v{f-vZ~@hiTbB$j-c*P{`x(OaUXBKL{t(cjg5^0aC#}%Ep zBnta&I%X|wMzbH^Zb}mqT#%uh7qyU;CBG^rP^uF32z9|tL{DXZj<+^uTAi;2xs$7a`j5St(XRGnCct<&3|GO zKcs3~Yhtl^FY@(r`$(;sjWZiOwh09ggY4U4e*eRp$5Gd2$GoK_tPS^L1i zTl$+7fL=A?>Yl}K)*VUsK#G}xpdfDJZKq$M$B82lP=TWWl|s2m-0x|~piyp0+wiG} zMZFKk1*ueAMsZrSGvejT5JpX8XMOF1Rr2`r+gTYoz8&k_{IpT{*dpV&bqWc36YjrY zi8yKZB`_^&#?=mM$J4X*0@KG85xQwp|5D1%xBH7Qr*K*|hM$F$V73@Zh_8m$QxWpj z&Z)@TX+x(2cT>2NM@z%?EEWluOGjBt9wqGRFO5Tq!umW55?WA_V{DaG8`qlc=Nd@< z0*ZJW!IH`meY)uOzdbH(Gde+qWeors(4@J3`dZ?S>^%gdqU2>4?7B z&W9zBA$w!~3D`pC&612{Z4as226l+YXLZW6l@uBV6jAzbZA+|P^teG(T@&zsR?Iv> z6PaQ=8a$E4TX2mARuUq8I`e>G0(1bIUNa1TQ3}9UavbNpnkSxh)ojrXHw;h|SY+hH zLQs9+8*x=UoLJ4*@J(qVv45?3E_hkZPO&9(FAfwL)0$jp7s-Pnjfo(_Q|k{w>X!}M z^S?GgB1`2*Vm4F4yKfAqU}QcIxE1Z>)jA)N9^{sZb47dylaq2SX{1j?*JToPu31?j z#^yz;Ys(Z_(`zz^I8|==8NA9w(qgKCGn82pcU9glKEDpvm}Mz-{aQ;>%Wp5M%HT9i z#-PK6M9QLM%&~LnXF!ozt6}0$sI+~c`5#%Ew5ciOA;!SjFjqT!E|#5Be>aLBfArlL zQ<^1v3Hak#0UbUuWe=seJy;hn-DTe*;wyo_g~PM9PN8}zUUeqaZcw{>F_q5HCOHN24lc773>hzxvWf>0 z5NoDv|83U>^4YM`I}c4Q#W=S1nj{HrHPw=ZN_6baq6t*Q9ce^>f$mqj4KSfr3wk9j~oRdYicnFM7o@He#Oh461!b?s92`!SBP-Yl-O;VX3k3E5E zyYOQ`TG3!qLg1sCksOI>98e~Z(R<^=b>iSB8;B1p$6DcP^pA#T=x#gDKr2x)K*q5t z<{h(m$EHeR3*Nk}BK6&vC7(yJZfx&95#DdmOvP5Cn=Px=n=_iJ<7(VgslKwuCm-#luWpydMk*##v?8W{y8gv!IA0V6|6ehB_?t;;F- z@~T2){c_WzDp&sg#)_9G&A%=u?)_(nauctWR$rx{P>4k4g4R=Y9ITBN$J3GKlbQEG zjTGk9pv1tN&jNO}1W7y=_;0gap%SDYa;>r!q_uM-1gX3(Tg=2C4qQ)l;ccWz5u|!P z%*T+YKKq+{CUgx}2p1quYNt(dxXc1BCz#prr){heJpBu4A?%cd$aAAEsB0N*O;@ zFZqCBwzAG=(ix7ee&rpVmI9qKdW=0y>x$_)N|p(wRMJ3gc~erzvTAZ(&-*4VuRnb~ z@*_G2_oO<8hJg_w`CX&CwJv+LH^4;nl@NSvRZ7JHo9H2dq+3_BZixFK98oQg-U@6x zSG18hm=#rorBU-HT7@Spj+7UJ&cYsSsYsEeqsq3Xv|OOIV;#mK@_Oq91f>$_PVtuq zdJc*-&q|BT>YSO?z8^(i$T+W}&0absC^S0U%m!k%_Xtp`w^x?9n2 z?#ZyQy;!pIFh_=O#LITiMs(2r$?;&;N`yD5WP8QlGObbTsPQq;Devn=UhafFi|2qM_vlp5@4D=x)vBM>^W}O z>FJQ&z?@dAj3Z)r=mF1}WX+uB3dJ^tldNwvgS`zhTIwXsw}xWmbl#2Y&LOMTB>!?R zZL+E^r>t>raj{R`68}|*$KhU#&PAH{o*n#>WN97YSW79;kpfW4`*-g=WZLh%n|e+w zOgJ(3U~E1+=Xq)XKS030!&QS-n*DB*PI?UFW3Qbkrdt3@i* z9c_BLLq^ZsNq~sIqi06J6C??WNous9@ZD0d&nndPF1z-4J3k+jd(rZrz5%Rl&4;Z|M9K6CqWcvvpZ(Y>Z0B%9fWq(etgF zOUTJ3EE&*T$co}HzojnHca2E^e;MT?Y2}a96$o}LfI40X7a{PJf8x}b>jNB>6A^iv zseU|lMA1iZiv%h!Tj9W3yq{c>r$SkhZ9-eGnju=vON&07>ZS!QTGhU6lac-cXg zdXd)~L;n)Uo$A*G-2oB?9j?fb<*DAqUZ@p}9(!iHtV&g0F7$#;k~*=8*Ew^!T2QrTu<7x+rsl(S;>I!16XHG^#R>Fpg{!rJ z)EKavR@T)Ha?r)|YhSlqrc3mzb~9z+^)Szb8R?dn^2#L{@ooQ>-mEniurapG(YDhO5XsqiiA71<}K`<({naDUL zckSuHSiRbpTWR-?_sh_m&W}Ju`gyaBv#5?pU%x9%k%oC#9)MxnSOkr8%!buw(D?Vp zD7a^iKRXKJ)wW}Ut#K4ogOTH#rw@uWB{l$K=inB}K}(x>_$v`BX% z-#9G>E+RR=CfZY^bg7aStAo)hbaRa2tFn(Yt}@YYwp%}Mon4q8z%7c;tSy=@k|ws@ zQ(L5V$s#+X_Lj%y+1-;#NQHftAJ*_s)#qZ$Oi_R-aB`%tb1g^EjE-Z1K1Db#Cv(cs z)~{-DYy;G0eObwvHb`GwwDb~Hh&^f{dlSoYQ}Ahev{L8?;>l?Jr%q%ss2;Q-)iQ?< zbn;P2@7NdbN@aS^0>h`mn zZdncf(39eafxu7StgrQy`But+88%Cv9}Md5;j+8?Hx9H1dzo7#-$Xt=i1#8&hq|5grJLcAaYW*xW%~SJ&8*(T}+FFh+J)paqv8WC%H|?RS$b^*4DYGVmu|&m7XMj{v z@UZ7VOS}YNK^DeDl#jKL**G+lvpgrdomOF#80C_bXQ3pc zzX~)0`jvK3BXnMRQt2^8Glr4!C`1km!7>jzp={U$m24NUp24O}399XpA3x zq*l~YSs^+_j{{__sa-ENx%@NXV!!lSy}GXYjd2o1X1M2MCaiL|_UYrd4bu*DA}Gchg)Wf<`lsNYXg{W+dAW97flzAmhFMf8 zSIkt{Q5SkeSSX`cMM$F}S6-jW_R=_+6TLBVXFv|&Dbb`aJ#f~lf-lr_*vr7OcY2gn z4K5=HIMS!15FLh`xn3g^#RHv?8)_LUz`wb}RMqN{EH3%adQFVS_*%{(SC7XOp2}VhFvNlVF%7f)8@VZFL-j6D&rTQ5s zuv=b|j+8>k3-}OD*H}KhuFTju<9(HA#I%!rbVZ;mMk7TcE$-!M^|bnjIXyfnVIc|t z@p;Rn^8`4W3Y@>Pi>?mDhJ08S5xtF)qKP45vT$ATy(0HlhZ6X1!1dD{B|1=s{54z0 zt|b}34K|`#a)zXaS zI}}lr>o;X8F8vEv{7zSBf#dLPzY`5N;Xq|^`K!YK&|`ImY|KJD!Rr=@QUJU} zrBEFxnS1=-uKtIUGqvzHA15nuqc*IQ_Kn-E-&)~}#3!rkX#s8weMzC!d7(pUEn{?- z(?u8zj$}z4-tL|y*zh}N0_GPMH6qXDRf$Hf+Bh}lCU)9Mxjg&kKl!#Lyq{g63l^Z2^|Wng9nn+RF4E?8Mc<1%<h4u=iHlyX@(z&$Q zmXs@M7ILH&Yqm~fD&?uFYa{lh;yun3F=93xChf;wvSN z)ksYVd>pSh;emEcYC>Xzy%ldMngb&l-#AFhT}LgTu(N`xbw*{0thXP~&=ewkl|yQZ zbM|t+Tf?=gZ8O!aPX&|O-@2SsMs+`zitn!tHSF~A&5vG@A8an)@iGFra`@BX{HjtS z(4k}31ZP_yIWayr`6(Oz{I%>DB!=5ANU;cm@JKz;SVox%T8Z!yB7p6V50XWVHvovQ zlaUwGt)oV0R4wIYrr-@+=5o&Niq4)=V9-*Pu9A_wS@M#{jlP%0-UNH)uMGp^KU)ri z*8z{MIPSP{QN@oXo<+0V&V4rKg;dQ$vELG@bdtzmH|k>FY<~l~+RkA|z{DM^y*wmx zsOm0kon1xw3y1KM)5i|GwN7S<^oT+tU|v@h8ux4<$9L_W|30n-UOZ%{%4B=*L1fj~0A!2C^^Tt9)L8a#76IAPH(@Mba5 z5zuab>JgO2c&Sm!QC;nak{$6mk@=!x+GFtu<6^W)jpccQ21D@^07OU-Vdlu;sY<@K zwcq0!9=D&A@>?Xr!VN}R+rH>+_&Wb6z6+b0%oD_E^So3({eJt$;L}PzCyplZhO`3?Z7HC@V5LJP;^739(r(HK@yLJMGi_?^ zeu&~bmk8fem4<(TgLNg+xkihA7;r?Y`HHtcBAw5lX3!2l0?6NBnD0`U0qV$fzCF9~ z0zOm5EF>DX?_tP_sYj}37A2oBjJ#dW!!d(sXp9c} zor<_UO6vH0DU4J!8w5YJp|3<|@ed1~PONur5S1m;vS||o^Kx^E0;X|auXOm0n889| zu+I|E_5Fyz__K{66pgVLiFuqcHBtozpesI&uXWbw{O$YsSZs5fHhu=`)6Ro?sE869 zC=nK^QoShtRr@)!tOcT2K)Ml&g;Qpv^l$vpe(Rgj2BRtuQv*H?qmIes9|vt^ zIuA|Gn939*=)-WU4|c_jD@=yFZ^$h~0NO>MUfM>9B#WDvHt@e(xq3}2V5aj`=FIC+ zH1@+T+X@ocI7RF&ED{N-{;pNf6itJ(qxmso-zsmhS+t#f!Zv!rm1)VmU#{zGG=qV5 zT-kK!qGs)!!Ba?5-C3ojS`@N(W?^L(doah3@lkoHX#5(A82%FzyhPIJA6A4{$mkWm znazc#oE;d$w-gZSamGXf-FgGdDf|R`Sp4FK)KtcB^NmJqQGpx>X??RVet(a1*Ehzw zMM^9OpxMALI+etGsF`nf)JMhU#~ix*a1i#PVIu3hHEqh#-v}-_jV(a48eZCK6sQGS zG0u>wzAYZXAE}bMp#~|HGnzS0b5u% zgJKTO-t(xLoMT9?(At%FJcaKUg&?0AlKXZZRY<>U6Kc~3-?CA%R55PrJ!2=O@Um8* z6s-fc_*Wml}qcF3GRE=$|iik51W!gMHFWy z$4L%p>J^@XqG5+E<#$O57QlFPSZ7SKdmUr)#Al<+z{Vh3i_g{qXqD@LQJan)NK^)9pvZH+p3Qui!ulU}IK07B@khtPeve~! zYnRhl!eqou`XX%#vpqIJ`^(hyxnX zx+LhS&~?$WQqi0Zy-{C^ioHA#mFR>malg{a0QI8?ai#)`CBeyB5DD|^Qq6^Sc8 ztXhDKoBAYf+u4vJ*eO*OLfi>%x8woW(QC(6NKN!$#QeDGzk^9^cII0}7TehrtfLZ7fR5{jBRnFH6NZZO#b}m#(U|U+O@Da&;p?Rn zyurOgm|DQI&`6P;xaRyA4!h!9F6PJHYi8?pUYj2C{J$NN-G=5k3Hhn zFE>JR(kNPLQ!h1ejfsRqFOzl!Jyxnr04S=b!b72Am!#3+(O0c;pbe^?_pYqO;D-nF zhEu?33!oDv_F%lyRjwwE-kzI3)V8i28WPM)G2xP#gj3n-`z=1z*=0qPF{3I!3yuCn zW&n{mHFASAwW)Oo*lyc z2!h?zqOry#Y6%}qIqDJsFIPR=j_s>_7|=w029>++CPZg)o3~`596);k1`0wL<>X$WgSgoiPaW8>7bM;K?*_Vd1UHteY3l?_mTl^iuz1G> z{SL5|_qZ*@dxT>JKNLWK$YED>K?MnTqxWD{A^$;fvuW;qTyH4q9G=8FDjL%XhoB99 z^GDYiw3XqRw#@=@u_Zzlasy~>{-=~3E>N6y5cGrWd&1cX&Czab=Lch8SgLWQlI~E) zcnB=^X~Bl+%KDiU>Vy!tKR!yE$0~wx53R6Iz`ctB>f8bN30Fm3y!9eT6m-NPS>%?F zs4n;_C`s-`b5_E2Vh88G$`;cp+igC|>Erv9QD-_v`;|U^iHqe6!VQi}EIM9WT!|F6 zDLDTKNZ5jf8=&z_EAx0YKxJOtbqIknLZ!aDy37DeUeXjcI)r=~SWT&F2IA^3hX z*Qj`y#P`hPXpk)AwQ4`Dg17o-G)lz1;bLm6Y^a4wbecpxGK~~sbdAAhV^RZNKbKnN z@0-U3AtfHe8>rc9f4&|y=ECa_G*1jSGF)D=7&bSDeRADxtc8_qQy@TBca1C5#Ci^A)|T&^ev~3NZPm$>CH;`RPsAzpW`7r^@=U~2T!iY}!)^aB(@eu3$2&u#g7T4EGDSbq?N=hec}dRI#rW%4#Su%HLf+op zC-Qc{*JNp!6@Uans=+Hg%8CjCl=3Tm(H&{93KzSuoM^{m?d_@Ooh#Ch>Q&`*I?4$q z2|ESd7fGyg^6AE(>Py1rV5qAv-GyWsuL(-?iv+FLKDmg~FVui#aeeeUuf2fCBTOtu zI#2WEeZ^xmErzYoh9*5}Zgr5a&%4>fnPyFXYwDXU`@e=A;5+iVKZoI4zhDLC#eaiu z`>bs0?9a6I`x$?y^l77d_9f$gR@&%p_fjp3Mg`&@Ve0&zrsJKzJGm1*4`YNILhnc1 z@?E=SE{ropdM>%jKT9EWbUTfCQAUXTv0 zxil5hPW+kNL^}?j@$nm_XHtD}$nE|UqCs^>?TWT7ZVnZ)+E0YjnP6+`R>+E8o0{P82ol4n zF)%~rY@n6t=V6bJhcTFg&LZRdsL zg}B*3PU@skseqb-l+x|kNTej3kC$g)F4rhBQimy3^qi@ag2v0mr2afj8mWaB%!_r# z3bx>);LYcm!N@f~pO$WOw{l6FC-byU{s2$C5le78t|WC~g8H_U{<@=D!=T58>Z-QU z0*;yzYbLoPi@hW4CLIcXcNrd3S!SiQIyGZF>wzzXR8%+o(OZlU=!mzv(Y&a;3N$0z zdecEg8ZjC29RwyEi*y=)x&8o@0iXQi34$vXi~?sCEM#;s@j#VEO{)+h>Nx<@Ys(@6 zVq?2{UUiuW6uK%M13?NS<@qPHLlfKbZ}96XV0WQ^Uoc#ufKrJ;rFv_b zT|}p~zO9hMQC8bs%q1VFkIwB)anMh?l*UQKB^Aoas@2$X{91-O0VAFP@t~vZU_-Oh zm;Dw}ij6~ha?}aKMXf8#k?>7#K*r8EIfzf>i=gB3z2T`z!_=YGq%6G$KF4@?3CZbH z>9qQ~?h#jY{_|2K6rQ4TPI0E7R}B*|2qo(O0%0TU8NZ^R)pOZnrIXwjq}$z4KF#SX zK2#_*gl@xVFdKoB_*0nKCK?hbaU~!~i_$zx;dAH8)RBv{noOIn&mFG@(0$v^z@htH zZ|EOGkruZvnfCQfj>cp?YxLmn+Vpst!K+QbZX6kbE^hkQqu0HRl05Y1?Zw!taUv+V zj&3^m>ZhHm7!tN>{;Hjj*ju9U{~omkACb5^sa{)OC+6DF7T0jQfY{@qpYFq4b=09Z zDi6828^k!uRl%lp|BrtA{V6ZKn|U*>0#i!%FgQ>qB#PQIf*WUN_H&0OQt+4%#CQwzJK2vE2gm&bmJaE_6HQ{ zX;fC}u;dcMOZaNn{cGMMOb>xuJ{hC@Y3Kc0?7xK1)fZyCWU3)#+Ia}(9y${ejwuRC zY70Cj7CJh@TJp?~~3F~A2kd|QlQCWJQ@UX;V zkN#d`2vWA9tgZN3M27wuDJju=CqpO6$2IKNes$pa&e8MMEZ8Tr47}X{(NcyFTst-A zCRPssd;+vNi?kgmhcrX^Ic*51&v^p9Iy&M7c*sU73bNK!t3E1E3#^v>c##PFzZyuI-Wj?T&N_37vk%{w<~o^hLOA3tQ|W8vd;_Q)FP z=bw0*SbA1YojGpfJF39$x0hwq_!OF0ajzc}JXz28c40*6_f*^=;}f>-uRnWd2{(*7 zZ0^Ghy1qVH8%e`J!arY6ZRNV09QXZQZSuVhI(Bmyb66iG^=$i|gU)k;uk% zh=*0u-CzddN&~qf0c%NyL4%bwonpt!@OaEQp5w7%U8mY~{{yz+^|(-|p8N_?m&$ zs63XvulcbsgZk-D5YAQ$=rynMCQ1J~U*gkDAc+4x4zm_3^FNN@Rn|%)>)MVIhADK~ zCsS%7#Q3-PoG<u=+0tAG;5Gis?R#vDMdb5w)a6P4w48LnoLg0hBcZR^ z-d+mNjO#xAGF>)_-lXBA;ADDSQU8+-EW`fP35G#dC->UUjS4YTBcJ{;yh9|&Lwtu% zmB{i5P6N14@&9Ghy1G@}Qxm^MKWm2Di_Qf)qRU)s;+Ovja*V!Rk^2kXfm zoJ*5QN&+GxATPZQ?)$uZo+noZ1V`nG3PBMNgMLz=3F#MyqnjG*?PoZZ7$VNATT zoODlgMSNZ9<(}rcD_&xJQ3HVR>ork%=W~am5N?a*smyiW_E3)3zfKWev(ED7|H<%b zj&hw?qwiUW`C6LzTF@bU{0}AC><^DVZ<&AdKL)R1nuww|qkB%39{Lgc-`2@n=1Werw^t-2P&VbIA-iIZaM5Gh;gGnMJIPjE`kddNH5Mw z80c_oeFUCc$r&IQ1Kgoq}_O_@;5T0qMG%s!$CL1oq3_ZFxE3WqruQY$j6X?wUzal z3U`$8UX#gl2rc>>GL!&EBE=!?s_zuZCf;J@5Fr^7O(Ac+!s{zK}VD%>n~_wZ|TkhT}viM~FBTjE*GuWoL1}g;)QN7DsKK9ak!NJ)mYT@az*8OzvFj53` zJHIj{v5~t1i*^>pJWV#;<%3HPSvG51nf~&ckFB`I0S6l?;jsb87%)w^+5vIyrrwG$ z2~h+D_*5LG6c#qzlmW^?0VPAH)iP5+5=LN2_J%oXBn(MFTroL`67cNg z;8?u@$JduNh%m6wV6(bl&3V5|g3Y(H!CJ(L(7rv=}Iqq%QXL zowXfPw)D-OwvyX9T2kJ;kWGEN(ev3Wc3cLv_nd;g-eAmqwb?;Kdn6_cW5d6bwjp5w zwxx2LmEFn@%bznG_?)}DpfBC3V4tSUHm`E=*Nw2Eb?@0r7Pqt>t_7O>9b4PHl=oa* zE(2gqsB%kx2vd`4#(VomYK*Gy(t+(Wn~H0XbTqNL-20ACd`XIC^Rd&K<_;R_wH~b7 zgQWp9lx$N4{!_nt;4<;eZ=4smU7%=!()ic-H{iQN1j7+!`4x$`7Mj*@>bL(%6i>XW zLQ@TcA~R(dS!ll%s#*`h?)8(zs~bJ3g4OCg72p{sW{40(1bU) ze0m+(8<^drW(?yO`u_zp=46Dox$87$%=8EK*&i42R$7pzI}Ds=GHd;$WtHdgv1w1j zCcrucpKXF0FMC$qi^J#j^SY(ivp_}@`ySr{zqxzu%~bKRi#sQYRDB#w=U2{ezM5mk z#xxjjYSQ3nf7MAFR6`vdLL$j@vXDRheSf`qmnOxe+dy7q9T=b#tx$~>AHr59{mu@i zt7!=>HS%!#KJN7FoLtrTRVZUJ&uNUNfe;O-{7u@A+x5bupfroKo!KaOi^WQ_ZkOjl zzL!a5>M&=zNM>Y~C0r)>(OVt+asM9T7`*@VYnUJU9}e<7G%A_w*(*%EezH0JRJ~ad z`xhJ)K#df7>Ob}L=VGcLa=`QvI7%I%asM$&src+a^`@C~McKn9f=BF>@od{I)SQtvW7u~kna8Sdft#aC``p0zwz!;0BRu7)5cgXg&k$46M+GW*Xx0U zzcK;(S`AvrUd*S~i{fkV#?=O0g-XCD2H&n#d&^ytwtNvPm`tcTHt4k;?=@yRmDt3s z6a}Xua#!JMl%wOX{xJ)OMDVY~{s?w^3$NbiwFpM{ok4J97Z-2wc=>S^jS6579eK); zYktn&ZZL!F?wA>q(r-DeWCQmEKA*-XfZp5iG0Byg75U!}-*o=7e#J{xb?)gvFsVpE z5g2zaTvyg4fS~?aN&$gV{)!$ghHX!m(t78&GWwTtpFy6P4R0~I#4v&0z82$!^*MJ= zpSb(10r@Wplfrg-jqWkici5is4QJ}obpBSJc_!gF>X)JHu{QSU#t_u{I+%v}+xxqy z&-ZN8OY#%ercOiosn5EgJG0&p2C2MrGC6*CaTg#BQ$0oAcAn3^^mj5CvlKC&LFYLw zsc09F0X#;o3d-z8(=NVi{VSSqO0f=0`fQz1Jt1T~H`B{0!OEpv8{YhAZJTzn~o zg3gstZVAT`N;15zXOU^+E)C1m{Nb2${aRBZJ$yg5&u*$#Kr#0o_U z;RG2tzX61f54vox8Ggy@HT4h2$fMtVCB*U17arpUSGa4+x0Cr-<|ay?rj-^8JVRAH z8hdO*{=b`YHx?hf!w9{TPt9ypX7kTetjda^=^mXvzbgOgpN!7)Bb4#7`J1eRQu9FVp_KpRL59QNG>0egsWK>Uq-p^Fq4G7YO7?(q~ zEuDmk>S|_WFTH)Ms%tM(V@B@KS&6_Hs$rA@`CF@RJcjq7%lDrdt@u0BnaShb zeNKaE@rguL9(5{ssu%II^?8?Vou8A>($fCx+P$ZHJhMJqQ4Ev6+Nlhq4bw09D3C_< z==tuqTSjr6E_mu4O!iZ@M=6X2Q-IJ_SUtrrOp$oDr+{KX^(kv)LXvUAUoi671j7v_MmBMthQ$Y#Ej>=(+CkzYcd>HKL zD;0hj(t2Dwf|(a!s`S!t><9jET@^omadBTKQR|M~r^uj=@1m!}p*< zPGq>hgP_B!kIz*v2at!*{s3I0r3$Q-02AM$%3ZBlM^_6T3ypik1>lq#1>!vP%^K}} zA25J0WyFv^N-Y+0dW|V5*l;~guK3Kyv9n!aX7mac_ML#h9C>Mt;!v70CqZ) zb-1vMGhF&E6gk5fjq<)ARxo@eTc}__e%j7lx!?ZRfb%r{3ZHw$jtqX+AIq&M%3OqxAFqK+%xDFZR*sGkSj@U{O9rlJih0*!J_|Gv%bu0$+!EPFu!A3@x%8tWYbNxM_-$ESU`$zmkSz-YNsfC zr3=KNRp#LfsJ@W2AnkI$6Z!sXFX!DbW)p8K5$*{h6g2;|I4WfgWI<^P1WF!++!<_x zw`O1W1e9%C6I{6|s+%Tr-CZi318n6f9Fu;v7rH;O4ZV&gbysi$P>{Ab4YR1At8&>c z$qn%XB#kpvv>0n-A*~v=nepNnLqv^J3aA?+*s+E+7-qg0T~uyzvj*4+T)5h!jXi2*^>5&EHKW?S5tYQ1x! z?dgP|w*j~%e)1Fr`RG3H2HMZgBZ%xs`LQpf78TP3|03rd@D|gO{O_jyZGA00-8Jhi z=Ibnkk6BQDt)lQ30>Pk2h+rS`xo=VywvyzB_0Vq?N zQw->6$N?BJ;)KZ;?*h{iT2)xx)NpS+(!i~)zUk$619HT@MejLQ^(5*2RH8ry#ZriK zn~psRQ3?-39b-`ONcl<~E9I*3aMsAhdG9^g>C)IT9fmXPYc1UE8M^(PEQ58*recN4 zP+)*z8kH;A26b^q+EU}R;fG*zHMpkVcf7+iJJRZ0K|BqnQgD1iCBfram%hNeP!Dpp ziy7HacJU7X?{sk`zVM-)T)n(^Da@`OhRuBlk@AF8?%<5nS#kXgt6O6mb<>{d=2N?- z6bCmJ#rO6pO+YZd^7h)Z&gXa^y+z8z-YPPxM^?&PrPeLxk=? zdzo(7Zx+z(SJu`WB>#kb&WX4sMq_m1mM*1eS>K!EAIXK3V;6p#@q zMH)oN;38nD(OM+{P#`uz-6f6Xy*vuxXhLRz*DY$~F1Kr;i+LOU=UvosyPi}Ym$!L! zW=&x5ph+Nt2`oYc;SrqfG4Qy8mAYxjZI#Fnr4ztFP6?6|OMKOGrIj!=#Bzdx)?|B} z7cPD;uOzy^UE^EvsqH*LWnuQxmB+;hySd46Ft5I3Jc*4#9QqHyb3BJ}CTuW;W!R!- zUtU@zPt`gtv8zYRuUE>k3IV|>Q)}pF6~Yi(yeS! znOs%PBvwkF96!x6<4G|R}@x1ed%?aS7txpFF1q}H21g`R+a7aJ1((slX}pz`EZ0`z#i>kP90 z$%T~pq8MRdJ65)F;sgO^o* zJ67UWNHLR{PZa%y!2sjL>=J@nNjtnzj|LPG&8yWVn&Db z{UpHq1V7YZeVykP0Ko;T`~SPXj5FF83gf{q>#A&8D+OR{`&5Vj?_2g#64U%ZOMLh9 zlXXhKHU#O2gAfo<=SXR~nEU4W9@1cpUMC;xy5G0X(MP*;sI~O-zbEB+AI0ax4Vtg_ zfxa4mGP8A%cQ6$ktB-NQ|H2a4AqOz6TgLnnAVdcloVGCY{*`P7%sAioWE|evx)t)zu}?I^Cu%DZf~?Yp(n;C5D-l`d?KC?0*2PsFx*P0J zS)$d8Mz`>86j%tsVuHpx&2Fuqmd_aJO~;Pkc^)qZm6sE=;T=bb=N*rK_%S5Blh#5PADZ4v_7m1V1O1+wt6P2$Sx2?Bs5GIE{|WC%gL= zxVQEuKtcUb#P#N#EK3ML=$p>iS3ISeO@id9g$pw(Tl9q}AJX+{s=`9s>v2w=q-w}Y z5enFU_-+<1!l@DO?wu6Kvx{xY^{OUIB@__6DB*qNofY;*m|OT%AY&gLp~m$2|GfG8 z#naRIzRRNkaDuR)H4m!qkk23vpppknZ12?{B3=HFQLdEUxbPYmawY9WF$8z%6eV5X zMCYPNZuey(JX-qa@p63+k390M$JpBNqPpGHzMQ{d4kFi&f<($hgE!7s5MTArFKrXP z?iOVD1Q>C3txoUlK(^aB-qoJ+w`sGAdg4^qZQJY$>z=>G;X>7M?0jAYgV-^Ntj!lk z=iJ}>$*Ibb?D;LyaL0D+6b9QR`y9VFVE?Hw%36wlfF>;^p~y zP8OQ{_xcD6Lsn#1Yhp3QV#@1kL5QzG-iuung}!~mMB_PavXBb``05aN(xPT9sQuG7 zQ>oTdTT?kNR##Y5h@?f+8N$vmB@SW;-U*`vul}JDBsC3hoe}k zUW~-XA;u)MGYJrqyG%v^dO6HqV!3j;fPq6rlujz?C<6a#LlTCl%ElkJoYCCg-l3pa zU=vpsb zY;;zZ-D6?6Tzw*eK6u!YyvrkOdgIlkI-8qFTJ6?)784wsd@7&>Zc^wyTL2ptB|r=s z8RIuvAjQUhNEar-SD^5olModTx=?1uL9Bgv%6vOaoPmngQ+<)>=g98$zZ_e73i9(; zr)b=i#y_62xEJY(38uE_m^fsEpd6F z>2zv%2DQ^FJqOB_C5qKa+r+Df+Z!64V}HhHxC+K0!XydnMQwqC&qHh-ZH6VZYn+wC z3fNN?RxfMFl;YgCUqWaZM3Ktrh!1156(6?k)bz~~Npw1eB%gV(lS14(`|)f~%YRNg zMCrpnA=YFZ;M%o#X2-i+*4AB9hYpk&0mljypCogA>i2VCRt_F1TLpNzjcCP0R&lF} zbsM`#=Cz?Av1c8aX$^-PYdXwrAA5BBmi^fGY_2v{+iMDxmM|K9PgPu?dpw z-k}&vGV2FQ-Kz*sicTJW3Z}}vKUVn8T8~_mH5u4irP+hoGyOtm2?gT?<-7ZtP0G2Q z8T$X!D_&e25Dk$iEPk>m@tK8Ro%XwX3`KWnxZG3MY@ieJV3R@d;uze8gN0CB z-0CpYnik>umeDF9 zX0@}iRc`Q+{=bcCQHQ^7Q^z*sq2H!L3HzC*u`m=tkN4;Hj1c~aO6R-23bickKCqMH zj~E`gC!Et;K9tPud`Vie7*O9DRW2kfr51jg@dic4%};bM*_ZIBQmlWVlcPAfDYrsT zvFgvLC*4J_l$T7HATIy@-l`F`ZR?#ujYD5(Kr8pEri^CjrSfOUOb$kj|!)IrG2A@TMjd8LjNIX zvd_FX1p;+`lkWdNFVOIAmoGa{)yj*n{1#$)hF=zy7uwo%Z1c&4KMIs0@*nWU{l>bF z5e+6m8vE*cN7y=_b$AG2KH09SZ<^t#z6(=^hgXd7 zZrKcd=hk2|LxTIqsxqMY${d~Slq8INc}0IhB8>c9EEyvVp9z=3Cl;-hBLFe{F%6v8 zzL&pE84_#SsYd9bxa~ccvD|WBbM&_ZIxDjL7pBg1c=*`wQwS;i4OL+3Zt;)NN_fO&We z_}jKP=mQXXBOcX%7afq94~)?K`c>z5CGTtVtHB?=J)d>G^ehuLyRU{r$mFH-|4Z`f zQPtsE+dn}Y6e+hxTst}2_zAq;)%?`_D1NwU%eBtaze%Rf;L-IX*n8>fQPs}Ul2pyE z4i)oQ*u1L1*AWXgt=#O&;-6thcyX-}rSVYfvgwwcaeqv4Ud&VpLQY_|W66lWslofA z0PXljkP@%#rW;ub-%?{*ISykWsb1}M1C#BPmIa|;Nv}3q`65o}hWO$Z1d|@M8u`-a z0e8xybcZa`rB-?+cwvWxcMpqudx{wNMACasPD!E3^JIK5#nXf@E>I7!AP$Kd5`CG< z4~RfE!~ygah!Er(D-?^+SA+rJYVs~Yiv}C|SRepi5QIrDJt`aklwG@s4hf@miWmaF zXNI*;iBnIN;nq?e4F$!+EZ2C?R_3SNpQF>CYeGd>Rn$2JzI`m&$>pyqNcxcI49Ll> zb6{(mtGf$Y%EeyEg7eJNZ0_$}R4RlQw~RQ?JPL-aC3!EJv5TqkDFX7Pz{if?JE6)^ zv&3NPWvQ^s#G2xac(2!e*woQ=eX%xfwnb0?6^v5Yy{6XVvUJNIN%s1(bsc|9`RBBd z+#a08a|SuyKx|{?%zRskuJxp|V)i;v4^+)Zw*hY7E4Hc7%KO6Zy@c)mnD9^eM>hHYAWiC`Q5k`_StdHIT~s0igl&jSA`IU!QBe@7YVtP`m*CYtV8u03)4X4#G0(92w`-1gkG<5-!DCaifoT(^a%3KGOvDalf#^0(~VQa2< z7oH=%v|6&v8mk?26wAVmym=SssMMKO3}Mk>V8xlzyb1_Imf9~e69_!Ejhc|_vzZX& zD(>EOTP|GL2163~fXwj{{$L05uXwzjELqjPD)>K>(6ELmV=hPsPv@D%3B8lSgl`f00sEFPFZO+O0^4idree{+9*p>0F*AWv;pBxh1h_d8{rh7 zA|i6h-iR3^*y3`U0iWB*cUZVlakn@L^~523#DmWD&h=wPSq<$;K4QDoL>UQ5Oq!N< zL!a|tu<$If04XAnZa2&opbNV`hGB&4C8bsvbJUdpF+k40rD2gD8Hn!`laY;{mO^FHyyEB^H6t7;#)lWpf%ze*vh<75%^Nzu^ zww$!C;`cwSGb@IF%~b z=#d2OUNK+fDIh$Qx=M{MP*`3$fmm4~igM2thtSpl4uHWg@~%Eh$^Cps>TTvQ2QNA_!)i9Eb_Md zT2)?+pFPL?o{^i(tDOUw;YX*m82w+6#uM75^;Gm+4%ZKBX1^)W8fi|DXL&Qi3_P1)Xi4ak`* zSgM72h5--PLy|23L_Z?J&28Jo#Pc3%ng{2$o(G`xo#)i|-#^s-Z-MLc@ge5lw@h`Y zS}^R)GzhGY83O-*d*tA^Z_VBJ7lgemUk~ME-4Ni+&%*an8e*-<&+kC ztSBJ)ffsMODWd|iFo(5fa)g4<)F0G>=oq5D zx@;M#qd!3_1K7f|Yuej4icM|FyF9hVNwiY$%zerk1%p+6dvo5ivfeAzonkxp;M~Hq zkp>@;?6V<5?ri$+cD_|NzOL5{E=L%w^N(Z3-oDA4`Rra=b8dPrJ`sTg0uFD7};JM~788?d< zH%!kU4CdA6JvvDsh5@c17uIW!caJnTaB$YMx4h;lu^;H+PXHGMt^L&MW9J*{^)?@R z!m0$qF^V}Ev=)tQTl+Z|gH zQK37P*E0@eRzOoyh3As4BoPnd$C}!D{eEs}Rm7p;re2-QFNPrt>gvj&xw1Az)wmfr z-Gmg*?y3*U-$S#LdO&(LnZ8liYbp8-l$K*ZXO`hFz0g`1c=dA8r*jp^*q)Mw>uEL1 zFq+>8Aj(kY*IO0QQNbYbl$qM;Ont3fy(5CI@oii|2z{P5=|ErFEzYRH;0Ejo$N(S! zH^S-|6D9zN1?MA@8(VDR$_?0OLLt5r3k4D+sT#9flmVm|3s=olUVlcyp@Fy}NO^v>fzc*tfx7HZUC+X9ed^VLchZ zH0^G}!it%Pa@t>{;Amm^@EaYjo7COt(cNF$zf9C2>+B)jHWs=h9r&?U>anSc&#&09 zkY;@?Wuyk?;n)xb19OY7+CWL6&8?m!1sjgnh8%r%)=ay-EtFBPuI-cnjwaz52EOHd zZ(K9*SZfNn;lIe|bxYlniv|#eJLUl0wZ%=kw~d14*~>#uN3&VdXK1}AHY#ziLi~6` zaf&1`h0X=hPOA_=)<_}8K{Ek2ixjr{0lHpehO!wGIyQp%mnRR?pN>OS`h8cIA2QOy zpoeT|_V*eAs|ZUk71xoIWd?7+rG+HYXpo<}c?tX4TBDV3^jKCbgb7rpB!kER+I5{7 zTD2wc^o)6tQzUh=*<1e?Br_i}P@DzD=%f&c-m$=f3M}dB5fBeXmFO zye&^b_xHHlJif8V#Z6AzPc-E9ev|&Weh#kwBjPQHj98$mC*JwXghveRoH2^Ae$A{p z9`4{#e)g3A6fUAz$FBT4fw$M|(=Vc**w+NM$GE2_7Ju92Vqh0>Wi?uT7K)+@gWES@ zs44i#@DmJGo+9~-U!(gz4l*|zTb!n@bo4xHH#(OwUoxvXjwZFUqk==wx0orKkKY`@ z=iF`Q(_HZvUbe7=kh)A(lDlOV>zE`y1qm3OzOa~E_`|hLS z?=mx08OLk?&Vv|GdQT~F?`;_8)n;}*z8D#Q3`b|xQ$I#G3vy&8kHdVQceRw`0to36 zHd_(qo15I)5+`A0GJ!DJ)AZTS%GH@K2&u-~MzbyA9K$FS5kd%vO3wL>F`-Az(@KZ1 zOsFIq3$2G{PA+-B&c`b#I^q&uJ|6$;@)|hIWYJ86__QPd^~5^!1Ou}Li@+f{1Otpc z-*Q9g&|ScF*5@Q}Ez&E#KZu)poL}fxyS29;AKI+EBJFSZJn9qjE&d*b%?-6)RU1x9 zkBuwz{OXKz{S__61lR(%&wI5+^@^AyaBJ-S3jy?;v=!L1hI@cy{g^#Ywzt>q2i&T@ ztFB_O@1g2^d+6C|jJK_;8GMqzUbQ#goHFdki3)hz_O|_B+kn^TC@uC`zPo#Ov!~lQ z`-i`f@~y|P`(I0gc=TyTsSo`_ldJE$N8W8ElMaTNkh8>*VnkUC;O#6M_2 zDH1sWNE-<%`XYa$(ax{I*rRkA)7F&Ci2#{*mMMqqb@w&v1xQ+bEbm*bvtt_JdcYJ; zQb$Qb_L9?LZb7YDEljtmfQFWLCF`66y~$)7wT_Z(4{A$OpFNv~0w;aLSVFx<%8K|fm@qYn+v=9GyV(va zmc^3o>Mi=!s-4Miwg0+YR5a3paEE=GLE;w=tRMhb9 z3}gTp0JcD}L2~gBWE2(%(;&#G;hh+6*bMQ>z6T3Al`)2f`|i6J%1xvyyu?J6}hdnpd?3TpgGSbBf)x8bB);d%oQvhKq1)}#)!KeA ze*?3+J?LDHVwk=2M=}H&qz_}m>k_4I&$nw;CX%OOI`I#|OT1o~{?j?tP)VHS5LD0s z7`&lTKk#6hR5#)1#xyGNPq%q+ecHQ7_lJKwl@NW3f&q``q2}52&zB!W=yy9H*0nO(y}m^*^=b?z3^1p*(U%YSl&fQBeuD0LO|OrR0Jt>XH4%89?T)tUEBIJ6 zQ%%fZ#BjzBEymSyaUw`EBwn1EC%pD=C|4zmqUG1m08fpD#Q9F+&=QDhM@a(ExcVJ8 zg-*;h28`J;U`>tt^^EC&eVinrR`b`({uheEEJes1R;1+YURUkv{!XTUwEolkkJaZ! zKm19{?x{Ge;gok`@8+^&8n-xz<|G1%z;=UQM>v|fL+`0WQV9`Qqv z${wJI1W#pCL)tn#WrDAT7wNsIfsne_XS$#X9aJ&())f_9n+>$6vuO-H z&YHjfyG#F9RqpS0^xZ$l#J*!*e5CT(dS}1bpJk(}PrJ*&a1U_T_8gh|@8CI-OO^I= z(-WPXw1^IOJ9c5zB^3#tu7yUbGy?^(ljzCF!O6|6=g zZnf%R;dgk;#qjUgW%^xeA09acxFr(F5Jp-`AwE)ymS$99MH#t+XYl;biX$=F>d^() zO2FA{`BuMNB4U>msG_O}3BnDEjf0>lM9scPC+u=jp`t+I#fSkGSJ?H~1%?z;sYvE1 zZ;Tt!0*xk=n@KBzos=aLfH~qEfuG~xU+~gE4tg^}cFH)Mg<}*~Qe*-*GfLNyjtCs< zQiK+LssSeNIeP}Eabe-%4Gvg+b<6$|tDvI6`)FQ4m?Otlb$v}LCClKH#P!g{h8H7N z?ZfLfTll5TFUML5 zU$b8O?hG-S)9g0mY)TFzV;V0NOa6C3w7&Oxj7(tf#-GjkRK(72Hw1a>YgDX7q7#!~ zN>YZOxA+q>(m@N^ur-2bN4*6bqx9=2y`h~|c z=3saS*>M*`(caibF%Ol*eglvkZblFCqbV9JW*}e~{CP;N3>YH53maz1Z|f$?<&li{ z?4?lXhRSQnVbeQLJLmVgP1j>*LA&e>P2z1UtcGvcbG0$f^SlgqOx*a3*)kkgz30oK zPt3o;QDt0&CGECNtR$^Zz@C+LmsEj%QlkGshj2|FMlKZr&Y?vu$avw@Xs+{Zx3v@M zJ(&6Ce_NKloc}5v&SWn=yBo*VbfI^No@sY~c(AIqDFG{YrzU+6TK;jn8kig^FW5py z3<2127K=HJXf0*An&o5O5p$lSl3Pz27$!c+Z=`|Ik0u_?<^I~BXDepO1L_lweyqYY zs1(3a3N?tb@O&Nl`*)c2o>^q!XDn;TzQw#wv}4|zv#rTH?c=w}(CBVGyvo~F8ConFac;ykYfx+LgxT}- z4irZvmXSPnLaW#3UN+|ofl>? z91z8|4!QK44bcm<}lk;SU4)tTQwEBhohtvaYH`aBBmX8ZAm{@E##4 z^UWElQOLPiYjcmD=r|a)!=-wi=612~uA~>N+h*QLCsy?a4lb;z33_Ry1nFZB?c z188>pAsnnAE`*xawfPDVWrM1_!w`n7+6~v;l^vBC-^B*A9FvqT-ChHPmUp%*X|c$y zYo)`%iCQWcGxRMlc-QXq`7qx-;bV?1wJ)s`xRH7JL^CGd_eN<&Kwb+H?Disi7T(KM zn!f(Cr{5jmYQyZ#Q{Q0Nckbt88`x8p)3ITJY#YTZdfR6tmu5=n>FU>yrXilSwYE#S znq9`hO4rLbB`L9%th{5okhys@VAshf5LvohTN~Q>cOH)!T!jzT8vL>F*IRXrMC9B3xe}J2k7$lqw~yn;o}YXd#?AszdnbH zc10yPD3roAqG$hleo|Nipx~wf<}5)IgiV10kVcgG@_)xgD}>CrL|FC&>9nxeYJbmm zvNR`^JKD$xwlQw+k7Ko=sFCM|(vok4BB7h&n84`eEJY>p+ zX*os3LYV$NW&oZnf9{Fz&}&1b&<^8a`G zv9hQ#|MkqJ57OTmsU*P)=F&9CIT3@&O!zWb@St{A1(YSaG5t@#q$;`T))O|F?PmHE zG3ilQ4#A-LYz9@8Sb5x7lQUUvS4Ob0a_tU;k8SNNeENZF{5x{TfmF0NrGz>mjx=%i zZSgwwCf6=m0HxBGb#j9vHee8~My{dOJ zjf}svXF*#U$4FW?Ts()`DL*#pR0ULa%m?8iCI<}IgSX13t!~#nn`;Dr>uNu6pYUgm ze$(viI%i19^{x9WG^Pv(-xwiR-!wi^6y1{oa(qRK*2Z4~HGM?^c-QiXU3^yK{)m19 z-*GiCe?RKk_~|=zI(-bGUs&%kO{RVejR*X$1#wL{qqKgAs0RyvNWyX>>yUbhpr?R7uV;d(y{+`r9sR)Xy9W$^HD zzV9YEN`LX(`JDLt%DA~`Ef{F;N+6K-ifE++^scUn>%*V36>lSfwMI+Q{T<6uc=>Ov z{niHpP&RcETW=095+Wn`EnuR(4XS_nHt|z)t%JF_7*AVwt`Yn{&%uFJ8RXesH4RPA z4~xM+2gq?ck<;v+7Pqd|uPc+O<@r6Mft5%UhfqW!0=#Ji2gn425uKfl;pM#hsws*! zKnKU?KB)CC?o&XG3b$Ul4Y*66wg68QKG9&Zt?(yaINBm zLKb5!MhXN1B_I?Y579-+Y>-~?n zf$6#5-wi?=qQF;24tTg|<`7*rioAWEHpzsv= z&={*r>Mxd-zI~ls_iVEz!CI>DhT(KcXLO;gbLv7HvIhW+-E6yh(V5>F9(40`^GqRX z^3v8q8r;9rU@RoEByTN^2MhuhphL$rcek@TWROJy1S40GdiCUm!2(zi4aIU9<>>Fn1=uML znQ9Z;C>sbO-ig|P2nVM`*hQeoTM~5h>K?u2ddETpQ-lWV80n#k&TFt0-7weigP|T_ zkdXk<6a;A~wMPiLidhK>BzXzeOGZ`v3E{z7Lxr9z)>t}tGWIW`4t#A~g?o~X1~KMY}ee`FD?Oc)H{?p`SiM%59Z0YMGH zAYJN}DwK9%VEMSat&mmGAqc>M2-bylsRo(H1`Vq3^J_1~e#|GY3AV^vc58uO3E?7j zy1@NpQPQm^RRP=^j4EK==-RMw-;Cn?>4&<ATXD0r5vruBxFwVuh8X8S;@({iQ7_Kn(A^X=?(^zUxkhAhRmcFAP6q<2=^UJ;n4 zQy?iYn~h)rttbVF0G5!mEeU%-9Y-y7gf~k1VKD<>VS|~rVB-9C)|AbAbn#PrZ}Q%v zl)7#cRDG!iCH0DLSandV)4#!!O; zmlQ-47A07A!+wdatgO9nSf+J8sTJ7RyaFI9y+skRyt6Zd?fn_l%ML+zz2(H!3h<75 zyUMCu-Sj76RcHilN+AbC#8oiS8^q4^{PEm%^?;MM~&9`EHk^xAM- zy3hb%AR;s@t@3tIg#@`#e+j4*FCCH%bDxIbzIbLE(_~H-14#{GE^NCm% zkk%8BClo#z3{VI9CCV^*y&kLNTuU!b3LGYdH_ivaM1A$@@-|ZM9~7*wZuW(W70vAi zMkyRbSkq`shDj1&=>{u!gyXHK(~c9LneX4g9S5xNIey-bV~x~A4@~oT|L{jQ{{?fB z0iSE#Fp$*FXgBrz_GA9trJn=)rPDh46a@fSh1;NofAUg2^8KH>#SCC@5JV7r>e6xu z_yk*wIRX(%I*JZ^1OIXl&vnThEkeA}Cbep%DnIk$Gm1UR5I|8~WL&^26o(Jrs&pb%QncO3v+2F#YjRkKS2?U!3xLnurbR7$ZmQ~1+qlU2-tF=nuw=aw zr1Hc(v5O)6#!m1HMa+~{@R>GpIVJOR@n2=H@%Rzdq%6AT#jOgL!>{e2CHe2zhjCTv zcL~Gbc_M!I`RvVPP$CLSD>7MRDGyRVVC4@qQj!H_nWKWdRKPKS9IZ+lI#j@Qa9NA- zJiTxB#4(WoNk1<=22Z=S4^e6>`q%C;RtV~4Pye4j=h{Dp&xquE=E%=8LaDf6?mqU< zX`hkxHf8>1r~a+rwGo{q{p<$`?H;XxuFV3c`kJ5O$ZDbgha>$OFdUTo=4P+_TAd;q zTrzbCelIqeJZt2fPX+PM_hnO(*Pu)H*4NE&81sC;mF;fCf9hlT8UxQ|0)L};zeU$h zertbw2q+J0!phf-QF~UugwD-?qQONv1gs*@@L?#a`P+;bSpi@_2E&VKgz8Y%#f3@F zWpKpL8GAbdPe;U}q5pcBYa9C$$Mm_stV%R8(EINk1V$)3{ zX)7vp80>f^S>6T3ApT>s}I z_Sys%?tMd!qqLX{M2f|AcR!m=y~GC-1uTX(N!y49&uL|fqJka%{C28kGJa||7MIsD zZP}lbRbmLJ7O!7LD*)yV+AEcM6jlovf+~d1lxnJ}!K-*w90DK%E)$}H1lTnIR}+1? zugm()X}an(>g`>f%J}A>h^njOA0W&ks7KLAc?n+W7G4z+Ncw7{0NHvhz?})3XQ+dz$VfMUjZ@{Y4el>L7r*1Mj z-{YxSE~p%1I3Pi@ec!-ei(aEu92;MUW96;*;EtQcQ{u}X!J&$^KJnogQ*-cTbUy8Q zJoGK*VX0SK&Iig~39qY4@P3Dpv-X~CyHII8wLPcX`qv@uCc{(c`oDj;9ZY{|?0-eA zz0c6kqR)%VR5NU9*uS%izuI3uW^8a}OX_5~#?{K~Y@Lom&r=zmS8_%;X0>t&jpb+D zQ!cirfT>mrEGSWtx|u!%S1>jpprPoEwX_T8;X`nr9*rpo2Ec(tfd@%yj_hD|xTal1 z2LW&Gm3Es}U$-Sz)*(fV6aEu~0#6w>UL}wZ+xqTnATd7ijU|_Afk;C^<)#mMKC~uj@{0NbY_*5OD{o(wXhJ%{&p(+nErlN>|IiXC#hw~VoDvJvj>x4^GMT+{C( zR$|oG^$M!n-luwymMX2$q1{!BP=-6h?OD8zA=tBS1Fo@ZEnu;%$T*g&5GXU1g>a3pH9P3B)nr%VdnOo zf}V4wU8V_FNfA+I!7wICDwx2eLcf5jV_D3$SJ=?=`tNcJLJH^dRPEpo0ukE~g^rvz z$H_3GZx2{V8{@7KN^QpFuV;SJm{HV|*0vTg$gpAAFIYn(`4riY9JlY#16x*B$#%Ki z{Cmmm06EO9MHEKznt&h#6kf7HUWAHZQXF5qIxx+PM1+%ovi@4O3~GiwIn;BXvv;E{ zl}^684}inG#Dw3?v?H3&d0jwoV2>^IBZ2TwO!jl!(t6!HCZYxnd#!EPZMf2)A_hDA zU3@(iTC20syRpUya(;nMl7)u?usGT(*C|j5jJ(0Ya6EQtNR^jRfdYCvZ29uZ{Fr?LfeHWhif{v5oz^^xT)BmaFIJ zQ12RL5!>tTKTlnq8%Ji~B8%t3EgrR;A~X@n==oX#7`wgVjkhQ z$DNG3mJe@a?xr{(f1EJ2+L75eF>O6$8Qyax5$)jalCWliyRwkxsM2fRt;U7xGAQX8 z14?PNb~?9ttODCC5fEO0=4dt9rbCI+<~}VoM~8lc}U(mw80M z!HR(+1*8}eG83UgVH80KV~vpX-g4H#T@aw(G!E|r0KkkX8kGcHbTB3_ca$)h2e&j; zLbPwxEwI5n=F+mT)Ej0PTN?yHB-$}E2#K`gV#20Esws6GU=j7LH$qjJ!pcM-Ye51` zB7@XlG`+8?(QvPuU%+P(aOC&1)l89LxoN&>ieWLzN zSg?F_2fMb3(Acnad{fQYuI=pRj2^(q;I={Ha-BS=6@KNG@wH6@{_>63&4sq4kNXrs zA=D-0G#%h^8%2&jwq+eU}zxF#9y9lujuNu-N_^E~nDZUW$FPjetc08C!+?u0E|A zRWq)~?qIqwLPUGu^~q@B6Q-Vz4?Ob`Zb+HX@|!zs#>sgzpTz}vzA;($&{9kw?FrxVoyi1Szl%_#P+=I(Rj|L@PF-hz z^ld($`R^r-EX2)}+_r2liRlo_G7}bXiv6VltWTO>E6ITN~Jz zoR!Toviw)zw+)t6O#3?j&dQ7@F5Aoka{3&RF5YSWMX6XBliA#1x%pN97&IOQ$2*9F0i%@QD- ze~m*2_lrdrwp@5`lk^ItqZqV}2XE;p-@4-nHMI*)Ftp&x4SY__LGNhKgsis3+B_H^?pnBa{GN#?=e1deH^N+{?<`L z@!wzk*f$$sZEIhBKzTdggfoF9} z2ci6%hj767UXK2AI{{5C88a}cB#+7 zL!$iK;pI++IyB2FploA2b^R4I39{3hYZp^I9tTyP8LW!~^G{>^J)2-7X-C#>v*V#z zfwrZUFP-Pc`2s-JSJ5aBfgk67YAD(L3|H~L*>h+2=kM@W(=)P9_-Ub=v&Fqz(P*K| zwsKk;58{+go3uYn!8!*fhI7dr_6W%X?$8=#-)Y@H2ityo4k5sC7;maojpATo(Pb!L zmeNi=H6{bQB47LGm^6eI+=Y~!!yvf~QGq+}6>biG=5umj5m5iJP{~hKYeHYn(xu16 zA&a5%*#VrP_Y50mf|5`m8NYhZ`tn)MGh5y4C=B^1NR0yw)(GobSq{3ihtfcOAMrpq zyYzj-y#?`6dM3snft~f)ddy0wvC7qTTM^*6!T*eHm?#)XqXG|m&NC2pWK?A9tU1hv z1Mlr<#m8B7H`V=JIb`*Cu=g%Ov1RROev>pN@iTiibm^NB;xe%7k0d}7u?}?XrlHl8 zV95cqYutR^JhgTZr+z}|j-S|eWGjR(1ZcGcV-an=MB8!(sV7ajeYA&kr@9Jox0Sok zjm{odgz&tGbje>P!|8HASbATvgAdh^!Hao227 z0jTIE6QqnUl+*p|&ShEK+qfI@AC@&Qema$8tHnhL)5w!v2nq_6g&+08i|9_1CZ^5! zp>lX5BnAy~BwAi4b~v!j1Ah$5uGeUw90Je?5JS|LT*WZpgTBR}@I$6}mR~&58q`zF z^`s&g?l@(BuBLmX^lpO1l}z1BTUIJNV<*DY%h^} zl>)Ci`LMR##_K-1wW;}0sx*s?dJ{xBq!NiIwp{>ulzN|0P&RO!Ob*jfJF?`(dS&V* zDa57#tnIt?0(~gNkDNwzF%~rgzqx-(hRpQ$EGnqDr(_^EFMQ zPni2c-5YR!^*&v{7NYM4kI~zT;_14Ve=~j^%np7Jweo0{xz>Y!Jo|gXylR=D$}fs;$NsX>~wr6oCiu zX_&{>uuu!O=rxbKP;19#osV-A{M#{L8;fJhVf=e~&2DkWit;ZW8thbR$_@Kkj6yCX z-NFndmC~TVHv~IEKt_U*bQB1sJSM-Uvy3A`0DDds14nJSl=gTnI0(WU7PA-uHbRML z4XmOZPTcR?Xu6qp>ljd}EB_i-yzaB5IEoJ~FYlayakQa!y*&L^O5{ordF^s_ z(!979QDuv6>H`5am#U7H;DdE=!ojK1YT`vY+cH&lMDJxCRO?3k!j-Z>YuI?B*y=RD zd%-k43!8?31Tl)%=q}EfVBwDzCY~euWb0W#9eczcg0hLvf9X86XA<;40s&+?6?E|h zvvI!3YBTSWPXNI#;}?njju`RH+ums;@GdNr$?F%5GdK{g(vXN8ky|(lRh!Ofi`u$2 zVC4ZyLC#f&k3$Bf<=yHSoBaZl!Hc9|4p;*Tu8GgYEuOIXHA)WjC0s()Moe|PFp7mJ z8Q3L7K@-&L8;<$rF~q0*VJd@MB-nDP%^9l%3=LQ-#m$iDkuPK->^?BsS&q4T-wFkx z+?!>+rQy0##90xXT}b6VIri2CGlZkF0juRkApj7pF3=!=kZEU}L@b&zs;NOPu1M#e z5)6RNI2O%G7?Mk9BNWt%KFQq2u4HTuj8)9O4dcT9f#TWIcQrTfF*d{;qXYwQFm1rQ z(5Xr7j^%~_pu)8Yx1Y2nf+*g818KSH+hZQYR6K~1CJ+)c{Ia@ zL~!^r&oq*&I<>i#Ov}RrY(So!|A}HtK!D7i&{|kqrDu+gull=Uf;V|2?bGv>v=(`2 zsdTV#TsA)=M!!RUVq|MgXq>0-qwLmX-m#o5v?RQf_xhCKicfVVq20a<(hJ0=cy7*}CoSld7aN>_))l%vu(8c{- zcV~WKDYz@>UwO94vZl(%md$hgA@X_4*@5#kFzUkB-GN9be{TkJX{Lsj5-l0>wCU{r zKXrcBz-vwy!&wg zh)gV#_!dUjPXr!vi`aA&I%ZHvWl^jcLd|uvNh!l)oqKF7XpXi+3nIR%QpP--n>_J!`jMLL=i|Qq8 zMjeZo0pBmHd;J|aaN+1XwAdA*BEhFzJdGs_uDt)^O*|uS)&-#d)OQ+XkH2+={`5ik z>00c+HhZ=aS$4fdVI#$9h{FAxGSj-2Kd0F%hR3*r``Yc-zc=b!xBV9__fc1^CxZoT z{dfQ1dR9cC<7|E!b!`MIXQft=`A?WAk_PKAMpdF16OB2NZK6NpxK>Fk?1)7LXYq@V zoB89QXfIU*jWPC=8;Ej8*BL;71f-;R1pAgJDN{ndY~IuH!dP*D)n{Av4qQ*o{UYo@ z0t;yLL5%qEbsB~f?jbAje_!yxx2@8v5_KzF3&;NBza@0zuM4ox|C9L@9RJiC@ao6Q z8~6)e0!@F~qm_ZadORQ7i7Kbawok9NMfXh~4^orVWmMO+__ZX(-8!JsvQIs%OBavnG~mFv`#|q@e%opxD$R=o3izmf94NMG69QF2v@f)F3H8 zdDP97nI$w`mTI~ZXYeeV-$I!Q)i}UhkxgaAMPu`+@tOMhSS(T3`g|J+KY!S0!IS0j zVYneWu_iFQ+Qu=Aens0)2#|~shdNOt5B#codp}M>27UFDS(r_xiHoU;99o+B(D<09 z%4Y2#VDzQwp|6$>mPJ2x;q^$7f$0#L6rXT^pvc89-7vU#<|lwhaW#b2f9U9bp~Pt- z1dHZ!DkpGUz(s2^+Ne-)5a(gn#nM})yeA^{;2ahL`$soP$Q?y{Iz z&D%{2SFdi>$uKvULgA%FtrDA?Qy<0n`*{Xzh>GgG?KH?MbKc`42PVDsny(T^QEg&7 zf-fHgfF^7%U>Kgw?=z4(g>mYL$~c zYGB@2RS{zp<0X?-Qi_!}EyDz2Ewc%{aE7az2i;obdz@8{mc?AI>jhL3T`Fy}JOM+VvM`nr2`=o^zGdtcAkk0IvGV1h?ND3F$GgJ ztQW4ORA<&Cvn%3UD850KD5muSpqi}}UnfiO?N%Liu{T;VFs!zvwSb7MVxOkb1z0gK z)fFqQgv4UR6hT2?Dk7W4qw;L576TZ$(#p{liot78SfVTx*Gh_lASf(Yh{h~Y5fzwk zl4*-YipDB2R25?dQ6Q?S#8eon2%@N~7@(r4A}A`cAnQ`93aYVHRaIE5R8T=NK&kxp zn%1HUe)X#paLOqZd5u(vqY*_|iinIzD#aBS#aqa1P(=h41drviuC=1U5LHAL2&@GK zM2d>Xd2C3ch|DrnQ9(pOVkB6xV2CU~HYDFhHuRAfX^ zdG1~9I;RNcRRNq!JWi%YBF<-Lse#nsIL#|LjI4CmHe(&TP{&Vo(M3Urw`!ice1k1@D_KziY{#xKm+xN--hk@T0XrRG}AFo{u@V1mT`s>y3BTM2iV^U%*m+HPxp26;NNrCUxzX1%6 zeSG8QTGGQ9!m|Tat0f;Z-%W`Gf=4iSg@=TaiY$mPeQMO+{F^6XpGEe+@c4Q=pQq$% zWG?NXk5k&;(sIV%L4z)HJNy+AF&XalZUK1L=4$8mTYZkF)NOaKZn+R+JuZ3S8#(Sf zVKIS$A{<_8;d{F(_uT~|lK?@%W<%xY3o5gpN!aRI(CsASZUQ;pJUmwJ>H2yw9ZuaZX&Ew?5P$T2J6*l({$9Y6PHC82bexp zrHCCN_y5j%A@5nS0)0Z@Z0NNjEd)Wi4wodb!uq^-$aP$vC9_*s>u!E_F~+NS@-2cR zRNN_Qc3DO>8~+cghQ(~M>sGJ;@Cb+q2!e?o!r9_m7%Mz`URzz>>vO=|b(@VtEuJ2> zU8BLrY2p5uVhk9fB1rZmB1pG$@a>$Pj2CI<>IfXoE7p5&k*8iwAWx^)W919b<>@_I z>rt_=g9e4LYwN9MN1IJhQrBUnd(R@Hyk~lkJP%@ zwz8|RCaQU%zLRf_mM)cqzyAxKCDMU6ctR=5n@L8km@u58T3MoztQJ`p3teaQ1^ST%l!D@1znhj-?4KOgled5Nve zu4E}8YeD{7bbrM@P9^`)Kj;3w59P&SKh*0u1hna`wA}T7U6W+M_HTRSUR<}n%NC){ zWr6~H+b!#FYxSttl^`7qF~z+EFcr>&TKpyfYgro zfp>~W<|zmXp5cHA!Vv4lXN^ANVhpK8J9M?pI(VrS!-yGWPOw=z+X((_h=&!_vJh8M zj0x4sZbWM{w9exgQE^ZV0z)EN=OVijwz=+DayF}C=-$J%1lJc3b8U{#MlhZJE^RXM zIgvUSuN2yj8OHi-YRq9pWC@H(1c{!WPKYEoQG8>OIKk{xw3q;Dx_$nhxpAn(f#A3$ z4e>_kZ#mkg;)?FPL0d1fZHTN3w>XdeOn_Gk3X5nZjDhasG-}qHqd;v$%5#~#L;{GY z&9`O*b?ca36wcE%hg^~<#>ZT01;HF3!2~zTkeM!hMQLqMYGM?HV|EIV69V~aN{{8= zsF_PkCIu1g)0L-TRm=qcS}M$2&*L7EQJDu zis%QP&FWAQG)xJg8U>+Mr~z09NiL!_IYMJnple*)IY1^R5P>n;D$`Y>(M<^FrO*i; z7HLs2Dj4B3EuvEgQGvMYizWj!*bUPpbAk{AbqLQa(ZCphvt@jw8)eBKM76M8e@}hh z@1=VeyL;7UNVDCpb43)~SY=aN8Ea_A;G7wVU+o_Awco;s?pQU7Xt1fZm6KerD7Y>t z!*@)b_k{!F;IBYV>2FSaD#a!Jd~9M~xrp3m<=4QBwbkz_MF2rSzQ5*3tX<=0>g`g` zLT9er*i(U93gXAITHXAG9SZGN@3UCq!z_BZVFhcuIq=M%0YKptg>80?W>oH!Iv4@G zYQ&(cBmo2^)YsQe7N7wSOc2v1Z~((U4IbVE2f6QD}3=j0X-)l+AIL@o$65ODXd`4t0KM? zH0Q3}wqvd{?jy&L2|HERZu5s0+ztdpKtM&;GynUE$mk9xh`cAqV8>i zE9Gqz^l4ZqEFMcwjfw^Y6RU46u@q$1NLCC-wfov*oAIs}?Cpq(qZ7I8ucSjH-}8O$ z-h8i3=QTNO&0o;I!I)n~Ws0FvtGu;$Zdl-B>{A=-Pv^8%e0`NxMkj-RE%{kj@Lp14 zYg+~SkK(vkkKv_$$t6TlUmoAD-Tg;p)OJ1hN%s#wvHbSC7OwlO86G}9VMa(>{TOzZ zh+|v(eZ&V>b#IBx1@V1<)p=sR!E@%S6BTGhcn+8h?sh(S@(r z1{O@!0uO#iYUMLXsO0$$@{x9KS?V3UC-Nd zzxnoEcBg5+>NWCzX( zdORZTB#-_$6}A4g9*Um3EG?5>A>%=3<=AqtWm_!{$-pnH@-~ev_)METRs=pZzQ?+V z7KK*9ZTlJZODvKC@enCK^t?ZAG?Ahm0nE4n?>Phty+ICaEq1$~J45XgB%r_h|H2mt z%?i)@?a>1!kN7)-UdOKpZDA?_*v!~Uw-jHbjl#O>_RxY^C;# zDlMiE(7Nd4D;^99vHguH3?&B*89~rI^RHggLv$0JFM@*hhgM{O?Fn-wDy#j;oSMld zjD%9(cfAS?JsEgB4Qg+5*E9(C$GBmF673(if{)Yt4YkSxNSFe&z2m=Z{BJtCKZ+nw zi>_095iQ;Q-&OuEnWn4l68#LV1G20N8CvGGMY!(poGYu*mK9c~gnF;%j%_BW7^~IlBwI#@4MlJDtkJ zKO)fbDaFSd6n_<>3dS$i)9R4I`rA}Uiih&~t1%yMY#7BK9clfIi>T2>cLkt#?VpWj zn{X^5cviFh3<`_>l#u^RB%j;o?raDP0!0H#f8zy*pJ(ziOh3fRZCHO(h>D{BWunD( zsbY8Zs3LBm{MlkdA?@AzLjvWyf9;l8+T=c078pvF*YYr6F#MKWT9s{)O8h;0hh>xK zBrwGofT)o`VB1J|jimH8;s|PlMX`;bvMPi82q9P82FV-|rLE|-1ixw!mp0Vn~ zr|vP;9gjr4u97r@TY_DE6nUu7MJ0 z-kJ^&X@{f4sob*kHvbKy5_!hIePxPflyxalMHLvIdzUK{AXiPH$xk(d?r>C55m6ZH zTC7z?c&$Z>sK0N=rVi@VVfsv}sxJSe>5ju5S3#reEoA$S>YPn(e?KoxmZ626g(!+5 zhZ~8EDaA^!=QYli*`|z9Q}NodZ3m!+R5}LgunN*RU=zRb=-8!eMU)9P$ z>3Ya|tvZ;z{4<1oiC)?P4?pKz;fKzrWIzlrJ{62wd*c)6ynVf}javS`L(LQI8RhW3 z+)Np8JX_U7dbrvwMC}*ir9ls7b{d&yAM@DG+1@7xbPU#btO0XG;i(w}0Z&H!#!&_B z)t;{1N-zH(VrRT$biBuHU;4PbS_|!Dg4^hc5S|v#Se3JSw9JFZr~nw|I@_o%qIR0~ zqlISE3pkm=^J4mR5k8NlLFgyIuhv(9cYiI=s+74T{pnU$fTF3A?k^Q91zaT?U4M;bh8cF!1kq>#FZAo0q*!0@&4Sp)^uMoe=i&q{E99=z?o{x zTFrQCTg{GI|IAj*Hd@5!;&niCTg{vJLVPR!DWEfVS&gGoJtq9ze9NSti-5q;rqYj{+J?A7+GFU z0=cUTaWO+CB3LH@5ULbm6FM0V4Xm{-V?Xm;K~+{IfEYcX39=nng7$z{fg6Y35XL=C zy4M~-a14eAL^A!-h9+xm(Gv=C2sSJT1{F#Gw$VVBhbXTF?JpqCbw7<*=cn&rjnl9| zuvqJL@$5Gn`)ccLmNhV5GI<@ed_#sphc^*xmRBzDa$r$fX*uFR;gG~54-}X>Etrgo zP8aP2EE-xU*y{g7I?5MDXAB?EHQ-`QQA8QQs-GrorwOewsNgS3Yr+;`&T9LZW@O}7 zPCw~7*_JKMWzxz3BeZloeI%d^xDFfo;&rF&Nh1i+XR(dsxn!hjoeQbez78tCIcZl? zKcshgRK3y7zmHvo8WP(xcAtgXM4d|3Oq;DyYfNie(8kS&dtwe)pB9&6y|cLxZj9p8 z(gO_RLp2&$DIh#kXX7ldMxFjzPBb+Us&61QZk4%~v$O-SUxFxyP!kzvW1EcR<{?PA zr(jErUeG{j*;ohW6bF$JC$b!6FWX zOMEt~8A@!7x$-$;vqK7>N`b`GBhQOTnY5bxsy2~|< zMMrY32<$_L3*gXV%vGW;fuwVhaIx5HRM_$Kpyy|Gh4rw|NB~1$zJw~xuU=Lev$V~G zU_LmK#i;oh;EWi)PQjFw~Bg0F_qlJd=imnS#%G4fx*jJ zBrXMvH1F(G_=xvRq3`!g*`1zEZMrb1fn`ePpOVn9o4ajieRW9$5Hixv1DrnM)x6!F z3L3;O)3OZ!E#Fbgv91_m@=#$Ujf7kym3KHz7bG@C<-2Y3s`oTp&4{*V?bN6{nrU#a zNSiF*x#sL+QJo(DfTlIsmmc)&HJ_@w*x$I-HM>l*X6c&fVAQn=tluQV+abV1a)wAK zXlpReKQ76X&$8+Afs%6`QU`n_2o~Jzn0+FMq~(AZFk)A+z8Gpb)TWKS9~i$46HzN}87)Ku z_(k?s2|T~X!B6Hr!6^UCIjmZ7=Q1q_h5>1dK!#7l>}l`oX2Uziux3JpW)czp`TK1I z>R=#B=>U4eR&MI(4KFUv zLyWJ*z4j-Rluy9%;@;3$H$`}|De>t2maHfJi&qq0_O_KcaCCa3ct{A{6O$X zf(UDr16F7{2Tx5AY9MShaPEPVeRIStq%O9X(0|o0^HM(jev<;Ui$H=%uk6`Td&DZI zzGoc_J)=BE3Qoq`em*KD^S%EzGB>um*0JRGxcX*jL%&MvTR#@l8gYmU9xbS9+5!I5 z!0(eKLt@xDa&i2bT)rNRWf&^t-j2=UVN8eiu_%baQx;XX=`oBHP9VXE0&#z@u@xPn zs*bU9f{F|zXob%@XG86ka$PmFNPl&$_8^vL515SHFg`aMN zF=3MbyBFEuZk6XxmijcXx*&Ssc>xzM0C+wLi4t}xsJ9UFgv z!z=a{{C98ulK-Qni=Tp0r&QmG2dY)n(PQ#So(q;!uI_Ki=^ksz#J;`!cJklLy9N4v zTEC|L7kq&DS4zfo-V_hMV7~|TN*ZD8A&q*h+PPmCvpbZVIAd#hgghOn@{ZDl&%xiC_~yR(C!!(;zt7UY^hy1Wh~bo!xBXzs>(TPlBmW+zMWJ?;iy}0r<~E%GI>;lF7(w!_=DYBAun& zh~b}J-ZfEejHV8r9UBs|?)1w9)+yheeyv?w@+!tL;Ebfxo)X`z7*cYTpVTNR62=a# z&R(%k2!|^ioM$C2o#XBCO^)gzgt9tN0woJla#Xlyn_oK`%eiN3D}iwq#qMpBY(LP&yo?f3v3Ip3(hZOi7bZ0A#|zveg9et~J}IQS zw^YfkUOg5a*I$l!*`fw=v~9el3nboGz&^)}@S1C^pg;tpDIB1H0(6;&j=|*Pj&MBJ z^4!896?+9alq)oaJ%-$sVWXJ1I4BYVl5c*yB?LMp7iz|qm*i4rj>f)-+XyG&;Zw1a zOz-ZbKUxQx0)h~rn0c{Ec`Yn3 z-86(OMyD49p=%y%oX92`b8%7#Yph?2f`zM*28&v+sP&N0{9qk;%TraJ20N8XZgHC& z{VO%Gvv)?uhtAYGTEBI*?5V)&`D?uqz}GtYEXmJ(>-V=9etcZ%R52J#FGy{gyAAcb zXj+kca0<<8OGaQJF#;Pi9i>J?fb5`_;W`k2J*9PeMT?;|6bcc^1kRh7 z-7*`sx*6L2c2{LL(;5R)y)$p*{fd(FT4Q0hHLrA+U!^v-!B&bWl`Z19!kbH#7fJ=2 zaVvqqM;mx|Bj;kF;Dq<1(#aZqMbK)5EY($eSd`kpz0f=X)?WcjR2ihPp(Ws-eoOgm zlAMwOf?K>Daah9KZIU8UD&zlV#Rb^RcDUZU4H@MiLS8Y^;Ux4j;Xp%}CnyMH)lQkV z&8!fDLp*6&nHp|<`KVhI9WXn5p4PDO<>~p=PLJb&QX(GhKa^(>5EpV`?s-($g}hK9 zfFDMQob*GW{ZCVU2Y?lW7Iap0zQ9#A2JY%a>b@K!e~|X3ckAA4sib^VEy!@a?^43b zH%;m

    jd4Y-NK51b5P!E|DmKO)sE4ZnFb2dv>P|MFJb&dn95(ZH)HOA+W9pJ(XtN z@%`IBGax`83jszHapf%$*d9pSc>oW$7+F9DV=Qu(+>btwW<-qR%Ucb_$i_j3hEa#> zEf$4Ssi6`9b`ij(qZ>^8v#UvD?hvTVgBT-$lN?)iV_f4Uj#3o54HcWruXz<3ShAg! zus+PYZBUV6Bqb^+<)|Nk^JTl-?5K^L!#5{oC7ZZu%2Iw!Z{#5siC~dTdD0wbMj`#1 zp>+U6g+PSeF`JFIk$v=5;YQjvxeI3cqMd9Yu-|j6Kfs6>F7~7XgCqW*){sO9H`%{I zonU>#TG}My_`9{SK$qWPxz|?HBqsU;>@iFJ@a!gVDM~F9dy=i$pK6vaLa8TJ1PT-l z^|ViYXW4%g5(@`zT0(gWcp}Pw0)olU^PQ{Yq6H?&GwVupDI@59=KSgTL`?aA@rQA#`&I|jFZWcC76AbOfa3Wq1PJ57(JWXXAaKYTZPh97IUnr4 zx+lu$`o&u4i@Ww8(lG4r@i9J;$MyKcBPt{5$vO5S19ISg;kL@;0 zjjh%ZBqEvLCNtbMx&;!4ubeR(bX7zq@ddzQ|H-Lo+{CkSU3B?XxR);>&Bh_4YS9E9 z@PuFq0KkGu#YI6CQY#W7u~?^dY)&Un#Pj(REb58HN`jz_QN^N)4-(YhZakh@8`ggn zD0~iOoV^r_td%41tPhEb;_TwZim2?_;=dmtz^cVZwzep$v(fH77oYTef2p*N^Xi|P z{(J-9h)M5aLNZD4#!CL>Hs;ex9cNf=F?MCJK9G#Bu0j#9CwtrjgA@v)%Hg}2@R#(Ba z_MEqv`b-Tl8H&kiRHp)xTIa0| z!{|^zL9x@YTGEF0*0WPoqq6DCUU*w@C6Y-FNnKrIg93+-wSffO7sMME1nm?Tu3YgT z)jL?{ftN&Y9Dt32wLDvA2~;afv2ty_Y`)&ai-R<3zwRcrIBddw4TWmT*O3sc08I)N zf2LTgTh`O8n{y1u0zlM?Z0o6Qzpb+a1O>%mbWN^MY<>sT ze)+(c#5i5RWN$N{dJ1#!>*=*+IdAM1xvE>2-PXBlV$ap*xcFEu-D{<+=NHzqX;e2F ziNm;E`r(j`tSM{>~V>eG4uU#{fVM zon9Ua#{<~RZV~Ejm5SW^9B5aZpve`^>E4K0HpOSxI1!s5&JpLrv6ik`%*bxF_Zo{z zJ$CE)1Oa}tnb=iWOF!B zF@DjpuMXBNcvOYES)D7SJu@4tYWkU>r<@tc$&#U3Bup(aqDd-v z@Y5iKz?A@x|-3$@SIAAo0rlS-FlWctdxZ2&u-+^liPW`^UrIJdj!YF5|{WuU-) zNZP>K&=P&ayQPLT&CN!WAgAv+JPq^~#sIcBX06lAE*rs&DLXl+Am($X7-57vS|QXa z#D%NkBZm?ZDoX|+U@;trqlEQ`v$uv+OFEle<#(3Ntf#i#+`W~;6PKDCd8}^eE`>@5 z5T_AIyT`2*m>5{^VrV3XvteCtC)n+IArZ&llHxtePLT6xFO(9Xq6wK9dvE1u^Vh-k z^~c=Tvg=}mL(qqT{!gTQIY#rMHGfjUEN2%?txlR@k?R#%9u>2IVDEij-#i`wkSr*Y zEmv%NbsLX-(M1y5Z6XY^)u0>ZAPE8;Mde%e4T|9hdpJ(?9KYHB?CT$XpV<0;LTFK7 zzv>>?CQ*qO;v$Il4Z-4eU$yr~(EW59?61M(x%0fq?LX@Hu}Z+m&{H$0ik;P z?02D7+LwkdCri84ox+{rQ|cb+M7rz=O=X_)1>hjdpE>|`h5^y5qRv9-*r}a zG47260U99Ohp6Q6jf|>m{>}1i#U8I}qP4uI`ftPa?c4dNt!@AMjXSYv!YF6|$gH#c z*EAC3ME=375ZZEzN8q3`xdNb}Z?6AQ>?e8CE)`vD%3a4-y=FFHfMdMxxb8_X$z7*- z*@db9fhJGGLU&;z7K1%EI{=C=KbZv!KB7O<|oiuxPHcAHwQ@|6`5h7E+CTMgNK4|8r{}{Qd8*+POwZ2&gWb zMYF%Gd~hb>*juJQ+46PuPfRN7(WGBT?L<`*1TdcqNI86-z0$F?zUPk!AS&3;+7~|+ zU)k#Y0^ex`U>SFK`udrY&4eL8ZN%D%LsKu%r$hk(RkHv#WDbdNvUtc-vWC4QTT5+j z?wI*GnZGoIN74OOXnuhnDFgb!|DpeC7nwpEZqac5;@$Yj5752)bwBQToAz=kD>KYs zFqb28V7#+@_+`vLneegpE*affQ|%l3mj2sR@)l84iT-+6j3?vTr|G5hHgTDTDHK`a z8-~3b#BhfOh!V*jjQA(N(aFilh@dYYCI9MN#6$PW-y7W@>$iXTi}B6h$obXwzjvU= zC9y?#t=zSW{Wao#me)_0x6@T0-LzlQr8fn4*wkjr1M3oOB+|-|y?bGN&4)49VVX@{ zd}C3Zdr^q26q6*$?b(cLZ;rG7o}iZENg_rL|+CM%slN6=F1Wmphw6 zYM)$Y%(nJVhRC6mZ;gFI+wx}LcrK#U-r)WWYxUnqOK3e&lUMtm?R4AM{IBiK*^Vs~ zWkZ2F`$S^>x=&%9_GDarCZ+0MXXExvBC&WaR8nm;QHPZEIqP*C{l_C~ROLLeAQLIM z=BMuJ5=<%|dAqhsz&CjFRltFF^T?_U71z0kLKSCwcxLW1k}WDH)*UO2Wv}B3)OOu2Wm@i z-*J^YoNdQnp9#lZ++Voq`mQg=!O7sFh^IsK^u$kl=qZI@p!(Lue`d=C1}haGo8&cn zO#6gc^CsQNpY0#)FACiUN7<-a{XQ6GfHfd9~g}#Gj9;?1H6V zeQpyl=7{+}B|v?xr>XpRA85c1UNgfR-i&R_)P6-nm^SU9bk|ZjJU4Gcu8THH7tc^2 z5bCTzF0ri2HsausJ8w|FN{!pA0SMWs1I-T|VixDg{b(ys_3r+y$laX&QT$C?t%jc$ z&cqp^tM*_%4EOsMuVIC+*T3m#?1fr&ug1|SBU!o@PggaVGC*4U&;HsK)rs%etM?w( zvRe9}yMBPLF70O6{YkA-#f<8(GQVGAB64?yMsBBh1E4Oc{$zIyzZ7|}lgYW0c)cCCAx)iT#nqhUol}HLj&O)0H?wIBr zHHr^11>-)q?#5IzRUJ1F)K!hUzE|K9baYi3Q9(ihAOWDH&=+;G|Dq(SC*R!1U5Zq; zuFg6o+ML>Yb=VDy83pQAy#A-tXLmnQv|G&FyK7u9D#~n1*6ioys`{|=$_!_MBXDG~ zxYjM0KI-E5zXf=%o0}$kyG+=6Vvx203nn2@4~-AW=_n zq;}^+e-b;b5t(yGkOeISe!Zqg6o z^G&?on8Psf7(sFw^5BMU7E4dy!0nGH!+i4wVd~y0VlKZ5JI?MUY{ak!U~OiJxGpa0 z0H9$8N2iK#(~GLy>#b{`{o1+GtQvAX+^Ra~S!{Z!IJa)G$%q6sg_iVZo2F%yuiMp+ zGB+^yYTk96dL6eqyDHc{^~E;v9^J-NQVz2TLna7{K2_25g>R0HNE7hSr6E z;TAV{n7SyfpR|2d`}I4gpL(;BV1~l^AO7vl_G==-uO95reP4YZx@*^V@ai_tsNLp|Iw~YAg-E!$8Y3|ikdjiZI&g{N63!KdFC*AJA+CHFHL|5wkS$La z7QtQp#k7c8T`%#lnQ?TNduEyq#@rY$Jq%4H+Nm_z=%jR`i?hzgV&USsgnn&1CSSrB z^WoH3bv0e~vm{7-8hyHOb9-kf+}}adj(WjH`<2#Kwg5eN2ni$@Q9UU!+U-2n+*wxc zv?0SP19nzm8UD{U-Gfh3Vtj0ybGN+2K=(DrDRk<@7OYNdzkiin=z?rh8VRIH^?wl`FTP)WIz z*A7wh8nSLc3~pg>9S}3n;9AM!NXGZa zvx5RSeg+l=N;Yr?GzaM`oz(C5Qr@xte`_|C=F|;KJ_ooo^4G7AZPy2K#(tJK#y-oS zK8Ri?0BqDOU7*Q}WfD;yDXHI;&VKhceqyuj(xAl?x|rJiFAqo=V{RuZ3^seSWP2}! z3Xnh3@F=sV0JRzIAMR<8A|KgLFU?i#8L+&O8G&29L*LnzC~7JuVTMcw-HlN z%8oKv8u;cWOEHkILPA}nw}aPA#9li-QXPrcE!lZvdZi`0CL`L};#(=Lh*xFQjDm61 z8Jus4RSg-Sr*+VFi7T`oV$4KjAyBYZ*1s4l6suDwV?Co*kctKfq67OVVhDx1VFb$C z3CyyD5JzGpMk~k#1gOLHUrB%zB5Y8}I9W8UF_%TLIjSNdPwC!0daPPlW3>1Evd0Ra zZr$*Mw^}*(pxm^&PeOZ;X_ouLeMe0rO@`W8ZrFWmftq%HuNA$D)cdzNJQ$5qqOVyMR zYtMV^D0$Zy$lzf6ztUj-?GHS<4EEI<$j0)<_4QX$#>%QVUVZMdkF%!udfSY!{eUj; zGV*_MQ(tHl8IN?8)aVs7NzDyOKk7!(%@BA~b_gJ5V+_yr31wJLPsb)@>^zJQc>9ZT zQn-V+rsB8p82J#5>15BYgfIK1u556&8H&A@)4pzS+qR;XOOw0IWb|C`;NF*^4$_b8 zILOBEt>tLd{QAE8wY>c>N+LZ0^jB+G0P>qk{(*&>!Ga3Rv|8y;MR`;XkO_o3g$@*J z{CP$MAC$jZndu!U)Y~#TsSB5;J?5+DT#o-bw#ob?s1fRE#vKz->eO71sGZhaby#8A z>a(g2leDnMGM(|@{qOj&Fmn{myKg`Wbf}_C^*miL?a;9E{`%KM;3^+vTIc+JznM-3 zNt0o~DCr;6r?jX}m4Z1Gx1KC&NEDVfn(!Aru}ZM@+~H!*1&n#Hx^%x(?lps}*T0X~ z{~JRvf(QpR`o;^~a|kgQuwR z>ne!P6PLvau3;*w6c8xayn4t@12Yv`F;ywGTGzp#xF{6TyaQxG)(AS|@sE2-HttQS zErm{(ILor7Kx!b@p%o(XtO|-T)?7M0xI28TSqlxAf#AQpHHQazeYm({=D4U-w7E_G zbIStL;8Ude=ONVuU@hNOjp87?gl?dmt=4;(2;SK&F`GdvjpiHll7s?E5{6T?1g=1i z+58H{Qk&B^L_J+gw*rOI$~~DGlFwz9rCJ9@>a6x`oo|_52O+&Jt7!)f{J4}a=~ld% zcxZ?VgaVM#mHSB}m7U)!zwY=vkAsb&1`_{=Wa`@f6t;>0!|!zFJyWd4ff z*JC(dq8*1TXlk*7s4dm0AD@rg)qD|S6~JDL>SrlKM{*TeYKNRQ=9rNRCKVH!O2l)B8t%|bXX{2e4$qn zZU|L0GVmf{juNX}<{~is(^}cIU=hc^8-RomyajQi7y}TEc<)K9m2##V99cCUoBQ`2 zYXOTZ`gN4WWst8z&1}etY6DgXSuIbH6&^;)7c-XHN)iZi;M@EMAVMI(hsjov@(8obbu@aivHk|xRbpH`U8b2EN(beZ@*p@Edl7iWgsO4%^03pqRicpqs zf(sWxAO-|Adqf)Qac915((UyRL(R$;t?noQ*EdeEOEU@v0nmwNN9}UXli*~2Qq8b0he~ZxxyHM(_v+EF9vAs#~pQ0!+Xa7{Cdwu z1C`kBxU+O5BIM7<(W{+uxKO@r+lFKgSq9f3Yeb#ic1UFu$4Y64sS;$z%n~;~gPCs2 z03m`#kchBW3}B<8?KiFVVFLIbP`81Tzndn8S>g1S0xbZ0B&JSKGZQ%vv;_#^B(kc6 zxU@o;1M%}cFSJ4Jk_I3V=(@1N34#KUlw{gq`B*8CQgxZQqVF=Kds-4&kGegH=}0{f zWzz2AD~$=e-B6(?n+}kR-8%6cQA5^zA9J4>U!ux8uBn>ch@P`tUjS{jW8xEza1=hz8*O*Iy#^Fo%8zq5iH4z~^tvEm{)5?(&_M?$QlRAP!&HPXZv z6+*)11qNoBZS}dic_7%`8dOLbiSN49qAzJhu@M}XiwD~@n_P)Zh_X2h)tok~oVK}G zqZkYHxxAcFbf~K634)YZUyk9h7|$Gy5sHb6F(*X_cL?3JT@fNO1yZPZ*{q$^ci9bs zRZOL%)BD#8|%BULkN)1=yq-dB@b|~BLXlqhNa}~Hn7cy{^twr+;h@l&7BIQ3T zOV4{NRAaJXqP6Yp=(RbCn-e0|%ybjQ32CR&b{U7*(xp*Bnv~8&?nT^0>oOS?t+h0? zqe}`)w2YfIqVCaWaPF@+1}KbCXfWdt)Af2UdN~_E8E{HVcYFVnC2)nYueYjXC7A%z zj^U_-5{;l%^^%+XhX<4G=bRDoBCLFS8_>jiN?z{Hbw_Z|5RMDiY$%8IyI?hPylfRT z=-h^n-Oh^xJ17q@KrwA@0&x|!=4AKuW@)0SEfgfjDQxDPR2eL0oz!DYaVElPksznP zOWabn`|thA<*L?omC|A`SwlurV2nz5Hwh^uj?)e}(Ca5jHMLf!9EgZzTE%0IKj7Y}#ZoCzPr-Qj2zu<>f{JUlrs|d#j~py< zj6wAtZBHZ5m`pkZ;?avhhW88F0ozkMp4;i*3BRbtRH*PLza*ZwwEf9`Q>ZG3`(M1ffh z=xoOE;$sN`CYz?u)5$q6120&@2*Q#nmlBNZa>YfHlH?_hboG%AfIk0*8tFMO>9Esjjs6E^OU~(; z-*T~G+*;nu(-9@`E=DRVFnZ$;)H%=~io2@#PbQY&i_ug?1RACm78>bisTTQbs%0H^ zXs9~^?cchrA}GKUU|J^awLGl`q}2^dnD}aOvJ*diM{&BGpy2H7FmC}NOh99EBwnLv z^+uA^H6kPu!GR!d2xCPkM43+Em@%b;a5}yus2b)*bQR8JTc$H>v|Q*P|0Ggq;@DU& zDW}}XL_3P8Zk{4iT!Ij{{0h1`DjmH$)DC}AJ8ZyUMGRtGS3mQBn3lFyXUc=eys~VR z9-Bm#I#8BD4B?Zhds}g|APcBYMHkd_QIeCKiUvUjq*xOskwI2x5ov*`0CEVZW^a_s zGW4wlq=AzV7HtEN%E7Hy5T^=TKUjw7xqS+9h$vF-tc@ZSoJq0K$@r*q+~hQmkrbHQ z1t|zh;0RI;j`@GYke-4R(FnCQXL6yvKAv5W?f(DWQT7ZzRbL6d9VkHjKW@NrN3w+{ zXE)|%WVqwlNRTo5V4->&NDK{x`T?131OV{BtC&ZXC?T6;gUTM2{x<{0m*)Cf zpDr5*Cu#pJUIaaKRSt7qSWJe|D)KJCoP4w1PP^WVC&={Jmx|%OahqD2=e6@g=1nD& zSYhJB1O3)ltUc(b17a=T7oF)9=wvh^&ck0b=rINmnpLn12RDTciYQ9Ezc*sWor>;! zeJ!_T0-u@?{VU`QbFv1uEQk|Wat$=MZPV@LUfQ1g%dX?=@9rcP-YG56QezOQ9(EFj za)Q940bvy?A47)JtBB3c81S>z9l5R;E*R}GVgx!flmTobk)wbh-!6CllH+EuCqdo@ zQniAv^BLJCT$)2J3gs(AE+- zJeW#J)F}ew<+wDU?qIoCzTvkgUEpiz=TI`G(#q{62Il!7J|Svzgjx2R23K^FQd_&Z&V8ckF&B3I_Sb<3^ z(?;yq#3uv=mI9m%1tR0gV)~RmwcY5J=||nJ_)I14PEtM{y~wX}YvorCTJ}QYifgzR z28%mVmsYcCD(_x3_4a4&Q$3qh^tS8sO7L@AV#Q&w4pdVJF}-%V?Jm_}5!4N;q^P5y z+!S+)q@3z8=(>K8cTLEooT)JIG-inK0gpOG_hq7F`vFy#qp@D&fsQqiTKn4kQgK7R zEXi3j?9#2M0pS2oXB}>MS;XTqKY9CZ@1Nj$j(|5-MvEm%lvkoedijns-0S4pr>_jH zHj7BmKzB?3NO!{>XWDO8BBI_e-5ikPsKLFd2^{DJB)eEH+9KE;f<%JYTYhF>_-trn zb!B!pY^Y&D^$xs(Z6?E8TyWdRV*whKmlYUv7%>_2+oU)I!Ga>j#$YbcqSqzSJYXV} zFH?1)Gbw2Un)Nm#ec=z}Fr{~L+PFXA!Lu)ThjF8Qd2fWg?E0+NxVuJYdDtGP@n4$y` zLx~uhW(bV4D-=^DWoEvUQyD766zurBSekXqqgBy>I4PIb-R6RkOp=>V{Wi9hb0(_} zLr~e?bXe%}^;m|x5t9g1H!mH!Y{{Ce&lEH|9lUgyshFGOIuzoh$ymE-`z*$rRXSE- zHL|p&CgEC7b0bDhM6RK5h&1jqNqjWTcQUq*2@9RddgXTq{py_}ffJ3Mi%E8g9{8|jAquodW0hA8PnZ3w!*VjGfXac zF^y|;(QpfzQI#lLV5^J~F)xX`+rGb%t+CVcYl?YZ;c|1QXNDyHVA_8#Mg7UC9bf%^ zA^yexyZwAPtHiu)Q}&nP8lfME#Vr$5mK`6*&nak1g5!99*<2M%EuoG?7vX#VRX(rb zQDHl7SNz#s9@ncv^a_gp=clyn|CiJMHmSnsY^V5N?8g`M?>9Mq zI&o7UX~4UeAr-gs7=By#@9jDkcv^5_Q4E&UKI0g~b+Jqw3sdSU-jlM%Ad5d8F6xG} zucn4)(Whe1WtIGAxa>l|%SKOE)6K|dm?mTYS>q>y|q9~lKzn3?#yc}7gBh8xXIMWfNjl8=?GTD!hF z!l@t(40vv6I>LmP#fpL$PnQMVp-5Q}`6EhXVEO(8<_nFK zahH5`tyQx|B!qgUkyHjejTk>VC9hVG;JXFJcb_mAC5M!X#6<}LKs!y#qv&j zWu{$Y07f956#R3M5tIpkGx`=oBS!N4@0SvWp(P9mLRJ)Cv;{q_<`>?_qizKhox7MC zJf+k-w{^`!irmD;89NC1lv$dJHe14XnAShCGNhx-wi$W*$(V+vGbcID%LBz ze{D`kwP1Y{aTf(8J~uSiKMzGl61yj+-I#h%Uz#h6z7>KI$o+QDU|M;m-r~l=i#1Op zt%%9fx6oK;tqu#T*WN`yh4^r)_=R#R?<`svVGXZ>!<}l$u;~MVTUL7$@F{0t6x){^ zP@(BpM&$MD(eYSy3D;f5%P&7c#pp;H@|(8vQ$jCwF0s)Y(l{#PkniK>&t?0StQNGI z^J-d*_8o}DqFgsGFxtpNnR8QiMs#FUy4>hhro^rBc4Q_=p#VsH4X*A z1x8UeFe~7_Zni9mATZ8&9Al(eTm)g+&BE7V_VKc=yEDm)J*?p-Q5RL^S=#WlmNsoo z3i)$U!st0EY?O_{S7BSm#wK`#3N9N_RlJ3fL=k~i%EluI8yh=Ok)-wi3Y!ayl-3M& zu2n8}@n`Rv?-}0r#at!nC!J2=HL0*70v4{27!J_^Gp?z$_}!o2d**%o-y#u^MKDdR z1gHd4-LD8>m8ep}NVph+<=PxlZU^%phuc8}OU z`b;9DBAtH%m>v2R3CKuPP!yZ`Res_4`1r~09#`q;m{i``PtK)2qSR6Wy+{2KCc%IR@xPxGv?)nWf5suqLrQ^*&@iA^jjQ+Vpc6`utj|?D5Ak; z5kmOS@B1vw)jSLJ&YZ0F*eQsw*6rgNBWqU0m#xMZ9($>~eGYmNGD~<^!uYhv#G^|o zXfYk)V*yob{O%FO^*E~IgG>*gZhcM16HUQwrKiPk<7*cdiYTZcl%r|Kaf|nKxNTZB zqo(*+vm`pIdF))QXwkJsi~79=TZe<0zQ*C(a@DL<6*-^ZjIwPV?k*q3YY_}TuG}RR z{d{gRGQn2>Q9!Q0?3^wN*3nKqDT`9xsl-)?%p_Drif)qfT4a)qN^vN6zwEHdR1ofa zgRbs%U#0K4&K**l^&H1H`JP9-=SS>we^Suo@kx;yxrwjs*fAhwl4e;Pra+!@({yz& z<02f%69%6Jx7l@Mo?43Jr)>$i&aP2~D0D^p35pwD)q$(A=g+k>wYyWZzYQ`iRvIqV zFs1~wqVD>ecVKffSnsJ->)YZf_Yc-NPYZ8#wU&oM@2sk+HeA6bF81nCymwO{q}>SK zryv_44Jk-<_T!`25WskpQ4mzbI5y(W^Mfe@e*|%EQeuJkyVr%E5Z@>bidF=n=J0v# z@YqL2CcssGvjaRAA{oLMU5`U|2A5JFq|tXNo*GNeL5eW#+9nRw>Y$TIXDemB1$s_b zv1HA**9D5DTSa$=2g-Zk2x|CrKk)Kmn_XDiVv9N*J5gWqw3ko8z^gu11v942Q(VE` zTcNPF`fux|IBtUwtl|*QPs4MyNU}GqB~2-QSggi1yZHt!jxV#vp7_7%*k7 zsoUCXjOxk0Zjixw^^TTaFbxgSSk9rphqX82Jdw3sF77OQGB0l~nNh*hfvs*%DWRtQ>R^cFUE*V-A!P|Z*mp3X;@TMh;m zw*X@m`5@Z)dfgl>Vdxe&_~5cVEy&ZZ#{g?8%wutwT)nfOHL;~}Q)QCxwS>je0 z^V;>d=kBtnBLSzcxM{K2;LmYAWU?=3Z@AIzInmbh{o@J_6Uq6AORYVaJl9(q%evh5 z1Un68_2v;TZjbVD5J)7y?I!jK?5@>c7V;F(J7kTk@n^=jO!bpLMXkWgEbg@{ztq-U ztRLg4o@lUGFj%Zn1Y_xFP(}(cQGK#@lhj;=7$Ty2Yhow2rl$MO<3D+}Qg2aaPl=|^ zE74jis-E$$$!vCMsfr^IMOdmL&+)c9ln@{i2qc1LLKy7sZ!W?)ZG$akc;6NCb}O|- zyF7LJEVc(dg8yT&QJWX#(;6=?UFPApVgAUN>$?x?d?teMrXW7#IY#^Wp7;Azpur@+QZXwL zK@MMqKf{qlhyLk*1VM=72!33m1D4*U_FEfkZYwg~Nl}rUoBnwS03biuN+3`d4~S6#MB^m0==zKpSi{nJd`v8LZH!|N`?AFH z){1&WspB+QxI(3zQqz?1@!Mi%^qFV9&pi6A7@c*hqY<6^qiW=5=?rRX)q249$DC%aH^R)|51$F0w->_N1rDhcFVXnH6`&ys0Cv%@ND_!B={r%9?l zn&n(HM{^~?xD9kZ)>z}L&(GrXZBPWkSg^B7y$yw#J>*-?w3F|55@48+QDFMiPCb0E zuz;O}0qT#SK1zKvlFT1@_uuvPV znfF^w@E70rh%Fo63@6NL?_ZSl+27!?-qT<(dzN#ydwHO2rd-zYC(^3}aGcrF_6Tpa zu@d=(tUAZD?r>_3-aKOi;N_bUzwqK>=EDz(?rFpx{@p(gRa|EUxQV20G*WzQg|u7= zVaOc14h|yr*9%MMlYyY+e#BAb*7QBY;Xnqp@{$oGpCq^12QnWN#h+1HtWe(V*aHSzmP%5Xfs}0nMI)k?FZ_wa zDvzcI%IfT~38KD+EM@A{UY0(F7WPnEz&soiTbd1SI%?h6y>ptrTGB0;KolG6S5c>| zr~v)jic}~8K})IavynLP>8&8irlWLUB}tlW- zHP>IIdox$^hB$BQ-f32YBZi4O)+0GO(29c;{hGh0J6e_iU~n@?^^p_+cy~Bro^_hS zKO}Y#&Vz;))us-k>ncJic-nhN-W}xwXu*G&IOLiB6_PV?O9Jez(wAH1u|QGSm~2?s zQn5|FscZN)1i_yyOWM9?wuM%9F()!*G&GtMydh4$LpKGc8R^_T0B}aK*IIXO?^ly< z$=L>)>>Cqkuu#wPj^;)s&)34g9b%>KlP@Zg+N8*`)+yQ3yCfCZ2lC)UNXxe}Hojj? zO@8ZswSL{3=$93M;dCK3?zL)IeH$C^oEcoKy3vo!Q(4~Ozr}#p8`)A*w5LA)7?2s^ zQ!WlTvu|kOW4Aqh4ad(Niwn38K?~IaXwk&ZwZ^a+wS!+9=d!pJD?PQ!ez;0yv3rNhO6o`v!$m zz!DyH5A>Y|jmvBMIScx4cSaN&O7#|BE@c!rMeSg7eN09l~5qGvi!3tY^AE6 zgspBesGZ`VhqXoK^k2hdk^zK2iNV)zOB6x;OmVe-=Xbrv-mmKJHuxJ`9)&&o-ltZK zQ3VzVD#aJZT8OB~g9R9>A}kgth&_T}}iM{yoM|Ce_zZLe7gT?-_oL@%*dQ z=U>vbKbFwhzdy}nc9_c!t-nH*Mi1;YLwT0>ETaBhzp&4_cus`=FS*mf$f5Q3+c*c; zyZlv&v1=1;*TgCUZfRJ@aO9W}R23qE0ESBGg1S)OV_lB~Z5mt@HriXqaTB@R^!9w| z51*sBr<&^M+fW}9SSEHj;O|zXm9BB+?d$q`eIs zye%kOs&oo4VOm`@frm8i=VogqNl6=N2}012tW|yL zKqx?IQ3|F|)JVc8p@k)(Xr;3>nlh#{%nb$hg#O5ZlC)Tdf@L>Cc&f2r zE{FJuf`J#GJx(3*URa7}f6h=_kU$X|J%O(ju(+HU5JfdtV>x+6(W;3!kWsj@BhzP0 z_6MVe#ig0-SdhuPgkoCO+kHsEa(J=(eJ0?c1I8iEL<2}U!T?bOybpmYAHVn5PoQ** zq3B=fIL3hvAg_Kwa&lLnMBct3!e633@P3fVOI|kFEv4H|N$$1kwIiaL_IX(-1>*K4 zJ*zlkv3|+IP2RSE)U=1Cf^}2VzPfkKey6===e?~J5@S6 zOI%>~zC3H1ppjH!yuqXmXYYJ{UloWJQ27n;tNc%*&U=;@c-U-RoLTvsEY_aIA06b^ z^pvS~FV0hW)K#w{q;;hp(*30*F?arF=WsV|HD5J}T-CoEI3-vaYvtZFyBJo9B@o6i zIzD4jrHNu>u__&=&2zw=@o8~2x3FRe|8`M9fHg3H+@y~Kh7?-Vco+ZWJ@g(J2##ZeA!S{^wv zR=tygl#$(RrAFoY+-j6b0-TPX$dC>vK4RBK#~qU^c07-LDfo0OrMTi@Sf0{_K8{9I z4p|eciKsQ7$+b8pcI+QX9o=7>Gu z`=w_0O1UG{#=vos87h5m+hY9|R?cq~cPj~~t41<5^m*6OwLI;v$W~t#^3SU0BC3NL zpkclxD=4#sD_geQRvep->u$*PZ1)e)eU&J`Y_zh!K8Q`K0gx~cX{f_EiqLf7V#$~q zIVg97huRe*%ySwu8wmkLQ_$P%Wl`}AX52GyU7vfskw5^g3-DIyDD>-fWSQmDvQaYT zd#BQf77%KPD37gUmTVEKx{Ou2kX`g=X2U8LrX+XHXN~Q6}lWe)+ z&bSSl$2UB3O+;#O09Xki5Y@>5638H}RbWDroi3)iwn9iD%zQ@?lO`l6?XzRlS8`(O zJoiFAxmJ^>js6Osz;$Z1ZW(A=h2F2L0ecO&9V;#mYTkt%#-yVKz}sQhyKG}wA|WwH zA#C*&Z76hJg12#dXxDDUeIDKC%K0U>S=sMy_Nkq~la?;@?(1KViQvIic%_Jx`T);X z(8HXCeL<`Nnt}qy2O(_3WD7EvAwQRRdsKNk>J_QqJI_m8E|S+Lv>N zuJ@-|f;^W<)HA3cM}yTFvz3Jj?3AgKVA0*kFNqg!R#?R#6vvyWB4BmNLl!{K1wQc* zSzP$VY7ws_&|cj%ITy@mNF0k)Nx<;`9(}{e%i(6*oI$lR-2bAyNne}B!&D(;zbMbC zgq`H&Ljy?2M&Og?DB&cCw;|bPa&n5+CU_}rWJ=7zHxGuN6ijo+4}^%Uo=-g%0a*L; zKO(YdI!p{ICpRxc4RSQ-Hk;ugsyhTU_Kd}|E#0C*OW{qyb9l@|PTix94f%r@5huFZ zk~J*Ow~EeXd=;d{F)%7pW+KUsfmYDAH5P-rC0jEmXv#G1vE6^UnN0$+DNqvJ;CGd) z#x5h_dlra;i+6F_^QnKsdP^HcTu#U<|58p|D;Y7-FO{bk5)lb7SSwKkMkJD;iGMkS z7+E5mc%UZ&CPI4_R~JW}{rFHt^C&CEuzQg^PBg-pK0~h$^#tetdETFGMuf0+t~Gj9 zQAte@vsKNthIbvqXR2@gA~@o*UfZ{qXwmmWzxY!GT>f@1I)QCSm`3kMa0-KW~i>^QRwr?#sJQe&R!7nRtTEM1px7sQ$bC zrsX(N$M!pp=hyc!akKtE;Lm?^fj>)WaFQ9J$quhNlClz>LX(9TGy6pVA3<|Y}# zn9Zy)M+CZ*o%KOZ{fbMBXZM(1G+IEcO|p0W+HmyC6{7?o z32+slk0ro&psYv$fI@#owavQg}}lyxjs)@6@XX?fZLV!3ILcd1LTLxuOk^ej7yAY4-e85 zP(c7OK?t=bv{u6^Q;Bqk#qNaj3~X~c#iEF~gOLy+lA4k|hWY``Awu(6LoP7RN&!52 zDXxkXkeh-viVhsrN}6mN4|v8am#gYvF!^v`5iaqBczOkiRi3SNith7Rf;^Eqe^U+v zD7xwY(Ta4o0CY0^WXtq40QL1YL*6@O!ms~@9tO6!q*JkIh2v@E1 zOQBQ@*ibi9!GxYXs0}lhUsjw~Ux@FjO6Wy5nM?&<;HqiS&u`JN?Mbst7>1I-Y#u76JD+5(h%+a}u@vGMu%xsq z;6r&qjCT?iZy>}8QK7>);%-u_#=wt&s#!Q&>k?x92SF z70H_nck#T*o^wW&Pk{PaOwQoGXJn?A5PM|_1dj1FD@((HQV|G0s+r-0>6whHdF>)~>yfylGmeHAG3z(hZmi*ghTHlRm z&Z~oZWKH%mY(kC=QyXiAJ5AG&@s{=1n0{*bmP_NM3~X$cNE&v}Qujlw{hI)>WPQz= z-(di*y^hC}bNfwWyY8VMN`;vS2m#o!$96H6ns_X)a?n+|(m-vmTKUP5D_P$r;z$)V zsPh~gJ0_8Xn2XK8e+})9E(rp%GxGNsvDwbbnqPV~P9>V0>SC*+W#tvAKI46NZ*~(( z*DO|u=?>YX5IYsFIAw#T9d!?Ln|YqpZz!mX3LWWqG;o~;g?_IVBiC3#V6O$EJsLO~ zM{(7a?jixKDbdS|BXT2c<(-+rm>4sga+w}bC1!UO>N83;>pQa!E%gE3ye8#?bfwKs4(N5e zq^KMsj)r~moF)mOG2vE(vYV9-Nrx3Hd7{62g;42KfH3pH0vk1CI!!r)2&WkqL&OmP z09j$YM4}}4(Oxq|K*h1{Z3NZZtn5N?PmmF~bKQsMpIfVWm@3V$iB< zZ~gBBGwV84hMkVuHf zcyCzYKkHm+>Aepa6rp1e4i?VYx>T_QegG^U(_s31MTZNlM7iH*i6LsMQI)tCs54!8 zqtJkG8@zo>(AC$B0_XYRlh{EcbwG8)luu6|az}IVuK=@RJ`Q%~Pz>o@#sw@2mbGpyB*XtgK zp}U@^bE)&U)Z*#83ii0j09@_6=dd>(@>bEoq=IC^V5 zbCZ&>NH=%hccWd?1F}ovyQli)S0@Ff*h2hPw7tzn!ll6;^sBzx_+B`1KY(uPj%687 zKy@}&RfYa27N4M+Wu0j!>rXsi_gR2)$z+x%+up8;Y0UGp#P_kf-0ar+Sy6Jyw%WQs zcvqAkA#ugI$2atIka$N%Yp?yao!%tVG2A&>hSmPHUMY3gQP8#dX6hQ;rroH*QK zb^>$vz>1^~$cKbEzpaRq*VZH-@htM7%S>Elz^h}JZWNI)WIHApaCZ0=nC&8^ zwm>1^DWYi|@%SUY1~}!9@U^~wljZU5RyjVW@bPmV?oGTHwPUH2CAddKefn&_#%VvM zbF$Ek8=pZF0x%E}$h1V`S*?~>K|oMb?3qzj5sZHKah~ry)l=5D+&1Q84%$=rU#w?~ z{;crLN?+mCy0Ybrn(ES2iv8uIa_jQ@tm+_tH-U9iQ$2*nHZi9gIhD|vqHeGCd))KM zIu;aBf7NN^n-ttNQQEZy6&Ri^EIT{I#aN6}EjXWG%$10X5mPj#i$xfHI}f*Tbe5_k zJ8gb8L6#2l7$WkEDSmDOle0-@du4|) zmFC%2a_!zFU!dHdA%evJPBDYCy+2sfgT61&be~q#Q@QH#h@yE5Q)1pL!NFpTQHrq) z>94`#cB<_?eCm@b^g2)Jv7*F0`TKl`6dAeDJxHI8A845O1Vck769OJXJpxE^dDUHF zjax5ChxZ+;3#z@$$cw}TM}#FT=SrlQ-YWqW``<}@$Kqyojza31{xi_8rRel&ShHy= zGw^LxPFvzs=1NE9A;53et-~6W5Itql(qy)FULWK271B;Z$i(z*JS<$?IgSm~uXIoj z=uQHFfcIU(CVdV~$cI=?OOlO;b!AaXlPymj4&%0B(I5_Qa#H>SWA)wkdH8Om~`dUk0p4#>If;{5aB#BAZ7-8VCy@F1zVD#tug~}N;rp-N(-Q$^!fZidOygqE z<}{7%$(>9kd|zu5`n>Zv`g>NSd>6kvA4d`WQ(fxSNpiL-%t-@C()Rqpw|pUf+%3(G ztb&cBzNolPvuyxlD9S$jfdjaruhb}voE?%1CLj&AIiH2%{u0%xD<6h(UCm9Ve9AAZ z7CKuT08dP{PkfSs2J+Bp9?x^2`!oWO3?qa2tEh1J%5Kw-i8pq&(RplAHC84L(7-5y zV?RA@^`^Y^O9Yp1TsTIyYmrA1gpuktB1EDPi29O(A4@R~@wL=iXs@zGLeIKf^`0Bf@kvtq36z|}iiE7DXs)V9v)IUUVJR~4 zSkt`f=Dr3N3w9c|;oI4Rl4>CX-w3Xr==@E%Oi_XYuXL!urh|q>oZqk)k1~J>Hpca7 zkTkBQi*o^}5EVFkG@_Hitin%2yWd%C)lBWouU@S=m&-hrU%Ag+>+z!^+g%3+8o%^XS)mA4JUdVo+`5metUrI8|1-Ve1cR9sgxs zPNaRN)g?uytCcZ;#wX}WC(FN6Y>j%3XF7XZM~Fl~pwr*_f#WE;zQw@~aUw$p*H*&=5H$s=4kj1^XPC$E3W7u13hrM{&= zvf7@-A0@aBaFcg*(Yv%@S^gRAt9;E9rmlzV_D=9Sg=hm#Az~3Vl68yj&neY%%mC@2 z6N!uV(FYdn(v&BF7!8<3h9C)1F{3Tw-~v2?4i5gtv^NQ|$BuJ-;={1&!>u_xp#Lt7 zAxe5K#XMADCHR9R>1mWu9qdrgH%q@SXr5;!-Um;qG{^Zu;mx&1c*&Yewfp>RYbHHda5GmpVA^|SHui2?8tkj zq|z9I8-6C)6ItCkDUt;x|4XBPWl1<7pEha?txsMP$-)5Kak}f@`6?sb_?brB18BB! zcukJ|p9k?$J{*n#7Dd@;weL^`eA*W|BGC`>Kw=Bv3JEKLS(WdNiry}BWrO^c&FtS^ z8ewy6O6~H-afB|e@t5!Jpp$wt4_r5%~8w} zkM%cV?j(Y$8Z$PMZ>{26mv;cl7pUdwRl=&K&QyH_>BT)y?>C!v1E;vdcn*rK?0 z8yZ2AU#yoa%Sb?r3S+ukMmv52&aBZzJ_Mm}dfzoY{i7NQyjn%^6xHK+%8FshPb1$m^nl(?NSpYUd-Fd0FrnD*< z0i03AIvG=#(Y*@bDdqXqF}NP-3Mjebe(&*P!NQjvmqq$Rmv}j^gw0*69?At(QAxDr za%Zhbj+fD_jA7h;2+uWeS%i|Jp7c+F{qMXq8!Gq%P@Q)rUn55ob%nob&bjej)kaeXX<#iXe)Ds6IE% z(R|)7T$!xkc-?Fs;rKc#dK9mQpWW14wqIA$`F?|;@g8f*j()D&zS=g9%S&;zf6Umw zh65SXS_T1$AOiye$7kAHtTdza5eMgy2#?PYARSSVwZ}wEdRv_ByYh}Ly-wi;R(Br@ zlkV}BIJO{e@!LKsD7%fN^N}8PbHw_+d|l!`!crsRuffW$8w;!XgO*OJ&+#TtHz-2q z*3OwU@x+bf?5D4v*x%1{*4r;(-juMqvlyScqIMNfA(LRcMdzKSi=4|X5tpq6dwXwr zzeR*B*zg~*BhT245QHytF7Dk)izQborrtiP#9zYC!(p1xY;tYyY~N{N39=-f_n|?6 z>^X;r3qbcnP3T8MvzCF22UiwHASbxB=v2!yp7uTukMg@ulsSjjP3JC@^Ntk`Ht>Np z&a^7RcN&cuLv>IfD6#FT4`3k}#lIlHiUbS&<87tfbe_N$tvb@jg(7uo9N#+gxSuoT zu5i?x-SQ`T?P3D=D524QZ-Exg$F((2kU@g23J`Vc%C*J46>DBHnjoJv7O3`V#O;@G zP5GVe*{M-@Ry8sjwWL(H)A4NG6Q%@8z4#jWtMoGR;+aiWUfL$s-|KnF}WGE0nnclDph zZuX09whc;m#a}D)`}JS*-UhcGoAws(PpNc7$bdpOYm^{n;|l534ALoYtW>hfcDAtP zNLf?=&9eO)wJfOu7bFgBC*8-xlj&P2!&qhvKNRNY zx7U(97guUS9|P*I3g9Dyu0}Ft?@F{X)X~VD`tJ0|n)x==HYEwi)jYpY1r!w|S)6C!L09a zS&I%8m5gK3TLBW%4So~tDcS{^w{eJBS2>rQ^09=e=@#v04YS*96u8Tisavbig}e&_ zgL<>DN>31i(V6Km%`1G0n~~Ag)?CjJ{#ob6)WA6Oz?NndnADa3ruCuEli34 zzaKjh^V~bs)=`iP%#92Igk9z@DYAF#C@3^&R=8FKRKt{gKPDKLR-DZ6q2o_dX&ZCJ z-J+||Ed;j3?r&KLX=8tvZ>{IcrifXp89S|*)iZo9m}CT|MxpUnN-{>PUMA(wBM)eN zOfIUNP(59|Xx;cMBZ-^Bzg)2G;9NC#gl45>|-?j;&quM%n@AB}h9A^I7Q5ZF4y zAnKygtIqCEd*4HOE~cNHKQZnJXwKInSZ|B`1TV_1;a?X{Fh#qX>8@H#HR^uTGj!QT z_H=iRk1!BGTL&9BAQJ-K#ek~*GYYJ;h&-f{Ds%(rC80#$GVX=R=w|-mJSfua5F=I_ zMwK}J5)m>w0hS*bdE5@37M9BXt7U*^C;E8h$x`e`efpfvZ#g+{Z<`;wALz3StNkg+ zX=0ETMT#x38o%s}99ZM&_SN{Yn~f5fgCU&?FgqY-YW{WT*xSCq2P(*%L|?P(upfA> zx1>jzGGvyGD4L$O@;KS4%Lfs0D}-#%`8y?Hb~w52iS`K z@gkH&SNp#k_Y{zkzlh4xwEgQ;^-@|q*awNfO96=w`kvxQQ8K4LNdKVj5B+Zbg-(Y@ zaZHvHUGdnF5J%t5VQB?jdHF)oS)EJo7O=th(<(mioav%yZ(t*vCZ{a3R%XWDCo#`Z%`Di1^^%{39sH` z7YRky(gX122!@rTIQyg2N?H*lgV;bHC-IB%?%k^~hu5|FK#q1hjSI#ito8TOZE|H% z-CI8$D5$Yn<~KJCScoQ@P-jWh|0Xi)G+^;AOR+$&GST&ZhXxcsll@e}A`KD|=ZJ(l zCkGc(rDl5BA#tgaI%oM%%@nky7Yu52^5aROqHuDJzIxIyN?Kxa%RlY^>Z1`55D$_w?DD1iD^P_$ zhBE~V6$m=U5NM){HyG$CK_xV7USY2JI4N=P2puI!1|VTM8*1c?0lrMPog{|Ke4+2& zkoA5H*Lo`om`F$OEzz$UWm{C)1Lm~6q>`>(Q)c@VB_q1fWKW;mIcPlR=!mfu^dvWD zOwt5z9YG(bD!>m07!!uq^wspHmYgEBOt>q_@vJNJqmUtY6n!s{s#W)R!ezR}d6 zSPmntv|S0!F=cezAg!q9{}u&w^$@l>u*$s$$KNm@dSkj%1VHA$yhlSKya#1 zfL?A&B2gqF5SrVlPQ7>15vIDBwYJbj=>m||*=Ovc(WOfr4}+1LmY+VpFRbNz67)|w zx9&L}w=-A|UdgST*2LE@OmI~kNUa8&Iu)}FSS&2Aj)caa7`W23_^vL;gdKffH@in| zzpn%>30!j1_T)U3rQQyLa;>+fb%UH0Uxhen06+jAR!o}^2%Si5`8Xy)i6~PKc=;8W zsb`}|xrh;HB>@G{zBNHDB6yU;fk4bQi(-xxJH%D)p4-~&xzkt{YD?pX;ikgSrrM9w z)4P1uIgAioMSb%;n-+{5h`xEMJSVQ%O^pmoS{A{~;@n3ynsd5^xeC^PkaOQ;@_n z8E|K6uEQ1D8>{{to)0WUGr211`psNv9Nw2=(fES%kOm~aE)I3;ScK?jc|dn6Sn4pU zi9!o751uMPYctN75;1*j?F5G11ue1Z-j5m-S%Q$kEhMKkm;=@|yytN$3-yqdCN?JS z*7~B~-ootC&F!*A7zeW5=5yd1G^faEv|uI)5F`Lk^rhfFNemsWJZ?Q63Mj07g)h9Y z@*Jy`YBMi;=3ADaz;7{u6WWl%9%IfpLUe`D5+m2MQPJxPPGR@S^;z3t!Lt{>z0hdu zr}WtykR6kdff)?1!P1t*6hD6tj)Z!s_kHni-thZHxL}t)wthA_Kev)N9JDPx^A|A; z$ucCfG0LH6WJ9Uq?>Z3<95>-BvS@-y`r9&fOX!ZyTj$b{u4)5S4LM~931 zMiB=@RfFy>f+j!7Sq-ubZ7gJdhxQfMrP$~#v90AbXl^xcy}I}by^dTeWSOD9#UxQl zqTlq|9W2A}YjgX*fIS@ltF-*zV{_P5&Ffsz`#M|hs{-3w4;2_SC>97OBc6uv9- z`rRdd!$J5CSy;c7N+PlBnN8;78u!NF&N1cQ6OYDAH;wc(_eRY;k4;IU3Mig>lvPAm ziq(VaE-@@rQ9XUEit9INhjhVuo)fVkW}bdQ5WnyO292Z^jBIGb8@cSXp>ouLRikHNsGwZ+HV8Mr=sE^?dw31wIF))tWdWp z$%;nV6yO!MrCVnTeaU!yStS853PEbWb9cYsp!7~@AWhpBtv%}F#AhJZ!syT4ioM;A zc^-N!)xB2254@e~3#Fm6ho`a*s)K)dVo-b6IAh$Z6Kh*-nBt;kUY?377Gt^W;wynw z?BQz5zWPjdWcQ3m?Hx`F7kz^Xh1<`s5V2V~clUf}>{ackYhfF$*qUI)q*B&h7=r{M zpK2<|07;AJ3SXxBn{1(>yolI6aLewh+r6LNDotl8WZ}9YF!%JJ%?h2!OadYL@H;v* zC)iMPe0GZ4t*~)yq}RVcyh;aOsL8`+-BJO^DyWZL0P~9&w#nR9(|fiQjZ9A*L6u|n ztDu}iSVDJK^tc~Z8Zli=~ZC}`hNn@o^=O{Eh6`Eq=7aK^|euVNUK(j|Cxx+A!nXXG| zGhpe*W14V;TG3xYuI<)z?hU3f)lCNkk}dk9Wr=mm@eQHZy4#kK3@q*}n4(Zh2~hDW zg<`3Nl}rf*s@>vm4k;(MuPl! zu3r^FQs6Nl2>ua(F6V5)@f^Rdd@JKrB^}3Q(ZAY-Mmra8O-_X>v@SrcS4|1tP`2wz z&rfSy;0@E(RRD-3D*RlXi2@2b%vA)D@%6;!zbbao#fezX9I9oCXjq07ZZ`S1=p_gUB~`L)oGrVO|~orPt{5b#@d{ zt7SCbBfK|mz=A;_7!p)Y#D<-v|H+Cw;uHw%HeMBii`TnXYmeGg%}l5d(PpeNIm;(~ zO*2_*pfbmXZLg}Ir+{|-D=L~>=qQUjf58!0-}E0nk+O@v+WY!> zQEK7s{HjBJU$-WKJUoTuT3c#t##^lHa%Kr0*uvBZBnBIVEn|K6t>t~6Cx5l%uXGvk zsP;x99Dzmie1YPsesJit#0^2|I6|vI?-)JpNOiBc1s@T5J#UYrrT9>bMK|Omhn&wJ zKza-OB}@hVH|A!FM`ke40iYUvc69Ap-UtMq6X}EOTHobNH z7bEIvRw8{}lvG7$>!4AB{%7&ohdO?HkFew5|K3-%YP0H}dx|XgdY2he@C#2P>23sg zJWO0~@pL4w4V)z5`kH30w#K$HWlo`n2=CIcUf0W9aoR-{NTU5atnvNcaHmqN4oI{o-I=iIjJr%Z?UR01y#oM>nRHK3KX1BBzXaSS2O% znnTqj0!&1o+g*67G=i&9u}sS}@XEg}f`&*b&KAxX6$wXT4)<~VeYXOWWh-MF&phD2 z5Yvc34$yMCW+>Gp5J;W>3f2rfdp-Ux`l`gp!|@Qgaq_(5d*DxR*kbP-W?T1F9YjaV zc0;5-F#cq5R)U{@^6pOhsk!9XtlP@fWr2*U`=0XFp6ID$V z`g?4G$EC&1S)5fD&Q$VcmFs~6vS(y0(FRM*NHaWTuOhkSKnoi}b4x)_()m%MHR!YY zY%=SRjPn=cV)hp?*HYrIj=f$;=L!cQ^}X@g8NWC4zBMC(tX%J}NQjh{<~HvAa|IPD zVLNl8Rw%$5nFwZurM(&MyoX%Jx2Chv%`$2QZO0M)<^39+tg2jaHSjb&h8db(977DF zc!}+(ZGt14O5Qltbqi6--*MtADi(7B1$JmKToA_9W-epBs+a_IUqqgfA0bPj4*O|2 zWwOrhl_y8arC3Vb_2@X?*eyZ|2yPDO+*O?RTTE@nQ%u22x?H~pOB&F_$Gsxt4HFi` zFw}6&I|vJ7UGCUjb!E+iiNfQv!3nD~~8#3<(TgRV+-jwEQ|*Pg&k zzdY@_vTw+$N0C|uo=HprCk82xu;D-%ZG#J_HyXB#K!cBx(b&Vpf>DDn03SM=ok>*t zhRUmG%DZ%M6%ICz{jFlgi=}lnij}r;Y__&>Q82WV1uf~BXeQv~o|suz8Qoa)J<#T_ z`lE%ME0u9rD{AGBJ3^NI@#rF)?h^D{Ya}!r@4dL(h?(aK5P(2LY)clx(df0KQF zb?q7FI#+3(ky0^$KpNX!mVqN!x2jgL`C^oYyyLF?Ciqd@!-PHYsQx527$!V+4g4D)*bwx6H|6Y)9wLR#mMgj^SXA-_aDWvl*|-j zD;5eWj6oBxwO`n$)V^~gsOYjhvyy(Tq7ime_^?#*$*9Z;tBu|}M?Sd%uEJFZDilYn zdn{CU+-rm~O7(3;Q(A#j{J!Snb4n;CbgMmmIyM-K+0)rxf zCkA3<1;io6%*_>ZY2TY{mZVrjp2WhTOGeUOyWmiuvE(0Kw1lr;qQ3@Zhp?2qj)Kb( zRU9tP;sZy@&)YN(oyRZ^c$6*Y0bQYH89Jv;X5H7>dpPmP$u*IkYh`KS zszAcV=pvH?>g&?1>`m>QKqk7&+2K=vUy!D^?yf&7CEkW(N+fwQMP6lZdX2T|@)(Mm zTNPn!+o}`ldcTvkD;=|&;Oj!l=5IMpVKI{!d=hG9+r5<`X>erCT=(YV5CF3hwyVsO z!VC&FoRSSoS>Y0Uz*;3(Qo)~s2MqYSp*GbZ47!{C zZl@(c3!8fQ;2e7;(C4QiO6!n#Psof%Bqe34ATc1(Jh`euoYa+(1O~~K4Wqr*>BaBB z@NOn(ppZH4zkR~%s;e<|O2%Ez`%R8cIxZRP6(@Qa1|gE;=5~yTqD_m+gW2LzsP)t^ zW0#&Sn0GR0#G3uC0=5Vp>l)UBtAi+o2irC=>{=?rai+{@Yfpj1voTy^%8wq!r72f* zTi&cuf!*FZ(JWjW*L9t0Qt#@^Lj6hQo%e}@VqM1o-Ip#0VtTXvE3E3Nk8*hZSkEdG z2+_;A2^jK*akiqqE{msJtXs}234za|j{eRM)o~mj5gncaec4(4l1m}QQ1Nu|%&==42( z%ZYuTC&&C=rvFk$E;?>Y-w`tpJctgGN(0I3JsWQi8SEEdp65|uZ1?VRVF-@sykv43?r0pUOR^|%YbDSzbsVv3Z2wgZ{7IAhUmkrcBDHg z%RMZG*}b-=ehW+~YsEO*Qsq2(wv?|1!mO?$+6zIPT>AEM;ZM6kcKR~_Y>&CuoAVt( z1byvdkS@7YTP!4t3_`t|`M9V^Dj*7p2wTO0NH~<_e8!&(#)tIXe^SW595Aw#XnYK_=`nIF?cAZqwu>#!ZFFeF zAInuMOHbC>Kxqo~#Iuu}*czW~MslidS{bSi2RV|f zLISx+fuu;P#m@mXRM1oB*DXv#aOi!&WT=Kps+79Squ%qLV;X@&Hdwe3GPquv z0_1dWbJ*R**xYwD{5Wzsa;ZieMvpycdJQ2v^ZC0u^^>o@sesWrcuMJINlbc58;DD& zLL^nq6oOWmKK5m)3goG3lsZ0!9TrZA*+}U|gM`{z{~365))~0O=Cw_G8Ch0jRl1X9 z^h6JWit1Q?;b1}O_D%ZVwHDvnP-%}I-&y?sOlRjjj;^aB#b=VyaIskoyx$+qdu+eP z>*+kE*0F(1W5{Kd@&44M7#TK&*Xg>Y1$~58G2V{cjr*1;xVc+rlcs(XGWsuiJn5l1 z0RXp}B^}BzpqYXKeFnY^&WQK&i0MZ^j80~_IUYM{>ygXuF8j?Ju5VP?kN>V_$c4?sN6)g z`}rt?-e(|-`CO)j2j1)T62v0!@&-y6NJwo;Ff}e`RXHE4mDN(?SuM8Ojcm{4l}$Qk zI!#U(vi{%xTai-4ysj=W~~Vp#8@koyow8Z!J#1=_!uou+Y_2AK|}#;ZA~v$1^M{_s@cu z5j*Bo*&U6Ofa|>?NWizOjg|%-tDV>VHia9m9Y3bZ&?-?6qELBV^oI8aN`Ki9fZQes z(DF9(hIAyU_&&^z>QiDx_U%~SX)%6PwuE~T% zL;Y#JV)%V_9e9S}G~7P&$UzmXf;4 zX36u6N}$<>#&p*jxH08kv`z7?CJWPB1RGe~ysD1#wG^y0Ad99@`2J~a2uqNu#H@@c6(tsUA$jX`@8V(|GMWaNaL*q5 zhJasD7eXE-L64fIOAWX#ghhM^`i6`1y$nmR0LY#^x#NOVtxuhl#9`_V(SY4*i zI|^TsVRGysgJP)j&ppg@@AHTf;BBNHdxvNWEm47=7<1B+A;3dPM#8nGe2~0(4dz|k z@5X-`kH{NSU7>oJsbwy9)AzJ;bau6;UBl7YJco7LaNs*Ck9t^v=`sTeaC_ntvY@O> zN_Bp(8wr;GSFFZHR;=T)$H{e6ofb#YEI|X*(U<0EN>BuY-pdm>Add08Z9eZew|_D{ z<-Iu8EP((V_uY&B%A{BidOv7G4qawXM8Y058bMD#SwsnbCDK3sS-}_x-K8drX_Yuk zf|2m%#r;5{pT)2Au3Fluqv*oEi6;%bAl>V$9v|0H^6=MgCm}5~t^Rs!d1u#!Fu;xq<*?cZ(ZgxhF=(@gLlJwjOl+U+?Hjr*U$q0x5Nnyb|z@Y4h4E%&T9PmD~Mvx)wEd2cV>eRt^nPK{7l z`RWyd{r!{}#D0>NDvHHqMHOUU=4%m(3LK4lFd?wRs#>}#2EHA7{%*0 z?g3PH$x)2r+Mw+;LuJ1@-}b-p#rN;&xKU09wlJz9iT~Eb`c%I{-_-j29DQug6Qe&9 zf{B46vR!KrE`-k6!3Waj5aW5VY-?u9q>L@7X)~69aucDh`Blmy!)}LTps$w3kgE0^ zxQK!b2w`cO1Ts37{p($hSH$0Enu>{?veKsBDB$<{*IQ@4->2kSQD@(L5ELtMIV&E%}Vv0jpmn=HJDGO2|~*+9;^GGA^R#!d%M|34UpU@PmTGr6)*!56E}i zTYV)#S0B#x%;cg^i}F4*6eq zD^X|Z+RnDmV62ELxk5&0+fV0isY!|fTJujFG7Q2>8Yu)pL0mxNOw=IpiAJ$^5m+;!t^5NN|dVu`;F|Xf3N^y=y7v$HQad;bUd! z@6!W#Cw4ReRW?-@1rx<|>W(#BQ53CLTfCK3pQ|>sPVh#u=`YRT=T+nc+lI)#ztoZ^TY8+DPh*7xS= zUxdNW-pkTEa0%(MY&m97_{}+ZOo6SZuGmdBUE-akj~RoV9Q_Ebx>&)`&%K>D1aD3c z-1=MVSbAWGCyIN7j#7EvV>)i1s`%o@wa{54S{ZuAKzJ`f7eM14E7K#C@}QaZT8d*k z-y;A-07QEeJMdLNn~76xMBlW4=C9Xn)N7thMTVjU(gZOOI{B!4B13V#)ZAqcEX|bu zREM-@gogh+JWB{4PRLAp?R~u7`ni<=o>6)NoS%Uu0B}G=00FSU*y(iXk6R#R8&iBE zLkE^JWypp9E;{?VjiO6|;bZu8vO(UX-B1xXi0gqLJ2Qek^fOg=KY;_ipP0FKQ!Bvs z^>F92_kG`Ch3;M#7o4c!_V|@iP*)#K_gQkY4l_A_fg$I5&##&Say84oIjmdwV-n4p2OBwRpBT8z(|eH5SH0hm`G$1+9c`{E{>X*cAKA~Xa&x^JM^DxpX9!*Ii6K88x?I@0!No1T+CV6 z(Ac`5;_b!|Tl6-R<}lbGZQ(lWqgsS?rLM{c*WCC0ke2_Rbt_)(@nT91 z_S(S5f6P&WjygMurdx{|CT*_euU3g$#b$l=PX!?_3IOJD)P;QFsL#MN zmQ45iLl%Nt>L_a9A-K)`?#TYvvqkU2DpiAd-FfjGezs>})0K*nq|IL^ILJR2u_qm{ z5Hbu@G>EaSML|RnimVih2*rvbDEK?y6OHf2^gS;i_#f@nyB}lrJ6$GH^u0beUJWz6 zn~XUA%)Q1{1Wt*SihW8^UrTI3iXtNJxK23VV{;jgb!HdXSX3Az6$N;dzii5)fT|+I z9qLv)npmi(tF?UsRF37U?P$g)O?pORA`1P*ul+5X?~#u2`I*$71(tP5DkMet-wPWo zGKr?sLk>Oy@ocE`)9CkiF3tK}LZF{A-kBkVDc+Se0kLwBm9kZi~pY1t464^K7AZeAQ%~ zGzn+;f#*A=&MhAz>80W~QKnSRT9j%o=^DM%Qm6X<`rQcu_IZ7^UIkDMkuM7`mYMI} zK+@U7C=l~>i2OX~(YRN%*vaUdmX=3n%{o_>SL-_uA?5_~yTd_Bo zvFdQx;jlLo5)c$^!_Jyfm=1FgMd!88(5Fg?$qW23dDR=^k0|c#)VVVyRePLhV^{{h zB1w>T6mrhJ1+5o}si?+0qu)6s5b3h9Y=3w?~-xO(M zK6E>P%*?cwrdZ+(2p%rAjtnyBqU$B%XBV|rqo{iN=07JHvyE{8)ZL5{AP;$lv>o8$ z+{V@{TMVAFVRoDv&%8CXU=7Vb(T8!hg`%7`FL9@+BtiQQ=Tmpma50Te--D@R$H7!$ zuwS70FQ}%|Hw@6T(^>))#5jNgAbB-B%QeSA`F~9ndO;|U^`zsvIs`yEv8*0bA2q4p zkwbQZynT`o9i=nlz@g)#xVR%D{1U%y+%G8Q_+>aNGl+PIhea%M#fS!QA*DUPdEZ){ z6sn@B0FmoEBp>I|C=VtqMTdMxX!-Q;4Bav7!tH&AU2gPRu+fCKMFTh}1HiwI_1ogxZGEr% z`%wQ)h+Sf}4^h{B>81s7n7C{;{;3MHpMEDNWByLd9q+-PEN})3pMV%%HX6kTsIT?R z^K-PBr0eXu+hJwdY2O;5weVeDZ+n?UDc+w8;aNsskD{vNyINTGE2Wz;sSJ$i|9!x? z%UD&;>RDo&_w;=!V-L%eG0*$-)G8n_L}^~e$Mwv3GFk=BxQK$H9NKPt46{M5sR3{M zF8yh*Di&^IZyf2*6pt}2^dH5rULOcs-4n7iQB^l~xLG?Oop!1_55Hzw-WbEYLw5{$Huc$W>YPFVyZd;%31?LvF&X z+@}Ey2r-cdAN{&=tX2vRjus3bp4EyzKFWW_)bP@7-*TM`p4FnNF+7w1)WQsUs#Eo? zf{H8OwMKjDU*f&)KGPDL|JlX|4IgE#Of%Yjjz6)>N4Vf)A?lK%Gk;H|#l@p~7Z|pK z>#2NwybFCoc38h|m3LR_IULMvXiGokPMa*IAk?u}-BMxYbshFHQ{Y+(3i(98s+ZbX zem?`U@OzEll<>IzXEKB77T$xm+U68ajogfLMjlJDgWqGFPH zJ6D>)1PtBG*T?wot|Wv)kJX#syn+MbKvZY_U1d)&vI0?1N%F+vMuh@E5i`X%7wS~M z&uzsQkf5)%&&BT@eP=@-&zio{UQjA^caM=t*F2;fgUmRDoUN9hp`gK);)YQTuAy{% z&7#&knQAZv6c+H%;ZkbC$-~KBXxf(d*SAo3vM}RG8{(s<`S2l1kq1d*ImPspz7>S> zp{nj6G=Mc=K&YU&0)oYd064ak3Cc@uT(93K3d>T6@TlUn?6RY%eOI)o0%seIhrNNz^MO#`2-rG77adu>76Ya~s+KgVnvE_lhE-LaG-**||sj%e6 zo_>Tn_!_OE1lVYSf>%rzpI@&Qe081?tlJ%m-0Cd7E&_`lhcMo=u8qDnNitr7PFG0z z*O&QNcDhKr^R2fe&EDv)ag@tb2akV*$%hN;Y=ccBMhR)K5@o!!XIK^Ek~|Rth@2uh z8Okz&QFi7*lJ|h*9Q~Ym1_rwM6@5rp3JrEL7NPsEi$Ug9Y~H z^q<-9Zq<9zu;Z5E!SEYE9YxhFRkLQU?aS4ZJP_Vy1{lhs98_T(XhMpLDk)0^i^D57 zaQBg&e2r534&=A+E?tGC@~XOFfxDAASXEl&$#f!lOs+R(I@W^}@K*Ow`eiFGRPR$X zCU#p(9W_zr(7S6EWuTFSXHke1{sEqc_2koTrCpY1EqL#me{(yqttH>MO%|xfZsmYG#YHTo;UP4N{b?aSB(8qi3lP-M4{jLU9CqAKUeCvpJ|@&x3A29 zXZn9{=jwbNi#2Y)`dy+K3_0wbD-I(&FF9ej>1>5yu~tn)f{4LHRt#AehR|ZH-%^O9 z6j&&tMj(QMYcf_MK?PNUEL2q$6pT?tQHaJUq9`h{7n+iZnnvknAJ@Czz6OV`{{P{-;@E_iKO@vN=>$x_Rlv9vlYM9-8SJdF4PCvgW#bZ} z!35T(svGAn1)-_2gSK)P-dZWow8FZ-2HceGM4(&pw7V69AWq5?kjx-w4i1iw5d*<8 zV`Z#(X6aWKQZtj->j{{QeDdwQa zx!dk+(cY)g)iyaIt&UscSvD_PxP@#gZm)?G$0y2gufnxRz<+F@Frh%=9?CxI2Afq% z{;v-2u=WWegtO`!iY&@hu5%FCaTp%5Qj3EwcoT2(imCxhZDug$ErE~j*)rlnDG@l}dS`O#n5xU|4JCXiH{YWKPqajuOADrdqptJ0-G8$=A%Aj36}+{DagI0JC!7&3le_nv;Y94l}#q7-;7IuYwIu-&lk0<<|?Tb z0+v9ldnY4)0j??nKa!;mFld~T{o7@uYmCre))UB2<&DyjPf?6e|T!b z7(@}Jd~+h_E>@43W$UoUm6Q)?yECc*e{At=Eq>L!YlGg?U>|+Mn@guj|Z}i(6myCDqq!NUjGuAMh zWf-4u;wyNb@(IwV;mN~7LhhqE+ui>r^jr_u+UYra?7A3qNIYt8v31bG7Akx8eX<8u z!$T4#kq!eP%w)(1G`WfNn3zR4nHz@!2(zkl;p7^QTN?PlsPZ!RdfA3zp^(_aMy@6x zv+$Z~GLv%3rgn(Qxe}V(jA4Q?Gpi`TMHr#Cq9PR=YYS+Iw4!ww!eO+nD{OY! zF-3?fVJj43gR$3KA|sWf1W{3BV4%TNSh0y1q9O`06o{;C3b0YsN-3_XN;^+Vft8U8XN{ttfheX3pX?nNjgA7_IEj)oYVD$8pOgQfG1*B8n_VXUdF?7g8xJ&|5B{#M`BKpYiOQ_uN}h3hqO=CYLJ(y80rVv8zn z96d95R(Bm&GdSnP#*Yzvb}5E?bi#@!S4uv&`8RxyhjHR`!j6Fmmi7e^&HG>EZYhbO zA+J&ai1lU(D>gZumWJB*rE5s?x^Q#3dpr(*li_4d*s&PLu1Q5=3^)CUCwtNFbm2qAEZdsXBH441H6lBsYs>8{v0A|e38icSv=bmwlprmZFni(GBPoUOAkQln1p z*F5lc9ir#YT+(o^AS->vzef_j8ykP?wvf~r4%MRtjzm}KT1&Nk1G_s7qQhUNfcT?g zTq_ha-j;}m>H5Ws;I;mw*x#cD+M$pD+x0O@jUmc22uwEfQuIjMsC@JnyC~mpG4yq; zoz0JWugWWIpe3iW!28qh4!(U%F%WLebofMpmY;fKoKRvA9hABk_7I)8b2@S{srD>E zH2Eu4y2wEBi&_K`ZDqam-w7p);TfT!C2|aA4A*`j<#CNwl>pYkb@Vv(+n6ETmG++h zvQ;WKGwhvNn3FB)buo836RerIkFcCm&#-{p_u5iGXMPnJ&6~w?Ff^G|n(Dyds+D>^nk&A*2NLJ{a^V49t)kt6J382(o+E?0NPMx6? z#)*LrwZy|j3?OD0ncEBtmUq|)-n3P4ebmeviRoUlP{*IlT(D(}Cuk(vhbn2y97gQ{ zW!x5cjPg%Gkm%9++AN#cb1zlWdQvglMDG%z^cX=tjP6ru845sGWu$J%TlpyOBwEB@ z*=e{gspt-0Z>-O!OH$UmN#tu%Aw6aydCFK`4+h!iqt;t;T*|Rc)INIi&*nx@V9@<~ zn@Vt}){`Vo24h+^g_0;h{*+F--I`D2ce~SfADtkh4NM~*tMZ(! z0@vKcf#~<=ZbbNI)FA!iWwxOi-`uztzou^!zja+su>`NX<`d@vqt`dm@*3|pr+g1^ zcWk+(b`zB5QauxyTyfGN<@tXz6cgJHLGncwhb;KgfvmIy4%I|JU7DXg@t$#_jD88>(NicrhMY_NF=B$+;)g&Ydpv z^~>VbG2{@F4xVi+$uZFwi%T%lfcKwVq-OThP!?u(jHzgzaYz7B0s!<8&u{6mdR#H3 z|6p*Au<1UNfE_fVVR?m9A?4tIDshVt-B$Aqhyj~$({4fh+$_j-1{~T*pT0q%yzCTS#vL6U9K8qd zo0jrD-|)Ep#rRGA*0%mm*L#;!HN1I9GU63$RO&wK**v6r*jsk41HVsDU5~;crQEY7 zAOA+sKohXvyItt<%kJCYH~+a>$DRS|U@(-Acp zSTUNf)uFPPL~B9d(x$>x5g?=ym_Sghid6coOc;tRSfZjJuFW;j!!bgrj8#z;A}E&7 zRc))T(kMF?R7N_MpdzakVV1R-YF%W|u9{_yj28`zO;)277^=ijK~Z&*te*j<#VZyh zRt#iC(`5x!P*F6nqJkRe0m(=AA^6D+=o#p{>{Pz0Ky79- z697mC1|8b=_3dtHczaGL1GM9MZR3zTFE4E`0xQlT|j{H=QbWW%^`)>qQ-kY58*y|G%u&Jd5^KNcW(3~Xup}VP^m~vUv2GiIDoJA6qv`9ZDT1C0vPQV;Ea!<2|#Ku z5vgn&uxys(-s5dqN$L^fXCgle1`hZ8%5UbiQvov0OTtoVihynrS|TZn)<)}yXxVZE zV>fTpY`%7^rwPJzNPz;_3HAtQ@T^O#M3Evuwb|Pgv^O;pc+$~Wv0@0bWt3B$#J?5O z=FM-t(yDhFCVHh#Xn+9#Km=`JR+GwWa^DzpS1j3rSQncg8(*ak z>WjBON!Lxlq;f8pqz+ejg9!`6RV0sUE4=90`8c^#p;4F;>-qFEXx|}Z*K=HA4=vWR zqowb3lBLloU2KnAxHf+sAN27mGHb-?6etRC1wfp3l$D*@1$Oh*z;`GfGgP^KLvYb3 zilB;ufTFAxM6@MHs3hmo#T7*svWkQBUU#D7eP7|{j<1KQkFNUfGvju4#7Lm32w|-L)0-R#V6|6%-aJHF_*ySD_-btn#y|q{~T>NMdV^2GO>2AD%hI@J`42 zEMr3mI0Pna-{M3|pV?+C;+RGgMXZw%8g6*8S=p4&2a<^KvKHocEa-lX3xsRF5H^K} z*5jc5#8D^Az3gH{KVy`{sdtRlE}x-SQ2+Q)ga{|4^H?zYGwDfp_8EHJi~8Bo?M((B z3yHJ!-JC}}M^0+9LF6+qhbRTWq%eu`9buu0k9)T1yR7!`vPCR`om+G&nfB8(G-D9Y zWvHE5|5It@=~aDr(H{t!v^y5t*@AC}cbMcE0~n^I+dtp~*C7BQnjugp7)8D_BLKvU zUMlcj9>~MmkUXfPtxSD=5|I1l57ui44)AJk#&bgy)x{Z7j1P>Jf{KWK)AWq@JX;OR z4HJWFCmEEe(yV+28%c`p+#sA>lL80?5=M~>#%Ybzq=Et^x#c0{Nue8MND%O_XWZ+UR2)D+xy`scz?y41m%AAd}}2dBg+;>hl~&yRwVlTE#lO-Z|-(_Q`fx z;XcPHULD2?Id`K#~jy1dnQh8*H`%@VNBIijFwmE$r@&R?IB00LkfD}?D=~=z1TT~7Ww^CEjwP$(f zcm7Q7zp~7?RbFmdhEJNI&K(RlS``uI5rHA+`BH0?(AxJ~1L2+~!v32~fJk1B=O$RwM*%{ zv-^KZe1bA2h978#q3JH*Y|oXui{%(tL>js3y*9kfla0puObwNI=!Ur~GB?As@TE(W zyxBKL??{H2kR$~hI~scmPRNG;nrGgfZVnpO?6=}s)FP!40}St{vNfuuHuw$LVnf9Bz6{&c|$s^Y;j z#<`;yqKoJ+ZQ*!%<;!ZDk420klkJ;4WuFKxNN|Vnw=PmBBL zb0%n_g2&yZ6;xs@@=UN!15i~H$X=Hcv#zxcQa5*tA_xj_pD^Mv_G!n(?{B7X&nIrn zMOel>v^H)GA_x6<*oF}W{x*n$on@}4=2?Ssm)qTbgDHji_HS91L2XKn`R)uUZJqPG z-2WDju6oS{R5N84^e?2rL}&h67n}DUI|f-=Dy#8aV5pYX{jLlOg2h#g?+aEa#fm4P zvY0P9m@titM$aFE2%?+9SKKqbXR~!*RjXxmdkr2d+N2fU`tpJ~Mn1mjl@!H0+ zb?g<{@2=n(1geDraxHh4J!rOq zSidOcp4|Z``9-TQc^=<)rpNLr#uw0`YdVYvs!3BC8?hzKz0y zDl8t_pG|+$-&kP{@b@E|+k)}kHXU| zL>Q?w(x9ryuK6j;qe^Hk5&ox52;NL8uj66y;^;tilV6{DZRT5sG)#R7|MLoqas)t- zKw)6Ddj3ZnrqjQ5L|2z;DzODScPtcGs(wR7J*x_nX&$S+& zjXMjy>90E)H))6S|0DKy-eY4#-BW;=;U!?J=Mtyf(!1(^{&0^WmG`uqE;rm~lA^vt z&ia2{*PW72UWGs)#S9`~QfwQT4m|<@5JU$#<}?i&0=aU2Zc{5)909^m?Oeb`Q$sdn5>8I9G0p{6O2sJ(a92vLjr; zTWgaK4=r0FPCcR6dov#=lD6Jqh5Wq6zWgR7X9_|@?wZFTfNyE7ZDle0J4=O>jfP

    BPOM_eZ-_PFR=0`*FM(j8$YUq_Q!Z?&dX^FYkHal?lG}OYiYc` zCcf%Dw7=$YPz;uTFv)V<2V>hWh)>Dwv)?_x&iUFhh>e^^C+Fo+Uoy%e%uj#y9-mjk z(tZP`8`r>02)<6!;#(8%Y^t-&SU2pDxXX?+wfEA#i2&=YT`Gg)2>NWu)crJZ1KN4E+ zmv5hzr=vTbetQ=9i{-CY2l6bBeA7stv%=J}d#!vrjgFCJ5NzMUHl4Yn(TwrsW5%o? z?nrkyQhm|zxTmIlPLg#EpAjl9Pp$awW>5vxrY?Vp&wX@yQ2iph1%_aNLxg0A8}iMj zB1Kv9JWo}FRSf6;njJGdG{VQgx9Y9%+pE*FAHU&L{K|;HlaOHosAh$f$h-rPC@946 zOd!B#a^1NZYTUs^K6NZuoN*yh?+aq8sD^~Q2~moQ%#w;RMG-S)5Z+p{MJDkoMLuIu zM0@lyL3XyY#ByzQn!$=QLTk8GnWZ(F;kp^s zQM2x;Rd+7&)0K=pb-J|Oc^$0so0o4DQ58)(_XDX)=&-1^!|#(D#%|q~F0YT)UNBn**5tgU4)XVI1ulgI&H+JgappVtH z7_9eKmf_^2y(gITpMjju{SAyoHZAvUL`6-Ut{h{N;qbg)$HSz2qOWOMu7l!1|~5;`LCao z)%!ntR()A!n-CPUHjYa3OdjP;Q52DU{VS@PR3YT5u=d72alCIC{%egE4;<|0qtr^Q z*#v)k2(g1Bz4H`ykdO%a0-NZ$Xwf1j5&%oS+}e-}ibOsG^<>6~{ws_!EJ^N% z+pXy>VtsYKpxnoS+&cvDJHrM)*Fv4k3MS<%ytmz@Sj7QOHNNGARa6mFVxS`t@>HlS zL|BXw5&e5VRWO473n+@m#I@V#@%~v|o)65($|I>~)_rDP{mEo??Vdv(YY@wo-ePX` zU0h8I2g>*VVE7Nw;*h^tHskAk(Pa()3;Xbt1MT`+2&fUfktST(0Io@vk}?gC9qXz+ z;q=s51xKLRuxSt+cH}U)>~by4uMQPD^024=nda8zE2{ZlgF!e!`3NUVh;$4+Gv@O> ztN(0{%lIxxzv^WjS7#JNL|l7|;dlL}HyUd{&1tCLTFM~7>a8?4JX{EhsLl!%SUc~v zafTjZ)kX_Gf6%x^BECM8i;65$OC7pl!M?S|-KgU{eU=Nsz59*E^6%3j)YonV6b50& zB}CCef`hx_?C0VCKf(HLZol~chePzAz4o1N&ikHk>1FOZ-p`T2MBub~3RGCce$lDj zUw4B4igO$a&019yMT)*h=H5e+3+>wf`>(j>ckT0aBE#z&Oi)0B3j5k$X}4G#Ye(>y zf=Dc`7H^TdY{3NemGYToi+odUFIL=w zvMco+0gkuqd73g~(WZ=D$Nx%jd~h>DfrLat;B95=JHsT7tV6h;JPR2WQAfjUNd$wV zFZRsAo(qm0Y!jG50l}m6_%g;g;Se}*k|+S~Muhu9hU&vMJ^nH9h@s3~ewp0c5Z<1a+|hQsXr48FfAGJq6T7k^TNM2z~JS}sSWdM{K_0WWiN+D3^F zM6oe2#B?9t`&<$D=cD4Om;shxCGP!>h`=HWudDI!c)tT_PqMX!?u15vxyKq0p{X`< zf`B8Z;h0SftVYoWxY4VY!UEv2rR6K|u-jNzABl(H9FEQ}gD%I#(e*rCP43>Yx$L@q zQ(@xvRP1{`)A^c5_y12A@>YnEXIX1I&n5VnhC=i-q9jwo^LG=zYL7)~9M1}xcm2+f z!gKQ;f68MeVl45ttV9tWJ(JF2vHgof#j;W2+xg9is*fS^PB7p4J!T81s=IKe7Kj{o4}dDUFdSgR(MstAh#6;Wc%-7J31tVNz#5A&hI%2g2-2*u>4gxE}s zy6j=XQLSTaD3`am$J1b}R${Le#yn;)ti>p=bxNkYV57B4nWBqxr3_kn231!U+Er#v zP4-xrKDOSoQ;UqAB`c{)%$kS@f|l648%Qi3HFpFZ@gtN?OV}5(fK`oGgsGGa`9-Fa8tf;cb9 zOu){O-zGaw(&1Q&DvbKiS8$yrqA_|)R8@zr-SPLv=RFZ41ZSL2tn_=(;2uBTaB}u6 z%yg;Q}tM#U27!!NIxtr;GTXj(lG%Z&~cEy+t92#TG2tv~I>Q;wZ?q z_eq7rsNssl(Q?H*Brmt6>21+!dK9ryop-waULE%`5cE7bS&m`xYjb577i9_TIQ~!2 zht<6~LxjX3+k+GeG$TGz0E}3p+q-PiA}9nwJ4>wFL0 zD2>{?9zxQp{BM9sIf&+(b{7OZ|PPn z=xsgc0~kE6n=z)?nX`tNUSmbXrtKcU@#*VI?SHC6j>F6#Vct1Zo_qu zWfPs}_!1t1@(BF{^t^?k1K)$+>eSD&&U*FNe0w_M%Twxne)`l0;hELyEjawc404gJ z{cYI#xkQfr6gMA+gMjDDFc-dcHfvDUjKD3&^PX`)!@W0X^8BZ&j!KwnXe}cP#~Bs% z{3e7fAd$ejh7KR$vKl0yzpOy#&w1M(j%?##W*;{ZM^a-9gIwqnbig@G2Vm5E zkF3hbv3eKm@$h?WjE8vV&!n$x*nVf_^m%2uZl}i>LNe@qt0mM}S7$~rRcK@xy zd`Ehp-Ou>An`x(;Wnf{8_f8knT$2^CXsR^|iS8~ijZ>PK#dkN-<1Bg}CCOuxZ5G-z zv2?SP<&-L_D6-oHBW;MYyS6FKLivvK9!1jTqC_n!BvFD45sTCzOi~vXswkvVC@w5g z)}JzkMPe)kBE^D{L|xlaP(&6gBAV%5l@7B7iY!%vhf>0VqNb&VQC2FfRT!Gu*9aoS zVt}k-s(>tFML`r)RMcuA`fU+{?rBw6B9GRkR7YVeBAHsIruxGHt!T0(YZ2+So0d|J zmihdy1z2=XUV(r|%>B>ZOG~H_2=o}!h6$6gpC~G6AeI~35U^I zM3B3NFkT7xWY`E|4ZAH`5-dAA!hyFtyeMoKPDrAFHw!RdDIhZw`yRbp^E2cJ48+L8 z&mxJa;84jhV^PZlLtNYPl)kovN6m=tXrJfW9nMGScoOGsVXNFcn&R!Ng(0|w^92kb z#77&}Wjx~wi7*szR#WMt+D@PtNYpc%7k@=-WIJt_?&EQP6gfZlQ4C=MQ9W8l1a#b3 zjkX~^5fAb#s)@s_DEq9QOGHAr&@>VkZK5qdNS8xHNTwb+{#b@q;rT>U%pqTOdQX$Q z(W9l`Q?7Lx*(S5yd76E*u9I1YZ*c0U#T0U+?Y(81JVgV`>eEqCVb`)1G(I7R@Oj+u z9wn&%nWR3!4(}EyyyOkzxI;>JFN;Bb-8_0~r^9D-n+(Ypr)Efa_a+|Y`R`7ejLn3E4pNyL_92y%jmMe@wu0o<8RgeMd=gMzbQP@YoX*mMW52Z$&5qK zCl43NxJlXY_?yhQ3^f&1L|6w3`K>t|S4Y-*t~Op>hO5p>iXf?}*V%+S76ot{pnoTNG%vZ5(FGH)F_Q2)g*>P+{IyqG1yc>LS80 z0Cqr$za6&CX*xAKiw`g-sb*=K9b?8%+v)sv1ALRQP7-Re3YWB)Wf%*@M2ZR|kVFR# zXlnNBha@kUQA&ll+Qj>`(c4+5!%NL|x?3i@ISJAs#Cm>;n#|QqA?mWTrrEexLLAOb zo^jqf7%tj&UDX3FzZ_h?a%QWF2s0+A#Pj!VAe(z70$UhH@b3vQk8~urQ9wH5bV%^L zBqtpuqB|tn)9`a10}+Gq3IvgZJ-7wIfiSSz)LkY82uzMcDhx;n5xFqfEOQOZIIX2C zMb;A5i7fTDx-lq$tR6hTk1wLwp+YqFy{Y)WBER+TNK zYrbk2RZ`NbC(|_d4RW%qYeFlAixwk>6jat_MHEc(#Kpcd6j-wfyTunuR8Uz2Kv2mF zF_y}wyh;lc0UR}iQe{f2EQ+G6ioW@=TKr~AKSjSz$|xdk?N@r1a!@O&ckJONLL$Lr z;y#18>URO!p_4i6@Lmhyeiesl;%w`gvYykyy@Tla6wsbE>m4thOqn|u%)O&Ky{o|S zw4N!#9{quy?wkaky*yuYO`ab_H`fCL;sXCF^w1Xkj=!SqeU^d_PIUPD9cx2=oj&LKqQf!V_Yzk%Y0vkq0N(H>=8s_9o$|)?wdF zC2`mbhNBA#9YXdEoSMxlS`r+;f1ThyM8=~kDQ_l-#N#kWMJrK2VWE0mHEm{PSX?VG zdmkz>@$*<`y59SqHz&}3zpUo@UJj`Q7!pA+=u#W%P+&m>z+Wf>AD-S16!y{P8%A53_4<9hARL7#`>@L@#yzV7%aa1efV zA)y`(J)Yl;z;DxkqQl4K@7x-yixdOLy11tIqNWhx+r4WdB8v@;^)cVjuW{mTKOWye z*Wa~dUnyzx7->TYalW4cpf(M*Li;8L=pq)(a3MSE5gjRWA3CN7o^(m5|yp*UY zaP9M~r6@` zu|B-PoqOfnx0~KOd1VxY5g>28)El=*pCqV3&iuD(rpUEuH_q(kw|U4-H(2YwA$i%| z+H7V~5MAR>TYX-pTl}{y-nl024|d~cdw|3l1P@4vH+Vrvn|@7hyQ(LB@* z=$YH0mejVE%F#p|Bkdndu;(R|Mnmuj5+_AOj+Nb}Ll}o9%axZDr_=iD zflU_dB~VYi_Rgu|{_DkJeHTj)9F>QWWnuO2YMjru{XX0G{Vn{>&f^BI?a}vGFb^>* ziZLIu{cL%>ibqrCHxY{kRD4xDU`Lz{lFRR`_V*>=VPZ1@nZ z?>AR;p+tl2y*4zWN;uKNeP*RcFee%IV)MiQ)Z482X{(IXy$ z?%BMlN<%2$iaP|1X!0heub7u*|9T8CQ1p8SXLaI*qhN5miU7 z*TIApO@@r?l8HS1s>U;P)rxtlPbm2eiZwBv^oh=W2F9n5%BD%^oKLK@S>(%NgYf_R zaE$4i^!$tI6MUJfcNUwrUn}0=sA1n_bY;0KVvs;UL_siz{XSBJ#doocW}1%1M`c4L z1sE)~F-XNbx9ffP)8{jvWqX_zX1$^b=Q;Q=DylA2 zl@&%$DBe0u)E{{msWM;=B!g zSS)_Rl~Mgm3V@=>zcSdOf{F;wMRb@pEnEpj?9-pPOo ztp0Q*;_Y(Yd28CEm@VS6TymIqZH&|G<*2!|3#MWq0w)g~k^5_m^4a`97lSUk=HU@y zzBBoLCOdzBqXI?xRH@|K&cEf4NSIH8%JicvD3ZDg$<_HygXL_Rm8rp&wae9>D$`?AP z(e)DWZ(3oEs%Tv?+0DFj+t^IkQNwtOmy0R2cvQql&FtPTJZ3nuYVKk+Cg+*)<5X_@ z3C)%Rp~I(ZFKdnt)~mU@&u6KQ%TsgtDY``>!63!)P3;rJ_Gg3F_W5bh3NZsm$Luka z|77`YB0omh$i7SFX~%YX?*F~~44ZhJ)z!ab?;iU{60c>i_gM71=GE4=-v6xEN>z~! zN$pVZRn_-!S~xjgsEEu&{df-#>#u96^?1ISKlh0%zG(ebqnk+YQlFXQti$U69~co> zJB9R&p3wu`CP)t{?eVbs=hn30xoFC1<-hXb!PM}maY2GV7|ZF9w*(+bno&v>A6P(g z9jS&al_!MEwdhfhS*-p#OfVD{L`b5Mos}s3=j=S5^9F9^J!)Y*t>`f;4}|*^4Du)= zh8gMFXr+ue&W~2yjcRe737@KT7&olA&mX`w%#%wI|T|8dlKzP#*T=KpuwZFKxC4&x%h5$hk&LlKVm(R8_F zsHXyz1yES2zv1H#^;`dIDjF}^V3sKNT5*Uwc2s!o+x^aY)9ji5?5JdIT8R%@*s6@! zO6ztQFe}j^(70zc(BdNfqrvEH(S93#E|UuHj$=U>5z8by#Q)`Kp%+L?<~Hd3_^cb0 zEa7r(D}*ZyIy_N0yo-pbscE|Om-v&h&Wfs|@M%Zay;d*9y|a&Q(SDlOl}kSx9-AY> z&(=7Ko4Q`xW#DI&%#XcD5Nnce%TQv*2DVUdOK5`u^$I#I!Z`VDkVKA6*R6i1=;nqRSA;=mE-jZ_yPR@pFX)*T%ULZT5 zNC+P#dG$UmiLsLLuXc_cZjEd_V#XDeDac$B|2Pcv6ZVl7h!Fa)VRmGUWrSw98Z+OBjP@^_qU^5p2%@|nZpy3TAHZ-GM) zM~^X}z*@wFg=*1a2o)F148*@ZQul1^G>^~KApE9~L4K*v&k%ak-7vS(Razs|asMBh zkPo`39s#8VY(#mt5wrDklnH^OH^6tEBExQnrqp-uH`_A;XQshtExrx6(4%6hn(WDS zWa^;AP*!wQ__zY1iot{UmD8`0kg!n(DD#@ZP!#z+UJMKQR>-3j7%Wv$RYoFllIdkt z7j@y{Vf@_~(B%^iYv-JJzP|czB=0mCAgk-Y(T}NoJmm<&qyG)vV%irwADx> zQX#^e3P3w?AeveJ;2NpjY{d=q3@7KSyAUB98zSjD83+k<6en%(S z{?1wH>nLF!_UXjR-K>rv2}zN)AU4?p{Z9Oehpd;TtqztHC8y(bW&yV&IwF?%mPk}G zqemABllDsPyJYws%d3^%8LfQAGD!k~lg3`D$n$CVhC(JJKs_uEtnOnd4#Tog&~*TF zX)W{aSL~cl)%FO-yNYcZFvX)0>K&N(llo5h^fE2u>t^{1gRid5q0n{P8!i93|DTxS zE2U6SAb?K`dV@q_3+8FucHWC;?mI1CovrwYYYM>rzf*A*b**)~eP93H$*-?25T&M7 z(m?X~m|3KPL3att6ZSWZ*?J?pb`0xg=woDNNhs)n9RzqG^lB*40IU#?^rou*MS%bh z528bgKHkeZ$_)H?_n?@a+Xw(?1mM_-)aOMsx3)2fgUz${eGXb#kmLF9_+?z}6NPH6GJOq$OtzoGmtN%zd^P{(sh z#P^9)y60f#GHYj2(z3owMaE6+v4~+*Ybc_M+E}74^LfVheO~`Yo?fLeDuNEJg%wrG z$|Xvp5yLAKWbpgH^!7gM!u=1))b=`__tfQsW!W}yL|C(Yhu^!*rA7Ct``>}L-)rgi z*G@0lTZ$mg-MZ|tcgdbOI4Hjmrt1|2P*Ea+Aoh)c#hW_G# z1|IDAmc%=P1kZioJ0B4_BsYWaelv1iJep-g_z3%imp^R9lC)T{M0gnw4nKz}%tyo` z4o3|?hW;FDVI35VK3A_$88c8FX#?`Kq8h0gMZXin0J;q>w7uy%6yEN!N}H|K#%{Y@yI!CCT$Z16p&d@oqRvW z?(itH(s!LEJ0#Z~45y&D{=0vA&r96dUkk&bp`N9zKC#g>dVEd2-6l?d_teBwdzA{q z^LLqJG+r+$jDGW7IJ#sbEGdW`X$aa*!VFl75W`D=9n=9TW|dI3sBlx0qM0BFh^m5* zkGB?4lC>0{^ROwV)I|>!Z$i;H-e;-DTc7YhDa$n8ea$y7lwjz))cqF>SbB86cFMnH zLZn1QSgc+9K&r7vn1=N-%EWn1imJqL))#e*7-bl!h;v$k%oMC$!(46S4lQ7>g=!*@ zV#uo`fFvX|$PsXhIh}O+KEg8;Lrnxp2AwN)J#v-`Du|*gn{?yiR8?Xt1yn&Drd=+( zF%wRuz$nxxf{7GG5n>_;swtikI&C2r_A_sD7 zHW83Ou*$(jtcHsz%+aOR_y0S6Xjf3jg0{<*;xU_%kZNorWPcJ-A_oqVVM)`|8)*bb ztWWYBGzozqSgQpWfo!c4wakBJ^V~eoF>sxqPpPfrcblGKK+v`zIQ7sj5}nye1VoC0 zOR(8$Y10jrp2yZUgVD6`{RHZf!2TcId4u8*1sZS zsqUKohmN>s4V3izRrbzV1~stYCWB9=lXgeMloUEu1Vy9-$PMb3c3DM8#4=!25kjP> zvb7atL{n`jsTL?I$as{Kc&U!E=iTLm&eXJ}Es;u^>?kOXw~g-6}J7TMs`&Mk#EuRYX|htHFhIZCorjHo7eY-LzC*&qm`Zmb+lFeGBNE z0xJ+vHcDv4h^z$>V(V~mfmkATe*2HueV5ks`~&+G>i%BIwgz&wuj@YpXUS6@V%H6Q zOw0eMuw^f@b&lWDQ6Q2CFbL~eSaL6W=8F-^wM#8h@9~B0p1(5l^ScdIMkVRJekK#M z=IwS}$Z7hQR$o{hLn32bv$W$FM1U|5CDJ9{krn_DmH*1*SD7&`DS+rO zELTt*@eu6I458gV8f|}Xs-}VOioiVL!>511f9{CZXja26cgSKAi&br3jB%k!5#^?T zSC=y%z0B%zJH+Y)I{QP&x8eCd|HSH_kE6OxLMX8~1O!Y%0F75LfOr^y7FBr(ctSuP zhM$zhui?r^g^^QQ*L!{+CWje)%FdJ0{Ehlc(u3QuvRli4vY<{jr({FFuG(^F+>HLE zF=r3_-1Ig$pAS0EmHj#T&5x|?f4d)`{)Zw?fjd?L&8EGpI?n8~vQKd6PkHI=lNr;V z_lRVfGJ5Mz<4rnl#+o0GWmqZiQ)fo6U6jx&J(bhze-j!|(VZ%_U#;uzwtf}@rj}n{ zXSl^Ktuxc-@wcYz?sQ<@=S|(J&Hb6PU6}}oi8oA_DpZ_BOS4H*0>uLeem-_(M#D-J zWK(6<#>Oa}T2A%(=`v4QvG{m0PPh6ghy2X`G(K8+Hfo9TnKY&vs>Ee(`ohmP?(uW@ z+q|YvBJZ>rT3uA&vk96U1{B2=ZLPkt+&b(kX2f!FrsEYw3uPN0rlgu;46+skLUAh$A zSx`PBSr#grwy_b*Z{lSPqKKjh;?-iJKw_w>+wT|yv8lP`EE|kp z>2I#LD=PABRu6+piU^1AK2sBK6*&p}?DVLAXa6jQg-=G*i|5*|s$JWM?k}0oa^^G7 z=TX~gWG1ttDA_UrcB8)xWH2lm6g@ttg4EfFFy6$gZc7_4>KLyFZAVk#RbQbF~{ z{(g#n&gzBkvv(lp>|SSdM#}xr<2c3yhx#Z97rshRAj4;Bmf0JeDZ!{oIcWz(AF^XZ zv?T1A5*YHP(Ix#xd-k2|MN@)-U1olNPZ>hes!u@=(h#)BlYP=W3~?S~t3T$qe&+3c zHR(jvMGai5VZ9(>J=L$Hg~eGvJ+L|;j+3su!)|>{s$u-TBX~~}MDZy{I~3utl=}Rp z#hLk6-WAK$W=-#GB>GF9|a{`YFsI_&drVrkzK1#2|TVUh-1keKOTnfyQVaIp1&;_`(JgD3^gf7L)_faP3tQ&O2exdRX|vv`nHI>t608ChWU}j6{Aj@7q`AAy347` zsGdPUlL!vPy)NdMge{Q-43OS@b;`v7{~eFd-g%nRK1S#3ZL;!r@Bah-eHQ@YJE*EC zuAb)@KkCp`K{zz1ip7df-P4MwaGU89B*zlixgpQNO(`~sVnNPIL?=kY4A?ubSJ@^9 zPqaa|1{{+C?JIak?6dVz3sFj>8j24Tz2ifAyEktt9{q~aT(o`N6vmTacbv*-(5!SM z;&T&=hOOy|jd&+2*D)#4TPK?e<4aCcd4(8;ukVEoMCzQXfUX3<>X;%(BoYY(kwj4w zW`!3G8l4Z<<^F8A{yQvb#wHcg-U?WPu>>9??3@YJSW$dsstcj)a8XE%V-!(QPXfw| z6NgHB3Tq}9D2u(aii;6qD2~@6+);>dtxZR}+VBwSi0J!mDMPg&F5mqo1C#KOc0`E~ ze>C$fpQ&i@BW%B`^+^`1+B>(5hr2$J0%RLWD)y}K1W<%n!5AbK0}I^ak2Js_=%0#P z;y9tl-=No=YBG+5x3P>oAMoDNmn)%n=%J!uNd%Jud9*3oCwKJQ6*f|jv7vCP zlwv(yD!!umXA8ti{%+mJ)v&AgZ4SK)KaXaZ6g>f+U(}FT;)wPfMu50d5UrCSLaalp zk0ls^tcXo_Z~X2UvgP?Ob{xs(A8U~>cz$Z^^~*lY$__TiX9tjSR$(( zTw%pU1b$15DS9TLiZh=|iRP@YAq({!N`IH4=j`eBE`(sAy1UoyxI2*ZK4#A|iizR7 zyjY0xlk7ix(CzI0jV%0oSD#DM)AMoICIJ_=wf(wL1{_;g{Wf#4RfwQ}?IlGM$30H} zh2DL?{PZ91@;6vd!~47bmUFWpXh=h{#&|=jCJ0$Ff!tv*h)ItFumXowhuKrw)Tc(8 zbd*y6rNx{TF$SmXx{_eHG}H{gt$!aP?ER+Ga|^@}uoeS3z~PsAC{TCB2Gb<`n2-X~ ztSj!!E}KEWkJbKH+4wl+=hX%r4Z4Cn>QLusW`K$XK>`F>@7yQXv(K|u*)l`HYGJGV zjXXQ=@jtQEVe(zAA2GBDtRjnlN%r?Jn(xqgqc z#u?`{+5GNXcZHu56%)K|Y6}HWP<)0iBlA;jFg&Y#7PHUVpSx#hGigkMqMnY>QB+lA zRC)?SX*oGm6$iP$lZj4NqJE3%Q2saSkxbZ#{bO*?t+pPwR+uwDr{1@U>+Kma7)%)0 zK+MuH&-cpM72c-G8{I#j4zx@n)4^MLJ{>{r40v45|I7AED z5^zB!sR|nX=C4`r+4r6XdU)E+x$b6=w(p@UoY)CO0VI#AV7si==}3pVFs#WaP`~bM z%(u4qzIT_BDEu5=4zHVbe&$`*ZyTgx9^|1UJqChefgST87?2Dy*O|`w+1az;PyOWV ze6Q2qTC3g5Bd-Htw8$Bw>5(!wv1+Sh+i zEc{oX#sqxNJLh$r4=um-DbL_-q6nY+e*MRyJc&aJj8#-TiWE&wsV+Ucd?fiy!xa@( z)U@?Yam@G_=ri&THZ~5KJ;!C<^gI0ZIv*{LtJ(IPLj6lub~7xsG(ktxqV3StjL=Cj zbEeqn8tUF85W_$tZ}Sy@pQ`!#Cx&hKYxs_4e24RYhR%a^(y;V>1t;O&H1VsKkY+X6gDxbgDYogRbZ4+Mi>WSD)NqD8M(!R&TDpSq4lE z(+lrXFKG-LBY(Yk0l~IbZ)TKpHV1pJG(`uFqMDjf@ z|4-Ol%>u%^zJik@V#^jN#Wm8gZ7Mn`DDt&(!H|k)YM|@e1`4r3MsyUh1%|3v#seU# zh^UH)vLdijMUh~lsh5)sVT$zqMWf*Vqa7RD<>vmg#%KHfLt<`GP}{T^slZP4;Q8#s z*RmNO)qZy7vwTG1G^l8cCZZ)vPMU0>H z{N6rOCMm(Qp>T+-Q**0#U4h}=@h^%2h9?3eg2Y4wr4SJ*M@A%;CHa4aH+u<#uWqtp;GjfMaZ6)(Xsk@a6a06l2}7FMC3Mj7?MmgiUe=cyjv9gHgo+Qu-Z%eE4*z4Y*-O%lgAh(b^4}UGH-$>5YTln#&x@UhHRNJm z#`#3_>dd>2-kg3-%|%nnTizvOA5Y_MHy*045k#HCRc8$fhuI|!0*JzvNeeb9j1SDy z=wB35Z?`(mB5?X>L5T!+ze}jybtD0q4$crjB7OSw&j^UcLqT+WwwB%G57VJNRq)=f zom1euF#J>776|7`_%r}qW`))>a3oQhi{R`h}akV zPp@V9*gVSV6FQVaH19+!@Js>S*iDo6!m_3`rhLAUT(~~z`MRy4g>N2 z*64zN%VL;L7v5hx3>5V8hpo5Q~f@ohY=x? zECZzE*{F-yZ~j&T#lE!-Q5AOxRw?OFsw#TsdTpO6i8E&rJFVrNPw&}1OARlg^>pGh zBsl57P4hZT{MIMNNuITbhJ@ecVbkl=f2?`mKbGYUL^vGkde32DxqoffeNNroGbEeD z>KxfQ{-VuC(x#8ip}%Ic53Xkq7vwS={9nT9XnuG4>Aulahv}!ac#p7VY4*K8V~_7c zs9~=7h8@a7S4TyNa+$(^(4Xn)tl44RbbanRlq1l2qN^J znzpDhK?7RYh=QM5z^vr$;Puy6f9!d^DUXBhy*~5Mznl8>+%w5C9YRb$?(rNSUE(xo z`03p~K@6SNRGww_9I6^MD0ogE8pBU{|98>$l=&|^ukkgdCB${aDof!5^N}6+gLd<&njZ zgcyPe&fwDg>|s$A1K%Xwaq_~f@cIvl*m@STASBJuY5@JG<1x!{U4!gn&<1tmkx;F%*qKh*i8UWro{F=5Gmw z$aZxq=X3)ww*i5&w;^k#*~(5V*2Wim!dcSewQk`98*l!Kw3!kWgy38!REQW(1W}*f z`=<%hS|SGFos%%ZUuR~z9fPr*im$z)>0M_p&GGn}jL8uXh}Z4V_H6Y2w)Z%@uchfV zat?(n6+(SK+0(T{CPjYEhtn|c+4WyhtBxPjUJ7|89yvYt?{2Z`p8x%yFSg!iHxGc5 z)hEkfa{5lkQ-z#7g9l@jEX3fssUUQPIr|E|x##oY z`3^YM>nL<-=DLq7()};N{ZIFAO;es&`D$5?SD4u0@Ob+4Cae)uEjJ#Mtv5fOEH)W$z5;Yh2=v{!o76@8m1vJbP| z>K=#FpS6ICjYcBd(bDN+P(L7nmWRGwJo7eP=4uXPGoH8ou=$B2_0Y^feymwU>wwZOGKge`B!%!L8 zdAs%xu+H!O4FeUh1)htsrWxbddernO;jru-4~aw6y#7)7FNtS@ld0#~I4u6BRW=jp z7=6lNkjWH^X?D{c<7e8T&^f2lCTp`x?`*E$uB60gm}+>m>@i}1?KA~GC8Wu^mL5k1 zhoMPTi2dKzQwgQeh8YN_0fDyTJ3Uhl<(YW9ng$S1GiZm&yUZUg_}{N*8J;uv@21uI z2xG@v7Jql)WBs{Np4QMG8$x>b1JK${>pX)Da3~%np83fXo0OM5Oa>T_NWYI~A6Gow ziusnr6;W8I#dR$hB8u5@q817YqWwZq z5rV{G#6@+fVHPohip5YvoY7Sk6*VYT6%|xeQ4~~72~br96i^jW+iMh16-cC5DltTW zNwi~^&cEx+UA-=+{A_<%Va=Fxc6a?9aU9VXi6?$XE#mr^yQ!la-j3z$u7w%eS(Yk- zoEGtDRx2?|EJYO&BB%+_*~vp3tLHFMZk;}tEJf@KpHO;ZIVck(h%h!yhBi-)tdor2 z-4F3B5C{@fI-S27<0E+A!exHRD-Tr3r3^Anrm*YxwC$7szG9s^b}!J~{U;|c z!%w)&Xz-sy%{-o*u?3WR_t-GPDYn)EiwLSNVpLPVdjy6P$mj>IfMcPf+$ET_w6TiCQQNZj2}N0@E_S<| zV8T?QqO4f2hf2jnVuDTsK@+#}xC|&UK^0L!MNo?YRbV0q93UVgz7hzGNYQUQ+m2+g zFAa#L`5LP9^MZf6y^r`mqa_~jkXc>p>A09Ya(KQziH$^c{Pr?~9)qeZ`ME|KW`zU)T1E2F4)feMlur875(GPZr(moerZE?A-3=FX?0OsZ&=kHkF{GP_%UAf zz`S7r&6s&sde14~2fQ?!bfMBkY5rn{Ngq_heNys>hYgp9n41A#5BcoN_kBd0_OEHm zJCVO2Y8D_Ju~Q>aT!GN+`$@TvZim$6;?UJF?>XskayWm%xW7y{oT6jAoMt1sWwdU-DW2-#HC??WJFLQrYI!_ik!NGj;|mp0L^L%`kwmO7B#9=`QdAb? z{00%JMx=sv9`V3HloKDY&(Py!Zk-aeMS`BvlCa)2MG*u@?rf&zqoE7#u`ptI7Ex7K z(yFDl6ke^f?-MQNT$huXcaIlbJ2&t>50gF$cOUb;ZtnK}2G5~@0OXG3Ly9|{`cyHB zAOaz;K7_h0*$zx;Ul3}DL$?IiiE;S%#q&kbgc2kQk+cxJ$|2SQau-Ah1wH27^Y5(? z2ZEsF%$2)54N4)NhLC?__AfR~2`H5oEbU!5r1yB^W!R=?i|#4k<>p*qWko>`36*{& zJ8W4sZAD?I)*dAa#aYlZCkZ~~yo(CWhIveGHFA)`8!xWK0}YIeIcQWCJI~+1VS>+E zhukdL}uaUP3vNK(?W{@bRNnOn-j8ZN%+-{PpaXgNGUo7}Ok4H@wxD-~yceVTvLg%*n zfAMm&0x%J-$dXAnIZvqW2`8B=;9I@5;9d%13|I47Eb%vU>N1ZT-DfgEj}6hx%cV|R zv7(5)J5?45p4BlK)7e+iv{m`sfCM&#L(2SS)lASGAYHtG=nFJQHeL_LP-8=;=()sc z?)u-Y(0dAhIeYJCG@;vrIuQI10vm%UVbbOl^p8vg)B3 zwJ-VBVUqSXm7A)eIH_XD6zxVKmz8lDQiB-iJt)BgT%VhV2!;kI8{1!M2BG{stUo$# zDc3bEURhMZWlw#-_IzBZYVp?~!Gt_-s==WGY2;DryGaHjL_#Q?$qp!iL_kiNcKpCY z96D&vQLxj}R)m}ZBwgM=A!!)o7uzZdXgv*`1t zsp!j|c`C*%VmqCm-fu_cj`PRA-T4T1|B0d+u{`Z84=R(`JjQTcIcUO%wDB99cs<9x z@W0RWzvHNCb{heElik`e2Rkd$y-PiFGX5LaV5WV&4#DXeo1qGduu>iK0_n9B9_E{9 ze7=5oiYpk2J(?Ah>#>Y%Yf%0-Bz3N(q&JRU>eY5%XK|a6ZIsie7^y);Q0@y(-pPCh zixX3QgH_3NvX3Uw6=3RZTt`o?#O}Bs@$Y+Yi?!N&fB!qwdVR`;&jg|0<#ufDih>eK z2kc3xaEK#Q>82h!K?jFJWs?WuroKE)#ua>3uz&S(@3O+rw&=W{8zVSjKYi(HM^G6P zs5RS)>)@V9?Abu<(1;^$G37JZegTGD0q9>io^6JoQD$t>lMx=O+5eAyf6|-HG|&kZ zH}3paDu77MhEO<0Vw#cARK7gMdikY#pWGu_05b-WE8-B1h z{McIqC_E5rp9*>B90CIoltX}`bO4Y-_(4|$4LFCqAO@T9HD*sTWJ=^gm&B?)KXK-y zIr{`X&#U0<{w=JTp)2`GdMX{$!*nw^ot?2fM@fm?pnl1Kh#;O@qvjv%L_GFQ+>s(& zqX?DUeeRL&MiA^bN)*KrWLUB+pWyY_q&J9l48!XaSs}nkrs0{S7jVj$Wk6Y*nzcTW z4Tel6X<4D4;?JPw!A*yfpRSXF&dmgkU+A=CRf347hS!pqW7gSH3o>cFwlAKr zqGZCcRD;qq3?)=H93~Zl#bQrzl>uWI3L`MsDn()uV5=lhQ&p5mqO4VdBv>ci(xa0> zREUa277GP}kzl0BD8-Os3amt8hYbpf3IiOiSR#x>78qbt312qYs*L5^4P>hkSgN3k z>(_T-yU4oMigFpZi!y9PK}CVluPaUrkE_c1tf(wNe@kx$8MtP%fI$@$b?IWUV4{kM zvO5V;&*6S1JPdQUS$&s>``r)we6NVlRN6m{&upmk=|x0fq6%ywPDa)Y8GBoW6+I7# z#u4^SRwBLa4g-nXs0tR$NcqG zT}!ppWAa{Rc4uk{6!!l!lkEKSP4Az-Z;~RSY5@NJp+g8vJ#rHpsF8rcA}3W%H}ps7NW`j8U(RH*zN*-1oeQz6>jQ6cP!#lm9{VOU~! z#4rdB|I1*=?+{?VYu*Xp73@BAkA^Ss!`)AEq(&pbp(f+K)OgnBIMr&~dxQ=Fd5 z#$|xxces-X#Tcrj)O?HCrb>dN(OWwPRwAY}(@QjFSsCK3VlU{nbFGM+&*u{n0cc$URf&hYLr#6qI01XOU? z`{u-5dS!|VqOEOci4y;}7~s-Z+a_pZlXa5`<=W;keqPL% zy4S$PB8no2j98jl#8|Nv1prloiYmngkxOh{EU6!()!Zt+e$gj^O9YCe7I?HS`tET- z+Gws$mjxE5o5e@m zKVyoA7T2ZaV=b!;;-7Wqsl!aCb!GnRZRyXo_E*$;i|Sn(o`oj~J0G;o!B#BV^f)mT zMd+6=KPBY(U)85m$$HD!aKO!qELbRS?eCun4R_eN zs}xm5*|W-GSC?qT6b(&m7>hgps)i9lYa}p%;IK09sZvDIMGDBF;jsAWJ{nD(78*U3 z@vq%fmK|_tRx5$GKe0afEp+$ zNiW>#C9NL5u7B%k@wGmWw9DCxqhF}(?KmuYThZg}b#jIU;x+rr`CV^MkJj>-F#}9h zixgdtb&Nzsb*-LPtFz1_@a*U`UqJVN*K!fm=KD;3u4d~J_Wmyu0*Wy84<8QGW*^o* zM_Y}qrs(j!wmmml)@U+CPaEQ?;}b7nm#DP?RQ$SBMFn4dN}{ihrHUx1b!?{gpNN>% z{5)Yc(!Dh(v#a_ZgB_rA`#fnu9Zn6HI_9r`_LmWILe0&W>};wEC?UMNhX&!G|N8hC zv!0b;_zx||=v_OL*J42$W%Rgad({6h{d}OeQ zhiA{#B5sg?SZxV@ARTc4e`LNi!B=2O9qZjLF^wl?Ears)BF7F-^SU}Vd#~;6y`N{*|KGFw ze^&AL^LmJ*5s$e`JWm4QAKBqwlI7(erA&X@^zn_&tPuUiy^2*8QHrWN%2qx`$|n7+ zAa4-s?sFZ690onnM7HBK@rk1XV@hH2jD6l4}`xl)@_nRw62@Dx`=go6jc;Rox9eiKP96rqA&f@sH|0k-W0D->U#W-fb>pvs)Yt3O%j`w!Fm?(bJeV4r`pXOZ<^UBLA_tY{M)fP|{@3Ks9+py#`k zo;(oUlz<>1tW=1J!Hdn#&brX`Z7hOrzyI4%*&gBgTv2|#>Ct8pMdvja&9i*P6R9J% z_mA7UFyGLa0!@iPz=8}ieWwF&JQt{^tj@DDCW+5?RyvDb+jsM_?=zMtq4>Y4g9P1q zD~x?@I5`wgwYDi1Bmahs@6yG4^r`dhRtv`NZWHU;i`CNo&8hTK#m6^WES`&xaE47+ zaeUK+T9rm;oi(zWK8JPLZg<)yqNtx1lo^dq9wuAFuE(#z+-vC7nt%Ol(c?P*iHxyo zsP~W6<4c873>85^Rp>0K6-7~3@*3=VJBWfu*)>!V-&tqp>+EHcyewjSbTUO3blj@n zFqBO>TqMIP&$LSv_ZF%;S_%7UL4vFY_3w`4+=FV>ga6idn5VhFW9G8q9ZL^&#=VEh z?>Ii6U&VI6tN4maZgTZcngkRPKsV7OJX9Y64}75?>XUXZZXiPKQh0tIjHd!Z3y9dE z#DE}CI3OVA2)ilT{^lZy*I=vTsFfhSAV-PCvmg+8!%9%WE#hS99~90~LrN^2<5d(k zJr_-YGIg!-XEWT2gGGl z&!&6qj{hR8QBYVTy4_q5L}0K(%(CwCyq|yi`1>^2^!;b8|3A}n^lo$%+hZB|_KNoQ zzuEHq{#kjpROs*c;H*J{Pe;&m^2zhb>yyoTZU!_6qNuFoTB6QJ-BSwn-$Ku{a@M5P z$2GwB8;oNoQy)Xz+>wZ*K0|-0qHiD1diSGqRbc-DbKG|JS-x+RWsC=@XCcR{Mu#WJ zQz^msSoNAr>R>(vy(h)<7$&2>(M1<@*f9}gGlM(4aCsNG@2*IGvK3VO+x)ys<7@dhpT<9%{~Mnr%=zp%{?_Nc zyY9=<>U{sZ&~u%JcR$m2${0c&VE`ceCVN5OcDQd^$t3_d*3vq)(sK-o1&HrT0jQ!O z$fGnRI$LO)mMdS**3FE3f{y^h>73UbY;TW-fd961`WJvc-j{>tA@v*D7%@Ju_3eS6 zE)Y5R$7^YQ11$vw6c=;-@nOX z;HOI9I)<|iiYd_AD<7r4c`&Uc995#cRbX#oBW9hk`JY{zg}E+7dIYC(d!y9 z1w~k*@Hw{%0!P2dU-T|^irHg5hF}OMhEtHy<9q2mRb(z~(C^ru3}>@?WgPFH=}G^F zl+}7H80JzLui|FXHi-2cyrc$H9og1n%+bF-oHaixqEft6Z&`_vW#fqm_N~-iWyFDgZd*u3miQ!|a^n0IG)qEds;`KQ%OaFCHvCWp3 z)8@fX;j;{|v=HYq(v(poK!Yw05n%%saD|B=2VgW}5&eXcA;a%rA}5`94h+}EEf&lB zGT;f|0s}fiS`4jGiXtE)7CABdgU=eDV@ZU)J)adSWQz=)WWcO~|EH_Lf*x6?ce8?Z ziO5Xtilu19+|#jmDU?+e7zux4_+5|V`Tb>o&-nK>KkfO};V^%M`9wE9kl=RmcO3#p zgVp1A^~x1heeEislWv#)nl1><=dAabnQk7dSE_Ishd#bXqQ*|eo--6t4u;fXj73p@ zr?wEM;u$tzwF)Qm1W7i1u`-y}BGsdCjj2Q$0R=Q6R4&02v8N zK?U5h97B%pB>foNsWE#gzW(^A6UX~M#2Qh89xQJziQ6GKBA?N4$@%@26vAK1#`mty8o7AP7A9RQj6L&3 z>z>`fs;Yv5{|EEq2D2!TP}E6S3P9~OXkbGu>4$*Ik#NAME-epU<)(&AexH|!eEfaJDc&CnHWgd%P5$3XHhc) zt2=D1pl2+nSwlZ6YeVIsr*^-| z-7o#z7tKUJ%3J3MfxjSkM07yTHZUB!a$TI!jQ!h16@A6#;G#~uS02|YtFF^?P3wu| z`CmPhME4yaNCX5<0TDY(4S;6CAI|*{G^P6xG!Oq`A{x;pr)9(UmhCgnZ*}H6VtW^I z|119wdsp@ogg+B!1_nJ1^2xsPULzf1eg38VPaEa4{ZA?8{${V^-|YQf4B18hmYiYn zwpWMM?(r@~1y_}PELrs_(zxv`sofz_M@^Q}u~u7k8O3D75BAcB@wGKmHh;|xmIi-c zt&DbUi+ihx?$AoUv>6hApFN){}LhA{g0S%Cxs2&gl^w0Cs)tj7JZMMO`A>BSL_?)ZCGJnID9 zjTT;>%qp*}>+Tg{mTfg(KIRG`&|47>YFQB#6jgZ-)VN~G-}TU{i67?sOkrY-*l*cm z7*~qaR8?{Nn8OiJ?Gy47{+sOa6hToF#kAyg_Y3&B+;eRhszpVBsDkXYM7C9WHdPUh zR-(sIJ-dV!v{kpgbiX?=ywsVubW-Eeh;Jna_bMIl9qQ=gx^!KWK!Qmmm>2>I9pYDq zN{Whf7{obFLO48|%}osWzZU**hKLplF*=-MH$^XRsU{-gc0XT|Q;n(cl-eHN76Q(!foYJ>C<6#E z0Kj!7Ww2ymZ)yK+=grTuR3FKqv^azRmcQRmTgN+}|0UMr;&Qk7p2fR!hCpVhu~nd{=NgcY{tL=u@k)?Ab_MOG|RL`o`+OEoUmFJo_{dR!e#h^D2KPYtJq{P(;~ zXYaQ8AO22vuf2aJ`Nv7wJ9xcciMM%u+o03mZ**r2)mVrh?Zuc;Ry_+uQ6j70`eAxNzt9~E1&gYFiC$m>Bq!Jwg*dh7Uh9bS6+0!3u zzs3<)n}6Scs4Ep2<7s?XUyn58F;lT-r`Oq%CqZlDYi0D!RU*bGM`d}5K~zR6eNFCg zQTK(H-HCBp;{rJKeHPXxLE~?s%fdKXGoGQN*Kw(aKZU7`D1B2aD>GwGpPWh-O z4%6?N?pf&Gu{v`yoqBHe_}Q5(?-_NP#fkS+D<{87um2fAegbo_1OX8`N=aqR@w3Vj zp9&i^p0wNGWcCVRDGjrI)EdF?M{YWS0Hpk=%J;|H`w#H=i`8fUTpy^1=y-Ykl6*%# za4kZQv_ku9UtQLD9C)nTQa|L?6jc|*HLR)R75Z=x}Y3#P+a zkTOW1rmO89q0O1;*SK{2N?}C>S>K^ph(9)xvTHhy!0M-}esWDYTj0>|6G`$Ku5GJn zZ4_2o-=}a2tVMi7Os!Q!7^Y1n7bS2Sgr0JI8fb0~A&AR*DFHb(CU?eI*ST`wtb;W00L* zni}cslMznMvs-6h0Az^I{9CxC-}PRj`#qQRXwvo6mHCf|#fToE*u@1nO@nRh6OD>7 zVx59iie%S#ltD!>;}hMx532CA={54tgqqHMg{;l4t*R)BqAy~cejg*-XxwPxzdKf& z8Z``6b4n@l7*cgTg)n)Rb(ksWb$YzA(Z09@Se-#=f(`sE1{DQZF;qljKRv1lvSiV% zkrZ#V%JYQtHuPRM+++8%|JFT&!u{WuaWA9n$weSTywN$ZhPVVNrrCBB-dz*m_lLm9 zVqe@a&X{sg+kXzcrF;W)md*ggpPw%g*E*tajaQMil{dS}F>n zgwT_l+}RKniYMFJoZ}D* zA{-$F#RG{j8!20e1VVq}Oz-Dq_4+E>Pf`_^N`dG~08p*N@cW0JgNN|+d4KqRrgLNS ze;4gOkNSQ$;e0=>{C_3e>`!*{x&o@RaFI?`51g2MQc&?d{R~9x**|@OhHAt*oLC)$ z4?>1nR~8j8!%BSS9Xmg5fuRZL8Q6mc7^6w23d z%8DwWf~ttbbYRk5h)kuF)_l$}Gchqe$HNRa;YECr2N*>}=m^n3Rk4T>m}jSB<5b?tMHoUA;RH%>%29INNeIEvms-P|hY3Lz8Oct&l0; zfk+!(iAhP472}+M868&A0bn+SEe_~GG)5C6$!0m+LZSi|7d#T-q~}BEO7z)#QkS5P zYjx#<8vXj~wM(;6ImwYAm+en8UYnE@w@4F~FjMWq&49}4E2Ddi(?U6?GPt7_S*^1n0 zlC~P1?A&H{6;U%NDPGh3(ca%NtJkVE0NuHX5#A=YOs3ldGo|31YJ}K?mh`c=DnvCG zcR-9mb|}8K>>(`AY;Hw5^J#*WvArgXpz_2^TET6@!eF zsI}(eQQ5r#ZcL?&H=Vi=Pg)vaKu=bt`v*anU7+hJMg1hP1bVwzqAG}@L{U|qo&Db( zkaRsBXZ=3DpZfA2QK)o0&E7QcFCQ*`XF;6@$_WPQ;qlRsArjEtE?q)k2C!>23frly z9NAZ*t@Q2-eFd;i)-V`jER1| zs!5koIbuUw#okxIXN=ZewKed^oQmcEZ&rn%uak_2J&ItUZL520Kc=0zZoc#aNudLXyg>O+5?rSxnouE?@|gN`g226fHV{#l-%Mu2&V7;gMCU^rw>QcT})S zb3S)1m>aH&cej^ice6^x_@jH#xS1;fVLjJavac2MPPGs`slwdj0sk~F0?K|SrSsW; zFMaMYGvZqMt~Ynd{>=15QAjfk@#)7LY^WZUa%-?%Eu;dhH}P&!U0u44Yc1X!C_F1X z|4XX^1F4-lXp#@QTH(;300NAU|Ja$b~p>xEEO(%uyO*Sngs}y2gOSd1a0A((;*gJPI{p^1m|Mplz>nd z3mBG))HZY;4S$`2jy>vSlSZzmFQYq|H5xDi0Uz>5T0jf|FoZ2{5CbXDdn#YSNE?Af1sa7$ew}AnpDps?k!)vfEv| zRs($+S=>cv`Zj6>tV3MQyI8{flr>sL-IVLFAZ|{Bt=HyiH`rkbb{#6$W~f+2CO~b> zv^^SK)lI>^=x)~gQmn&P%1*I;;_3I+7m*=A;z3PK2e&XnCFK2;S?)ZbRYLd#5=Cz~u5v9O9{H722#v|ihBX|Ot?=Iz1?8H?yu!pm@c z1R7aSOp^1J2Whz|Hl`-rn|=kh0l4}n%2}Tu#AiK@brn4ox(XCy9u4Vm6c%xHZU-t~v45iwzh`Ky z(9>47m+D#OJr9=0V*36Ul-22jq3`+lEGqO6CWH0cDs2tT-F?Ze*H|o?aNc^&5lRvj zTZ~J8Qq_|Ba`s=B?^g6+n?<;$IW3ep`tr!7Uh+C9|2vY2gghRfeN~O$FX5lc_jz$? zZD}8%^vz8EOyL2pdt<10IL3v`TNYr>o!R??XH&A?(Q*Sz!aF{3+nh)P07)_`!Bh^t zJo;hcp)3Bzpr?{eRKU~`I(CfE!o4;(_%c&;$wYWL<3-5t4eI07V5XI=P9CM+^-}Z} zH4nNrC$O_6iO3_qqc{r7M+{?U{WBT5)BdwK@Ha0L66{MmdV9?4%!RHYcvM`img=Gt zBzDbNAMZsHJGxh)O6;gXqKSoQZXyqaA>2W^P!hUxNU5*I8RiDCKxB1`QA`v*yX0qk z>M8D`GXi%QGp>P0702R5=Ej) z1e|FOjn-`{$M-hgh<9qj8=zgeg3xyM8#NCa$w+V`vMr~pX@i160NqFuK^>27v&eik zFlZVO9CF0gM3^E;ANE_a7

    |?3M`sJ1ol@8zRIyO55|FD}U(D^$<`#IpnMKa^L37 z5Myse@$#xbUm7`mQ~fz7S!{v6sIej(QkJqr-Yy8jm*4p+|Xi)?l!$8*m7V^4W$IT&Y`z9IY9ZYmK zItaq|%yyTev6j$75t>W%%u~=%P)U$TfI|`@$*e8)&C$}Q*~1pRyMe^_pVZ5Cf_m4!ej5|8gf=Lj@IH#A(zmpSP%ZB+ zbSib{O_HiHcnp~mL*cWP z+LE8IpQ-*{?>`~qb#M;UHJKNh{*PVD`T8?r6GvY_<7G~Ph8STE9kb^l3apzpx!hvb zyzMznNTxK(2*AzxV*9wF3Gce)z&=OIUc=z8R(s~{zjn@8;W&4QC&Q&dReJ`B-C8l? z+M+4kv>aND-?j=X7!2=rPa%)wXI_&+#6=MYn|OD+$ot&y8p?tjNr#|JmVe#vIr&2q zuloF9RbCC}Vyt2>c6pyYmPdxx-O?Vd;9|GQ2~Zuw#BeX)Nz;D70QUv+YyTkyRb2yL8iQ6SBLetb%i z(FBAO?t6t}ZP2U>x$+g(;}4H{%XoyP6vBZ`{RxEM3(sA~?nsP`4TqZdxvR2Z`qs_d z3<$eq@$CkH_n}0@AYmdEtABhds3N(_;Q+1>s}KkQ5pp>t(@0YIE|HXjNbRASi7+ty z*JZ*Q){#lUU{sF9D-IJSR5h)W&AwTk`ecXVC1LEX6o*-8b2?sIgjb?4K#)lU>3r4< zU}9DT*(&kCWeDyX7C1*0ayXp=xof2eHJ|cypE>Q^J$3=y9xnt^xdor?cgAJ$-g-}h znmmV~%5C-7t_o z-#c^1%-Cj>u^GYg`f|wo`(f16TZ@sZ<(g4Zc?BdhODU!zDg$Y&YC4&DSN(OpOg8yE zcL1=D5eT&w(D6>g8f7z~T4!nF!tz z(i1H#!2wI&+`MQZgL%GLxsvBYTEeE|j2H6?u?$ds@rE&7?~xr#J|4z@8?&*s7InQB z^}!~*HHAu?kRMs5l(4zF3>-p`rhtF`+l-n-!Z9}ys5PSCK5*dp7N&nRem{A*Gb(He zDHFn*ibmt#jtKeMFON<4NT3@Z_3yi1FVyS)_uTn^>HKY-ZJpA?SO4)!(!F=NWXVq;SlBLr9~Y|x-9=2%~ppn*FwHdxRPLWgVb zU4bO%_RPY*)j1O}hQZcl>Pkdn@;Fq&E*hJ!!ln<3&GUg3b-3I-K-NyfP4n87Vk&AN zRPwh^mZnV4r_+`)H2Qpl0D}Xc;}oYR`3DJ|+1}H;OyVjmUK{tW6a80FF&!E;GJ9LG z(pYBXA?;1t?X(311|*Yc5nB{2;pDIzDJ-;xeu^1KFJVfmB8Ic%_*m7>RLttF$%R*p zlbfxzo8>BwVQ~O^@{CtcZ&v4_rhj zENnp$aOSc$(gqln#ugDxgvE*cqX3UcMSnZ*@@37)d6yoy^G`@a?$QL^yQTYk`Aabb z2_X0R8kZ`RF4(BbS*JkN8%+d39`J<&8>}mI5BjXOSBSN6D)rJkJ+g%t)>B$-a|ZR! zrcs52n^FqWP;`TsDohlmZwucdRWf0X0KUquPQvZv82+YqlYTjgq=_0`UWmHF`4z1t zJQKZ3ij5@W){^fB1+LVSJi|U~i!)qV!dAhY+}7J<`#>^|>ffeyZLl;-1BV zo&DQ6rlvI&Tzb||V%{1eg$WFUOCkJ6tEEER>kl_Mh2gWiMY+UVo@FZJVG;!ol!63< zkcLr=Y*HNE$wI3nq)tmH5YbSkwrCtAERqq4o^k&YDLJ?#)|ORV0}Ku@`d4VN=F)@~ zRe8;Y@U(O5i_w+RDUN=_X~goW*)-y)N~Rmu*j)Uh9NWp+%hbqxg2^Fi5Lz z1_B}=Hc*O@VtaDmnI_HmhCnM(57IxI5evKgmc?mjRH>~(8BQZpfp%kTF=f#5 z01^?wrv1atqZAfwJ2;`LoUP7SQ(WfRp*fsOIc}bNbre8I8ZDf_3`7>Og-tdHhcIIZ zTQ;yLQ9P+U8Ps+zOo|yYdRJLEu9U`qFLBwZS_|NM#FN3E2k7)s!q2n zkjd0HeOpfzxVSx)y^Sh@d1vcfV$~FO?PO6RqKrgE81Q>67+hFUV<^_8t$F=T%PJ1y zm~m=8^8rnJD5vuK{zh3bKV2*PuTcNnbFty%W97P-N6X(T;rgb3gMmdyys)fBEApsw zdDkQTmcQ?`Hi@V;@Gi1{?JjvR7YF$uxkG` z&z|tLGS~N6;O(x~0?$EuY*bmQl&q+gmE1KCSam%nL6a0wRS;EDJr&z)zYgU|b> z0_Jbp-s*1Z7=KN99ce0?4Nf0F2O}<_z@mwp*I=Ui6s%ECw`j!?=GavoEUM1Bl{kH- z3@=@ypvoBMn_&_Iy_3tR&O5P!+cdz>x_ z@Os=I=k=19afRqD5h2Hq4+*s>SWGY=@2~ALHFxv=sj6wj*c+C(=l>pTLxN8mk=-|* z$V7N4b?z^~9Ham1!u?&>82modkJoAkN}B9WRWHxm#5tWFcomwdpl;SwNF>82z-zhD zU^j^q-J!){zVURjab5jNK%gD5P$a;e!a^Q_2$D#m#MGhj$P6xWYW=)j$0ETcDCf8+ zSKr?ftGDgzqiH8<-Zq?V#A;aE8+R2&XxLx(@bYYVw1y|YH+7e~eYx=#UV^c5;cjxV zd3HLc)&I#@YF^aPdhkTUZ=U_F?-TJx8f~BEu0VvOko61{Hd2XQ{l({8vs*b+DaOwy zB=CuA`v?Nz9T5P62M7tlKtiMbdtUC=0(m=Gv)ecvHPZjN z$4K{Sg;=7$63&;`a(kS#D#Zt7ufs#>(BiZ0b0t`(2XnQ$KLdS{<#hHvdz?pPhY*Rz zEtbC3=x2|Y;;D2$0P%7(b1JF(Xp#%=CKIcON(3qDcOSY7=u1e2B?A>&&uugwZ^Pob zOI+p$Sg=5|7AP|#G#S>kv-sP&I6TTSd$s432Az3KN8m7{1p~;ZRKuXi_PF}@`jFOO zW`^lKqcHm2nk&MdNA_|DJ4PY-v_w+FY79xs~MG+KI zBNbq(u|)x3q*Wp?QYfM#AfT#?GoaJRVvJGZ*-t@d3%9uo9^Ix^Z+SLMmper^Z7WSi zo4Z0u1Q=zN07SWtcL(!wUR4{Zbe$&e+Uirax%v5977GS!jzLKcMq%Ik%wf*=dVF33 zHFbFR)*;lo`YREOqwD@IGK&4pEJwQI+(hQtUERaK&gGsSWy83Aeu^@%+!dgD8xKt zD2wX<;YyxO$#wK&(#$ap0mewcc92{yB8Z$;d$OsJz)Z?-#?{jBz4$&0{}?FUDO%{-FR1lSGqs@#aGIn za5~GZFO|3{S-{n%mUcYUJN^L$RwbbDAe%hkN%9koP-sN$6~*c(9(JM9{o^lwuM$B% zK``ft9~JdGr9RF7+-zmK|L!H;pJIl{^U%8;2XByN$EUGo8QL)ACJD-Lo)ZxRcf2#E;wT|SuOl}zJERU`TX~n zL_FP&gAm1V1=bKa<)C2|6;w_0Vr!-7DMgBQv?}Ml#K5TcmQnK!>93mYu6f^uN~_Yd z{kyx6J|f=Yo;TOiA?_)-cWz9I4DnZC$2Z_$)YR1f@0!D(4b|Vf=MhY2bU6#dXyc!Z zZzx`l)#uRBg1uWuVJf;?^>ntsjd0HsOPgYhMF;BXedzklTeweJ>LH|?)}pApO%)XA ze6^TGA3)3Isd_Td5I`h!HZX5mf54B!E-lb%x8Zep6nIpRg}+V+BAma&sxS)&1`k$&LK)GM8d^sYS*7iV$kc{rP;3Td| zMzyR}QMd8a5he!3SAE^%9+uGoMNx<9Hp;r)kUbomt%ZKF9psMxh37 z37smi7lGe5Q;y9EITcxg`7QAz9YX4;e~0S)IKm3T97B%qyzcDA0aO?Ypu|}E8f~YS zGIC+`b=;~H5K-+(_pFU^|iSfokoo>J0kskn_mX>PHV_%#@l_ z?4q1pbv)f(t44iYH4Hb0XruqzR6zk?hP|jR|NC%Z6i0o;>v|qPlXp6Ocggc#A9wBj zZ2=8!DjXiJ!dhJsO-+uYP{i;KnYESX103P03A0gtyhJ9A;L67espih`!h#;}@eml7Gd1jvRulYY)g2h;ZDk`e4bRig0 z09TMEMZSdke51}RVIt~OHt-Lt*PvUKR%%@Z+n~70c9R8f;E4>qe`9T}MG^NLVYV?d zkYFOR7-)2yff2f3Mk04F?O}K7K(7eI{Z>+oQ|_x#AXgQ}T)=5Lhro?9!;Jy@lu#0>xtJvX1i6 zBB>QcRRl#kJqOk>0QGT`E;=Y|f+}utI7*TP3lQAFnzWKnX2GP&( zXk%fUwt7}%B9E|sYl+aZ>7jO7np+divYHx;6-UB-`!Ms8ixC&=I&4gH{6&~YQI$~y z6hZThFTqMZXAch1(!%b|es3>W(FUh7( z#^#@<>i>3(3Lm+mgh2%{{5(d?iBb;E?klq%LjLi$RQyvZ&iX zGT!C6GQ-d*G68@l938usMHvPnD5{({`SD}g=lwZkr1KZ~yIN)J*lyiKGKwgh%SBO& zqY>lV2e%R(q#lX0lfRIHj@6$m0$pf)shUg=?<9%1K&SL}K$e4T)LsuzNo(1uD&P|` ze^C>~Uj#CGYFbDg@Ftf3!1ym;^fWKF10ql!pvV#Qf2zflhdwU-AAY1N84QB?3ddcD zwu#5n^)#XIMppaG4t(%rW9qp$C_N9O`?&1K-%oD#x=&v`<2`NGzAtSNY;0_`^S7|y zlLAR3f=5D85s%{DCMo0Y91K-gxu=tG`O8@A>*>d_&Y2~`VKD_~e`+YGW}ZvI?u{BV zHY_T^{kBo=?5YBSkz*DtUc<58?dEm*DxyV-yQCL!gzn}Df!z+D`H^)sBH+XmqWmVX z-X<9gI|QIn%!Ef~m+xdi(kb~Bj!Xejv-~>J3~&6zird^Lb+q20%}uM3;h=+F73mQM zq&hrK2=I15BNx;ptco6{mLKO~@Y8tYZ!9bBQn5xdWXW0CH5M-6ltg8%m8lUXO&GAk zSShxZUA7rw?)@LY$3b&9f1En;-*PFQyhT-1pZagKv}f?V3?6&h(^EUd? zZ-I(wQ-#u8JI45quJAGo5mjQ5Sf;HCk0yt7n2xhxqN1RVs!;{+8x?-));;y9?5v}@ zrHYEE?B4ao_4gffj2&_qO@C`}$HhE0VBcCX`sDYRJRYs=wJ`GEQ`1wj*5K&B4cA}@ z8y@|bkYGIm5T=COkwn7%$iDN{_8Gg5_nxA@n~_$XH0EiH3ze=`4!ZQZlG)vKGB1is$mBZjy`H z?|8W8@~4aQ9d9V}Ekzg$6xgziMMV)ygb*N-d++6DBh5f44m7p92amodo@PuK1D;tcBUDddp;uwRzHGZK^G{%hL3Cvo#T zZcH}`(`di>a^upzy_@EA&R=~(8oeEX<})ZirSSeP8S7dqBfab_!M6Vwoyfwl zQB-+oQ5B!anvWgHR9&lGzmMy2>3rWqzwt(_@!b2V6c{W>qY!v$zQI@4bG@E1yUb{2 zkS0z7yhonP#E_iAfF?vibcJ*N$8^sFrjR5l&$Wt*tm3vXVs$UmaJWBjpv_34u~`?b zXsZ#1)72)!lB{B>zp{T0D5D_3K_q)inoQtc==#=k42#MQNbK|9&>%;+@R%_j^$c8k zdwn&t!1WqEE_u%;>GhUOn4|vWs>KiHLaPOjL&Twp>Y694OCOl-+zKkY-p_-N?%Fha zZnMW=nh1x`Y5w+*duv#B=u&d+Jx!vDdiMO=FOOvtySGbnrwc_gJ)H%e1}ZRCBRgdP zfgqR@R~dW^hlqF(d=(5|ncI8K*w{Qy<9&-Jk59quJU@eF8~1`{Kub(^+McJXr&-~` zR@4HU6#0u^a5A&l`z|(<`jrEiSq9C`%Ra?E+xlB^>84xfqIw58-c^Lpl}FoVFF06` z!gFOSf(D{j2)S-b^$#aY`OK=*c}PD(jPpP_zr)O58qW4x81vIP{5WPp%_f(sFYJGTFg^DM%?f1sum ze`5S>SSZ0z@=f#JPKSq=zE3rkin0D1RDSI)x^&(r!OZgS{eAYCh>PL3@90%IR;sUy zp9k>we;a+;b)9jm)vvVayiPAf_I->X=PsG67kjGjbH zv&W@8cQiU!Ztn3)br{M^69-R6fjM;czD?UP!?m(-djJ-}Yw)zRGAQ0?$PB7(ba2JP znU4?2 zJiDVKBe(IrmXGetl>|eq+*6m7_Kp=rJ3B!qQ9+pfZ(;5F2j#cT<-cy0|J!gBK0bstl_sqg_pLE0CCQMb} zH{18O*|{8@uP)*UtY4bdRs%A!ii)7JD!~#g5lE^E3M3e;ML|VTiVCY1C@6@cs*17p zmKA`cSR)Y>imM2qC<`Y})M6t%ZwUFmd;2k?U{v=h7xpK#^nsh8#Dg*&9XhN8XIhskjN+U}E<^>5TO z%KatlG@7O&>?e%HnKd|DpN;3`*Tlk5k>tIY6dsJwtRj&tBJSC@1ARzQ-d23zsDokz!{shXb_WpviI z0@Uj{iG$+8HmzM#7mIagyuaX9M;&}NsXAnW9_*nh#0N}Bw|Z{2JMV3gtCev=qQwvUB>rY#>)sx<$X&Zsj6{m4qJoYO zb&rVg6C*a5+Qj?sxW%>pLFj#sUt9XJzBS9CsLp>w482r$k`Qt;R60Ic!wL#H7Z@-n zsj+6J3cAf;jC;CQZ8J7N+ZEs3zd=IQtoI&bukOi8YhU(3i(Km@?JbP$q5wasV^%upuisvr8 zoaNf)J_`6*Qtbp8eH?gD8>P>)!E<&=U5-aP4fvXO8j#l1eD^HA#7ZH&kVHOGU#6wq zH?QkIdnuQtwNXKO2BHe8DyS+u3@RPcRbY%1PqIp^i-yLwD0*vPtLzXgemhnSRYe%X zqDqQ-WbYFR_~}@qGrHLDn}UwBRr?lzy6sU#Rg2wH!@ElCQlc?nAfl-jBC>8-dx7w= zNQyd?JREAijW~(ia=AF=ZfI*Kifay4*~JuCovkW*p3VNgUz^sad?DiuxQCe=;;!&} zCgnKc3A~pw#+iQ@zu2RN|Lq={d0yt5VbjQ62^GJ=H~JqVf$Mq+vc*bZ?qQI)aSZXJ} zPlk}fA2l`^p#^~26+f9OVGVcMzXh3!$fQ^Z`wCT?ck%I60Uq7`$M^EEUV$Y~V1;7O z9{+9&4Oir2Zva>0+akqPAiJ(Lm}12@TxxcVIZkLDQ#^785Hj+%xJluqaKv3pFp~+g z$|U_3r>{z9c!*(lmSni9EJrI>6jrTXis9EukfJd}Sc)D_(8#jNQnr_6=$uD!o-j44 zBNdL;uImO`|BG@t2T7u6OxdRx&!nN8Sg6Gj5o4`s_ibI;RalCOq9;t&DyX7uSydJY z>!D(ETEkM)R+SXlyI7#HL}IF&mch|W4gDyJvx1ZoDz3$-DVlBIls710lL#n^DyF+~ zv{eNa7eLrCW*M&GR76!pM2z~(zs_lXKL6XFO5H;>V__Ekw!ZxP3dy{uc&I{q_$sXTR;InL7S(wg)G-x3HPy$u?eV*F&4+-MR|&ITnB*wsVXSPxccm2QzoO{r#ws+nPd%CX?<9x0TjWRLN2o( z!`xuBNhYhlFQmo}4x`eCJUN2fPk2y!JYpLDHlBTl{$EL*=DqWW%08_YT`KN%Rx-*kSNl56EX{@Uz0n`6RLqc&=H#St)w?-}%Sw1#Y z`i2=W7Z$-*(&|3>!Z@WBGPcui7jTsYR(+E!Q50OQ1z0avsn_DUA|fWGpd;3$pIv1| zSfHq)BM}bG4BSQtqvG{FW-^Ra5jFSxe5Ru_79*))`p!K)D2R%R#Y9jYHoaY@lrs>TdwXrR4CuvjU(v_wQxQ*p_~yUf;a6X&`F5JXrYu~?jYP*N)qSgI(4 z75CPn#9if;MT#pK_Wyyp^L|6&{687zIoi7T@t+fg#M_ikMaviQ5}P{T)BkMdf6r*e zQ<%!CGot!@U_^aGc+D4@(WU@^M(r|-zC%eLltfkK8&FL)ibV}Rzb_+Gab!inyhiH# zW3z0lh2nC0>mDirJZk!&xRCZ<$IbQWy^|HoUK{ZHO9t{FTd%zq1_KcHIgBui$3~_= z`56{qcv|;L*dWU#fjEnct2EJ%&(g&l%Kkmgq>=1Bg+I)HUHW)h1+UE3m;p+xHi(Jg$g&d|@!bM--kHjJYa`^yqkazFV}$ z7szbWXD!Yrk<+n^#aMVYip2zVT{x^=(@!eZQ8pT@rphC1ZBcvAeSY66enqS3?HS}# zz;O-Y6!!ac$D*dcl-i%e=)d9ga{1oDzt82hu{OE;qB;N{=d}rjssbR4A7QI;6fl{5 z`vZK#Ty!Bu0>R_i+Os4UY@yjQe#11P_|^x((`H^8cw79Y-tOlAYI$r>+*|G$IB7OA zm+M*~idc4Rpq?o{kNdL6{@?dLt(gj{nzpNNvVW0>@HvVr`V6Z4*UjovB}4dIie9~_ zD2GXASW=NX2A)Qh7ky-)iW%C7`};3P_x+YK1q~LAX=!~X3`LLm*((ua48M>5d1R=@ zIW;R(RA-u}R^lm>QzVsRiwcM-_gw6KDr7m(sTiu(b`Iw&5Jod0s|#gS67*P@GHNP# z`b(_K6?JVDWE5GYs5{P|FEN&2sw|5ZC^%^qsZjw%L|vv`DQEQb)WF46`ec_&Ku~gO zh6+;&Mn)%~vVgHs08xyK1Y)dGJB?gSB8n)mM2NvfAi+@)g2C(cu?!k5no_EfRYgQq zQHYAES!5JM(w0G238mvRBtuq}f`*;CU}8IVqQ!!YSd7=UJDOEh(v;1V1Vls;1Mylh zf(jbh{+?L}qwlOR#ZytJsIZt43Rfnt?ER9HMA^Wu-vRT-=op$_hfAVzD zt?jEkjh>&0!^zcd^Q+_HyE{9hqt)rR{dD;p`u#6yj5UP?MG#M!XoC7wubXUK&t&?p zr~V&{{ysB#!Rxv`ud3^NT|S$ScORmg-S!F}O{Lcg7tFSW!Q|z-?)?V8h==J74k984 zUx)z!K`}TW2fHy2fn`w-Go6@VtLL04iA9D@VaGy$%_ezJJ$nN;#k$PTxS{A!!V03p zpW-ej^3uBYQBU>L(qgNU8-&8J>6)+bu=HEnPuWAMK-EB1UuM8KYOWfU3#)4l>uxY( zDpm+C&$Gr4sI-p*I$(HT7ZWUHgLP%~2`HnRmMWl(Tc*uzHdaklu#exTBlNc0;2#nT%On819hjOymfFf{!i;*CSgj|8zO%FC;rnwWX^qF$Dx#{W# zmfpDoAC$WW^>EGHc=OlX!?%~XvOKgtPTXyeZ}v(Pm+nISI!R!KBB7cCbI3GuhPTU! zv)}S6nat_$=~m1sJ@d4+913z8&hJXYbj0tFsTrB7c@n z5L$>Ztp*o^yFejz_m=yQ9%Zij(82u`-bl#EIAs`w_I(w5>sk-$j5SAQnB7Rulf!;E zTP6K0N}WELM$f_KoGuQ0o|D+|cLO@{Ms7b(u*k?&Z)nTG=`Pn{Z!?2;u3snF=i7)= zZy3Moo`>ew-hBx77x8&`EF{2#XwUr+_r!e3B1CPE^I70|pLg*x3}|dW%$_|l@?S%M z^-rhNEIzyQsW3i$sGzbwn4#%f!wQ~>Ic&lru}%{Tp3?ek1lz@mhREKwDV7$~vUwN+IVRRuvsf*{Z2LZUi9GKLfC zSW!_uQcy=(yEdl7VyhL1m72ssvbiDFXMV5acYKc9X#3@0De+_I>y-Om(M6!Bf% zG2A$DmfkzZM@eSRo`pYmBB1{t)8hi5iP@wefP+U73__|31I)@qy<8IkN0` z!QQ(*n_UIsQRo7 zN9LbW;D#AJK0}eA!YZ*Dk%F}M8G_4=T|b*TZ4@DMBEQPg} z!Ii2M!Dj+9T1!Iq8+c^oa5o)-vHXf3V}gK*5K$HiqPsprg_Ox6ix&kMz^zbup%2_tR7VFW>Sl>~}qv1B~#9B#;4tFg>aoEv3X!RQYzt7O_!L zRwAgY@@MhPYgJW2Jxwd}Z)M~( z8RREJ^6}?#GjNK!Z$Xwv`I(T6Q_C~o;H|Zvxy8l=;@icxDu0vH;`5RfBL!F{n|yLt z>1khh!n1L$aKYj~Ns1(1WxpREFD#H%79xqOX!Q*dpT~Atvyo%zJhnVjmer?T&DIYg zi^H{3X3K3x3&29Cn}?X;iOIK5CgJZbnl*4>PeV*N74?{>qW&!K|OcQAK+BUIJJ1A?j0sKu#E8uKs$^ z-z^v6bJU=uUMPKC6^#CvaY9(Jn)R?*H#3>wtIvAuifid=8QS&9m-sBvp=(dSBG~>j zhReEL(vW}o+b98u_rmO7LIg*L!{9Wq)%z7>BM) z7(E55q9*OE;j|O(DGH*Zh^o9BXQ*n;Hj1Kni&a!b=OxFLmO$e1Iei?&522$-*L}VF z8XGG@4XxVEFfkZhCaNGsM&WirL6ZJk43?l1h<2Z_T=+6)E5C=YT@7Irf!_)TzUr*8 zf$P&B5pC|F7e%hiI#ZfI`@0E{z{H~>7vUEzvOx;WfnY@1 z2^lzc=ntmoKcSjk8Dj-|E_E<#=YyS)Rw}AI0?=KWRYXQV36>%uyt9VjOzBTAPwVTl zFlziy<)P$XJbz>C8=p@(6F;(s^|AnnItmz43YF*180X$wPg=rn8@s&jiF)58-mR zSrbz_ZeA-4AraFc+ThZCv5VN!4!`V6k=^hvJhPcQpC4xf|hbO)Ja z)J+U3bWQ484`7@Ag3WhjCWa4~wedEr7`vz`!47%D>!?f{q(BhzM4+D>3yiH|#c1=fP(^d-F51rF-@J|8>-e^A6ICYu&=zFE zvKqQ9Gee?b!FLW@cTh}rcc(*ryP>T0Nz(LGhV7fSe5BP*joM9wy+e9VuEU<`d3{wn zB;BFMo+cL0ENx;|7@Yhm5zQHq3UN51q|a|F8UtP%!Y2?${_6 z^?pM)w`jmPAr2;drt%Lb8q{7a^A%QRJsAxF^k~|Bj zb}#iA4|(<}Yi1>kD?MMQ)H(sEB?WThPSkPKzE*>BuRyN06?IX^7=ZMv16YH8vMnLF3SrFj)P>grPrew7 zzLw`ukE}0m_{LO(ZQDx0DwM2?1tEg2&8%A1BhZLSC_|3`fG?Nw*tb<%5Ht8^o}W$c zcC_xV`D*H#+l@?M*|m>lLcD8La!RPbaKm`a@~x%ndMhi2F+Oc6_;wYGm8d9$m6NN_ zy(SWhQB@yUVB5&C=|3H)(~A^Qr4rJ17*7Sp#lwhgGP-_MFm`_Y_&x4MVj>{!S}_=# z?n9}7$rT+IoWv_XhLvA0_%{ObTCm+-k;1O=swaVZ)cP4!MBlQk-g2>oUKOIRk+O)y zRb4myaV3hHH`Ks*RHmK0VUP6Q`@68oii-tMRTgYCPo27_r|x%CuHJUCu(`U}2l^w_ zTuGN2X>%N82p4OwxhAOAwl+N(_2hI};-^+Fjw=pB9KxN#z8v0~C*dR#K2YIK74jR} z`F_VWS?#Sg%V1?6VQALWq-PxuJ1Mv&?+>le@Fmb%yYB-)!Ss!cK`DgfUu6kUGqtu|Z zn==`YONC$!pGG;j_&@|e1O$OyqAneg-H?TS=}XpKDY9JY>dl{!g4B-V2z4EEbu`30 zKsTZUU)JohBM5UI!?0*kfkSdzc!ctIt(hg4%%RU8Q4|U2pO|P4gn?FVG^&1!JI>xCF;X7_VpJ6ARfzTk9x ze6(s^-ldPeq`JOi6AbulJaSIiGJJmihXFRTv$E=G;`daX-4u%t1)J16&l_f{cREWr z&3hg-l_nXXH!c~WJagcr-{KY~3;&=4*76@rliLe5IQV>AYTk9!G|o=TVvYXUcPOFpm1(yP?D|lXQm#J1%dL zz#18?c>HX-$0+?}iu3O8SeIQc3D+%?{T>B_KH&27qJwMI8FgL zL5L8Lbb2X5gkZzjntJMKg_|68Akb-DTB;S5>d+b#^}YS->x?Ss`D$M^ih2cBnxT`T zvQkbc5gEi2)|rJ-yvbL6Y|2^&0@*kK~!tL>ZAt=0YoO7TJEJVo*y|O>~~d{bN$f)PYISfJU46&54ANo4XJZRj%c-;I%m3Pp(f3qW=soSc^=6=I)n zY6_~4);0?bzw=qceer}z@m9{@effmUdH$Wh4^wzylx9IAl$FjR{hmr}VZ~YuMAi82 zzA7o|8wZEjV=SxQrGD`$e@!Y1#ZmYytYUR`n>6m6BA#KD^LD?y*eVORdUjzyewARV z#!qvBcpd&Q zFRtO`k&_HJ>HN*Y>a}+*L=;5?z>(J#YnEmEB{?pePqy0ozMqqiG+_?!v}W(mHPCg9 zo7&c^JL{Re9UYDM;@T#XxpPK=S@u+UN+5k&&z5d7qZ`DTj`^{~*u)Jn|Q zSNIZr=5!2@9=)ewYm+-HR1^LTvM7ueE2hzZp5M>3c`x9h+GJIS3vT+vqmvKtXQaiQ zT`X1EYbJ!BtibjUjr}h-gXrpZ*oLTvFGqv#*ktRWnT0Bo`~}a`t0_@bMb<)sa&1-iUrTjZWQ=1K zrD4TnOLKp56}M#kY#@jz|GYHswm8rg;AfWWqUla zffIjBVik0Fss&DA&#pUP}$0uv{^(@DR26ySaOq+{hv1G#hQ$$oCKSc;5K7{aku+6b`} zQHrP|&b1IxMP8oNP*o98h%povMcPUr#Z^{DD6AA|{F<_v< z6jd1LN`l1&6h#&yD2R+jNFt)DkWoQJAfhTF?=2!CkwuCk$c#oRsw#+#V;HKj1|tS5 zy-7wpRH&lnl|)#iRTKxZpi(G`tXQm6RxCsj7kz387xz-4BC$s;#lnnL4XSJ6yYvdf z4*{x(ix&;G656X3lKJ1U$K>UHJ@Z}1kodlr)Mv4$ab+KO+TZ%QED;o9oCcgEtVBjC z`xc^oU94E5MPGqxqYxj}N-Q`{QoA}NJAB>iJODp!zyh(u*kcD}T z#e>vS5fopzWUBBQd6v&+{1m{7D5~`ox6j->XXt$Vj!QBakE^ueUtZw(R4R_Iiot|> zFX*NYs@L?pOkq2BKbw(=D-qq;=x!n^2#1}~=l!;WgM*dBhT!n@$aED<5941TVAIh8 zf?zT)3&b(!?TDI{Ef9)9m0=jL=X_)N%THPHs7RSTJJ47Ij9JHFOyoS)gw)a_vPR(Z;>Pq?x2hpT}C0Y|@1Z{o^QURwyxG9RHx1y^u z&IgjJbIG)-b)j!GUy~aOKcF!&e#*9@^suw}(Fe@HivFWbG2!_*jO1yEWs(`y07+Xg zfu?kzqzKdUzF*myH7%N3we|E_O4lXGO|cOH5g-77hzc<^lZAuI_?mdW*R|ngsodGT z#alarcFHvVcDP^%-a!?#(bCN9=!#xd&>Y``)p}>+NC?_&*m5 z2o8>7rbPL?Pul%&PKy7_VG!maC5Egn1Bd8`!q-l6L*Ji=Gn@p&H0nUzdY2w^ICrtLSC6cp=54| z2XILNBo^WjFynCoYA zBKMez$;sV}CiCV3VjTAh_^{QPeBG&9PJ3$%d&hot*1DD#xa-g@v3N4qy1h--=7V{+ znQS22azyJEN)#qazO`b)2(VO5mZ^vb5Qqx>+ZQ7!``RD^L{UR z==1ZwD?XI(GrjfUy?>V1(I!>f#U%i9=A4Tu#-12h5$gzGn|kQd5wHotnog43b%$0m zI^qy$m&bGwAogV-JHIQF(G&&T3B6Ko*{qvsMK5iU{d2*-7jb15y6eUPXQWO0Q{e4z zHNT*^_JfgKr)^ou7@2{iJj1kM0+pN^B!mXRVL;b4k(+;DrVk?B$HE^-nJ|{BysPfz z1cMQ5nMORb=l7cW62F|ms`iX^?Z&O#4?DXc&PH~!9g<@R`_@7Lgyb0oJEM~Y*PhM4 z9jIl4)YF%5JH7{!;})|{H-p^>%4{d}GDpKsGo_Wq3y%@eQ$ zJ^|~A!HslIZ_B6t8Tvjx{g0ie+`cc^`kWuZ{Z#v>zCv}1pLl`)WQGQN)C(A(qQw>u z<=%_>yBvS#n?wFcdau6zyideo{-^p`HlMyiuk3%X;OzVU=+QKyqAID?Qh3)L)fG!z z@kF#LygU3}lk0ObMMH>`RTNZ+KBC_(Z1*jweq#xU!{yS6eZ|82&#Cv0J?Eb$BmhVx z4`i3V_uhp*8oPcCoU0lb{X8H)*p?d#bWGcZ6V5h=Fe-5K@F7Rp@2pUyl9BbH4cL+dWRuc zr@~E~SAI2|D;8oIuAGIgm`IE4i6=+JOhF(W*_LuTv@JQr6QXdmSR(>(_f<24eVL)= zBr0|Tjm6A)MxC02Sde0YzaY?ISr#zRWfF^)FmlaSOOKChYS4+xtMA^J!NCJVS=`!) z8$#Dm@!3gO!y9_oqh3SH%Q7(J(#$E|Y-4RZZ04gsKO(Hz-`<-Xl*CluCrOG5xcGMh zDZ+aF&PO9ED>~MShK3b_EJYCoMeNdvm4>^4UTSNhi1zkl1>81%E!9J{a)_YF!&1$J z!YCp!Rhe2FhIaTY9kx@q`>Q*|GB(iNy!T^tYiwMDCsSvi%E=Q!@pHz6R8c>lP7Eor zYJ#6P-Q%a=a@F_ST`mJ;eVIq-qul$VCT)4X=+(AChoqbfUFGq7?XD#=`<6qEJtp3X zG4`>sXLw-?jHM$-OJFQxUnFwzpP@k0s5>QGN+49L$4pl)L(y(H?`K?2W2 z=v%!o7vNOT5|YsTL6yZLsIYH<*fVa|z)Bc84njqXF@nNN4D;DH;H>ON28QS_8Iy48 z$w{PsRf{N_CcbE?p|&w!SafG(JTzXP^b+QfWX@UBM!ycubgz)%v9e|xweT99dv{e( zQr@Yx83~bvXSYh91aL;ta~#w=_;6soVTskZ4!j__q(X)cY+1*Y_lNX2Sivp(>J0*V^#t(h4WG#qxz7qsqZE%A&?c&(e$H9_s}aQPk0i?J_CtEfi-l^w=mWkr4$ndRiA2^$r9786H0d zUQdUalu;2LW3>5R+2qlz{>602YP-0uiZJnFDTC4`nXr^_h_23Oa#F$n980 zVh?kI#OM<2+un8kS5s9KQOiERq#kMaLu*7$*t@G#gBKpUUp-3h7Dr-qFa612VODtL zuJ4rowdAiOfV2ewo^J@i%Hd#2x<-V<8R3hp(4BPF==W6|l6GSxl(s8M6W#j)yHHbX zpMgEqL7^q!IJ#j%wY!{9Rq*gM^)Tl}kZAW-WDOEvV?$h02r&VA>OsIE+q3$qM3=mk zCM6K7V%i85Jc3s_5+L}8kuwKb0DX%F!kBEX3#F!+r|qCMZ7FS3R4{p8E{7fqc1y&t zT-uz&GV&~mMr;?2tzFeCpRw@k@|z z{1WT5y=n8Ej2Uq}bRNjXbaR#)>L3#@4Q>`v(O4I>H9G+c*wL`T(;-Eiq7~j^EcRR4 zL0Y(HJk&MpT-aQ(XxNe2qDasJHmiQTB`FiD(=lLnmp{>S+>e5=UB3>q}FoJ z1^q_8rf)6H{aXP^iX+q#dC?3(@@e%L_>Kl75g4&xxmt*deyuE6#vp?ie%_5NV9pm0 z9^WZ#tM2T=VMxV}pF?p6vG1{)k*DJ7VDfH$PTgH=jt!~pl8i^w(}Sm52bIx7R_JhT zG|e>OwDne1Vf#%15Fffk3KoVSh)fpRgq{a+h+jPdPf#mm2URQ(gE36eT7W$3f{+p8 z5Vxen=J=%a4NKrR>FE{FiXrIF@EC=Mb?qc~VT0)YraPe+0SF=$q$7)+->A##G#?-7 zvcy>S6s$oMV>@=esue{;z8h~}>!!A*4Z2WOL}L|K2~KBu zg9^k!MSXP-*};DD{LD>XiE`ZEm)>OzMUTvDzj$ofe8zR}=~bQ)=6-HdMt)WB-^I@R z3%g7xBD^1*)x_9#b!o^=&aKjNlIYaN1XzMF=2~v4V6jv?w!PVdklMu%GBQwaV2~tb z5Qy;#+aMm+g}1%rDkhZ+Ky~){u4= zyAzKfq-ifgWfwwT6CeyB9-C3k@}1Wnt3q2L)A$|5Jzl4H`Y#WI-uB$}fK94V5H#IC zWrp#{)0|x+EG)Ik;pJR@*&ZBfXdZ9B@0^j6G-k|U;P}gBrypNa`|lrba+)!1+7Fv` zk6^Dqbju39fTZ{XU(xz>ho`C0XW;B=#eHU)Sj-+1o-u5wCJ@Je9h3r~m(?ZIdU0y% z%FS6U16Z3oqE7!)5k7#_(O3{?nCHO9{93)v*=V$YE!0HL@XxGq9YI_RX|$oq3KDCV&TipW zMj|VcyaWNiW`K#1=?E49(|k5}3No8+c^UEcTnwx5_Vlmh-Qd0XRG3|Mi)s_4qhXKVw?Kb6O3l8rWjj+@UX6j>@AANtSxWN#M}RH&)jN@-FbS9_6Y}?nYGLIZaAxe!RRu2AR+=V z!f;}U98lhf5cU3}_OjJ;VlYIAjro`lQR;KTAoyL6MVC3%^sbW~1-P}3!T(MD_azlk z^=(x--h!AJ{I>~#d}Tf>hpS7eN{VcHE!pt=k2}Edybi-tICz(W__s#m$>*1k@U#U% z75Wxd$RvIlRY93TkV*zSj^Q)SgLO&IuVjTxVpeG>Ykb8_RZa{77Hev|zXZd;$Lp~< z?-v&4GdDU>KD=}47q0v!pS`l>kYny!b%3&JLZ2<~j?Lo3e?)elyYE7Uw>!waKI_83`gaD3t5PuUp7g3x>O8$mu++1?gc@pPm9<13 zgES$yz-$_mG|tkeAUGriB$g_%xS%>AxJ8-F2LL(l8ZiKk>>BQ%g{cOjLX%iQk_~{c zP-{b;aO4VA2$mdGlZF=o<>^ddQyV3pfNQu)K&x!8UBYScrt#YwLh-v$d-~VZAntj^ zcf~2*Fhe^8Y)U!+*lk<$jB9N!{6%k(tc!6~x^4I0;#1FCjFTo!Lc;BVO7LQ6<#fBc zRNi7V&X2OEM@?4@8nVWYlW+a3~JE7h(lytmEoWZIJX@ zFka7;_usR%9yh|!-)z2SXg+kD;3l7V0_@s z8#=|xz(&Hz^pdhwK@)$gRj%-Y{RPW^|tl*d!6>{gW!lFs-NW8F^7phhA=7!sI2i` zU*YJ7C+%;(={~P>$JpXiWzR3^_8ERVJR2;e&F3(?ht0{}@Uu0^DO;!ZIXaXONSm%# zjiWQe3C)KbPWQ_cP#_04B4 zsGidcKJzgJ58Hm|t0C@H4N+kI9?#B{uU6;MUp>R`a9X=$>Yea=`# z*h2L7P;q^`j~AyH6Qj=0A?W|>jZGnRa1QiGPF_zk#Wh(fC){7{ z@|P%{E$T5%EoacBh>9YyIBfJ73mjT2#j>%R`%i9=Cripq4%)WQ(2N*@U<@KgQw(R| zxUI5`1nJdj5D&6X{771w78!tSV^e%6sAl@+W6GXL%5=zhQFc`XD=lS=B7KqPvL{XN z=dNsD0-2wttJ)!NDN5l?hxuA}BjlQ3=vtXW?DLN+tE`n*kVHImCeM-c)Hi0sqG3$v zYR$L&Vey@h*Sf-VL=0}s6~uw+vJ+fAQv`GJ6g*-oAViY{zB3Ih5o{vZ%2J{rnd>W_ zoh>XJUzd*DzRbe5VMV8CWE^rsC)G)(kz+!`zBlkF(4j_Z^iFw(p`HC4w;L=99c|@h z`-~i@t8M)3GYcKzx#TBgfx1O(u-lVTZyKb7ex}0IppXd}#w7^_KZCz)BbfGYDm?Oq87TIynNv7m6 z1C2_8kNdfv4l>b7d6Me56Ay~PVSq?YCYw<;UtU{29@4bKs};gt1P3eLFQF=u7 zWCCC9H=7gi6(+pvc}pLg9)sJ6jAx%B?w&(?V@Bs9=+51qnhnd>NRhiC9vXA){L-G3 zm~sfWo7S#LiBi8J3WfK2tGxXDs;+Ffm9v){0-J6NUi=p9 zY_p6DUyzO1eE)Zn+wC|R0D;9hF5<_NJ+94e2+OA(2~gDjRd)ft~4HF#`y5G3T5US3c($+~eO>lJgZ7_9~`OTXJ!1YS&y+y!I zh7F_$h67>E4UQB%ntb_gZℜ9|4v_HLo|G!lVsrcEbMdHNSaMZ0|+N{dvaS+>}+75aYeOsYMh_qDHx}EOvyOvg1_soY35x0d-C&8(#ei0Wb&v2&(o=0=r$r z!)aZpj(`SPs0Fpg~AUFkaCPU>gT$e)+!-RCM+Fc<=el429BZX-oMGOlyW;|r-R_DvN zZq!pOcdD+QMIv8~0MqBUoE?>yHpCvnrH(tVG%>9MHMP@?lm)xBKfbd7XUeNW<%nLf zuBt_SWuH@feVao`)6Ft|o1lAODhj2B!Q)M=^rH*#+SLAoR;fCvbH zdtqY+JR%VQ`^V?qz$bw0z@5LI@c&-M&2Ta{=xqJkhDF~JRcrJBf<4bm$)G(T_9`%Mitt#!>z9m|M zMK~>0>{71XvZty;3Z0r>Vt_!AeFO+36U=;O%YWu={F989ZwQ3mwWD$&-N*2u(~+Tc zdcKz%b^Y4totv>ErsjJ#gvjT+q%}Hq4#f0*1Y-L55XvES$x1!Pd$f=Ov)B=ciwG9^ z+XS)p`=0Z(rLbo;hrkvDO;g*FtQge?W2_fzf*SC{#hw2&mS41FfW9`|^4o2`CkaR` z4H^E)5vxbIb=?{(ikk^76T94Zk>S@Dj4FPm2I;$t^*)Q8-+gTpV2_W=A>s2`UTXy& zTHTXMd)BVrDUVut_dH>x`ib3@Xm|ODVmb$Y>KSBb zk>HqU8q8xR+HH_fgrnk96X1B1?V>=Jrn4I`#@0!AWDT)h6P)4!-3k~$8@#q?a$(;l z^MV4svIMeD5C6z8(4%}|qYV?;iVOmA0Jkkh07H~uFOh#8?c0wGz+`Qo4X-kZ@JOJ* zF^3exB#m*En7|BoAe$w=H3GKzY}B_9=dRo>h-|V9LyC>Pz|0DG!ShTYnI( z7PZIyAxp@kqk@_YOi+PX7oN4RPl19EWEG`yGf_wu#Bpdtyj#3*`T1A{1b}xR zeFi+^A(pn{!EkNhC|D52APE-U)exXi0b0R~O}jyvW0*mUK8G8-VQNK5m`PIBpDxD5 z^#MT*0{Gutp}10zK7fHY$0hxX%d0+ZwTTBwwhqcApQb${q9*n!a2wxgttnXQOCI3n zMySdNoeZC%JA*#iZ|W+T@y#*-MZ2Y<^5?!kH zC@W-M>hens6HsVW*?RMOEKsaH0bhm)l?qjQ-%&u!i`5s0BQL~4=9=0AcBD9&+o8GHPD5jvS}undf}z9EVlYl11#6`X*mo&8I0Tl=RT5GL zm5Vkq^tTFmckAA-t;lv{zMZ`7Km(e#wfx$!Sl3u2)0Y{*I)k16(<~BZ>N==slW@RX z^`l_gJUk`UCGxvB8)@s5yI!5gs@INKR$3ChASXhM);tcD5Opavo6f&_>)VrYPkpzb z6+>W42}p*3~6Z_KAjS@G0v!ePu?y7+0|EHK$- zJH2-DVMqh>uIVdTG82v`w_kwC-r}Cw^cv3G0MI--fNNpJi>aw~q?FZ;*k%Xkxs&NI ztO^7wmZTShsV#ild%LQ)Lw#ew-%!l5T?$lSIFqG&4Z5$_(P7$He0Gdha)7IcyX1B` z<-6|=PesezbUgk3<9=?mc#V%U;|{G6A8A6Mim1b4*n*;pA<$dO>3W>9V-W>ML2DGA zL(ktMm13&8DNT8pX|nY1o`Px^4f>RVVgBxEv9TwUrCy< z!U&3a7E8crr`s~1EEI}FVlqQhQo@WBhfJ9$pL_ln9j%o;ch_SOM|{>Ir@To}Q1&)~ z*?m2qXqhwK+t1UC5mb2XixkJ`*me#~`E5>@hfFG~{Tnu6PZf9W5mqn0XP5l@lBeh; zH7)-&vHI_MxaMR-G)}Adu`%)~MEf*8e`jV$h>T86s?A&D+#*HstmwY|x;Cl$j+7_5 zWTUGZ#^`dJm!WhpmJr-Ze(*rqz{H6n zvgH+TM3oPGD-{KDk@ZCrf&PJ1XxMTZZSp?jhBJW#B%u^PD2uOcf*nyM13QT_uYl|y zmAJAC#-{okXvV1Adu+O-Br{j-GL2;z5KKOMGXRi9sA!jpVoqiMeJI2`H`}z$i3wC! z)i@agYSRWMSC_iMldtLR8bRwqTz$0)&}xSDM*i=;fRrhSalM->Jfx) zc`W+s3o>mo93-M;b({|+ub%ES|A~2>C;`}Iq0y}YIjabh$3jD%M?dy)9>vCBEeKqPN~#zg2Yr; zgLI>cD5l{m8mLuRfUZ@=C2)!!>6lEhnTGg9136sxsLs}>;Yw@m}$ zXvo5Xf~Vd3%3+DhPv^ygi#$4RxET`><5H1LZJU8u#X(3YDY;6UmP)}#Qs}@|A=0NE z!ahFK76K(Kn4$f_zM1rYP6&Nb23>Ata1R%i{L{(x4JNi`}dTO)l*^-K=z2X~(LKygLeQB_BCO39%mRtO@f z$i#Bw;{d3|6j-c9SgNp9G+9Ly6-5wIA~6;!3MvYss)`D#s){0_BNgf`V-Sj~5rCpF zRzzZ=C@30TWY^PX9V~Lbozl&A8;la7Dj=ewD5{Y~L1G?z?mVvV?YEvQ)4l&`*<<&7 zrSuznwK*-~rfI~=6*2ja3@aa?*yGfCyk*9v4o-|?fSAOpC(TMCDtt;6QDEh(j3~i* zFUL$hRjz~m>8-lp@%{eM4Uq_dpMPz&6Kbjd|}Tko^>UwzPWd+w{B&js(gzY&*-%$m!O&3H1eUxz_EB zEp#07TdJ10Q1Zy=-NPP$u7LdJKpPEA5fo7UM#d@#qVKGt3#{KAWkw=(DedvP^cN?{ zSydHb=UR%sSFgqqJn~GsSUdE+Y#el8eG#4B@INb;>fB(dwOr3vqa63Rf*)H zne-~B>c%i*&o_P)p{$>mE>tg9U+nH-l@3>X&?z=%Kdw_4#O0%wC&jA zJE14uv9YJ0|KMbEr_=%1*Ue{H8?ds?xz{T()yP`$3mX3e%#S|#_y3oEjeOby0Gx)@ zoHe0N05lK$zX|qWwCEKUXS-j~=4446+vT!kVNv%C4Mfg%Y(M0pkuN1($-x+-e=nvH zP|2$(kzU$k$3x_A-zP@L);ljGaz^v6`d@~p#jAjq$ick&fW9FB5E`>cgBlJ=!`>+@ zsS@%XGeVS+)cVH^>U5sC4`NYJP-Pr&Zo^0fFp}b+L1@=(8r=i&CU=_^F_*0^-}&Q3 z4{=DfVNIN zhE5B4bsda=I^Bd^vr4B8##zIw2$Iuyh0qs`3{TcgiOlMK8?e}Qy(x#YQhUUWPvmY` zb___vj24mOAcQ7Vj`1N|JOBgI4R8Ss1RxC%@m1l%=;NzA969;20P3>KCj9JkrKyYd zCOsr@4`H1eF-&nw*KoY9&1GAnGiS#(EO9NnE^USG_0o{_0+O^X0LXXE$Bq;%(sSTaUB)(VJ`!3`<59Z?k>p?tO}P-g|Q$4ymX_d*htJ;WD5d_CkL^8 zUv}1a)~b_ietg7X$El2~0Jsx-%U{S=cy7&J3I+FiX5V1HY+MQzo%a9$9ALtxA^)#6 zfJ(N`yUVo@KpJinD3Vk^5x`{|_%64#9VKmhE3Hp+HVoiQB$((-OFehr8ni9Lf9EHn z4gm8c8A<2ZV9#PStnZ_-@=4avBFpklz`KnE%P%?hDzeqLAs__4Dz0Ft<@>#*%P?^9 zji%Rm^1hXSD=$Y;KY-IW9h|v!atXcLmLqeQCY?7l@bN87S$%+QMm09wgsip~brl|; zGBCalR1UVRUz9G|6cpcDm5A}6=JDXA3zmXT^>bj{xlyCaiDC@5_*yB96_^aU+|1*^ zOJ~Hbtt*mDEu7_iPIZY0t9mOkcsUC-*|S~`wuoorcmt@9FFUTofC`^J_7di>Poe*8iM zfYCg_r5IoYE-9@r7QcvIX5&I+02=}x52FehjStKYqGwxS8coV*y;zCSg>o7 zUcu!A0gc7kI(Qk3n5suMMuxREViFa%y((DLS?vYf4PD&!{%^fsKj(78{!d5rCnIPfv_0jo1L_EV8C} zjgrvEkB-Ip(r&FUCF!K8A;^q4B7A?vG%15tk`@q9Z3srKla-X}gKLOr0__D*)2@8$ zNFo#UbdGRwfhMEUnk*Oq$>K{lnSJB0K~kDX6vduVAg4frBi14rr`Itg|A>S$xw#BiWpGk+kprBMEchyn!Cc@9+IGciP3rRm%Bt7t z(#u@NXI>8@Fus?b-ZG^r!tLhP&5`vUuRF?TgmZ~*E9~}Vm@(@c zcUE^hr@Qdp4Z(u8x2ykLi2Ax;l#q^!8e)0lv<{1It=Du#%tb1P{C6l~K z&B0Rji{G2cXG3>_I1JKoTH+z_Hbm|LS)^6@8DNCLk1-8oI=h>_{)DrAceLbPmUwb~ zv8sDnieOi-CcL!*SY(gN&M&P4E}rw+cU>=?yju*ne-`AbhFJq}#+3oC)5xvi3;Ui< zG~hGUbB6zJyfLMN^{n@%!Q-~+r@YVF!(e~l_=jPw+zzSSxp(BX{N39?WaQI%qT8)P z5{6G9ctzb*+c$Gwzb~EcF8dU|-);5z#8WC1#eZyw?5vw^(FpF1ysVpgc| z_Gtvbx+RNu7C?O-)4Y5eexx>I>3`VnnwDPgan}+nLmClb9o$^leTQw7x$Nzg!&F~( zSO(oOeuLLhlc7OSG6bo{^{H=Bs4PH#Fd&e%Qu|ukyDw6$w_`QZ-E+I+{pn_yd|xLJ zP_T(B6pq@j(M&SGB@TLxi@mfC@5jC1JDS9N@-KcE6tx<#_N*xaB*En3+?FG?#T1OX zJN#+Sx3YY(Y+RaDU!PYqeYzu;YG|TDlvR&UM%^P^Q=u;(qt+{*a=Y4C1>p43I96z4 z9p>IWejBWP!y^kWejQYXUADOO`T@9i*Ni>J3-3YSx3Al+#XoxMdvcJB_h;7e)afqx zp?5TymUfoJY?BEJLCIGsRAn?0Z!IHA# zI{<5pR)Z|iciSg-+PPh@s+ZkdvJeXpzX8blXpp;U4suwZ-c97arw-b8>g&G!6inJN zF4Pz-+z-ejPy2FZ`4oyD1CKD+MveDDTq|B>^T#-+Xd#Q3l1A@j4deQLu%yBET_gb9 zoqqBx2Axz0)~q_6ZeK;TMDAT|gh$+c<|^&SB`f**gA4)SY==kXpBi@c=!9dCVW86` z?~d)?^2c~TAUWQ8(x*Yc#^|=QbtmtFd)9#NI7&kV8n|L%JCoaUIZ`fRTNdXCx%hUz zMheAQZN}L;@(eDN?&y`l@->k|<$8O4aL>K1YrU=Aa>|Hcc_cP(DljveuzZ^hGpzZt zr~^qUjJgxx1k7py5Eu-9y(c}2b>Nl38kS7x;27M;-lFpkEMTPQ!h0558XT{D&-~wC zsh`0h$UBz zLMrMLfYt^G^c5k5rwZg%uQ1R=Me&*{HZbT0$;MMsPN)y%1@n;;5hPL)0{Ybi(a}(9 z`89CNITFVM7Z*UIsVTwHNVGmRC5Su?2E!!;0r#4Z`qX>?6c?m`(AU3@g8n}Vp@_h} z{{SD2gRf&qd0!%5Qohd-0IZ4(4BV0_d`trr&@M;_I1xbrK*2Ii_y7_Ydio#=37sb) z2gniBh<*UDVI&6#RS*iwU>vA06o9Vb=qsSt?&04N0P01zxuA?9-l6Ji-%t50N++AdVw z`L1pGE)$tXE+3~WaWqb<6HX*hM%;Wa2&0SVlk;IJdgJ%4K9b;m69hnR3XZaC{QN?R z9G(%Qb{?Zma-O(EWu6>;&CBWoqZ?V*G#3XvRHn;(fp%qn0Vx&VeV1i1MRn!JF#W_3 z2o!o>X+XZiIKWL2%cxDNt*7X)1QO17u!B3`87--%fY1)}aNffN*<@`U^k zZjv|*6(MQ%n>Kwt@N68X1=Bzs-5WrG1FoAFPrB}BAWeKP!52kI9;@o`mIbbbk zBh_})G4kc(Q9l2;^&d`1V8KTO1G`xnZW^Mc{28Jl5t&U2$9kA2fbA%XIr9x&D^XYq z7loQQ0_uEM%m!k^wFEP3pFbt^Ism@p*+lbIn5L2qoWmUb8}uliW&#(cRF7yLQP7iR z0Xf=0g%X?YNq64K+w@YoZTz>m>khgh#Jk{RM36G;B>6wFq; z<9!Cw`6!V@2qt2Lh#=>M&0|DbQ#eqa`CY3`mXoG~REk2vzF=1>f1Oljk!j9Y9coev z&RrJb5~EE1IOy>>ji-t-X`Pv9oTIpjTsBuNm%TrB#v!AMoRWw$TVyx8>V`djgtX^>Y(&&At}!&5l_QA_v5 zhsLAOYgB;hhsrPAvqQ}%on2A0VDiQ1Cgp+(Nm@2O^BSP3s0JJ#LUp|1Kpj53QG!E? zPSvN>C1c_9#>fIvdA;hi>=?>!62N94+7koy#BejMFmv?B3ZQ(!{l2v$d0aZ8YU=rx zC=UAa!QLW3h z<5%Iua(!X|e%Y&^cfEvvnt)C@ALR$~!CBkW&r;GDwaN#bbcn?(6568tdGwfOUfN>v zEl2iNmacmawelHrUiuPdNt{SJR++=0DH2*#yVG!aL$S^QG znbj2zWL=rc5>)E>Cezm7|rGum21Aj_3 zFU_%R&`%%26ldlA~95SLa>u zf0E%Nnd9Q0E~j5p)exzDP0D}sWC8w*t7@CGDD zPJ3&k<-$0L2QLGcSz1!Tblw6ivHOxTwxyh~y*}-0G9j^1+cxvdhT~*74jDK=(+#6y z7h6gzJUAC;*J797CU?om{-#|^M97yk>lLI0o)t<_)4St)vEBYkpkj~3zkl|(r}^hO zhFNPrFT4lBS4*bxdP@6Sih3oX%0WdwjQO;K`w$AJKtpI#mMVwf@cNWCYsgW_OpokB zo4QCm%aH52scEY9A|o}urmLyk$hEg@{0-#Xp43kI>It&WeKITNd9{t@xHzD4xq-iV zW`gpJ`}Q;X>Q_{2&-Wdm>1RE^S7z7ebMI|Q&a8S_em}D||KI^+KRr}~rBzV|DFA^| zLK)RHqIOG2qJ(X@=ht#SbH>ea=VqK+MzdkCp7*a#I*WN;!V*3zB|A^vwkUOWN+KT6 zAAyo4zyo+tkw~fVdVu(bgcJfE6y~*|Cee1G+|LJjGJ^2=hUw{i&_vHe`Y)nNxK@Of zAd4av=!+-_8^7{{QLJZoI{1>2g%b?Z=H}7A8{5=T^O&!q7qE?1&mH_G?Gif>7yl+= zAuh@n6YRuRK8u;xU-B?tYo1CzQEZ*axzZ0*%FBug2~3CZ<`}x-XI$ARH`|<J%SP3O{BbV~guhx(1R=P}79Jq^kI~CS9XrB>)T@#1yIo>50mJf#Z z-(|{QKaZeUA^9eA(L*v~HgceuAx{0q=41P?BEy#aDVuhNwrkxwbfGgOhEZM=_-A4?&5Qo4Fy^?o3XY;nqO0V{T_-Q?P^rU4{flKjUx(8W6|NV_2@+(RonN zWuuPuB*hF%U_Iejol0R3CVHRd3{DNgN-X33Sb&7eUmqSAde9ud{>KVrcFxz>VQS;v z<75%gAiAKj+T7#`v4fBh_+U9Nn<1Y%w|2C{xLGpiI*N|H-`rB~Z-pJxiC(r^XLWg;oZF9x);JT*G7Rl-toju=7g1p4d|V|B zXz`RcXCl&*u!)I$p?GTgV<~0XtXhPXlv=&q1p$urHwOQ7V{_SelYSAi>Qwv_#QPfT z^*HKjn!gA=-3IOGremCp5zF>wWjNZUBrPh(nf9)jCC|RIIo@|nc3+mKQUa;%TO>rJ z$XQk041!)E+(>BKNfONP{#E^@V2o%N~X>U1QXa42}4WDGaDv34>|K)49E#l zGVg-%P}W%C_9@M;2KL6n1sKBId7{yK)gnH6B0K_~$>sn0WtSWCn0`VJoJK$yI zEyHh*T{rf6+GU3_Ff`yc5tD>{d&!{#$(&=!RIZMX0UdN_BA&y!{VvXO{~e+P2-HcP z*z7eySO*Ss;Xg67Yp(fW`G4iW+nyo?QrBcpG}o+XQQa{z%4I@MFy+w$u;|N4N!6hM zZ<9S&DT>hdd%lZArBF+UjxU-S8UC)bQF6!Yy}X1L?d;zNKf5$h@li2$Tk>lf@zW1z z4kv+|ACuQIFM_}%|o(y}%ZxRxh0+9NIERjT9JR?6qB$G)nUMhob3MYs!& z*$@)&fs$lb5<7b(^3hRYCPq7ZofNnP94^hysO`d}!<}j8DZwpl=gKWHPohMUD&jFL zWSETpWIvwP)$i`!!5vE{+%HrzfnX;2N%?5+xnz&k1gp0uZ%F5FN=yp#zn^bhGUx># zhd2@9%{f5`X6fmFrC>G_*vKuBlF<$1lyF!F|}l%qj7hKeN{o=H3)r^n69gaA08k-O;i9JaFjWEJ4#vDbS zQnf~w9Gb3#*Dn&zZ{G?L zms!8LdjX-0|NdS5^O98ic>d;N+`w_yCi*?m63B zQ3d{zen7O-bZ@)KwvPW;6^h|BoVG4YG`xw9AQ;rno_~lnt5!}kfkY^Fox$_bkVz7& z=ciIbol5ad^*=hHZ|LiVPHZ+l+GwCX*_u}N)JISMHUv_uk;m9SS171Z87uwGz#&>3 z(H}&(xtw$$9pD}$BB1*?V=Ed@K*5azl1ZEMCQ+F)pK{#Bc=`qFu41Md-0z#TM=y!B zlBc?v$d5pGyAqbBxG4BYx3+cyp8PKIEfJxG17aCw#p(oBjWvuD!zZwQvhpvDzL<=!H;7TBC4FnjU6-UQ+$df+qMBiJ#e+57Ie zFGk}*=Q4zplfPaeLV`V0G~~j7360~e(`?t zeZupi&fdg-sK&nRWlk@>g!6FU+{4uKHcRO{=-sbFmMKu%y=y_uizGBFAvV}zJlh)H zn`&`WznNf4V0IK9ZZa^_|Lg=`laLUMut6-^hj_^=@e;KSt@ek_#KlH^iG!_|z0GwM z(M!^AYn*4pY`bP#UFFO4Z3mc?oc_mcZPxe$9bh{Hvr5c(8x?RmAvmgT;j&*T_&g_8 zGd8JAo8IyApPQjaKsqs#7-xLc{s487QY`whIn=8xQZ&uR5;n$DpK$h%)Y9}31JZEY%D_YEF z6#Pzb8OzyFqrpCW=pRi(qniu+mlt-b`k|luKX_zl91}rT;Z2O>ucL}JlE1%qHE~O8TC?E{M+FY?NN@!*CW<(nQ78j zEh^%{1B9&f;}1nx_YVaY#W>_VLO9cM66TL*3&1U`cuj*i1mBq-+$%z`gW8r})93Oa zwL$-Vd7F2IbH@TYm=GcBQ6?Yq-^zE~%zvPj9_4UIo}!YPo&tHb`^{srxV!EPZ1%5A zWbq%o)XRCv7KPbXYL_(+$+x|`{^EEeiSMTOevxkb2Bm%Dm!^|d+z<2U6>uvy_vBEC zmXlEdW8|V$NTG54HddZT3HCQ2TLlFv2p7Ky%bT|sYsP{f<&}{_aC(x>v2Dm(S0B#f zr^GS23gqF*&xiDoCF&uO9+hPMb;ao4j$_w7RF|LcN2cFP=FVws;F04np3#_ai&pwb z4aU8I{6 zw>_4_@Oya^2vYyFzQixzE#Ub3WJz+V=;*_zEs;_B^8Njiq%dK*xeHyLCVCdch!)(! zM#cbCK8nTR5E)m``S36I8*Qr_iH!e9G23w)p76EnSUV-zr~Hqhz<)-)m&cRxbno6h zKeJ*)^y2(X7V{>j#uXrWIPBxp`N2d(V#A&ZZ=kuk<%WV=0yvkh1yM!6+|v0cd7efY z76=ow8df)u6l9_cB`b+TP6dUoRmu zHOcP>w`?-Rs zY?cMRs@J~Rj{AM0j8dM(cBC0&S>UtjO|vgd(uRX)z33%MDvt7Vp3@dh8D4#QA=CEJ zcG52jR;5dvBX~b(N-(phQ{=%;H-Yr;$5|yGD=4#yHKyWqt)%@jyMlwj0Wew91UpW7 zm4rS4q0s2%JJ`=KM0e|BE`xiDA|*y3XL3q1yC3_!Hn?|1b7xP2;`uv%(Pk!GTFwl0 zybuS?C6eH@$@kwwgr?vYcFhOUYv;c#jaYDE^*@&?;SFz+8lJjSWZKY++6w-S%Tn}Y z5FeGLG0}!|N0|U&r}G`lZ2AN@NE#iGfs?oBP4eiNVFn39@yCG`mF&9WWfRDJe|(Ha zaX^iFO@dtVAiv){>CG>}u}K+!nz{f);p|7HEYi|9dUolzoEAUm4iMdVCvP{|uEpvz zod_Z<>n6z5is@xX%15R@56MQcyvQ~CHe0x#B=g~Up4B}BBN70z;(c z)s=Wua`D251etJUtK~t%x9Ekx>$-ymw%c{l&@=;wsk>96+^zso(oa-<>CAT$Ml!V*J%XwxHLl~_9W~rYZ z<{#pc&21EoR>u02!q~c+5o6>^gwbY`{?NS5a|iV%eFJs~57bI|p!2oc^iM*X2kzW9 z%f)Bf`pdX!1hFPW1db`?ydL?x0#ig2xLh38rf)MQ7qXD3;k>vPA#ZIb=$cMQDmlK; zDibg$5OUKp{bqwb5ft;E;_Hb|8eo3~l9J5L2-HW1v2K1ZI`g4Mm>8h8Wpt39F2>EX z_3S>RgTrM(=CQl4`UIo4;1j zGNGaA7O7d2A&Pl}3PK&AKm5m@&p=<0lF|f+bRdH|w&UiZ=4)oM9>=k$_i6osEij_` zqt5Y}7#F%~v2>Qu%*fuecb@*t;P=CCJ^jF) z?0I?7n&$}TW$dDHbV?~(lbls_mSf&uskiqpS+b<}-mGG=0y@xbU#V5rsE-%K$l-7Z zZ4SEB-j`heXQB;9bpwSLiW3_qY6#(8PBGKNVT{Rn#eDk4Z}?s_fQG`~$EjfZTA(x^ zpL_u*8sj5hvy*-$ExgyRxyM|oR^l#Rm~X0#T0yI*MO8z&fIY{{jgQ}DllhsT_77i& zFGw#wddnawqcdL4<4nwM7I*;qE?b;Idzcls?-ukvx!FOyo{l$m@9KPGpF`>RILugT zdwM5R`_Le2D5LP0ldwP+^;F!PJ$CmFvChx3v@l@FIE1DEdNdMY?3pK6LaX!-%; zO+^|W(=Jsp+~4i`Sf2%J(C}-b%QdQ_<1^o$&wP6aF=$laD*Crj0PU? z^$3{PVOnAX#F!u9Lgsadz^)*$ZTF*T!G4VR;i<-9%LHlNj|QE?ygEpy*q?;_@Z_Qd1An+14k%T=Oz*uMv zjWkgdKl-oF#wy%uwLRI@UbTY3Z)Cuzb3sO3X*ff;8I<(+qM{-Cz3kaG5f@A7sBolA<>2eN+ChexjCtWgf6zxn0_?y?v)5I5P?}~eJx)lS0 zldKk68vXa%e}?Z`Gx#%yn}}@{uJ%P^JiCSfLyII zM?&3A1p@5pdR@_`2GuoMI={utt3nAJ!w#b}p7Yt2*stR+*binF*{3{e8i47LU1Sk` zsw-L`mMV30E+3?Cerg|$%UM$!Ddwiqih?!S3)cw|Fpfc+}dN#b}*)v!AyY(vg6Bo{}-Orb(;paKnvNv4@g%03t z^s^3!0cpdAXKX>d4Eyc9LLhsL8z0#yGTxvPWtCN4z?SSl>Pzp*P0sG4EKowFJkeq; zp`2AJwpspImw*ievv>8~B{Hn~rE+&BTG--hWoz;=V@o~7D9z&o8&g6lm0kdX9BOB6 zMTr>fhun*HZNEmG%o|EMZ0J6>`y zeBMr6iL;q{UqYhF3#t=Mz{&m^nAV1ty2_3#OUD`z;tA_#veQKw9qpA@V;gTW@A6BlmgxL1AZSxTd}ezrRL_+ZO6m=eo3Msd&l#)V}F03&mtDhN?k2 zld{csd5mf13Ruk`<9csqNaKA9t}J^vbLWk%&c&$eaP@>1ranpNKk&yzov&cOs}#4 zwXt|w$&9yFFdsd9^w8l$Paei)er)5cm|KE*U3PqW=(VE@t8)&{o_{yn-a4!H=Xm-4 zTx3VITI+~{%xXdw;;Sn6wAn)$>_ZD!I~p%KXO~D@q}PhDaB!CVN|Py{z4ueH^b87M0OoKH)3gm z3=KSyS6R^+L{NGL#GlKB*CX49Uk?PYHVG2KCd)85vALlXc*4be+EoNmNQd!@tyy{pxGR=%!)*m*{!U^2!y6yS%Uts8_aq$o)Di}}0E)MP6leqH`F})e;d|Ec=6T5Xru0T3+u1huW z;!;iQ@$TnX(ZiVc%T>a3k zYol`c_0A@P_@#qx&IdtL1DSs7C!+)!GBbdR%_BqQq@2LJ4N6!~(6w4nzW(x0HXEJp z%&Z-PQgvf>IpUdZwgkv~M>6u4C8eIsf7~`_SwQ~`>yIA(kbExFzKi<68P$w-9;bKY zVrvaUkdF%MKs)@biXR7Tp4lb27IaQcX7h%~_OWC$UZmE${}4Gp1y^?jb-sCvSNjV@ zD$T3D+Q~yMUaNYsMJ-`M^J+@``&I;x({ECuS>ltTqr|Taq~CoLEL3}HzscP$<~raR zpyAf`cHX^5kr*#0(qe6^Hey-6kaW7YG!+lD%QD9@(oLHp8NTr&ApS$noxhIGBe?%b z7K-Wu{lDm}-2T283afJgb>s|<;^35Z((kdlbB3Df|-txf=+{wS3`0Y;Sg_V23%OFR$cGQ(> zuAgCHcYl*}y>jJy-p^Tz+5&fUxw$dQz4(xGwG(hGB(S6(Pebtw!TFlb-nTs_)umg& zzA4&PHy*ehDR!mc@FnBKv9itsUVd(jJ)>YciS`Qm{n1a0B>dkeT@p$&0RqO&-J$$N zBNx4D)g+qA-5HLGbDtFrTJ~KE8x4M`2`dMyrH={|VqN;}q}(wzGrK`^#)QFbKAebI z|8x%D$^cxw{^W-GkxA2cfm)E;eNGJsN;qv*3#~Ao4ly03RDSn4sI6U_wwD`ZQ zJ}sPsjufN3m(->BPoo|(I#7|dG74oWJb5b_O=KeSmXfarr&2n^wN_tolRLaK2v^hbq;qiHb15d3#!qI{X8kiGavu!@ zb1KaX@PkZDzpMMEsF) z0p6$d$aM9Yg4ArWa#4d@j3ji0w~2??G}AHSbT0qBDDhsSyx0{&pvjWAU)sZESa)|7 zswkZ@CYfdB4$C^BC@iD0Q%vC3{(M;!O38LH7MBua=~2X+*i^V%#)vXpsh*&z`|5EL zQ}{(uBz%FsWL#;ZZQvwxv$Y=6b{(&9Y?l=zYSv5WNF}U(<+?jQv5;hn%-Vg!Dq^(2 zpehiN_jtH4sDGwVhe5-`pL<2nri|@0oVC4owgGd0eY1QLmfYlCP17=Nz$2|>xF$7x zL}$oIa^kU0-}}wo9z@GdV!nf^)buxy?DBH^QYcVZn>CsXDdlizFyD$D5U6KG<<@2u z8oG46H#jZNcqOd~bA|`SDLI!&m+uiyyO(SF95^P>&;$&)KoVJ8x$DKOYmfrguWW{tF6=ahj8b59f!AlETVT#@qF zvHEhGzbf%T>x@%8TAOx8sshFun+~ONQWnopt-iDp@X4RF{QC2T7#9ycCTyO;8GS-& zRmsL-%%&iz$*fLEdRblb(U5jDV)q^fmxV9l;_VHDTYhEx>6ZOdPhVP2hM&VubiKol zr!-1LwA3r;sM=5eCHZ%=Nq*~|uKMv+E@`pzJeu7_7cV}vW@Ec7 zYH-S=!ck6&ed5O{D=&>wH+{Sh1wo#Y!IB~%G|P1-1Z z+;~N7g40GcRx~7+ispL9HcbM@Z zr>`rO7BrdQb$yq^!Q8%<0upLMj-E0;$A%xG;r5bccDq zT6Fww(}^o$3NFUVBVuy;-kzMAg+T~!&b`P8#h%fnp`(%eQK0#C<9E~75iVXcrWfWy z+<7v;Tgpsd(P;OA;Bk*bXQYle313sQs!0j>(6r;e*YxMSsB;b=#OGBVK^LWLt=7d= z!LqIA2=HiTRkZxIcdk;G!fR#6N^Z8DTMv`sMux#VGgvilriN6e1G?WzKMUZ{u@BRV4^4&ihN!g5c$4D&u@=ofr_U~#)7VMAk5Nmb!W=O=7yA$s} zR^jVDvAejd9>x@TEEbl|s0?N$Txg*9^}Q~Qx{t$efm&-}pLHwaGVaPi+M)l{XvUgW z7z$_G`mDYabn<+eeI@=->a`S)A=w&SuXSX~=AZX9MWl1D(_V7pfe_JsN5|~ys?}Lcl^_PpiupbFpbCbn0TaC!KY?#qFJJAKctZ*q!sw zulek_Cc(I{-EVG>s(-J{eIZjNt9_-z3%l5m8Zx)?^Hj{QDI7HQ>PzlFRgOiae;!+` zpPC&GkC_s6(89lZ@&~(JG);)#3tyW1-jUvg6{nsk?U&S~zS(6jk1+tfBjQzhdjgX| zPpbW0IAX$4J|3(;knIaQs@vzim%R(qBP{tdbr}lje?vnXfv7of%#+{s4N%L*{o)u_yZ9-5LR!EwCt^b1MZM+C zV^|y?CATI~g^+6OiJwL>{4~jV}lWZ#3qnB`(sj+@uHLgzYX(Ah{I|tsw;6wH%e)4Oe%y!v;nzB2Fpi%W9ojxe1`{A z0^{`)^cw{GEisc$2LULiJ2U;Swx1kM_X1&*e$(Wf1CB=0jIzb3%uM~}JU1FUTh18x zI8mxad4+ED1}M52RRxOvLx&v<;cG@`*ewfsa)Un@t(Be!JYvVM6*amMj^h`@F!_VE z1u01aCU2>}C~pk+M{fcqPE#H_&!kLBcb?KanN<-qo9Is@C(*8JM|+j+((ZM6@#&`2gp*{J zkc3YRDN(N8MV>I(60T?z*G7!_4&uxBz;{c)pSci z*(Of2Km-P%`PC+gBu=Qg>YXULjN68BfNks~I*-<-v?O*~ve9zhE!%ggr*cYg6GKBA z7qB@pdcn?S(MD5aD<(l9yzvOI8i^GnW;G_u4D#xCu6wRZ5ph1)fY(#JGxN6Y)^U*~ z-_9XtWc_KI3{VeKcvKkjcO7wTKMGYubPb1qKrAwaE zzPDwbQXcngtzX97LB+UGLaA==c1+oOSaJcZTgCNs)}K^AXd|H!<>(^#6 zZ>HtQ8#e-a>Zr?t`#>xD1b8iY#;#4S46!`3i#0;y6|Vn^7+2s7B&RdP3r=wL)k!d~ z5usV_;^}^aiLltoh1v5<^U~|QZK>6cA^P|z`4NRVfV<->m7=&7r65=&B9c2!g!4oY zcYkqvCdKD`sr*wTQVFrXK2hCB(nLWpEHdt6zd0F2w~v!|n~QU-JP{&U%j;4Q`(=Cb z?5zQkSF?1?m0)Cbfw$5*$3Vt)x^%+$tdww=z~hyPh=UnX!W-16E7Lgd&o`Zq-7_fi zTres&s9_{Hd6Bf&YHP|R;t6Xz9X^IKvrEyCxDqBtTSH9*{uKF6wI?KH(N@>}x??MJ zq_rC>F%UQ7c~xON_SUl!#wKZHJ7yKsfp|yCmszgn&W9c*la;Y`JY$I)`=F=XaB?Cy zt?~GgIddMwKq*MX+`!%OSvoY?b@L@F@n%eq ziWyU9nm^^sy`T^XW6JM_N1%gw7z&z9sQCDe|qq+LyD;|%TU8c^%({7-l>r zq)UXQTN|N0d7Edmn%Ew^L&TIP?I*PJ+YS=VFDqr$YFovSP#?Yz@8IIj&3FT>@d1T~5#P_@bpy8^+N)2o3@I zUJrV}V4~qFippp!F@_hnjYV@(2=8Nzk^b?>(iLWF{ZZlZ^7hMqep*J>Rr@J>E~l&X z8(dUSOfR&ffziXWO^~0Wd|m{T+@kgH(StxX8(nY88kqe|qHAF$er+C77^gj3(}X}t zgRM#N1dLBHFNDuH;J_@F`z4Bi2}kzxn)^3%-#E0fzCbW~#ENm{ae}*C#D{G|`?deT zPnAY1UO(-;#T|?d_&)$eK)S#6(^yciALbM41Fk6)9ffpN1^{F79`ncGKT`25+Q|}$ z1C&R#lZc5D7R=NMeM`=N!1}>sN#$jJl2mjrsu-I5kiQ8nrI;$Z41|`kPy;Psm>>c% zBq$0bphLPhxi%ChN6iX`V>U@n9pwq)%8=wlPE(1fD>Rg5MFXa9A|D`NF$~#;!W#Nx zK+pHy`|aQ0U$e@QfW9k)t&FDWFW}l33HvH}5n2m{9nQkKibZU_GXnF5Ktq@J*1Ds5 zSP*olbae!ecw?2`D>wq=`QB@*)auSu4rzns`6U=aidhX~*~!~S3Nq>aHQu(gk4l8|to04Rqq0cMzN zpi&!zULET&69ilsbO~bN8oFmml0`aR>Y`62AxL&Mm>@Y;>+2!y2l6lgPznMoVsrXS z0jPNO`dcyvHdIOS#0#P9GL#=6z;u8}6iFb3IY6jtIR8*^)0GYC^GK2@t~QerPax7s zs;pQ;fdZZqof$nzc@VgpeRS zaR3GXM9N1tI$gtA7RowGijTfUwn?~TQ4tVE`qAjsrTpr&2?W{!VG68*>x-hd1x>nT zV2e*!W&xT{D+8xfA7bf?#ZsI(btVG9Iidp~3aP3?f~VSce6Q4@X9&13KnK#gD=4>d z)TaxoaCy9dpg{;_0D~vcBi~GA4WBBcozhb-<(lt~1%JHbITICBn&CJ|y$ zhXg!8g`_7XofHX)LU@3nxpEOs<3j}F%bwQ0Ty^LL%<UxlHuIC zbnZ!VkwpX$FF?vhUhGNC)y71;2PHhz2QXpa#6;wy(jjaC5~69u42C#NaEd9MrrT|& z1SUZQS;7huAcCRb!$43SkOaXl=_rVBA`p0o5a<#?V2O8d;U+AIaucR7MZuDh21ybm zfP%z`v;;i>;!cq%Ac`p|&KRJJh z0UyNw$oy+UCuL{_4FzKg$)zD6l2Q^H98Q5}QfMg25>t}pCL|IZg2X3fH+KR9gh+JZ z|05{&p6edAya&v$nG62k+2-D;REZlP->8ch$Q{y@7 zbxe!`s2D#vnMd;(eqSRrLPjDi6;_0nE>SR$m+KTrkYnTOb%H@l#zB#-<+gZthr=#` zs$0qc))9>auSzx@ho>cpjrqByn6iXY(Ux)~AJ#OMy?-GB&=?Cfpz>o{<{w;Wq+m9V zK|-y4;%o3K6d)Jx3+6lkZWC!Q$E7g30}Gb!h>K7ynMf-D8Mjqc>*^ImsNY>BxAk;N;XF4GA%8LD zajupA8=SF;)mjcV{XrgH1>A;di(PnAevmcf3PGQqpmE`g&Ij?F=qy2E1$HPLT>}U# zKwQ`_vL3V<_m9F0?~Bg1nr**09bhxCJn%0%3(o@4792o-fE*|segI#n3&#Taptbb+%Go6piDW8*CU}0jOh48XE@24UG+rjC;i)`X8e(?LTb(Gw}Q7 z9x>_j|IX|J@NEBcd^cRCZrAdj4Z+kL=`R*Pt!q@uKAG`2j)-{jT&iCk{>FV-H2fY* zb4`Tq{)?1eiQQ;I=#QN%);D_kH|XW3L+nVpXT2E*MaEEaMt4MKD)q|HyC=Y%uYuL6 zNxp>$S_DN1IkuCuvsTE8&W~)Rf<7Xu>&2gdN}irlY>r|I*l=Lu_TI4A7K#jKec?|F zsg~+YICNCKo~c?qAJcW+2xP{<3ma?&M{^ zu(7y)XSP6VmE>+f7xyEeLy-uTM`5Mf3pgw#wC|9$g|e8i?^%)Lh)4NnMY}Epj`?H^ zh@HwWk{9Mp&r<=(9C!2IuGxR6UY4cHLv_I7e?W&BP~Nj3$vJ8)h%zXFM@~`2x1VcD@lI>$xe2Zg~BZ zmq=4;PDaWI+PTgkzCzM=8csqs&BklNc@efnhdCN2T!uUHjmZqPcgjK_gS1wIv>b#M zTHIZUXfATeaqj8HCvAfmTZ+@M4TO{pg=3*s$&v&eq=b&DE^f~DjJ2|c4h|6zb2#Gf zwMaql&A7&>MA@_XKU3)kQ%p2tdIQ*jcJ)E&Rp6|z2;jBo=50K{D(RA}N{U`(*`gif zk!rMX0p+XyIBLm~`*CCWv-qNX92~;Ay}r+89$k{)kOPs}Pt|BF8*Kz`Ik6KDV$o>{ z2A>zm2aJ9@b069!cI{%m{g5+HZGUE6-DqE1QP6pU3s~Dfr!}N6YxGEs4U@jCjcx6a zPOHSnz*z<9SWHXD1iiDG&@mU9$VqQY$%-=#UEt+7xw2w*vWi^0eCUI&;sEu8KoARg zC)q-@wNjZE718+5#6W^}clLb=32XY74MFm)n1Q5*^4}w@$qnV3ZXeJ|gb}*=-ty#a z9Xi$$MnD2N&&~K6)Pz48962pc(|IR+$Z8-e1jg|$DoMydl3L(2`k8An%q{3wIei69 zJ}~_Bzs^EFvgW$oEQs{VstCFhGmDE{HcLE3bi-zp1$03+HIURc%$L+PYH*uuSkaS` zHegHlW|-z!N*g2$*9FBPozP@fzM>cH$URDZ|EhbY-SX=OQ?k_8d})k%Bq!^(Qth$0yPg7{e?nL78_!JGX-KqHNN0 zf=)v6yNdN3C?aTN)}PPW`2O#+^!c5+*%s1z0qLtalnkj8H+G2HJCG#r2ue`qS)u_J z6*8lmRpvOg+VD$quue!IkS$D!DbgX&Kk`#Owg2W8qv&mv;hJJ=#ztpt$O+QJcID;I zusvkJPO`LXxUUu+g2;eHR>^8gNy2REu?{KGP1fqE5)Dftbr6ZT?GPU1F;}?;5edjc z+{tN%)@cDX5(HWnZ>*nv14TO7by+zJh`CZAoXBK1kpP2K7r7{&>Cjw|K^CsHQ)ssN z!%z@NYwGSqkQ8;Qj{9fCJt}zIRFiX#mquv=tGmMxJ;@7Y1adk9JEL)v-VLJM!Q}dE zWC1pFz`<`<2TtK|+wCE}U7Qn4porz&b~R`lkzttw10Y7XUxxt!Bh*x^q-s%bc$WS( z5YZfKfQFDV2M%W&j7So&CZO;*yb0EQ74D)b&fG}uZZIG*SEQJD)*Vep5gS6FfO86{ z6ydbvc(+DEJY|*U;YiYGd*V7Xnc##C@R|JlCBrEZbSER=EDPsOUR_QsAefRZv`{-~ z4do}!^x;MV<5MJUKo2yF_S5W51nh`(wn`zV3oI+Ts5&ZyS!Ra_w;p6FnAkm*M5waduqCzbDh1ll;S!NvzBp(pI6lE{9xgdmKTm1x_Tucf1t+0!Au8|TMc z&89FWEFku5B*tWBO+zaB;By1D$qiAx5KSy6qYg<0na7_kl0}{-p<02yV0#97ZwTf zw{J|m%yv(B-1REkmx%|4jyb(|+TGV}Y9=vUWIQ3^f*(Hfjo1nIHzJ|P2;E*yd9$S< zth>S%ponS%2mxqT!!h_`v<4t`sMs9=|IVmq1ny~fVknj=kR)b##f}gXAeQB)@N`QE zO>#ZJ0H-*K5h7CTp^il&8+K?2Ar{HN@rn|rU8iS-&|IU^$)lDCH(DyaF>35>g zI<3jt4!p~i5!8P0CpN4IWKoV=+BEt_$gUPLfqu4%?AqMx{}~n;n|G z0aT=W1Seh6E;uCx$|4-4Jz|!{q>)kLy)BWlD-mfpC$O}gGt%1>#AoZSiIs-Ox(qxk z(?O7XUF9Pw$f98@<)E}og@d?~h^;zB-AHtidR6iau(6H~CB7rGcXM@NHV(IbBwlEO zZ9=`a!@$c`({ag}tSNPGtxJI6wVJdUdnShvjIrS-H!X5~2n1S^TSi5Qw5TqbOvMs9 z2#IQOKtoO!FU^yR+~elJ-Yy`4^(VtUTyj4?sE+o;&IlW2Q;FY@qpnUI5h90T&K&HQKG?Kin^7Ie2ol#M-K~_{#sL*gGq6z`(g}U5hnZItWV3TQB@`oVz};;ON1v6asXlMTjynEG>a6-QQcdEH`RB$_?EZ zY=O;dKp=zYt&-ebr6I~lEtkm0(JuY5(Ly=N0k?CEkb{xWE)FIwP~9GKbBH2|#T^n$ zcF7_{mN;rS?h`|kA-39WH$ciR#My!t-vxA5%!j_&VAbLxG2ZcGqFjO9D9^~PWy6(Q zRch!K9pUS9PeJ*aFQiK|z2-(HGB}Fh^fsSmG{hQ=#oUqTJJdoaVMBA!%ib*))CveI zqnAV2X|BHV1&#sqNIqnDL1c?BMy%$5%58}@!ogza@^fW@ z?R4L#;9WDtD@<5+`I&F;UZ#GzWe!6Cz?K28AzTa|-fFy$MsyD_SXmPt2%9yI4HO$=uHcx1A-hK=R?=kNJAsnEH+{YGBMs>?Z+{e?Nakhi01gnP_@GK zxJ5g}B`8moP{d_@r@)C2VFZp>PC5iTkXai`g6Q(ghbVD)yvGr46d7c&n};14`q6ZS zh3RL~J=vxM%>oH62ncMP#g>>c!1I|k$% z`~Wx%S(hmWMY)oG8%3+Wkl1)#6yuIukzW71L|!qvR@PqJy|oT)@N5ntChBGJU%)e( z@{=Ze6Q1z4OcbI5mWK77(XLgfyMjrIyl6zL)O?Jt%JE;Hqi1h2tP}*y?mi$PA#m{w z*gzi0_6*NM4s?kQEJ#O2v#1y$g57JJl9AcH26BkVQ4U6nR`F;&C2OOL&TaGnMkkdb zY`oo>K(~5{J@Eq}frg^%!6?aymTm${f;`uWOO*hfn%AFH!X>YcLR2z0a^bH8KrBcN zW(YXIfkGStc~p85dTjYPp|`j9U8ZVn8B|UKnH11YMK?gY0tAW>S(YXYMne!`KcGWE zcyg7Hfe{u$g4;5WHdJ<)bf~fzJVhLJq3uLf$VyxeErg7`SPxYPXu$`bgJs8YxU5khzZbN=4SS zu5jFDJXOJTavO7Qp~|X~lFCNG$_T_h)e*}QBp37zdD2oj%&8$$eJ#})u#ITp4Kodj z1U0EBC33n>G}L0wo+#dA@37x^b{37!I2TK!8CJh2;Q@*w}KO++1); zh$&Ej`AyUafqWoc86-eRgpwAj9)u1__2nrpf|XXUWq1vrkg*hLiHz>B+7CjR>@zVh6KL&Kb8bsw81)uH=NAs` z4){Q^jAo?eD-K7Ic^`P}7SRY{$nVClO;$Y zl%rCLr8YT0H4$+w5Ew5z&VrDrrLHt&Gj(JJ7E($a5QD3#GN%fxfn+L~lq#!5ytA-h}g&GuQHy?5SG3f;8X1v@nxf zv15rJ;@pTcD1)`}VhLg`UzlfkZ^nCkUUcSL=m)#*aoE;jQ2R-9$|4JDeO%4i@=13$ z?Crvk+AVZLik5z2fZ-)CPI;nZ3KQ$kqDMYgyDBC`X;~adxXe^dTw@h1^K%AF{4cio zi|FrX6~e$>dlywONhlc+d#lX6)kl+@%Uh@+B7pG<4u)jz5g>w+>ZcB3e2&tQH7-aY z!2pX3ns~d@8svy3Xd+mUQgC0It0GoyhnSR+E>PTcsc71OZ?QtTcOSd!Bfqrs8w+^iM$dVB z)Uewx)F|kJvRX66-ptd{%hR2i5rKvyR_KBmCbgKTWZub&V-kXA4kPsrm`(_Btk&({rq4ZWZ zlFg~yXQOC)htWgeNnElK-dB-m%105L3;HR~KbG$!xO!C|fjH0JbT;&AzP!$b?#Hli z?jWoqQd`zq*}V$6`_5g(pK8&YJGydrF~}CmZ);IksUD-Qb9eaDKE2 zKZbcCl2l$~?h=9m(Ur!@*rF6S7o<1`yN_N85J<w)5WP{cG1n^NLjDnit z32$dK?F%E#vizRXw{yB&jwj)3nZY}?HHk`8MjVB}Ss9SC|+MX*;vQ5{KEgPxmwf$A~@1Tigr$b^&oNMnz{9{zRig zg)C973nLBUTA46NY-JFsW*aC7j)CQ#e@bICGA+zOF+Zb|sQnD7%*NhyI#hb|k2_+) zD#_VRKIGr0RMH!DatmOVz%?Vfqn7a7C%@>SjRFSc8<1TRM`(meY|955rL2I4H`&jL zX2MY_Pbg624fuBr*N5RT&mj^^9#KRRHTEU961xQ8;H{;QAT+3eoABtRB5X2jNyHJ{ zK?3CgX15tkbq?ZL6as&?_~#!kk-4$g29qpIIqZ5j*Y=d)X0{<#|4gj=2@);DK2VT} zmJNiJk>@z2C0xv91d~PLkuf5sJc?lw=-30n9HK5Z3Qw8Nm7w>M2=XW{3lhg!t8EY< zIqAZ|D0v zpy5Vm8(=EBHnZNy`|y#_<<#N>q@%utLJQBqxAcYNrHK1k?l)#zsXe5po~CBPJ?H zwxT%u%{LIZeSo0J9{MJb=OFf0+M&c}^ODFzf=8F9Ou)=py(PuiMuJKP31CVREGNsA)S0k^}0xC}tyBu#URv_9LDRq!Z06BIK$k zAz8c>AAAk2z=+ogwkvgDkSIq>AuWzbc;0bg=ko|ep8np3ojBITVBTU&BO*&UCw&dR zUC+D9xuC<5lJp0G#lv1%639m`xu2Up(~Njb2^ayDU$ruOHbLCiX6AGbrs5t>!Z2yj zq&CxHV{J^}H#vJ4O9Q-nmW|27kU<+yq2br0TN8Yp(U9odq9@Mms&-}V%QjQ8T0q`c zDESc&*j*AXEwE+|&jXH(4V&W=Y=>R~Xdv%9*7YQiBp!D>t|*hD4;K<1j3aD=&#lQY zBRNzq>d#3D8j%D`V6+~-i3p2J;#K5cTv$RD>{${jSEm*ifI3yeKw&0C*m4-0gMuuX zaN)^JuPB?kC^#VStoFn6%HO?awoYxT-asm~q+6#WRDA7Hb;c)-+9h4ml|#rkFlK~g zE+ZkTPl|qYlz%I;-TSmZq(p~kf-$o~wWLQ`#ELXBB13qD9Rt;OBy==AEITuj=Sat7 zjrq)ie5h;2DXKv3j|Gspq2Zv3BfI0K>c>gwd!1`?`pcI(9&c%DXh3)#3hBaQo2ui= zBW7FW$5@U4K?leN53ZvG=uP?>B<83DCd^#``Hua(5)I3hTr53A8}K$_&V(N=DiWrJ6y0o2 z3ddeGm4d`K%mU90O{qj0;TT9F2{S#7y9QX5XdD?ra68^!Sx8BY`Ob|rPJ9zPm`X;h zkwGP_p|1_d@Fb49r`e+C#$K%@>8)g2tqS0~x^wfc6eL?fs+Wx<2_$Gs){~G-``2yO zJYu`l?6EB4yM;(&si`o^aAE@a`73)m4JK*DhNK6%wQNUN#tXlFU0jAue`a^?$?eko zb`%LV1+~v94LH4|Z6t9`L!JU^4Jlf=^qV*#{OosRJd!;sV{p1$=bPyRGuc(AC$y;#9dlNT&@SJ=B98>yISR z>8;OGQ(oc{FjU9~%hCZ?rmOn@+c*u`ma`f3LzJwU-qit74yz|^yTEPK8L{ae^O%LW zt-fmCJqlk~9`J|GM>+Mnwn#Z!^>%>*9n2O)SbJ}yEqi^vGtPJo=m!4JFbT=Cb52VV zkCQ!@gRkkNW%lB{3(|i@d2ev_+)Vd|XFH$B$yd3J?h-Scb?oTmXH^rw5X{=crtNtO zQM7o)WLKY5r*0P(P&UzaFEe8|2@;Cg%AcZw6ikb0+J0l&@(6?h97a!Y-viAa`T)Ie zsSo(T7>?D=p$+qRB`r<<%DU)K;A72b^PAbpg2l9Z1}!W*ugPu>H4&z3ug8y_Tf8zo znH4%rp0>lA5*$lG4|wSSA6%A6w?MoR%ueOGM@Cf=N($RSNZuHSGa&##NMv;TuAHH} zgVafUjt^P|SlUwzx^;VQYlqF~?lC++-1xr7PbBM7PCC)7?S6YQ&gW4~Cy)2@jM8%%;6hf2ZV}f%7 zjObE@Z_H`yi*DM!utgPwLmrhmEa=Ebt4z>0h~Ck%<94gBn>$Y;of+&|V+4$B>wkfF z8Gl3;;E4pEW6GHF6< zNOw)7vt%wshDFX|H095uM_SmP_{PZ*c3e6Ab<1^Q0yWVYxD!@2fzmE9&L{&Q8U|qi zI03?`q9Pphv0nPgJ!$3Lv}e9tRqYF2>Ucozbg87u@-&NBY@EmL8Y7b(_~*Hyz$(y~ z8-ETPa7Jdam2(mQquywG4kP(!x zI+CzTTp3#CFffg72hgAy714sp!EM*q45pV^D^Cq57-YdP1maLv!7m)1Y z48Wlc53I<5>yB@pYE!vA_Da#ij(XinQOqk1?3gzD1wk>mlFCLUTm%SWwnEQ4Wea3z zK$ZosmwB2l2urB=3{+V-Sc7s5z(F)&BbWvL5>&FJ!g`uRx%M8Fh?wR?5QUkiBjQVh z{7lg)HC6$+#?qtrExmk<1XN}?M1G?BQX+{~F66UnUsV zw&`OYb#lo$t8neWbdq(}eWVrbvp)5$QkEDXRy;t(t&VP9PHSo%*X$?o1PzEl9{E2) zV(rI=fk7}z%X{L=nPF69xEYklv5zYvy0dDnnx<52Fe&WtmhyupyrG!#i>XfEde$Aw zc0jDtij9#$X!A2Aw*h1sZ$lshG%&F^0iNLIv?+dq3@JSJsCJ!DJn3`VHl&`VK4_Y% z=!gL7haOh7yLy%Y>nnK%lr}>5h3EiSA}6whh;AhNN;dgho!#D#En{0RJkD$d zhKJ;Z`ZlVP*+^Lm%uwePD<{Mj9H|T(BWaLEJfY)d2FT0q@yiUUh-ca*}>rrnp7;T5z;U_hr^kIx+IHPX)}AEUpzGTT_11kq+G zIxa}_UB@Xy7dx0~i2_OTPkXb;DlM(La7=Xzk+g!xGJX>U@l1HNTm7ND1wRwV7x8Lw zXG8;OxwvX+SMeky;Um{eW&#!AV;G5b0U8_&7$NLY@OxA51UN@v@(g#Q#B~+a3xeBt zI}uV24tfYCDlnGTwzR)Vd#?`ix}3xHne54p*SoPGVq0d3nhunSVoBj50le&(Ew?=G zj*NT_4Y~}7T*uyl(k~;J^WHipIeiSe=pg8%DxG>cMH`1O@MSRM77}7Iy0vusnkDn> z$!TS3z&A@UvsvUdyK>HhNrkCvr8&WsWCiT)7aSxCS`#AGbO~bUZgD2~M!C`>WYivV zS;(?T*sYqR(3~j{-XVW71fZ6T%WF6RuiZ?;=MVYkR>6GgBl}x6C?r~7)J%;Pb};B@lHW*l3`!AaBogS9NaMNl$w-~7 zsjpfbS+fs7AtFHq(BrvAvM75HuuyElOEPlqwCwNYfs%nA?k^k+dq>CS`T@UNp~sh_ z_F!}dTt_>jr@JXO@mxKfh+_R0M0U)*J=#U73pryKXe>i*Gh+zaW9-W2R5MZ_`Oj%i z24a)vweYa#Lda$Z&$4xDR4qf&*r-S~#XUl`js5@SPSVjF?PGwkd|?Wmmth7b-Qgwq<=4a&X5Z`pDR zYMu-8*(T~)a1Y}JI|u z&2UxR-Z-0C-NHwW;6wzSHHN1NMfggFC4a)Y8=tdAIX*`w#b!K7$#EkmH!l*JJWFvQ zjj@e}&a=$M8bgsZ@jwq8`BPq*L>;6vf;TxN=WlfIyg0W0&nw7Nvt?~@Ac%O<-N>zy zU^SGROxZCVK@5b(lW`>p_@m>IIjEt@jeckpF`N-^p-Bynn;)U9jUI(ubB7rlu81WN zcam^WNG&B72^QkJjPcvN)FYYTZY0{o)}ooF*175}R?f<~x4UKrR=`Vg`~~LXgXL7} z+V&6;1I#1Eey^N6$KlUiV!`8Cy5i%%Xj*dYJi47@t^I{{(XG^k$Qy(?9N8uT$OwiA zq)nXFT{Md7jg2=snW`DrS7eP$Y)Nw*DttY?6|)(Eiq+D{fsXEnyA?lpg@yBTTxPdh zg){-vYl-vF#VnOT&$Aj$hlJ9T(%Zpf0>&0&MND^~hHP5C^XsZYr*w!pQeiU6d7L;R z(#WK=t{)BuG~^@cbp+eZ1A-9@O_fL?12?b{G88}L_7Ne>h)`1z;wK<`k`_fLMz4!N zJP{=P>lXXbgwB?gh@s`}q-IVH>mXY<7p_VgEwrt{8^+oW!KpPOhe^pvF)on=3ot`5 zm0&nM#RjAb^(dN9Db;c?W-~s?joO7U$tfU%U=vC$OcMvEbql)%15np!ckZ?%k&mxT z^cJVaB;o^H}u#VOE(ZB-jxY4;FTw zWN9d{U4@#(B&0);PkORVl=t$~K1s|7IF^&L8^snGFQ9ddqjFos2ktyf-E{ip#FNNLJmc-PM9>#*2(bD_7n##J1w)_y}S;LWoz{frOeUVSR|+ zv1U;QH4p~gT&@HbMfO`j=IyCA1xlps1vn6Pr8;e)A{daK;JJ876yrkCI&V2Ny1-rj_k<%;%B9J#G~R;+;4ZuJsHr+JN{ zZ%xB3yE5kzzR_vmh)ZbZgF%XHGV<+6+B}9(;h@?xExWC85RPKQFGq34>b>vC zoPaDaLEn?MgSB##%gVA>nwu7*3=a{7$91Jst)xHHjR(h^W!C}Jv1!;K4OK%Nh#crm z&?S)=n=g#8)gqoMsSSrh1w*l;HJ9~bhbAl7VQHCL4QSEW>*_aS-843ep5zliNuliN zzHJ>2h-`*}Op^|-oEIig(QXju+HA;jPG{HjdBS}%4Hhr3ozSk?wx?{fyXfKTTWErY zK&~m#iEO+PFoq?y7birV5#Gbw0&x0BqXn))CY6!RL50u=#o}hL1%&V%dsHl$nL!$P zEG-q)cVvv)h@g83SpUU2v8MJ3nl%iR;=C+D1dQ_YB5*#E@5lhnwk{pSUvznXIXs=|Tq+nUE zg8;`f1L-Hl!+u8QXi)k`xlo3g1>7tqK<(^$+iEDT7sNjR-{a;?Vn)?a?w;A=EjhOx zqB&f$=<*RK2x4Ue9*iT#Xe-CWYp;(%%zJ8>08$`f01+NrOE9e%n5?Roi0WErLN}}G zXcKEi$Cr-=!K|kyw%ZuTd&iY(5;I=8TZNTLPsWKc4 z%~TMrvgqhf5ayU7&=3mjQ^RsHZaD)+ymuHf3h_3zX3t|rD#=2j8ab3)nLx~jYB0l0 zQDh31q}BT&NsB#~D}b`gU89_a28M-&Hn|;`BU(G+?&DnFA&yj&DIw6J0JPG;(z_63 zurgY_?YLs4ty~d|$<7vqs9Fwk))9%aEOwD$oVH64C8nzQk*&~z8qyuoY{hW)4>g6x zhrXbao=zl-jS_esy7urEJsV?S#I@9vh~79HV;v88GXSX_>H%1-o0<4dolfvX%p2Z)b2WI~0fOmPMp!b~5#!qIN3^ z)=iQO>rjuL@0CKyA*i~=aia?xM3_mL(7O6hoobR>^Hd91EH;xIhHZ&j$&c*Le9*8$p%y+1|D zV7~gJizZ;A4Tf=0ZwhSW=vJ!A8Ismb+t(R-F|J!Et{)=Sx$u~+w)Gm5#c3GKHq2CF zKoiZ6*3s1#;9Gh&%@EFyr{891>Sgs)d)|jOk|%dQiI!_rK^gQ8CkdCtU|`>|)rBH( zHk$_!BE*0$Ad4=#TFGs2f}#N_`9 zvLZrm;D_W-F;@xF7a%AtP%SA~ZjJ+y%m=De$8lVp>cV4U_`vGOrbQh(Ou}W6zaj%6 z;aLfN+mzPXPp3M}Hph1yvd(x;Cg)e;x`v>TTM{{Cg~urkefPaiU4uv96TG%|Vj@QKaRXqCrKDJD zEn4#2InAvzT22b?S`;)$K_+?@d1%WLAPb9BjRXOd<~t-_ZYD_)gaWWE@w*TJMUG3J zL=D=iL|&XC<5oN`6AmnkY*nzSg{CPmxb8S%Dqx|XySK+-^RBv^2ffv|`< z%a+(kXFQt+gADp7#B3uu-pj)6mo9q1Y~{0Q$nBjhq#_9o;Ssw`99^9=Tt@l9@;yi# zWKf4W3lb3)8R*q1HA8PQGjPoohK%Nxlie`9?anO6!xBZ@n)9ZpbTyFhv`Y4TNHH0O zm9_br#CZ4N8CjTRio(XNSE4wu=_8EfIyO+1Hn*X#2K~p`wnJ!=1?E_!W4C+GMq3w4 zSqR}(wrn{_%5)bZ49LE_bBPv^wE|7ZDyG-54#e143+52il@5{ylcddTK3i7edy?6}ZoLujI**dh1S??7#k+Xrmz5D68kdzWR^fOfv zZ-eab+k6Xip|`xEWCc<5D1wJ$R-KojO_yEHRxBH? z?5S|ettuHU8#;dC7-+dLm&n28iomoHf03#0vD{`P;&dFvp2XIcS+98(f-HGEXd@vO zQ5=X*HpA?s+_@+-IgO=omyVxiy(iXhXPI-92Ah0ggJEE*qzaTj{TZ9}{-FCQX78B(v;1e+f zcv@8mwEXu9p{>;TaUwNBZX!4i1asu5SUbD3D^O~lS3XukAd$u7PtN_lzRd%5NE|>X zb_lWLL71chE#>vs@noi^L4KqJT^kU`Iua0w?2v~iWfQ#XdSFk}RM*4){$C60R$O^| zW7=xju%4nt9G#jSi#H^~(m2mQF>Asrxuj_2?yVyxJCBwRDch88l<;st(}en_WCULH zGms>4EWyY-=mbC{Cf1YVv{u!&DYb=|D1~v>^6+K8k+jCz;810n8wh22TqUz?A)<(A zqS)}@JXx98U7Z6ZJJSa}LIE+#=)I&6S~4TeSv$)dUUU&k-&nmMaws4OIA={cOh z8>D)qY!Jc9+}X>%FqifHPMg_jMHJhKk>?ccM#Y0RaQphxL>7J?? zKAn!1#4}38$wkjSDk2OJC|i#U`Y{Ziq@-oKu_D#%PujVmPD2xE4UMJ7#pmRd+HIVf z2#$&uJz_KLrU#x@nrnz4l1pEe3KrCM%%j@GRVEdu1A!Xk^Ncximf-H>!9kuX0wcf{avab0Jv_%ZN?QgzXM!`e?Cze2u0VaP_{a?Qy>APydhG4Jh z{FN5r__=QK%GPOP~>&}44mI#P3+D?Ax{2lttfthFB zyBK0Xyt8N7<8fOp=SOV%kPy&7Lg#rGIt!jFY3gN=xa&7syXi$BYc@gz5D6EhsU`%2 zjjlT8g9O$aA(r9QJ6uT;ia-Ndar8DhpEEBm(A@GqxqzDzOl^p4L0m#Z6g}X|?a!Ao z@awuCXJvd}FX?%aEPn5D{{lp1wJr_=<#P0|cPltN)RF|V4q-X*lnw}tN!N#fatp4Ky1SY34Ak8^5Ql=c&Fls){^bFgqarR0Jw#^~6h#rWiHIE)}aX$I-_xO&|6 zpPRqrZ1Mx5{Q*I6vvuM)Cb4uj42Aj`+opBPquP$+p~QCf5N{~39A@o?9L=n~jlxJY zq}BI7GXsB0$x1pKC2oUvNbK*m?-v-Lq-!$e?80}3P3;(5XpN0C!suBW7($WAWJf(i zspMzz(|~y`m#0Qy>Kp>4<5QfHyuogxD>X#sf{BHZNWFSeFBu zzF@zs?nF*Tiw5m!!BZR0Y8zlTqQW;YiX5A0<`_d89%F&i0Ss*!ZZF?1HJ^W95OO!+ z*6hvXh&FGS&sQC8iVQaj90+ewNc1vjZQ4YPw>#oUDFjhYkqCz&{Yi7GhnwZ*bDy>3 zKXBBaBO-SoJEkVRE!8RWWlBm)y#pB;K4Qf{)%-bxMv*2xw%(9uQ&_Ri|jMk*xMN)E@5#AsRd_|MRyvPaqudDD^ z?<+qKK$XNoup-{p{ZS;Jw^}5|#x*du)?<}0Vo?N*QjF)kCDzqZqhxZGc>8nN*A2sL z&6iH`4G6>W^c40S(Qgwe}%O>Y-ak^D14+(7S18CjAjxs z;Y=H7OvmuAZQt{7F7g+1ZtreH?(w5#$r)zeO5W-W{f;fQwrYBCvR>9R0X@Xl#qr*w ziiQ7s8#b<;iEf81ozyyno!H_}B0JY9z5}37s8}m64C2x`oR+-(7;k-*e%wL#N3rU9 zYMAaHJDFEFsIgAGJn?e!(bOv*wVxyQzV7(2dlg3rIOzCa6SGn(@GvMLxE>}fPtdd5 zBXC=GH4{>vnLf#wUaY>XjLhAxsu-37NNX9SZGD5=QYIVr8KKhWs1OJd4`4*l=Ar4F zVoaxiS6?vzn3O^sOGd;n1subVq%vCd%JiWrVA#iLu5!qu6x`KDwHFGeP_c6huQwUk zROp`L@eIz|y_d$@Yt7>=H>npT9dqa(2QK2*AmMPSHCRQe_OSU1g7MrvbW})v9xRqLx1zaa!Ca2Xzh~r04hhaX86OAW03W)j1J!({t9TR&Thc#Vq5S88)w``Q5J_(yFP~}Y7V8m0 z57@ttyN;NosjrOm`kWVT+hr+Bb^ma(aQY2gd^GJidvRhQ+MGM)XNwl#QaJX^Srjy8 z?a|I3!22$o;AovxVs9^NffeNgk$o0H+=`rqcWiO_K0WU zxwDl{hgX@Eo`NxUmW)}iI z6gZ26Njtg)-`9KZnh68aAsEwDXt~3q{DJC+17JXw9l-d578DXli2-pGV}+E1F-bJdn+xfnT9#Q z=c7dbdfW|^({fd*&OMl~iHJRTnb8a1f${}Fs21o}#X!I8R0;yH`QoHlFGb7JzkYQ8 zf4D$GAgQ>cfe!|boS1E*&L=6jQ$(qH=Ie4z z;maQ(BQ@7{u)3q-t}zmR6%SMHcGPZMt3EpYo z6%G@=4~ws?Ehi?4Jt6^d4pXHNA4jbxkg@6fy>)?05ox_cq@dqPK_JAFy`1+EUTS%h zMCHOQ=b5;Zg(ogesssc}T__Hb1`|0hT@UCz(I@j=+?j+w&1?cg|ICTa2>9eXt`ga5 zJqO2Xzvzwo;m(`U4w5XA{NkI4gfviL7~b=hiA=lu$M$AY*i!}J!;i*FE|ao>GiGNt zs03VqSi|#t0%2%8V+gf<;Dy~4HV|*m8nEDMAmnyZjT{t9n~Tz_2JEN_PZ*xA&L&bC)O2yrcOpjwD6_;3WmoEMmN+19sIIJ{uI zXtXF<%`M{P3!O>$jy~_4E`QoBdG;guHd<8tR8>k}NuIPC-C`}7uLQw$0c_|+@581$ zfp10rRf}>k?}ms5&X+MI<-R=u^gl;4M)o6n*i*2M)W+cyuc?@$-1GLsn2vxDCnqzG z0O`!_6tCqFnm$CoPr{Q6*dRb@;2oFL184|hcGAnJJ(Mq{+`U7$!9N>^(v*oODBy9F!2p6b z5YXWknM9Q&&muaX5JUd;KsH2TY@%tT$CM|nZhL$&cYnIjvW8kBmnNAG8JYc=`F z5W3-LfotS(>S`bE7n`q`kjY%`G&C0ZE;YtR+iqU&XXo$V>cq~}<`1=r69{vQkO^}I z$PR<21Dr$_Ab?8}CshcMYKRf;<CX?I`bbQFltLiZ_d{HT#*R`=%W#2Z_v!CLnBs3aM@+?jo!pRHt;0hjm5dWmHB(kJa2=EonPfv7 zO^LQUH&jhbY#VL0xp3A~hMO4rNP)L$!x-JBO|Ie2)F{_NA?+dx-PRXc3(kf)I6KYM zC5+Q(KONq|ay*1D<~#2J(>}!h5rOKAJtu2TLABg&IUG|XkJ&-av{7x>LCEh4BPTDW z@L2eT65Rf^jwX|Pf%%UTJ-5V*vs$auv`*t=Pnm@lVTo=UA&t4fxwc5$!c@uujj&}~ zD5_&>1{`*ICnss7L!gKo|5jqYjl|)0$Bq`%^2d&P{qptN7WVuzcyA43b}W_A(nwU( zN!&zCRk2MmP*7H>3hvaf78IG5C5R3ngjzvpiWCBwJ60mSr;Fe$8=zXpXYRfq>{>C5 za9FDd%pr=S6o7_^I-g+yA>-1<^mMrQ4X>%`{Y=97SplvW`crrB@x?+IV+p1x5(NUN z?DaOH!i$3d`+o)7>>&vQ)&;u`A=r>oC{fXFVdcGGfQ}jYwyymM|RqgM-Y!+m&jkvP>M0B!3y@UisyQ#<^f(sV2MX)0wa_KQ7S8h^?BcQ<)B1W@EOy9sF z1q?bnC(=6QT%XWZcqaX zOKA7fgl|hAWk5SlBw9tP2uHGdoy0Vm7)V~B!}MVS3zSL@Ly|+G@EjB!+wQpWl%$x{ zi!3s73uHEfd=5(>3R%u~EigoqC?t~$QfDl3r2!_|oCIuZfoBtet^0#f!fn*l1?Yi^ zw_Qotwv?I5)6#Zv1_-7p1mHVvA)*-Ld9GKaW`SXm6x zY8jijLCHLmcO+tLdz=KiZ|=?HNbMcdfIA9K5M)i=h&@iSdE5hcBTCdW3_#52AYuKk zI)T$DY-zWt1U198nKE;TNsTs}9&AwU&L21Aj%%aG9Je%vJ2lN^Q5N3yojX@sd80%& z?b9hRnH9@rBo(mR#CAh(V1s1=?gETOrCvg8xqP>rh{4}?Q@IjFC9%;@HR_p`fR_my z$w0nL;9P_!*6;!2faUB#Pn#$Zfk-3kJ0kd??t$oOh=Kq7YHMmhu#5hgwTWBE$1VPxCPp;RIDx* z*yD**O=!_4p-fQxg%E1Fy<{vb4X=5M9HSRRFo+n)IND5$q^OYEDWYe-Q{3F) zcYAz~7SJvvw}L=dtKG|u(uf{GM3M>8LI)~NnX;FJjM5a7yTWJD2+2Ww6Xt{qu<(mt z4H<3|wYZe0o@>uD_x%)!jAA{{9zGUjwQb_DVV2j;>wmxd?&|X%cgu2KXYJGXcb*m= z=w>D@QX6ta3~ZP6aM6^vsjNyWZ6=rz#A%FgoQMHLpdsPVK8=z|Dxo<^PapI9HTpDh z?3C$ZE{qZg_elq+1c=O!x|Bmmb`o*s$ZT!5~0o{NI~y{fv(Rw7ff!>`)T)5E8{sh$34)=w8MY zyq}(N0lUwiPD!tu%XWJEyJ;lFNj(sO{~{t?v-h7@{oiM<|6y(7;mVAjT?QTweE%Zh zaTl;S9>1udn^N`$hk61a`_had|HJ$p?HEo$%`S$>To7S*Ps<`B0`6PpFQR_<$m)nF zwGv_1Tq5&am>tG;Un6s|Wk*o_hYkd89Q$~{Gq1j<3APF#Z66@|@*}W(ntH8b2k%J=2xe@%BIXPo<`Zt)BQ63rJWspuLW6wEbsL6ixs5hvHAOe*Q*PU@6tn}fvWDLU)s$@1bCl;Vv+#K9&Jmpkwn0V>~fw_hF z{_Fua2eN8FaoI@_h_#i6vLZQAxcQGk(9&u~NvTx_Ad#gx!Vk1iSdzvGA}mj-OIcYC z0eE6@LRx7O0T`qS$chM(Aq3JX|Ag>EkY}>irBYO0f>MCO`8K3=@D$1p|EBgGtcEA zpCR+&pD)e?NZUaU<$S}KeP0_2he&ho5ATYd6IglI+cHG?HzOqk?E*rkHcyDFzjJgu zc!d{54wItucP=f7o)0|82*(Haej z1U7CC{p+Gqc|#PCPMQ*_frV+5(0yoiAth9@Z}S3H{t69M3Yi4`p# z-a$Y?RLIEG&RV31`XW2#jkvI0Koc;3Lp;%v_HmMOMHRKZQcYj*n#f_C>Oe#R2?!7| zGGU<0q6+es}h^oCyoNbj+ezr1{`PDeds^R!m0m z=DHpV2ogaAnf-pv*4gO4-ta@`x5L}cl@$k21Stn1)=MJ^hDg3{wWUYDWDSjAeAcBO zV&+G2V0JcOa^Es7V&am;c(jBuw#TjG;!TFluFI)_o;(qz`FShOT?`vWNi)$fhPnp~ z#u(3L`p|fpdK8!1R%&FaBT?K#3r-vR(Mc%wt`#vGMg^&PsURQ-UamNEFzk@Q_m{tb zW8}gvX_YLVV%>q;2#7>Ek(8BaEQJ?oy%4pi;CtLxChz(P-#n3tSn#}YgK2%oZG&TL zvt=@d!L|)l4A#(U^Cc(^7D@Vwp)yt0Z4Rhey8Vhd8-npNZlKBR&fBhS2Rn*We>|>0@EJlr7s{J(!UTcHx%VMl+Dqn&3T<#pBqmGN-s=shX@fEHAY7 z(1Pwfq$#x6Z*9d+Zu@Q;9=~6h( zasfpY5jrh;Rf7aTE|1*2KAtc6Poaw;^pJ46IH)n2OlG~n+lQ>kc`g_b(K3h%7;V`d z%xu~=Y%!YJL>8U)O`^w3DQCcGRMglPYk�JFu$f;T**=Y43)T-EZM58A}(C>v6bK zeT&uT@nt8?#!nt6f|*Lp3>ywBMnhPbhPM-`qHL|8w?;guU_%yF(>g(8O6wLG#kQ?V zGMuhLrrpVFH6|6bHcgnAVRCP(VOK?KX|}kQmNGqBa`Y6lCt=mQ>IgOvZLJsc0x?l5oq;Z8{(^+O)QA3A0?i zd(f8u?umi3d;3dA-{7GAa1i=_E#GcS{s}K|#8e3(*gE!;?aGl2h$+2iyP0vB4I0!! zY~x^q6xw2M_M9CO*v`I4a9vUPpd#Aew^2^-C|5hWY5pTz=rlkEbZ; z=H^~g>LJ`jkxmiTkkcA2Y&DYw2i;f2#UR98RA}k}~I)emm z5EnrKBXQ42HfWP+FT%Q>qVRq`FGK%6a;e_PF+%@JNKCu@xE-0W@ig|kgq~EP&?us5 zWo2B`lnp#C9y3>&52(e=lAZWfusy|*N49Wkyf28NjZV=OtE<@$Sd0noN^fUD+4B@Y;Z&_nypyZn{A0Wr~-@d2x&2l3Z`|Gp;fIt9G66+&G zGbM{r>$FUEw{C{5=8`hYClOlMMaX8Mw1JdBe8wPbbqeW zG+FGlp>6VT{-+j=d*!jCF_ry`(I?s5)__O1(8HkLTg*}b2s7grU)yIK;8R!~UxaZ9 zJK>lPa75cq2{wt;;N7K?6(3pP10^~}4PE6Y3LjmBu0H}u7!0&n%UEvfW#YO`#eddc znmq@^x=U2p>?J!_)S{COF1fJhM2MV8#sp&S;}@uhKty?M_km<7^BGu()I`Qo@>1Ou|W zB6zuu=kvM>DK;vC3k`xwLXkTXBqrA;_=o*M-uodgfm{wM(dF;_nS;}>XTp~O5) zi}LO?Fl7mM(8{{8lka|Mrir-rq|( zgSN8lhse(qt%F#C-^pp?JcyHEBpt*ASS>6hOTICH3K4abEOp~rPqRGA{UjMyU`Qkw zkvB|+AcZIq9&#b4PIW*v9D&_{F|v5Q_$MCdo~O{&g27XM;Z=4)(*6m`-%q;H+~RHc zL5uRgS81=$uA4X%BX-c<_0Hy&Tmc0N1=GGEoBw8jQr%%yP)s8(F<$xRO^ik|yG<4}Hev>tp0uN=UD%b3945>bk71^skT zq~yu$XQ7D-nrjQ@2vlo9>3Tq`06>-SmI^?nmI1WbPY;ecdmk8y+ZI4tjv?|w^Rx3= zV`W0ejyT7Q?g{@NKJ%Wcob8Rq{9YW5x9nP~t1i;&H2WZ`>HI08o3$uhHgS#wfbKhD z!OJW4=5>;>5Ya(&08`RNAN92iw{y#tsNucO8ZIq{l2I?23&!)&1SS-Zz`^Kh{w#;Z z-IPQpfn_MAA+rC>gu;H#>P{o)mxz^Rym;{(uy_FmC-VL93FY~jpL7KF9vOku^DAJd z%ryXgMiBW($%Vay9sq~m`T`k?q)pMk<290lVc~~>E=e@=-)&^BK!YEI9{O~5ZjwNU z-T!TPhqFDA)EEgK!1f_PQZv~U96i?4_US&?_jOM*es@O`!v9`2SQ!v-5s;RXR#Wl7 z9QEW8i*s=o`P0lP!S}57SA}zo{CE5|w@WE??Wt2Gl5vyOxB!r$8ML8ARo{&@R!dtL ze0vDKaevo81AKob#TAc|;8$4WhyYWvU5g_)$foPm{UutEo z>LOsf`6WJ`7Id*6a(o70(Gp|04-!63#!20En|D zduZNPcmIg~?cZSC2K_Pu+u!14y8On3+IC^pSW_Z6MTl0UA{tMarqE?LADvXHJWjzr zuK@uWHRFcw-VNzo)sQ|%Bts|&A&ewF_xS>%IBprr);b<|!S<+1(h0zlSQ2>+(wozR zR8``jzj;|V=aHFU<>c_H_7-`6Hm;2Gv~~z5j~A^tT_jNdbe2`dJG73X1Pv3iflbbh zDO3K3IPsOjD*8$g5da9$L6g()RBfLCyn<(&6BnBk0e@(iAl>mV<6J!1jUL6%PyahP zSMBM`$c+yyHMa&t;lfm^hQ$(N2u|Qt0#Ug{K%-bB)`2@hpmhO(Mt6RC>L3Nloxpj$ z^?&cHgRa*H=q_N_(|vw0*XrX`ZSj(d-EjPbr7xALbrwl(2Yx$cRcN8vn75%JfQ=hg z84Ncboh-8p=lQH)tV(GV!Ju{Pxbx>c<_Tyx9OF9izj1TmEdL39BeN?p@A6^$cK9YI zZJ)YyU)?FbVi)sQs(u@%p)eN$ z_f~ox+4@KhT&A->xnMewhM^z6V)^UC8i(IV97OhvEiPZrO8!(_JmtwiL;Z{RRXg9M z^QYMh%OLjx$hC?MLNic#Pw)L%PnZ3F&gjLqZ&k#3SUaDxr{tbgyM4tLgt+W*bn*QJ zK$MVw=`F_}+}iuOe%EGhaV)2Q;HcmrOWCZ|EB*ZSJj+EidTfuzOPA9)SFX$&mU zq2gq*EG0)$o24VUWGdv_5@=wUiMA;c_(<6kl;BC510A6ujT(|7o+oMWfOvO+54AL* zwKFWEhq)x-Pf4L15pZlop`0BlAw=T1hdA1_iR7H0-yDT%B;rNUFAX-5`7$#Veu$hN zh~RaIkqRP4M&TTWAe_HXjL`ZNs*;`7=Te(8;oWgbv0g;T{(FehqX(zd0|fl@O0tNnbL4~jd{@VVcQW18Ta?^Vrq{|p>SrnersK(ndhx5xuPQFsT_Cvy{42y=Qt6kZU%b23<5pr4M?BCV zG`|PB{-5FfkDo5?_0!QcM3?UJAYO)cZ(e&Agb#l;_4D$4Z8Imp01;6W8CjoVU?wD_ zzF0Ca{ww{D^)?3Qz1woWm*Dwb=Zn>8zB34M#l@EalrkuikPVrR6G^q)=){>+QT8sZxVL<$p3b})twwwoU? z5T_>u4KYA0`UT(peGHFF9p`_zi}&?_WWYo~To9hiQdzg_M7KNFVo7w^VC$A?XJo zo3Of0hDX~1hb+07{O#C1t46mRJHUEi+!@t2Vhnf315QSIn-C^S4harv^nD#@W%rGP zVGdjjSZ*J+IDKn?S$k0S9tqQ!tohQ-&onTXxU2 z%TSPLg{-P+^`kvhnct=t4HNu;x`_#l88Fd|k$^#y4?1jQwaIg_0PHopR={!nfzJFY!6<=)Q~0t zU-Cz2Ll{`x79YN*?D8OU2(nhIO08u?nfXNe|7-^ zU*f{s5(Imwm3zImFPvnKtIWdRv#ezdn<4uDVd2c4JVZn{NYiJpm7$VO91LS^jkXPg zF2YnfQwNrmG@BY@A28vKq|Qfy5~YyQ_AN?7V8(KcA*RoHllsy+x(ID=zh>tH)KX$p zqY?;XY4@=V_)Z7mM~T+YQgA;y;Oty9(+y7g2{O}$n^zeLwwtA*7@Hnn<&>&wEMVL= z(@bgmW~0zRwAm&$j^-g~vfD`1TQn`emLPN+oXmcmRDW^B zIH1C^Wkn{_EA>Ub6oo*TE5cx`%@hmZiHXgH%aL@cl7dsbWFNc`x1DMPiHjHI4Cx29 zSBf)>gTVs!xiW1`;WW+Zb=cICEexzK$M+COFP<4$#V?V9+b-U>DPMBL6{53e>;B{5}-)QUo-iy&E|#tuTYDs52~qb$2Q8CgUOux$;2wlIt= z!dh`yjAr9+AQKj`1YjImE#4Cr35r%Sky2z5aa~dgIq1P?v{qt+6@su>!U~0aR92ac zO*~tK7%96|`suGqjBvbT{832RQBeaa8A$1Ng;|L53!;nj zF$olkLjM6}1yX&?R_!#x>!KneF$NU@1|UGJ93T)NC>78_hN`PGEQ1Cn5kRlrp5j*m za?h3YS6qr0h2mJ^A*Z^(h+`OTSTi_+(IBq9F-p^OF|Ir1^9Znt z1nfv`AdxC=3Pu5| zloZP!9K;lsNHL6@7S)kyNL^rQu-hW*U9Uj}RocSkHZBE98?$zB_C zBkc(+nxH(40C!GtAfo(|?{P%s3n^tmIor3ZMo~>S1v~8(I`Rn5Y)O_xCSe$ZFii;s zl@KH#yjoC^Y=R8Ih)M>GP+|m3Xs}{P&8h^EkOE?2*^3}h3QKM#lnZ($3jm}bfLjqU zK~2)(OcMnIQ~rLt8nyKtu5`I$j_M4h)FA z7W&6Zt|(2&aTL2+bCWbo1R#?HW4vtG36CT#f)FDxyhsr-A-F9Y!3PX3v0I%J0n#L# zAPH-M3CMwZM}3N z1T>^ZSwWbjS8deXg@~Mmia@TWSgJSBnIT1@Au;BtP$nuNaoB4t2hm6H|FVV6mlA_!{AlH%wfM~i> zgB)@e%h&q*Hv8Re4NG}D?caB_;ZDYbM{{`knv7jeLrGs*y0y&1Lvr%r*v)5r$iP4< zLsOB`NKM$tU1RJdBje-laq-(D4##8Cbo(8S$77$AGCZ*k#_UV`kC=>+1>H`oCh$c+Llo1mSWaffl z{o#xqSanFEc{eDW=Q+{S2Uc{U(gt`z1R3F;4Y$(;Mo6}R!#Fj;zyd**8DT(J7J}GZ z44~=2!We;&7=e@-A(9zElo^4J91uECJg^u*KEMOV2%z!CF~|gxLrEl(Ngzoil1U_z zNhL2vA3!{a|9UWvIOC2u1`-Gf1tu{`Ky?K{iaA83DN13{fW{jz zT8!Jw>ZEQ>?%P|UIIOKUn{JkfKF-uAW4=is zJJ%g8a2%35hv%?NHpr8pEXy5uV7+!+{b?}tPp;3t_8sB|E)fUarnSek*^f}St0XLU za6&3cB)uXYiV-C_TGAtAjOD@gQ*99B4B3@x>hiEq5@xV2Oie>?DdWlp_3RnW!2?z>hMOp13F<^K?Ol`SB}T_c$TCJIftjQTNTY(z zC1@cqZ4D1&5GK)Mh9BbU-3$%T*FY%{2N;1swLyYKYOI(wr3(~jhA_^B4r5fC4g@4I zT2LfhV)f~U^@m~hbM9VO1A-dTmhT9bCQT{@(u=A;S>$TCc+w(_zCqeP&Gr)GSGvd1jUdhAkGBAF)&P9 z0YJ21OpvjZz&m|75?Z2Qs0AX>q$G#MT}YUOZG^!f zq!!0dK+}lRZWJ~*S0&8zD%IBLgF+kwykx1ViQa=IsGgoGff93wZCMHdv51Bsh|83l z8nKbEWH(D9i9*K|)%g(HcP$S>R5}yp`lyy3+Dh9Sn9~~@X_wg|L=Lt?5ZZDaG0UOi zNVz2xQ40w4j5bhB(rqF)86>PM+7cDDHjr#EK(j*2L;#tQVs5xNbTt7;q=Q~X(R;A+ z?telAfVdr}L{LDWa3B^XmP8ap2=R;z?D7or0T)dBg@?9OFA_!JNK_X{N&>P41dL)u zqJt>RCI(qqVa7W0qD3MxSd2i$V@-*JIL-~SZVeVoqUbMV+1AEhw8=cEhV`PE6|LF8 zI?&yo%gbwl26H5du`&nf0REZC7<686fJ|t{VM-BYc4p2@z{tGFZk9z7i7Zx$IkE%L zc^MvWK|Zd7wWWy=2_TF}3Zx4$4wMWUGfTGo<|mq36(=acQ!dpBkpA z5-d%qE^wR90MbW7Fm@ZZzeAfLFhSr*ncJQV@1v&%c^Qd#&?i{#F?{)CD;&7f{jvb zgoLW^)VVpt{;EN^^Nk#bU&mkJm$*2Zf9uJooA4$d{2oL0vx9Qf5Xc)7Wv32N19oKM z3&eXPIpzL-H%n^YHRs^r-=bNu+ur5PiWDSl1RSuSRjQlcMy!-Prx#(vyCx)(L!{X~ zh~ju8a}`~Me7I+0Z)L;FwieVQA08B#*txJ5;1|io0Bp_c>8qX3k>jTgu2Im*Lm>wd z<_CA-%7@9bkY^feLP|fvJ1Il`R|DqaEy0^Ey{>j}(Z7U4GvXU5gPzigC^}Y6lRF0h ze%yb&qP9b4ozfS~YnK!8U(!M6{A3l_HqgP1J>(GlbRr-0veyEM1r0XdBRVx;a8S^w z>W8ODROO)=a*6q=NpE`y^Plw;RN}`Odbfk>-$gXOJ2p*gPCJdf8`;BW@HPI9`%`U| zK?XEKVT{x>utoxA%;w1~)`c;Qk=UC%14)Y?lZ4_3ztP#$&_v?x_!~2t%9I*TRamzU?X)a?M9Saym@Wq3bEU}L41U9#?kZH4M@*M|!$YyIHHrU4ZVHu5A zI8N_R5^3?ET|+Ru${=myakIcN*Q*zxx5oIj^u?g+UB;h13N<@f3iIeRDRPH6hSOS1 zBlci`&T!ip)_iu-$35#3#gzjYmD0$<$+pJH#5Vb+dK}=eTjbYdz(+j25~W&PHOVf0 zZx@PORpQp=a*M!R`qo;jNLW{dy0zt&qRL#t&Rb>UR`qO`Xt}lM){4!ECT|@WL|B|>l9n+7!)no%m%|zNeRc zOyIHhrICVwy2j3%2jS%?^)81=is6rB!W(;!>Bs%=N7+^Zl6ZNfdS-(lE?sX^tB*YA zyW?zZ4#Jab-8i_y#$!YctWJ{r=%A~zjiKY|2nN}Vhm!|vXJ_1%KmW>A-PX3pJq($Jz6 zZkLMY($Q%LB>J~;YWhq#uII7hPN3oHk)m4;W#I4O7`|E#(UWFd(sd1O88(fp&}+SD zK1)Gk1?Bu)D{Pw*!;Kp42rn}&;Ak;gE8bW;u$kv9r>TDgJh` z9%DC67hfZj6L8cuXuy$lB#PoXk~?v$BXgkdU*Jo8utiby8ywr>%LF^ z?EV{Ce`4>Zdy&dx5TNrR!C0-?T4tv!PzqqehU5_2pzTgNqz{{58vD2yCj$X9cy4g% z)xKNXpg62aBof!|^|dc~lWn`*^HHcvobx%-R2_t&dF$+0zFXw}f&oIyn^_VtjIARV15^O={m;fB}NJ#c=2_YhuAKuagn?ed&NJT9q zkv1UrjR|9HuxJW?I*&=&MJ3H525Zgj5*3;B$jCuFHqk=n#oi0+NUGPM@`w0bEnE#B zfMeSwNVgKW_&+4^Q|a#S}zM3E5Kv`&=LBin}QZOwAwKWpqHn4A?=hQ1Q?7`@tXr?)cXgM`1AEe zINqs24_l$t59u;a5pf+C6)b@c+O21v_63s-(UILoNy+_dm#?@L+Fp_qiKxr<;OjbnI+evbt#Ef;CK6nf2{| z6}wxGtE?^p*X82+%tK+R^*j-XNcBupKFzWg0~s@Hx%}Sp_d9EhbOnXLVyIu{ z6t6AO3h8(!{ugs?u5{*4q%VGPRuQCH9ua;Xh}QgiVa^^G={$dIu6mcsi=q~&u0m}i zv||PhjA9!=n38QY+hc4`P-;vJz)!hTYh11HByDLR_Vs}hEm;#JFk|*kWOECM-2y31 zwp|K9fg_RKab!@^XJN^|-OpzT>>`2VAe%-J`5_$X3;r=tBi zsn|MscqeF;6^{uDnL&KOeOIgY7G$OHx;kD&K*Dyvgk zW;+tJhaZ=Meo8yzb>I6xG-EkFRQd2hIEA0qM26Xp+gukWu_88&LmkG6EL-&c@y5yR z8FZSNXEHiMoV%xKJ7X?PD%X(&m!bg!hh1SbBqW(1vBLKgwU84a5&4)&doyWrFy<8G+J&9U-ekr(t4WE9nZ%w z({wVpgxL%TV{M|_2x%L3MBp^o61@a8h)S7Bv9&Ah#`L@jtXt)bT*0(^4SiB=SR$`? z6kwpWF!x~G+SlhCM$|TTYnZ8LFwwpKC9>+JrG$W;aX&$5QN=QhA_4uIS?tq za+pX*Bw@4elpC0swNwNx2=kNQ^IU4-?U&1_OPdZm07Mc=Z?TuL@_c@0DORT{1DfdB z94q^2bZ0U_9#TY+>lNO~?LVq=?$O!30uiAAA{(B91oQhz>Bp}uuseF{1 zdG{|cD3G?o7p?n0{Br+$JO~7mdk7*yEw%cOHJi8CF|@UsY^8-0g&~l{LqOQRKxN;? zju0$qa>qkNn0iV=!N18JkD;Hiy&dh_RnNyT+>W8jpyhisB{%Q}nBE1SXT(x^xn;=w zr~x&?qX1|}V54Hx*(Qi*++v5?^^kRTXU0c#+Xu}=Gd%sVM7rog=IOU3L!@6VWoQ#c z=V{QWvbp(Il@vmq)1M+wqPQ5i7Q*-^=VVxYQq6flU2?RDmPZgn5%fu+)=dFE3g-$& z?*0WalY%I{3t&H{hSfG-EXCoh*&i*#Zc>dG*m%ZT^p@nhXm@36zZK{OAwti*82ANf zq??E1+!@g)CTKqC$-D5K=+c=3U$dnv!JKhLkStM5^fZFT?*>WYg#nB&#gJAm2ha9c zzHen4&Acv8F4n>W8FK;qr2-H6U<>?)ge)&XkAn+?ub6Da!fm0j0*f~Ja7HU=y4&gW zT+4utT@b|jZ$$1ohrn=)5#C_}x0laxGZ+m9H4|?r& zedNPO4E2~un3EI=u++?$EfFzLETKT47ErH>LbNBKhS>sVBB5hosiVflN#ggg_a=0um|;P!J&_k^`Lx5LYpRS;*NzAzT%)VhUoAmg6`@op5l|p(RoL5NZQ2RMn`240BuG?=_^hEl(j+F#kb8bl zlf5vJ8$EVZ)dssQN8|A!BjELrRITl-`qQD4S};?vyODdN!BA+|!MQR`$=}A~(K@;K zlWDbiklxpv6NxD?Lt|jZ*qO<-qRM8WwX}#${+NL~TBtVS1U4kZBM2lwnjxl}Z=c9N zW@wuwaD*gf?BPrrZ*j1amdw|jk+TcJwkkzYa&iCwYe1C00wMqb9`A|@5RATK=*B`O zAtC#mT${0=6i$q&C4rmvNM};g=QH63z{VH-i-bs95Tg>&hx=gV z@nCf0Z!EFXL_Vz~3L-Ea zf_ef7T4I1)@R+0s7%o+EdwzmoyCiZDCN1!wLC=YbLShCcCMGV3V&#P>1z@^G)b|pY zE$Emn5mYS!NK+OdDpn4oiAb*omhs}jni)@W=b#x~n;kc+8Y7V7floP_#auZdp)e}06Etuv0`Iw&Job>LlD z8-ocYDG+ou?VYAIwubR|JSuq#>oF^%PQK%);>#*8aiNwL#>UfZZ4EZ`d|rI9O(Z6E zLk)<{ku-nTYgdu=R$HI*U$4*bwYeRod#yaeb23KJ@9@rCOprzVMA8*N2zh$g+P zFn$j?>v^#D@i3E8T+4H}pRBbiFd=y>!T>VVvffPj&l1mXEo^PGS6@?prI4SmElof!V67tL}v zhIqX#4@GF0>o7HG!)=dJEiypE9mDd`ujS)^c^dtGy@s_#QI;7uJa%42H2D=%XZ6m8 zJja!vIC=YzFKk!_HZhylwv}*^{bJEZVkxU17XgORh51T(-gf>@t-EoJZzD>APXUhU zh+l`8M*Cew?0iU-XuxOnF@q+;RN^wW+8aY3t|9>E{<%jVw$r1A>(t~Patkm67!wI) zI4VpHo-_jUzSC)dQS^zM^8`U(5Km+E zdcGz-Wo@Rid-)pao1EI{nqy-cW5n|Kgue&0t1scXHEZLVwiDfXfD&zcVJrI}0F!Aj zanc*mR|pjW7?re923-C#D=iisi|qu+fR7D+Y;fh?$CP)iT{aM&;bJ?V(<83?;RD&g zQiNR4-cUUOe<2SsP$)Ne8Piq~8V6byCQ~`TKAKUNmZ^Tb`1i$${O{G#n?W;a)4UY6 zH{dfi?*6zoq&}<{C~(tZA-2sSmDsv$Yq+hJp~jL6vDd0_T>S&V+uytwJzxcNpc7N4G0?q8mXC( z*qI-0S<4Gd11?0!jFhX34@okbpN9^7O;dqub=wl6T*kSI>!ORx>+<)LS8g^=9x((qY_34;LB{@L7H6e3U#tBt8A*PtmX*y9-eA1D+0N~U^t3PaH%2MU0O^Z7KD;r z9GV?&7_#F65P~EtZg*RE9?L+cZja`+SA$x@HdBI?sPshFa!JienPV;p#Izd|)7@H0 zgbt7}RwqXyLn?Ggfw|Sen-;7_6^v;W(=!L=^nZNHPmPpEBMvAZ;mXC78)pkq?n4xE znGe-NM+zgl5C+4jkAZt_MFK3bXv!8GYH<9*PAj(MDz3Ru7wkx<>x)s7^9A>*5L5bi zQw<~^^?PG*4tX4^#R%7zTAS_vE2!@eJNHIk4fe?v;Y8~8($6@(TJ>h-zIfwwrkWt0 zMvU;%ABKs@s(CkLNz|7l`wjx-BPu;s3bPc9Sv)R$7rxeXb^Os6rO_^ z&(%~bYXMme0)SHGBWS`@tYpz-#oVQ;zH-@PT0O|T)jd|Lr6i((&o*T{#6IL|I}pNx z6A*C-VpEtanzl2)^4tp>)jYJAgo2XEX-_fQS7fxrE2hJn&bWT=R&12SYL+YBieD%% zKMXzjEMwI$EAbf=Opz7njYCU)w6+AV1T{)3P^^I2ugY|YQV*q)YD?Ov#}YkcLMEhQ zFM64U104-@4&h5$&n-Oui{m}TlH3s`k5p}{$^_0@81#6tUSQVBq^H9(1QiuJh|;P^Y-PP%9xV)SrQ^1MY623b`TlkW6DLRNuW8UG1?$; zmgsChGsf^?bXO6WKlH=&^mQETeS2>x+sauBSPJNlUZB?DmU2XTOY?a}3d39)?3$_& zfP)B;J$Va!v>B@craK;g$9^1qWya1|G833yCiBs$v0vbT~5O z0EzjTtnvvx(}D-`8K-u$Dqf+BAe?ed1x2qrEXP6<6ZT&R&Ok$0fd+#1*mY712wYUT z;Et{S7p99jyVQnC1OqWp9ixbmhtHyxgazUMeN7CN1!~G?yq=Vs`O8)XkOF3#g-^;- z4qV6sfz25on({F>WJ{OMSaT@py~qqyuAQ!vR&>r%>F%F9jwb5esaVCJUvVz0rn?{} zW=1-MHYR0Pvr3p^`9E=XC&@n1E|zGvl%E$U?pk}?x8*uU_}R6^0!jesG*AU3k7&>p zXRrG;XGC5UXl(P61Wa-htm{kSDZka076$Uy*u$S)UGGL#py3d!mZoc6lCkwkAj;mIt~! zR2vK(snE>2>BX?B?Y*>cajCx4*ng9T2MwisJkuM<^8k6eGQB`i%uKn+{NKsZ_;ize z7m8%<%<^}Eo9kLzjlGqr&u@n(udi-iXK9}PFAAnX0tz|XWOIUE@V16J#5Dri165um z>X>&V%HpRyY7?vW(9*e88MAjq zm}ol#oe+}me@8|HzU3GMecd&mO!=GDW&hv3*Hf7NnangPX4K>$k2I0vySVE5>NYm* z&KM1386oTr;U%Ja+>m&|J%ZuEAg6x$!fI=r2t^P2m~AxK%_a&PYkJGG=a2E_yDLWD z=IpH$v+YuJayg%c2PeML>!!Wi{#GlxTS;8Sd8d1L?4#k%i8e1wwSkA zIi7t-_IuXu^x4@AVbFSAx3Ajte57KYD>tdH*2OlTBLe9= z&u%+K=p@d4fHD0y0b)UW6Ncj}{_clO*< z{L(}}MZ>q@|H%hwch2CrOh_6Fmf5#3uHZCs0}Ncer=xN(Ig)iRAq7F*b~Jgy zv*xN*YOd&fR2E&|g(~s$&pFtimE<7g$f3+CXZUUrGUzc5fq8j;0QVAbe_+(rsty}z(=#PM6=B)2ppi~Gk%Ym?h%XS-2GT5Mz{F|^b@H?76S#%80m z%Jd;E7947|GO@BZnMUm5W2vYBF5f-a2fTYO=TG5&|D~U$v%AsQ?>odgm!WBC+Ycx# zo6!3L|M%W7XaMd1Ev7%9*m78@?x+wy^3T-EP5iz=@2Si@Cg+WaxCK`*T-~ zOLb*u1PHe@vv-dNB*Sa?f{ov6TNrp7AT4CGkUKr|tRK&X(5hQ~DC`kBj8AbNQaq>q&Kee&(=`BiXaYdB|5P5>KK!69iZAU>PKe`YJOu zWy;-4b6Oz2gjgeE7?nmJKW;`GFB21#<}@;CudLo%u2`U~V{E^D+{-Cps|cr~rr=h@ zWb$^!JMUMKBtfOS8+!vXSeY}_g>t-V{@z~b<~ChLZH(0N+WOnp=+CDbI$7kvlP~Vi z$nn?6kB`yl@^0k1()Ol|8^A5ufoL?k%1NTHgZ@RUDDv%99m~b8eAL|x<@ajty z|J%sU2(2WHcsz?sCC$>ntv%#H^EybyWIj~ob$k3{8$vDPTN>x41RWM?io`y5rq%TT zym}0v{E-GmT{^fM4T$j{&iNh>Hyb3NS2xJyMm_HkBR87Y>T#XtYSt{QLc0~;k$Hf2 zinC>d`>_bzPv1vc5iEJy%l~odBN8dsR*QsBJ;b;|#E}X0)+`Pp6p9ufM&6|o-Yhqm z`^+H_{omJ{qH+-Apt-eUoGFpRFpr#)2@@gE@3i`28vAy7-8y^!T)(rzhUbz!+J7vI zoF-+;UpJE^^2lyd6vSL|jp9kC(o70?JD?qXc5Hg9azsPNGJ{WBe(KooT%)?!N~`g~ zAZ#-FcdKbdFtXVLxf=ARo!9aP+J6VF&9$!sJ8v>Jfix;JD22(|q%UbbhBXM~=p$QY z6;lcq^xr?#FJFkwzSr5m-D-q3TWG=Z3C@MY1WqBH@uTa||i4~Jd& z|G(T1ppK>9=Go?6FN+)x0188?4UibnDvP|dB1b4HM6AXB%Xc(5TIapFT>dOEN*rpCY-M{B(0;~07i%5Y14?DM9C630;dG(7 z3u<&K8oRZIL>fIqN=i3$4vzBUHDj`#hgzbP^mQ%HSejVMRF!_Fr^(`H21Z{zk8vqx z!$v$j1K)Q1{~X9Ac2wG#g7CdV4kH^DLlM?@YO{rvL+svu_ImrKz{zjFL2AivkNOz< z>D)R0`+ysLix1feAJrobwqYea+w$OP*~p#L%CFizO`n(>vnz3S2xQ=`jRR?~$#2A- zPF5!7beRnPj81=?zmc%Y)OWHi+VOmlxA;BavQq1p{+@U4ZL-4}tqCBsMS&nuY`;7E zoe#}|U<>{(mX`twS-g_JNW^nuz3Z$pY8VReuLYZO*$3Kp{OtahuoPPl>lZPaQ)R`}$OU#F|P0d(7j;-UaQe#c9G=J%E7zgfo&fKdU|pE^DOlCVtS zjUl8d57iZqS=TRTC1eSV{+Nk_$#Zf=6!Z~W;b4fzEy;3^V5>povQ`a=!s!GA3OzZM zqQ;kFSo;DG7&2v9ja8}LZK;K28iL2E2oZzg)g|UQndqg7Qd(xyN)Pl5BSAr3FtO@b zgW5q`PY_xaWEuv24rPy_?P(D;|5{KGs8FR6ktE7@EcM2dnp7Px7gY@!G7%Hg}0eMfVdnnHC za|#>-kzlZ}ByEdL+tr-fYp=~lE_Ngw0t2xpy|NE-oa2J-KEZf87P!wSjSdWwK@!oX z#SvjgKi6oP14z99T6P$dj9LmBfwaen5e3{}#>EJ{Hk+`jS^QJU+U0eRN8P_Y`M+WB zxsEj3kZC#&U|5MWhY0LR0VNM2X*5vG+=Nl1pCXtbhTJ$~VCMu<=apvd=qFt@HqJsS zvqo3PO0G6d6}4_BBsMG!A+&EbIX=H{n=T&gswF;YA?I#=rrT3W=DK(1a@D3d=izWi@fz4CZB_C_zXxtekt{708zZ3{F_!+pe}GXjLL+BXQHvy8BSb8 z*39V7LBbtd!T*6tG4w8)szyxF>bJuyb(F035jgW7SuEagk?NDbF=2B1W>LP3v@sgp zSEwOyzA_=~s~b~`JON<~5m3YBmWeGRa!887<=QtbN%g52wc^!!Z>t0P8i94P-&{|Z zw`P`!ffn@^`+sfK3O~BlO65zNDLs|;Gwr4)XqbA+*DKm91R855q4$=GS5?kGl)W)x z7?lZc-ao5g*tzSeL-sO)_(K36fwReGg_1-$HjWBdcxn=-$VW6hvw;@d=S>~`MI~e) z&4m-Jo#kdej_c;0U(!`1&@$uhl)D4`<|92WbBV!OAK-lGg?G%zmjqG}WUzK|nL>m9 z98sAZmf{an{Izz4=(@dM7QL2l%+8tnFVjBZt34DT=?#!X78q9!j?A83(0|vx^yMkj z=;NIqQ@=;+`}~mq-I#wv;5ezcAupm0KdXOxIv37)kT835&`9vah~k0de|9_*{GXD( z$ERp;EX8Cw@DC`Q42j4i_pb6V>3;9e6r4)k#N^BQ;iW3So}QA4$nmtC`~CwG+0|`m zz1mS}eX1a9N)_BgCMd{%?Wa@r0S}!^<>CO+fD{t}Tqy1>KZBi%gf9FgcF|`7gM|cy zAnKLyfd|Pb617N@gn48+LAY&Lq0vM3No)DoZ2F3_rG!3S}0f~Ub(`~V#14%hG17c~7 zK;T3|K>*k`F$`#FjW8N)8e>RI8fm7)!KT|98xs>_aR8zmB*c)$F@WL}18hmOnrvx} zwlN@VKn!>IUA_+n?C#c94OqmXjA0OzA*6;;H)N*9(L)GlU&5r3MG6{18chT+fM{Sg z3AEc~{^H7ROrn-fi%}wI8*QPcnrJIz4YV*CVAu(i%x(6uF(jtJj?_avM|EYQgo+q} zw3rNR0kjNaLQMaQmKNxtp(Mv8ONkLT2@2rJq|#^_7%?_5WVN#?s)bWUOaZZJ(_Kur zT&e^KRLM?>BqXNP$cVi zMU)#jEy`jgd+pkync=4GX(184gdj+dM_2Mzv#Fb^^)amB-}q!fHIun= zigEcFJsHi)Ms!gxqLt<HF`I4HK$%bNfY}6*rTD``;nww`0x?57NW@sl514 z?@Y`Q`ATLKI7B7wpPXcW#-{pyfjJfbIvEe?%1;|55aC%QApZ$}9#HGMFri25IFIN< zf_;qBKj__0t14gN9(5d&4P@ci5L~ImKnNr?c;P?Vz*6NKSrFM@g(cF+kI?F-A(OWr zdP;2GF8BNhKV<%shIz_p>wSrGWc@eg{bD|`LFo_tKg>N9hH#!>C;WeS?N`xnG!TNH ztNij37pGjNIDQ^#4wsz~>dV3ph*|~zCw0Q_d@tKLZP93uN>Y4j`0m}(yv_7OYtR!v z1^)}z)LK+nNwmR@w_h6X?MsI*wyD9r^u49yxb7%Aft*2Op7?%06rw@vjWG)le67Jk zMdNa$fM~T_<6GF)7KK7Y40c-kzc;wuGWzgzQF_l!G=@j0Spf+Hy=-gWESEE5y|0e) zjqPtiHIEA`9}VS4s*rgf8880nFrRq|9_lGz91z;(e@WTJf4t3DM4*F)RD^g4dJ}vP zN(OiKpp9SjpX!;v^$gRW3>UfMmZwPfAL79a`hR<7PJw8WKEV&Djb~3>oEDT2Om26I zl~e~ok*zL<*#marKrw;p3&4W_UoavsB^&Oe@^3souNLj($8=ZmkPLx9P>$Y!CHJX9 zMetOH>q$pqfBTs0`987L&fA`y()U4)u(G*Vf!MLc7@}yzXewlgh-5QWqErONNeW~i z>M}x9Q2^pni9&@08F6!0zK~%)6apa8NV5CWW2htV@={P*?otnT8U7>zowG}$TTUd#Wk^OCZT>`X^sXi_JEL> z#0X2b+wKd8lk9$GC5F3ei=JtoU}fd&nYqha;?#G)Qxn79b@_&Qz%hi+Xc$eABa4-Z zpR-vqnH8Eu>k{d}2U*F?8$I8|j49)aPA!kd5Dk0k_iB_P6|waI#o0 z<`3xPU?LTdn5Cq>QDE;3U3cM@*K@6p(xnwh$(co@bI5%?J(f87wrX$9MBINM`z9SPL#*E;aa{iQYhGufR?QKZx~-`>#i zawojK*iH!|{W|v7%9z=dQNNCSix*L{Vdp@)dO%OILl32N!c3w!#HFbtXDPH5K?$+5 z{eJdu#h9%#)H<8z<6oVLtDI5QMCmfNF>8>o^?ks4U+ZY3!wm4?fytkvRsu+Uv$f`0 zE&q@H9qbxQ_~`@KUKa|ykKYtozKn*qd3-B<0^@sjh4%*>@T6-FqTI1%lUEA}QDQQP z616E#Ze5Z5gZ(@g3g={*AOz?_}*mf~|EK*5MF=-$%UNyu zs*GB`>(z)qJ-K$NXCxnLnSY#xt0$$ukVNe$?Ueg32X|lJ(cw!a2&BQ-JP{%y&|Hlp ziR-0UO%CmoBFfDe6>}<~D1eNFtvU$(81&~8t?854_Q|FyVh)B5K-OOH0__ zom|OM%@*2XptuqKUF7Ul*aU+pabh4*i70TWWo)$4B_fo9#8)~u%y;TT4BMYNAn+OO!gzAZF1OOKhR5oevuGsEAd2~? z{_=#uwrp7j7aJ_dS&{MLji?(_vG!#J6a{?qBsRv=8rei=1v124(wxNR>7OV`H!O|qmrx2mO?yiD@9t@FD2=n1~{z=RTkbvNY5{QtH4k2W+Gr*17 zWS@q@8a&_B#K|b<-GB<;ko9-AU%|1jbI<>ON#j0MH$vS|FKSDUd{Dw9Vq}MI*EH>q zXw9JH9ZmlQa=Jur23NakChsWmDzgzkwVFzU)FFr=Y{m1W-d-Vw4nB}SuPKiyL<9{s^oI@ z?cVv!XFW_b+bf9E+g|^UwooY@Xe?pF7WS|8@dv#s0wo_y=a;ny(+qaU!pa}l2ooNz zQ}`XY;%m1{LKnE^kbil=raJt|!hN<&tdOgGFY_7Z9ve zVWMO4wJ%3+_dW0Yx4pj)nDg;F0^;^bDE6f695C4zaDK+46agSCehD|S=a3$rdx{P{ zDW`1_zL6+Ikbx3)^jlbpjFYhD_aPugMSqI)GcARO)Tuy6x4vx*R?=g|HQ!2Qmr zS(S|+1$@fZWA7lrKO^~|d;rtQ@!}&4em^AM|9^)fw{H*)Gxs3jJlbIf=1_~RVHv>t zQ>k$4i@0dEfs8h~YB-Z4mNsjlj&2 ztI3A(-laeArFCavOed{aR7d7Brsltv1`N`vm%2Q$<$!8F~AZK^KG8C zHg%5~*yj4F(bovzM;kDlvy0Ig)SiG6>;i+7l=%DNdr zC4O(gR9SY1RfnSrvM=?>gT@+yu~Fv;J%4sSy*lSG*CGr^+S`(ad+J0BvaT}`-T{%m z6?*)pNJ0raD{=>#b_@jxk-+}vo9A`nTPwWpQ<09o^Fa~)kL0iU9M_)d8`^iCLRer# z>HcoTvkh&J&?ugNm2kV-`Si1I?B8PEZ`b$I5+4Y8BjpZ&LBxoGmrN|*s^zAx7BGCG7zR-t_W?<)=yRY#*=sWA!n7 zNeBK<_cQt2Dh^@Kg44y=opnlD1$j$0#rfHlI0f=Q)BLdg;4L1W1a33Es~*>nT&Jm3 zX2o2`I8iLt-&*&~2E{hmQa`}~2{sI3Th@{xwuZ*gk0EPn{C}Fq_B-n(lI+Ag;NS(i zDKg36DX>QVmQ}ja9;5=x0X=ZXhD5c>vd%|?aX|qRkc(hxK?4KWZxi!vcsGrH#Fvwz zg=vkkK5ik5X*h^uVAwEX2az*1D8vFyG62|4I#rA^RE^XN^B_lv+gyr*0T1R9HZBc2 z?Jafd7H~Un3a|MABGvq{b0BaOpofK8}p#< zxmIX+B*ByMJa}u*okciq@%J|E7yU-@X!1|l4X7wmoGBG~?$A?Vc1hiw1qENz%~qM) zq~3pRFhWMiU?5W%kdM4D4Vc7GTqz_X zlMiqBrYoQ60CHF~WFQABfdK$B;sA8Hv)|94<mHA!=GF@xZ|%xek?A|@hbH#S zJrt7?jR6D6zw7Ub98w`C@tvMxZ<0(C<(t~@B$Y}*f=f5Fk?W?Ffh`0v0-mCT@Qw|y z?o)uLU%?Li431WMc-2zuo- zqXIf76a7cnzMdjILZUU*guxATaX14?m=JSg?7&_6FodYQlPOFFnfg6*pBwOy0vH1B zL&Xtf;L8{%08ZAVaSn5wIrke;Rj44j8UX$9V_E%ah4K@rDP)39V-BEu|Exnm|E{Eg zYlOY{1DX_(^C~vbf)b(V0tPUl92UQUO&0*PuLAt20RYY;V#;6&@K?8)Iw67JE2{)9 zajjd;%B(5J{-&FdRWA(SLo7nlaf|fFk%I^>;x^>sFTWK8agW)QGlU==F~wPb=!-w; z7itplu{}2=BwoLE%n$ab3P8{t6BZz{gxwRI(PF?x`XOdDA-!y|rKy$#jr0wNg{Vg8 z*{rj|QSg=uOqT$wJR+R}E8)A*l;6m?$EtOXOEVV$W(7o~mMrPK-!(^Z#5)CV!>%-` zXqaA|2Nid9&rlZWM)`)Gb=AM(kFZDZ~Y$I1ro(-*Sd1w zl_Z3O+;2a=TJoN9PJe(w4|qGUnr)-nFA3*f`Fmvr(*aX-w3$HUWkaSb|3+TWDJ<4M=;+_ZIz!j}6Y?I^U617tZjwgK z>X*uIt4QiXkA~79VU7%E=Lr|z{hp*hKl}rJq^6rS+a2NS06fRh!GTOOy%LLq20L2d z0(;^dL^Mj$`~Nq!5wlN6c_nX*x6jnM+M~sH|9`(JeSfn+8KV!(ZAO1mYn)_gOB$g} zp#yE8ZMNHO=?BaA6GEF!p|ZilLvF)vNlSVtL^FK)2^R?$Yk(|15THRzMG+2&6D<}J z5Zu#l6c##0+*m})1~Nd(DB1BlWBYP`CjZPY-_iaqJ>fGLPZUfD0W)2ia~spM(IzU) z!9WrhC`@0aia<E|M36Ksto#exfg zIRLmVQRPmz%^zNZbDZWZTKwylEF&wQ!I%g`V%Q(MAxJrF{&dR6|2<$RUGkplI02@gRn|XAB3a3K`)# zT#+A|j@9(t4J9>0F-5H%e?tIJKH;tS)}PD$e&DHX#Aj5ICWmqZ59&|OQMd_GTY3!& zOl>{#J z6Zo=5RE~%GqigZuQr0U7v#a)I%qU*TpQouJwyS*KSy)l+D3pjzuPW9O(ME?Pbvy&4+?{7QUc&7g z*n-<1XB)>i=h^(6hn3m(s)RHSdrH**AF{iB^a_DV{M$urSu+TdsliJlmZLCXDtYY8 z8nhM+@avb{riou<4cE8z65r5UYvD&@rAncexv3Hu!s2Wmq@eML+EjMBYIN?qv0{)N z4~d7H;&=ZKEL&f<{4Kb?V-hAMc=Z$8In`gUs`S-6_62m&pe*o0A3LD<_mbcHbB#XJ5 z?;}^g_wC^X_sMGIoXV)_e+f&_GlNflJ`iRl{zCL_M_u;-(~n^3foH zu-F%9?;D@te>BDTYlIB4(2h8RN%gU8;BpQP2w_5ax;k`@n)cRz5pTbDQ7o&nz;z>t5prB}NGv)~E+u;)*9 z8sPi^>cihg!Xi07a9ohDAxJY%rOA7K%U=-l(lqx3sG>Y97r2AH) z{;RzD@45MPcxTe_t-prf`Q28zgQRWoo0ptzw%dJMf0X~-9mh-Y(`Bv$Y_bJ>fy|9a zwUZ=R-5eru`G>doQ~X2i+X6h?| z2Jba*!iEm`7Vyvlj=H+B=xKV+=wApdN1@?*9Hr>xulP&LrXKT{rs@VB(W!1_aH@MQ zbXaBd!EhT^QK6d*pddgDsr;}gA{C!ts8cGc3J*9zP{KnsOQZ{KCQN3X^&0%zs{dN?s?<5yp+5@lI9!`AJxf=k%TtIGi^58it zLYPuO>Cm?O8`UE@%USWNwNv9drA_s?)9thU@59}Jr=on`N3fVsG&TFXqsijp(iVY? zWk$SEFyuyVMo?^qP!bAB5;w%lWa=3qtnrGofI%>1io!aTRzU$l zwB#eT#P>m?jj;c|20(++fzkv5Hs@IZ1VAKWh@d7(EZl<>%rVLUs0IZ?V?v}&fL5Bw zP8>LJ$Z3{2JrEg_RlkUa1d=ZvTp41#hP+u2J41i-oCHVZ!@|pbXxCK%aj3)z2XP=uoYsn=gar>>_ z&Q}Jn34#>NLuCZ^l$;`{83V)n3_G{<9LLK-1#nWkB8HUOLu^?_prN2!8JUyc4Y z@2BXet$6u=?X>>SL-6~~6@QKPli57L5FnmafeH+Nb&BQ_r<{Ke&c*>4bA`yj|eLm7i zEqRUa6T_pk*1BO7a-!4Y5I5f_c{r=Vd)Q}qbwQB3BALxr6FKNA!wd^QD3QwJrV-`O zbGO%=`$MinJn_|47lj$yS`upNZBqul!Zk!>cZ4F0aEOc+^(9?l2h_@&ZQo;Zj!uUW~tWChIp;**7ZU~s5*u#%&w8Ib*BqY0O z2S|{Tk>%I<#hM87>;l*1*qehS=efG5>w~qoWW=jv2#vR2_f6rP!MkhuqNeDfd*!Rr z2bci)3j8IATybhFU<+3ltz_)PF+Vdu!!X&YE>4z?Alcwwp*iFQ7PR@3dH=Gao3ojQ z5njJ7IU2h4TRNpDob(NMAAk4qk05m(6pqP)~FUCki0wD?eCPsmq_&v7Y zBhq;{-F`S$*^71qEuY0WQ|=%)49sawsvbAcjt>vT>rbs=veCx*yu+{)2!Eo6a8}1= zOWzQx7QzbrUV%`PFkCw@^T{4Q0f$&WV#tHJy1irH5FFlSK>W!1sYclz*!AUV;}-d9 ze;VXE1W({#osXcNz?)CvrkR(_@T`iFh^Bg|`=a3BXDx>aun|yveDF3dLf;iIMxA8E zDaR+FA;)mTSv>xd4Mtl-EkfDfh+%>_skan2%VA4#?ca<+sjHQ^$LMcbwGG!D?X_Z{~9>%^@vkU+su&=7JEv9ye(B$S@a(s8UN&IE#HKFn(}Q-DA~awWjzlCHwd zZYML~qHEVCUzph}Q21>K4Tbu)E)h}@1n~^8DGkzg7H{|OP2}MMf`(6fNcpEjN3KDZ zWD^(@2BIc)qfq9k&ZP4-Fd&1m3)FmaSOs#iGY+foE9Q_VCsGX!opi5|96pDS{9loM z!`+RUEY8@)a^1q25huq=4!Gza$MoLGoq}GcqrU0?m38f9d;$ota zEAm!worX+lfu&pi){5YTW_P-j-MlnQ$T;IgFa2CU``%v4|IPeT#@PQ)-_NDb zj(L~5NU<9FMnNDg)pX|N#iCQ)`}sT-6xe15Ce~0My=+Ju9g0{7d}*M8PQ~V&FT+u;4Dia)vWPHsZ5%x-W#t|-Rf8y7()Fttv@4D6S$O){ ztPrSTU_xQTKt&YB(rmX^%eW;N2t%N`80fi!1uRoLl!rrj+jaaKCj$3lC$;Rd7~ zyo1JQRFYttk!=ESl8eM#oy?;Jy}h%NqP+e5ER`tX%qkIu<=sgq-xpU2CXy0bH_I?a z1&PZ@umc7zM6!%pH8?0#_re$8e?>fI!OJIntgz#da6f!T!S2HFelN|4vyI8i;O(|_ z4}mvR9B|?xtRWK+l4plTWp3>a$8FBq8?f6BFTLnzRXb@DX&zTXVartjM?kp0J~>H2 zP$+ZAYrI6Es@f5xhXHKeA}|?KiWA14N(?tEKDL+aaCM)P+i&0=3Tdi+!PIH$0j~8@ zM@A>!vM*Gq6KXUfg#_u=b|gH+#9;{5_1ar-o*TnC`UBc*R)sA2dcL6ul(paybRKgs^t z@~^tSLJtDf`>|w8R+8&BuBKu!9IHwg1r0XZF$jA+f>`r+=|tMtRR}(`>H@0F_*0r8 zSrH-z!YGyb!HVMIZkb3d?hpdVMf5w=2>ltv^oidbc4)VT%E$t&s^XKDG#KleXVSRJ ze48r5b{9XVY|evDglL3h8l3D9swOG@BfWSTjc1~Jgn1>Ih}F9U`_rZ}t2I*rH4q^^ zs^sa7(ct=5#m)2K8HV30%9WX~q5}W{gX8(#8v*htEp8)?PKDr#}?l%zFRNcoRqx4u4JW zy4(#e1WsGd`KQ4UB}0fHxIvhuClyVxlL{Cq$oQz5JBY2r0X6~xof1xqRH(mHHcdTa{4*w_fQlPRd~K7rLi0VYYQp&cOG8EhFLF?;*E! zwa2A!sxt7`cHBE5UaE|l+qSFW-O#KmH!lOXVgkm4`kqAyni8gBa)S@EN>z0%bVm4< z9rOW@kcxA(+sLL|A8wZ9sY1cXHQ#?l1HZ6^?1(A~9opiE&Ie!~uHPKp#yNJ*soQO^ z7Mc=>8_MBH00jgpl!~(}7*147qg>@6l1_6PHAEi*u#b|I8Y6-vtDaB0%d~;AVAsgO zZXn7a!WA6z6~#j%!ep7K%a|uD4O)|aF$}vfxXrvq(mv4am$?sc`*E-i7eTyzi9*w; zq4H2bKY#YIAMT(SL1Nnm+hc5P0N4Q7+719b3?wj^auTa)>Y);HWHsoqYsbZ*;_z zQqnH!M3Uuj+<)8LQ= z2eKNh8^ZhfEzjZ9%q&=#xoMS{*i|T^9K>fGunnQ{F?=3V-%;_urYjSA2#o1Qu;cb6 z6ag|6i4h_NC&%KfqMGV0PLN0z00nxFBOfOX0r8Yc6K?Zib~7>hNDY7r;HCRM!f(;} zAIuI3?fqSkZ;hS*#bl==v zpbH+?XCEnMvrCnV_*xPUSP~7T3#J|G9eE;YJBeqHCi?H+%^8kV8ZyW|Ah~|SSgg}Gx2oWGum=J}QvzL!qaLBB>01L8>6gwbces>ZlvT#QHLqclFyz>|7*|oV$9$nW4YG#j~iibv?mud!VBc zXxe+ysdJ$B=7M83k`}T7krWXHj|sH~m9f@2MgUZh()};HTX5-%H0w541)9{%F34B|vd;mYh){?aIZ7ayGk@v?Oib1hTp)v5KL*`J zk^#$5y#klH+qvv?3`x9C+eiNQ?+mU1HJ}vOpFGA^74uXy5;CT?J`;%Yx=P!5juB{! z2G7{>u)v7vYO%RO*O!b#et~NFlcl^dCjk(NE1bR(>ywC7PWu7rvN(-8i=f0v`^<)H z3{;X%9LNca6y7sAT)66~V{1p9a%$YGrI&70dJZKVOJxxvyLlWfQwvq=$g823?E8G{ zt+#sHRk!bUo(@2kN}eVX)xTz*`b`P^Wr9OfJ7;a7jCb=6`a=Exc;l(#V~1$v7!{9k zH0X-6bqh24=&r;-v&b(Ugt+RzksoB}D-2l0rH>wqk`lYN*)M zCj_Ol&nLdR9qm(}0er`}X;u&3u~+7O&*DySzS#Od>^OhlJ%WBH+LfjKssQ1QkhL!; z@NZ!RR?MC3Dpg8I`wEhsB}IQ))gqNnl>vXsm4uiEeP#ywUuOTlfI)*nc?!liM|^LI z1b!wiQs+IT)=4H#9|07J8mEBf+wqq-`LJ>+XnEOhxR=vUH{0-f9~RxrYyZ8(1akbq zO*}yybpJ&@n?9kiabUddn&&8%;?l(12cP--oNWih(2JEU#c-TvQizO2FwINAK%q4Uu($Fq*X(+pO~A1t*T5~q{b7=OGu@WKV< z|CJSrL1maBT`=_29Nuy5dcJ9tL(!37>XIMC|IjZ%-1k9NY?M@IKP*hZ@9wJfv~%j1 z5Ix9dXQGH^G58m&;0R~Qmn0|=VLQljCrU>mR6edUh#y-Bi3EUs;b;s1;Scg=uhtU) z{v@B23p2nxYXB^^Zye6rmbnn7zUP*m%XHPZQLg@&5)Q$CYgWr@8X3Kod07)aK+l+- zFWUHjXYiYyU&P;Pb#L{(eb@6L>>j>)=KO3BX!2E&Fyq6F&nV|hqEUBW@#^y*K!Vd< zYpv=%+@&fQhRux{IOg2utILXCG*ns-;gmp!+9apvg?_(vqc7$4BhvKOhtl;> zczT_y`ZpxstmuKzM8us?m`N`=x3{1Qv_q!p!)jnCEQmJq9w5PXPK>-Jt)x7>xa-*? zkFtCM65=^LS)$?&jIucTn9H-dMOj#JH3Ag?gTO+h9EY|Z72AbJHGA6tYtwo1Ww(4txDNgi!sz%xb+4lKB~?Vh^5$X<$T}j(L_>r^#(j2|{DyQQbO5GTc`Fme2emN;r#&WXe%g8=d16 z+DQ=0EmSv#e~D>W6O*cN)C>!cr`ICNP3@D;sbDFi<1Pi@4WOc8Zbfycg%^enDwYB9 zLm$wMEL73eXXdbG5!(+;$*RU~B?L!FgrP4)bLp(DMVdHa11Lb5Nj5?a=(x(XkVWij5tJK?y1#(CVu)x6z@h_de7ae4d~{P64z7zib||Vd6o`~s zY)V$k&f|~n;8N{ZM^q)EA7F9Gv2H^bAP67`1m}Rrd$mNqih5!zCl8QCfwkAj+vw?A zEzm<5hxmR^W_m-#az0qmkW3U<=wpW9{)$V-H1UI?V_x*m1M`yuhV~F#9 z?}PBX|Cb+}kDvdt9_L{rrdK z@+HsAyb{^wjB{ds46>BS`rB7gM6pE&WG5<$3IU7;GQ%WLeQwkW2^OvpS8~Aq{eRuy z33__M+dTS67k)3Z(-j-fcOFXNKT+{K;dEeBi=y+g2`Q5ohnq}8V?Wak)kwC9im>qv zlQ`rGJVF0qfab{nY8HqQNr*_0m$f+qTvmDFlVULS=D2{oYl~u}V9pV>k)6z%oTjH+ zpJ+*9Fkj=9)!aB)Vx(0#7?5a;7T`>Qi6IAXhJ!K;9<0R0WTpL8Q(%(Z-wX6DC(Haf z=ZnsUr@4@}>(6tY7ua5h_vxq?2LGt!4k9SiV%Y9Odz53)ZANfTWm}Sy7klh z3Ey6wy7?SiP$*YFP6KyYOnQwpU)+l3ropan+HskAry;UB81|<{QPy7y=>*pAwsHNN>))qVr@g zH%3403VuVhiZL?DFQq^3vlsRvpL)Wb2!V`gre-j!>`aq>TdDCTP&-Z9*LQxp(lHZD z+B(PZ9tlBw@1x|fFn!u&18Xgx8J_3sN8)C}tY2j^_|v`ZxSKuE?8D%{NB6&%eQ_j< z{}=h|=o;yoZ>eR*75k5!?gCjn)gfTZO+!zkfe~h;v9xSjlR~0! z*x1`@(;>FlHVmbr8wSzcFjv7&5c9C~{}o7hbU=~`0F!WwzC5iH65l2Rj&NPl*u{<} zZq+9_()joN#t<&G8VQ#q5j*Mx3yv_Ca=|8$yll?O7FA;P&sxC8^Iik&6 zitG2(a-!Yi^WRhB=HSx53lH6Q@+T+gw{f^rQIWKSs}_=sWFURdxVCev=)?*s`ODtK zEDjBpY5^*1oVZAv&hXr40TZN@*npd5iQej^YY=BQkrR)VrIEBTzD+qlwC5qF)uV^5 zpYC5WGifpLbnE}U4HV-hNaU#6$QgP zVMZqgL=i}Vp-I!o)Rk2f%x;s4D5%w&-yc~sdG0?7#udduh8&ks%6ti9^j5<-$%zLHlT-qqy4{($g3Y z^Dsu~5{SlL$=`1x{F16F4We*7dtYPu?7g^f35e3rlY4Qg2P!W+yU}-?q`BN5L968F z(@om(G%#$j=jM*H9Jj3D?c!3$#YE1t7-?YD3MOAfSj! z1>iG)hpZeh;)k3ZK*^utd|p@fd9V!1pbk*`8XCVlR$v6Fwv8$i^4|n{IRw2F; z;?zN*&F>}XNj^RysR1$|kgePZLHLK_8+IUuKoCu!2rkm?`xmkEKl5%|==87hd+PX! z-?5Y_Z-r#PuMr-K-0#~Pb@n81+lbP2HFGUnrA1pA;m5s56AZ+He}DpjP>o9>p2?{y zE2p#Fq+4kY=k?xrlHS{7b4z)R^Erum(_JqT3K)66F)=r2xbs6$S4El;*q89B@E@Ae z)gUwVfaNfg*=>3-8Y$^+ukWh>03mf01V9i3xDdW;Ktadb_AtR`HBtt_jzQ*`^zBMM zdNGClo5miPaGvBiZy%8J%NPaHt<06uBYc{mD2s%JSbw|AE*Z8(#Md)$+0rya%@6xvgN2`qX%mP)xf|H5jjvnPl!qM z))e4`PcpqsnjoVBFr-vEL7vp6=}&M1636N8aKD%!c-VH#&}aY$YZAHlq)8TOkSVTG zDP&S0{)v`xMPd|0tdep8kqC9wMtFh6Ht6qFb3nsI=`5YUHA1e+wJnFPjNUV~s;rig<2eThsG@6ruWfu};jW?5+PMe6-5LxP=j zgr%e@JC0HJ(nkK!mG+w38!mPquUDA>$z`c~e}#13)<5^o`^pRs1QSA z7|=GFX|arLF^pqrjBITMxcJ}G_K4}AriJ+bqCAoCD7tzJL8d3PXfZ^S5UQXD!WJ<* z)V?Hqk-z8Ewd{NzibI|zQs*SZ0S_s8G@lC>445xqbVRLO6*k(!q`P9P@*JlSNpdRD zyUA^%v`p|s1Q4(f#|yg1U2wf>rxN=-rsF&4$T)=|bL)PeJDny6`-uH}eSK%Hd|cFj zzd<9D^CYb~e9MbIzFJOjI&F3uE?#?u(u?dm6s2^X~Rs=CTo4%{8tJ!jYJ#XRs{{kpz{ae?A2~nule_nT2m+d8-PJf7IPE2l4XU5A*wEs`b+xc%!5Fw-&(D+&vzLeGWz+$?tc z>zjLqAJ_Tx1_I%%Vdm>vl?6xc(~=KVSS^P1pjz>m1xULAQVU!x!DOTQDHUZ1GeBY3 zgV=;P#E#1|O?$@AJv{j>^HSK-W`Iu6W{eqtQv@ug0!TZgXlP)y896}hg|d-b7C0Wj z#}vgeRwgDav}M4k6vZ@7VyGs1)MVe9R|4Ty^-Na3Z%;fOVOb?1;4Ho?eXY8xP1qI{ z*{Nt)1)y)$t3d4qqJdgVTz>`gS?`5P2<)s23x%M^8NKq`fXUr3**)fuQL>tWJdL?; zx>?DYG4&>5B2az+LO%zgzRJRUAkQH;@f4yinj;uFF6{_;Nv?`>LWsLW7Ta2T*sZfi zpbo+2*UAI=O-v>CA4;C!LkAwSBF$Ujd|=PF#8k$ndNLwgklO>v43mlIZ2YX}+O+*8 zVOeVw>nf>m|2$*U#d2meL-FHXz0kUCF}n8x^15~CzESD2Y{k7F6BAFy(WBYoEJpGx z^>;m$)kD9L09<2D7cUefTJLVG6d%zp0kLQ_Bd6xAkBtw3?t<2geFt`Bv~^c1|45ma z`TLDMif&<^T*1Bd-_xP@HPNY2XwO$zR!Ra3vPHJP z8=rZ4ppn-uI$Ocp>L!K}n zcNpjMjuEanCji--6JlnWrx5dp@S8Jr^-u9T|5JH>Q zQ_SLUd>4L4*?hR82(SpSt0<4pV#Z|TEWhKnj_KvKSKN*iqx@n#JH8+vd-H!)`pu(Q zz3#2a`|b>6Oy<~4#+1mKO~lCVkKyhCD>{|5)k)loUeeO~sY}k3WFG>;T7Zh!f2L{y z@F%qYSs;skUs7>0o=B5v7e9>=dWsVRurn!@Sx+A>T7GT)k5y!@0tvAgjboOb zb9GK>1IZMU5kMR<-RSqOV0 zf*p8tl<_Kpr>WfrC_q*e69?;&vX4>G_mWlf_z#9FcEN=tbzNNLG+92$d0ayfs<`CZ zvhYGzj0GLu+({C2AUgwI9WrcqC|6p{; zwQn;z{M@r+9m&opGZ<)LXU^fq&rxBK;+T4g&iu^R{J##3d2WdsaAwFL?j(Du!!(Xw z4<&b-zmu(=t6fRIK%tF|hK_{Iv$3lgr-&FdBnCooH<$_MGl8PRN3#cti2|#vZ^NEF z{$DS>%imc>(0YGmlY@@ZQB>TJi*h@8ymNOT69N$xgrjA1V86uGtHg*=IHzI^BMy!b ziFZsAbyAv1DRe9VD8ZXVH>*NTG~Hp$mFMp1c=~*S=y!c41-Sefe7)hb<;8Q+`qlF? zZnCG7|LqSOy~xbVGXv6|c0_}vTRfjFuwGZeo{PxGi;vprL1S;+yXNzDwVjspD&+3L zw&53_OVUSn>hlm3jwJ|e>uQB0_AG{Wj)%K<8T=2*;EL@P$^q5bcpH9v&grjVb}8J! zE>f6W7LChD1dQK>mmj=`!p5Qb((3c*HO-on5WOdy4Fo^=zunaUO3rUL)94QfaoinQ zP3Me(P6y3`f@X*8=YqrsP#hqzLl0FX&X)I$6o4DBVUCIm+=YEq^n89BLG9?vXP%=R z#lT|?`U}|(z{{WvMx+OHJGN0qN}%{Gy4llJOP$FZ*(J_zkH@u{hi?1{ZQfP2i2E&v zpx0}PCF3WqxBHoAT($p58*6Gh2jY- z3IiU_20rcmMo6t%H|EJ{i=Al~iBxv!isf@cCmK?#WRmK_i+o4W1OaU=^el5jt9@v=aauNNpy~!-h5+4Zb%0+vfpwh9)Cp z<6>;l(cDJ>CVa8LEUL zh?*9NwGc>j?q`K#`2H~RKX3m(LEm?s%$VKE@VQ)d|ESZIKteWmSuHC!a!zzpO&z%U zz{-mTYK)oZ?+maTWZh!u04>mpun(L+K<=HVlH^vmCI=ggn^!{z!d>@zstv_ew`j0E z(XH8B-Tu`^Ii_qW=tYaJ@w9r+tK$@Cbl+E^E_b~RC+IWjtUT*aB05hsxUD7%qc zI=Xzj7mxL;=gBYHcV73^$3u;of_gC>*Wc$RbU8oCE`nIcaCx&h`p4Qn*_XERNe1=1 z%P^Q|>VD$!U(2`Bru!yK+C*aMfneaAaneN)@SPAKCAlv^q!i_|=9@pDR2mBps*;=Q zZleV1-IAP>U(*AiQY0s2@q}|_qI>{_7OWD52Bit=@ccem&13nXym73)pj+f1WDfbJ0EARqNDBz1MxG0 zPSqc1l8==hYrn*m`eI({IP=$gs!FF6yOGhdC;gJG-3p4~hc#uk;;R+MOQWgqO(%fwX{#0stU|Rbc=G5aeiaG;#PAGJcQG5%+O? zU$5K4{&~iKx8HTq{e3sSuy|TqvVKK&R|VsDaQXc<`||B>Xt`P+Zkt8r>gR5rFbEQK zUkKkxM;6N~?Ec=uoqsDE;(7RwI`gpC?{xd!??Owf*Rb92^IZP5CXUa4(#`ibmVcht z+Pi-CpU!Ds2|Y0P=ls4dqYBHxjG%Mc`#rpF_dk08L2&VAFP^;ydW&1w+io@$S#2kz z!zeqSB%fk*Wehgb^5BRYW=uqS{I5#am*Q?OkeE8WrlEq>FHpqiUJ=M>`VfQW=Q7+F z5g486FzXOuM_-fT_b9*c?7pUDb4%gZQDZ^$9tmpDNq7zh} zruPL=oaFu8FYB|DY7>r#pBgT2kb*A*d3>T-tcMY0B5!NXQP5@oh ztGp|4U$zcz)w(>V7wGaFJg&d?xHeo%7+1kb35Ws{G^nT^(Fx!X2_n8W+~pCh#bG^5 z3Wa@cuE*Ph;rpx|1s{Tev5*GA*Z(i@XrJ*;Oun(}{|qd}T3h(o;K8IRApM&(eIrbiJb9J;ZV-p73yTuf-miy|Tvi)E0RpF2+h4At@d#(?<&nxci`fnCPIf}?bf9HKJa$$NOU)uQoe!r-Vca1UBlEr+n zUu{aaEi3Q>jYVyQd4uvol-$i7^Ei+;TS8hu&Sp80pRU*bu9;!19`jAZiE4vDTy?kAri~EwHt`ka@Uukj zF6exG;piF>;+EOjE8Yj?pi{gfwHI1V6&;ljJ8HpS8F|1bYLMDF^eh%N3aW z`X4fvovT@ve2U}7M64M46Xne`j~9^FTF4)MJE&Qq7L5a@Ar9K}cX$ELKlqc)#amtt zF$@c=o5&=F5UV}Vvx2#prs>Y(oRT+@{S^grWTGMyUl&67&BTJ0q8FhB)2f73#NZS% z8FIq#*q6DYB|YZG{B3a52r?KJs1hJLN5Vi;TX_(IK7{>$>~2P-ARvZ7x|GIqs8(Qme6fnMLjNC|_JEnX;8D1T^M?sbGa-xR}qtDJ?3cH2l9A)#$%O&Lcvt3d4n6iB)y1!k8 zA3YLR8FM<+xU6nF=8M*2P=7B5$yDCOMpw%xsS3l;_dC13KalGtn?D#y* zJt)(nh8J5VhFA>9ZpH$Nm`X4;yc9v$SOA=$@PQ8Tp~4U``F-|C1C0NbV)YWS$oJ>p z&?(2ieIG8lOtw~X^yiGTExbyZWQaE&Z~wYZn@9ZxDK<&}R~9#2oO=4b3rQD71%eue zpkPFOL`>I!=-I4=bqMO=mi?0r4;AW|eP+ZA2C8iJs7|&Io)DrJ=aT-}72r0uNRg#1 z4AIw#h9aY6vJH5VVUR=u9lu-|Be&fST-&MWPWO|BH+gJe#ZgCg)72s>yHvITX$rL?~l_Ry=!FE)z+8R)ZO&2bE|` z#Wf8gO)S=kWv_#BCH>i2Owycop$EfW@)c|{0v3jwit+s(M9x6SrX_d3h1AsvoO{N( zuQj-VS{kS1TyD)y93qZa`U+5v#}I%b)+nK9KGPM00VJx=odP8ZLJ>;p6fr0;@$Y2V zXZz0^Abz<6)hRvybiXl!j3^XDdH=}*&KU{>GKT&kh=QDuNhbzE<$;W+_1kmTUw!`5 zwcx%dFFAIfPG2#fFWtZtzcBJ2Y|*XFZRBKeIOU+`DK=H88)Tqwgfa#Ni-BCg;L+tq zQ`E#F1_A$md1CM>kt^G|05~FH0|3&#Kt(Ee1=BUDPW9LzE*`Q!sDtfQ08 zLt>wfU75m2yF9ie_pOwCHAI@ZQDESTvv!BJa_im#Er3amMISJ?#^S%qjp4pW&z`Pm z@A3pR8oI`D@8v5<|7LcIQ<^289|UX;M7Q9?8wZYa6C>5Qw_va`PK+4+&W*fk>GH8( zdzYcn-7j`mSwMg!<)#!EvX+My@WD(ms6ry}M#)z{v;8p#v=AZZ|0qA<^g}XYru0>N z;el7gJ<1MxM&ZDC(op(|3UM{wP>bFLnh~*Wgi2DBS+f4zoPC4GN?f<6w88d9_w09( z;pD#mNH|Y;#3$MGz#ms}kS3jgf{E<9z^`w|U) z>^+ZZ+Kv-(WcEeFoM4g%g9t{k|80I9;E~72h%*!nYigq34VN9siA>c*0ni8o=Gc!2 zhB(YQCjN1OK_;7YDtas1CrbCO^J$KlH02BT-)!VG@5L>C7PXiT0~&Yuum5FdE*`=G zBvFP{%ic}wp7-HN&8BV;`g4H)0FX;XF8`m382se1jp7`^F`$sWUu1<}?|gWMEI@MY zIO>+kOK(x60zG}Ie#0_^ZpjmKxpXg_Uaq*}aKas>`i0iJqFjG>(L zii@hfJ|yRk>s)O}H?B3mlkT{1X71<6ggm{bP+vv&Y2dntj9Aaja83|6gGg~1=@AkE z4rD{d$;{z+U47>p1TK@!i`gXuwqz+#u z?v4_fu?mn_lhKe7jYQnrO#}m?N^{xH?Y4EA>|IU1ZT=?bALa~(rltVgz3tqR{L5z& zGcB;B{LuG~^PVqly`NBo-t|kFI{HG?J7w86K>g%Cf0Ij6&@U1rkX3jK{i%8gu#z7o z$cVwrFF5;*K>-yv-6=Sk^S7qF-n@VQ@c2WXj^3^%ZlquzSjpA)G!f#RuO7=_bjQPr z=NyEfk-Mv9M&VlF(0_ZaA7FdImz)l_a(pgI^s={09*vynnQl^rxJ#z*(V?s#jp9s` zAUgqzKe3bkiZss-zwF`tRnJ1MiAWvcG9evt3Qes7I0z8O>lbg9SiA#3EOn3n?*}U3 zFzfY5=k+NCK_CDi|DHdVjvIW5|Mz%l59(3=Qvann$@atrDUv6&KKu~gh>K8aOkp1% z`_8{zPg(jTq`(MV>?x<@{^N-!@m`T{;gv80%demQNDrG`8ol)TU24p(HzoggwY#1> zQgp^P{LrdVp?jCCZ{Aa80yWT~u1`7{*e#zM()?rcwd5*G{;3JSp?DYuL)xdPjw*mX z;2DGzoFRngied+}_YKPX8$~{kBV6{HU(eFngO|YrX41a??_G-36A_v&p|%D4Hm_OGwFZsBHc3H-A_}5~p;RnWDYt|{AF?fk=tO}C zgZhmgQ?@(Ak@MBAa(wJy5+4k{hK5%PUTUll~X{rx-&+?<4 z5;$apQNr}{lagTrZ5^BtoVZXObyPvIxV!WxY~Pee)*tcGJm;S~vnLen!t2w*o|958 zv&SeEfdGd*raE>o`A;btJAKYJ;M(}s&QRfKth)(yQypW$c3MQlRihGuU>niFv2(oX(FyA|cNg$dA{@tO+ zY(yI#;P9^Z^flmudZCs!w4uL9_xKYWSe$}CG6}_T;#gV@e|afWY8msuu`Ov!2ii@L zWAGIIUQVtD>Vo(%JPZk(K5w-!x@pRYK9+KI>zX>rlA0Vp#5`}jwYJDesSA<1N_3>?O5;5?i0o{HVTuQd&$POM37BiDnP_&;8^%fp?16`M{WRP?=?W zi{XMdO=ttq=K>P*2)fx5MT7babGZCV28G*V|32b8diu{87fB5JV@F52v2tUe;UljyUl^%x| zrSci1b-&_nhaIC43)g9*U6=N&O9zQ8vH?_2rYzrLJBo%!3*d#A`ARIav#i8-y~7r9 zxN?Go0RTWUSSFT=B*-!C7n2k~?)*X~Yt!Vt!)-JC-QtKUixoR%Hm`+HUo_-OB)Hf} z^4J|F!b-U|WZtk(k|`EjXLmQtq^>Iw|3reKr2_cYnbw9}av9Zi(#ru}uuQ@rI$rUL zv()@F&LV`Li_*C&9Pzw!Fbap-at-x%-oP2VPs24?WT&(syV)n7q2#;d2CT{XsR+hm zK&cY+kRV?&#-tn{6rVpdo7B`SAGP26q&Zq*%Lr5$1G_O2K%K%B0sqAH2GbSILr58u zzTGld#2xs;by$l;wgK8QP832KDN0?EXoq!;(^$~?R*yW}Q~H`Y79h;wc4T6$NMgiGQw`WbOQj)PJ=WsZfg!?R zU{eaifZ)hUGFt8gt2+u|T4t^oLH}-}&HQ|i9b)2V)^x7M+if+OjU&#oq(yDB4K!iHc**T_p^nDTt^b?TH|WJ$OJ!P+uf51wy``Nda{e!0K)lN42BZJ;@@BPHe7C z(=LIRbzZsJhFV_P>Cj)~B@;+Wn~FdqD1s0w%moJgJXuU?gyW7FW0RUVp=u(*Q*)2} z9O=*si=TGcL|4B@_p#{t?SoZ-qhgNJNjO&k$XVx_7hrBj5h8|}NgXsnP*f6TnV|`c z8w|eG`2}-j!o{#HHzp=e2#N@j=thIz*Q2H|DCQg6`7>y{OT;Ro98m*jDGG#^0D(!R zCwZk$M8H_5SltQDJx*UNL*7u4q7_Npq26pQ&qQE5WdQ%$`)4VgJ>aHbACdVuiiiF1 z^KR(q2W}w7`xVgz`G4Dao%uhl%aqKgo&8ut(?88V77NIpyVRsP=k>_T`|b9(Bsbg( zbvg!X{{3i>Ue}xCB1S*^RnGbI_QDS0KqDT*;u7|}D3vd#yG&c%?4KIl#1O`<=`QLC zH=?US3)S3}n%5=s;YfsNA-Y5Mzz4j59zf|&)<4N}C-@)yLOog$)eGha+yhW#0!uy! z5JG`AHb9@5fd*z+OaX%dgF|UFP(T2}0D(XS1OR|2AU~$3E9`EPckX^4PmhOltj=<| zv|N0||Ir&=8`9rx?~p!=ulp4nKNJC)&0(&bOZO)&;rsiFEO!TW^YVXOXZ^Rm^S|7c zSK9axL(dQZLYx5zpb8)hx2<~ZZ~1Da@yBRJg=wqS6A8?Y`y=}}y+`}%NZEWBEWDqB zx>wU}`nQp>41e|S{Y)~A{;&7d&24J_{Xg$p{rtXfg0{DbclCDl9$Wuj@Jg`#z!0CS zC?J9uVL*?1;e?;j8bp}SGS|O+UR2?_M1{^URxm+H+Ncs=7Owt6U?wIDuoDnKn37_^ zCJUGo6okcWO^J*61}O=GpMz|es}#k~35(2#Di_rko)icw6B0~asIH3YQWV8dpcNvJ zf&|4eF$efvyD>}^K$xjws7w?J!9XuMj)s9qQbeFZL3Y#&$|j~;Gav>m- zWC}uJk|i-rL4Aton5h-lkSEnz}Our4TURtsDx6bXqcMlQ@* zXv>fSn3x~{piEZ;z)Tnbg-EW71&S&~_g9C@dVC_N7Fezd0b+{4SVYA@rX(wZVu3MY ziGmUpLYSaPJ3!LTkP5M5i%3u^#Kj?Ng?LgGu`pDEq);gfELmvVQYrew%sCPwkyGu7Tne7gq0%11z4b2f|#rng+Q&M-O)@}MPRUs zK(7Rk1itUO1&%9%fiY5uLwKQ!ULdf7#1$ehF&niL+ZtsA%zSNGmxX*#DIwrY2pXFL z!H6W7jU|$bOUkwHl^qM~7W8^m3Rzg+ed3fPj$7SxcnQQ+sJ zLqQD<=A7y@*0!{@uK=#%4QGOZVv6}`TGb1BR`qZS*qE-1JW>|98NzpkK`>AY5H)Sq zDrpuGR4sZa6vd>CNE1e-VhM_&Vg;-e3edJo6Q1X^1z=fa;crE2AXi0*DT`h!g1#Wd z76pQMC>5bx7Ai4p6~S6oty;P(Vzed;UMUJf&lCc*EKtS8#uhp-(kg`^U=)P{kgWmfjb{6MlI0c1oZk`FF4j0kBMM8OEe1Q?>RS^HYFiqNVSz)V=e zn1d+|B1mXg8WuZ~1dw9@!G%D=@IV^Dd?*7PX*s$eqKW|+<8yRDMHC=J*Sc8hLPVvD zEkx3s@ufBixz8d=O@Iq7!-*kaOhTAufu1WuqF@3F5VS?~;1qyNv7~A-BPc?#n|#t@ zw8Rv_0uN*CFse=e%MH^A*I!R`Ww$DMnDgf};+ls{g}- zzMqrpxvwu>DxbCAOY3>x+dU0v$pxG4p&xzaPK_Ch$?^it7YI`lLI2e*L()gW1Uvi;&>`(F3< zuGaHiZ@|6d<%T;Nn_uwbk-Q+0D^E&D{dS}>55+mt6m*o@{tW9`B7>Y@U62OIHX#9v#R|aLGP**L zOc)Fp2PO??S;F}3Eu0guO5(C{%ZfAwQiesO??jM@~$b4O0c-m| zDpxY7^7iS@=T)4G$HaIqv*O_ZOF*>0#7{pGPK!m6-;AWM5j7Q8qze<~N zq!$~*4S^7{A!BLt=PtykJcI^IDt#k0Sfs|or)n#NP05XtVAykPL^aAYO522HN6N&S zGeXZFR*u^nHsxHspx6nlt@bRr24G`iZ1P!sZ_|~aT|ZxofVG$Wc@x>w2UxZ9*W5!VT50AAE+9=$)5Y1pFwmhnjzl$1z!*)Uy|VwscAHJa+0F z`vE{7S;X1g?-5LrXs33BHq%+G(|d1v{;Zoh+Mo=(gkoJF7l&G;U(v)Ug3)$VfPPp7 z;JhD)^~mamVBLHCUCoW&*?>p*ukjZzenZ2@+XeeHc#qEBz4UHi^B3|@{LlC-^u5adEC+UYvL)}&#xK45cs)n-|5o3x z+ERUSrlfjYeEvm$ZB(Aa5Fy4>*<1=k z^#4B)m4g3qeAq6(>Y%wfoG1DEk7|W35tC&7+1>pBffl`ef%qT@DMRZa;uoZt5l7$S zj0ui$zX*K@g<)pL@}Kb(RWxC)g)9LKE#s4SMGNZ0NexK|1#?+;EdeDF?9op0Pzugq zScJszH%XoXPxp_gi3S7-i_{O(#4(#TCEP5$bmR@dp+X@*(;92VucKD*qzf9fiS@;P zv*Vvd09;cVV@zq6m4cm!U=0lMk_by)x1Ar8RZDdrOvT6h7P+j1e8PYCRh-y3s`org zz+1<<9RdXpW%rQcJ>G%GCxJJgqsX!UFn+hU>-zsE`Tlz}`J5ls?0-KO56A0B;dU8+ zOGUNtw_Loo(*NtR|E{!qkp8?TV?*;Jrm>m=J?GwKZtv=@Xj+T-xfB7+p8Jzh5Sn9a z^`U;_EsLLOB95MAB*N)4n1Q3)&3`(MroE&D3y)YAHikhpP#($i8-@#A=r&2!&O57{ zi=v^4qTmjSAt^Donqy30*jB>%M9GsVlos8>p_LQqiHb#ns-vuG3r{R+O$=;feMtm1 z)QBNAFl~*ML<4Qn5SvXlP6S%2C2Y1I@l^;K7zFxG;zG37*Jwd)4It*`UnGb-2^NL~ z^0W#=-Av-tK}+wtihp)tkYS@PR#24t)@k(bJqVV>s8uC^PY_xH#ujQmMF{s=V%1+O z>ic_Q!&qsJBV3FEfiZIE#t^?DFiB$#023ajokj3jIzQW^jWJ(g&CiUr&Xgpx|Jl5LLM5X2Z@Ev8B#5CdQ&uOY*N^pZ*hu?A>P z%k=8gWT-KrOc=c@S+XI6y=oT4*w#CSEO%{%OsSYLpoUh`8*CxFLW1iRs;m-n3rx7p zMpCf5x3>6{gLti69Gb1b)y7HRu2n%bAgV+?>`Fen&^7%*kQgbYcH5R}FwDVYQc(7>QzE5iX0Fbks+M1~}SLlA~Ck%CBp ziHrba6ovt8Wkm!X>SZFNfk41x23#PJ!hwol!bB7c9JGt&;6ehRDj3Y1;4}(FNU1h` zt)@BsS>FX(J|L1E=3Hbsai8piD6vsD#l5OCXRs z06b_g1P%ynmhR|Ia9O+W@0C0KL@&J7={q-gYMr0^;76CEpnF-Qef)89J`F#e{Wr@{ z|Dw&hOU-saV-mp}W*Hdq%6E9l7bdSYPY0l(2G5JcrtNFgwQ5@*l1g-p;Y0qvUDUcUF2BGziZ8N#qVul-n=bQ`<`}Br25ueTp!80miV)tZ;8;zi|~HuEd?fz zUi58;u992F*4J&xx98lMis&m!Z)Q&Wo7c>vT;J;Ygd|9+5)d#fh2lQ z+~VTQvbWOBwP6sV2tJcUIndx25u%p9_dVCkwt~K*e-*7(k9kBK28+!XYOYhJ2xziI zUK>Z@@l#klF=@p$^Wn(`)HRQ$xAh#E>tZc`$!gWCx{8Lcy3`E)X-SW}GA&uocO0dl z-x!g@P;=sy$S<8^7Y z4!OZd9(~hTaH7$^KTq4(;0^*a8;XSuG$Tcle*U zFK#Wszo1N9A$=i0wZhZEgYtGVJl&a}vXFsQ|9PKQXf9==;QH8YgDCbWcH95VJK%x< z2~3xew~|uf0+#9lp#%ghzFIOVcFpS{84#dIXzCN^mjVpCx z&+z-lFG*4a0072ZVhV?b03k0D2r390k%qDMaNNoEo>Zv#L=YcB4aCe&(5C@2x2j}@ zOpzhd2i3`hjnD1wuQ6;;eew<%dr#XI)M&&C4!2#M zsnca>a1I4Wg@e|9-_gEc8G|d?_gLuE>}ox=Ln?rQ!?XN3m;(?183Zy&WyCVT8-~0p zNaw@N`FXwly-`S8)JR$a-=k1WTWT^4XhlXs8EqCpY*eTe78MF;keJ3yAW$%Zu|P5i z1`GlQ0Rsggi4ZX&fru0gLPG{17{LHBh!Yr)1jYb{F%U5YnGy?Cq6$#KF`DsJA&x>f zbAc;G1Q3`cyQ+mCn8d{~fW{0MFsNXWY?;0!l16JO0fQ#Hv8*FCOha-=q=2?a2@GRA zG%`fOVumK1;sR|72+Q*n7OjH5^hqVJ>5&}Sapny;eARq*SVKA5^q;}U&!JIWhOei>k+1J*TU-Fc)3>Cd%yO+FAvNsHD(~@HGBkq>t#O2s8WWW5_cRA zDoGDpM<D2DfbON*PeE+qL{}zu>#Ut7CaP5JpWwV}tdtoga!;OXs{?D}Q zKGg?Wd48%@mf;oP6~4ZDO$F&2H%apP^z}sV$Fu_C0x)I8iU=4zPcu?%@SqgAW?E^x zpcF7YJ2=_RGWqtdaZ*uHSVZT*1qi6g2En=-gdeUd15^jIUI!OWF|B zo8ZcB5;vRtE}^POOuw_DE&H{4&>PZ`1@N*byTyfV)x%K)MIztC9oNk=)hUSohuooA ze?Ak%NOI_Y86QSp=NUL7@lQMtO3&|V>H0#?@!jEF1J5YH^3Z&O9l;1LwlL;aFPLK^ z)?GPFc{9S-pYA7V@#?HRH>U)atrMYd;`lKk`vg*|hoV~e%j@6^%o}qUaEn11@PF>Y zti)cWLo!d?C~@WyY0gBA_bmmgK{$NHZR-nGd(tChyw#>>6H?yD|HP=oF@y-?A_Xg7 z(QOrLGjaoqK(KBRynmEbE+QF7+|Q#ZhPG*_elY_i)P*s3BAat@1f1m&Pwn_A=bqH! zndIT-Ri%~575g=RIIYjPcji{tKK4;GFe8dH{o0MweaJxK*-p^GCR!g%1qUOux8|i2 zP0jQFv%MVxG}&PnpWG3s@a|`QcID89h(bhcV9w(G4$ld`X+%`-_hw*#-XP4R5c`s) z6Ms@EqQFv`lOOX&p$~WS{=d~|;PNTM5fSiheWREt;vLeNQmd^FUKJG3k#xKXXfbK9 z$)uWO3&GJS2!s)hMn(|GHKjzH9)Nf2ZU!Rd`b&&wZhR1F;avVpa z+kZBq$n&@A@Gbipo0hposU&qCho{uP0pMxgy23qvpyjp6#EIYA_1-3F**?R={mQ?e z7a88VE7nyH2_jc#qXHnJvY%ZF2Xmi={R&@36}i)hBffr*sV{Brr2Lh&!opZQK4(A5 zm%{KC-?E^uj%^R1vyuFc)<+$=F8JI);O$sjyY`Mayv zDJ@d%mkfga`7>U^rpD=mw~pynDJ)=>3LG*JW)OE^Mr{*i55Eg@GuXS1^Y2W~(LCI3YdEUzemp3wi72WR>3 z&gy3n3;qbwB;xTxk_JQ_V>aUG1${~ob|e9I^{Xfi778I>JCAARIs`-`HS?~6kD_QG z14?C?$W#ijohafx(Lq>mQuvfg9(t`{kPc7E;otFM{RU&OPAnS`LR^7=evn~59Q;d= z_3;1G=`C)umM&1)y9jJxd5G85?ENHV6?tcb$K2BwnH}$q0SN=bM{_i@@^P`+=P8AF zyc^ZbNKqPG+%aY-gwL@_4R?nV_@1q*xnXH+B=;+%{9b4BLHau zKqEjANf82p1ePIncO=`;f9Jbi`@Ai`V_=;EQ;qK)t}A6K8d{xtCX z)DY^R5pyes=gQCZjeWZS5qH*l$eOT`-=d%V9!Ubhtg<$Gq-5X*)EH^G9gwXLNF9cl zJ|F@I>IDLY9K&8nG?4@|T%Hm!UXMLIqLPJ!0H3xTlw70fQk$40THortWYH>|ho(&R zeQqJl_((GyZuls3kez}D_pmkWP`xyjZ;Cssp$(!SE+J;{o1=V`2pXY@%BCcaF_H+O z{tSj(i8JdKB~}oHEI8x@=_EJ=j?jO>ypQT^979ySSI45UD*6I?6K zw9ipQq87uSWyVa3k+*pL25wlV*_mybBL19>I>U>sjwl~aofG~YpC87-WiYV!6Ds}Z zbxj9_+{*pmynO@vkF~V^=ejBMXKruLG>jFdzqt`oM>z~PyTvCz@x7|fB=H%0ICXt8-OYZHXv3H7tm83vU_J6M-Bedc|T`E z2i}_2Wi^=FvmMt06Vx5cc0C;19}4@+{onSg5AeQ0ZCMAxN7crZ(8yY;88i z%xHw$av~FHx@x9VQfzIo`fd_yfZ$^oF}9dAG|d>KNm8mJwVQ*i!Q1lp*42MI< zaYPX9vKmTQBv{79F(Edt!a>Dh2IAzkT~B=|MkDvkyJRXY#cg45%g*Cf*99In0;=I6 z8*1Yf6p$7*h1y{@dd#Y1H&gWvx$W@VqKEtJmliB)5A@z?L z(GMEjJoie*7+OI+F9GyU)Rgzkw4t-Ri?(*1W^~F$q=Phr762qMHa2KDZIx6+n39Hs zTn5@3NK7#Sy`w@ci&pLdvZ8@KhWminWBS9@HFIxSI_NImKSRmB*2pK4>@p|>jpMvo z{I03P=J5j%CLKG}1sDcAlUN`~N3|uY1a`)6L)XsehmG8c|TRKq-&zlp*dZ+~Q_d4Uc2KiM-)v zZ!aOv(3u9b{@X6w=EaJ^YsA1^Sh!+{553IJTtn1Yco z6(amTomzlFh#;j>0SzB8g1}`p^b%A5t{x`g!~j8k%m8g?<@%kBPOH&tw8F9KiXBrf zqg5U(ml>mNv-^C1Kf>*Dw^HwID@^hayYE8~SZKuXcAHoGPz+X73b|syP#vg(y@2lc z`D^}lmP8hY7h=Vv*Qt>!YvWWVZ*>_%MAEe^g+PA;>WYimpuZeTVn$Ic7{v*NwX5l?$c zy!$#x^wtsnQRgTvJd3#;(*Wpq`|oinm^p#h$@2t0{&7RO0Qa|AF?fi6PW<0MGy#1_4VT3w3@&e!2Sm7RZGF+ z%!=)}T2x(~z4OAKF@7$)ETUJ3&UZ5Z*}^}0(QjSQ2=t%=4~)Q4tsfok-}L7Be>YHF zN+Q4kA0{sEB%+?mg>G#JV09BZBfhVvVPQf)QZi}(+El;O^WMFGxYU>0poRYI4wbAE zxe@FpXjvWWOVcrF*g!pNOZPcwxN%~uVK_ROKu&nd;NG14kJAChG@?Ey=D~_0fjk^y z6a*yBpBPE4m+_b>yZtw%U+>jvwX6W(h&}>~E;Z{RlQ0GI2%%NZ7vK`Nw~e8;n+X)q zAT}Md19P3^5;FoVduc@!MEucf)7RA5_|BuN>vLq}chhHd z(8DC>GlVU1+&95RBPw;Ds&Jm3_yUik#PV+6xAJ^U3?E1Nbh=^c-0{x!=%e*iJmKBEPBK|AOHgMn>()}Dd+wC$Sum}pE zuh^8eCC#)}p5uwp(BH1ZjgJ^gTqKL>DCin%dNb;%s z6s{B=&Iisxb++HW{M>mHe7$=)B5jQ}*wbx8pt6ouDi=%gu=w5&ZEN+tKX>qO7=9l5 z{^BucF`I4Y_)?Pk&li2s>Ql)Yr6!+1`aP#Jz`Csul;*K-Q9^g01-8UM(J;-u^r|;3 z*|h~gZn9bM^Mhav-kq$>R52nvD`=fFmD`XlgfhNVD5&>}2nc|ROc!nwRuASnN-11K z2z@RhQzJIFrq^$1vrz#C>LV~<-S-~fpWBtZveQT%H}$=|N^RLfmdP6e-s^FG&%F%1 zPaDA8XnuY44ICgIxAE4;o%sCqW`@>#kBUs$*p=HMcT~cAry>WIX0`_Bp03f*}kx=Q5P3slcnY9ia6O!l31%!hp ztuS$M%OXS@A&{9sISydQvv(vq!2b#`zW~8tOFf)|v(SOAC4`OP5slNZ30w}y2CKFf zr4nTCn=1WIrlE=e*#SY>2p|G8Gj9us2JDrslc1G}`ZjmHL^cEiq}%PN3$2SOMmkp$ zRcoMizy+zc$1=>df0%aW7M)7}o8nDzFZx>q6==<&ElA(2PK*B(fzS<3$l5?dipj#M zY*_(C;w51+Fxdcj3GJ;@537V1KS&br!)bs{nJ#wbjd@ z2!Br=q@{(UbKW8bsr<_W*)1FzN%;dMLt*!${XtSe+)v-3U-FDD{~U^hn}tC$AVClC zP|+-gL`&r&Q1nFrT2)f7em#A|dl`L_tf2`aJ@5?ST7lsIOiHEoEe2J>A>1D&8xqi# z)z6~L$c6k?!xJuWA_o!zWFw?!=VAG$XA(0$Rmzva{@ki>P_J9HA+q=4k7Fn%-|VuP zADbxdM|gk!{-m$}?o=bVNBBsc=n@h4p5AJ zeeqPG+;NYJpnlFKv|)dNbN+;s3O}>|N6i;GUnBI7NOt`H(_Ml63hi#%GXvE2o=e=? zCGB=Jf?qI3^2rO9uNb1tD8a@lN3K|up`?o+-`$9Q|R>2NYWrB<1b z_m-{nZ&i3F+ny%VODDhd=yZ_$A2m&7#)I_7aH&28ejjHkh~-&*`Q4V+Q~zvx9#_p< ze8qX2e}HJ$Ai-{I)`UU_hLxc`#1@WEsf9boW)FfH|V`I zUx)t^iCQlNaHqN3k?5_GOT)KE$}kXkguIrCZU(B6VB@|@sWAe$Y|s_c0OcgmG9{}-j#aKeHNp>DQ^6$}an6DC#(l0o}SMP#8`P(YZPX@Ht&226lmmyY&7cPOAi zRfGo_tuBGHPw-^(+X86QpOnt>mc`zo6Y9%HY9Xb0s zO_e&Ffwx;dCYD~hswltFr)WrZn846KC>38tE8Q)J03#MF{wK!J@&U{o}a zO2R1{Xi}~?e2dGjYM1F4kRma7umliE5>1UTu|j|tH=!2moR~`KB$O!u11KPwK{7)~ z1;=WcKq{@qc}G(uMIy#gXqBWgR(tvkQH2VJiFOQz44{INf`VksY>`r=rdL5yaUrr{ z5H>bTB)ULarBnO*k|apQDV2oxQ;RF*lq6j1WGl6Jv zRzp;#J8FP}(wK7ND4@8ct|=Uq41%JB`^AxPVN!YPJ#`ADTPmSQlB&Z3-L1jr3@WfO zlSMK%*yVL4 zGf3ByBpODsY>-$o0%r7?GGh@*1jW5KqW1T?ZX7M2`F{6n>hh@@JcEbPGwy1A553fI zzW1@M9_I-M^|i@)7*qGr$Tjv_F$R})_;?%6zSL9yjIZkW>K&bH-+c4O+WadAydhpM;*>(h@1{ES4?t9D$|^0XD&}S})-I`{}K9hh<0sWl-8g!AF4gad&Lz zD^UcMLu|^{X5SRt5&;A<;z0xwYyTdrGhWN%N72r=;FsuED2_$pril&7^*)!wkwf+k zai5xHY$)jZ!`91_F}oub-zE&Hgij<= z)Dy#!=#<}w(348xs?=i)ZZ~M65L; z0hZ&Ug6;-1NP_83!tCfG0{!j7sjY27#SR#awqL$BJ$r&l?HEG_$`0rKvHm0ZUc2u4 zt(PD2bzI$_SMkbq%`z^x`4X!j+EobAmL#?uk);@}KhwXMn6g6yfx=Ov#gDH1uU5uw z!5hdP3=XZkd}CeXRPO)-N9PX{p=$U#;>9HziP8ZblXk3vl_6o+NVxfj~_ z7huE~g=UROG*aQ*6gYc1EL=wZD5yp>f+2vkWpF1vOcJvII4Pa9SLB!a{M)@nz~1v6 zU8S2V-;V8+qS5f)`;Cp|UX?o6u%7Ref=oQ0gfR9rULBX98&^tn+Yg8+|4T6!+w=QE zE&S8KcZ3~HeRc4ZGhFy=C+wGM4mdHu9n;<5qD8tKBzb}qAT39RT+pW(7bH-EAP&1k zLiaH#ue3ScS`vPxGF;^8h~^v!+awmbAS_?r?d(W&O#S=>z(6bCSMM@Qdk*p8;ReQ# zQIRkuPd{mQ=e(-x{}iY=qLwBW2>Z#z2rs2L7~S&eo3Ux$WKmNLMfg7S>5`bFi($8v zcnQM>SyDp)$q*DRzAbiEWc7TcX8X#SS6bj34t1%t%OVO~B09cGR6l_W%q`=V97U|} z?fCJ8Z@vbMPuBES5Xe{m^Z$_Hl4QTjIU!jJ0IiYBuozc!7ZfC9IP{b{69^*2p<|CF zsDh{P?|H-OyUA~b1kQeW5WAlaQlfqbIqax8-xcjPe2$GKRokjv!4PJ#&Qh(Y{x`v{ z0e^~G3sy*yeiztnJ<=sySNq{ym)Khu)4`?Hp%R+#MSyr;*yOu$-_ZZ7l>My7zlg8{A8H?`y34}nR9EZ z|BVSrGi5!~H6`{?9D!l@4xEI*x315v;~^Mck5G74cM?a8te25iPTB1zDON^>^ImsM zLv_=2r!<($_>SZyvf4=1YgY-mFw$p=aL`L)0TBW!?$^qMf1$AHbTUo|?REKvO0|e1 zqPdxqD+HJbG6**WGa--Wje=qXB#)KZOw;06Nd8skurkJV%BHS$q;+8uZIqQNK_INK zo@6E)TE!id;COWdXB z-I~x;B*XW3mVt(y!-go&5GjM$>e$r51OzgC7qS&5?+S6D#%aJu3Mf{K<27dwIEidc z!;9=r4&gbk{|iQW11^M9B~lD{h|meOkuuQr3fM9k(+Lr_q*j%?xhu^{+JRyvtV2&q zwxEQRt1L$hj+AVyYeI8kyl{~km{0X_W0L^e+6kH4^m-PVcCNKB0<8ej_{J7$IG`|5 zptzMH33x8y^iIf}f?mz+ukticF-vV}&U)eo5k=(Vk3y?rX?m&EMiXkJ;1rjfpp)uc==U}heUpZ3a zYRDklU^sK#0Y>sH2eOu0S4amM=0pwjtX9{F0Hg;YL7V0-4B;sak_;aD_A3ayL#=xOQ>8?_H}#69=Jae2AugTyW)NSx<_#U&!r%K@=>w@iWHkj9gU)HKRkiQ)u{k{ zo|m;V5fG1Y>pKy?BizC93!LMEgXY$mYjthyzy1lsNxkKrYp~O<}e{?sVx^Bhis(}XX-Aw6sS=` zvcx?xOE5525m667Xe@#l9S~OZP0UU6@F!uyk_#zYqHb16cMdsXc@MaZf|nHr1qH}~ zD0*qQz<@D*=OoAO-x~;xg>c|BKHgLbIAuwx5>e4%g#h8^5=13fwTe4&Lp?cBe!H@N zSVLI-))X2aH^7T!P{iee32n%v+>6HnSO2)=z(WxTh&$Er_5S5Qvz;;5prc$W(v2)I z{X?moy>N2uz{C%vf;@}CUG1gZ?Q8hOwdSAQ(tw8H1n#w_PE4O(Hyl_zu_#h z2l29zhaiZ@($K%o#qbDlj>83lWEH-7!wA;iweeS?v-&ZqBQYh!xXxkzGEuQ<2b!vb z8ooMSfL+A9B$(on2$5h%0tjrrj@K)`q-QzYRZ#7|YheSLuoymuMdEf0W$#%5z(_)u zpkfd)1&tXmR-ymx9nB>6h=wF9BDlwb0jmSo>-?3Y*Dr$l?mQI-#0Z4@pw%T(D}1Dc z)+Q5u2N?&&kT00!?|x+L#|`_rIvbZ5WWu6ae!PQX==&1oxmw}jW3^Vy6rZ=3ZyT_J z8pvO-oPa+l=Q4f=9i9`RXM89TAL;Z$`f9;O}yXDn?bK(?#`GoTSH`<>+`p|V-_*LMI z!GHI_WDvK;kPaXosQBZD5Ojd*ZzUvr;aHYJn2GR|m||o+ky{|(zSsD{tNlDf+t0a` zVK3<4!7e@dDrP_zvS>b|q5q!`te@-Hyt6(N`1b9736NlLJ0U(=42HROrs(Lc@u%5S zr1C5O9_ltuzd;2;A*&*10yA(_KtK)`(guMoIwo!|fY*v(^3vJfB-QnGNck*$jx`lR zEpx621s}~qLK6UEQKmNm&^&;V1eABuF2q4d?9q12H@-F=!5yr!#YbjcJUhtr&y^5- zauD!1EJ|-Z5(Q(%d;Ug!=4gze+4;Fo6)cdaGg_c<9y@5UwJ7In{p7KptvfJHcrXmo zT+JEqsg*k%cqZl^Iu7O%%!temAR^IVz?d4SSGiAcB?rXZr_MsHeEtYI>0IG)$5N8ww=32vHzQo9;{{3NUwh zl8FS4R6C`Z&crVuN+~#{hI36kaG;5l#2XM!Qb>-C@e;XRSv^o*=2_xG<1l4nvk4=l zjb)^rrC;vbwNp=Y@-0DNbz3q`MXMRpdbr`pW(?&mNV0R2C3}`#k~p|Y`e4;z{LX^BwaxYy^uO8P z{=A0jiB3SsQ+lxo(xW-TCzE=!pDYkognQt>xa#Yea#l@Y#M3)b2J} z{NF#?;fW@MAn*+@igZ7DWh;z0+rD&9L|4Qw_d}h8dfNL+S2BmAJz@cjgb=>b_8Ibk zKhj^6fPGiozk(MZ@1}%#iu3ZF#K4N%*L0$q!xX?Fnnp*}GDJnK)`i+)A#_IjzrHvx zKLFZ2@~o&Er8+NiSc>}dInqi5!KWz)B(T89hdNRW=`~AWLNkU_NLofiaY}4%p@iiEZdWOi zChkNOGu2t@b9VfehOd1cBwp6q>ZJojgFzUGg;7_wkpqa+2IXp%C({$ie6wts(qLcI@7O!!NbsC~g#ut7IES1#4o}tObtE=A zy2o&QzWV9nByWo#VcE{ZDC`dY>n5;0A=eN39{MK?R*Q z!Dl%XO{y6uCYPCEHa1O-skESCa*A^%NVO0qmP=jW6bS?ouvJUKXjO|e_FG&JuVZjjad+ic= zaXw#xb_{GDQ_w}E+7CrmSaL%rg;Q`LCfSzOCY~oBZS4Agx6$`5$N}Xlx&WL7xn_Ib zFH=V7=*(V3+;qN+sf7H#P=52d&F3*B4JoGXT_+owUQ*|Wbf)l0cu-A|qr8r0-Gk8& zD?M1V3r`({1LSP`2ig!|4zp~kIoM*|#GJW;ajU(4o0S!33YE}I40TQyXnK(RC{fgr z!m*GFkr07Q5R7LjN>rT+nsHK4Gf@(Eu+Mo`RkFwK#b|At%qL7zd77~}&BCKdRuFP2 zN)TQUz*v=F!E46IjLv}GRhFxr3k^t=)LGkcTM)2`LThb98)GIiLP(Ht*{Ozo=y2g% zwC+R`h_O#`NDx4>l6NpOVn_p|Y}i1Ul93$l%qmm_vKm+k-pA;RA|Amkz$Fqztb{bi zn;UEx+f9RGk+-H$*_A0n*?(5axIkgzLqYegYz9tN@phKTvPfS~l4>EY%DD3%2^;<+ zn{L}=o0MBD(wP@Xy9&JHZm*o1s_d=CW=a{83H-j~ATG{4J9=3CD>T;}U`iul@lm^| zyDH6Zh8@?f=VKV8tZLeV-EOv0KECIIH zCGISfcsBa-0%?VCq+%n{BkMI z8dkDWmY@B^N6E3zdzt>q!&*P@G|(RpE}+` z*kYI`(jpN8LHjZeQr^CK)avaYlCm`3KcN2!Sj{RtT)an?)_XE)8H4`T<~5#VMx@avY*1>60cI?KhF9^@oCfQ7-sO!`_Zz|dL*fRI?s=R2lC@;%wlo{%($cnL4Z9&_)` z_?R3XDduiK)x+TnoH-O8@`Nan0uotU@j_riNJE5|jUQy28QO^0#jwbdFjDhe)TDEGPrf zKrLj5RJ!sPq|}6%U9=NOqJi&&;|OwD9j8Cew@B?tbs6#Sb4ke>CM-Nz^TUgA3!t{*m(_2E+=Wa+s_;&gd$=; zB7iXJ69_LZc#`UkEF~ZGfr1<}a6Op}9{__qe{iWsvy7Sc=od(GiBB5U!lkjzqU*Kg zz)7t-q$V)MX55V#n5+Ar#vuSf4XhQCpk-vL$8!XU-H1#fFurjmq9Lcv&tSEBW>=bt z?&BXqD*14KiPQq>%-9ctP*o*o)5Sd|f$mCq9v6-*pYDsa@`tnmp4;}pXTM8{HXcF8 zTM4Fha3V2^VF2)Ka{HVuHmgJ3XV$#b?VI8C$iTZ|6#lcJ1RCps9}Evtl7+f*~*@pk_Y<@xxo ze$Pwq;{6PAUk|}i4L)@g1Q6Wg*Dsm!u6jHO_B{GT1 z9_h(c2+w>Hnjm?7TusvIK9tCr=o*%`yY|$yMz{7pgRH)ColAL435`sJmRi$=iIYzU zsqR@qqjj`~k|A}*JAA37ibD9q8k*!KMp`T%VMKBCzHu}9#F&O?|3)r`C!ar?h3`oB-a{Utxh$vljtR_i72 zVR$e)*FSoi{o#529G36Y!|=483WYMA)C6jQ3Oa-)g$~UTN{1oDIB_lun_${z?U5)H zKN^I;hCYmvQO6$!m{!>>_6~_32#iSib3ncr$LOCP)j7?=Uwc@%%&_^66c#3OL*bPm zfb03x4lXqulS;hJ9x;7Sc{dNp)!T}vpuQP>ocE-BIEBM=8{t=HA#u#{7 z({n&%bz;vAj4%U;^C=y>=0yElXGET>j_D37pk~-HQOmfx4_yccDQmnHZHCfbA?o;T z%&}mwkYupy#c<2wOJ9cd;K!ZI{xhD#<~9|~_UuW!#<*Hp5_fH%z$l`IAtQph&3$aaY;ys zHY9sCP8!ra510F!{Xxca8apxua%P+p7p5XikinSrwPPfDNR09zWDt4IQUYTdIE9Dy z(KSV=+Ui9`1Q1++Br}3D(282biti8&gvJbl0Dxj)cw_*0n1Tt+!&vDH)fb5rjAYy) zpHc-fK{7-GFAN}H#xP?T!HI(bm&QQGP6j|IS{f$nwvp6$w;baZe=Q1@q?^Z$25cQ} z#!F7{1>p6og}CdvVNxIci);)>>@Q+$=%RBYB3NXxV?K*2EVxVQ zYy@9C`Duk7)$vcM5`pY>u{~NY%Ps-N)EK>kGNX_UPSZ3oq8ckF0tK=eV2DJ^Jn<;p zTAWQdm}0KFS|}vA&4dwv)r5i|f!)_?6eG_uG>8_J%z+Fb3j_j@4}8koC#Kw+Om^e# zDFSxNPB2~qDowO8iYgFuo(DeE(b($R3yIT04I)G52i0Iuuo_$pYFHG-?Uak5gkH6s zfk0`B_solFSpth-&FHqog3y(eqR)G>un&2P!IcRK(jdW@`wSp?PMLM4v4PZT#e&0U zF_7DmfD@M;u9AkAs3GQb1?bU~vd6WPAbTVIiog`Yh5$pCK_CUqy$IqPv!q=`d8_uoDEI;62w|2O zRN6r_Bcz-}BF^cGKxZNfAs0CdIS(L8Vq4f5o>34$(o^P6!o8&POo)O{eCR=nrVBz2 z_+xCa@?X=Y663!wBEt&!8C1ND7djP6EIc1sTBR7IhZg0d4@(S5zelcVksTC#^FhF_ z)OphA>cs95=doml@<#E) zZ224qfz>*>h*(i;Aqy;%uzIGUg2?n!y$#0ef6-&evMfhEcH9p?ywW@Gx!W*mirF)-QP~b z+?LLZc%t*=oR%9qF=5DNkmW)F`?63adWz6;85tZ1(cfWMxZB%^hVSL1yb_Hb(k-11 z<7XN%a(DIsR6jt6)TY5LIs7+_c*ZyY{D!#l;{FsL99{2=PtOC zNh!{AR!(kr`$;P-u&@@MR&{A?(gb*5jR0o|b4Cb(n=)p=kaHs#E>LDsA&jKs5LQ74 zK2kwR0bt4rgbX(%5ODJh8=cfFtXgE)qJlObWWPeeM}Z`PEae*rg3uJ562!>>fnrLk zE*D&`B*-_S2!hSU7gpIpa@}a&cF0-DBGLjZ20{_3YahSm+ef<0)P4-sk;YuvJQqhi zK3>j;)hk@VT|X`~xp=qZxh-vpo(O#e#j3=BO^jO3cMF*`HKAh@?;l&-xCMn-ucYz- zWk8z0Sd0;Sj`1o<)WS#p|pyxmRqsupqtDk#Oj*ia!KBOKNp=q8B_)qI;KF@rVZAYuWR#z4jpI0zVW zWhBWAVYMg;5)&9O7{MUK6H90-La3yfv>1gz#hk@h%Yz_e7+MA~m5Gc@B!53;Ap#4N zAmm`VAc2XDE{qXC$qbwbAP@{`3}Oizas+M5Mp?8f6vh-37^I2@VHlFxGT_Qdg@q-< zWKdG1P5~7gf(R%GD=`QPdNK;j#0u!b!IuW88EB>fDn<;=Bvf1|0!1MQC@`#Iu*x8y z7<9A{n8r2eh$6v@o?!%w2@)+A$qX5IV;GA>h!h#b3g})d89+>A7=(*uWkiY!OoB!! zGQpAnxNyq}7LJUdf}25EA__)GpyHN_1)4QUm>@xU9O-`m$1oRx!GSJKi7l4MfNUA3 z$ZPp>B^;DFPi3_%u^?73+IJ4bK zIW458DBn3W*+CC(7SVJTu(E@sVAm8wOBKi)2EnjRazQBpA%m!5Y!sSEkTwl~#tuk; zh7E&YF@V@M3}Bj=Kuv_0F@s<>4TE6VF@qQ;m?5EqU@?OjGvnR4blw*%NErd;f)-UW zIUX2FapFSp6pQlpg-}#@#pbaAQ4keVM5I#!M9)-BL~I7y3%Z}%d(=0*`EB-UR|rVW z(9!yzGOf6+*&ply^yHnn0^HzwyN?((${;PKmR?}Lf`HFe&{gD%&f z`MyKhX0PeoWt)eR*C5fB%+2Ja+up=6(h!%xnm+~}K&B-U5KD|Qk^)ah18?uWz;Ban zFe4HNIJOt}_(U4ME;73BkI_w7iU|7S?@IvW8&e@?eGVXrci6xkj8yXwZG0?2{G5A7v3dVCf*0CIgVjk2dnnSW*XM8JSnr* zVntw}dd`GTGfs#4Z8OGV4iTd8%4j|DJ}zmCVJ)#TO=`O0uU@!Kz`vDI&rzfECKXU0 zMQ&ZLy=`K$rVn>Tx;&vMkh+#b`q%S2gkISLA( z_|x3KGQ7&HV)jhPN`zUhZ4%YD>2*Be^_9qxMF?0-*p;BNbN0{@L4*GPm6v^a*M3la zT-4~QGw1{cVD3DT1uC%?x!a)OfKgH|YX|~J;8gePT;?3fFjSktXN1TKXhFpwOQi;=kCDiPSw1j0i?Dgqo7OYpVci7euNkG@1WV2$Lsqsph6Wnw2 z86E`pb6?r4^U5jtyB@uwWI&Ah%*WxD}TczTw&`79K!P`dK!}^1)3y31qob(xaIH($jH;{< zxy+4vWQQ|Rab{mMAIYP&?m8N3$&^N+$RVh?B(T^82rRVh2Xb@n=$|z$OOB5Q*$YxU zZ!G&WcUN)+f_R3;cV&kLWdmrR`M%Fa_#2qcg}ZK_D$o`}gR~?_?<@(#3OX(k-Ed1P z2xK3}ev@sFsh8V(X@_c`0Dy=Ol{wU0hat%D435#}I7~#7202Lr3=kp62;lEJ#TFWb z+`?!p6Gz_)Ti>sCgU`zh_Rx#5kRa|_L3)+-?GBAoWWs2}fHnF%+aV^=nr<_9P$$bv z7_6yO(_9v_%N0FQ7&wz4#8zon44Cz;5GKeRVl+=&4i&yC$2%gXZ%`Ze@Xhg~6I`rEUQDbnZP>#$L>vpI&ht~gwL-4J zNWp1-a{(LQMd#1HMV%0!L}ejifWi?TGd?ImjxR#Vh)HNS^s#cebp`iAntN2wA{%CW z#v$6w&#;lig(dlR&1c6UroehwIGo6G7MFV13e{rh1-s+X^iKD)VNiLhWu#8b>ticA?~DbXP8j+A&$YJO2!bd4>=$qag^>Q z!A%Y!xjY7L^4w`gVTjFG1QWmK8mB8)AB8hqnu< zt#9{Ea+MzvobzGdlgJ*z@{u zRDySHj?I*er=GXSgx2NC(+U&19`y-neaL62Sk6IahIBG%cGbliGq_~4eBXTnB{sn@ zw^l8d+BM^fSh|=*`=dVmXRmCcm!L&bi%1qcb)yiDlY{qZQFgCZdg4=Vbmv<69^APes*CN1tDFi*ohanp;r_jOWbUZ$1VW0urtSkG@K_LC7zRRG8-+S z4oPNunGk4(avb0ay){ov)ENe^cn14Wj1DGe)xt*F+L?ka|7lS=Xf5X@y&qhLk`83poTDmawf0Ls`L zByP?pnsI(d29OYPUlFm2yX=rVMg?KmM%P~!&1~`??{_x@K=_vQb#!&v+w)(E>$G81 zMlHG96%XA?1L8+zNff_b}i>B}b?K1V5w*9Xk5nk<31fD`9#SVRKjCEXeqm$)1l*nYRrm_qpn{}F!Ao3cH` zjNEY)4N4*8kI;eN+YLwpCLqdO_8vZGm}#>vxl@`%aUXl(MT6Kb@i%Qp3( zm7XT#=eF0gn}Mm*^pG2dHdfK2sTZO>aFXY{YJf_S zBz3{~ANbSjeL}j+$h24y3@{+NHK?p*b^4A*Gk>2c<<1vUBd$=lZDr0In=5H>oDH=mhXql$mWv`pa3uou<+v|6gvz0UCz%5Z2C#!= zP&8+= zJ1BJYqIU`ox5(200wz%Ka034@M&W7|L=hxjpHwr14yij_Pbg%3WbPz<6H2O`&yBw; z1gk$}otO2-1qRhI!?({1r~ z6gilsf`eFzLhrq5%|V+WOKB}&C=#T1F4*`O@q3ZwAZ_+kAat0dF$Lvj;QMtq>yrC z<2$HzoPnmOXaaYiLh*e z^SH5(1K!C6EK6$CL=sC*?^G7;R<(d35mGwlrl&+`_Q&FevZ>&sT#m|KVdcoO zN%N2*w?w)zC8Q_#^v&m!;42ecC_l$3J+lHuZ zqDEXS=8gjr&88N6lNDV20ZS=rA1cetE?U-*og`UY8cktiO9?xlG~RM$P3vu_<^_Qk zlw4Wh&mZkim%JLlY-VhKLHyrIUyY_jAI z+WIc^l3_!)2tXqJq#Vgf_RZ!DYfslg;@`MD9NIYHECo(LvN%zTi{S(e$VJG(>iVRh zgm8CsPE<%#hZBTd4U@6Ht!XH5D%?sHY^4Bmlus)tiqu!paLh#v)N<=A;ua1V1^{C%k`uc@?$W^`ebog6y=1xA zg3B#1Ys(Oa-=|Nx_MJa>?8-h4T@$NXfnwLjJBsdxEu`}y28Ae9k|+oaz*G)eo!OZ5 z8YM|^NGjQ|$!ewuw)HPUZsS!n5_5DhQuxnfw5maAfsL;093&mX?&iPv5Yp~;o$P)U z+v!%17rnO|*!7TW@)DSQJ9DX&mUKU~)TXPGT#)61 z0t6M{F81f=29wP{XUa0XJg-vd6D-+rb+c zT5n?2Y_Wyc%3iG4)o;E0KgpfM>A2$?W#}P|p|EIUU^lfn{M`Gn-CH#8kvz}07!Wp0 zi2ITPCCcH{?*ufr;?;oqlDT z{~84_!tZfx-y*d72UcV(opUIRyw42LDw30`m;=ys01%ngy~vNYp3_lKtW{xTLs3se z7oqL4&@Srl$c&ceJz~`X zc}9h5Nsggcsz}1STbi6Ky{&u<7bi+mgd5)u7Xm66JuE#aAOxz%pCu4MvKp?Vs{zHB z&ghmlU1>uK6JAIozCn4^4# z#Dj!T1UYA_L=yMyL=y=%`3RW8w#h+ECXtv#gpuqZoqx+1!1|fCO;~uO9ppB(?dFEz zAZ?IfdQ4SpV+XI{?=`oA6g96{ePfu^?j5$3{(9%z)PXCCr1VsXTH}8HfXzL)|~p)L^aQZ*S{) zPeklS@U-d-uX{t)z_i1|G?61F7A`REJMCWsHSKpt>?QgOmW+oxTQe$J3>Kb@1lrVf zGM0gi;!_4F<@|ZdLlVH5bz%4Bk2y1%Wy>doy2-i(u?Ch&;H@ihOO9eFYE0MNgM-NT zu#U&8!-QL$F@?ROVjU}Aw+`?_PB}q2x zdgsT#oCW|Cj=IcJr|JPV2ylsfJ`wt_b(i_vD{$j+1Fu318PG+cBfsFihbx%@xpJJ) zL>SM%F9Pwk&P2sgfby-S!A%^Q#X+^557|{T26s7 zAr{1hZ6er0(iv8cjZYWJeUWQtVm?u_^yiuXe7`{-r~iZ+(k~~UoapZ#O*KsdGT6Ls zFOw-T1e$H&Rof**>xy0}^f{hm`yBf$fbSC)5wX+}-kI+6z>YMC1#K7D**D5x(BINL<$?>1a%`EjB3+cUoSUe{=vt<-4LM};Vuq4JZW^R0vs1w)KONNWaGf*yabG5W)+ao-55V1&E0|iKu$pdx#=L5=fy>YrLqk*+BAjJCsT=AVC)aB0G>nxWL2F zaxwye(BYkt9INPD$KJ#}gNK&M1UUqRb3GgcSQZ!cQ$%=o(p4n#(3Q{$m$x=YwL(uG zW!mo(YDay&)Uw&ou5X)r%S5K)nN#LLYAAbhh!z4e5mOO`&uoYBZlmfW&MgIn2+@+B zxcF4~u1zZm0(cX2x)O3>YttFyOONdyaT#zxNz(_xbd=`+R?tN-h&1boK28;R(T{_i zs}0I`TE`C>({r5Lt@Zs7~%jjoSxy3=&Di} z;ize}+D(L*#!67K+}cueaL}TN0)~{>Il_h_a)6UYlS&(4+9uR7jT2x~Apl4SvMfWC z36rLoBtc^Jb_j`)Dkg>|#Y+h?Or@4IN}6PqEhrnN98OJzQiLjE2z9hcrzi*-O`vRT zHc-@@r%f$GFiDYg$bwBFJfNhV%v8>B@-HIp38Se|D57UkCwasYr6P2ZxLn&e9r+cK z6_8C~aHI&4PD}zNClM(Jgd#*s-OhL3g=bfHoK91sbV|@{1|hcB7q!!n8LpA0*7c)t zUSzslU5`;qoaOB~zMzSs#g?IG!!;+9>=$~wp-RX^UI)D9YUy8&tjc_Kp?b)&O#NB1 zCPFcxTzP6~pH_vBmYisq5e&?#4ZLje(_as(WS|lW@O3TJf+7oPig4(V7aUE7!*@|I z_T&sVguHI5`hnsq8_4m8ihxo6KS~{rMU*5`+b+B1(SCBITWM>Zj9Lv7W{VcV++ZvY z8b)hC+ACz3X)rA?B>8BBw=F7Oa|)gpOM+6jO$7}r6G0EsP(X9UT5c0EEHk=dO;BM( z?*vech6@Th@(87gg0V9aCI}8_QE)*a!YNI`CKWp66Juy3!c8|eq}J8xFrkC2oP^jC zX+w(PELq|bCc=Pa)(xiWhzwiwNffwf8%@~Ia?F!$6J>IaS%jRW8O;+JY2-Rsn?%|n zm>6JaZ4zqe#H7%SMnh8@ZxRBh4F(1hVjU2&7+_(&+}_W2wdk5mZYqe~peqrVo%g?) z{F}e6^XFdQ0f2^lyOyZsGTYI%8YZUv5|Z=G9SEl^ zA4lVPYxVt}!?L5!b)JOs7ni~6$Y;;wWOAS!s23@p#mBF}tPb|T`HRc@`Z_Q|Fahfe zzk_)ODI@{QjLB|Tn*Ha)fn@t)f-m%#2&uEj1)E21Tn3U?$qG2P`n}m4`~LkmHOf`r zQ_!B3_^91^*D62SPCl9dq~tSsYJI2Etea=?M*R{|^L~e$_*AQY7T>Kuv}nkV)iSRl4Y|bFeuy};f zyfDI+rxJRpH~O3d7XKL4?HF-4REircDagBak+r_`M5uO^0;W!;O-Wg$5#?pij)GJm;_iR1qAtFNCkm45?XbXdR`szKF@d5i_6A9-`Phn{6FO2U&Dc)4zF`+bh48bjs`-eh?I2S&Wbkh9}NE_A1VZ{D16C%JCl33 zG9Y~ki531M+@zn?!Av2qCf(_h2M|MIDQ(!W%TGx4lb=nICVr-d_IT7bE2_>B&5i_|I;D+X1lZ8fzCH1(vEa66U<@ z(RON@$n{ow-iN#6Zm(NAq;95!i! zX!Xnwzt+<(iI6ti0kh2azIPA!>wf&d9#%oRM?-O48mbL;ZBB`v2d>+Ob(Q@KmXD1& zJcoNu^F0KiGSy6cBM_{KKMsFJie2$Xvv=zuP!{3uIe8R4%BPU1mCw9iig3R^)7z*^ zVGziRlNh-Y>Uzl-$0-s)?W*zJTzcelzI%9E6W1zhX7Y8m-B%bh2{-pjH z6Bw4TkKPcyQpsGVI(Gfm#Gj0BV_WK)REcKA1FWaBu=|u<*i}&Nx(QhX9yS9HH->~3 zt0}Se_Y`1X&M3s~BGndO+gvw=R9zyM>TuczChKxmL7wX8O+Iv<*@-+rwavwpIw-tj z5G5;u`=cTKRot>SzK%|deJSHy$C14q=P&Mj$Qra~pFz~O=5)yssf3CsDZ9EwF$54x z0*XlxNar}>AbUbNrG+>m z64)*d%K%@&2SVvv@if)TNyWT?o8Af<4d(9}2Q-Y_1Usb0#3CD*Pivy+ZAD=#1H-_b zlnh`_%-u2ukQvA|usMW$|dT{gP)Nq4+!mQAc|L$Yc& z2`XW3pu6PTQV}9^^QS3JCL}?e>8e9wa9YcWt_xK6;=oH}6-&DP*>tpd^2VqJ+@xC( z3J?f@NCFP(L%>dvBpmdcVP#;0L+jxp3ZO3nLz*x%9`8jrUKir4e`mc2Kx@mB2F4Z zY-ot;86YkFGqd}XNlk&Az@?RqvMhs3qx~4aohiOHp`)F?qwm25qX>i<+YEu$MgKfYc>yRv3lVp z$VxCYzt#cBZS~@|urF~J`A+eVaamGVxC}z4F=p5Y>5D@1mLCA0OrUd2ow*i5+SYW7airc-FgR%zeMnRUaXmrg_&>- zW1seCjwlF)TgvDic28XBRJ&A^o2&uu*t)-OP#CK&UyQGTF8w>oqVj;3w z@cHPL4kG;dCOiCam$|NzIPJ*&AltoCL+;gnl)$i(_8&3U$N>pET|URz^*d3%DZIn> zu8|*c|GmJ$~f!Z%CO* zih z1R=TvPQj(!!fwb!CKWB&k#~O&b;T|p)lYnTM}To1J0xGon_SI_WLdeS4<9Ac5O-EF z=KB|eopdCwi`*-(c2%WkAQQ>akqYvFxQ27|Hp7S_hYqHcn1XLy(h3LpabwRKZY~etDc# z+uV@T0P~QJ#Ph8PE1{`PIzaf-!ifEP6g?1hIc2RO==v$W{gW*=NfQM-zDk!R0t`vf z>PE9jL=fI#T!l4^up_abxiIaknsVWRLt=wZieQ4#({}=PCCFwv)#-z0P`q_sWyBI3Z;QvMUAB`U zX(*HgteZI_7?8?{6C;99Ady?YIu#?a66wbOyyKrUhu+I z7RKcCdk+fxj1`I%PY6MBl1pjaJSHe2dift1GS!J7U|h7ovkNH05mXHAE;8r31i$8P z7L~RBEbm6-BcI0s#zdVBM$#QB}>%X0?x9dA6bJ zVa$yN-Wn@+*xQTRut_((MF)NRq;s3dfAh`C`qOM^7{dfW*fK<VPCk z1tdWP&C9r1UOXs!6sN*Hkwat_fnca~K9&ba7Y2Jgx0#u#%&u?a|zjeu9g$J8hI6x4;-#)s|Y-UuF6s4%8~OlTTtkHAS7f zRY?V)RFF3ZfP?amUL^;9&JiehonnRk=(|V^a5dew; z(~OdJ)hj?qDq~WuG+ME1*Q8ZOzHEBBu6yyaQu5X8Jf1R$J$H9VLi4mm@QKO6p6!az zdKE`!TdW^v)`@}cuFB(2RRVE3dX#(Vih-(7_6HYWqzx#AbD_@BZP7c_&7{u2$jBOw=roXYj(tX^jAQ2G_VzePl;#TOzS5-UHXH(C#r%S!0bfdpS#WiWqt4_@uCu?U?ZP@S12di^U2IyDqO|NPqVtN{^p=^R4gvMT6-aUj04Rl3;PljYHtC0O#_s|rv?Hah1Tua>gCopqT5l8e~n^)QexB+%iyE*fCV zF~${>e)b>}l2Hml10a^7xF0H90|YHgi2x*Q9KstTp{Mj*N5XMEr>xiOR%_JL4MHBn zGF}L8BgjN*aF~;7P=P3CNNf}qRKfFSPB+Lz=phmW$`nI@x#gvG#_V0zf*(u~;? z5eL|B7~P&?0s;^r12o9$NY``7 zkh@l(Ob~;T>D82Cu7^DSUP|0IdN{N}HfP!fULKt;CTetVrX6B8i*|?$E`k|y*1hXD zu8`)_6LPmBXNwGWK^jnlJdJF`5WJ$vl5GXgEU$-89Pq=U$n>gUAw_0x>rHja+w$86 z+zcR{ufb|YS^(r+qo*toN-<=}BdO-%Ni=P97M-u+cKGj+v?c)HdWX7L!WL%J$;mj{ zoO7~pvhO0y4N$m2vP)XTt=gPwx@H#z)2{9juv$=Ifiq>^z)`nt%13uNf6YS@)f_Sk zSRPd1x}4Du+f^{9yJhQ4rL~f%jE^U9`x&9cc9U}~Q=IieCy_uet?2e$SOUj%5h2If zk(iENlWbkpwQ{*a!SMaZw?pjXC(=XMP6#kWLl|tYf1Oy4=aCpp*L~VZ&mz7A4lzNA z&^MU+35*n7P*6;nBYZh8%A3)HBKQChN7w4>*WZ|)&*1iJtZ+fIn0J%KPC$u2>A9A@ zt-4vCT?VbUk441yo6Q&Z#~oAcm*F5d)>652!}AwWnv zja=8!Nmt?GS>*$Xju5Dgi$1LL0LVEL9m=f-IcVS@;e<78RF0%miJXv!l<-+(ig&xm zBNVADgdvk$%Zzes0ibiSH<5-CiK$ppI&he5H7MJ5apD%tHZRZjpB3p(n~z;L#~^bh zA&$er$DXE0ITLLH4rl;i=cm)ls97CDs2eOMR+mc8GH>Ea-B#H1f?Oa;Ac6-O)0F|h zI!U;Q8?;sF?2iUEH!?)1rVtJYTU{jJ3=3@*%L@I=rZl?o>xKyi`wMy6rwG!JLtfIS zNPvt)N1SoYAnW*HBtFHX=+VieCN;IXw57R^I9z0x#~>V-#A{yac#kyJ!7Eb(;no7Z4`bWDwSW1N2x!l?+q~7@>mQ1f(~oGwg8aty zvAn!C@6kn-Y21|Rs!VT{!@0H=gpzGLX0~jNZF~y!m15QHWkB^@R7}L0xXvu0=1U#b z^pi7eEjL_h5{pPZn1u5#VFN@p_U=Bi+MNqGdd0}dkd?--3R*9^R_MnV6mbFx(7>zs ziB6-s5nD(d4Q-c3xCxFSstbU@MLI+hECh-nr=>7*0wR$bR=9yOqbs5*u!NS|th<)M zC=`kcMlDOt0yGl~9oi*O}I|ce`a41 z{vvi?(^u~n%ne}uuf6Q>_?U_9UQ6lH1DoZ|>B(wabXJu>^$||P~V z{v4^9ZMrU#B8bUlk1{PY&#m+qBP6mt{S8upr_9jYGs+ISd}7dWOW^eGe_jQLz!h3%L= z1P{Aidt;qDF5{DeXQq*eHEM1~WX>kDSCITdk|PU`QJIib&nbv(8}6@rpB$$Z4*;d) z6-ZZCh^7c3p0Y0-I>Z6Pfi4v_~B7Gi+$&`>4P%w0nJe4IZBpr>NQQ58lD72%uv3liLuqx4w8 z+GnA91O)SCi$d!lV=Rls^G+>;8RA?-@DI(d&i`d+Rg`du@jMUTyZI))cq}t{2r&cZ z)~5~g=TD1`KTR&0=Dc_4AXtZvI`iMG+K}&y3AF!|?=E*GvgS8u8eusUT00W)a!OR~ z5i!%UP9YFU?dIR)`j%(b2PAe@a>9o|g$C1zzPytm~Q* z(FsQEGm=r064sMxLkzlLoH~*82MPDa=}34K{r5cGvuRvZqam>(DSK?_@MWvJ6CNbT zj!2F`><}R=-Z{TIWLVmfGDE+Tg2SvwE!3W5u+P-5j0jM>Q`fUTmu`_;3R~&gT*|*- zwv(N9ooeXA!uAH;t+_Dgq}`rgy&Gk2bVP>rX7};6OADskdw1d~%X)2!Xm|Iq{yl%$14mHWQ9BFp}EI~ zIV#vdA#Wu!8^pz|!BSKUI-A0OAnd&{Jg!F3j`YHui=c{Ql7hJcAY#+vBaR9&+|`u9 zlSmk29V2E%L>p6DRl%O@$HryO(S(jryQ4N0ZNNY|Y#`t~xWNeMwLL%|-zUaJB09@p z$W*R_OUfF@A^|pmX+eA`O}A#WlaCTr!sU_XQ${urQ3W;&2N1tT)3z%xzm>4Sv8c{o zaSZV*|354UJjW~gu0a^S2u=(Z{x4k9+_Ir7bFEnqn{LFh?MAWXJY^W00TD7 z*Fht-mj;alVq{!{-s(alVELaTi5X<4Fmmu%Z4TW=(F`hRXhPa3ktcA6as$d766pd- zV$w*Ot=hwHM(OJ8q(Y3P_Rm+y_s{eMS^vlD<VKzd3B90d|d$fC6(e2ee;B9P>GuvVa<*)nrTa}^ zcd*`oo_?-6@4?~i_WeJ}e3}N5u!e%y4-^$49_mZlHonr`! zd!)npMZfo-@+1N~LN#F-g)i&6P`k(^0a-%PUe0_Vtwh2sqdcC1y~TUPI?u1G#Zf(i z1&)Y4RzU;1j?`*01p4##qt|2D`bgJaR?$z{(^n8XMO&xnxcq-_&0s~yT^(6kthbB3 zVyGKc3(XNK5Chj$c;iNUE(%s4LKTGVRL-S43hvd!cHE~621v?6gsI$^94b)=qEv)l zRTk1HMFXo|4EKuYPa1ks$%A9vSyu{oV%=-|N#N+4&Mz8CEVeS@2q?aRnLC-LLI(4S z7_jSI7^U`}h>TEo-%iCgB-Zv^(F_Byz>{V$yQNN~6a|#gM;Ajb7v{s}w^6m^O?j^K z%O@h}bH1()q0Z-sA>P@J2^&OGKvmWn|8?^V3Z3ylofJM3w5Vu*?e`z^<)}vUge328 z7V_g4)beIL2}^mUjENfk65yGGfeeUIhE%b8gET)8IK^v*59^l^-` z2MW|AH1pp z+ecTW*pyo*8YAzhQ!a5E1~e?2F-_a1wO7Q^nj(b)S*@r}gI6|~P1leW5Lh1)gO>>X z^fDT|&U3m}Y#5t|-Q_Ka4DZh`o^a9LgB2f(e~%Y4>he zlW(aesd(7a>3Q5aiQks@DnLfoBFY_9 zTIReDoB&Hew7+vh?grcuZ!w`6^*vJXWmL|b;F_UgLVbX(jqmeN4<#DBHyl9vI@!As)_Q`>+F zKoEe(h`7%FanCtU*@X}jWl$@9@VcfDmWFdqW^oZsbJ01r|!||Wke(J}v zM1`7L{cRiB=@d$|tPv0~1dbCvSi`VCzHdyrci`^5kID>DypS{}0w8*SJjFl?c*rpt z5|fm-90V82=2kGflLDKQr4g^|6oikHwNaAcYae`*bEWBOSxm&ZEQ4VY(9Z1=Z)F<@ zixhZJB676zdmdZgZH{MYLLvf$L>1u(xsMM^%lO3ZyRwRFZ@hrye2tS(t!dINbfZLt zkvU9$)6lj*<}`tT$i5T%uFpd5MPv=bT_gY<*hGkhJ=EN#ps>pdidvIinb)JqoTe;W z#%$`WV_lBbom#Ic@JK5Z*SEaD2rD95chBEt2_k=RE@&!mxnsa zP+FFgAtQGxZPW1lcW)#1;r3UN>Q-C))u4{}we8z&6JnE+#T<}W?)|TeB~5Xykmn`f z50iL)R;<2+;~r-xA|syNacD1bm>m>@EuAj2Hd0v3&z;{eN{x*=W9jv~*IaLcAPm=N z5_uURz%L_V4-oSYD6c=5qZRczPX3Bx{a;BOj3je1^(Kc$!=LaqEd5UD<`o{;+f7)X zInfI=bJR?Q%i48%(`q^^C`c4yaF*6yGF2Sf`CwN+kIsJ<7Cyy1eKA4crf2+QFuC<~ z3nUnnKsO^_%S1$WE<>729jaQBS`JK5;uJ$%%?=EPmq7KJ%ynqOB*xI_gqXz*a2=1A zVupuRN<`WTx4my~pBQV(h8r4x53bLY%@(NT$^3W^@< zY?2l&W_B{=lAb_jpuo`EXk$-d1Ux1v#kHamDQg2PrVI@iTB)JAj7pcgaMdj;D10TkH@ouo2u1&I>K7LqJ}tM>LYfy70`Y&160yzxhy5QvCIYfX_6bc=k= zkYilMv#g_}w{W4rR>)~Yq{&{g5H`72uxd@VX>c~4I*w=6a{iWdb#iTNYu4adySl%> zVRf|a?^XS#``SZe%{J%alr+&>K6-jMbqg2*@;J3Qs3@3UpcLpwlp00zmjmgiw0V)$ zbUSSG3}@1#&0#&-6R?$-hK+c_9o0n6vL~?|35dtw!4GPA29h|0qaO17o$T!bR9VTT z-kkAdjpe^9MvihapCdSf|BRZ!&+NuKlFtw`nB7bA{2&kjm*091(E8cXF*Y-SFL!DY zJ&UHRr!_fIsjC9W**u&C49CZI8{+$SMB4fod$|la(~jo=jQUbzOqZP`d)7{ zko(M?pYpa6RxdbMqw64$E$~gs3lJo8X1^O(ZANV(=?#2UVOz2zNSoa3+>O#d8C&*R zO+8=Lah`Nc$oY59b#A{a6Aeo@v@@tNq3}5NcN_2SIl{xA5TX$Bn0=ehD_dlddQ95! zMU=xBuM;8+zN`sA!zBZ)1jkKMQ!!FoN^r*o&q)>AJ6Z?KW$%{lfYyXiceXpaNmH|N zq)^!&N7nWZ;SwsEVsCg5>4ZymXH#Xth~8{PJIgXfiW-eg;3u>PR^l>DFNbW*-Wn$< z*m)HXyt9)|l`rtGkAaU;!vwK-Nsz)3E_Cz8piwf@YYNu;gaksvVni#30Lc$pz>RrJ z&u0(ZuO+MxgE_u(2>w6WJ{%I7(+4EA^g&rNkg1!Ks>F#0&8K@ICZZX;p;6mw>AY|f*7tu&oq{ZwEftZjsVy79! z`4fUowlWE9q|(e`HTw;;n(#q2hR1|JZ=AjS22<20&?|amQnvO~hshMKP;ln+tzo2O zCD8*a#H7Z@*_z%+)u||o4uqo{sXrqna+vUx@YUwq$dobL;}s#uF;66BpMproh(0Xg zNHuaY+9-Zp=6y{9uv$w975sihHP1>`3507h3}MrKfNodmf@6FZb6gm+1Ajn}TeD-- zKQwK}FXH7L+Bvmo$3=&G>KP}rRF9(C3NQLPvEWj1xThG_UJoyId}3F?H;T=IUbaCPY}0!;F`7=%Y#emS5lak(=!k zvmUh8XTnBFf^gk8Ca6j$hQTzVk)ZC84Vbx^#W^%{no>gRbU zhF`12A@}k*N*4icoJUAA-^)15e@>OA;!$u{iQmieeyrleu(aEv8Zg z7Bsc)1b<-o6cFNMB0f8y&Xz*%hEf2we*w(l;gFm8Ne}(Vi*I*=B{Lneyf=1o5fW5r z@n(*u>+rn$Emo>8yW@PAS}W(z^mXX2{}t!y`e%Rc4#t|A#yUVypqD@+gaLHJl>D^P zVbpRG1V@VD$TFk-nt~wpKDp4J%J@JJP!PFNsvf|Fz@b7jfHR|W?$(yGJOyuf-C?_R zCQXHU%)~Z_c2o{j<)FADoJLL-hZhG#0w~1LlB^{;XH$C&>wsTDggTivQ4ltzS8F+< zbBQ(Y=LTI6F_QiQ0nhgi>-r_c?+cL!AKr&^YH|*cLw+jU=ns_s;EyKjp*rc$99Cf+ZUPkWNp-Pzmqh zf(NA+7bT$}P&c>1QDG3`LFPoG<2X=ID2bRMPU(kkAfzE6oy!B$A|$-?#z;O1AJy+D zgT6Wh1KM2HnHLY2-dcPtCrFWDDHz?7t8Ye&Q+1SQ<8zf@D=XM$-<_wB%3E#yX~z|u z7H{1x8PNdQX_27(uvKaPIbKQVl1_dE%I^?Qy<88fSlYu)KFiI&8VnTAZGcqKCHp&o{&gi=r z1bZqwu6<)NUkQm(NRrs-ev#eCI zY@(N-=Lm~KHALBiHbI#&5SwV)vIVH@lno6ru_7EaIXFWiUKb&kM>QZv zJDW!iK|fLpUq0VKbYvmHC6KOI?+BM|SuI9w7yUgM*Aqp>l9`h+VQo z+#H6-EmscRpoYuVrVI2J{nvo<64~59mRlS>JLND)nF6FO2p~WN9FQP~KyZ)_--IqJ zhZ~VJ(&64U33GYE18hk^Vaza8S+10{zI4!B>f6}Kk<-N7_YJFF^5qm? z-=oIoLp#Kmk?)@bU{FJd9N1g|K?WdZ2mp7YvB1a?h}ylK(9QSozq^NeDK@(QK#j6O z*fIwHKgYF^_PCmaw%-O?7r%d#$Msr-Bp}!W8$>ifLlRISf;ydDwrMjWGO(E44If6B zw^#t$L>Tm*en#unLa(`wQ)>~nNZd%_3-W8FlpA=$k`Q7cq=mW2o-4+C`2R!Pf1P%p zrBZ$DJLp#%2fI3m@r|8E8NuUVcD(RQD(28>O;vbpVm~V1kPf#DYOD#b58%gXFz~+(uKm|Lk+A{vX!>%M5Vc z0TAC>2ek=mHO<^K@QMr!$jNaX7RpAoMSs~9?{sCcCka^fck$mccB7s-~8{ll= zL&CBiLHR@?&qNV#894#VLh>9S;e5_iLCa1rTV_I*au-Pw1)J&gqK;>ff}sCf-hIv@ zC^yE*^?yy^Vh?VK*%u?V+LpPZBpe}_bySN2N2WL3#*|?*gV1DZ?_+fkatnY^As)>D zhJ!UC#FPqgojaqEz>#w#$d(-;sy6=<$F&mA4GBsGi-{a_2X(?7x>M)qI_T4ZY#K z|9u0S5zJ+}@^F|L?>jlE2!nB4glrJ(5zsIV_IHtFZ#NugH9Uxzau5g*KfS;H{i$8!W`3#c9!ayDFP86wgUKLnKrM~m zUlNiN&^0*hnFA!sOzC4+XD~@4c_A_oA0U8BAZBLrbU+R#BuPpfC}7yy2&K!Oh&nEZ zW!3pu%3G-Q`nazWYJA>FIEIgDj&YX2*=5Rt{ZLs)eT9T-ua!mheOkHHLRcR^Lvdw{0< zDQqdwE%jF#i)?Lib`!@nkBPdp+?R0;m`$+uGxVib1CGVungR)J@_`f_z*wZ>ZryRM zIl||11d?JVz?fODPWzjf*FMoDCPYIUPN`&#Nt`Q>FEVzX$e^{)!iVCX84Px;Ti6K) zCK`(}_r;%9vKb3WC5d7BIkoxzW||Umorhc*UyVT^2O??N(-Y*bWA&zpf=D4u^+5$3})4P%lLP;p=;OVWn+A&d59)lokvNPPK+&EFMTafn>&#@l4ljffYQ+iNOr95S zSCFR!v6(qO_iRAPtPKQkVPwl0F(k4>cV*rQNQ4S572uNlTQO4wBm|7tMbPZYW!XeJ zlQJ#rY@7*677P<7a!CRqFo=!Fjoc?m3C)lMhe`FzkRwGu^xX;oUuFzwPr88{@A0hld( z(IWZHzGWn01F}GuAs1PJ2p&jIZAr#~aU-1_Q|e$A@8j$z=F0Nr1Y58|1*|T~H4F)l z&QEyMna^R8D|0bjZws75T|?@do^x9h@^%#p8`o}FY@e82_sh6fKbLF(xdAMT*Poy*USAVFAeL6^TuXGjLvMU$-Ha08*^evye+i zuC@NI5TzdB09$94@`d-CzozWbK@e zUJ66^mTP@SU=qW=@WZw~Eau@88e$0CghfgOfz3#Q+~k2WUadlF052~t$N|AT#1>>S zTF();&Oy!0;b!^?0R#(Bkr~qpZD?{$8=M)%?!SZq-+%H496E$En}XSNMu0%dT;0!n z&V*$y#mNM(ltX~!NG0tI2M|cB-4b#gv$R8@*7llzqFeq{8qGc+;2ZGK&d>(TOo{{R zy%I7J*VxEo6-?N526^h0mHGW-i3bx%lE$q5 zWq8Yzq=11Wjfy~V1Oq~k-6lld(g`;qwl{&tVw-TNzs5`l$^s9%zpou`ERuw(ilgZIf@p;~#4_mujk@hd; z5tQ~1O!i3dd;^=thaH}=p^jg9yJKcFnAvoB;?RTh2`{{1&f*K%lpKRrPCLIzr}MVw zu(wEj`!=#9-U%=fK#~eXkVH7mDN&}#ymDMWB|`D`lMwvq~of?qT z1SurfRo)bj&!`pOPd6pm$#R39I89WC5&j|Lxko$1k}frzGZm^@x-h)cYQS{891u{3 zI=MAu|Gkii!(sPgj+eVh}`$jLNWWa zIy~Li@lC*s$ZVkTo{{gjR_BYPX+Ct9L1C>yXgm9eXwHpuE!BEgo5q5sk&TrI#>BmiQE zVQ^fG4ab^uV7^6&jDa;s<0GU%Mpvfdu~W0jUdlBy^;JN5`Ro$D3fw*FCF2FyL=RDo}x$4%4=)ie4UKsbu8FF3tiNWbdO$bVY!$BoYL+`Fbr5*$qpbMPi$3RvRRR z@R4F9Z7-ePlt9jo+ogxJAPJTeG$3;ir*P_Q&|MWH!miu=ex;h9AwG_+t$HSC<;L+3 zaLR5Y_(Wuk>ZCsLI^s3!N>Gu~Hltm-m=erE$}JkifbAfC2^s;Wypxga;G!ESAul@j z)s^3lsGH84W*j5%Y~}1e+2gjE&H9ok198J3C@ZG?xoX#vLx|d3+WFp+3t$j&SFO>p zx}@n`TRprWEP-U^IDs4M@!cApI}=JdRAeS$muODN|U=W*#uK@` z=3wORf(4zW(F0P=7#skO3fkh{9fA|Z7at-)VgrZ>OhPXv-nXn#lJW5Ub;9c;?Sgi2 z6``)V+>iv8VS!*l0>hkvjFp=#90xQt0G4Yu3xj>Mhb@4?Xg8jG3>ekji4#kJfhXN| z25F{P88~o?AW12imX$5$F3CpwIv|zeN*S3PHzR=Yt09WG!J`#2u|1P*UERW9h`%*Od*h?QK5oRZ{%E3Tlvz=ziyhtw) z(8uYVYe7E`jUAQZ5hufUn%Zf`Pazuj%0k#Ny5@;G-jiI87#j}>-(hzsjdMoHo-M0w zXnGx%_~+;?^ndv;_v6LBSEByu;xlED0+Tna^v!ZFOY}s!c%?8o9h_RXJ15KPL7&7U zpKD3=d)VLXq#PP^p3a5=)&29Xh~o~xbgk*Rw}i&`F|`f4u<|!h`%ih`ODoy)+}AHc z!Xff}JnZ{=xAE&c-Bd$E8f+V2(-_z>rp8Mk-A4D0s5tx>&VDd>&WkwQzy0rNx%7B` z5AlYFdxOwD|F>5$VtizQ)LqvCMEJ+_{J)L;2=`d_|7*E)&ovJ4de%ro5D3tgi(hgO z`fNSq0SpgjiNP)3q|+rYa#LG<@eDx(e1b5p(FNq35?uJsi5%E>QUr>5#UCojw)8A< z6$Z)iUcf~Vn_j#= zQ{upTXEf7ogD+-e5*`<;uZi;oc*EqU4ZT6_G-eWPKCeT-mD(dE>UulZC)IZq_fBCW zjE&o&$t!W+q(UTuFesiP5%z{$z2|BX&Z1eG5Gf7PHeQmZaoI=D*}*n!H6lUJ<%Avd z;P#y?NsMv4$CRdXPD?Hh?X53R`jr@$R5v&MP&n5X^5U8l?k@gyaZ|aA z)Pv=sVReqAS4-TU3@{^qOQTnBu;3Viz!mM+45;7(Xfi^lK;bR9*Bf@kzFa0yq8evQ zK!Q}310^IhA|oV#hz;4{DF&Ef43E6f{`1bm$A;oPZo35`?&o9yhh9CoXR=uik>`;1 zr~-dNuW659y*Q{;s)#v+FcpH}PErJ)ID`pG1|UexWC_IlgXxdBN;SuGz==T-!dC<^ z%L6HtG1P|>@Pc#A?MbuNcat26_dB=Ws|RxAF**SZRlI|Nkk6PVu;wF?4uMVk8^Opo zo(O{EnF3P~Q-qlpD24>BWil+LiJAGwm4Xiy-@(;n@80Fj}wl_uHh-6IoakC`_F z5*uRy=J8>0nar^aVx@~Ao2I!|p^KzzYF}|1sJ{C5xM0|d9W4!?5jM4Bgh=PwoV;j? zA!U|GRIqZw5kvXKf-@p!Ntjwf4o~M1sE{1!eQSN~J#s7~z`9B8LBu~Ck`UtyT4V<- z0p`vfn>l9V{j?qs2vy#2K-$sMg0@>l4jeo#QeGu5M1coXSjLoUd4rNth_uZu}Q2U^k~?OrLF8HMz<|C!^Hx;iI*YT$)?jCW@*0e z=6c*!u<%YxaUq4_$U%vh5@0oeP|&%y!G@SA8)a_b)ZW+b)NUua>^+~L(bc5%zHg_w zJBf_92TBq|J_Cg^2u;1LcW;8vr`2-%t{z6xuPvkd^

    JQR;IWqU$jMCf_3r)j@OxWd*TJ=WU5man z-@Xf3ck_tE*CZ5>f4@=%DltM`Wi|hwP>n>?ab?vd@2cP{9g~6X!kGOJT?ZrV;_JNx zt2Yg%#lAjMJZ^vwW7}Z1i0lRXoTd8kf7jS}OJ=e*J5Bn5#GNY$+ zl++$mxX|JFH%c|Uon4PTYAL(m^0UPYYbPEh+g4xjplofj;`+)V-ElUm0UU7oFogiv zI4FcoVly^*TdwnE$(_#50<+40;E^L?{L>zy2ADV$dq#KIaiIId!eAqLy^zOGNXK|bSHB=LX0v*S3BBp{4h zLa3F}sh>k!4ED``XneZrXdA8qf3bNMT{j>P98}7fG6bMGg2>I>u!52tE zz$FIP=zWTbq5G%iVi{Z|;J9p#h~<&R&WECFx03do^L+B~dYtxuxn0WjjsWM=SoaI; zsmk{8U>wz3;CVKz^V)iOOepXCzL;n8lOy0HPs2ko?3g2l#od@hw?2RUzvubUpU;;I z!=sx802V_JN@}Y0FHu3=xe`e4Z~4iiMGxdcOV^YN19Kz3X2Tl}ejXca@W51%J_Ra~nK@n$8g>5NSU*p7vc=`UpMhPcwt5Ce zxQTxYz%c-X;DdZc@&#BDBvuyF?E2~~lghDdv6s(@ngR$Kx<#uv;uA`^B$bZA&namR z`qyQ`7Z#BKltjDa*gD-jvf4ah{SQz21AKSE$@iS_y}x;$WwKI&3o!$H3!bu((u$Xy znmm@;lr1|zW1g2N;mK-`FHG_o`10iNM*uVNqlVE$7RyDDJG>HlCiycC<1cdX`qJtkxJz%G`-+nbmAhbw z45`QUGWEiC28WuvM>j&r%bw1BD_06J=qIgvC)VBs2~mh*{xM8RPRc8%%TO9xFs)*C zEt#ewzV?k9L#LpXn=H9nNm^irFg^7%A4>{`R`FSk;i_)YBJ7ENwD$}h3L-bolFmhh zXdpe?+3|kfF8Vm^!qABO___0+6Dk7}g_L$cg}zvjL-9l&dNjMDB}42#sC@_P1LB^~ zJtDFGq>Y58(#f)dXu*xcu-($pOltiY5X8Y7u_Gb0+@ z6ytmiw8@0cq<2lSnQT9R@y_^3#e|L79(fTjnJ1a%UCP6TQ6r?z&>N|?^;>w~m6};o zI(gP>1WYyax5k~zvxxWcAsliDuVf( zMoY)oK*8lbM{s)gQ>pA34}3EVDT($c#yJC_cwVrg9u&|Zu( zGz~4Nk_H2xx=G2xiY6v%SEs|vrIGAFk8%Mr)%-^GAl_9WP_ z5D8HQ-VupRKdC{of1%7PAV#*)?)IIh*iJWbkVb3STQ}n((|I?=YJA$TP%p+<^+Gmj zE;+wsYo@f-YbC2BJVIc_2`_W0nOEe-5<^3HhkklX-UhZ~-rZQGTkJPmcx>dEo+kl< z6ar(`ceu@=l}Bq1t=WkJMKj^5Ql0hnOUHs@0s;e>jN^UJKBV#`{Dca}Ep1h2N1Tf5 zzJH+0fdm+gB7sBp{oQY&j*0*vtk!sOHWg1hL6_N+FMRf1Cq52xCGqyJE)gY`%8KZwz19?= zBRyF7d$P< zs9CF;Ua?A7l;=6#obsrmbMbN%vGe1Je|moS4?Au|A%&`BM({wRcmWF3!59&F)?(+SA z26*!S=3A6;KPxeF=5KSu%*grd&huH)@M(j&0H4D*Zz0R%0ST)3tFLtIp&ldf?MJS< zLy&*74|p+1LB<9j9iT{nV+M#|HVJaI%*m?M%a2jcK9r0P;N?^1E27&)w@0Vfo^b6b zG~VTz+BxzuQ)9+Zp^h59ZpKK9_O;PE3LjF%3?$Y1;K-T2@;KeG|8+80#-%TX;eXmA zDO6u>_nCB8!P`{SKt+hzK@DUljLquSyz-}AN9(y9)JFlv)*<4?miN2;{Y2%a(>$x@ zADOrQ*7l!}(%y1>9u0=U^7!ycuvW-zwm>*)+((t1N*MWBkYGN?-=x&{9k={>|3!kU zcZOh;gT^u$>rKo_jh8wPU2?Bq#i)-0-w^cg>6O2|)tHg$ySXIH)A?(~e$^V1*fpPr zRWfAkdz*c_&&b@sA0HgI3OUg8dtCxP^?yTS&Li`+UOWu-176O?Y<36ml>~hY*$9#k zN{pP7wo`1MB)Jp;5$B=t?5nyiK}BT{t54;!Y?Kh!YZxRbc{xMmhS4fB=?D^kbVl=` z%Kl=@P&S{{?L)Vbs1>v3*yEK(>2E1WCE0go9^Y{@k;s(Jhp`RkihLcbBYU5b?ebNi zgOG)S>bY?1h-S&*LzF}?hFt&JCqJ6iEFk7&t!g&bra?DSZa+jVT)4jZCk&H5o7=KZ zy%@EPIU4BLNi3GNnJJ4Hb90qkA{nY3k8!|*3$wIIfHH^!ZI=cvr3F^3gqF#%srAy8 z_6kBY0zzMCp3s6~K@wm><>1N~wm|QfnDowMK+FwJztWG;i#;`O`g@w7T-`E>Ytok! zhuLmW*dV;_08gNTgVsR}xJ=~&+YU%h5^uXBju;>dM%%fv5O5M?#pxXAm9UF~!~nSd z)hRwJrK?V+P=^B{ghP$q%HFLT3;q?B459+2UYz!`5eRZ?8HkjKdeYfBDUC!C4ipTB zj5~~_T2zTB6itaV$XxQsu?ED83=#%47?KOF4ReE~g}2e8Hu5(zg=3EjCd$~%U(|w? z$?Dz`DwG>0W4}3E7T!*kl4e#>COgh$F#{c7+C(j%-l*ArI?BSVNc$2eD~{Tm@gxv8 zzJ~_xK?;WpeI^(J%0-X?agT?8o5){Qckjz>mTTCgQmITcPzYmpf@ znDK!L6tHtAG56Ep2_lgsMo95Q^g-(E4Ps8>ZWG0aYUFswK|s?RhxOz`*i=>1J*I_F z^#47Q9@yk%C!V0!wI+{)GfOAoQc~lk{(l-mB#k+HPD4l3T?2TCKE(+3`T3>em{$ni z9#>A|&q9Zd6QTMpyQHiOH|)X~c&>&`hnAZ{amPTD)3l+VtLF7&-fZ1(=ZytVU=a1a z#{QZIpJg&6ZVjNZZ)(l=1Oh_>;(Z@w-0}a{`qa(CFdfn?h~D=5a)LyO|7QFAldi~} zb?Qx6z-%{@+I#OXuZa}anF;N*7FnD{%E1x(}Lj2iUE*e>J&T=2}?S` zsF-E^Nmgj08SI~Ms9_97V$^r+Jud3!5kfomAWz--?!T40Z<_c@g1VC=+M%x7&dJ8~ z8&%m~wtO3B;LpyY;yMW-nsNlaRT1*LLaHUckxEhlEaxiav#K^u<|h1}5w-Nw0T!K0ot4ya;Q*lJCQlb@yb2#T*Jgq+8y@{bb%p?%i@E zCT}+TW&SfCdTph5NJd!mD-?!4V94~LGf0XGhT%{!iR;D1L!F*BO$RK!nDV| zo`Z?F=bJ<4$1SiXaiY)5c@H49mO*G*UMf9gys=l0i<7sx0nG4 zz~izWAjO8*TP07A{_J2S@_gn~01)7#OZ(lkC zU)BE{KH5V6#>e}8kN8=5y7cb?3H&-}>sbbMDUrh{vbqKNiP?|{$b`Z;ULZ-AKso4MACD|mU`P_Cwy6>dZJ`5 z-k19P0$;g7?K}S+ds76`bk0X2`ywCb;QA8zK9rCYxU_RQRD0Jhw^B z`_B61;6EdwXhi?+|Iz5npd2fUfa$_C4e4*Iw zfMKSYszCNHF7z12q14;LODej~QwbdHxYvGrU87sPJx)z#2W!hj4cB&2R=#(qT_68B zJzbT3z1;Q5)%hn0#sNEBBN<>VKZ0Z+IDSSXVV^+j#>;dAB|GZ!3qVi6{A-(yC*)RvVF*Ab*1}Gf$T6?|f0{4=w2J8CKmD z!rq2Jbm7H?mK}ox_vPkHN{Y_A@_o#mc)EaS;HsR}OMx38-%&3@W zUVgO{B#+JXV0H)Z(Ch6j#z+(&T^6#{jFvMoyOt_VPk8_j=2XF zLSev5F(8mZ_h)F0li^DxpA}!CMTdhBb4lDME>%MhrY8kYulF-p&nc=MXk;f3UgZuN zcIO0!G};?(*|N>;sN8T!U91tjZk1;WYvf3^DatCj3~$jv_aiI>3le0#2SLGI>K)F9 z`tcln&TsL*8qa8H`wN&oLz>*QB%|BZk0_U1zIWJ79}26uIR zY+50H4%!a_wG&3hh$D|Hl}a7gPc0Q9am+f;kNnh zkBlxn4uiW$j%gJ3c09|;W%&p-YPw{7y@|au`UDJwP|EKYsM+}$Q<+>=4YRZUX_RA8 zOIgKn^<2Ju20fdMsi34|SWe7rhzO8J_6XHtM1Go*ebZ|n-{HOO_zlU+&7zQ7ciOy4 z2y2{S3@fNw9o7PXj`YQYyJOs z$9akWgXpuO$FgY5OLDiq?|ARBTX&jRAU4nmtsO~+*^od;9Hsgxe!^R~yL&gaWh9|o z*G1fDA&H(G8cia!*xMJ9=i?>eU}0zAYUAb}ZA3O&IUvaR4|6Qz>&_{fsKse!u|w6z zgHfeZvdGMrn&-LK=r4SY^55FsG;^EiSwl@dVWmVuSq)Isn&UlPp9RRoWcBe^SqVcX z%}hu}#m&F34Qb-|X}9{^e=-Nn^Zxz(%-?8J#tIH6 z{cYv1eAc^LaifM#mG*Pv0L0$xeYOiE8pEe;M3FrxR~^i_BU&1FSV@(%r0H`S*s>Yo zhjHjuWKL|V71kq7mYVa|E3b1xzQa+PT>LG~?o8Vo`}ECTj2!uq`}4KR#oMnQSX#Gg z4Up`5Z7u$;x=71rQ`cG9O5MX;DKdcZ+0&=NUb&u-;y_8zZuyZBq1>}&EW43!TZ-~E z40d6sBvm1|y89ddB&Uu2cAXp604TMsj6LHZ)MDB77==~p8PuL0%~wiIsELsEm0mQ> z0f5$j7M08_4kb*x$@1FbJ4j@$uW1p2a9ijW0Ef?diXXYLaXllZ^Vsbcc zRN_rR@8A8h+widTmhP?3$g6>o{*p2=9tYsO_NG01Sq@R{t4xb~mazKtC8xhT1}^9) zHy9l3o7$6fmouGKw}*Au%>jH+KOF`P^34g~Zq|rmenFvP1mU*+`dsrCdY+BIY+%qJ z6s1^9sgi+gID&{h`eEl)+2ISi&rox$AW;y)gF7}S+P?&X=~1&0q_w|Mw4xjKdFtsQ zE?Qx}>It{BWKEB60b4Lt4U%MFa=irD+eJe!wI+h3fSCx`cc_5Cfg(;@;L1%xCZBr-Thl9G9ub2ikt5|K!PK;Fr{d^Ekf_B_3O zM?|-XxZH9O5yOcI&m^Om2p#ccK3WWFnafJ%9(VS%_Kmk9HQM)r9>X}9vGtrW+#_D7yk<`}L6P=!Duu zf)Gm#p>7OEJjJI_1E-u#bF*+;5LJWDqRBJdV9+@N@wbu07$hCr9IWv@i3i&js@kQH zyU^@F{;kuI8~gaU^m2{cjogm%OPXcoT(jysF{sep>foBBW?M&k%=b1N#Ts(X)_~Ht z8-L-AQ+K7>&(JW>8Gi%iEcKmzICXd$@nQ`ZY1N;bC%Rfa@9&D7!46E0L~0-{;tRwA zA}$Xb40yx1CeQt+Rm^}V%;qN@o_q@FrCvZIyUK~?G8OH*-si|+g3~nV67OsXE7w?o zk(NX!(OKy#MIzJ$r&p4j&wKVeZU*QfZb8&V5!r}PN6q$W$dwVq4fn~J#W}nmKUaZW z)$&zvUj9C)H-pua_FJGuvGHQ<7sTO4?=l>*&_X38JkBnxlioa&$XhkTzn4XgZr@VT zlr*@l@==|ywJ6?3J^a~pZ&QPnzn-NYMnm@Jy8m6@!}RU_3q-m;3M9`xc!o~kbIRQV zh{nd_hhhljy*|Qw3ToKgZ4@-2n#^n)P3ulvc%tLfH7Cq7YbYl3aD#h7j)j~YvvFF; zT3Ob9<&<%2fM`KQ(g^^EJkdxnqZ+P12hke}g~w=RRh8}811-n|Az_I?ID+b~duPMR z%^U=bX0dZ#$^@JpI>24v&7TlcI292^+ysf$WA37;}RuQG!Qj%PgHV<=4rn8 z8}9Ln_^$J0^?3~5PHV@{)?mw-LT#M8R`P2ok*kEn4_f%LP)YIWwYZ{9kpw7`;wX+_ zEQ9N(M7KQmms}oB-qnwwCy-&4V;4|MK7T5KNh&BZ*OO6ZTdKkgnYd|525uK z^qB0ikHs{hrf}m*op(pb(Vvk$na|#B$T=hC^z`ou2^@;@{;#${{G)O2K^jlcO?=hk z${o#iDI$2>DJeD1yyjb+H)J9YV+sb)#@Nk9T9MO^RX+bOLsnk`bbT7k5+SUou#{)G zY2`S50)$?E`*wi17H<1T9^EDL@bdLscp!TYQ{)u2@;PL^g{x;Kj)Z0%AY_s*Bt@W* zNfwNp>A+bK*fHj442hHvUTp+|d8LshhZ*$g#hlL@eCM3Ah`qSe*3TJTuhX#j2-#t=}v*J$P zLL*UyQjL4Nt9i=|M$N27XuEdGSTUy4WPt&(-uPx|fr407yhcPRKkGpKp!-J#z@Rq~ z$G1#h9z2_{m zu8#cmDB5Nz z$O6v`JkUwB(TncR>ZWhUyUv7*d89 zfa;QhC;3~PP$)h|#@Zu|c#naDKhwhBkti3`UGVQ(mkqL$>hv zKc{h-e`(5BwdEr)`5I7vW>ZM6s?vW{qXS!#c@s|FEuGO|_2s(dtaLLTbP5+4qC~k4 z5oQ+5U;O{6lv63`rHv|L9)Z#!N@4{SYGr~mp;aA4cWdr`ldj(jo{|V2*e@j!4Pqid z3z)#0s;sJ@RKpjWE|L39$McumpB{dNoUr0oJ>!`zgD??TD5sj6s$HIzCsX!%XMHaKb|1Cl^kAWKlQl0YV@ zkZlC&=)vfBUEb55KOTrL?5yV>F_pOJBuU+LF=29MLnSCtG6uv4B!&sJ@h%V>Ir7g8 z0xU0-xN=n;{s|okePtVbYTI;W7)L+>V*}j*2oNxMvy{p`*-jwgg#gwb617N7%2QHs zXDA{d8bL#fw48Aoz$n`#$a56RF;K<~>sYarz|G^K1`mHX)1Fc2JVEa^1mZ}_g>nuk zzV(pXAzFj0!EAI1BI4mHMlb<|SPOW9`a`tA{Es-dihoBN-od7Ld0QU;uS?KvC5ZcE zwftK7eq46qgM^)sQxX!n*=Io(NhFgeDl*zI4F%|hzjA8ZI>!t$t4BiXcD3GyPnM#x zVkFTkC&{_G+BDje5kpC_NXa6rur$pFeUoJjv5O1k_3#RjipB<$MNN$+OH>fQ}dQh zRB950Qhe|&R)X9OfLByGoQ!BxcRg%Erh-M{u_8mXjG@FhyDmZp4t1+LSy+0?u3!-) zjIv4uR&etGkP&7Q!@|yXlJ=|1Z@YnTn&pO!FUyP9C_$KsMviAC>Fqr0&s$`=ONs)vy?;CqGnBURwNCnHG~Su zSdt~A@`ok}nbKBnb)AnKff3V&Vc0K}bpjUX}Z-;)2mF1ZX;}MpF-gt4j3XhPJ|sIKHv48fY6( zoF>{Mbcv7=AY>pS5fdTC)QGw3YAVQt*h%L(#5Oii)H;|9PGsT&ArmB`ZU-dWN^VgJ zQqbPBvCXb-m@!N3Jvm})tGrCKG*af()`GFC?8IXmPUG@l>&5j)o(1yfaj8U46x|lHowCt+q5)63F(uPh*kSwH1 zqrjRXI0y`|VDV{tlgxE7BQTw1n zKKK7@EjA&H+~6tSf9I4KBuuUIHgVWJw=+{_bBf`-pAqxB$3gRUA*p>6<{IwhoQ^hA z`o>a5J8iwtMpv-BQhZIVV`T!0?VWM5PThx^k~w@&pZ!q7tvF8!(;IBBz7({R?g zmUECF$khxpFLtsIvh8+J`?jH3=b|lO^wZtN*>_$io{@XbLpi%@sJb&hTMxl4pNI9+ zt-p4M+jFd(Bl(+14_NGxIr*h#_c!)xqMr*{$bxWYkqCN1$nMBh6)z6Rtt!dEt<7W7 zsA7}l$gqXa$7XOTiS)iB(^eJm=mgVZ7tuuCu(7|Kxbr@$$D$m%Nd+GFzJJJW;QbdJf6YCU;YC;sj zepl@=iyn@0;OGQjsrM8Z14xAnXPArWvpBo8ysr2`vLHbeg>)c^IkKc~Aa0bIL)*_E z(ZaA`l};OSUNxSDs(^k3Q2@Ec?ek}d6G@Q`Zzimu4n+tnk%0Mv2ky#syjwGCz@!`%RX&ylB?i!XefkJJ@vS zRtBW=yz>UOF=D3oq*Xow0x^`nNrCa`m%L>Tj^Zq;DgD?yF?!C2_di#gKpvF^-ZF$@ zd_Je#dss88HF(kD;Q8Ld<#e69JdNK5bB1v|pT6<_!mC)V5m|%IlcSnyf2W*q3g-DL#qinHPz?E@5nMD;G-{|rcd-6;0CAc8u{0=@uD><_~A%17w>|Mqy0i`7&* zAJ2~PrrD0d3@Xoj`=r+?2n3LSmsrTer6uqbe9r@j?rxb$b`#cq@|tY_msLgCe!-xy zY)W6Ie7et|lVig)%oAD8dPFE_=Cdgogj`ff3}uM}9d(*jP_L$0aXmuPhHxdyIlYyC z&&Va-*@Zt|=2Rv`0pNla49Ey7(1;eONPyqS1d(WPysA`2B4&`E0hPK?e`dRnga%$%dArbT$F)i)WA`Z425+m^;l?>@OO%BD<1p2YBSnQtE6q1AcIK3q$v=m zbXh&)fMzU1`$lfw=HdF!o-eX`pj@`L_hfK9PYnmIV+JvajWMLgn+7lg=XjT~b>C0! z6%~n%p|qACr}g>^UQvfl;_m(K@Wi?=W&`t^O)NZL=gGOn;cLk|nzEIM4%SEiou_{= zPBrY*+UG2x7#lFTSCR#uSY=w|F15oHj9qboG|IF^939&lrOc*V3W_GSwrWt8GZrgFU!%_MK0l1XRtJ919V0=RZ|%@xyj<59O{{%; zwk0RG@^Ga7cE>X>Y3={!t=qF3cPV5Nk+a03dH3~Y(j>fec@}3pFJE#DadQkdiQ>Ck zxyd#*+ii_8GP;8MHn~>yocFLTNylNxZ=Jf!ZXLJmYf)ipBqMV1{xU|dRZm}+8xE$Z zjz=3tF}T;P=J6$@Ik{W%o?<1kp%~xNc}ZAlHH{D%dlTzzr?zOg&Q0;%w-1!Zi@AH* z1ZmtJL$_k}Fl}BrPt*bFEw{~yhA-kdtOw14x;34Q)MH7-spscU&r2oW_1Dka{BHP>^MX+eFz}FXk zuO{$_7@kGeVQ#MZqlm{CLoI>BqFp88W&m&)rv}3Edyd0VZNPg4x$Q)BANS~&XUv#^ zCvW=Wx?`} zmM*Gm6Cm?gme-(9S505o)w1)aZ}AKk(`lXBtB1KbrBNXXx~*+gvk3MU;)bw(*Is2U z2hml-*|}C@EHZ42=tJC=!94@X2qm&GCL(9W;^wo31EZzwn$oA&wcz0-@h;a+EJFb+ zshu_bFJd09FCA&+=hOGLyLp4~^fT%0uHcDn1ffPl0T*|BiL?wkLJ5oz#VV$`EA`9l zQL5mx?CD5_CSO9HC+SCeGM+x~=Rt;>C4Iv3Np z!++T4Z>7s&*90QVw-zmCiq|or{LB{@phr3~=uG^DZ1;{@pF;cFlh;p$FHK0h98)Lu zBqA6c1}ruXIFJK2JRd)IB5CF=w4ZDY=%HY{h7C3yap-JH|fz6%$~G7%L*Jj5tVl&l4h5R(}o1cfpX zL|DvidA72dT0RpmO}I8_02RQ4A^{urHlFxL@o2WA=lzRI&s zYp=!m{z77o(hKRITVu}WTi911wtRV6croA*Qb>xj=2;uXA`J>&zm(yt6i{Ul%s{U? zl#k0r<&z>cA9U^I-{MbK+MPzubMwa^r1%*6T10Jg|0aaqd`?6*Qqul+b406U&QRXS zH(I`5Rym4zOm7E+E~ouIZ?4`_U8*ixCDuj>Yw5lYg;z=}aeAC;A}RNlJ6-?ej?cnk zg~{L{7gP+h{}aboadHS$Bn+uZEFckaVMz4AsG!taQTiRf?1!7$@M=0cFFk>2m)K_O zy_AV=Ij(JB2W|o|VmaL>0U+qWLGTZrAW;DR9KCC>O)-5IK_0$gEJB`R2g!$@=N6UM zftxT>!qIs}zOu^Z6PG~5L&TIY6v?11NhgT>AsG=#Vfi!!09Zru&XWW(LKxvyqW2<~ z1UNFy3F6L02_UGlNdl%#$l(Mv!f?Q9u^g{q96rATp)@dp-SgCT zE-b3-A7J~phs0=XOlTWJU^a%(*qa8#+8aY)*qak+F{C!y8wSwWn?q=A4WY1XY#T#j zOk!;fiL?!*#xaPH#DGfnxzD6OkGbvR)Tg`m0=rSDpB!%>YvI4MdI#8|*6PnmdIg`< zHVH+c>lAsqN961Juy|;7CWK+KAkX4Nr ztyQ5UZrEAos5zWS0{(PRn-tvyf%Z5L0$7;|a7r9=rOOn_60Ek&VldKV2jgxjDw49$ z6PXlMND)>OpQ`-(A<-mFnDBTOO36F?k5l|hU-zZ$&3^~iKR)N@eFX&NCvcJ(Z1|z{ z9!oRm_;KTsI`K=kkJ`TZ+gW$df{FmCGm(!5t@$*)1SL^@IuwcclJ8y)$3D}bSV1H5 z?wxZpX~9B^IVn;v$7)z-;As#Xt2dJMoX!XSzxgVRH*VLukk0F}Ia46={(5ddSag+1 z_sf6cN3T8+#(Uv!k*3`Ooa4symU3F9B#vS)mpKc_HQ%XCY`qu>ZcFpevjr%dhXdF| z+@Zt_UUk!OqDq0A**H+o3m%CLqVrTg#>HGPZ#7QAlZZcTs{5Ow+?yydf3>psYI8`kr{&APhPcy{{nMk%=41c)8t-GbT-l)u26p1aoxBup)SD5M9$Ls$|J~-KYhUZi+4=6l5~=&!~zh2#YQv=;ZrYm`S{c9umY94hgUnc z+Va=I+z0k>W)mjixw*LQ;?7e{2_s5wucy+I*)nmtfKCrvO6GOs9(AH+k1Dd6E-m{G zc3}-89fh_@TG=|Y?ohdMH*)CZh(0FnEE9ULgcd`rQP2j_4(ZM?)doj|j!_Q85M2rP zLW&rAI7Nscf;+;72rlMeM%nH`Daa0^)e)!NQo~$9At>Sqfdyj`3~D8bKGZW#rm|dB zlN7}T)=16&bgm5?qDh(V8As4 zCF6W?O=JHVyZ#gC@v&}o6ioca1nTlDD`_Ya#{gUWA1v)$my*({rQ~ZXf)gev{z*;e ziENN-mmz{=P@}9<_; zgCTu>q2^qOH7+wmHToP<)KcM@u2Kw{3Wg~(bRM3M3(W4PNmDH_`V3HjK_8+2XBZZO zG5Rjcty6#6@1l`Uv+Uz$nf;*{cYKI@rFkTD-89YnJu2XIYzge7|RQnhLX1Jq^ja&4y!bmJ7#yes(XVtaSVEii-LWA@U3 z{O@(ii`UZGrfZjHz9M&)Z*^<>9}UbksRCZEj`$Q~NHIpj!eAmlaUBiNH}1hWSV) zRh}fN6Q*!0%8*=vL-#Ks$c^XL!QNA*`hsGE4HpvQTMF_NAy9}WKyq?+jp$M5NDGVt zT;kp4GFUcbL(yF(J(80nLYigxNXofpyGhyg)Gmb5bC#8yqyDq1-Zs*~1gz3IA05%< zl9D0{CS>HSo_?g=!(&Tgt_6fba^iwHPA<8!zXc}rtq#Nt#9Vl1H$ZXeq+LeHNOUt` zExG%Q!5fT1GlK!PiU)Y3GQuhv32r>1PB1PJqyJ`cpz^PQJMM7$l?GME)Snz*-mWVi zrjjY8GR+(PsXS;e`qP;PLmSLv0cUvzkg`iLC5R8DFLXNMZ#+|N&x+^&ng(us6 zM)J}*P6m>Zche^s40x-ub%k+v&*mr;TiJ)tB^ zRQ;-8Wn^*38M6S16tNaT)2}3B(A`v!<|#i(Tp*FOQ{*6Ev(<@~Ck`{5o^&8v!3{U& z{jVy~zcU8D&VyURJ0zWPs-wDXz`BOaMC@7y5dcKn!Cm3X`Z7*H%;;{p%wlLjH44R% zTDB|hWTO}Adi2=48ipgYv`N<^yxo>i_ZJ3 z9L74}V{Q4|=RNvupQx0IHa+HhS&&!Cp6hwjtw+)2LBV>-*k|Hu3^=b*7*MdxbeJ?F zOcHBJjW&k%K@IpETkmO;F_b|+lhCF{%DLQeoi^(Qc2vo4I0V6pO&ObfPNX3FfhFoK zE~iN;B;F+AU9y~?15|=nrsUW$Na@7kJc+<&VIyBOe6}L z#56Q>#HJ4gAdiab=c7)L*SmcxNihS62=c`O2wjHIsHohh@iV+%B*~(Vq}&qaILSb` zR_lQJQ)DtEkbnF?TwH(Ls%QTLhd9U%K1JG=>(D>KE*u_L`#-GqgJ~oW5%2u(*^~p# zKdh_X!pHLe!MB1otbdZm4vJdMhDoRsp>>#1F&OA@%Q}G2$tUW^0TD0|XD+FhLZTvg z{MPr~*Kf_}|JG;rcNqEB88pP-hl$H{yey5K#ub|whK9#P7TGSdKe2Q_H2{I%%*pd^ zC;G)F+44{nKGRCeGw%7mr=PC+b3KH1CjOBC#jg0k2oVXg3>_05kH{D=!5Zjj*uM!6 zha$+9&y0#)=6`mg8R}=ryV+8pQGaHc8<(MpO=L4{^F-C6D_MeP1UUYK#bCDn?-s zprh>IlS$gXva3_2@gC5>c;IB8>pp|gG{xM1AjV#!7;dJrLH6zTmv$_xB}_>eN55iZ zt{48=OjIv~DfLXR3~1Fox1gQJ5>81X?MI*YNy1}k%IY3AZ^A!g`(C=0oN!qrOySApjs8BQ--EQD}qOVl*1ar(^)4JE-pFqPuZjY>j=} zHl~%%pyx_C%$>2wHaCHV_Hs@h7%{n;j2?0cqKD=25&3$}W({?pRL(ikki*!*&UU|u zb=27znKCSY9~@WTkD_4zpo9*gu)}Tg;dg-{k|= zMPZQEIW@+|(3cMY?XAfcyWQGp2uJcd=gUNb51=#RjW_ZC+QibQg=NLf);LOiGfu8# zC9|{iari`#+PHkpeCu@ixjGSR0zdQIce-n<0Ss-NCkz}iGgJJLDGhZI2jbpDsMRc3wl&~+_(LHAQe7r|cJ}qkMIoAHT!~XhHtoRX zK`5t~msP@m>RElL8SL7VGFaaEn9q&3ie76~7%y6x41By}?ej5OE5;Jp?H^fYxv=>$ z0NVF#hQGa~1L+(zcvkYH9=+~aOJiQI9Le%J{qDlNQS0~dwRrqiKqTAYKTuH&` zkv?kZNFy-O&z;>|E7AcW?jj5}n0Zf_P{UAPThZN6Tsy;;5&f@=CkVm<0?;5HtbJWL zbq!iA)o^Cc$Y&QG0t4_TLvMB**i!;pMXY*v(L2P32C6pC{5o+O=8(NrB$?8D@5AaR zi?-tL=k9dBr)}jq`s$_l?G9VoT_`-~g$FbJ@VZu8K5n{S!#}TYt)iI(Q3vGfWg)X- zsBjV_;RH0?M*;931920@-cTP8Z^>+HD6Ycc>3X_L(+K|vKBvM!4sUFTS&x8J{Yjhs z^j;ycVu!LktGPd{@d9*z&-j?uf6mKNcEX1Z`4IN})$KhlleeO9b?rQaJQx!fd>2kS zk3j6C;$FQe`co1V5J_^B+>ca;*W%$%e;~Wu9?(Vri9)rflFEq;if4n|5=9!Q1?gc| z+swT9*6?j+S`|n{D=JAn=)J&Qu>TBBW@at-`8fr0)o&fDr&LM#Z%0(^qnCw8S@i~` z#^dp_r|zKiB42yBQ0+z@l01QmM4Ey#^*!BTkme0ieY_&2L3i2P^2Y=E3nA4I1RIXH z;Er&F#t2DvC%am-oZqEb0k9Iq1@{Azp-7;9i3o=@NIKyn2+;MuBbwzJIZ>rRFyAjR zNh$VlZyRN%rWhp_6X3Kwo9}s54rM6g!tfx2?+8!whemgv-r^8TLCIlEIcCI2ClVlH z(wG9VQ6OO15F;|oDua-E$GP}i+uz~zc&Actts+z;4uJ|Gulz~AG|v>>^xGm}!U=#x zOZLT?0I4>Ym_XP3Xy#4flsaWlN*<-(+`F-+yvl2tAJ@E|;f!79U{c8&x(oaNL)vk; zRQlFo!!b;*DucYV3frVtu#^2&w)KoR5}-VkIFL+p@&BerL<*H&VAj1li} zb%imVFU>o4sWn{OzI=|WDuhzS47lh&?1zD5m`253rO0GTWkKG+dN86KcksJEx%S~d zc-NM@4c7F|mJTHZTrH6tl~NAFvSkLwXGH&fsnPB6IT(sH?G>B3y$yjL6=lF@4A0(e;yEK8u~~2aw|<+QAtPYazOl#qJ)C?!j<3;hciWlu zs!%SHj=J8J_3*4yWh6^ay1!-64rOd7v1k0{5I60~e5VQar$*W{Bb~T_+xumsu&8W3 zvf2-K@VNQH2Dhx#XIaV9!K9-qaydb?o&1d4OEancEl)EKN!xsR)1Ap<$>-l4uq=!B zskHd$4`t-88%BOl;>c(75c3G3=W$j!+9$kQcTBWS4l;f1Ml)r;ARpp;;$8)No&-wu z@!oE)$j?#&cXAi3)-e0*(vm;7t7H85bUj~jPv`OW$vqa{i7aOShS~P>C@MAejtz6$ zu@2y%GhaP_522ZJP8OdsT*b?vE;6i57gWQ* zT*Mu5Md%=+{TSKBJ3U>L$NQ~htmxl#gMhG(ItpnW4`j}0{~^+LjGjLjY}g( z{LX&mffuH_q5)b{IB-EgjdNEnZ4p^JoeyKN7-k!K-K@B1^s~p`=zbKL&&!PN`_%pT zJrT>=DWfRfA}$=q*kI`thu_^^3?MTIjfdE3I5+09?j{{^iF4CMy~ONRdtEIF>g-4) zU~RleL<0s5wlHIn`h71S%;?a%=Df=||5g9ro&H^%=`_7e9PcgsayhQn3*C%UzVb}s zoENzuQ^WWlIv{SY#?q<(U{&=%qn1OrP-k$oh?d z6v`upo%4Yr=XWx3ud~sPxwsn}$|k|$zR_osCh!TCrzQReex5fFPd%Fyi8AqB+{mvC z!E##C6XZb)^Q^g-M+uJm?(4@s;HNj?Qe0MfZdRh`V?60+I_?Gu6s#@4Th!R}S137_ za^%>ugVzmT`r7tgrDI3gsNVrUxMKh58OJB7&CwwQ5C|kP1@#6()_TS|9MSc=zDB!p zSUAo(w_Hix+l2J9gam*DK?6Yo8XN{F+in~-T(yZzZS_A=?GECGf|$BAFmtqRE=Af+ zrA5}Y?BKp*p^L3zy6r@am=*iYkqoJg5_ae8L=R*^G8w+OXnJi0IvHw)Z6|}(O`B;? zk#6DiCFMkIhzwP_l?R~e^vdh!AU1XmCxkL#BrWX zgA3gvRSwh(kY1cfi9$I-G$KTJXK5gbOqiKNDJDZ76}Qv+>sjB!7_R=N4UT+JyT%ge z9dcNiFC61|ljt!zNUywkDK%((5$zaTc@Hc5UPpa3lVn3PWp3pxmech9DH?xdvgD}sv>cIS>h`R6shTzAO_3R6Y*kHD0c<2{lx!(W6Ak$viQb)Go!Y&mDyd{tVOBc#K8Y%P_O9OKCWz_Jykr!|s^SX9O1E8pasI~*Y{pQN$r>Iug zGGZm+{|T>2j)gR$vP396$CtCLh3>mocB{M3ZNekShkT<1!$R>|GK}Sdv&k%5SzW1~DwQjZZ(DQ{P84Pg{W?7MAkR+Ow(J-|r zy0#!D5OjRW;+w)J^j{|HF3URZ@tS0enZfb3ckb>~%#N-$Cz+~UW)qR;uioQjSEE-z zr&o>WYEn3RU%xe#b_gNtdwW&SdU&Q*&Fc<%hb>*Y+u%C*wLtf-$wBCKrN6mCZg&$s z+u`Z%X=i~Xu|y7S&&wr$EyYbzk4{@VRyuhGzkinFOl8ZNh;6M=+ATJ$9 zKOcfgH{_vhsOeas`DQfQ;#qtI+DR})H&ESyLyQfBVbpAz0nddSA;xk!WvEGDi0ga^ zCpMaFz}YpI1FdlWxcEkP=NMEqLIiFXO~Hba-Esk5KQllyfV>uCiZKDXowH7vWV0*L zjAzT{_4YXJ=o`BK6U2XI%S_~yM=x`)mnV)Qt6-tW>_P~*PNWP7E%i5Vky(KvYgcgT zA+R-`6Yl-Mw`;z#%$qZd)X=$(CMB+2Ghw#Vf?Q=HaowSl&0S{8DJ3Nhx!BytEqPGhA!q{cyobu&f!uY+z>_V9Q-Iuj};7{ zT<)tCum+Z_wRFp~VO3OAkPDm1@U0mQOg4Qv{9ysWp>-4*RuTb3kObX7Y^6^`Qcm81 zk|CVjpJkY*rYMG4X0$}rPX|WmL-t<3X80_T!VIq zqo&--zAi_Eb7W+%8)?o=MElm0>p8eV5CyF$eZ|7tS9=K!V zGM;-Q@V)gXXy#(js*YozWk|u)nFA5Wte<~&EZizN_O*+?UUn8>ppd>#C-%r4LfSEl ztcMh{j3YZQ*OqZR-ws@x)_*;lZiN=FehbzBOgS@e!la|a9AKUjH^PSzKf?>qCEQ=!sx-|5Dl9< z(`>%YEuFT$H#b{!^pDq&9!NQ2K_hiw!_5c8TJWAFN=DK!mV`m2v-5pLkC9PbseVR)Gup~Ec{MbF7-)hKl+&Arv z1$o;>V30=xnA|QSBtfTuc?1rL6R{R45b_73nFu1igeg_%kkCiBFhq}Z(1;*e5|l7` zVCr=U#pD}jHHKzS?!jX zY_&;#IQJQoR%v#bhmg}O|mZ=t< zk{ImUkP0G!-aw})Kphm`1CnG$GDYCsUPiJlePX3nRY}#xZAm2xf?|Ko>;LB^+nj)p zApB$U$R6vKgo`Lb4BbJIL~{sIQsSpF0N;8$epwqgacOOil-v$(PPd=FcHk#zjsi~s z!kn{3^qNgjq-t^t18=d7b|wLU&>PV z45561h=a5i#z4YUL@ElFZYYQU$D(;a1&Ws=FX&|crDY7iYhr%%f$ZOdo7|TsJg4p* z(l*Ee5_NC8h3r#Eh$VTFhT;U+jpGwzeBUPtzS-(qiWogI-#te+3RLgfHO}h-wyjt| zO3NjExxlZ=S0@`2T)nd5(eBurXs_|JEr5KNip>}`8syY5xYU!woLs=;_4eSqD=D15F=hyoWR+- z$0Qd^Mm)EMu=NNt2u&BY8Pi?=I!fB z(EBWo0t!IFmGL2tj3#Lyu`!WF0Sj3XLs%jY)>bPa+P_d&3_8|^2?IwkCzQ`4Q4rlF z!&EHgViCVEd2T6bDmFJ422|gMbAktS$Z8-IO4xuw1s+I5fEu3jMpj|nk0@$gc^#Rm zsf$9*x#QG*OL_sW=1X zw^Hux8_8YEPTodXZRz_ztPZk4pV1%ZHirM7*#B1-`y3y8Nqb`33zy}_>XHSwR6NwH z1YOotL{Jieo)K>@PDb-6jRh$Xc%|%;ky8kiO{$n#nc!m}MJO1_efnYd*~Bq`a;fi^ zmxYHZwuLNbul~oxAKF*lE9qw?eMz_6nqA2yTN%@Z&jvOXB1{$v9O(i5+PU-39{`f| za+C}|lHYC%<8jMA+RO zwdlbP~Xg?$T#tVP+qbNtO+mVQr<3gC9OB{o$XKt!t{+wURKD z%?cC@Nt>0nfed)*)z=8u+PSrHqq~7g#a%bAS^9DW6t6c;0Wwp1$cq z=o?ooO56K;`J){BH?-c%Gx?dTF)I^W);$~GU!-b^xBBFtiXoDq4G}?B;F!rTixsN(gh^`J;|4{WlT*Cx^4lrxd}WhK9O& z9e6YM3uk&URc2mZdC(R>ojarZwB`TPuk>cuV}tS|q!z`waM)bu7csRZi}w5Xd{Tce z=BkFbDI^UbSZzU`O6uiImEYf~V#OwfzaNyZDQhhigg-oWS7UsMt76ueuf>P+s>R#6 zaJY59>gFt%cX@_^#&WVo$Q2N_ASNJ)3Ak4l}t>PzAy{G?&NlC0oNF&noN zA$@9KFCH6sk$~xdoW>2Ax7t|gWLhIMp$tul3b+s^LV6}>;F?|E%mt(#5Irz`YzXW^W0R&RK1DfF0lv%I0{-N>7quEp zk;yJUIYt4mct20uTdemDkDNZYSGGm>CRFt9)C6jmWX zuj~IP)Kdh5G7&+5YzkrVoCz12iT%tPsCcy9gdEN?x876_mL<(VB|{G@+&4n>OjYoK z>4wk0=@;uO;xa0<|+xA-s#glEIVmFMw8I`DtY z`6n(v-jG-O9W<$&L&FLe7jMK%PI^ANEN5`bNs@o;E0^ zL12%o?|L00Yb}@|=wN>Gqq`@!H<|i9Xo^|2FMf z`dF@tr~4Ep^Wm>7jq)`q`6vlOdwZ2Etzs(IsT5=L$-xlxI2Fq^-lr37s3;&0)Q)N{75gqWb=P`C-0vVU$;82b9(n zKFL<%3UNs5rA|=dY{(gQlf?!?wuP!DG++_yyO}~%L&EykO--scqYNk+5)tV)SXNe< z!>Bh?ur2|7s|gRgMOd1)q#)vjc#REbsXli&thNzb>jaALfBGEAIkK*68+BD3W=2I- zyh1V&68roVOrR6i;g~+t{Xzxq3fP&_M4RrUW~ZO$#-xIR9>9gzR}gKPBD;UG>4*5& zs1(y_A968FB7M%R_}KpLT|7Q{D!42`PN=FO1aDG1Xg22~ z1pehH*9Z5n@jXfBVE5;Sx5ttfuK68L{e6^>k4n}v27a#rbbTHz9Yq`#zo%V9n@uom z;qc^1rrTg#gGu?mb`=9Tjf{(b6Nm#8ju}RWDjIRB5CWhg0l@kxuYa#v@e%HRzg9CB zRm@YDTy{4c?;ulKbt^_&i?%>T##uYe(4OEX%; z5aP(u6_~Q+%U7CX1AcO38GUTR4QIa4FM0Ya`eL|@A`y$Y$izJAR>c7U6+(=>e_^0I zGC}IIQ&J%IWd8A+V$}tHz0R1-K3w{@+~c|mMtvyN;A&XAl>@PHRpuygK5$4F5(WHC z82A_@0bt)Fi$?dRNTYeHF0fF`10pqEai(@jbkiaYN4>B)K;nQ8beN=w7_;Jm4svJH zaAFHn-rbak`!Gf#*-OeyggsBPE}&kVSN^W*fpr4rXxMx0FI&XLufWE_ZJvb)Jm_;I z&Wh(j%*^{Np_#D-edoiKQE2bE{TvlA=l72fLG$zV9WascC4aKBwLJX8Vh&v*=kGuK zLB`T$KKfF8^hV|p@V(cAC8pPrtNkKe^IpNK8D`iA9CN@r&Q`A?k!zsYPY3lzyFAE| zi=h}BO*HZJB3z$i9`&En^n2})tGe6Rn~Z3c*Q)P77joZcJr+;#ILLjMDKSXezH=m4 z1+EpasHOi;!t1|~XeXY_SU-Kan~1>YTPnwJGtJ<1K`Z`rTKmU8y@A$eeedd)T^$|u zx#h@I^LJxw?V%b!`VeK(UXk$gE0N`RUvj$W*FSl_oVivnS5zj}<&fH3+c>UFx^b>~ z-m6cG%j~M;t*qHm@A=*xQT$Q-xBOQ=O9#K{6c#FhIT?-dulqtOvix0V z|8CES@V>%^9CJAT-z(v@e(q7WX=Z*I19jh5eg1ZXQMHZmqpq$$zu#Xr>cd*mxLbJ| zzc)pu!)sK}uqLEHm->8xkOc;82k03470azR7z@DkApYz5J^cOMeCsJwh&*0QE>+OR zWKeqVyRXa6$JyB{P#opzWKAJjfdLVw5CKOs%V=(mb}oFIv{$Y(YWcH7QlbHxrrE)2igS zQDa%`hH=?)s;ucP_H_$M-}sTd^Yw40S~rxJ7sqsF;g&<2lSD6j5RNYD*ZX;o|9`Gc zmV1crIMA*zqu4@3FinlUzpBUB57Pi@hp7}Cy9FR;!xbXtPWs)=XoLKSU%}<42RY=I zv#H9sUp*{8UJy-pzOPJ2CxuTs6Jkc6@oaVWlr7`K~?lL}RR*Zb{9nO3!;{v)xnGgg20S<5UB>#=$xdpj~ z9gleK=#0Y&y_PKp@iJdKoZ!sGc?|AdEZsG|X4$J!ifEJ6<;&qc<8I&EFE{g5c4JarTKg?2zUA zaGnjXA~4LNP@)?-7OGpA>V7oJXR6L8rN1f;f25ZM{^Q>H09-($zalwKM^A5_zfC~_ z-v{K!)_#$@)&_$(UEqHFdgKJ8oAuAw=2&o_WUQTPP6Jqyxm5KjSj{^_)TN=%Rj#+a z-tne!EYp*eE2h5|Fqk5SDLA3Z|NB+F;||?e_K^p^b}wrjheH&$wani+Hrg4XxA89j zH8?eSivnyL=O+pzGqv{Vu7A8* zmm>8R_TMji*5vg^ElXyjHAlAQ6(e3NVFeV0I+>Hazgl!Da``s{H#Zlnx{HZ|*|NCR#{X%#2& zzrKKY$;!uDt5oImWOBD<%c8Oo*hB_Uc=H9NnHL8>6|@tUp^gYO>r6@AdNTNY$r}&h zPyj3+C;Uv^$dLNyATlSIs+B??X4xM~r|Ooye&@wa8cTbB&;Jfh+xVcRfrj{}kFleL zb0H19x$@-MTs=NK{A~A@!JzuVrp#7eyl6osDiso;4{9}S9bY=??`7j0Ou_N|Zr2_2 z51`FTq=4+5rg8s*)nMr!^lp6wMTlRtna|3^L#ylT9D9n2Zq?=D`+w?q;6NkBUiPbT z0rPaH;9Orz$Vbm;rSqCm5QoY=;5n<08${g9y&5qmXJ~f1wl>GJGi*Mcc^2D_>!aGb z!dcKnla*rWAb|l0+9ZBtNI=zqw-lqNBY}t`&9<4-`1rJ+rD}u45rQpP+Z;gcbg89m zJ~_tAnMEPy7dFS$4|>UJy6Ya{oUm&yfK)IjIqMIA*K0Gf?IPI5o+Y^J^m*SE?#haC z`X*(_gxgwi39@ZvvP736`w80A(AJo7JDgb?{D^G4>Fx9+6J`WPBo>*k*t%HO((bV@ zOSaCIK8ADolkqty<2nZZXX|DB;4?>QNc%{V$&fWZ2P%5+jBn;RI|#+n`^B@8;Mh$C&Z*({b{XxWq!ksvq$dm3Gp==_||bgXH}BS67YgRy0zVAEJTj3B$9 zQqkLW*D%uvwlotOO^%F@*xk#4!CC&)Z;;m{hvTM^1Ug)#EiehkW%U;P%C6C#tzKw< zf^rq!Q=e+If#nf&5zlsQvfn&@#Nco|y=k!-C-XY_p=+F;1nqfnS$P?l@9F+Chz9Rm z>e@&-k#E=ds9lQsjCkDN{6q7=Uad?%H+Zu}T0T^oKo< z`?KUyaQzR={qFhsEhVLR6B0_XXGlm6;>5*7BYvUb+2Tud&>+L&dbc3LUL-8SBC!mM4@8hFK_tx?G6_VjlsyX)W$}di#%yU^ z1BS+LGiuSmg=#Tj3_u7A;G?e%>vl_BO{8j%PcPQ^DCiClV6;Ql6b7Cjbd*FCLMNGy zLX61hObaV<7G*wr%FY4c#=J+K_SV-FB_Tt8V`bhmypSWPmVab`p_Ps9u>6M!)LVtd z9X)3Ss7rZ1A#8(=ZNl2WCK6C>Ys7&@|UI6;rs4 zjH=zpyw0Bls}>rBN2xTZ;3+q)MzlmVv@Nx4rCsaJ(|jxG8YIZJ!9-$NQF_6`1102= zTxvhPpk4k?0GA-`vteq2^v!4Lo+B3P*Hs`iDUU?d^D$*@DQ}zybcYnmeaiQ)1)908uCn;BzPpNg_Kt-4wpHf*VzmnN%BF`lzZ>#svnPl?Y;^9#PVI5ipDrIkZ5 zX>6A)1Q^sx(Ck7RQg&!<`>N4!am zb-3t~MkfI8U>5LlzH3bX`FMM&&FTvmonN*1U&g5a2!oe)Vg?xIB_agSf* z<{p246lXZDbbdE=G`1gxR3Px{+&BxGgf$TqaX zBNj$>uP-6JEQxF7&G#;y%L5^sA)e))v$WaXZuU(%4mtQTN&IP4*IF*tF^Ap6P{?Vo zaq)B|HNx}JEnY7xBV_M|Z)IEmNlLoXCa@%-1&D4+6bPUYE8AreK;ySzlQ~;nL#9xWMjG<`KCphLpY(pE4+0j7WjI zf!Jy4c6{%+tmXj&`Zu9MIcJ=9_hfPNeeSw3J`(Wa3?&J@ZCK3B6VeH0x zW2nbL@;|-fzs;83Fswc%eaA1hi&X88fG9Q_K3+^^LofC{q_wm5l3lYhox@#Cy$;3F zb~^KuXF$#+0h}|YWZ1lWMK>Wk#2_!cM{?;Bni=)+zGIr{xa1%VE=(jz6qCsJsYrD{ zkcY)Byk(PRg#Q_$6stg!7LcCCp@d$-K22V7L(ee+z{xj3Ws8G2>K@-8keA833ggqK zGD{`4-N+$(NkO<`ztL0@Xl?J_?e3xuvLM*7EH!FTRTx&aEkU)KJf7MB|9%f82 zLM-}BI#4Pj?`!vqgIU%T0)1RmP_NIgVJP1FE&q4!Px}x2KRtr_r#C;j^sNR^=P7XtMJIBjP-OpmDurDNTl0ApH0ev5ZP9d`*@0g{q6c zn<6QNX(?&X!{DUJ%LsE(Xu7sJ7SwE0P)*%ni!4FW5S%2))II*-xV+aYoB}UU`FALe;;_Wh#P zQ=MB0kL@5=5#+EAk%-|^EKjtBenS?*q@~(r)vnmZBM9>;S)UBC7=)mcm>@*S=!}nx zZ0hKr<3!LNO&x3)Z*eW}@XDthbpE4{%VBqUsbH`y!K^w~DxkSjD1(=H+-gia$u){4 zlE5(;EV0|{vMo%u&qP@YJ0h}ba{7BR1+Uv6TQ`B8*{_V7B3nUXS87*7nGubzD|}a+ z2((oY581bqw=^*S#L5&o;-hoyjfDg_2)||lpA;`*gTj!vG9YaXv2za?KWcOXuM@l9 zIf}cb)WXA;!UUMn;7`bONwG(fff6}3f}EVjvU3`EpySmq=!&NhXYv|5FN$L=zXCo< zTJjSA#rcaM)QO8vrzJ}HcLIkq3a+_t{JKS<9F6>m;K3R3g)hfwvC!7o&N8;}s#0Y9 zm&Kl`PIe|EnPTFmPJlxV(-R$T(TXGz0Ive*9pV{{YG~*i?vqVzw$3S9oC>MSkFY38 zS~sS2eY-}2Q5sSZM@#k+;`6+HCW<<72m>I?tiaCA;xxOa>h6+gj_dR<#Ism4Op%>p zMT{5U6Ku6p&*eX~Wf6Xnr1^N-9EH}Zr8*hM7|6)YX{(2r-TKq7NYySBGHp4jDG-i| zt*!BVY`U<+`X3W^F@H&wW;gQgvroPyR;hXvJX0c(KR58DZv7?+qDrw)+$;Ue{GXk2 zrkq3T*Nmkx(qf@CZofPcfiVu8M-G%v+=VVL-RUG72?6>1e;~|sIh#;l7)i?7qZy+OP{RHCIpr@ z&8F=60Egc`x%^`Bm%fkpeFNI#{xfK1d`}`TVukGfwciPyGbmX9V3(Oh$nj+%fNs6r zXj7R)qvB)ABs%CRvWycTh4m2Zw7}!9isQDV>uz(K6nHf< zi<~q#cK7Twa-Rj4d!m++f)rQ6b3_2F^u=-AVv1CYFv1=ss|E6>Ac%r@askKb!23DF z-0~ew3hl#L7pv9(D_XLd<9WWYE|U|H3k?qO>6(GPH(!U+c~+WVUESk@;`>e&sR}GO zOI!D_v8N7ZGD&>go8RNNjQxI%eI=rw)ki5KBc=V*(EYRO4Y#u*JTHoOL@t~bx7_D_ zHKWunqiy6e35Pt1BdFW|Z9C>lff_!qnfWxS`yID&B4(DlBc^d0`O!w=4Sl^2BWjL~ zH3cs+J|vk*V`od`e$6LaZT}bI4D&!+3bFrBrpTG(D5SqmNe?qmkqFi=5N`$`L|gUgIt{ zZi=!c4-zDKuZ=1MXv%2jQJXYoBZq%OEI0ngZ$?un z#MZZq#AMTVAn3r z@$*@Dvbk##U&hPLOu z`Wz-Z{a1x`UiUAWpEJS0 zC_j?Q^a+UaIT5&+WwcU(bO8tcR|C)7&29g`&z2Wn1BYQsd(PImM|3WQr+lgkqPAJ_ zeUyIGiC#WNDw{fG{ExRG+oR8YFj+iXL$TyUZ4aY)A_z%gpq%Pg5l-LAPom?J7J8I1e5{N_Un`EX7(U|dl6 zj32JV3;^_Ya~#%ooE1{Zq@WPqPG5>9FATMvOSCu zkM9M#7etPL*Phh5m$bt~;3J0M+i-Qg9eR|prA<~v3Qn=t@-b+c<)y)-g^p_KT`zr@ zK@fg`FpIkSic4l)m{`Hi_7l{ z`r14Fg)_bq;O02<&)$Az`P;9`7W#bH?=!ZM#GrxY!$Ko>9&Y$YE-##YY!l+*^E$(gbh6i;UdB{1e?yuJKcU#-G}e!{chs_my?=qajkNi4s8b~={h&HD8$Jr5K%Txf~@hg#(?(pLc z*w=BiCGh<5Wm7LRGr^f7n|1w9A1O4_KT)2F+yW@wI)A=8KiI0K%2^R|_4vln&ZP~Y z!q#;$I`bry6Z~$kmxOHO`N>z#Gwp~(A@)ue{$b8h-Lk(XPG-ar*-T1d%o^xW$>OU^ zCN?_R87)mVV_L`DnjmY$A41_2CqM^40(PPo;ceV(B2O=$gRFii+aKlC-{omD>2b6f zA7<$)SXwvy$uAtRQ~LUOCt6$Ma-EQ^|B+N;=)$juKiwp!ZIH=~jwEn!ySq#tr*wY3 zG#Joe;1E$vtq3?~H~_Q)f{WquB`^v(@}Y+-o*e1f$aXk?*HR@aayAc60G3eme_s=S z*jHD%$;G>KvFQE8zia71%I_f2^icclfs%09t*wsa>+JUvl%=#j4WVnb*|Y-itu8>> zL|r3nIa%&G--YD%S~$o2t_8_GWBWo04XB(b#?(Lwb<@4TK0CBj%hnfAj&kQ##3IDP zunnOCsIp<_h-E~rns~5Iwgl!&d6vo@4|@rK)1+~&J8Up@s7R}UHkV}$6q9)*HPvY`!G^J>>&Q|?raE? z*fYPMDT@VG3aZ3U-|t z85}%%aZ!Ykl|R;N!AZOsWzx7d^IT!UzT;fzt1dlk(`^v5T+LQ4hEwzVeI!*~a@TC^ z=CZ%bLRBrdf)#2l?vdfoKdS@HIh8}(mq*{g-s>;j06@$$bzf_;;bDSJA?A^3#N0nT zsn)5-%U&}dx%~-J)Q_LFME^_ab%&eN@Mbl~<&WKGt$Pk7tQwo`wOc-jg^XsLNm{eC z-`g%%b(QlSXhbt2JkFj;Vc~RMvQ68&?R_Y1WJihdutFjR;LhzJ|K0;*F-&9w#*z=R|ucLHDlgMP#UDOIwwp-BJ9f{?-H<0CUIy ztnnxLNcTwqo5_%@%mi~KBL3IOUU3BaKVQRmkxF_>p5OR+m~|&Q;`#iUy9EL4c(PFh zZBoqvE)CAKAc_MiGj%DQvSTzk5IMvP79=3WSIMI78{WjlFk61XKoOVTUVF()AaN&wmz9$#uf#Br!7m$z?W9tNeG z7HbegV{RD*3yvI|BWU;R@sEkf>Pw@4jn4#t=N=_?pGKQ&Zx*#^)eI7m%K`=HN-x+? zM;Z{Ogb@-f96gDRE*Ad3g>pDJ9(UPqHYT7JMj1lfswH$OMm>^oI4A$sAU)k0RX2;a03I5`cpY2o^L)6n5hlb<@p3@tRM zX>;u5MvNGd$oZU2hCLiU9B5IuuB)w(AQAayh4@Q0BKwM&a#J8+$_OxC4>zmYo}GjW zO^knz?X=QxV5Wq-l4Jm8<%V8PvKi%!DJiM>BZ|afVTP3b%<0SpSgT}*$)^qX{Iw(q zqCvA^w|w^IHVih;&AjH8tKzWaSdQ7Fkzw9?7(JK3&Do~e5aF^I*y0Al8)P|(O<<8e zyRzd`%e^*tt$Ms|wFJ?)c^^+M$`uDGW=Y7+#2lC>YjUg{9Gy*u%HD4|l z7N==w-&La&Y1_C28eF&A?gn;cG>afPX)&tgn3gVtC;zS|{ zMb!050WJ|XO?sZZ!a-=CUF&G))4V1GkdqvGW_fZbQ$3$)2a!vJY@-iNU;6Oy5ReZ^ ztM28VuiyC_stm(nHrfR-){$rxN`eqd6@G%bco|+Sz$yWalOP4(nHi6`24K%L;iNCO zE$Ya?_UH3ecYp)aj1ULO7y=N!IKc=HI50>qy963VdU8=QaG(22QC6SClJQtzeRvEp zc&Z%zrUGv*rE11}d}SJE0*gMw4AwU*ZKTk{GHsHXuu2~IkVJl;1%|NUFP*2u*kP;Q z1czx~C8HU|^l)mcbf5WY;ns5W?R+s?=J2Wl?$j*C3Z>uE{_p-hMW+ge^Z2m3?*qZ(>@Y2jdA&~>KxA$}kc8%a@O1Z+9Meze zxp6GNfI}I1w9G0E(i$NtYRKFN{V^@#5}FenNrUG_h5aAlAb{4FG z(zPFNeHDFA^6*rr4RZn_3txn=;6GdpXSi@b(xwbb4dD3(ChQPki$6jlqWx8KxWUre z^`B;$UE{{>)(6NF7bqqjHGhVaZI2%l)m2jXUeB*YuFblo6rA4FHde_#dU0Th8FGo_ zj^Q&RX8Qs-^LS*Ap37(O2}-1}tC96)Tmggx=R}4HVh|&m7a`G&097E%)910)i2!M1 zfiO4Ls{ql)WZbw-Ea=hQ$gNc~8Ww9J0@>L^mxv*|*x1txi#`$ZxvD3-uWvdJzYKx<@xGW&mzkNcsQ~(|emQ z_m+%^-Jh=ck=w-Au5;N8`2W-g)?bu(lP#VOQBB8wI;q%uNOkn)_T{m=l%xL$>}uE zT15|I^=o0G^}ORMru|cEvGTrsmM%~Ds=iYE%f(hkqv`E`YV`gI_mUouiTfqw4d(1f zca)n01LCtSSH+IL5>^e{k-7jt5C<`F^p}U&CT&sK7FIGL&Xo6XLs%Z)?7Li)jpZZJ z+qd~imqWxgdLS3r@^py^>1IH|o@1BVYqPNg_g&YHxu6F6#O%mHA51 zrSktT;;TCw6aABwdA(-c1aWs!B(v{`Raf-h*Y z-}Ek%bieMGEWC_M1{_`ITgD+96LI7jW_xvu?I-V+Q`AQqI2Y*kz5}Kgy%}L8a`UmW z2J{C)_hq8v7eLIs{rcOUescr6g3mDPM(dBHq_^_a?REM)Rpw!>pL~z6$u9@fCXp}< z*dg}jK$Q)A@7_)Y?ZYZyVHtDZX+Aj_mE69$c;OKJjJOWfv4EnWQtM%W5afr6b;&~@ z7w*$}=++z``wwQ-Q2M}*hCl!(GIF-ZdN;A2Oas0s0uIqQUj9ZUjXc1V{aQ46Q*I-- zs_(=s4Srk7mht+!!`wc&JD|PA(L8=B{uSN%{xVvab?KK-|BXles{+7EGpb;Rz5a~0 z$Ps~C#=D9iaa-i!M(^rx{(|a#UWEv#MX4AUkut)9jQweM9W4~)*{`kqUwwF0=Gb=! zzs;ew@^12PEw{a(@fe}%%gbvQ}-fok%*6&bc z^FH6{;McMU%j`5xGuZMNa`C(9aEOP*tcJTItL11ba3OJlb-(hf+A*u9+88MInu66- zvdHi@e+s%k1v?cpxn&EnYEO7Wa5=lrK(0qx>MJF#oHO>R*Y7{*?rGoXc;(@Gd^!0B zV2T$!hwHv`=y{WWl-+{YUpSl*xXb-`Tc-E=Nycb^ufx;&J9Cq1bUs;_L-`M}r>sj4 zj`DbZF<1uEso?)o@_Z@g3bwv34CaW0yb!5g)ydg^QnJEh>B6&DJ}A!NzSK z;eN=9M5l3K52SiVLC6u~k)CdO34V;?A+^WCYUkX{4CdSK+J;ej&z9Y{QuEsB9x7p& zK&1y`3jG114^E^~LBoEK1PMhs3<;&fY;txlbk1)A5dU|`R+qvqI|tG}|6ADkop9cN zOLQw@xjDjTuwT#X^RnBoHzygYHxJ3ieKQdOT7b%p&SeH2!+>hDwJJG>$iHq^!mho* zcZ_e4ZA36`8Xwb;q|MU<4BZKK%P``v&(kJ!Tx$PS3}ceb@j#*|3sFNg?Gu;3j7SVD zarFot%W{>DHBXrM=> zLqw7M=kudH#?X4UvvnVD;oChQCzbIrDDltH$uF=hBNO_PaNBzRXvNy+hybVYWGnGjvWpgh+FK! z=K2qctnroNXK@5pQyvtb< zgNy5_T`e6VqlNp2dNX)|c{#U&h^S@-2q^c`9j-QgQZITF+vX%@%<#07|jtKv80 zrdb$fLwAIDwh8MEoRvQ2{(Mt51qajbU5Gk8Fp!26!v8+;5%K4dwPDR-1n`nK_2h5=kY)YR~|o&!tZ>z80hz;1#COr zx!k(J+97-eXcRtZ>o{c4;m#28n`K7O%G^n`Xrb$$|h8bU)Tx@`HiZYX}jkp&B3~I))P*(JYwlU-RLi zNcT*S=Y4k4YW3i8lm79|@=#fbKX{B~u4i2BGFvv6_ACp4@;v-A)(fx*vVz}NWh{Xg(^eB*}G|6S` z+!uNvq}d?AA2{n~&D2NSf(VTG*pC!I{@>Tnm3{tJddzTstZHUzsxOOhY($+{&stPk zwz2UdhrY3d{@CdfU+HUJUO!#)v1mtYT2dAzgXJ6YO zIES%b%cFPCW#?PzeP^eR&j8BL{n5%&wV&C5ic*lG+m6EI~koLg|$!6?7`kmQVzL;}W zL-CHXs6Z%q;7eEKe1v5;coRZW(fz1{DmxmHm9omTM|vufrm zX2X$|U4h;;gd9J4%J)r`v&}YLHZ0LIlmj zs?00Z!e+;Zpi&@kU^D5In>K$VXnJM;84siW7xY{K$#0@^e{1~ygxP%*kNLNe0!l#t zw@hM#Ki!>@bW<*6K5a!H2;Qz_hgnuFY$6tP?%sW9)V;+diL?Rt)c}>bch=tez>NaY}1ya)+Cd2fwV*VvP3?8+cq`C3Ii5`feV4Mg;87B~z|S$#4GJU#hNMspEqr;fXWI=+dmkPAtJw6HYWxxO zA>$awj@~{k0|*j44p~2FKut6c`@SOoU_rRmsxSxzfLX-#H;;7jiGDO(2&&Ni3V^|; z9~yB4Qcb6v)BQ%5ylYUWA)~eF1bJdh?%=+r-bvUf1bca`C{7LNL4z05;%_8sbo9!w zn?x_?dWKVT)Z_EChLhM+hV-g6^pYe-!i2)2!Y-JGA;F-Ta2_)PFL-r$Xr}?i&}}at zq&t~45}76BcdeKG4L~ab*aF|F=>2#g%qZTA9HR=_APZdmEu>(BR^kwVKtg0H%DiW= zB>G!%y<9W}f&3U=Gy*A zp~y(cV9FMKpajWWL`Bk6ziC>skU&@y(e6y$?yOU2&;k7O6Xj&3r_Dgbji`?Ho4#~H z$ZN|wSB;QD0EjVO>5E88O(Wm|SOB3?CmcL9cm>c}#9lneCMdkX_IIm88%X2jh z>LnL-OHK2vtnsFT^xtKU!SRMatgfl1>UV@@y@MP2$akUWf-_!(lN39-opTh z_3|F6Pfq1*APtWKAK7GgUVwSP&?SDzkI_Sf6;LZ$>0fG(IZOd6kHKoO!BQnM!ih}} z^+3@`epZ#g%N35GYAZ~>-mNa9c2RP-zZP`u)@=|T?=c@PtSABwVCYN;JQ4)lbp4)@ z5dHZEzuy{sp3GcWY~wH(N)SW?`>fpj-5VlvtD=A#L)ks+jD6hEfw~HS%LPzx{}-1o zTUbGrMcdAnuF=Ly{_ZC`?9mqZH0&%{D7ud|TZIaGE!JhaDC2t7(!9ncO1-zmV;_6H zrM=Ov!oz^IXZbzz*yg${V1VNDn1b_l?{M_EKcy+i1d{iOx8D*ffrR|;n|+h@?myqL zcE5j>mo(t%vV6eUX#PZX(ZAe0l#(!6a4R^0leOe0rq#nm>NA%${G1eVR=(+zcm)G& zxja83?Cd8Hzc^J?PvJXG$S8zENzOh=1Nm!Q1IN63^7!y z)&{AceMCpv!h2<3?I1K}LkZ!CCm=F<`vSl?_}NsVlx8JVfzi_QN^Qnnf=B$mk5K=K z$b|7HH0H&#*P=^Vf~;rlf7ow47s@Cfl~;0COqY2pTEb#r`w|KI)p@VWjX36aQpWk@ zKP~R}3-@V(-qNSfKb5}hc6Jc1%v0rr^8KL)gC08ZY@&s0@Zt>fDvGXlk%nAC-nRhd zu3|H_7!EV*5pfLf#Qf;+`nDjDfD;NP?x-Et&lG* z{XT2fn?RUf(_-YA;#9Q*cSuM6LpBuu1?I^nR~k%}pOCkksbze@A`!&D2=_$2keM(SUSp^3$} zQ+WSK^^rn0G1lK0`e;X-Z_UQ548OFP>LJB3(}dUOb& zMLI+#?Uw1wDbrgfl7M_w5d#CQvt!a~1xL-KA*YB>4#AJ7Lg9jWRRa)L$#7MO`H7(O z@9P4&qGun(aShR1OL=hiK`gRXOo(Yw#P6xHq_>8#ZnHIeJa2mZjfyP&U*?NuW7G_M zm+kMb86b1Fr~Nh4$V-tsn8ytG*Q zvl{wGA0)dh6eGgpx^pQ7RDlc!=(`h?uc+8Mj%h&ix z_~`JgW!ab-!H*{TF|{nRp%Hql+OT$2{XBpi^7>?HIgclk*iCQv8}q~LF<+#}hX1`DvJ(mGPE&-`?tXdP^3aU0ikK5f3jK z{BZ4LLNmgQ{b&Aa0R2FSd?3Y#?0tH{28eHX4vlB*{qO zVbiHw$YONHZjp(BR6ERtCcpq6bYub@dDo7Fe$g8jLf-vgjw3E3>7s+#^>@;wp=kpE(YLm;yxI{E_ZW_e0>wa#T2KRK8 zi#c&bGQuPNFUubOp@)Zs?y1&=x@9&wbYxhC;+&Yn%ul*4-y}e8EruvSG0Tt>u$Cec zqvtFcFhH}A2%pT~lh$vyiSgmpkAdvOzz6R9Y{nO)=>F9g)9e2^uYvMzuA~c*ybmp# z?5CU9?DF?Iba}hWv#`I1vMn7bw*(L_yo2AKcoe>WxwS~311o|7K}nDc!ZmubaBz}O z%ter3wkd^ru7mzo84%sBjHrMRKWp9jGn{IwEX?slwW2Y{LMU9h-LRmk-?fw(>;V>Z zq)}uaBKR2qf+f$@i9zwi_c@>_7$Gdi(@WAs0D$p*mIBS>T{c}-I%=W>E0vJC@3IDg zS!AUwfgMi{%`k2eQA|Wx@RJW)BT&L98$x3I{Rsu_3H4LNbm1}Dl+`N3;M8`+xk2$V z+_<~QHgeVelJ}~-T=6=b^5gxi(Ct6JyS2$>S1PgC{KX&Xn~9xU&C#QYGoY|UF$G$h zgnDgA^;#?IW*FQoU5A>T%(D6HnT6!z!@>Eemi}s445b-UnFNQZR3yHd6n}h_VWFC0 z=60>2_s<^)cJvoqx3l*B^UhmiG}Qn5DS(AhzU+ESFZ)*}ZR3iK=`x+a$-;l$9V?s~ zyfueQIOG2c`Un!*nc&6YD#O{uEvu*FkQ;F>QjKVtD=MKiI81*werRYdr~1mV!T#FI zIXyqAD8aulZ*CX)_4U>1O;z3Mw{lS3G{e9>`oEX9Zj}#`((N0>!9~Uf0$CmH*^WOU znZf@D4iYrJ_KfjZ$KABz^Zz|^lA62SE?vjXTnNqJiANvFrEGX6x0-tG;_vfvS$@{dvw~T^g1Vn+$dX z<>tGOX*-eLeKUqWroJoms?TlNn&hL1Z$6gm^m@48Z;M~L`AN#zvQF(&p*HD%+3o^J zz(geD)9-9nNGbo4el%28mg#BnRog6A+lBB%($e3W+V{!+$&seeb(e@}o3&@nMdo{) zRQg&4Z7AASV2Obd5b+up+cL?`-DeJMc|Q$fIjn)hJ^vFC3tn4Jau2Ynem%{v#*Ot_ z-1nU)SWb&Dnf(lL3&{YTa$Up*yM?n3-$;%1ir#PwRax}> zNtU^kceb8uOnqv4xctL}0MPWGv&VnlQG;37z6wi^)?id|$9~M7?Ei)98vWG;61>uHC&6{zOH3<-M z#YMVECPC~GVKdAX6Dt{Q7ZG5=R?@^Vc`3~mjACY!GPfAoElmeF&9+5+#Wqg$nsTmg z!86&_Ra=9IiuwDNsJDvt6}}CgV*D#l657Md=aNQgzp}ie26?&H{Yyn4z_Q1F`>Xv3 zg8*~wrBvC+4M2cLru|jr#bLKqryb>~7B!jc~tMdj?{~Rvy2IlefRXa%ov!sRkl-!=h zIvt^3$w5!y_7eMaZ?7v!14(2W1W*VbjdI4M)jw!qH3t7QMR|;eG5^~+1}6l~fGbQs zLuJHQOaK>x@O}9CI=M;ku+K8!u}5jJ-ZH)fkH(?bkvC45$$h5)*dWCb3W(NRWh}A`i$+=z%sF z(gpen{j4jZg&P^(>81s3LfDh=xeKun(ki$!F)MofoLPe(45oyN2ks}{QWd6%DI@>owkb zl*2qH{tqFuLJ4yQ0kH`xU5|A`8ohX{p6w-)4`^?sGgL`u{GF7t(q;80__z95f2PPRn;HnCt1qJn#)162r=hkKp6<~*fRA$W-l2_P?6h4RUb%9 z%wng&i<5NCm$8!@753L7`zf2^BDL@JI{A`tn1qg(p=cmM0l!IdT0plo{b~3wh+(;i5MK;zWA_Q)i>{c; zm5NWre0?kB5)F-3<6afUJj zLO>+X!4UP1N~ShJ9=gtlVY{rG7#@s&Q!P0V5$t|^N!|j7e+f901~2aoaeF00v@!Qq z805I4FNA~GI{du^YaU>VN;OTkXL_?ck$tY>jm79y{Kd)>nAy#wNyJRkC7iu}u9Lxm z8hnIa5I7nO_9<}fWss@fsQaOGf68SK+f2XTo5(+2^L-S{_`0~KDA^vVE!D8BE_~)3 za0P!3365qbxmiyOaF@NG(kY7v`q$(T-F1Qc4VA0E*`%_Nv07HZ?9mn|AJ9D$c2Sl$LtJ+n;r zFxn;=)z>&8tAL*z_Zd)&)*L2Y)G-N`AH4~r> zKL#PJ_3^cyvO#2!afkEg?BW>c5eiX5<-Eg{fQbl#033qR?s=uT1s$P$xgu%WTm(u6 z5<_B{`H0z8`l=Zov&QeGi8^&A9v94lW6c~93EGTfndT1PKbpV{S+yg*w>W z!l<50TuoAd4b>%By8j96m+y9vN+Vpzk!X<+$E8bDXqu?JDA3T73g{?sc3a$WDHsM( zuDn8x6p_CVtco&BX?l$I?TEl79uTzjfgt%-hSxvL<5tr4(S~EJM7f4jhI^%qEV-^y z71X-SJGh@EY0MUY{TQ0s?+ks$^q>B2GA`#)j^wc&3B(vB6-*#`6qg&{I74b85&G0{ zf48aSHs+@5agbzU9wRe(j7_Z9ne6eoj9Lupq1>`XJOpoF5;VKRrM3~un4O3d=hE1s zD3Wb3RNL2k8(@37`#dkWkUq5TVE28Bo1{Jiy$6{`%RzLF^Mf%eIS}&m0U(h>$wGd#AsCE!^kcB5ROrDicSP5(k(l`r7Ww!&xq`=&6 z%=_9x&u$jYIj{6*Yf8hbi1FXekkj-ZsVxKmNcd+ZFW!KPO9%dU>8Jh1^$mj+O+4^V z*ncuQse?Q}dsW-~l;r*BxNU#Hrd3ZV0~w|``x=t##eB1A&1>UEfYY< zbR`gHD0t_5sGNZ|i8P9j{{5F?AF%Ya`yzor-vx?NTD2Pn*tIBgo z6NWu{o)5?wMLSlC$|%W7Y9S9E z6OHKxf7-DAYBK^3KsM8CV+J-h>D)Zt41KRtG*z9CdPP!rzhh~Sm7TwJ8E+e-i(Wrz zFFO1kyyfIIKDSecann`E{%Gw#mlsu;<02r2Hbc_x?Y+GYB0la?h>TRgbZ0lJ zPuK9GGw&lZr(N6T0|bgO26CIznG9y?flbWLPIgCQC&O9W>*{bbp4LI@@1mF;;$9WY5F<5$5X{w zDi9_-PGW{9+Zga8<30Vg6YO2IKeN1hztlhN?~O9P0^X&%2ja}oO73{}OWd7RRRmK4 zcyJ7@2&(Mh?~srUL5x5pMhcM|BF-H!S2ZJZCa%r(M@`Q3=MFNe%(BL3f3WtIN(Z$C`bKhStQNQ2*XUKC7=^;T;01*vYaB^;C z361*}JX&h$9`tNwS4mqOgt^5kaX}ehkL$$$jRCL>)WX4`Jm#rw!y72+Ufh0Sbb4Jp zE!n%}ytLHo20H%laotZtqvY;d%J6f2uWSG6a{A1F*1l!48G~$K+VVVDc0+A734$mH zh=7c6po6lIO+#Ht#*g~a`aPW7QP$DE_(Ly62 zOr+~y3EBQp%sE7Hqa0sGhxmMjxI-)!ul5h%9z{H#SY69Uh-{KTTMR`InM zzf9C{>?6b#pF&ef7!h}<(6yW5f=I?@%t%rQUosbgK1DLbnv(+zC( z1}eq|R1As$Q3ZpQD?DSMnFxb11_C4^Bp`WQ=QV5j-%LcWMQ1hlK0IY}y5VAhgETON z0)XImLP8Bv@4XKPZk4E1?4cFAv$h0<2$Nn|yYiy0!-on80t_EDrUEi2GR=*p;Z(ti{N{3VD|$F?-A*VNlVyJJivb0b)P{Vb!*I-A*9XrQ zr*HM<1KH)7$5w!)Rj)L(LXPSyg2n1aO0CaEq}i%d31w86!~QaUa=GrJfzE*Q^FX)u855|~@uct(p6qOt{SL|EZL zZECX}!wE4Rr1nb45J4~!3BnaO@LJ+qCaz7=5uR`-Nsb;K{8^eyI2!KFl1OC9ERaDy z%405J%SoMufP(rCEc}i6hbmK8C`MwOYdy;vER{`P?#iGt2y;DclUi8 zJnMKZJEM%P*W_g^xijrp&)1f}TK&LMEjU47S-3HlE9YZR)k=qq{PFIQjfiB?<0Mg2 zH0Q39Eh@^0+1u7C!<%-(drX!N^v7GpWcvK_AG0gvMw+G6#6|`chgu#@h1G23RRnE8 z8x6#5P7|K&CImg`xLew`vh7nxCwbC8de8CgRl0?l{&XK3FmYM6<80@gIfAwvwTPiwRkMYK&@hG%TW9TSk2#2}3{fVyS8!S?Uqj zT@7}>e17FT!zVwB|DJdufIus}s^+aSd6-Ra)`jVFYkXgg*NgPk)J!@@8f~5xDV>kY zJfDXcwYU6C{R_$-R)Z1qqF?&Xc}}GVHIDnrM&Mg(h{FZ!?jkX7x@r8m$xlKquMNVj ziC3c>LOs)?A#2LRCK*)8^LT$jWBvqdF^ZR$3BsBSrE@YD`Qjn#mmks8uHI zPTz?G**=rS+{vS}SD}yWvoj$Z{7O3gErd23A(sm!^#k*io6H-s{Ibl;H-9Fub+``* zxHcZMj-HRn|9A=qN+V1wOAz#Pai4?p$n6$H!6mHvVhj=b5&}h;56r$P^W)X@qI}$p ze52i`E#naWd&u#bQjWSF24lN@MW>)dhVQj!i#J-ML8xqSNNx%G{U8^R2~haJ9N?O< z$99-=O8uPYQSqt3^b=BLt0DJXGlFXR%e0b5$oAYfGU%u4m-e5hOPysgk@zv%ZYM9= zc=dK{gUl`efa&Qxlbdw#zd^V{5r&xN!s6ZL_j=`Q#1#;zW!SbkayGLdn?VuMGx2_d zLQQhFwT&!`KQv*aP9LU}hY(ieMnxn4Ac2H(1l{JNX&Ry)7p30=i7q;u>k|coBoR0r|bUU%EJ}6jZ zL;YevU>DVkF54I3^-pFX9+`-@9eL8~eyGyOd~#ULy8hq0lJe-z_jF9CgW7#*O5}jG zMc)B2aFRd@4+rig=afvSfJ6HDJ1itRJ>hXDlxS*|NQj0MLrt>B=CSWJoRss7R}zMk z5L&KcI9S(cza6r`U=TnGLPW!m3^Guxx5f;Bg!ClK#9wy5>IVw+m%p1WdYVR#c@_}_ z!k7LMpyvk%@BA(A$sAA*IYtbOdc8@Jt-K^q*1RWMCtfA@+;9H8KpUzLLO4yx&q#Qm`pl{3` zc!rjAiyVP~9jJkX6C1ly0C?BOQeIinNQv-`k>dHS7>D+ainLV8E^a83(&!WE_FK-w-zZoHv?lXEWR^fy0{%rYaf0oI*8Jd4%(_NU@%rqt~j4BtRg4 z0))1bguW1kB29`Hugr}=QaU>$l)lO}I|46KOgco@QPiU8VcgQT~m2ekMAk&aW$$DmA%#L!RCxGZ^6$?RSsOP&aprdNJ9O zqqGo^%aIHis0itsZO8uS_v+XG*+0qT$(*@oh0c71puUQ2gByQR9p@<4faNhiYp(Ua zrmbz)eQ-Rb)1iBdRnOBez5Nlqr@nOeJyq*s$Hd|IjK>;MaKMVt2dDNxd>oRkgJWe} zSJ$kXMkbU8VsK1Gm>)Z_o9Z%s+An4P9^c`O+{Srw7wC3D_QdPH|0(!?=s1VLfcSX1XfB=CDiP&xa zR+wh&pLOyBAUGc2J23nu8b|;o*~)kK{__kUXzSq0!CwK;Kpw-B6>MYIMl|-CM09$D z3y49KWsUB!x4ZkAvzzJXzavj4D;Mb10pr%Ln*RorTt9`}bux6Y9D?8)V1OJLfLVl? zF&My90oBNa5NI_tfqn=W!9apw>A(wu_q#athswxv3!`}veY%;DKo}ABpplUCyIuHg zuJfL+A13f=7O=fOP}hR+GdL%$vhs?948SL;+lVhKcoAb`f#f#<_elP_(xUDmMCLzzLwPdJG?%qa} z1+E6|flQpwMH4JDm2#g1)e2jYh8x@DSJ6XV88#Vzc1f~Q0>>GLPyp9ayYgTaaq27V zsmQX|;dtFMqrl4$D|ajDMV67={vuj{HCu-tO2E~gctM(RNcF$9BE3`6tIGJu2HNC5 z&Bev1QvW8TC@~mJKwfT<5guCctHpW`N`>82nh6BJJuP?T9{~4D;Q$j-S}L~Y2Cark zFc(c2n-S>v`kZmWrFZ_;@T2BZZyy-v7DrcmF%-gQQtvkd_Mi2JLBEgJX zE9c&;$iUL73`g!?^2M4@xBj?Z?89&n{2}Vd=Df^1knLwZ;_RaKL{w0p@0DXE~+Ed9;3?ih^AHHhCr1<5mdCXOOdM!(RLsRE721D zq~ynt8;DU4MQE{NK>AihKu0V&T9PL$s-JI@dXr2YBKHo_W)Bk)zjiUXzN?g?6Y(Pm zd?N-sPW!}^XrLDReI->PGV=B)gC5UovuFFn}2nAYni-bYupzV6!wP+%TbR6JQ+TclRFK324fq{lJr?(kk7frIiK+PVvHmYm~fJb2tJflM4z3cVs~b z2qBYFzb}fqWDUfI&n!*E3J!9w_He0AtN%E((kbL@)me zj`c&R<}ip3K@lDQsUy$2A)-8=&ia4oV~B`nsfX6T#$i!1e11(k~()T=^#1H@8)$#MZ{F`6;nj^kGHowHA z<*C>0rb6_#Qr^XUt2=XeMThMr#l%85|K#PB#RwQ&mCt%yW zXO!Gt4rKnXNgKOKlA-1cQ3yIFMSe9w=#V$|>;9&R7}0DZuO;D`X%X3vF|se$@f(>d z3Rb2-;t}1Hj$k<4nr=MH{>>D{O2P-uGCZTWi#l=SV2Kng+R_r}A&n3N(()A#80Q}?GJX|U!lsjuW$q(PlO&0AQvOs0zcGKI zKethY!?+GWK(*e_-M>(a3rvg)Tlnta5`L<_>fs<^0TMzQ&a3=Ah_?Oj9xH0_tM>083>u@P(@km3wC2HU8MU zMOB92Kvt@ox`M?>Bu=uqnWx-|HR`gjNy*C(C{f6g)pg5n$a<+Hk?5K+YRztl&G=hb z>9dP|*d#l?ZgA#JR>zS_Z`dz0DZ9CgN~mP8%49&ly&k7KU zvXk+sgh81TbdHS~najB%UhKp0-rTp)i+;#i&H0m>Elss&;JhBArsTSMU-Ln8s6Sa4yzT*n#2 z3y4<|L>4YVK?%%&z*zyF(qv&3HFQy95&D8yXV+IC%_IsU<-ZCP%e&UtfUd$nhbh-2 z=UMcf%hqQ~7S+VzA~A8I@JWnRbQwStZM2OH+^#eWEzF5r%j1g5-sr6mxAh!`#KA1N zj?Z3wta!{ADqkcbnHAhhx+)WG7b*$`PX^c5==s#!NWm7Qz> zC&TlI@G3CzFBJ)I!k?Wpn=jsxipMpqH0qM*W*TS9l`6OH#>!>Wa^w(T znf$yvOI;~+4>AsOmGH}%fdK@Cqs3Q=2QbLZH!y_oK`Ym|)pW^O=zw7l5i!p4v7=33fGD0C-e5H(i3xD7C-0USqom zOE-1XYRNXrX2#Eyjdog7=eF^bC*m*|iVqF9E=@M)1XdtJug|KPU+_<8Y||zvp4`oc zW1J;QcnV~>w`_++!q2lsvsVC@ zZJ9*{^GYb9IulPalcYf+!;C^wuRmf^LY2#8tRTCE-)mmjrrBX~s(`4rvMv~P18Zac z{O=zZfna^P*=SJ8UOA&!jfj{%`u3Gp+z9iVeo#Thf66>7NR{_j@KmvuX-&?nX$RrWI(m% z|9&nFEMz7x6EWi1@z4!IQJQVgqQLGRQblQMY1cEwoR-b=)W{%U?J48W_{f!kFFn&C7J+dGdcb02gLTZIal1M_r zF`giOY0oUlQwJ?MZiLjafc%!#N^1A0V{wQn$7zl>DxDR1=S%cTaX;8lM2JOJ!4LS+iGdm_!S$}(YtQvCh!P`n# zS(q)rC_ltFqY$i*8c4{dFO0!OQTCps!PS%`7Rv3))d7Zd7c%Ohpy4v4S74*?&@Zt< zLm-(YWxO$!fb7Id$jQ0FYXFi#+)RxvN$%+7i4E-TPK#qbEtJuU3S8Nun#fq*T6Lud zBE5>Fd3J*39eN8|7n?(tNuCy1<+Dr3VeNC-AUZZw4=U=L7s`7nrm_g4SC%u-?Uso? zGHjxXdI+5Q0d1NOc2ck4ctnZTrM-f$^>mpbXcZ|0F{~*l02Ww^KdNtSs=X!|l`iCdvJdMCPJS_+tly@0tfYp`n zyLE$JEJpLzv@r}a(M5#y=Y6%@l_=Vbvt%qKW_kgxcGj6lZHQ@RBMoZ-B$@(r6oP5r zPwJb>`;nKYWT6`8cnTi4^kzCTsc=ZxRML?=sVRAnND*>05RZKHL}DZX(;aQy?tGp1 z%WB#MIcvR@6i|k4f<#Bj!%4xu8VV&>uj3McTCZ(3mitqOgh0x6405?n>0oJYAblF* zbRfMD!z5jDL0DjiTLM;qTstv?YFupvdN5FEr%{`cu-sXNP-kw9mo_QVFVB0_c&u>t2}>c664a2> zk%IG?=)mbQafwLl(-hf;#UhqBfLxTc##q&z^}V%&x9~ZIrBIGJ5`txHS(9Mg7_K*% zp&hScl0p$kc=4&>j*RP`LH;sI<}S2p8CNHV_hDW!03`h~f^{#7Jnm@gc^-bn|Z!n6y#`G3sk z3HiTL^{x1Exhj}$#^>PQrMA7w18>Z>usZy$AasE;co z_Iw&@bx*o{PWfJnjSCq?btUL4l>ju%=A|VkitRc6@M*6!Qs$_sd(0sb`1SYY|3YLI1^@QBdEZ zd+Pa|#AQg)tr5M^{j|+2459~^O2RW5$p!XTbXX~7NN&}zNJ>n#o-Bg9%p3cDSj@T_ITtwbz@oJaGyDOvz#Q`0|=cYoASkIQg#qwyfFKHrv* ztYz?ialhUC6sRtj`Qv%O?sq;T$dk|bs5tS>-~2D)`zeo8$d`1+VusOMB^DpY5Qf_Z z&-Y>3neJ`z=2I1Xz zKJ&WxLd<~m9TA?zKQ8(AdAf!;pB74e_1)Rq-JT?pZtbg#F&p5LAErD72CDSvJP_P|Oc$1!%EU^joH+=j72B9AOK#N#CQjMD@*0Pn1HoUikXWdcqK{vrAo3+YL zK>JdQ5L$D62Dx9%zu5a7&Ry30a|P-4t}$$<4J%d?an&Ma$s_#)0Ey-U^vMt&PTG&A zP{j!0&6&qZjJ3c*35y@kyJxil_fY;j^YB1HIiq--4jg{9Dh@;ODcS$xEuteQ|A;@u z>x!VfSSOo7=`!rK@gA$Q0)~MU7N@b(2KIx@D_!p}>Jj*HRD@n)2Y#|30h9L`WT*&x z$}7&$`Dv6`4J6VRB1#;cLILo^7(T$V4!k&;x&{@Qp$kA>+P^{pcrrFSxozfzKIePM zyfv11AGZQ|$0eK8(>zOb_@#I$*OMaO<&!dFsTVKbE}&f45E|Q+(*QhzN8}Vzi-@Ac zZq2JjCJ)&Y=?D;y?Ff39wy^j;v>w%L5+^OqGgE#^|0W6pa-Tg_GGkT5H4P{aK>8Q! zojN{4z&Q#IX3~Zq9g9nmsz4MTL&SjB`@a)TW;^29w#$zV<2?Tv-bsJ@A*L1d9UeyG z)AIEArx*83oTblMAES-!u9ZBD>h(bDcHVB2J2O8Fb~^!|P2IQ}cDmT~NY7vM?V_C~ zD9V26gqmY*uW1SxKeY?>emsBcR5m;gJ)0m{P5Tkqd0I9&#CE4!(i!@Z^jA~lks;AL zyK9P5VtA14PF(s4S{m@)2zhTl=Sh;eoRirYW;+NTalP)RZEIHX)8K=Oe_s!u-P0HGI!KSMAjEY)x>1}v z-?=!$S%w)O-PNo*ZoWS>lz^A^P&gKUcf~;7aJiPbMNgp~lhNpV)o}$2-4G}%#`F^E zZyVLrh{U!DX47C`AvG41*JN!P5JG)}TM(Lz zDpW{TB<5jLstUk6>PYjZm2!(Y1Q6c%t|VO?c^=ahH7=x39M<-fzEebHf&6+o+^G)U zKER*`XsQJMi6nFhqa_UKdTm`wGO=YBD=l~2)=hYRRz8R?4R(u=P@x!py`=~MJ2Ca=Lfa#Utzydr-G4W#jpw!u8N^LQi zSq--G+JW&I4fpmEqYi5L<_3djgXh%${h|EhcS0Xc5bb2Ym_<21xpWH@to#)sIkM*h zsA*I^)n@>E&oF6%y^|&#pifaJ_X7#PgRpyqM$tK7cggpi$N?`W(_mNYzT?Ja$iN+d z2`V>x{#{HDWg$VSFg@Om-c?W(gF%Jwk%5cuA7uaV@+l_J#0F@HgT#tD$&X&E<=^q1 z63<{f=w>7=9mmHl4hjL<@+QE|am@=`P)KQFW<(|8bvf1tAE1(4(pENl(2()-=jrNQ zL->b_>=2JP>DM&#JN_DTh@8q6h~>L^9Lc22C$wRi$q2GR zmlgNqhyjGWUBRG=r7bS$ zA;$>xJgv+(^gl0`ku@4&Z~x`lpN^^~6l$!0$*`pVRl~8eaHsvr<1#|CyYD(Y)ub>D z>yS|b^IermyPJq!fTTI<`%>M)4FzBpVwfdH>ZW8sA<9B@O{1=b&}M3uMV#af)nXRQVib@lf(c3q zF_!7$yrO(dafbf;IL=kD8$k_>6DmjqY!n{!D>-DQ_|$DoD0>E0q6SbyQw_KHk_F_u z?_2SLUI{LCYfhNY+u^=-urRTOx!pqLNYHkbMK$GP&}`l(G5fi$&XOTr=m#aHYv|NDzeO>6;Oyc{H0Q8s3goH_q{T1&7l4cUlrzoqZ3t? z)OZ}n3~#j<5~@iQ0S$}9#8Bf-qw`FsI%dz7ItRbsOlI$8SbrNW-?y}eY%^fO7_{+0 zjZtGcuROZlEuh}(Kyd$T5b}6M{6m~&gr8A;ixwdP5dEESfV=vHgh+1N2`@>1kCcD+ zN+RBvwzM5QN|b|(1+&SH;2ts(T%jS#sU)A5I5A^SXOj7WP=F7_f-IAok9@`?8lw_9 z7rD{Q&|}>sx6pU@yq1`2+OmA!2lM~ErP2C;097D~Yu?}G9l{V^PS{0NBzL4kMZDiv zM1f^+ zh*cR^q)C^B0wB*EcG6_!qcHijpsxO&=$iUEf8HF!Bkt(agu&5RXw@#@XwsT(1d!_~ zCZ#v{PO?ea=IE;9KoCv4yZ>^E{^hu)8|k+p6Qzx0kf1W6rF4-O0TwX})al|MjW+Qf z+Z24?DsCe6gk-O*#sykzBjhrvO|;JLk^qDNsUubGXiZj>#9dX+#Eza`Ct}k<1abgc z?bWJ}oFXQg9U7p}q^C*kD|?eio07 zFlm}%_XBiX2TzGPD7Zu7A3GkLnKM)eXbxpa!s~%H9m#1Z5`iFZ`-idJzw>r^-?jcf z4ibRB&hUHekh4E8k%#R#c2|w#n_bsnq_!oE+C%x_5se3skBkZwl%XnVSA%@%A{zao8q zXFR@#GXrVWR02EzHtyq!0D?`fNfisdfB_%zi2{h7E1_c?L(#d8h*rfiP5||JF#CVN zO*~ro)W$=|Z5f9k2iWoi_`HCPW04M5swQ2OOvyoidS#cnH*fTo(MS3P1*zUgjZUvG z$g>OYi?vx17(`)|V;~3z+aVXR>ozozp#fc?s16~JD*_4secfNChPtXZG~swcWERv1 z6YK9G9cb+H{Z}(_JygFE$p5+bPm%$VI}iCHYPrTAQ@FiG?gIgO{U;M~M6u%~#@92k zn|`-#8oEaOZ@Tv1CB*>$r_p~alb??#Wf*C{>w__>*1;@T1qJvCHxvCCGyZpxi;RUaSq&Xnj=B&*x))XqzwXM-o#~(tb78`4IU4L$)X& zw(0h*8ciRU-9q5AceU#xQd_hVLv5~Igbbdik$yUBWBgD~y0;B$Hu+Xfi+0W5Yko_S zXx}~tTyCB=ml|`t^K-d1$hXMMKp~g+K!KpEiqn z+P#`gg^rq20||q9bo0~}gM_KP8Xm5QtpZ8P;r#Ge&5OA5J>ECr^*^nuadi6rO& z0OlENqB$c0lt=*pa^Gm#OteWUD3k>R5JQoco0ztI??jja@;kDCGoe093~-{gA?WC} z%tx^jGJC=Q#!x3@$r9rOhVf5N`w%0Ar^MqY@=?`EG|AMyGV<;t-kIQCol1OBNYjZW zu@Ny_@4#(cCHJZg8dQ1oN4|7gV~w8*-)Tpvq>y>vsS$_iU2H0&DICAGV7>|lf5PeV zC>BmCD*{@dlA)DotIPhPs$;0LA+-k{!&*Fkd?iFy7kjq;|{0vfp%iN^;&bnA`J=t_Y?i85<{coI>%I-_o{)lLgxT;$= z6-AMZjK6a)pBkDl_HKhv09 zA^ORBd5XElB#mx|*D0^Mospg3oR(~Fllk=2Kd7v3DUSTte-fEVgo6{7PJ2+4jDFpR zBE=a^caxcN#TJxQ44oYrLID9RK@00&IM??nqoE|3N%|A_DH*dMZ8=-UX7O$>7qhxY zuColoa(&Tx%hKxIGIM1J&Z!y*d4yD?(p?(2Xbwx=iKvP4VfAqaZ5NASs&3yJH=UTn zPNwptSf`08A;>^S;L(@M9TSg;w(=xUK~eCW5`sOZMKS@5e?Y(cd4)!{jOqJkvJl`2v8t=AK5Oh9G5sH5ZXNAOyO{7=32Rd?H#b~UiTdG zCM(lS2GsCOPK3-DgVXp^MOs*%XrcLVQ0a5k9e+j88n*P~?R@V(pD%JkQ3r zf2WOWkT^Ed7`T!ldFmJg8!=kg%JW*6Za(@f~K!n2kq{MJOF zbc&%YleNJ$atOy!BkP;^8gxh)0h$o@NF^k4#qBcw{Zjeqz<^Q(19A=>tkk8#LV%SBe$-mrqLpgJcI;ht6G_f?nyer zk?5oe4tS9&JaEaA5mEJjaNl5cKv2rz6v72V?3TPav=cc^*a8IB=0!UtA4n3QX8Srav=9aW z0?b~n1zd)gYMqEIM3n>7ffQwF9(i^;j)zu_DZd&9M+lM#2-1iu*)$YtbN~t^8C;gG zf@3V<^`55<*- zS$U^o|EORnN|1wH&~^}sF1kCfs~ObghWBhrD(8KKZSaG^mW?OM&buFFnts6K7lv$&WZcJTxl>^>VzDz+T!iN>{=$|5;B+lqM#B=9Y+bAu7QIF zdq4k2{3mH{p=_(jeyjF@HoGq8(A05zD8eh#Zb$vcXA_l@P>y-R9cEq2o?m>x_$_ zC*uH`@d$H}DLDUmZI0(m7D53~=;;W71QAq}*hFcIsZ6;32AxFwRuqN<2zcHu454#5 zJ-vYnC^!IcKvcy1?1`G3B4CcW+%&SCrz#^Dpe#2B<9TK%hzMcH_X$KM$LAa}0Le*31+s~ z%S$nyYI%<{R;rr%jaqqZjOPVx+;tW7w3J|FUWSkFw|yEF{+{34+s?h|G;*jqW~g?} z=?fL3^NNT|E^5OcG0KYMqFgyw`1jK2{D&{2XyJW`*N-^C_%R8#v+@^>T-6fQ%T42r z3q*#&aTix}eslc7^nT(4-U>a01)tApcd>(^0WQr8! zNwRA4H;izlc@!w)+gh_);i{2i(Zk&8;B2dJUqO-9JdA96!v@_}wb~jnOkOW2rbPps zNfP6#xQhn>L_oX0A_<^8&oC=pLzf}N>Igo@1Cs_lUUSL`2ooY4B2&ZVbVLwFMR@(c z#=g?Sdi>JTG{(biYZYGb@M-64T#qkyu&~F7;d&`atj3I|i+md)hBHvsRTUfhD3lla z*j{9mPPe3N@A?1W9Kjji5_kN6UaMYH9!JSOaQSKfVfw}( z;uOP2Q4(e`%;I0+iO|==Z#%C zz#|q_|C~xxKkGbM|5`8a`pROH>23&w5kn+9rQphb&5;en#~W7p>ObH1Pux!}BEZrS z9bVScYmD6|!1Mp4etRZ*9RqG>={@%`h!K;zlnNVyb!RBB?7^KhdaVP7AR$Mk=wVC~ zg8x3DL)<1;GJy;j&(NQS+s({gTh1jqvqfNZ5u*&^MOcCzDZC-uLh%W4Tj`>Pxqp(D zEc({-h4=DM^Q%%*WB&SueP2!*tx`oI1-B)b`5(tu>-oP{p-z|w+Y|a(Xr@x;)~J}b z>3UI|)A>UjDpbf^#wJBvV16xe7Jkmh%4p0zE3)Vp*~5AJtwkbVu#($3^XD%}`HWku zr_*||KiW!a$>uaL1^!U>dZO{Pe&@YW_i+`3Vp}m~PZ>IjBB1v>s(4;9$oFJsFst(7 z(m~hON?+N{)5>ZTeQ#NX7A`4Z03stOC^7NKV6`>pq5K!(Jr0!Cx6O`Z z-=pkgBUulhg$(&aEza=xMt5=HhzSC29QOkz8|%?ocv$<{fiGp{FFg?7Bjes_%jtZJ z|3iZG?hE!O=DzHGpDIZHO$l=OeY10am7ACyU;OyuOAY*_iUTO@D}Om z2?TO(5GFim^u}v$wd?IT5JYUqK#?PHGCQVOb+o&7c*8DS4+bg`0zaw7zOQ?XM)o_m z^{(U9UR+sL&M*}-s3k#pw$Ri6U0+B4lzq&A;g#|FtO5`)o2aBdfxpf7-B~md54Ui` zy+n@V>P^o5oA3myn8$ZmfGQxIIeKE@A}k^T0SJUZN5_1QrfFs?HOI6Ct{*kXN)uPe zW?$ju9Dbqo>?p5~iQr@m3iKIJQhSjF*tcTv^cRUXH?CzXbz#_st$-O^JOb~=L=^#? z_ak08myUKP0~M3{a0d?M8iFPe6u^Efr-`_U0XYpDE4+5iTyWrIHPL+w_tW3lL3O#x zG}d#wzAoeH+MSTuLMu118%*1TiMT44R`Z672Gd~F-j@Gw&Hk?j=F^qX(JjN;R`;?` zdT|zBr&{)g@fLN!26(=-hB!W?Cs}ZRGUL*Ha7?q+m2??(uikX9x0z)#*J!GZ6ilxrHsdX*7}{x# zGX|z~OVMW1Ne-9-8o_dLB7*hVjH)3iuo{+Y>#ghkTzrR_k+Q_$!S8N*Jj%4qEso#* z_*aAJ@i@fpbz$3ZNeos?wztO~^WFe* zeV`ln9F(~4&VT!F=)SKzt8A||Y>p*!#TwSs)TBA8!j)rsR`YX#%gDy_b)BP!`uQo{ zn$ny}4X1I!W<$=A96{P=Ap2(Mi*P}HEonr&rPAws?!W2eR%GQvKict$c7@>j_~lLD zlGErm-5$SQ{T_EoS%|aM*25bX4B@5Hvz2FB%(+G@Rd~*}BwJt*O5U{NUW?#Ktjb3d zps+-0Ts#33{!e^?>kXoQl#DLv7I0!buK(U_A=#}b_lzJr+wkqlHT%_z`QjzyZ@hHA zlO#U(wFSv^RR^M+3xnLd=z3Akbj6Baq4l_K=h`IrNj9Ri5VnjE@g5GufQuSo((vEa z;^tjBPz}K0e`1;TmzA2!4{ZdNdU|~YF=l`A3s7)bG^Ew*d@Ao#3*&TIpc173ZXn2R z-MEr~98f%hWR9vhL<`x$!4)I^)I6d;bpanI&0m~s`2}b5|55)&NZa8Q{A5^s*hBxl zkDOd;`#;(JDjk z7Ob}@L8D~QAeDGVG18+VFBad*V(uyzR=~ zNXArU@y(B1F&kb-h|cVYVLfiaepMt2;{IK+fvo8O%n2tiHdB8tQvL+ufQVg4VgCq3 zfZ$O+M5hA~2z!5?^l;*j^CumgS17iR3ZiI$TMwi+2O$%P;Yjjc51tJAOp8xS8ifpZ?`YOos+e=`J6_ zL-ptMuGW?m<`wMUWyPK{vYu1*jwVDB-+*UeF|q74r97wdeI&`-@)n8uEzOV(uxM!V zSL(TwD*kui^EY_5?LSbDW%mAaq=_YnL4NiAiP#`Ob(Pp0j^v9}duR;jM#t2+f+r<* zq$CeZo5Yq}G{wmLN@s#vxATSX7KdSss{5tv3&#(E; z+WUjEN`=8CmS@4rLJK4&a3q)9I?Q^cazT!c)R*D8IKbC$Kz~a^>6{)EF`SOS#8Q8A zvumZn!j(?0UcK}Sge1a3s%RoQ7X#=Cx(T*MV9@Z$0?+kKL4efTd&IC9_C9GpH8}T* zTcqP*rD2-`pi+_^e3(QNaK9X2b!;}&<%~ph3-(n3a!4rpXAr5~ zLXpc@!Z#lV4q6`HII|lV-TzVBN;3|>^w!_W9ZADDnd9hsXgYbS#Pdd7mTgE!dH2=|531(Xuk>tAxE!yIyJhCtm8o$x6Z7NGDv2qePltH~I?mgSndCjv!-y~&{ZwO?4 zvW#&4niI>J`P3ct@au`(>)_*C17IVUU3T6@NljUSq1A^FfvnhB@N*M)8a z+Gnq*_(hBkjshk-q6lc`i<$kl^O=K4%Ar2=j7N%^4duHkx$~54T`_Thfg%E5Tw;M_ zm~LX4aSahTBLCXCs2%|$2tFqU3O+FCrVPu?`$lXVUZ8Luxftiku~wKkwyJ7Db3wCO zOck&`0gmH`lgOr0)QPoc@X&SL;Q72v`uZskcL|sdAnBQwKkkqn3I_2D^^aSZ6b?At z4nDO!!a!_p6X2#(gCLLz5e>q~;CJtn`7Pxgr^9Jm6zur5%pPJvrsI~L1|uL46r$p1 z-+*+;{kBu4$i|O(5ftya%(eJq*~t7{?{1D^=32uiK~BNFaMIG%_Pf`4BS07I%!26= zqL>Xu-zACZ$3v;=^g7oC3mH5C`AS2}BF|Ox+6!%C*SgM2&Dx45FbD|t#0WUH_s^%s zlK|4KEkx2usI`ygZ>G?#AWx7Pa~9ajhb~$Tkww3CCT+?IM^l!Ip#>$0c25{ot~3HR zkQTB8cJo5+@g+3nZHk~EVgZo#>gML;aABDSLb!CB^Qeb^9lS!j`!+#v^;GxpzcxHp zDr&TG8?J}v(DwF; zL1l&`ESfv4l4089hh`f^`PVVXv8yaH-R)GXX^CKVIFgb9#CeuCr8Nq#Dupaym2qu; zaHU}6WI490lLX=t`J7MteQMIumENR1zuk|Ax=6f}?z_x;^bpYg#2-D9VeR%C8ULOi z_|T$*itp@oB}~T?%6Y`(+ zgAC=Jo^SUnC!Y;YteU|d0w{jDWBP~w&)ODCwP!R!g5Do;H%HT^v0CYJ7ZlcEIEu)_ z^>#mmkYq$tBP+D$jCwB24!D_&3g(c~Q;9TW?CLZ9IH%+hbiqt{W%ZkVYAG*Pl7%+=OnZF zH4Z!dZUgvmL25t%x{M(~_QZgKBXs|lGNOmId;$th9Wu*{67@EHK4Q{$B0@}o1H}5O z4^YFl!SI7AV3g6DK=p@qu)e<%dFh-noq|)Tzss%<_GJ0 z-Rzgmcfpr#Z1}PynD&@SZzd22Fhd9w2Hw8+*jC( zOk_|!bA;hc(}~p>?6^}t=9T)%bSL7_$r%C$bdkDR!_8u6`(GV87rJ|CRUWFha-kT2h7@>bG>53Pf;(M%Mf zcaSDXP>~sI)54$$3KVw4A*h{&7EFkT0LT*TatCc2rrW<7gmu}mI1|j>Xhm{kX^Uk- zxmw`_0bEPc=8=>s1SB9_6frc2=(tBP2pfHYM_glrB#0sbfpclqx9B=VbpNNKoqb6K znY+qp%#z5012Km^78{xk!;@rAQcNFKv69u@TK&!0N@;Z{y|E|gFXXMOpVf+jSyYioB*!i~@{`y@z%d}ky8 zuz%7My7gAKDL8n9{{*D|D-0Efu+Lzc`B%HdScJti)Pbeq=;UXo>K7|TRSm&ZoBZ@p=?ANBY1Y=EYp)I7wT#iUGOi^Wu?oKQ$)^4V5`j>FP za9eC`Q$#F$-gdc!I-6s799N?RhV8R4)-kc(i_RF>8Sbp8GwC3(poY`iLWY_fzB4jc zRb60PBEWnLHsUj=_5g^IWI@Xb8n&O>Cwfp zO}`8AJ{S9Ox^x_^+@ZitdF>0Fd-!^vRs42a&VnyQGhWm+abwW(j7`*1rqgDlH$Dm+ z?r&dWJE!r|+B7zF(^So6@Zp*?BuU>X&X;%NE(s-#3m{1b_wQcQX$?N&4L9Q0TN!S! zf6HrEiD&J7CJ*%oxOeW%-AAL6fe9dinRBxw5Yf(Yv zMx?N_OFb9rH|-Z>Myxo35g>z;(UeQVw&`*c)_WjGNe4TRwjU+K3;U!v+@%%Tgs{x+ z3nUgFCpvjK8Ty{4-ro;N zqtG=q`3i9U&&%$qV~{tN7t_M_XmBf2VdwfRh~3 zjd4y0nI&*d=O*x;WEM3$&m)WqI6`poAtFg~0RVzQBof5?0}&50${theabE{qu8IRF$sAK_(2~>cXN{62)gDubh%*8M5{g z3&Bq>w2Tb2S})csc8h*czg3JIDqReu#fB%mq)?~rkb&lL2@ziv+Lu)rYVW-5>XA#; zO}-#i z7}H}LvIuSbhEU{guF6lDH2eEh<5^DXwP7Aj7e)y7&WYzha^&$JeGLpip+fXcQ@HWI zizaDMHZWsNgRfoA4N5Zdy1JvfwNP0^1@4o${>jib+XmBRF6-os$e?MoHk%O=MX5}t zB8Z-bqf#%8O_(M^3KYbXF@<4V8ej0GBb^+4z(Y7l6$nBfcx1c|O<1KIgA{4B#tpVH zjixl(O`(mp#@K)#-ro7JG)?#xF-2Kmnh6px6fiM_LR?}*X;aw!*9WN#W#k=4LPA1p}|55?wa@i=t+4dyYg$tMIG*8^jB z;D$B?x7rV$r#FY=CC9N=?#nFxS)zxwd)KKY2HlPBHKQHlHrrbUh#GCS+iYY+G}xHa zV{pzdfePmZ!x*9O;O3{#GXD-Yu24Pgn7~Gby&kxR>=+{QBVVEEK#`gWf-)f%V@-xD zSgiz@3~ezs?rpdw$R z9#34dg0O-l0tm2Sn&iwk^zGH-D0bJ)GFOLWNH;Uw6O zMXi3EE-3XHZ&Yct9jmpAH(g1GLnq`*c=+;H!Vzw6}%v-n2sx--vKgB$T8sh>zx95vpz{?n@#fPI|akFK2Ie zK1W=BE+GIgxO6Pd`$L9s{ViWC7{SJqI05ny5cW?%bC*9(YSBn|#aTOC{+4+QHONRl zc~$sNFthjnr^(d*~22a)~HvH;QN) zeP9C)MspBgv*SddJHZ2i?^+MS|FM62J79FHW(>-HISwX40Qmf!?W^sdouvmlFr;;o z(ygZyVA>Me{%!j!0_p6&D(~fOzuH<<+clW3D}aGI!k&^;p;B}86ylt1T!QK3B};Kw z)XOI61V`m4^)gZ*hx~{7S9KCk@y~d!2Tzaq`+e>?ynVE>n`Tm>HUu%YF|jreBO|Tb zV%m9`lk_;Y&5l<`PTqMs@8$dT?KgJzs|+zSfeR)=Zr3%j%z}L%FEPkRfj-vOtx<~{ zt{uA6SRU1)Ab^3D?b=(tp00ksMv76Vs!yFqP!wB(pH1^YA}Ejv7BYdE(M3x^u6(M> zMwUZ(NngN^c`qW^?2+N9$ta__A3G)H)#a&NVW`+Q3~$k&zWVZ(-7hL?T=Hx_cb=Z3 z@T~URfJG$`^=R@wW}{8VI!(KFQRnBBJUHJvLITnawv7WlZ1Fn+RN-NgdC=WfT{JNhNOs-{>x0(gQG@>4dEU%nsKPqFLXKT53R`wQg*W&?B={%khG6_QWw z%Bi7>jKXf{+awIx;wUq4X>T0};$U!BJDb#kW+y>5C$++A<}E#0vZjVWBd+pwRBud_~&R>3S46^Fl+ zfXG8{{;~SC-e2^S!PpC@;jGinb^bQLXShbub&f+c%dy`2%5lW}l`G1?M6smkkJ{T* zb>m{vrK@^h9B+f^T?smo0=PkYz>qypX7#}NvZ-4UGW_-r?~KtyX-oeir4U^AiN)r& z#Y1SN`YU-y$i7L&ei#<)6>snt$-$EeR7SlVc~I7MR>Wr>G zA~9(+G{)<~vM%L)%#4xH!$N~e!Mrbgoo>eaNWppFf6yN#!>TKZcQ}D3v@LsvgJ$T`- z{?esEoOoL0trsVrcY?ihu3HN!aFzihUTWMqY~v zTL^;S(yC!k?y~qhezwCTn|hxVuG+Z#4eeBsyE1GI3b?`IjbNpoOr;TN8pOrml8{CT z5@1b$`&8yc=7!vNdn)vroEe$$Yu&tExEznR0pl* z(#f2b?ASZpq6%vhEz>PSR$xeSFQeF-04=8zqRw{MH%u@j)HUoJ7=9SoHEgFMx6B|8 zS?dci4Ux&5zFu-zL{Y|UiiG6p-5I{X#VI66L_N63{)QnG{N(P#`)BX}c1A56pv;Q# zQqzVH=s}qJqgqU39SSW1Q0jRLtIe0>$h|s&J7&wsSxf*2TY;HT!=q>KnMe8 z%TP2Lv_9Ov$Nf@@^%4QB^@E6q))6d&a!+hIv9o1BCC(qCf2P@tB@Nh{>xO3);mmy(k1r+Kd1~2h-9$1%O)!w@677*rqJ-^6l~z3wAIJVJ^&uO=g`H z0v$7)=K>OtBj|qb9!_I%=-}zAIdE$3cF`{=`3_D7(Ad0VQ3^Ertk22vx}&z(Y@eyL z7Q%o?jm$zRAH>-JrP?`CT~D>bz>Co%7AfQGn1*NIqFqyXq1b|eW!TLu9W{JLb1=mE z$lF@)bv8A+c7?o`Ay1U%%#?N8WBIGcUB=rhCc=rJgiL0_1SDl35;V(|IC(zCIH2tW z05bp=?PFJMhKh!pj{nRvS&{QpuOOZpMIPzZiHpxo`l&SFc#%7c6RxLQs-=o1Y zzlC4X?Y=(XeW8jRqkL&yIAdk?)}uSEOU2EoPz|owi-?FQ&W$3R;dUmZc_uDjQI60! z2?4^gk}pPvP~ML?|2O-C$W$N5n#>hJe(vTOTod$nd#+B0a<2zpdx*$n8MKHoM}eE**XMd)0neWsI` zd*8q3eMvU`wd| zy(PE(o9j6YHMo!Ts8TAy)-*_cRbS!M?&*?^q=tq=W0gh52Pc1}V2sm}mcZ??IE*%W z#bssw?=xn`m}I%+&dk18!Me^D`_>RLNe~?-M4}sfzxJITr~6l5^(U41r{om?XKm?Z zSz!CVLb*<5GS~Jr5_$1x$a}{O?bGM!uZ7o8N}t~L5-t8TfG2IEL@u8XW>2C*OAwd> zbLVvBeHc%mP*+yBiF!Coa$A4?oaS!dARb-b~T;(|cB z*)n{5!~roEL_kFXx0kCpS+~OI{VXes9@MtYPUx@HBVfk{ER8KGkIItdo_36ui~$>vgXy-^0)#~K-810+-_#ATH+D!i z&>BnfD;*@8XNqPGmHpyUMEX$xy-BNh2F>i1Wcq-xJfM0D3kTFBCzJSvz+Ek=cTxV% zz8|9-O8rR#o8P;zILpHi#VFp4y z%0T4f7cC}xaQu-%W%Zkjnz#lUG;iUtE2%1>*L2q};PplJ| zh-(#TGYe5BdaI-gNObsgCi)Ska)5g+nG|l@zS4G^L6l7}8j+r?`L_GJz z0;U9dC?OBOB%c4LHl#AC2f}NGNQB|YJ0a|jW|!+KBF}76h@c_jke-1gF$UuqBDL5P zig5h4e-XfRdXl5_kQqHT%zjb&@PGPu&h^D$$0v)6H&Yz(5j2pHw!&8k`})_%q{k8W z=h%Kf-@m}O-1~0-%9!n&j%?@>6gvHQ>yfx~K59^^8qE0aQWMAZdGa^DYm}(vIeRiI zqtP?PIR>OI)sC106iBFtvehD>yC+Etg|G#`<4Ij_flA#}OPw{~BO9C%w`C*^t_2rI ztwS!f>8_JAw!Ue_9&=6|8t#Ci|8_ykoFO2%hXuSfEOFWMA|T%DNBc4#`$wYY=t>0e5*u8(Q-)d+BJ_O@B1* zFl~433k9MX+j(>vtWGzrl3t(`v+8KT_9$C#)J(SVS)C1pjm%d4*`OHW- zmIkQyT9yn%7(jxTd4-V7rs9ZlQz&eX&cQ)}&?qc9T*Ayv0{EGYjpcq6Rj^LmCJoCQ z%)7D;(VEQXxkFOQGc>N;avX%t^$M4wTMa}xoBJQg0XM)Ly?txFCZ>wowb(uhGgY)SpCH zhm?Pj%IR~K^Y?|r^7%jF_D7p_J*^3$XK20#Gn9o7Sgdj-BwT(7T76a>hsaD}#50f7 z|LZD(kETy^>l^rSkgnTozVsX|Y$wvUttofOLg4Iv*WCAhdL7%%^irWEh=z)J+h@){ z{|{U^7k#C>=QPxNvdQSvrUa;da#dqUEQ^+dG5is&Q)vtFM>x|Z8U3<>G~dEYwJd=I zKuds4KtPRYu4Xc11(qNga9Ab|NvYtas55MN8hImhl)m2?vD{Ns8D?_{6t=}67kW0L zS452vNh8a?IDrjVbkX_!qH)du>#U@Jgl3{D8~kqlcj!a?eUtCHi*zSeT+uU0!`y$@3Uh4UwG3|S=$xD~ALN5v&sx%$c5C2n^!=~7 z?S1xFJZ4gFk8&JxL;}5;&FA8Bt{Ud~Xl+*P16~poZXnh$6Auiu6eIq-ub+)`p{H+? z8Xe8<0e%BluDSbKJHu1R)ZN!y7Z+BnCCL+*fOt3z(McPOQ6qrm$&#|fG-PPOM9G0v zVh)Q|ifG+iaHSN{QoKhJG5~}a0K*qMM3zEuO2~h&kH7!r(ivIVNUjWC72;v{kCE$=G-QZD;@L}-5P%_OAZif1@B4rjSUDhjD;b3$ z7Y-iSm=1X^uLu_upFIznaF>C;Dn6||)L0}z^~qI2O2tqIr9&2n?SGlb&*7caRy~Yi zu?c29HJQ488J_kRT{`W4x21jhN`IJJ2ue7F?W9eJrQ#3zAzz9i#r!ZUk*B`)EUQBS@&10Qm1AKRNe18|&i{>dVI-Au8L9<_{}w=w zDKSn+jnN=hGYk>>l*k}l#c`IgU3?&3h-bW^M?Ya>DsQW)jj@hbq&`zs6(28TO`ed- z09cTS{8MDc2*d1E{#P6{XID4VZ9mw_K+jrVi#(Eec|U}3X0{e#a5l&#H(jFp*ZC@Z zkhxxdy{pCMIim!(Tgmthb#7(}(Vb+dGhD0Ld7sT=Wpm*q?xEaHk9;e@`H6zSmXX7b;|-lsCM9lSkrvCn5K8 zh0VPem7^Eg&^xTOnyP3y6ChwfBof4d8-`FfB;-i1(L?WuCETLiplxm<4JViH3j1H% z*->RgG+xNLCuI^cn!tG-DsjIZ1jBG(g2}e>*+UKK9MGzX^b5)*0YO9&4*M}Dhd{ZP zi4r2oITEkMvV%7+uhc5RRa+s@SIi)kJ8DgXG-qV1WT=X7Mpmv?>r*So_*ol&$#duS zT%F%JhYHVZW#S28wz&_350;|8zv_=!)WW}|v-PpX!7cvhEL)dJ92{XN>uzy{(9KAi z%n$qvo2mJZJ)Sf3J-_Jr-&L$w+RoO5GwIC8aUqfc9rX^t>t@h2l_>)7?i$Kz=vuCgHGNu)@@nDWd4w&kwqI?U461i}W`iYO8;7X?H zVO;{+vOULXxTNJ8E!}}*mf?EbSn>RSizT4(S(x&eD@;wKHV5B%TKL%d9X@7W$@b6p zDl~ej>$*&Oa}0i44AEZ0bp$;=3twjao~xZzudH7}QZ#F1zeDdU!+s();gc@%7eeJVJ9}0(gIG|71)NdFo`_ zgUHz+U+KY^zb{w_7PbKlq4q=@JS(i|mPNi9Wv;~RWbgIxt)Bbn@TXj5<$siUGxT-O z(7sMPA21>E3?f2<*)u))Bo^^<{RDl%`n`?0;VN{~IVSekxw&dn4U0j6$7HL8qrclo zE@nc?I`eLST+OdBvg`fkcK)6s+4}i;i(;ShLN#|kv6)WCfxO}Qnl_wS*Kr#LkF$7& z)3nG*k8S3M^Y};5bU~yBfZ)6sMF_ms<291Y+QfW#4DN-N+7eyiYRL3hAaQX!X|1GKWJN?w- z1Q@(8*H#_SM?JyCg5MZxY~aFTEq))jpAZ9%hy*|+zpvk^p$k)=ik8OfMO6mj~3jHeDR;dKM3O(uIic0G;h6o zARF`@yfGjm0)bU-&Zu;j2cr{8ZLA*>0~TST#Cb6LHNuz}VM+vY@p>CMx#(o;FOO5y zAut#Z?;GwL&+06mPfj1YXiC3Dasw`q97&__$01-5$TF4~PJ(oJK=g3~ z#jlk+2T~VvRE0t9^l9v|*Q$~Vijoz_D-7$B#vB_KT=B5g{A6J&Kx?b3x=2Gby!n#5 z&(nGBB|V^9*;s)SsHVDJO`IfQ>sIm-e=fLRCfe5#*m~Vf%3*59aW%_t(MA(%?%C9_ zmk?_<3<-Dq?`Ym_%@2ofL(#Z%3- zue@D9eP&<1OP2S1?OPBBcgPhqjk6EmR0$#EwlB<|%~YK;7^ICd&VEbh^3pZ=KW0u& zYRLBO!_p{9uxov8c6Z_s9{-9I+C1tpaIBnQN72Pa@mIVE1g?;dOtf7GaUT#uMwyiq zwh0&lf|y@c27r7dLbhB?vgZnrF#;dm!#*%stL7)?o4gh4S2k-@#zzYtNqFP9ZKmNrPlm$zebjh$Wu?0 zb-0vuve&2|vzo&y1gU1rg*fHYj{qYvBT8825Ckam|B;lI_%c)CuX zzcWD+zBH5>6EHP#V+OxFIp=%X1ueHf%CyJ%v5hjyf9BRvUgGHGTU!=(;h$^a`M203 z%_{)7+uuHAIGf^1T=MG6Z1GVQ&09mL~+mxUw17rh37y587yJi%11StwB`C zC+wA^0F3oJ={989w)5IJc(A<|>YSYHyV9Hl1@pEAHetkpM*x#{S%8RCcex1{bV^F?6^ft9tdj& z^7= zyPgHL=VP#9)ax`cL(04m&PYj=OZe%CT`yZ$nfXMeNZDuc?GJm0r8=l;k&J^R*@#39 zneqFgW4?P#n`pVGjW|E~lgwHE=z?S567ZdTVT-GeE;PwnvHi3+B=t$Zz`4m8oH+u% zvyC`l#tqep2L+Yd$DV;06B|hA=@imfnAt*F9QWb`Ir1W1vrGY>pXFt6a~GH-^~?-4 zzPC-9NXq7o7>JSQgI%Ivs3NkE2TPT zvhxZSLoYJ{DD30BDY1E<&t#9nj_h>;-OEI}IX|7|g#49IyiC9>z{^h&`h$XK)5AI? zd%!V@JQ4H_7O|PcF^T7Rw@)BR`(0?CNm7>Rmrj7b2T5@-J2#UXd z+jTSI9oaZ+h7ZGNn17ww=7H&7B}N16Y3z z9X%Vr`0vH^JwC!h3pkUV!huqAX3Q2ZxSe5H``q_w)LbRF@qdc(+oRD3x7GfcBa-c> z&FSUYqek7DJO-3MMMCDEx`7);y6*8D|m*#5<0mUy6=;R(c|&` zDHw{jgkN9=?KFWxXh2`!TJLAj}X+7{Ong0X7ejFh$Kq z$hHW(=U9#lg`3e ziO4`Q(*;5C5_&fz=arXk$jItPsiTj=}}{bb4F=(7{CJIVx^jvji%wtHd(MZJfo06jp$zmLlDQr$;a7sHC*JvX*H zIT%e-?#PjGEN;V<+QOVKko|0Dj{cH++-uVrfPi zUQrmU(+m%f>PT0C!*ywTFCx=C+{|;{H=%`f)u&I2IK4Ye#CS5UGDdaBW^1m)-u*PO z7a{NC02Ot%o4i?%=rkkRu=sdJp$V{wL$Wg??=z4twMRZ?jvLvoM=!?37B}Uop_IBc z#Q$BHrMb5WN08IP_aUOil*xeq?AN&u3iF1!_=^KT2$Ba=>W?O6o)`PP1;F2LRxnCU z^2k{7XcPc#C)^DKRHJ5%9FCiZpf>~_=3Rub8<* z-!KrjyYUK_IE4`0%p*3d#8P4)MGHn-c7z5=5DH$7_~lIh#ziyuq)4Rj$4|rcpE2H= zKf#Avj5=}aW6-3&V7lKqd{hrc^=CS`pwJTVDuE!RP(5@=lJ-h(Pm5}zsG~ip=tNmK z4heDA0hyZAjIoq^+0S&K^?<(jy3W;&(D49K=>6OVVJFqK=Q> zno>UnLzeL$DTqJbR~C5?f+NJf*O7Uz_7vzV94SOPgNK3ho>ZT-Iz5E!%_pEiFa22I z(!FJPF*Q>Exk`$OOoKvzk%vxwV+q_yRH?iN5N2-%9Wtq;LLg5xL>nSd3!segyA&EjrzpXC@4KK{4DLwasUy=*r=O~GzAMkm+TwGsD?gYigPrb*+9Q}%VC1q#) zv^=9ZmG)(QBt0{y4nZ1N%8})j&f);0*k6El$K7aMWq#pm>Hba z5O+S0#s9+xzNHP$Bpd7cqJv=hM*w?+RYCl!XuBjZBEmR@bAZQ|&UGEwsgodK+1+ot z)u}NYb`t>*0TM(dvw{D+8Rg_X*5#f5J1+wM;jBGfi~!BcLvA!iz?BEs0#D$6CO@oG zM*jNm0D!qYN~o+~-CqcnpUp$FtXjYT07L4Si7;u?=4AX2KW*0#1LkLlXautRdk>5; z_o4%D0m0~O`I=DuW~u}JgBpifZAi{5jCGL8W&IW^LUPRkF0Ta9{(a=@T%BuYUaAcLwYF-SWQ^TkEj2^}5+FIT@txo=50g^7sbcjPg1i#*nv*%58?P zi5enW@B{!5!f2Jm)7Wlq6&egkc)@C`6d`>N?A+3TR7xQ8TKy8k=hZskU)e_CS(*7h-efey~d3#5tCFgoJIsx zbHtg8I2HyZbbsWF;8+)-av=3rD&E!5R#XfK$4^IhcKth@k+2!3Wdz zFdzazEM%Dy#ep$0DKF#67QEy#>vddm?6XWwiZgB)F5Z-0OCb>AV) zz=TOTN>z6R!9)?uAYkxW!{@bpjn?_x-aA5SK5X1>^hcqy?>0Er+<-7ReQ?+S&w#2BEVX_|~Qw4-T> z_ia(mXYTJ;|C$kk4NyR~Kl9S*QPr{`@>Q{(3rbNKnZ-&_y$~t3bL5@|2L#GeiuZ4J)w?h|h`9yUgF{&KoaCrL3?Y7Y zt>6Fv5dYCp!C^%5C8+@bZZyUqA*=Xy5nGRG`xc>#Sc@Qp^P#-_CIbGL4SZK7_g2b! zH#HTNVi*@Ku&!?c2!N6tu;j4tBO)OF)-or`;mqlHG-w0JX}41%p=@yRHa27 z54)yV)2Fha!aE4R&VM1#}E&kavx_10@#9y1E2ga zKx5c#5+D=8B6bo(HHMi-@}7SXi~E=(&4)413-CUPnBL9ift!U}XKC#FaPB8W`>70q1#t#a;yDwu$R z!chtUqbUlZ5d!ASa)Tkh)6If(PnKU2msXBMLIOM{Fn&)rp`Sp6#UY1aGtj<-+39}F z!FDNO4{%P;wukK`nZp&A&#*dTlRM5exz+^Yg)JPwGhVly&giPnK!AiT^{+svc>axN zlS{;{yWJz8Uq{`-*m`IlkDRn$znPEtdTavqZL9_@H#XJp)gAF(paZwNAqs8cz{}G! z^qii;h~Nz5uAMB2>Zgdg2`Gon5wV@LXdZt5W7AGI?qRK0mtk$2Vw4`g$WXrVUQbm- zssuFhjn+k$(o)ec<7DBl)~;wlmi0z-c}9x$Tkk(V!sxa030sh`ZIfq}U9dDoZJ`H- z4SZPC;jq}8Rn`QQ(u{4M{PG6-HHvUyLRl=ppc}CVpJl(A`B%weGt8r5^DmY*T}D?D zifgw37o@pVWQ=G`K-+3Ib!;xE<4cS4{G}vPb7J73Rv^WzW`+y+5AW{~I^#DX=gw^o zfNV5BBbejv=`IQmftSI-p8gR<3Fo1f|L|Ksn9Co1^e^Hzpg}sLJIxQ^&M7Q`^ z4m2(u#XnO*vltxxVJ=5$`;oZUV)ynM=^hV-(@K}ZvRmb`sl_v+WI&hqo80?FZfJgn zU(?2U7MR84;lJOtt8}U8?0e|D?vn{~HkW-CSsY)ITmrw4T^s41AF`gC-e2r=2lP|A z))EA|Tr1{*Tx8wjKyS1{xyFwp{hxt3Zr|ypXWnah_ZHD|)ho<>y!Ui-=%t6RKgOsd zqxSvW3a}ca_dmoAPyhlL`ut{N&;aQF>YV0%+op0}Mt-8`2mm3MM^M#VF|b1HLiBt$ z)ssD3?=%nqLWw;Ou9XMQ@VPh_?2cxR_w@n*2q~B9zyD2AEO+9}5CB8nB_0<0-tlNJ zK`;U2Y_)aQG^$=sKG@Np%rEzsCN~ljpa2MI_P)M0->1T_yAM&$1zw)RrJ-deo)e4d z%S`&w=`>(`AEPfh_yPb3c2^Jab<4qEMFa7W@-i3{s1;Eql`bB`H+)P!q*4%dvB1O1 zqsIiED-A4ahZSmV9wHx~*?M@LpKMj6)W7}W8^B5q1u5a1$dgKXl|sHa`uPgB3fOq; z%a2^4^TR;QU(pNR<>7M5^NZw^lb-(%de_ePeEkulq`gR!7H#V<(C9tGL`O~kE}1@< zlwe=M76t97!2Z$O<7RXx{w_a>-mrRVVG56++KE#e_K&!S-%83di=q&@vN z51}EY(!yb|slNpKTg!Di9BzS^NIY4d1(~^1{F{X)*T~Pq=4jQ(b@Bd#w(P6&Z30T| zIlFiH-sxZ)`xzK_F|-W5A`<=8@9Uu_jWKAX+dG%-U^%y5$Cl#P@crr^y9-}iI9+vH zPclpD=)^=K!hd+Z+7=TaV^};df(Ds386UaCyKe;#!DkJ6aaXi&mXvb|q{_7Xo^Okz zoM^XWG5`SFLNi=X?{67H&`GDY(O|DDWBW{Kjtx8xPu+Ox6xs?J=0C<#@?$U`!bj*C zNBt;0$iz{}A%Ly4xj%8_Q)*P^dN0^Nzs#omz^W?U_`5%A=s!1 z#*V!BNq!ztzDd~DUwb+B`Q#;K;w!-sg6`O%INOBKtWIHa{G4XL=VlKbgQ_d?-fkFt z?vC$VXj_(?Ppx2f5;B;{4VeMn0v~>@Z^Oi5B4SLBnPm|zfA=WWR201c2t2#D|dQyq>QT=b0 z$o0NLLALgq1>Qnzx`ISmi;$c5(yl?yUKJx%F-e8QEnD=aYP9zqrn63 z@@tLEDu3`vWmP(1qAP89Y6hkKm?qGfjL>w0%W9GwHa9s_wL~n$GZCbi8ca}2$b;$d z?nwG-NNytlZe|PCB#yyp(z%7R^J-|`wX*qks&i+@|McWz4NyKWVGyatI*t&VzzM6+JNig%p4j(rp0_*kEhEpXXfD!;8iSP(VjT>1^Ro z>lsG$=yO#k?TR7v|2oOD?7Y2?l4$|mQ1Ul9Z-y6(l8aRd-1$BMh5M4v&C$n9pcPr7 z<}vc9wgiCy4DcaE@IK7*cU8!GQD2hF(*hyn*Y!2*?LZUi4Go8a#MQ%agpO0z2NO;q z#GgMu29A4w>ag3pUupKe=q%BQMk^p^V$H9hAVT?!f_*Q8e7Z*`v5JHFz1bPsXNym!RP4^X;PiMz;Z!(I4LCag)qBy3@>*IAp- z5i71nZbJ5Zq-$E6Xb9%M%_K3bvWG7qRu-N5OqsL$!#Is+|G!*z-nG7~(Y0klKhHPw z+}{4L{c($8sP!-o<$HG?T47OGFL$w!raXU2X8WSy&GLUsHktE)Ux7-SE|&n%*+Xcd zq5s2f%u5z`;{ASJETJ6?K#ynf_i&ShhxW+#AOEmfGvH$g!>cGvdjrFwrq!P~QOI#J z_ASCifC>l*hHQi&fhK60zwM=s3I#}BaS2xn58r*7KGv^wU-f8k?c?pg9ybhy!MJ)Z z$o_6WyPE8N?~GfdkOi$>M_w*T1S48Re@LEJ&j2i?+=2Liy@+N$gBn&$KnJ47Qw0Yh z4Dltxx7UK>UnRa+85|Sv{(R#8&*GAK4E1=hdHOATEp}A@Z`JzAvrCZN$f;c~gb?ir z18ve>%+M`P4CSs18t{lHEqmM^YiE8W*kT#jE>6Yz;4W(tt3O=g{;pX43q=BCW<$?T zQ3;jNHGws$-_avH0yC=-QA9v$)*zN7p}lYiz?J?qT17u2zRyVw8I`>BGMyRloNIh- zF)N*%5NuH7C5h30_LQTgzCOm^clJn!*!rx#Ww#TU`I#d*KlzrA#+7Wy?1%`88F{v) z`H{a2`e(lwKJj{DX56quYUUjQKyjcpM2nN~2&Yn%_;pL*`5`B)cq_eOMW= zVayckBu-}_cM+1uY&mTg6Pf^EljiZu?h%cpKy}gmwOw6((EuPf%u6F*Jel_XXP@gm z?tS;o@ML}Y?R>Yjah=DMjwdy(pcC|C+r|b(;1D1xgD_Vum^AZ`hbP~gRQOQvh#0SV zz-5J-+nqdm5MR`lF{;k7SH(K2x#_%Es9>261>z^P1a95`D>)bgytjeR$?FS&$MtM zX-q)G4{*YMKMPgW(9?*9L`CTY42GfZ`n--VyIy@yMS~CMg7u#NPdBqZeH5($(WD`O zzI-WcCJwh?|61+Npw1|hBlGA_X9n|R%=da19X)wwW27AZ%F z2&3;lED>lshTBzOuP#J{8du{Wf`<1*ypOtGUofT-;=M6EWN@6{bbltdYZVBYU#|25 zn)@qzavz-X2>XA0oIs?AQM6=4M@IE2JceKnj)ltFoi?}qM3B^ zAa?Sl+gk^PiIMYs3?r{jo$9@DlBM<~sR8`kO-O8{Eo~u`o58uPxzz6C9v|eNUMB4P z118dftu>oqx$S~>N(hwb)0EvZN&`)lp9YUe472z2_deWp{Va11DjxVA%Z-4EzStI* zyYOXR4QP6+b(4s-icf>U@UQg3ntJ5Vd5tJtS6lY>qu-jZnpwy4;L@}yUF^*m1%wTO z$q6_LI~Ji}s!B&d)hYQ)Bf5(!Fo+rik#iwX)}pNKPb*{ z4B&s&%#H7Rb^!ZRWGq}wDD?Yq5Lps38fuUv3(FWhlfStVEw{>Z0a|h08ZJPAfZ=Nj z5Cj>AfpV@n;ead!1kvggBNH&lqC=Ltap-^AOY$<0BLV)OZr5WvZhlkfA4s4mce6iw z*Qz-HgqbJ9i~#xL^eFv(uXYRmOAzZXo}6({=yr{fD+j2A3!|L3#0mW)36J8?pT;TE5N`jD z%*$$S0

    r$n_-GqOPNvM8`r?KUuE^UGY9m8t9d&rj27#>K$~$v+$nd4GBKEEf?F zh9lYi3|c&4J3H!eCSupr!r)af(Fn#XECGF$U!4=PN+o6YBxrCGlC2Py(DU@l0n!bM z&v0nX`~Fxa0WRSixUcTlJrfPrZ+sgL@=M0CiEKzOW?Bz9rnQSUX?{ObtP30}D+yqt zV1v=yCHE5q0EujONSc(H8wyv<8M2xnGFwIP8nq_n1vt~{L^MT)?4_MuC1ZC0ic`c% z$DUL;YT`7iSLpNCRH7PoJysWmr$sh{YkK}2+b{<&TddvYb6#kX8{8yWH=)k5*P<9f zF5mNaS%o7Hw@}o&uVX&~4*19+-5~((0xD~2eIh%N@s9o#j5Xzl{}MZ2y$Z9?Gbxeu z;5zRY@-;vWbAumlq8*#mGQ#ZJ^e-Mu&Pwq~dkTa|z@z7%*riLtCC`WrJ+WAK78@9Lg zPvpE|Y53Hmz`V4tVxkuK%GG-gTC@Cc3Ys&O)AtX&w^gI@r}PrI8DYp#>mfds3~p97 zs1@1rBFYY25g5x_nV)IY!F-o5;oGpW7GfVCTbmHr{jYmnMUv-)KTS88L z-=VlpDyz=^P3?$Y+R2VhsrS*kW?fot!%01cLD8^N_*lbkSJN`NdYAsBqK`trLWEP@ z)NMD%dQ^(0Tlum1u2iW1ZZm0o>uKakHKEBkA&>I;QngaswtDsof%Utlp`g)vQ<81u zCmcTvMlq3OQ!5i4p)SOc6>E+KKseqMWfcWvR6Zd|6@eTUJ-pQ?+Z9* z=%mw8#ea>hR;$JfX2lKyzX z$VH;quGk^d(f|ZZjiwfFbA8J+@lnWOLZWN=_jOqwXhY$8j({$}6U@Iu14a|w$rtI! z=4H-@FpZGja@>?5?ci z!QIzW=X)v!XwnXwo`l0h*W%rV%Rdi)zcHBiqWr)?1Os=*U)JP_nll{Myw;xS8x9r%%Zg#2gI2;aiV@RjXB1!3- zopH2B_5OCn@R3ZR_mBu953l(RfJ!+a{y+D!Zo&SCRDQg9 ztFEnmOr2y1{m%y0ekOe;I8WfbEszy&*t?Iv`-#Cl1t(fxdLhEjbj4rff77W`cJt@_ z&wbDTe!s`aO{JMPB%|^CZq2{RqI9<3fl{De^*(m_Pd>A0hV4w(Ty{%^8LZFcpYyk{ zIzR8+#+Os&-G9}ub-u9Oixs>(UBuZVG;hewfmy^^Iv2dPFK&qTCZ)w z>sfDhlj*(rwAasr{yz6NPrdNB`3#2NO~Glx*=7nEtzz9u=Mf?0!$#^KR^xxk_TUU!`hS-ZxpxO_z7={-qdi z>)Q@18g7?Xy)gp~I*a3=5WJi>WQ(L+h{UF6`}s|7V#{w}(9Z&D{vnBUL%FCtQl(5ngSfgqsYz!w!H-D_yP znU9B+&-DAs+_uxZA9&%R7~E++X~J=uM||h^c^@aKq_ni7jr&{3^zmJ4;qM=wx1qiN z-=RC_(1NKpNQk!PB56N-!Hko1lN=J%Sj&I`Km<|x>(iyO!8YSK^^%}r)+_*)<$F&g zJhRKuDe|b9Zdlgdfw0?L@o;hQ(VI$cev?%e{cc4hIes}o$dw1(qIppszvH=<$t6WK z%G~cy|KDOM`wQ5-z@2e@?^R>q5A(-1^S^|=ar!Wx#_-;Z zQ7@}s=L{C(dxTDV-LDrY^757M@^)Id7Db*J`@gTyH@|zVs(pXAOA!0^uQp1fKePA_ z6j(k&-3whm_ma-(ecw4lf9F_mI1ShTV+5nGl-hpu3KPNK5p;?75Nx{t z`x|KI6@g`nM<>?{Deud~3cZBp+Z@@av+Nb!%#bm7?i4jKHMt64K%|ty>~VeOKS3Sg z*n35I}qU)KGHM zTU||5j7ZJlYM6+j9?7q5-8oAaf3hy?73$<7I>2*1Pv^{MRb;xOLqb}5!+o!JTcL@dii5^_Vt zATw0zN>fz`prC%nU+%O32Jm9Ze_QCwra5VF+HP&9*!n2*te=DHrM;XBk$LB?!yQcN zAL>8PWCi13U%uHiM;;-Ix@yV?VniB6@v1uMVn=8+{xYpWvs=HQ%@9yZ=G?|ZFhYAI z2$y1SheZmDO2*H)p51_9OA;b+s zmJFf8%^6H{1WU3I#?&MpID|6{`O=nWQk`KzK9j;OSVTLoK9Yf7;(N}k^FB=fg8B^b>fvVL98|s5Ak4YK+SGfh(>2?R~Q=N$ZjG6 zferuNd6U}TZ31(+1QOfM)4TsH5U_uYW(I&eVq$YFNp`5R*yy52h>&-vlDugi<{V`U zK^YijJ6wf4s!n{(%HQiG26^oLB2Y^$BCwEIE4#4Z(oQWSL6yc%k!u&dfdrcAlfcoP zZIK6cU}gVTcLqS_PWMh%G4UCP?vi4N(=^%aE4)BA|NGvO4Bawvqp<7xl+rVpbKzK?-^o{J=w1jIEh zS1D1CNY(r8k=`BT9CI!x(=MD<3JxN)H)a1}11Nk$TztrH&c@;YEHMjL{l-277`&0l z82t%cU?Z1VqY{R3B%&t>?+lU)jqR3L=n9u)D>ZhoKWvtY*rS|;zH=ZS*r81`%nOxh zGEcqgARcC%gg>O@=}c&Ce_kz%@tiwPZnT60^AWFfmHvu0W`A9SU9 z5Y=Sfv68Tlmnz~-l&38s4HKk<;7_(nc4+m1@{>fkW-T zlR38#m6@nOJ3sej;5Mv=0~iVuBdXkcwTQm{LJE2f4Xz>l0Hw@MJxfLJbMa z6Rx|z7G|5|=!0L{B^uMpANr1PqXoQmmCDUm6WsFiV))5mHaoBK>#@Y?4?RdubrXI$ zT4t4kfy_a?T_;W_5o2kh@e%-|GyTm@O>$B@+k_LL(DHf0&K&SEf`PK1ggG!Yto4JwkOvG;x-AwSvh z;Jn5#YIx^6Wew4%%S4&Vcwa(ywU0|z&(O=x&+O!P`4e_Nj*M;_@4j&Fm$>fxw$Awe zB~!rCszmQw*{!MiA_$H&P+jhq%v^#lIYcOh)l>xCF9DUJ&RvBIlgXsG?RzoI&jeTH z=oM1Ci}4gb{e^d)^@XBau@7k9sbmFsgZ0LAW~ShO=*;E&CSR+9oPU(iB7Gu$`!@U8 z?5zt(?AxjZ?q2#O*zrRHRQFuOc(A|s#rwmsiV54!CqwxZ#XHu=#3k*dZO2Wpc^7W%4xWEn_bR3`-|_Ei)kR?l zo6ZB#`+W3{8HS}yK|_G$%Q{bF-T~W4S0}z2w-P0wQ}j&8DTs!W4a$Wdo!*HBZ%q1JHBl|)Hh=i3g3P#hG*n|cm7mT+;BY)bHhReDMwY1|P zFyo5_})7?#=BpM4{OgApUj$ zUBKU6W45@h6vw3=8A|`A8XLy+wfH(MwPNoAYpDx1oL0g1Ck)wVbnHYicx;=TF7>Yx zgpm12+}Ovz*~oAD86A~7nW4G`M)b8XC!ml=V-+LIe9$R{24H)^Rl(ZnN+dd)UG@Vy zMx_bd!HaNa%#cV}qBD81aQ0cKf5WE3qh))yQJpD5`m=r%{osN^HBwhGCTqY>HZfnGbxM!qJMiU{peB*of|Ie@z*Ps1lcJ68zm@_83sevYQZ7*% z3wWX%Hmmr|vdQ7Laz$(Fbddjn;vX-u+JUUdx6ATBeV!y{brM2-P9Iw65Z^THds*&T z%$q@Kmm)=?#3t#8)|4&tI=ricWyxC4-&I@yr;SxwC4$V@DUKl)i5jr5mzY%$b~1k?TM{pf5GAVD_O(*FTVd}-)Hul zVOI#`qVmXb$pOfbF(cN>Xq&5N1r1SLCCxIYu(AnL8Z95w#s2<2Z}4vTJPtm>{|95u zE!N$wZ>u;@&nF_d2qxu-*J@;|Ux55sw`rjYr`VMSA-!{;tcM3v>@>Z{t0XwdYY1QG zT2?iHH~etL{IxM#p-ctfO}mYoj|hkO1VI{2`gjpmUcs4P(s)R7DSf7A2bO#M+998}W> z!7C*?`wy~V+f$0!O7v^Iwt7DR+i}lG2Y5%#I8q-fAFavozR+2{%E=rgt-`TG5MCO; z{LO7+{o&eGl4hxn`SUfB+LO0bAsW#u)%m6~0MX02%aJ9{_~s3!v%tP0iOz*GLjcb^ zVx^xZT%Q2%Tew5YI?otuSV9`!UZAJ+|Ig!1qalv`uz~d^@KQt%CfN^tw0LdlOMQiWD~@?wdCL&oQDK7mR+)`v2hdGa!>7!n zRH}fLa2KQ1M8MoZ1Bkg21=B+z?TnCJ2_>D7v6;%a`wHhY)(|xiAc2Z7N8#Ni4-XJA zDHCa*UM>y_HC5SxKWonG-*IH>EN+$S3Le`xF%dlY$pBU&^uQw`2Nbb+0tY1kA|NC8 zd>@^MY%AJO?RIJ2C3!Zao0Eu6fPx)m`Xvo226&HS_Nd>>m(2A!`SmR(sCO}ZzqHfT z?d{cswNEz%94kjpA(mR9dQlN{U^EF}ie|fLvgL2fE2>bnujP!)gKkEqK>ya0(Vfmr z%tJw9Vpoz`DyiL3{D1tnjmO;W(~;8W9J7iPbkPREYf9Krk%oH8Oe&wwoOse~hHL$O z{Lf3&B@nP0X8}0ZPSQ}dP%9~GD}gmrA|jatR}+bLO@pP# z^C_Q<^MVEN%dmi_b_Y7t2}wxJlNjO*18rjpdwf-fP{}=iqe@+M;b{E|8G=jH391>D zW{is3O`MbjBar;W%hQX+&~Ri~7IMkOggBWcpr=bs*C>%pDk&mzAcj@KS9Et7ecr#}`(4*t^msn2 z4I3{5?EL+H`$wU2TD;t@f%q~juqeo=h;U_a^^PdiCZKgU-%=eT)9A21=lNGZjTM)1`gr=$(K-2D z`_gD>K6W7rtG2Au4)zs_1duMXL%Z2%^-iEGcj2CW*S<3sVBf{Udgr+I5oUR6(%d^U zV8)^z5w^yfY)y@fVSU49)}sN!7P(}(08j}=kX0aMn0WXpn1jzbsCnj4SdiW&9SJkE zXL=GFo-4C$EgTCX=K&K@QK}9L66J?&3H6xra~l={B3S~{Fv)o;9f4r)!nL=sgpsgX zjb)-YWsc33PRNELOzmC>c&z22-~6Vu8_8=F8tfoPq$SuOT@J(^{L-~lBHKe28D=!| z_y*Vyny1B8)|APWCb49& zi-zNmv)tbgBdp)5-0*I?hlQjG5oYU%Bc4c>NJ4fw4iYY$6zwBnlptjpvA1wc)iM`Y zPcE4hi`}$oL<4CRSlO5EG4XOUwvV&Q)~k6>3ieg=HoQ4Ef4|P^^KW#WIOj;?-NtjB zv7$9z1!)E_ZqVf#jUZ1nRduhHF_5K?^;t3SOak##8VeO>ZW_wUwvdHU1StO*g*k*_ zD#?l~F^CP!=@3T&x?W-ckrF*4pTF!c-r1{JbjxUO4_(D*mf>)TzPAay^XHD$MShj< z;%~K4)*f#+>Cm_eUF@7w?dykyhNni}HV+4hpjj@0tXfS*ML#s;v}u!Z;nvR~7C(_K&iqftx0iS)TVn+~E=GV3hE?~YPm1bD0I6=nvfSZ%n&ALN>EJg07N?bt_=ETZWIWr&Lw3;xvyYQ$=0B79 z?vj#c%ul5!@yctUZb+D*$-oB6{TZf~yWHPasaiIa6lD!Ral7X92>KHth%Rt-dE5z5 z_@n)+C2tjzvLBMWfARGs_phf(;zR(|2RVbvt{Na7Fa<#+fs8>xFAf_+o;Y>F*YF=N z&7eeYH~2}nM@c*t#o5GhEN2nOOg;XOrY*v}%8JTIuKo}F{I||NDU2%Ez9-p%<=9R$ zF!H1Bb5})iaZP!oZ9d>HWy<7Y*;bcuOV{ByRr%jCtt$RIJTy&qbXRMd$HVa6bG*3B z*OKQiKR%?_wn#A*JgX1W!F#q#{oqQKZd(Axnf-;=Pf?q`YwmQ}YM%RfDz8t)(|?rC zx|fc1*d0hd?{Ixh522gO&{ywO%3t^%bBf$7jYa1-SL{~&Y_S*^UJ-(Io|`}1Y*r~X z^%|8(?r~~N7hYjMYGWzPI%C=8LylJ+Ter_F=~GtUBzlZ654Eq`1JZjv6*Q>ep+vRF z%Ezy+KZ&hdSSio{g-Yq@k!#GS@zGcm0SpkJJKq&3o)HpX!X#4~uWqG@ggOF}o~MjL z-M#>0pvdbmb!zevz_;xFzPGUb>|Dz_Ng2Ee{yDdEGs)4y57`R?2zDo`4N%bm*axry zC>MYaG#xbdVe$0Vk7_m6Do=bJxFBt4ugRD8o0ALo+`P)Ku8DS|p6|ew^rR`|vJlnU zzZ>3g%aE1>kh5<)0X^sW`fH|2T0Ng(gRFn~b4X-SPr?BB-F|7IgGaNN`ISr#M?!#k zh*aOsV4tnL7t!DYJ|c2uzGD*)fgk)k2~VC8o5}ggx*0BX{rAk~IQ0|24j7xaT;1)Z zl1@L5D`A$;?TABMASjI!86$)cYD{ zNaAbHOsr7hD>3tmoh9(`(K>6AcnjGkr2z1lu|%L-ubgeJ2_lP?f4i61|AS?)y|Aw1-cW;slB0lahWh&xV%Jgq;Lj71dEyK9#B&b)pta5Hyo9HH z-{7F}a8d^d<}oiHkHPcjQr`R<+(yf#Fy)kfP9Q&5{g`XUaj040U*ULXjK^IjtTonC zY5qAL4cnbq;_W1-D0Bl4Lv}>DCS}Q7$PWMzK>+DwiT|3%<{Hjk++~?bYv`oq`fpt| z2^T38DZ~TP9R&G5K#<&)L_dpCpd0W8q|<=nGTrp7c4ro=XzV;fBkF*MkaX*i#m1|bM}+H5D-;y`X_j~2>bMl%aXHqXtHV@PbtV_;-ngXMS7q|tSsnZp)) z!sPEVAEsis%Gr6`X>0DqHz4I%muC`L%)ZJRQ+TN++>A^^rb#2G9zHeq^L8dloAF9)f+h%N#i?gWU$azw|uTHBuKq^ zmWyfFW5|TH^C;ZFg)&YcKoB922of9+{)9M^K(PS8K}fO)g@wo~Vu4Af(@mzKkjBQF zV{pyfK_=KX(+1m2VGxso8*L0CfFc+oO~Gt}#^heQ)iPy60T9aFwvn6uu#h5_HYVE} z8e$NbG!`@spac{!La26{VoVT+EOdz@InDAzkB-<*aA~?PUWD2kZMMe7+iWpsY*In+ z%wXN>X31vwMKRO8)NadX$V#7YtOUF>G1?NU?tXGK8k>x?@Dw>rhyp!0h~=!0u>Du? zPA22mJsNjX!Umt24so5m2@V@&d;tcg<6Yyqy1ygJvb;@{jF;eVG$_y1#H#C~htX!< zLhvb7vmZY~S9DOS+0bK&^l$D-&q(2UMCjT;b;t%tX5mh4H86Sxi^#~shser$%SRGH z=Q{KvQzfrUGI1lK+K-5;KJ0)QH?)}TwtHwmXV^hTX&3Av{9aToM(1Y0j=x8~qW3M!sF}9}3 zw5`_^vDp;1)fm(4J|omG>nviF9?=7cj*@wTO1%^mgNf^@qzn+Y(h4%5+ncClN|`#d ziKPS*1x#S3yT@oY-&YWJH!pTPZ41zjEhR%!Ld?%6ifoYLxvc=Qm z@*jl0H+Q=HN1pZm1C7u{l|v@Zhi=KCxS3o@5 zlG=gC2cx$8@&h>?4&CAMq|K!1!EX^=2y;p-{UU>qXWqCDZ6HDOd7H1pvbjY^BY=P) zbB`Bo8O=90pzC<;XgyXGJ`2z{q-Pu`wQ>l>gsN`AP>o~@Q zY}@N^WKHY2dyIKpFM$HWIpl2+h+)JUXDL>=)^_JkW3?E}7s z)vLyY(c37B?JS}Pfd*=?NO`E;hjwd=s}Rtl3U4fd0pjbp)reO?0>&Z$!eKVYFGKAR z+vH5y(^?46Og7+5fvah2x-!G;V}FMr*-c?}=0HmXEIAhCr79${a7OX}o3!$CAXl2q zdgsMv2U+h(as?qiOpj@>w$W_lY@ShICP3NPR_`g>v6G)BL&CR;e5>dg8W!B!O$H8v zIH$4T*(wkT21j1F0m90BT5!gKPIwp1f+_8z7wnF4&OR#!gDq-Fc*duw+&1HGlHv9~IDyZQ^GPkDj8H)5+ zvDj2RcYjU_nz4x^#3|<>ymAK@g+>T&AR+3OZsfBjRoCI%fJo_aTp%NpeuOfRQsoxs zjodf3;xKYT%vDCAL7c=igf- zZ%X|S0^%}|_~X>)OHJ_XHo8Fxc<4S$9fOg%&g(7soc*sBqamn_r?g{(ym7=>Tt?ww zbRj{K{kMz@k+?vllV|eb`5xuNv6eckjoVh-GicTKZPj`alwxPvvHY}EoTM`W>u+svDEY_{CT5PR_6v8dU zC1VsYwJ6PcwQhJ*xuXZ$Xtu`cef8K$v8k_|{W#@W*`(#$bPqWBC!VPQoVik?=IC>RSY5&V{p1Y&Moc^fgRobvIy* zPA>idtH_env9|oT6C@Fg)h=H80>>)(sVZMPY%+@PP#A-6o9^RP-(kAnKy43KBhEV! zM-=WRoG-a7JJUH@{jxhH$dL2Cg_8HXx_}cuaU5to1nH71L98dXu=k;Yhzgclc z@fLYRChDFIgWADn%8DNog$bRkV(nu0kc6-g$gs?4*t2iCja>3Mj*nUHB!=wyn+4jI zCiA#G6*$O5-FipBy*Hq4K?g2qZ_2}Bm@~?dimx_14@iV{4ghXxmPZatMM4izjY^0$ z#nql&#Mg`vwB;jC+Q5vkh28Q4(vlg*N^C&PO{-&jOljjtN{fsM9rP%{cz{0i$mfG5 zb|lg-Ml4hZAZGUnHBs6&YLZfRm)tTDN`G3bP7y_?};K(m-q%$AFC+_s#}zidN|}DP_V~}919Jg!_Nq6D0>P#WYrD(?s^bq+MGV(D0t0WYX!}L zE0cpqnBK~bXxX)oegk2>g_ElWj$czHq|jMZYBPB#lSHcZzRNyas`ym zl6g90l()J;_6s8K(@_jg!J!aICPe};D28tTmMYC~lr z!?w{Hk$vx3eedu_216SMm$j0Iip)kFR+f9j%8GR;P+Stjy*??{MNZKZBY59+z4tO) z!yPJQ9CF4Gi*C;u$Q`*{^)=x`s#`#}w|yYjp}$buefkK7(Fja|!gik^!s}NtV}#6k zoGEL#Q+jj4)bb%61F_A8t!(Mfcu^6!fZEzavRHCv;KGNUHVa(c$VIyr?mUPbhB6_! zcP&Q_i})%oSUZtL4%VL-czHQ{wUEIwPp5Scv>rB z*E0T8WoP8ere@9J+k}gbDS*psQM=JYEjk&m%6alJoyN5tOv-r8b!}c|1{n{A^zXv7 z(w0PQvg0|L{D?U>M$;};ac)U(S+!$frtu%BzZJBK^C7Xk_>6MHNuktS<{)lwp$?q1 zwWYkDVcZ8S*@%$>Jg897OD{?-G`5Y=6KL16PdsZT{1mlDtx`mrpo*AoWxd*IyZM)cUm}j&|YT^nGD*xT;9cy&K-70n>Q>Zd)qHB zX$*@6-cGd9HzI|G$%x9~k!=IR&k!lPhE+Jg*_KKsOw3D}#rB}>EY#e%AulYP@qp_{ zSuVOx#0e)#*)53@+gd8KoYm6pS3=AX*WafQn3l{$_7I`5+-53FTPLnz4K2qjYC&~| zy@q49+YwU-kVh=jO&y6HgCZlo>Npx?tSw>NIeKd1#nS{u{w2;Bnwto6G7)hDsAPA$ zR?|$3Z*_e63p6I&1ZQ zt=7w$k(A5M^QgH4clEiAQ)xA?oVh_zFsE{OO3fHDo+}~nXDJP~4Xll0d#P_MH! zh1Xk9?OL}v)X=$xYBaX2S*!~yvL$mbVSal?E(H;;VS{IWT+=PR-aIOtPRTEt(WiPA ztIBn>v9?gHX2MjoTV@>i+A~d+=|P15KyvDnEhw5COjy98~JAmCA{@QZ6A z!q&+i%I1(HT15t%4Rg72H!MXi_Rco(2H~3uV9$SH(KZCYFmimRNh)v0@dNujxd$76=Lnb|T8^C+ejY^Lp3W)`v{#uhbeaRqe3 zH4Q7N-XYj^%U(o?M$!kOMdsOQd$j9*0y7rzj1g;;!yuhpDFKKu&ud|=2FIM(NL)9c zk*Bnov|%P&bun?>@z)ZsQQ^G8(mO9*iAlU8X#z#Mro06KLBlu6J-S0S#^MsuS7E|M z4iIMGE2!;4eB{tckq|>(Y#?G<<2(}NJ8QcGMl)Za|qA~l_;gDK^- zXfVvOGP5v9Fqp8hbx2UnRyj&YZDL~tS#AV!%nP}Z8gL_Diw4oGORy4m?ZPx!h{dgq z9E9L4HFehQo0tOB<1vu(S*Fc{P}ZbD%i4id$sE$dDG`%H>=Dk|TF%h|>LI9%Iy*0p zU2fzJ!%nsE>Q*yZjbiJe9ZS<@ji^D9n+2w_+P=(&8Ic&! zT9P%It))XTaKW->#pkqX!E#Fb3#~1iEn$sTWA{)Q?PfCF$Qjqd4euw(sVj`eVY1~R zHbX`P!QU=v%m*%Sj#4TOi_BT=LgQg+p9Jvn^xfu#2=J@VE|j?GC@eVf>l>kop>FWB z`io$*clPf%-_MRq734a+J<^O~_fa9cNZ(d5b)}u`)BBna)P$R1DD5 zUDxl+ZNkOX3E@$4*Il@cg5F8%KL%(5^Wtx=UR1+bndX*ZZ;*!D!YIUmhKzkE?3yvB zddZm$Zm?A%^U`LX7!7BL_AbY1n2iQA(!BoAx-fk8w|qqN9Abbnh7y+>fiav;AN_yTPtzW=)hF-+@4eAF`&|6z^H(zIxbYpd(d?hA28=KfUI@QI1%3IP1`U= z=>u%!*+PcXws6@fVr(tpb^CANi&rp@3k_V@o{VGXXv=AtW;DU-Pi&>IE3g4cCZ4%Vw&X*O)h+ewxPNQMN+fqG2(kP8|cB-WeMXe7mnYA!Q& z#8I-cTsMt|7ee`0kk-1?18B>3nk3ubw6HWPIfyaZ(RpnYJtmYj|Jbo}BY9|Le>$wd6+HZkj@Ylmuy_1p^d4rLs!~GS(fC3C92+I4K`I_3pbvP z0gAVJtI|6*i&tYNP#CRaUWB&IROxGS#d(X0#ch{ct6#6570HJ6ls&all2ovPimn_X zVPS%-d2MF~Lt2lidnPK~##qt!u=>V)4VV;ay{m_y*A1<$&024EEUZ-OT8nb}eFzW) z^wrtU<-F%+<`5)V%<-|~nuPaz{Z`0G_(Wn`q(mI~^f=`ul<@hhU5ITSRTEOE0U{a? zYR+>bYbCL&2WkMxVp*27vZiIbRM(j>&0(%#(KJz?RIfG9B#`%w8Vujl&dD6(zVmS+ z`=1_-%+^y&3lXr4Ne3FpFFnf&SlGEnEOuaR^e+xnM#cjv$FkQHb`<8+IGEth*Q)Eu`gRMBNrZuS9Mh?Uk@>3R)>)An+tE!K_7 z;$wKTfY17{P{TdLK=dFlN-x(ON2<Ua}4YOF6c&8M0yJBS#uMhEcu~#K0VI+!w;))nRWs4o#DG zw(w#)nWXD#rsnukGPTjH#hUEH2;}WX{fl_Q_Ra%d(Occo2fYo9X|!0(c7tBgiqad{ zu)fi8hWc6=if!e%hw#ib0kUQz;GAhm84L}+Oj)>v8n6`WMD@@MC7KT< zfh^cTip;ha4d=oG5t`WWgK*Ks!>cYspEy}NEQ)j5GoIC&nY)=68KHY|ESGZZC6SK; zGnjNuLpr)(HViagezg)7y^BeoibtE?>v84vye9*5M^t~m#oU-%^L?1`TtVR>&s?-> zP02*Zbqs{}qmR@}M3h7(+)8ja2J7$c|HnjOXY80%p>1dT_8-~mM2VfENAgvw2E%|NhORPm_ zLm;6Mu>wQbBfifi@fx8IdH7& zcq6{eURk>KFQ)EXxXSHEUsQ=C4!u)&SrFsRd)ip@cvro&Y3#XmTnlzPoI6tC zA@wc?ep%*9PCI07Ne4HFO~pEG5rJ;O>%p_%D9xd0K1tiMQZTV!|7plBHLiM(mBRr` zH(SeD{!#5|Q+&(AE?PkkQRO9H1_r@he{G+Lc4{r*rs;!c1q1?UT&-#2(lmibqq4wy z7xUl9z#-T0JI$OsTq1$&$l&x>%<7@oG$2pyD)llQzVUVr$GD<%2zY;1xA#zyksU$@ zH#bLjESrlI82j}~tJN^?mHtAQ<&M8RP8NAe14N9I!~{K`U-VdT-w@isWs(#DMZiN4 z1VR{|Y=K_-eB;kJVGVBH;?c4TPI~$bVhl(IlZT%GQ~pr&Y!TMyJ%GWz+zQ(%kTMcB zIuG6&$jSL!N5DmO?QQte6K7rmOAy@RHx+8 z--2&hls$#->+Qnf@`xT$w2w6FEu8nnH=J6+G2+dTS7;(9Yq_f6%D8kr)+`>PEk7K! zp@>B%0}%jz0y_H7=8#rdV+2OP>g(p``VY0kyB@9*4z{%}JvE4W4@N;8jbPlPp%Yy9 zx8}4IX)%Sg0iqFWp9i-%zJirJYREXzd>m^)zYd|?0uK_BS;~4P0Q|s(`V=K12cTz| z1RN1Vutw1iM@)ode78(`lr5@I|sB-9?j+H&BeS&42@$Z5CQ zbL(Vk2;zIZ4;lgJ8`Bvo$=bf#ut;~G9YoBVDwZYK{ z=oTt$KN?nS$;5cskwO>^c?UsD$huMih=5i(J9C-J2-SA;itJLU7QpwgMd(y2=QwH_ z(7S}viUS4Kz&v*wXS*+`Zo}vIRd$~}ERH;K@#plZoR3zT_m;u-=aocB=jKQq8_BrK zU^5CFrMHND{9HP$7GmdN%G0=b4HVtZsn#TwRrkiT$U2HjER+~LFye^SNk)lQ`j88# z6w{@`(cyV__skBZ=??M_#S|DfQp1%V4uRzo5HOAUE?8D2gy|#X4MRJ?r(oy}9I59~ zwlm=E)lPbP23d;>Q#VIHG4lAZG-a{0T_XHt4dgSBanj{!X3JCwa41#5MMR)Zx`O_s z7T~DCV0$#@J(Lx(BMKs4*AxUW95x#ua|pyJ%uxbj3{>po<_))OQ5{r_!cjugl+rE7 z8M8pMI^7gq0x-1>0@Wg3&l&AV3LJNOLB>%vzZ%)VCILs&iB?<|4~yU(GMvv~mf{QC zSv;Z~17~z5V6Z`*C9roYIZxH>n!fjcwC$5Npz^)E$DspvKUsD9QkNQGe))>1A=i<= zO;OXJBci%p9u8sl)oqXuIN8}$BdMb}cq@gm;tu8jCt2Vq>FKT1c4#kbtax<}8PYPHeee;(!W> zF>*i)<1#cQp+V|-J6Q@)WRtO>y!m{`bjYB^xh>hmmy@L?^zpfqD;UjEf0Ky(4zs?l zZ~VY$Y1ttpFSe{UUd{7%Z=TEg>KWp!du3{vWDo zk4%2lewXISkQ1U^qFf-tDyS>gng|P`o?@C%6oh;i0)&4{XCvL+L&AT^|J(Z*%-@qd zWIe+g1UhW-HovzFE(2Mwvhoml*QsPe7CPv1g3kw%DZn6#U}224m_!nC%Z#C3rkSdIg?7dT`>=;5aTY7 znMUQ4_1(23rf7BKF5Sdc*W98M8|ypZSHby|@HMTMvwXCJ74RwQuw7J3S_pZXQK3vN z=9C44D>0&zmwklba&xq<4lZSsmck@C2sIQgqy+^NVGD_KnWB`TsQsU#%LHU89DDk&yrH-qPP z(E$LnNm@p%&dxcfK@&LHt=dtl$OEAKXQ>q;pI@Xf|&Ug=7PTvP)U?wRvH}hWj5KD67m|u%>=Rc33 zU@VX{97FZIJ;QWCCdV}gCiRL=L_|7}1?$nN8thOjSrA^o3_x(HG^Dy4;0#KnC0)92 zFwxvl1r+w4aJvjGSk5&>%FCE+7Fa=IIiK4;UN$?3&4B0);jb@b2dP? zpK{3|y1Uu6)QR`S@33X-I?cW&{n8=Mf!K~adGAZr#18u;oQiT@l%50^ZLd%tiBuRk z6FfGt$h{G-bEgv+!a3@D5}kNsg~-mlVMHt0caWoDJ#wKCoOobR5MLui5Md3yo%3FO z!NMTKLXo&Qh%5`bi;xa+%ZdzP3~6}p@^=%C!qLI;N=JwaTO6~#^p^tjjZNY=H3Sb! z&ArFaV4m*70SE}FLas+se=1G3%#Rw2ptYWL-C4lrk(d!)(YtfAAm@{vz#MaUmn)^6 z_YQ*9Je=5g1ZUn`+v!P=k&*2JWw!dRTE?p1zu3w=O3+v=r(PdVEppyZ37g17d}{+3 zcC@y+o43#i0WjonhQBXCt0d1tDj-3S(k!H|4tHHdpBAtm%9}AYeF6OfHN@V_Hh| zk?zTa?Nnd}%YmjsL!H1kohNLTFoPnpg*(titdqJS@*pC)TsaFWJZKCH0t|~}=cW%d zH>ttUoAc+YvUdNMd&=>kb;$8LAI-}hZnWLpgWq1rlNajQmPu(dWyr@5kgCFVqnF}u zXu%r-kiyN277JlNbCL%(Bx9C<=en~FgVOkVi*4;q2{%B2NL8W>f69>lr!X%6mwzW) z?pH_@hfOC#bMrq^wr(?YL_!?IKtFju$n#dKw55fOqM5a3}cnW_onAlmh31+h6wMEORJIp@#lTOn$yqGq!Z%Aq};)3 zR-zJU>`HD1e5V`4_z)b4sL1r;5Y7A~YJg!$HwN>+Q#x}VR!;!={tV)dGx#?7QNCqS z(>|HWv2&iPr(|fynxI*1$7xpS$cEDCZPCV@P4m46K}6m(Vo6+OyRaBq(2mJx!iB=v zX+vfcF%~D0_{a-UD^2DPWd%1<*{>Akc*f~z&p#zn@gm)#fMTSKJ2Y7i+VyWWK zoxmn6TLf>Ee|%(NA?ogJ#J2O>o1pNwi+wFSqM^+!1yM-H+^GL$oE(E2ur(1JBWAtq*$%t*vy7r@LLhLFt7CC&oTU15nb_mpFL0*4MB+LG53@3ucLflg#B6hsxGcH)Dn{m~2=VP|>ghnMue_2qUG znb9^2gL5!F-#&wQ-?kN0-N>mC!a{;L4;K;=wF^~cEy;^d0eec~2@W`SF>}m_i=N{J z$|!(~R1q=-)}bXg4bfQ2ct-WotsE|NEu5G>0N#9^j!<^*k6h*JFV$h5_So9Gkv|>L z?f)-dt~v^m-LS&`=My{G;?YVge@f9l&Aknjz9;sb>nhd{xGfWNY`_f^;HY6)EEQ%$ zu=@KLLgq#WIACD{qZmj_Bl#b?Losf(5eKsCz%kS}J~^zHfrQ3VGZW?c4kORlYu^c6 zKzRf&D2La!?NTu3A&+e_y#!k^8<)!d3=>in)(h*_IG%Y4EDP*StZRVO!Xw|Yoc8dB zS3F39B1EDtwG~1ez$j57%OrnP>)T>6^lx{%MsWi~BPyNY^uk7DmprG}abX1-b09+q z7(7>Jr1c7l8_Ln!scMI)#RQMARZ$#L+tri|)6?KAF3Cs>G8!K)FwgL5#T*1oX9yhV zUq!0kNyRcPxX|KvkTf$Y5genky>Ti!z;3Tyr&OS$LD_;jCq;Va1Cd0PPl(Q7%#Lm_Ta#CbwGu}+)BD7Xi0S9KGz%9L=Aa-3M z6c+&m8$`B*uG&6^r4EvEUPj;HD)e{x_U;zE&&uR+y0kgf^$s=+?*)+{rnSO#-mde! zpGyvJ9lYDQci11Ia2)c4>VaBQ!CqNT2sPy_HZGBR11y!Jp*-(w#stzWtw{Sk{};If zSs#X5Z+q;E_PT%0aWf*{2l9I#gAJ&TR=rEtLfCg(3vkubMwB+lg2#1QM9AXkB44}W zJq%YD;L21SrzZNVp3gml`g%e=eSJKvop1=}D?2$?|c5+CHura2rf5WHBjh~76Ko;S4SP6d%7 z7V+}jbP6bC$$Ai8FMVgp;`xK{T;_loCk6~T6--^M@jNNmLgyFOD|1KUI2q#3IJCZN zp5!w)H^$c+%7E$d{*S}w%G=4uGzh&Y!S^wD5|l#ElZ$Rtg*9b>XD!@2<-HEc;>{M4 zbYSi_wB~rtn>-3iA0d7Fvc}lpQ2O5_C&xK>AV)JNrQ7;VrC>$vkF;)16a2c%0SOLB z3iX^jlSV+oR~RrBa9u}{C=CO~3*cB3HNFNM-P=Kv-s^Bxy#g@oxZE^FM-CHi;A{I% zTlCgrIai1v^^^-+G5euVcL3uFfgHp;em$62;Qm;*NSWT2F9U4scFEcQ=^xVr+Ah zrK_L+o)S#h!L$6p(PYOg93;-VF4xFoY#<3b!8~&rxA!# zYGk7l4e+m$1pn+MM3|Bw$D0mpggw!K*N=10LxHv5}7RpjTd3zIt7Z4UhH9Q!3f zfHG~|Vgz*GQHH047V)?CKkz{PKIK*wArK;7h>jeDJ8}Ob_ffouh}Qy_Y?%VX+GJ#5 zp7HmacYhy^!^d@SJK2}|NSD~kZwEqDOJ0c4q2fcNceWw~S_th>^a=5kl9a#$w>*gE zPes&01C%MO*>*~lo(@c96>b$MhhXJ{_wj5+3_E3$Y6d<^p*i~Ee-eQgYQ`DF#n_#J zv{_QgNImVW%w-Z#3G@6?uql&;Yc`^&UWB^1o=ilSOlSq9yfAX{cfa;%#GT@g&%+_M z5aXk?KoGmvU~bG@1+VLWYGDsJe8d3E5!0AT>~>AJFZPS>}b_`!?RDjee|C&x2xsAe=?Y1Rx}f`1O5l zkEUx_uJIkjMWVm}L47Uadpf$sz6R$@r0j@z(+VuR)u1MY0||+ciLbZm(g~JNxDql3 zsgm)X6VpvyN^(Xf?ExV0$?irZJ>s9z-yuB34=^eSmlj^8pS_DnfoHF>KJrqVP z{rfpSCE|{WD1)~4*J$bc?=M5~P`3yR6@|bVl{UEW8>cM~P)c194zdY9ISJ7Ix|fP@^yk)E8tYB_oVEfxz+tV}d%;@D4r zf|ZBwT}K!rCP2#>4Flcj7z|B}YDNr7M}$#$A!IuI&UZf-cZdnh_45Lv28Hx?PZ{&G zltuUNdj3bKvGF&{^Zd@yObh4yv_QY=qCylj420M;8|~@#Iu}2jeOwx$Vav2a>N`Y@27$j>)s6wNudd<$z2%hh{wSu;V!h2SRJJwsmO&T$?~a zriH>nu4K8VH1EvwR3DmA^EJ5K$`^_IbyUCen8)98 zRQ|FRq$pe#S)cooQt=WyvhD@Y& z;ZT(r;vyY@36ANEA<@Z@w*+bb2au6R4iqt-lRG9~W~xahWi{}_#15#gbo(s1@K^92 zD5UqsFOZe0_HbU`(IKAr^)e*bKUxt7_UZ9_tZ)sNnX}nwd7fUp`>4yusn0e8*2w=5 z#qC8aTT4ilT@%}bbm0D2-{))?SSZihfuR=}-r1%t~6d=e&%Jt=-Jyiug`-(H24E6}A8wMl{G=Xf* z3L!A(u-m4A!{mCE{Kr&4M9*9l*^|O56oq|Kk^#(GIC;-C=&T^7MPltjXV*$2+W^P} zXgd!)JTM2~A5i$=`v;T{?maR11J@p)(lQVB4p<<^%YFB${hv$cdi~{AKeq3A-(g3u z_r}w<#JzUiAGyP|ka>FVIHx#)d5^#f$i-q4IY%QF)lpRwH3Xhkl@ zqPxk`Ahp$j(zm8lo++cJ_5KDFyWUx8jtk_HdUd||)K8ScIE7+1^vXTgq{2oR^-k@% zz_5OeuimY2;r9M_SX1tQCu@>;P7^-WbHvg41H^UjD5BXe`ILbBp8~p$3f!#FJ z?1w6jmaWX?MLjZ+?8#?*K}zf~uixTR3R#@n*Fu{&pOd0_dDV^FLXdtf>(wzZ;EGE1d2 zX1(_Om<5_GWl=4O-me7Jo{Y9(Fci%6vo9qqaF%@ua>XWoW1g%NEf@CnXUnr~Xu`u) zbgk8lDXN*F*p*BRR)*Wcdc?>OYfnuYVr_uEOj)wj-I>)wsi|BzT$PAXNfE0-Xb?fx zLh41zZEB`gQ3~Y!-%n}ssY*-Re&SmtFM7+Tm5pm8^-EZS1|vh)VrxKg*NCGlb&bbH zqR=RU6P2`|;28l}vyivmJhbB)X1PCIvASTbDqp^#*denqQqVJ!r?SksN;UB??0GS& zLM%*Ji9oWZ-W|HCkT<^5aPXrl(#tEHBYoCz!-g0s74r<#yi5*TE=>|k6C+a?b5pHP z6~s5row{jLiOs-7-x*=36xc4_iL+NDOFmZAHdrH2ZRQm9e3 z=-b0-Dc9AEF--7QOP1-riWI~`Z@x@6Y$arnuCdl=HmQO7aWpC=sI9s7IJfS*1L9!8 z7Ct%-QlbY-k9BV=B*s|us>hk!czR&qyW~z~B~44PID_MxppL6E7=kH8qL!RhB8) zMK<;K9Q)Nq61g-ARU?~GT{~}NIjv3m?Wb0Wt?yLe#c$=*l`z9vo3-_?Luz>w6grL# zWVvK}&osFW2MDB+eHzYDg==aY1nq97G+OmFPr1o1;EV2NnV^XHTEtrzFT?Mbda zYO^@VOro(0?;}4x{x4;Ksw>*spPH%llEK5Lq-bBn8xJjGq2ZmsDkD; zM@Fg}Xx|yNkXnK=tr=^FOWH_9TriCC<*@B=LfgG# zh9Fb3MGnhd%bh3KdO`af=(QWrDl=7$w{KUKsrz5DQcbvxtp zzh0DATUJ#|l2xf9gUeyPB&p6SV_avFWm{)LVyedHMJLyf$mCY_cZrfnH6xXhgW z@$WOjV^~Oe^mSBiN@qq?E;;SSLN)QNnpW|KYdMa#J3+eeHTyHI(7pT14ox;eh& zp3G`AVc#8`1kuOKesp$X@S}K<;0JP>!BtL8LJQlwc^8kkcy?1L@r%e2aFjP_YiF$HOBjmnDGD1upODLGuVqPLv! z@NTKKU@M|x^S0V3U&0ewRzr;t2Iw`1vGIENomRb2(Z7k-t}`EQ+cv3iT~FmdYfGnFS!k z7!>b6S+1QpT~XSmIDtZJx0>~Y3N68$POuwnOkqt%M~XIaGc5C&gGT;PsRJ_$^CFFJ z&lEGXFgk%fN_2M9Q$#X#P}P-6bMGi&kljoUBXg$XJc7U5Dl(A#Y7Wc#Hud$_oOkwU zrzrT{?6lrSNLrB0S#r=2*M+sQHr%z@T%pb_isl~bN-mLtgmx(T0Z0lH2B(4YxT^3wi0=a(8j)SZ^g!!Q(YZ`o! zX}Y*K95o>3wM(_o22{3>fgGu-;~hj)_eX4Vi#aiF_KZC@Csgc7N>%S9rA=A(AnhE| z)JOz$c?%;z>tXhFYd&1bo>cU@V`2i~cH+jRH5XDHWCX*qlU4>}1!fY|bDotaw057d zax?+XCb-| ztlUcR&&1;i`2C7KG7u=(R2VPmE zZ%1ko%X$@3;7Zg*dTe@bK>6`fs;GCA9$BYzffhKb)jZWU!s7N_Ptl6_cS;I63dI_cA8XN~LGXC3U%gAzJ;iWuQeC^ro6r3?u5sgzlx zG=)tyKs1(&g=C~0qfljQ#y)nA@Hm7WbP()I9K7_9iZhN2hbm3VZRugf6A@#a_Tkzi zp+y)cfQ8ky!VGCToz-0|>?#r&cII_87oB|bM+IW;h0Ps~GWHRTVY?GTd{ot#{*@K1 zB!x+c6W~b;q$@F%j${Q(<9;zh^6q8FI8Yq|6kp-1c!?f>_h_=UqkSaDRZLU8y%YHS z?)ASqx@Nx2v?UacA$gBe^rJ_H6F(c}cc7`6Qqffe>}+~ks?02$vIA?3HnxN#T$h}C zaX)FxDJ{8&LSq5Bpy@kz*?t2Z^sh=C4(2)HyR<7z`p;xpvn+_yakG`@@wItZ1=hnt z{pAB6v8P;&4HV1uY{%X}h}Xn9f5fXb7Aw~K$sU`Db%_8Qz8U_Ygt=T{zDXAq^)-=+|O zm@1jK&A@_8DD@#E5@IpTTq)B-5eb>c*1j9naqsPKaAngiT3;^~+`IHX>ZwwEniGlk zbU$8$+Wt-2kb8%7C8C#swPl_3f(Nm38LlI6l@Bq;qiRJNX-;j#2FC5Nbar}j%?>5e zT~mJ3SG4`ptDj0iT!={;%4I)oVUw}M68YP;_Or4o^|gNn%`!Kkj2Wa@N^>-YF`@`Q zhK7OHYyoZ28rjm=NcE;D*ioebNWm-W9BP+5xh(SOiWpHaU_3r?*Zgcac7wwdgNtGm|Hl#6revXaI~sL(h;PBOJr z{Zu-g%nw=Apg3fMKM5VLQ48$A*nG?ci9`|l*PiqM+6y`U9W9Ba5%7~GL zyv{cVJL_4E=1oRnPHwQu?;pua&D*&~uff3ly8C*Ap@n62_FIf|8B@ZZ**4P_aFaR{ zn#W#xbCW^2a;a4@ASCxf#(7n872l<lRH57N#*W;T)k>!1d~eq3nPH!JREn5H>==t(Kr8Fx1 z@tUiuHmU0zEktc{UIfbwc{)s7K}4?=1vOaE_XYDRp_$We@l!RriQVWGeyyu)Hc_$% z(p(Z%6i|C6x6ssV=+^gSV0gu){evbVpk~BwCzPC2 zLYBEwYQck8h~RBWJTjV1Jf=7*fh;XPb!&$;x9-ukObslFFRa_WM zQq6&kGTuR+yM8oSj*GBHGsVy5L2OcbMT$ibOPk+Lh66-qYDIxaBD= zR-AI)6PqXXiz^2;qtt;yBxxrD6|4uWK#|grMxzH3l1ZoG7eq z6YjZ`rF+bn**6@9fXIUF(%C3Wmw?1EJa%nBEDkure18%Q+4+in9?53qU`}k(WwWrQv zHE)mZ%D~3&31=miT%Zt>D#}fRt@prJ&1pP}+~dh0*%#1LFilWLjX=WzB_~7&)If`Y z<8iyk7Ex79r3Xn`D-vN0W6i}S!Qk0Zl28;H@3t05Fs}zyc?pe7CAe&3cGCvkZFbtq z(m^!DO`M+e!bQNr)kST7Hq)en+{grZ%Ha=)iW@ovVlWzr;uO#}F|yF~zOO2z0ASi&tQgOL%ULEwQjEy%DjQz*xtm0~%+J+XG z>bUP3go=`q9%-=4c@D^!-jd#KP!l5evvOQxaGVwEGMrF=lw8|iQyQKG6>hse8rljS}K!a3JDZ->f65N}P(Mrmxm!(pTS20_?4^3LVk6y}A#7^5s4wthszHHmh8~T*W z4)l=nu*N4`5N+EsQXQ$O^o$)G?!8oU!GO6S9~2T>S~&u+p5ljOFr*hjdPKt~GA&x1 zj`S{GxpuDN>#odnQ{Tt6BT`|$?{$2X5y(T8uE|c7xygaFUUjhWK_ODKTEyi>Y8ZJmRCK@P7%P9xvQqYzGg|zM8|6J znO{3i?Msk$sAyfik7{7@&pd-(3_=?k>%2&>EUL$GrxD)QnFg_Ikg#rgSBo5)J7+Dp zqqvIg5z3ce3IlkZWQPHHUK{oVF+mn5#FOO+L=;a?pN0k%^Aee;s!$-$Ld*=W70hh~ z-tF6An#H8i>$M@FELdiVUt6o~*)uw|a-(YI#=+YfYljtM>a9a-S5*iN^r;~i3#iy+ zv+VMn!hr-q&x}!&$lWyVP%>%{^F0erkk4x1GO@4gcq8(5J7Bdb`HO>1tYGmR7?~I@AUeQtWhPd?2Ss2WT;m#V8YN%jXR3=>s!W4MWbVfC1PG*#xEL>og$yA=(l4f9B z*s=NNyV6IJ+%ofdJdD06=**ubfAyhNYi(A#o%2)ipL#-wWK5=XjFnap1glK0qC>Lz zO+-=XogUpvO=u^*sIJ!pd&HEk>et`RwUd{?VQ7UIY63GjI6d*3MMt`?Pfa5kHvR81 zjv{hK!!=T~VhYK6>#;S~qLQf0ol4KCPv9E--s-n!5Up3{Il@s*VsfE^dLwGAP6=>r zty>KvuAN6;f;@Rjl+~>nve7l`Pim411uz8}@e^Qr7Dv~`aU*%k$%@;(hQ<_hHp90B z#6j{%`qEMfEMo7_v@BD`=VdIqY1guWwkF!FonFNaS%l%~%=9 zr+$ek)j4vjMC%wOLJI&oK*hh}vGpu9$~9t_*#d1@pSd_~Wk<}e2bz0PbrcO*nX@#6 zEQ6NVrH9cZzQ-Zx)YrpmFkTr4YD-r>gyq@o(|*^!`xB;@*-;|KKVE-! zy=s_JP+}8&&>6%=0<0^b+0S`{;M-!GJ<>dc`3Vt;v&_=Es#n`}Cal3*LfIlodyKA~ zEw^JZ4r0%ByYxm`aS>?1GPd3*INV7!N-45`C5!?vv>){t7lVnw_8>J&;$2EAJgt1(MoWpMKiD)eVVr>^tr8l8=UbS`hdX zBv6YCY|YqrJ$$o6o1k{XYq(ibnA$KW==9aa9vpmV<-YDITAMew=F8hluJ7KZbE5{# z*_B#mYLUjSc_zHIE`klIWxW(E^^pvPo7D8sg|nxs)$qEJR({vR=gQmcnL)_g#Pz1( zo54n#()M+9QWKdn#hjSeYFoyZFbtX;fUyVr3XxMH%`)w{C^BsoX_`#W6x1B!-t&*F z1>D|gpf>VyLGTn8j@YpGi7OzcW~5K$=Rxg-N%y*sh!^ zB+^XUdB>@yCQ-1%!K9hoi3UuA8;dTBGdYkkQ$8w;oe?Q^xVktyCZ&c0TpnZ|2AkWT ziA)Y-%7Z+Ns7>qZ!uO1_yO)@hycg@p&99h;Jkkjg?C%pbo(gBP6lk6=oF{J-8?igv zRR=h88cTws#?5qTc(Nj%tqn4D@DY?mdwa+`b#R&*Q^8?&v|S^-aU)BI4GJZp*R6VJ z%cY{)gNTnFVN!PHC43hInP#Ez$Sc`pr)4DoAn9(l+eVeoS0$WKnWsA?SJ|8Jc97E)1Z{8_s(39rbdxS@ov5_|)w0Yb?ydK+gWk zAG(uQfN1lxsyuCZsF!$I$+BPrHW#Qwv+r!7otdZ2BR89P%;gQ z{-FYRVlcLh^UPp8L&C}D_wk@yzE?pwnawZkl!C|g<^ofWSqGSAPKgQ!O+n_Y<3)br zT)G*>YAl#E;6#eG9huZg!ewkTPR7M8ZSscH{J8jl3Usev&0d5#>x-tM239uFrrllik8ssSG(pdzZq z=B=3sAIpm#Y^U{L%8FC0Lb|SUpOk#J*({Hit>c@n}ju??xeAo5~%Ci5X>!f z9}pyM;mV_D?oNV3IL~qFQ5G1+gN_NP_#4SgHd1BhQT5Og9{m){6c;UBusOiY(slF? zoUVda3doEJUNWdvR0WfED)BNR4`O4%<1?r^QAkyf!18@ds(74Ci}N#j%o+L4(GE`6 zPCaU2BPOib?7rtDQRv=!vhGiSn+Rr6Ka&oHGf!*HjF8J1Zd)naL{n(YEeG6lNUe*m zI9tO+l$eyPLjqhV0~mmYOy2Hm+?so*?bXPgt5lq~3OHv)S_?VCy+u`rJ$!5oTVGa| zG5Vt^IBf1^+PSArXhbPMmsO#zIr7@xHBn3(V&M&SaLdBTx6H4Ud#62hb|kEksSPPS zS#oDpx2u2!84SbqAvt`7zB=9Oi$)jDD?pB+J19oN7U~EJ(8>7qL|4LZ2B1O=aO65X zej%Q<^K6^MoZ@jA{njwlW@S*`dea3+~#trCCbu8g|S!VfzRXghJ+Pl++ zkYg8Y=tVrq5JHK1c@d8&VnP|FUu!w3LNyFW)~k~El!*ACe*%UhOIz?lRw2w})2Q7i zFLh+iW{2->m}L|dw5ik#a2>VIR%`9(L1+RC{ugn)H~@B7TG<(64%|#E!yBoIIpVPs zSd7-9w5kNpw+nl?tu44ioOc{N9U3lvNmfW6R)c&(3`YL0wJ8>*J+)NJj9YwDSY!h*>0f)30M%$uC9vS(Oe{^T&@e5mZq{b zVy9bDf^uPCDM;wVVtB2xd#o@`8IHUl`$}f0b&OKB3=fn@X(|NEo@IgU7KCX;t&qKI zL&s_O#m6&cT=qNx?{S98+}7R}>c^dds?wG0lghWB%!BZrDZ)q1!I;*OLr;inwKZ&B zG?%$LBXU^1SO}rwW(R7Zb*3N6G2+Z4T8iPmK-^7yrs z9=RfP$CL>5pKM|#bk!Nk63;`*R0`X0m#yEj_T`zbIZ~r|VNF+Xm@0%LD`sCTNMKbetmzzTT_+KdJW%b>1f$cD2zX|e#8#M69A?UudC0p#i z4)6Cl`+c?e$f`aNB@-UeVI=)BfJHAUATMinN&8cnw4kV zQ_z+Yp|?Y);Y~yP==b&>E(bV?l2JB(1J^8un&EG}r{!r#GQ~ zg?Zy{Zm$b~kTK^iB)mRN6Gg+S0#jfW8iz9ET?6RBIefBn_U<%@vs3Fq=8=ZaSM`qbgU89$qi zw13T5()p%`b16f8ahW_9OJ*uVj^HvVey4|{!^xfbo4c7a$7~_B<&MItZXG^CH40Bh zE4^`fyFz7@9gP5(JvK)x9mihrbE4jVJ2L~IXse;s&ZuQ8bZ13y#A;cV2qxakAm(5S zs;-+LtOuHS)4OW5v){lIa}PNYz#-d}^F}Vp2f(agTiI9*O5Gg*6+67Q`DR+=cVxSbPaeZQM);T2^x9wg=(L z-g7yo;}jexv(VVOWlvJY3=`;i->hj>8Tvh>qYBt_NRT!Us&2DOV;OCBsQFsD*{1$W zMLM@DW4P%qbZw5hI?>H2E{m95W-@oN8Tfjka-WDo`4}}01GmnL;e z(-X@I5|&YK80!!NVx&P;aSu{>=IA(~6|ma*c3zqU!V7B1642fe7KzHe{^}V`PO3$b z)RV|;YKW@WeiaIZWp5%5)Q+blpIUZx+8A?zDq&^Ewb)18n{y2&xx745@$u%aP%|F$ zcWpXxcwCkS%;kw@ruYG@Ii!>#o6Av^LlR~%3WLOqy$^+m>%#@fVsjWdbZ0c%Zo}0@ zn{k!by))S4<~{6uV&D;OcH>ISkNMF|@_@Q%9@|(cC=!J%7=X3~0X7DL+AVnzfrbMz zlPS`Qj5z4#|ys}t} zOCt*YSn>eXrG20E65_btRZvi70K=CC>oZrhB;<%B+pur4fxyT zwPUI)oo`FxCL>2frA>(wtz>ecf|hjIKHDm}uQ(*fbR?psQf8=mjG3OU2uXSwV|1j~ z%`{AXY{mq77NzZ?#TM8pOEaABOFr&(X$6E_p_CEvTY`d`)365nmK=3?}n z252+&A+2eLtBwhZHLJTCjoe8GY_!peed-c;#W`zsGySz)(Q}FYQ|_gjM<~uQbMx6x zA)~;~vCVE`RWuq&KW{zt(uBPLH;P=PSEk9-OQGxUBqC=U5wJuK1GDXNdiM_Sui-By zjjJQ8P|-G%`dV7^ppYZpA$G1bPgSWiVBK@H@7sigCJU=1vRo>)Wr7>`j4nXPeTsI2 zsqvl)Jvb3qTCjv{6$1wc8^>g3&Hia|W3k!s3gm1OeO3BgHM@!>xm&e+9r^$=F`G@$ z6eF>PzK-Ox+`c)WTDGdnr>8Spbv_BwEtxvEK&W1e=$)F&- zlxf#9)y!;tPR&ktZ%QQXiF5Pzks_Jn7f&2*7z)xgrn~J=nc$mQdgwG2(zB00PW84= zwWERR&AKLD@Ym9NQHR&*sz8KKt)hSN3gcaVV2tJaH2B4hcymnGFCwHyhg@+33-)siz^PN*k($I=!*v^p$aoO8fl#phqZTl#j@yb zJK5raHKp`V9WOJj;B>1IC0azbsm^4ko&NsyP(+Q}$1RE!s&B%D^YC(Z?J+7#Lf)V% z`b{L!{b5EVm9?zL zcdCS|fQT~)HD<4%_zv3_yyF6h(8DlFOd*|Jd(6c9s;AXEm002HKEvK2Y^K0%>orhoT$Gu2UWCe( zQnVrBM3|l|t~DuamV+A+sy?wS_+jX0?pmBgXr#f1q+)p}kYkUZS?I@{_u3d=e!qnW z(}uX|^G$22#UhkbO+iy6s6Q$o(yw74@XuDwgANXL@bb%$hm?b{D8RW#rHmLwr=*y& zKU`t!BZ1|3OUdARh6#sT(Cw3e)mnT4!CkL~`&G2^iPPeDpQH;@xoEMN!rqq!7&{C) z(0rTTYH~2>;3_F9Dpz{D`WW3hC#o}0uX^=0j)&YuBH(odjGnHeq-=IuBrqX769WI<%%oh};O}VwgW=Bd}Q-kcd4510s7Sc)-Y4S95b`ldrdz zg1nZzmkikOkmNg*fVXFZf$v`%b{;4pAt5r2vbwea}N7&!9|E@R5lk3Y;T5+|Ien6N-V!@fP|1MR_W^WVAd3L~U!IYAmNWBNTD)rVBtBGHLkAO+k10Di(_Yp_zel)ch{v}@JikzwFQSY1rJN~LGa=Eb2P5IzTYCKJSIt%w z+-IfE*fY%5L9bqcFfxa^$A4?Xvw^KvIJG&rsOxA_;1bG<9(Pe3yXran>vp&Uw(w@q zAc5TTG4^H$0LQqVbmC;8RJa9#-v06jI`9L(nAu@PQ&#Yb&zFjwh0D!;2~Y_OBrfiI+NlDz(1A?R*hSRizq*wlwX z9Hi08doikpDQ_zyhvA1M);m|d2;^_>0+nvK0b)0GvB4NapI+qA8$i5sk}IID&R$XB;?^t!8-a8 zhYEM{^+4fF4*mJK^r#nLSS+1+qtK8rodUCpyQwgjB@oKUUN%FzC~ZZz#$yyut z^Nw=mC6l5uX2hnz!Zr7a;Ti;=zrCr|#yJHFUFzIQ{^loH8)a|=F|(I(@^#R|id&EeaiTB4&!jN)NSkAthvzcdinJYl+9cJhs1o{!h-{zL3DnIe7smX-0 z^f^avZAMC2-uFqlJNyfYi!+OioPXzcmKrRwCZ@#feFI-;)5#0D!AkG}AuBUnw;>nC zX9?JYpYBuxa@EYV7qQ3H34%%X8;eT~(I$~fzrZrQ4LE6>1L_BWNxD{wcw1Cr! zLol&WM)y?8>bdDG|mdGp@~-M#!4l<1*tHz~_HN0Hv& z!IK(jGbV@DjcX*_S@G$=Y$8ZIaHepX0g&P*0_SQ`tZ~3|+mO&8+F-wo@@cCX-_i7SYUa zAz|&0F9&Tv8~wa%Y8)YxXyFM^$p#Aaj}$nq9cCE+aq{z6M^i@HTO19ad(pH>%9pU1C6gl|ay?*=@yz>4*&~T#F zSWPO^D{7IwqdDA!47cn}F-}E6X_01Fr=8Q7A=o5-H0-g`)`e!LP&MW3=iWKuCuM#U z9B<_1Jn&_~#j&+Zf~(exujO-+SBV9f^aw)Q=^8b}++G@@p_)UiLcZ!ZRj_`PE+lio zzKl#+t9{srE|Gg$0<2(wGDs~|MmRK-h8-9O5%Gs3)G#JI26L&+>4PS^oNkVE`p6zF z+?2l zjFF<@0kL1>I}fCFkXd^Jm`JQzNQwcU)JHqV>Yh*{iD5nH3P?8%V$JIxq6ujz){ecm znUU`}8jsmV`s=FOwrOb`;t*}4M{(a>)zZ(mnVTBbXL1*{a4a}TieeOoF@qdLHpECy zMh;vbr?UhzNHZO|O^hlqRe9~u`08snOOk4%DP=0#ars+CC3UWNgU-X{M?JP*g>vT^ zB7PwZc48VVdp9G0o$AhPWxz3ttmT*t1V{^OIAY4M@o92Kq=a zoR765+@Oz~E!8RCRU5TA!3(ITve#3w*AGOld$%Vexj+gtNEiu3=M>My1Cuy1px$SP zEv-vf2IJ&tQWaNMks4DJb?3ECb~d|3gkOtq&}ojpGe}$tNm}ox$y--Kq1Xj7NmnrL ziRd`wF==2`ogiw2_qv8_9BDziwd&5A*#@^&)<6+rdLFwi^y6$wXsa20nzHBa626v!-N3XDz zgk_BT4=H#VUfnWP`|v-{SzkTeMhw*sx}ck>f%X`=X9h5V;iY|~RW>0vHO~=}B8}XI z@T~HN-4n1_vNOimS`bVoUJ_-3Lcdcl0!LunweT^UD(s{C7RK&4cGYE;>AQh8I3bmT z!6rr<=-1N))0nAiQqY!Tq2!oC_JISZ)}u4XBcwFpHe4?@^DcnN$qezjeT?DscT#vR zBwV&pn0_2eYv6KdT$y{u=4i07D&8LjVAOU^P zgTq!S)GX)6Lb;~au^Ra(CfVxOu~X-PSpY06kUzL}(c7Tj3P~WyRC>=ZHz7>>V>>*FW$|S!JR1XTTy5_9`@NBed5!q7uSqPua%V$SQ;wnE$|ZHkCPPyK zu(Ti7FB{OdpLvJ`Fd86Al?76M4xr=2lg_F6ZI!*byT=-iPRAI$)fRL7C71&Kw$1xC z!r~BrDwv;?^d%_@(q!W`#(fSYOr4Y|hqWma)0O6To+=6PGsmNqq(|oai!rlc?t=tR z=RuIU3Ftu~vpaq=r=Y6w)>M}abWYpw)tFGN?=bJPaxX>nx*-7=ngU!%{ugc9#?HO7 z(&p{)WaiISx#zl>ksitxD1j#csV-ar0nmXc>ce)PPEN^Af-ZX8F7*@WyHHqAjilm+ zl0=vXh^P{AbWfir5MpHDsNrt7cZYQ#?sR9fdFmmYsS9JN!uQLyZ;VC{^>i_F9%i8Ufc7&MD}n-6_^U>8m$GnmWZUevSgF~|l`43y;4<{h(a3b^ zvIsbv#Hl6{dTNk`Rgd5$>pUSX?n>w?DHu8V+iBT2nFgA`rFTNntZMBAXFf>4sU^n! z`u8N>!uRruLq2=%6Cl)3CZ#BAVW4MFR7XY}v@2_7ZWx3`;TNXmC@9Yssm`tyqPSkO zTQrLFHkXabpyvt&d!$Fj{dmsQL|)s5sFtD;UR8JQzh#a{+JwCBsmh@7a5e%9=v!LR6eQlVOvFe)#;TtIf_c(L zd23T8NsTx|M}G-cB3EfX+Jbvt<6GG{PzR&AtBqPCO$Tsc*CtT))2pJkoet$e&?d_n z<>A*xJxfD*K{EAMP=_xqY^{*JZcg~`VaCg8rZ>B;S)lnt9nk5Pb`fl}=MC+7T?E@r zD@71m&Mx0u>$6i<=2Xa0YM)N(-3PEl*bG__zh`f=GZ)qgdm3`L5Ww+4DlSL4isw zA3t%SHaE^UWw;sz1^VTdzm1x?hljaJ%|diCQ1&uT`ghQ~!G!_f*RK(eG_D2GwDZm& zff9#=4`Wzltxj_cCbWqHHJr-lH~#_0mkl8>;~M)jVqf$gNZ7~hH-DNre1o1`mZD{)7)Fe!I5|S8HM|z(a``h;#I7S05z)Swb1c+U z0=Q@}Te)RJE@vi+cBku&JaW1ym|n^mostFnfb)9+z)sg7Ljj4-P6iF0ofCj9q@!bBmE?W`*T{VQV?j zX)&mBE2n0M&k+CJ|G#X;lalV3g{wdrx^TLY$mx2sraK0#BF0#Iy(4g~O$J`t$76L^ z_VHMVA}YnU2j#<%LV{TFtDVMAKbO98H-$I_5~TZDiO@eN-c|jJ#8-9vhE%MK7x{iGd?89fM)~8@aUs!#i#y+oe4o zf{YWvbT+i-9-Ijy49;dK^s6O6yb4**TY!!sr^Tb*vUzD;9ox)>V>ihYClCLh#J$L* z)mZTq_vCtPMniM4wAtGyGKTlJL6Okint0tV3ac@sgSddfiK1m!P?%TEDpqQw6`Rj$ z(N9U3r#h1>y)^kj6fgH=aU@z?V7ODmDiUjD-IAMH?l7~=0uVyLBU$b6K8;RvcHVv7 zW5Wz~D!di1U5t|Avcmi~5J0$~q++j24BN7awqcodJ>Y)m#8?Au(!Eej+x|{5A52FS?X*4z; z&*-SnrlO}l>h;YK!>a0>20mOh9O@_`n*k*K5jodZ z!)G`WIBaVXbwD@1%wK5`3@UA=3U#biprt7zGi=th|KTz|GC@ z56#u1dni%X>mGY7Ix4`*v`nKNYSB7G&BiE?vF&g_^(3v~vIgX@be0YXCAhbsWHYSn zJOb0%!Cw*`HV2i|{vLBZc zVUs(u#moCEXRA=&2gJ zPE_900o3!p;+}i-PJ5Cg5z!|-2LgbEELe6~v$F}Y=Ei64(m;8ILIm_$w4Nt*v72&_ zTpM?GP6!!_Lm1|$iOjo9Qca9;P5V}LODbW9 zPIEzTiMLNDUj6o51jGs@m212br3WHIA+{!n)S4F|LWJtuvk#!&Kyv?;A@{%BN9c8z zC%^pDRYvOY3URo}37muW9d>jpWZIeWs1*ER+evP6&R}pi8;?B#>mRpH8xj%kUnJUu zo$cALn2ShEYY?j-kX^g)YfPkGEzy|E=)Cp!)5aH*L{yk6^l{^UIde3&we5)yRiDSQ-3Yf zR{w?eii->9&G3F9UkXg~nQs>8H@;uFl;+QT;Akf~jh>uR14Gp;(gAzEDOhT#`5dBB z&-5O23;aXRtddd7-p_@z6{J$D}rn81@wyqc0Yfh)=rG}~fkbBmS68W^LKLTY_O0@yj zS-QvyrrG5vPmkz>xq`*@2flKoy$*Y1XPJ_*v#`(Wo*KA z6WJ^#_L`sY?jk;a&FY(<~gOSRf#Cg2m50gD<#-Rw1olxK6sTnhsoynZ=u0b$f!EJn_> zyVEa`Zko^N@44BfcT=h=U3J<=gPfKqMz7VF5JV~Wlpxb37TAcQIheZ z8kUM7-!jZ14RL>ouWmjU(~SVcbMnA;xui@zQ&G-HdMFbV=Q){Mqf(v6Pa#$ONv;o+ zCs+rkS%Wp6vwH>voqBV!CxB%$f?PxtBd)U?3PLgsIR&-GK*h2%8uFxp0;%VyKCymb zMh0pAWEioU%J_@oKV2Ow!H#=D7M3z@382E&n;!w&OI|e{t&&WU0!C!bTzs+!LJ)h7 zmT7Hms$u1<(2bBPEcKNWSQHJ1F&WDu7gb$xL`1OYFhYcGjSvET__G}2CbI+4hOB92_^=~d+0<@BT`4ypu1*4%*ez`WBO!w5=AI_Sy-OlmhF3lA zCb#=vAny>Q2^O3xVPhDeP>eO6n&xQ7kH$W3m=U{PQ};5#DmRN+v7|lTM1et3It>p2 z9b2uw5w`Kzh<;0zc<3EW?X(l}*$SYEDQ6CO)CLC>5 zYCwv}8bSs`mpU>>jn~fE&q|XvnK=H+auKPRHprttByNU#s2azYJqYWCs(-4bZRw>h zzChKpK|F1WOntYhH@7LI4b!n}Q`q!r|;Y(&>j&d?&mcC;|8H-NOSfOhTt1wQ7*DwC# zqEFUyRKuRsKaVscqcsttDzAi3fd!!=C>X(xE~OO)a}u(@PPCmlqo$NQN))7s?>y)j zlv!cU_?#SO%E>*grd2&A3f3z-a*_t#3gBuq82k0s9j4>M*`t2vgtfT9+qlk^U8fBq zV4Y#aMD;@j7TgRw6{lLR%#DR!WW!jhs>z0(b*AV^M~IS#f|qqFZ)}nZIb*QuJ4+pq ztN(bPP5W~u;_8`qjfLFKGsZ0#fE2# zBjhsGIi9_}RK=FHDpqE1nD^4YbCV1J=wbjn0`a|xQg{@Dn(d&G{jBo+)702l^=oxPm5jp7S4lc=vbw& z^%R-#IO4bSUAnCVnLtG$D<=U7szBM4yObE#rcYs&0eQh{vbUf+XQDw4i7T>6SD*1V zaeh1@1{z!*o-ndlR0)mN%fxw}>H}l4C zANDbl`{PgtrQ;a!4TI-{7$09(OD0&T)!uePxxyQKEC!+Ze5t`nahT|xAnId^(-}vl zY~Gu+bd|1UUD}G{rp071^Y*tIg1z1(TKoYzh$4X8%MNx7rRXUS2&mN9&9__wfImE$ z8fzFChe-TrT{Y8Y`5)M?Mrc8#r<-2lp|Hv)*+q(?^!E-Nzt2hoY|?C5l*+d?C;ZQ; z@p>@Jh|7i;=D8-p3aNyeJg~QqolVRe)`8RP4~X?+jR5K@N|5BKeCTTTQh)d9d4OZM zAkS}fd@N4ZmBiC&*8>b|Zt=_AXTJzmst|rOvp*U?-YWl(plg>=qY9DP#a+A}izx;Z z90VQj@sI>rI^i&;ghxJE)Y3E_2L>JH0J~XA_JI_~s#nv&jO*lY_);U2g3*_{DdL29 zFY8GIVV1R@`VgL#KWgu1dH1q1+~5ODR09;_J1!&ME9M* zOfqG>g!&K9QT$T7cAV@qFPz>2m-=TwC;|SC_j7``zR**9!{%@$2Oy7A{-4o{fCa3R zpPMXJ6mxO*il+|zqilDp_;RrLOg(6Q;RX;1L$;dxAGP%P`|VzT(uprJ3gMKox#u>x zIS`RQPn*2QoFN7i-HkbaHn^#6Rdqx6(e2AymF`&{w^JpGeiIlVWY7!QfvZk!H1F4j zcJjj~!2c!im5uz?r5HxDJIm_n%Dd|?^S=Kl_aNoAIf%L9t|on_@h7PBOWtqz{a9EQ z#`foNnn#Jku{7yf>eQSJJ>2}Pe=PyDiRCLF#Lf1IXZtR%vHPUmMQYNY(IFU32dFr& z^{L%fta^v=d;FBTc6{x%=lIQ8$cAyiNNdWd#3Kn)CI76y_D;bZUl~QOMWeJBivvPB zjST*_ugPCxFQh1a%d|&<6_8CNSV0qHQiNQdPb;Gj^uE2?dpsm!uEC<0br7i7qe&t- zI+HFP(4%sEU>G-5Vl5y$v`C>Is$kUbTDaU_AT86o`%9q=>b-i~-3Qm6e0t22#}S&< zw5l693&?-|6cgH+!Kc3A^XXI_Sagmf{9)kXckHV1pM*WkU+e5Cj-2SRJ0>>}{u6EI zSCJ0XHmU=)QMR|1(}XF$!_@hdPjvWi!N;KdKtB`Rx`QKb0%CCS93`)ffPDSwBN_m4 zeSh8a7E}Lk&0Dx1pZpIyX?g|y2>fP38==dMxH66y(a1?~Uj>jp16XXC)FKC~n@Usa z3o;`wcKaI2No-`F%;ZnGG$jTW+61HlcI~tBE`jB9-Fh$a(T0K|IbCqR?Gz_{_mf z&olAh>_+$_Vu1n2?rX!hwRZn$O>dum+T;`_nkn~=INl(>JvXmsC9eoU!dOrWacvval*yEIa6abcw;vPY9#^798+8qCD4o&VyV62;R`93!8|HO4hA~G zL(-UBs0>F>yhRgx>PBf9u;;B6 zQedJ+Or6zW&508)9HM5T+39q?2cv{!xaS5^^Yp_aBQ-0O!yk=Js>(sA+G@hZ*rDjn83mF;H(1xCFf}yj6o=V551#yi zElWfQvvAre_ zX}+jo<_)N|(>DU5V~IMoX(~dV-sdjlyl3B1>=D-KqrzZK8V#byn_iOE66LOeuEla3 zi15&)CC}AHoZDAQU(wOnx+ptZ=eVlIS#dU79K1ABj7g|=%GcqW2Xn`7W-hU?b~1cq zLaOO~@!@4bWPD^c3uQD>>UE~HeT$Hn2$O~&S_~bbNMsSioYNS>X!k9NDy(McHl+%S z-Mv^dGk@f|4k{pMSLrCqAeTOT)Zk~3jTP1WY;(GTn883ZO=ZWC6}cXQD;xY3>$NbV zYDfnf6m52C4*!@_LwCJ)=b;bm<_I0ZI0izAM)Jsi9-j76@{0#x>({e+VTRsC+^`mK zsL=2_`O=+P&F9Z4qs7lp2YAtgYyGrvb?=qc+o_scr#fB;UV~a3Bp7E$LJpD_BNjp% zfC>|^sAN>IyfPsv$?P4wwb#3f#JsB^HRc&TM5aX8l#Mt|78$ttx*umsMj9+2-n}1v z$ccuITL}4TvOMB>Z+j)HJ0qD7rsS0UB%%eC&L!ro&v^w(12JCI&n;x-{?k#-R4y~v zRHdUC1mgOJ_@F%e3xgCna%mFc2`MPgpk57`lsQpL@K4a-PXWe<9*j}Kdma&~xt~pl zt*|g+z|`jEN-v_|u@sUh9N<-4&z#D2D+zSg`Ca%KbGi<5dn{rnYjzk7?HIev< zVn1bvMv2D?b-?lIOsjR&Ffi@Rm>`Tn=kfpK`+NGP*h?|4$!b%rKdX(sY&C8${`U9N zY7gAh%8*)_oYbI#802}-HKhee9J;tJi;^*sda7ZVirkdIZLIB<2gwLNo@FP;OGhbV)o;FOa0x?H941&}?ZuWIh zTFxGCSwh7Y9^R$7!9Q!v!Vg+@)3W-Wqtnjzrk${%o|G;%3_QJ(pGqudSp|O7C&c>L zP_=^#O`>juOWCZMj%ia$C^7iupE_y3?)dHX=-9Zu*c#e1xcwXaHkfl;KOk1!Da*#s zn!%Vp!jfVLS4s&&de^-Kd&JRJGkvhX?fKg+4-eZ>#WAN+U@}wlgcX5|Bcd7ZX>{}C zD4@JnkxX9`Qara@$G#&Lp8!u3B^DS&P2(!L{T~7oxqq(OzBYh~M6 z-cZa^!i3Y9IS4~X0ZjZ+%J@u4;=pQ6G{u^QMHr67E9W@>RgdiP)@jL6ZX<$}f?)={ zW-zHVG?<7KZwTG79)m^>@q!4;5oKj>MA=<#RHbXSM9ISqb>NvRbV>uZK%>_bvEWRz z%Kn)OY?=DKJG)Ex_b$%bo6eo?m1De0#}#d1p{UmsGU$-iw;UZLp%t+%r(D$JRc&?A zxzMf7gNo}WjDu+h2Rex#jx}6N~@o-9qu7T^$_8zzOnR&VPl2=q# zNKXG4?r#da_<23VT#+7B2boGUD!8+dA|VhR>Ch)y2dF-nZ7?93D;5p3ONdXsR+Hvk za4U1G4O!U@EAg9w5$`{y2MRbvTg+!2iqfg<8q{3@V*}RZKdKIxrd%8tVD{AJvM|8$ z9)edD$|5{k4+L$%xJR2?mdYF6>TE9zIJqAGLzxDPH)=W;k2ax7mCALQE|Fmj@$y3= zNRfhe35rbwvaVZD@(7ACyC`Ob>>!-{nG3ZMM*uTG%)gD;6isGxByrOPdwvG?c@qla zN4g>3Vd1m|LbeiVqrs$7$Vl@7H6fHU3Y0#sWA_!NQGXQ_`A52G@#T_3y$dqjlOeee z+?KHm2%H8G5Gi^Dbu~I_*YKvZuBZ6zsi>0Sd zTJC+TYBHtq;%V(g+uW$3?d93Kj)233i5xo>CQUkwA&uqlmQn3F4aqsU*bK%}gHk9x z$Rxdp4mS^VEbt)}5WAX#LA+lp0#K=fSzej}MHmg>;DO>M7~n9VR%=YVPU8?`IW~r( zTT>32x2lL#kVdekzYX*-7i5p%(i%qV8-@duKC$jcfEa#37YJ9{gx*R?5F9hh%|rMk zJF!cERQ-9lD&G|jzc8K;Wk1a9G$N+BfSl%r7&o|vR{0;#(}*C z6Y>xigb##Vh(V)C*{jzi%f!5l5{+v09Z>OVD+e|y2a0BoF%0B585y#VTWJ%hN#UZp zN@5GC2pLq_*^=Rrq77MIcCqI=`K$;6rq`;oD!Xhs>Gl}QZLF)iu+)Ii4k_mwQgams z@AnPUje9lE8AS6gaH&=4Nx4N7q{N2xLNBFHQg63_+|6{Gyx;0^pLq;U$2x_>K5jZ# z*E5LqK0%l@WD)78#snSs903U;OUw$<2GsaiGl*+K!I+8{;ZPm1NsiOmk9=y5o*bF(!S6P2*<4|=+~99VI!)$IT<_+7 z?qYMS;#w(kXc7ouvv8|tKmCn=qW*nsdXw0*fTOcrRQ5)T*$Xxp!(>4o8Ee(7HfsVk zn=vPo?HG!CLQv&iL%WdT32~X|cda+}jpka#po+@#9ff+9?KWeFyB1q@bjtL#1X3L{ z1;A2+`>Py!>%97GjuV4$o0^tP3BG7#2ADvnd&SmEv(fjG-K4j-%wuyFL@_ZI>K+pk zR?8CP?|gUM-hEV2Kpj=)H}F#y>hX#r9X5b*fv+j8g(od4;mL_{YoyB=_mgfz!>thU=*PL{lM$q-&xJ`jTE9?9bm?@l7@l2R;wZ zwZjzGf^{j+^YxoUN$uE8tp%C>eUL-WwnF~lx5G(tE3O`9rJ+vhy;?xB|?*sOUE`mswYyzF+3MCTzN2TzRl(P+mBr(i`qQ^Jr#=TxsTiPVOwFziQv-!7_!sHn)uuE=tsRwRui#Xi}n2NaicV|(1e!n$9NhL_`UWm_LaWfTJsW5dO5 zu?m3!O9ocucu7J`rE~>`pbNulwX3q_wa=hYGJ*%woT*m&ve;C{vmy^;9E5}xEy1Ac z6mb_u27d%lnS>e$3Qi3^u5@*p)x1Je8DH4?=u?%N>g3E@=(O1QZ>O}|Wj^MD?q|ab zsEm8%Oyq6jdU9Q}t}1CxF>`8eOm?IpLo~{26-nPSaYE!o$B2Mc5nU9q`URcpJQ9bq zzO{7M;y+xGM?W%dhp|qY1V-}jvM7+JxtV&E6Js4v?@LP#x`PvQk2q*m5fKCl`NRjb zs2P{kbm;9Nf|j#$9~TRxL;Y6bbXbh!qxJ4B74umKeKV%$X>N-sapv1Zh|C$tbr9e6-@TYHx!l1sbLEt0>tV$>?mg{BfM(q zxfNO(?vaJzJa>TR!L}4q53n zVGExL#V3-c%;-v41$cE4(xPIQT1|?kGSJd7n8#e)xv>p`B3^HXROjp(Bf5(#Mb{-* zt180pClTBm>{9R_80DC7#pP+O)3Q zW2He%hzV96rcl+zO1yG>B2uBZIyWJe+?NIQV!b|&wB}{d8^=p1&1F5>V^W`1^5dow zW*K=*3W(VIDF(8NBrZw?Rv@1?oQzP)eD$^05{(?wRxsGgCmJX~XhCe36(^Y8TjYkB zE_2OP7je~0#^eaS=4muiB-?Qlyd`GN?exQhmzOh4@d{Q-Juw}V`mFG`R&6F@An8c3 z6R}cWi&;uW+y%aBh|Iz>flln6aWR?G-`JgSn?0yPFxnJwy4`u3|g3M`BC zH3dc}INM>Kb})+b9dyXdVp1ENZP8Q~>yK<_u7xEP=`^`jQR+mgHJD3N%P<x3g+ksSyE~fEp5-CzPwk8{Yd<_EKHt>Iz`UfCr6RfcOH+vXGj$|_n zRnba=>#z3P4`Y-=0WO4;R{lgMZWzRXROKRdHNevgZ zW;%Gd;e$dfupdiOqB*au%Fkj|oU;J(3z$(&DD7vFwpj)p#>uOuhq@D=Om(5aonaXs zthuRhsG&WuvCAH3cH`tFq#M%{vxbl%Xgp#`BLR!o;3^LyaK=j%p=aZTH@mtam3dc- zZ*}{0GKSE_TgHrsf)o^RBUq`(TiLU*F=PZJO*T5{zMOdTvX|9OLpi&Px^yHe8n_$< z8rPG_@d-=5iM-ST>@t(U6=~lvb`3JpTfKYI!mb57~t%# zXICn42&KATqdv^qrKBr;#t04g@0$`*Lp4-7u0qprRE$wI&9O9Yom~ibF>6QX{Z-MXKPhjWue5k3?dL8T>T%_%oWl?bd-DghxM3 zHlE>(3sw~TZKg_h6N+dL@Ki#Uf=pE2ReIc6K2y-zo9kHE)d|#V6$fRhwm5!o4;|;l zK$1EOEWQ#t#$PioYNK#res((?w!F+f6><7vjFxUzt@gK4liHduvtBYZ_>{>Cz!h<(zh3 zZ;`rr^el!cgK>V>Xy>KK>_H~+n z=1|boa_3a|A)hyCH6fF^$g#RyId{gY>_#PQa5+I`9Y@S97 z0&tp+RGuI#O@;{DTXNR@=7+-VzANnEXu+PBNXRNrASE~3$<<-dpXNQBmgDei6UGmczu+T>4X8kIv_Z;DnHE6em@eLPGr_Nonq2qQw5t@D zQfaL5ElRRvuUPh~D5p7sv~0(M7_%ml25p2m2`02sHwvnAf>8vCsu4w<6E(RsB*BD$ zmz0;B_|fBgJ)oMG2P+wl@zZLIl#pg?<6KT8rXZFaa&YB_<{=s2V0nQ^?Acb*4m>al zLFP3<`x9IgK~b{}CsHV!6ti7a{5@2Gu8Ri9n&EK02$x~&8DwXzL~?^pW?`~0x|zf* zqhse4yoAMD)>ev$TbhM#I@+5u4|JS1wd4@5dYH>!Sr7=aF*zMj_oY7J3Qq$R0OIhp z#!3KyR#_f$qZHU&R;OMYbMX5FnLJ)oppYg;`Vk|9(yBEm4DNoVWzVxb+p0hIN;n9B zwfZ)hY92qr^IJ-9dbTDFK!|r4S*skHco1xr1)zQx){ut;{Mw_<_qG063(*}b8VJ7XSfwSkay$4u20pkf`WOqu6uxrFCX8l@)$NKDQ_7=p7f?GpXK z%DLU_=#RJKd@G(dNir=HIt<-= zOpN7&IxKZ>LZ1>e3n8|!RB>bKjm)Ie;<%{izECR*yE4ciy~9O(t^;a2;ki4N%toJR z(!0S{-*$rYV4wb;=x{#_QMxKzl6ml^|08fxVmvWAN}yGxhEgEZjkZxSF((&IhDXjm zg{>GE_MCW)Uotpte1h_~5iE(*tiXn`^Sr}WNF*fCj4L{Csz*wxFc&TkeVL%vo1ERE zr=}WIJxN|~K|Dx-qVr=``~>tdZS+5UfEnls47w8T3GKr?BomA8@1%S7xn?GIVT-lh z>DxC#6fpA2?qh)pA}%x=9Z1+ih_xuCBk0nH1zCe(_-AmfP0ibB4o6_|(JM_MK7%8m zPUoC6>{S|{nH!Zpvxa^9*h5b2HWd<0q0ZdrmKg8hGcuo*4R_ub2%+)R~eObb)a@_Iv1A+`Pv}5S%FQZ#J#e77rt`3jVQw8@-3t+b=aqg zbX*c6cCNCDA1))~npi>s)LD?>pax4Os|r?U%gG?ll;<61mTe8na+#bqa@Wm*ZNZe+ z+G}Tla2kjAhgP{>c_<9`8l6b4*iM+S$AANIjjE<}IEXRd zj{zfW^pF!;`EE^6m9Tb!qs39CvfGaZ#mN03m{3HH#k5lQT+gV-+|2_JJ7-f?y@=;#q2nqw2rG`QS zcz5li6^C+IU#WTG!AWhvk1r|pnvL%hx>Xr?h!>R)g&Ubc`}$jsUI(lFsz5Jf&TOFb$dCIuMxK zVtMv~_-kh!s5V_QGGpaVcNAwz0Oy7zUr=X2PY2DlBeR?{$6}XI)ps3s5P&eZs_pCK zVMep-6Tm%+M{6kGVs$&5IOd)7=4?Ag2@XV4IU9`?Z6&AEUwn`}s4zpIl6zp21G<^+ zcUo=_J$SxQm5T;+{tbt@^*_D=@aaN40B*H*A3jcpKdrUFO7)i+yigxDogv^vL&feD zv8|>Xruf<>uPc&Ds3o0l=V2kJW5}lNr#5bC`5wLV?T-pw@6kF?P-at@!QqBHt6sqf z!m>u22a^~hg5+0PWH-{_(&^*tB_NQD*n_+tt!l!LS{PTl_hQ>%p3snKDc1)Wg-{`E zr)N4}3wVUC5YpP{RgfLABXYIEzs1RZ(}Zu*qQ(to3>CG^k;D z2F6=6@30M*4CMvU#@ck|R%vZ38l+4`A~0)rp%l<=i%XRcc)zNOf+*jIwqsCV@lKNs=N#1 zV+Q-e0L)O!CB$H4so2#!s$6&Rkml1%1OS@nK^bqy!iw6^Z2NqsauvXGex3S)X*F<+ zUrNGq`{(TvL4yM&<5vm>!4hdqWk^p8{2 zAo%xBqvJ(m)4y6%tsptZ64k`7~;)msR0hhD)umEyRSDRbT))0?)cB8 zsjVn3%>$72D=23hMDTs~C~Gd{8CA1pCzYZ~9+Lmi*ghNmrrM@8LC9o?AhvJXCphv3 z-a@rqVWNaz>2GmK;DJ!8lv}$=#{$#FKtqn(k9Hr4`y-ln-eWqVuB>@Fb1sqFffKs* zWR5Gw^WHVTR;`!iqYHOP{PQ5;mR>=Xl)S@0$2Q%%Z9CqTkX7fdzyldFcegfnMBW;G z7AQA6cF=>E{xw+Pt`^QovDY?1ijWcSF#F5H0oU03>w&M}zU&pC7Z^tA`gJp6v!=wZ zuMXGJ(5Dkmo?v|5^PSBeP|ExvhK}Wk9`z)xf;{!Fo3B;133Cm6oe__dEs~_QYGf;E z3Z;Dm#9oyzS9`nEVa*Xs^6}B99jrT$zPEV=NqTQFbXR~Z-m%CB%at9ZAv}H0%om#2 z_Wgenwz#PnjoB{&XB1WO*7RA%acP1Lt(&mxNXb~@6 zDJ3cikYzQLWk-cFDH)GO?4!fWxSZDh_o2CJg}=E3l94Oqb#2T6Q&yzR1R&$-M8}Ti z*4?XAY6f;$*m8nc^aKJx`+M^-i203`#dmopAqWp`F>b|kxz1cwo-{0%ZTWjwRP7Od zFF|u@2Vby@elUCGr5ZMkUY$0x4Z19~IriNK=}_A$(Z7J8{6`M*ryct5vID)xM#nnd zDIn9gSgx`)?|%(y2dslY;yAw;`Nmq*zeO14DKB@V#sKBVDfeM=8=>nVTw=somd}TM z8L7lT%@L8uFPb>pDKIIj0&Tsj-1+Y5^I5tx6>%0LT^aP$l%o196!S1&t~EPWF-$cf z?F>ha1e!fph7i)MmM7Kgae!C1r%g!m3pkLphZ8a5?9WUOQ6lxI{}_lQ>N^UW53ujzrTp~mIj!=JwX2OjPPT=!JE=@;^8YU#Q2WYdD92yu>ZyE%}=#xt8p z@0$Yr%C9XEnd_icr;Riv1iO|-2hG$?G@%C>SvLtX38-(cwrU?bAKX1lLZBz^qN84# zX_X1ah-+s|pxNuXR@{||!AZOwbfts)r(+;$?(bXk%Su0+f5Ck5Zt*cts|HC+GQ7PHc`W%b8JR< ztklPYQyrX>I1bf3Of?iD#nYI8`u1UsQa;_3x^rieZk=!_XK7L#R5NO+5!xE+)q8cm zmtQXpnzF|M3vU0SnW>3-{MG1w8FfK-cC1qMu$9bwH&1-HC5sxh+IqHVjp0n`_E#}q z<+V{*s)rz(8^}FxMv`kJgCmjVqiY7n8ViLKt7t6snE_X0hoxck=j?(Putb~Y1Xd%9 z-W`;8O=4}|IC3q9Hj{>$P*M*P13J`dX?QmN6t%uN-wKbLu~d0s+6mdjlm-4Bk!eZHN|XglbddMvKFW-@_}wIidE=jk|of{Vg1t+^2^ zYP4~UI=gm~H*=qaWQ@6lV4J4dy6}NHhNQ|rPv^Il3u4Ua_Z+@H^>x2Pn^pqMc`RzY zFPD7)^Nn3*WAyQ#LEQ~Hh58b*6)BBRP7V{J6^N4Fta#bU5>yWRYQB%5ec4x9iF8Pr zkP3+a5)XQ*F5#4ibHJz;2r!PZVi44K0HzvFgS|72I&q1WW<|R5vF7(u25(%nheIjX zmp+}m4qPj(j^;vPEB40aDA|D^Mj2ESs_HY0TMoj_OFqsi&LE7sjJS4&R8+LmG*k;?8^NmLM-N1*VA-WdZ^p8Mxa>p&ZXCwaMP%?x5w>I1f3fDWJu_Q z*)NfugKJzc#3jsB&)6w&AQlQ|p_u;OW3UN2OeRsg9*z0_wUeFe#)X;t;_icEtSHT3 zHkAUhH<4b>WoSmj)=5n*4IH=Rg@i>I1VRdD9D`7$+26RT8mF9sF{Uoa@dkm|!D!DpR^wigjp;IU*k zYIuhOOLCEyoIw@axk|f@kXTC+3uD5AT`$V}m+*8u+-dqs^^g0S2ym|aOyBthE48U%|ai3*v%mf00zqRX8{l?;Ro?=GXK z?#h+PD2pvSR0L9XdNiw*I=rOjxrDrS3CwgKDXc$edh8?65U1E&9d{^uP{hiPP)y<; z%yBVda4a~cmWCqlRCQe^q?jkt`L<)fA!fS$m?JY~Tbg=bziR?F4+`*wIgJU`w~y1P z&^}eo6f)K)vn>J0zM$3>{zf(Ei2*qfw57{%@xZ{Qw&ImJE_HaAq1rI@@x>twD|buV zA}upEC9;&Vul$v|jrdXC+HIrLi1H zD9(~Co&Iz37PyMQhM18^=|MS3Xm;3$+cKOu(Lhk)lw%rPQ=X_om4==2r#^$AV)Y{6 z(ISw^ggKVvt%?$I(Fqrn3&(8-$>7S8lDXX2;E|3NR855{(QD+SrY!~>mO?RgCYGW* z^bLS3tcaiwh1qL00UAIMWJVMz8l6N7;zYsB;Tog~A_$&HeXXjejjCr!&DJ6_=6L-} zsS$F)85AwG3}R)>(F7EjniPY(pi^%YA8)*yhz3A*;tQey z0J22ej;TsP6W(-HfbEdczJ&2bSnGF7y3<$*@HN? zz)dLZL#4DZWiBqF)#!5PU^d~5R7ettCPZ}d+p{!!6)ZbsgbB#7g@-;qf%>{CGGzk6 zyfw+G2fCy-jcx*1)^SO`-l-J#PBI-CTmo2o3egp1D+$V1%YDMkAigQHVt@*|w8X(w z9$~m07a1TIXc|QP6yNje2m=CwhAS`XGngkuJC{+?I8@K`#5r59361lqX*uFF&n<|h zsxEMTTK#r&@|YOzvNn(OYn|BFk>t3i8X8wQ1=FB3iu?yAO>pBRZcLE{2vQFus%y}$ z#H*y{XH)@k*qWeiXN@r20Y+X5#$r%I(|)U+hs{8@Mo`z ztcA)VjN(YJn6=*~8J&3&kdI8fT;3hy^9V5`vwgJFWkAVp?5Bb_z;g~b+)YpOtrDAZNH%(Mpkx*3a}%#hy} ztczG-n?f<;+_^0=jXcUq32ev}Eh0zOed)$92i`yZT zc=B+r9TW{mrZoYH4!5mD9Kk?$?&c*mw<=pAeJ#56aBfc$&wc5we;28}*52f{(}Kn>zZ|NC>r7!IW{AvSp8VK!z)dokk`jVD zSrf~J*0cg3@2Nd>Lbe`2g+P2~38qjCVRk%x?3@~!xd1vKO(+D`AQ_y|Lj4uO=NXw6 zBAi$na9HU*m7>syb`xboH#4cQPOBSEC@qp|@`bFZK40!A zY3DqJ!X!SG_(da6B|;Bkml@?g^+>WnrrIJXJZ@{{dRZUrjK^ge=N>z-QKBS&M}hD9 zenZ#Xe@$z=^b_EChpg-?U6y9^^p@wZMHVtgSvW~pbarV@@`x{op;7}`XW;*$5Q-PPQ@h zC~GE?yOf6ACdtk_{cw(cG}Q2&#A0TB-Kp;Lm(0hQ^eYR)nxwdl%(U$i@|k{wwKP%> zAV%sS3BWL%3g!yc0eLc7n_Bs|*N?BrSgVWsJnXWWrc7M5Q((v-%AzQohEPUqquv}w zMRXN|DZWHiA$DUJArOTsmG*HYPF04b3RZo`Q&?vT|%yQ1}ITvLonlf9D?-? zM)ka`^7ZoX4E3g!W<=zjC_s}rUAaLKab`b^$WJG=sHAsH^Z4wtXigjn&&l33)ZsI0 zwJ)GoZI~XFO~pb)AbL*>TbU% zw%a*&_#~BtHH~`pi>F_py;KQ^8fkMLW=`SYd*85Y_@&Pt(JI`t6c$?I$S~~$ld=|3 zT;sT50X~%(_lm0MKnNhB0Ps@YRjA0MK`kXFlDf!-rd$}dYrST12Cl%!2Vad(iYIfj zeG@l$yj6od_J(SJxM{b+%Uh}iC@X4vowM;n#m5&;CW>z+jJeo;jarqxF;a`3TbK;H zsh*myJ8OK5%&3fahXhQON2M6%I~WOa8SnWA{evJrn*0=qboc78E&>z4L(SJhK~XQxf-0^@C2 zo8pxWxWkkd1~I_O&*fhRdQBcK*_R5UFmd~+>sZS4L$%x*ikL33+_UirC<4$Fm!`ya zbvasm`^3A&Nr<=|LcEV0{;R;r1gE=6QleeE+C0ZZGl zDyfJ`JB3?)`d0opK64z3N+JKIjWG|xL-lD&dp(ISDunMgLe>K*$wpm~(!`Xf6`@xo<`!dW0FAg%vHNvep*<$-^UWB7K*$*sD;f5PH8Nw>L)yd%Nwx^jAPNx})I1SB)Q=u1_h4hQi zCDvk`eqli1ZF}`9^LF{Myf3!1?wQv(d&co_9jd_#sT)TjR?}@|re1^PGqsr7y+T9T z%4G-Era9S)H(V~p$1+PHG|`qwOmK?_mwbeLYsy8hpRz`6b#Qf7q9aGD~0uZQotkt}q28$*X-C3xuR?Kj}%E}p=0NZaE_bFKOdL=fp;fJF+UELj9*CZKV zf~9p%CbKhzxAH56e5alVW{}vHgc@m_`G{zQZifvG$+ZLXrK#cvE3w@yN`(%eKogQC zR*7T?o0DO}%t9n5FlYFvFceG>AOeo{c!Zj127}tgrc#ue)qUost}wp65Wc-Bv3P}| zv}K5LwOqcSjLVcNMUL8xcto#znEM^jL0^kK&|Jz3eX?=%Tzgs(j;X7`-T&m{-Gg#k zsG&0EV|z#A$89^JhPSlwepF`battKJ=xhOUOz z932{{-lB{=ty-_V)I-RW7Et^CFyZ_^Rg#Gb5gsdVz^ zxXv{B50*Ii(s!E$2G|6Sa)>5rA%>1texa;1WKD_4^V{#)pBH&v_Z~d)-D>7@HT64J z+Z4rOMT*2&&IcF@zG4JUyRpg1d4_70O6=+MH}tQIG4blpzEDEskmWw)YnU?8GL{RL zCB5WPPm$~?-1=sKCOkpRDt#V414}egN2fB3p5r@LA6s;D*~?tH@pbzyv8jM@ zb6qNJasQ7U{0Q#1fd&>kl@qj!Jj4(XL*MVba5lO z6pJM0Ey%71j=Z`46NIppkwV_1pDVeZX=(yo%a{z~XWWqJ(0VRha&FzkX`KGlx&8(f za!ZNkYmvidY^`HD5o?{C-ioroYYZ?fwX&^ff+3q_Oyk!+NRzfd(BVEx`><~JyO18> zrP#H8H;!G194$!+mf}P>g{Y`g)JA*im@h7~VYZVTdo9TAM>T;RYIlm6t}&@&1vFip)S-a<&k>qz z7^rC2Y{zzwBI8^VQ}H{I7O77S2RHdV?90EFCYBm|cxb3ZmXL@I3A00#z^mJcFG~7C z?N#b(T_S6&vtj=;D$P-sR;`D-guinkaV_H^W>qm4=osof zCq{$h6_mroOvjXfc>yLPL;DA6K_o;q z6y%*CUD{V2YEO<=cw0p@b+MJrClQjQM(fT~-t8BMxW5l`KhMU~53q77Ec=$+WDiOm zXcQwm@`XGmid@dcOH^fD)h1kbcZIt*87`6gWD;a{5IY$cA_Ajsvg`Da1K(RrfW28+-#KdkzzSZSTea`nh0dCn1 zyUi&SX-=%TQ)uR~x6o^0QekA7ax9*84LY^GY-bvW%<8E(1JvqBF`jT!2!0~bi4x|% zS|{e=VhK-HuC!23dX~vjmepvuxec05yOM@fzf?MARN>tv_H?todn4u-_Q->-roN;k zd&lLnX4!r@gB;|$!M5`AD}nUWS`cG7oQW>{RF0yYJZ)JtLf0D)m!J{(*xkG_Ro{3aW=_0Tw3KD z#&{czi>`X9A((hHs$+yP$(VYqXq!-9fa@koY3C9-cgdLp0F3uJ+mt-d5||7*t!>I8 zAaYk(6jdk=G;0ohs?E!OF8iiue>U1X2Yo!4@;1S_Uu{4GOoO|C=4LmR2zA>>|*$^6DV;+ zVivnKVnXPlYqfmCHrSLi!)9_U~>yS8G9+^45A_ZfwEd zOVOqWlnU9G7aag;>N2Kx9B3O?hvoK5wfh8v7pTMv>tUKtHD#=deR5eM~hzsS=-tsb`@<<`Uz+h6FNaOvU4CFU)!HuJwW&T=pP_c5!q)Kv;r!Q+v6Qgf`@r zFmi+-ZZ(fKA`@36yJnVop>5Q~GVQc{!r6xF&lr>%C^)TAmn&H@Qq+Q6q{SmBH^D4}_C73U%zO!rb9NHP1H=0$buQc_&0@{l)uyXl7s z6eRegXD8AIKoNDyvL5394IqBe;?+5jo#AOSn+w9VnQ(pWbOfWRm1=ix@ zSE)-?dqTeiBK-*8L4d;q2wuK69tLD@`T?*bUs5(h07B{_3h z2TYtNG+NXv%t=i~$``qnIHAF=oh3PxvgSIVa)c2JD8XHZsl;h$EDhN!bP>C+pl^zS*&(*d8R8`bT;_D5dmABI}4 zj}lqZ8)LD5jK!7gLNlvYILj# zM)OM(RhOr&ID1N0HZP2?yPA`1tP0AxvgXyW^y*)x#whOMF~IuHQ9I8k`iz?%oLj>( z(h9#0ZoJ$42HxyavV5_#f;;7hnC7#pPf1a@Q=JpGHO4en8u{dTIc5SJ`#0u6t0?I! zr5%#`=|OfpJJ~4vL^B%PY|XBj>M;86tDJOG*{GstT5zQ2>L5LN`W@RvR&K&Jr9Iq8 z!$M-i47-~5^Ng>BRay*17(#i}pfjgHP`vr`WgYINct?A=d1&EI-I_t`U1=aS98*+M zgshKBKt?H{67%)5J}7@Yng^q~BvE5KDc;Y2Zwk1WqlXO%G0lS*ylGNvBNl^M;ZfF` zBWx`;O4rgTS8H_~^^A2z9!^ZZ{kf7A@}q^2#6?d726hVN_0pA@Xh2B7C1tqjO2RbJ zcOn~{9JMLe-pHJk;eJrByj6|R@LcB$gM_u9x%aZ4WYQYEeN>@|yjQh^V&M$-#9Tap z`P#rCuI|4hT-QiQP8+Pve50z9haS06DUY&gIGLlZp%@d$9Y=cBq6SJ+WD`XQQ!OK@ z^*6>h@Ml+b48bmX*J?@#vEfRDuCcAHh@*~Eml*}DqXX|4>q(^U+jvr#X_j+OU1EZ( zOls%k^V%N1VGOlRJfyl7U;q>1xMw!&k{#&^dusYe)JapxH(NGEK zyPENZNZw7Im-CrHZC@F3QN;R=U$=)6$G~)g>oc(kvFiT~u{~~_3T-;2Mqb`^&taNL zs)kcTQYNA=12wg%<21c!a8TL~RccRA#`t1s5k2>7lReW={%tN&_-E}64Op3Zd{#of zt?fwSr(-ndFjr@R3u^k7&hG+x8Qsq8_(0rrFvXmO9kF-FZSopZ3FYs_>5l7DTMjCz z>c~Ma5gcAM>wQTRztL^OvYV%{nY1YP2h;^a zqhv&fMOx4dxS3oTHBXew>U&RDbqj#EXi)Ft>hyNH-EN5{+xp za}z6h8m9>q#L!QcYZ^pn3$9DVLBW9O#n?u%Mz9Hd+>{-v7qx^FmnpO|#U340AEmrC zsb_o&#ugx+GUsLZHsd)SmTOICY!MvD=OYm8Kr(ld z%F}dAf!=~xb>=F`sQG3II^Iow@4e0Pv`bs@3a3>zr>!S@WKA-R_xjyznK@&ikmm_@ z709Lq3o7I^5LA*Pr6%Fy;L%Rp%Xo8>nZr_dN3oFK^}7;!87N7xUq2qFvk9xQjT&H; zg*~Jy)msf%L#8H^4T%*32ep&bZ6c=n)?cSvn8ULCvCK|M#dm1dMr)IhD`up|ll{GYI-?FowDDNxL&s zl$c;Hd#YNLk(qL4SZpG7_j;1IALu1ASP|lxLlU_*5ygi0Isn2fu!z^5FuI!uCNq1= zhp_4+n+q!y+{2Jr5=l7IeM#p|a^*T{r8C`#g7%g2#R8iJ!kj0NOSU`&7>uN#=A@9E zb+$a?O+3~gFy+u%^xaj*npzSRr=D4ZM&wHtU)KJbE0KwmfZp4pxpk zTbk@#EWODwjEpjmnj9K!>OAV?f%_zlR^~Wqj#0e(mVDrZf;a@+f=_g4?;Oy;Q2;dG z)?j}U@lg)+bnV|VFLteMx{6_Jb>W)p_pg9EG_v0|@NQMr6gV`T__PbNHI?7g=rh$z zYbBd~u}32_SA2Uzb+W`1I+y7<+1?i=`sdNkVHbzx@CyozC3``A#X2*i^Lw#`bI!gvxHOE0NIYUgdU$(n*Knfm$C{v7P@ zLRfE@%ihJiKX^@)W(I{9L%*c>8fAwE|ZXo z)6?IOARwg~`+hl;2ztDFY-n5aL~s{|L?ZBI{-0I<9M_wy*#DJJL7V6GC}}Y| zj{+(giH#F;YRw+FQ=#Bk`l?xp(~aJ}5pQ7@n}(>Z!*jUoxQLvK~ zhWAvXJ27#splFYHtvjPfHnIf>*;P}to9wLiJ&Yb@Yo02qf?!i zlK+oSEx)y+Di9xwUwRs$W!8inj>4On(176c357txb@5JyJA@)0Bk5;Rt3tA$cD^9t z$st;0z=`BAvBaMKYHQ1yk>rJe$0^s1waTuEDyfj}9*nf67@od<*`)#zv|>>ufauMw zFo<8miDEKruUix{#u?3t2E<51dvY^Y5X>?fvCVHBdqSCG#G_|Ay^c(Jv{WkT%9r>z z5KLAfCGd8;%1Ea>3IoZPlHDNO{8lSXUg|Rr+ElaAyyfdhxwB*3iY#J!cnqrFA7t4% z(>=*XR9M^v0FrmTb`ReHHz|Q%Lq>T+LH(nijT@`@DSD-z%(^;TaJg}^LV+6}Is>ZRNwKFMk!qyY- zKMY=nwrl!xcs3rF_!8D)?GUM&s`Xg>jO1R>Z<;b;xTHAPbJp^F40{27B1Is_eb{e= zvZ{hr@*dG5$6g?%!+!VWN;1P(>YC9!PIpjqDT*=#outnieC~Ok6>1YYeTt{IMPTov zV?<6bbj)#>^P7UmkhZz?cTqsOug`hH>4WDWw-S-EOxe&Pm;ft4)W5`1sE7#8NMWly zT#3ZPmlv2+RZZJ$9rHfijD;7C;bjV|xs@$z2o}9NbQv*Fd97imt$GgKl|C#QZP}8Ftg!*oZR9lw@o(r<$IFfrXKals*Z=!+!j`c2kU6^$$0Mqstl%kp;YNYO`0tj03jjW_hrmilu3S z-{orb=gqHM&&_)XrpU%5=7pJGD6h^T?|)gs6ZVVsB`Ev3yJrsc;+H0z73 zVEr=86F~wV%D|2}O%D;5Y!=@UKc!I-IiU@!rAaP8k)`Cdg%!I{tpFyYJwU^f|BA@yThY#nA_QA zilEH9j;v;gQ=vn}++;A9PUbptd#%|GrG%F48rF1U5THsXHVQK;Ib%UX@acO-ecDRp zVrezlWtW0tmHXwf4R7axC7p>bi}UfEGw44BCX}b9p$-y!#~Azo!S*DVVU8Ujp;;xh zO#4T>y1+1i6WVGC9NQspMuj?iyIJ|Rl(r5n}J+OK+!=bQ5x-wPVCGh z8M5t-348PNahDV_A`4MfRkdF&{tBgE8~7;m={|uuJ$9j%BFhks`%uXAJK--=0HaM3 zsV00}afnh+GFgNiuI}qIy5eaX+Dblm!IY#)(v8|HS)DOLdKN0Q`A&TX7$C8(tBWk{ z|K?2r%R=Rh)5TNru4x=&aL-vsp5Go#7p2P~f$Q-nuWbd-QqDwkc-=-_1FX`eW!Wy= z5GV_^7$B${PqIw$n{Pj5R-g(kSfh?9b^)eAB=Cy+>e{&vPkCa9?XZ<;>nRYQIZUXE zR=9BP=I)8-U9_FOi*)srdd8ejn~g)5lid~PtvSbx^d4mi!Yywp5;}P-VO4~1H!Knq z41DU#1kbsdH^y+_PleS%e^>O<1|Xdmi8YfMaX0EndT>M=0Cjw7^p5bwOc1w1jMVVl zzCTwY1JyYPUUCl9)+=)Kj0h4EEy<;DgJ{9sa}6LCe)$nc`ZJXvNJJvB0?_gyLFV|m zBPxnFX>Lzm1eN*)7F}Q{KX~#wG}?DDlmQXs^cgkvR+rZYSmvx9lL{h6OI~Fjjzp76 z!4(1NIfd?SH$TSe9RHq7;`3>C*w4?X#>gxPvg9L4LViXCCq}`?Ooy6buuZpI!vVBv zwJyzySQC}@nZ_2Fu@*Ty+(4f)iR`M@tbIi+6hK~;$AaJ_%M3;g)yWJpF52%MlX&R8 zW(U46B%yFTWQ){<{fzL8VkKcXB@=Ld#t=R*U`l2OBWGgDfnt+A;%)^z_#L*&5_l4) zLxQ{#G2ujG&qQ834RM94kU2E>GP-jr&lIh7`kw|(p}~dKV)ATIYJmBrjTy>jR*wfd zeZ_7O$GeO;mpgT0`$GG$k_ah~gb@p_LyN|2JddM&8JSBSvyls&coX55Ff-1gTk2$8 zjF;>&%Vm?)FYUOTx`^RIl8_SpWL9E%6YebR4^=awvNr0EopmG}9=RYX#G|+=%Z)?| zd(|V~@vVzh#U7co`rO5n;_dRIuWoEl5j_UtjQvF?gkbLi0(sf$KJNC(v)^wKggBRz zyknyqOVOPwJNO5&P-QDN7j#1l+ zcB@*Ju;<4Ny^h9dg8{k=&`67n8fG2?We6A3aaduGF-pA`vo;5S`3f5HB94dz$&E=e zV=PKvB<5pUh?_l70cucsc?_}MJc3h#yPvtnT~aS3zLmcWGw^&_ww0&~~Xn zYX}Nbf$CX38ybbt+OY9lFCNmy5+cntwlm81hW0M znv)T>+MCG3(nk-Ruk=QyLuBc>6iV-o5WHn(oL>)Kp)}H#q=DtY(`nf_ujazT)|zm za<_hyESq6cLi}Mo>7-2UA`aM3K;vv8F$6V6MF;Ys522|%oDTAyjZ9c4)E``W{rLp} zVK$G5>6sX}e&_Qh%61UqtKG^RkVF(xSrUU~7tbG5)|7De73j#63zm>sph2**B1MUE zAJ0HTsgR_Y61_8P=rp1BPTc|^vD}uPSG|_KJlCn^3CIYc?a~Ht z69*}9CAKMC^phxU(~WCop+f2zjb-Z-oHWXH`TCwyX@8)q+SVTK4yF0_U=b5akVFbV zlo-=GWRV?LRE{OgzT)J=b(PpCwO?)`%kB=|!fHv;}0 zn9#tGMmkiH>AaJVkr6;bFh~aCu*DuzAbzerHdM=h-v^<`@cDhE96I8bb2i}PHFE47 zPmhM*KM3s4)OE{9u_TfRJ-_dz;zPJdBA0sl^QNzl%cFBdiAPA|M5(1W1oTyP2_Y?z z>dKG|wJfhnK@pH7GuQ9gxRGiMlt?w1eOyevti8xwF1PBqVrPi*19X$Y%`hnq55PX^1=BGCk2Ia>K=m>m8Wi(1!$sKB9n#4Y?7NQ;}gz z3~>S6UqMd#^IdR1$?83$Agcn6gh*g$v*>_HF$Aw~pa0>(f5q4=Q#)gqPxEVc2iHw; zzPINTXtzcLfq-tuIWdA_dTzcX@+m45i2O+28n-dg1&YmY#1Nb#6FoufWvb zxFP8q5~n)(I7$aZLoz3hy8K@6L&w(|G3!}lwxP%Ey{4`lKJu;>A=WGAsLJP0$hYYL z1E@1EyF!*PP-Iwl2qbruyRT@q6S}#JQ1Z;_k>3${Gl`^u|CagnaU>t=)66kUJK#OMJo- z&WadWeiwK&`vpXG%ONo7jSYHcl1nim{WdK%=)vl~(v_svbF<+(Wt`aiSphOd`uuZa zlnOe5Bg(*Av8ZM4oOyiTdL0^{B^5*Liz|?pOnU8}?~2^4nf(ZxwM`uq=c#+rG(PR}z9XS2O ztclZZid;5qs)G$e=DnyymBAR98NpYXL(qX#7!VMU?k{NwyG`uUhsr*C%x%TM%SB|W zW;G3YQMx^O16e*uXR&TC}w`cRjF38f7yU`OCE$&wGz8x0yFliQkgLH9}2_Ss1MIc^f^qWB1BZg$|kI ziW36-1_K?g4{P3FXey`WLG`eNA$ggQ>fbXg`U6Y49%C1tQVk8J9OtgW1<(rMtmq)Y zwqB30dtF@dtn0j167f&t7ckN*rg*ojir^-4GXX#wMMVUJ3Isw4A=89JCXrd^=9e>& zytF=DMg&@DL&P&Ww20VX(IlXtE&}W_NK%C)RU#%6Wiu2Z8M$`^6-RqiG=fA4%4Sdz zV*GD}f~OjAad0y2P%S?A&L;IB_v3z?D@qR7#AG^NTc*M@p%ZLT_r-8ODv;VZgU-@q zGkQLaY{J+ucjDBKEFQ9>f*a@RyPZd?4Yd_hl|H^Sy~2Y=usht4Pa-lOP^AIXJSz^` zZV99`9qI|4-S;T3!R8n&8W~Px)r1-4<||3FIt^C~4eY%;D&d8zeLHfT&#A37Oo?tW zn6nzHC^d{Wmo+sY8&rupdu$8V*b1DA?I&l_N)vf4@P+>R8LU%(6{{~V@k$$Q4R}ri z;Hhk8BJin%xsVJ+pXA<4F$=)P(z^v6pH7G|eSBu#9{& zD;Kl3?v?dnT0t1(Nr9Iveqs|3=Izr$1ckb1t7LtC#f6zxDs0rFWd>t|A#3F`p5B^`hr@bB>Q;_`qrqAKmj~e&6NGsai&FQ#vL~%tmrl{7<^so47 z3jE%I4;7J4?9(yGIE<9XI=sk@0cj%4KV|#dz2yqI?;oB=gOu_Le22r@p`yJCSs#*N zc9$4CQ4pN`#Rv3_%_C)RwxFV@a|%bcuL3!`Z(|z1A3rHdjYM25HzjiK^VXAFC7`bL z$Cm}pfjoE=kUaCfv;yg`B{#uL>KT&-yn6BkNw)l5_0^U#RO#)`v(A_vw+1k z7t;)NQkr$B2pl~oI&_h6zBo|?AVHRO9`jBaj{Q&%pjkqs3Jzi=iJ9JGT4_~lL{wz- z5PRIc>K$xKO_My|>+69fA~^3bbXk?4QAe-WnX8c7DkC@0Nw_SX)-7}@yDfA^2%&?C4$&dddo#K( z^~pKoy1Un_c8EZgz##@%i?US4O@kVm9-(6n4#XWLrn1+Y8U$K8J)I7tx8do+P1QK1 zb`1D9x>LVL0gg$QB%vjnFh2qP9gr}IH?0~Hrv6hg!6+Y<{6niEF|46PL_%1xSuuxy zAnRo4d7jrU1KAmjb^2hPC#brCvlQ2ESqhf|W*o|NvJxaj;v|?2 ziTRn^@zH*SQa!mQ0Dj8@t@yFYQL2-V5Zv=1yHyXxq%q}n%S9DJ` zXBCKVj2Z7mC$S1ZlnED&eho-$S8$6@2F?%9>-qUS`);R{c8)YnBTC8dEr~vcmU~jk zK#bk!5S8de9a-$M93z^2s>Fh@+G>cK$$bWf$(C*$m{JVKS%YWT%%b2)mW!lQaID(O z9uI20aY50h?U&{d^5c7kYrOJ2gQIV3_izFUGO`8-xOFcNuVl%F!w9*Ltz8^U;Qsj> zbB*SZ>5>_}y&4d(Nlj!zQlD=?k~p>`v`kVpm|hx| zs-L5Dw5VIKfGZlHYP3XF%HnJQe;u$gh~GIVVDz|#M+lF3fLuVpa|8dcV6|)hl^4bN zE+4^q6PW;=)5PZ-X#!|klIHgi0V`hPv0=%=Y`4aqwSzJYpqkOXCAzH}UXt}lNeYI`+BZ!+q2Ei zlw57+PmmTBmhU6Q7KaoKBK0Vf5aH0V3n7p_?qSg6 zGJOJYIW?j9=Mz<)R56R(Fup{CX0E4Wj=`d$=L@?gAvz9_cMec|%i(vE=SNIir*g>( z{U=3(!26!$+yTS_KFe)?fpmGYlKlqd6gZ>C+sP)lfP*0B@D%g;RBimSu;A`~lmWt_ zdV*VfH=oXlf5)nEfOa&Dq9ADG1e!(3o=1NO(Blc@>hqsMiHlTjV}~r(b=`5+%_lNN zVpD_%r`z9r^q8bGxw}4Pn;H>HKAGfMCm;!O*DUVPTeX67myBjFhsZsFp9RJbI?0Ed zPRzilQ*o{0Xtkzu$V1s_#KGsYp*9Tx$mXc!USlao$*RVZaHHY8&KQt6VAk4w(rGv?z@;SSGV)0c*} z`p&uW@X?#@J2y9jIUlqV;+(GL~Wwg!xbjN26NkdM>5;J7xxq^lttJ7!Ndrs zTP{Mr%(q_}6k)*Wsi4_e2+3gthVsZnRHoY;JxVF+n3}R7-m31#Gq#k5d?mL@xDT2c z@#uuI&A~92EK@Y`;(D(l1NTgO2(2Amym6G+(;I2F#+cI>HriMEdss5+zQ{Nsbw>sY z=_xF>4vNBNzT)i<2!dDK%5`P$o0Sm>+)f^8>k7KD>ceEc(1IAR#la9}Y^Me%Z+zz* zm%XOz)qYd)4i=YaVzM6XC#%s(G)O!XE;Gr;0`MQN6jVmREJ7IZWa6&sKC!Zhb6(f38mW#sv)ycmdu`ES((Y`5 z!ug&Z9)c6KL%Xh0&9lUuP|v8E1y!eR5LVJ5i1Y}^;Wu4Nj*cY6!9;>|^RA~~Pp{ar z!VdA6!~v^AW8@c1x-%aN2LF2u-FP2?KQ^cElG zh<(}?hu&RIlM$}cY4wi`MC|r^%H=qN$t*0He3(EKtd$TLW^$^hWFHZD9x?_N<%&m}SlBOO`<9~xQjtj@xA|LY+}=^R?Pr!9Tt&gbuQFKGTVcDjIqdZ z*?CM$naG5k=Xi`^2KXp1o$NJFu%fe=eBka#{Mim?h$@0eIaCjk2xf$w`rIzzSTV49 z+75rQg)tn__+r7)TK{iZp=R;u(_x!)K99i@dK1$iZBuq)vu5)R7MKy#39RLCeIXX~ z)s{1~?gzHQf))rQqnQnKL>f3>X@n{MrV)c80xG7Vcg|tGYAcoZ3koi1RuOtZAp>$G ze%+o0D1?s!&c{}>1)W7fzBQwi!#JVC6^saYEIo8QJWJ-l&B?PVbj2TxEb(hAP~Z^K zWdsyFe>$7h*XZtAbyj&0y*1vJOI-YWInh1@x{`@t)aOpy(BMt7DV)Z(_-9s|-Cg;W z3yNC~iW^!i{?@MDV%8!TrSz5^z4s1q2PHHUylf{iVK$hWB~=XwCh=QAF=S6U@G0TTkT4I}{oNCybK&kD zAwZyWP!{sqz~Vl3H{>T}r`L}76<>~u(|^YpNTLlgOd&W(XAE~yPCUb!QXV3QrKQkz zOsw!u#Dfo-JqBr<4TccBCj3Vt0(AllCH^y=#Z1b|nP~QF=Ya)}ypLWX1FmsBp(we> z8z}|Kej?;r^B9MmYNLLgiOtyH{!o@tAnj&VMs*O{L=_r~rrY{2`bh5ddEbnjB2-F? z)FdClHW7Pog`<|l&YGnN1n%F6{_)8LoK0Eh1wz~G4)9_s#1ExebX;b>((X_88UX|C zs3e3CHZix5!oYFFD~2`X9Ov>CFE_VZI$Up^e1y-~3--gfFHU63%P7!@VpU|ZtMu{T zs37i*SOwSO2O#jk*;PM-DFjiU`|2@{bxX@(zCpN zLJm|D5_k=5PwsoNqWAD}`DthLurzyZkRs1lnv=Xu%Z8A&xzEqeoe`xj*Ne|XjN`qG zJW1N^ftd8~x)Q;nky_Qn>W~$VilPKu+%wZyg|i66Mu4M*csjN#T4&r@O4hN$yTN-7 z=)F}YhhrnGQpCzN6D`T0?{rc$k&=v}*VdkwFK%-UsTg#=T{z>+?dt5glvX{13r z$w;iZ`A+ed&7hEp6in!Bj-{-^Fhu5TgjW(d0Zc(a?xZuZu|JN8+>JqS5lI26j`@R) z6*+D>q)r&IB=Fv*%7v`lL3aD%k_u)7W6)X#lmo!pRHG0INL8!@*sCsARyFRg;zlM? zP4?*XoC@BAA-L!r<^nS|3T^jju(tTsZds<$-q7!%m3F@%*I=O!DszV15cR%te+o}! zSuLFP&gFBb6PV1$n)DOUHy!wbf_JsZZuP%4;2(>I*51iRFf!FPb3bRZJq?IS1}=SR_+kUf17g)#@c1+;Q=AF=9mA1V*%`e%q{)w{RM$!+0Y0PtLE z@6evqcFYB%i)-%oW*+d7sJY_fqo7gIphL9^9-cMor@z%=bG#FMn?PY-5!`f)CIv)c0caRNVWuJuK>N}xoTwrGXfdI$ z(U+!;Fl#v>XbZr(RlK;Sg}&pEG)3wm+#9J>&Faam6cMr}lbkP}=kh7-T;IU+s++sk zIw~~)=OlJ@=6yz6D$O1A6AG=AJ!X}RMOt_&I;bk3V5C}Uo19h<29(V0a!Or}LJ3%u z*lkn|LNxp!DWzn- z1mEI&UeiVsoj8P}q4Uu?nv_-BzNXq{E9eqHF1RVm&KX5J@dplqQmb*?_ARzK$y_02 zlk*IeyqN7W<%*(Z6cufi3i#mD@Z&%D{YU!zpBK&+3%r@3#`DO}4n%ds9fpaB^6eer zXjX5RS;d-ci%CZDSOvVaddXT?_Oza?cv^ai*)yBb5?)HJ$j4U=@i~acd-V^nbp$9J zXjwAgAz)R2)|hpXFjkpBj zNJS=GEZP0Ihm0otuFx&4U%Jao@=4FHUsbpPNApkq!s-~`a)fF?-yQ0A#_jNgV0 z3cFupMa?ny!~!L#b@jzcaz8&%ZKLYs^wak5>alIw3ru|OK;B#&&({kqFC>xsb+e+o= zd^B}Bc`7Ts4~HlEL-#&JUb+{BAOQZ0RU1K8jzn?4F9Vg0a*7!Np&CqC6#>ChICp_< zmFw0ot%zRlBD%TbkOUJ=yZ}q9o!ThtEn&9j{QsWzI>nXh&cVnscsBPIOl=Ym+Mzp) z9Ndbzyf!UmvZOlB&3f8J+sAx}n^npynFbxE=R@qQm(rQ|^KiF2`GJnvh&a!rX3#KTvNt1t7Y92V#WK3E zQ1k3)VRhGyb%=j*hW;D3%cx9BToujXR+R9qZ*+C9BrAJv81?t*7a!ZdP64U5@;W;9 zt3gfPC*09wKS^|frBNkypLQ4+&t&6fD3uA(k`@kMlpPpx%nbBmM)4-+!nAUXvndQ7 zDypddvU40~AEYto1w4*PBY9hU0`utPGe!*q-@1P@ir{Cw_v+)^vBO!p(#Y7tGNRak zMRMEH1;LeRF+=gn(XV&NLY}?S(lWk_hnq^zDc=p?f0)Xq{|JNI9+`dd3PBGk{`+jj zymDD~1bXuSWn+XyD=;$cFbwm!dLP%m;?he5-`SF70h?@W|Iphuc8%C;nVzkPLwwN% z0J{z&BqTu$PzTNx;cx-{g$u`5`*OtE_;U55S}kfnSpR?r_gHz*n0-Nk_(V0!_98Eg z0Dx*uk>bLR&BrXm#z26?0gPJzbkr&@$Zpq5#@j85cmcxVb9-D_>;8gSYWAC90Q_EQ zIhE}|5LH;9yU{R)emCfTXS1e-WrcErZoL*1_%u!;G;J5&LX3_7*(#)GO3t0fO9az= zewNsINzo((6M%x`Z50Lz*A5@&@m0Uc~StH2q|}vQF;^P zV3Ek7NX!8Win%{?(wgCArV+B*hk7;J27JH-9)KZbip%MPE%ZiDN_kI%)3Egch=BjD zTf+W{l%?(QLz#N+C!pkcZK&VFa&4C_Z3_I{&XYhZeh&F_2skNfl)Wt&Pb17K-U=RSXu_`725VUn=v!Fzail!uT0E#?hu zKRZjrKjryP8HZil+awpj`QX5~9N<8D0ARWBpgB9F$%6|50MZ};BT-=}1;hXt0te{+ zPo@W`c3lk7N#jf63;Dl`jo2@f2c?~z9(f2t(6s=PXLkfJ?@Z6WLX}i^BI9wMUg;C^ zrs2n<#?b$)8>B?^LJZ=FPA2^u_uuk(K34L3DIbe7_xs^V8Et!>uo#;@dw#`>XMf#SQwbvC!*0RFax65vWq4@VPV z2Gy39ScDMY4dw0%GIY5Ql#1f})awPuK$(ZTS!wgn4DE3O_}?+$Hiso|n*$)^L6_I4 zoMv$GyT9&C+6#>@o$kfF(n-7ghlc!~go!WgGL|fl>)cA4;ig9g8$J#V$uH2iw0#jexGJ=+0n>oYS`ZsTeJ(rJL!O481UMsQHZz^d)swnv6 zy=vW{u+Y`jVlh)uu~?*nj+^f$gdwH26_tNzmD;v3wSpn7-)tJ-{eT~lcX;|A z!7}X}p8vk?=hO4?uI!?|zMNOdSM4&KP@mA@D~ZF7@_;{JL-ta3$bsk9rIlHL?DqxW ze_iD+sM62}myit!pQ6NN0|hYsQ0c~}7>b<8(nQ~7nP>l0PqCq%jRV{~mGkjg=f3%_ zumB)yz#xS%z??D}nUt*732WSE1k-pffp(MFZ2_8mggl$;=o0L7Gg3@Y%(jVo;n5J9 zxB?~u&!j-oKE6bN1d9CDZbmXjx0Y+}1pjp{B$JkelrM#Ry1i}a1EAEYO1~IyF+3=m zJTokgu4etMkS&QJPQQie$rPav*Jf#931?ABYtjZ@L+bLL@#)ZXEI5qua~uRpA@3X< zOAzng} zaDWYq0$-ME7mq=^**MKV-}pM5OGk{`Zr(YIjS}F#Wcd0%VEWJZ|1`iz+2~uys}oZE zuzkBZ9(RE~F!m9sSn~13s}N>`Rb!Zxq6Rt)NZ1T&CD2puC4KfjN^l#mu#gM7@Cjly zi(@7B{%TH>Q{phEj-ep|77E}DIW+ZREO+MD}-Mn z@m}oUB}k8f!6HuyThsPevQs2SgPL>`vOeCCBLL15r|3tvdh;ns_$EQrtR5*8kTOWj z5@#p-(j_s^f6AnJ%P!?cGreDIh$00?%En5SD3SG?6Tuc~K3~Wpl$E)%A$OP2BBB6i zHk`0TwhQfcee71RBS5)E!8O9Ob#o-{ip64;wXjQSCICbUs(vz%`-6*q6~K2 zP8EpL7>@4x$8e&?90>lo65p6iFV`m6cNjhToiD1{6(o4*&q;SS)VgBR0u6&su*CO( zG>Y#fZXxN4Uly zl&v>o@GNG<TEgB&H4lgW zMLvDhz?8FCxQ!?|+#A*VHVk%oG(qqEeG_}k?OG9ULc8o~xnogE(FBnQk;C%MSx6na z9Ug9UjO2C7Q|3xQy+Y>}Ry=mgOM@V(K9hd_6|Yg)e9xO9n=Hu|JyMP775`i^^EAqtX*%S zp#Hw%%q%xhO@i^#A7X)B3-(j)TP2k))cE!Dhmh*4hS%SV8MZaH$hlk z35Ga$;Oc_lxIr+q5-1oIg9^d}Bp67nASebF0fAu00{}2y!HaemK(@A4f`Bar;J6SH z0${=bVN(Kz3n~Z=H>$<3(9eAbFQ;rO11K02?10`ew8-v0H(N&Cqt1*V{|f-e1_zHEIc);wBI(E%5+VEwN-jkYe5@#DSP!fzh0j)+lSL{;mLlO)u(WF7Pw$vl3R*pNUr0U!WS z2;u-pIo@eK0)@?qJ*%zi{VVfbiEmc^LhT;YNEl@UfPmxSWVU~I(HJ9~Hw3Z<0=ti&*0j)fx##xa;e9?w_vOH6#L zvf;kBI?PzB5-z$cc4vMRjp->F7%-76VGg7sK`#znbBc6C(lUs3oTemq+FU&7;r5CU zp~ugsdo?@3#nYKqt{~2C2;CwdX~UYRb*ZqF;OJURyAk>Jj>f*cvtf7ctD>%I3g^Ac z!4up|uZ|9V1i3ETm)qA5$uRTs zZ9G51KzkzPBkUIwoX(PCcNZB4kNMG~?i=U!Q&gw`Oq<9F;EUqyWaXlu4s;9$tzC8Y z-|doMfvTA|j`V1P+x9;R?GRG~2_7Us5r$2eGHl(@Gf5QoPMQPKFwb2(($(2ntEAB) z8FvnO^P^jOU;56cgnhGDwC1BNF{@#_=wSbM+`h(>;BBnijB|-Y-k+PrcwRj|o4NgY z_uTFYb#d_S`@d3tCyTJ*5Im4fBv{D-g}zgOj&T*BSIE~gW}u)f1|IKRa+o5$E0#!n z$fa$J6+2ZT93@INuc7PlY=x)|(#^aF5yb5~x$30_5%nZPsO~5&5C~-ma9O$+C5jIO zDg+{9#=kAq^`WLyXczPvN)QUkq)Z>+fmFtdBZza%bXL{`W{1n#&*(`|;|Les zDWL5gt~6hIK4tyBRzANdM2!RJJvU7}o&lrZS;U*is@cf~ZXDXHtTCZLNKkO$0SThj zyh~HYrs}D>>!MuCqO)SdRMEBcqo(I={`Ui;*ek`X2@+b;)o|`PjuB@%=sOxkn0}Z* zKeKyw?K_yK-9zunw+ofzO~k;AhvY$LNJ30Lb>=aq{c8X{z}0|c053os;1BQvvHGT19*ZGMB!Q~*(Mb!jCuijA> zsDnp+G3@^fdF(X0t?YXphHAjaF3ryGxC}fgH;?EDk4A0=W1t z+eUH1%`j*cmwtp~4UT}_H#hf(@$O;z15dT9{(D0z;@M9Ts0&|ETvbi{ zl2En~uB~DOX_pLpgz=d+ZL%&pgRTX2Z7}ls zszJd_i%YoQq|#<1PXS|8?$z>{la4HGDFm|N;#xL~=)`++3SI~9cZ!_YZR6#tlmL~V zWaQdV1~@U-0C*Sk9myz{+yN`xkWsQu#H^(Yt`0n2(?t-AF-~q`ZuE2<%{~1i;n8nP zQUG%YpSk^ihSz^D-k6J${Wf3$FaX3O1{eT+Wj<1d0ZKveovr=Fx0K641X-|@QQ>OB zKgchapdd8>WrGXkDXH|Ky-OK0AhSK_0gN8#4S?1NErt(#G#yUog;DF@CLR3LMCTo!R^H}gS z-M=>_jL5i=>hSI5)C!|FB4W$3z=DvEZ(o`>cbH9v`Cy3{$^dns0J(sD>e6m7g~Q8M z;BfR;+8q=-eoFn>xJ5ZCX=zKyL?X&fHR(Wp0DY8iVlQl1>uxWNLIAbAT6H`d zaK?jh2`~?!D}X<+&V(>r^1rYJTP}JvTsW}5YH88)`pD&Ea%=*n9yHB;ET-fH*BI5| zGLw0&p;vSv`vZpS8Bnn{_`txX=olk9&s+D?dN9m1K##EJWWXBnO@ZW9MnRtXn>GA4 za_!8d-G;7+`ufmJDs?w)8tK85Ab;mBy>onHrF{6T>4?y5YrAa?cTT;WUpsnqqc;3A z0+}8{sonIcMe&Xo?c-vHbuByWHF7dFk}zZys`9!~8OaD|j6x&lAuNawZF;z!G2345 z`%`IzD232jeNT+7VHvZ_sDYNtu<`JoR$(la@m*GPjM>9rP<=k8oT5N3TdoU||8GB^ zm9OmSU1M#7N51-*u+!&}<_X8_|EV;3dH$zI3z0HBrA@q6dadM5KNs%f zKPz;wbtdit0r8|5{h<6rgUZ zP>#0Dl;958|5b-TOY-y??+@zavH+hjd~{?e&=4^O3xY<$Mym54tSN;g15zjwrz*z( z+C&P@>K}d%?bcleR5-0*v1|J-{~?) zgRnUSH-iEi;?pwS`nhA(yo!Cl`gS6oR)w3Fr{mzt?&8M1U)^z+1Pxlr>@t2GG`cZ^ z8R(5e&N_|vBxhO|^4$HtVvk?Se>KB=VdcRikh8+)b~gJ;IC7`N_?v&*s^B4ZO(YGW zUcEa^_x~U6cT+#_OH%y(-KgU9@;aj*WB2WmsYg+7%Xdq@V4z{&s!_@0@deF$#6l}? zj)Jn^ZUZGI(XSDMp$PBTXG zt*Si4X7`yghQ_CdLOkQM5vA_3?;FMTecidgdz>v+EdFI@8NT_|;xjz;8!=nOz&E&JNkn31HQ%JIR>b|mCDBQQitp}TiaNn|2}&&W00dJ zFY3g2QRpavxwMF?zfGLy8LGNO4b`%#Jezq1o_v;Cj&?!ofqDwUVuQw)M(GEfF;ZTG zo*+v|4bm4lzqOOBJo|TU8MFZz@j!we(DOwXu)(;x$vspG{80!*PteNkjc)cInSD!M zJ;BTiTxbRO0(m6=sHeWfZ-LulGx0s%Wc$?Zh=?il-cR&{F-(CFkVz&BE9Hwo)<=LB zdq#l(P7as(Wq*793a!GNFA>jT3=+%~zhIAjHxSBOAfVh%tgNB8A}$MNX42tQb;U2$~aREQvvcTM@d_j%5* zTkUB62w$Lm1BQP+KeEvndJ_`%HF}*iSRS!ne4g8eyd^7-gJwrYxD>Cehm^Ej{}jr0 z8V`t6m;Yb$qsbAAxJPJ;nEm0HpXn};Kc{+mBm1w}wnR>7BoiMaI)1bMFRcOi7ftfl zeR0GAe&LYcKGIQY;WhZnzt6TGlDwx^q%L;_>2NOyy;z{2M*#yHtaHkQ;lZT;^C`59 zKFQxu)S4*)oZD)kp-xpup~-C~cV!W%jsqAgAKgEy4*3`w8i(m6l1^VS?%2TqneLRp zv8Wz01cXsIQy5HW4-98Sn(GFFoG1ubjDmzzGxEpy2Fa~kP(nKd3sAloy)L%}^x6&r zv%+Ab^StbnG(pR5M}5mLlqFTz+%*Vln{uL}d{$qL`=>TDMh3H_Wg{SQpF}AaMk}^g zE7*QjugyoIvg-2B{~FcmFL5ibh{IBz)zNmpIY>~OFV}`sc$n}>f8R^@e4Npf+hA8F z1|+R&%0b%E=cG?NxWi^8WICDWv-K(eS~K5wO`dM$&@npd<6P?QIeG>4+}L`Cx<(zh zn}uoPUWpo;&3^IIjS$I77UBTJVQV@Bs=*tj$nr5H7uc_Qm^)MFz;~JvTJvxL$tNEH z-e`y*m5+H~>}bsz3%xKV0Ys3TCZY%k)3cFwz+H1lN)7NPwJDGb8wqd8&RzVk>FzQp1R1-Q28M(*H{ z1rDo;5uA&#W05vHPZCHH^>RByMJXwOP zbA~WOZRn7obT++vA^)`D{v1%dsBg4$=MP-@Ul|_fbrl>cvNi<+|2w;kPW&$+Vj(Ct z>asHu>XD2JWhED{f2Mjylmy58#+>U~ET+W6e3Zw(5dP>1(;!eKANqD+a3|^s2BBYNkNm&RtBQW!(51jOm`9$342V=cuEhJBUG_-4 z>{jO!AV(4pAfnR8qs-&&i^m0__;LG-Z;;}=ae?PTHu=uZ4=S3nbo8c}rw9`e5Q88O z$o2baasjvg13xe`N-bWd7(@v@5(R3AiYN*ul1NuVR26!FQ!jY9>rjgRr_I#kr8f-% z9j-b}MS&yl2WgxUm6{sW{gJqC&U}wPT>pnVL;d9Y(Lh?~3olDq916n^jYbpO})|FtvMVYnV=ad5M;Z+Kg_g*TxU z>&d6ZF$^DMBLoCVz30i%d=RA&WTaIkfz*rvp1zQB+B$te8ZA8mHPNm~U3|$K(y&Br z=FJ^6-TAD=#T)EEj0M3EyaK9Te4pL@1Is_nFjzlj5HEZ>>!Y_=Wgaf6S%z@HnYe26 z7#L#*C`jiy!M!CH5fKI;2n~p`MnU>Sgb#!&)ecGNO`lD}_V zAdeQ8VnL0a*?IjG@GdctPX*`!BIyV6k8ftq3wC&a@zj|{8=q5RdvlvQL-)hphw_OKnm9Ktv1&z(qFT7ssXz!Olu=Br6o-Xq z&Y*W5@2R4hMUzpKi6A*C!V73LF41;{+aROHL6^%IAhQX=?b!H(PD8o#$NwJNXS1MZ z`o5;dWWEN<8VtI6Tu2#9k>0mFh%ORP;ShtWP2b>rWiu2=5cZ*IxFiYd+M)xOu%id) zNRdV1CiKt<6>1NjZq7-O2oU56kwX+r<_i)Y5@=3ICPW}a$cRuwAE#DUZe)Q;iD5(L z!mx>vWJBuEHuH2*G2$i z3`rhn;SeJ;iB0XN%GBs}z9m{MV>7kVj?tG2Ar!M2?Hc)wO{ub$+V!3G&)Qo*9zHJ* zGku(Lj+r-JMbahSxnJ)m4goAN4d!t2Kn=Am0yaRea6U7)sRb5F6q`eg1(`CV@vNcY zY+0b7eAEj_+>Vbt4>61CyhJ=kHY)iwUu!3s*zIU8$N=ALd%xr}_b;6cAGP}472Ic$ z`k_|41|>gS9<9Eoqt)6{Vl_d3HoLMsoAjgSYtw7l>womF@-cg*;%=^S^N&5JMIZL_ zF!wij=hG07j;2*E&yb7rCPuR(`WBfUT0|g*DhslQ1sUBu=Ri1RdFv>dqg!VA)X<<@II#b8@akVJJzM&EqaWoJLe3 zd~=3mzpdpM6w4x5|FHMv4#0k)Jpl=*+mkptH7c^iSX3VANcU8tI5?74dfK;EI$u&N zLZ&26!J|W9ia;w;?~H^mcQR1hVF=gvQ*SlfzZUR%cq8>=&a%AioM% ze90;uBh1s9m(wU;&*!`R`I#JLWCC5}574|U45>2g|7e%C^11eYh!XdG?<)U$Ae&>w zF0@%e^((+Mfqej20U*8zIu*knsUt7Ou*n=8Lv2cyZx~0c4-?`niGk|^yf;4;3<#U8 z4g|yuGr|6-```_`Nf8bHruwBZ@W5aptyp`vvuXtpIXmDwH;la|KRw^3uxLhu)?Hin zOsKS!ngGB6d;oM^#8qy<@-x!Ys$Orz%f5ub)BO9Mdcf%n+wgkIc@}%*Q!xg8@6_2; zQVl_fxrlfUGQ6}=YYy(lK;;|ArRj@u>XFhI(AWYOmiW5zCLi<@hk-I$4ZxtdxUyzY zXfjT)J~`f7Bn*3$D3n=<9?WGPkP#h`9hE5pM8ehLy0u8vsztDVWr}q8rhQ)^x%7h! z;uV?=exXl{i|=)u1NSE{)PCE!-lXU?*S##&_sB)^PWPbF=V;tJZ?><2EI2^{fN153 zLHwgf(r1<$`OdeJRUT3PetSAg$c~m#+PHq;J8%g}Jgu~}fz_W(0M}bk;;=9*M#awZ z*|73Bl=L7$0vx0$7CD#$aNMl8FdAYJ4S2?+JRj=d%x##V%7wsGTo-Fk8_-c_hjA8~ z{yqP>mq~2DWLDkq=#lq0m$`eMVqStb)?G3$RZa>9(X!vVslpC2+X}UTekl?xP`ZR9 zLM%{86ix&%JRf0=x0TKJUN;Usnn+~9Nig#8KP{tV@4sZTJWa8FF$jOk`mA&~!G>gV zM;Nfg0~QdNN+6Nl6%j0p`Mc1ta77UW z>x->dRAV(=WLkHbCN`T?vKq#6bbSmw`sDeA{U82Q34h+Vj0nn^Y(gZOK}CB#c_*V# zuKbmZi8~J@=~`jorL^%+%DuOb`+RXeNY8*+hr1?8INpue%#)A`|Hfr044GXW>pimG41{`2uqx&e2@PCT_G0tAg$kDGWhlZ@;<^(0< zbOHd!1_5XcK!5`}Kuj2H!GL>UVT=qW3^~tde!#u|Y^RglXc=CHp|6#8U-6`J=^{T_ z@?^AY_9L$lNPKd>keM-%NIF6hMoUUSpNM>HSr+)NUX&6UW)JW=ens0We+T1z@C-AC z5aiug?JKuJtja&A9?pyF+4o`gq@b$SfRV=bmPezl+nF?fSMai1>JSIufQuO+^p32} zgU;EAA~td=96q~4?9X1@48&q`5G^6y;@rJ={(1zi;2>?;0fn9Kkk7+WLc8XVpXm`h zaSUUsm=BsxGZb5$!#4)wE>UU;Gy({8kSs#XoyqD2!IjK|4UzCn%(LJw*n$pug* z3PRyp-x)WExN+syy=wqLa96~|0`y|MFH#`Y7Fe`}kSc|Y3c+X#hAm++V~hEP0=zHi z6SxjSs8ost04a<6#2lEUEb(Fjq!qD9Qxpk{mK9>WEJ1C=#Kl0Qki_W}0>%|$q*nn@ zD?+*|g^Vmf0ZdF<0>&0Nn4n+s3Szb^fWB}j5?WxX6+p2CY*vLKY=iiYgvtEu+vZ=B$dKV6T9z1p?Oz zEYW6)VwzZc=Q&cX{kPM*J2Z^5}v@Hgg|k%$aB`ef&lV{;2pkc>F?`9>-qE7Kcb%HkL!20_ROi`JJaPqrvtd} zJN8_~1&$^F%LM{~F?6Ep1+^6dn1X;z5HL(kT*1-_fR@-|n1%;HbY(=!24?p7k&NLhIxalK}v_u{5PCqD!96y`7va zP+IXZS_O8^yp>2gQ6bk?fVhaFN z35tPb3!xPPs4bKQu**9VLfDBa#f~dtn5h=rv~B|7L2RTTsOW;}FqttkkhD-p*$k|s z2!cXl&J|+3E8?IFgDPVEaY2j=of8zr044#>iorm#1=tv(+=`%A1jQkJJKHXL@y~H5IzL$f~d*@wA4DX4qUzITDpV{h;5 zzkUze8b65nWFyFpYO|#IkbXznz2=Xn{n{uC{|D+x1ekqFASBm3f5|JeM{s0N-)H~> zgmX*l0&qeSENvzn9m)T6Qe0tZUQ11uzFA=$ zqKg82q^t~QgA7_E6ZcDBBi9G|d@Md4hCa6~_h{qj;zhPMMc{}8B#YMs3egZEA1lkF zYe{;XhPNE?Xy}`^^7MrU?#Q6jJ8n1qnFd*o=ZUPUQrUlR;DCcTo6E5jBgAPyk4#E_ zu`JR^(BX)^}~I-vG!T&&c%_*FBlv_E>nL z!BiPpO*TpX=X3S450`)qcvXN<#zud1Dk~PqG+=QI2i@~c%yV#epp`8DV?pPR*og(& z7n-18Hl#-UOl7&IM)e?zAu#33{OCRIr}6G36sNF?zqfum*x1~+46D#;A99@LhMD;r zdXej(YTLK$^8BJfi5_B+RfI4`2k=;-@pGj5b@1i&G(PTY);nYeYku%v&pIvA0FU~t zkD@+VD8r>hU@AL7?D+y8WXUapWA4*RP^-Ka3jZZ*>kt;Vpi9y5^~IFrF#e50edm_&HeA0rVd9PgO=@_OVj~;)iJNFra1EkSIm-)B&lKQu~ zJx{+({~OHYYi@h|F8*&7p|Ne~Ny&WAiTQ2P+2>KnZof}R*UztsVZif$36D=L8*yyk zP8;##_#w}v<%v4}if7aup_vi_^cDsNdoo~>#)x?zlcaaD7O?7G74K_*?3J46{A9IY zN%0TFe$3%I`vi&@3*P%{U***KU$>HPh-hN+b7Fs)>Rarsi!*;6fA#8z4iJ+`Wy-o{ zv;E0+I(=^m?)kd_gTSJ?00@{sf&>&Uf!R2-u+XIblKDVVbp!;51Q4K+@pL+$U}4we+x#BqGt$ieUC(v0%Wc1~BtRsPNY}Z_ ze%IsjKa)9qTm?W;WW?cHsUi8}wb#~l8#J-)Vw*A!F7ZcdOSchB6l3Y8;(7Cc1_B=% zZ2}~EJ-4i+W3hsaJ3x<_3jXg+mYl>p(YppV{m4GKCtBQT)^Z84S(d}NUg6F3^OjG% zj`LP2rT4y5{wWVAzuO*#gD13y(sl(=jb8B$Khsn=ZF&#ue}?T))gnJiRuB3=RD({h z@jFUC6~#$^Sl8NKKW82z@WK-g{)oX~Hp~#3v<=i+6x8W_IdgM<j}Q-pe<95uG-z6lX|g{F**7)Ya(z@&))!kH8lK;R_TOCC?jVAomMc&isAh=&3EBH~Ed za z!dim*FuSw)9TYE+MYd!epg_&dfta#~7jkh?-*ll>R5|?c>UAY;-)7&;+ok zKx|MWWEz|ekBz+sktEwz6B2AF@Qh~)`!@GI>5J$tHXxx~^)HztJ?huu$V}1l&s`1` zOvI$PiF^K%50~Sq=Jal7W=kW6V%vEK1_>FM&@mLV?;X9Pw^5VZZd*~`Z_)2UPD#+> z$o=LyDAP1Zk`YW&o}w~p;Kmhcfqc@Hr#p{rOxZoJhs@eW;Iw#~5*%gD1cQ=p;5>bY zGE~ll`$@K_tP(+MIPcivQ#6;^2XqB7?Z_kPRLPtOA`3ub%InBmGD--@-gE;$hyD3J z(%D({>O}vO{!CQZzcj977WO$Dgh(Sh8#oIdpVFj zKRcV$+_ZeoE!WRmZ5Y8sose}I7V8yIjE4@Fkhv(zil7u;3ap-I4CmE+|MAkU_fHc3 zfAWo^{I%W~ASt}uh8&wALxN)fCFHn&llF9N{sH^v`=K{4vW~x+p6`}xRisg81Tq%* z1WJ!)Y5EjgU3^|-h9Hu9TQ2C#KVHUhhbdT)e&x_3h{)Z~Q|i4nlO=Mw-exHeJsoP8 zpgCJe%a|fwq*!5~g4`8OG~ha1cWxc7u=B3EUl#pX7Fh`nF+)v=ZGS~B|Mqjx2s|J7 z``Rme^^R-1dB?JVzf(gZVRRHozc?PJe(kop9s{siGM}!JC zJ!-r}`ak}DLoC4PJqdh52o>f6XwpCsBhscaj2AF4K(Oj#7-=56CA4&s3dK|3$QjXX z5$U?0`w^RzXv6S2RI7Pu@=<_zeJj?X7Q_io+8!JTASP|8o@0GRdOL-=_vbShNsgf>7=*C93fG}UgRm~nXxdV&ZBw!c>6rWh)fCz|)7S3d&WN=RScutJ_c?XlgiPETy5y?D_POA|#?Ovnl+Y5dE1p+{vfnL~zq=%1TA)Rh#v$h0s`aaPWtgS=~ z0yt08nDl+J_P>^=K2h%!NgHHGx&V;|42PkJC>5qzX@e|EG{Vcprd^9ucy&Qd5wnzTxIJlzh`u^q&F)Y~M=vcFr z8|e3EO>-%l%aGVTVdBz?4~3p-7Hd>n$tc^~^%&SUR(XSFW@J8WmY+%>lk`xKxEKXo zYm)*?!S84AU}GL7Urg&cYLGEen}oJV!h;r8EABbTo^=+b1*qsAEEUwdEO}$S-AxnL zJfUp%y{R;|E#Cw3ZmPT^|5PT^oB`;m&;!S)+5XSG^VN7kD6mdWp9+0rUY z>R_MHslhP=dc`f6gG%`1eU;HoIij;)@+;_xsJ4+vfKEOlAESGGNE%n}C#vHrz{Oy$ zE52~Z`K>)Cb_?YMyvLVA%0@?DQ`u8;N|O?5w0BxIvTZHcqj}F%x?oY{(765n@1O5U zZk9aO)ZO+)kyCjse=o^_^wf>fea^0NFnpO)>1|f=-Eq^LY>lM!!1=GdDUV4nlBTeG*PjMw=HFW5uRU_NVFgtkV=@pEtB3#Zv zXMImc{4gZ{t&OS9Xz&j-?Q>*l9+to^#1K6dUDytn1kU}J`=B1ob(M^ znnQ+uMBB{~-U)f=A>$>#szdttT{Y8{2#+v zdk0K>zI>P7&4iq&y`GrYSMAe9j=)Q};gZw&AY9Sn+?I(8HvC+iQFhK)0{je8No(kd z^CSVe8lC@b65_AyentqOxr^%&`Pb`{)v-;-J(75N+zeca)EWA_ zp?k+<>f#+LoPhQzsoc=@o29zU5e9k^52`gRB`Zns`B;smv}h|MU^Hfs{FhP z!0l}!I?FM-5npwNJl11=7;V#C+M&+9anm$9j{RkRR7uz*gAaD6c9LE)abma#R^bGi z-)BwrIz5wuPu530bu;?6^gr|GI~$o6xBh=OM>39DzkTJOjjx~m`3WGa;d>HG=Zs&{ z%Z+57t~+7$@#rKi=x>f+4_-~9rI&Q)G>Wo(DS2aJoKVl*otu0V z7UmTUHUpaT^fd?8lywEdnMt_>$QNnSeecw&)p;J0evr@aIq#I{A)Eep1iu(=pfx$y z7svz#1bH4(0E4kbSU~e~`w*eD;D}dD<#TU{>L*6yG*#d3SP8wXKD*ES-L;jwl~6lu z57+1;o&ERzF0)nmR#hJH&0;i*@~dU%{$$G_xkcd5Mr0oto0Q4!3Xsj$`TROf8-g-X z%95VYJlJR@z6oV9b}TPBfTTxt;DUYIVTLqLi}5~oeKtX02q9yeZ1(qA1*zbB_;0_h z>^}8YLA0gHl*|eemP$9U%bg#;CinZQkOZ1p9Q+(M_mCEuaiA)4X&|GD;jq^<1wF-! zQSW*x$IjiA7oBoc-J5*lhS_(}({y_5oZm;C(b)mC;9}!)^GsIPwB9p7&_L?mETjru zVsSSE0+wH9Rf`*%&}YG-lE#~C2tLu9`r30eJKp5a0bx``L1Y?GYuZ#JY#W)qF_lTq zqX6v2K~ z?T}hp%ai~^<<2276tW>sf<~;lSKyrM7lNxp1~p)8AuxI5Ohw1%E0K94M(fMI={(sb z8G3{fycTSx5I;{9fA>CJpf^sC9qQD{o;i;^pz{aww^7p>;;{;RJEHxvtXF(`Y9-0& zbFxRDc>=-w!jjrG_1Kq&J=n#~d}0o9rBh#EYy5^C14#ad`=bJ?pjaF9*TwM}om2iO3f2CIIGx4R#uXE!~`%GeHD~ zs{%lh+Z>@+eTgcmkONtiRE_csfxBz?5flX!ii$}X#8GaE5fR(+@kaP;vB#)BZ3Txq z7s7w6k<#^G{NDbb4wOYU(xVfbYB*d0r9$}uxh_Ir9f`Tl^fcEbxsn;>J%EAxdJIGhGsqQ>IfX$DEg|M{p5o5?XHQ{_c<;(o~!W z9s*}|0&0R#60=~UY}kIhC0YRZ+}-Q8a;^4}AhT4n-7jW1&d{TPI+weLA;3V6o-@0~ zpPc_#*Q+_;%=7oRnTz=UYB1z?yIlSCIhey{L=Fhq$-*E6qE=)Xgu;mqJ$zFvpQRT_ z7w(G9;O`=rsJDl_#$83Anx}p^>++w+VJ$<+ZwVL~s&%<#M|u1XS%Dm3Na6rLu8x4}Td z;DAB(G@HWYvshjnGwU{|4tHkdRtL0_`nL?iQe%70QHD5}5lYTBCy#k>hf$U4eUbS) zEMFMY{jFc)EBiUgCd@~UMzfnE)Td;TH6!*bz4^_bO2of#{5yCho7z3iD*wzRe4}6E zw7Z(!Hu@s_M+RPV?>Iwtsp%O7+p&0tPeI~nQw;0&CEbyMRNMD%-Bhl_J~5q3KQnx7 zCO38Y@0$L96hz1B9RNn6NK+c>|B^5_8x&9x9csTAo8!?D42QQkQ$`Rmq7yoTNr*wX z-ZV2H#ffj5AV8D&L;wIX?I?Vb*!680+%Z#|>)-z!x1{hrjeUo&INnMX_RnzyFK3VO ziIW?TWhpjY^4Xb^?{45E00JN)fUKHOC6&A~gx>>lAZqvT!urzZ4n%@EsZsL3Q);}9 zr$dsTj@ga=9&2XlFzmdn(dJ%7r289uAo30YK*^`oo`ZR>dcn6Uo$i&KZZq4Vw&0+I z25J7k;oo@-H}<7XjHz)j@6E}PYf`-vdOmHOUKhWYLr8oc!){*sz;$|^LCKc^^uPOi zP0yr7c!&9px!+u;`Pt^tZR!u*8WJXy%+hn9gyiuR_JjnpOXcy-_@8rSMe^BE?Q8fi zgXx7T;7x%8njSPev8ln$_u7^`MW~7ZBR4FDgG119 zQPfOk0uDRFGDQ&es>yjiB)7FmYgC97 zWDxHY1Z5I%aGqIbdC-r&Ue*;P|DSk!Cv4%??4jaeFO~D3B&JEqvXbelVo&qrN=++X zAgRt+X3!JlG|dEIg{s3+dr$YJ&;aI^u)Y z8O4UKNT4Axf*L9})w!Vp)`JA`EB{J$W|VFV%LlLo648gTaSNf*&fbHo*3MI95Jdu+ z#Gu3&E{~HciHWFAqAH|fGhB;^7n_in7DQqPBbca<2?eo8OMNU*P;q@4L<0cUml-Dw z!GV_ZFjBBn&a_d*HsYZ)h=$u|^k4H=LZ1xtQFe*|!#4Up((MSljcli1wIp#tsZvB8 z^C~DeQq<70a^eynGpkZGT_|QC)aZYGWxG(~#nOWiGWZ5sNAuRzK^$TArK1lX>s_TF zB@zMq?XU54VL``&@5~VQ&F_V)@Mk#NJO5OxGxi4vFds?^KjA9cCp{;*kvW1pM%bd} zJkLsKTt(HN&4!(c9NHbv^GdgmwaN44k;c-5K#9T~Vg(yeZ<_$#Puy%Uh);iU}o}WiA+H%8>6LK1uLJXERXej94=|vM?QfLK=fi ze6uhhdmXyss3=r8U=7^61Ym)qN)Sg($bq6#$g3$SrZoeyE;Ou2pmNBCOeKk;RF<;3Sjkefi>Qml4ue`9xqUTMufOB z)3S#&UUFMeT9H7x+aL_QC&&hS%OViWTm+ZA+VB~s?MfP$*BYq20AHjb=)#4*nL02G z8;}m+Ks2BU1bIRp3xF#dp->iYx8n^mT%SH7`5lK-CNgh zjDvuYLN+wzoJOreYM+s?f~rs&A6L&L)SPWpiVQhyKw^J>YA7}}+yq4`j5*N33d~z8 zu&SvCk%N_RKq=v-06;)SAi6y2IM}NKGf6wCuF{HCx&~JUl#T8U@-ZN)!-?2<3=Vn5ImYj5{pxNl66H!YnA^O-h;oFoYOhv0{pF zZYHxRUf)}zQNj`HQ+3_kfKJ2cbIzchK<;h3$pE`U|@(PxKKF!1{9YdtA%akI`GTvnS0j4^5|;H{wzn znsdZ<%2Dn5-G0@zFeMNZ^oiy8-CIS7T-0FX>+ldA|0WaJUY{0Q3#B>?U|2eaF!$|~ z2p&-%a$0gjzQd)<*X%kwBMVSHeSBkk*9n7`UZeN5E}b-ufz z%DKc#&?h^jg@L=;<&%2pS1sbk#PXk}gA+^5!a-%J#Bs0n4Grt>jX2vn!_z(i>GPE|VP*Cx-ly_lCb0v4RNA zZZg5oxR@)?e=kL;RTz;jQp1XA5t}1N_H{7rO)ns+hHpw*=>wJ&SvaN&GQRVOU}YDR zC`N5P)~UrqQ1)UKYdTH5cf$a|QIle^hyoKcMB4>)az;u0js(FJ9|<`RVY!d{b?JG- zeq>IY$N(X^4oG~VG?I1%{EF{xKvy9ek-G=?Zv-{1BfOghJeBqyVyVk6LBn>>2<)S; zq`13yD)KnJ7r!aAxhRo6RQA>icBU%fLzuDpo030bRU-As()EM{AK#97v~`EZZ}G3i_#5@iK!r?mPnnGrMG1$( zeo{08tj(FE8;YWh0qxNdrh zj!?nl-=Z$RORl4)v2~a}nZ0GUaS_d^KV)3p2BRmAx+6{bEd0kKV-QK9CD3TzcZ%q1 z#cr!qhY8yGQt%3R&vT3NYd6JaxygW zzCqQVc$Q`&h$CcXLaxv@k2J*@&_Lf|5PzioRR2x7WP7K@V`KBr;mQleSB2_AgvtAh!Ve5+IgM3~xdHFu?6P;H}gm*=uHoiz0|)B0&S z+!ohFx84t?n%68io>JCDE6-wqc)?&cWJ363M1}M1Qm})0gTgeGwm6>5rvq{FQcrA> zJN7yH#32?Y5ix*A(O_g6q9N^AqRACVL@^bxXHHfwzQ~)57+yV@9!lQY z&x;KG{@I`yuHljkc*0O>;BwLxf}$68MgMPi$NMm>G5Cjofe7aC_jj|s`KxciI(`^` zoWD%#?5+o(5I9z~dVfNakN9_{(p%;pzrBg}c?pL&z=a8$=uE8GpAOR3=Oz^4kY+&N zSIDN;Jn--n-{k)H?9O$81A!K5umX|+WK6`2C!aUf(tZ+aOZU1R3A{jp>CkbbneN$x zNbnI65DQGI8Y4|7M+7_B%BpFsoZ!KU7q#DUc9-U2S4qyYd%2RZ4I3MUqpQ2x)`683 zKeI(C02RRppe(2Snwti`S?GtJ`uxP%2tLT#*&G>r1N?Rn+a@;kg{Da3vcUR`bXk7+ z!JqmdZ)s2YSn(-VRKQ(RlE+)~QC2UGymidDFPMVf;3g6=*gB1py7 zkm?Bli2$$`)<~(WhPHW!L!>c)Y?8$(f735}dyR%VcT;by`F-MwB0$B3lm23qp#-53 zo9kj$0%z%MxR8P1cyeMl3m*HWg+CAGX~gCSbf>?$xh~;uW?Z&&pWB|Xrh_}T{}8TXAnmQGhGm9&-3X>a0isoQK%*FC1cqpFTA?M^NU_Qo8i8_637 zHhKCWZy~QucJ-&YhMn>bsI)3ZmXZQJqLN_JOF|-TKN;Rkn7kP5e`OPy( zKV=}q(1L*ek#o7Uq)aA)5vhU`sHq>u{>KKJDk?Wg)`WXC4hSR!3Ih`G$ROS^lgcxO z11@vEt4lJ`MuIr`6(~M;;I?c@A#BkAf039?M2eZ-C*9>xbErxRrgFvAq>NHtGcn zzzp7iFkENEuH+P6Gmu&c22?6|Ceb$YJl_IU*cFQJ!Hq~gLK89L)4+hc`0xn8T4C$4 z%e0P6QlJ!^$XEsr<3$ACip@tCqpiK~{DKfk`o-F0vR4dQHRWYx*f`n^*CC}Ye1lM_ zvc(jgz=@Xz9aB+pt|j+oe3Du?Y?#BgCukZA1v#K(YK!4hO(9r&?e4Em2e>15bESU2 z>GzfPIZ+~6GQ11S6)fpXy)upYb9_CSW#Xv%Luiro0$oEGh%kpXb_->Z>Uj&us*GsO zw=Jid6&hg;)SJX9dCqT?6c+o^GLhUMo4Q;tk~$RooBcm_|ADg;{s`z>e|F{GgO-B# z^(u)r!WU5ImqJBlT3RbT&PQ`2cCE(xrrqjEQJ5`V7T!Xx~-dM?ieUhn^9e=~kgbl1qm9Qw=i2zKyuV zNsW5uoQ-Q(j8Y(-xfNxpd1Fq1A-*d*0iTr`Y7!OR24du#2;`V|Yc`?~t*91u#2}^N zm3e%oa$y)#2dYY5?W~Iw=7PbhFvU-83c1)NSOy+&#+D1SM8=bxXmnWoC<8VGL~@jg z5#J-lBH-{QBpX#QVZ&=zTNwJ8swI_@7BkPEEf6jv%9{5;KObJp7Ngf zNQ7;K)>*#j;P|5MRT}#HY>eh&9_)VtQFX+_ZM^=gP;3UBI~{h6Cphf0{f;7%R9$4)Kq>yQlsN zSPUWttpW@&xm@7YnDqy5{duhS@9+Kd;YA7kMpqnDc$GS`OUhyl`mFO%EGV)VDe}3E z3k(b*{9|0zO!Q-UqICTAX=f$W0hnY1s$tYY<;&m+9iS?R|_Nb)0jg zJqi40+y@Kj2nS>@0QHHqVDcmi4@MrtZLQGmwbHDAg>Rf7(8$ttw{j7x0DO_2My$XZ z-+L%j0!l4HhAyfYq2>nckpH0~s{)7JFfJ%%yTs!7f!F}XS{x?yT8)Z{j&-erEA?Ccf*mz^CTVdrgA=GDr>PAsPWJd>pdKnUT1?H zzMhR3fDGWwX|xk5tCnDZUqmu3Q03l!{n?OJ50V6%^f9luMb$X6LE(^S2q3SBL=Z%| zf$mFtu%l8;xIiGY4Fa*^?17+ABv3s}b4?OG!A9-C^%(J5q!P{&0-&J$piXpn0UFF| z#22)R$Y`L&;*ok4wx60Y;UsKvIc04+Ijy}L6v1HAb*Zg~P2u49XL7(VSnnmLwC-WX zWBSP#Ht)OrfwB94TD=6J@`XU7D4uVNcixH{Q48RN&f`FcFIpP_o~5{54U;~P-K0^>{@x(T( zs997}3$+4Y&suR6lp;Rb%6PSGk!YGC#Zb%an)v1qT|n2uB$=6e80@8b(U$XL`j1>M z)D~d8K|s7gZ^ip4@2M7On7>$4MEsj++YUhWK*oQ)^A~k&p{*!9!hxEKR6i00nixAm)5B#+9j_?5<3nW=0+FYx;RFhWy@k<0HT9;Qh_FATEGh;Kk94qZ9&> z(Tltk#n7ChIxSDKUUr3WRHC2n>pMST9^=?)`7gS^Kjy)O{NLW@#m)(UAu2#aiV&RT zq#oioQnhH{s2Cm~3=>ihdtLVQA&?8`V}l#C{d!(+-?a}q=NFMeGLk5sfV!N?L*uCd zQn&a#5fnnbb*-5MP!T|aK?DZa=Z+F?B|go6gZS9RD260Z+G3|NrnVg5L=gbi3@jjN zK(vVLKj#1miP->@5gjCxDx0gs zH6!yK>}{9k-HG5meZ+8a@BFb zB}VEUJ75nPpmaH;4uBjd3Ku0^fxs_OUtP=Oq*NxC*66K#Z8DZW@5ucbJC8ZD+T#C`KT5K1NgH1`!DzZ%^_1*VEzT| z4kOSiS8kB@|1Sb@hD1n@iIz(iQOP>SnS}$RtRo`2^ypj zed%}t5DE%NU@pwH%qkYK-X8=t_D?-#03|@$zwCweY}9u9qws!u__W&STEmS8mPS5> z3+z@rou2g}aQ}x=enw{xg5h!9TlZsqdOFFNX3*Y$4+-|_=xlG7b-4o@xy9(2!RBQr zJq_!{lR7tP0K|uDx1ex!=1=)XFHGL2SlQrzk_`v&Fm#|1oU3c#-1DKL_NGaa_WRK zc=&E9uC6DG;{06Q!{hjG-QP)3PSYr*WFYgAHqbkd9;eC}q z2GH+j=>E^GYFdxFuR(Qvz84wZ8 z$QY9o%7Gb=yssU|~Fko$s#AUTh!0(1*(iX@=h0dCSA?H-J%)Cg3I2N8w7 zUenTl>x-Trmaw1JX$qle@~<3*jZYoH8nCj zahV~)R7*AlB4q|hm67wkjKcvD0TB!+5SP1m&6$ENXIXhWPSkI&2Rh+^7ur|akUcog z@H4YLQmtX=w45MjJi9ggsL3tGXZG97XSx!Kpgy4sz$6G-{_M1T!^x?xVykYl_SDV3 zmWYjvbWgJBsq{b1=ypQ3*1dq*N!`x7?zVl`*|N*=1J+hKgwL9qY2JyhR`%5(Rc=9I z1x@TH!JP)tF;J0u-7pZPBe6igBq_HGQ{5Xw)~je>b|6tBvKJKozxRlCx_*ah5F8Mh z)x{g1d6M{a^sHd|D)ZDZ`pc#u%FtOM#RRWl;6jV^2SgpaYmeFr5N`9GT{zM=!1wGwk<}z7}5eKJ!L@ z{?7pX64l?|m%bIv4k>sR&h&^2>UNGKRAnhK8vELP%ZA4e_s$7x*uU=98oqBNx4FZG zvmmG5{;O<8)&s2aWa#oGjI-i|Zbx)@&!>r+O-Y#y?Ld5%w*8*)1W#+p7%j4Ri@TcTcCn=Azzc6VWs+(`5W<=wxvz)Ig z4y`1)=-@A`!f#TH#3s9f(<<5ncIY7XUt9iz`p*}gpTMhU#kUZMAc*Y5iKA9r$^tCJ z!jCx!ak6)9{vSDG74 zPJbthM`<_Isd1faRkl3fDh+OPM_8@Nl*%MU8788JS#k!5;Mm$$F?Xo2Wu_!V)g^4~ zMn8URxZO5=>`7d35yNdNo-Y2vUUA|62$<4b*l?g0jqVwZ+|`2m2OXE*ccO03q))6Y zf*^z$V>6k3j%0g16QG*yzwa_+7~*3#h6077dpI1Ez7*4kGKX6wWA>Rv(JabDVj?bv z68yF0b!fhhY;ansL$9yA@p}PA(n7EZ2#APcCZEVU#$Yb7&%W)B!WMnME>n*FQ}8Fg z^+(zF^55^N=lWR?57CpU9jdn_NcUXH#Pokm%=sO7sqm!VJ$H%m5UV)D25S zKxh5F6M#o)GK3FdU{dcKKiOZHb@6`;am;IvS}thYiUbfb0}#P5Vg?kP*ZWKtwkZ?} z3P6EKOb|f910*N~c_t@^lC$Im5rlN@+OR96%GsDptM`S;m*L| zQ--vwz6P|6NWTR=C^wCV;P~F6a_&5D!TZCdqGV!Z)>Q?UHyb;J$p8V+`wJ1 zn7Ojz^-tto@V}?s^*p^^H&W=dvh~L#ZFTN5rHfFlyXM31 zq~oGkNV3imK@MI7plXqs82BSQiV>tcTA%hy)eDF#Rgq?7I&K`d)|fZgtnNQ?cE)-E7ka4eNWDzXwgP+9oL9(5Ck=OMg}Sy zG<`3ZwO0|3bD0+1b5}~`(4ot5%6q(IyV!hYH4nI9j)UxTYI_Jf8P=?C&yAWy4AG27 z8&Q!ESrI>L*U61G#;+|3%kp}D_+64fAR;fyul~Gl294~t-&G)y1CJM>$j_Fbo@>Z3 zgh66ZNDx68@qrZN-F@2*$#rbV*Da5W{cSS@tU{>EZnC3$8$rTj&nl6~Rd0V!;mIjOXm$UTMUZ#=@@R1CW2?6VWRf+UKEbq9LV9u^A((nd)RX6eL3Y{ z0RjXB27Jad%E%EZuRxlmES(bb!)PK6R0&gT8|Wl`FQzwT-psBcsPy;GMShX zNO4pV^U-JQ|A#4L_p5fb{1d(x8iqmsfoQ@SUDICwtnIhwcc!9~A9!O)v-J9&-!Mbk zECB_pRbM8_g#jg>yLy2ek~t;aM*@&%B=>K;5jtOXmpP)bbb5iq`uKQDge|-&*w~@|)3M^vAs8}_Mk^&$5x4N)z?t|;! z%1>$Q7=W&d-5)2S&;;8y#SbaQ5O3t+5n`<30*MVl5^cqd6P@enD!QD$nC~hev9(Ij zLgJC=H$C($Lkk$RVs{3ykBq3+ZhlEu67KYFJ&6*%K=9L%Mhve^CoB>l_{)7nGXR-c z{Z;#-0*x18=!jgJhn*AaDMYA){6DN!alP*B4@YD_5z=Sv)^vpri|)qzqhIIb`!3P^ zyx9P&5Z!)3+YESc{5_U$w}-O|-zkiH`1#EOxA%$s$;hUYu&O0>T+qUvo%r3I>I_aq z?&}^{#j1{wUm$=-Iv~NJ3^+a>t?xM>S6w%L{WW|&Lf`)lu=}~m7{`T>PP3Cl>552A zXhO!x?=5X)=o6 zLoiS2KnKZjI3ePzKiqnTtJLB8;S+pf$WQ7hX>vsp?Eb&khp?QdBha@4yXH{x2*;#( zPK1r-pk;!{e&|vP%!Qd5iwm`~1Mgc4|M_>^d0*Vu59Cx|)w}us7pGFXuG`KWtbV6> zq^G1AcAEb%({lmXQ-84+*Jny+e5FDd4NtEP$Y%fn2%!K%iVb|u7^KYESzo35nK;=P zxAAulo*c~qrf@>0J9X}B)6YU7CD=3)WTU!I9)_g_Tti{H!d#cdi0slDOUHmJ%afZmSZC(&=Xy3zb6`uT>C=!b9Sqkd(E*% zV4E(EQ~?W~)0CR>6n*9#)InhLY)Vlp{d{DI_to+L$yHSm?U?Xd|)b>Z5+x>-BsV-_|LW zhqcSBYqrMkvmX{u-tn^c zHoK!|k*nM6m;CZxjx$%$U7wsnRuj$hvVS!Eihu6^UGseZ-u@FHP+>ykzpBwlM$IL6 zpQ=CW&0>?h$KjsN*?HMQVNd;e?^V6;u1xHJEkK(ANjeb^$lsTRg*{BE5!R4^Fm(`& z1_-QGEIm>FfeYIeFynMinbE2ncQ9DAVlc5u}blw?Uf7UH>^+tybb|^>uvT zu)9J@v6o8UWp|ORpVP6fkKN%tnf;~zWlqJw!(sfNncA__Y3$$7`2?}O`CAr{yLffN zo{eb1w`rTz-LUEJpvGU8V{O&aw>iOoTb^yU>9Z3!W9IA)f824o-fLa&O^5KU*l*h$ zDRb1sZE_{O!8y>#@HBNDd=m?n1)A%3ZF4V;F_Rt-q|sEsW$;xqrlJzG4^TL9_lW_p-LS2_1D* zFo5S~>; z#S{SyV1ga~^_~x9Lwu`a)%Iz9oY$n%AqdUY{^{P-UUFZ?gEjyNB;V-7u|b?K(+9H! z5kg|&3;-1mCq##H0nD4X{nn+#0stPb9!jJ3n9_c8Xg5O;*F$H_>goc8rOG*{1eZx1 zk4N#ll46usIqe^Z;CQ?^&lG>(ht|wrz_Aujpw9WL^1Yv8suzz}73nSbxyg_(Og~bWB@gM z-U%5IX+bgy&;9tFKN{Z!u#(p})K;t5Z^-i)z~W+KO&ZgfTgc+IYL~%4P0X&6dXIdL zBOo^{X)I~_K9PQy+8Tp?%n7Zo0t7^Pz%j;&!W;hMU<+w_<@o(Yk<)Tr@z~8?eSOlZ zshZH5oIpG$r0MQ;w;=-n$&rt&V0vpbFTd$!k@7Dba?B#8WWiJIkn4&ZzQ@rmVgBf8 z^;uQ&3;fd#^{9q#eS6b>c$83LH5c{%e2ka6Hi?oJPrV>uJx}|N``-gJL-t|VTS@S! zkZCFjYR;^o7g@{MnkCq_xUX`KxR;?+*``srlza&1Ua@DB5y}DkQkIj_{0Y4D@x2T> zbb_-;SmE0z9!RUl(J-eH?PW`+M&A0C;Pv-^W&Uyc+cc`IOuqc z zs^LsxXkOpueQO@asNa;(Q1!62F9_hw_>T69eydY*fdFxnsA!)484VD6TG9vc)AZoI z9z!Op%`pp~8VEIlF~QIf&=7!6>HK+G=lpuubWU(#8-p_g9aA}SUKU;*1M(Be>TVxP zkOKJ&^C&ytb3cD#^`~9Wu3zDfzM)I@4_@s00fxC0tgt!Ap{IV z7yxaC2?*qW2dAW(07ygxJAwgF5t8~|kDAMJ3Y)dv@;oi~{>$hqkm6>ozVDV5;6kdO zNB~_9#_db7%u$_^NA>UU=Dm)g;=G+7 zrke>j_GN5$aq#}QFFYn73|*Cditn>n`T^Rg+{`(ilJ#5%lI&0`H-GVKoCuCZ0tx{{ zyrFI2SHev~{I{SuNL^lZ<(vV|W$*u^@qISUb(d(~lVmeXIG}Whk|?0ll4r>zf@w2D zPddd1z<>ngL+?}5k6y!F@g!eaxn3I(=B4L3?z*quqhFplE^K^O`d8Vf+(7ftgJ7CV zEmXKFLE@UU&?Hc(St=Dti(l!NLaAAc(J3lLH9~4~R4SC#1zO#!6IR9Crlgt%fvoC| z?&7IZz0St85)%OrL3cI-nja9viV(+TTLd^fkR|CVQlerYP(HQ1|AqmJ^&jjSu?T>< zk~{jwNX$~WO2Y-3>I45_>J`HVuDJrR8M4cd{uE%yAiaJ$_=+D8-(qO3)#CP^-F62z zKN?k91~BI7=OYOT2-FN+?ESWx>T4+G+CI?UGEe)gAfUHZzlOU5LT}d zU)IWr^^o;6pdl;$%#~m)F{`H7$02f=+^n`MM4vD8m;TnTrk>;oy4U#@S-sORC5Zjc7177BiS^~FE>ec%%2V{r3ZALW?o=pp?p{9s4829s;<5B7 zMg^WAcWt{+cA+Bwy`Lw`+TYb~-OB5?u_gy;q-4`Y*$S}DdtsGz9*$|u8d5sF{;}Rl zb#Q~k3>UYF#XdxIVhmcaW^N`Ta`#DphrQ;5Y97cn3nn~%0X2Im8d)|?qWf;=y4`BM z!H|L)hO{bTZyvPZXeZm$4MVyj?mXw6OBpf7*T}>RK#G>6OaXvYUKya6h=XcRKC0@P zw?Zx~i!bAPOfwxAt=MheU!8S5UP0>Dz1z#f2knEsNE{00 zS2H8xe)CgirIp{S1ILqcoATnohql+ARElSD&NhTaE-g};!M6voK!wnjhRYW)eFO1C{DU0 zHH1M};A4szRID-@Y|qP6r45?2gKe6d|5)s4KScFxrM*Wdxho~+y#g1`r6y8)hOfDD zh)>U2ka2g5WqgKSB3_T9qP0FXCH0&v*PnpHvBy|l8$_J@%N9Y5#p1C~!A*WfEPfSv ztmpU&e1MLdVsC^s?dH8;JtIwdP+JQ@JYaS`b^j!NbIk4kI|@Fxz4K8i@HF^BD>9GJ zDR`m7^8zmwZzu9Z^-Ti9)eegg*zsef%o=#`RK7vVYD!KQ7UP_oUnPn9I1dA@vq?y+ z&Q4{Mmy#UY+2*B!#XlkrDc$Y!5A!2^Kx&+k5?PU1OeJAaJvGy18Gs zlLDAw=B}>7OumyJK`_Vt>fJn_&mZEkg%cW3d&u-ojqYFG%E)`P)5P9hnEbyyT$LSV zl1*Idcd<~nGM6Of>o__utH-isa*%gQA8%v-B!t8G+S*Iot;E*JWXVcw0ZYzDe8*)C+(9$_g22q6B4Vy2NfJ9$0mvM`^SLC; z$o~!RXG;Ky`t~HLI{=v=f=FJIT96}y0cH5xZIL1r)IPygll%1)f6g7Pqc_Mwu@47J zF5<+dwRR6cWZxDeDVU{`iLkUH?}CT{f(>H9Ef#;Vcu}CW9cT9xZjvKP_6eHb|F705 zk#2*-CMvieNGMW6nGf4cALz+J<*;3u&v??YW)!zT~$hB0b1{`tHFb55?30OnBqiG+tDyOg!ru1dH zlHDS|C*xv8iGJ|nw2E#g+m}SnQ+5aQ`AN?XXEHaxQ`L}i@TojGk;8tJ^++ok3S$~~ zsY@PqEB0U>J5<8D{Tru@dza*0zIN@=SSE5zf>FAXj;L|5zAsjY1S5xDk!(;;6cs^z`%X) z$nxHd8bQFAP2cyNf(2NXVg_zUqmVKy=l;9)p9n=z3o~rM(CpKPlfDNj#yobS6$eP7 zGopX?HLww1;BjFlor1g#r$W>NUfQMCisdZ82lBBa@`(F97OQ%_?us@+4Z3I>z99vh z?)~us!uLq@GwufvX56x!sOn8k|JZn;`XNA-B2!JT;30a%Fl$MG(u;f{XWv<@8#y)w zhA>iJc>%ly&-RrfAiva541L!Uw+xb+g8c-74Ko}$THjOQMmuv&I^pbN;e8}M+}V06 zyDWYKzEbywMceCF69vg8f_BH5hTRAPmXNP&v^6G>T1-tfZ9;)0xrUOeaAhh5Qm(~m zO;1{i8KJbRxSFc9L_+R1e5#V&s``5h+I3r2?B-~GX=bYLHGZ9at9NloWyYk(CqaE% z>#s(92y>eM%T#p}N-zopfIu{yP~7G7(o$B;q>ml+{57`{hqOTTKYM>2-7k(+9!PEc z8)jdM81=zMlZg^ccLhVU)$1stmrGyKA_IEuGD+K@`%X!=#=(^_xV+8G=rrZ_@x@Ch zhm!e=m?CEPhY4sw5$A{q5bi-MVImwPgzr#h5+XpP5*~;5Q<2}={tPteeh!IB8^pf% z6$Va`Bo|zwaJi=cI zP9UXp;{10V6UMC{xQ_OSWt@|LbI^CsmB;@?72Bvo-d0xaNb0_Y4nPGnFuw1YZedZw zbO^?Yx5#Q1Z}eV;CeVZIpga>uUXy7~>V^Q`)U+qn7#x`{_OFMN)^m>BWYd7*o?DM0KD$`t~fWX(-Jr~h#jdrPi{WP?>6~p`uWYfrPOAKc-ht%ekXlAS&jt5 zVPV883#kpyv{TQEv1dMT9H`1jzg>vVY#$Y9$tR#=?zO5lJ zK+lZ32Su|qrA(vWO`O0P$dH zWHM1at7vb(Y60*d0rR7Y-4}QNF!ktBv_U5eSiqT8qeV16xG@%(@B{#$K%50h6!_mu zC}>bVGbQY6=_SIHBBm0d$wFEhg-gpw*G1Pr@y0ed`6#T6qOfLQH^GVRBZ@+~ww;0f zQ4gFvF7J1J-uRzGqePB9hPdxwt8)mU_Jn20e|t;S3<>gMkKY=GwY=vg*?W#PCufxw zIr^?pBzy*byB7#}<1=&O#((%|z07WLKZC*izFNJWtOyW!76~t`HFPpa&pTKb)2d2c z(H5QP3ifMV0!oM>ovLb%m=RFFZ4aw`kR_4pE*>mGJEa z$5*4K(=9t+O4Z#;7qewA_!-sw$Uc3Y2O4&VuJ?v+9nc53yf1Ul`hLFd; zG9D{BO?}m1nwAe{ag1v_XzH6A+nrV0$Ua(*{`(^hI`TKyqI$o;Pg5TfvXKJ}XimsN zkmUjc^j;Qx04#m#e}lQtRDv26;z}EAEtzx})Vpx6zbl|akvsZ{J%Md|g&`tAR*>%Q$c(NX$!Qv9lgUz$ zfrF%nbF}zbCoNYlCy59QeL2!342VRzM9?@P+f+lGgJsFjDp>-M5d;eelct(c2G|g0 zT8^!!_o6nT+0MeLcFicVGtpf&u}vnj7KolCXsVuTDqa(|$$lx30$$hU4n*1j`Kw_w(LpS`U^RUf=i?e8Ib{_Btk7#LKqZw_d9>qn1t_@vy1m=&n%pdAhspDr%v~972V*iAn^4 zJ(oa|Tyigy&c4*&X?p7gL6B<= zIbRDaP4}l0<;4QnK{!J*`55|K%^FB+x}@Q)$kQ00z=ZHydH(k({KT7nBvN9M**Un@ zLFcvdIv>*yegZ{UEIn*FgT(tZ{NOV@hw8DA;(TcB%{`z5Jga~6_y1`w?0C9j1xJ~Y zpq@lEgXD^Lnc{Byhr2`5KQ-+%^GDp^Qt*c%$C~{#2T6S; z-&bvY-hUVG;%j)tISUthn76Qnn^gnH6;$l#5!+J1xYT9r*-uyH^2qsZ|86xyCR>eA zu}^8dGC(3c!d$-|Xuu#)#wk%$KO62z5We)%f0)u92$9+&?=g4d_wR*^;4KT(o8*7q ziGrKB?3p7qx)I=l>|!Q1rbZ6k>I3Cz(Vf~k)t`w$PTs-`P~dJ9JhzomxY_G)46)Z= zs_GI*aQ632sddTn#Kz@g@+EebjOwLsRr1;0O^O;vRH;j2ljhxv66uXucpm z(7?$+gu9F8!9&0G4OTC4tqf`sn*s-%MM}%O#V<18w8u#qb5t5gRF#SI9F$0i0zwMp zq$ZcsGO|DF2xk=(JZOJQ@{R@ti3)Hi-4wNANx{TftzA*qrAjixLlQP$&L#ezIl*p5S{~eRKRcqv9A!^X0WP8nHa|H$PG3F zV#M+@TxwXuFe(F9Mw<4R9-;tx9!6N&^0_cn(B_;eqPB%$AUdRLd#F0KVHwq~a=1uR z(hCMyPOX*KH#KpbgQihHEl@Q3Bo!Vuk4iS5?CSW)+qbz?jRDJsFtI8?fK$_m?sUvN ziE_07?hfE^p^Y!&>7lb+D1savLTsNj#6vjYuK7E_VcZ2Y`# z*;qA3;$u(;LWBB{AbA1?q5b(T-HWU2v#hoAX(J?_mVnF*>aN>z15duo|=1{q_ zc?OXkQXCUce>VbZuJaS;g7ci}9U^vIELX}00rV{hz4nnR|% z@+<^K+|^N5>xs5WPPflQl&46Sw3w-sm+o&7WQ)3Y9@dImPW!S?Fpwrg-&>Igl>D@y zf~5G)7`jbDfjn3t^pQ7S*rV>2LwSTqo136;#wEw8>{t5^U5!BV-#K!$`@b@h9v@oX z?v5YJjsf)1vO4un4O+D>K1knrhysH?ekjpZO^jzrpiClXpFR9gDW2K8A?M-K-RE~Z zT)*J*l2u$1|(M6 z7Iv-`T~f0u6+5@0EtV#!6|WFQ8W91)yG_J{2sLmej!a%Gg(%64TH2BiN~D_AY7RBU zFK|V~HY54<%lH}~R=E@S1kQYY3EdMUhA*}+ig(-t>}T80#m&E|8!VyeYRG{$1C&WT z+EfcmG6M$CA2s9C*ai@Pe!WTx281tTtsD+F_bijvH`b6dcdBbnXdnT@AU7OIfrx-+ zYY8&IfP;X0w(v};gvc^}tY{4cWP!>dAS5C)(QG`9(!qL=eI8;vh9N-^>Ym8Wgrac( zX>+^7%Hg_D{`*s&<_&}#=HB}u^zI*9i{m6m+1$ouf%0V|(=gt;0rXM(wDdeKU)okx zhWa+!m_+1lXJ+D)Wk;iO7E={nOMu<@n)wrG9bD%Y-{Yqli)JB%4vUMNUyg}OETlxb zs#Ee0@_oYh)Npb1GC0kls5Q3Ky!8g#%k;$zYUXwX>e~VKcy%H)26J=)0OtM3x@pI0 zqA`vt5I!QC5GFuM)fZIQ3npOXVvvZ04t<*hSzp=S$NZ@Jitx!41O>>VdOy`1K!Q}n zAV{$1`37%%$OEMiJ$<33)`0>dP6?siSa+Ay)tMO(0wO2i`9GZNx3V-h@;)YHt~>y3 zEa0my`PA8kd-6)uMVf-iH9cUWa-WL+FDbos^w$4-wEbNp*vhgPoPaT22dD)CQb6R0 zq!zt0T=HO9TtFUUeD-*si~8pNuNA>B!{j65GY0VT6~<7EDVVRVd*j)w(I zAr*d%Iw#68#KrzqoahX*l%=M*zXIz7k>m}^muM40eRL?wUqVVDHXz1^b_5u1K467o znu$old_hpdDiWKLGfZNVQZQw5GmeJ!;d{*izZcwl{y&Ip5k=!7QpUzDSP7gT*?$wn z@;A_I%wNAh1ZR&2^8e2aF?`)+!fkjlTu2w2 z#NfPnIf7>oBXW4Flv?Y3P43!WXLIMoY}Z&MBiO_gL;>Ha#*vc1BY6;uT4@UrLS#WP z{fNqN#P?+U*DpqC5Qumih=UhG{3OX21rE2J2}x^eo68CxerG7fq7GX4kT7BuTR4)N z!Eg)_kxDG62*%e#!<6S64ucMkQW@~ZyOGT6i`0F6xg@I|@B?OUuUr(&cAL8#VH1~5 zAYXFA7$X6gP6KzRWPt>&!B4f22|rZ%!|+`T^J1uaI=-X9^n@;v{80oy4N`ac;dkLg z^Pyu$KSxh~{>$sEJH~T;7~o$I zUFFEZMR=#GuiF%5K@62!PTlw?*x)BSOnZN(bD^POCja`zpBYxdHH&qa1P#1>%9YKJ z@}EmI)0sal_^N&KmJlt=&~X_OXKg*Weh^70ka|5>`EKKujA7T;bNc+noC-b+ZQcIo z+l%9gg83R7@kfLTYbL*5tlJQJS%g9Z2M*w-p~LGB?HfAje~5`RuSx9Bnu)4Kk!^%1 z?}zq`OIG60m{!z;~WZj)RLo~*b%(mpL z-+r~uO35UGIfmI;YJ}F>`*WsAw43-JP7-Gd4V2@)iu$~iLVj;<^obr>Xp-=p>@M@w z(NX~MlDZ^ctaKiNFjP05p;`}&2U}_eCAgd0NZ?-xKR9nV?B&xb?;W{Ft+FmhGR9-FhsT_Mlw6pQkG!#R!UvidUtwSjXe`&v^RB_hj|!d5E+sXm57tW^w$dWowwRk z`{a@ydA+P8?6TR^$Ra6A69`&yEMtRMGL6}$fhv?-bLApjbKwjGv=AqIF<4McS4Z3^ z7Ry*rM&Dpru0P=9!6Yng7&K;oMrB=(H57cZ6Xh1T90AM@7>3-W6JlTM=dz>DRT(r7 z=+Emq{{`BsC~$|XWO^L$i&aNJ_%%S;$J@cGte&} z9~^8-zsMo;Z70*-eJVhNyK=n<5)Y^Ri#9LXf9@b5je-(q=zkh;a4PhZnb0v!qiYeQ z=(iKMA2Ic&zA8dUgLmux^Y8`J{I0D>_05daCjX`7gza}>WYbnCD#cLf^@|fPYgbg+Y#!o{H?`if_ z690<*R=)va1JO1E>q!Cqf;2Zz=H$UR)TEfy zFoG=mTBP{{wGc*_Z$Q~|hKxZNw|0$i_Wo!v)BBzCpB-1$r3M8^51uv`-(->6KO{%)*a0u&-zv) z6`77960%sP0dcJo0*M@~$U=yegcUlUb#IN1xyCP$|H|eoN6OSPa^iK@xT1j0j6j`o z`z>pdkWc?9?rBN!oo(Nv=3TGr@W17i7jD8x20rl}Ac%mT2%=mZ_Ewe8XWICWSnfP> z@H$$hFtD+aZ?0}ICQ}=d^*0^=zs>Tm*S7zA1_N{BT{Bf4bF2i6uG$_K0WZ(L8F)xN zm)wu9b=9TTC*}VH2F=Kiw?FcAehT~2bjvs)Ku5&c)qTGn&r^^+cwScm3@1nL$3PRWzP5caAyw_~FLFFVq-+w{DY zQyU80k#E_T5T3+#Vz4$+U>xz8nT}Tma3c*&OsbIDGnXK=a>V`*pW$V%X{6R+sR~Br zU11{-o6HeY%Gh~FI_gs47@7G2WK$w&>eklYq!$e~v=&rMb1qf@H5muqR1F6PGa=FU z2}%-v0&e3hV?3KZkgvMhHOsWq5{E?Jx+AvpQhie1s7UzfjATKOp!FgwAUc)>rsn;u zl?B}}OrSGb$6c&J{0TZx$SdKBr3Y(Jl>#rDr^nc$2YA&onGUH4g5HUmo%j|4MpVQp zXSV3J@qZ2KZ`E~?U|51>D}S?i`ydZa%4Pp? zI`1${St?^2e?L+;ag0FA< z3iXyr?wdfAjnc1_H)I07Wu;_gtd~{Ko;SW?ex!hKuG+$3$BXvm&iA`g%(G=5H?R~Z zliSJD{3)U3fWoZSXu{70_tni41J|at#xe#;MnlQe6Dll=f-~5@My;Ay6D=b^B~e+Y zHAU362WJ-L9hLku(Qv=h|4PAQ%)feVg~|MG<_t@?z8ihUeWg3ORL!>Y8@}9A9g2(9TU>Oww3P<83 z=Nq*DX;kjch&$bALg%3dpVToe&J3oIBYR&h2G4<96(KLlgS>{!Y_!fN${I^pdD5~f z0r`DSfuyakWmju=>Q@52GMXb}{`cw|&b-q-soI{U06f(?iDhL4QU2lEO`p|CJh!iqu%l$||BM$WsKykcS z8P&s)IsQBM>);3NzJ`zrF_OO^C3 z+9v+ggBga;J3dqZ9|gbi01j%9t71hEH))4O1r-&69eA7B41g2iaY?sy?N|UO1gfrc zah|X>UV^!kcYyK4gZ6#Tx`n=-QxFa@K)809)@(YWfn=r_u1I4WB6~a2Lm+nU2y?ifCw{#|p(q0Nwk~#{WV%(F$i{aTcv!%iAy*Yzhj;95AL+RM6~!Qc1$9Utre)x+fY z`gaHH_}-^Swhg3!z=CzrsZKAK`3E6oa%?@ca5DDYKdVg~x5M&ViVr@}#Mi_#&J6{L z&(I1Z=Nu8lE6 zt8hgHLE${wu@EwO_REMBh_Bqbuq>{zSryKhT&hXO;(Jdg4)7b~%QVJ06dAb!sLnLX zBryLwbwb>Ph|KTIq0h{>pZGsUc#qTe1KQo~%HM+T(%EzK)I><4K99k}Akba@8~f|) z;-8UWNFD>aKV04B|B^}@VuBqZ#veq~T+aO)tKQbqdy$QqYa)}C(#U4M=T#@UieHOo z)n}S1C++o*59oa=&$xujH!ya(Fn*LSO6B5seF7JylJGL2V!u$=?D788m%e|t{!RGz z*}m3L(&B|!+ru-$lT-G()NBbI9G^nELh%;EPa4-37N#dh;jeBvE1Gwt)-840iFG_Z z(=8flW)6$#=h*2ZA}2K6g#(t&FBYia+jE=BG7n=BpmxfYU`yDE&)2d<5#W;E?SVU{ z;*B_{=S!g_-;G?4(3_zNNiviohUz-M7?s1j>@SCU@7DUaQ)c`(5mH8T^mZKR&zsAKm{bKb&*v2>!KXAKegHZzZkpL$3)^?!{xG8XnyaVcvTR1#HzmlbiF^~>>d_b1^n_t!*w}g z9wf6p-jq5)ug~Uv`;~7AC5P=46S?xwUu^7kW8XV&xit601Lm5C(lf;5whPnTcB}7J zy-cg|@nlJmbQBh0OQY4bA+&RQrE>wRAZO~MiJueoxa#w$oxtbH5a`&3QUJ$C8x<=y63d)$IJWZ@9T8)4QmJc9|Mf z(#DP^(?2Sv{ASzi%7^0*x%hd>+^w5k6kzOlL zC7n2iun@`u9v~s31T4W1xk}ytf)^{&%^m|4=Ba#|6JC|2?SajMVf`C#jqIn?YN6OEHSMWL6@}&mpflGgo*|J~i$&G%y3Rg&&gP=?hcpPXF1ag0D z?>Vmiwk3i9Bsj&16O_jA{J`An=*`s~uY>;{{!3BS} z1^ciT<#w5hOvjgzkXLS*BCiYw0+6bE`e$PLzqKtDsl7d!ga#@Ff-)8NEGkGPNtuw$ zRn?IWL_)$tw_trVua?;X;XiI>5x6B~%LW$VA+Ea-IbmIZ&R>XObVKB<2bk2rfTl3Q zl3?Fd;cQpB%QE2=wXf`Av5NpjK)S#6->=60xfx8+8E|#^C$*sv(_=&C+&x6Ui?Qtg zMWa8z^`4BGV8bE6IPkDM#2}e{$ zwge*mWl#hfx??k7{$~DsV~*+`Sl4XGKc39rU_ZCA_lb~*bciGed)_-iIJ*&-`)VP+IojPJl&G(P(ee{ zAXqhL%sd<*&`r>;3^AxaZKFNDWQ!JED<<^azmKI+3|Jns&}lKPnCb)+GBEi-{W-uSB z1v8rLZy%m>fyA&cXFsabwZqOo?mz8+Bm7T3?US0qP79;pXiR+u5cjESt(!ef{ck4r z@+W{-V9K@bhYT(tmH{crLJ&NbOr#Zo8Ki!Dr*i z5Eacup?4%$o7}KS3B%q}!nR8~nt*+%HgK}`ws{QXh2d>bo89B4%;*D$*6?K9a0LOx z8pmu~3?GUFY8;-m<~W!I>7ekdNRqSqktNe00F9#e!eQdRdVBSvfR2_NL9I7eF|N~} z2SiRhFXVv@N|703{%(GQV}uY_?&r>8d^$_%Tk3Xk^aQMr4CIsomq$x zXoE|~=jLs8Qre*nIG`6@foB+$DQnmqqhv^}KgK`Dy#E;v3VLooxxTh%K-$_FZa@Oe zxdpeSK|>VjPZ`#rVrVWVSZp*AW(U@E4$fEyEmxy0-b_a<RC!ro4S(@>}C5e`PrPTbAgDrL=BJu4>o>^=z1vsc;c_;I=ZFM-TY zU;5F9-FsOcQ@_I;(y0Z}KfC-7eETJ}m9$decL2dcrV`Xdj@br-pEVv6i@jXAreSNf zf03SI)DG)|gTB{E^4Xbl#(zi1#$Fq;4rTi~!G-y`wh#b94(EViGnOd-kc#xS%{wb| z;}6IB&m7bClpr*l-}z`vzi3SMWdFD)!)|kb{x;kQ_%A09`)Tl{6hsPt5$`^GJ!3j) zGsjF4Uo^2KXZvIiZ;(dq=Zz~LtjcbVIsQSWABUeEZ7*ZQOvmZISWWB+H~1XQ-~QxY zEFs7v`gFfJ#&)1?iZ7M)B`e0Wf77J7{Fl90U5)Sa-`Lh& zEyF)Rf&4yR0q0TNzR2X2cUR(;F4&r5-0^w}_s6W{J(Ybqm$qJj`Iuu4Q@3@yPJhjm z`(J-pAg7xD{Bz?V{vy8USz0{N?3WW&-*PdA*6A7UZj@HS@wIZTaP$?g&0!L;ub<6I z@?p-pgk^m1^ho&r82+{CXCdXqhII9pXuqh&%WeEwR$R--Xd(EVDX?6W>cm+tYgx-< z@P70J1p64NiKzS866-Sh{l9yQTDHpSrc~Hy!!*Fh?ua8rcl!kBSg0I!pzBs6#nGL;t*fZV(s-M!`3s_9V_i#kVK2!2 zlUeWKKTG-XCH{AI62G4tyivMkHgXTkXOO)De9*pE zM?U-+)Lf%5AW*5WCF#M+D|1)G`krI-c9%cU&i~!{-;(vk5IO&dvXDQ(MuRRC$aZi` zEu)nq##0AVN5#E6ISsr+hm-K4hIc2AwLhKIcsRW70sx*K#!PJFCvdJw+^SVrckemz zEVs@EP{z4BLuZNhWt$brDE2f&sY!V&$3zU8I#;K_)+VM-1PL3&F_ z1}iIX(ql4o{{Sz_@ReV++a#FZxj@*Kh+52loA|07=QKfa>MF!HRm`js`&g-Btapak z!wR0k+lF5AuyukpPmgU@waUAEBRvB#MB$BGvZ_P<(MLAbb080>&#uPO)d{i^|7HYe zIBgwM^z9%94oFkP8acJuk^1tiHTRjz20u#}%$s6qYHmrE(=5xoNfm zitQY_HP5%BX8P!q?}!eXXFz+548iF*7Rp;77mTUQP2UX8Z#m1})E4KXr3~+bj&(V$ zxN;Wzaun5u72F#SIXVnANSfJU@gF^yj=!3_Cdvf5_(P7#lExqc$RVtNfJEP#KoE|p zq1584tR2IfFO&0hVtq-YOX@NPkxZg*grLNFBU{U%&)Bk9_O8;lCEh-dbH9*KkVcXH zUpX+~*UXsv17ILb9l{oJG4iZWDKGy%CDE!vjhEW1w`4~V@ytDY5~oK@%lAd9Ri={M z$m{N7OO<9*-%8z@lB46?TZ;^PaS;rf86CSndyP#5#!i%J{0?}OvWO~*LoH-Q21K#VRPg`bS2CqV*^0QyMhF zIycYwqVD>21Po8z!I8z%pC-WWrYNPoyqNH8gy!4IRU4n`_1Pvz~>DIkg;yk1l3 z{wzGn+;R~fyn)Iuz!qvlu~|sMCnO;IGogmQY0}#DjUPsN zjmPKZNTC#wdu00P0SAxbNXU%(-9TG7+EVG})e zVLAmP9?5^MK5~90JTRCTTl`3xz6;cj9USewM4-wU2cyhE%q%fQY7Cm13o^MiE!D`z z+<3No2|90-e(&sVCee92RUS$x)PHoIGGw<$hQaDta%3Q3U0vK0@O1wUBcKB#K$2e+ zqi5LF{r*71`*A{;M2lPWTk(;LtL%$GXad&0(mMq`QI{c)Dt9x?k9-vGM57Q908+~E zv4jy7wyXe{Z0G#L^l* zmB+f-%x{q*?wMZiHrF!D^*QsouHd`AB*9WLpi8_wf=k){5h9&9Pg{*cp#Y-sM}Tuk z&cs^{u|1VkWY}m(9JxYm z->FJ@Cs={pydTo<|G2zbT~W%TbGG@wz4X0yj*HBnz(fM${Qn)p%{O;XKNfnZjt|`} zeV%eeTiB79UwNcREv87JpWOa@ag%&Q+8@!?c7LVvBoDTf?)XBu9xVO1_XOM}fPn}- z|J5W)f~-UBC(MoD?vd3_tOnCdQ2Q30K9P9 z_ZG|O6-d1MwN*raPDVww?o8I#_iVBHn19r9zYZL~`W_uzAE}{!SS%+1Aedv;WEjAq z&Vn5O!SE5D4kunE_+O!yCV%Nf8%?Baji1c@kH1APpZpdUrmw2ZuoBrk-3+N_ib z67H8ZBQz#Jc|UY{+B%+V&ykmJ@)z#p_uX_({R3l$&BUZ)L`-fs^vMmD+i^q$H022D zCkGA9nD5K^sI8}LihQ^E_4D_=6=(IrBmE1&Ho(g3;lt;P{~<_>d>T2}%>Q8OgXJla zhZDFz*JLVR|D_f?O%JP%8z^j?4WC7Yf8iYcFsX3H?y$;~6-3!35hpLyYp3(26dJ5~2Ym3;-8j9t(Qnp`R_Pxhx`>t4!`+ zD{`jC+@;er>Qu!eCCfkR_wRpuy;rhL+tLMzj!-nzf63;xw|`EcKU9DMI}#BOh(g67 z81e@_=5-&eZmBBMB1UlPmv^C6)a9vB0eAuxVo?YJJDkT8iIwLc!XD^Zjcu+h51GNi|>W!E`2ueQv0M8`$4Y*t^9 zV8XQ8qsj1_#@y)ksgYs{X1j(wVBUv)9-S8`r~e1!`@c8wCVw2xLC_!a9Y&kAsLp~3 zM*s&j{JdXhQpr2;N-|}u)^rh&L?PuO%N7!w`=ad{*d`+m(AvfSHRyg1%)QG#*4gMk zo_}BSZ$3XFWbj`Dg)G+-a4r8(x+O~@rz&iKu5go!2S@mez>Z5Yd;K!Y?)M**JYqDE zpw!?$GXytc4z&pTzWIC7S$E@z%ACf#S37BCZ2Sf0VCodGrDCJ4t2wlS#@OkX_1<_A z4~7}CHJIL%fo9yD7HngFg$ba!XF^Q1opzMc6C+c4+ZJ_iSD!Lrfk~xbhHtGwQmC3? zwKN?w3S6i;P1b>sFYP|Ko@i|8gI zL-4HP9Z^zJ*VpzD-gqYz1p;3!{r_LV(e^w|6_uI5FwQf3tLL(hThhHoRh?021Nz`Q zdyTFOB$ij8Pj^^F*?ff$V)RLE5jsPR6)?k--SmB3ZDK#pCl#_^cqk*9;1B|rP|&}K zhrpj^gvAjslb!n)6Q;f+nLi+K!sKD}Ng?_TALn#kKkoMH0!@+C@(4i#2?WoHG3)P< z10m}O5C`(mV~h06Tod z44Eu|`vp}z@OS)7eVfjqej#!&1&@sRbI(4IGw5HvA%=sFOeYIDc}7xpbjcTnB-V~g zK%xlZ@cE`Oaa;;F(vEE(Y)ltgaXTs+J}KqPbl4?sFTYQV5s@*3nFa+|5K*aMjt<#2GGJ{q~5EU~7lsJH(>{d+U4LOiSf&sg(ym}bP zT#q6mk(v=g0kR6MTbsqeD!qU|(IOoNMX&x|e>iV62QCc;1V|)^nleGELX{yg{2tsgh4#faqn?Fl<`Gy=X>HbBOiJ}NbQw#(?`N92 z4g&RY0=_v6NRZ4%QHCU!rPgYomR&k_17wd`91p}O2wMeohqY5%prmd zCIXu&zN^f+urNXpX}B|3lMsT%h`geSVnJxo=(yqnchn6%BK2fdDMbSP6)J=UV#zqh z-FPa3g<))(+ngUZCPEO+t&l4q(!qi9F#;8K;i+|GNQEM}W@u$$maJ+TZB=*E;OT7o z#I!tX$Z9#Vvtz=mN)1bKvj(KprH3Y93o_sWS5TU) z@m9Ikc4|z>0)s>1wm_~*5f~kGc1D!zIlMYrh6W*=t~7WPrc|<(0a{tYL=+-&=C{Wu zEFEt7W`ASmadv1xx4lL_AiS1JS)`ggSFzywE_;tWY^BCOw8zW-MVy`{@ac0_aVCS` zpyj#zT(;+IjhkFUzb;BC66n1$ximWOms^YSyjsK3|2?-~+GFR(#2?V?W^9^AoLxiu zE@@0^&S&S67OGjRIdCbLE<&1-nIMPtkeu^Ef^?e=g;=i+lBXOySTI}y?>P(OHThaU zx%CV@yH-9?nR^~X2Zehq3|q)mYVW7L!4_XpnQl|F?VeOq)B*Ky|^!D1?@A^Iv>Yt4hhK|=k9N_4fcoBtgU}kKtG{?hG}{qr8)V}+pJQ{ zoC!tYoI74W*$$nQp%OweKC(C-VE%m)if1*q(5}w9wG`^b0tklLR3S!;mCuBKo{7bO62M5%4cyJ znweG}!1aZVb6`871AJK!-amI8tNJ1H?U|~XHTqxxLiZ;F(B1i-#3naK2tec%Qkv+J~t%o@|b2kM=O5WXx))N(!-jBD@CX ztdgFLv4NOuv{_rMzXL#IZ9f*p8`<56$%6D=zRewt^)1=U!oJT$dyHfnHNi)I@o8Dh z6QpQn)U?iILAJkSyocQb{jp>|#OrEjuF;M;x7x%SVeUFP8H6B2Fntv# zkf+UW3c#cxiAj!8nJbO})TOpq_8X6|>DK1d^~`${Lc*VuvbAw;avI6FY(%ud z1n+Pm#bj_OiY*9H1kBZ;Ob*y01(rZ})R~A@&L@UER9-$L(NcMj$(nu=BtkBgRY8+B ztlA`INwTW^Skb9O&4UriO6U9xT)b)YTJmhctk9ESmKh`|&Y{Rn|&|FR$%(KHK~ zXS8O$4Ms zArI`k?WS{!EElp+I*cWS0uwG!g@;6|Z!WGAoD_XQ z5eh~_O07kzC+`z0EK0#cQc_WRm`X|KNb!U*7->IcY7bA_9K^Ov=C+Vl@;Y}Ms|%SC zLx3fcpCVt}`B;n}~$V?{9lPbv+Yp3mt^Eh{2a6<|g+eG^Ro zwzyo6SAuIDmY&yz)p{O&oi#HFvWvgv4OX%8*YHn6-bj_%wg98!&Ei7!#e|Kx<-T76mS#~}v+(_rS z8$a9jHguMU%iHko&*5b1W$H>=dJ4D6I8C!arc!Nk4MS}+#!`CRj>7&no`9jM1U+Cf z23!FSG{RR^Z{^ty?NC$-!|=f6oH7tWz)`x>N;O}Bh>puj-HiTNy5aIXLDMr`8l+xa z4OVOQ+&qCB3s$SN+jU%y?EE%fEun;GL}O*r@O(LHrS-w%KK0>*7C%T{NU9^0%ql-|AUHO~hJ9*T3-G4N_D7((-;BUHd<)^Vp7H)yIL1&+Nu8YMHatoy zq4wUwC_ue&7@J~ZO zE`T`eYx4@7UYx%u^_&Jv5252I2NbzLNN7M+^Qn8Lab+qK4(|F*q7z`T~YddpL|2a-&=wn zWel#9{jbd{g4@;{Ansxx-oFEFX)^A_a=F6xv6} z7{9NERXubYvHW_Mi9K%DKpdsi`Ehs%zLd&b-lU;I7AU^s1BLWJfFSUBn}n|BzM1yxSyVdPx9y|DV+=XSk$Ul(xI*11o^Ifii5Fam;_ zp3;D1IOlUVZ?s=-eV*iD!EfILz3jy9{F>~nTBK=NOZh{C9a(6N5YT=oNb~?(N9gR#Yx#U&MO}myYQXxGK zpb!jU*!rH!Yk$u@hKN>zD`fx(NHWelEr=?g-Pzp_ZIh70r&$FdBG$#i2t*zssVLmz z|Bg?!ChS?|@q8s{c0Q3au7{o}{w8~hJ!wt^6CL2~|1@n1Azna0U&sDyjiFUjSgj$! zu=Z!)d$@_q)_@EuT3T;$Xdsj|B?Z#U=KnV(YRuU2ffV7#u1mibsrw16)Fe=(#7v70$DK~>$ zv~)rI+0tP*O=NLX5@*a+sV+wv z*GPacm|zdi%4u9SuM8WZ#3W$$`m5dY+f7xpY^RcWb%AjIR0Eq_#z1VWa|4bjrH7( zvL5;(-*9L)tmnAO+ekaGT);pX;G7X(kGPeQ=n#f3|RSka^Hf0r^);vO+~ zL@@{iF%z+L_RMb0W(2}FW*2N>qD72i9L4=TF+Z~w!Ga`X0-|XCbTfvW_xW3-6pLUq zpg&g!&>s#Z-{W9E_KQl8==1d)COq7h1aDLQjKBBz65jy^stKKydxmdmlpGtrn`9Flt8v^7g0bDk5Zfngd! zi&dl~m5FsY8)U5^%g0{1S zVCSNwyg>D*G|u&n;hgOa5|J!+I0h@FO5niSkZPn;h#DIyCZAXKYNP_J<6(XJ{b;vCQ zd6Et-!d-e+#vP9iF^WcTm9$xPfxuPrtJA3hX@OXKN;cRuDfd)>7xy~TX~w= zFR4-1t%u&!jIGn1@0rNqHB&LL3KV#%jORkvIbe-XtZTC-y9w|tmnzRmIp%wJ@y4hH zLgJ!-uk3=rWv(h}MFTK7Bb(zctpV229!~5C6c;!QfDjGSq=8FLRc*_4nUpGuDD_L`g_V1`!V>27x& z`c<~;uA`#r29G}W5(>0e!GYJxI^L(NaolH3}nK38enVn0jBVXTMtb;vg< zZF^>ZoUMph@+!fh?(?l^^1iyl-8S>E_}yWa;u}p3F}FptS4Pb35}dB{weuth0tR7Z z#u02-idMb%8Je!yX^8bPQUl6PyRnFnW8$C zNJL~Y6%{Kak|HQF5L*x@1dfzSNrrLl@{7InbtmVN-U{LpAR%~cL}}}a1-f!(%wQ0U z6g2`EdnY*p>?>U#n31xXyOCqf(%&9M+9Kc4id@JD$MpysESr+H z+Y`N*^<5dv9bejM9uGjY5j<yKW(URhW z@9z{-{lP^4?dm515wd-cbxTTu0WMFbgkZm9`-3ulf*)pXKT2$vUEk~{^;fn&5gV4F zWBs2DeOJ~lXO4u+|ISuMBtA6sVsygtZ2qRNGyAcv^xgb@8coAUw>ZwbIUQS$D~U6P zMHhzxMZV?f@gt~g`o(P$HeiGkMX}NUv7{634GVask(Xw&#B?=FR;=#vPbvNMm>K3g zmf~8D^F_PW-Oivmm#OL5;g~b1oYaLic!260Bb%E*9Ewj{th*+ptv0B@h`h!gag$U` zWR`ghXQq7pXxvY2@1`(C$gwZ8Jq)qtX6-!iF!nxZ%jI))zMR#!M?S?uBw(&b2IUzx zZ#85MECHDpG>pjb!b(R@Z@D?v6)whN6UNbJdh{wLeeK1LMAV9yio15SAO+tq!kIEHf9@pM+gMPqQDJ>;|^`5|LhfSDCbW~`2jP)Kfe*}iC-H}l9+ zKwCZrG`))C-y;gpr&CDGN_WWRf?PAUpqAIVt{}m%hyMI7ehKouDY#s4?Pd{S)uQSr zCGPvBCe(Wckf-pZabBPGXSipKw+2Qb72`L70{rs9w|G(r%cJkc=qF$2OIRELMvEc1eeuq4iW|FBnF5N3URA^gEo|Gdzs7*tcCu z<33$-#PVpMOR%upf9vL325MLjR8k->Qay5I+RPJHkon|;%s(jI>479c;-MeGSsC?^Ak_<2K@92pc~Q`uivmLf-DD-+YT6dM z?)SG?B7-pY*t-WCe?Q%d{UUErI8c)}?$xu`z<2S0P9- z$l$K0P0H1M>r9+NXzXRjq!Ud^4WGhMyTjh5h3b_veil42Qo?O-g`!xqe-!ql1Pml0Ja`&Km%1q8E06gSl=jTr3xK@qg@^Md+#?)k|QpOksHypvZP&aPXwD)~VjrS!R2VSp{$CZGrjwUc^vg74LtGSk`F9#qyZAa*y zkG`ULk(1;I8E~h3^~~zDB*D^0$)dEK<6I#tB@n3yk{`(@tbvi4-DLz7JlSg@!fnsC z;m?DaKD!gttM}h>7M@$|pMRC!?uK_D4Aay=tICV8Ful(*UR5X&|H`+lu_55Vf_wt@ zOvt(g%%X_Z_4$CYhDsbL)bp8w#2LdnCoHA1$7C5XZx*3;5y0`02B%_hS8|sGm=u>K z08K;(A;aOqyN(FgS%E*)+MWybKEOyG~|h)5@~yJ6cFQph|5Dot{h!HoK(36F6hOsuv@sR_lom@ZW+;WB6}FIyoZq`o2L znKI^B6#HH8M~0UF*|-{D8v3JJ0f#({oBCo6XAT+G)?f8W43q(=62)YUGcyOEtAONL ztc)iX?unxwVarO)eTvCy+?@6LvGU-?=pDj;MD7bK40e#Sl3-IIBjnO`_e}hxu+R^S zc8em!=Rz&3CpD3^U%9N7CB4nxWu<;OBnbPd+g}Q{>1@XxPAAVc>EX4;jvHVjx2Wod z7tvYPX1xelkur-62G~HD^AKk;ZfmVFt2=10zjE5Wcc`50$fhZ2v*n@Iyg~$$4OUR` zX&|TmxGX@5#EeJkcV~)m%y^K$cv>Db0z1u#I~q5Sa7b80YRw{F_EzzQuAqK8zMA`HTpo38gh#xOLds85_ zp?S%B=1gQI1I={aH$0kFt!<+A9*rZyw%I36wWuo)qitRP@Jf%6#yD3$m{+dLQl=Fj zB=**d|IXsP>I|kQo&RpxZJ}%ss|I6=nr;Tz->Z_B6D(q^oFm%p#U}Dp?hg6X zEtN?~VAh;@wIJ35E*RUyg>x zj;Om&jOq9IQx7@&V#mqfcwk#@Z$l}3Y-;WLD=ElxW zmH5y2@l@i6SpM_ZI?SR7@sjm!RZvI2^b@r`FCPYGWLa0UgYjAJx(F3aZGSuL8O%gm zdscfbC^H`I=X=b5)#7Pjrm6AaoaOxm5i_9R3LK8P8B#ZK28wXXvd8mTA$kf_y}>dF zN{`ti%39w8#7Z7%A27f>MaxPj|4FEaHp+(^4u{Bp-n(+L0TL^7$P*^strv96(V2|B z_U~rGbpZf?A^47JF=l2*aQL8vpH7UeKGx-^cSaXCyPvbMbf94gEY2aJ=KY?oW+`i1 ziu&w)ec8d;*$h2{15s>PWB9q=V*ZxD(S|#3ZgBRSjyoloSU|(At=5irrZZblfvT=8 z^RE5w-OJaxNa}}b@y}K5ESI78oi`236VZ)yAogBV6hVRdc2`nXUAIRI~d{d~_d;ip;50E^Cq!G&8oe2^l zsD~!{<;Wzox+ifp zal?!jzPLL94?hCh%woux*(5>2L}hUu;l_Cb>lqW~5`mHhU~<5%ogKIN-n&_V6G&MTUyFaiUnhWSNM3A>s)${~ja-Tac3SfvJaaWr9d* zqp30?6;L4DF`J8#0eI9ncA*I@GpcLy@SVrwv9FWl!Wt33GRd@U%H@%hl_1!NFcvp6 zW;P%p5Z{7_jJ2EP_TNPy_$pO@PqhA1_u>KThOe^!bZ~k9jC8Mr^QnPvqyHuAn)9sN zu-CliTW$JBX_n^+b-L{BiTJkBtoGv80BI6GVTF9T_bv^EWlX4e)}OB*JR zku^7xorzBmr}PTomQHA@5MMT;Cm;Kg!9?_K0!;%Y*c-i13*4CNK}n6_QyR4x7pM=}E8D zAHOem80yFw#;gAYI(vC~%pMIrD$iFC2~_s#Sdb97h&YFZ)CER@fEu2Q>IUIvvm^uf zNB1k3i&aQoEf#Sk0vV8`UYeNn>v+=kOhPpvmhjm;Kw}a8pQ*HUYfIZk@K4czfDqr55f3@ zQOb^n1{k_u;)Jm1;}?4_i9|vuk904NW@HZx)LlDspb>EKQOU=lCls`cK(~M%F9)A7 zG(7KZxhI4uMsB7SbnftJ8qoHp_q-zDoBDeljF@1N>umns) z&$!1mb~!cG{PCV8$~HUJ1Zkrl+j znOO@RRVE1#g_*7pgvBs-|f8ZC&_S~*L`i`3Y7 zQ9&pmnB&DGkzqSTl=lqO?@IbP$S;C`n21vxR-!8|1l!I6d(-$Qa&e6mzsZCAv0k^{ z0znP=UN4hBs}-aOA1IYp%jp!AGrYB2^h@y+hfq9|1tv=>S0fMqm+bDEWy}u5lkp}o z$bdx(6hf1?@J#$Ikz7_sI#hr{J9JPhLIk*uM$#3nEiLAb?(#s+kG>4J`n?LlV$h_& z1Ny6d1CNy683$JZuS%Gf1i*4pY=x;fqUEFc@yN{-)~809({UdBcS$F_N|8?qYfnvA#m*+ zgwNP+OoMkLaSq!JAV;X)i;)B~{O2y58i2t|lxp>28UZd?fXMH_Z|s^xA?16Jb$g$X zkJ4hlLRa7TrqTXg>wGKmBPzHPPr3AzhoN9mI?E%COjyA;S{ak&hYEo6Zl7ow>u(?r90`vlyC_0dKdpwCXM_5Pn|v8rn9IdMG5c; z5ewZPiXpa+vR>P;P49R5aj$#$><-J7h_{^(93l#sIV&hQy3B<*M;G10g2x2^y3YsF zXyWk1UhH&bIn%|bSzZSS*g@5|5N2{)iP=M;xFIV%7iV?2{8Fe3teG}-*0$X)8- zu$sP^+B?2aiYX@@q#ufk-Ttk&w5pAGQb@H_vBC+U+F_YY)=~^)TBVK>lv59W?v0Y_ zB1JuU9`grs$tDrg3XzC3tR7vFlfn{H!d)?ha!Uf>VSvV7OeYKr!oa>NY4di>P)~8y zC@ zpVDM%q(uc7OC-?U;qJ5{2pS4O!H(fRRCxJbL$Eia|yxOUjh~+f>8# z;E43(XHF=hQ{W1{3J+cMw=8?Tc@#fDI=8i0KzG})j2-%Uqq<&r>_?8sA!V ze(i7ENqO)779;Y%g$N;Sc0aiEJP@V|)qzXS?E3 z?QNMlWO-41&uQ*aFexuq)U}|FkL&uga6ide9>bYx6e&H1Mlc3Y8#pszw>$sX@^m_0 zp#BZ=8{zn>d+25tpFkvLAS=}MBkk7>wcoZgGXS~;GgD8n{n3$Mq2{-Ab zB*rb}+6)PNmXkGVpMv|meAZJLO*ty@alBOLlgrByOmnh%kD6i)T$}k!J~L z*BVMfnn6}-k4JIn86bP+CJ90X-`B}H7A5%zoywnrbtT|hakU1nENAj|%(6{VfHiIFm@ITrQ(=hz#j!~~xhyXa zCS?h%lxtX|h`{N@C<$RZF59S-uZ*NzWLq!Ajf&YxCT&~OBd!>FIcrmR2h#Z_VJ>`j zLB#8~(9(&An+15&ViIg!=!7Bm#3(ld^1{R|M{l2hZ8wPXNFGS$rWp0FF^pHI2 z3PPdi&6BbqVLvsLoqoBO%Z1Fn!05d?$zZ)55 z799JN2ZPNJt4jUkIXQ$my3%zHNUmw&Qz!h@qHpoZ7>#JTywAF!!ZAwUMHXfU2c&FRks!6&pEEXg+7F_epe59KqvWjwy`|X{;)U}fV!Z(XekppS)8mzsP~;TE3?LnC z2Np4ZRbNS~VW=Mx7 zP>O9JCg}I_yN=8rQv9CA{Jq{8OeA*oGm>wi+CWs48EK-1nR|ZNJw|}$eIC-_SnuguV#$67H z0k@2j_+z!2<|1n;QUyrb!;l%wOS3V5Ru$P@vm{ah9;8Wc3qiQcCtr>^ZD$A^o#VTkT@gr-L|bzq3)NQ7BwVw(?5 z7^HP$V_Bb>TAJM@LAc5uM#`vh_%x3qN)bcXmLpUEKM_LkJR$f{5Dz3XVdeZ$e$Ft#g zRx}+HXd%+|;etOp($<-vD?_!02gSRb^uE^#u1+M8;hOdR_n^E$1Q7rcKpO}k0uDti zKm4g0H=>m2QSp$jlW2jaZNb zD$yXI0wM;|4OTjCG56J#h^co@!xL;m2n;X?Vm=$*2hNF?w)cz3_ZM+U$^(mUEu|*N zD>JGnBJJ$bhXKE``5NVO6HZ___cpwoXLp|)x8LnFoz3pALFD28-~IEWdubzt+fu{x zPyeIhH4w)G3KJGhgBWk5EGr8WaH=^|q$VK@I+g?p^h<^_G3klM{=G3lmxVkGkDXAk z(yk1XW##e{?7xv%1y4wU^r~pXHXpw9PrP^u`HC1odv5ZjGk+|kghL2X8S%$b<78}B z%#6f-Z;wP;c#>2!zcmkqp#>If1PEaeH#Jr}MSuO2Dt#E4{69I(J`-3<|5Vu3%kZDt z?H9mbsEOJi{Tqm*2&j|<%!+5*y%w^V-r`#v}m=0M{c2vwCAMr&%V$Usy(<>7BMqj_TApA;^BjJzSrT1Eu`FaRJZAa>gp*=Y`-676J>kqaDGQ!YR=FtZ8>EQ06d6XIz_A89-Y0~ZHni{?tZnB|9$t* z^tN^$=imI9o-2=6^n5Q!hN3r;oONYRNmHmGn?W81TF#F$pgFXMZ;eh_^e-<2WJ3_(r zAgP5KDZhp-A3e%@t{?t+IiLBd(&)`{e-hyS|Cyuae{)KGEphSEs&+_3GNL|0g^_0M z6;6jSEP+AHL9MS^45_tAh2*3Rzm>i#G0@+$37LSQz}CAtzp+%r>b)flOTzYfB+0mE zqc9=d7Ge-Z;Gq%DzCPI;?_iM{`|hxgdiyR`>-x_)Fw>2Cw#M`mgyTpi&O|w2m*y5Ab>PC zOEW??m()E1rU(kb4D#;NN1VD7DsZco(3h}7R zL9BvC;RB4c8v6oM)hnXOX>cwqLx^-bDK@Ke&a+{jY0RI&bbJ0vO1b9|&Wr%dWvN)OZ+z4iWn@Q&}TFi}}eLGX2IR zsDCQ$RQc((v7d9f!Luz3Av9V|=`suKH$@KHZGtsv-y6zOW`Qu!2`y!;Z(D^|BGNS- zdiy02x`ugDL4o~*Z!5v*P{iR?YG*0%~a6}A-R_^=H0M&jz!8t7ud=cN36r) z5S$bNF=QA~AYkRO9XKaMJl!Oodw_I9_D_LHwnsZcnqq7b0f@tVu{kYa!ctSG>*71A zB|EdmW`5dW1SBcjM!Jz+qiqM^?(2H~O}Cb~VzIw$$KN#`*|TjnkUg=12mXMTgqws( zKsvla>3)00)%s?gY(p|9Kg2k>sFK{361-n9`tx0V{7(9UBMMQy9CM01} zyz(C20c{g2*X5V6#;LE2_Atw`7Vdes+uleG`{hAE47TI@+HKLEEH-ksN^BqWG1O$cPIz0c) zUfDBp@-e9->^Xt4QSZ7V4DxcE`$>_cQly>Sjx-XfHecZGyrGqvDM@OP|Y# zIpm1sEGB4?k`P8+g;GD?{!b<4o4|GSdt)4%t*b7f-;zPLdnZ>M1(gXAa-WVv^5m~D z^RLvzwzjG8 zE;Kw&SIDv=jH313s%rumirLdWeu@C})di`x2$ju#<8vSlbg({pz4@dG&tAP;X}=v> zq%0XXgS*+JTByNVUO;Bj(}aCD5uiSpt#RmbGMT75MuMQxxP`aLFc-C+`*BemVKl{z z;LJPqqnewL30UO?VWF~wItdPRfo#i_C~+jkB|%+%#zhN;*PX6mSm5N;%Z+SB!$KU! zWw1iEj*vmf#H++MFp?TtLZ8dJS{XxgnE^eai!Z)z(>zOv1az%#j%0#pExUz;&^*}K z!7w?K*zc;5g)jxM%F5gbE&PsZCB*1CY|BhiqlHXcJ2zX0Z!oM}@wm?%Q5LK8(P-L` z)uI3T`s{ut#-V#f?BthR8z0|%c*A4?eW;j+?9mJvO*L%Up|h|MG?Ya>=9B{pj9H86 zh=cg#Nes(nW+V#+|LG?prxb>5WFx~2zUtaH=0m~7oI5`r0YJuSS{EpPDWTLETM>bb zCR1V7Fe}&R7&7M1ir{R@#t2^WOz&Qm3|DcFge&)f8x;+Ml8fj_?+6?Rk3j`Hy`AA;$8W zp3#*5e0<$+?*8>)v2O+7=p@VktgkMm4zvr=cbVA+W(-K7U!_F4KPZ5c(7u(s1BZ_5 z)r+q`8BZL?&6uN{NSZ0>GURz=fFe=?9V3}o9Ya#>(N7Du`bvdYCkU1jK!6lAtYk$C zXyiQpVDPsm_~!0zf4qJZ^5IZ~V-@2T9^z8*it-eT7ygd7!1oBB>RRAb-Re4VqjL`i zGI~{U>+F9j2lO0&r#^X8I-YlZXE~G1{20-ldyjgmJ=z;Op~w5T*Xm+6a8&+L&UaK7 z*FQShOrQ#~{K=t5$Rl`yO`F`4U^TUX-+)21Lmom)tssY#SmY+_4;>z?1(xn8|bFVU`>Ll}&3CHqD#G@f`=Q z_VzZa1D@upCgB1GF4csXZ0?n?_H)PqhcE}*K}4C3^(wmsdwbSU%;@9)#01)JS;I_e zuhsKe743XFk$)NlufGof_%Uc*1K$V;2yM)DG)2H_dV|1R9h71eZm|-*t%t;ck%5c} zi3oPoEmBWG#E(hkO2WJj*sZhUGYqSWW`N@=AQ*Uo)cySn4i(ofe$(*UQ^H!fc#BDY_iOtfJ=PXzNI>!T$m9-h>NMOQ>1Xv zG|1(26DWbr1R^TV#C|b;{v3kx6aa@~1qgnSZgLND7B!_xRe17zTiFAJ?}Di$KxR!; z#=Jzu&@`kQr=klBp84Ew`b2FMyo~HYxenx8XVB&F9Db*`yU&T>FC2m(4wrwXeM|;^ zjTN0P3Yze~(&WzyTy38suKd3)U|OJ8o{boI*>zuKxLQ0|^QFTvyGe{3P0qZ6Wya*4 z9AORv$K3wB+xkKQj~;-(?jr{;nm9E$E>Z@iKp;vG3?SXLg{zQpkd8%&#KC_tM$i?M z6Yid1Uq@+0@(Ca3sCJ(idEdMqn5JJOVQ`7r2D}CTDpIzxz*m9>sss@9bPiMv`$?Gm zxn`2O&+SglWIt%PEsQ~poN$W(MgnA4*V;gGDGqw31QE6Vi|nY7p_fug$s(v}2Z8A0 zcw>^23C5DQUUp6~$I9*f_FOWkO=<>pmjb=^amg4x9^LeiQsOg)d)0@fN)3;h_X64bYA6`w0UsnoB|0y(#ATM zud4L9K9zY=@w|hd%lGd@OE}9U{(@QgUk}~ud(XQ^CpYX-P;A}BSmR_nln)hnN^v9z zq7Y`E5ZNQE&>xAU?OiJxhw{WPe<6W?&(|}Doyu?PHIS1xN)b)EF zz-;i{?S=O6I3yYN`JBE@Gru*2d3I|~54py95{W2qtdA5v_j|7REN9RI23tgLX z&Zhp7*dvdLe&eed;hKdHKbhN$Z+Gh)dA%Zf7Hh2qgc9F@)9Yq(-<;dF(6$7iLt%a8 z>HvJoRsS6Q4bD!gbMy0u_ryQ*^5k`Eeo+Mla02iFCa7aBLTDy0%DEDY`8mGP6B_p6 z*Zpms;T|JInWVKmC!mVTqGHR1Tsl?9xIj!xVGh@OKi*ub4SOUG_xk=cKy$}?BN!#o zN5l9fyP$k|k$3V5d%s`*zi-9Ot);l$&vUyA{_zmN$@w1TaNMu$VLX0JzT-h=e9DGU zYbb)ETq?14Rn@1W5M(vTphU4mj4%+QLX7CHh=G-Pd&|W$x|+HCfDhVxINt%d05(J2 zoKa6>KS5(nC^Vu=_;7o5M|}h+^R#)}w2(ypFPyeDPXrdypr#M^iy1ZTol2_F>q*`E-JKgi0{6eEA4TE>ERILo z?JFpFl+_P)1ZX({A}tNZa{N-2_H=&X$V|LzaHHkVP2Z*NFZ*-ZSLSg>fERpo2T0jT z7wE5}+T9-(sCFcF5z?v+x}61f&2E15&RrI;GKdoD)>p62zD+brsh$K`N^B~Jhjz09m<6_v*eY)>^VKb zOD{bj$B(3#SS24c@&5?-ZXf5tB^ba)aO^3^i+ps-^7VpS+Cm{Sup{i+OC=CUe{aSM zrUOGt^UjT7@#ruaW3t}q^>?LH7Bdi(+MF^pEn$%k`Yh7gl;LIZLBC?r$WvIC{--ac z48pdW=BJQZXoR1OI-IofxKD>5S)m!4Tzc_HslWISavw6y^xK76?+I5(OHVSxbjSIU zye1m!t6c=4?9~jk*Sf%!skY4 zEfv;i{IlI9x8F~Yq8Oo;^O(qdi^a-0jqcel9$eeD4rM5Jbr^?%_O(a+e z{(aUTCJf;Dv^D@p(BPT5KLLWzOns2y1{)OH>HkyGH#(a-PiXxHUN;1J9 ze)zJC0n#Lz8G#5E_9cGLdB^N6Rv`%-+@c1EZ(Kt5oXiIg=p7E1uQ+!35Ax(PyvJp@ zdGCZ}X#*IEGz2C1zkx$R0og-M%Lslc1EL&)0R*);WkyL*mE2~>J$Ut2l1xT~9# zy2(~zuQHSXZmCTYmD-yTeQg_0Hi89cL?ZH(C)f|wC3(!p#<=#m3&8ihURSofQ-~kC z`Xs)8zey~XuJXhPQer?C;8N`mJWwOlYWoc$*SL7y3BB2!#?Q3a@*B=W>ppiDVI^xH zz^8WR!0>~=(fXc5pf2!(_5=|8b}7ro)`mJWe>k+4`d>;0*IS)b0+?d{FeNE%;-eWM z6O;Lq13{ARm?1ZZo2_@9zD4l(3*0Z_@CWH={Z%b`FX4F#%>0=z7b7IlF4BoB5rM@Q z{|bU42+PF#B)j?!C89`kHoq3xF;1b7|xpFGBQmYWgGa zhasl3eFWnD zd2ZTy!9@=jZCGP4-4hCDn>0!v=dI)>1`7d*KtvGYkcfCt`xTM#M^APo1jzsv?U9GN zN~*cqb}{%Rv>e^rpqv}f$%*v+>ilo4HacTM`w09|oC5q;IQr#r{6k-~u4j&rA8WlJ z??QQ;pw}wdKELY1pV(!?G)EIESfpNRaxXRyMW7UR2su!$%7_`}NR@cwAj%gN)RJbx z{Zw_5-`+FOE|J(xUR^r9z6x!s&}ac^0K*CaEin?nA-CDNXy(j9VjW@X48Gr-4Zz<0 z+&c_v`lqTAKYu*F^=c4Il0g-ys|O%T8YM}dbaEkE|fxu<&*8oXQG>+x)>xW2#M z%#03%(dGv+zek6%(`I&w<5+5aLuNm(_uQSTknUGgAO_0Q1d6KXl)uy{M`&)4me0ex}yk zkpT+IJ5$Zq_L7Xc$@AqS*X=&bRt(>Z?Ci5vqd~hr_EW#!{pDaL+T&mHscN-pKYEQ2 zq+z&zOu{hps#|zHhQglW@SVhc!83W5t&cq%9a1~x9DG-XG2J? zkj%d5x!ADKhb!hORz!XUVE(bY{cULV+$k~gbcMzrh2-Cds1};MB>(&ji`V|MRByOh z{{Q*Ep}XZhS}e(jTvCv(K(1Li1mCw$w)8wc@_=3EuPbS?D7@hkq~TPtc&^?5#>I(p zk6)$3UG#tRL4Nuj*cWA4j6do3KZ0xjEukyu;RntFY)9jq3E@DHUt|sJmCKUfps52p zY@6R=)#UxS@{h=fNp(r+4~ijClWC6)yhda{F^e)h>TopTLMLfU^R|!Y_^&_8SjH)r z^}0ukBFqxKxjK(?xKAv`2jSwrVgGS0<}ee@{+$PSuns3N%ZdEn7S`&ZEN%FGI_TeY zC*WjRbub`&Q4O#E+i&DV8(hu*1C|d<{(IaAn=cTAk%_0GYnTq3(XPYT}5@UPz_J#zIR`ebG1FK7@?Ei{C9;?)K zc>QOh3~AL;j1REwSTpiiawWRYwz(;QDux8Um#nFD97?FOU0VK}u4K zaau4A8rCscft9j)K7AQG-*xAm%oW?YL+^Rip5t0^i-+?beDFiEV4Q zyfQ*H@vQAZ0RYn`dM6Sndr|3PIR0<#J?kWAG@vxS8(CI$c`DQfAD)Ut(R7Tc>XIA+ zgoOizm0n`9wLA8Zk_9f`;W%?f__+y#A$LL=0!bqUne9JssW zRA>89^LYwR?5>RsRp>;s=AHyKk^5RL*-{-yg`|-bJ|{nzFC`gqejx+;bdjV--Mw8z zES(LeWT0Z+$Pm|q0!SU+3i1a#wK^VOT|I>hi>4%)J~3y&eb&og9#1n0s!C=w5_j2 zR?cHuHFbU7SG1E3U6f)6!ps0D-Fzusvt03DBe~BmaQ@uQZ+{@N+t* zIRki+cD{CyjB=fmqX<|0KcI{A1J9uSr#{mV*%bhbRp6KP@WG=NmrF+YmDqt(U2#AP zA`)c;Uq0EfQqWm_QGx!HI8k`6>4NGe9Tj;We-x$t8iUX6Q-OuUhr9X0W6^Ry<{W|S zWH+S@y#&iElv7{!~BVVrP`^u?tC2+jo+`&7;4x0K67Z%r5qP?;6_n&Us+cD|lSCEEB z0Zr(il39=LQs%V2sd)(Z2!k@-yo=@&6I1WYM15F>80=@jkzc*SHf^4aw@^Qw=PA>S zP7$Q^NVa6ZyO5ahy-g}Jek5A*7duNEkQW@%oh!>tx|YkTT(bzH8Z~9getW^eC9+*aLCZ`_`U>q^P2Wmvr5@#z!6Rr8 zX*eB2fP_8y532M632R*8vX~9p*{R+iw!{+}(X!qgOhSdj85#pJY3XT_SthncqpMw7UwOjd!{zPMhNRU2~?K%h?orCj{~H}?D1 zY)xM`2ZO~_)!zK?4+qhH_ti~r=-5oaaG~?SA7Ds zvxkqZ{glThh8|72l-m|bGd|3GL2r|I(ZTlY2on(fCVnyQZ7}ha%qi0Ku2QD-&KRid z8B!KDDWm8Au9A?`5iOKKT9}9k`=uqk;WlG%%`(@p&y~3AGsHuUqwSRdiJi`9P2c`W z$$7C#IgUpoG#jo2-p0y}dN`&X>WOVMe^=6kq&E#_f*vUUl`80{xhrpUuBav#1|xLy z<)giSkruVtsV|MH0a___F~lqx8N+5TOVAiKw+)mjmImXt=USI()ZrJ>9M8DE_Q8d{ zxF=&B;-h&K4u`|z$@}KM&{ib#-)~ne=FhnV{qS+KE-lLh_iSF0HYOU>rdA?NBc#$gxfmS zQrJ}Bcj{BfUf@Y%RA=R)+VFR@R(Vy>1;qp|f*;5rC?V>AvW`Q@3|8}Ih6Z^1umQ6w zePq%$AoseWDkxR~_lDjXi9wCy1;8z35G)BYSc{do>60KZM#a~z#;M&Ri*(_V$G%W+I_#O9x*KGaTODY9)?_aQixLRdR@BGKqs_oB z8kj9BK)`LnG%^|jB;J#_+8<6>6(N#~S6JJakQTC)1431B*fh^|2B14_y;+-93bgHf zLj;K&=OwAIy1_85We8v-7fI{Rt&&AhN{c&0R+(7tF}jv(R_8Ucr36hO?z-2s#P7>% z$dHn)gr>d~*^!9mp#YuNlZ&(ji7pd5HLI#f4GJ3a48rwL&4z^;6(LcS<{T11B(Wfn zTNw}O*|D}^YSC!f(IKxZ)y01yX53257zzR*2?mqhCMSrB$CK?e`CXSuQTmh=9FBPw zQd~4z3BSTylt>;!r#3o!yiIC)*Lv?hL;RDG@nn?*3@AwmLg?I!3b0546u^P>F(Bxi zxmY-jAEVUx5;9%a%0GA5eJNmSyu4dA`u^&#?`JaTXf+=n8Uv-zgmDfZikFprBl3FD z=zL{d{NBbjwfo5#Y+tg^M*q`FJyW_H*VB%0^*fj1HYxL|5kUZBeIQ8ITE_pUKrlXW zE>PrHV}_A@nPNu-{_#}oesiy`Tn?f=^XA(h4Zy}f7{k0_@AtmfedT$7!%%FQ{JAZ^ z7Ziw~u)4Pr1_kMN216a^us?k0cSdMx4@blyfFyuGDTF=|3~83o<~a6UgZ7W;YqGX; zQ7r$U$&iGHy8XfqCHgxt5LA6lhmWE$W^S6d4YJe~bS&hBrnkE6NiJ(rE6a}LrAR)r|JCLXGXA8#@lRS#Y#8$QHZ8? z9y4=2153B4Fy6U#UuOK#dHPG8<=ffxiL}rEe7SM05t!-aj^6bi{nhTqnq4to zPTx)>e8uI!5d0Yi&RP~Zxdzu6HDx)FE6zk$Cl?kWoSa~cigG%Zu?uT1K|L~>5QlGv zogY@K)3YrUCLwsZTItfwTOzp}oPh)nH^xlQS%#T}PE&XkG7xbrkVj@ly_G313YjfV zgc>OxVOa+)Xf?rFBVxySKwj-Y9g2?01&wXcZ&aG9h6Bt?+2WoBYdWTvjq6uv0*eJ;67p=%a!6cU;;X4Wxq6m?mNyw6+XBHs? zh@7u8IvsBjM+MR%NQ4uRbwiedmH1`Pzp-(KL-l07H|uQe?N(?CA&iFWQ}v}Ad9{?p zw)j+i7=7hlO8@lxjc*5woAjTBF`b}kA85J4p- z*mP|zW`Aw3YljhMCfMG4Ii!MhQf0@X!DQ z3FH|dIQ8((MjL_4X9T6FVT_9?)-8cxrD(mRO17KVtSL3J$=YZbM;(h5t*|!MR+%7- zVChCDQh*3W=`e9JfIonS&g!xjx(n&Il?p8!wDEIwB~Gf z;h4o?F`=_5!$TOx5^%=b8whF~Gz208I6W{0QixOm6Gh9RCpZbruEOeApLa5nQnaonS=u zD>J8}Eh^!VxY(A+);67i$+Uyi=|R~zcUs?cvfSDE{hl{03NS_piHOu46IScagBKGd zT=33)Pw@u(abDqdsF54YeWzpPMS%Wkp`08S(|bmA;kl*Wb{g3GFBRQ8)MAXo#nKnl z6D}B%VFVes_OO0hff-U`<}ewxkIItBcs8AT2)1^Fr8%SvuZv?(c0GfQUa+yK~3!p@}WJ6XZ!}t0{1Pm1%qEu0A=JKv{ zFJ+okt#0p0q>kW6CBNiuN)3O1a}$t1$S>exiu>Ltm+9crhmqp#C#-#hvKCAWgCKtq zx^joAKO#gzG=vm5(&Wb*&$@L;$G7und7nz!Wxaupjv(j8*h?auC|2pushQQusJD)Z zLdboihLw2TA{pqD={^irg`+8a978XZVf-R>uv{;(T#t{z=-!>Xjci36#F1~+=9jp8 zF=d8xA6tJYe&guxc}klvDkb_)~|8JW3uRN={raMF%CFBqWiWFC5Y)B@XZ=1B2~7C-A+n__23f6dA>Ia7_ZV z1Vo|QniN)W15s7ZwjZ&;(y#E{fcjU^3i*pp3J{n zmHs!Cn2$yv&nzQJ*2?7S>c6b&QIYCmzD8c+Qqv?15%HeM=vzNbJJ{Th;f?b6Nqa7; zrA?t5*x-IE075|lz7TF+T!fPO5`z?@wX&o@f&+6>^f%=hN+x1mh^a&pTI+stt@W0w zwLg^Y>txe~y^ljTd5xlEVJCGTzboDzmS~7%-1*h@$rD#);qEt$7gH_Xeah={c**%c z+gM@;*VV|M4Wwc5g=^zJ9Wn4n5XOeTNoeEyxJE~@%JXDQ$B@bth6Jrb8a2#+lBNx3Q5PY+t$pb%Y;AH1ZMy0PDMqJYO zyA#x4YdQ$9u*|dSi;itGPOVc;@kOyT(;|70(q?5TxyhoDJ5{7HC69cIyi<%ND&MqZHgieUKSoXkj4Ym8qAX3tp-;U#85D9A%xN0CxWqt?-wUt9_ zi2|n3#3T}8X{(b1CxVCQ&cMI>`Cy*^b)PQx0p~f&S`-N_gmKtnGBJ4sj}i&Up7W8E zuDvIyvue3e5W%@c>K9_(OG14d5tm7DAlfT3R$IoK#cr+P2Zi7k70qdZq|yeBW2073 z2#gR4R2*YLF%>G1mr|`H<8naQG>a0r!RJVWMK6AI**suG0x@ZtIZ2`dBb-bA+JBS0 zC>_ARNR9-*$B{+q@EkpA>(n3x(U?P_5D&rB6(Qh*c(yqo(}R$SJWts!;$8L|9qoL| zZyYyv>qpUnchxA0a$65AKTu*k(mF{v(DlFE40Y2x-HKgVi2_K91o#J>`5(nS-=dIy zv9pjt8oSvA6WCC$xyZ8$i)7o**q;iMvXUg*JE<=Ud#1>ka+7!`DHmlzWRm$4)PZ6` zVq&#~XMLv=Du_E~K?JPNw|-HLwlYNB6}>jq)Z`DQrzg{_CCe)R!g*QU4GeHrMj;8d zGYg#YVOHTi<#ol|P!k-Xl!0(w_~6=TcmR-s6evwsN|ECy-oA z8G!1pHBJUoDK%s?R$^vrIaeIEEq0)CA)MoV^Py7oPXRL$FNyXM9%9Ejl@>)|Z9$&o zUb3KaR0WzzatgzQx2G<2(`&)Zl-?BfF$uOYux+M>#xQJS zY)zrDjBG<2XlxU0gJ96u(_rEtX|~#JgJT9J#LFOtnr*h5X|bvZC6FoHzukXp`aIB7 zgfzw2ay;fN;uZ8{?k$X3fx`hI0TMwgiiyXxs^!Fg>Q+&Q+x}PAdf%&#K>&m8nr(1% za4ZctIQW(%Dgp3<2Vhtgj*v0_5ii!iT12Zv@A8cXQ=V3J#XSY#f0}R$`fXX~fuI zd{3!~O3Lsz^E@iVU z=eFPT#l=q;w{SgV7v5@L2Lt*=oCiiUQwgu&_ryr6iV?5KiT8kiKkhPOB%$WpIZn6QHmMmy1M8*Ua+ zN6J;Zowyc^r97FHFsU(D@y6WI*;%La}nV@Dm+^ z4MG9%fWUjUF5?C}GnrSGmk1Xh`sdL5?J2@Xj&98nBHKIu75joC9aG=mzxt4I35ZJH*&%dEmLd39xVFB)?TN`L2PkTEwTrIaNJ;fn*q7rIs zY*Bnoro!vH%HrCl;qYv(+!-}$V$UVwkz2&KrCU=m*J}Xhyv3>jF#tNn?PYYX##qf) z2-+b5F(!WzFoUpJWp`6UIgt)PAXp~jF%1Q>(cfVQGHZ#icB8Nfg~ddef{{o}3~nN* z@y(J-OvNOHM~6uyL3qDRrt=RZMfx9N!7(^Ow@*}QB9n%T8G_a|LWI2Sb96T&0b!Yt zR^}q&lqUlS!pXQ*q~66MCbnL0)p2YDK?em{r#2hRT$>Ygi9oHQRaBKt0anv*_Bc9W zS=jfPI9+fom552j&P53na40;Hg-I+En!*IkN#W6WaYs@x3tMhSY?7@EOhOS5U5$#b zDZ?#l!+Y%J!s*yIkhnuIwS{=q8RdFABRGPnfw5>58H(0V1Qzg!jqYj_E;c@In%bR^?WRt(nmd6EVnF@)5#RRTb4eCw>ip2 zRz3#HzW{oy@-8-^Jfd20mKT9S1Cb=8H4&7a`DHs*l?yVSPm_}j|B@& zKo=~RD8xD6B8Zk+ROKUcX$_(^fjA8o=fn zBN2F{3fo-E6MgazjrUs>d+8}nB<*<>B3C=i%@rW%kq(8Cw*g@}xq8ZGBBNi%4KqsWTc%?Az&6ABRI>>^~TVd7DaC zX~F4Mg;5fTAVh$%l%0`VS^$(MaW%*Sxl-mnvKD{%J;No%d+mf zU$C^wUyJ-rSSyjsl}6zEyO#=;u+MYFszy==z>+ww0hDG>HR7>E1fK{KDA+g%aV1_g zI6_9NY=;)4CSc6LK!S)^_-4-Qh{<6=#0u6oC6?2o&lf!L=@tV#XI$8blx> z16UGmc&VvropVms2rK+YEhHa@Va$@5f;#_*GjIJp2)nVIQ zJ54RWXsnmk<0}dSYce@$A(niKxnXUeak4lDRZ!;=(;uf}?oGH|2uOKwC96T}8-q61foYLOjasTS*j)qKyrpsS(0Nhj9Qn!olQJIS?$6)X3_Pm6BM6 z142RU9mt!YqD%g&GfLq>Lyj0&EHooMYWC%KU>ZRT0;21am<4T7rZG8QQb?eN)o61a zvonDXYNw6UfkRAHA~A`PlPkT3VLP={7db6dk&PMmzP_!M#9xKWkYGWr%;3Grf4*q`=U<&4Fd3gew1|F@4wsa ztNDr3)vmlnygGS7z}BUeY;+)w$1YN|wU1oUJ<=gCNrHz&RwGVfJr)G;#3a5*CHz%v(B3NA zjFE%>l#a!l+Mo7Y&vvuEMvpPp{}bl%nB_5K$;uKNtLk|W{9LM1*`B#VctY0VD++8b zU`PZI4sg-zTbI=n4gR7@8GJbrwILd|Edb$&OJPNT+{O4%kTZjZ-(3RTOhHjQHpTb_ z2>V%5-$Vi6s<}0zpdB(;a-zThfZ@?7L;;|J;(zjZppwwV1Vge;X-2TOf$$EQnJ>$) z8I);W%`oZA5eGsT`A2F8c<6hHZ=v`mN%9f^RI6#fl~T#6-m4;`na^X=GSrO1SY@2xEq#@2#YYrt6d zPN9}5emTkHGlML&WT1euJ)(-6U4(W6)hlRkmUYzd{{mD$`5gxLt9|IKEVA0hRij;> zXu`I|Q8)XBIu5(Y!~`-aePyR`?I|wW8&Yw1>cu96Tv-NhXu12YYZyV7SyG0GA4J$5`=Hic^pF14uz+ecraydw zn~3(2uX6`3-VL4$#zdZG+W)-{PhA#$Eyf53f_lmWW%P?yM)FxdhJkhtRr~3sg!U#Y z6fGnb`UDH}q@a6|1dM0qalS`eD=`6uhIR+yjtfczP3iX)nhLXW!T{OgTPo~olmK-_ zVezA5%1nIHVGG=^#TfPCukn7vz%7<6P zz|sg(M!pMe4Ct=ZJD5SqQMrYJtGp-e!~m!yI{S9AnJ~{O0*Z{Mm0Eq7sSGkCF0H!Ats@l%auQV=#sy6~)hG#2Bi@k;xER7FlnJuG~(Jv^Au+EbEC@ zivn$!udNbz+=cElwRP^KzeU${p-Pmq6x2s*&dvVFHrnoHB?j zQ3V3 z;0cJ1X>IMS*kp`iBzUW$IF$dCZJe;A8cs;2=2J;GP1I6$BmX#2?Zx!M>TaP!wm@wJnldR)QY>A-q3y+!k%F<;Lkqk%e6DA~VOuPC?u!&HVSwDuWbXAH z_}#DPNT>Bq)A@ws|LSDktoSj{Z+~L~4ok=gY`s!|fWS!`6w4ZhlXEH0VSrzH>qk40 zCNvuc8BlVYj!y;qlY<;b;{WGjU>0R5OFob=b?OdlvY*;K>&xPBETC_;^&2>UkiA-| zCo1@4`jB&&teNnoPRIJ@^_Ono?n_O;)g-^UV4=uO zvZIG5$u+`Fj!0-S8!i$AE4kY1LDQBU6ojaOf8`b|3l9|U%%e@CA=?$Kq%nojye!wS z060L$zc?Og6(P?Ga$vcMn(EmX1CT1%3tr;!{lu=eelFa2nJYYxeKjh2+U(i4AEgnV zjA^2IvyvH8RdY;Jq7Y0d&g!RW%wlKSrl`35OY9LjIw00Alp{wy)Ijc1p`j>Dd_+;g zXfVXE@^oAaqA;h33_@ANf6ndD8W>a=AB$i?5WT!7^_Lm-+ND*5hQL7&*g!2l zfbvR%(b)^?u`{?vTrh$YtfT*?*VYvQuS6Y45Z+~4>_3%SaXwwykZbgi0W>}F2>K(z zpf9|}a2-2(i?W(DenezbYoMC>Z*@(|rew4GG9qUCH{Hx9wzbV@&z`34bfmv=n@75E z|FW|2i-J^icp)7;;9tJ|V_yT{NAI+|yZ%l~tot=f|GZC4d;Qw&dA_%wneuHV9nYoB zn2(>afHyq{oRA@8av%V4v=9K8!txfZisTg%^d`(+?NVt7p)&23X+mPwI+rY^vu?b3 z4(o@&Ye}N$&}p=&V4;@qn3-G8acYZQA9)-1kI_ZksdpLJdaAI$VVCAUTk@AzL)Aj) z{Y9xiCkLbH=OJPSxQ+V~_Cg=G)<8fy;h_DkQ&Qgg?9R<*og+AEB?6L@Ix~&q!Y?;)Hs4&3xz$>p^H}*tCt#7_x{) z{fo`D-}RLIN8fwea6%A84!D9Wf?L8Fp5s8Bq)O>WCpG6!B)O3l=+}E})en?VH;2J0 z8q4JILDsptj!ppaBNQe@0yV#v93j3Jj`q3pAfSQ+NW~^a{$IeW#V|?7x-FBx1$Fi@ zp_$BG6>Ka4dNPq(Sf$+tzY0V>fkS%|4?Hp_5=v{9w?1Ijwjy(T__u#o$MG}vJ8l7B zTqQZJ3~K_ zNr>L$c>*jbgu+l4BzCc~KM$x>W5j~UNJJ}(qm@BNif5^P-1IrQ+T3DO;83NmgdYm& zvZ6WYi;)kjgYg=N`8+MBjVx$kLiUk5>)Ay%3NiNoIOvGqn)xBcH*3uPq2hZYkGRrG z@g8uE8{g$4hRchTsb@%>wcqV2%*%sIW6#kk@gKA8G5>>}{FK?{S%}kUwrp5T2nh*w zBZ8p^0%Qsy#BM~)5ce!Cf>m{?OYiY-QPEx8!|VQ6T~7DDkY}I#l=9H<`T?=3lYDDv zL^q7yIvmOB8zvCmw$^&~tVjHq9!7(UG{UlZFhksDeidw@WnXO>;e7@@Cd-ys2{b^E zO^IzD5`;v8Kscd`F#${xF%BLuw{oYxsDn6WZXk00IB$E;@ov7q-Il>Dp1PMcGbnn@ z0fGqCM(fw4rg8~bdPvZi8hjIRXJRCfSb`(s5-d+Ie_bi^Rk^|(B)wt-Q4BgZZ9Jxp zF~)a$c`$rvf@loLG>OCS3;sN0-$uq51RZzCh_@8SJ(bWH>0D~hZ0n{*F3lJb|QXw0pY;$)NDq<)W>JR&|EhL17 zgd)pDec@eQBF*>QB~*r5MAXQbXyaMAPw#SL5HtlVz%%#^Y2<=(YZ@cE&r z*sD$nlA1RA1=$MZTl1HTNE0n?QGwhzu!yyXSv=zg9NqMKYtEy> zrO2~0*!N7PSUbd#&M8SE%_`_oi6B0@s-INrE=yTbAXD}+ES|SV0g3bD175?efT^bE zU$^1y`B~W&U&DVFDa8R(;(Tnc6Mv(CR#t7M3wCB>s+hG4{^Kl-NY1gL6`0~aIcLw2 ziQ3F$nu3me|b9Xb(h?s=G>T3l*FN<(pX} zK^`&G^2uw~3Z(2OggDzbQv~*qHPawH2r*pRQ0gry1n4#*a5TgP#<13)(xVMKf1ds* zgzMHvFAExBlmUb=0K8Qcl|WZGP0oc-NJcgrys`rT$Uua#%0?^9ibr~Rq>muBg<^0@ z8p2lrut6+(Afr=bZn`=MX_Pgr$bnd$3sGZ0K{2$$a85Q1^h3z^UCGd=ByuctQdh}3 zY=zw#DcJe%oT*8oJUS0WQlieY*yH*{_kRQT#0*-l@r&_g9X+$4&xcItwmGmdSCb)$ zCT;z7?vLfw-4N4lJ!b=LgBaba97gglT;KFOKbMu0YpS)K6VKP1ho%Xg+a9=j?!W2w zIDR&d8fGVm+JNq|E$9&MOBts7tkQ~kC`mnj`wO~*!{iQF2sx$aE+4*ssmmXRAdf6M z-2W)qkcC+@oWB@Xr4-$lhA6jknF_u9A605ZxUBp`lb;y;y6^K;nj`&%9#dz7cPB(T z54#bq|N8Gu%r(2ZgtPZh9}(0oNlFt7#&A1=g zgyJjvJ!D$3#05_YN*z+M@-mDMMG4QR_5b=8sGy)uB14|yWFpiVHk;Sgu zsMONNT+yfsX6Y!j>d)R?X>V(3YF40D=)rt^nI703&DQ4Qhu&uJFDGuM9)pTG`L>c& zgb#sG>W?adyiMfky9X}pZmYJ_^k zjAnOG%bANmt&PUZDPa`ZpOZAamz?B*lzjh&tJ}y$q-Kp1VV8ZqNfVKP&^3_SL4g#! zI{U1tPc?~Vm_1pVs-N3mC*xHzzH!}0Ig-C>Cm%60Z-$o&b)D2nw$8J(x?_{1=*H<} zW(Nt}IV)6;pKym|wA0`uiP0?KL7cQiEK;y62^k53*J0Ko-QgoLsK@qCyMrH`k4@@R zJ(g>5wd#w4<-=(Li9+g;go> z)iRQtYarrKQN9$uJYoOu=1LZz7&^SRQ;+FV>M4#F_73kV$s!&r+?E$I5q%cbGT#!x zXg7*8O)Cs(=g(@27wSKONrTd7F{@A7 z5-V&;i|7(mIg|A2Uy%ip7R3Dl1!st;7IhJBG0{Re^b7^wjRNFYnb zJJ>C-p_@eysH8v?6bK=ttYmbK7&c${x8YV`l8P&-Fk^G4DhC@eq!2-u{JDDMgC1dD zS)DTh6e`y%p=`8>pk4U!b7TtPJC4~w(3_R`6Z-wU2!Wc#@-mZ5`fhKkXPuQN+nxVs zA1$rF_y4quy(C-nbJ%(c7h!e}JpQP+?Cx1~ZxQX`0!9T9$CLlxdlp;x&vk=w(VwRu zXY}#|{IpfqDSOC+cGUE;e8kVT|M{GoUCnX2b^IHYOZd53N*RNV^JQBbISX;6^t^PJ z)v7V#CR& zEd)*i8R;1>oB>1;uy`y8?IsnyH{!~C=x^Xv4Rhx>7T|yP`fU&6+e^s%*qn@repbJ1 z62VlzyLD8YXDf(Y!8Z}D6reANY$2 z&+z;#+9sPke~A+Hoz#PrYTm*NIjAPjKO0$HlpGH|=H;ttdqy5dn;CcCki8(O^%jNOb$)+f5 z78UrYVRBb|N7Zd^5wvcxUXVqtNubcVDP7-9`xV;0%WFXRh@}8$FmzaVy3`g4dij&u zAR0-lNd{3I#Zc%cGRp43_HL4Vl5GX98#ZAC+C;KN(K0Ggp^H*AG4*=m2}?#Vc^Bu+ zoa?_b}SaM^)MM(FrKd58QS>3sA9F-P$>aAYF?lP{Cfv4aU&qh8E%%acA{J zmrH^o5`)s$F<>ifszD&UkIo<*5%tIO6eWN_B2~VZ<-foyDBtA2eoJ7&P5uFpc=s#+6CeDw{LeXYX#qfT8e)Znz0d6-Ijo;Pso6i-+6@t_c zR7g@16B7~+XiNg-T%3&DX>!$yfpx-xS|kAgt%eTM>SlZnqK$X3i$8;9^gP8LM-n@N z6#cRx$iq(WDs0j4gaJI^EF>bLF;4Ux9-hu3HQcaBg4oexdcK2D%zThI{Y=ke1_&sG z;Xn1O^CBhU?lbPw-4gz#NV%J&Q&a)fMOf1UVb%Kk3~Meq_=W{t*}#gB83~ zi|H;AAdvl7{$n1-Dx)jg6l6(2W|g<=oaj(2$=)R;MKdDJ4u_d3ZRcm1vkm!AC7FD+ zaxmk{5*X4O2Y%K(i&a9WZF)PVcIz< zHl67rcLLi&(khT~?F1d7QwM##3O&I}FA70bj6sH~!Y;0+gfPu83gf$F=!O@~$$R=N796C(w_nXpWcgo0 zy7v~govLgINbw+}5K`{+WLKp_qVy9CUQsfHn**(Rn$VX_oDmLVNoF2V{H|}ky@HT* zG}-A-lSRm*_E~dA1mQ{y9R%?TJB*ZVPp0Q}%upDQx;bh2vV@z~ept3Vnr8Kml$xI} zp&0uY*;$BvkDQkpo*sZC)JH3YWMFcAtAbxf{ei*XRQm07B@zF_o*$z%sJWVl(I6-z zfz*`(h}e^9Y)Z;9eEb|aR8sUrs0e?0WS>XXL6Ho=ss2r^uH9xZwEjdjN8aZew8V)& z5!o#7Yl9)(c;5dDn2I*p8{t&*snRg9A?O4KALutUd_-_ptX5y!yt`45Xu|t-x(=Ge zy-`7!jgOy?zt6DP?wOclKk9!^*Y7F&+_hi*hwk}Hzw_K|Z{+44e=N`>L`R?X@mm`P z^kVxOXb6CapdbQ*B+YCyp&R$IEM%x(%OHt6cb`nV@mFY1rT_6GJr~~kQ&uappuB4x zYWf}PHI^R@p&r5W%cM)+i8npj%c#+TDo5-UN1w4z5nC-NJ&bmnzPrWus?W&1|9|@V zxjT|w?8kdyE|-SID|5&>nm~gm@;wWBRN9Nx&I4ixl++gl!P9HlMub#6^)lLek{SDl6=uXv5P`wZiNSZW=$gt=c5D=<2cUrS& z@caQ%Enz@!4brLO7Hunip&gCfZ%$1(vo=7wcwsA|ff}@GM1h{zPIX&4V-W+TMnVW2 zEhJFXe!Nl<*WfIcm_KGX(T)NZI4g6iqy)h~6wC=24`OXW;}RWin9xENN$bc2@(e~6 z7tqM4CqPBDa$}5qj5hIpcNc-sTZ|t9F&Try&HkNA-a5d0YkN&nqkD#lsL_}9;Qt@H z-DGKtG3)k_+Z4ADNSp`fg2^E^C|m=V(EQzB-ex8cHK|q|0ByRy!epzOo;q`BI!s8q@rstASZwsfj#`-KVce-pl zW^-aQWNzFV2$X_CNgK5OMIc3zz$Kdj`yt5{v@TcweWsY*-&@tXKkBTEC`N2s@tP3J3~JH8*4>}iDtZ&$-Z$h~Dc@|;M|%1E`!SQ4o6 z5gmhZkjTq$h%!73N*EFZs30Y|Sx`_X6zoyM^SPH#f1dV%tb$1z0r)(=r*`V)C;q?H zvryGf_#pXn1(_1s-#7GWM!R!Zw8>-_39?uZ1Of9^^h;ZuM#^z7+wn^O@P4d*lc;vL zZKA#Q7{b+zgCJwXr)-z8qIptrZY#9(YGo2y6L2FNc?0P8r$cU1ptrgDJ}5G?M{_NL z(I7z8o!S8zmNQc_bFXen0YNBosp}As*__6?AQ?!2IGs{*pb-z5uzckQf(s9LLh0}k2_GDY?XaJov((h2kijpkT@%nP{;dlS zMP%%YTy@P0bn%lrq!#g;_&@Dl5f+yBrhi9YpSz(jpzH2y?;YHrdr}hfX)4GNLp^5g z3ilY1GX;d5NccVHf~FuMh#?>mX+Fb?41tjW5RbR96s@^RaJ%@3qVXPa`SQ4vKuHjo zNqO!R1jw+mQ$yR!EioWZUJSoMlIWVvlcc1mUvQi~BO6 z5C}vlnM~yDsB-GN`m4nttoyIIc)IJIA5IoM8teXyRaie};gm8hBN5rb9}_ z!mwJi5h~8uql5*##0M;a4JEij{HHxV9$m8FY~TFRdyybf5CR&6Lx1|Dds!LnQ)o5i zl72~4@}YEOKrZp|vVZwY|HDw=(Jic8LESfyCQqyO|Mh?KR^b<$sonUI(2>%s=Ty4!F*jACz!B|@XByNLsX67 zbAVt*=qLsY%n-v#`MyGt9Fty&ps|7M8d-h3BjQ90uxHBV4}Y77rLVC3`* z7-MobhYzqr;1Z905_QBp`MfUn=NS&>n9;m*0|_Jn)s>;MK8905_xc>=R@=xpFX&1D z_iT>3l0h#A{4UOqmk5TAp`45RPu3U0h8?~IOqbiUYZ2@ENo*H`V~H&0h=77aeAou# zkrqvCI&raEQiih-z%_ny&J|QIu+6tw1mEnj9kJrsw0N3$+aDm$AFSU^#fly4K-a7x z5Kq7%3lC;J`^nh5f{`~a_`l}S43N!Qz;=@)C~Pt;9NI*|jMqFu0+bf33B_hESh~d1 z-Qzs4s0f_$#5CxEJfacEB;-qhd<##<(sU4uKq8K!DsK*_g9I9iEjm6VS9i@q?!+iW zn8||3fVxs}_YFhF6Em)u(KH}ZuyE9zs`Gy)G0V^E|J!FE5BIhg^*{$vkV#h(bOYLl zO2FSxltPy!VX8GcI1J|ytuenYF4LQAh%dLv(3NA-l@F^2kwwt*n7WXnRS}F2%4wI; zt-)i{31nv^7b(Dczjrn2AaIYLObdB%LV!rU3m3?pYqEUGcM%kuxYH#>N>anX7AQMp zKm{9r&0OoFJY2PIJ*^kl4;Altd>re4atr8jt~e|pi7yvv2ia>$(4IGe*3E-8STiy? zM@-Chk>-3G#8H+YWSRv}CjHE&N?Sn56A~I*i`iW0vzQ!%4b^sHjx(EAke_SK!eFPa z9k>S=z79JR^WvV%DY}6^YsK@wWN7KXgMWg-vVg}9CA)s5(lov4V}kU}+h<*~8!Zu= zORuX+Wi!SF$+jY2mwz2(*B@;=*`OcN<(bnqirdk)4D1UTkeeg_b@~pj?`W@3y~jFN zQv7JQ6OF~RNR7a1FlnaCT9dDVRdhtNl!THv~YLiMj zqmsMIL}w{ym5qYR@a!8){oWSD?%B8d8b{3}cNy&SXH#a3bpL-b_{KD#Kb*rZ#%@>r zn!d*OUIKlwrts;Ae&>gSElUZ>Q!F*)hb+l!I41F9Xb%>WRb6WpZi10yTT>f%k&{ic zB4l&?&EqAJdY}6x7a;|jVXM)K!#GF%!G@~6(k_%HR=pU+jxzs<6rb#U0sQv&(y5Vh7GM zY+SN+wtY04FGie6)AGoV@JBYtjAg;$>ka7t8;94Y2R#c-(dAewuIG z(v{y;8ME$XZf0o+fodR#hG&NnC&fm)|3On}#3bz$F>b+RYxuUg$59 zj4J&r>B6-3h5Mxl3~o@xS(~I9`DBwgN6o@f0}e(VFLG4>FoHLNXIMZkoNoiv5LS^W zLdF>ot$0hohNhD-;(8kNaRL-E#MzF;u>t%uf`pj05R9_y6-4)?u@Jz&e2ewbLs#!D z|IDT}ANmXSh9ZBUIu^;7ElQ&hw<-OH{Qm2p@75rs2MAC44}$DZx%cxZg<`v^*XITz z5ZA|1$nQAK{M?Xqrr10P{l`*k%!SHRo4=m5m^yI&E9Bp;P}DE;{C!q0#9kEEV?N#! z49i4?7=lRpr0cMWaJ1;!uk)g(2mQUGW4|htm^wJ-e8p9T_4f@?o_qB&rG7=MUlCI% zQh6PKJ$V6ekZ+-UlhE*bEDa9f5{1Br1DM6Hr{p5aEr)LU$rA`hUUR-NgU3eUk%F{q zBZ!EAQ;HxhMqgC`sSVU_3IxSN`bS-nqlfv?LZ_N3uIIw4h>MaJUr&KWSx451+U0H&Gekqn8B3-Vl!*sQN|O<_s5`QXm}vWo`k#u4y~xhAqfIB(B5` zNPvHQk^*7JB)-eEUnv#>TB4HclO({#<_HOZpx97@@$pNjl3-U@^7M=yqRLWozEex|T5%qVr=Lgs&snML+;1 z*2W;W_7k&JcoGJ3v5GfV*L0Q^0W9#pvmzl|4Ww)ig$uel5nf!BY7iEnbdiAgQfh=g zs5(wTqpLHp&Gp*V0aY`gAR~Gd0#{JXqb_kaT~LBw4j5{L-85G}XF>`f3{(I$^(k_dNh=87y# zlP#?LPzqRsA`~Gwg$*P`Fk?t1?Mbr?%E6n0+c&Sfeg+sI_$F~Lve=9luLL_z?7Zd> zJ)JMCZG%tru`rLe5*w(-gn&R_ds^-l+Fx^4eDC+xSui85Dkcc6m)O|)ggRTiR*mjG z)y6Hu8Fv+e3i2>cl$%$tnXb1%B!9&+B*r^Xj9C!dPmh&M)a%RD*I)1PqW+FfjP|&0 zF_taU);O=lp*7_bn*_5ZCUvDM$5RkZ2*^D$CMf(=fmFPhEcOGz9^GcefS!QK!*}@3 zfgF+6Fk2%k_yJ5t5JMrgt7}$_#7^aF-G`t?O`kt==IdL=KY8uxs9Vj$EEEAGp24xu zCsvT<_xVY)ks>d?Q36L!=Dio~?sO$WW`?YjoUoi}&6)YKqOi3!lw2tF=p`mY{Qs&& z=_Gvj{y!W$|Kj2MzH;?F#cwBD_-8L_bJGcdOiVY4;&XAHDOnHHpRwGVE~|WyF%wFX z)JzUsQ1q5j1bIBgH%oC+49V~AKg!*^0P*Zd7cb8F)nD&r)U^2ginF=(wGfs=!oTLZ ztQrc=ITi*OpgyJi$D%D=%jLjqeTs+&zgdU27OGl*D{Yy@Le6t0?vZ*_IZaOQO(K$b#|^Ne zB7bfx|C(m@8sG2L<-*rxpX(1 zq};^?%31?aLLy=y1f|cOL^~ig1Ez?))T3wp$`w1j2lJF&U5g&3f3bJ8k9!5h8Y z*zv7D$i$)+v9VCS97QcRkr|c!qzgZB?rfdcS6o zq9Vnxl!`{m@Deg19*8nrMbu63>o^LbP}x8XcIhU$G$gKVDN{*Dj8|+451AOKC6T9b z4I+;|E&pw}5s&KId3S~Bw!v4n^*djOoYW5!c>gruV_I+a76-WyY4(3HDFHIbB@{LU zplBBL2q{0ixkM3aP#6#(yhu$<%xTE3j2zrWo|AY92@x(xSK@UDUZ#`e7#T8BAJO^5 zJYQnVbRmk!NC>c&Z+KtL{5pj*r~d0Q;;nfx-UMINZJ=V3df$*Th1rb5;kiV3m)@TJ z%iA00K>l*%+q}1rm^$GmG-q`TKWo_lj=9C81;lyIVWlB80AL{uCKjj)2QA*0A?Q~c zRz`F(`O+TxEzNU+N077RzuP_?Z~ML^5B@IV$^6nW!9O6784tynOJT zg5i>7_L)6H$$w->?Uu3Q5E`*^53L%Xdz2EsTC}1k1;-_)EW06+kp5)|#&qq{fc`H- z+17I<97sTSou?k?+63A)NG6llMunFrD z(Zlf(!e+-NMhF7LgX49jA_dkR^%Pa(esr3?YOP=io*3Bn8YQw&B58#!!D`>58HpGS z2qIL%3V|U4mibyE;$Jht{Z%p3m5wlhBZ`er0T2*Ptd45{*d-81VIOdchY7o^cXXCf0C#AGZ+s&b%~IoRRMuUn0W9p17uKizo(OE!zdv~wk7 z0*&>lZ=)^Wcw9&Rulc{gY0wfO02mOJ_?(^l(O&TUyj0EX`)y{m{w%eJlj5Z)pXqrJbQUZ zD(1~-Zu;Pezod+K=|IB(OpzwDiCk$u3Om0Q;%#32;HBSmtSBG!8zF^YftFko4~~W^ z2r7fZD8ENX;3(fu^q&stP=`0$SP{8v5K_wqm$W5JDUsuqz~mz}l7|!;5vAKtgZwPM z3&uHALr~2MQ~{Y_TGrl1=O5ANRmAOVObw%{&Q1 z5HH64*kw8Q3;TK@eM$fUe0_c^3E4;q?9-QcSzV=Sv~xQ!J=T0K4RNr3~-CIRIyf(!FmBAweoo2LFDbTS0)Sws;vH> zU-UW{7U3EHXL8L|y`CsZWc7MZJ^#SS>OY{;2wd2sKrDdV%$z>lPsg3Y???Etrx&z# zlTYuDGWoq5U+4Ro<;DK-l2SrVZX0Bm%dVevDss|pJfZrL^-q+4{;f|BY9=;Q;NtuJ zi(6iKJ(sSp0fxpo9y1LwR`|Ux59R^w0Z$aZ@+VEG@^M#oTYa7pr~A!WrTX8~C~`4T zOO-r&QGH05MRT4DV|kD3`;Xk^d}fXUil63(vOL_ z-g(&-Tm(L;E`|AF|NYZQQa|<&M2QadoddRp#EVbRTORhy7~)9jI2YKqZCKw?3G$>- zMaqh=&%#1gh7}*;iSbS!%=inJ+^4gYNy8;f(_&$(s?GcIErYYYyD5{!Oqj1#zxt-P za6eUUwXppXpR`1P9rHNrL%kmNaX-D-N&)}oZm6k7o{Krunz-Q=>*_YcAlfnnWzv=R2TojfLR5tBrfNiuJqc2xf=zRc%Gt3GlB z`C9*@&DtBYyI6yo;IHYBWDN=`1$UQtzW_`QvCui&kg@2&5ByRI8D8J_pw~g1%*`ph z41aiFAdBntS$!BU>6*!JnH3-vA;c1u++raadoB(1ER^d2*Y7;Y>ADVEIAsZQUs5l$ z=_3#LqV37&940>6Aa(>zC($T^Vog8Y?|#~^5vt&z`VP4449tzjn4n0*70gh!yra8S zNtpq7h%C}^fuiK`{q#MWzvo(XJHP^OzKp5z%N2rcm1h*22An;q#za(*GX_`$F z;Sg9O?cvSON^D@Ydgp@6Mh&7RYNqueEcL$^w4i2zrjsq9JfhOy4| zUPc=KFq;L-2J@*ydKIfe-VR2O?qN5i2D+fm&T?A|`wY0RySl#+(r$27J>NZ=>~bk8 z$CvCh$pf8|Ln^1M+vAK&{12-14)q*=bM5Q4^%&1*6A&nVGwJv@zG=wbH#Hi39))rc zm-&4ZOmGn*&K(T+HVj2^SsbVN2lrX5ihd8gm3*}ysH2Y&syT(oD77d=vV^&TBt<5J zBDQO@mr-G*=##G|ObXuAF{2yf8XNu_>x8Bt!#tJ0by(z=Vk^m3-eE9GQ727d>V(m+ z3ZAu++O$rr#wl)7*Sr@cz*8}2Y{l)wQx6)Es)Ar>H-KrSyK=oMw%*6* zx1@;Rw2E>7PvoDUN08LP7B61&Up-u3b22!?PR;kMji?*|;btf?ESsT)5Z+W##$8vQ z+`9VSzrwIViiSAV$0MTbnfh#{1KM$?--as z7*3i4Sf&v63Lpg+0;-?%1Y|=Di+E1f<*tQThAuIbM6X##lh+q-Qyscuh30I5mVN#_ z=^T!FHfD&AMgNh3a+U{ntGcCSU{==M`0!YMB7jjzNtFtJK+H{!{?h*-q>?~VC|S6o z1*Z6)B_@cW{)zw$L%T0PVCV{d%Re~Lf((Shg?NM^)%-%|iU*-ORl`}|t)TnC8-I26a=dHtq7@|ga%i#I+$=FV^GGTvP5 z+kd?tBTpzDnp@GN9*s6IfdV>8@yJ>*PciyYkcG#V))tFuFo?D#52onzygZ>yvIO`4 z_~bmsA-_=B{8Q8XZX`nH{~*vbFf56ywCgxv*%49#A>JS;S?u8u0t&wqUl2<-I#S1nrNt_PFZ7TmUdgCs zL)@~7{&h7zQi+GBe;@!beJm}wQ9m>>q2$srh(sfaE>m#?2JIVwQe{0&KXdWHZ!W0i zchDjAvXEn3PQfrHcVPw+W)QHAL>_5=^s7VyJ%{uHrb(My@2S49b-XSjLnH?jZ(GEHq66`M@{2%#wyzI1jM3 zvQaNH2XWAB<$)=f8LuFbq(?MfFv;rvE-2YO>M{nc#y-pW;|}0o^#~vN3x_&*35Wg#Hc#-u-TT?+F6fRJYu)|$y zT&|84`GH0#8HmN2hT26M3zEtLxS=C@68>#8v2X2kZdzTOSxDpBk(ZdXKh@Xi_k>}s z-^cOZ!3WD&8F|j)Mr)|`qB29?|EF>A^zx7^sQ(C%G<+o|{iAQ(H?MBp(yomE6YsN$ zI|!v0H7>!j^H-XN9rf3Ppm*vr@haU>3a$eDmAq99780_U2az}f>tqv2=r0*d{yeoE5sWhf4{_5T0fI+*{Vam12T3JoE3BNBAgG>fT8rgLxGj`XcNH|C&spm4#4 zp`Ar=UUcR`io=lh+4WkWIL~6kKkC(LW50-Boff7=Ho8LP4-f3e#`QPkhi4xa)uV|W zYnyNc9|92Ql|4yfq){(L5DWt%D8}^)5pfX{eF6e>JcmK&FG%}2=+o8V4~D-mRl7s` zPAPc1-^$<8WmpZ@Is;e>^-NT$o02jl^KXlfy)gV;>n*RZ{_0o7NGj-{+qlxwLn+mF zb;@S$PM~izjN<_TvkW{%ygVK^$=8GG&A~*z10xtjKpo-b^?B>B<%k{iBJmeI zINeFHZ;Wkz{r5jNCBT-_2cs5VvDj_m$Rm_GfzfyW$t(1}&~~QO_LJIJxKFkRqfqKo z2w_oc5pJa6>>s6NLQDjf-M=h$o^nx)*n^V9mL~tc)0Xtff=kD(7ivv9AsClinwlt{ zCL^V?n4eYRfcQ3kHl_Y&L7Pu>w;o*Cr*q{UK>@U_JX<-tqFJ1Y6q1|cb7WfxMPO73 z=OgfLJ}6o3Dt`EGu%Rrm#Aa?`Fh4GLGdSX5L@0^6(?y&qUCiQRJO>$kzof(UsZrj4 zwzQ39#xu{2_`Wo?ad3O}(pGP3FB+MMqOB^Px zx(Qt{S$ICfh};BQsBdqDPVc{jc;@HXk~jXc{58Iz|Ld~YV+7Y?lBX$@ol3^VV7|x@ zHG6Kad#x!u_jqa`R&_lqpOTEW3B|z_KlXBL`>7WS!AqIHg8TUcA>~7IW(~ZDCGz5o zt?4K)9{K*2>twE+g}j9D*zzPZw~u3frjJjqPr`x2cB6i_N8NvgTH%{94HrcC9G>I& z<33Z_{r`noYVlcg{D}a7o9PyX;J!q@@P)L2wj)LT^%7=sa!G0?H|S6%DBU8MM}KP4 zpDv%#wVzOZ4jESgOVs1;O#@?ls7+;iG3F>HHFjSQU4lcjh{`DUXJJ`#x!>p01_BgJ zdZi78vL(=s(`7LLnVV(B&J=u4cGEpGJC;fprr_GZIV2^h^kMfAItO55x!oWA7ui@IKep z>nFxMyG^co*PDuZf|Au0Lx)0ht-2_puA){t&dwmNrtF*(e|OZ&?%S$WL?k=Wb;fJ~ z>(~&&j^;jtlS>PVqWdm)FoK4b7NLo@%5iPYInARL-1+foqNaw-4k8F(>VdTtM#=<# zHGo0)Pxtik-gsH0bNv>!)YQHMdpJ)9FLJ|o9QTuYS&p6Wf1GMIbpG22c!Ckggi0g> z3o;fMG*SshA_w7<4d_PzN;UkXa@u~rJ`9K#?XGJ&v z6Vt`zwSS|RjhS%jB|5e+lVNfZ%WP&*fsvoRqXf@MY|-cX6riN=Sq;-dMT!@{V9QNj zf_FNKzJSLS=DxSQW+7K9q?SFufnCE{j>h-`2}9oCLBv`l4JV+Q;yPpf5a?>_OdMpXyVqzo(04AJ;@|&3vOp5bLL80^{?(bQ{n6Wt;ZBLY_jc~Ln z1pA2K@@4F`#h11GPEX?gN;_19GJX$ugamR7e-&J{7y2ixHkzD17a;Sbh~L_<&I4l7 z#*Kz08Q0avQTyMQtjG3VPW}tmt*pIiNA&;Azkm0$+C8@aG+Wl&$pItKLCG#lBU1Z_ zT9W~|SO7)$V%EpajPeKFnO|?O<_3OyG?H2(A^}h#gD%7U_;twO)%}MR8JR}-asaRG zdYI0v97dDQ*>~L@k&7P*ra__qw|iezOpZU_F5_gj34XPsbpJ!TDtpa`#g;_)gvpag zpj}_UOXds!I5S4eb*Ck~Q=;7d-Qq87l?1oXm2lKh?R*}(kw+yqz2uJ37tf)74;E~Z zJKX7*!-v7@q@aTclB12(lk(~&RftPKAB;l6Ib?cXiBTT68``>@CdFTK*=Vmfj>;bN zd!W^f-kF;&w0DV{-{uwKVCGKMVA`em7(MftN6UCJAs(mH+ zYnkR#Tt@j7@9S)-{0uT`^X=3>uk>_FEwbdsW3=e7eT{|v8jl6R%<=a?hj)WfxMg3% z?)Hv>|8fSWyAXFRdxc0Q6U0~+Cq3=&6W7FdrOoV;f^VKJ8aTnRFe~z!LGH_XD*{mn__){@UXQtXq*s12 zm5gEg_SQaLH-jRAe5=MG4}BB(N=#usP@105&h@W6!`FAHCBCGX@}2jE1_FZQIRLD! z1cBDIG#*F|rEGP~Uw+1tz;G7Y)|&-K0vsP;O~-lS z^;PTMCoh2Qk8%NFq!G){1x70rzU^k}$;L=AlRRH9PVkYIp2SEzNzY*gG)H+yiQ4br zC@xKjB-`d+-U7jjf*v)^yH7}U@p0fBRtI2u_K<^y?-8Hm-tYX?x$_9BawJ!>h%hn; z*b<2F&0@h+SkSCLl<(zrZ=&eW5IB(c&+{G0$@~*}j_VJ5o#Z9X@-IF=-H!3~j+lRyymNQ2 z-VJotEAdM>P_u~Pq)(O;4XU+Dd{Hx)AI6biX4In^{NU%Qt_N}U36{%gU4 z;yoq>z9@-40u{BfL(972*dDFYRsz~N$wI@8 zJ@LOta~tya{aCD`6T{dSSiEsB|6%y{LjWpZhsB#5=Tl+}6oh?%r`a)^d-x2#is$bH z6X*)b5btN^U&0Q1@$6UWaZ}Q!ZQgg<&4XMaOZ_GbBITk>-ri;=wux(E;@B#+(6qP{ z96^L*dZ-J7!2*FC6rv)EPs*kU2&94q5F8S$?s5dt#Q_7DIGH%laM}qdJ$PgB02{E- z4;lDf>{VAOt;q&uHTjz38!mu-hWoJZv|4)gwS26L_u!>;^4>Z0IXJP5dkSS?^P#C zCvpz+aq*l+C-0b?MsC+);f!U?#fo}A?Vr}e|7gM)_3Dwv{K>d)S{LfCqknAs1bPJu zQM!Q$3dfUQN^I0K=Do7!hVOCOi*IpM*$c}lDM+mA%=Fu*(Kducd>9G0&p*rNxZwo_ zNF3TL(w2BCh`Zx2U3%&`=zPG%^b92e6FN{ajvyo`KCOv|kd03*m3NN$*dh_ENLskJg7h>75^85SC8!j@&Ny)$ypC33gjcskt&vsehpZ_r}u z?~$sen1Bxn)qR04}6e1=cUCfu48O_D( z@hk zh$trA874Iz%XFmh>W27xGKl;U4Lk3JxONG{-Kj+bu6Pig{Qr{dhIq4 zNK6|Rxff@xN*~)cLTU`|?;wtD`p@?GF_$kDr3_Wbti@<%-$|KoEQ@N?iN!`zIXHS^ zK>?uYM7uJ$9WEWIVUd$k?1~S*_DJ2x!m{nItUCxT7nYle<;A8|BQQ zMmHL}x-D-x$x4eD?uvQ2KZVm+v{e~r$Pw0y<}r-xeay0tNg&`_eZFZ9v)vwO%4_Zk zt?6L+Pb;1M3P{zkn*F5NA-jmae8dgPnr+SBgpV2zkig8ztk&9We_HcG^Kd;XUjxEOS zHNU$VdcFB*;{G~!uff{!1WgTIOSp;V_pQpFE%A6io05h0uPnh{EbQ&n)8dc3*o6}> zIwks8Zs~tjBD|6KQa5f14rGL9sJ)jqXGILOkp`oBP%iXBV4z;{ z1Ee;{$^mW=-;t9=y~Pobb1{Q*O$R)Y!UHV{4jlp2Q`wh%QSj>_##0O z;}?X)w2X*?e||qhb?HWw=w3woFqsE0`}#=!^ZO!NB2H4JO5O+L8JV24@1GCcPGpsD z6#o(2+SIJ=j-h!7{M{ZWp?OW@e#ve_s6i{P@@!e(=8B0-qdZm_EdrLBA^m_aXGwl` z^!glJ(4ae2#X%`1!7EZo-kK~Bd4hUf*}K<8$Dj2=v*ku%Sr3r=c)!GEg5| z=*;yGt)_We{n2xP3bq;nNgtLnQ=Ymlf$OXn`7{|OyK|JUCkn;d>sDwQP!@G~a zp$sda4PB6+v)b>812OOU)3-FN(c`$t{_?&q0$_NQ)>?2fo8{Giah(eUIx}hTDgX0B z@M9!{(nVvGQn6Em33-viRf$hbjKPhG8%f*q)BA4bzcW3XJxk-3`&ZLiRCLZ`0jujg z?#$$U15vjsnKwUxIYE1^y2HtT&%?%@k{d^FCFZ0(kg5R>Lz3(fMk_I_aA7^^lTZvl zjGFcsQ8gSwvhH=9Wiw8ct!v{6y^5scORimn{ET^u&zt*xR1-iCnr1aT{_;b z^$IMn#D+t^&C7ZUTVz7nNPA zi!HU$!y6Hb4N+~T7!On+H~z%}7illbL5yTYVIn^ViAxbrKlnb9oabu9Y##Jo+2WhLtrQh<9kF1+n~GUPEy#$XtFu-zpqE!^EYU+ zYW6MLlXS%yncUSGwsxNUv^xC)8kq8=e$NHy^=b5!mpvdzAH+Qk#S>br!Urxx{mEYv zE)8SJM(LO+P~8MWSka9({eM@w@trSuO)tOvlx=55>8s6I{PD+-wJG~%$-AeEyv)I^ zh_@|B;uzxAIq2CC*ZQ&nCmXd*iNP?bx+sq1hyNnQm3^EsB(=F=eiZjVYre91Aim_ZwLsAt&pcU~*QxuZ?jD#<3i2}#47N)(et4BxhAlyEI zpBUHw=auGqDo#O^ZD5zPiF-)N@2$wDk^w{ke!7~A83Mz2UEC48oTu59bBG>}ao(Hv z`WN^G(wa(D&ct1#iK-!yP#ww;FGfTl-i{Mfw-@A(e*nF0(6+Qqdq8-tBjI$)Gmz^URg zjjehcOtH)$Z4t8vvRMXlFCUYU@6`3#otPScK_rGkuVJN9`j67rv-AJ@qCeWdkt87qL>!MMLce>=C@dKMF5}6=Mnpei z1!e7FTE*CFQ$i(D1Ei=!CpLCZCD_bNJV|j&S;)HR6<;wu>psN(ObW<|WLavS-}v)* zVKVd-++d$F+&+{ zA{;h?iQidV%{hOyqy8j=m)=89@Q}&(h)#jmLQ8t0FX_Hq)8BhBnvV;r$?D7 zRI}bukw}bPOpgWV=p*Op{5*9|c46HbuKC~N_x}%z{r+v9&u4YCkDfP{Y*={xTpH=? zMvLFJv__WQjVZi0mq;^j5t4=oaUfGq>RWigJ|69rZ|6YNJWp=Mz;uV*SDDQDuJBF=s>`t%{_b?tu zj1VUP|Avuza3#yMFeBs}Z_gzDtAMO@UC-_P_XkTQ!*iv%vIam#lede!j?eyorW*MT zhIZQe&yIixQbnw|5w?NIMZXx572*cvN-A)Y0bTH*!Cq8JOWT7xYRg^k_ z;j>-$Yt*}hrE~AV1tyr)#`xH!?>%c0`8}reA07dVl6*=mC$dG`b8*_Tq2oM=ald>< z$sCCi*0GrLgbTdxO7sG-2rwLE=A#RUjnZu{Dd^$oSE(p9V&vq6E4eo6WfO93gF|hv z9g)ECeqR%3`jiKN%D;*w`jOKd!MfK3puhD?X!0|kXzq&%!NyfJa~Zn|>$H8-y59<~ z=gTIe#$IkE`mbfZwS5n0pI;)}z0p?*pW$vMQQD>Q+|1<2KJXCPuMD7A1V})k)|s6! ze80ng?@Qw`q5qgG&>n8|mG6BNje;4zWbM{=!*TImweLNQy8!yx>IK=5`0w<7uB`1W zn`aCQ3S%5G|27xOraE=<#0D-1bWK5OY_16}0IG2Fia^;D7CF(xpY0HJEYG!j((s&G zV%TyQiN=%0*i!3jGUZ3cF+WA2to>aoA&YN@5{#uhkAti1q!AaK5mgcM8^7M+`3UZ| zJ{4S5?rKwK6*VUv8Wt>^sgGi8&wA(erDLPmr`2DeT>djAen`vbs~8)2D#LMzQNxo0 zC>JS$&?iMZrQcw*R&i_rhrhwxw%?)LH=>D7W#K#AbUj1qi;` zZc$aa42~9^R7NLcPp8^nBjaCOMA^YtDWlIV6_iDwdc+3MXyX3GK@bqlkt&b9Nl>Hx z;VK)oa-OLJaM+(Gqr>uK4^{kb*vtHAg@C7`!eMfqtalG2z!eMa*uQ|9vm+BnT{heL z@hfQ*yRHw1D9gt7;&~eQYKY9Y%joMD&T-|snb+t|`JU`GZjW@V8-`vswq~oC89}ih zxw@GJC991~!s+u83W578an%{ub?h{1Ou~IQCPzhdP{3@)12rD(2?tSJh#a=XI22A- zOiDziN+d{QkluF+hdR=rV)69+y~p%_F5mhyXg*8Evx81&GJ3Mojn~U`urr5$zBJ01 zDa>Yjl60~}CJb0(b4QQ6laa1ZJ(2$5GY~>c!vG+N2ndP*BcfQs8j%O@t8!wm)1{?{ z`&Nj@^|dq1P21Et_*vq|71K|p(sc;Zz&6p;#X+R5122?Lr>>GA$?hdL8!Pjn}Pg`*h1li5bnX1;qDL zfJ3YTAvhhexx_WZLf|mOtpnAcx=}2x%KC*n#2-_cSjhKmX0+e)9VC|-aMb?Va_6LR zB~^r5JS*PD*R*OK)ZW>Cvl*e6hyb@F{}PAvze628I>oGudrBeskpD49OYClO7H*5+ zMdacxj8C!t_s~6Z7k3@Pqrrix7f^i_c0S;{-cVMZN7WSE7sNU3XvtxTP_dBK|55l3 z4YESM$w#r4S3-?cRd#A1YQ;6WRTHSVztCTi!m5P=_ejlXb$4d=Fe3v z0J`<+hE>Qs2*)0mdSDJYTQm?S&EfwnYP7z0)@lrW=z)2L-v#NIGf5Ywg}l&2h)Afg zh5md;F>0pTr$d|c4AUnJ4q>uYGY4nC!TYIKlrS|2>l}ptn<~6o!jSHrn*#CCl#gsT zF7XV0!4NRsBqLCOmc|y8fgvC-Fj^o(pixR;f9lfEZAvMyg3#_==rI9#@(Co4kb%!BFubaNMLaSvUlrB|Kb^UJP}GFuZG3?a zK>v^Dq4DUsJy%@5zc_m+>QqpFJr4UU0Wud1x%{a}sGH}Pdh#Hhke4`$?k;J2RLK%i zYGKhm^w#V@N_j`b)J z_?uIR1d%J3a7a)UdtruOfp}sdIoRkS(9U`Sd`x+*GEyMIDEHBlqntqQ5@0AJ{bWQb zc(`AXd{d3QkHcF8ty>}Y>uZX;1U+GSfJc%B8(~k)ia?KcCLrvED#?=uv)2j4!dY3)CJ&P$J-l2lH}5fm7PRgX9T{u`smu-${#)bE zi&R0dHbfgyX~4W#m@SaDgd0(di^9p|&y)VDozB)9@Pw)iazsEof)#t?CS*3kgl}Nk zQ!x<3n1PIAV)AoITpoX(zHo0Z|71b!8RFhOvVp9o8~^rz z{+5Ce_jzluAT2^oV0y$5)zD%x@ZUUJHp33S^>ZP(vHrMOFH*KAY^F(UCqb3aQR`f8 zaMRI_w~8X5f0?pG2plgYKbTC1Y8r}@jl+t(KfKe3vlJ?;FHJ(&S7q_ff| zx`~HV1f>K+(Zy_s=dQQP^0EVfiuiTkRwV(rpw)gH7Ei}CDjC}|bmv+w{x{)CSmZ#M z@#-&;EWfrukK9*<1X5k4eZ0T^X*qdr@jmosK3ma6!w)w>$C8SlJp`ouot}|{kH#=8 z%O-sxj~vS~?@vC6Xt~*$X?ZPwnXH}}oKNqd=b6Ma%`@`N$I9lg?-CU>>(<;6fl!vw zW3Z@v%Q9V`oJh6VoY3Ry?}!@+kB95a#EL8z1^~mXQ(B`w+8HjX6Gw3&5cdhu;;y95 z?T1$SMlJc6Xj+qj_!ADH1KLd0)w_PDPXfWSM4cmfvSr^1pq-+txiJa2{0n#N<4cic zWNwqzT54u~>T9m~+rORF6+$i4++bJ4;jviU32`BcnFNkNAwKzf9h;(F#%pfpe{#Nb zlw`2|nZt-ep*aEGmU<6faWo)UAaWrhF(4T^C_u34K&7(tvRU3!XogR}YR)bvmO6&2 zhkJzYDm1|!^KSnQzv0bC?lA9H*f+V<43~tI~#1m`~ z>C34jK`C1^J4?+>Z}<{OQte|XVMpjJ?v}z_kppLfjFz9^=eI_4UwF{*B zCLguz{GJ+uMRsWXhw!~kk+>idC~_MJvm>OxcYK;f;hjh**(;X#GR2j!`qH)_;ViI` zwwKIvc*D$(;s3|e`#vs@qwO?v2-x&JJ&vB-*s?p0Qu=|;QPQ`ZAW(^KOLiD=8Kb&V za|9P9f>o*_pdn4dK9|%i$_;d+SEE8(!j;Ugj_GnXDl8nLW6F$9J)kkAVQ z+mXDP_~Tj-C=+gOYcItwOqIO&5pg~eY(CFRs%S^IY_p=7`dQClm4j;q?Qxji?)YyuPDhpZ78Et&)?)UeR(IFaGCK}H2BXi zef4I1$TidHsr_{?T{lO+;qUj8PLB>haPCeobKEr`vKAxj#~W3MKhFPXSuSd}ey##; zF^ui~ZKm$tccORM3tZOMN1*c1^v#YhLi#Qumt>s&P z9YmE(`NI};gquXH#3Qn%hiz%BQ~iN#w;{h8EZcn{Hbd-p{LX2lVaSD6sE$U!QQ%?= z#Nf%52-OJY|5#s7dG!|Q#UMHzgl&meprps(PySbF3m*M~n*w@q2?dD#;$MuHg8cP9 z(ZK*_Fol@A0Z+!mU(6Q*kD5#FH^wQ%2hJnbQB2u-G)XDr5uZ(oP)u-xrx_|<$ytUb z4cywyVl4#Hq92%{Oz4d+gbmkJfwlFKFSgjfZH_Hq$ckZl9aPQpH5aT%Dt^u#&CBp& zZro-0&$E(@R2`BgqmAc13kYt5Sj-b_ifw;mdPP|JPxOFoY>6>Q;^_(Op2gn#0g8$S zJl*LpS)wcq_lhWcO?pMvos}8A^9E?H3YepvFAYSSu_i*+?pq<^i~;5deAmXzjU~^{ z7ZxF8AvTkGgMH)Z>otYV3W9}bfPVcVY%YvS#(LWEg8Q$DrUARnm6<;x{2JdMN_Q`uj^6P;x4W7(o{D2GC_vy66~QuM za}Iv+VE#sDr4z5b&0hlgon&FPrc)z%%lbPiH2?$F@<@C1<*|=KWke+Y;X6aui*4XR5!=Gf;a_MncGEs%Q3Z+{SvT*uBqpuZfNVG;;n4_0(2Ud=Tdu521zYiYAGX6ZTI6GRf_R zc_UkJc?r@)JY86YvcIX53XK<8w7?B42xcTf3w)3=A-Dw85X4+`Vzo!*h0-$hHlrcV zxkZHBa;KI{S)K$7L&nN6BEn*QbhdQeF>8rm&b70iEV>^{R97iOAoCKGyI!9B)e*^Q z7Juu+%W2fwbjK3+mow3)=q*zmci6u)GC~28LI?6Wr}&*-+}c&MX3-*cAeUJ+OMi(c z$Qp-UP7^#FlmWk8>jXP({}=s{j|^bIjnOcWpuj+SyXlqUpYg8lFb}jm@&=f?&)@-5 zkNvE*iZ(lPw`o$1CRcK7Tt&$VZp`k&@nFLyp$H9_}$7 zK6}x!{c#L%-AnJ&eDfrmY`@Ja!JZ$d+shZS>Fz0eqCH7ddqN)0?I z@;<)lV(1C%`VRdqb=eaGye}pGONx)MIb(+k$0%7boe+>8e=CZ~8A{OkpJQBoNbD~7 za;ch;J;|OoW16aBuFCs+@v+P!elg}^VmwdK@F-z}$QUhh4$xRJl;rX`e}v-OVGJ;| z?GORj>jyY+GGc6a@=8w7fj`L2_NP*aOiRrJ`AI2;s_Ml1)P)d%*iuKaa5POU*;Mhb zvA)67xsZV*uhdd{yxf6<`!q2dO+E{uwDECx7|Dv?3Y z$pPfYkC~S;O#3}I2^(&&lhi%!u@~BVuspqdyN%nG=}Bd?SSp63K@I=I6yFZrXWNm| zXDQ553bD@R3-^_*_^CjW)pZh0vmbBrggEI{x9)tA`{`q^=xA+J#mK}ZUEW{G$*3)p zzs1w2w$PqTJs7Tt*!p`in*a7|f70n2^v+xoNjMOKC;5x_@B{+RNiKpcbB;y)8zneH zOZlJW?$7f!HEiy2Wy4=urZMK>Uvv~fT@Kwp!BH{r2Gqs{n1lYigCuz!j3 zJ>@@BcHdgG*}HhsfxB4Pvd5wpb`8=sXEyr?+xjn4gLiB2dC1*q6#tH|Ju$p!9il;j z5P)1Ez`_N8QuzVEZTVyPjr4z+3L^=|0rt9VmN5eZECZwaQGR8sMWB$0=0>n-(p0WrrKxM3z~AdO!e61I3qA z+C_=Nae=3WhHKudH7N_(ccKSMoT?tD^~^ovdO=(yY$ z@gzd!|GXNpnTLg4n~^VNkC%a!Czy}XjWw^X)}%9$kh%KP=xB!+Dq;CQZte)-cMuak z3niRf)M>)EOE}XJdDAHc3yD=6nFQO6nPyA`h-Af8yaXL0nre_qEr2#8c2(U_#_UIq zZm3O1iaNv36V${Da1+yjRE63BrCdvqd_HA zzG-4WEcF(vG}__SDzqTtJ}4bOaWFkWH+) zdjpW=A)tgJl~7D1BwFZGD&!FahbRzOk`zWku!-}{%dCHO4jQ~)E}P|ZUm^nqVk8H& zznq`u^`19#xHYI#IQ}on;@$K&aLPKVS`dap9jGJB0wxNw8G@5A4Wujj@1#Q4PRp9} zZOa2{h~35}+$Y`?@`m|RI(uz69W3}!Vj)?9L4p`fBR8Dc`9AK~pjv_k*=f_d^@I*4 zozYAXskVZN-9AeqD9aJ8ITw7rUn&53;y1!BKDOJ|Dxb+boxwg^Vg;}8*xufn`wrzy zkDaueG>=`}akIxQ0fPEjD#nF3|qn}9=j=2>>ilE45~GUzjcf76W1Qkcx8MP zghfhshyMzY#+m%`ogN~3q;wio{$Ftnd=e`+{xy3X|6LE%6-$+E!4#(GqQXj|aHzwJ zjR<4ty!w*BJJ?JcIFWWFacVZ4o4XLOL-KE}GYxzw>=u4L+6dis)ua(rtn)2P<41`g zZHfA9&HlZ%Xf3OqRgBx}e|@dKyk0G>sR6&^A&LMv{w!{aKPfV3@Z5yTO(B@JcG`jP z`WE=#4h03KJh?Kw%@7PIh;l@`ri~)8?OV)6-YKUTc-e0xx=7Y}7)3w*|B0R-(s?p~ zAoE2it8r|8S>zoZAe}a*9EbKF)_<|wO{=CidS92I4p{^4IjQT`f34A+V0#`q4hvRQ z3fIUgjApbzzQ_b^mwxyIg6ec4zg3kyNa5zVlCsFEoNkC@0x++;mxLxGlZ*2 z9I|{vF5gR|2-Uoh zhxYk*<@ENmKtvca?yTGJhEjUCk{bgTeMJ;eRO_33=E7h3UR=3P;`=>58;6Opvees8 zbxA1$>u`2trcQ2UM^A6#YyKCV)3=wP-{HA_@;la$vpzp)iOzT_fm|-Tj#_AJNh2X7 z30C;m7qq04WL*T*)O91-y?kNfVW~aEXSW%KYy1CBIczJHf1<9_$s|ek8KgoP%Mah2 z8IW=Yfe#q}p@c^&S(2oX;6ajTFOnb&;ibk<@cnNLQXAUCpRm1%|GVWET@3+QS<%ig zH?vEE@ib}AaXVHhv@%b$EZE=u9zMTMcV?zSuw7J!QpX&okFrF_S45)m;2cCmL>z&Y z3SsCJg(NZLIZ+4ChTqJ?Kn;xr#hmj-g0L<=K9%9_nS^CY+wCp+^dxI5re#}0I*5^A z$VBnn$mFjyv{`|1NB(r{_BV{-FS`Cf{&)Wo?BS#4yW;!3_4vY4l(iiS%YaARU#CaM zTSBI_@KfU_M&=4E<+}+q1DuE}Egn#0jBaevDiJ`#M=F`gNQ`%I}X4pRDBp5B}Kf=a#ro>HM`Ps7wcoyo}{w{*H*i zWn3g_F*Mr}mNCA|w5S{<5t6leEY2&j0x6%Lg}y_CY;km^3|Qmy*ZD>V1mmbG8g)%J z`X(B3UU%Jds=BBN(Y4iP=~}Rfb%I$=(VxGKf!RolLF1<9J+n+Ag)oXIq#383!_4LMj=T9m;<0T?Com3UxKurK#43nM=Nuz~_0Gn!Z1b0Y_3<0GazbJu^cMfUSUJp)^C(ZHqEV&C)Z2mXX zk?xUpyL_DH1z#w4zmkr9Q?m9yY}UzyOFv2yz0T*f&ApedP>JQPP>t-mQi$wg*z*zB z=)4mOcJ{=Ikl*%Na4!i04P?l1)L&U(4sg@GEA^UgEy8T`4NQ#;xgrn zWfA`04)*2mm%E-)H*(^$QrEI%nTo~i5%ak$xuWB;czR6h4Yc(#xYyI4RpaaS9bG*( zA#OO90U{t8?6EF=@_R*!%Tk?S&NwZn-kE#?mMDac)PLs3r1{CY#impxG|SwwJYI*w z*+87W30s&S$7=a@hXjSL^pgdDb2Vn#aIBK-4(CVk>2w*U5be0_Ql!9VbqS`ymXKI& zk?du(`wR{*Qmn038}s+5d}xI7F)^c#8+!a|Z%>30wTWzR@(~dhL~tsXcwKfc&bpf` z#IV`)PY*vY>Jmgxc%{wSU*uAa+RH@gd;UZQL3_=(r_PE43w60B?=xe_}T2h6*8y#}g-(2!YM%lKNOb>|x zKyo5p5x${AyDSwY4-hT_^C%;FOd9QLzw$M6oOvv6yZwzV&TpzuLc9N9y@ar1%dw^P zrt;{+c%UL1QXu=AZmv@`L+W5%2_#E7qm79p`F(@j>w29D_=g7tB2V!s;8%(hAIhNPIM{TCOJ zn86+;6F~+~EPiCC@v}^9^L7{G`%l2nLGr(*q)T7=UX8Sr#F9x8KSYP0*t<9~B5Gft zt0|FqnO28|o%#E&R*aoY5&5;Jk&k`|!2}*y=`ypAt@U+$)Xp9V)-LyPz0Aq>dBUO@ z_8tdN*zpFgh>+Iu%7nws=|^Kigom#m;|sCekSC}-D&0ZDy};16Feh2S^Y|y+qo*o& z!UwWaU!*V_4`xMVt%;NOI6L}0J1!Em0;?ZPxgiY-XqD`Vw}#O}A;?U^k2Jpkm@{Ow zt0X}1ot3I*j(g!1Ep8)hrjMSoVu1H+GwxP zBOS&>y$l|I{>*Hbd3*86(1+2@WtzgdQYcaOxV|qrJrY3v{pMjz2aSJuWAZMS&|pR6 zCvDB>{69^nPS$SeZq0)tE(FVV%=c|~j+n{eE7#h6GR0monIScuFdEjpxMe3JVkL4( zWfnr~%=;Aok9wl$D>oQMi>Fm8L^BhY>;Pst86(=0S~N_tOzpY`A`2=CXY(%wbL|XE zOyVRr^K<%DSWb}_c|mBpTCXXgcY5-a0>4{;aAA9|a-hH_;>ZdWM2RvpI!J&-!UB$@ zWMp9<-?}D-9AT~;pSVkGgnnvmZiLZT{_Qw{ghV=dr-6JhG4^ZPT$?n3u-a3$^f-9v zV}?EZ7B@F=3J~({i?a73Q!%zhSis=q2SXl;%f{-}28m!fcFixhrvkhICo?% z(UEI__}E+R()zeOz9+frbQcdJ_rB)djc;N>3>eSg#Ql7#g9b?5dzPmrMzkPZ4qKp3 z;hpF?8Ei}yLPR*CPCLkZNAL}oO0Wz1-r46Xt?UcuLoh}KS^S{xOAt+k&EAezX^;!x z_AdfLnXz#qDFi+hR!&2<3L*<5k|!Ak#Mg>{(cxq8aPbdbbT!dx!Jctzu>gWC<{4Ay z^i4tLbRn*`2@7(&2P(>8mLP6X5OG>vp#opM!6|>9y>OT@bdbBR`JC98ivqsmzMm8biV^1JObc@+2|}A zQ>_24z8}G9f2OOmxxIgeL${|Lm>h-Qzy)-2ez(BauNQlr1oA$}*i3!<{ggb@0B`Ct zXCqhv3&aD600HB{TjvuQByf+A03Zxfz~fOwp8eo@(Way*z{~ws< z&o|<=fBp5}1h~DN_U1gGu;fjrZ=Ok61*2Kt$7{wW!GDI&p%QELqV&qojr%2jwvavR zA^jB=JMDoT;6u;c8JEk4{!1HTjtM{AXuN7WsM=SShxJr7PS4Y-Fe`dARJ1gEigr=! z3mPOlc|VtH?u_W`^=^N8MpH3fDO87TM)N?+n49k|F{8yjmEyIt4lc~t^^;2yY`l^& zVVdDT#u+Ahul&QyvUQTgfB<|6NMY)(j>RAVLc?2k#~1+td1||yI+~P-Svfls2hh{+ z>JRM&b_KWOGG<`uDFt)8#*awmC2STS|42b=7r({U#iT*~EY#&Wc?Q*iZznUCm@nnw z@}bZDBbKBEv@Npqf_8e3(B!<{&pemJ|EclH3=(Y16$2!&;BR_UJ6>C23MWu zY7*)I{o#FaK(=DqA8hgm;V1!6Dh2MviOiUWNW7rAK;(tYi=r3H7R*&I_bL~-6=1H5 z^P-Vj7x;<=Y+o?S7U)wKlNa0;fU?CgQ}u<2w}{3>mN=#_J}e@}1)?Yxc(O~2AXCK) z$h5Csyt|K}24U*Y{WVI8N=i(F&J_%xsQbYnteH_*$(luk5-TYzCO~8uLu4irG6k;( z0EASQ(0yUGF#=-Ca#zPRS%VX;bYlZS2Garc->kiqdN`tecl>csiKfUnFn!lX+X&ym z5;P!L#FHZmWsKjbiScCCL}!5nG`$0)Am~7!W!y>^-pX~={_~oQ-md>n%T;Ht<^1ev zm@Q_;gEexWuusSI^V<)KbB_PUmrm99KvrPBIni;D^l4ScvPnGtQ@Ng!t7yF6_}AKD zFViI-gUQ6<{%yityW2vc;r%zw`K$BPrD`D(1CD9*)fg(e(j1i2n>2#+h*m z58D1vj!RQY%=ngwm8gouI>e3b-)9WRvW}vu(=hZgjCF1;JrdqMt2)RuQwNc3GQvNSr3ABo^@&ILMfrW$=RjR)BiY%g!AWPBTkjy!47Xm3w_)7{IzT`!(x$w)^|rPu-Fn_LXH zrtC2Cs2tLxAu@Hq0P!#*g_8w}qDfb-t2$zyTVz-XYBHDJUD}kdo`Bg{Ztr=H6TGGP#g*lAtLS( zh=+%Aib>0(YKpqDQku<|`7n!Zq}m1m#*mv9v4&A3COCxHnf zYGr(xv<4|gpmO{Z;X**9s;Zz2DI*Wr7G?TxW1}!6nky3wz=c}}q->tLq<&|EuCCur zy95{p;>z}M^KAI(X~BzfS&{v!TghMtD|lgrxdsv#5gln-^K=yoEN4yx@c&g-<;;fRTg5^&z5eY=2&Ia>)2gm^TeQy@853 z4^x|q!k>~p?huSSQ84xy?Fvlr;|YR9%53cs%iO;yPPOyR$Z(Y7^RKNWc0X^>o-YyT zrfYZcg+S4p59FwU$34;#XYl%x(bbaPo==n0=Xq&Zj1lYNo#4D5N6#z8dwKORSxjje zBQk~U5)eY-|9n#Zdx68KK>@yaArvs!j+%*CW*60{L6(^4-!^*YP1I09`7!d)Fc^e7 zy;gN z^zBf29zt$Y_I@n6VIVF6-8=?q?@unwjVLb5+HT8g)(isBQ2C;#QZMm|pF;7FD2f+# z5(iY?@E>#`1^m*7EUg(P&rB29MC!$Rt|G4_6A)n;ht)tg>`L~Ik0>U21!^m?_Z;-d zyKPv&WAAHv`;(p0?fve<<0l(CCu20I`~;EEsnLsvF~mULCu+x$x{1gps*Z^w#4vP7 z)|qP}uagyNkO!Eod@@u?mh>SzX`ygO>grEVZr8ZQGl}aG)H?+z<`Vu+V4)eyNuHn+ zIYzfbbJCN8SWa~$q#~KyGTE1+SM!nr`7U!Y$vxZ_`lN zO(U>uTOYv7qnbfobZU_%1|C_E9X>zI;p|;o#Z`_o(hHA$gD~w23}tzd2%fxmWzBgpyL+bw3Ps$iz$A~_@~SEVM<@`*y(r+ z06mX0E^ZOE{_bvoGJ_8<^Hfo6^jU;hk1y5h-ekP3dQSzzXJvRX4rpZ} zXpRt4gbB@)Y-$J_R=g)2n>}3-`iYPSY+q7kSqsk!*>XF-bhRURy(0u3gcblIat5E# z#;*F+8A!&kiKUIPhe8}6(QAD1d_?eC0Z-w7t*d@;$AOCztk?#H)f?{up(;Cqb+ z{b~kGsm=#IOZPvQCd71<&9-;;$EOH~KKKQlahL-U(GWO$YucF*xg$E|qs8czVAR1l zDF!I5gYXm>4soLY8|&y2@5^-N1K+WqOhKFPpZ8FpG|UWPEZk)ykY)TsZ!I~8`9RJR zsgzfb1v!!OK@1a~<}3A2pUG}eh8UpeHf!7V92pb3F~%x%hISx0sH;~)^)p3`KZOcm znJ5U=A(83CvO^;f$S*z<+@JuZ`$;Z%;R67PW7tYwM*r1dEaya@RTCd1x%pq(U20Jk zLk4Ab=I1xXj`~)Ac!&W9LIN~oruK=j5IQ6UF-XNeN@}*!WJoX)82bE|$gjTbCU}Ma zHXUxqz4rd3jJ|4KtY1&-^)S}AWCxYZRU-XpQ<#S#Yls&elhEP3W$`NTh$O>pJjqL; zU`D4?Mzq1BnU55Mb{Y1>LCWc*@Q~9@0|6Ol4wUGy_~Hu29w88PawJlh9Ur*mKJwWx z6lpJucbQF-%p>qFSVLw2gOCOazxVH?0?b_KKX@CUfa}8Nr_kF|zU^|b;%@ZGZ7*Tj z3w26QW}lWVK~Y#A_cH^(>d}Q0Jva4W+cgeGEnc zLG5^8)5q+vR8U{hD#Sm_`9G4DzE>)QPV?xi+$jaU*4(VWazmjpoBTxw`~IIh$NWDs z%(h`~&XVk8@oAOE$;rhPe0!u*HfW2r=D#FWZD5RgSEvaEdUVar!lP`+lW(OT-y*D< zn*8>ayFF{uya(k==BAFCoKwYsLZOoam6>FO92lO6!VNyeyHN-c*Orj|xEQPjDy6>d zf*Hg~9nV#Jdg&9&uycyD^IXiHLDv2Wra3W=L7b{2!&= zMp~ZJw}wMNskb-QrATkTNj)aJS@F$oZMTtW`Awf@gpE%6wL$?oB$Do0S6DN|co zGw0em1NeV(Qt!<5{Iad)M1C?*d=oW%4YB=xB`Re-lznS-OSRnmZfaot&vtQSHc@`b zOVtz{IGb(7sGIea6LLV?FcKO~h;0B|{d#zQhJ6LDOXzznns<1h2(e-)00l8zGU)kI znA6tqSTmIK*EeQt5GiZ}ggBa9q=x#B?QgXDvsW2$u1|L%|95hBSejA1+f&6{zRNzm zDgOdfg%R+^Bn#URqX~M@`xsZX)$ykj-dj9}iS&N=oX6&iIj~-DY_(1?7fq;ZT*8~Vj9_EJEQYytU0D%@6!2p0jNKBBxBn&{3kjn-EU`QYYpcs&f zh9Y4D6bS$KX-+tUtu0gXGf|P(QAdZ`!X^yG+&z!6pTP=2SwWtE*`)TGr@%S@|qtj zG>jRhtt9^a;Zt>ax3uuK2?vE=7k{M3#xm^D-_}BCcO1!|c>hQGQ=r#FwGUG+!2m@- zy1$=)-y70M>6-iF43@3q`pHZ7;uul2gfF6D582;W?b!Em))8}amvFkUz*-c(*+^1t zTAL;DVG0^gqcT((rc5y1Mpu7(2=`vjI z^~D8Xcj_4Kr^~Tb+%F?TGs##OMtGZk%>S~Mt&nocgV`(wD{G5-kz&hT|2%G$q?>ZO zad+AIbQ9?Y$|nr_AK7aM?(raIt@>Vl6c_Ae+_QS!!&|W1H!wQj`u<eAn-zAA-2^}IOQyQ|uK#8Zk_?)@uzaDP>SCaD08p?#} z=E_allgRUe859DBQK4>D6dTsxifZhjZKgVxY58-xss68p{U5{Ye6N<}b`~r+IgkJg zr$2@CdJzH4^kr|D@*WT4DveB(NoCEo*Ea&Iu)bnQL}R@o$iPJA0!y_-(PJwsRZW$< z3D`h!=Lj(ZOd!S)1xZ8!Xe4vdiftCMqaUK)nJrcnY3}!VdD6$O(xUX9&XM*WkfjIW)s5eBW-=z^~Mw>v(?=1%wg~o86Dvut|$j zfj~+@7{MSE_)ls_$!G}-cp#?K_AZNXcsv{atK@Ao`ARmMHyYa=c@0L$Wb1d@%Q0mj z#QF2bHBe;@+hvrrJ%1Ld|Mb^LSERn%xTp2xgE!`(P;RecPt zLNF|2j?D+UDfRZ{JX^GHGIr$V<&2dz-hMRlaC#=OTTn;a_sQRCNEfFJBtz!m@rEMP%lE<-f-C zt=qF=z;fBhl;;S8Cb#~U^|RT{57KbiSyTx@D6g7AMCf9M;t<~zXExSjcjG*!=8yM+ zWW|TtkK;>o;-})^F?n-4VG6I||8`mqQg_dyF?4pEA1uj@p*UR*1@_yoRO{tZ#*KpC z%Oc+dIls*@Li{+MkF$AY$-gB#YT&tlAM}yqe5rIbODg9jPFK8AOkxT2SYibKyUQGx zTkcnV(bbjH$V=w#&mJ!%^NsjT#PX|}UTxzW=3DO44Z2!8x8JFC#OL0-@wkQ-Eqdkp zF*xslakDy4jr}Mw(LnvUF?-%MY_h-HK1ui4VZKNyH2J4b^L2D7_IMo$Z(ZN@ZTfs& z%DolY8?!7XcQ-U?a&vY>{y6h66Z}5{eG%Ffb3O!qe1Qiia>MGc-g;XL4`)tn4{v$@ z7&=2Q>ET^cdZ>rLaZ*%#UfFf~o`i3Weam^3zoYB+Blu(9?6$?@u;Bq@(b^3Q+Z?vG zbv^bBfX@6xA^10?tHz$ zHyn#Ydxxy>;>#{EohPa$at}M^^mvu1fO#zH3KADxZ_D+ul>B)``1R039b>rlJ@$`P z+mw={G5AJE8_i2jKYomuZ=WH<-0eN2pY=XCvt4p>S+it4a(ef(WrtXJd!`=s1|!_v zzEYM@kyih#*@NC>OF;{N*}oOykc73K_api+1|ao5b&nR@mw{x6y`APe{)>_nqr`2b9veavK$n_B*;sy zu1-J?8$Yr!l@{M>#S7UUdAD1hH2;#iM>+GZhfraJ9&`zLhqm$!=nB6dyh7%OBq@E@ z&E?Zm#Y%(cBr9oqrPmww2N_ebWmHrkw} z=3_+?m_SwJ5Q(CKh=Z|T=s8G3jS}+a2Kg7tC-`_{nMWA{DRfwCy3veaU=Nz)dQcumv zo>+Rouu&C|tH8{8{LMk)eYE{Hu0&b8AybhlL7^o^N-UbhK|x}`B{NJST}($tr@8J# zl?;cwf1S&sh&zs=Go#+x$UJa5q4knkl{gOZjGz*gw)gr(7}O9vHRExoiB1 zxo!#1@;RTzfIZ0a6R{%74N8DOOc}3v^q_v9kL?0t8Sx=rvbytusfWwTL>X0e8+6dP z96tD;PFI1r+b-e6ce)FYn!QU9=?!X$)61EC3yNWX7^p!f59AAnTQ;|q3RK{ zc_?+HP!d2NM2JBh0S&Sr*iLU4nNtg2-$8`qP`Z9IF~mYWm1JaTVjes|qB%rO5_Aa+ zAxD!;)yP2EmhV^HNn^?cFt-pW2p|IH7`#j4BzCUpC|sfRKss|wSMOGpY@d@4hS&WShAbk2uxpbS2acJd8YjLA|e!J|Pc!`Cru1_|!MlZc}JYb&tG z5G3v$Ct}2F#>L5sW#tlQAD6++>%i?jZ@-XY0}+xiLpjm`NMaYo7=)l=N@EgA1_3*I z{sk0cE-iSNk86$E*%ilsXa^t*W7@cx5*HyawS^0algvxRFeEu^@H*75UjFr3t6FZJ zbu!nW1b_~1qsq4*e40Gb?M|8GfK)(TG65i%cBREN%y$qjS{@GsDYy0JbQ$PM3T3>K z{GI+8Cxih1lb!v4NR9y#3lUv#JW|jC98w?=2w%%{U_}&Q;|viit@l3QFM7;vnKFDB zlz`FyQ2r0_8(i_E?^~)0{VwImPID)jVDl2YRuS0AaE+Wbf6kvLAEn({giR22Fx+`B zo5-P=@E?92Y7%#@0AMT_j}JP#KjOd)D6Aw&iqS+NVE3e8$>%lov&q5~Lu`ID_p@Cq zI^hTzxt16!>RF&b?wAn{MDLHiqdGIy(AQz^?b`eiphnzu&(gl0^=3&>7vM8Pj?M!XHcC?EO9k=!I>$2RMxb57_-y5JN5JHJnf{ zpp6#*aME1ENbj011kj)`OrpR-4txwEWEEe?Onog^)2WfTii1&Vgi-&^{}@hxg73g< zlKH&eAUs*{78v=O>;`=-ZwB>n9>Qtf*$ZRg^Y)pYfGk@{)2zVNw z`+u9|_&qD$Rk+ZIJZ}!~t!Gs}s;Syj`Qo!S+9@Bl>!m*giOo|KK$;7IXvnXC!?%M~ zrW_C~|C8OwaR}2oH{`BVd6&f?U$x4CaP&L9Qu>oo)wpZT-`SGs--y77l!0~Z%6+sY z&)l84ZhrA%950z36&I?zCMpPtF+&VkKKlkXr;HCtMJ5GQ<9ZjvB>;ZHt`I|H5i3iu zLW9HqzCIe$QrRxEp%#i`W4r@L;{W&dZb5k6V;VMsqo}WdgBZcLDB0G>W3c?(NBqq8 zR9u%bSQ%L}+gFXdP{QOLZM&G$lFA^G50w(`Dr5ff185GrWZ@^ZXc(4L;C0tl?&C=P z#wkJi`hMts8gjBA-E|nO2!J>2e^c{ppmmF08lsbG~ z5PcSq;L4jcp4wQEaO4AxL%;_!VHcK+01-s%Gn|#m;sm#3pG4kT)UPw1r4o+DzTnmA1(33@w$3j~>DD5oeW$}z;S5G!IRfB=XiigIL7NAy!_ zJ9B=xe?+}xP)Jqz&$bhJ1Md5kyDV4KkMui@u5pI6Yous`|m=XYkd3U`PSJLB4MSNJcBvLZwT=*mtEr6^!Xxp&?hn_}sUycOKL zxfo=;<8sOKzP-g{JP#5UzSe>8`qOhWGsoI*)SYS@;gj|kO!At8IRRuNv5li3VMHM=?6n;rbqj%Xd6jw(Q+-bjack-F|9A#=hTVCjCHL= zWTxAVkf_>Csi9{D^fSqC*~NQ3r&00Uas0X4KIUG+fe3lr4o|l2293P=OfM0K&Fsj% zX}7jw`0tmNu$16pF8{td>BA$EY_qe|{63YV_GjR~<*Z#`w zH<%m;r71fc!U_Q#9+0s_p0z{@;gg3&n6m3%q?&n2fJKZDA6b`dpe75y3$@|&V&b=W z-ks^tUG61fV1Q7tZcGuB>k;#u*Lwn!oTZZ_Do=RmSFdoyI4XZ_9N!3zb|_}zQVc9k zhdU^L9N?AcfZR|xgSqKr2L|96@zB>P4c``(Gj$6qHXL6@SuTCuC}V zymqb_@1v)r8wZ=4BY^zee~k55+sOOxFEocW7KD=GD*_lRPrXW3itJ- zV-5Y>oF5jAIaoOvM0>{wu9~R@t(RU2{t;mfg{M@ihf`9P4H{UJ1JTvYWn&BzyMHsO zlJPU{T`vWE{bnV_<~AEKp~`zK7z{_j=#(ftx9!6NdUJuNM-nnQ+Zvt*URW}_yx(b- zqg(mS#Kqx!cHepOXs-M)zT#(~_npw1PA)zfmc~}7$u@>-I||G_mGHudXZA)e81wZ> zPiJx1-)HfB52ER7T|Kb$ysw4MZOa6}e91RI59e_v5o!}w!v`}2JothVjOyl5FI^C| zl%u+72~csING7Hn9p}O2Z#+px%okXIKo=wh$3QKs3A~lf0YrB23C_+_MF(|kk1i;r6e;tKdr9Z0W-`gubPPA7{0 zD>V~1Ggdxh$B@#q7oyBxv{y@Jvve9?*IKGV*!mbzT`4wmZL%(Xzpan{i;02jJVy5o ztxod5(Qi+B6E^1tY| zbpwqR0#$%$U`9(*ioXx)Q-9AAWR&>qA0sK?+Tb|uF}}uY=Vb3hA?9*qoyOsAaIwx} zu-IVA8H!NL_m8UcuBVMXP{!7H1hG=MVbJ!okuzthTSE@EesGFm0X*cNAFm2Ui_`PKKD4K>B2kT&eSl>M$ z)%09vO%frmp!^`#XIee`erKHJ{Vc%~6f9ZT^US>0s9&C;la$}SiNgC@9}E9@I6gm( zSFZSEa=NBh%p5E^Ea}l3DG$OezR8AjQIJ*bru1#`zdkV=mMb?5=9*c}q0d{$^gDSQ zj}|Yr7{aH{{5|8@pZ4?r^Y-m@{Y%HQk?hMd57}R|q4;ekUcjT-=M@U2XMe&_(G%Vu zH_RVjvYOssH$&lV60qp7Q{a%-WiQo{zH(|&L$NMA2N&yl`^?VsS%ps@UQm)Dw|UJb z+Ub*R?4}ELFfT6qY_H4Yp4D5_rH7A_n4M2&y~8)UjUQUu(uivn;mKOMum580F#h`5 zroYdJ5M0>#oVhuNC#i75-Z>BKISW*X6<;hKm5!NYvv(9lpSHHs>va}eZ?|XcUh1#= z9tSepYbmqH{`+|smA~wU?jC1eY^kpH8Ox++ldEMSvg=(Y;s?#V;bSm7CLGl6{Prbc zD3CrP#VkyZUlqP7fjFJ+bI2`0{&9;FKFZGAkIt{EP1lhN3(!SO<9()D;clLO_ox2y zY*b;JbuYBG@~}QX%A$HgY^L094Z9Xaf5+kzERMjc%6D1NK}`gz zV*7A7%3wxk8-mL$bU#lh`PP+)#msuj?|)q+LaIeQpD1HB8eQy;mjUl}k!ur^u3#Hn zw_z@pbre2vq4d0L>604V)b!VO>Wn)7KTxJhWSFs;80g!C^;#N}C83dNhRU-=v-03s z9v<%hcyCEKV(20`EezipIV?;uLjK5r0lySHq1Ff>$V(XzHPSoW(_yRV8qde_y+6Qw z#aBeCF;3t8Xr2<9m3N>p#bYFz!AQbNLaK);S?;Km>ZZ3ctI1#KWCx)pK*J&8mqt|2 ze>A%gWk%fo(UK&7&`=Tyqt0o6uWh^FV;c?MJAcPjyYRSnxlTiaM`LF%k&yg+JjDOB z#0`n`nSK2UckaK1e5}%uBK|faMKqgp<-pGL*!>Tmd9D3*eWt*(VWJQV#IdQ67|Wha z6i=W#Tjw)mWF|1WKWk%kZGVdf;X}G=V+eq@Hrv-YXKRgS(_U^o);@0UuiJk={@|BO zkYn>&c+6)z5ZLh9_+1nOfSn*Ji%cTOpc+IWq8$n6E)bLa6f zCRitY+*EX}@L&b(8JMFQPDqVFxRemic{T-MeSMCL z0 zV|VLch8I`lYMj(#8s4yoa9VLRCT3(yLXmRww--#Bn|Uc52d;Yr z^YziQy%n_0jw!&}TIB~JN)^`t7){8A-!^t25)3`Y!pT+2MkvsPkg`g%cm{HXBB=DN z=xI0*O#wU)IiLsamey}P(J+4OKABGWC&pgT;`xPpJM566ZR^eifJZN!cuNJ~6`)39 zYsPrcf)O1s5fQbI-RS#m$ARl_2lHD&9j*d%BlOtdL5LA7@8M^XccbqvWT#A#=je;1C56_uGl{Y{(S=ov&FzYk^NWzG@fa4__uubgQNzC!<@ zKd(uF;4Ytcb+6*@`M>+%xlniRb`&g|`QFZ2-?#EP`|%xEoI3KUT(`#bYg*S~HS>%u z{eEv_ORtUcp?o@q$W~mmzxp)b7(r{ZCNN%OWu9#B75u8dinIFlc^~s6=C9WM4b9Pm zy}z+PKlIhVN_opN_TO)yZ?QKuo^(cI`J7`Wc-DHKVmGG4xjT;O7SqWs zQ|zt#!qB6zr9(oqflx0v?r~=$dxe$6??2-q>)hPjj1+TyQvI{UlF0dG@h;xIDY$p` zJN&W3SRj@P-sElA`vWkRXOY03-1C8pjuICk_u76DUK35<8(}2;;2*GpxZLKJrD^{9 zY=zay!-Ga!5vO0JfHy;aNT6eDureKre3@K)myZI}Tf~BA8wqdsa*UwfeXp0?d~hI# z<%Zez+MG02O>~wAt!*S@8^%^(a;rz4GhXHypSNM~Ay7kpFKjc$6+0@z)d8SmMtzVdruw~{t_OGc0Pa2VTn*ZCXspem(}d;BB*+e zvL%V-%*}&`0mjm?nP`a`lA$y{S%cLA1mymD98`AMRxBiy*CmSiiKX;hlvEXBj260L za#E+oo7Utgj8aXK0_dTLh)9(Zk|olC8>36HB!2bcZo}Sf;~7?A`xnz)1Qsp|rpTvG zHzD#n8jh2%~Vm9q!;8sMF9a37qLL- zv9UKRpYW;D@S(bjwLlPMA;>m9rJgFh|D&xdmEJ>;l8#r6$Bk9YFln_HGZOcrm01H%M%2|00Z<6&@!yxKWQ?ZC} zL|ip+PiiF(4db^WKuv#;u#geQFx8?0ZGXElWf!}9c*|vKLl`~0ZFgLad3G6=voL(h z{LT(*_XN?&`Bk*pIHFlx20h3vS~ew(`B;Et0Lj6V7mLGYF#0?zpW1W`q8oK1ugnBO zDJWp@jJrjV2P~oN@XVVns2Js*2oKK6NbFr068(h0=!+9G?dbdZEZ$dTT9n8#TjVjM zwXQ%zM!NhJu#-UAH*BFZaM3bQhQY%iwGdeAb~;*AFe-#OgyOv6GuP=Vc}J_R*+s%Z zfdH)S1qQNfHbj7kktHnbD1UEn*uORO*3D=0xeVXGw~ycIGSGJHC}1?d+Fv-|K|(bV zjh9+D1O!A!86R$$!bG2G&g)Wr56I}QmrW1o&QkOwGj^ZG`;C2y1T6@)z4~_{F&(dE zwS{N*v={pR{qq_cY^GT=yZ;j_`GiVAcpDbD5OSQ3hqxrVoN%#xr=XUu@%Du7vll5j zmf0JYuqVu==>ixGyym}m-sQ^THbGExDGG7<30K}nq`D&*i-QTF^nzbVyNcjBF1V4} z%Q3RmH}d^Ed74fj%Uu~bvcub)J^74%9=#K#BlMO2i2F_VJRYS-WJI%~3ulOJccNR& zca5quaS3Q{AGsn{v8f;)w*ZET)RD#6qk@teE;JiODI5ti0jq8N%*Zy%hzFn{=L!#n z1`9M|+0%?E0=*=MXe2Fcc0?RS(udWk@U>xzaNs~b=~jq>00GR12DwJA!QQP%*KY2D zMKYC$6b7zf;GvmQpjJa5mONTXuM7PthC~sb7FE%{G?zkq90*_A0~P`V&^3h0&FePR zg8j5>Ebson8}GbmiztWh*vtLX`NxTdn}x|JE#J2oo5Q3MV+%W;zy&7?4JqDnFW&=mu0tNaTXk^-|@LATpdMsSpd^`Uzz; z-l~#5t@kC6&T*gQntWPZo`m<;ok+-b!S@JUfOWpsCrxu-c1*J?&SN&aIQgX7{`B$<^a}y5cs*C)&8BkzQV+qCXlW6@nk^kqa6O?jcq_C_C$El`0O#&yOHEIwr@_%zKgGxTPo+mV$Bnfo zuqa82ps+3Bf0O(+GASjz;6g#(CfuRC_qH9l1-dhXI;u1nwxrW(Pk_*rBOlgwj}l49yi#(BQp2a2hlHmPjrm~ zoef%{J|$YoYI?ERU6f=L?Aj8!#(}>3rKIQYara71Vju<>oe@HuP)i<~MkZ*B0>K(m zCLd*Kw_u5?F4#SRfF2NO4@Y$d1AEpLgvEgcDi$Yn#Fm3`a?U}q89d_PKegA} zFZ}TSwp^D02xscsIBjbT!^8Aj(JlZ8Acf!=1t)*lQ9euvz%9wEUSsro0Du4l-ArgS za=N5X95T$$XjEnR7e%$g6AwwG`8u=}W2s=r_qF5SjN(L(A_`b+bPuRHpo~ zJljeD0uq6Ni)z7K>nWGhI|Bj;$mctZ+@i-CC3}u3!WoM%+f%iH0IlnlVXfIjO{9pW zAxSt-A>$~_B(`i2Z0j=jTvx3LcXu1lV&A2y^U{3080exXSrv0nVWE*(brc3aSNg1m z1X=oEh1Gy7>9&Cz@=AnfDZQ+=CU_7qf*fjCsMUWtw9f(y2A{e)STOk?QO#B=(Ucrk zId)RAY{9+}`v)?Z5U5%ZU#@rY-NcFXc67ehh#T2QmEY9Zevmc8 z{P2uU>q{UN%OdLwJ^LN%YBs+d0kpvbZ3LZ0rLe<(QIvHPD#O8aiZLyc?T$W@)=|TV zufbl7rt)dAB!5^RI}0eYuco`}68ky*jMYRMoDKz(Z`+eu0#;oVyjf^#UAk#i;jFO3 zgZX9Ejk8yn=0gu1R;d|D#ji~kf3#f;@0E@$ ze2Qg~`pI>UzDP2uWYWBRNdEHSq1F+7Bl z`0<6SR|tW9``mp=gHkP|{5)-&G(vhkkzwhLjN&2?F<_ZMM+Q${xWnqf95(rKDT&yY zDpU9HuE*rF#C~h}(|<41oLYkVl+v3TYhuK;_(~r~o2@*)7e-VxX@LeXf$K)5G&or=up9^wwT3QhlZOeEo)Ze*)&pC*D_j z@=@jj@K<$H%b_xIU^|Sg#rMWUUgy4u_&EQjJ>zw@i_6*~>E4UP!D@@a*R5{O7;hb1 z#dOn()prF5@2A<^8XHF}`A|G_j3w;VqbGy2rFJ-Q?$CdhCzusCxNS zZGL@^`4ZA$#=omQ`{lezIj89J^>U7aw=om;yx~9~dS3scs4*8*sVpE@*#E2Tsyn=b zd1!W&3_g3hR-cNJ4CsaDPMnv_%Cb{I=h@?iOY8l0`L)>p z%iMk=vHjj!Jga@cmINyL<~F(8Z>6NHcq z8HqqxK!O!d^ogLK=_Ons)j^ALsgJLKnUH_T$l#d5whUe^iZm5mCel()QV5K%Z6Z*M z^I`>4BMDduDS^5V*yij+oFp-_O-HS)(LlbSLC%S%v*4@A2jIu~)5f%w!I24ZOJS3~ z(8D{y{x^tJ_}}#!g~!k8w6#Wmp_{PLGptA{@6Tt4=gV|BNycS@BgpMWWF#xtwZsxW zS@x-fe6M~V^ptr0y^^uTO`LbGh+uj@`)Laj!;-_*feYAz`gN!cD_i}Rdch(9l^{rs zQ^OfDq6V_qyNZ+Kr#TD65X@J(eV1+5xF$X2y{}|#cTz!jRu%k^A?~-q0QJNoduSkn z*Lvw6E!4+_SJ;0=l=^)wTxR!L{zGgwlT1O)*R_J}}> zKrdHt-}<#&O&hX;5)%8A7scaHKrt5sN0EjEcWy5u4U$bdFjR4-H?*8Ef(g|SiKE?K zxs`pW+1-XRdsgrWF8EI{sUp9AZs&Is6Fr8HQm!OJBruaFw3?vt`PQOPR$kT$zG+w$ z&Cb(U8_J3`UrNWoWwy%_z^#VTMIa@*5DUW~^On%w_pVIF=J?bS$jh2eD1b>>m0;y$ zG&smo-0}soMtHCr(a8C9#Pvk8FKGcL+6-Zk#Kwc{L=pkUcQqLn$W)q+0tSd;MvDk( zB_@$QS|_bdu0Nj1q@b#qNkD)$!16V}r~Yu-df?V%yVa3^C7agx6a~M)`HOvt$=(+} zJb~?S>$8I=hfFC5e^5ZCAFItH&0&GWKZcHO(oLmQn51fhlZR1xRIX9~`_xSQ{Xy?e zxX!E8I3nWIg&`;*=Wo;1EBKw0s4({cE+102bPhspS8qxqmIwSJ zsKCJ8qmb3Eiz3v*KeQdfBGCX5lK^ja55lwmacf390Q_q3=ebK>aro$b_G6_)fyVa1 zCOrB7x!QBKR|->j?+eR}P}#Cy@0k*WKl_tQ6^C~h;DSG^Z8F0c!)Ml0>*5$}BQ6>g? zMeY9eelsYwB>2=XU@O-m<-e_{X+Gcw-HohQaJbkW78#cX7kBVC#Z7)u; z<<~S;{YFOTzaf~7G}B$yAop+j`zd{05utMGDw=mmPNPu^&eBH*BRau6>z^lC%W<`2 z5T&q1=y8r&-Zraqq&N$lH_Y)XkFw!Tn;o9h5jiuO#eLG5&Q1rdpy1BOMcTWO`Ihqc z$#W=Q=K#SYZ8xlrk5B4P3N7zBt`tIH8X8Q}LGp00z*Smrc^FP3O)4vRDkc}S_+h&W zAh5K)5F_!@CBpD;{4Y-!jYe&U+pjTbUQu;p0y) zekIqtU-lby+qzmeh3Z_th>dLII|x4U0MIb|vw3@BcZbdppp94bx6xkz7^MS}FNWYe z!UyvPrg%C`_v-m0qf|29yre?cI>`l8lSU>DH+0DP-9kwVkAK@?Bk3aB^`^zkQz?SI zsml=9=zH2mHt2);1@x^Ekk!)ppO)$yVGXNcmG5Sw@09lyZhnuW2@w1v!R`8g5#Gst z>Dmv&d)8wUl1I^H9aFHsh@lVF(sy}1eK2qEr126ZH;Lb_td}eS-h@xVp13#%>84u` zXZ4n^yqRYSF$Vct2Ih}ERuG%h?e5cCW@&N9=@cgOM4%A6x7TK&vq{$930DbC#o8f@ zXEZq%`tsy5j_4;?#dVr){w$Q9iBO^58uRS7FkKz8@`kq=p!0!;qI8-wreP<@Q8>ed z_>rL@JVAPM)rzqM=Av$Trx=(Cicy# zm|h9}3|J@*3JMMykC5H0j#oCO1Kh}|J5(%F-jVkoAKh^d@3f8Woy$lX=cZY6qngGS&;LV2 zkPm>EBf+01C!h=72}uLQEHN6jJqloW#OI1Wca8e)k6Fm`V#aw4D<#n>zwv|_!*_?6 zJdpKR&^Gh_!+~qE{RO002}70>K+Tq`D#5t_*Sx*s1-65;YiR(3Spg)e7oI9~Dk1=g zVnDM(*cy1F9j|sU4M7F{N_YjzB(0T@Ago|x3`?CDBe)o*GLeEuSTPDi1wrPB5P@+C zm6a0`EEp+_NMjI`41t1yf=Gdb7=cV+l>-on7?g<+5HJlPf+jH`j0CP9WPue7E(`*p zh)S`6NW>MBAVU})cw!PNDBry;SIAbI*&=?@NF$gIb1p^Y0z>vho0mB(F zl>-4!pzgC2%c;!gM&P1h8D(OC?FAxGaO(Sh74lH7_N+@V8$a{eav|m7_YM7 zt&B*4g&O-;2{LhF=GphOd8 z#DctJq5|@)BNPlB(sE-i)$rxf2bKT&{9YhDPRNidOkA6rD#8IA{HJ^D_i@_JdV9eV z%W(mGYUOUx`uVZ55l~06`d^Ck{=e35`I2VJ!yIhd!)Z2EM?!uN(V0nuvi^M(mAuhH4T%Tz00fPO@c#?H?c9mxWeLhkU8?1ZI4G?wBD5j0sBzb?LR%tEw@RUr%*^SH=;4?&=%SGYoodc$V+siD)2!@oV2NK( z?HwYwaQ)vEK^~s~ybSG#ea0_0KcHr1E)K8%)6RR}=1JDzq~LsA#maYK|6WHZgVTWX zyY;b&g-&VDn&8JtEVc8qCpiGdKXw5D?o`pg=SPEX#>22gHHdDWR<6UB-a*xYC)ygt zEwYM$DUko??EKc!sef(<`qGH}{ab%?W8O;I!VxeLor0O<&qyhYGA^T>VOr1UP3Qn<9@JJ?SOBE_qtnMc5say ze02vP{0&aqJsu9FI=E4zb#Kpg+_-<(9PZoI@kF;|nd>=KK@kxQg|>@_tzWp&EZrSa z&=JxXf(EIFgiC0HA1gg(q!Z>qAj^z#o3FI&?b=9Uyw>jv`26#E;qw0r^nPM{;mDe^ z|6-4%s;qC9$dj=xctR?uh?Znw*0qk1npvSG#AD4MmKy!~PshgyE+8a)aPq*U2fi-G z-pzT@DBkU4+5|oVf&wxT`|c+#(wja{+VT_&)a-===W>RQv=|6ouEeE+!TnB^7rr3@ z2`D#K(h9nUg;gX{Mi~bp2O%>Tmo>&?h@65XB$6JTU~*YE6DOYhb}S7mM}6hyOfz_^ z5Qt5!ah^ziwhAF6qsSoC6_IcP7F0c0v-AczP|f2$seeh^WSNLIMBqq&V*RMtPAUx6 zgME;SMZx`<1lcsBZcnytNM_&whSf=-1jI*UmmX_q{;H~? zvNkr034eDRs+7e;e+}dt{9V`ne0V14b?>o(1|O-e?)CG>or9ya$b-lf+v#VOWj}l8+ zsv5~_S(Wf?)Y90?;Z+wczAhcOFN393aJ4$ypQjg2z|0#eY$4t6KUQM-%l`cD*_?g1 zrG=c-J0Dm2Pp7AM)CQAbJ0|6b(Mcksn2{)~Spdk_nK~Z*uytzQSIzJ4zcHo%2#5dw_AeYI5dZdsD(S{iLWeY4` zpO)Ddi6b0baE1>fAkMo3ol?WYtaia9nFD!1UGX$3FqzQK^&+0zf(RgOxafghWai*X z?H={UEOh#~m#3wVXhDmjPa`IKTIKBhjF4tO4gn&TAcKP?v{v%Ag*qs<1hz31l_i;7 zD2zbq=+no&vQaoX;aPPVyAhC&mUeXPg8NH)p+?DiroBk-8v8nVAb9CzrN(F%5w z404;{A`2u0xTsnl^2UjSVUVwiVG#|*p3ps|?&VJ-796l+=^4u=pbNvx-j;f?LGXq~ zMb-s3=!cBNlKnZyvbMI*o#$$sz)12K|8hChrFbBKAVCBjUYbYX+Qk3mnT{P8NvM}S zb^RZxWRdh%YTwbm#5Q}Hl;`JPAr(%9!^!MhFX|k6Z;m^QTIL;8LPyF^ zYeS_mszlgPe2bWab2T2L7=x(B|0fWylAcmwX*5}@1~x%(#6u>*^jG0PXE=4)Xf368 zZWM;5L2TZYX6pg~4HfDGcgpJ&JGF2Q;cXVvd+ubFhjz~#|MQMe9RH)P1Qy^{JEp`x z(xhkkOkzLy?NJ*?($f7mIxfE=|3&ftt8I&Ocd1>SwLLWa#(1Kw-El5QH`{)Kum%Vi zF#{Nc!H5`!0%H({CMGd37=ek2CLxK869x&4R)Al;AUUBhTJbRniHZR+2!I!=NcDa^>TMkZ#Dg<2_3@>M5sF z-30wNB=RWsa@z+w4){iRz8}FFz!e?+>vv9eN}c%HRp*9MQi zrP{s4-2tUl?o(|+rpNfG>8CDCa*|aXMH5dgI{`ynzk=Pn`*)CJSbBE?I~f2h;GtoK^szTMG67%)JA#6E3|np6;F2S zfGdX%OSvDNW)DrkmSvsY9$I2meM$Tiq+_*boR7Ce+L9zL&BMiR`+Uyt(+;Yt!pE96 zI!gxr7Y}b3*HttG*u1hChH@Uc4en2`luYi@yo^Zi5l&fw;xB7#IBzq)p&hkW#kD6p z*S~w4h`o=a=E!cg?Qma3^USr=MnyvduNP}I>!|{t-LX_IR7<6xaIOIP9ZBSvPxyJkM$sLZFx~yv z88u=PAh*GnGjcwhZO)N+HKq&+2!M(hpb)x++z8}*-82J;1n==XhX5saZ#y_}Lg<7< zXOCg_&%{~j9&7rG=E6dDy|o6w9pLkpb^stc1VeZ*=xOuh4A`J(mp0hRduK2@2mpqV z#K*{elc>A$I!BA-uKwAx`p4PBYx+L6+gZ2raQ3U$cVyu0z_RzuRhia9Q zdLQl5jq8ZS(&Dk`}#6QngtNQuk5j7Xt{M?-gXqQ_=|9r&3wo?4oHGw<%Z!HhE0>SH!)(^5kh*uqj z+3EgtgSfS8>Alm&Gs%z?2Q85xG>z4{%lcEIhp@JSr-C}XXoM0zPAb^ob0P&e9M=m~5 zNocV+v3yBdAI@S{j#J3>}p*Q*x zHz^e3iL{a5r3hHv_i~}D)B5{*jy%Vw?f!GQo#7PU2mx$w(_8L4XdL*D+mk%B0fW!K z*+M5ATZ~eSn$Sk(_f`BX!*sjwGdA7zY{jnd9TJ^B}SLWs(qFGWTL~OrNc?RdkSYX%xZxgi{#LDYX_q z>?G%LR;vEGLq{AAgS+p0M?v94aP{zhbH$CQfO)$q8Do8j|Amdl5FHNmga>3GXNwju zPMWt?iY5giyaJH-^xwVQ3>jI@(rbs3iAuf~5N2l~@GTqCB3c=Qni)h`e(zSnMf|0x z>@ni#Bp>zP)^kzzUILKPAp8nZ`9FNLOXdFX%sDda^45w1NN@Yzj<@hX?FRjCJN0$f za1+83c>^U+njt*Wgl8T}{K^-wfB0|XK@$#m4&_D!*KrD@d=IoeKIO;F-!lU zB}`+-!!z<9p@grI7n*PF^Sgl50WVjqj@<1l2ov;44;-Uby{L_VvKy6aU+yE_>}$%h z0}hH_wOG`%YG3(U+QX84_v{!YH$9aD=s#&=?`Svu2KxWLXdBj7bkz&GD+pZ{as78C zpvR_52SC55lsx|ddSn0W5veWue;>Wu{f3<9Rb^qu`YH$Sq*mR}faW#;h2n29BOi37 zXk(T@<|;x}@wq+ep^|4b;%OfUsIV}wFCV|_Nbo83TK7Jrf66m5S z&$!oeIkgyHci)xiiT^KlANv2Y?%!XBqqxD|ua%UTl)xe&e6!Q1h7bwPz70rch?Ftm z*3`LHe&LCBGTd1TW*lZs71R7%863lB9Vsgn4Q81yp3c8pzx^9^|F}Sc9az_)2n0h> zk~C4(+e==+*(<&1AjA+vZ3(s#0YaSnBe31dl!ay?>O&Gt2C(rBqR9BPGIr`rC->q0 z{v2P4ZzRtk(QK|>q_|v5tZ~1o)x-Ub|0wu%Qwee}d~-y6o;qoO#BB-_b8=V$a3ke7 z=_ZD*ng-f)5{O;}kf@+`S{uQCCkupC3aXv7fmy%yqUuX1zy)S=O6<;JHx$h}bne zee)i_lJ|`4$xgP(-=UcG!ynb{rO#{P4&LN7FVD|Mk^yYTRBXjL!qabzdVf`w&6D-!1&ySHenE&l=k$OQ-#B1 zi@@h3TiruToSY_=v3)3%*+)c0ML(Y;PLAcn{Tr|^{O`t>s^Lh#xp&r3MbLvH5e#Yo zKd6)80#^#*fSmE=D`t(w9zKT96e*EDfur!3^S(}CH3&-x^$(&G17pf1Rh*1$H^YMn zVJgm0HcZfDzo`nKg?B9g<0-%R2q?e+LqNR01k@>v&DuW!#Cr#(Qz~T(>gGw$n#HbD|=P{fsyhPCLtE9 zSzEOqv`cy(KskoPwUx0)15*<#s`j(`K4p2Hhre)bAwz=fhv&M52|Jc35<+)&bW}jb zHpdYb@90ZU>iPcn9Hh2WshD39?MOLoB^kh2s2_2J$Jlp zqmVkbuMik#bVoi|ax1YMmEFoA0zO&@5sB&ZYkVS7sRhAT2c~Fvvi&6qNNY$qtJ=>U zaMw)?DIruQe!zkw-%K?w#u*psWfatO1-^B z^@Wt``D4vHHd&7gbUjSIF{tBk);cvsRjCk;jFo{--3*T7ridQq+yM|6B{(pg>71$! znSV#`J==ccnKqD*|Jp-zbCQT<5EHq7YX9YUh*^HVekE&`N6wI zf`jpr$V7bkI%Vm_K*@eT)}E$kE}bGFCRH_vW(BqtSBb281`EmMlciCpjABQRkw-Za zUbAOiR;6w#2NZC^5)w)}9?D=5&0DjA5}sIuIsBSqyRy21T@yhu3F7OTcaeNifdps& zhN1$Hkc!HLh@=2a$IPwC8AZQa1jj<nk}QCfGvohE!KSeB+g+VsSuy?NW$Y1iJj=?wRh@+?eQ3l(^f86 z;#(q)`rDK5H;2-&_4U}fj@o~qgp0Q2XcJ;(&1l~GTvH3R5{jwrmQ6w&b>;J!ZN7JE zr`}A9ZE+uC7cLSBy2)j~+f6mA`9{esIn0}Vr-hl;W77zs2l-M4M(dIGzaK6mINd;I zGbM8ZmU0ctDaUQQGpm|)zA9>L%QqHE24m6R;rRWm99}nW^F}?ae zx?FEB0{4|X`#qSI@VpjXUNg3QO|tuV2Q0Eyg5%D;-?uzJs#f_b#gMKp_e}uJCL3*6 zk4mqb$nH!xXYOKh5_{a6eJ9~=^ACC2F%I4zepQ|Q+yWZ^9TSu=CsoHz2ZNP#kix0$ ztPL;3kd#Mr(}?SBysPtmqVywnzYsm4wb&e)6hM=NNBx=72~X5;2ZJJ&9ccuvjIxlg* zm3D&#MIce_JkQQ9_44XfZ0LbV*L8s;e)k3VvA9>&>l1o2zt&1=PCOFoB|i>#?}1^d z&U4?~j|z?jILQud$drFE>!e3R*K)L(H&mBiOND${DouU{ZqLDdZJAnz(?<9m90Y{< z8C5EC+slv)Z>zpj2z7}E`-V^7NezBfh-%IrUL1zC-u1jd&fezyK=;jwn#L3j^ZSyo zI&sM(eD^O=lPIAx8bp6MrA_v6U4Pv_f>Xm!nUK<#Y9Sk6{KV`JU_Wio!oc;WX!iNk zCA^Caj%|-68CFL7YBOG$vHk)rVL^|YeY=&sO)G?yBq7!h^*?FQH?TTc1~KOE&Ee|z zhy34=GIsyQE84#8C*^vzC@4UNwme-MEY0P*ago(NdT;O?UN7sYiLPm}-QBVoP z?kz4fy)UuGKQ+tUMU;dfkcbNHG~|HQUqvvMGzxd$Ds~8~H`FE#Ci7Gmi9Nob-f#jU zA>=&(paQyT7kW@YO}p0(Z|52t&UNna^ib4AB!xKAe1x5i$I$C!5dhfwYRmKl1qgTT zS{P+zK)4Z1vC&Lov~eEi$6cbFPD@YSa?QuV7VMG&Kh7x09oV8*WS-aJb3{Wl$HJUU z^xr{?^VLf^Kq3G_g&%31GAJ7CE}KZY1+ezd#`}7_E3T7_HbsCxL-`nc4raT^hHHJI z&C(L`COW%VlIJMonzbmL1O>Z(+sigdFC~QQJ7L z$b?ovf!7oP{>|_RgsT^K6pZqRwI1HlSAh)(hMOQE8UoTO%xSX2yBj&VdShCD5(S%6 z{#~ldt+J!Nao@yWbG2)0=@(-nEx=xh28_kAu|>rqXhVjeYZQ$l^tXu`y08LGupz7d zvqnUx4ca}T?nypDD1;FN=gH;ZNYB){U1flOmjEOm&HOG6NoL|O4n{CkoEvw2UzXj-ctbwR~Yo9<2_Y>>;HW+p@E!35jcmiatp#FChp@YfmU~sw_c_@ zV10xCd@%MXnCUy+IAz9#anR(bY2YA4P{ka?4N zB~9z-iA=z!Jsm*q43-PD-aj_Qu&Q8x?Kln@;`vz_6i9-O&43#W}aesJT;(X0QY4+IDWSVC0s{>X3j^3xu@@mg=~R=+Fq{Fc&-pAd}h& z!XcU1oz9I(J~!v%QgnZIynt}bIX@)b`*h@IVvo0WI7V$`coA7dm8$ZU2nN1G5W&2> z6&PL?%-NBh_en_sa*tM3`M7&kv>v_K{C6?AF=^Zu)V8}~S}e`J^s##U6i{y>i8JE- zy6{(np@ghTP*BXqsdhqt;!M`*kbh@ftGWA>kkZ==zW>WC&cXIxH`VzU>&iJK-^Y{? zLxfMm@4l*)_uko9KYFfZ@j)wE2%}H*&K^{dibqfUz+iAOmM!;emtznt8bnJYR@Bf5 zsBlj(Zc)SpmQv)K7{{*~-H4ib_Vclm@hlj!bIFhmYl~3ZWDA0WPh2K+t?W=#M5ZLE zF!bgqIT#Qof9Pi-31K(u!7LhGZ)+6>RWyJ{BYh?TbFmAYr}asM zzZonvqG~5*jB0Y_o4;yi+W_Lfh{y^f8oL7_dlsS*6;c5zK(J;)AXMaY?x2CpHb?tIL5X3@1NBI34-goFR=6|Jmsr&EuO1_g! zU)m4Bau&aj{)$2qf3MDoTq0sdb#Q1Lp!3K;RTxM9vN?Yc{Y+GSmuLDQbB4Thinqg4 zuXd_Oa^@tkO{zw;&%!PIe1F}m^P+JI>Ed3q5b;joh)6c6@|dxo*Ri%@AF8gt(*y~7 zTZWr8qK5sfGe4hq7 zqz|OEjUyeYXs;J#-8csimwRq^uwLi6+7DIacYZgq|0hf-X7zVlYWiBFT&1qCST2ts z>287m%5jQD^lynh!wTEj#!O8PH2e9vy9w%-@iqExvpG?s{;s-fEqJc8wk}-mqN_@y z>N}M>Si6BDNtJ^MISIf~DPt(*xgH`;xkD?HiaWnf_l6j&3VJ_^hIf9m?}`6e6T9s- zaX{fH${<87JU2)o67Llj-UmukCBln!7x$A^D9};7k72U+Z*{s@Y-V@S=bAPj01d3s zC11%jX|uO~jsTwnF&ekNTio6rX?h0{>mwgT0D)ns>l#R(Q;R0sYSNZNXR&IU4tUBH zxcuBK7nqFR;UotU)VSvv} z!>oT@*XN3Bt-JOSx_ZUCKgNu8?#_%puYhPTqj$;QBm4SS&V6p` zIQ}Njxx4X|Yo*YA!E0erv`R6??%!n`;wxG0llIKezU27I3UXhmpW94tW-D*?^?s4B zI4G(-qz@0)#lXo%{_5A4J(x(ZL9Qn$_Vf2i`WUhU%OV$7vZ`bU((KZQy@!Lsy>D*@ zR!%+dnr}c*R4znW7<;zh=xPj1x;%j`@+^gJJ$&JV%4MmCcy#)*O}-<9jo%OV=@sCQ zAGV{R;vAbU!8{=6fJ#Vb$>zhQCnblul_;%JUoo_M9sSP5D=kU0NuQwN!(nyI*!}GT z^j6cG{K^^SiYc291el-R9zF(=(~BLaRSD)jLFUvDIEciSB)jK$2Yt(|ueqVJM)-eSMNb_&rB!>!yxl>Uo~iL);#hXWCx+o=4AQ^`75hB5WE9ZDG)CfS?Qwh<+Y5 z?56KyZd0090TH^JNlxsW4zqnfk;hCfuJWGtuQTBZ8 z+F;;yOu?WG>06r36GEK^=DVSrcM+X6*WF-)F$W<;{cyPlj63TlY<{!c|96iu(X1?^ zn<2gsaC9-z)6++u&?FwRmrmz1gA;<6LO0V{t#nv08?P-J&M(;gQ#f&kIpmj|vQ(0% zo9>Z2oPiUJ5)70|OL5ZmX>*OPx3B{g8lXl1LDWf{8?hzuNfik*1~&(N(ze6=>6B|) z5=Oy(G?_ZszH~x>aA+1munHtNkemCriafmJf^2VBlR^fsmeA#~Sgp-$-zIaoka*Nu z9cHB7?PFTJO*OTj-o~0N2op-`zDa|JeTxWAE=i?~=mb zh4AL~uVqiy<;F|G$h&Wlhq*fPb7lQJ!PRV;S~VjPTpAFfMait~Hz)L)6+M;um$ZG2 zgQh)gK@o1**e-X-vOv53{9^i1Z>1>a;twOtD5`kv=AO8Kv`sTkVOQ0@0 zoUcX~%I>CCWY+kP%KLw(WRf$^d%beX;#>ET8otp9hv+aC)LXr^6l>YwWG-iAZtGWQ zz;ck7PU4!7K3Ahi_M_w>eJzhNpDwa|Qs%)h3U z)65sLp;LFPcAFXq;<059`HM8%kX|K*U-UGaPnm=44r}Ul@J~errt63p*)ks=r=Nqm z-qvgJm`%UaS9~J6*pr|6whp>1*@cO=Q?ysr(;y@Wb%eVAU`6oFyhC##Og zLKA9pJFT&>Tgumrs8RR6o`jYh?nmfXSytoo!qP(F#=%K_^o~Oy2z-Emf*5fCLnx3d z!G8qXq365~fqM}Xzm4%AZLWq=`tOEcAmp-gL1hVuJ+k*oj&Hh}()6~DLH1iesV)<@ zqr;2hLhhLgUfg_1d$u3DI=#gIX4n5o9xa=ppVTe@#oHd_`l4Yoh)_(CA&^L!B7+nF zG=#(oi)Hv;97s_xf&Q!0O9-UuH75IfkYpNeev}Z)M)0HZJH!DQwCQY%p~u5Sh9!2-zF%XtKJl3dR8%(F;!+dgS|NkG1jYi>g*?Cn|aR5IaEu zEd>mK80a7lJ@Yl_yB-DEd7T?~{dX&N<@yW!y=47lrr5^(Yli%fE+0LX(mg{*5-PhlqFYw5K{3BNiME}Ps=dH^3I zys+W6t!)Pe#JlRv%Kvx_7)*)A&WHYC8%y|nA-OqO^c_g((w+SWWfhc+JYpK0U|^qAi)nbOA6-Q;rq<_@7%kNEE%dRUSTm-3WgXk&YXLu^5X@j8fX0FU}>4PeaY&z%Ip!5EdH*kL8 zFrp#@g7e#y*Ux7{QwZ=GB3)>q>bWNV%iB(c)!y2)>M54Am~rpJ;SmaU0j~za+4asLQ2&A5E10 zGFyA{h$^WjN7M3&_qvxYFCW+_90u^IJ#i19X2x?hpUXq;gH7=8>Lkgd>=S|^rT=9M zfnQ6aj%fKHyted<_UUQA^UB-F?ms5~Pl8&z{O)cZ_BG5SM7fd<-h{jpkp$2R~-Og7(?tj}vgOHF!h)8g=2MuwU zq?n2Va5BW`t8Ceyw5%gDP+F9sP1yO_O(U|G(eXVsuUmhI?`QLTeokjH`)vFp#M|pN zu5?Zurl#9Zv~QM@k~)K;LebSj4yg*`!Bj9ehXqIwivmL#*kDBxKp-g?!zQ}&qM7?j zNcGrTc*XcH9mL@}izu#K#sQKb3$<<1c5#G^5?^a09?@3YgEHsju~gmvP3Y>GqR`qv z(N69DFU1~H_i$Vg1%SF%mE)Ei&Q~{Y$E=AP6egVQZwEz&`Mf+y#iLZjIi*yn?K+*R z02^miz(TRLc}5y`FT_UY$LAlwe+$8k!Y7G_u*f^2l93}7mEXkK{*(Oce!}mSxhqWh z|Ni>f`^@8X)ZX($mfK8`p+6J*Y`ek9f7smFhSCUhj9uC(!+Zi66l5U)!$>~`!Q81x ze6@kLnvKI{rOvx*&Ti2J5J@1gBoJ~@B+{r&tcW6v*Jgj~?9%+?QK9o|kAD>+-I|=4 zTEP9l{{c^sF=gxx1E}#hrzgUJ35Y$eqR9O?B}OUf<$7EG9Q0>l5}*fi!Gj;r9Qp1` z=>J%If0qDyij#kv^UM7s{oW`@zKw-v*O(!)2Afwuz(xVny24iV1&$hc&OxzO!l_6y zf%y=D=KRQL@7Pi{ zcwZ(NeX}1IRo6esl!yBhNB=0EK=Y;9^dpbgJF#K(cFK?M^?kFDsgm?wMJwtahspI} z{6vCUD1tFVMV8hA$dW-D=z^JoWJ_MrWl3+8maehOukCD9Uf6+4J%Rjnz;gT#`)p_D&fik}35HoxRflhkJeG8Q_-6o>Z- zkwla?l+0vA1YZ6~|Byb@`QP+q;zwdJ|H6RvUd{4jaDG zFaMMD?s8~p(NFn^NBxecLPU5LuKqvf@#B;?%(B_yOYL5CqV*S*PNgZMAQ*LQpqWew z6NB&g-JEUujvCo(F;hnn8;A4HVyUcJT9kjkO+p{S8l7Bmn_X9xv`xnQC4@i8{->xE zKc~IiVgt2OzQQfT-pz(YA>$U4tlu>JUN849nRB)3Nn@E&caEhRhRm63)`Y+yq1As! zM6(>!Q*&kx?d3}s$5OBvQq|C`gYBFsxFjRKR-JY{;Q}a0_9Zi+i5%^4^85#L%g>eb z%N>QQ)Z2exEMYdn#Q&@tZZ#pEEBraslcNE@|LMSn()|~o_Dl*`m7hYraZ$+>_y~gh z(i{hQ*&=ai7TADB$0S&Y$bU8m1X|{zNDQWl)B6eQANN-QYD(BU;+T80YvFI?mW?(k;qT1hYSQnMUel-@2Q5^ zlKPT`n}OCpc z3?}&A2%?0nw6;!{TtlJlh)#Sq#mxH0A)2Z@Exv_BQ=1#)$NA{hga3K81817Or9 zKt|!@hlsr@E3lT9)%Zs^!?G+{9=>H8{Da$s90&G7z|As%K3@QV?fj(dMMab`L{UpZkO->9#y5sKGD8uE(oY5dx$op_JQMGMoS7hlAZ~S^=^Q}Q9XI^@H(vjn zvsk9e2g3oP%E-z#s-ZFyKq;Z(_i)&!++e z+SztkoE#!YTwU=CfDFpxAtCunGt&8WtGCE+@3-}hCTSNeyU(esjgk}r+%8!{ckZd;KPw&y3z4$WEJjXWgm^AV)&0|YL zSX#_#kn~HAF3wj|3u=}5ZB9+ z8do^n36X^$tbC;~Lz;c$+R;`^#?3tABpv_+BVjEMG4IK()L)|eel$xFeVdZ}(vXm# zFS^ihsvUw)4EC~-!MghY)%98WNAcDwSBgSj(r7z{$7(+h#?mszyHQVHV8@)%8N4`b z|2Y-W1441XGVbdA&rN6ZK!H;WPf@1_D!M+$r;5IN|4aZHUih!}fL|~Wa^WLCT_2_X zOP#jG<$k;M`9iMK)w%$IfG4vjkJ0}{jPyN*E~gOy-wQ#BYw2}OMP8OH(&C?Enp6Pd zZxh*{&(islZM~l5&Hn2|NKO49>jz$nM)!HTZ9nDWGBs3W>p#W+Jin`3-;C_-u34j9 zoJTd0-$=T+#blQH3`E5O2m<)e#GqlF5aZ%!{H8Zlf6R9HuxLmZwz{JHgUh@&{{%A` zqH9ydX6vR=54>O?w1O1i&f$o=Ggr<3Md`%iuX7F=UJDi#{rq+ zTQ4>*?4>C>JOgx_}#Ye?AFGWdG9aA8rb$t6W{`C)@=VM;{Ru2d9e3~!Ui;Ezc z@;@O4c^tsP0Cj0FRa%S{09RBI;QP<344u$K{@For+_}!r?EeK;U<&jVKV$CmQ#^wX z&py?@msHAP&%-TtbO2GuHSrCfQTve&vf#0H5ix8?iX!$P%%Al;z=RXzRw6;5Sq6xD zUQr+nh`%#L8#HRdSZ`g-KeO*#zV5bJxt2eUUmLE!f@slcehF!ND?g(<=a9-4f<6L0< z1Tigo-{G*U5E?V02Ob;yRQeKB9Cr_5uA>%#XGu6v0UuIS?N?^wrNSqZHIXlk&CV@* z79@+AT2IMlhuZ~+51_arzVQ?{0-*?ar|E;&wY};;-Vco=l8Da)Q68fbiObk(F{K9^ ztWBlipecOm-z!-FH+ntd5&e^ccZ~7jh<$gd>5V*B$O<+pY~r%|bLf4p@<>`c>Yo1qty{EHAP=XHzd*pxhjsiV(oygfKf2 zOPQdU0T@ElSM<_#|3WG^k)*`{5-xh6rV-v_cm7`Q!iP)Z^c4c(_Wa%{fbbweFep5s zMwEGi5eOT?r-MtFihcWtfg6z@#nYY%WNPiw`8 zmh6YXDE+tA$9yCuv!UIKjEi{05|{0}+SjS~(c`N>nZa2PATs4o9?7uZrwk48&p!9|W2I3Do zArS}n_Ltu&omj=bvJ}w1o{@X98HWq4xuR&IT_#HfO-+qVKV_5mnP{-X)G!7{BcYXK zP%1*KcA;M>I<86Wy}``?*_s+EkdhB#4$-v#_?@zc1R!Xi^APc60p(^h(i2#gQk5PA9o+qHdfIs55%Jx=4Ka%L2jjA5W1PCr6S*kYX-{a*83;5Gul;rQN9w zNuuohQj-jMWJe>cL)*mV`EcD3xcydYHFTpRh$|2kh(J5vm;9*SmoeB+mRF1c@K+$P zNzy-Ozn_~FouSc8_~PJ^Eg0H&rDxDWnT$+25q4j!xJVe-l^V0ons7N~k?gBM6a2y|UhWb?Pyymwyj8sQTirxv*#Zm z=IY31F8Y2O0}U1h za-_h5x1o|4z(8K8luj7)M@~aF^ZiCHGig@X7ec=4tl2d69fEBR*(Tc=;(lLNJm~#5 zHlh4#7eTH}@y+U+Fg?-111+sq^8o)p%*?l#&9tO8G0tCz*DSDK9)=NLKIOIK@f6N_ z%;e{;dJRGNcA7sjbH|#zGeSa&3iSYi^JVo)Ngi2c>F^7TLGs7uMK+#9I@df2WBXnd z{uhl7#V;XC4|e|gR6->X^WM9C`oF_ZCKP}>8cVjB(c%Ya)#eJs5I_*bN}tP49Vcfj zBd{Cnj?X1U=Z2>OyhiP^;Aw9QDvqW_UdH=^uA8l)$H;h0Z$O4+qg996)4uz_;E2HM zi4*E^a`C_%=xM#`oy<89V?<3z0HN6!oekw}eebWiz&$grC(-oaxw_7tNtX5RZXt~d zI&H7=jsMwP4av5UA z3be%Bn3@fDn3Ih_2Aj5+1`$voGZYdMhzFC&4o|3p+MH4wE_fxaQ?=kp8P8D04~K9U zL zza_ZaZzH+2b3E0*E^>jknA-+&cRlw#{}~ip7sL zJa}Y2S|x0{?E2HU&RdmspwW)nb7RRi2U5;P`5gf1XF`4Uqk(IML5U0IM3zbVK8Bhj zN^5Zxy_Lz4bNt>s9DY^C$cln{1=5$$^SRgjiB30Z@dd$2y#L3sR7OsKARy>?u24K; ztQQF#{fpL;&aaxUQheMa=Nd|uk1H60V_9d}*>@HsEY$Kp;7jo>tP>gK<4AVL`mMnOyFwvQgYn0OR0Hf)$lLd*!Nwqa5mWJ4GnD$`yDNQji z2C2T?o0-x-za|aZ+``9H=D(sM%_ftW9eNhZlZIoJ6f97V7$m1-fZ=|RmTX{nNY$0y zg0f^01SJX)DR7FW;KHJ^EUMA201QG7VFceR*h=yXtg6AWqX?hGJn$iqco9nR{>T^k z6&DAMCX0A+9?HoA!RYN)7FGBjgEzkk_Gkds!6z#okJR&(v_v||i#QfRX$m6QW(Eco zd9F{Y^U3CO%M>=^gYn`}{G|l$WDO{QOS9{gF~uMuqa0_^v!-f>dWR15TbIx1KD4#{ zPl+!Xau;#`6!@u!$6$mq>O)xDHIAN8`PL)rgGhkREYu*kzn zC}3sZca=BieZmwIzqrohq!HL>R9&XXlud#eOoWYdni!w6$xnllcn|{SL;R|fmoFDG zU6Xf-I+TuKEPNP;-{dE3YeDVE&zHMW%&cnnz5=@wk2HH@v)hn0=#V%g-ROUwdLeyx zs{D4%miR0@sLicpmg4EGgV&b9g?6Ucqp{Y#w;5!y2h{8@YQ^3isO!=5O2_YWBaM^e z;S+6gx>5HJVX9Kr`P}|89}?DgRm0&K+qVsCQ=}mNW_X$*HRs^-u zd3<_K_o)&Ye{T;m?pE`aa37DJj!VD7Mxyn>qZ&?*(weCovjL6~x&1m@hA zI7(0ZhE8N6i3CVG(isIrjF_0kEZPxgGyNyn_ZW_(Zi}2{zYCxg5kYToT`+Mk!fN$l z8UXw^KxYBfo24EuPB9#HTvyUD>^Goel zD_;-~y4eb+aM4Y?O71GQP2B*X#0TirX1K%4gx4K410gIBwjju=!4>Ij1|Ye6h> z0k%mmdVPu8QA0x{n9Yc;CmE5P36cS~i5ghNa@nwu2m*|BHk{s5KEIG=vFmj$_l0KM ziT&rPTqoXaX5aiG>6KxU)`=&}!z}5Y679 z5KKLXuJQ!VJd=J}&LGjpQ7`IQC{|e)4JjZn5iT{J>a;nW=xC6{sE2_dp$ibGf)F~+ zQk31~uAJOSP01#1f!Z>3p>faG9Fw4wIGRT^#17&HXCf4j(j+ScMPOjU_@7dnNL^df z<%n5uR%%ui>E$nWHJn5T`lr@!{86!lPDDM}feGO!sT+C2SBKPjm(R!uq6XaQY9)~~ z5RsxzVh;Usyt3PyCub2aW3UPsmp5Io=Ny2KYt_*Uv*gNL_NCdJvprNV%e96LIWg^@ ztaDEI5E?-t{=tkva(^&?AY6`_5d;X+dFn{DMiqSK;Frdcus7pKRexM)ds<_f2e%Q$ z$M7QN83V-z19q&*Jk$brS;P7bn$?=nfl#20&w}gNwLF8-#KoNt^utok{3O z^YT44uY+zdelHZE=-4nSAGo!=d^ijLaTj5tCi0koA_2DZbU2%hJL{6_a7X3XV6u(0 zyDy3ODOXka8?$*vbJP4J%#wr)IqAaAbW*6IJyQ~DyCk{pNI^+OEH795qD2#;L>D0e zfUxupqc!GSft?Umz<^P6-y)FojYEojg@*%Qr!^GH>BXaUn=xTX7S1q*6$BuN67_e- zgZPAKg)BoMz9kSn_=Rr*f~8g)*)OHq*J~U;5_q1H;K0G=dJXmJyq-MpK!JgDE3f#6QMTV`olN{;SdxCX zvvB?ohsbgJ`;twKr*Q}f~>#jDW*E3hd^ru z8O47z>BXEho91ywUK43}^|#27RlR9&`1k0>L$Zuk+_4bf@swr15w>{!2aJoLroPs- z&rC__qz%?=KZ<+K9(VGS1dc8C{tc$^%lTZ0gar7h{BK=0BS@NqvGq#oA(?&ykF6gLbZAOhSY<%KCLF;y zN7AU+4_f0`V>6f#{0I9x=`cCUEI_xpgzH7{34-|)h}N87 z`h?HL6FNp-SEq@Rjs%E*3$ zD|N0aDIcy-%H!JJ5nL39DK}RMNi8uT3V?+eDEt?X8nQpf(%MOlFf>|aZv;O#eV*jr}!iH zG0jp$HTlKFHTJDPo|)-<=r5FtAB4BKv^?dt zEYeM;3|C|Ly{dC&;>|q*FoU~vC=w29^(?-PRD1C%B%l0zw*E4fq3Ia@)A{lHD;Z>J zURq3v<{F4lEH3uui6evTC-9a7UckV@0vI`qKx#fu^wq)0QG65)qi}@2`|J~NvRDL+ox*ybYfz=-9rxIE2j&_@Ijt7(+T}aXBHj z56K!x*j|gq0p)XE`EmVtmieUHxG*G|C6R*D?I^FcTqYqbZ{H>>Ou z?z_L>U4-kOQ9DO8(2qc5s|{s8{hw&eaqRitMBk5b&6Pt^Ym>-Ji^ zoX8(@t+3lZhpLQ2iQt=4gh7E(WPuUc(^JsCWMqJjZ9(mi&G>EgR{6af7uR(7A2_{2 zuA*c-FOnT4BHttifekRRC{DrfPn`n~nJld8p#*)4{MV!Vbv~8}poqp3uf!(hvnHFD(X4e~TCXPmN*j4^4cZkz|64;S4`8R!VHN!gYn z6cN6c`Q>9F@&dlW+=M1#ROEA>BzRYn|v$4EM$5x{;suT-xOS z48B7rR6z~Z7C!sK^D=hDio*sCsYGWsGNql|#)AW?%5<6jwGX4sTs>6<(}VZ+ZtK9x%qN$vdS7!1AB24JD>6B|Bo%Q zATjh8g8_vA5dlJAghHbS2&NIQl5XPg2yN~?CAbtxaPK;pL35In0`6jL6Qp&(cV55` zFl0bK#4aoA**w z{Fgc)a6waJ>*xv-5l(z{AR>Y4+~L7Io9XV_4gn*ABSPCgCNy#f&v85Wrp_$85EhM( zCcZ_jO-n~m zZ6`uf@&MuC;;7+Wf>D4T(z4)LGE?vj(BooAvyi4UX|hB7k(BGI}_@|@&g%}bYH z@7kdEv0m=~IcMo=W><6tpe8R{*zG`A^dkb3;ewzOY(pFjEwE=2ojG-`4UZ#lY$}-MGL@!IY?J? zv%V7}pO(C{yYwUAKxWanFeV#kf>14{ku$W(1}O$1`wJFAxP*nvY{M$QbN-TK^VDHP z+u{|&3{1Uwn4AXHpIFt%v9T%%HdWsr&{ylm>yL`P&vlS2;l`U|Q7i(x6={5F1e@ngLS;P6Q~! z-=czb-S*& z8*8P{=?DWAg2=(|wIgkpCrB&?i?YhQoo}&W+iW(GDCS9!NM21-x^|DXZ=l|r{N`LV zSh}3&eG}eQWPhlSE9>xb?~5ZHc^Dt&MRBv9PN_Ty&wk7SkVxIh?zwFKyeJ3L{R_UU zY^>6MLr?%-06*F}yE%LW|Fa>R+WFqXwSO(HZU0fvwcgqq`y(S*eF(y^5MI6PWH=o0 zs6{#PQON4%Yj1D@IAUUD`*_t=ixd&uV^|UypF6)gioQ8ehn{#MNp|3ay9G+Q$5E`AB-}t6ay3tc#Cg+xm>> z!;$ch+ZiWO=<`m?qYJC;#(H|TQCD6qt9gjpIe9GiZ)?spPt48&-RuA6a66K4KO#xH zAb8fAFE+C&(aqQ5H*GW@^Ba)b=%n!p-2J~J+GV{jUJ`lXw4DF2t#n=OUC7pN(YpV( z)@-rPmCNHPejXw7tm8CzPmzcxJxZ*H9T0XnzNy+7Wp*3!wR_qNo* zJ?iS&7LD2yUld=l=grCLb(Pj9dncBkxvum-4#JI}J8)gDK#tx-wgYNAHY?%Sq#llj zwcosOkzucilia!K$ar=QB)u**slIx~jGkBMf39=XqUdQDDYV!`rF*I(RV?rO*;u3z z^9lQF4265#Nn%po?lgZ3%)w@4AT&17v z{~@?1FAJH+yS!+wA;)zh{v(HQ;Re->`MlV#&%X=m`c`qhlO-vd$6&<|9@L(mr@&Oi zagmY5{>pi1ybpds9z4yi+BKE?m96A%l;-dDmGd6SVJIDzzcN9)Hq*M(JK9bz?Dnh3vF#Bmn)*bI?Y#^&J?@z#GL15gr)Pd%8>}_wM~0E_`O%5b@osY2+eFkJ%lR^-7QKl76YC%J3vV z#YFh+_z_3gt|4fJVq^R@$VkxcyzNkFdTH+ATTTXboLZoC84XY@A)0SHf7tg98E&); zqR*>ZB}6vZ_lRXOsfQQAYVt7x+RDxi@~IL`S(Mo=5T;?r-jHhi@01hZ5Bq-wHU>Gt zJHT+{)b6BwjFSkJm4pn$rV=|Ic|Z){4K!I4;{p0X2UDRJd~5Q1 z)3^NRH<><_KL0~8buXNvV|98KOD$?3$z7bxr!2`F+skNz>$NG zwl_=B>6D2%yH{NnaJ1QFmtJI1kt2}_>za(r4jsPpjh%l(-GT7$3kmA9+`GmASwN=0 z=AY8{AIN0yBz@YL#lpgZ_T3KR4r+lCGd9HN=l=0d4=1n8#zwRU7R^ zr6kVuoIhXIX?eWU=Drm*!@T~r<;{&I)0N`-?tu{(cS46a)vd^ZhqDBbj12x8(uR&5 zi6s4#0)yvUdTJOa`33k{oVM4)1%Bs4q0XnQNGF8?j)Z#SL9x4+=cUfnUTx&Qzl~2n zbh$&hXw1K)7xM(>odOu1UO2_$i3fzXM7h2Xp$j#CX0+F*M6sly6mH}&&ywBN%SMj3 zKu>omq{Z~Bxgq8itIm9>j-G*mmGP5o#qvK!V4u{V=GBIBsVz=9N`K1#Ds9XMIM&PfX+o-F+z~dU}lXO=7$+Uv0<2Eio$J7f^j?{y1i^K6ybIB6xD~6yNediW_gl zou8bWY5ezDvxILSr@?WPfvU(5JN|^Bq8&M-@;`}w7SgVP1|9a^o^XBA^cKE>6p7Y zGl>S{{p{&SojZUEENm$>jp5wJRXR}pR%{N>ecx!(wl}PyMhbfPGxq8>xW;NwO7YHX#2u>Ut0`o zu;%Ls&!^KYcpza94>CY^t7he`_gp41zn3`OlX^zJ5w@bHxa~TuzCH~8k6687A zuIW&p*-Lj+JRv|tLmJDC%^KnOzQwayDIGmO$jMlyChJMW;sExnz0FFA(PWu;$Fq}_ zZE(nc0gZuop9X4cM^uFoNV~H5Y)%GnjQPQ$Fi!F5m<&sB78HyKe4eICNK2O*=_E|E zf?m`g4sstw0ScCM3KWH_dZaZWfYpe}V5(oMtm)my z^gH5!I7-J)vX&LSmeN>+D*>z-5YBp7bFkGIBs#+YaOCh#VWR(M|I}L{0(iN(&o`h3 z0Gi*djyP&& zJ+sj;pF_e+E!mm#$?8O(EgY6}U3|H7@0#pa!l#Ab@(E2?ZmqIePbmEnHv*%Q#(9SI zI@ZtcxC;JGR~dwriQs)X{^L4kUf5_O&tQGr5YqDr0XmNp7o7}-lTEVzr6+J~VYXdB zF2<{uqm`3H)UlAqN|GBaaRNE*Po6%RM?%Ot)u{m`Hg<*?GE}F4FKBOuz@|YnGT+@3 zG3XUn$0kf}H~LL%nj{v0AV3_8 zct?t0%tJdqq(FhL%e^|letvmO5?Vb7+>^vVNbrmnuhp;6St4Ze^X*p~M6QE$?3pbH!ZmasIlrWce1;V{{AGdnAf` z%jjv)R*4FVlaV}zBu@J#6TSX3$}T1l1_ib66!Dy$L^)kcZ(h-}3W|*EB(JmWc6)Zo z3aBQ)jv^_vZrOqPMkAA>I5W% z$W}VvIVXJ7M`(RpjqX6T3Z;kt74inCd0bRb_NgiTR2Ddm8)CXguxE2pzH82!i#Lzf1@k5f8>!;>fPv;YBu62f$>>cWV%Z{vDWq^`$>Xw> zTV@6Ggqu)hdILzEZm8fHP>x8+$^&NLxsU-3JevlBcbV*3b!|qs#+~7v(3nV#=MxZi zVi!A;0KLrC6$e5GjUb3b0D=Jx1>;bUxk}2xh zQS~dkme_1OuYbW|LSI4NstAIY5l_Y{xk5YyJiF&^`bm)4!VH|ZgsNcG#GaJN+j#@t z&7UYui0OJ=`)fX*4-b=13*fK+*pIl>ULzItV#w+xVmy6f;2TvVHUiV4sSx=O;j!4F z67uE=Tuk)`NZ;!nMQ!n3c|;HA>XL(QSF^VZIjpy! zaj2(_!y;I!_frS4{qAgBNQ{r6guPcU?fmzqKf}ypxX`&EAuqEbK(S#i^uSRFrDI}{ zlNnJsf_^OI4@o(Lo!2ESHW30qgV=e(p{#aaq(ouX#XIJ}j4K7(Av&V;kqv`wuww?v zvx5#quS7ib_VVcX;9h0d!zt}U-rF#ymZ1~bgj^X+ty?b|NLSznY;g`v zr;IeB(D%&<2OTaFRf#$!txu(1;#k0QiO3{NFcLBlj)x7UZhZ1p!(5(aKGOqhL6oBR zYRPr3q4u5Cy{l>IOHG>vKCKkdMVRNvo<-`|tlFMXMpTWr3qXV3DOhd)51XGKy5m;X z-J+gDGX8cMw!tSM2$IK#ZQDPU_}4@vZXUOp{B0a|YaifWtEc4=}^@swh%pyq%Nf&~iX-Yvn;^Q(BQc65Y)?^i7waqCO ztDYcRE69TB9HPsqYA-hqWZ@@H+ahDNFxnRIVjafCfDbYk9B~F`d#8@O9wYt|XAvF?7;ow8= z!hiT~W9?}mb68z6BEmz9Dg3{4`EQ=gatoxdzV;?`7p$!kb70L$)*J~)Sln2HDyX_V zt5A}wtECM^W3~LREB_y*^}2jqmf#27lHWE+g9EWj#Nst2OsOJEBG|ac0vEtRl+w^e z@e)`>uiyQ5O{&u8cwSrEsyo^4h&7;p0R|4<=j!`EU-_RG6$ZT+$ZM(7?iC;D>$*`Q8 zihLao59jihy9=0_xW8KsSB$!&GpRh93Ee=g#yqy@tywo*Z@VLOnK~$o^L!ujr@*wc z^_W3L5A%a3zLAuNg<^6!vt#X!r8om89n2V@AaEeVKfgay$B)GCrKhil;$ASW2#B00t3YM?+J^JL+HDJs^E%=aO}s}RECF57Ue$n>2Ao+6Hc8(u#j$I+IVj^3W*Hi@Y? zrF$c14z982O#%WKP*P*uO^&1xKAji4vsRKAmF&?RdH{!j5J8{W6JQLo>n&KyK$+KhgW_+OaCV1bL1&7Z$uflnH zUB#^kakbnEm?vZ4^~jYdO?~i>h)|x#n%DX^IH;C>CEZbuAI1ZDhNeUj2l+hNOxy8& zcp=dFZ(rJG^g7A>C)oleQ&={GH8^QvGC}me(a}jdQsWn z@_1<}q6$OZLXQjFa!^FS)c6_JS3CItN%Cas2q846JsZN+wmhS+<2T@=e4mF#i~s%e zA!LL?`h9X;&pJw^s(?UcyXIgMDvXK=gOvhrCHI>elO-b_QnK9Ny0d|1a_2@aRSULx zw~lXZ%Hi;r4>fl4XX2WzciRyT7FgwH*Tt5b+}nG}Q~Ey zdZ^s5L&G^9ESQ^f^P8(?K%++kcT>*d-M8KaQ2gocFDyw`I31*9?g;S;5;Mfo^{#e! z?2krw2ld^PsG6H*<85k_Ucxs9wojwp7)e9DDmi;D0!MkL28+(AuVxw~eLU6EiFuruqF zy@rJ!y`t?fkjmr`sJl$en_7OoF&L!)EF%?hx zH@hiw960)4iVMyThW9nx2?ZZ^lA`s^Y1*n3M&BEGJ^Y;+UCC-Eq*~?;-YZpEVJ>qy z`7b~1BF*{D%QVahi@!8?EN?j?09}y+Ii`qall19n8~U|nAMF1p+gYXCdydY=`&Mx$ z#1xktJ#QBI{*Ms|9q*xO`SueNO)h34#Drg1$oMq}USc7D!nfBfx*&swE2~L0(G(E~ zmy-m{+8DH|TUuUw*F;bePKYmx-pmoiW+71cE-v7tjAEuM+Exh1OoD7lf+z^~myUnD zK)k^cnz6=zDQgo5b`|5p2PCR%G{Az=2uabr@BMwe*~l>=lPfU+ASxMYMk2NaV@-` z{Z@a1#GR1^qqA^i`H8DIfh)#9Y5(v)a}@G^Po8!0=6F0nLIkuZnu0-4`+0zF{&D*g zeOc%mp=PM^ue5Pnx2L0mP$PQc{iRwR zl7C=+X@iwFeou?srT2<=pky|3AF7`p{5JM{$K=E-FH*Men78%+cyZy}Z#_PK`0)#b zDbIrl^9Nd^0KV_J3)rG!*)axP`tQl#>~S>sygS9#L8H_9&hQ2 zXYb;Bxm{*8BC8YNm?`#mMGOab|Bmix=rj~Y`UnfEU#m5hXUz0dc!24LsDQrkWcVJH z&utex&$XAj*KBOOtQF_RXVX>2whccaS?xId39FDD<-sy@M-G}m3C!3^b zB71!?b^_c%EpZ}*F~Sp~9x}wt*GH;Ne*~HW z-Vb&``Fx}v08h!j|DJ=(cZ~H8UC)Z_9WwCTsO+dx_#{dLA{7xdSxA8)uFP}yuO^)4 z4G=Q~1Vjq4-~zv8A&2KuF_IL7O)`1@N9;)Qt$EQ@TJ(GinF~ykz{I$r|V8HV4H&5Q= z(vBC{6T1@GfnI}vi4nahVzM!gc~&iJY_)x1YaK8G@3y|-r}A|>K_r~GTVu>_5m5`A zh90k&M}iB%35?M|h~ZC@xw&J@{8E?yk)yG| z{4uWtzHeujTYiS~i&2HgO|i=mJ)PX(b+Qo{KP!LF%=va+VH>i>>0W<>PUZ-VY&e!6 z(-F};&XA*XP4QQ*yx$-Bx_)2bFTArr&4Ke5Pf(v#)eSUJ$qs@#4J+OhDie?|CHmu;8m{Jb$0 zOdNHpdnj8!AC)C?I;=IZ;?hbk>}K0#A3x$hr9LhbQeN`*ZMm1GAZ=BkP>I8Ker8g) zYicW1EuwJ?*+I)<8~$(D>f`=}P6`A?*7NX~l;uCjN_xc24vf1(BqUW0wJ|88vTF!( z&?~DAbSX{5tW&as+~+Qg^pC&(FA_(z@sM6<>Nz-A%}KA8)gSjA_RF`C(tqu#0@$;b z$%J^;9Ji^Qmud3gv9IyQfbwkO<3gUa6?EO?Np&B77U_X}VeTu1%DVj=dgtoe?AiY; zHD8Qk_H4yvrV;HRK06FwR|egdFyL=}T)Zcp=i(aAe;dPuyM}*;BrNuh(fIAe9eq6P zmw9dkO@ZTG_Ac%_Id`A+2QbCjGlBe28*7l4oqikf?Rn;V_s_8PFZW*g+GmNmgUCND z(eGL1S^C!Fq-Jk77T>#RWIu@ih2Z_DM&1AOsoH!-dJEBc>AyEz75wO3%gMGwYQ}Z# zQ+g)bZ{$*N>X}3S|D6F%-izE%*FWgH2&Lk(x81+gzXdc?DE1JQ_DE#dQoxYPSq&k| z1r9S|P|rGlJb8bcWViNOkl73@l@eZQqvN?U^C+eQ_83v^U^3W$ew5dUIqloOO_FDG@AA`J}0#pLGS zYK$sOVr+>V#E^Y~RzDKwq`SJ@*hI+gGWero<>Az zIHSsxu*FDnf-^Tdq?E};IHT6d&XGin#D!gDCuRveL$it;iApM1LohQ3NK#ZLAu%~O z^c_yj?oSh(q=xYj^{6X%L=Iv?C}1EZAp&w3CPkd#;oL*^q)-Y_$Nd8Uk7X1DPEb;) zM2Rkc!+D!wr$@F>MXv4;vYfD@abw=*f@*b?h;k&eDnMO$g*Noql&}Am-s$KAt0#Y zpJAUZZWXy5s0b-Z37Zg2ktpnnw!4Jb8Nu1X^tegf=509}QNZFp1!@xss{pwI4l{GI zl!;c6MS~h4iy0h&<{+|oIfx`nm~N>il%_Q*siF~t5*$$=LPG`;b#fRY8kuP%KQ^G| zK{0`2kwU7A%!-EQq99IEc!3}`AG;`Yi9x~y+5`}UD?l|87!?sOtf4~8Tx5p{G&59r z(Psbnd0A~C67zRbCE&>mTH=U%YZ7^w!gHKbyYpp%P&amIvn@h|U4beD14zh*kaBVs zWfFB!RuyFfn;eh~+8~pxOw3Y3`%}GVCxQ@Z{jrs95Di6;ILLwB(U^q@lv-?Xkis%V zI;0>b$b%qulM^B%Sc{Ps1W1;KX(R~>Q3`y5KxkACZAvSxoXP{(F!X>jp^Zi&tR(9t zDgB%{qgzCAN=#gkL=9k!MX5tI{li2BQ9yS{LUa=`l}6^sg?Ht{42s4oEV|+nop_EV zU<-DU2#qo{T7}gOh!jZ;fs|Q{PJ>zk@}bNiNXf~d$JN_&?#ewR&e3oi5Q@dE77SF4 z3e1dy-ilr}gRnsf`F1a{=rrciow7S&2X%Bm%{!=7z*3&APRMt(zKXJe1+^%*eg7!< z#VeHm4&y=+0R#!3t~=~`!IP1n>p8EdSNh_kbqprf$=_%9o$d3?32VtH0+b0VsI0V_ zi@7-wlYoh!GOM#m*0~A9^msw;XUYCfE+4*~wv~}|#_SY$JX!Mu zib#kl2ncXG0fFRA7t4%C&vZA)F(|$_8xp3aeFllFcx5z2y~)YTnVt-Wa`=p9;nD9+ z%wVOf_A?Snci3r!yn$mDfjBg`BA<_U<_uS#hnUZZ_|gp*p&n2=1PRAdEVj`_KhaY2 zo(a_oOe+c=h=5749C3YoU72Qu3|01^y-paC>_`&k21(jXm?2LdL4v5LglTCaZe@$8 zX&|hFC7s(-9-mA9B)_h>ZkJkY={$@tFu?X~e!H-eUJv!cLO*QTuT$9ls3qOUxap@XmkqSm z7JK|QsGSV&Wewd0*szf=&6WKaoHaA9~-0yAdec}1&BczIK#X(|A$ZjxMNn5V*+s}{n^LW1#H$L*8 zk^f|A-X{lTs8Tva%hv~C(5GmM8@p&^~9nOat zb`r^=sBZX+F)^3O7e#lKlJyjebnU|i4PB0Rq@S_4t<-s*vRAd^A^hBONM=R(G@RuonSQ(DOIQ-dCQOm5)$9RsWslvn9Luo3i@zdy<&q30u$7YL?t27 zm;r$xKzo{OT%a=u^~pvy<3d`pwow)OMYNzvK?Xvg^hAklAFR0K3Kv`Y`ZE9c)G`~)AN$Mt3ES)@C;N}tLd+AQ z{ViAOj!T zQm+htmH%Dpj}P`eMILydKj69=y}Yslj{glY zk#Jho19c6&$p&vfRxg+P>lrqv_Cl%{f>}6Hi3$T~^!t>k;a|{{8_4hOf3dRRcpuIC z{vT(4hkV<2(Q+_i?1}V$qGXl4gRpihq1K6@Pcd6#OJnWt&!K}tg~z#MUqbB6pDe;s9Cm6(@8x4wb>UrT zUyNPM5-D18WfVZW<*|Q=sIm!-#u72 zUPy47d3BgPZ#p3lGR>rnz*&v%wPxg35kMkxe-}nbrL=Q&UR}&YUGQm>T`D5Qs@0P~ zyl9QUHj4;ViS6gw#KJWgbEa!%DgmNqAM$;3P6fgseVl0m*^kkDgb{qytHwA2oVF|dS5hmG_ ze-Y(t8i)RRb|RkDfbZ!aTlq^L_LlI$OzulB!7$kz7etPmfOm*MfC&Y*c1X5u?<`prG z|Li*^Jy1G69Z#d2K~Q&Y0JKT#Rpwu-j#YZC2tX4A;dXUf0l@-N?fn(1qo$pFliIqrQq#3oe@T8t=b4ZI zwKo81ld>u2>_Re6&>|0c(^Im1uDe!$bNhb>{|DI0i#=LIE<0ejk8s#xuixg-;2HAL zl!m(ADD_Przx)?)&py9zPMMd{wSNHD^V9tlRWGSPJ6LQPP&83jJ`m;u_&8=Z;6k;F z5KSBMF)kWt4MoqE3OM-ZGRIjF*ZUfYs1vir6A^G_BFOGz2|ytDKsMd-0B0P*@(Q9L zpx>B2FU#AGQ51+P;kI3bVbOZW(kQ^7_#sxF>HVm{x7TU#7Mi(U7**Z?cwnGZ7UoD( z6z$yiRWf705b}LwxzSoyg=|=&=S4IW438N`qAgtz5tXY1Er!CFr<#nbaH=s$t2(UZ zfrLhJViu@SK#CzRRiD^Gz6a&M(V;)}1^xoyNe8#{yi#Js!W7f#=-`{kizsr`YaaU- zpRlhlLJIpaBqEDesLP*wdOueNF;m=o-5Rm(Z8#D0tXZ!;sI?ImQwL8X_ZQQ89#ZBm zP$3xXSb=j#k>vg!(}%ds;p1A*#jhTGR$8ZFXA(?xL5uJ>G!w5*j9eA^TV4uCFECvh zV+#m*Ln(6ly$C86nlVK;tfzzQ(_^s6ayo;h{@-;(_Zf_FC;vjGzK3o!jaYx{ZBlG zA6?e|eA)RliV-4^9E+=`v5{3Ue;bKM$=&dBBdhXs)LmqIF5VQ{J~punMe}C;5vD&K zAl|eHY(xzth!~O^5={DMu96Z#s%@!oeT%N7Kh4VcB07_p8Q|f~L)3V`j%oyd-IC|q z!~@g-EZss2uxMd0Qx(todLDU==B1KoOHoI zSls{sO`iK9iR{sX0OI+mDd)43{Y}X>${3r)u6JJ+wI5Ff!^Ls()HPfj57kwStl58f zefkj8_%e=b$;xGo_x4Da#gHj-dQyEk?~NYG;D1}j?&48Ei({l{Ab+~o(hGf!agj`q z^Pedv>|ij+-#tc3^YvOT4J4C4V*UH(G$*(pP;(6Ux()DXU~sq+F5;31obQtPRjQhO zdCYD1p2v;l^e)_G^MAc{^Y{E#dLS0LYu;Gc!3S)6CCD0lyM0Nq_pf6aZ>9N)7+-Vn zRw7ZUd_oVymm=~1QCk1(FZ!1!%SacuilFTX2-G|3Gx39$dBQZj;nn>8*f4TO6B?dVYeY+-y1^;GTs;+Hd=pAb%8Ir$_4Es^>ekGpYxj z{C}T^XE={F^NP)HBRBU;>)e06oeo1+^xELf3y(_z#Z6|1)mqn&05REO(bW-y_~hPj zQb>LHJ0M@N~US9VnXKeqZA0z~IwpePs(63>17 zdz?8JmgOS)>}8kX5L^NyJ+LFbM}kN|zX2Ig>a<#`ixnnecf6$p`s-1QObB9>m0@rB zpd$z{v#r@zp+>qw089l(`RzwV>JTOpu>BSdAVMcAl|s-KV>b8wp#y@jpDXv$&(Cvx zTD!E~i*lvqY3!l??>5a>HnEjqSt+sqddHXRSPlpU^PuHLHiZUd&Rfg6#3CdA{3H$p z`*($4+qC!;lvRC}Hn}83Jtnn3R6MpH%(G0lytx)RKO}jK9d!Llz8VAb#bP78468GF zdyq$WOcsseRq+52K?QVuzGA?a3Ng7*B!MMF2qHkwu;euOyrg_EU+?E}fCL?L5N*F6 z4_lotU;sva0@Yu(J@u-a6#uey*^7+=pz)X;7M^_t6CV}2^?ip&f~pTUfp0kVjf zqBE(oAq+B?xwxqVuB@OTwEdpGK&k6f4A`#6`F`gnY+g~W!kv&lYI!TQ)p>_u$9u{Ho&fg1sB-&3=pD~M4e}xDmwE*^u zxQ^!0Q2D#+IBY^lG&vbRWJQo#QpC&0RP#E(!#Zy(VM^_t&vPwR$n*8yBZw^iKK0w1 zsctd4NC#v>;V|O&Lvby{4L01HGU}fsu<<04v>|)?P7pHBx%=D-R^S(^ z``y=>n2@v2Q|E>D1&QQ=TWsutfq=#{?{DZrp%BH{bkK9-|E5sEt|mY7$e$UX`zV`U z)t_4YeuiCPozeGl_Jh#SBI|80)w|3{Ux{r&UDQ_Sp*;438l3v3meGztvkwqvk>!J zF{wPdNn|8}(7;#excrlS!{jw-uykqdP*ZgXO%J`IXJ}V_u@}}mVUb^Fg7B738{hz59a=+DadtNhW=e& zJZdjcnfO-00Jr`b-7o%Er4^)bAfli%`MzeZN|8nK`z!r}H9!6{_hV~s7k-G|ujL6=5`DWJdXqGa#{5H_NkVz1*g;r zm=<<7^M3)*cLo@c1aTQkx#7+>G7fB$MzJnpZo6fxH zligjFTf5(}MKkCq!HI&Kem~QKN?MQF^f)c{Vh-(#*RgcM^R_MoSV;&opx0FJc8ClHJizZb0$m zi+hn@1|}vXn87ei7djwfVx(0iPtp(&3)X=#F%SU(AfKACksh`PXp{1`px3`>!{9$a z>woCa)lTH&`kq_$tVhJ7=gIi!?E|Q5nHjh13Dgv zxBNNwrRL6AxxCiMcPi5X93}R3`kD~(<_KIB4%>P>=6G-5#M;DDOujFU5kGPnq9 zrdv*lM_cVoY@`?iEKOuiW@bNQ!yp#FJq!e^~3E7iCh+cAWhaG zwo*!;XP%Llk*(z`rO|>BdIM=>0?$7@cB17_KoIMe76!5Q?BGTKM&!L%5WpU##M!ap z4PPXM9S{>HjLvW-4-6=L$%e~=Yf8xN(*kQutph;Oy zzwE)SJG&2-3TaAo947}?%Bu&+B<<|I2Q;z#}Na_v?5=XWB@xLD+J6ULIl-w%UaZB6w_#-ZHvLsx~YBWt3b=#lwW4XWz}+>TjR1w&Bmv6;Mz zS&#s_kS!&KZUU>G7RbdiNLy^)xihso!0Pxptpr>aB?l~sOK0TBBApabVl}K z;Bdh($vAd(fh9F^vW&F}!M*Ktk=z?LVO?Q^GlqMl%HY2LWa&S}yIle{Oh&qfKnyBq0o-!Cug{xlm- zWk*(NoFLY|!4w@vBANm{IRaI2j&lL4r?NH&Nl3)<9%T{DXU7lKMO){3|HyH;`MxI3 z8Sv97Kky)J3dqWC;QrvfL_HFelaS(OU)QL%Om7?Clbd5!>$2u?1;65#x9_(9*TS!> zy_bj3cGiyBj}d7J!L3$Wu|Op8F48ylyr2~e69bkqCC_sFv5ru~ivYmkn*?6-zMTyh z>vy@Iks|rd!M$%i_1ZamjzhQj^Ghpv}t&Pe`Whdq-Y!20o;^8!VB&pb*!gu6JG-b;e&A?@^P29NITCd9Kw~FxB@Yo2Cgz|bY{aHUH88X)!iY!= zS&l-Y!6$$tMJ973(=|^HsZ(U@TBP(%BI+6DREZUFQsfqi9a)|vj8LjXD2QkSt%-n; z!BSJr`s4~b@re1K>R-p^TRIB9W3OlM^Zth4Gf6#o10X;haGomWUtk4hFWtrBspjjr4 z$KTi;N9&zN;qsRMRUqa^a4!%-C$~bUrTlNHR17e;hQJTgO-3C6ZYsQR;x0N!<=!72 z0`wrg;F5q4RqreE6_@bj+nvgfxoh1~6wmJzgYf=oCCcdH0@6KQl&qWBmu=&TE8TX1 z=w<4`CEM7!R1j6LyYpBurbjG$7Yz`aU|ak+Aovhu7=#cyXKX^06i*0N%NEK(i{EdJ zGO##ACacsXK!VJ}7AUEN!bmkPP;0AYb9GVns8Gpe`v}MGE2rGh9y3D{nmVUX z3$WdD8&92Y8nHU8uhx{>o{uX!9hf%`b@ZaKPj9Lfk zbGgyxDJNb#glc|*dT{xk-_9lkM|a8rtJ z5CB6!C?Ew=J>hy%kmW&73W3g}OX24x9mC%rEdku)c;!6EnMVk)#9hunl>+3npgeX6 z4SP#9t89#}f@cC}Uu)v`jt-CIknc35XcP#t9}05~Joobi!nqeQP`_ z1u+%^VN3eoLI66^G^WPa?y?&F_5^=4Bp-pT(*@2nDmz#qu6Uq;5CsGZC}KQEoAjL? zAK`xPUq|q+mY)b%5O?CmCZH6(X7UvpeMaduntQlfKHBVxJGo+cJ?yBYd&@mE#j4KE zt6tZZp%ZmgCHkE9ppZnZ?tqYm17Xg9mt$QgcG`RHm9USUm zxX+1Vz&8ynsDyd;tYN`^C12?zyl0n-7!UJ#Z$C5upR_=b4=llXpy=~(n)njwgOHok zV9ot92-egBWrYxjQk_vP_g@muFObj?^WzQ}2@HoCZg z8vt<$Lq_-gV06L>v`wSQVDd)G>Es{&@KI{bK=@2#i5|6!v%0w^U==Vge7ua0Rw(v= zo8prBPuF|h*O{Apd>0=%x;?W9!-W3-6l%k)KQ}jACe0k3J_eMasJ7Qp-aoCtPGMqm zef=Optkmn7_glrLj!opUVMSx9NY!w4A-xk~>AqLlkT_*AID*DK-?6_H_M0LY^*4g{ zQGS4jI;oh$had7k!P=Y1{}z*n5I$?XO~iqCaNwep1qDBcA@_5ei2^oDNWheweE0c3 zZrG(#{@G4y{$FqE{SV^*(-q<5I7o*Z*4}=fuA3FIe;I%4aacN^_KTw$vw;IeUvdc} zsVh@=_6iMUr-K9og+54jYn-+Mxa5z_MNnnWr=|=-ppgQU2;RUvJb*1DaH~#H7=vca z2vGxA3mVi)hoZpH9~}ieEE!PO3c5^@QUV7tel8U`YtJT_Qh8;Y1}0FL5$hD5J`)qU zc7I7OdlLfdvQ)t82PmOHo+Ph_hn4aHp63UK<)^^LMjcG~ZeAy;`54{*8Y$iJqlEFE z)x-W+j?I<(3ppKFI2G|&-((3V@din&o|aM`j3|2HcYqL;*~Ja9N63L40~F^CsAX(D z8AKnvQwz`dzW2~HcWr%nOz0e-=jAue^K$wz##EQoPx+RU`-wY>U_d2;Vu)+($oSnU zn1^)ih>H=DL{U50ENAi+Bn-fJ`br8MCuEY5OiZdB>c;~lZF40MK`07c4&;xPMM$M2 z=E*x)W@Ii1P|D(D91uzdPKh5@KtxwNyy_^sbx@=xS*|lK|)bYQs^b;B0``M zSMw8t>M;2|bi+OWo_|j@`$JxX_3$+q?%wk*e}@WuDpn*$>Tx&~G$^8>(DCg-Q#$uk zn_W{MVML2Mt%SJm8HN5A3-Mx6xN-g7T3)nw0auVLmW-dPJE?R4Ka?8}0j$|>aLF7c zJaLJ(Fi&DDQ|UiPoFON}@eXe@r0-{Y;3pG5d;6sa>j?Wk1@t9{+#Oo=3?1?92sQPInYk02Xy)ZoH8swYLp~@l(UU$t zK%uvrAZh%*xmpSj{DONIVg>sJmMc!N1*XxF|4?+TcTp8{QBz61pOB-CHE*Eu8eal~ z{dn+=Z$kyXXL}56sR)CFp^D#BsYAW*X#4$x(ycmB!l&$RV(EA(eY*Y$cSDVD`^LB| zBzda}bACX?SE?t)+xp5f}_bd<55;`Uz320J(8(TuObYLyNm<9ODy)k}Z$#hk%SY(zJg zrF!+y5edgI3KP#r9{IvL?(cmea`EC7LiIjN4O+NK+hkeFkRw~NEdWVCw!c2T8ua9! zfwmC%Z&#Nq7Z3aG>bFgTP(n0sMY;)PtH@X5Z(wf-ZqI|}Ew7Vob6v+fXDn17-U-EM zND_Q(`H*4bKUS&F-D1mE!-OBi_8Vxi+1JYlaXK8%gj=6jnA@R1X*8P?U^bMPLqegp zz%OSuN^Vgcvj)Un53u{`QKqFN?9mfIG?WO3^9e$5$$*DL-;fGU*n~q#w$e#904CA~ z&?D3rSIc-mL@%w&^LLTX-~XfC`%m5E_ZK4e`s8$dtrX3jsAvI_dy83<*yBP0Q* z$|!p^6veKFqbvphCLu?W864>71{p#;5L81w+>|lC^t1)M48kw9ji+S5h)GP46cGKF z$lQm>u(T^g6h>*%QAr7c;G)go8_UUVJr6jB7+Qg`qRM34nh1zUY6u%l8yXv6vY^lX zssDO3U8G#6r#%CL4B&xMq9tmS@Gw;9Y>;CTfdE7%HqJ~cLr9BE$uKKbeB=b{Pw&@m z<)X5>nCmR;f=4CZDjS?N36(*MATffGQ61>4H$1`nZ+{kHFO%|Q#)_! zYxO_cUax5&vA-r#qD;9mp|`K!UDExAF*l_p25H=!wi{(@^m~jJpJmCtbvu9D{DKma zfPjbu{Sh0Y;JP{yC{bHLm)XV2tnb?ON$wu4x)4MZx*XuB6F{elnZ$c7b7TGV?wqUs zhclqTZq>HDI08MAA1{%$zrFc;p8xi^ev_pkeVs*$NqwX_ybv%XOB|-(^~}=+w{5W9 zNy^le)2$o2jueuCuxw*RL|t33n2yd&&3oa32Oc^Ll@SMsJ_Za!1d?fRPkL|jrG9@< z=o1Zf?(Z7ORJ>=Q<^QW`)Ll5b{GHZ>9AA07^ZqXz_B89)?)?^qzKwez7@J8M%n>Y$ z4LvRC9S2k)KBNq0#{!rDXCJf=d!4m6LddB`i>bX+#29NW0oXCbk=BDIy{O zBH$LkI967K{6GDq*d|qodR}k2p4$GmS|zKy;(kBf|8-#{;P12R!b5HlrBN((6z?(z zfxjvdKE&V}$%B#K0sOF^-GrJffvT<%1W(taJwL{cGKLfa9SF5~@90zzU&APVJWwPz zEqJ-nOtU+4#N2Cy2rVMYrm*^@D+0DuAZ$p; zDV+ugQGPJo{o8T>IQObU`P{K)eG%SShTZhH10`heWmP2GV#H+^qp5rkZ~oWjT}j}D z5dvCI`j{`jCsa*GL)?@g&26sMd!12l+4l1U^JME1}l6kG0rED5BY z+Hx@$890~|XdwQ4`&(~-R1^@UlnVqz7=cJB@mf>&ZHk#W*yjUNh)(Wd%X6AheL>(H zkYpQz622Uq?-vtwF#(^Nd9<}($(Z&i9%!Iy3jj%oRTv_|SldZN85x-gFhtg}bhH8- z$=Unr&=-+G^B~{mq7{Tlvu!ZUTJr=F5t#~vC?X6LL>6##RvZk9ci>J5IOibbIfu?@ zT2cWGh{2qQLWl%roECBk4qU4ULUKjYwMoJ(B?uQuO~N3{LV~0Oq%n6uiCMq)HvvcG z`CLf!N2I^j?`YSXKS99XCr+o%G^6Q673?dMY#VPG!((Z-zJ}L_m;A&b4W_}hiq$Mynz3%nQW;&1WnQ;M30tzIBDS-0a1*VR$_tFd ze{q`zTdpex4T~+dI^dW*GY`rzOv1^@0jHe-(C9s;(K6Ohs|aIq0`|PMu_yvTr0xg~ zPM#}Wr7H+_3`yUTcS+a!UC0v3@3?P2<(#kFwHG3Enhq7o$P#49hGQ{m6TYE?aM;sq zV8-E!6J@DHnAq58v>LDi1Q9RPSz{VJ0S^%Z3pW#>9GWSR4fB4V9K!61WuE1kP=7??-_A-lCi*aL)=8| zBB&79LrJj&HppyfY=#N3!W3d{1;By`l$Ea4Ad9>!B8ILBWK7y>fYwMzwfDo&Fa5|u ziY#JpR_DdU$OIBg5(y(iY-*t*z1MHVbr zAGx;F_&C}A1Q5q(r&_Of?~}u1PVoM1@&#pOyU;R{M`5jg^8=Rs_qcqO(blQ3b=e0% zet#hNXy3z*m)mgH9%TjSpc#E>JaLk4PBZUk+{SK~txPfT+@DieNjoXox=6g01E8LBMGCRXO~r>|<(@6{ zQ6G$Qss$lQ)E;N}Lk{8(#dOumfE*n&fx3GBN+W#{AOz|2bRigY~-W zZ2T9WPa)p-{wdn8A*{s~1h=19?pR}eOrpL`Lkj<2A<&sl<&61#Bm8k5x-RM!myZ|N zJiCZe_L*%Om#3y+yg3^adGzUGF}>Q)jW`I)%hdXLcn<_+wft4#Bg&1{Q>uQyfUwHh zaJHT-3rW=1mGXvbH_mvBGaD6l5D}!v+}eHp+evoW`2U(|jI(8QtrHt<&8BNy$!x_` zD9;^zjo+E7!)xZ!?ZT61`O5FC`J3pwdq~jM!^(c!UQcyg4YV&!!@%`}#%ueh#m?}pu}HQG^5FN)Huk*_-#;q2|3q_M zP6x`$;U9yaYG>*O!7Y;4@8@M@jZ^+uo&r87VDi03%;P+^K4)>)OZA-tZI2!O@4u~) zqvbXpzZW08gRj4M7}{)XVA~BC`)}L4G)J=uOlnQEp`=AH5Gi?L=`T=yz|N!-3Iouh z5cS2VhM9pGib8U77pMPI+)-tjsDO+Py5LuWfh9c_B_AwKF*I9oHCOfEQY=&*u|1iB za{nJSUw5AKaTaqiz!Am|TaJi6S~Q9v9V~{sB7QPIyh<1Q6_NyRV}kU}j*`f|UF<(e zJZ|TKLbNdQ{rpztgr;J}iMqOl_8R&rZ{2Gs<+K8TK@in4Ac#>2T?S_dk?{>t$B?5~ zF}=jCboHAL%`Z6!<0a-E_`aEL2(Rz(9;u~%vaWR+$`CANZIb@Xh@QMf - * + * * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this * method is called. The getGregorianXxx() methods return Gregorian * calendar equivalents for the given Julian day. * @internal */ - virtual void handleComputeFields(int32_t julianDay, UErrorCode &status); + virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override; // UObject stuff - public: + public: /** * @return The class ID for this object. All objects of a given class have the * same class ID. Objects of other classes have different class IDs. * @internal */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Return the class ID for this class. This is useful only for comparing to a return @@ -282,7 +282,7 @@ class U_I18N_API IndianCalendar : public Calendar { * @return calendar type * @internal */ - virtual const char * getType() const; + virtual const char * getType() const override; private: IndianCalendar(); // default constructor not implemented @@ -299,30 +299,33 @@ class U_I18N_API IndianCalendar : public Calendar { * false, otherwise. * @internal */ - virtual UBool inDaylightTime(UErrorCode& status) const; + virtual UBool inDaylightTime(UErrorCode& status) const override; /** * Returns true because the Indian Calendar does have a default century * @internal */ - virtual UBool haveDefaultCentury() const; + virtual UBool haveDefaultCentury() const override; /** * Returns the date of the start of the default century * @return start of century - in milliseconds since epoch, 1970 * @internal */ - virtual UDate defaultCenturyStart() const; + virtual UDate defaultCenturyStart() const override; /** * Returns the year in which the default century begins * @internal */ - virtual int32_t defaultCenturyStartYear() const; + virtual int32_t defaultCenturyStartYear() const override; }; U_NAMESPACE_END #endif #endif + + + diff --git a/deps/icu-small/source/i18n/inputext.cpp b/deps/icu-small/source/i18n/inputext.cpp index 96e59b24d878ff..fa4939e8f4f1ae 100644 --- a/deps/icu-small/source/i18n/inputext.cpp +++ b/deps/icu-small/source/i18n/inputext.cpp @@ -68,7 +68,7 @@ void InputText::setDeclaredEncoding(const char* encoding, int32_t len) } } -UBool InputText::isSet() const +UBool InputText::isSet() const { return fRawInput != NULL; } @@ -76,7 +76,7 @@ UBool InputText::isSet() const /** * MungeInput - after getting a set of raw input data to be analyzed, preprocess * it by removing what appears to be html markup. -* +* * @internal */ void InputText::MungeInput(UBool fStripTags) { @@ -124,7 +124,7 @@ void InputText::MungeInput(UBool fStripTags) { // essentially nothing but markup abandon the markup stripping. // Detection will have to work on the unstripped input. // - if (openTags<5 || openTags/5 < badTags || + if (openTags<5 || openTags/5 < badTags || (fInputLen < 100 && fRawLength>600)) { int32_t limit = fRawLength; @@ -141,7 +141,7 @@ void InputText::MungeInput(UBool fStripTags) { } // - // Tally up the byte occurence statistics. + // Tally up the byte occurrence statistics. // These are available for use by the various detectors. // @@ -161,3 +161,4 @@ void InputText::MungeInput(UBool fStripTags) { U_NAMESPACE_END #endif + diff --git a/deps/icu-small/source/i18n/inputext.h b/deps/icu-small/source/i18n/inputext.h index 06ad627c622d47..fb92dc06343afa 100644 --- a/deps/icu-small/source/i18n/inputext.h +++ b/deps/icu-small/source/i18n/inputext.h @@ -23,7 +23,7 @@ #if !UCONFIG_NO_CONVERSION -U_NAMESPACE_BEGIN +U_NAMESPACE_BEGIN class InputText : public UMemory { @@ -35,7 +35,7 @@ class InputText : public UMemory void setText(const char *in, int32_t len); void setDeclaredEncoding(const char *encoding, int32_t len); - UBool isSet() const; + UBool isSet() const; void MungeInput(UBool fStripTags); // The text to be checked. Markup will have been @@ -44,14 +44,14 @@ class InputText : public UMemory int32_t fInputLen; // Length of the byte data in fInputBytes. // byte frequency statistics for the input text. // Value is percent, not absolute. - // Value is rounded up, so zero really means zero occurences. + // Value is rounded up, so zero really means zero occurrences. int16_t *fByteStats; UBool fC1Bytes; // True if any bytes in the range 0x80 - 0x9F are in the input;false by default char *fDeclaredEncoding; const uint8_t *fRawInput; // Original, untouched input bytes. // If user gave us a byte array, this is it. - // If user gave us a stream, it's read to a + // If user gave us a stream, it's read to a // buffer here. int32_t fRawLength; // Length of data in fRawInput array. diff --git a/deps/icu-small/source/i18n/islamcal.cpp b/deps/icu-small/source/i18n/islamcal.cpp index 6e21e51150ab88..de37e6b9398613 100644 --- a/deps/icu-small/source/i18n/islamcal.cpp +++ b/deps/icu-small/source/i18n/islamcal.cpp @@ -222,7 +222,7 @@ const char *IslamicCalendar::getType() const { sType = "islamic-umalqura"; break; default: - UPRV_UNREACHABLE; // out of range + UPRV_UNREACHABLE_EXIT; // out of range } return sType; } @@ -366,7 +366,7 @@ UBool IslamicCalendar::civilLeapYear(int32_t year) */ int32_t IslamicCalendar::yearStart(int32_t year) const{ if (cType == CIVIL || cType == TBLA || - (cType == UMALQURA && (year < UMALQURA_YEAR_START || year > UMALQURA_YEAR_END))) + (cType == UMALQURA && (year < UMALQURA_YEAR_START || year > UMALQURA_YEAR_END))) { return (year-1)*354 + ClockMath::floorDivide((3+11*(int64_t)year),(int64_t)30); } else if(cType==ASTRONOMICAL){ @@ -418,7 +418,7 @@ int32_t IslamicCalendar::trueMonthStart(int32_t month) const if (start==0) { // Make a guess at when the month started, using the average length - UDate origin = HIJRA_MILLIS + UDate origin = HIJRA_MILLIS + uprv_floor(month * CalendarAstronomer::SYNODIC_MONTH) * kOneDay; // moonAge will fail due to memory allocation error @@ -461,7 +461,7 @@ trueMonthStartEnd : /** * Return the "age" of the moon at the given time; this is the difference * in ecliptic latitude between the moon and the sun. This method simply -* calls CalendarAstronomer.moonAge, converts to degrees, +* calls CalendarAstronomer.moonAge, converts to degrees, * and adjusts the result to be in the range [-180, 180]. * * @param time The time at which the moon's age is desired, @@ -568,7 +568,7 @@ int32_t IslamicCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, U month = (month % 12) + 11; } return monthStart(eyear, month) + ((cType == TBLA)? ASTRONOMICAL_EPOC: CIVIL_EPOC) - 1; -} +} //------------------------------------------------------------------------- // Functions for converting from milliseconds to field values @@ -597,7 +597,7 @@ int32_t IslamicCalendar::handleGetExtendedYear() { *
  • DAY_OF_MONTH *
  • DAY_OF_YEAR *
  • EXTENDED_YEAR -* +* * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this * method is called. The getGregorianXxx() methods return Gregorian * calendar equivalents for the given Julian day. @@ -654,14 +654,14 @@ void IslamicCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status) }else{ int y =UMALQURA_YEAR_START-1, m =0; long d = 1; - while(d > 0){ - y++; + while(d > 0){ + y++; d = days - yearStart(y) +1; if(d == handleGetYearLength(y)){ m=11; break; }else if(d < handleGetYearLength(y) ){ - int monthLen = handleGetMonthLength(y, m); + int monthLen = handleGetMonthLength(y, m); m=0; while(d > monthLen){ d -= monthLen; @@ -675,7 +675,7 @@ void IslamicCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status) month = m; } } else { // invalid 'civil' - UPRV_UNREACHABLE; // should not get here, out of range + UPRV_UNREACHABLE_EXIT; // should not get here, out of range } dayOfMonth = (days - monthStart(year, month)) + 1; @@ -689,14 +689,14 @@ void IslamicCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status) internalSet(UCAL_EXTENDED_YEAR, year); internalSet(UCAL_MONTH, month); internalSet(UCAL_DAY_OF_MONTH, dayOfMonth); - internalSet(UCAL_DAY_OF_YEAR, dayOfYear); -} + internalSet(UCAL_DAY_OF_YEAR, dayOfYear); +} UBool IslamicCalendar::inDaylightTime(UErrorCode& status) const { // copied from GregorianCalendar - if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) + if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) return FALSE; // Force an update of the state of the Calendar. @@ -707,7 +707,7 @@ IslamicCalendar::inDaylightTime(UErrorCode& status) const /** * The system maintains a static default century start date and Year. They are - * initialized the first time they are used. Once the system default century date + * initialized the first time they are used. Once the system default century date * and year are set, they do not change. */ static UDate gSystemDefaultCenturyStart = DBL_MIN; @@ -761,3 +761,4 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(IslamicCalendar) U_NAMESPACE_END #endif + diff --git a/deps/icu-small/source/i18n/islamcal.h b/deps/icu-small/source/i18n/islamcal.h index e12e04a6b9c8b4..a29b7daa086f44 100644 --- a/deps/icu-small/source/i18n/islamcal.h +++ b/deps/icu-small/source/i18n/islamcal.h @@ -32,7 +32,7 @@ U_NAMESPACE_BEGIN * is used as the civil calendar in most of the Arab world and the * liturgical calendar of the Islamic faith worldwide. This calendar * is also known as the "Hijri" calendar, since it starts at the time - * of Mohammed's emigration (or "hijra") to Medinah on Thursday, + * of Mohammed's emigration (or "hijra") to Medinah on Thursday, * July 15, 622 AD (Julian). *

    * The Islamic calendar is strictly lunar, and thus an Islamic year of twelve @@ -88,10 +88,10 @@ class U_I18N_API IslamicCalendar : public Calendar { //------------------------------------------------------------------------- // Constants... //------------------------------------------------------------------------- - + /** * Calendar type - civil or religious or um alqura - * @internal + * @internal */ enum ECalculationType { ASTRONOMICAL, @@ -99,86 +99,86 @@ class U_I18N_API IslamicCalendar : public Calendar { UMALQURA, TBLA }; - + /** * Constants for the months * @internal */ enum EMonths { /** - * Constant for Muharram, the 1st month of the Islamic year. + * Constant for Muharram, the 1st month of the Islamic year. * @internal */ MUHARRAM = 0, /** - * Constant for Safar, the 2nd month of the Islamic year. + * Constant for Safar, the 2nd month of the Islamic year. * @internal */ SAFAR = 1, /** - * Constant for Rabi' al-awwal (or Rabi' I), the 3rd month of the Islamic year. - * @internal + * Constant for Rabi' al-awwal (or Rabi' I), the 3rd month of the Islamic year. + * @internal */ RABI_1 = 2, /** - * Constant for Rabi' al-thani or (Rabi' II), the 4th month of the Islamic year. - * @internal + * Constant for Rabi' al-thani or (Rabi' II), the 4th month of the Islamic year. + * @internal */ RABI_2 = 3, /** - * Constant for Jumada al-awwal or (Jumada I), the 5th month of the Islamic year. - * @internal + * Constant for Jumada al-awwal or (Jumada I), the 5th month of the Islamic year. + * @internal */ JUMADA_1 = 4, /** - * Constant for Jumada al-thani or (Jumada II), the 6th month of the Islamic year. - * @internal + * Constant for Jumada al-thani or (Jumada II), the 6th month of the Islamic year. + * @internal */ JUMADA_2 = 5, /** - * Constant for Rajab, the 7th month of the Islamic year. - * @internal + * Constant for Rajab, the 7th month of the Islamic year. + * @internal */ RAJAB = 6, /** - * Constant for Sha'ban, the 8th month of the Islamic year. - * @internal + * Constant for Sha'ban, the 8th month of the Islamic year. + * @internal */ SHABAN = 7, /** - * Constant for Ramadan, the 9th month of the Islamic year. - * @internal + * Constant for Ramadan, the 9th month of the Islamic year. + * @internal */ RAMADAN = 8, /** - * Constant for Shawwal, the 10th month of the Islamic year. - * @internal + * Constant for Shawwal, the 10th month of the Islamic year. + * @internal */ SHAWWAL = 9, /** - * Constant for Dhu al-Qi'dah, the 11th month of the Islamic year. - * @internal + * Constant for Dhu al-Qi'dah, the 11th month of the Islamic year. + * @internal */ DHU_AL_QIDAH = 10, /** - * Constant for Dhu al-Hijjah, the 12th month of the Islamic year. - * @internal + * Constant for Dhu al-Hijjah, the 12th month of the Islamic year. + * @internal */ DHU_AL_HIJJAH = 11, - + ISLAMIC_MONTH_MAX - }; + }; //------------------------------------------------------------------------- @@ -217,7 +217,7 @@ class U_I18N_API IslamicCalendar : public Calendar { * @internal */ void setCalculationType(ECalculationType type, UErrorCode &status); - + /** * Returns true if this object is using the fixed-cycle civil * calendar, or false if using the religious, astronomical @@ -230,14 +230,14 @@ class U_I18N_API IslamicCalendar : public Calendar { // TODO: copy c'tor, etc // clone - virtual IslamicCalendar* clone() const; + virtual IslamicCalendar* clone() const override; private: /** * Determine whether a year is a leap year in the Islamic civil calendar */ static UBool civilLeapYear(int32_t year); - + /** * Return the day # on which the given year starts. Days are counted * from the Hijri epoch, origin 0. @@ -252,7 +252,7 @@ class U_I18N_API IslamicCalendar : public Calendar { * @param year The hijri month, 0-based */ int32_t monthStart(int32_t year, int32_t month) const; - + /** * Find the day number on which a particular month of the true/lunar * Islamic calendar starts. @@ -266,7 +266,7 @@ class U_I18N_API IslamicCalendar : public Calendar { /** * Return the "age" of the moon at the given time; this is the difference * in ecliptic latitude between the moon and the sun. This method simply - * calls CalendarAstronomer.moonAge, converts to degrees, + * calls CalendarAstronomer.moonAge, converts to degrees, * and adjusts the resultto be in the range [-180, 180]. * * @param time The time at which the moon's age is desired, @@ -277,7 +277,7 @@ class U_I18N_API IslamicCalendar : public Calendar { //------------------------------------------------------------------------- // Internal data.... // - + /** * CIVIL if this object uses the fixed-cycle Islamic civil calendar, * and ASTRONOMICAL if it approximates the true religious calendar using @@ -292,8 +292,8 @@ class U_I18N_API IslamicCalendar : public Calendar { /** * @internal */ - virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const; - + virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override; + /** * Return the length (in days) of the given month. * @@ -301,14 +301,14 @@ class U_I18N_API IslamicCalendar : public Calendar { * @param year The hijri month, 0-based * @internal */ - virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const; - + virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override; + /** * Return the number of days in the given Islamic year * @internal */ - virtual int32_t handleGetYearLength(int32_t extendedYear) const; - + virtual int32_t handleGetYearLength(int32_t extendedYear) const override; + //------------------------------------------------------------------------- // Functions for converting from field values to milliseconds.... //------------------------------------------------------------------------- @@ -317,7 +317,7 @@ class U_I18N_API IslamicCalendar : public Calendar { /** * @internal */ - virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const; + virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const override; //------------------------------------------------------------------------- // Functions for converting from milliseconds to field values @@ -326,7 +326,7 @@ class U_I18N_API IslamicCalendar : public Calendar { /** * @internal */ - virtual int32_t handleGetExtendedYear(); + virtual int32_t handleGetExtendedYear() override; /** * Override Calendar to compute several fields specific to the Islamic @@ -338,22 +338,22 @@ class U_I18N_API IslamicCalendar : public Calendar { *

  • DAY_OF_MONTH *
  • DAY_OF_YEAR *
  • EXTENDED_YEAR - * + * * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this * method is called. The getGregorianXxx() methods return Gregorian * calendar equivalents for the given Julian day. * @internal */ - virtual void handleComputeFields(int32_t julianDay, UErrorCode &status); + virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override; // UObject stuff - public: + public: /** * @return The class ID for this object. All objects of a given class have the * same class ID. Objects of other classes have different class IDs. * @internal */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Return the class ID for this class. This is useful only for comparing to a return @@ -374,7 +374,7 @@ class U_I18N_API IslamicCalendar : public Calendar { * @return calendar type * @internal */ - virtual const char * getType() const; + virtual const char * getType() const override; private: IslamicCalendar(); // default constructor not implemented @@ -391,27 +391,27 @@ class U_I18N_API IslamicCalendar : public Calendar { * false, otherwise. * @internal */ - virtual UBool inDaylightTime(UErrorCode& status) const; + virtual UBool inDaylightTime(UErrorCode& status) const override; /** * Returns true because the Islamic Calendar does have a default century * @internal */ - virtual UBool haveDefaultCentury() const; + virtual UBool haveDefaultCentury() const override; /** * Returns the date of the start of the default century * @return start of century - in milliseconds since epoch, 1970 * @internal */ - virtual UDate defaultCenturyStart() const; + virtual UDate defaultCenturyStart() const override; /** * Returns the year in which the default century begins * @internal */ - virtual int32_t defaultCenturyStartYear() const; + virtual int32_t defaultCenturyStartYear() const override; private: /** @@ -426,3 +426,6 @@ U_NAMESPACE_END #endif #endif + + + diff --git a/deps/icu-small/source/i18n/japancal.cpp b/deps/icu-small/source/i18n/japancal.cpp index e7e5f4fc5174f6..75a248f406ffe1 100644 --- a/deps/icu-small/source/i18n/japancal.cpp +++ b/deps/icu-small/source/i18n/japancal.cpp @@ -146,7 +146,7 @@ const char *JapaneseCalendar::getType() const return "japanese"; } -int32_t JapaneseCalendar::getDefaultMonthInYear(int32_t eyear) +int32_t JapaneseCalendar::getDefaultMonthInYear(int32_t eyear) { int32_t era = internalGetEra(); // TODO do we assume we can trust 'era'? What if it is denormalized? @@ -167,7 +167,7 @@ int32_t JapaneseCalendar::getDefaultMonthInYear(int32_t eyear) return month; } -int32_t JapaneseCalendar::getDefaultDayInMonth(int32_t eyear, int32_t month) +int32_t JapaneseCalendar::getDefaultDayInMonth(int32_t eyear, int32_t month) { int32_t era = internalGetEra(); int32_t day = 1; @@ -226,7 +226,7 @@ void JapaneseCalendar::handleComputeFields(int32_t julianDay, UErrorCode& status } /* -Disable pivoting +Disable pivoting */ UBool JapaneseCalendar::haveDefaultCentury() const { diff --git a/deps/icu-small/source/i18n/japancal.h b/deps/icu-small/source/i18n/japancal.h index d313fcd99ab508..88513440528b04 100644 --- a/deps/icu-small/source/i18n/japancal.h +++ b/deps/icu-small/source/i18n/japancal.h @@ -43,7 +43,7 @@ U_NAMESPACE_BEGIN * of that year were in the Showa era, e.g. "January 6, 64 Showa", while the rest * of the year was in the Heisei era, e.g. "January 7, 1 Heisei". This class * handles this distinction correctly when computing dates. However, in lenient - * mode either form of date is acceptable as input. + * mode either form of date is acceptable as input. *

    * In modern times, eras have started on January 8, 1868 AD, Gregorian (Meiji), * July 30, 1912 (Taisho), December 25, 1926 (Showa), and January 7, 1989 (Heisei). Constants @@ -67,7 +67,7 @@ class JapaneseCalendar : public GregorianCalendar { public: /** - * Check environment variable. + * Check environment variable. * @internal */ U_I18N_API static UBool U_EXPORT2 enableTentativeEra(void); @@ -116,20 +116,20 @@ class JapaneseCalendar : public GregorianCalendar { * @return return a polymorphic copy of this calendar. * @internal */ - virtual JapaneseCalendar* clone() const; + virtual JapaneseCalendar* clone() const override; /** - * Return the extended year defined by the current fields. In the + * Return the extended year defined by the current fields. In the * Japanese calendar case, this is equal to the equivalent extended Gregorian year. * @internal */ - virtual int32_t handleGetExtendedYear(); + virtual int32_t handleGetExtendedYear() override; /** * Return the maximum value that this field could have, given the current date. * @internal */ - virtual int32_t getActualMaximum(UCalendarDateFields field, UErrorCode& status) const; + virtual int32_t getActualMaximum(UCalendarDateFields field, UErrorCode& status) const override; public: @@ -143,7 +143,7 @@ class JapaneseCalendar : public GregorianCalendar { * same class ID. Objects of other classes have different class IDs. * @internal */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Return the class ID for this class. This is useful only for comparing to a return @@ -164,55 +164,55 @@ class JapaneseCalendar : public GregorianCalendar { * @return calendar type * @internal */ - virtual const char * getType() const; + virtual const char * getType() const override; /** * @return false - no default century in Japanese - * @internal + * @internal */ - virtual UBool haveDefaultCentury() const; + virtual UBool haveDefaultCentury() const override; /** * Not used - no default century. * @internal */ - virtual UDate defaultCenturyStart() const; + virtual UDate defaultCenturyStart() const override; /** * Not used - no default century. * @internal */ - virtual int32_t defaultCenturyStartYear() const; + virtual int32_t defaultCenturyStartYear() const override; private: JapaneseCalendar(); // default constructor not implemented protected: - /** + /** * Calculate the era for internal computation * @internal */ - virtual int32_t internalGetEra() const; + virtual int32_t internalGetEra() const override; /** * Compute fields from the JD * @internal */ - virtual void handleComputeFields(int32_t julianDay, UErrorCode& status); + virtual void handleComputeFields(int32_t julianDay, UErrorCode& status) override; /** * Calculate the limit for a specified type of limit and field * @internal */ - virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const; + virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override; /*** * Called by computeJulianDay. Returns the default month (0-based) for the year, - * taking year and era into account. Will return the first month of the given era, if + * taking year and era into account. Will return the first month of the given era, if * the current year is an ascension year. * @param eyear the extended year * @internal */ - virtual int32_t getDefaultMonthInYear(int32_t eyear); + virtual int32_t getDefaultMonthInYear(int32_t eyear) override; /*** * Called by computeJulianDay. Returns the default day (1-based) for the month, @@ -222,7 +222,7 @@ class JapaneseCalendar : public GregorianCalendar { * @param mon the month in the year * @internal */ - virtual int32_t getDefaultDayInMonth(int32_t eyear, int32_t month); + virtual int32_t getDefaultDayInMonth(int32_t eyear, int32_t month) override; }; U_NAMESPACE_END @@ -231,3 +231,4 @@ U_NAMESPACE_END #endif //eof + diff --git a/deps/icu-small/source/i18n/listformatter.cpp b/deps/icu-small/source/i18n/listformatter.cpp index e5c01c0ab32c2b..4142fa461dada8 100644 --- a/deps/icu-small/source/i18n/listformatter.cpp +++ b/deps/icu-small/source/i18n/listformatter.cpp @@ -444,7 +444,7 @@ struct ListFormatter::ListPatternsSink : public ResourceSink { } virtual void put(const char *key, ResourceValue &value, UBool /*noFallback*/, - UErrorCode &errorCode) { + UErrorCode &errorCode) override { aliasedStyle[0] = 0; if (value.getType() == URES_ALIAS) { setAliasedStyle(value.getAliasUnicodeString(errorCode)); diff --git a/deps/icu-small/source/i18n/measfmt.cpp b/deps/icu-small/source/i18n/measfmt.cpp index 6334c6f9fdf235..a9a56a3b58d9f8 100644 --- a/deps/icu-small/source/i18n/measfmt.cpp +++ b/deps/icu-small/source/i18n/measfmt.cpp @@ -364,7 +364,7 @@ MeasureFormat::MeasureFormat( const Locale &locale, UMeasureFormatWidth w, NumberFormat *nfToAdopt, - UErrorCode &status) + UErrorCode &status) : cache(NULL), numberFormat(NULL), pluralRules(NULL), @@ -427,12 +427,12 @@ MeasureFormat::~MeasureFormat() { delete listFormatter; } -UBool MeasureFormat::operator==(const Format &other) const { +bool MeasureFormat::operator==(const Format &other) const { if (this == &other) { // Same object, equal - return TRUE; + return true; } if (!Format::operator==(other)) { - return FALSE; + return false; } const MeasureFormat &rhs = static_cast(other); @@ -441,7 +441,7 @@ UBool MeasureFormat::operator==(const Format &other) const { // differing widths aren't equivalent if (fWidth != rhs.fWidth) { - return FALSE; + return false; } // Width the same check locales. // We don't need to check locales if both objects have same cache. @@ -451,10 +451,10 @@ UBool MeasureFormat::operator==(const Format &other) const { const char *rhsLocaleId = rhs.getLocaleID(status); if (U_FAILURE(status)) { // On failure, assume not equal - return FALSE; + return false; } if (uprv_strcmp(localeId, rhsLocaleId) != 0) { - return FALSE; + return false; } } // Locales same, check NumberFormat if shared data differs. @@ -649,7 +649,7 @@ UBool MeasureFormat::setMeasureFormatLocale(const Locale &locale, UErrorCode &st } initMeasureFormat(locale, fWidth, NULL, status); return U_SUCCESS(status); -} +} const NumberFormat &MeasureFormat::getNumberFormatInternal() const { return **numberFormat; diff --git a/deps/icu-small/source/i18n/measunit.cpp b/deps/icu-small/source/i18n/measunit.cpp index f57495e65a1b64..5ad3991974d59e 100644 --- a/deps/icu-small/source/i18n/measunit.cpp +++ b/deps/icu-small/source/i18n/measunit.cpp @@ -31,7 +31,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(MeasureUnit) // the "End generated code" comment is auto generated code // and must not be edited manually. For instructions on how to correctly // update this code, refer to: -// http://site.icu-project.org/design/formatting/measureformat/updating-measure-unit +// https://icu.unicode.org/design/formatting/measureformat/updating-measure-unit // // Start generated code for measunit.cpp @@ -41,26 +41,26 @@ static const int32_t gOffsets[] = { 2, 7, 17, - 26, - 30, - 329, - 340, - 356, - 360, - 369, - 371, - 375, - 383, - 405, - 409, - 424, - 425, - 431, - 441, - 445, - 449, + 27, + 31, + 330, + 341, + 357, + 361, + 370, + 373, + 377, + 385, + 407, + 411, + 426, + 427, + 433, + 443, + 447, 451, - 485 + 453, + 487 }; static const int32_t kCurrencyOffset = 5; @@ -111,6 +111,7 @@ static const char * const gSubTypes[] = { "square-meter", "square-mile", "square-yard", + "item", "karat", "milligram-ofglucose-per-deciliter", "milligram-per-deciliter", @@ -463,6 +464,7 @@ static const char * const gSubTypes[] = { "kilojoule", "kilowatt-hour", "therm-us", + "kilowatt-hour-per-100-kilometer", "newton", "pound-force", "gigahertz", @@ -721,78 +723,86 @@ MeasureUnit MeasureUnit::getSquareYard() { return MeasureUnit(2, 9); } -MeasureUnit *MeasureUnit::createKarat(UErrorCode &status) { +MeasureUnit *MeasureUnit::createItem(UErrorCode &status) { return MeasureUnit::create(3, 0, status); } -MeasureUnit MeasureUnit::getKarat() { +MeasureUnit MeasureUnit::getItem() { return MeasureUnit(3, 0); } -MeasureUnit *MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode &status) { +MeasureUnit *MeasureUnit::createKarat(UErrorCode &status) { return MeasureUnit::create(3, 1, status); } -MeasureUnit MeasureUnit::getMilligramOfglucosePerDeciliter() { +MeasureUnit MeasureUnit::getKarat() { return MeasureUnit(3, 1); } -MeasureUnit *MeasureUnit::createMilligramPerDeciliter(UErrorCode &status) { +MeasureUnit *MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode &status) { return MeasureUnit::create(3, 2, status); } -MeasureUnit MeasureUnit::getMilligramPerDeciliter() { +MeasureUnit MeasureUnit::getMilligramOfglucosePerDeciliter() { return MeasureUnit(3, 2); } -MeasureUnit *MeasureUnit::createMillimolePerLiter(UErrorCode &status) { +MeasureUnit *MeasureUnit::createMilligramPerDeciliter(UErrorCode &status) { return MeasureUnit::create(3, 3, status); } -MeasureUnit MeasureUnit::getMillimolePerLiter() { +MeasureUnit MeasureUnit::getMilligramPerDeciliter() { return MeasureUnit(3, 3); } -MeasureUnit *MeasureUnit::createMole(UErrorCode &status) { +MeasureUnit *MeasureUnit::createMillimolePerLiter(UErrorCode &status) { return MeasureUnit::create(3, 4, status); } -MeasureUnit MeasureUnit::getMole() { +MeasureUnit MeasureUnit::getMillimolePerLiter() { return MeasureUnit(3, 4); } -MeasureUnit *MeasureUnit::createPercent(UErrorCode &status) { +MeasureUnit *MeasureUnit::createMole(UErrorCode &status) { return MeasureUnit::create(3, 5, status); } -MeasureUnit MeasureUnit::getPercent() { +MeasureUnit MeasureUnit::getMole() { return MeasureUnit(3, 5); } -MeasureUnit *MeasureUnit::createPermille(UErrorCode &status) { +MeasureUnit *MeasureUnit::createPercent(UErrorCode &status) { return MeasureUnit::create(3, 6, status); } -MeasureUnit MeasureUnit::getPermille() { +MeasureUnit MeasureUnit::getPercent() { return MeasureUnit(3, 6); } -MeasureUnit *MeasureUnit::createPartPerMillion(UErrorCode &status) { +MeasureUnit *MeasureUnit::createPermille(UErrorCode &status) { return MeasureUnit::create(3, 7, status); } -MeasureUnit MeasureUnit::getPartPerMillion() { +MeasureUnit MeasureUnit::getPermille() { return MeasureUnit(3, 7); } -MeasureUnit *MeasureUnit::createPermyriad(UErrorCode &status) { +MeasureUnit *MeasureUnit::createPartPerMillion(UErrorCode &status) { return MeasureUnit::create(3, 8, status); } -MeasureUnit MeasureUnit::getPermyriad() { +MeasureUnit MeasureUnit::getPartPerMillion() { return MeasureUnit(3, 8); } +MeasureUnit *MeasureUnit::createPermyriad(UErrorCode &status) { + return MeasureUnit::create(3, 9, status); +} + +MeasureUnit MeasureUnit::getPermyriad() { + return MeasureUnit(3, 9); +} + MeasureUnit *MeasureUnit::createLiterPer100Kilometers(UErrorCode &status) { return MeasureUnit::create(4, 0, status); } @@ -1145,22 +1155,30 @@ MeasureUnit MeasureUnit::getThermUs() { return MeasureUnit(9, 8); } -MeasureUnit *MeasureUnit::createNewton(UErrorCode &status) { +MeasureUnit *MeasureUnit::createKilowattHourPer100Kilometer(UErrorCode &status) { return MeasureUnit::create(10, 0, status); } -MeasureUnit MeasureUnit::getNewton() { +MeasureUnit MeasureUnit::getKilowattHourPer100Kilometer() { return MeasureUnit(10, 0); } -MeasureUnit *MeasureUnit::createPoundForce(UErrorCode &status) { +MeasureUnit *MeasureUnit::createNewton(UErrorCode &status) { return MeasureUnit::create(10, 1, status); } -MeasureUnit MeasureUnit::getPoundForce() { +MeasureUnit MeasureUnit::getNewton() { return MeasureUnit(10, 1); } +MeasureUnit *MeasureUnit::createPoundForce(UErrorCode &status) { + return MeasureUnit::create(10, 2, status); +} + +MeasureUnit MeasureUnit::getPoundForce() { + return MeasureUnit(10, 2); +} + MeasureUnit *MeasureUnit::createGigahertz(UErrorCode &status) { return MeasureUnit::create(11, 0, status); } @@ -2178,12 +2196,12 @@ const char *MeasureUnit::getIdentifier() const { return fImpl ? fImpl->identifier.data() : gSubTypes[getOffset()]; } -UBool MeasureUnit::operator==(const UObject& other) const { +bool MeasureUnit::operator==(const UObject& other) const { if (this == &other) { // Same object, equal - return TRUE; + return true; } if (typeid(*this) != typeid(other)) { // Different types, not equal - return FALSE; + return false; } const MeasureUnit &rhs = static_cast(other); return uprv_strcmp(getIdentifier(), rhs.getIdentifier()) == 0; diff --git a/deps/icu-small/source/i18n/measunit_extra.cpp b/deps/icu-small/source/i18n/measunit_extra.cpp index 76ada0e89cd668..8281119007949a 100644 --- a/deps/icu-small/source/i18n/measunit_extra.cpp +++ b/deps/icu-small/source/i18n/measunit_extra.cpp @@ -24,7 +24,6 @@ #include "unicode/bytestrie.h" #include "unicode/bytestriebuilder.h" #include "unicode/localpointer.h" -#include "unicode/measunit.h" #include "unicode/stringpiece.h" #include "unicode/stringtriebuilder.h" #include "unicode/ures.h" @@ -187,7 +186,7 @@ class SimpleUnitIdentifiersSink : public icu::ResourceSink { * @param noFallback Ignored. * @param status The standard ICU error code output parameter. */ - void put(const char * /*key*/, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) { + void put(const char * /*key*/, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) override { ResourceTable table = value.getTable(status); if (U_FAILURE(status)) return; @@ -275,7 +274,7 @@ class CategoriesSink : public icu::ResourceSink { explicit CategoriesSink(const UChar **out, int32_t &outSize, BytesTrieBuilder &trieBuilder) : outQuantitiesArray(out), outSize(outSize), trieBuilder(trieBuilder), outIndex(0) {} - void put(const char * /*key*/, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) { + void put(const char * /*key*/, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) override { ResourceArray array = value.getArray(status); if (U_FAILURE(status)) { return; @@ -335,9 +334,6 @@ char *gSerializedUnitExtrasStemTrie = nullptr; const UChar **gCategories = nullptr; // Number of items in `gCategories`. int32_t gCategoriesCount = 0; -// TODO: rather save an index into gCategories? -const char *kConsumption = "consumption"; -size_t kConsumptionLen = strlen("consumption"); // Serialized BytesTrie for mapping from base units to indices into gCategories. char *gSerializedUnitCategoriesTrie = nullptr; @@ -809,17 +805,13 @@ compareSingleUnits(const void* /*context*/, const void* left, const void* right) // Returns an index into the gCategories array, for the "unitQuantity" (aka // "type" or "category") associated with the given base unit identifier. Returns // -1 on failure, together with U_UNSUPPORTED_ERROR. -int32_t getUnitCategoryIndex(StringPiece baseUnitIdentifier, UErrorCode &status) { - umtx_initOnce(gUnitExtrasInitOnce, &initUnitExtras, status); - if (U_FAILURE(status)) { - return -1; - } - BytesTrie trie(gSerializedUnitCategoriesTrie); - UStringTrieResult result = trie.next(baseUnitIdentifier.data(), baseUnitIdentifier.length()); +int32_t getUnitCategoryIndex(BytesTrie &trie, StringPiece baseUnitIdentifier, UErrorCode &status) { + UStringTrieResult result = trie.reset().next(baseUnitIdentifier.data(), baseUnitIdentifier.length()); if (!USTRINGTRIE_HAS_VALUE(result)) { status = U_UNSUPPORTED_ERROR; return -1; } + return trie.getValue(); } @@ -847,29 +839,76 @@ umeas_getPrefixBase(UMeasurePrefix unitPrefix) { return 10; } -CharString U_I18N_API getUnitQuantity(StringPiece baseUnitIdentifier, UErrorCode &status) { +CharString U_I18N_API getUnitQuantity(const MeasureUnitImpl &baseMeasureUnitImpl, UErrorCode &status) { CharString result; - U_ASSERT(result.length() == 0); + MeasureUnitImpl baseUnitImpl = baseMeasureUnitImpl.copy(status); + UErrorCode localStatus = U_ZERO_ERROR; + umtx_initOnce(gUnitExtrasInitOnce, &initUnitExtras, status); if (U_FAILURE(status)) { return result; } - UErrorCode localStatus = U_ZERO_ERROR; - int32_t idx = getUnitCategoryIndex(baseUnitIdentifier, localStatus); + BytesTrie trie(gSerializedUnitCategoriesTrie); + + baseUnitImpl.serialize(status); + StringPiece identifier = baseUnitImpl.identifier.data(); + int32_t idx = getUnitCategoryIndex(trie, identifier, localStatus); + if (U_FAILURE(status)) { + return result; + } + + // In case the base unit identifier did not match any entry. if (U_FAILURE(localStatus)) { - // TODO(icu-units#130): support inverting any unit, with correct - // fallback logic: inversion and fallback may depend on presence or - // absence of a usage for that category. - if (uprv_strcmp(baseUnitIdentifier.data(), "meter-per-cubic-meter") == 0) { - result.append(kConsumption, (int32_t)kConsumptionLen, status); + localStatus = U_ZERO_ERROR; + baseUnitImpl.takeReciprocal(status); + baseUnitImpl.serialize(status); + identifier.set(baseUnitImpl.identifier.data()); + idx = getUnitCategoryIndex(trie, identifier, localStatus); + + if (U_FAILURE(status)) { return result; } + } + + // In case the reciprocal of the base unit identifier did not match any entry. + MeasureUnitImpl simplifiedUnit = baseMeasureUnitImpl.copyAndSimplify(status); + if (U_FAILURE(status)) { + return result; + } + if (U_FAILURE(localStatus)) { + localStatus = U_ZERO_ERROR; + simplifiedUnit.serialize(status); + identifier.set(simplifiedUnit.identifier.data()); + idx = getUnitCategoryIndex(trie, identifier, localStatus); + + if (U_FAILURE(status)) { + return result; + } + } + + // In case the simplified base unit identifier did not match any entry. + if (U_FAILURE(localStatus)) { + localStatus = U_ZERO_ERROR; + simplifiedUnit.takeReciprocal(status); + simplifiedUnit.serialize(status); + identifier.set(simplifiedUnit.identifier.data()); + idx = getUnitCategoryIndex(trie, identifier, localStatus); + + if (U_FAILURE(status)) { + return result; + } + } + + // If there is no match at all, throw an exception. + if (U_FAILURE(localStatus)) { status = U_INVALID_FORMAT_ERROR; return result; } + if (idx < 0 || idx >= gCategoriesCount) { status = U_INVALID_FORMAT_ERROR; return result; } + result.appendInvariantChars(gCategories[idx], u_strlen(gCategories[idx]), status); return result; } @@ -911,7 +950,7 @@ void SingleUnitImpl::appendNeutralIdentifier(CharString &result, UErrorCode &sta int32_t absPower = std::abs(this->dimensionality); U_ASSERT(absPower > 0); // "this function does not support the dimensionless single units"; - + if (absPower == 1) { // no-op } else if (absPower == 2) { @@ -989,6 +1028,33 @@ void MeasureUnitImpl::takeReciprocal(UErrorCode& /*status*/) { } } +MeasureUnitImpl MeasureUnitImpl::copyAndSimplify(UErrorCode &status) const { + MeasureUnitImpl result; + for (int32_t i = 0; i < singleUnits.length(); i++) { + const SingleUnitImpl &singleUnit = *this->singleUnits[i]; + + // The following `for` loop will cause time complexity to be O(n^2). + // However, n is very small (number of units, generally, at maximum equal to 10) + bool unitExist = false; + for (int32_t j = 0; j < result.singleUnits.length(); j++) { + if (uprv_strcmp(result.singleUnits[j]->getSimpleUnitID(), singleUnit.getSimpleUnitID()) == + 0 && + result.singleUnits[j]->unitPrefix == singleUnit.unitPrefix) { + unitExist = true; + result.singleUnits[j]->dimensionality = + result.singleUnits[j]->dimensionality + singleUnit.dimensionality; + break; + } + } + + if (!unitExist) { + result.appendSingleUnit(singleUnit, status); + } + } + + return result; +} + bool MeasureUnitImpl::appendSingleUnit(const SingleUnitImpl &singleUnit, UErrorCode &status) { identifier.clear(); diff --git a/deps/icu-small/source/i18n/measunit_impl.h b/deps/icu-small/source/i18n/measunit_impl.h index 5028210ab09b3d..c60ff2fc33bdc9 100644 --- a/deps/icu-small/source/i18n/measunit_impl.h +++ b/deps/icu-small/source/i18n/measunit_impl.h @@ -29,13 +29,14 @@ static const char kDefaultCurrency8[] = "XXX"; * empty. * * This only supports base units: other units must be resolved to base units - * before passing to this function, otherwise U_UNSUPPORTED_ERROR status will be + * before passing to this function, otherwise U_UNSUPPORTED_ERROR status may be * returned. * * Categories are found in `unitQuantities` in the `units` resource (see * `units.txt`). */ -CharString U_I18N_API getUnitQuantity(StringPiece baseUnitIdentifier, UErrorCode &status); +// TODO: make this function accepts any `MeasureUnit` as Java and move it to the `UnitsData` class. +CharString U_I18N_API getUnitQuantity(const MeasureUnitImpl &baseMeasureUnitImpl, UErrorCode &status); /** * A struct representing a single unit (optional SI or binary prefix, and dimensionality). @@ -96,6 +97,7 @@ struct U_I18N_API SingleUnitImpl : public UMemory { if (dimensionality > 0 && other.dimensionality < 0) { return -1; } + // Sort by official quantity order int32_t thisQuantity = this->getUnitCategoryIndex(); int32_t otherQuantity = other.getUnitCategoryIndex(); @@ -105,6 +107,7 @@ struct U_I18N_API SingleUnitImpl : public UMemory { if (thisQuantity > otherQuantity) { return 1; } + // If quantity order didn't help, then we go by index. if (index < other.index) { return -1; @@ -112,15 +115,39 @@ struct U_I18N_API SingleUnitImpl : public UMemory { if (index > other.index) { return 1; } - // TODO: revisit if the spec dictates prefix sort order - it doesn't - // currently. For now we're sorting binary prefixes before SI prefixes, - // as per enum values order. - if (unitPrefix < other.unitPrefix) { + + // When comparing binary prefixes vs SI prefixes, instead of comparing the actual values, we can + // multiply the binary prefix power by 3 and compare the powers. if they are equal, we can can + // compare the bases. + // NOTE: this methodology will fail if the binary prefix more than or equal 98. + int32_t unitBase = umeas_getPrefixBase(unitPrefix); + int32_t otherUnitBase = umeas_getPrefixBase(other.unitPrefix); + + // Values for comparison purposes only. + int32_t unitPower = unitBase == 1024 /* Binary Prefix */ ? umeas_getPrefixPower(unitPrefix) * 3 + : umeas_getPrefixPower(unitPrefix); + int32_t otherUnitPower = + otherUnitBase == 1024 /* Binary Prefix */ ? umeas_getPrefixPower(other.unitPrefix) * 3 + : umeas_getPrefixPower(other.unitPrefix); + + // NOTE: if the unitPower is less than the other, + // we return 1 not -1. Thus because we want th sorting order + // for the bigger prefix to be before the smaller. + // Example: megabyte should come before kilobyte. + if (unitPower < otherUnitPower) { + return 1; + } + if (unitPower > otherUnitPower) { return -1; } - if (unitPrefix > other.unitPrefix) { + + if (unitBase < otherUnitBase) { return 1; } + if (unitBase > otherUnitBase) { + return -1; + } + return 0; } @@ -211,7 +238,7 @@ class U_I18N_API MeasureUnitImpl : public UMemory { /** * Extract the MeasureUnitImpl from a MeasureUnit, or parse if it is not present. - * + * * @param measureUnit The source MeasureUnit. * @param memory A place to write the new MeasureUnitImpl if parsing is required. * @param status Set if an error occurs. @@ -251,10 +278,10 @@ class U_I18N_API MeasureUnitImpl : public UMemory { /** * Extracts the list of all the individual units inside the `MeasureUnitImpl` with their indices. - * For example: + * For example: * - if the `MeasureUnitImpl` is `foot-per-hour` - * it will return a list of 1 {(0, `foot-per-hour`)} - * - if the `MeasureUnitImpl` is `foot-and-inch` + * it will return a list of 1 {(0, `foot-per-hour`)} + * - if the `MeasureUnitImpl` is `foot-and-inch` * it will return a list of 2 {(0, `foot`), (1, `inch`)} */ MaybeStackVector @@ -263,6 +290,16 @@ class U_I18N_API MeasureUnitImpl : public UMemory { /** Mutates this MeasureUnitImpl to take the reciprocal. */ void takeReciprocal(UErrorCode& status); + /** + * Returns a simplified version of the unit. + * NOTE: the simplification happen when there are two units equals in their base unit and their + * prefixes. + * + * Example 1: "square-meter-per-meter" --> "meter" + * Example 2: "square-millimeter-per-meter" --> "square-millimeter-per-meter" + */ + MeasureUnitImpl copyAndSimplify(UErrorCode &status) const; + /** * Mutates this MeasureUnitImpl to append a single unit. * @@ -271,6 +308,11 @@ class U_I18N_API MeasureUnitImpl : public UMemory { */ bool appendSingleUnit(const SingleUnitImpl& singleUnit, UErrorCode& status); + /** + * Normalizes a MeasureUnitImpl and generate the identifier string in place. + */ + void serialize(UErrorCode &status); + /** The complexity, either SINGLE, COMPOUND, or MIXED. */ UMeasureUnitComplexity complexity = UMEASURE_UNIT_SINGLE; @@ -288,12 +330,6 @@ class U_I18N_API MeasureUnitImpl : public UMemory { */ CharString identifier; - private: - /** - * Normalizes a MeasureUnitImpl and generate the identifier string in place. - */ - void serialize(UErrorCode &status); - // For calling serialize // TODO(icu-units#147): revisit serialization friend class number::impl::LongNameHandler; diff --git a/deps/icu-small/source/i18n/measure.cpp b/deps/icu-small/source/i18n/measure.cpp index 23adba100707aa..b9c47fd401596d 100644 --- a/deps/icu-small/source/i18n/measure.cpp +++ b/deps/icu-small/source/i18n/measure.cpp @@ -60,12 +60,12 @@ Measure::~Measure() { delete unit; } -UBool Measure::operator==(const UObject& other) const { +bool Measure::operator==(const UObject& other) const { if (this == &other) { // Same object, equal - return TRUE; + return true; } if (typeid(*this) != typeid(other)) { // Different types, not equal - return FALSE; + return false; } const Measure &m = static_cast(other); return number == m.number && diff --git a/deps/icu-small/source/i18n/msgfmt.cpp b/deps/icu-small/source/i18n/msgfmt.cpp index d2631776e83bb0..b8cb2e2ca560fe 100644 --- a/deps/icu-small/source/i18n/msgfmt.cpp +++ b/deps/icu-small/source/i18n/msgfmt.cpp @@ -389,10 +389,10 @@ MessageFormat::operator=(const MessageFormat& that) return *this; } -UBool +bool MessageFormat::operator==(const Format& rhs) const { - if (this == &rhs) return TRUE; + if (this == &rhs) return true; MessageFormat& that = (MessageFormat&)rhs; @@ -400,37 +400,37 @@ MessageFormat::operator==(const Format& rhs) const if (!Format::operator==(rhs) || msgPattern != that.msgPattern || fLocale != that.fLocale) { - return FALSE; + return false; } // Compare hashtables. if ((customFormatArgStarts == NULL) != (that.customFormatArgStarts == NULL)) { - return FALSE; + return false; } if (customFormatArgStarts == NULL) { - return TRUE; + return true; } UErrorCode ec = U_ZERO_ERROR; const int32_t count = uhash_count(customFormatArgStarts); const int32_t rhs_count = uhash_count(that.customFormatArgStarts); if (count != rhs_count) { - return FALSE; + return false; } int32_t idx = 0, rhs_idx = 0, pos = UHASH_FIRST, rhs_pos = UHASH_FIRST; for (; idx < count && rhs_idx < rhs_count && U_SUCCESS(ec); ++idx, ++rhs_idx) { const UHashElement* cur = uhash_nextElement(customFormatArgStarts, &pos); const UHashElement* rhs_cur = uhash_nextElement(that.customFormatArgStarts, &rhs_pos); if (cur->key.integer != rhs_cur->key.integer) { - return FALSE; + return false; } const Format* format = (const Format*)uhash_iget(cachedFormatters, cur->key.integer); const Format* rhs_format = (const Format*)uhash_iget(that.cachedFormatters, rhs_cur->key.integer); if (*format != *rhs_format) { - return FALSE; + return false; } } - return TRUE; + return true; } // ------------------------------------- @@ -637,7 +637,7 @@ MessageFormat::adoptFormats(Format** newFormats, // ------------------------------------- // Sets the new formats array and updates the array count. -// This MessageFormat instance maks a copy of the new formats. +// This MessageFormat instance makes a copy of the new formats. void MessageFormat::setFormats(const Format** newFormats, @@ -862,7 +862,7 @@ MessageFormat::getFormatNames(UErrorCode& status) { fFormatNames->setDeleter(uprv_deleteUObject); for (int32_t partIndex = 0; (partIndex = nextTopLevelArgStart(partIndex)) >= 0;) { - fFormatNames->addElement(new UnicodeString(getArgName(partIndex + 1)), status); + fFormatNames->addElementX(new UnicodeString(getArgName(partIndex + 1)), status); } StringEnumeration* nameEnumerator = new FormatNameEnumeration(fFormatNames, status); @@ -1869,8 +1869,8 @@ UBool MessageFormat::equalFormats(const void* left, const void* right) { } -UBool MessageFormat::DummyFormat::operator==(const Format&) const { - return TRUE; +bool MessageFormat::DummyFormat::operator==(const Format&) const { + return true; } MessageFormat::DummyFormat* MessageFormat::DummyFormat::clone() const { diff --git a/deps/icu-small/source/i18n/msgfmt_impl.h b/deps/icu-small/source/i18n/msgfmt_impl.h index 0f77d12d0bb6e1..57988389132a67 100644 --- a/deps/icu-small/source/i18n/msgfmt_impl.h +++ b/deps/icu-small/source/i18n/msgfmt_impl.h @@ -17,7 +17,7 @@ #include "unicode/utypes.h" #if !UCONFIG_NO_FORMATTING - + #include "unicode/msgfmt.h" #include "uvector.h" #include "unicode/strenum.h" @@ -29,10 +29,10 @@ class FormatNameEnumeration : public StringEnumeration { FormatNameEnumeration(UVector *fFormatNames, UErrorCode& status); virtual ~FormatNameEnumeration(); static UClassID U_EXPORT2 getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; - virtual const UnicodeString* snext(UErrorCode& status); - virtual void reset(UErrorCode& status); - virtual int32_t count(UErrorCode& status) const; + virtual UClassID getDynamicClassID(void) const override; + virtual const UnicodeString* snext(UErrorCode& status) override; + virtual void reset(UErrorCode& status) override; + virtual int32_t count(UErrorCode& status) const override; private: int32_t pos; UVector *fFormatNames; diff --git a/deps/icu-small/source/i18n/name2uni.cpp b/deps/icu-small/source/i18n/name2uni.cpp index 8e13b0025475ed..ffbbf152d33240 100644 --- a/deps/icu-small/source/i18n/name2uni.cpp +++ b/deps/icu-small/source/i18n/name2uni.cpp @@ -220,7 +220,7 @@ void NameUnicodeTransliterator::handleTransliterate(Replaceable& text, UTransPos openPos = -1; // close off candidate continue; // *** reprocess char32At(cursor) } - + // Check if c is a legal char. We assume here that // legal.contains(OPEN_DELIM) is FALSE, so when we abort a // name, we don't have to go back to openPos+1. @@ -232,7 +232,7 @@ void NameUnicodeTransliterator::handleTransliterate(Replaceable& text, UTransPos mode = 0; } } - + // Invalid character else { --cursor; // Backup and reprocess this character @@ -244,7 +244,7 @@ void NameUnicodeTransliterator::handleTransliterate(Replaceable& text, UTransPos cursor += U16_LENGTH(c); } - + offsets.contextLimit += limit - offsets.limit; offsets.limit = limit; // In incremental mode, only advance the cursor up to the last diff --git a/deps/icu-small/source/i18n/name2uni.h b/deps/icu-small/source/i18n/name2uni.h index 44ad85fb822cb3..6881c6bc85745c 100644 --- a/deps/icu-small/source/i18n/name2uni.h +++ b/deps/icu-small/source/i18n/name2uni.h @@ -49,12 +49,12 @@ class NameUnicodeTransliterator : public Transliterator { * Transliterator API. * @return A copy of the object. */ - virtual NameUnicodeTransliterator* clone() const; + virtual NameUnicodeTransliterator* clone() const override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -73,7 +73,7 @@ class NameUnicodeTransliterator : public Transliterator { * pos.contextLimit. Otherwise, assume the text is complete. */ virtual void handleTransliterate(Replaceable& text, UTransPosition& offset, - UBool isIncremental) const; + UBool isIncremental) const override; /** * Set of characters which occur in Unicode character names. diff --git a/deps/icu-small/source/i18n/nfrlist.h b/deps/icu-small/source/i18n/nfrlist.h index db28c4d36f8d18..3eb1882b2f957e 100644 --- a/deps/icu-small/source/i18n/nfrlist.h +++ b/deps/icu-small/source/i18n/nfrlist.h @@ -38,7 +38,7 @@ class NFRuleList : public UMemory { uint32_t fCount; uint32_t fCapacity; public: - NFRuleList(uint32_t capacity = 10) + NFRuleList(uint32_t capacity = 10) : fStuff(capacity ? (NFRule**)uprv_malloc(capacity * sizeof(NFRule*)) : NULL) , fCount(0) , fCapacity(capacity) {} @@ -52,9 +52,9 @@ class NFRuleList : public UMemory { } NFRule* operator[](uint32_t index) const { return fStuff != NULL ? fStuff[index] : NULL; } NFRule* remove(uint32_t index) { - if (fStuff == NULL) { - return NULL; - } + if (fStuff == NULL) { + return NULL; + } NFRule* result = fStuff[index]; fCount -= 1; for (uint32_t i = index; i < fCount; ++i) { // assumes small arrays @@ -68,10 +68,10 @@ class NFRuleList : public UMemory { fStuff = (NFRule**)uprv_realloc(fStuff, fCapacity * sizeof(NFRule*)); // assume success } if (fStuff != NULL) { - fStuff[fCount++] = thing; + fStuff[fCount++] = thing; } else { - fCapacity = 0; - fCount = 0; + fCapacity = 0; + fCount = 0; } } uint32_t size() const { return fCount; } diff --git a/deps/icu-small/source/i18n/nfrs.cpp b/deps/icu-small/source/i18n/nfrs.cpp index 11056dbc68281e..df04e33e04ff12 100644 --- a/deps/icu-small/source/i18n/nfrs.cpp +++ b/deps/icu-small/source/i18n/nfrs.cpp @@ -344,7 +344,7 @@ util_equalRules(const NFRule* rule1, const NFRule* rule2) return FALSE; } -UBool +bool NFRuleSet::operator==(const NFRuleSet& rhs) const { if (rules.size() == rhs.rules.size() && @@ -354,19 +354,19 @@ NFRuleSet::operator==(const NFRuleSet& rhs) const // ...then compare the non-numerical rule lists... for (int i = 0; i < NON_NUMERICAL_RULE_LENGTH; i++) { if (!util_equalRules(nonNumericalRules[i], rhs.nonNumericalRules[i])) { - return FALSE; + return false; } } // ...then compare the rule lists... for (uint32_t i = 0; i < rules.size(); ++i) { if (*rules[i] != *rhs.rules[i]) { - return FALSE; + return false; } } - return TRUE; + return true; } - return FALSE; + return false; } void @@ -630,7 +630,7 @@ NFRuleSet::findFractionRuleSetRule(double number) const // value, then the first one (the one we found above) is used if // the numerator of the fraction is 1 and the second one is used if // the numerator of the fraction is anything else (this lets us - // do things like "one third"/"two thirds" without haveing to define + // do things like "one third"/"two thirds" without having to define // a whole bunch of extra rule sets) if ((unsigned)(winner + 1) < rules.size() && rules[winner + 1]->getBaseValue() == rules[winner]->getBaseValue()) { @@ -762,7 +762,7 @@ NFRuleSet::parse(const UnicodeString& text, ParsePosition& pos, double upperBoun #ifdef RBNF_DEBUG fprintf(stderr, " exit\n"); #endif - // finally, update the parse postion we were passed to point to the + // finally, update the parse position we were passed to point to the // first character we didn't use, and return the result that // corresponds to that string of characters pos = highWaterMark; @@ -821,7 +821,7 @@ int64_t util64_fromDouble(double d) { } else if (d > mant) { d = mant; } - UBool neg = d < 0; + UBool neg = d < 0; if (neg) { d = -d; } @@ -852,12 +852,12 @@ uint64_t util64_pow(uint32_t base, uint16_t exponent) { return result; } -static const uint8_t asciiDigits[] = { +static const uint8_t asciiDigits[] = { 0x30u, 0x31u, 0x32u, 0x33u, 0x34u, 0x35u, 0x36u, 0x37u, 0x38u, 0x39u, 0x61u, 0x62u, 0x63u, 0x64u, 0x65u, 0x66u, 0x67u, 0x68u, 0x69u, 0x6au, 0x6bu, 0x6cu, 0x6du, 0x6eu, 0x6fu, 0x70u, 0x71u, 0x72u, 0x73u, 0x74u, 0x75u, 0x76u, - 0x77u, 0x78u, 0x79u, 0x7au, + 0x77u, 0x78u, 0x79u, 0x7au, }; static const UChar kUMinus = (UChar)0x002d; @@ -938,7 +938,7 @@ int64_t util64_utoi(const UChar* str, uint32_t radix) } uint32_t util64_toa(int64_t w, char* buf, uint32_t len, uint32_t radix, UBool raw) -{ +{ if (radix > 36) { radix = 36; } else if (radix < 2) { @@ -984,7 +984,7 @@ uint32_t util64_toa(int64_t w, char* buf, uint32_t len, uint32_t radix, UBool ra #endif uint32_t util64_tou(int64_t w, UChar* buf, uint32_t len, uint32_t radix, UBool raw) -{ +{ if (radix > 36) { radix = 36; } else if (radix < 2) { diff --git a/deps/icu-small/source/i18n/nfrs.h b/deps/icu-small/source/i18n/nfrs.h index e9b955ddff142d..a6ad3a3bb7f05d 100644 --- a/deps/icu-small/source/i18n/nfrs.h +++ b/deps/icu-small/source/i18n/nfrs.h @@ -40,8 +40,8 @@ class NFRuleSet : public UMemory { ~NFRuleSet(); - UBool operator==(const NFRuleSet& rhs) const; - UBool operator!=(const NFRuleSet& rhs) const { return !operator==(rhs); } + bool operator==(const NFRuleSet& rhs) const; + bool operator!=(const NFRuleSet& rhs) const { return !operator==(rhs); } UBool isPublic() const { return fIsPublic; } @@ -66,7 +66,7 @@ class NFRuleSet : public UMemory { const NFRule * findNormalRule(int64_t number) const; const NFRule * findDoubleRule(double number) const; const NFRule * findFractionRuleSetRule(double number) const; - + friend class NFSubstitution; private: diff --git a/deps/icu-small/source/i18n/nfrule.cpp b/deps/icu-small/source/i18n/nfrule.cpp index cba41d14bb1fa8..4bb0785127f7ec 100644 --- a/deps/icu-small/source/i18n/nfrule.cpp +++ b/deps/icu-small/source/i18n/nfrule.cpp @@ -115,7 +115,7 @@ NFRule::makeRules(UnicodeString& description, // we know we're making at least one rule, so go ahead and // new it up and initialize its basevalue and divisor // (this also strips the rule descriptor, if any, off the - // descripton string) + // description string) NFRule* rule1 = new NFRule(rbnf, description, status); /* test for NULL */ if (rule1 == 0) { @@ -193,7 +193,7 @@ NFRule::makeRules(UnicodeString& description, rule2->radix = rule1->radix; rule2->exponent = rule1->exponent; - // rule2's rule text omits the stuff in brackets: initalize + // rule2's rule text omits the stuff in brackets: initialize // its rule text and substitutions accordingly sbuf.append(description, 0, brack1); if (brack2 + 1 < description.length()) { @@ -631,7 +631,7 @@ util_equalSubstitutions(const NFSubstitution* sub1, const NFSubstitution* sub2) * @param that The rule to compare this one against * @return True is the two rules are functionally equivalent */ -UBool +bool NFRule::operator==(const NFRule& rhs) const { return baseValue == rhs.baseValue @@ -1107,14 +1107,14 @@ NFRule::stripPrefix(UnicodeString& text, const UnicodeString& prefix, ParsePosit { // if the prefix text is empty, dump out without doing anything if (prefix.length() != 0) { - UErrorCode status = U_ZERO_ERROR; + UErrorCode status = U_ZERO_ERROR; // use prefixLength() to match the beginning of // "text" against "prefix". This function returns the // number of characters from "text" that matched (or 0 if // we didn't match the whole prefix) int32_t pfl = prefixLength(text, prefix, status); if (U_FAILURE(status)) { // Memory allocation error. - return; + return; } if (pfl != 0) { // if we got a successful match, update the parse position @@ -1170,9 +1170,9 @@ NFRule::matchToDelimiter(const UnicodeString& text, // use "sub"'s doParse() method to match the text before the // instance of "delimiter" we just found. if (!allIgnorable(delimiter, status)) { - if (U_FAILURE(status)) { //Memory allocation error. - return 0; - } + if (U_FAILURE(status)) { //Memory allocation error. + return 0; + } ParsePosition tempPP; Formattable result; @@ -1533,7 +1533,7 @@ NFRule::findTextLenient(const UnicodeString& str, // in JDK 1.2, CollationElementIterator provides us with an // API to map between character offsets and collation elements // and we can do this by marching through the string comparing - // collation elements. We can't do that in JDK 1.1. Insted, + // collation elements. We can't do that in JDK 1.1. Instead, // we have to go through this horrible slow mess: int32_t p = startingAt; int32_t keyLen = 0; diff --git a/deps/icu-small/source/i18n/nfrule.h b/deps/icu-small/source/i18n/nfrule.h index 12431c0dba33e8..5e615e485c8077 100644 --- a/deps/icu-small/source/i18n/nfrule.h +++ b/deps/icu-small/source/i18n/nfrule.h @@ -45,17 +45,17 @@ class NFRule : public UMemory { }; static void makeRules(UnicodeString& definition, - NFRuleSet* ruleSet, - const NFRule* predecessor, - const RuleBasedNumberFormat* rbnf, + NFRuleSet* ruleSet, + const NFRule* predecessor, + const RuleBasedNumberFormat* rbnf, NFRuleList& ruleList, UErrorCode& status); NFRule(const RuleBasedNumberFormat* rbnf, const UnicodeString &ruleText, UErrorCode &status); ~NFRule(); - UBool operator==(const NFRule& rhs) const; - UBool operator!=(const NFRule& rhs) const { return !operator==(rhs); } + bool operator==(const NFRule& rhs) const; + bool operator!=(const NFRule& rhs) const { return !operator==(rhs); } ERuleType getType() const { return (ERuleType)(baseValue <= kNoBase ? (ERuleType)baseValue : kOtherRule); } void setType(ERuleType ruleType) { baseValue = (int32_t)ruleType; } @@ -70,9 +70,9 @@ class NFRule : public UMemory { void doFormat(int64_t number, UnicodeString& toAppendTo, int32_t pos, int32_t recursionCount, UErrorCode& status) const; void doFormat(double number, UnicodeString& toAppendTo, int32_t pos, int32_t recursionCount, UErrorCode& status) const; - UBool doParse(const UnicodeString& text, - ParsePosition& pos, - UBool isFractional, + UBool doParse(const UnicodeString& text, + ParsePosition& pos, + UBool isFractional, double upperBound, uint32_t nonNumericalExecutedRuleMask, Formattable& result) const; @@ -81,7 +81,7 @@ class NFRule : public UMemory { void _appendRuleText(UnicodeString& result) const; - int32_t findTextLenient(const UnicodeString& str, const UnicodeString& key, + int32_t findTextLenient(const UnicodeString& str, const UnicodeString& key, int32_t startingAt, int32_t* resultCount) const; void setDecimalFormatSymbols(const DecimalFormatSymbols &newSymbols, UErrorCode& status); @@ -90,18 +90,18 @@ class NFRule : public UMemory { void parseRuleDescriptor(UnicodeString& descriptor, UErrorCode& status); void extractSubstitutions(const NFRuleSet* ruleSet, const UnicodeString &ruleText, const NFRule* predecessor, UErrorCode& status); NFSubstitution* extractSubstitution(const NFRuleSet* ruleSet, const NFRule* predecessor, UErrorCode& status); - + int16_t expectedExponent() const; int32_t indexOfAnyRulePrefix() const; double matchToDelimiter(const UnicodeString& text, int32_t startPos, double baseValue, - const UnicodeString& delimiter, ParsePosition& pp, const NFSubstitution* sub, + const UnicodeString& delimiter, ParsePosition& pp, const NFSubstitution* sub, uint32_t nonNumericalExecutedRuleMask, double upperBound) const; void stripPrefix(UnicodeString& text, const UnicodeString& prefix, ParsePosition& pp) const; int32_t prefixLength(const UnicodeString& str, const UnicodeString& prefix, UErrorCode& status) const; UBool allIgnorable(const UnicodeString& str, UErrorCode& status) const; - int32_t findText(const UnicodeString& str, const UnicodeString& key, + int32_t findText(const UnicodeString& str, const UnicodeString& key, int32_t startingAt, int32_t* resultCount) const; private: @@ -126,3 +126,4 @@ U_NAMESPACE_END // NFRULE_H #endif + diff --git a/deps/icu-small/source/i18n/nfsubs.cpp b/deps/icu-small/source/i18n/nfsubs.cpp index e3ea3938835ea3..70ac18be468635 100644 --- a/deps/icu-small/source/i18n/nfsubs.cpp +++ b/deps/icu-small/source/i18n/nfsubs.cpp @@ -58,15 +58,15 @@ class SameValueSubstitution : public NFSubstitution { UErrorCode& status); virtual ~SameValueSubstitution(); - virtual int64_t transformNumber(int64_t number) const { return number; } - virtual double transformNumber(double number) const { return number; } - virtual double composeRuleValue(double newRuleValue, double /*oldRuleValue*/) const { return newRuleValue; } - virtual double calcUpperBound(double oldUpperBound) const { return oldUpperBound; } - virtual UChar tokenChar() const { return (UChar)0x003d; } // '=' + virtual int64_t transformNumber(int64_t number) const override { return number; } + virtual double transformNumber(double number) const override { return number; } + virtual double composeRuleValue(double newRuleValue, double /*oldRuleValue*/) const override { return newRuleValue; } + virtual double calcUpperBound(double oldUpperBound) const override { return oldUpperBound; } + virtual UChar tokenChar() const override { return (UChar)0x003d; } // '=' public: static UClassID getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; SameValueSubstitution::~SameValueSubstitution() {} @@ -88,7 +88,7 @@ class MultiplierSubstitution : public NFSubstitution { } virtual ~MultiplierSubstitution(); - virtual void setDivisor(int32_t radix, int16_t exponent, UErrorCode& status) { + virtual void setDivisor(int32_t radix, int16_t exponent, UErrorCode& status) override { divisor = util64_pow(radix, exponent); if(divisor == 0) { @@ -96,13 +96,13 @@ class MultiplierSubstitution : public NFSubstitution { } } - virtual UBool operator==(const NFSubstitution& rhs) const; + virtual bool operator==(const NFSubstitution& rhs) const override; - virtual int64_t transformNumber(int64_t number) const { + virtual int64_t transformNumber(int64_t number) const override { return number / divisor; } - virtual double transformNumber(double number) const { + virtual double transformNumber(double number) const override { if (getRuleSet()) { return uprv_floor(number / divisor); } else { @@ -110,17 +110,17 @@ class MultiplierSubstitution : public NFSubstitution { } } - virtual double composeRuleValue(double newRuleValue, double /*oldRuleValue*/) const { + virtual double composeRuleValue(double newRuleValue, double /*oldRuleValue*/) const override { return newRuleValue * divisor; } - virtual double calcUpperBound(double /*oldUpperBound*/) const { return static_cast(divisor); } + virtual double calcUpperBound(double /*oldUpperBound*/) const override { return static_cast(divisor); } - virtual UChar tokenChar() const { return (UChar)0x003c; } // '<' + virtual UChar tokenChar() const override { return (UChar)0x003c; } // '<' public: static UClassID getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; MultiplierSubstitution::~MultiplierSubstitution() {} @@ -137,7 +137,7 @@ class ModulusSubstitution : public NFSubstitution { UErrorCode& status); virtual ~ModulusSubstitution(); - virtual void setDivisor(int32_t radix, int16_t exponent, UErrorCode& status) { + virtual void setDivisor(int32_t radix, int16_t exponent, UErrorCode& status) override { divisor = util64_pow(radix, exponent); if (divisor == 0) { @@ -145,37 +145,37 @@ class ModulusSubstitution : public NFSubstitution { } } - virtual UBool operator==(const NFSubstitution& rhs) const; + virtual bool operator==(const NFSubstitution& rhs) const override; - virtual void doSubstitution(int64_t number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const; - virtual void doSubstitution(double number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const; + virtual void doSubstitution(int64_t number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const override; + virtual void doSubstitution(double number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const override; - virtual int64_t transformNumber(int64_t number) const { return number % divisor; } - virtual double transformNumber(double number) const { return uprv_fmod(number, static_cast(divisor)); } + virtual int64_t transformNumber(int64_t number) const override { return number % divisor; } + virtual double transformNumber(double number) const override { return uprv_fmod(number, static_cast(divisor)); } - virtual UBool doParse(const UnicodeString& text, + virtual UBool doParse(const UnicodeString& text, ParsePosition& parsePosition, double baseValue, double upperBound, UBool lenientParse, uint32_t nonNumericalExecutedRuleMask, - Formattable& result) const; + Formattable& result) const override; - virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const { + virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const override { return oldRuleValue - uprv_fmod(oldRuleValue, static_cast(divisor)) + newRuleValue; } - virtual double calcUpperBound(double /*oldUpperBound*/) const { return static_cast(divisor); } + virtual double calcUpperBound(double /*oldUpperBound*/) const override { return static_cast(divisor); } - virtual UBool isModulusSubstitution() const { return TRUE; } + virtual UBool isModulusSubstitution() const override { return TRUE; } - virtual UChar tokenChar() const { return (UChar)0x003e; } // '>' + virtual UChar tokenChar() const override { return (UChar)0x003e; } // '>' - virtual void toString(UnicodeString& result) const; + virtual void toString(UnicodeString& result) const override; public: static UClassID getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; ModulusSubstitution::~ModulusSubstitution() {} @@ -189,15 +189,15 @@ class IntegralPartSubstitution : public NFSubstitution { : NFSubstitution(_pos, _ruleSet, description, status) {} virtual ~IntegralPartSubstitution(); - virtual int64_t transformNumber(int64_t number) const { return number; } - virtual double transformNumber(double number) const { return uprv_floor(number); } - virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const { return newRuleValue + oldRuleValue; } - virtual double calcUpperBound(double /*oldUpperBound*/) const { return DBL_MAX; } - virtual UChar tokenChar() const { return (UChar)0x003c; } // '<' + virtual int64_t transformNumber(int64_t number) const override { return number; } + virtual double transformNumber(double number) const override { return uprv_floor(number); } + virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const override { return newRuleValue + oldRuleValue; } + virtual double calcUpperBound(double /*oldUpperBound*/) const override { return DBL_MAX; } + virtual UChar tokenChar() const override { return (UChar)0x003c; } // '<' public: static UClassID getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; IntegralPartSubstitution::~IntegralPartSubstitution() {} @@ -213,12 +213,12 @@ class FractionalPartSubstitution : public NFSubstitution { UErrorCode& status); virtual ~FractionalPartSubstitution(); - virtual UBool operator==(const NFSubstitution& rhs) const; + virtual bool operator==(const NFSubstitution& rhs) const override; - virtual void doSubstitution(double number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const; - virtual void doSubstitution(int64_t /*number*/, UnicodeString& /*toInsertInto*/, int32_t /*_pos*/, int32_t /*recursionCount*/, UErrorCode& /*status*/) const {} - virtual int64_t transformNumber(int64_t /*number*/) const { return 0; } - virtual double transformNumber(double number) const { return number - uprv_floor(number); } + virtual void doSubstitution(double number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const override; + virtual void doSubstitution(int64_t /*number*/, UnicodeString& /*toInsertInto*/, int32_t /*_pos*/, int32_t /*recursionCount*/, UErrorCode& /*status*/) const override {} + virtual int64_t transformNumber(int64_t /*number*/) const override { return 0; } + virtual double transformNumber(double number) const override { return number - uprv_floor(number); } virtual UBool doParse(const UnicodeString& text, ParsePosition& parsePosition, @@ -226,15 +226,15 @@ class FractionalPartSubstitution : public NFSubstitution { double upperBound, UBool lenientParse, uint32_t nonNumericalExecutedRuleMask, - Formattable& result) const; + Formattable& result) const override; - virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const { return newRuleValue + oldRuleValue; } - virtual double calcUpperBound(double /*oldUpperBound*/) const { return 0.0; } - virtual UChar tokenChar() const { return (UChar)0x003e; } // '>' + virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const override { return newRuleValue + oldRuleValue; } + virtual double calcUpperBound(double /*oldUpperBound*/) const override { return 0.0; } + virtual UChar tokenChar() const override { return (UChar)0x003e; } // '>' public: static UClassID getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; FractionalPartSubstitution::~FractionalPartSubstitution() {} @@ -248,15 +248,15 @@ class AbsoluteValueSubstitution : public NFSubstitution { : NFSubstitution(_pos, _ruleSet, description, status) {} virtual ~AbsoluteValueSubstitution(); - virtual int64_t transformNumber(int64_t number) const { return number >= 0 ? number : -number; } - virtual double transformNumber(double number) const { return uprv_fabs(number); } - virtual double composeRuleValue(double newRuleValue, double /*oldRuleValue*/) const { return -newRuleValue; } - virtual double calcUpperBound(double /*oldUpperBound*/) const { return DBL_MAX; } - virtual UChar tokenChar() const { return (UChar)0x003e; } // '>' + virtual int64_t transformNumber(int64_t number) const override { return number >= 0 ? number : -number; } + virtual double transformNumber(double number) const override { return uprv_fabs(number); } + virtual double composeRuleValue(double newRuleValue, double /*oldRuleValue*/) const override { return -newRuleValue; } + virtual double calcUpperBound(double /*oldUpperBound*/) const override { return DBL_MAX; } + virtual UChar tokenChar() const override { return (UChar)0x003e; } // '>' public: static UClassID getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; AbsoluteValueSubstitution::~AbsoluteValueSubstitution() {} @@ -278,37 +278,37 @@ class NumeratorSubstitution : public NFSubstitution { NFRuleSet* _ruleSet, const UnicodeString& description, UErrorCode& status) - : NFSubstitution(_pos, _ruleSet, fixdesc(description), status), denominator(_denominator) + : NFSubstitution(_pos, _ruleSet, fixdesc(description), status), denominator(_denominator) { ldenominator = util64_fromDouble(denominator); withZeros = description.endsWith(LTLT, 2); } virtual ~NumeratorSubstitution(); - virtual UBool operator==(const NFSubstitution& rhs) const; + virtual bool operator==(const NFSubstitution& rhs) const override; - virtual int64_t transformNumber(int64_t number) const { return number * ldenominator; } - virtual double transformNumber(double number) const { return uprv_round(number * denominator); } + virtual int64_t transformNumber(int64_t number) const override { return number * ldenominator; } + virtual double transformNumber(double number) const override { return uprv_round(number * denominator); } - virtual void doSubstitution(int64_t /*number*/, UnicodeString& /*toInsertInto*/, int32_t /*_pos*/, int32_t /*recursionCount*/, UErrorCode& /*status*/) const {} - virtual void doSubstitution(double number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const; - virtual UBool doParse(const UnicodeString& text, + virtual void doSubstitution(int64_t /*number*/, UnicodeString& /*toInsertInto*/, int32_t /*_pos*/, int32_t /*recursionCount*/, UErrorCode& /*status*/) const override {} + virtual void doSubstitution(double number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const override; + virtual UBool doParse(const UnicodeString& text, ParsePosition& parsePosition, double baseValue, double upperBound, UBool /*lenientParse*/, uint32_t nonNumericalExecutedRuleMask, - Formattable& result) const; + Formattable& result) const override; - virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const { return newRuleValue / oldRuleValue; } - virtual double calcUpperBound(double /*oldUpperBound*/) const { return denominator; } - virtual UChar tokenChar() const { return (UChar)0x003c; } // '<' + virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const override { return newRuleValue / oldRuleValue; } + virtual double calcUpperBound(double /*oldUpperBound*/) const override { return denominator; } + virtual UChar tokenChar() const override { return (UChar)0x003c; } // '<' private: static const UChar LTLT[2]; public: static UClassID getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; NumeratorSubstitution::~NumeratorSubstitution() {} @@ -515,7 +515,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(NFSubstitution) * @param The substitution to compare this one to * @return true if the two substitutions are functionally equivalent */ -UBool +bool NFSubstitution::operator==(const NFSubstitution& rhs) const { // compare class and all of the fields all substitutions have @@ -592,20 +592,20 @@ NFSubstitution::doSubstitution(int64_t number, UnicodeString& toInsertInto, int3 UnicodeString temp; numberFormat->format(numberToFormat, temp, status); toInsertInto.insert(_pos + this->pos, temp); - } - else { - // We have gone beyond double precision. Something has to give. - // We're favoring accuracy of the large number over potential rules - // that round like a CompactDecimalFormat, which is not a common use case. - // - // Perform a transformation on the number that is dependent - // on the type of substitution this is, then just call its - // rule set's format() method to format the result - int64_t numberToFormat = transformNumber(number); + } + else { + // We have gone beyond double precision. Something has to give. + // We're favoring accuracy of the large number over potential rules + // that round like a CompactDecimalFormat, which is not a common use case. + // + // Perform a transformation on the number that is dependent + // on the type of substitution this is, then just call its + // rule set's format() method to format the result + int64_t numberToFormat = transformNumber(number); UnicodeString temp; numberFormat->format(numberToFormat, temp, status); toInsertInto.insert(_pos + this->pos, temp); - } + } } } @@ -810,7 +810,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(SameValueSubstitution) UOBJECT_DEFINE_RTTI_IMPLEMENTATION(MultiplierSubstitution) -UBool MultiplierSubstitution::operator==(const NFSubstitution& rhs) const +bool MultiplierSubstitution::operator==(const NFSubstitution& rhs) const { return NFSubstitution::operator==(rhs) && divisor == ((const MultiplierSubstitution*)&rhs)->divisor; @@ -845,7 +845,7 @@ ModulusSubstitution::ModulusSubstitution(int32_t _pos, } if (0 == description.compare(gGreaterGreaterGreaterThan, 3)) { - // the >>> token doesn't alter how this substituion calculates the + // the >>> token doesn't alter how this substitution calculates the // values it uses for formatting and parsing, but it changes // what's done with that value after it's obtained: >>> short- // circuits the rule-search process and goes straight to the @@ -856,7 +856,7 @@ ModulusSubstitution::ModulusSubstitution(int32_t _pos, UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ModulusSubstitution) -UBool ModulusSubstitution::operator==(const NFSubstitution& rhs) const +bool ModulusSubstitution::operator==(const NFSubstitution& rhs) const { return NFSubstitution::operator==(rhs) && divisor == ((const ModulusSubstitution*)&rhs)->divisor && @@ -1075,7 +1075,7 @@ FractionalPartSubstitution::doSubstitution(double number, UnicodeString& toInser DecimalQuantity dl; dl.setToDouble(number); dl.roundToMagnitude(-20, UNUM_ROUND_HALFEVEN, status); // round to 20 fraction digits. - + UBool pad = FALSE; for (int32_t didx = dl.getLowerDisplayMagnitude(); didx<0; didx++) { // Loop iterates over fraction digits, starting with the LSD. @@ -1195,7 +1195,7 @@ FractionalPartSubstitution::doParse(const UnicodeString& text, } } -UBool +bool FractionalPartSubstitution::operator==(const NFSubstitution& rhs) const { return NFSubstitution::operator==(rhs) && @@ -1254,8 +1254,8 @@ NumeratorSubstitution::doSubstitution(double number, UnicodeString& toInsertInto } } -UBool -NumeratorSubstitution::doParse(const UnicodeString& text, +UBool +NumeratorSubstitution::doParse(const UnicodeString& text, ParsePosition& parsePosition, double baseValue, double upperBound, @@ -1327,7 +1327,7 @@ NumeratorSubstitution::doParse(const UnicodeString& text, return TRUE; } -UBool +bool NumeratorSubstitution::operator==(const NFSubstitution& rhs) const { return NFSubstitution::operator==(rhs) && @@ -1337,8 +1337,9 @@ NumeratorSubstitution::operator==(const NFSubstitution& rhs) const UOBJECT_DEFINE_RTTI_IMPLEMENTATION(NumeratorSubstitution) const UChar NumeratorSubstitution::LTLT[] = { 0x003c, 0x003c }; - + U_NAMESPACE_END /* U_HAVE_RBNF */ #endif + diff --git a/deps/icu-small/source/i18n/nfsubs.h b/deps/icu-small/source/i18n/nfsubs.h index 08de06f2a38e1e..0abd98be097d35 100644 --- a/deps/icu-small/source/i18n/nfsubs.h +++ b/deps/icu-small/source/i18n/nfsubs.h @@ -35,13 +35,13 @@ class NFSubstitution : public UObject { int32_t pos; const NFRuleSet* ruleSet; DecimalFormat* numberFormat; - + protected: NFSubstitution(int32_t pos, const NFRuleSet* ruleSet, const UnicodeString& description, UErrorCode& status); - + /** * Get the Ruleset of the object. * @return the Ruleset of the object. @@ -53,28 +53,28 @@ class NFSubstitution : public UObject { * @return the numberformat of this object. */ const DecimalFormat* getNumberFormat() const { return numberFormat; } - + public: - static NFSubstitution* makeSubstitution(int32_t pos, - const NFRule* rule, + static NFSubstitution* makeSubstitution(int32_t pos, + const NFRule* rule, const NFRule* predecessor, - const NFRuleSet* ruleSet, - const RuleBasedNumberFormat* rbnf, + const NFRuleSet* ruleSet, + const RuleBasedNumberFormat* rbnf, const UnicodeString& description, UErrorCode& status); - + /** * Destructor. */ virtual ~NFSubstitution(); - + /** * Return true if the given Format objects are semantically equal. * Objects of different subclasses are considered unequal. * @param rhs the object to be compared with. * @return true if the given Format objects are semantically equal. */ - virtual UBool operator==(const NFSubstitution& rhs) const; + virtual bool operator==(const NFSubstitution& rhs) const; /** * Return true if the given Format objects are semantically unequal. @@ -82,8 +82,8 @@ class NFSubstitution : public UObject { * @param rhs the object to be compared with. * @return true if the given Format objects are semantically unequal. */ - UBool operator!=(const NFSubstitution& rhs) const { return !operator==(rhs); } - + bool operator!=(const NFSubstitution& rhs) const { return !operator==(rhs); } + /** * Sets the substitution's divisor. Used by NFRule.setBaseValue(). * A no-op for all substitutions except multiplier and modulus @@ -92,19 +92,19 @@ class NFSubstitution : public UObject { * @param exponent The exponent of the divisor */ virtual void setDivisor(int32_t radix, int16_t exponent, UErrorCode& status); - + /** * Replaces result with the string describing the substitution. * @param result Output param which will receive the string. */ virtual void toString(UnicodeString& result) const; - + void setDecimalFormatSymbols(const DecimalFormatSymbols &newSymbols, UErrorCode& status); //----------------------------------------------------------------------- // formatting //----------------------------------------------------------------------- - + /** * Performs a mathematical operation on the number, formats it using * either ruleSet or decimalFormat, and inserts the result into @@ -128,7 +128,7 @@ class NFSubstitution : public UObject { * position to determine exactly where to insert the new text) */ virtual void doSubstitution(double number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const; - + protected: /** * Subclasses override this function to perform some kind of @@ -151,12 +151,12 @@ class NFSubstitution : public UObject { * @return The result of performing the opreration on the number */ virtual double transformNumber(double number) const = 0; - + public: //----------------------------------------------------------------------- // parsing //----------------------------------------------------------------------- - + /** * Parses a string using the rule set or DecimalFormat belonging * to this substitution. If there's a match, a mathematical @@ -186,14 +186,14 @@ class NFSubstitution : public UObject { * no match this is new Long(0) (not null), and parsePosition * is left unchanged. */ - virtual UBool doParse(const UnicodeString& text, - ParsePosition& parsePosition, + virtual UBool doParse(const UnicodeString& text, + ParsePosition& parsePosition, double baseValue, - double upperBound, + double upperBound, UBool lenientParse, uint32_t nonNumericalExecutedRuleMask, Formattable& result) const; - + /** * Derives a new value from the two values passed in. The two values * are typically either the base values of two rules (the one containing @@ -207,7 +207,7 @@ class NFSubstitution : public UObject { * partial parse result */ virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const = 0; - + /** * Calculates an upper bound when searching for a rule that matches * this substitution. Rules with base values greater than or equal @@ -218,24 +218,24 @@ class NFSubstitution : public UObject { * this substitution. */ virtual double calcUpperBound(double oldUpperBound) const = 0; - + //----------------------------------------------------------------------- // simple accessors //----------------------------------------------------------------------- - + /** * Returns the substitution's position in the rule that owns it. * @return The substitution's position in the rule that owns it. */ int32_t getPos() const { return pos; } - + /** * Returns the character used in the textual representation of * substitutions of this type. Used by toString(). * @return This substitution's token character. */ virtual UChar tokenChar() const = 0; - + /** * Returns true if this is a modulus substitution. (We didn't do this * with instanceof partially because it causes source files to @@ -243,14 +243,14 @@ class NFSubstitution : public UObject { * @return true if this object is an instance of ModulusSubstitution */ virtual UBool isModulusSubstitution() const; - + private: NFSubstitution(const NFSubstitution &other); // forbid copying of this class NFSubstitution &operator=(const NFSubstitution &other); // forbid copying of this class public: static UClassID getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/nortrans.h b/deps/icu-small/source/i18n/nortrans.h index 198ed29c95e70f..01cb97ab38b4a1 100644 --- a/deps/icu-small/source/i18n/nortrans.h +++ b/deps/icu-small/source/i18n/nortrans.h @@ -44,12 +44,12 @@ class NormalizationTransliterator : public Transliterator { * Transliterator API. * @return A copy of the object. */ - virtual NormalizationTransliterator* clone() const; + virtual NormalizationTransliterator* clone() const override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -68,7 +68,7 @@ class NormalizationTransliterator : public Transliterator { * pos.contextLimit. Otherwise, assume the text is complete. */ virtual void handleTransliterate(Replaceable& text, UTransPosition& offset, - UBool isIncremental) const; + UBool isIncremental) const override; public: /** diff --git a/deps/icu-small/source/i18n/nultrans.h b/deps/icu-small/source/i18n/nultrans.h index 36c92fa7b189d3..f5f2fbc9117419 100644 --- a/deps/icu-small/source/i18n/nultrans.h +++ b/deps/icu-small/source/i18n/nultrans.h @@ -45,19 +45,19 @@ class NullTransliterator : public Transliterator { * Transliterator API. * @internal Use transliterator factory methods instead since this class will be removed in that release. */ - virtual NullTransliterator* clone() const; + virtual NullTransliterator* clone() const override; /** * Implements {@link Transliterator#handleTransliterate}. * @internal Use transliterator factory methods instead since this class will be removed in that release. */ virtual void handleTransliterate(Replaceable& text, UTransPosition& offset, - UBool isIncremental) const; + UBool isIncremental) const override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. diff --git a/deps/icu-small/source/i18n/number_affixutils.cpp b/deps/icu-small/source/i18n/number_affixutils.cpp index a74ec2d634799e..f9c154c885cd8a 100644 --- a/deps/icu-small/source/i18n/number_affixutils.cpp +++ b/deps/icu-small/source/i18n/number_affixutils.cpp @@ -64,7 +64,7 @@ int32_t AffixUtils::estimateLength(const UnicodeString &patternString, UErrorCod } break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } offset += U16_LENGTH(cp); @@ -134,6 +134,9 @@ Field AffixUtils::getFieldForType(AffixPatternType type) { return {UFIELD_CATEGORY_NUMBER, UNUM_SIGN_FIELD}; case TYPE_PLUS_SIGN: return {UFIELD_CATEGORY_NUMBER, UNUM_SIGN_FIELD}; + case TYPE_APPROXIMATELY_SIGN: + // TODO: Introduce a new field for the approximately sign? + return {UFIELD_CATEGORY_NUMBER, UNUM_SIGN_FIELD}; case TYPE_PERCENT: return {UFIELD_CATEGORY_NUMBER, UNUM_PERCENT_FIELD}; case TYPE_PERMILLE: @@ -151,7 +154,7 @@ Field AffixUtils::getFieldForType(AffixPatternType type) { case TYPE_CURRENCY_OVERFLOW: return {UFIELD_CATEGORY_NUMBER, UNUM_CURRENCY_FIELD}; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -295,6 +298,8 @@ AffixTag AffixUtils::nextToken(AffixTag tag, const UnicodeString &patternString, return makeTag(offset + count, TYPE_MINUS_SIGN, STATE_BASE, 0); case u'+': return makeTag(offset + count, TYPE_PLUS_SIGN, STATE_BASE, 0); + case u'~': + return makeTag(offset + count, TYPE_APPROXIMATELY_SIGN, STATE_BASE, 0); case u'%': return makeTag(offset + count, TYPE_PERCENT, STATE_BASE, 0); case u'‰': @@ -385,7 +390,7 @@ AffixTag AffixUtils::nextToken(AffixTag tag, const UnicodeString &patternString, return makeTag(offset, TYPE_CURRENCY_OVERFLOW, STATE_BASE, 0); } default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } // End of string @@ -414,7 +419,7 @@ AffixTag AffixUtils::nextToken(AffixTag tag, const UnicodeString &patternString, case STATE_OVERFLOW_CURR: return makeTag(offset, TYPE_CURRENCY_OVERFLOW, STATE_BASE, 0); default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } diff --git a/deps/icu-small/source/i18n/number_asformat.cpp b/deps/icu-small/source/i18n/number_asformat.cpp index 9d10d1f5580fbe..8f2314d6898e0d 100644 --- a/deps/icu-small/source/i18n/number_asformat.cpp +++ b/deps/icu-small/source/i18n/number_asformat.cpp @@ -32,7 +32,7 @@ LocalizedNumberFormatterAsFormat::LocalizedNumberFormatterAsFormat( LocalizedNumberFormatterAsFormat::~LocalizedNumberFormatterAsFormat() = default; -UBool LocalizedNumberFormatterAsFormat::operator==(const Format& other) const { +bool LocalizedNumberFormatterAsFormat::operator==(const Format& other) const { auto* _other = dynamic_cast(&other); if (_other == nullptr) { return false; diff --git a/deps/icu-small/source/i18n/number_asformat.h b/deps/icu-small/source/i18n/number_asformat.h index 3a2fe3185bee1c..394b9a811fd7d6 100644 --- a/deps/icu-small/source/i18n/number_asformat.h +++ b/deps/icu-small/source/i18n/number_asformat.h @@ -39,7 +39,7 @@ class U_I18N_API LocalizedNumberFormatterAsFormat : public Format { /** * Equals operator. */ - UBool operator==(const Format& other) const U_OVERRIDE; + bool operator==(const Format& other) const U_OVERRIDE; /** * Creates a copy of this object. diff --git a/deps/icu-small/source/i18n/number_capi.cpp b/deps/icu-small/source/i18n/number_capi.cpp index ef5f0a41ff07a4..b87dbd93e5fcde 100644 --- a/deps/icu-small/source/i18n/number_capi.cpp +++ b/deps/icu-small/source/i18n/number_capi.cpp @@ -116,7 +116,8 @@ unumf_formatInt(const UNumberFormatter* uformatter, int64_t value, UFormattedNum auto* result = UFormattedNumberApiHelper::validate(uresult, *ec); if (U_FAILURE(*ec)) { return; } - result->fData.getStringRef().clear(); + result->fData.resetString(); + result->fData.quantity.clear(); result->fData.quantity.setToLong(value); formatter->fFormatter.formatImpl(&result->fData, *ec); } @@ -128,7 +129,8 @@ unumf_formatDouble(const UNumberFormatter* uformatter, double value, UFormattedN auto* result = UFormattedNumberApiHelper::validate(uresult, *ec); if (U_FAILURE(*ec)) { return; } - result->fData.getStringRef().clear(); + result->fData.resetString(); + result->fData.quantity.clear(); result->fData.quantity.setToDouble(value); formatter->fFormatter.formatImpl(&result->fData, *ec); } @@ -140,7 +142,8 @@ unumf_formatDecimal(const UNumberFormatter* uformatter, const char* value, int32 auto* result = UFormattedNumberApiHelper::validate(uresult, *ec); if (U_FAILURE(*ec)) { return; } - result->fData.getStringRef().clear(); + result->fData.resetString(); + result->fData.quantity.clear(); result->fData.quantity.setToDecNumber({value, valueLen}, *ec); if (U_FAILURE(*ec)) { return; } formatter->fFormatter.formatImpl(&result->fData, *ec); @@ -223,3 +226,30 @@ unumf_close(UNumberFormatter* f) { #endif /* #if !UCONFIG_NO_FORMATTING */ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/icu-small/source/i18n/number_compact.cpp b/deps/icu-small/source/i18n/number_compact.cpp index 8f898e704703a4..62692f444dff07 100644 --- a/deps/icu-small/source/i18n/number_compact.cpp +++ b/deps/icu-small/source/i18n/number_compact.cpp @@ -158,7 +158,7 @@ void CompactData::getUniquePatterns(UVector &output, UErrorCode &status) const { // The string was not found; add it to the UVector. // ANDY: This requires a const_cast. Why? - output.addElement(const_cast(pattern), status); + output.addElementX(const_cast(pattern), status); continue_outer: continue; diff --git a/deps/icu-small/source/i18n/number_currencysymbols.cpp b/deps/icu-small/source/i18n/number_currencysymbols.cpp index 9208427904cceb..da1812f49f0b71 100644 --- a/deps/icu-small/source/i18n/number_currencysymbols.cpp +++ b/deps/icu-small/source/i18n/number_currencysymbols.cpp @@ -76,7 +76,7 @@ UnicodeString CurrencySymbols::loadSymbol(UCurrNameStyle selector, UErrorCode& s if (symbol == isoCode) { return UnicodeString(isoCode, 3); } else { - return UnicodeString(TRUE, symbol, symbolLen); + return UnicodeString(true, symbol, symbolLen); } } @@ -104,7 +104,7 @@ UnicodeString CurrencySymbols::getPluralName(StandardPlural::Form plural, UError if (symbol == isoCode) { return UnicodeString(isoCode, 3); } else { - return UnicodeString(TRUE, symbol, symbolLen); + return UnicodeString(true, symbol, symbolLen); } } diff --git a/deps/icu-small/source/i18n/number_decimalquantity.cpp b/deps/icu-small/source/i18n/number_decimalquantity.cpp index 1f020ff87001cd..6a2847b1c18f19 100644 --- a/deps/icu-small/source/i18n/number_decimalquantity.cpp +++ b/deps/icu-small/source/i18n/number_decimalquantity.cpp @@ -289,6 +289,11 @@ void DecimalQuantity::adjustExponent(int delta) { exponent = exponent + delta; } +void DecimalQuantity::resetExponent() { + adjustMagnitude(exponent); + exponent = 0; +} + bool DecimalQuantity::hasIntegerValue() const { return scale >= 0; } @@ -534,7 +539,11 @@ void DecimalQuantity::_setToDecNum(const DecNum& decnum, UErrorCode& status) { if (decnum.isNegative()) { flags |= NEGATIVE_FLAG; } - if (!decnum.isZero()) { + if (decnum.isNaN()) { + flags |= NAN_FLAG; + } else if (decnum.isInfinity()) { + flags |= INFINITY_FLAG; + } else if (!decnum.isZero()) { readDecNumberToBcd(decnum); compact(); } @@ -634,6 +643,7 @@ DecNum& DecimalQuantity::toDecNum(DecNum& output, UErrorCode& status) const { // Special handling for zero if (precision == 0) { output.setTo("0", status); + return output; } // Use the BCD constructor. We need to do a little bit of work to convert, though. @@ -822,6 +832,7 @@ void DecimalQuantity::roundToMagnitude(int32_t magnitude, RoundingMode roundingM // Perform truncation if (position >= precision) { + U_ASSERT(trailingDigit == 0); setBcdToZero(); scale = magnitude; } else { @@ -839,6 +850,10 @@ void DecimalQuantity::roundToMagnitude(int32_t magnitude, RoundingMode roundingM // do not return: use the bubbling logic below } else { setDigitPos(0, 5); + // If the quantity was set to 0, we may need to restore a digit. + if (precision == 0) { + precision = 1; + } // compact not necessary: digit at position 0 is nonzero return; } @@ -916,7 +931,7 @@ UnicodeString DecimalQuantity::toPlainString() const { } if (lower > rReqPos) { lower = rReqPos; - } + } int32_t p = upper; if (p < 0) { sb.append(u'0'); diff --git a/deps/icu-small/source/i18n/number_decimalquantity.h b/deps/icu-small/source/i18n/number_decimalquantity.h index 839424775a0d8d..107c09a96a53d2 100644 --- a/deps/icu-small/source/i18n/number_decimalquantity.h +++ b/deps/icu-small/source/i18n/number_decimalquantity.h @@ -136,7 +136,7 @@ class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory { * this method with delta=-3 will change the value to "1.23456". * * @param delta The number of magnitudes of ten to change by. - * @return true if integer overflow occured; false otherwise. + * @return true if integer overflow occurred; false otherwise. */ bool adjustMagnitude(int32_t delta); @@ -166,6 +166,11 @@ class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory { */ void adjustExponent(int32_t delta); + /** + * Resets the DecimalQuantity to the value before adjustMagnitude and adjustExponent. + */ + void resetExponent(); + /** * @return Whether the value represented by this {@link DecimalQuantity} is * zero, infinity, or NaN. @@ -184,11 +189,11 @@ class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory { /** @return Whether the value represented by this {@link DecimalQuantity} is not a number. */ bool isNaN() const U_OVERRIDE; - /** + /** * Note: this method incorporates the value of {@code exponent} * (for cases such as compact notation) to return the proper long value * represented by the result. - * @param truncateIfOverflow if false and the number does NOT fit, fails with an assertion error. + * @param truncateIfOverflow if false and the number does NOT fit, fails with an assertion error. */ int64_t toLong(bool truncateIfOverflow = false) const; @@ -428,7 +433,9 @@ class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory { /** * Sets the digit in the BCD list. This method only sets the digit; it is the caller's - * responsibility to call {@link #compact} after setting the digit. + * responsibility to call {@link #compact} after setting the digit, and to ensure + * that the precision field is updated to reflect the correct number of digits if a + * nonzero digit is added to the decimal. * * @param position The position of the digit to pop, counted in BCD units from the least * significant digit. If outside the range supported by the implementation, an AssertionError diff --git a/deps/icu-small/source/i18n/number_decimfmtprops.cpp b/deps/icu-small/source/i18n/number_decimfmtprops.cpp index 30481ce5bf0110..7fa58bbc7ab66c 100644 --- a/deps/icu-small/source/i18n/number_decimfmtprops.cpp +++ b/deps/icu-small/source/i18n/number_decimfmtprops.cpp @@ -21,7 +21,7 @@ char kRawDefaultProperties[sizeof(DecimalFormatProperties)]; icu::UInitOnce gDefaultPropertiesInitOnce = U_INITONCE_INITIALIZER; void U_CALLCONV initDefaultProperties(UErrorCode&) { - // can't fail, uses placement new into staticly allocated space. + // can't fail, uses placement new into statically allocated space. new(kRawDefaultProperties) DecimalFormatProperties(); // set to the default instance } @@ -40,6 +40,7 @@ void DecimalFormatProperties::clear() { decimalPatternMatchRequired = false; decimalSeparatorAlwaysShown = false; exponentSignAlwaysShown = false; + currencyAsDecimal = false; formatFailIfMoreThanMaxDigits = false; formatWidth = -1; groupingSize = -1; @@ -88,6 +89,7 @@ DecimalFormatProperties::_equals(const DecimalFormatProperties& other, bool igno eq = eq && currencyUsage == other.currencyUsage; eq = eq && decimalSeparatorAlwaysShown == other.decimalSeparatorAlwaysShown; eq = eq && exponentSignAlwaysShown == other.exponentSignAlwaysShown; + eq = eq && currencyAsDecimal == other.currencyAsDecimal; eq = eq && formatFailIfMoreThanMaxDigits == other.formatFailIfMoreThanMaxDigits; eq = eq && formatWidth == other.formatWidth; eq = eq && magnitudeMultiplier == other.magnitudeMultiplier; diff --git a/deps/icu-small/source/i18n/number_decimfmtprops.h b/deps/icu-small/source/i18n/number_decimfmtprops.h index 0ace241adae8ab..5f72f649842e66 100644 --- a/deps/icu-small/source/i18n/number_decimfmtprops.h +++ b/deps/icu-small/source/i18n/number_decimfmtprops.h @@ -105,6 +105,7 @@ struct U_I18N_API DecimalFormatProperties : public UMemory { bool decimalPatternMatchRequired; bool decimalSeparatorAlwaysShown; bool exponentSignAlwaysShown; + bool currencyAsDecimal; bool formatFailIfMoreThanMaxDigits; // ICU4C-only int32_t formatWidth; int32_t groupingSize; diff --git a/deps/icu-small/source/i18n/number_decnum.h b/deps/icu-small/source/i18n/number_decnum.h index 3bb8d107807967..94a0b31bcb5dd7 100644 --- a/deps/icu-small/source/i18n/number_decnum.h +++ b/deps/icu-small/source/i18n/number_decnum.h @@ -56,6 +56,13 @@ class U_I18N_API DecNum : public UMemory { bool isZero() const; + /** Is infinity or NaN */ + bool isSpecial() const; + + bool isInfinity() const; + + bool isNaN() const; + void toString(ByteSink& output, UErrorCode& status) const; inline CharString toCharString(UErrorCode& status) const { diff --git a/deps/icu-small/source/i18n/number_fluent.cpp b/deps/icu-small/source/i18n/number_fluent.cpp index a79f224829d805..fd486afb512249 100644 --- a/deps/icu-small/source/i18n/number_fluent.cpp +++ b/deps/icu-small/source/i18n/number_fluent.cpp @@ -698,6 +698,10 @@ int32_t LocalizedNumberFormatter::getCallCount() const { // Note: toFormat defined in number_asformat.cpp +const DecimalFormatSymbols* LocalizedNumberFormatter::getDecimalFormatSymbols() const { + return fMacros.symbols.getDecimalFormatSymbols(); +} + #if (U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN) && defined(_MSC_VER) // Warning 4661. #pragma warning(pop) diff --git a/deps/icu-small/source/i18n/number_formatimpl.cpp b/deps/icu-small/source/i18n/number_formatimpl.cpp index b2325aa8e591eb..96e3e9e7c69910 100644 --- a/deps/icu-small/source/i18n/number_formatimpl.cpp +++ b/deps/icu-small/source/i18n/number_formatimpl.cpp @@ -352,11 +352,12 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe, return nullptr; } fPatternModifier.adoptInstead(patternModifier); - patternModifier->setPatternInfo( - macros.affixProvider != nullptr ? macros.affixProvider - : static_cast(fPatternInfo.getAlias()), - kUndefinedField); - patternModifier->setPatternAttributes(fMicros.sign, isPermille); + const AffixPatternProvider* affixProvider = + macros.affixProvider != nullptr + ? macros.affixProvider + : static_cast(fPatternInfo.getAlias()); + patternModifier->setPatternInfo(affixProvider, kUndefinedField); + patternModifier->setPatternAttributes(fMicros.sign, isPermille, macros.approximately); if (patternModifier->needsPlurals()) { patternModifier->setSymbols( fMicros.symbols, @@ -375,6 +376,11 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe, return nullptr; } + // currencyAsDecimal + if (affixProvider->currencyAsDecimal()) { + fMicros.currencyAsDecimal = patternModifier->getCurrencySymbolForUnitWidth(status); + } + // Outer modifier (CLDR units and currency long names) if (isCldrUnit) { const char *unitDisplayCase = ""; @@ -524,15 +530,27 @@ int32_t NumberFormatterImpl::writeNumber(const MicroProps& micros, DecimalQuanti // Add the decimal point if (quantity.getLowerDisplayMagnitude() < 0 || micros.decimal == UNUM_DECIMAL_SEPARATOR_ALWAYS) { - length += string.insert( + if (!micros.currencyAsDecimal.isBogus()) { + length += string.insert( length + index, - micros.useCurrency ? micros.symbols->getSymbol( - DecimalFormatSymbols::ENumberFormatSymbol::kMonetarySeparatorSymbol) : micros - .symbols - ->getSymbol( - DecimalFormatSymbols::ENumberFormatSymbol::kDecimalSeparatorSymbol), + micros.currencyAsDecimal, + {UFIELD_CATEGORY_NUMBER, UNUM_CURRENCY_FIELD}, + status); + } else if (micros.useCurrency) { + length += string.insert( + length + index, + micros.symbols->getSymbol( + DecimalFormatSymbols::ENumberFormatSymbol::kMonetarySeparatorSymbol), {UFIELD_CATEGORY_NUMBER, UNUM_DECIMAL_SEPARATOR_FIELD}, status); + } else { + length += string.insert( + length + index, + micros.symbols->getSymbol( + DecimalFormatSymbols::ENumberFormatSymbol::kDecimalSeparatorSymbol), + {UFIELD_CATEGORY_NUMBER, UNUM_DECIMAL_SEPARATOR_FIELD}, + status); + } } // Add the fraction digits diff --git a/deps/icu-small/source/i18n/number_formatimpl.h b/deps/icu-small/source/i18n/number_formatimpl.h index 5cd549e54a363f..d7be1468b6d7af 100644 --- a/deps/icu-small/source/i18n/number_formatimpl.h +++ b/deps/icu-small/source/i18n/number_formatimpl.h @@ -33,6 +33,12 @@ class NumberFormatterImpl : public UMemory { */ NumberFormatterImpl(const MacroProps ¯os, UErrorCode &status); + /** + * Default constructor; leaves the NumberFormatterImpl in an undefined state. + * Takes an error code to prevent the method from being called accidentally. + */ + NumberFormatterImpl(UErrorCode &) {} + /** * Builds and evaluates an "unsafe" MicroPropsGenerator, which is cheaper but can be used only once. */ @@ -109,12 +115,6 @@ class NumberFormatterImpl : public UMemory { LocalPointer fLongNameMultiplexer; LocalPointer fCompactHandler; - // Value objects possibly used by the number formatting pipeline: - struct Warehouse { - CurrencySymbols fCurrencySymbols; - } fWarehouse; - - NumberFormatterImpl(const MacroProps ¯os, bool safe, UErrorCode &status); MicroProps& preProcessUnsafe(DecimalQuantity &inValue, UErrorCode &status); diff --git a/deps/icu-small/source/i18n/number_grouping.cpp b/deps/icu-small/source/i18n/number_grouping.cpp index 6b1642cfd34abd..9ba639e67e2257 100644 --- a/deps/icu-small/source/i18n/number_grouping.cpp +++ b/deps/icu-small/source/i18n/number_grouping.cpp @@ -47,7 +47,7 @@ Grouper Grouper::forStrategy(UNumberGroupingStrategy grouping) { case UNUM_GROUPING_THOUSANDS: return {3, 3, 1, grouping}; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } diff --git a/deps/icu-small/source/i18n/number_longnames.cpp b/deps/icu-small/source/i18n/number_longnames.cpp index fd23a81a8df840..5a4cf6321c8a40 100644 --- a/deps/icu-small/source/i18n/number_longnames.cpp +++ b/deps/icu-small/source/i18n/number_longnames.cpp @@ -259,20 +259,16 @@ class InflectedPluralSink : public ResourceSink { // See ResourceSink::put(). void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) U_OVERRIDE { - ResourceTable pluralsTable = value.getTable(status); + int32_t pluralIndex = getIndex(key, status); if (U_FAILURE(status)) { return; } - for (int32_t i = 0; pluralsTable.getKeyAndValue(i, key, value); ++i) { - int32_t pluralIndex = getIndex(key, status); - if (U_FAILURE(status)) { return; } - if (!outArray[pluralIndex].isBogus()) { - // We already have a pattern - continue; - } - ResourceTable genderTable = value.getTable(status); - ResourceTable caseTable; // This instance has to outlive `value` - if (loadForPluralForm(genderTable, caseTable, value, status)) { - outArray[pluralIndex] = value.getUnicodeString(status); - } + if (!outArray[pluralIndex].isBogus()) { + // We already have a pattern + return; + } + ResourceTable genderTable = value.getTable(status); + ResourceTable caseTable; // This instance has to outlive `value` + if (loadForPluralForm(genderTable, caseTable, value, status)) { + outArray[pluralIndex] = value.getUnicodeString(status); } } @@ -370,18 +366,11 @@ void getInflectedMeasureData(StringPiece subKey, key.append(subKey, status); UErrorCode localStatus = status; - ures_getAllItemsWithFallback(unitsBundle.getAlias(), key.data(), sink, localStatus); + ures_getAllChildrenWithFallback(unitsBundle.getAlias(), key.data(), sink, localStatus); if (width == UNUM_UNIT_WIDTH_SHORT) { status = localStatus; return; } - - // TODO(ICU-13353): The fallback to short does not work in ICU4C. - // Manually fall back to short (this is done automatically in Java). - key.clear(); - key.append("unitsShort/", status); - key.append(subKey, status); - ures_getAllItemsWithFallback(unitsBundle.getAlias(), key.data(), sink, status); } class PluralTableSink : public ResourceSink { @@ -396,20 +385,16 @@ class PluralTableSink : public ResourceSink { } void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) U_OVERRIDE { - ResourceTable pluralsTable = value.getTable(status); + if (uprv_strcmp(key, "case") == 0) { + return; + } + int32_t index = getIndex(key, status); if (U_FAILURE(status)) { return; } - for (int32_t i = 0; pluralsTable.getKeyAndValue(i, key, value); ++i) { - if (uprv_strcmp(key, "case") == 0) { - continue; - } - int32_t index = getIndex(key, status); - if (U_FAILURE(status)) { return; } - if (!outArray[index].isBogus()) { - continue; - } - outArray[index] = value.getUnicodeString(status); - if (U_FAILURE(status)) { return; } + if (!outArray[index].isBogus()) { + return; } + outArray[index] = value.getUnicodeString(status); + if (U_FAILURE(status)) { return; } } private: @@ -490,7 +475,7 @@ void getMeasureData(const Locale &locale, // getInflectedMeasureData after homogenizing data format? Find a unit // test case that demonstrates the incorrect fallback logic (via // regional variant of an inflected language?) - ures_getAllItemsWithFallback(unitsBundle.getAlias(), caseKey.data(), sink, localStatus); + ures_getAllChildrenWithFallback(unitsBundle.getAlias(), caseKey.data(), sink, localStatus); } // TODO(icu-units#138): our fallback logic is not spec-compliant: we @@ -499,20 +484,13 @@ void getMeasureData(const Locale &locale, // either get the spec changed, or add unit tests that warn us if // case="nominative" data differs from no-case data? UErrorCode localStatus = U_ZERO_ERROR; - ures_getAllItemsWithFallback(unitsBundle.getAlias(), key.data(), sink, localStatus); + ures_getAllChildrenWithFallback(unitsBundle.getAlias(), key.data(), sink, localStatus); if (width == UNUM_UNIT_WIDTH_SHORT) { if (U_FAILURE(localStatus)) { status = localStatus; } return; } - - // TODO(ICU-13353): The fallback to short does not work in ICU4C. - // Manually fall back to short (this is done automatically in Java). - key.clear(); - key.append("unitsShort", status); - key.append(subKey, status); - ures_getAllItemsWithFallback(unitsBundle.getAlias(), key.data(), sink, status); } // NOTE: outArray MUST have a length of at least ARRAY_LENGTH. @@ -523,7 +501,7 @@ void getCurrencyLongNameData(const Locale &locale, const CurrencyUnit ¤cy, PluralTableSink sink(outArray); LocalUResourceBundlePointer unitsBundle(ures_open(U_ICUDATA_CURR, locale.getName(), &status)); if (U_FAILURE(status)) { return; } - ures_getAllItemsWithFallback(unitsBundle.getAlias(), "CurrencyUnitPatterns", sink, status); + ures_getAllChildrenWithFallback(unitsBundle.getAlias(), "CurrencyUnitPatterns", sink, status); if (U_FAILURE(status)) { return; } for (int32_t i = 0; i < StandardPlural::Form::COUNT; i++) { UnicodeString &pattern = outArray[i]; @@ -693,7 +671,7 @@ class DerivedComponents { * * * NOTE: If U_FAILURE(status), returns an empty string. - */ + */ UnicodeString getDeriveCompoundRule(Locale locale, const char *feature, const char *structure, UErrorCode &status) { StackUResourceBundle derivationsBundle, stackBundle; @@ -1702,7 +1680,7 @@ const Modifier *MixedUnitLongNameHandler::getModifier(Signum /*signum*/, // TODO(icu-units#28): investigate this method when investigating where // ModifierStore::getModifier() gets used. To be sure it remains // unreachable: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; return nullptr; } diff --git a/deps/icu-small/source/i18n/number_longnames.h b/deps/icu-small/source/i18n/number_longnames.h index bca55e010317dc..06949989d7fbcd 100644 --- a/deps/icu-small/source/i18n/number_longnames.h +++ b/deps/icu-small/source/i18n/number_longnames.h @@ -44,7 +44,7 @@ class LongNameHandler : public MicroPropsGenerator, public ModifierStore, public * * Mixed units are not supported, use MixedUnitLongNameHandler::forMeasureUnit. * - * This function uses a fillIn intead of returning a pointer, because we + * This function uses a fillIn instead of returning a pointer, because we * want to fill in instances in a MemoryPool (which cannot adopt pointers it * didn't create itself). * @@ -139,7 +139,7 @@ class MixedUnitLongNameHandler : public MicroPropsGenerator, public ModifierStor * Construct a localized MixedUnitLongNameHandler for the specified * MeasureUnit. It must be a MIXED unit. * - * This function uses a fillIn intead of returning a pointer, because we + * This function uses a fillIn instead of returning a pointer, because we * want to fill in instances in a MemoryPool (which cannot adopt pointers it * didn't create itself). * diff --git a/deps/icu-small/source/i18n/number_mapper.cpp b/deps/icu-small/source/i18n/number_mapper.cpp index e2a0d284b7cf5d..2d4d47a094d999 100644 --- a/deps/icu-small/source/i18n/number_mapper.cpp +++ b/deps/icu-small/source/i18n/number_mapper.cpp @@ -381,7 +381,10 @@ void PropertiesAffixPatternProvider::setTo(const DecimalFormatProperties& proper AffixUtils::hasCurrencySymbols(ppp, status) || AffixUtils::hasCurrencySymbols(psp, status) || AffixUtils::hasCurrencySymbols(npp, status) || - AffixUtils::hasCurrencySymbols(nsp, status)); + AffixUtils::hasCurrencySymbols(nsp, status) || + properties.currencyAsDecimal); + + fCurrencyAsDecimal = properties.currencyAsDecimal; } char16_t PropertiesAffixPatternProvider::charAt(int flags, int i) const { @@ -446,6 +449,10 @@ bool PropertiesAffixPatternProvider::hasBody() const { return true; } +bool PropertiesAffixPatternProvider::currencyAsDecimal() const { + return fCurrencyAsDecimal; +} + void CurrencyPluralInfoAffixProvider::setTo(const CurrencyPluralInfo& cpi, const DecimalFormatProperties& properties, @@ -506,5 +513,9 @@ bool CurrencyPluralInfoAffixProvider::hasBody() const { return affixesByPlural[StandardPlural::OTHER].hasBody(); } +bool CurrencyPluralInfoAffixProvider::currencyAsDecimal() const { + return affixesByPlural[StandardPlural::OTHER].currencyAsDecimal(); +} + #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/deps/icu-small/source/i18n/number_mapper.h b/deps/icu-small/source/i18n/number_mapper.h index 9ecd776b3b4795..8879b7a94ea372 100644 --- a/deps/icu-small/source/i18n/number_mapper.h +++ b/deps/icu-small/source/i18n/number_mapper.h @@ -56,12 +56,15 @@ class PropertiesAffixPatternProvider : public AffixPatternProvider, public UMemo bool hasBody() const U_OVERRIDE; + bool currencyAsDecimal() const U_OVERRIDE; + private: UnicodeString posPrefix; UnicodeString posSuffix; UnicodeString negPrefix; UnicodeString negSuffix; bool isCurrencyPattern; + bool fCurrencyAsDecimal; PropertiesAffixPatternProvider() = default; // puts instance in valid but undefined state @@ -107,6 +110,8 @@ class CurrencyPluralInfoAffixProvider : public AffixPatternProvider, public UMem bool hasBody() const U_OVERRIDE; + bool currencyAsDecimal() const U_OVERRIDE; + private: PropertiesAffixPatternProvider affixesByPlural[StandardPlural::COUNT]; diff --git a/deps/icu-small/source/i18n/number_microprops.h b/deps/icu-small/source/i18n/number_microprops.h index a18d5fc470eda1..c34e7c17e97aa5 100644 --- a/deps/icu-small/source/i18n/number_microprops.h +++ b/deps/icu-small/source/i18n/number_microprops.h @@ -18,6 +18,7 @@ #include "number_roundingutils.h" #include "decNumber.h" #include "charstr.h" +#include "util.h" U_NAMESPACE_BEGIN namespace number { namespace impl { @@ -83,6 +84,9 @@ struct MicroProps : public MicroPropsGenerator { bool useCurrency; char nsName[9]; + // Currency symbol to be used as the decimal separator + UnicodeString currencyAsDecimal = ICU_Utility::makeBogusString(); + // No ownership: must point at a string which will outlive MicroProps // instances, e.g. a string with static storage duration, or just a string // that will never be deallocated or modified. diff --git a/deps/icu-small/source/i18n/number_modifiers.cpp b/deps/icu-small/source/i18n/number_modifiers.cpp index b7d825f499e4d2..b74bfd06fc8e76 100644 --- a/deps/icu-small/source/i18n/number_modifiers.cpp +++ b/deps/icu-small/source/i18n/number_modifiers.cpp @@ -92,13 +92,13 @@ bool ConstantAffixModifier::isStrong() const { bool ConstantAffixModifier::containsField(Field field) const { (void)field; // This method is not currently used. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } void ConstantAffixModifier::getParameters(Parameters& output) const { (void)output; // This method is not currently used. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } bool ConstantAffixModifier::semanticallyEquivalent(const Modifier& other) const { @@ -181,7 +181,7 @@ bool SimpleModifier::isStrong() const { bool SimpleModifier::containsField(Field field) const { (void)field; // This method is not currently used. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } void SimpleModifier::getParameters(Parameters& output) const { diff --git a/deps/icu-small/source/i18n/number_modifiers.h b/deps/icu-small/source/i18n/number_modifiers.h index 375254310ca056..09af3f48813c88 100644 --- a/deps/icu-small/source/i18n/number_modifiers.h +++ b/deps/icu-small/source/i18n/number_modifiers.h @@ -273,7 +273,7 @@ class U_I18N_API EmptyModifier : public Modifier, public UMemory { }; /** - * This implementation of ModifierStore adopts Modifer pointers. + * This implementation of ModifierStore adopts Modifier pointers. */ class U_I18N_API AdoptingModifierStore : public ModifierStore, public UMemory { public: diff --git a/deps/icu-small/source/i18n/number_patternmodifier.cpp b/deps/icu-small/source/i18n/number_patternmodifier.cpp index 314e7cb75ee169..b6543b262b42db 100644 --- a/deps/icu-small/source/i18n/number_patternmodifier.cpp +++ b/deps/icu-small/source/i18n/number_patternmodifier.cpp @@ -28,9 +28,13 @@ void MutablePatternModifier::setPatternInfo(const AffixPatternProvider* patternI fField = field; } -void MutablePatternModifier::setPatternAttributes(UNumberSignDisplay signDisplay, bool perMille) { +void MutablePatternModifier::setPatternAttributes( + UNumberSignDisplay signDisplay, + bool perMille, + bool approximately) { fSignDisplay = signDisplay; fPerMilleReplacesPercent = perMille; + fApproximately = approximately; } void MutablePatternModifier::setSymbols(const DecimalFormatSymbols* symbols, @@ -244,19 +248,19 @@ bool MutablePatternModifier::isStrong() const { bool MutablePatternModifier::containsField(Field field) const { (void)field; // This method is not currently used. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } void MutablePatternModifier::getParameters(Parameters& output) const { (void)output; // This method is not currently used. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } bool MutablePatternModifier::semanticallyEquivalent(const Modifier& other) const { (void)other; // This method is not currently used. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } int32_t MutablePatternModifier::insertPrefix(FormattedStringBuilder& sb, int position, UErrorCode& status) { @@ -277,6 +281,7 @@ void MutablePatternModifier::prepareAffix(bool isPrefix) { *fPatternInfo, isPrefix, PatternStringUtils::resolveSignDisplay(fSignDisplay, fSignum), + fApproximately, fPlural, fPerMilleReplacesPercent, currentAffix); @@ -289,28 +294,14 @@ UnicodeString MutablePatternModifier::getSymbol(AffixPatternType type) const { return fSymbols->getSymbol(DecimalFormatSymbols::ENumberFormatSymbol::kMinusSignSymbol); case AffixPatternType::TYPE_PLUS_SIGN: return fSymbols->getSymbol(DecimalFormatSymbols::ENumberFormatSymbol::kPlusSignSymbol); + case AffixPatternType::TYPE_APPROXIMATELY_SIGN: + return fSymbols->getSymbol(DecimalFormatSymbols::ENumberFormatSymbol::kApproximatelySignSymbol); case AffixPatternType::TYPE_PERCENT: return fSymbols->getSymbol(DecimalFormatSymbols::ENumberFormatSymbol::kPercentSymbol); case AffixPatternType::TYPE_PERMILLE: return fSymbols->getSymbol(DecimalFormatSymbols::ENumberFormatSymbol::kPerMillSymbol); - case AffixPatternType::TYPE_CURRENCY_SINGLE: { - switch (fUnitWidth) { - case UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROW: - return fCurrencySymbols.getNarrowCurrencySymbol(localStatus); - case UNumberUnitWidth::UNUM_UNIT_WIDTH_SHORT: - return fCurrencySymbols.getCurrencySymbol(localStatus); - case UNumberUnitWidth::UNUM_UNIT_WIDTH_ISO_CODE: - return fCurrencySymbols.getIntlCurrencySymbol(localStatus); - case UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL: - return fCurrencySymbols.getFormalCurrencySymbol(localStatus); - case UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT: - return fCurrencySymbols.getVariantCurrencySymbol(localStatus); - case UNumberUnitWidth::UNUM_UNIT_WIDTH_HIDDEN: - return UnicodeString(); - default: - return fCurrencySymbols.getCurrencySymbol(localStatus); - } - } + case AffixPatternType::TYPE_CURRENCY_SINGLE: + return getCurrencySymbolForUnitWidth(localStatus); case AffixPatternType::TYPE_CURRENCY_DOUBLE: return fCurrencySymbols.getIntlCurrencySymbol(localStatus); case AffixPatternType::TYPE_CURRENCY_TRIPLE: @@ -324,13 +315,32 @@ UnicodeString MutablePatternModifier::getSymbol(AffixPatternType type) const { case AffixPatternType::TYPE_CURRENCY_QUINT: return UnicodeString(u"\uFFFD"); default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; + } +} + +UnicodeString MutablePatternModifier::getCurrencySymbolForUnitWidth(UErrorCode& status) const { + switch (fUnitWidth) { + case UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROW: + return fCurrencySymbols.getNarrowCurrencySymbol(status); + case UNumberUnitWidth::UNUM_UNIT_WIDTH_SHORT: + return fCurrencySymbols.getCurrencySymbol(status); + case UNumberUnitWidth::UNUM_UNIT_WIDTH_ISO_CODE: + return fCurrencySymbols.getIntlCurrencySymbol(status); + case UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL: + return fCurrencySymbols.getFormalCurrencySymbol(status); + case UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT: + return fCurrencySymbols.getVariantCurrencySymbol(status); + case UNumberUnitWidth::UNUM_UNIT_WIDTH_HIDDEN: + return UnicodeString(); + default: + return fCurrencySymbols.getCurrencySymbol(status); } } UnicodeString MutablePatternModifier::toUnicodeString() const { // Never called by AffixUtils - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/deps/icu-small/source/i18n/number_patternmodifier.h b/deps/icu-small/source/i18n/number_patternmodifier.h index 5ba842d5692460..4f825e1ed21916 100644 --- a/deps/icu-small/source/i18n/number_patternmodifier.h +++ b/deps/icu-small/source/i18n/number_patternmodifier.h @@ -116,8 +116,10 @@ class U_I18N_API MutablePatternModifier * Whether to force a plus sign on positive numbers. * @param perMille * Whether to substitute the percent sign in the pattern with a permille sign. + * @param approximately + * Whether to prepend approximately to the sign */ - void setPatternAttributes(UNumberSignDisplay signDisplay, bool perMille); + void setPatternAttributes(UNumberSignDisplay signDisplay, bool perMille, bool approximately); /** * Sets locale-specific details that affect the symbols substituted into the pattern string affixes. @@ -193,6 +195,11 @@ class U_I18N_API MutablePatternModifier */ UnicodeString getSymbol(AffixPatternType type) const U_OVERRIDE; + /** + * Returns the currency symbol for the unit width specified in setSymbols() + */ + UnicodeString getCurrencySymbolForUnitWidth(UErrorCode& status) const; + UnicodeString toUnicodeString() const; private: @@ -204,6 +211,7 @@ class U_I18N_API MutablePatternModifier Field fField; UNumberSignDisplay fSignDisplay; bool fPerMilleReplacesPercent; + bool fApproximately; // Symbol details (initialized in setSymbols) const DecimalFormatSymbols *fSymbols; diff --git a/deps/icu-small/source/i18n/number_patternstring.cpp b/deps/icu-small/source/i18n/number_patternstring.cpp index ac9e8b7e8e4d75..e819d39e96769d 100644 --- a/deps/icu-small/source/i18n/number_patternstring.cpp +++ b/deps/icu-small/source/i18n/number_patternstring.cpp @@ -50,7 +50,7 @@ PatternParser::parseToExistingProperties(const UnicodeString& pattern, DecimalFo char16_t ParsedPatternInfo::charAt(int32_t flags, int32_t index) const { const Endpoints& endpoints = getEndpoints(flags); if (index < 0 || index >= endpoints.end - endpoints.start) { - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } return pattern.charAt(endpoints.start + index); } @@ -115,6 +115,10 @@ bool ParsedPatternInfo::hasBody() const { return positive.integerTotal > 0; } +bool ParsedPatternInfo::currencyAsDecimal() const { + return positive.hasCurrencyDecimal; +} + ///////////////////////////////////////////////////// /// BEGIN RECURSIVE DESCENT PARSER IMPLEMENTATION /// ///////////////////////////////////////////////////// @@ -127,8 +131,20 @@ UChar32 ParsedPatternInfo::ParserState::peek() { } } +UChar32 ParsedPatternInfo::ParserState::peek2() { + if (offset == pattern.length()) { + return -1; + } + int32_t cp1 = pattern.char32At(offset); + int32_t offset2 = offset + U16_LENGTH(cp1); + if (offset2 == pattern.length()) { + return -1; + } + return pattern.char32At(offset2); +} + UChar32 ParsedPatternInfo::ParserState::next() { - int codePoint = peek(); + int32_t codePoint = peek(); offset += U16_LENGTH(codePoint); return codePoint; } @@ -286,6 +302,35 @@ void ParsedPatternInfo::consumeFormat(UErrorCode& status) { currentSubpattern->widthExceptAffixes += 1; consumeFractionFormat(status); if (U_FAILURE(status)) { return; } + } else if (state.peek() == u'¤') { + // Check if currency is a decimal separator + switch (state.peek2()) { + case u'#': + case u'0': + case u'1': + case u'2': + case u'3': + case u'4': + case u'5': + case u'6': + case u'7': + case u'8': + case u'9': + break; + default: + // Currency symbol followed by a non-numeric character; + // treat as a normal affix. + return; + } + // Currency symbol is followed by a numeric character; + // treat as a decimal separator. + currentSubpattern->hasCurrencySign = true; + currentSubpattern->hasCurrencyDecimal = true; + currentSubpattern->hasDecimal = true; + currentSubpattern->widthExceptAffixes += 1; + state.next(); // consume the symbol + consumeFractionFormat(status); + if (U_FAILURE(status)) { return; } } } @@ -565,6 +610,9 @@ PatternParser::patternInfoToProperties(DecimalFormatProperties& properties, Pars properties.decimalSeparatorAlwaysShown = false; } + // Persist the currency as decimal separator + properties.currencyAsDecimal = positive.hasCurrencyDecimal; + // Scientific notation settings if (positive.exponentZeros > 0) { properties.exponentSignAlwaysShown = positive.exponentHasPlusSign; @@ -750,7 +798,11 @@ UnicodeString PatternStringUtils::propertiesToPatternString(const DecimalFormatP } // Decimal separator if (magnitude == 0 && (alwaysShowDecimal || mN < 0)) { - sb.append(u'.'); + if (properties.currencyAsDecimal) { + sb.append(u'¤'); + } else { + sb.append(u'.'); + } } if (!useGrouping) { continue; @@ -820,7 +872,7 @@ UnicodeString PatternStringUtils::propertiesToPatternString(const DecimalFormatP // Copy the positive digit format into the negative. // This is optional; the pattern is the same as if '#' were appended here instead. // NOTE: It is not safe to append the UnicodeString to itself, so we need to copy. - // See http://bugs.icu-project.org/trac/ticket/13707 + // See https://unicode-org.atlassian.net/browse/ICU-13707 UnicodeString copy(sb); sb.append(copy, afterPrefixPos, beforeSuffixPos - afterPrefixPos); sb.append(affixProvider.get().getString(AffixPatternProvider::AFFIX_NEG_SUFFIX)); @@ -869,6 +921,7 @@ PatternStringUtils::convertLocalized(const UnicodeString& input, const DecimalFo UnicodeString table[LEN][2]; int standIdx = toLocalized ? 0 : 1; int localIdx = toLocalized ? 1 : 0; + // TODO: Add approximately sign here? table[0][standIdx] = u"%"; table[0][localIdx] = symbols.getConstSymbol(DecimalFormatSymbols::kPercentSymbol); table[1][standIdx] = u"‰"; @@ -1001,6 +1054,7 @@ PatternStringUtils::convertLocalized(const UnicodeString& input, const DecimalFo void PatternStringUtils::patternInfoToStringBuilder(const AffixPatternProvider& patternInfo, bool isPrefix, PatternSignType patternSignType, + bool approximately, StandardPlural::Form plural, bool perMilleReplacesPercent, UnicodeString& output) { @@ -1012,7 +1066,7 @@ void PatternStringUtils::patternInfoToStringBuilder(const AffixPatternProvider& // (If not, we will use the positive subpattern.) bool useNegativeAffixPattern = patternInfo.hasNegativeSubpattern() && (patternSignType == PATTERN_SIGN_TYPE_NEG - || (patternInfo.negativeHasMinusSign() && plusReplacesMinusSign)); + || (patternInfo.negativeHasMinusSign() && (plusReplacesMinusSign || approximately))); // Resolve the flags for the affix pattern. int flags = 0; @@ -1034,10 +1088,24 @@ void PatternStringUtils::patternInfoToStringBuilder(const AffixPatternProvider& } else if (patternSignType == PATTERN_SIGN_TYPE_NEG) { prependSign = true; } else { - prependSign = plusReplacesMinusSign; + prependSign = plusReplacesMinusSign || approximately; } - // Compute the length of the affix pattern. + // What symbols should take the place of the sign placeholder? + const char16_t* signSymbols = u"-"; + if (approximately) { + if (plusReplacesMinusSign) { + signSymbols = u"~+"; + } else if (patternSignType == PATTERN_SIGN_TYPE_NEG) { + signSymbols = u"~-"; + } else { + signSymbols = u"~"; + } + } else if (plusReplacesMinusSign) { + signSymbols = u"+"; + } + + // Compute the number of tokens in the affix pattern (signSymbols is considered one token). int length = patternInfo.length(flags) + (prependSign ? 1 : 0); // Finally, set the result into the StringBuilder. @@ -1051,8 +1119,13 @@ void PatternStringUtils::patternInfoToStringBuilder(const AffixPatternProvider& } else { candidate = patternInfo.charAt(flags, index); } - if (plusReplacesMinusSign && candidate == u'-') { - candidate = u'+'; + if (candidate == u'-') { + if (u_strlen(signSymbols) == 1) { + candidate = signSymbols[0]; + } else { + output.append(signSymbols[0]); + candidate = signSymbols[1]; + } } if (perMilleReplacesPercent && candidate == u'%') { candidate = u'‰'; @@ -1127,7 +1200,7 @@ PatternSignType PatternStringUtils::resolveSignDisplay(UNumberSignDisplay signDi break; } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; return PATTERN_SIGN_TYPE_POS; } diff --git a/deps/icu-small/source/i18n/number_patternstring.h b/deps/icu-small/source/i18n/number_patternstring.h index 3e962cc134f98f..94afda372296ae 100644 --- a/deps/icu-small/source/i18n/number_patternstring.h +++ b/deps/icu-small/source/i18n/number_patternstring.h @@ -62,6 +62,7 @@ struct U_I18N_API ParsedSubpatternInfo { bool hasPercentSign = false; bool hasPerMilleSign = false; bool hasCurrencySign = false; + bool hasCurrencyDecimal = false; bool hasMinusSign = false; bool hasPlusSign = false; @@ -104,6 +105,8 @@ struct U_I18N_API ParsedPatternInfo : public AffixPatternProvider, public UMemor bool hasBody() const U_OVERRIDE; + bool currencyAsDecimal() const U_OVERRIDE; + private: struct U_I18N_API ParserState { const UnicodeString& pattern; // reference to the parent @@ -119,8 +122,13 @@ struct U_I18N_API ParsedPatternInfo : public AffixPatternProvider, public UMemor return *this; } + /** Returns the next code point, or -1 if string is too short. */ UChar32 peek(); + /** Returns the code point after the next code point, or -1 if string is too short. */ + UChar32 peek2(); + + /** Returns the next code point and then steps forward. */ UChar32 next(); // TODO: We don't currently do anything with the message string. @@ -243,9 +251,9 @@ class U_I18N_API PatternStringUtils { * it should not be ignored if maxFrac is 2 or more (but a roundingIncrement of * 0.005 is treated like 0.001 for significance). * - * This test is needed for both NumberPropertyMapper::oldToNew and + * This test is needed for both NumberPropertyMapper::oldToNew and * PatternStringUtils::propertiesToPatternString. In Java it cannot be - * exported by NumberPropertyMapper (package provate) so it is in + * exported by NumberPropertyMapper (package private) so it is in * PatternStringUtils, do the same in C. * * @param roundIncr @@ -308,6 +316,7 @@ class U_I18N_API PatternStringUtils { */ static void patternInfoToStringBuilder(const AffixPatternProvider& patternInfo, bool isPrefix, PatternSignType patternSignType, + bool approximately, StandardPlural::Form plural, bool perMilleReplacesPercent, UnicodeString& output); diff --git a/deps/icu-small/source/i18n/number_rounding.cpp b/deps/icu-small/source/i18n/number_rounding.cpp index 40392ee857e493..877df63c8f68ef 100644 --- a/deps/icu-small/source/i18n/number_rounding.cpp +++ b/deps/icu-small/source/i18n/number_rounding.cpp @@ -13,6 +13,7 @@ #include "double-conversion.h" #include "number_roundingutils.h" #include "number_skeletons.h" +#include "number_decnum.h" #include "putilimp.h" #include "string_segment.h" @@ -35,8 +36,10 @@ void number::impl::parseIncrementOption(const StringSegment &segment, // Utilize DecimalQuantity/decNumber to parse this for us. DecimalQuantity dq; UErrorCode localStatus = U_ZERO_ERROR; - dq.setToDecNumber({buffer.data(), buffer.length()}, localStatus); - if (U_FAILURE(localStatus)) { + DecNum decnum; + decnum.setTo({buffer.data(), buffer.length()}, localStatus); + dq.setToDecNum(decnum, localStatus); + if (U_FAILURE(localStatus) || decnum.isSpecial()) { // throw new SkeletonSyntaxException("Invalid rounding increment", segment, e); status = U_NUMBER_SKELETON_SYNTAX_ERROR; return; @@ -498,10 +501,10 @@ void RoundingImpl::apply(impl::DecimalQuantity &value, UErrorCode& status) const case Precision::RND_CURRENCY: // Call .withCurrency() before .apply()! - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } if (fPrecision.fTrailingZeroDisplay == UNUM_TRAILING_ZERO_AUTO || diff --git a/deps/icu-small/source/i18n/number_scientific.cpp b/deps/icu-small/source/i18n/number_scientific.cpp index 33862d7a887ef4..d365d982d4ce85 100644 --- a/deps/icu-small/source/i18n/number_scientific.cpp +++ b/deps/icu-small/source/i18n/number_scientific.cpp @@ -96,7 +96,7 @@ bool ScientificModifier::isStrong() const { bool ScientificModifier::containsField(Field field) const { (void)field; // This method is not used for inner modifiers. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } void ScientificModifier::getParameters(Parameters& output) const { @@ -115,7 +115,7 @@ bool ScientificModifier::semanticallyEquivalent(const Modifier& other) const { // Note: Visual Studio does not compile this function without full name space. Why? icu::number::impl::ScientificHandler::ScientificHandler(const Notation *notation, const DecimalFormatSymbols *symbols, - const MicroPropsGenerator *parent) : + const MicroPropsGenerator *parent) : fSettings(notation->fUnion.scientific), fSymbols(symbols), fParent(parent) {} void ScientificHandler::processQuantity(DecimalQuantity &quantity, MicroProps µs, diff --git a/deps/icu-small/source/i18n/number_scientific.h b/deps/icu-small/source/i18n/number_scientific.h index a55d5ed1d410de..a40a6e416d1929 100644 --- a/deps/icu-small/source/i18n/number_scientific.h +++ b/deps/icu-small/source/i18n/number_scientific.h @@ -52,7 +52,7 @@ class ScientificHandler : public UMemory, public MicroPropsGenerator, public Mul int32_t getMultiplier(int32_t magnitude) const U_OVERRIDE; private: - const Notation::ScientificSettings& fSettings; + const Notation::ScientificSettings fSettings; const DecimalFormatSymbols *fSymbols; const MicroPropsGenerator *fParent; diff --git a/deps/icu-small/source/i18n/number_skeletons.cpp b/deps/icu-small/source/i18n/number_skeletons.cpp index 97d74303a4358e..de70c5cedff3ca 100644 --- a/deps/icu-small/source/i18n/number_skeletons.cpp +++ b/deps/icu-small/source/i18n/number_skeletons.cpp @@ -74,6 +74,7 @@ void U_CALLCONV initNumberSkeletons(UErrorCode& status) { b.add(u"rounding-mode-half-down", STEM_ROUNDING_MODE_HALF_DOWN, status); b.add(u"rounding-mode-half-up", STEM_ROUNDING_MODE_HALF_UP, status); b.add(u"rounding-mode-unnecessary", STEM_ROUNDING_MODE_UNNECESSARY, status); + b.add(u"integer-width-trunc", STEM_INTEGER_WIDTH_TRUNC, status); b.add(u"group-off", STEM_GROUP_OFF, status); b.add(u"group-min2", STEM_GROUP_MIN2, status); b.add(u"group-auto", STEM_GROUP_AUTO, status); @@ -176,7 +177,7 @@ Notation stem_to_object::notation(skeleton::StemEnum stem) { case STEM_NOTATION_SIMPLE: return Notation::simple(); default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -189,7 +190,7 @@ MeasureUnit stem_to_object::unit(skeleton::StemEnum stem) { case STEM_PERMILLE: return MeasureUnit::getPermille(); default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -204,7 +205,7 @@ Precision stem_to_object::precision(skeleton::StemEnum stem) { case STEM_PRECISION_CURRENCY_CASH: return Precision::currency(UCURR_USAGE_CASH); default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -233,7 +234,7 @@ UNumberFormatRoundingMode stem_to_object::roundingMode(skeleton::StemEnum stem) case STEM_ROUNDING_MODE_UNNECESSARY: return UNUM_ROUND_UNNECESSARY; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -348,7 +349,7 @@ void enum_to_stem_string::roundingMode(UNumberFormatRoundingMode value, UnicodeS sb.append(u"rounding-mode-unnecessary", -1); break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -370,7 +371,7 @@ void enum_to_stem_string::groupingStrategy(UNumberGroupingStrategy value, Unicod sb.append(u"group-thousands", -1); break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -398,7 +399,7 @@ void enum_to_stem_string::unitWidth(UNumberUnitWidth value, UnicodeString& sb) { sb.append(u"unit-width-hidden", -1); break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -432,7 +433,7 @@ void enum_to_stem_string::signDisplay(UNumberSignDisplay value, UnicodeString& s sb.append(u"sign-accounting-negative", -1); break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -446,7 +447,7 @@ enum_to_stem_string::decimalSeparatorDisplay(UNumberDecimalSeparatorDisplay valu sb.append(u"decimal-always", -1); break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -700,6 +701,11 @@ skeleton::parseStem(const StringSegment& segment, const UCharsTrie& stemTrie, Se macros.roundingMode = stem_to_object::roundingMode(stem); return STATE_NULL; + case STEM_INTEGER_WIDTH_TRUNC: + CHECK_NULL(seen, integerWidth, status); + macros.integerWidth = IntegerWidth::zeroFillTo(0).truncateAt(0); + return STATE_NULL; + case STEM_GROUP_OFF: case STEM_GROUP_MIN2: case STEM_GROUP_AUTO: @@ -785,7 +791,7 @@ skeleton::parseStem(const StringSegment& segment, const UCharsTrie& stemTrie, Se return STATE_SCALE; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -1352,7 +1358,9 @@ bool blueprint_helpers::parseFracSigOption(const StringSegment& segment, MacroPr priority = UNUM_ROUNDING_PRIORITY_STRICT; offset++; } else { - U_ASSERT(offset < segment.length()); + // Invalid digits option for fraction rounder + status = U_NUMBER_SKELETON_SYNTAX_ERROR; + return false; } if (offset < segment.length()) { // Invalid digits option for fraction rounder @@ -1391,18 +1399,14 @@ void blueprint_helpers::parseIncrementOption(const StringSegment &segment, Macro number::impl::parseIncrementOption(segment, macros.precision, status); } -void blueprint_helpers::generateIncrementOption(double increment, int32_t trailingZeros, UnicodeString& sb, +void blueprint_helpers::generateIncrementOption(double increment, int32_t minFrac, UnicodeString& sb, UErrorCode&) { // Utilize DecimalQuantity/double_conversion to format this for us. DecimalQuantity dq; dq.setToDouble(increment); dq.roundToInfinity(); + dq.setMinFraction(minFrac); sb.append(dq.toPlainString()); - - // We might need to append extra trailing zeros for min fraction... - if (trailingZeros > 0) { - appendMultiple(sb, u'0', trailingZeros); - } } void blueprint_helpers::parseIntegerWidthOption(const StringSegment& segment, MacroProps& macros, @@ -1491,7 +1495,7 @@ void blueprint_helpers::parseScaleOption(const StringSegment& segment, MacroProp LocalPointer decnum(new DecNum(), status); if (U_FAILURE(status)) { return; } decnum->setTo({buffer.data(), buffer.length()}, status); - if (U_FAILURE(status)) { + if (U_FAILURE(status) || decnum->isSpecial()) { // This is a skeleton syntax error; don't let the low-level decnum error bubble up status = U_NUMBER_SKELETON_SYNTAX_ERROR; return; @@ -1626,7 +1630,7 @@ bool GeneratorHelpers::precision(const MacroProps& macros, UnicodeString& sb, UE sb.append(u"precision-increment/", -1); blueprint_helpers::generateIncrementOption( impl.fIncrement, - impl.fMinFrac - impl.fMaxFrac, + impl.fMinFrac, sb, status); } else if (macros.precision.fType == Precision::RND_CURRENCY) { @@ -1677,10 +1681,15 @@ bool GeneratorHelpers::integerWidth(const MacroProps& macros, UnicodeString& sb, // Error or Default return false; } + const auto& minMaxInt = macros.integerWidth.fUnion.minMaxInt; + if (minMaxInt.fMinInt == 0 && minMaxInt.fMaxInt == 0) { + sb.append(u"integer-width-trunc", -1); + return true; + } sb.append(u"integer-width/", -1); blueprint_helpers::generateIntegerWidthOption( - macros.integerWidth.fUnion.minMaxInt.fMinInt, - macros.integerWidth.fUnion.minMaxInt.fMaxInt, + minMaxInt.fMinInt, + minMaxInt.fMaxInt, sb, status); return true; diff --git a/deps/icu-small/source/i18n/number_skeletons.h b/deps/icu-small/source/i18n/number_skeletons.h index af636504283059..be41f1b3237a94 100644 --- a/deps/icu-small/source/i18n/number_skeletons.h +++ b/deps/icu-small/source/i18n/number_skeletons.h @@ -92,6 +92,7 @@ enum StemEnum { STEM_ROUNDING_MODE_HALF_DOWN, STEM_ROUNDING_MODE_HALF_UP, STEM_ROUNDING_MODE_UNNECESSARY, + STEM_INTEGER_WIDTH_TRUNC, STEM_GROUP_OFF, STEM_GROUP_MIN2, STEM_GROUP_AUTO, @@ -285,7 +286,7 @@ bool parseTrailingZeroOption(const StringSegment& segment, MacroProps& macros, U void parseIncrementOption(const StringSegment& segment, MacroProps& macros, UErrorCode& status); void -generateIncrementOption(double increment, int32_t trailingZeros, UnicodeString& sb, UErrorCode& status); +generateIncrementOption(double increment, int32_t minFrac, UnicodeString& sb, UErrorCode& status); void parseIntegerWidthOption(const StringSegment& segment, MacroProps& macros, UErrorCode& status); diff --git a/deps/icu-small/source/i18n/number_types.h b/deps/icu-small/source/i18n/number_types.h index 8078851ba3fdb3..84846efb9242ac 100644 --- a/deps/icu-small/source/i18n/number_types.h +++ b/deps/icu-small/source/i18n/number_types.h @@ -62,26 +62,29 @@ enum AffixPatternType { // Represents a plus sign symbol '+'. TYPE_PLUS_SIGN = -2, + // Represents an approximately sign symbol '~'. + TYPE_APPROXIMATELY_SIGN = -3, + // Represents a percent sign symbol '%'. - TYPE_PERCENT = -3, + TYPE_PERCENT = -4, // Represents a permille sign symbol '‰'. - TYPE_PERMILLE = -4, + TYPE_PERMILLE = -5, // Represents a single currency symbol '¤'. - TYPE_CURRENCY_SINGLE = -5, + TYPE_CURRENCY_SINGLE = -6, // Represents a double currency symbol '¤¤'. - TYPE_CURRENCY_DOUBLE = -6, + TYPE_CURRENCY_DOUBLE = -7, // Represents a triple currency symbol '¤¤¤'. - TYPE_CURRENCY_TRIPLE = -7, + TYPE_CURRENCY_TRIPLE = -8, // Represents a quadruple currency symbol '¤¤¤¤'. - TYPE_CURRENCY_QUAD = -8, + TYPE_CURRENCY_QUAD = -9, // Represents a quintuple currency symbol '¤¤¤¤¤'. - TYPE_CURRENCY_QUINT = -9, + TYPE_CURRENCY_QUINT = -10, // Represents a sequence of six or more currency symbols. TYPE_CURRENCY_OVERFLOW = -15 @@ -137,6 +140,11 @@ class U_I18N_API AffixPatternProvider { * number instead of rendering the number. */ virtual bool hasBody() const = 0; + + /** + * True if the currency symbol should replace the decimal separator. + */ + virtual bool currencyAsDecimal() const = 0; }; diff --git a/deps/icu-small/source/i18n/number_usageprefs.cpp b/deps/icu-small/source/i18n/number_usageprefs.cpp index ed426da086e327..5d93d12cce78f1 100644 --- a/deps/icu-small/source/i18n/number_usageprefs.cpp +++ b/deps/icu-small/source/i18n/number_usageprefs.cpp @@ -133,7 +133,7 @@ void mixedMeasuresToMicros(const MaybeStackVector &measures, DecimalQua default: U_ASSERT(0 == "Found a Measure Number which is neither a double nor an int"); - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; break; } diff --git a/deps/icu-small/source/i18n/number_utils.cpp b/deps/icu-small/source/i18n/number_utils.cpp index bef7ea6c61f30b..ad7053214077b0 100644 --- a/deps/icu-small/source/i18n/number_utils.cpp +++ b/deps/icu-small/source/i18n/number_utils.cpp @@ -70,7 +70,7 @@ const char16_t* utils::getPatternForStyle(const Locale& locale, const char* nsNa break; default: patternKey = "decimalFormat"; // silence compiler error - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } LocalUResourceBundlePointer res(ures_open(nullptr, locale.getName(), &status)); if (U_FAILURE(status)) { return u""; } @@ -180,12 +180,6 @@ void DecNum::_setTo(const char* str, int32_t maxDigits, UErrorCode& status) { status = U_UNSUPPORTED_ERROR; return; } - - // For consistency with Java BigDecimal, no support for DecNum that is NaN or Infinity! - if (decNumberIsSpecial(fData.getAlias())) { - status = U_UNSUPPORTED_ERROR; - return; - } } void @@ -252,6 +246,18 @@ bool DecNum::isZero() const { return decNumberIsZero(fData.getAlias()); } +bool DecNum::isSpecial() const { + return decNumberIsSpecial(fData.getAlias()); +} + +bool DecNum::isInfinity() const { + return decNumberIsInfinite(fData.getAlias()); +} + +bool DecNum::isNaN() const { + return decNumberIsNaN(fData.getAlias()); +} + void DecNum::toString(ByteSink& output, UErrorCode& status) const { if (U_FAILURE(status)) { return; diff --git a/deps/icu-small/source/i18n/numfmt.cpp b/deps/icu-small/source/i18n/numfmt.cpp index bffefa5e3998b8..b8ce1c930f9dbe 100644 --- a/deps/icu-small/source/i18n/numfmt.cpp +++ b/deps/icu-small/source/i18n/numfmt.cpp @@ -122,7 +122,7 @@ static const UChar * const gLastResortNumberPatterns[UNUM_FORMAT_STYLE_COUNT] = gLastResortIsoCurrencyPat, // UNUM_CURRENCY_ISO gLastResortPluralCurrencyPat, // UNUM_CURRENCY_PLURAL gLastResortAccountingCurrencyPat, // UNUM_CURRENCY_ACCOUNTING - gLastResortCurrencyPat, // UNUM_CASH_CURRENCY + gLastResortCurrencyPat, // UNUM_CASH_CURRENCY NULL, // UNUM_DECIMAL_COMPACT_SHORT NULL, // UNUM_DECIMAL_COMPACT_LONG gLastResortCurrencyPat, // UNUM_CURRENCY_STANDARD @@ -285,7 +285,7 @@ NumberFormat::operator=(const NumberFormat& rhs) // ------------------------------------- -UBool +bool NumberFormat::operator==(const Format& that) const { // Format::operator== guarantees this cast is safe @@ -434,13 +434,13 @@ NumberFormat::format(int64_t number, // ------------------------------------- -// Decimal Number format() default implementation +// Decimal Number format() default implementation // Subclasses do not normally override this function, but rather the DigitList // formatting functions.. // The expected call chain from here is // this function -> // NumberFormat::format(Formattable -> -// DecimalFormat::format(DigitList +// DecimalFormat::format(DigitList // // Or, for subclasses of Formattable that do not know about DigitList, // this Function -> @@ -860,7 +860,7 @@ class ICUNumberFormatFactory : public ICUResourceBundleFactory { public: virtual ~ICUNumberFormatFactory(); protected: - virtual UObject* handleCreate(const Locale& loc, int32_t kind, const ICUService* /* service */, UErrorCode& status) const { + virtual UObject* handleCreate(const Locale& loc, int32_t kind, const ICUService* /* service */, UErrorCode& status) const override { return NumberFormat::makeInstance(loc, (UNumberFormatStyle)kind, status); } }; @@ -884,7 +884,7 @@ class NFFactory : public LocaleKeyFactory { virtual ~NFFactory(); - virtual UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const + virtual UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const override { if (handlesKey(key, status)) { const LocaleKey& lkey = (const LocaleKey&)key; @@ -907,7 +907,7 @@ class NFFactory : public LocaleKeyFactory { * otherwise). This can be called often and might need to be * cached if it is expensive to create. */ - virtual const Hashtable* getSupportedIDs(UErrorCode& status) const + virtual const Hashtable* getSupportedIDs(UErrorCode& status) const override { if (U_SUCCESS(status)) { if (!_ids) { @@ -943,11 +943,11 @@ class ICUNumberFormatService : public ICULocaleService { virtual ~ICUNumberFormatService(); - virtual UObject* cloneInstance(UObject* instance) const { + virtual UObject* cloneInstance(UObject* instance) const override { return ((NumberFormat*)instance)->clone(); } - virtual UObject* handleDefault(const ICUServiceKey& key, UnicodeString* /* actualID */, UErrorCode& status) const { + virtual UObject* handleDefault(const ICUServiceKey& key, UnicodeString* /* actualID */, UErrorCode& status) const override { LocaleKey& lkey = (LocaleKey&)key; int32_t kind = lkey.kind(); Locale loc; @@ -955,7 +955,7 @@ class ICUNumberFormatService : public ICULocaleService { return NumberFormat::makeInstance(loc, (UNumberFormatStyle)kind, status); } - virtual UBool isDefault() const { + virtual UBool isDefault() const override { return countFactories() == 1; } }; @@ -1066,7 +1066,7 @@ NumberFormat::createInstance(const Locale& loc, UNumberFormatStyle kind, UErrorC } return result; } - + // ------------------------------------- // Checks if the thousand/10 thousand grouping is used in the @@ -1412,7 +1412,7 @@ NumberFormat::makeInstance(const Locale& desiredLocale, if (U_FAILURE(status)) { return NULL; } - if(style==UNUM_CURRENCY || style == UNUM_CURRENCY_ISO || style == UNUM_CURRENCY_ACCOUNTING + if(style==UNUM_CURRENCY || style == UNUM_CURRENCY_ISO || style == UNUM_CURRENCY_ACCOUNTING || style == UNUM_CASH_CURRENCY || style == UNUM_CURRENCY_STANDARD){ const UChar* currPattern = symbolsToAdopt->getCurrencyPattern(); if(currPattern!=NULL){ diff --git a/deps/icu-small/source/i18n/numparse_affixes.cpp b/deps/icu-small/source/i18n/numparse_affixes.cpp index cef1685d03cd85..14140065983866 100644 --- a/deps/icu-small/source/i18n/numparse_affixes.cpp +++ b/deps/icu-small/source/i18n/numparse_affixes.cpp @@ -101,7 +101,7 @@ void AffixPatternMatcherBuilder::consumeToken(AffixPatternType type, UChar32 cp, addMatcher(fWarehouse.currency(status)); break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } else if (fIgnorables != nullptr && fIgnorables->getSet()->contains(cp)) { @@ -294,18 +294,20 @@ void AffixMatcherWarehouse::createAffixMatchers(const AffixPatternProvider& patt } // Generate Prefix + // TODO: Handle approximately sign? bool hasPrefix = false; PatternStringUtils::patternInfoToStringBuilder( - patternInfo, true, type, StandardPlural::OTHER, false, sb); + patternInfo, true, type, false, StandardPlural::OTHER, false, sb); fAffixPatternMatchers[numAffixPatternMatchers] = AffixPatternMatcher::fromAffixPattern( sb, *fTokenWarehouse, parseFlags, &hasPrefix, status); AffixPatternMatcher* prefix = hasPrefix ? &fAffixPatternMatchers[numAffixPatternMatchers++] : nullptr; // Generate Suffix + // TODO: Handle approximately sign? bool hasSuffix = false; PatternStringUtils::patternInfoToStringBuilder( - patternInfo, false, type, StandardPlural::OTHER, false, sb); + patternInfo, false, type, false, StandardPlural::OTHER, false, sb); fAffixPatternMatchers[numAffixPatternMatchers] = AffixPatternMatcher::fromAffixPattern( sb, *fTokenWarehouse, parseFlags, &hasSuffix, status); AffixPatternMatcher* suffix = hasSuffix ? &fAffixPatternMatchers[numAffixPatternMatchers++] diff --git a/deps/icu-small/source/i18n/numparse_affixes.h b/deps/icu-small/source/i18n/numparse_affixes.h index 511c73c745380d..a82b731ab5b752 100644 --- a/deps/icu-small/source/i18n/numparse_affixes.h +++ b/deps/icu-small/source/i18n/numparse_affixes.h @@ -52,7 +52,7 @@ class U_I18N_API CodePointMatcher : public NumberParseMatcher, public UMemory { // (See digitlst.h, pluralaffix.h, datefmt.h, and others for similar examples.) // Note: These need to be outside of the numparse::impl namespace, or Clang will generate a compile error. #if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN -template class U_I18N_API MaybeStackArray; +template class U_I18N_API MaybeStackArray; template class U_I18N_API MaybeStackArray; template class U_I18N_API MemoryPool; template class U_I18N_API numparse::impl::CompactUnicodeString<4>; diff --git a/deps/icu-small/source/i18n/numparse_currency.cpp b/deps/icu-small/source/i18n/numparse_currency.cpp index 6b53a73edf3b85..7bbb060f3de406 100644 --- a/deps/icu-small/source/i18n/numparse_currency.cpp +++ b/deps/icu-small/source/i18n/numparse_currency.cpp @@ -42,7 +42,7 @@ CombinedCurrencyMatcher::CombinedCurrencyMatcher(const CurrencySymbols& currency // TODO: Figure out how to make this faster and re-enable. // Computing the "lead code points" set for fastpathing is too slow to use in production. - // See http://bugs.icu-project.org/trac/ticket/13584 + // See https://unicode-org.atlassian.net/browse/ICU-13584 // // Compute the full set of characters that could be the first in a currency to allow for // // efficient smoke test. // fLeadCodePoints.add(fCurrency1.char32At(0)); diff --git a/deps/icu-small/source/i18n/numparse_decimal.cpp b/deps/icu-small/source/i18n/numparse_decimal.cpp index cf1e8156726d01..8b99fd7ad4fa10 100644 --- a/deps/icu-small/source/i18n/numparse_decimal.cpp +++ b/deps/icu-small/source/i18n/numparse_decimal.cpp @@ -88,7 +88,7 @@ DecimalMatcher::DecimalMatcher(const DecimalFormatSymbols& symbols, const Groupe grouping2 = grouper.getSecondary(); // Fraction grouping parsing is disabled for now but could be enabled later. - // See http://bugs.icu-project.org/trac/ticket/10794 + // See https://unicode-org.atlassian.net/browse/ICU-10794 // fractionGrouping = 0 != (parseFlags & PARSE_FLAG_FRACTION_GROUPING_ENABLED); } diff --git a/deps/icu-small/source/i18n/numparse_decimal.h b/deps/icu-small/source/i18n/numparse_decimal.h index ec6c76487e44fc..07c9afeccc9d64 100644 --- a/deps/icu-small/source/i18n/numparse_decimal.h +++ b/deps/icu-small/source/i18n/numparse_decimal.h @@ -39,7 +39,7 @@ class DecimalMatcher : public NumberParseMatcher, public UMemory { bool groupingDisabled; // Fraction grouping parsing is disabled for now but could be enabled later. - // See http://bugs.icu-project.org/trac/ticket/10794 + // See https://unicode-org.atlassian.net/browse/ICU-10794 // bool fractionGrouping; /** If true, do not accept numbers in the fraction */ diff --git a/deps/icu-small/source/i18n/numparse_impl.cpp b/deps/icu-small/source/i18n/numparse_impl.cpp index 4b76da1c149a74..91c60747f2129f 100644 --- a/deps/icu-small/source/i18n/numparse_impl.cpp +++ b/deps/icu-small/source/i18n/numparse_impl.cpp @@ -285,7 +285,7 @@ void NumberParserImpl::parseGreedy(StringSegment& segment, ParsedNumber& result, i++; continue; } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } // NOTE: If we get here, the greedy parse completed without consuming the entire string. diff --git a/deps/icu-small/source/i18n/numrange_capi.cpp b/deps/icu-small/source/i18n/numrange_capi.cpp index a440a53fe6b173..bd3a9ef5e82528 100644 --- a/deps/icu-small/source/i18n/numrange_capi.cpp +++ b/deps/icu-small/source/i18n/numrange_capi.cpp @@ -115,7 +115,9 @@ unumrf_formatDoubleRange( auto* result = UFormattedNumberRangeApiHelper::validate(uresult, *ec); if (U_FAILURE(*ec)) { return; } - result->fData.getStringRef().clear(); + result->fData.resetString(); + result->fData.quantity1.clear(); + result->fData.quantity2.clear(); result->fData.quantity1.setToDouble(first); result->fData.quantity2.setToDouble(second); formatter->fFormatter.formatImpl(result->fData, first == second, *ec); @@ -132,7 +134,9 @@ unumrf_formatDecimalRange( auto* result = UFormattedNumberRangeApiHelper::validate(uresult, *ec); if (U_FAILURE(*ec)) { return; } - result->fData.getStringRef().clear(); + result->fData.resetString(); + result->fData.quantity1.clear(); + result->fData.quantity2.clear(); result->fData.quantity1.setToDecNumber({first, firstLen}, *ec); result->fData.quantity2.setToDecNumber({second, secondLen}, *ec); formatter->fFormatter.formatImpl(result->fData, first == second, *ec); diff --git a/deps/icu-small/source/i18n/numrange_impl.cpp b/deps/icu-small/source/i18n/numrange_impl.cpp index aa713f1398b502..3c440c193c7bd5 100644 --- a/deps/icu-small/source/i18n/numrange_impl.cpp +++ b/deps/icu-small/source/i18n/numrange_impl.cpp @@ -30,7 +30,8 @@ constexpr int8_t identity2d(UNumberRangeIdentityFallback a, UNumberRangeIdentity struct NumberRangeData { SimpleFormatter rangePattern; - SimpleFormatter approximatelyPattern; + // Note: approximatelyPattern is unused since ICU 69. + // SimpleFormatter approximatelyPattern; }; class NumberRangeDataSink : public ResourceSink { @@ -46,12 +47,16 @@ class NumberRangeDataSink : public ResourceSink { continue; // have already seen this pattern } fData.rangePattern = {value.getUnicodeString(status), status}; - } else if (uprv_strcmp(key, "approximately") == 0) { + } + /* + // Note: approximatelyPattern is unused since ICU 69. + else if (uprv_strcmp(key, "approximately") == 0) { if (hasApproxData()) { continue; // have already seen this pattern } fData.approximatelyPattern = {value.getUnicodeString(status), status}; } + */ } } @@ -59,21 +64,26 @@ class NumberRangeDataSink : public ResourceSink { return fData.rangePattern.getArgumentLimit() != 0; } + /* + // Note: approximatelyPattern is unused since ICU 69. bool hasApproxData() { return fData.approximatelyPattern.getArgumentLimit() != 0; } + */ bool isComplete() { - return hasRangeData() && hasApproxData(); + return hasRangeData() /* && hasApproxData() */; } void fillInDefaults(UErrorCode& status) { if (!hasRangeData()) { fData.rangePattern = {u"{0}–{1}", status}; } + /* if (!hasApproxData()) { fData.approximatelyPattern = {u"~{0}", status}; } + */ } private: @@ -116,7 +126,8 @@ NumberRangeFormatterImpl::NumberRangeFormatterImpl(const RangeMacroProps& macros formatterImpl2(macros.formatter2.fMacros, status), fSameFormatters(macros.singleFormatter), fCollapse(macros.collapse), - fIdentityFallback(macros.identityFallback) { + fIdentityFallback(macros.identityFallback), + fApproximatelyFormatter(status) { const char* nsName = formatterImpl1.getRawMicroProps().nsName; if (uprv_strcmp(nsName, formatterImpl2.getRawMicroProps().nsName) != 0) { @@ -128,7 +139,16 @@ NumberRangeFormatterImpl::NumberRangeFormatterImpl(const RangeMacroProps& macros getNumberRangeData(macros.locale.getName(), nsName, data, status); if (U_FAILURE(status)) { return; } fRangeFormatter = data.rangePattern; - fApproximatelyModifier = {data.approximatelyPattern, kUndefinedField, false}; + + if (fSameFormatters && ( + fIdentityFallback == UNUM_IDENTITY_FALLBACK_APPROXIMATELY || + fIdentityFallback == UNUM_IDENTITY_FALLBACK_APPROXIMATELY_OR_SINGLE_VALUE)) { + MacroProps approximatelyMacros(macros.formatter1.fMacros); + approximatelyMacros.approximately = true; + // Use in-place construction because NumberFormatterImpl has internal self-pointers + fApproximatelyFormatter.~NumberFormatterImpl(); + new (&fApproximatelyFormatter) NumberFormatterImpl(approximatelyMacros, status); + } // TODO: Get locale from PluralRules instead? fPluralRanges = StandardPluralRanges::forLocale(macros.locale, status); @@ -209,7 +229,7 @@ void NumberRangeFormatterImpl::format(UFormattedNumberRangeData& data, bool equa break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -232,12 +252,14 @@ void NumberRangeFormatterImpl::formatApproximately (UFormattedNumberRangeData& d UErrorCode& status) const { if (U_FAILURE(status)) { return; } if (fSameFormatters) { - int32_t length = NumberFormatterImpl::writeNumber(micros1, data.quantity1, data.getStringRef(), 0, status); - // HEURISTIC: Desired modifier order: inner, middle, approximately, outer. - length += micros1.modInner->apply(data.getStringRef(), 0, length, status); - length += micros1.modMiddle->apply(data.getStringRef(), 0, length, status); - length += fApproximatelyModifier.apply(data.getStringRef(), 0, length, status); - micros1.modOuter->apply(data.getStringRef(), 0, length, status); + // Re-format using the approximately formatter: + MicroProps microsAppx; + data.quantity1.resetExponent(); + fApproximatelyFormatter.preProcess(data.quantity1, microsAppx, status); + int32_t length = NumberFormatterImpl::writeNumber(microsAppx, data.quantity1, data.getStringRef(), 0, status); + length += microsAppx.modInner->apply(data.getStringRef(), 0, length, status); + length += microsAppx.modMiddle->apply(data.getStringRef(), 0, length, status); + microsAppx.modOuter->apply(data.getStringRef(), 0, length, status); } else { formatRange(data, micros1, micros2, status); } @@ -363,7 +385,10 @@ void NumberRangeFormatterImpl::formatRange(UFormattedNumberRangeData& data, } length1 += NumberFormatterImpl::writeNumber(micros1, data.quantity1, string, UPRV_INDEX_0, status); - length2 += NumberFormatterImpl::writeNumber(micros2, data.quantity2, string, UPRV_INDEX_2, status); + // ICU-21684: Write the second number to a temp string to avoid repeated insert operations + FormattedStringBuilder tempString; + NumberFormatterImpl::writeNumber(micros2, data.quantity2, tempString, 0, status); + length2 += string.insert(UPRV_INDEX_2, tempString, status); // TODO: Support padding? diff --git a/deps/icu-small/source/i18n/numrange_impl.h b/deps/icu-small/source/i18n/numrange_impl.h index b81a311a5f393d..ac1d8a58972743 100644 --- a/deps/icu-small/source/i18n/numrange_impl.h +++ b/deps/icu-small/source/i18n/numrange_impl.h @@ -56,7 +56,7 @@ class NumberRangeFormatterImpl : public UMemory { UNumberRangeIdentityFallback fIdentityFallback; SimpleFormatter fRangeFormatter; - SimpleModifier fApproximatelyModifier; + NumberFormatterImpl fApproximatelyFormatter; StandardPluralRanges fPluralRanges; diff --git a/deps/icu-small/source/i18n/numsys.cpp b/deps/icu-small/source/i18n/numsys.cpp index d8b901c0d74b68..44aaf8e2a5f987 100644 --- a/deps/icu-small/source/i18n/numsys.cpp +++ b/deps/icu-small/source/i18n/numsys.cpp @@ -72,7 +72,7 @@ NumberingSystem::NumberingSystem() { * @draft ICU 4.2 */ -NumberingSystem::NumberingSystem(const NumberingSystem& other) +NumberingSystem::NumberingSystem(const NumberingSystem& other) : UObject(other) { *this=other; } @@ -128,7 +128,7 @@ NumberingSystem::createInstance(const Locale & inLocale, UErrorCode& status) { if ( count > 0 ) { // @numbers keyword was specified in the locale U_ASSERT(count < ULOC_KEYWORDS_CAPACITY); buffer[count] = '\0'; // Make sure it is null terminated. - if ( !uprv_strcmp(buffer,gDefault) || !uprv_strcmp(buffer,gNative) || + if ( !uprv_strcmp(buffer,gDefault) || !uprv_strcmp(buffer,gNative) || !uprv_strcmp(buffer,gTraditional) || !uprv_strcmp(buffer,gFinance)) { nsResolved = FALSE; } @@ -159,10 +159,10 @@ NumberingSystem::createInstance(const Locale & inLocale, UErrorCode& status) { u_UCharsToChars(nsName, buffer, count); buffer[count] = '\0'; // Make sure it is null terminated. nsResolved = TRUE; - } + } if (!nsResolved) { // Fallback behavior per TR35 - traditional falls back to native, finance and native fall back to default - if (!uprv_strcmp(buffer,gNative) || !uprv_strcmp(buffer,gFinance)) { + if (!uprv_strcmp(buffer,gNative) || !uprv_strcmp(buffer,gFinance)) { uprv_strcpy(buffer,gDefault); } else if (!uprv_strcmp(buffer,gTraditional)) { uprv_strcpy(buffer,gNative); @@ -314,7 +314,7 @@ U_CFUNC void initNumsysNames(UErrorCode &status) { const char *nsName = ures_getKey(nsCurrent.getAlias()); LocalPointer newElem(new UnicodeString(nsName, -1, US_INV), status); if (U_SUCCESS(status)) { - numsysNames->addElement(newElem.getAlias(), status); + numsysNames->addElementX(newElem.getAlias(), status); if (U_SUCCESS(status)) { newElem.orphan(); // on success, the numsysNames vector owns newElem. } diff --git a/deps/icu-small/source/i18n/numsys_impl.h b/deps/icu-small/source/i18n/numsys_impl.h index c0690b47d78802..e76e634dd23c07 100644 --- a/deps/icu-small/source/i18n/numsys_impl.h +++ b/deps/icu-small/source/i18n/numsys_impl.h @@ -17,7 +17,7 @@ #include "unicode/utypes.h" #if !UCONFIG_NO_FORMATTING - + #include "unicode/numsys.h" #include "uvector.h" #include "unicode/strenum.h" diff --git a/deps/icu-small/source/i18n/olsontz.cpp b/deps/icu-small/source/i18n/olsontz.cpp index 67aa1f7af81d68..cae471a5a25c60 100644 --- a/deps/icu-small/source/i18n/olsontz.cpp +++ b/deps/icu-small/source/i18n/olsontz.cpp @@ -206,7 +206,7 @@ OlsonTimeZone::OlsonTimeZone(const UResourceBundle* top, if (U_SUCCESS(ec)) { UnicodeString ruleID(TRUE, ruleIdUStr, len); UResourceBundle *rule = TimeZone::loadRule(top, ruleID, NULL, ec); - const int32_t *ruleData = ures_getIntVector(rule, &len, &ec); + const int32_t *ruleData = ures_getIntVector(rule, &len, &ec); if (U_SUCCESS(ec) && len == 11) { UnicodeString emptyStr; finalZone = new SimpleTimeZone( @@ -225,7 +225,7 @@ OlsonTimeZone::OlsonTimeZone(const UResourceBundle* top, finalStartYear = ruleYear; // Note: Setting finalStartYear to the finalZone is problematic. When a date is around - // year boundary, SimpleTimeZone may return false result when DST is observed at the + // year boundary, SimpleTimeZone may return false result when DST is observed at the // beginning of year. We could apply safe margin (day or two), but when one of recurrent // rules falls around year boundary, it could return false result. Without setting the // start year, finalZone works fine around the year boundary of the start year. @@ -311,7 +311,7 @@ OlsonTimeZone::~OlsonTimeZone() { /** * Returns true if the two TimeZone objects are equal. */ -UBool OlsonTimeZone::operator==(const TimeZone& other) const { +bool OlsonTimeZone::operator==(const TimeZone& other) const { return ((this == &other) || (typeid(*this) == typeid(other) && TimeZone::operator==(other) && @@ -440,7 +440,7 @@ void printTime(double ms) { int32_t year, month, dom, dow; double millis=0; double days = ClockMath::floorDivide(((double)ms), (double)U_MILLIS_PER_DAY, millis); - + Grego::dayToFields(days, year, month, dom, dow); U_DEBUG_TZ_MSG((" getHistoricalOffset: time %.1f (%04d.%02d.%02d+%.1fh)\n", ms, year, month+1, dom, (millis/kOneHour))); @@ -449,7 +449,7 @@ void printTime(double ms) { int64_t OlsonTimeZone::transitionTimeInSeconds(int16_t transIdx) const { - U_ASSERT(transIdx >= 0 && transIdx < transitionCount()); + U_ASSERT(transIdx >= 0 && transIdx < transitionCount()); if (transIdx < transitionCountPre32) { return (((int64_t)((uint32_t)transitionTimesPre32[transIdx << 1])) << 32) @@ -504,7 +504,7 @@ OlsonTimeZone::getHistoricalOffset(UDate date, UBool local, UBool dstToStd = dstBefore && !dstAfter; UBool stdToDst = !dstBefore && dstAfter; - + if (offsetAfter - offsetBefore >= 0) { // Positive transition, which makes a non-existing local time range if (((NonExistingTimeOpt & kStdDstMask) == kStandard && dstToStd) @@ -590,7 +590,7 @@ UBool OlsonTimeZone::useDaylightTime() const { } return FALSE; } -int32_t +int32_t OlsonTimeZone::getDSTSavings() const{ if (finalZone != NULL){ return finalZone->getDSTSavings(); @@ -622,7 +622,7 @@ OlsonTimeZone::hasSameRules(const TimeZone &other) const { if (typeMapData == z->typeMapData) { return TRUE; } - + // If the pointers are not equal, the zones may still // be equal if their rules and transitions are equal if ((finalZone == NULL && z->finalZone != NULL) @@ -695,7 +695,7 @@ OlsonTimeZone::deleteTransitionRules(void) { static void U_CALLCONV initRules(OlsonTimeZone *This, UErrorCode &status) { This->initTransitionRules(status); } - + void OlsonTimeZone::checkTransitionRules(UErrorCode& status) const { OlsonTimeZone *ncThis = const_cast(this); @@ -806,7 +806,7 @@ OlsonTimeZone::initTransitionRules(UErrorCode& status) { } } if (finalZone != NULL) { - // Get the first occurence of final rule starts + // Get the first occurrence of final rule starts UDate startTime = (UDate)finalStartMillis; TimeZoneRule *firstFinalRule = NULL; diff --git a/deps/icu-small/source/i18n/olsontz.h b/deps/icu-small/source/i18n/olsontz.h index 6bedb8792b0cd4..75d86781edd49a 100644 --- a/deps/icu-small/source/i18n/olsontz.h +++ b/deps/icu-small/source/i18n/olsontz.h @@ -44,52 +44,52 @@ class SimpleTimeZone; * * a. Zone (table). A zone is a table resource contains several * type of resources below: - * + * * - typeOffsets:intvector (Required) - * + * * Sets of UTC raw/dst offset pairs in seconds. Entries at * 2n represents raw offset and 2n+1 represents dst offset * paired with the raw offset at 2n. The very first pair represents * the initial zone offset (before the first transition) always. * - * - trans:intvector (Optional) - * + * - trans:intvector (Optional) + * * List of transition times represented by 32bit seconds from the * epoch (1970-01-01T00:00Z) in ascending order. - * + * * - transPre32/transPost32:intvector (Optional) - * + * * List of transition times before/after 32bit minimum seconds. * Each time is represented by a pair of 32bit integer. - * + * * - typeMap:bin (Optional) - * + * * Array of bytes representing the mapping between each transition * time (transPre32/trans/transPost32) and its corresponding offset * data (typeOffsets). - * + * * - finalRule:string (Optional) - * + * * If a recurrent transition rule is applicable to a zone forever * after the final transition time, finalRule represents the rule * in Rules data. - * + * * - finalRaw:int (Optional) - * + * * When finalRule is available, finalRaw is required and specifies * the raw (base) offset of the rule. - * + * * - finalYear:int (Optional) - * + * * When finalRule is available, finalYear is required and specifies * the start year of the rule. - * + * * - links:intvector (Optional) - * + * * When this zone data is shared with other zones, links specifies * all zones including the zone itself. Each zone is referenced by * integer index. - * + * * b. Link (int, length 1). A link zone is an int resource. The * integer is the zone number of the target zone. The key of this * resource is an alternate name for the target zone. This data @@ -146,12 +146,12 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { /** * Returns true if the two TimeZone objects are equal. */ - virtual UBool operator==(const TimeZone& other) const; + virtual bool operator==(const TimeZone& other) const override; /** * TimeZone API. */ - virtual OlsonTimeZone* clone() const; + virtual OlsonTimeZone* clone() const override; /** * TimeZone API. @@ -161,14 +161,14 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { /** * TimeZone API. */ - virtual UClassID getDynamicClassID() const; - + virtual UClassID getDynamicClassID() const override; + /** * TimeZone API. Do not call this; prefer getOffset(UDate,...). */ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, - int32_t millis, UErrorCode& ec) const; + int32_t millis, UErrorCode& ec) const override; /** * TimeZone API. Do not call this; prefer getOffset(UDate,...). @@ -176,13 +176,13 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, int32_t monthLength, - UErrorCode& ec) const; + UErrorCode& ec) const override; /** * TimeZone API. */ virtual void getOffset(UDate date, UBool local, int32_t& rawOffset, - int32_t& dstOffset, UErrorCode& ec) const; + int32_t& dstOffset, UErrorCode& ec) const override; /** * BasicTimeZone API. @@ -190,14 +190,14 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { virtual void getOffsetFromLocal( UDate date, UTimeZoneLocalOption nonExistingTimeOpt, UTimeZoneLocalOption duplicatedTimeOpt, - int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const; + int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const override; /** * TimeZone API. This method has no effect since objects of this * class are quasi-immutable (the base class allows the ID to be * changed). */ - virtual void setRawOffset(int32_t offsetMillis); + virtual void setRawOffset(int32_t offsetMillis) override; /** * TimeZone API. For a historical zone, the raw offset can change @@ -205,7 +205,7 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { * expected behavior, this method returns the raw offset for the * current moment in time. */ - virtual int32_t getRawOffset() const; + virtual int32_t getRawOffset() const override; /** * TimeZone API. For a historical zone, whether DST is used or @@ -213,22 +213,22 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { * behavior, this method returns true if DST is observed at any * point in the current year. */ - virtual UBool useDaylightTime() const; + virtual UBool useDaylightTime() const override; /** * TimeZone API. */ - virtual UBool inDaylightTime(UDate date, UErrorCode& ec) const; + virtual UBool inDaylightTime(UDate date, UErrorCode& ec) const override; /** * TimeZone API. */ - virtual int32_t getDSTSavings() const; + virtual int32_t getDSTSavings() const override; /** * TimeZone API. Also comare historic transitions. */ - virtual UBool hasSameRules(const TimeZone& other) const; + virtual UBool hasSameRules(const TimeZone& other) const override; /** * BasicTimeZone API. @@ -238,7 +238,7 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { * @param result Receives the first transition after the base time. * @return true if the transition is found. */ - virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const; + virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const override; /** * BasicTimeZone API. @@ -248,7 +248,7 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { * @param result Receives the most recent transition before the base time. * @return true if the transition is found. */ - virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const; + virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const override; /** * BasicTimeZone API. @@ -258,7 +258,7 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { * @param status Receives error status code. * @return The number of TimeZoneRules representing time transitions. */ - virtual int32_t countTransitionRules(UErrorCode& status) const; + virtual int32_t countTransitionRules(UErrorCode& status) const override; /** * Gets the InitialTimeZoneRule and the set of TimeZoneRule @@ -276,7 +276,7 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { * @param status Receives error status code. */ virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial, - const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const; + const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const override; /** * Internal API returning the canonical ID of this zone. diff --git a/deps/icu-small/source/i18n/persncal.cpp b/deps/icu-small/source/i18n/persncal.cpp index ba306653af28e0..d30577f337f79c 100644 --- a/deps/icu-small/source/i18n/persncal.cpp +++ b/deps/icu-small/source/i18n/persncal.cpp @@ -70,7 +70,7 @@ static const int32_t PERSIAN_EPOCH = 1948320; // Constructors... //------------------------------------------------------------------------- -const char *PersianCalendar::getType() const { +const char *PersianCalendar::getType() const { return "persian"; } @@ -113,7 +113,7 @@ UBool PersianCalendar::isLeapYear(int32_t year) ClockMath::floorDivide(25 * year + 11, 33, remainder); return (remainder < 8); } - + /** * Return the day # on which the given year starts. Days are counted * from the Persian epoch, origin 0. @@ -121,7 +121,7 @@ UBool PersianCalendar::isLeapYear(int32_t year) int32_t PersianCalendar::yearStart(int32_t year) { return handleComputeMonthStart(year,0,FALSE); } - + /** * Return the day # on which the given month starts. Days are counted * from the Persian epoch, origin 0. @@ -132,7 +132,7 @@ int32_t PersianCalendar::yearStart(int32_t year) { int32_t PersianCalendar::monthStart(int32_t year, int32_t month) const { return handleComputeMonthStart(year,month,TRUE); } - + //---------------------------------------------------------------------- // Calendar framework //---------------------------------------------------------------------- @@ -159,7 +159,7 @@ int32_t PersianCalendar::handleGetMonthLength(int32_t extendedYear, int32_t mont int32_t PersianCalendar::handleGetYearLength(int32_t extendedYear) const { return isLeapYear(extendedYear) ? 366 : 365; } - + //------------------------------------------------------------------------- // Functions for converting from field values to milliseconds.... //------------------------------------------------------------------------- @@ -205,7 +205,7 @@ int32_t PersianCalendar::handleGetExtendedYear() { *

  • DAY_OF_MONTH *
  • DAY_OF_YEAR *
  • EXTENDED_YEAR - * + * * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this * method is called. */ @@ -231,13 +231,13 @@ void PersianCalendar::handleComputeFields(int32_t julianDay, UErrorCode &/*statu internalSet(UCAL_MONTH, month); internalSet(UCAL_DAY_OF_MONTH, dayOfMonth); internalSet(UCAL_DAY_OF_YEAR, dayOfYear); -} +} UBool PersianCalendar::inDaylightTime(UErrorCode& status) const { // copied from GregorianCalendar - if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) + if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) return FALSE; // Force an update of the state of the Calendar. @@ -292,3 +292,4 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(PersianCalendar) U_NAMESPACE_END #endif + diff --git a/deps/icu-small/source/i18n/persncal.h b/deps/icu-small/source/i18n/persncal.h index f330ea8a0319b2..d0f2ee5ec209e0 100644 --- a/deps/icu-small/source/i18n/persncal.h +++ b/deps/icu-small/source/i18n/persncal.h @@ -58,79 +58,79 @@ class PersianCalendar : public Calendar { */ enum EMonths { /** - * Constant for Farvardin, the 1st month of the Persian year. + * Constant for Farvardin, the 1st month of the Persian year. * @internal */ FARVARDIN = 0, /** - * Constant for Ordibehesht, the 2nd month of the Persian year. + * Constant for Ordibehesht, the 2nd month of the Persian year. * @internal */ ORDIBEHESHT = 1, /** - * Constant for Khordad, the 3rd month of the Persian year. - * @internal + * Constant for Khordad, the 3rd month of the Persian year. + * @internal */ KHORDAD = 2, /** - * Constant for Tir, the 4th month of the Persian year. - * @internal + * Constant for Tir, the 4th month of the Persian year. + * @internal */ TIR = 3, /** - * Constant for Mordad, the 5th month of the Persian year. - * @internal + * Constant for Mordad, the 5th month of the Persian year. + * @internal */ MORDAD = 4, /** - * Constant for Shahrivar, the 6th month of the Persian year. - * @internal + * Constant for Shahrivar, the 6th month of the Persian year. + * @internal */ SHAHRIVAR = 5, /** - * Constant for Mehr, the 7th month of the Persian year. - * @internal + * Constant for Mehr, the 7th month of the Persian year. + * @internal */ MEHR = 6, /** - * Constant for Aban, the 8th month of the Persian year. - * @internal + * Constant for Aban, the 8th month of the Persian year. + * @internal */ ABAN = 7, /** - * Constant for Azar, the 9th month of the Persian year. - * @internal + * Constant for Azar, the 9th month of the Persian year. + * @internal */ AZAR = 8, /** - * Constant for Dei, the 10th month of the Persian year. - * @internal + * Constant for Dei, the 10th month of the Persian year. + * @internal */ DEI = 9, /** - * Constant for Bahman, the 11th month of the Persian year. - * @internal + * Constant for Bahman, the 11th month of the Persian year. + * @internal */ BAHMAN = 10, /** - * Constant for Esfand, the 12th month of the Persian year. - * @internal + * Constant for Esfand, the 12th month of the Persian year. + * @internal */ ESFAND = 11, - + PERSIAN_MONTH_MAX - }; + }; @@ -164,14 +164,14 @@ class PersianCalendar : public Calendar { // TODO: copy c'tor, etc // clone - virtual PersianCalendar* clone() const; + virtual PersianCalendar* clone() const override; private: /** * Determine whether a year is a leap year in the Persian calendar */ static UBool isLeapYear(int32_t year); - + /** * Return the day # on which the given year starts. Days are counted * from the Hijri epoch, origin 0. @@ -186,7 +186,7 @@ class PersianCalendar : public Calendar { * @param year The hijri shamsi month, 0-based */ int32_t monthStart(int32_t year, int32_t month) const; - + //---------------------------------------------------------------------- // Calendar framework //---------------------------------------------------------------------- @@ -194,8 +194,8 @@ class PersianCalendar : public Calendar { /** * @internal */ - virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const; - + virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override; + /** * Return the length (in days) of the given month. * @@ -203,14 +203,14 @@ class PersianCalendar : public Calendar { * @param year The hijri shamsi month, 0-based * @internal */ - virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const; - + virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override; + /** * Return the number of days in the given Persian year * @internal */ - virtual int32_t handleGetYearLength(int32_t extendedYear) const; - + virtual int32_t handleGetYearLength(int32_t extendedYear) const override; + //------------------------------------------------------------------------- // Functions for converting from field values to milliseconds.... //------------------------------------------------------------------------- @@ -219,7 +219,7 @@ class PersianCalendar : public Calendar { /** * @internal */ - virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const; + virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const override; //------------------------------------------------------------------------- // Functions for converting from milliseconds to field values @@ -228,7 +228,7 @@ class PersianCalendar : public Calendar { /** * @internal */ - virtual int32_t handleGetExtendedYear(); + virtual int32_t handleGetExtendedYear() override; /** * Override Calendar to compute several fields specific to the Persian @@ -240,22 +240,22 @@ class PersianCalendar : public Calendar { *
  • DAY_OF_MONTH *
  • DAY_OF_YEAR *
  • EXTENDED_YEAR - * + * * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this * method is called. The getGregorianXxx() methods return Gregorian * calendar equivalents for the given Julian day. * @internal */ - virtual void handleComputeFields(int32_t julianDay, UErrorCode &status); + virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override; // UObject stuff - public: + public: /** * @return The class ID for this object. All objects of a given class have the * same class ID. Objects of other classes have different class IDs. * @internal */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Return the class ID for this class. This is useful only for comparing to a return @@ -276,7 +276,7 @@ class PersianCalendar : public Calendar { * @return calendar type * @internal */ - virtual const char * getType() const; + virtual const char * getType() const override; private: PersianCalendar(); // default constructor not implemented @@ -292,29 +292,32 @@ class PersianCalendar : public Calendar { * false, otherwise. * @internal */ - virtual UBool inDaylightTime(UErrorCode& status) const; + virtual UBool inDaylightTime(UErrorCode& status) const override; /** * Returns true because the Persian Calendar does have a default century * @internal */ - virtual UBool haveDefaultCentury() const; + virtual UBool haveDefaultCentury() const override; /** * Returns the date of the start of the default century * @return start of century - in milliseconds since epoch, 1970 * @internal */ - virtual UDate defaultCenturyStart() const; + virtual UDate defaultCenturyStart() const override; /** * Returns the year in which the default century begins * @internal */ - virtual int32_t defaultCenturyStartYear() const; + virtual int32_t defaultCenturyStartYear() const override; }; U_NAMESPACE_END #endif #endif + + + diff --git a/deps/icu-small/source/i18n/plurfmt.cpp b/deps/icu-small/source/i18n/plurfmt.cpp index aac35c5b094ff9..65e275eeeb7536 100644 --- a/deps/icu-small/source/i18n/plurfmt.cpp +++ b/deps/icu-small/source/i18n/plurfmt.cpp @@ -381,13 +381,13 @@ PluralFormat::operator=(const PluralFormat& other) { return *this; } -UBool +bool PluralFormat::operator==(const Format& other) const { if (this == &other) { - return TRUE; + return true; } if (!Format::operator==(other)) { - return FALSE; + return false; } const PluralFormat& o = (const PluralFormat&)other; return @@ -400,7 +400,7 @@ PluralFormat::operator==(const Format& other) const { *pluralRulesWrapper.pluralRules == *o.pluralRulesWrapper.pluralRules); } -UBool +bool PluralFormat::operator!=(const Format& other) const { return !operator==(other); } diff --git a/deps/icu-small/source/i18n/plurrule.cpp b/deps/icu-small/source/i18n/plurrule.cpp index bc106acce23aef..d1918c4698138b 100644 --- a/deps/icu-small/source/i18n/plurrule.cpp +++ b/deps/icu-small/source/i18n/plurrule.cpp @@ -379,6 +379,14 @@ static double scaleForInt(double d) { return scale; } +static const double powers10[7] = {1.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0}; // powers of 10 for 0..6 +static double applyExponent(double source, int32_t exponent) { + if (exponent >= 0 && exponent <= 6) { + return source * powers10[exponent]; + } + return source * pow(10.0, exponent); +} + /** * Helper method for the overrides of getSamples() for double and FixedDecimal * return value types. Provide only one of an allocated array of doubles or @@ -416,7 +424,7 @@ getSamplesFromString(const UnicodeString &samples, double *destDbl, if (isDouble) { double sampleValue = fixed.source; if (fixed.visibleDecimalDigitCount == 0 || sampleValue != floor(sampleValue)) { - destDbl[sampleCount++] = sampleValue; + destDbl[sampleCount++] = applyExponent(sampleValue, fixed.exponent); } } else { destFd[sampleCount++] = fixed; @@ -547,40 +555,40 @@ PluralRules::getKeywordOther() const { return UnicodeString(TRUE, PLURAL_KEYWORD_OTHER, 5); } -UBool +bool PluralRules::operator==(const PluralRules& other) const { const UnicodeString *ptrKeyword; UErrorCode status= U_ZERO_ERROR; if ( this == &other ) { - return TRUE; + return true; } LocalPointer myKeywordList(getKeywords(status)); LocalPointer otherKeywordList(other.getKeywords(status)); if (U_FAILURE(status)) { - return FALSE; + return false; } if (myKeywordList->count(status)!=otherKeywordList->count(status)) { - return FALSE; + return false; } myKeywordList->reset(status); while ((ptrKeyword=myKeywordList->snext(status))!=nullptr) { if (!other.isKeyword(*ptrKeyword)) { - return FALSE; + return false; } } otherKeywordList->reset(status); while ((ptrKeyword=otherKeywordList->snext(status))!=nullptr) { if (!this->isKeyword(*ptrKeyword)) { - return FALSE; + return false; } } if (U_FAILURE(status)) { - return FALSE; + return false; } - return TRUE; + return true; } @@ -1037,7 +1045,7 @@ RuleChain::RuleChain(const RuleChain& other) : fIntegerSamples(other.fIntegerSamples), fDecimalSamplesUnbounded(other.fDecimalSamplesUnbounded), fIntegerSamplesUnbounded(other.fIntegerSamplesUnbounded), fInternalStatus(other.fInternalStatus) { if (U_FAILURE(this->fInternalStatus)) { - return; // stop early if the object we are copying from is invalid. + return; // stop early if the object we are copying from is invalid. } if (other.ruleHeader != nullptr) { this->ruleHeader = new OrConstraint(*(other.ruleHeader)); @@ -1545,7 +1553,7 @@ PluralKeywordEnumeration::PluralKeywordEnumeration(RuleChain *header, UErrorCode status = U_MEMORY_ALLOCATION_ERROR; return; } - fKeywordNames.addElement(newElem, status); + fKeywordNames.addElementX(newElem, status); if (U_FAILURE(status)) { delete newElem; return; @@ -1562,7 +1570,7 @@ PluralKeywordEnumeration::PluralKeywordEnumeration(RuleChain *header, UErrorCode status = U_MEMORY_ALLOCATION_ERROR; return; } - fKeywordNames.addElement(newElem, status); + fKeywordNames.addElementX(newElem, status); if (U_FAILURE(status)) { delete newElem; return; @@ -1608,7 +1616,7 @@ PluralOperand tokenTypeToPluralOperand(tokenType tt) { case tVariableC: return PLURAL_OPERAND_E; default: - UPRV_UNREACHABLE; // unexpected. + UPRV_UNREACHABLE_EXIT; // unexpected. } } @@ -1619,7 +1627,7 @@ FixedDecimal::FixedDecimal(double n, int32_t v, int64_t f, int32_t e, int32_t c) FixedDecimal::FixedDecimal(double n, int32_t v, int64_t f, int32_t e) { init(n, v, f, e); // check values. TODO make into unit test. - // + // // long visiblePower = (int) Math.pow(10, v); // if (decimalDigits > visiblePower) { // throw new IllegalArgumentException(); @@ -1829,7 +1837,7 @@ int32_t FixedDecimal::decimals(double n) { // v is the number of visible fraction digits in the displayed form of the number. // Example: n = 1001.234, v = 6, result = 234000 // TODO: need to think through how this is used in the plural rule context. -// This function can easily encounter integer overflow, +// This function can easily encounter integer overflow, // and can easily return noise digits when the precision of a double is exceeded. int64_t FixedDecimal::getFractionalDigits(double n, int32_t v) { @@ -1873,15 +1881,15 @@ void FixedDecimal::adjustForMinFractionDigits(int32_t minFractionDigits) { double FixedDecimal::getPluralOperand(PluralOperand operand) const { switch(operand) { - case PLURAL_OPERAND_N: return source; - case PLURAL_OPERAND_I: return static_cast(intValue); + case PLURAL_OPERAND_N: return (exponent == 0 ? source : source * pow(10, exponent)); + case PLURAL_OPERAND_I: return (double) longValue(); case PLURAL_OPERAND_F: return static_cast(decimalDigits); case PLURAL_OPERAND_T: return static_cast(decimalDigitsWithoutTrailingZeros); case PLURAL_OPERAND_V: return visibleDecimalDigitCount; case PLURAL_OPERAND_E: return exponent; case PLURAL_OPERAND_C: return exponent; default: - UPRV_UNREACHABLE; // unexpected. + UPRV_UNREACHABLE_EXIT; // unexpected. } } @@ -1923,6 +1931,18 @@ UnicodeString FixedDecimal::toString() const { return UnicodeString(buffer, -1, US_INV); } +double FixedDecimal::doubleValue() const { + return (isNegative ? -source : source) * pow(10, exponent); +} + +int64_t FixedDecimal::longValue() const { + if (exponent == 0) { + return intValue; + } else { + return (long) (pow(10, exponent) * intValue); + } +} + PluralAvailableLocalesEnumeration::PluralAvailableLocalesEnumeration(UErrorCode &status) { fOpenStatus = status; diff --git a/deps/icu-small/source/i18n/plurrule_impl.h b/deps/icu-small/source/i18n/plurrule_impl.h index 69d44f83d4a0fa..7274da58f0652c 100644 --- a/deps/icu-small/source/i18n/plurrule_impl.h +++ b/deps/icu-small/source/i18n/plurrule_impl.h @@ -324,10 +324,14 @@ class U_I18N_API FixedDecimal: public IFixedDecimal, public UObject { static int64_t getFractionalDigits(double n, int32_t v); static int32_t decimals(double n); + FixedDecimal& operator=(const FixedDecimal& other) = default; bool operator==(const FixedDecimal &other) const; UnicodeString toString() const; + double doubleValue() const; + int64_t longValue() const; + double source; int32_t visibleDecimalDigitCount; int64_t decimalDigits; @@ -355,7 +359,7 @@ class AndConstraint : public UMemory { tokenType digitsType = none; // n | i | v | f constraint. AndConstraint *next = nullptr; // Internal error status, used for errors that occur during the copy constructor. - UErrorCode fInternalStatus = U_ZERO_ERROR; + UErrorCode fInternalStatus = U_ZERO_ERROR; AndConstraint() = default; AndConstraint(const AndConstraint& other); @@ -407,10 +411,10 @@ class PluralKeywordEnumeration : public StringEnumeration { PluralKeywordEnumeration(RuleChain *header, UErrorCode& status); virtual ~PluralKeywordEnumeration(); static UClassID U_EXPORT2 getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; - virtual const UnicodeString* snext(UErrorCode& status); - virtual void reset(UErrorCode& status); - virtual int32_t count(UErrorCode& status) const; + virtual UClassID getDynamicClassID(void) const override; + virtual const UnicodeString* snext(UErrorCode& status) override; + virtual void reset(UErrorCode& status) override; + virtual int32_t count(UErrorCode& status) const override; private: int32_t pos; UVector fKeywordNames; @@ -421,9 +425,9 @@ class U_I18N_API PluralAvailableLocalesEnumeration: public StringEnumeration { public: PluralAvailableLocalesEnumeration(UErrorCode &status); virtual ~PluralAvailableLocalesEnumeration(); - virtual const char* next(int32_t *resultLength, UErrorCode& status); - virtual void reset(UErrorCode& status); - virtual int32_t count(UErrorCode& status) const; + virtual const char* next(int32_t *resultLength, UErrorCode& status) override; + virtual void reset(UErrorCode& status) override; + virtual int32_t count(UErrorCode& status) const override; private: UErrorCode fOpenStatus; UResourceBundle *fLocales = nullptr; diff --git a/deps/icu-small/source/i18n/quant.cpp b/deps/icu-small/source/i18n/quant.cpp index b0e7a3ed52c240..ed3393338775e9 100644 --- a/deps/icu-small/source/i18n/quant.cpp +++ b/deps/icu-small/source/i18n/quant.cpp @@ -58,7 +58,7 @@ Quantifier* Quantifier::clone() const { UnicodeMatcher* Quantifier::toMatcher() const { Quantifier *nonconst_this = const_cast(this); UnicodeMatcher *nonconst_base = static_cast(nonconst_this); - + return nonconst_base; } diff --git a/deps/icu-small/source/i18n/quant.h b/deps/icu-small/source/i18n/quant.h index df6924cc127ba6..427a6b048081ee 100644 --- a/deps/icu-small/source/i18n/quant.h +++ b/deps/icu-small/source/i18n/quant.h @@ -39,13 +39,13 @@ class Quantifier : public UnicodeFunctor, public UnicodeMatcher { * and return the pointer. * @return the UnicodeMatcher pointer. */ - virtual UnicodeMatcher* toMatcher() const; + virtual UnicodeMatcher* toMatcher() const override; /** * Implement UnicodeFunctor * @return a copy of the object. */ - virtual Quantifier* clone() const; + virtual Quantifier* clone() const override; /** * Implement UnicodeMatcher @@ -72,7 +72,7 @@ class Quantifier : public UnicodeFunctor, public UnicodeMatcher { virtual UMatchDegree matches(const Replaceable& text, int32_t& offset, int32_t limit, - UBool incremental); + UBool incremental) override; /** * Implement UnicodeMatcher @@ -81,29 +81,29 @@ class Quantifier : public UnicodeFunctor, public UnicodeMatcher { * @return A reference to 'result'. */ virtual UnicodeString& toPattern(UnicodeString& result, - UBool escapeUnprintable = false) const; + UBool escapeUnprintable = false) const override; /** * Implement UnicodeMatcher * @param v the given index value. * @return true if this rule matches the given index value. */ - virtual UBool matchesIndexValue(uint8_t v) const; + virtual UBool matchesIndexValue(uint8_t v) const override; /** * Implement UnicodeMatcher */ - virtual void addMatchSetTo(UnicodeSet& toUnionTo) const; + virtual void addMatchSetTo(UnicodeSet& toUnionTo) const override; /** * UnicodeFunctor API */ - virtual void setData(const TransliterationRuleData*); + virtual void setData(const TransliterationRuleData*) override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. diff --git a/deps/icu-small/source/i18n/quantityformatter.h b/deps/icu-small/source/i18n/quantityformatter.h index 30bef08634a3f4..841798cf889255 100644 --- a/deps/icu-small/source/i18n/quantityformatter.h +++ b/deps/icu-small/source/i18n/quantityformatter.h @@ -36,10 +36,10 @@ class FormattedStringBuilder; * There must be a pattern for the "other" variant. * Then use the format() method. *

    - * Concurrent calls only to const methods on a QuantityFormatter object are + * Concurrent calls only to const methods on a QuantityFormatter object are * safe, but concurrent const and non-const method calls on a QuantityFormatter * object are not safe and require synchronization. - * + * */ class U_I18N_API QuantityFormatter : public UMemory { public: @@ -94,7 +94,7 @@ class U_I18N_API QuantityFormatter : public UMemory { * Formats a number with this object appending the result to appendTo. * At least the "other" variant must be added to this object for this * method to work. - * + * * @param number the single number. * @param fmt formats the number * @param rules computes the plural variant to use. diff --git a/deps/icu-small/source/i18n/rbnf.cpp b/deps/icu-small/source/i18n/rbnf.cpp index c25e61e6b28d94..7f54fd7a33f062 100644 --- a/deps/icu-small/source/i18n/rbnf.cpp +++ b/deps/icu-small/source/i18n/rbnf.cpp @@ -83,34 +83,34 @@ class LocalizationInfo : public UMemory { protected: virtual ~LocalizationInfo(); uint32_t refcount; - + public: LocalizationInfo() : refcount(0) {} - + LocalizationInfo* ref(void) { ++refcount; return this; } - + LocalizationInfo* unref(void) { if (refcount && --refcount == 0) { delete this; } return NULL; } - - virtual UBool operator==(const LocalizationInfo* rhs) const; - inline UBool operator!=(const LocalizationInfo* rhs) const { return !operator==(rhs); } - + + virtual bool operator==(const LocalizationInfo* rhs) const; + inline bool operator!=(const LocalizationInfo* rhs) const { return !operator==(rhs); } + virtual int32_t getNumberOfRuleSets(void) const = 0; virtual const UChar* getRuleSetName(int32_t index) const = 0; virtual int32_t getNumberOfDisplayLocales(void) const = 0; virtual const UChar* getLocaleName(int32_t index) const = 0; virtual const UChar* getDisplayName(int32_t localeIndex, int32_t ruleIndex) const = 0; - + virtual int32_t indexForLocale(const UChar* locale) const; virtual int32_t indexForRuleSet(const UChar* ruleset) const; - + // virtual UClassID getDynamicClassID() const = 0; // static UClassID getStaticClassID(void); }; @@ -120,7 +120,7 @@ LocalizationInfo::~LocalizationInfo() {} //UOBJECT_DEFINE_ABSTRACT_RTTI_IMPLEMENTATION(LocalizationInfo) // if both strings are NULL, this returns TRUE -static UBool +static UBool streq(const UChar* lhs, const UChar* rhs) { if (rhs == lhs) { return TRUE; @@ -131,18 +131,18 @@ streq(const UChar* lhs, const UChar* rhs) { return FALSE; } -UBool +bool LocalizationInfo::operator==(const LocalizationInfo* rhs) const { if (rhs) { if (this == rhs) { - return TRUE; + return true; } - + int32_t rsc = getNumberOfRuleSets(); if (rsc == rhs->getNumberOfRuleSets()) { for (int i = 0; i < rsc; ++i) { if (!streq(getRuleSetName(i), rhs->getRuleSetName(i))) { - return FALSE; + return false; } } int32_t dlc = getNumberOfDisplayLocales(); @@ -152,19 +152,19 @@ LocalizationInfo::operator==(const LocalizationInfo* rhs) const { int32_t ix = rhs->indexForLocale(locale); // if no locale, ix is -1, getLocaleName returns null, so streq returns false if (!streq(locale, rhs->getLocaleName(ix))) { - return FALSE; + return false; } for (int j = 0; j < rsc; ++j) { if (!streq(getDisplayName(i, j), rhs->getDisplayName(ix, j))) { - return FALSE; + return false; } } } - return TRUE; + return true; } } } - return FALSE; + return false; } int32_t @@ -199,22 +199,22 @@ class VArray { Fn_Deleter deleter; public: VArray() : buf(NULL), cap(0), size(0), deleter(NULL) {} - + VArray(Fn_Deleter del) : buf(NULL), cap(0), size(0), deleter(del) {} - + ~VArray() { if (deleter) { for (int i = 0; i < size; ++i) { (*deleter)(buf[i]); } } - uprv_free(buf); + uprv_free(buf); } - + int32_t length() { return size; } - + void add(void* elem, UErrorCode& status) { if (U_SUCCESS(status)) { if (size == cap) { @@ -242,7 +242,7 @@ class VArray { buf[size++] = elem; } } - + void** release(void) { void** result = buf; buf = NULL; @@ -266,20 +266,20 @@ friend class LocDataParser; : info(i), data(d), numRuleSets(numRS), numLocales(numLocs) { } - + public: static StringLocalizationInfo* create(const UnicodeString& info, UParseError& perror, UErrorCode& status); - + virtual ~StringLocalizationInfo(); - virtual int32_t getNumberOfRuleSets(void) const { return numRuleSets; } - virtual const UChar* getRuleSetName(int32_t index) const; - virtual int32_t getNumberOfDisplayLocales(void) const { return numLocales; } - virtual const UChar* getLocaleName(int32_t index) const; - virtual const UChar* getDisplayName(int32_t localeIndex, int32_t ruleIndex) const; - + virtual int32_t getNumberOfRuleSets(void) const override { return numRuleSets; } + virtual const UChar* getRuleSetName(int32_t index) const override; + virtual int32_t getNumberOfDisplayLocales(void) const override { return numLocales; } + virtual const UChar* getLocaleName(int32_t index) const override; + virtual const UChar* getDisplayName(int32_t localeIndex, int32_t ruleIndex) const override; + // virtual UClassID getDynamicClassID() const; // static UClassID getStaticClassID(void); - + private: void init(UErrorCode& status) const; }; @@ -304,20 +304,20 @@ class LocDataParser { UChar ch; UParseError& pe; UErrorCode& ec; - + public: - LocDataParser(UParseError& parseError, UErrorCode& status) + LocDataParser(UParseError& parseError, UErrorCode& status) : data(NULL), e(NULL), p(NULL), ch(0xffff), pe(parseError), ec(status) {} ~LocDataParser() {} - + /* * On a successful parse, return a StringLocalizationInfo*, otherwise delete locData, set perror and status, * and return NULL. The StringLocalizationInfo will adopt locData if it is created. */ StringLocalizationInfo* parse(UChar* data, int32_t len); - + private: - + inline void inc(void) { ++p; ch = 0xffff; @@ -347,9 +347,9 @@ class LocDataParser { return *list == c; } void parseError(const char* msg); - + StringLocalizationInfo* doParse(void); - + UChar** nextArray(int32_t& requiredLength); UChar* nextString(void); }; @@ -367,17 +367,17 @@ class LocDataParser { } UPRV_BLOCK_MACRO_END #define EXPLANATION_ARG #endif + - -static const UChar DQUOTE_STOPLIST[] = { +static const UChar DQUOTE_STOPLIST[] = { QUOTE, 0 }; -static const UChar SQUOTE_STOPLIST[] = { +static const UChar SQUOTE_STOPLIST[] = { TICK, 0 }; -static const UChar NOQUOTE_STOPLIST[] = { +static const UChar NOQUOTE_STOPLIST[] = { SPACE, COMMA, CLOSE_ANGLE, OPEN_ANGLE, TICK, QUOTE, 0 }; @@ -461,11 +461,11 @@ LocDataParser::doParse(void) { if (U_SUCCESS(ec)) { int32_t numLocs = array.length() - 2; // subtract first, NULL UChar*** result = (UChar***)array.release(); - + return new StringLocalizationInfo(data, result, requiredLength-2, numLocs); // subtract first, NULL } } - + ERROR("Unknown error"); } @@ -474,7 +474,7 @@ LocDataParser::nextArray(int32_t& requiredLength) { if (U_FAILURE(ec)) { return NULL; } - + skipWhitespace(); if (!checkInc(OPEN_ANGLE)) { ERROR("Missing open angle"); @@ -514,7 +514,7 @@ LocDataParser::nextArray(int32_t& requiredLength) { ec = U_ILLEGAL_ARGUMENT_ERROR; ERROR("Array not of required length"); } - + return (UChar**)array.release(); } ERROR("Unknown Error"); @@ -523,7 +523,7 @@ LocDataParser::nextArray(int32_t& requiredLength) { UChar* LocDataParser::nextString() { UChar* result = NULL; - + skipWhitespace(); if (p < e) { const UChar* terminators; @@ -540,7 +540,7 @@ LocDataParser::nextString() { if (p == e) { ERROR("Unexpected end of data"); } - + UChar x = *p; if (p > start) { ch = x; @@ -588,7 +588,7 @@ void LocDataParser::parseError(const char* EXPLANATION_ARG) u_strncpy(pe.postContext, p, (int32_t)(limit-p)); pe.postContext[limit-p] = 0; pe.offset = (int32_t)(p - data); - + #ifdef RBNF_DEBUG fprintf(stderr, "%s at or near character %ld: ", EXPLANATION_ARG, p-data); @@ -597,7 +597,7 @@ void LocDataParser::parseError(const char* EXPLANATION_ARG) msg.append((UChar)0x002f); /* SOLIDUS/SLASH */ msg.append(p, limit-p); msg.append(UNICODE_STRING_SIMPLE("'")); - + char buf[128]; int32_t len = msg.extract(0, msg.length(), buf, 128); if (len >= 128) { @@ -608,12 +608,12 @@ void LocDataParser::parseError(const char* EXPLANATION_ARG) fprintf(stderr, "%s\n", buf); fflush(stderr); #endif - + uprv_free(data); data = NULL; p = NULL; e = NULL; - + if (U_SUCCESS(ec)) { ec = U_PARSE_ERROR; } @@ -621,17 +621,17 @@ void LocDataParser::parseError(const char* EXPLANATION_ARG) //UOBJECT_DEFINE_RTTI_IMPLEMENTATION(StringLocalizationInfo) -StringLocalizationInfo* +StringLocalizationInfo* StringLocalizationInfo::create(const UnicodeString& info, UParseError& perror, UErrorCode& status) { if (U_FAILURE(status)) { return NULL; } - + int32_t len = info.length(); if (len == 0) { return NULL; // no error; } - + UChar* p = (UChar*)uprv_malloc(len * sizeof(UChar)); if (!p) { status = U_MEMORY_ALLOCATION_ERROR; @@ -641,7 +641,7 @@ StringLocalizationInfo::create(const UnicodeString& info, UParseError& perror, U if (!U_FAILURE(status)) { status = U_ZERO_ERROR; // clear warning about non-termination } - + LocDataParser parser(perror, status); return parser.parse(p, len); } @@ -683,7 +683,7 @@ StringLocalizationInfo::getDisplayName(int32_t localeIndex, int32_t ruleIndex) c // ---------- -RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, +RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, const UnicodeString& locs, const Locale& alocale, UParseError& perror, UErrorCode& status) : fRuleSets(NULL) @@ -708,7 +708,7 @@ RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, init(description, locinfo, perror, status); } -RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, +RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, const UnicodeString& locs, UParseError& perror, UErrorCode& status) : fRuleSets(NULL) @@ -733,7 +733,7 @@ RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, init(description, locinfo, perror, status); } -RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, +RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, LocalizationInfo* info, const Locale& alocale, UParseError& perror, UErrorCode& status) : fRuleSets(NULL) @@ -757,9 +757,9 @@ RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, init(description, info, perror, status); } -RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, - UParseError& perror, - UErrorCode& status) +RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, + UParseError& perror, + UErrorCode& status) : fRuleSets(NULL) , ruleSetDescriptions(NULL) , numRuleSets(0) @@ -781,10 +781,10 @@ RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, init(description, NULL, perror, status); } -RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, +RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, const Locale& aLocale, - UParseError& perror, - UErrorCode& status) + UParseError& perror, + UErrorCode& status) : fRuleSets(NULL) , ruleSetDescriptions(NULL) , numRuleSets(0) @@ -936,11 +936,11 @@ RuleBasedNumberFormat::clone() const return new RuleBasedNumberFormat(*this); } -UBool +bool RuleBasedNumberFormat::operator==(const Format& other) const { if (this == &other) { - return TRUE; + return true; } if (typeid(*this) == typeid(other)) { @@ -950,10 +950,10 @@ RuleBasedNumberFormat::operator==(const Format& other) const // the info here is just derived from that. if (locale == rhs.locale && lenient == rhs.lenient && - (localizations == NULL - ? rhs.localizations == NULL - : (rhs.localizations == NULL - ? FALSE + (localizations == NULL + ? rhs.localizations == NULL + : (rhs.localizations == NULL + ? false : *localizations == rhs.localizations))) { NFRuleSet** p = fRuleSets; @@ -961,7 +961,7 @@ RuleBasedNumberFormat::operator==(const Format& other) const if (p == NULL) { return q == NULL; } else if (q == NULL) { - return FALSE; + return false; } while (*p && *q && (**p == **q)) { ++p; @@ -971,7 +971,7 @@ RuleBasedNumberFormat::operator==(const Format& other) const } } - return FALSE; + return false; } UnicodeString @@ -1026,7 +1026,7 @@ RuleBasedNumberFormat::getNumberOfRuleSetNames() const return result; } -int32_t +int32_t RuleBasedNumberFormat::getNumberOfRuleSetDisplayNameLocales(void) const { if (localizations) { return localizations->getNumberOfDisplayLocales(); @@ -1034,7 +1034,7 @@ RuleBasedNumberFormat::getNumberOfRuleSetDisplayNameLocales(void) const { return 0; } -Locale +Locale RuleBasedNumberFormat::getRuleSetDisplayNameLocale(int32_t index, UErrorCode& status) const { if (U_FAILURE(status)) { return Locale(""); @@ -1063,10 +1063,10 @@ RuleBasedNumberFormat::getRuleSetDisplayNameLocale(int32_t index, UErrorCode& st return retLocale; } -UnicodeString +UnicodeString RuleBasedNumberFormat::getRuleSetDisplayName(int32_t index, const Locale& localeParam) { if (localizations && index >= 0 && index < localizations->getNumberOfRuleSets()) { - UnicodeString localeName(localeParam.getBaseName(), -1, UnicodeString::kInvariant); + UnicodeString localeName(localeParam.getBaseName(), -1, UnicodeString::kInvariant); int32_t len = localeName.length(); UChar* localeStr = localeName.getBuffer(len + 1); while (len >= 0) { @@ -1076,8 +1076,8 @@ RuleBasedNumberFormat::getRuleSetDisplayName(int32_t index, const Locale& locale UnicodeString name(TRUE, localizations->getDisplayName(ix, index), -1); return name; } - - // trim trailing portion, skipping over ommitted sections + + // trim trailing portion, skipping over omitted sections do { --len;} while (len > 0 && localeStr[len] != 0x005f); // underscore while (len > 0 && localeStr[len-1] == 0x005F) --len; } @@ -1089,7 +1089,7 @@ RuleBasedNumberFormat::getRuleSetDisplayName(int32_t index, const Locale& locale return bogus; } -UnicodeString +UnicodeString RuleBasedNumberFormat::getRuleSetDisplayName(const UnicodeString& ruleSetName, const Locale& localeParam) { if (localizations) { UnicodeString rsn(ruleSetName); @@ -1408,7 +1408,7 @@ RuleBasedNumberFormat::setLenient(UBool enabled) #endif -void +void RuleBasedNumberFormat::setDefaultRuleSet(const UnicodeString& ruleSetName, UErrorCode& status) { if (U_SUCCESS(status)) { if (ruleSetName.isEmpty()) { @@ -1440,7 +1440,7 @@ RuleBasedNumberFormat::getDefaultRuleSetName() const { return result; } -void +void RuleBasedNumberFormat::initDefaultRuleSet() { defaultRuleSet = NULL; @@ -1501,7 +1501,7 @@ RuleBasedNumberFormat::init(const UnicodeString& rules, LocalizationInfo* locali } // start by stripping the trailing whitespace from all the rules - // (this is all the whitespace follwing each semicolon in the + // (this is all the whitespace following each semicolon in the // description). This allows us to look for rule-set boundaries // by searching for ";%" without having to worry about whitespace // between the ; and the % @@ -1612,7 +1612,7 @@ RuleBasedNumberFormat::init(const UnicodeString& rules, LocalizationInfo* locali // by appending more rule sets to the end) // {dlf} Initialization of a fraction rule set requires the default rule - // set to be known. For purposes of initialization, this is always the + // set to be known. For purposes of initialization, this is always the // last public rule set, no matter what the localization data says. initDefaultRuleSet(); @@ -1631,7 +1631,7 @@ RuleBasedNumberFormat::init(const UnicodeString& rules, LocalizationInfo* locali // The C code keeps the localization array as is, rather than building // a separate array of the public rule set names, so we have less work // to do here-- but we still need to check the names. - + if (localizationInfos) { // confirm the names, if any aren't in the rules, that's an error // it is ok if the rules contain public rule sets that are not in this list @@ -1658,10 +1658,10 @@ RuleBasedNumberFormat::setContext(UDisplayContext value, UErrorCode& status) { NumberFormat::setContext(value, status); if (U_SUCCESS(status)) { - if (!capitalizationInfoSet && - (value==UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU || value==UDISPCTX_CAPITALIZATION_FOR_STANDALONE)) { - initCapitalizationContextInfo(locale); - capitalizationInfoSet = TRUE; + if (!capitalizationInfoSet && + (value==UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU || value==UDISPCTX_CAPITALIZATION_FOR_STANDALONE)) { + initCapitalizationContextInfo(locale); + capitalizationInfoSet = TRUE; } #if !UCONFIG_NO_BREAK_ITERATION if ( capitalizationBrkIter == NULL && (value==UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE || diff --git a/deps/icu-small/source/i18n/rbt.cpp b/deps/icu-small/source/i18n/rbt.cpp index 65199478449014..1de53e6071c477 100644 --- a/deps/icu-small/source/i18n/rbt.cpp +++ b/deps/icu-small/source/i18n/rbt.cpp @@ -62,7 +62,7 @@ void RuleBasedTransliterator::_construct(const UnicodeString& rules, * @param rules rules, separated by ';' * @param direction either FORWARD or REVERSE. * @param adoptedFilter the filter for this transliterator. - * @param parseError Struct to recieve information on position + * @param parseError Struct to receive information on position * of error if an error is encountered * @param status Output param set to success/failure code. * @exception IllegalArgumentException if rules are malformed @@ -235,16 +235,16 @@ RuleBasedTransliterator::handleTransliterate(Replaceable& text, UTransPosition& } // Transliterator locking. Rule-based Transliterators are not thread safe; concurrent - // operations must be prevented. + // operations must be prevented. // A Complication: compound transliterators can result in recursive entries to this - // function, sometimes with different "This" objects, always with the same text. + // function, sometimes with different "This" objects, always with the same text. // Double-locking must be prevented in these cases. - // + // UBool lockedMutexAtThisLevel = FALSE; // Test whether this request is operating on the same text string as - // some other transliteration that is still in progress and holding the + // some other transliteration that is still in progress and holding the // transliteration mutex. If so, do not lock the transliteration // mutex again. // @@ -265,7 +265,7 @@ RuleBasedTransliterator::handleTransliterate(Replaceable& text, UTransPosition& gLockedText = &text; lockedMutexAtThisLevel = TRUE; } - + // Check to make sure we don't dereference a null pointer. if (fData != NULL) { while (index.start < index.limit && diff --git a/deps/icu-small/source/i18n/rbt.h b/deps/icu-small/source/i18n/rbt.h index 4d9991c48f8b72..8a43c90d462bee 100644 --- a/deps/icu-small/source/i18n/rbt.h +++ b/deps/icu-small/source/i18n/rbt.h @@ -144,7 +144,7 @@ class RuleBasedTransliterator : public Transliterator { * Implement Transliterator API. * @internal Use transliterator factory methods instead since this class will be removed in that release. */ - virtual RuleBasedTransliterator* clone() const; + virtual RuleBasedTransliterator* clone() const override; protected: /** @@ -152,7 +152,7 @@ class RuleBasedTransliterator : public Transliterator { * @internal Use transliterator factory methods instead since this class will be removed in that release. */ virtual void handleTransliterate(Replaceable& text, UTransPosition& offsets, - UBool isIncremental) const; + UBool isIncremental) const override; public: /** @@ -168,19 +168,19 @@ class RuleBasedTransliterator : public Transliterator { * @internal Use transliterator factory methods instead since this class will be removed in that release. */ virtual UnicodeString& toRules(UnicodeString& result, - UBool escapeUnprintable) const; + UBool escapeUnprintable) const override; protected: /** * Implement Transliterator framework */ - virtual void handleGetSourceSet(UnicodeSet& result) const; + virtual void handleGetSourceSet(UnicodeSet& result) const override; public: /** * Override Transliterator framework */ - virtual UnicodeSet& getTargetSet(UnicodeSet& result) const; + virtual UnicodeSet& getTargetSet(UnicodeSet& result) const override; /** * Return the class ID for this class. This is useful only for @@ -200,12 +200,12 @@ class RuleBasedTransliterator : public Transliterator { * is to implement a simple version of RTTI, since not all C++ * compilers support genuine RTTI. Polymorphic operator==() and * clone() methods call this method. - * + * * @return The class ID for this object. All objects of a given * class have the same class ID. Objects of other classes have * different class IDs. */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; private: diff --git a/deps/icu-small/source/i18n/rbt_data.cpp b/deps/icu-small/source/i18n/rbt_data.cpp index 7a9707b988b42e..f3985fc7685d03 100644 --- a/deps/icu-small/source/i18n/rbt_data.cpp +++ b/deps/icu-small/source/i18n/rbt_data.cpp @@ -51,7 +51,7 @@ TransliterationRuleData::TransliterationRuleData(const TransliterationRuleData& new UnicodeString(*(const UnicodeString*)e->value.pointer); // Exit out if value could not be created. if (value == NULL) { - return; + return; } variableNames.put(*(UnicodeString*)e->key.pointer, value, status); } @@ -72,7 +72,7 @@ TransliterationRuleData::TransliterationRuleData(const TransliterationRuleData& } } } - // Remove the array and exit if memory allocation error occured. + // Remove the array and exit if memory allocation error occurred. if (U_FAILURE(status)) { for (int32_t n = i-1; n >= 0; n--) { delete variables[n]; diff --git a/deps/icu-small/source/i18n/rbt_pars.cpp b/deps/icu-small/source/i18n/rbt_pars.cpp index 69465aecb9b142..2f207a8deb01e5 100644 --- a/deps/icu-small/source/i18n/rbt_pars.cpp +++ b/deps/icu-small/source/i18n/rbt_pars.cpp @@ -148,12 +148,12 @@ class ParseData : public UMemory, public SymbolTable { virtual ~ParseData(); - virtual const UnicodeString* lookup(const UnicodeString& s) const; + virtual const UnicodeString* lookup(const UnicodeString& s) const override; - virtual const UnicodeFunctor* lookupMatcher(UChar32 ch) const; + virtual const UnicodeFunctor* lookupMatcher(UChar32 ch) const override; virtual UnicodeString parseReference(const UnicodeString& text, - ParsePosition& pos, int32_t limit) const; + ParsePosition& pos, int32_t limit) const override; /** * Return true if the given character is a matcher standin or a plain * character (non standin). @@ -369,10 +369,10 @@ int32_t RuleHalf::parse(const UnicodeString& rule, int32_t pos, int32_t limit, U if (cursorOffset > 0 && cursor != cursorOffsetPos) { return syntaxError(U_MISPLACED_CURSOR_OFFSET, rule, start, status); } - + return pos; } - + /** * Parse a section of one side of a rule, stopping at either * the limit, the END_OF_RULE character, an operator, or a @@ -409,7 +409,7 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l int32_t varStart = -1; // Most recent $variableReference int32_t varLimit = -1; int32_t bufStart = buf.length(); - + while (pos < limit && !done) { // Since all syntax characters are in the BMP, fetching // 16-bit code units suffices here. @@ -437,7 +437,7 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l if (U_FAILURE(status)) { return syntaxError(U_MALFORMED_SET, rule, start, status); } - pos = pp.getIndex(); + pos = pp.getIndex(); continue; } // Handle escapes @@ -505,7 +505,7 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l } switch (c) { - + //------------------------------------------------------ // Elements allowed within and out of segments //------------------------------------------------------ @@ -522,15 +522,15 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l // bufSegStart is the offset in buf to the first // character of the segment we are parsing. int32_t bufSegStart = buf.length(); - + // Record segment number now, since nextSegmentNumber // will be incremented during the call to parseSection // if there are nested segments. int32_t segmentNumber = nextSegmentNumber++; // 1-based - + // Parse the segment pos = parseSection(rule, pos, limit, buf, UnicodeString(TRUE, ILLEGAL_SEG, -1), TRUE, status); - + // After parsing a segment, the relevant characters are // in buf, starting at offset bufSegStart. Extract them // into a string matcher, and replace them with a @@ -541,7 +541,7 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l if (m == NULL) { return syntaxError(U_MEMORY_ALLOCATION_ERROR, rule, start, status); } - + // Record and associate object and segment number parser.setSegmentObject(segmentNumber, m, status); buf.truncate(bufSegStart); @@ -559,20 +559,20 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l !ICU_Utility::parseChar(rule, iref, SEGMENT_OPEN)) { return syntaxError(U_INVALID_FUNCTION, rule, start, status); } - + Transliterator *t = single->createInstance(); delete single; if (t == NULL) { return syntaxError(U_INVALID_FUNCTION, rule, start, status); } - + // bufSegStart is the offset in buf to the first // character of the segment we are parsing. int32_t bufSegStart = buf.length(); - + // Parse the segment pos = parseSection(rule, iref, limit, buf, UnicodeString(TRUE, ILLEGAL_FUNC, -1), TRUE, status); - + // After parsing a segment, the relevant characters are // in buf, starting at offset bufSegStart. UnicodeString output; @@ -582,7 +582,7 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l if (r == NULL) { return syntaxError(U_MEMORY_ALLOCATION_ERROR, rule, start, status); } - + // Replace the buffer contents with a stand-in buf.truncate(bufSegStart); buf.append(parser.generateStandInFor(r, status)); @@ -864,7 +864,7 @@ TransliteratorParser::parse(const UnicodeString& rules, /** * Return the compound filter parsed by parse(). Caller owns result. - */ + */ UnicodeSet* TransliteratorParser::orphanCompoundFilter() { UnicodeSet* f = compoundFilter; compoundFilter = NULL; @@ -893,7 +893,7 @@ void TransliteratorParser::parseRules(const UnicodeString& rule, UBool parsingIDs = TRUE; int32_t ruleCount = 0; - + while (!dataVector.isEmpty()) { delete (TransliterationRuleData*)(dataVector.orphanElementAt(0)); } @@ -956,7 +956,7 @@ void TransliteratorParser::parseRules(const UnicodeString& rule, // keep track of how many rules we've seen ++ruleCount; - + // We've found the start of a rule or ID. c is its first // character, and pos points past c. --pos; @@ -972,13 +972,17 @@ void TransliteratorParser::parseRules(const UnicodeString& rule, } int32_t p = pos; - + if (!parsingIDs) { if (curData != NULL) { + U_ASSERT(!dataVector.hasDeleter()); if (direction == UTRANS_FORWARD) dataVector.addElement(curData, status); else dataVector.insertElementAt(curData, 0, status); + if (U_FAILURE(status)) { + delete curData; + } curData = NULL; } parsingIDs = TRUE; @@ -1031,10 +1035,14 @@ void TransliteratorParser::parseRules(const UnicodeString& rule, status = U_MEMORY_ALLOCATION_ERROR; return; } + U_ASSERT(idBlockVector.hasDeleter()); if (direction == UTRANS_FORWARD) - idBlockVector.addElement(tempstr, status); + idBlockVector.adoptElement(tempstr, status); else idBlockVector.insertElementAt(tempstr, 0, status); + if (U_FAILURE(status)) { + return; + } idBlockResult.remove(); parsingIDs = FALSE; curData = new TransliterationRuleData(status); @@ -1069,21 +1077,31 @@ void TransliteratorParser::parseRules(const UnicodeString& rule, tempstr = new UnicodeString(idBlockResult); // NULL pointer check if (tempstr == NULL) { + // TODO: Testing, forcing this path, shows many memory leaks. ICU-21701 + // intltest translit/TransliteratorTest/TestInstantiation status = U_MEMORY_ALLOCATION_ERROR; return; } if (direction == UTRANS_FORWARD) - idBlockVector.addElement(tempstr, status); + idBlockVector.adoptElement(tempstr, status); else idBlockVector.insertElementAt(tempstr, 0, status); + if (U_FAILURE(status)) { + return; + } } else if (!parsingIDs && curData != NULL) { - if (direction == UTRANS_FORWARD) + if (direction == UTRANS_FORWARD) { dataVector.addElement(curData, status); - else + } else { dataVector.insertElementAt(curData, 0, status); + } + if (U_FAILURE(status)) { + delete curData; + curData = nullptr; + } } - + if (U_SUCCESS(status)) { // Convert the set vector to an array int32_t i, dataVectorSize = dataVector.size(); @@ -1106,7 +1124,7 @@ void TransliteratorParser::parseRules(const UnicodeString& rule, data->variables[j] = static_cast(variablesVector.elementAt(j)); } - + data->variableNames.removeAll(); int32_t p = UHASH_FIRST; const UHashElement* he = variableNames.nextElement(p); @@ -1129,7 +1147,7 @@ void TransliteratorParser::parseRules(const UnicodeString& rule, (direction == UTRANS_REVERSE && compoundFilterOffset != ruleCount)) { status = U_MISPLACED_COMPOUND_FILTER; } - } + } for (i = 0; i < dataVectorSize; i++) { TransliterationRuleData* data = (TransliterationRuleData*)dataVector.elementAt(i); @@ -1149,7 +1167,7 @@ void TransliteratorParser::setVariableRange(int32_t start, int32_t end, UErrorCo status = U_MALFORMED_PRAGMA; return; } - + curData->variablesBase = (UChar) start; if (dataVector.size() == 0) { variableNext = (UChar) start; @@ -1214,12 +1232,12 @@ UBool TransliteratorParser::resemblesPragma(const UnicodeString& rule, int32_t p */ int32_t TransliteratorParser::parsePragma(const UnicodeString& rule, int32_t pos, int32_t limit, UErrorCode& status) { int32_t array[2]; - + // resemblesPragma() has already returned true, so we // know that pos points to /use\s/i; we can skip 4 characters // immediately pos += 4; - + // Here are the pragmas we recognize: // use variable range 0xE000 0xEFFF; // use maximum backup 16; @@ -1230,25 +1248,25 @@ int32_t TransliteratorParser::parsePragma(const UnicodeString& rule, int32_t pos setVariableRange(array[0], array[1], status); return p; } - + p = ICU_Utility::parsePattern(rule, pos, limit, UnicodeString(TRUE, PRAGMA_MAXIMUM_BACKUP, -1), array); if (p >= 0) { pragmaMaximumBackup(array[0]); return p; } - + p = ICU_Utility::parsePattern(rule, pos, limit, UnicodeString(TRUE, PRAGMA_NFD_RULES, -1), NULL); if (p >= 0) { pragmaNormalizeRules(UNORM_NFD); return p; } - + p = ICU_Utility::parsePattern(rule, pos, limit, UnicodeString(TRUE, PRAGMA_NFC_RULES, -1), NULL); if (p >= 0) { pragmaNormalizeRules(UNORM_NFC); return p; } - + // Syntax error: unable to parse pragma return -1; } @@ -1345,7 +1363,7 @@ int32_t TransliteratorParser::parseRule(const UnicodeString& rule, int32_t pos, if (left->anchorStart || left->anchorEnd || right->anchorStart || right->anchorEnd) { return syntaxError(U_MALFORMED_VARIABLE_DEFINITION, rule, start, status); - } + } // We allow anything on the right, including an empty string. UnicodeString* value = new UnicodeString(right->text); // NULL pointer check @@ -1379,7 +1397,7 @@ int32_t TransliteratorParser::parseRule(const UnicodeString& rule, int32_t pos, syntaxError(U_INTERNAL_TRANSLITERATOR_ERROR, rule, start, status); // will never happen } } - + // If the direction we want doesn't match the rule // direction, do nothing. if (op != FWDREV_RULE_OP && @@ -1477,20 +1495,20 @@ int32_t TransliteratorParser::syntaxError(UErrorCode parseErrorCode, { parseError.offset = pos; parseError.line = 0 ; /* we are not using line numbers */ - + // for pre-context const int32_t LEN = U_PARSE_CONTEXT_LEN - 1; int32_t start = uprv_max(pos - LEN, 0); int32_t stop = pos; - + rule.extract(start,stop-start,parseError.preContext); //null terminate the buffer parseError.preContext[stop-start] = 0; - + //for post-context start = pos; stop = uprv_min(pos + LEN, rule.length()); - + rule.extract(start,stop-start,parseError.postContext); //null terminate the buffer parseError.postContext[stop-start]= 0; @@ -1523,7 +1541,7 @@ UChar TransliteratorParser::parseSet(const UnicodeString& rule, */ UChar TransliteratorParser::generateStandInFor(UnicodeFunctor* adopted, UErrorCode& status) { // assert(obj != null); - + // Look up previous stand-in, if any. This is a short list // (typical n is 0, 1, or 2); linear search is optimal. for (int32_t i=0; ivariablesBase + i); } } - + if (variableNext >= variableLimit) { delete adopted; status = U_VARIABLE_RANGE_EXHAUSTED; return 0; } variablesVector.addElement(adopted, status); + if (U_FAILURE(status)) { + delete adopted; + return 0; + } return variableNext++; } @@ -1577,13 +1599,17 @@ void TransliteratorParser::setSegmentObject(int32_t seg, StringMatcher* adopted, if (segmentObjects.size() < seg) { segmentObjects.setSize(seg, status); } + if (U_FAILURE(status)) { + return; + } int32_t index = getSegmentStandin(seg, status) - curData->variablesBase; if (segmentObjects.elementAt(seg-1) != NULL || variablesVector.elementAt(index) != NULL) { // should never happen - status = U_INTERNAL_TRANSLITERATOR_ERROR; + if (U_SUCCESS(status)) {status = U_INTERNAL_TRANSLITERATOR_ERROR;} return; } + // Note: neither segmentObjects or variablesVector has an object deleter function. segmentObjects.setElementAt(adopted, seg-1); variablesVector.setElementAt(adopted, index); } diff --git a/deps/icu-small/source/i18n/rbt_pars.h b/deps/icu-small/source/i18n/rbt_pars.h index 9336d410d351e5..d1a4cd6997c6da 100644 --- a/deps/icu-small/source/i18n/rbt_pars.h +++ b/deps/icu-small/source/i18n/rbt_pars.h @@ -84,8 +84,8 @@ class TransliteratorParser : public UMemory { * Temporary table of variable names. When parsing is complete, this is * copied into data.variableNames. */ - Hashtable variableNames; - + Hashtable variableNames; + /** * String of standins for segments. Used during the parsing of a single * rule. segmentStandins.charAt(0) is the standin for "$1" and corresponds @@ -95,7 +95,7 @@ class TransliteratorParser : public UMemory { /** * Vector of StringMatcher objects for segments. Used during the - * parsing of a single rule. + * parsing of a single rule. * segmentStandins.charAt(0) is the standin for "$1" and corresponds * to StringMatcher object segmentObjects.elementAt(0), etc. */ @@ -156,7 +156,7 @@ class TransliteratorParser : public UMemory { * call returns. * @param rules rules, separated by ';' * @param direction either FORWARD or REVERSE. - * @param pe Struct to recieve information on position + * @param pe Struct to receive information on position * of error if an error is encountered * @param ec Output param set to success/failure code. */ @@ -168,7 +168,7 @@ class TransliteratorParser : public UMemory { /** * Return the compound filter parsed by parse(). Caller owns result. * @return the compound filter parsed by parse(). - */ + */ UnicodeSet* orphanCompoundFilter(); private: @@ -328,7 +328,7 @@ class TransliteratorParser : public UMemory { * Copy constructor */ TransliteratorParser(const TransliteratorParser&); - + /** * Assignment operator */ diff --git a/deps/icu-small/source/i18n/rbt_rule.cpp b/deps/icu-small/source/i18n/rbt_rule.cpp index cd7bd5d9dfb655..6cc5325c467eab 100644 --- a/deps/icu-small/source/i18n/rbt_rule.cpp +++ b/deps/icu-small/source/i18n/rbt_rule.cpp @@ -126,7 +126,7 @@ TransliterationRule::TransliterationRule(const UnicodeString& input, return; } } - + key = NULL; if (keyLength > 0) { key = new StringMatcher(pattern, anteContextLength, anteContextLength + keyLength, @@ -137,7 +137,7 @@ TransliterationRule::TransliterationRule(const UnicodeString& input, return; } } - + int32_t postContextLength = pattern.length() - keyLength - anteContextLength; postContext = NULL; if (postContextLength > 0) { @@ -259,7 +259,7 @@ UBool TransliterationRule::masks(const TransliterationRule& r2) const { * r1: aakkkpppp * r2: aaakkkkkpppp * ^ - * + * * The strings must be aligned at the first character of the * key. The length of r1 to the left of the alignment point * must be <= the length of r2 to the left; ditto for the @@ -337,10 +337,10 @@ static inline int32_t posAfter(const Replaceable& str, int32_t pos) { * context and key characters match, but the text is not long * enough to match all of them. A full match means all context * and key characters match. - * + * * If a full match is obtained, perform a replacement, update pos, * and return U_MATCH. Otherwise both text and pos are unchanged. - * + * * @param text the text * @param pos the position indices * @param incremental if TRUE, test for partial matches that may @@ -383,7 +383,7 @@ UMatchDegree TransliterationRule::matchAndReplace(Replaceable& text, // 32-bit code points. This works because stand-ins are // always in the BMP and because we are doing a literal match // operation, which can be done 16-bits at a time. - + int32_t anteLimit = posBefore(text, pos.contextStart); UMatchDegree match; @@ -401,13 +401,13 @@ UMatchDegree TransliterationRule::matchAndReplace(Replaceable& text, minOText = posAfter(text, oText); // ------------------------ Start Anchor ------------------------ - + if (((flags & ANCHOR_START) != 0) && oText != anteLimit) { return U_MISMATCH; } // -------------------- Key and Post Context -------------------- - + oText = pos.start; if (key != NULL) { @@ -433,9 +433,9 @@ UMatchDegree TransliterationRule::matchAndReplace(Replaceable& text, return match; } } - + // ------------------------- Stop Anchor ------------------------ - + if (((flags & ANCHOR_END)) != 0) { if (oText != pos.contextLimit) { return U_MISMATCH; @@ -444,7 +444,7 @@ UMatchDegree TransliterationRule::matchAndReplace(Replaceable& text, return U_PARTIAL_MATCH; } } - + // =========================== REPLACE ========================== // We have a full match. The key is between pos.start and diff --git a/deps/icu-small/source/i18n/rbt_rule.h b/deps/icu-small/source/i18n/rbt_rule.h index 76feeee3913e6a..b927f5d6c05c11 100644 --- a/deps/icu-small/source/i18n/rbt_rule.h +++ b/deps/icu-small/source/i18n/rbt_rule.h @@ -261,10 +261,10 @@ class TransliterationRule : public UMemory { * context and key characters match, but the text is not long * enough to match all of them. A full match means all context * and key characters match. - * + * * If a full match is obtained, perform a replacement, update pos, * and return U_MATCH. Otherwise both text and pos are unchanged. - * + * * @param text the text * @param pos the position indices * @param incremental if true, test for partial matches that may diff --git a/deps/icu-small/source/i18n/rbt_set.cpp b/deps/icu-small/source/i18n/rbt_set.cpp index 939c0ea39ade63..abc4413c2c6f61 100644 --- a/deps/icu-small/source/i18n/rbt_set.cpp +++ b/deps/icu-small/source/i18n/rbt_set.cpp @@ -143,19 +143,19 @@ static void maskingError(const icu::TransliterationRule& rule1, int32_t len; parseError.line = parseError.offset = -1; - + // for pre-context rule1.toRule(r, FALSE); len = uprv_min(r.length(), U_PARSE_CONTEXT_LEN-1); r.extract(0, len, parseError.preContext); - parseError.preContext[len] = 0; - + parseError.preContext[len] = 0; + //for post-context r.truncate(0); rule2.toRule(r, FALSE); len = uprv_min(r.length(), U_PARSE_CONTEXT_LEN-1); r.extract(0, len, parseError.postContext); - parseError.postContext[len] = 0; + parseError.postContext[len] = 0; } U_NAMESPACE_BEGIN @@ -197,7 +197,7 @@ TransliterationRuleSet::TransliterationRuleSet(const TransliterationRuleSet& oth status = U_MEMORY_ALLOCATION_ERROR; break; } - ruleVector->addElement(tempTranslitRule, status); + ruleVector->addElementX(tempTranslitRule, status); if (U_FAILURE(status)) { break; } @@ -251,7 +251,7 @@ void TransliterationRuleSet::addRule(TransliterationRule* adoptedRule, delete adoptedRule; return; } - ruleVector->addElement(adoptedRule, status); + ruleVector->addElementX(adoptedRule, status); int32_t len; if ((len = adoptedRule->getContextLength()) > maxContextLength) { @@ -316,16 +316,16 @@ void TransliterationRuleSet::freeze(UParseError& parseError,UErrorCode& status) for (j=0; j= 0) { if (indexValue[j] == x) { - v.addElement(ruleVector->elementAt(j), status); + v.addElementX(ruleVector->elementAt(j), status); } } else { // If the indexValue is < 0, then the first key character is // a set, and we must use the more time-consuming // matchesIndexValue check. In practice this happens - // rarely, so we seldom tread this code path. + // rarely, so we seldom treat this code path. TransliterationRule* r = (TransliterationRule*) ruleVector->elementAt(j); if (r->matchesIndexValue((uint8_t)x)) { - v.addElement(r, status); + v.addElementX(r, status); } } } @@ -396,7 +396,7 @@ void TransliterationRuleSet::freeze(UParseError& parseError,UErrorCode& status) * @param text the text to be transliterated * @param pos the position indices, which will be updated * @param incremental if TRUE, assume new text may be inserted - * at index.limit, and return FALSE if thre is a partial match. + * at index.limit, and return FALSE if there is a partial match. * @return TRUE unless a U_PARTIAL_MATCH has been obtained, * indicating that transliteration should stop until more text * arrives. diff --git a/deps/icu-small/source/i18n/rbt_set.h b/deps/icu-small/source/i18n/rbt_set.h index b1163a0193f862..3a2890e8ec7973 100644 --- a/deps/icu-small/source/i18n/rbt_set.h +++ b/deps/icu-small/source/i18n/rbt_set.h @@ -120,7 +120,7 @@ class TransliterationRuleSet : public UMemory { * @param status Output parameter filled in with success or failure status. */ virtual void freeze(UParseError& parseError, UErrorCode& status); - + /** * Transliterate the given text with the given UTransPosition * indices. Return true if the transliteration should continue @@ -129,7 +129,7 @@ class TransliterationRuleSet : public UMemory { * @param text the text to be transliterated * @param index the position indices, which will be updated * @param isIncremental if true, assume new text may be inserted - * at index.limit, and return false if thre is a partial match. + * at index.limit, and return false if thrre is a partial match. * @return true unless a U_PARTIAL_MATCH has been obtained, * indicating that transliteration should stop until more text * arrives. diff --git a/deps/icu-small/source/i18n/rbtz.cpp b/deps/icu-small/source/i18n/rbtz.cpp index 9d8eea9263a280..495d8310d00298 100644 --- a/deps/icu-small/source/i18n/rbtz.cpp +++ b/deps/icu-small/source/i18n/rbtz.cpp @@ -25,12 +25,19 @@ U_NAMESPACE_BEGIN /** * A struct representing a time zone transition */ -struct Transition { +struct Transition : public UMemory { UDate time; TimeZoneRule* from; TimeZoneRule* to; }; +U_CDECL_BEGIN +static void U_CALLCONV +deleteTransition(void* obj) { + delete static_cast(obj); +} +U_CDECL_END + static UBool compareRules(UVector* rules1, UVector* rules2) { if (rules1 == NULL && rules2 == NULL) { return TRUE; @@ -88,59 +95,61 @@ RuleBasedTimeZone::operator=(const RuleBasedTimeZone& right) { return *this; } -UBool +bool RuleBasedTimeZone::operator==(const TimeZone& that) const { if (this == &that) { - return TRUE; + return true; } - if (typeid(*this) != typeid(that) - || BasicTimeZone::operator==(that) == FALSE) { - return FALSE; + if (typeid(*this) != typeid(that) || !BasicTimeZone::operator==(that)) { + return false; } RuleBasedTimeZone *rbtz = (RuleBasedTimeZone*)&that; if (*fInitialRule != *(rbtz->fInitialRule)) { - return FALSE; + return false; } if (compareRules(fHistoricRules, rbtz->fHistoricRules) && compareRules(fFinalRules, rbtz->fFinalRules)) { - return TRUE; + return true; } - return FALSE; + return false; } -UBool +bool RuleBasedTimeZone::operator!=(const TimeZone& that) const { return !operator==(that); } void RuleBasedTimeZone::addTransitionRule(TimeZoneRule* rule, UErrorCode& status) { + LocalPointerlpRule(rule); if (U_FAILURE(status)) { return; } AnnualTimeZoneRule* atzrule = dynamic_cast(rule); - if (atzrule != NULL && atzrule->getEndYear() == AnnualTimeZoneRule::MAX_YEAR) { + if (atzrule != nullptr && atzrule->getEndYear() == AnnualTimeZoneRule::MAX_YEAR) { // A final rule - if (fFinalRules == NULL) { - fFinalRules = new UVector(status); + if (fFinalRules == nullptr) { + LocalPointer lpFinalRules(new UVector(uprv_deleteUObject, nullptr, status), status); if (U_FAILURE(status)) { return; } + fFinalRules = lpFinalRules.orphan(); } else if (fFinalRules->size() >= 2) { // Cannot handle more than two final rules status = U_INVALID_STATE_ERROR; return; } - fFinalRules->addElement((void*)rule, status); + fFinalRules->adoptElement(lpRule.orphan(), status); } else { // Non-final rule - if (fHistoricRules == NULL) { - fHistoricRules = new UVector(status); + if (fHistoricRules == nullptr) { + LocalPointer lpHistoricRules(new UVector(uprv_deleteUObject, nullptr, status), status); if (U_FAILURE(status)) { return; } + fHistoricRules = lpHistoricRules.orphan(); } - fHistoricRules->addElement((void*)rule, status); + fHistoricRules->adoptElement(lpRule.orphan(), status); } // Mark dirty, so transitions are recalculated at next complete() call fUpToDate = FALSE; @@ -176,7 +185,6 @@ RuleBasedTimeZone::complete(UErrorCode& status) { return; } - UBool *done = NULL; // Create a TimezoneTransition and add to the list if (fHistoricRules != NULL || fFinalRules != NULL) { TimeZoneRule *curRule = fInitialRule; @@ -187,13 +195,13 @@ RuleBasedTimeZone::complete(UErrorCode& status) { if (fHistoricRules != NULL && fHistoricRules->size() > 0) { int32_t i; int32_t historicCount = fHistoricRules->size(); - done = (UBool*)uprv_malloc(sizeof(UBool) * historicCount); + LocalMemory done((bool *)uprv_malloc(sizeof(bool) * historicCount)); if (done == NULL) { status = U_MEMORY_ALLOCATION_ERROR; goto cleanup; } for (i = 0; i < historicCount; i++) { - done[i] = FALSE; + done[i] = false; } while (TRUE) { int32_t curStdOffset = curRule->getRawOffset(); @@ -214,7 +222,7 @@ RuleBasedTimeZone::complete(UErrorCode& status) { avail = r->getNextStart(lastTransitionTime, curStdOffset, curDstSavings, false, tt); if (!avail) { // No more transitions from this rule - skip this rule next time - done[i] = TRUE; + done[i] = true; } else { r->getName(name); if (*r == *curRule || @@ -267,20 +275,21 @@ RuleBasedTimeZone::complete(UErrorCode& status) { } if (fHistoricTransitions == NULL) { - fHistoricTransitions = new UVector(status); + LocalPointer lpHistoricTransitions( + new UVector(deleteTransition, nullptr, status), status); if (U_FAILURE(status)) { goto cleanup; } + fHistoricTransitions = lpHistoricTransitions.orphan(); } - Transition *trst = (Transition*)uprv_malloc(sizeof(Transition)); - if (trst == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; + LocalPointer trst(new Transition, status); + if (U_FAILURE(status)) { goto cleanup; } trst->time = nextTransitionTime; trst->from = curRule; trst->to = nextRule; - fHistoricTransitions->addElement(trst, status); + fHistoricTransitions->adoptElement(trst.orphan(), status); if (U_FAILURE(status)) { goto cleanup; } @@ -290,10 +299,12 @@ RuleBasedTimeZone::complete(UErrorCode& status) { } if (fFinalRules != NULL) { if (fHistoricTransitions == NULL) { - fHistoricTransitions = new UVector(status); + LocalPointer lpHistoricTransitions( + new UVector(deleteTransition, nullptr, status), status); if (U_FAILURE(status)) { goto cleanup; } + fHistoricTransitions = lpHistoricTransitions.orphan(); } // Append the first transition for each TimeZoneRule *rule0 = (TimeZoneRule*)fFinalRules->elementAt(0); @@ -306,16 +317,10 @@ RuleBasedTimeZone::complete(UErrorCode& status) { status = U_INVALID_STATE_ERROR; goto cleanup; } - Transition *final0 = (Transition*)uprv_malloc(sizeof(Transition)); - if (final0 == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; - goto cleanup; - } - Transition *final1 = (Transition*)uprv_malloc(sizeof(Transition)); - if (final1 == NULL) { - uprv_free(final0); - status = U_MEMORY_ALLOCATION_ERROR; - goto cleanup; + LocalPointer final0(new Transition, status); + LocalPointer final1(new Transition, status); + if (U_FAILURE(status)) { + goto cleanup; } if (tt0 < tt1) { final0->time = tt0; @@ -332,27 +337,18 @@ RuleBasedTimeZone::complete(UErrorCode& status) { final1->from = rule1; final1->to = rule0; } - fHistoricTransitions->addElement(final0, status); - if (U_FAILURE(status)) { - goto cleanup; - } - fHistoricTransitions->addElement(final1, status); + fHistoricTransitions->adoptElement(final0.orphan(), status); + fHistoricTransitions->adoptElement(final1.orphan(), status); if (U_FAILURE(status)) { goto cleanup; } } } fUpToDate = TRUE; - if (done != NULL) { - uprv_free(done); - } return; cleanup: deleteTransitions(); - if (done != NULL) { - uprv_free(done); - } fUpToDate = FALSE; } @@ -449,7 +445,7 @@ RuleBasedTimeZone::getOffsetInternal(UDate date, UBool local, } if (rule == NULL) { // no final rules or the given time is before the first transition - // specified by the final rules -> use the last rule + // specified by the final rules -> use the last rule rule = ((Transition*)fHistoricTransitions->elementAt(idx))->to; } } else { @@ -629,16 +625,10 @@ RuleBasedTimeZone::deleteRules(void) { delete fInitialRule; fInitialRule = NULL; if (fHistoricRules != NULL) { - while (!fHistoricRules->isEmpty()) { - delete (TimeZoneRule*)(fHistoricRules->orphanElementAt(0)); - } delete fHistoricRules; fHistoricRules = NULL; } if (fFinalRules != NULL) { - while (!fFinalRules->isEmpty()) { - delete (AnnualTimeZoneRule*)(fFinalRules->orphanElementAt(0)); - } delete fFinalRules; fFinalRules = NULL; } @@ -647,10 +637,6 @@ RuleBasedTimeZone::deleteRules(void) { void RuleBasedTimeZone::deleteTransitions(void) { if (fHistoricTransitions != NULL) { - while (!fHistoricTransitions->isEmpty()) { - Transition *trs = (Transition*)fHistoricTransitions->orphanElementAt(0); - uprv_free(trs); - } delete fHistoricTransitions; } fHistoricTransitions = NULL; @@ -658,32 +644,24 @@ RuleBasedTimeZone::deleteTransitions(void) { UVector* RuleBasedTimeZone::copyRules(UVector* source) { - if (source == NULL) { - return NULL; + if (source == nullptr) { + return nullptr; } UErrorCode ec = U_ZERO_ERROR; int32_t size = source->size(); - UVector *rules = new UVector(size, ec); + LocalPointer rules(new UVector(uprv_deleteUObject, nullptr, size, ec), ec); if (U_FAILURE(ec)) { - return NULL; + return nullptr; } int32_t i; for (i = 0; i < size; i++) { - rules->addElement(((TimeZoneRule*)source->elementAt(i))->clone(), ec); + LocalPointer rule(((TimeZoneRule*)source->elementAt(i))->clone(), ec); + rules->adoptElement(rule.orphan(), ec); if (U_FAILURE(ec)) { - break; + return nullptr; } } - if (U_FAILURE(ec)) { - // In case of error, clean up - for (i = 0; i < rules->size(); i++) { - TimeZoneRule *rule = (TimeZoneRule*)rules->orphanElementAt(i); - delete rule; - } - delete rules; - return NULL; - } - return rules; + return rules.orphan(); } TimeZoneRule* @@ -749,7 +727,7 @@ RuleBasedTimeZone::findNext(UDate base, UBool inclusive, UDate& transitionTime, result = *tzt; found = TRUE; } else { - int32_t idx = fHistoricTransitions->size() - 1; + int32_t idx = fHistoricTransitions->size() - 1; tzt = (Transition*)fHistoricTransitions->elementAt(idx); tt = tzt->time; if (inclusive && tt == base) { @@ -832,7 +810,7 @@ RuleBasedTimeZone::findPrev(UDate base, UBool inclusive, UDate& transitionTime, result = *tzt; found = TRUE; } else if (tt < base) { - int32_t idx = fHistoricTransitions->size() - 1; + int32_t idx = fHistoricTransitions->size() - 1; tzt = (Transition*)fHistoricTransitions->elementAt(idx); tt = tzt->time; if (inclusive && tt == base) { @@ -956,3 +934,4 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ //eof + diff --git a/deps/icu-small/source/i18n/regexcmp.cpp b/deps/icu-small/source/i18n/regexcmp.cpp index 6c3a9e10ba12f2..89cb6584251fff 100644 --- a/deps/icu-small/source/i18n/regexcmp.cpp +++ b/deps/icu-small/source/i18n/regexcmp.cpp @@ -53,7 +53,7 @@ U_NAMESPACE_BEGIN // //------------------------------------------------------------------------------ RegexCompile::RegexCompile(RegexPattern *rxp, UErrorCode &status) : - fParenStack(status), fSetStack(status), fSetOpStack(status) + fParenStack(status), fSetStack(uprv_deleteUObject, nullptr, status), fSetOpStack(status) { // Lazy init of all shared global sets (needed for init()'s empty text) RegexStaticSets::initGlobals(&status); @@ -278,11 +278,6 @@ void RegexCompile::compile( if (U_FAILURE(*fStatus)) { // Bail out if the pattern had errors. - // Set stack cleanup: a successful compile would have left it empty, - // but errors can leave temporary sets hanging around. - while (!fSetStack.empty()) { - delete (UnicodeSet *)fSetStack.pop(); - } return; } @@ -447,7 +442,7 @@ UBool RegexCompile::doParseActions(int32_t action) case doBadNamedCapture: error(U_REGEX_INVALID_CAPTURE_GROUP_NAME); break; - + case doOpenCaptureParen: // Open Capturing Paren, possibly named. // Compile to a @@ -473,7 +468,7 @@ UBool RegexCompile::doParseActions(int32_t action) appendOp(URX_START_CAPTURE, varsLoc); appendOp(URX_NOP, 0); - // On the Parentheses stack, start a new frame and add the postions + // On the Parentheses stack, start a new frame and add the positions // of the two NOPs. Depending on what follows in the pattern, the // NOPs may be changed to SAVE_STATE or JMP ops, with a target // address of the end of the parenthesized group. @@ -515,7 +510,7 @@ UBool RegexCompile::doParseActions(int32_t action) appendOp(URX_NOP, 0); appendOp(URX_NOP, 0); - // On the Parentheses stack, start a new frame and add the postions + // On the Parentheses stack, start a new frame and add the positions // of the two NOPs. fParenStack.push(fModeFlags, *fStatus); // Match mode state fParenStack.push(plain, *fStatus); // Begin a new frame. @@ -540,7 +535,7 @@ UBool RegexCompile::doParseActions(int32_t action) appendOp(URX_STO_SP, varLoc); appendOp(URX_NOP, 0); - // On the Parentheses stack, start a new frame and add the postions + // On the Parentheses stack, start a new frame and add the positions // of the two NOPs. Depending on what follows in the pattern, the // NOPs may be changed to SAVE_STATE or JMP ops, with a target // address of the end of the parenthesized group. @@ -594,7 +589,7 @@ UBool RegexCompile::doParseActions(int32_t action) appendOp(URX_NOP, 0); appendOp(URX_NOP, 0); - // On the Parentheses stack, start a new frame and add the postions + // On the Parentheses stack, start a new frame and add the positions // of the NOPs. fParenStack.push(fModeFlags, *fStatus); // Match mode state fParenStack.push(lookAhead, *fStatus); // Frame type. @@ -627,7 +622,7 @@ UBool RegexCompile::doParseActions(int32_t action) appendOp(URX_STATE_SAVE, 0); // dest address will be patched later. appendOp(URX_NOP, 0); - // On the Parentheses stack, start a new frame and add the postions + // On the Parentheses stack, start a new frame and add the positions // of the StateSave and NOP. fParenStack.push(fModeFlags, *fStatus); // Match mode state fParenStack.push(negLookAhead, *fStatus); // Frame type @@ -679,7 +674,7 @@ UBool RegexCompile::doParseActions(int32_t action) appendOp(URX_NOP, 0); appendOp(URX_NOP, 0); - // On the Parentheses stack, start a new frame and add the postions + // On the Parentheses stack, start a new frame and add the positions // of the URX_LB_CONT and the NOP. fParenStack.push(fModeFlags, *fStatus); // Match mode state fParenStack.push(lookBehind, *fStatus); // Frame type @@ -734,7 +729,7 @@ UBool RegexCompile::doParseActions(int32_t action) appendOp(URX_NOP, 0); appendOp(URX_NOP, 0); - // On the Parentheses stack, start a new frame and add the postions + // On the Parentheses stack, start a new frame and add the positions // of the URX_LB_CONT and the NOP. fParenStack.push(fModeFlags, *fStatus); // Match mode state fParenStack.push(lookBehindN, *fStatus); // Frame type @@ -748,7 +743,7 @@ UBool RegexCompile::doParseActions(int32_t action) case doConditionalExpr: // Conditionals such as (?(1)a:b) case doPerlInline: - // Perl inline-condtionals. (?{perl code}a|b) We're not perl, no way to do them. + // Perl inline-conditionals. (?{perl code}a|b) We're not perl, no way to do them. error(U_REGEX_UNIMPLEMENTED); break; @@ -1009,7 +1004,7 @@ UBool RegexCompile::doParseActions(int32_t action) case doIntervalInit: // The '{' opening an interval quantifier was just scanned. - // Init the counter varaiables that will accumulate the values as the digits + // Init the counter variables that will accumulate the values as the digits // are scanned. fIntervalLow = 0; fIntervalUpper = -1; @@ -1344,7 +1339,7 @@ UBool RegexCompile::doParseActions(int32_t action) error(U_MEMORY_ALLOCATION_ERROR); } break; - + case doContinueNamedBackRef: fCaptureName->append(fC.fChar); break; @@ -1372,7 +1367,7 @@ UBool RegexCompile::doParseActions(int32_t action) fCaptureName = NULL; break; } - + case doPossessivePlus: // Possessive ++ quantifier. // Compiles to @@ -1485,8 +1480,8 @@ UBool RegexCompile::doParseActions(int32_t action) case 0x78: /* 'x' */ bit = UREGEX_COMMENTS; break; case 0x2d: /* '-' */ fSetModeFlag = FALSE; break; default: - UPRV_UNREACHABLE; // Should never happen. Other chars are filtered out - // by the scanner. + UPRV_UNREACHABLE_EXIT; // Should never happen. Other chars are filtered out + // by the scanner. } if (fSetModeFlag) { fNewModeFlags |= bit; @@ -1522,9 +1517,9 @@ UBool RegexCompile::doParseActions(int32_t action) appendOp(URX_NOP, 0); appendOp(URX_NOP, 0); - // On the Parentheses stack, start a new frame and add the postions + // On the Parentheses stack, start a new frame and add the positions // of the two NOPs (a normal non-capturing () frame, except for the - // saving of the orignal mode flags.) + // saving of the original mode flags.) fParenStack.push(fModeFlags, *fStatus); fParenStack.push(flags, *fStatus); // Frame Marker fParenStack.push(fRXPat->fCompiledPat->size()-2, *fStatus); // The first NOP @@ -1656,13 +1651,16 @@ UBool RegexCompile::doParseActions(int32_t action) } case doSetBegin: - fixLiterals(FALSE); - fSetStack.push(new UnicodeSet(), *fStatus); - fSetOpStack.push(setStart, *fStatus); - if ((fModeFlags & UREGEX_CASE_INSENSITIVE) != 0) { - fSetOpStack.push(setCaseClose, *fStatus); + { + fixLiterals(FALSE); + LocalPointer lpSet(new UnicodeSet(), *fStatus); + fSetStack.push(lpSet.orphan(), *fStatus); + fSetOpStack.push(setStart, *fStatus); + if ((fModeFlags & UREGEX_CASE_INSENSITIVE) != 0) { + fSetOpStack.push(setCaseClose, *fStatus); + } + break; } - break; case doSetBeginDifference1: // We have scanned something like [[abc]-[ @@ -1860,7 +1858,7 @@ UBool RegexCompile::doParseActions(int32_t action) } default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } if (U_FAILURE(*fStatus)) { @@ -1967,17 +1965,17 @@ int32_t RegexCompile::buildOp(int32_t type, int32_t val) { return 0; } if (type < 0 || type > 255) { - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } if (val > 0x00ffffff) { - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } if (val < 0) { if (!(type == URX_RESERVED_OP_N || type == URX_RESERVED_OP)) { - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } if (URX_TYPE(val) != 0xff) { - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } type = URX_RESERVED_OP_N; } @@ -2373,7 +2371,7 @@ void RegexCompile::handleCloseParen() { default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } // remember the next location in the compiled pattern. @@ -2396,7 +2394,7 @@ void RegexCompile::compileSet(UnicodeSet *theSet) return; } // Remove any strings from the set. - // There shoudn't be any, but just in case. + // There shouldn't be any, but just in case. // (Case Closure can add them; if we had a simple case closure available that // ignored strings, that would be better.) theSet->removeAllStrings(); @@ -2428,7 +2426,11 @@ void RegexCompile::compileSet(UnicodeSet *theSet) theSet->freeze(); int32_t setNumber = fRXPat->fSets->size(); fRXPat->fSets->addElement(theSet, *fStatus); - appendOp(URX_SETREF, setNumber); + if (U_SUCCESS(*fStatus)) { + appendOp(URX_SETREF, setNumber); + } else { + delete theSet; + } } } } @@ -2565,8 +2567,8 @@ UBool RegexCompile::compileInlineInterval() { //------------------------------------------------------------------------------ // -// caseInsensitiveStart given a single code point from a pattern string, determine the -// set of characters that could potentially begin a case-insensitive +// caseInsensitiveStart given a single code point from a pattern string, determine the +// set of characters that could potentially begin a case-insensitive // match of a string beginning with that character, using full Unicode // case insensitive matching. // @@ -2579,7 +2581,7 @@ UBool RegexCompile::compileInlineInterval() { // The pattern could match a string beginning with a German sharp-s // // To the ordinary case closure for a character c, we add all other -// characters cx where the case closure of cx incudes a string form that begins +// characters cx where the case closure of cx includes a string form that begins // with the original character c. // // This function could be made smarter. The full pattern string is available @@ -2593,48 +2595,49 @@ void RegexCompile::findCaseInsensitiveStarters(UChar32 c, UnicodeSet *starterCh // Machine Generated below. // It may need updating with new versions of Unicode. // Intltest test RegexTest::TestCaseInsensitiveStarters will fail if an update is needed. -// The update tool is here: svn+ssh://source.icu-project.org/repos/icu/tools/trunk/unicode/c/genregexcasing +// The update tool is here: +// https://github.com/unicode-org/icu/tree/main/tools/unicode/c/genregexcasing // Machine Generated Data. Do not hand edit. static const UChar32 RECaseFixCodePoints[] = { - 0x61, 0x66, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x77, 0x79, 0x2bc, - 0x3ac, 0x3ae, 0x3b1, 0x3b7, 0x3b9, 0x3c1, 0x3c5, 0x3c9, 0x3ce, 0x565, - 0x574, 0x57e, 0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07, - 0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 0x1f25, 0x1f26, 0x1f27, 0x1f60, 0x1f61, + 0x61, 0x66, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x77, 0x79, 0x2bc, + 0x3ac, 0x3ae, 0x3b1, 0x3b7, 0x3b9, 0x3c1, 0x3c5, 0x3c9, 0x3ce, 0x565, + 0x574, 0x57e, 0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07, + 0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 0x1f25, 0x1f26, 0x1f27, 0x1f60, 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65, 0x1f66, 0x1f67, 0x1f70, 0x1f74, 0x1f7c, 0x110000}; static const int16_t RECaseFixStringOffsets[] = { - 0x0, 0x1, 0x6, 0x7, 0x8, 0x9, 0xd, 0xe, 0xf, 0x10, - 0x11, 0x12, 0x13, 0x17, 0x1b, 0x20, 0x21, 0x2a, 0x2e, 0x2f, - 0x30, 0x34, 0x35, 0x37, 0x39, 0x3b, 0x3d, 0x3f, 0x41, 0x43, - 0x45, 0x47, 0x49, 0x4b, 0x4d, 0x4f, 0x51, 0x53, 0x55, 0x57, + 0x0, 0x1, 0x6, 0x7, 0x8, 0x9, 0xd, 0xe, 0xf, 0x10, + 0x11, 0x12, 0x13, 0x17, 0x1b, 0x20, 0x21, 0x2a, 0x2e, 0x2f, + 0x30, 0x34, 0x35, 0x37, 0x39, 0x3b, 0x3d, 0x3f, 0x41, 0x43, + 0x45, 0x47, 0x49, 0x4b, 0x4d, 0x4f, 0x51, 0x53, 0x55, 0x57, 0x59, 0x5b, 0x5d, 0x5f, 0x61, 0x63, 0x65, 0x66, 0x67, 0}; static const int16_t RECaseFixCounts[] = { - 0x1, 0x5, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, - 0x1, 0x1, 0x4, 0x4, 0x5, 0x1, 0x9, 0x4, 0x1, 0x1, - 0x4, 0x1, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, - 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, + 0x1, 0x5, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, + 0x1, 0x1, 0x4, 0x4, 0x5, 0x1, 0x9, 0x4, 0x1, 0x1, + 0x4, 0x1, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, + 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x1, 0x1, 0x1, 0}; static const UChar RECaseFixData[] = { - 0x1e9a, 0xfb00, 0xfb01, 0xfb02, 0xfb03, 0xfb04, 0x1e96, 0x130, 0x1f0, 0xdf, - 0x1e9e, 0xfb05, 0xfb06, 0x1e97, 0x1e98, 0x1e99, 0x149, 0x1fb4, 0x1fc4, 0x1fb3, - 0x1fb6, 0x1fb7, 0x1fbc, 0x1fc3, 0x1fc6, 0x1fc7, 0x1fcc, 0x390, 0x1fd2, 0x1fd3, - 0x1fd6, 0x1fd7, 0x1fe4, 0x3b0, 0x1f50, 0x1f52, 0x1f54, 0x1f56, 0x1fe2, 0x1fe3, - 0x1fe6, 0x1fe7, 0x1ff3, 0x1ff6, 0x1ff7, 0x1ffc, 0x1ff4, 0x587, 0xfb13, 0xfb14, - 0xfb15, 0xfb17, 0xfb16, 0x1f80, 0x1f88, 0x1f81, 0x1f89, 0x1f82, 0x1f8a, 0x1f83, - 0x1f8b, 0x1f84, 0x1f8c, 0x1f85, 0x1f8d, 0x1f86, 0x1f8e, 0x1f87, 0x1f8f, 0x1f90, - 0x1f98, 0x1f91, 0x1f99, 0x1f92, 0x1f9a, 0x1f93, 0x1f9b, 0x1f94, 0x1f9c, 0x1f95, - 0x1f9d, 0x1f96, 0x1f9e, 0x1f97, 0x1f9f, 0x1fa0, 0x1fa8, 0x1fa1, 0x1fa9, 0x1fa2, - 0x1faa, 0x1fa3, 0x1fab, 0x1fa4, 0x1fac, 0x1fa5, 0x1fad, 0x1fa6, 0x1fae, 0x1fa7, + 0x1e9a, 0xfb00, 0xfb01, 0xfb02, 0xfb03, 0xfb04, 0x1e96, 0x130, 0x1f0, 0xdf, + 0x1e9e, 0xfb05, 0xfb06, 0x1e97, 0x1e98, 0x1e99, 0x149, 0x1fb4, 0x1fc4, 0x1fb3, + 0x1fb6, 0x1fb7, 0x1fbc, 0x1fc3, 0x1fc6, 0x1fc7, 0x1fcc, 0x390, 0x1fd2, 0x1fd3, + 0x1fd6, 0x1fd7, 0x1fe4, 0x3b0, 0x1f50, 0x1f52, 0x1f54, 0x1f56, 0x1fe2, 0x1fe3, + 0x1fe6, 0x1fe7, 0x1ff3, 0x1ff6, 0x1ff7, 0x1ffc, 0x1ff4, 0x587, 0xfb13, 0xfb14, + 0xfb15, 0xfb17, 0xfb16, 0x1f80, 0x1f88, 0x1f81, 0x1f89, 0x1f82, 0x1f8a, 0x1f83, + 0x1f8b, 0x1f84, 0x1f8c, 0x1f85, 0x1f8d, 0x1f86, 0x1f8e, 0x1f87, 0x1f8f, 0x1f90, + 0x1f98, 0x1f91, 0x1f99, 0x1f92, 0x1f9a, 0x1f93, 0x1f9b, 0x1f94, 0x1f9c, 0x1f95, + 0x1f9d, 0x1f96, 0x1f9e, 0x1f97, 0x1f9f, 0x1fa0, 0x1fa8, 0x1fa1, 0x1fa9, 0x1fa2, + 0x1faa, 0x1fa3, 0x1fab, 0x1fa4, 0x1fac, 0x1fa5, 0x1fad, 0x1fa6, 0x1fae, 0x1fa7, 0x1faf, 0x1fb2, 0x1fc2, 0x1ff2, 0}; // End of machine generated data. if (c < UCHAR_MIN_VALUE || c > UCHAR_MAX_VALUE) { // This function should never be called with an invalid input character. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } else if (u_hasBinaryProperty(c, UCHAR_CASE_SENSITIVE)) { UChar32 caseFoldedC = u_foldCase(c, U_FOLD_CASE_DEFAULT); starterChars->set(caseFoldedC, caseFoldedC); @@ -2919,7 +2922,7 @@ void RegexCompile::matchStartType() { break; - case URX_BACKSLASH_X: // Grahpeme Cluster. Minimum is 1, max unbounded. + case URX_BACKSLASH_X: // Grapheme Cluster. Minimum is 1, max unbounded. case URX_DOTANY_ALL: // . matches one or two. case URX_DOTANY: case URX_DOTANY_UNIX: @@ -3127,10 +3130,10 @@ void RegexCompile::matchStartType() { case URX_LB_END: case URX_LBN_CONT: case URX_LBN_END: - UPRV_UNREACHABLE; // Shouldn't get here. These ops should be - // consumed by the scan in URX_LA_START and LB_START + UPRV_UNREACHABLE_EXIT; // Shouldn't get here. These ops should be + // consumed by the scan in URX_LA_START and LB_START default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -3286,7 +3289,7 @@ int32_t RegexCompile::minMatchLength(int32_t start, int32_t end) { case URX_BACKSLASH_R: case URX_BACKSLASH_V: case URX_ONECHAR_I: - case URX_BACKSLASH_X: // Grahpeme Cluster. Minimum is 1, max unbounded. + case URX_BACKSLASH_X: // Grapheme Cluster. Minimum is 1, max unbounded. case URX_DOTANY_ALL: // . matches one or two. case URX_DOTANY: case URX_DOTANY_UNIX: @@ -3406,7 +3409,7 @@ int32_t RegexCompile::minMatchLength(int32_t start, int32_t end) { loc++; op = (int32_t)fRXPat->fCompiledPat->elementAti(loc); if (URX_TYPE(op) == URX_LA_START) { - // The boilerplate for look-ahead includes two LA_END insturctions, + // The boilerplate for look-ahead includes two LA_END instructions, // Depth will be decremented by each one when it is seen. depth += 2; } @@ -3450,7 +3453,7 @@ int32_t RegexCompile::minMatchLength(int32_t start, int32_t end) { break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -3546,7 +3549,7 @@ int32_t RegexCompile::maxMatchLength(int32_t start, int32_t end) { // Call the max length unbounded, and stop further checking. case URX_BACKREF: // BackRef. Must assume that it might be a zero length match case URX_BACKREF_I: - case URX_BACKSLASH_X: // Grahpeme Cluster. Minimum is 1, max unbounded. + case URX_BACKSLASH_X: // Grapheme Cluster. Minimum is 1, max unbounded. currentLen = INT32_MAX; break; @@ -3682,7 +3685,7 @@ int32_t RegexCompile::maxMatchLength(int32_t start, int32_t end) { U_ASSERT(loopEndLoc >= loc+4); int64_t blockLen = maxMatchLength(loc+4, loopEndLoc-1); // Recursive call. - int64_t updatedLen = (int64_t)currentLen + blockLen * maxLoopCount; + int64_t updatedLen = (int64_t)currentLen + blockLen * maxLoopCount; if (updatedLen >= INT32_MAX) { currentLen = INT32_MAX; break; @@ -3696,7 +3699,7 @@ int32_t RegexCompile::maxMatchLength(int32_t start, int32_t end) { case URX_CTR_LOOP_NG: // These opcodes will be skipped over by code for URX_CTR_INIT. // We shouldn't encounter them here. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; case URX_LOOP_SR_I: case URX_LOOP_DOT_I: @@ -3716,7 +3719,7 @@ int32_t RegexCompile::maxMatchLength(int32_t start, int32_t end) { // End of look-ahead ops should always be consumed by the processing at // the URX_LA_START op. - // UPRV_UNREACHABLE; + // UPRV_UNREACHABLE_EXIT; case URX_LB_START: { @@ -3735,7 +3738,7 @@ int32_t RegexCompile::maxMatchLength(int32_t start, int32_t end) { break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } @@ -3890,7 +3893,7 @@ void RegexCompile::stripNOPs() { default: // Some op is unaccounted for. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -3927,7 +3930,7 @@ void RegexCompile::error(UErrorCode e) { UErrorCode status = U_ZERO_ERROR; // throwaway status for extracting context // Fill in the context. - // Note: extractBetween() pins supplied indicies to the string bounds. + // Note: extractBetween() pins supplied indices to the string bounds. uprv_memset(fParseErr->preContext, 0, sizeof(fParseErr->preContext)); uprv_memset(fParseErr->postContext, 0, sizeof(fParseErr->postContext)); utext_extract(fRXPat->fPattern, fScanIndex-U_PARSE_CONTEXT_LEN+1, fScanIndex, fParseErr->preContext, U_PARSE_CONTEXT_LEN, &status); @@ -4057,7 +4060,7 @@ void RegexCompile::nextChar(RegexPatternChar &c) { // // We are in free-spacing and comments mode. // Scan through any white space and comments, until we - // reach a significant character or the end of inut. + // reach a significant character or the end of input. for (;;) { if (c.fChar == (UChar32)-1) { break; // End of Input @@ -4385,7 +4388,7 @@ static inline void addIdentifierIgnorable(UnicodeSet *set, UErrorCode& ec) { // // Create a Unicode Set from a Unicode Property expression. -// This is common code underlying both \p{...} ane [:...:] expressions. +// This is common code underlying both \p{...} and [:...:] expressions. // Includes trying the Java "properties" that aren't supported as // normal ICU UnicodeSet properties // @@ -4578,6 +4581,13 @@ UnicodeSet *RegexCompile::createSetForProperty(const UnicodeString &propName, UB } while (false); // End of do loop block. Code above breaks out of the block on success or hard failure. if (U_SUCCESS(status)) { + // ICU 70 adds emoji properties of strings, but as long as Java does not say how to + // deal with properties of strings and character classes with strings, we ignore them. + // Just in case something downstream might stumble over the strings, + // we remove them from the set. + // Note that when we support strings, the complement of a property (as with \P) + // should be implemented as .complement().removeAllStrings() (code point complement). + set->removeAllStrings(); U_ASSERT(set.isValid()); if (negated) { set->complement(); @@ -4611,6 +4621,13 @@ void RegexCompile::setEval(int32_t nextOp) { fSetOpStack.popi(); U_ASSERT(fSetStack.empty() == FALSE); rightOperand = (UnicodeSet *)fSetStack.peek(); + // ICU 70 adds emoji properties of strings, but createSetForProperty() removes all strings + // (see comments there). + // We also do not yet support string literals in character classes, + // so there should not be any strings. + // Note that when we support strings, the complement of a set (as with ^ or \P) + // should be implemented as .complement().removeAllStrings() (code point complement). + U_ASSERT(!rightOperand->hasStrings()); switch (pendingSetOperation) { case setNegation: rightOperand->complement(); @@ -4641,7 +4658,7 @@ void RegexCompile::setEval(int32_t nextOp) { delete rightOperand; break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } } @@ -4649,8 +4666,10 @@ void RegexCompile::setEval(int32_t nextOp) { void RegexCompile::setPushOp(int32_t op) { setEval(op); fSetOpStack.push(op, *fStatus); - fSetStack.push(new UnicodeSet(), *fStatus); + LocalPointer lpSet(new UnicodeSet(), *fStatus); + fSetStack.push(lpSet.orphan(), *fStatus); } U_NAMESPACE_END #endif // !UCONFIG_NO_REGULAR_EXPRESSIONS + diff --git a/deps/icu-small/source/i18n/regexcmp.h b/deps/icu-small/source/i18n/regexcmp.h index 5804ff302674a1..9e1aa170f08689 100644 --- a/deps/icu-small/source/i18n/regexcmp.h +++ b/deps/icu-small/source/i18n/regexcmp.h @@ -59,7 +59,7 @@ class U_I18N_API RegexCompile : public UMemory { void compile(const UnicodeString &pat, UParseError &pp, UErrorCode &e); void compile(UText *pat, UParseError &pp, UErrorCode &e); - + virtual ~RegexCompile(); @@ -182,7 +182,7 @@ class U_I18N_API RegexCompile : public UMemory { // string will be cleared. int64_t fPatternLength; // Length of the input pattern string. - + UVector32 fParenStack; // parentheses stack. Each frame consists of // the positions of compiled pattern operations // needing fixup, followed by negative value. The @@ -209,7 +209,7 @@ class U_I18N_API RegexCompile : public UMemory { // initially scanned. Each new interval // encountered overwrites these values. // -1 for the upper interval value means none - // was specified (unlimited occurences.) + // was specified (unlimited occurrences.) int64_t fNameStartPos; // Starting position of a \N{NAME} name in a // pattern, valid while remainder of name is @@ -228,7 +228,7 @@ class U_I18N_API RegexCompile : public UMemory { // in this string while being scanned. }; -// Constant values to be pushed onto fSetOpStack while scanning & evalueating [set expressions] +// Constant values to be pushed onto fSetOpStack while scanning & evaluating [set expressions] // The high 16 bits are the operator precedence, and the low 16 are a code for the operation itself. enum SetOperations { diff --git a/deps/icu-small/source/i18n/regexcst.h b/deps/icu-small/source/i18n/regexcst.h index 526c253e3bcb8d..d44c2aec2be343 100644 --- a/deps/icu-small/source/i18n/regexcst.h +++ b/deps/icu-small/source/i18n/regexcst.h @@ -7,8 +7,8 @@ // It is generated by the Perl script "regexcst.pl" from // the rule parser state definitions file "regexcst.txt". // -// Copyright (C) 2002-2016 International Business Machines Corporation -// and others. All rights reserved. +// Copyright (C) 2002-2016 International Business Machines Corporation +// and others. All rights reserved. // //--------------------------------------------------------------------------------- #ifndef RBBIRPT_H @@ -152,208 +152,208 @@ static const struct RegexTableEl gRuleParseStateTable[] = { {doNOP, 0, 0, 0, TRUE} , {doPatStart, 255, 2,0, FALSE} // 1 start , {doLiteralChar, 254, 14,0, TRUE} // 2 term - , {doLiteralChar, 130, 14,0, TRUE} // 3 - , {doSetBegin, 91 /* [ */, 123, 205, TRUE} // 4 - , {doNOP, 40 /* ( */, 27,0, TRUE} // 5 - , {doDotAny, 46 /* . */, 14,0, TRUE} // 6 - , {doCaret, 94 /* ^ */, 14,0, TRUE} // 7 - , {doDollar, 36 /* $ */, 14,0, TRUE} // 8 - , {doNOP, 92 /* \ */, 89,0, TRUE} // 9 - , {doOrOperator, 124 /* | */, 2,0, TRUE} // 10 - , {doCloseParen, 41 /* ) */, 255,0, TRUE} // 11 - , {doPatFinish, 253, 2,0, FALSE} // 12 - , {doRuleError, 255, 206,0, FALSE} // 13 + , {doLiteralChar, 130, 14,0, TRUE} // 3 + , {doSetBegin, 91 /* [ */, 123, 205, TRUE} // 4 + , {doNOP, 40 /* ( */, 27,0, TRUE} // 5 + , {doDotAny, 46 /* . */, 14,0, TRUE} // 6 + , {doCaret, 94 /* ^ */, 14,0, TRUE} // 7 + , {doDollar, 36 /* $ */, 14,0, TRUE} // 8 + , {doNOP, 92 /* \ */, 89,0, TRUE} // 9 + , {doOrOperator, 124 /* | */, 2,0, TRUE} // 10 + , {doCloseParen, 41 /* ) */, 255,0, TRUE} // 11 + , {doPatFinish, 253, 2,0, FALSE} // 12 + , {doRuleError, 255, 206,0, FALSE} // 13 , {doNOP, 42 /* * */, 68,0, TRUE} // 14 expr-quant - , {doNOP, 43 /* + */, 71,0, TRUE} // 15 - , {doNOP, 63 /* ? */, 74,0, TRUE} // 16 - , {doIntervalInit, 123 /* { */, 77,0, TRUE} // 17 - , {doNOP, 40 /* ( */, 23,0, TRUE} // 18 - , {doNOP, 255, 20,0, FALSE} // 19 + , {doNOP, 43 /* + */, 71,0, TRUE} // 15 + , {doNOP, 63 /* ? */, 74,0, TRUE} // 16 + , {doIntervalInit, 123 /* { */, 77,0, TRUE} // 17 + , {doNOP, 40 /* ( */, 23,0, TRUE} // 18 + , {doNOP, 255, 20,0, FALSE} // 19 , {doOrOperator, 124 /* | */, 2,0, TRUE} // 20 expr-cont - , {doCloseParen, 41 /* ) */, 255,0, TRUE} // 21 - , {doNOP, 255, 2,0, FALSE} // 22 + , {doCloseParen, 41 /* ) */, 255,0, TRUE} // 21 + , {doNOP, 255, 2,0, FALSE} // 22 , {doSuppressComments, 63 /* ? */, 25,0, TRUE} // 23 open-paren-quant - , {doNOP, 255, 27,0, FALSE} // 24 + , {doNOP, 255, 27,0, FALSE} // 24 , {doNOP, 35 /* # */, 50, 14, TRUE} // 25 open-paren-quant2 - , {doNOP, 255, 29,0, FALSE} // 26 + , {doNOP, 255, 29,0, FALSE} // 26 , {doSuppressComments, 63 /* ? */, 29,0, TRUE} // 27 open-paren - , {doOpenCaptureParen, 255, 2, 14, FALSE} // 28 + , {doOpenCaptureParen, 255, 2, 14, FALSE} // 28 , {doOpenNonCaptureParen, 58 /* : */, 2, 14, TRUE} // 29 open-paren-extended - , {doOpenAtomicParen, 62 /* > */, 2, 14, TRUE} // 30 - , {doOpenLookAhead, 61 /* = */, 2, 20, TRUE} // 31 - , {doOpenLookAheadNeg, 33 /* ! */, 2, 20, TRUE} // 32 - , {doNOP, 60 /* < */, 46,0, TRUE} // 33 - , {doNOP, 35 /* # */, 50, 2, TRUE} // 34 - , {doBeginMatchMode, 105 /* i */, 53,0, FALSE} // 35 - , {doBeginMatchMode, 100 /* d */, 53,0, FALSE} // 36 - , {doBeginMatchMode, 109 /* m */, 53,0, FALSE} // 37 - , {doBeginMatchMode, 115 /* s */, 53,0, FALSE} // 38 - , {doBeginMatchMode, 117 /* u */, 53,0, FALSE} // 39 - , {doBeginMatchMode, 119 /* w */, 53,0, FALSE} // 40 - , {doBeginMatchMode, 120 /* x */, 53,0, FALSE} // 41 - , {doBeginMatchMode, 45 /* - */, 53,0, FALSE} // 42 - , {doConditionalExpr, 40 /* ( */, 206,0, TRUE} // 43 - , {doPerlInline, 123 /* { */, 206,0, TRUE} // 44 - , {doBadOpenParenType, 255, 206,0, FALSE} // 45 + , {doOpenAtomicParen, 62 /* > */, 2, 14, TRUE} // 30 + , {doOpenLookAhead, 61 /* = */, 2, 20, TRUE} // 31 + , {doOpenLookAheadNeg, 33 /* ! */, 2, 20, TRUE} // 32 + , {doNOP, 60 /* < */, 46,0, TRUE} // 33 + , {doNOP, 35 /* # */, 50, 2, TRUE} // 34 + , {doBeginMatchMode, 105 /* i */, 53,0, FALSE} // 35 + , {doBeginMatchMode, 100 /* d */, 53,0, FALSE} // 36 + , {doBeginMatchMode, 109 /* m */, 53,0, FALSE} // 37 + , {doBeginMatchMode, 115 /* s */, 53,0, FALSE} // 38 + , {doBeginMatchMode, 117 /* u */, 53,0, FALSE} // 39 + , {doBeginMatchMode, 119 /* w */, 53,0, FALSE} // 40 + , {doBeginMatchMode, 120 /* x */, 53,0, FALSE} // 41 + , {doBeginMatchMode, 45 /* - */, 53,0, FALSE} // 42 + , {doConditionalExpr, 40 /* ( */, 206,0, TRUE} // 43 + , {doPerlInline, 123 /* { */, 206,0, TRUE} // 44 + , {doBadOpenParenType, 255, 206,0, FALSE} // 45 , {doOpenLookBehind, 61 /* = */, 2, 20, TRUE} // 46 open-paren-lookbehind - , {doOpenLookBehindNeg, 33 /* ! */, 2, 20, TRUE} // 47 - , {doBeginNamedCapture, 129, 64,0, FALSE} // 48 - , {doBadOpenParenType, 255, 206,0, FALSE} // 49 + , {doOpenLookBehindNeg, 33 /* ! */, 2, 20, TRUE} // 47 + , {doBeginNamedCapture, 129, 64,0, FALSE} // 48 + , {doBadOpenParenType, 255, 206,0, FALSE} // 49 , {doNOP, 41 /* ) */, 255,0, TRUE} // 50 paren-comment - , {doMismatchedParenErr, 253, 206,0, FALSE} // 51 - , {doNOP, 255, 50,0, TRUE} // 52 + , {doMismatchedParenErr, 253, 206,0, FALSE} // 51 + , {doNOP, 255, 50,0, TRUE} // 52 , {doMatchMode, 105 /* i */, 53,0, TRUE} // 53 paren-flag - , {doMatchMode, 100 /* d */, 53,0, TRUE} // 54 - , {doMatchMode, 109 /* m */, 53,0, TRUE} // 55 - , {doMatchMode, 115 /* s */, 53,0, TRUE} // 56 - , {doMatchMode, 117 /* u */, 53,0, TRUE} // 57 - , {doMatchMode, 119 /* w */, 53,0, TRUE} // 58 - , {doMatchMode, 120 /* x */, 53,0, TRUE} // 59 - , {doMatchMode, 45 /* - */, 53,0, TRUE} // 60 - , {doSetMatchMode, 41 /* ) */, 2,0, TRUE} // 61 - , {doMatchModeParen, 58 /* : */, 2, 14, TRUE} // 62 - , {doBadModeFlag, 255, 206,0, FALSE} // 63 + , {doMatchMode, 100 /* d */, 53,0, TRUE} // 54 + , {doMatchMode, 109 /* m */, 53,0, TRUE} // 55 + , {doMatchMode, 115 /* s */, 53,0, TRUE} // 56 + , {doMatchMode, 117 /* u */, 53,0, TRUE} // 57 + , {doMatchMode, 119 /* w */, 53,0, TRUE} // 58 + , {doMatchMode, 120 /* x */, 53,0, TRUE} // 59 + , {doMatchMode, 45 /* - */, 53,0, TRUE} // 60 + , {doSetMatchMode, 41 /* ) */, 2,0, TRUE} // 61 + , {doMatchModeParen, 58 /* : */, 2, 14, TRUE} // 62 + , {doBadModeFlag, 255, 206,0, FALSE} // 63 , {doContinueNamedCapture, 129, 64,0, TRUE} // 64 named-capture - , {doContinueNamedCapture, 128, 64,0, TRUE} // 65 - , {doOpenCaptureParen, 62 /* > */, 2, 14, TRUE} // 66 - , {doBadNamedCapture, 255, 206,0, FALSE} // 67 + , {doContinueNamedCapture, 128, 64,0, TRUE} // 65 + , {doOpenCaptureParen, 62 /* > */, 2, 14, TRUE} // 66 + , {doBadNamedCapture, 255, 206,0, FALSE} // 67 , {doNGStar, 63 /* ? */, 20,0, TRUE} // 68 quant-star - , {doPossessiveStar, 43 /* + */, 20,0, TRUE} // 69 - , {doStar, 255, 20,0, FALSE} // 70 + , {doPossessiveStar, 43 /* + */, 20,0, TRUE} // 69 + , {doStar, 255, 20,0, FALSE} // 70 , {doNGPlus, 63 /* ? */, 20,0, TRUE} // 71 quant-plus - , {doPossessivePlus, 43 /* + */, 20,0, TRUE} // 72 - , {doPlus, 255, 20,0, FALSE} // 73 + , {doPossessivePlus, 43 /* + */, 20,0, TRUE} // 72 + , {doPlus, 255, 20,0, FALSE} // 73 , {doNGOpt, 63 /* ? */, 20,0, TRUE} // 74 quant-opt - , {doPossessiveOpt, 43 /* + */, 20,0, TRUE} // 75 - , {doOpt, 255, 20,0, FALSE} // 76 + , {doPossessiveOpt, 43 /* + */, 20,0, TRUE} // 75 + , {doOpt, 255, 20,0, FALSE} // 76 , {doNOP, 128, 79,0, FALSE} // 77 interval-open - , {doIntervalError, 255, 206,0, FALSE} // 78 + , {doIntervalError, 255, 206,0, FALSE} // 78 , {doIntevalLowerDigit, 128, 79,0, TRUE} // 79 interval-lower - , {doNOP, 44 /* , */, 83,0, TRUE} // 80 - , {doIntervalSame, 125 /* } */, 86,0, TRUE} // 81 - , {doIntervalError, 255, 206,0, FALSE} // 82 + , {doNOP, 44 /* , */, 83,0, TRUE} // 80 + , {doIntervalSame, 125 /* } */, 86,0, TRUE} // 81 + , {doIntervalError, 255, 206,0, FALSE} // 82 , {doIntervalUpperDigit, 128, 83,0, TRUE} // 83 interval-upper - , {doNOP, 125 /* } */, 86,0, TRUE} // 84 - , {doIntervalError, 255, 206,0, FALSE} // 85 + , {doNOP, 125 /* } */, 86,0, TRUE} // 84 + , {doIntervalError, 255, 206,0, FALSE} // 85 , {doNGInterval, 63 /* ? */, 20,0, TRUE} // 86 interval-type - , {doPossessiveInterval, 43 /* + */, 20,0, TRUE} // 87 - , {doInterval, 255, 20,0, FALSE} // 88 + , {doPossessiveInterval, 43 /* + */, 20,0, TRUE} // 87 + , {doInterval, 255, 20,0, FALSE} // 88 , {doBackslashA, 65 /* A */, 2,0, TRUE} // 89 backslash - , {doBackslashB, 66 /* B */, 2,0, TRUE} // 90 - , {doBackslashb, 98 /* b */, 2,0, TRUE} // 91 - , {doBackslashd, 100 /* d */, 14,0, TRUE} // 92 - , {doBackslashD, 68 /* D */, 14,0, TRUE} // 93 - , {doBackslashG, 71 /* G */, 2,0, TRUE} // 94 - , {doBackslashh, 104 /* h */, 14,0, TRUE} // 95 - , {doBackslashH, 72 /* H */, 14,0, TRUE} // 96 - , {doNOP, 107 /* k */, 115,0, TRUE} // 97 - , {doNamedChar, 78 /* N */, 14,0, FALSE} // 98 - , {doProperty, 112 /* p */, 14,0, FALSE} // 99 - , {doProperty, 80 /* P */, 14,0, FALSE} // 100 - , {doBackslashR, 82 /* R */, 14,0, TRUE} // 101 - , {doEnterQuoteMode, 81 /* Q */, 2,0, TRUE} // 102 - , {doBackslashS, 83 /* S */, 14,0, TRUE} // 103 - , {doBackslashs, 115 /* s */, 14,0, TRUE} // 104 - , {doBackslashv, 118 /* v */, 14,0, TRUE} // 105 - , {doBackslashV, 86 /* V */, 14,0, TRUE} // 106 - , {doBackslashW, 87 /* W */, 14,0, TRUE} // 107 - , {doBackslashw, 119 /* w */, 14,0, TRUE} // 108 - , {doBackslashX, 88 /* X */, 14,0, TRUE} // 109 - , {doBackslashZ, 90 /* Z */, 2,0, TRUE} // 110 - , {doBackslashz, 122 /* z */, 2,0, TRUE} // 111 - , {doBackRef, 128, 14,0, TRUE} // 112 - , {doEscapeError, 253, 206,0, FALSE} // 113 - , {doEscapedLiteralChar, 255, 14,0, TRUE} // 114 + , {doBackslashB, 66 /* B */, 2,0, TRUE} // 90 + , {doBackslashb, 98 /* b */, 2,0, TRUE} // 91 + , {doBackslashd, 100 /* d */, 14,0, TRUE} // 92 + , {doBackslashD, 68 /* D */, 14,0, TRUE} // 93 + , {doBackslashG, 71 /* G */, 2,0, TRUE} // 94 + , {doBackslashh, 104 /* h */, 14,0, TRUE} // 95 + , {doBackslashH, 72 /* H */, 14,0, TRUE} // 96 + , {doNOP, 107 /* k */, 115,0, TRUE} // 97 + , {doNamedChar, 78 /* N */, 14,0, FALSE} // 98 + , {doProperty, 112 /* p */, 14,0, FALSE} // 99 + , {doProperty, 80 /* P */, 14,0, FALSE} // 100 + , {doBackslashR, 82 /* R */, 14,0, TRUE} // 101 + , {doEnterQuoteMode, 81 /* Q */, 2,0, TRUE} // 102 + , {doBackslashS, 83 /* S */, 14,0, TRUE} // 103 + , {doBackslashs, 115 /* s */, 14,0, TRUE} // 104 + , {doBackslashv, 118 /* v */, 14,0, TRUE} // 105 + , {doBackslashV, 86 /* V */, 14,0, TRUE} // 106 + , {doBackslashW, 87 /* W */, 14,0, TRUE} // 107 + , {doBackslashw, 119 /* w */, 14,0, TRUE} // 108 + , {doBackslashX, 88 /* X */, 14,0, TRUE} // 109 + , {doBackslashZ, 90 /* Z */, 2,0, TRUE} // 110 + , {doBackslashz, 122 /* z */, 2,0, TRUE} // 111 + , {doBackRef, 128, 14,0, TRUE} // 112 + , {doEscapeError, 253, 206,0, FALSE} // 113 + , {doEscapedLiteralChar, 255, 14,0, TRUE} // 114 , {doBeginNamedBackRef, 60 /* < */, 117,0, TRUE} // 115 named-backref - , {doBadNamedCapture, 255, 206,0, FALSE} // 116 + , {doBadNamedCapture, 255, 206,0, FALSE} // 116 , {doContinueNamedBackRef, 129, 119,0, TRUE} // 117 named-backref-2 - , {doBadNamedCapture, 255, 206,0, FALSE} // 118 + , {doBadNamedCapture, 255, 206,0, FALSE} // 118 , {doContinueNamedBackRef, 129, 119,0, TRUE} // 119 named-backref-3 - , {doContinueNamedBackRef, 128, 119,0, TRUE} // 120 - , {doCompleteNamedBackRef, 62 /* > */, 14,0, TRUE} // 121 - , {doBadNamedCapture, 255, 206,0, FALSE} // 122 + , {doContinueNamedBackRef, 128, 119,0, TRUE} // 120 + , {doCompleteNamedBackRef, 62 /* > */, 14,0, TRUE} // 121 + , {doBadNamedCapture, 255, 206,0, FALSE} // 122 , {doSetNegate, 94 /* ^ */, 126,0, TRUE} // 123 set-open - , {doSetPosixProp, 58 /* : */, 128,0, FALSE} // 124 - , {doNOP, 255, 126,0, FALSE} // 125 + , {doSetPosixProp, 58 /* : */, 128,0, FALSE} // 124 + , {doNOP, 255, 126,0, FALSE} // 125 , {doSetLiteral, 93 /* ] */, 141,0, TRUE} // 126 set-open2 - , {doNOP, 255, 131,0, FALSE} // 127 + , {doNOP, 255, 131,0, FALSE} // 127 , {doSetEnd, 93 /* ] */, 255,0, TRUE} // 128 set-posix - , {doNOP, 58 /* : */, 131,0, FALSE} // 129 - , {doRuleError, 255, 206,0, FALSE} // 130 + , {doNOP, 58 /* : */, 131,0, FALSE} // 129 + , {doRuleError, 255, 206,0, FALSE} // 130 , {doSetEnd, 93 /* ] */, 255,0, TRUE} // 131 set-start - , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE} // 132 - , {doNOP, 92 /* \ */, 191,0, TRUE} // 133 - , {doNOP, 45 /* - */, 137,0, TRUE} // 134 - , {doNOP, 38 /* & */, 139,0, TRUE} // 135 - , {doSetLiteral, 255, 141,0, TRUE} // 136 + , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE} // 132 + , {doNOP, 92 /* \ */, 191,0, TRUE} // 133 + , {doNOP, 45 /* - */, 137,0, TRUE} // 134 + , {doNOP, 38 /* & */, 139,0, TRUE} // 135 + , {doSetLiteral, 255, 141,0, TRUE} // 136 , {doRuleError, 45 /* - */, 206,0, FALSE} // 137 set-start-dash - , {doSetAddDash, 255, 141,0, FALSE} // 138 + , {doSetAddDash, 255, 141,0, FALSE} // 138 , {doRuleError, 38 /* & */, 206,0, FALSE} // 139 set-start-amp - , {doSetAddAmp, 255, 141,0, FALSE} // 140 + , {doSetAddAmp, 255, 141,0, FALSE} // 140 , {doSetEnd, 93 /* ] */, 255,0, TRUE} // 141 set-after-lit - , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE} // 142 - , {doNOP, 45 /* - */, 178,0, TRUE} // 143 - , {doNOP, 38 /* & */, 169,0, TRUE} // 144 - , {doNOP, 92 /* \ */, 191,0, TRUE} // 145 - , {doSetNoCloseError, 253, 206,0, FALSE} // 146 - , {doSetLiteral, 255, 141,0, TRUE} // 147 + , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE} // 142 + , {doNOP, 45 /* - */, 178,0, TRUE} // 143 + , {doNOP, 38 /* & */, 169,0, TRUE} // 144 + , {doNOP, 92 /* \ */, 191,0, TRUE} // 145 + , {doSetNoCloseError, 253, 206,0, FALSE} // 146 + , {doSetLiteral, 255, 141,0, TRUE} // 147 , {doSetEnd, 93 /* ] */, 255,0, TRUE} // 148 set-after-set - , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE} // 149 - , {doNOP, 45 /* - */, 171,0, TRUE} // 150 - , {doNOP, 38 /* & */, 166,0, TRUE} // 151 - , {doNOP, 92 /* \ */, 191,0, TRUE} // 152 - , {doSetNoCloseError, 253, 206,0, FALSE} // 153 - , {doSetLiteral, 255, 141,0, TRUE} // 154 + , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE} // 149 + , {doNOP, 45 /* - */, 171,0, TRUE} // 150 + , {doNOP, 38 /* & */, 166,0, TRUE} // 151 + , {doNOP, 92 /* \ */, 191,0, TRUE} // 152 + , {doSetNoCloseError, 253, 206,0, FALSE} // 153 + , {doSetLiteral, 255, 141,0, TRUE} // 154 , {doSetEnd, 93 /* ] */, 255,0, TRUE} // 155 set-after-range - , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE} // 156 - , {doNOP, 45 /* - */, 174,0, TRUE} // 157 - , {doNOP, 38 /* & */, 176,0, TRUE} // 158 - , {doNOP, 92 /* \ */, 191,0, TRUE} // 159 - , {doSetNoCloseError, 253, 206,0, FALSE} // 160 - , {doSetLiteral, 255, 141,0, TRUE} // 161 + , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE} // 156 + , {doNOP, 45 /* - */, 174,0, TRUE} // 157 + , {doNOP, 38 /* & */, 176,0, TRUE} // 158 + , {doNOP, 92 /* \ */, 191,0, TRUE} // 159 + , {doSetNoCloseError, 253, 206,0, FALSE} // 160 + , {doSetLiteral, 255, 141,0, TRUE} // 161 , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE} // 162 set-after-op - , {doSetOpError, 93 /* ] */, 206,0, FALSE} // 163 - , {doNOP, 92 /* \ */, 191,0, TRUE} // 164 - , {doSetLiteral, 255, 141,0, TRUE} // 165 + , {doSetOpError, 93 /* ] */, 206,0, FALSE} // 163 + , {doNOP, 92 /* \ */, 191,0, TRUE} // 164 + , {doSetLiteral, 255, 141,0, TRUE} // 165 , {doSetBeginIntersection1, 91 /* [ */, 123, 148, TRUE} // 166 set-set-amp - , {doSetIntersection2, 38 /* & */, 162,0, TRUE} // 167 - , {doSetAddAmp, 255, 141,0, FALSE} // 168 + , {doSetIntersection2, 38 /* & */, 162,0, TRUE} // 167 + , {doSetAddAmp, 255, 141,0, FALSE} // 168 , {doSetIntersection2, 38 /* & */, 162,0, TRUE} // 169 set-lit-amp - , {doSetAddAmp, 255, 141,0, FALSE} // 170 + , {doSetAddAmp, 255, 141,0, FALSE} // 170 , {doSetBeginDifference1, 91 /* [ */, 123, 148, TRUE} // 171 set-set-dash - , {doSetDifference2, 45 /* - */, 162,0, TRUE} // 172 - , {doSetAddDash, 255, 141,0, FALSE} // 173 + , {doSetDifference2, 45 /* - */, 162,0, TRUE} // 172 + , {doSetAddDash, 255, 141,0, FALSE} // 173 , {doSetDifference2, 45 /* - */, 162,0, TRUE} // 174 set-range-dash - , {doSetAddDash, 255, 141,0, FALSE} // 175 + , {doSetAddDash, 255, 141,0, FALSE} // 175 , {doSetIntersection2, 38 /* & */, 162,0, TRUE} // 176 set-range-amp - , {doSetAddAmp, 255, 141,0, FALSE} // 177 + , {doSetAddAmp, 255, 141,0, FALSE} // 177 , {doSetDifference2, 45 /* - */, 162,0, TRUE} // 178 set-lit-dash - , {doSetAddDash, 91 /* [ */, 141,0, FALSE} // 179 - , {doSetAddDash, 93 /* ] */, 141,0, FALSE} // 180 - , {doNOP, 92 /* \ */, 183,0, TRUE} // 181 - , {doSetRange, 255, 155,0, TRUE} // 182 + , {doSetAddDash, 91 /* [ */, 141,0, FALSE} // 179 + , {doSetAddDash, 93 /* ] */, 141,0, FALSE} // 180 + , {doNOP, 92 /* \ */, 183,0, TRUE} // 181 + , {doSetRange, 255, 155,0, TRUE} // 182 , {doSetOpError, 115 /* s */, 206,0, FALSE} // 183 set-lit-dash-escape - , {doSetOpError, 83 /* S */, 206,0, FALSE} // 184 - , {doSetOpError, 119 /* w */, 206,0, FALSE} // 185 - , {doSetOpError, 87 /* W */, 206,0, FALSE} // 186 - , {doSetOpError, 100 /* d */, 206,0, FALSE} // 187 - , {doSetOpError, 68 /* D */, 206,0, FALSE} // 188 - , {doSetNamedRange, 78 /* N */, 155,0, FALSE} // 189 - , {doSetRange, 255, 155,0, TRUE} // 190 + , {doSetOpError, 83 /* S */, 206,0, FALSE} // 184 + , {doSetOpError, 119 /* w */, 206,0, FALSE} // 185 + , {doSetOpError, 87 /* W */, 206,0, FALSE} // 186 + , {doSetOpError, 100 /* d */, 206,0, FALSE} // 187 + , {doSetOpError, 68 /* D */, 206,0, FALSE} // 188 + , {doSetNamedRange, 78 /* N */, 155,0, FALSE} // 189 + , {doSetRange, 255, 155,0, TRUE} // 190 , {doSetProp, 112 /* p */, 148,0, FALSE} // 191 set-escape - , {doSetProp, 80 /* P */, 148,0, FALSE} // 192 - , {doSetNamedChar, 78 /* N */, 141,0, FALSE} // 193 - , {doSetBackslash_s, 115 /* s */, 155,0, TRUE} // 194 - , {doSetBackslash_S, 83 /* S */, 155,0, TRUE} // 195 - , {doSetBackslash_w, 119 /* w */, 155,0, TRUE} // 196 - , {doSetBackslash_W, 87 /* W */, 155,0, TRUE} // 197 - , {doSetBackslash_d, 100 /* d */, 155,0, TRUE} // 198 - , {doSetBackslash_D, 68 /* D */, 155,0, TRUE} // 199 - , {doSetBackslash_h, 104 /* h */, 155,0, TRUE} // 200 - , {doSetBackslash_H, 72 /* H */, 155,0, TRUE} // 201 - , {doSetBackslash_v, 118 /* v */, 155,0, TRUE} // 202 - , {doSetBackslash_V, 86 /* V */, 155,0, TRUE} // 203 - , {doSetLiteralEscaped, 255, 141,0, TRUE} // 204 + , {doSetProp, 80 /* P */, 148,0, FALSE} // 192 + , {doSetNamedChar, 78 /* N */, 141,0, FALSE} // 193 + , {doSetBackslash_s, 115 /* s */, 155,0, TRUE} // 194 + , {doSetBackslash_S, 83 /* S */, 155,0, TRUE} // 195 + , {doSetBackslash_w, 119 /* w */, 155,0, TRUE} // 196 + , {doSetBackslash_W, 87 /* W */, 155,0, TRUE} // 197 + , {doSetBackslash_d, 100 /* d */, 155,0, TRUE} // 198 + , {doSetBackslash_D, 68 /* D */, 155,0, TRUE} // 199 + , {doSetBackslash_h, 104 /* h */, 155,0, TRUE} // 200 + , {doSetBackslash_H, 72 /* H */, 155,0, TRUE} // 201 + , {doSetBackslash_v, 118 /* v */, 155,0, TRUE} // 202 + , {doSetBackslash_V, 86 /* V */, 155,0, TRUE} // 203 + , {doSetLiteralEscaped, 255, 141,0, TRUE} // 204 , {doSetFinish, 255, 14,0, FALSE} // 205 set-finish , {doExit, 255, 206,0, TRUE} // 206 errorDeath }; diff --git a/deps/icu-small/source/i18n/regexcst.pl b/deps/icu-small/source/i18n/regexcst.pl index 3ae259048aec43..7636757331d921 100755 --- a/deps/icu-small/source/i18n/regexcst.pl +++ b/deps/icu-small/source/i18n/regexcst.pl @@ -8,7 +8,7 @@ # ******************************************************************** # # regexcst.pl -# Compile the regular expression paser state table data into initialized C data. +# Compile the regular expression parser state table data into initialized C data. # Usage: # cd icu4c/source/i18n # perl regexcst.pl < regexcst.txt > regexcst.h @@ -222,7 +222,7 @@ print "U_NAMESPACE_BEGIN\n"; # -# Emit the constants for indicies of Unicode Sets +# Emit the constants for indices of Unicode Sets # Define one constant for each of the character classes encountered. # At the same time, store the index corresponding to the set name back into hash. # @@ -261,7 +261,7 @@ print " rbbiLastAction};\n\n"; # -# Emit the struct definition for transtion table elements. +# Emit the struct definition for transition table elements. # print "//-------------------------------------------------------------------------------\n"; print "//\n"; @@ -330,3 +330,6 @@ print "U_NAMESPACE_END\n"; print "#endif\n"; + + + diff --git a/deps/icu-small/source/i18n/regeximp.cpp b/deps/icu-small/source/i18n/regeximp.cpp index 454e7f836b3111..d55566962587e4 100644 --- a/deps/icu-small/source/i18n/regeximp.cpp +++ b/deps/icu-small/source/i18n/regeximp.cpp @@ -55,7 +55,7 @@ UChar32 CaseFoldingUTextIterator::next() { } return foldedC; } - + UBool CaseFoldingUTextIterator::inExpansion() { return fFoldChars != NULL; @@ -103,7 +103,7 @@ UChar32 CaseFoldingUCharIterator::next() { } return foldedC; } - + UBool CaseFoldingUCharIterator::inExpansion() { return fFoldChars != NULL; @@ -117,3 +117,4 @@ int64_t CaseFoldingUCharIterator::getIndex() { U_NAMESPACE_END #endif + diff --git a/deps/icu-small/source/i18n/regeximp.h b/deps/icu-small/source/i18n/regeximp.h index 9155cd3a31bbe1..bb0e1e838de651 100644 --- a/deps/icu-small/source/i18n/regeximp.h +++ b/deps/icu-small/source/i18n/regeximp.h @@ -26,7 +26,7 @@ U_NAMESPACE_BEGIN // For debugging, define REGEX_DEBUG // To define with configure, -// CPPFLAGS="-DREGEX_DEBUG" ./runConfigureICU --enable-debug --disable-release Linux +// CPPFLAGS="-DREGEX_DEBUG" ./runConfigureICU --enable-debug --disable-release Linux #ifdef REGEX_DEBUG // @@ -37,7 +37,7 @@ U_NAMESPACE_BEGIN #define REGEX_DUMP_DEBUG #define REGEX_RUN_DEBUG -// End of #defines inteded to be directly set. +// End of #defines intended to be directly set. #include #endif @@ -140,7 +140,7 @@ enum { URX_DOLLAR_M = 42, // $ in multi-line mode. URX_CARET_M = 43, // ^ in multi-line mode. URX_LB_START = 44, // LookBehind Start. - // Paramater is data location + // Parameter is data location URX_LB_CONT = 45, // LookBehind Continue. // Param 0: the data location // Param 1: The minimum length of the look-behind match @@ -243,7 +243,7 @@ enum { "DOLLAR_MD", \ "URX_BACKSLASH_H", \ "URX_BACKSLASH_R", \ - "URX_BACKSLASH_V" + "URX_BACKSLASH_V" // @@ -371,7 +371,7 @@ class CaseFoldingUTextIterator: public UMemory { UBool inExpansion(); // True if last char returned from next() and the // next to be returned both originated from a string - // folding of the same code point from the orignal UText. + // folding of the same code point from the original UText. private: UText &fUText; const UChar *fFoldChars; @@ -395,7 +395,7 @@ class CaseFoldingUCharIterator: public UMemory { UBool inExpansion(); // True if last char returned from next() and the // next to be returned both originated from a string - // folding of the same code point from the orignal UText. + // folding of the same code point from the original UText. int64_t getIndex(); // Return the current input buffer index. @@ -411,3 +411,4 @@ class CaseFoldingUCharIterator: public UMemory { U_NAMESPACE_END #endif + diff --git a/deps/icu-small/source/i18n/regexst.cpp b/deps/icu-small/source/i18n/regexst.cpp index 7e3992fc80339d..97e417ab5a8f34 100644 --- a/deps/icu-small/source/i18n/regexst.cpp +++ b/deps/icu-small/source/i18n/regexst.cpp @@ -84,7 +84,7 @@ RegexStaticSets::RegexStaticSets(UErrorCode *status) { fPropSets[URX_GC_T].applyPattern(UnicodeString(TRUE, gGC_TPattern, -1), *status).freeze(); fPropSets[URX_GC_LV].applyPattern(UnicodeString(TRUE, gGC_LVPattern, -1), *status).freeze(); fPropSets[URX_GC_LVT].applyPattern(UnicodeString(TRUE, gGC_LVTPattern, -1), *status).freeze(); - + // // "Normal" is the set of characters that don't need special handling @@ -121,10 +121,10 @@ RegexStaticSets::RegexStaticSets(UErrorCode *status) { fRuleSets[kRuleSet_digit_char-128].add(u'0', u'9').freeze(); fRuleSets[kRuleSet_ascii_letter-128].add(u'A', u'Z').add(u'a', u'z').freeze(); fRuleDigitsAlias = &fRuleSets[kRuleSet_digit_char-128]; - + // Finally, initialize an empty UText string for utility purposes fEmptyText = utext_openUChars(nullptr, nullptr, 0, status); - + } diff --git a/deps/icu-small/source/i18n/regexst.h b/deps/icu-small/source/i18n/regexst.h index 3de470e5db1b44..bcb393dd3f3c22 100644 --- a/deps/icu-small/source/i18n/regexst.h +++ b/deps/icu-small/source/i18n/regexst.h @@ -37,7 +37,7 @@ class RegexStaticSets : public UMemory { static RegexStaticSets *gStaticSets; // Ptr to all lazily initialized constant // shared sets. - RegexStaticSets(UErrorCode *status); + RegexStaticSets(UErrorCode *status); ~RegexStaticSets(); static void initGlobals(UErrorCode *status); @@ -57,3 +57,4 @@ class RegexStaticSets : public UMemory { U_NAMESPACE_END #endif // !UCONFIG_NO_REGULAR_EXPRESSIONS #endif // REGEXST_H + diff --git a/deps/icu-small/source/i18n/region.cpp b/deps/icu-small/source/i18n/region.cpp index 8364bd1c1b2280..2e013708bb88e3 100644 --- a/deps/icu-small/source/i18n/region.cpp +++ b/deps/icu-small/source/i18n/region.cpp @@ -128,12 +128,12 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { buf[rangeMarkerLocation] = 0; while ( buf[rangeMarkerLocation-1] <= endRange ) { LocalPointer newRegion(new UnicodeString(buf), status); - allRegions->addElement(newRegion.orphan(),status); + allRegions->addElementX(newRegion.orphan(),status); buf[rangeMarkerLocation-1]++; } } else { LocalPointer newRegion(new UnicodeString(regionName), status); - allRegions->addElement(newRegion.orphan(),status); + allRegions->addElementX(newRegion.orphan(),status); } } @@ -147,38 +147,25 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { buf[rangeMarkerLocation] = 0; while ( buf[rangeMarkerLocation-1] <= endRange ) { LocalPointer newRegion(new UnicodeString(buf), status); - allRegions->addElement(newRegion.orphan(),status); + allRegions->addElementX(newRegion.orphan(),status); buf[rangeMarkerLocation-1]++; } } else { LocalPointer newRegion(new UnicodeString(regionName), status); - allRegions->addElement(newRegion.orphan(),status); + allRegions->addElementX(newRegion.orphan(),status); } } while ( ures_hasNext(regionUnknown.getAlias()) ) { LocalPointer regionName (new UnicodeString(ures_getNextUnicodeString(regionUnknown.getAlias(),NULL,&status),status)); - allRegions->addElement(regionName.orphan(),status); + allRegions->addElementX(regionName.orphan(),status); } while ( ures_hasNext(worldContainment.getAlias()) ) { UnicodeString *continentName = new UnicodeString(ures_getNextUnicodeString(worldContainment.getAlias(),NULL,&status)); - continents->addElement(continentName,status); + continents->addElementX(continentName,status); } - UResourceBundle *groupingBundle = nullptr; - while ( ures_hasNext(groupingContainment.getAlias()) ) { - groupingBundle = ures_getNextResource(groupingContainment.getAlias(), groupingBundle, &status); - if (U_FAILURE(status)) { - break; - } - UnicodeString *groupingName = new UnicodeString(ures_getKey(groupingBundle), -1, US_INV); - if (groupingName) { - groupings->addElement(groupingName,status); - } - } - ures_close(groupingBundle); - for ( int32_t i = 0 ; i < allRegions->size() ; i++ ) { LocalPointer r(new Region(), status); if ( U_FAILURE(status) ) { @@ -203,6 +190,29 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { uhash_put(newRegionIDMap.getAlias(),idStrAlias,(void *)(r.orphan()),&status); // regionIDMap takes ownership } + UResourceBundle *groupingBundle = nullptr; + while ( ures_hasNext(groupingContainment.getAlias()) ) { + groupingBundle = ures_getNextResource(groupingContainment.getAlias(), groupingBundle, &status); + if (U_FAILURE(status)) { + break; + } + UnicodeString *groupingName = new UnicodeString(ures_getKey(groupingBundle), -1, US_INV); + groupings->addElementX(groupingName,status); + Region *grouping = (Region *) uhash_get(newRegionIDMap.getAlias(),groupingName); + if (grouping != NULL) { + for (int32_t i = 0; i < ures_getSize(groupingBundle); i++) { + UnicodeString child = ures_getUnicodeStringByIndex(groupingBundle, i, &status); + if (U_SUCCESS(status)) { + if (grouping->containedRegions == NULL) { + grouping->containedRegions = new UVector(uprv_deleteUObject, uhash_compareUnicodeString, status); + } + grouping->containedRegions->addElementX(new UnicodeString(child), status); + } + } + } + } + ures_close(groupingBundle); + // Process the territory aliases while ( ures_hasNext(territoryAlias.getAlias()) ) { LocalUResourceBundlePointer res(ures_getNextResource(territoryAlias.getAlias(),NULL,&status)); @@ -218,7 +228,7 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { uhash_put(newRegionAliases.getAlias(),(void *)aliasFromStr.orphan(), (void *)aliasToRegion,&status); } else { if ( aliasFromRegion == NULL ) { // Deprecated region code not in the primary codes list - so need to create a deprecated region for it. - LocalPointer newRgn(new Region, status); + LocalPointer newRgn(new Region, status); if ( U_SUCCESS(status) ) { aliasFromRegion = newRgn.orphan(); } else { @@ -257,7 +267,7 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { Region *target = (Region *)uhash_get(newRegionIDMap.getAlias(),(void *)¤tRegion); if (target) { LocalPointer preferredValue(new UnicodeString(target->idStr), status); - aliasFromRegion->preferredValues->addElement((void *)preferredValue.orphan(),status); // may add null if err + aliasFromRegion->preferredValues->addElementX((void *)preferredValue.orphan(),status); // may add null if err } currentRegion.remove(); } @@ -354,7 +364,7 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { return; // error out } childStr->fastCopyFrom(childRegion->idStr); - parentRegion->containedRegions->addElement((void *)childStr.orphan(),status); + parentRegion->containedRegions->addElementX((void *)childStr.orphan(),status); // Set the parent region to be the containing region of the child. // Regions of type GROUPING can't be set as the parent, since another region @@ -378,9 +388,9 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { if( U_FAILURE(status) ) { return; // error out } - availableRegions[ar->fType]->addElement((void *)arString.orphan(),status); + availableRegions[ar->fType]->addElementX((void *)arString.orphan(),status); } - + ucln_i18n_registerCleanup(UCLN_I18N_REGION, region_cleanup); // copy hashtables numericCodeMap = newNumericCodeMap.orphan(); @@ -439,7 +449,7 @@ Region::~Region () { * Returns true if the two regions are equal. * Per PMC, just use pointer compare, since we have at most one instance of each Region. */ -UBool +bool Region::operator==(const Region &that) const { return (idStr == that.idStr); } @@ -448,7 +458,7 @@ Region::operator==(const Region &that) const { * Returns true if the two regions are NOT equal; that is, if operator ==() returns false. * Per PMC, just use pointer compare, since we have at most one instance of each Region. */ -UBool +bool Region::operator!=(const Region &that) const { return (idStr != that.idStr); } @@ -617,13 +627,13 @@ Region::getContainedRegions( URegionType type, UErrorCode &status ) const { const char *regionId = cr->next(NULL,status); const Region *r = Region::getInstance(regionId,status); if ( r->getType() == type) { - result->addElement((void *)&r->idStr,status); + result->addElementX((void *)&r->idStr,status); } else { StringEnumeration *children = r->getContainedRegions(type, status); for ( int32_t j = 0 ; j < children->count(status) ; j++ ) { const char *id2 = children->next(NULL,status); const Region *r2 = Region::getInstance(id2,status); - result->addElement((void *)&r2->idStr,status); + result->addElementX((void *)&r2->idStr,status); } delete children; } @@ -703,7 +713,7 @@ RegionNameEnumeration::RegionNameEnumeration(UVector *fNameList, UErrorCode& sta for ( int32_t i = 0 ; i < fNameList->size() ; i++ ) { UnicodeString* this_region_name = (UnicodeString *)fNameList->elementAt(i); UnicodeString* new_region_name = new UnicodeString(*this_region_name); - fRegionNames->addElement((void *)new_region_name,status); + fRegionNames->addElementX((void *)new_region_name,status); } } else { diff --git a/deps/icu-small/source/i18n/region_impl.h b/deps/icu-small/source/i18n/region_impl.h index c0702af7dfb3d1..62acaa4511b49f 100644 --- a/deps/icu-small/source/i18n/region_impl.h +++ b/deps/icu-small/source/i18n/region_impl.h @@ -17,7 +17,7 @@ #include "unicode/utypes.h" #if !UCONFIG_NO_FORMATTING - + #include "uvector.h" #include "unicode/strenum.h" @@ -29,10 +29,10 @@ class RegionNameEnumeration : public StringEnumeration { RegionNameEnumeration(UVector *fNameList, UErrorCode& status); virtual ~RegionNameEnumeration(); static UClassID U_EXPORT2 getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; - virtual const UnicodeString* snext(UErrorCode& status); - virtual void reset(UErrorCode& status); - virtual int32_t count(UErrorCode& status) const; + virtual UClassID getDynamicClassID(void) const override; + virtual const UnicodeString* snext(UErrorCode& status) override; + virtual void reset(UErrorCode& status) override; + virtual int32_t count(UErrorCode& status) const override; private: int32_t pos; UVector *fRegionNames; diff --git a/deps/icu-small/source/i18n/reldatefmt.cpp b/deps/icu-small/source/i18n/reldatefmt.cpp index d41ff22b9c212a..6ef516079862e8 100644 --- a/deps/icu-small/source/i18n/reldatefmt.cpp +++ b/deps/icu-small/source/i18n/reldatefmt.cpp @@ -588,7 +588,7 @@ struct RelDateTimeFmtDataSink : public ResourceSink { } virtual void put(const char *key, ResourceValue &value, - UBool /*noFallback*/, UErrorCode &errorCode) { + UBool /*noFallback*/, UErrorCode &errorCode) override { // Main entry point to sink ResourceTable table = value.getTable(errorCode); if (U_FAILURE(errorCode)) { return; } @@ -1126,7 +1126,7 @@ void RelativeDateTimeFormatter::formatRelativeImpl( // leaves some holes (even for data that is currently available, such as quarter). // When the new CLDR data is available, update the data storage accordingly, // rewrite this to use it directly, and rewrite the old format method to call this - // new one; that is covered by http://bugs.icu-project.org/trac/ticket/12171. + // new one; that is covered by https://unicode-org.atlassian.net/browse/ICU-12171. UDateDirection direction = UDAT_DIRECTION_COUNT; if (offset > -2.1 && offset < 2.1) { // Allow a 1% epsilon, so offsets in -1.01..-0.99 map to LAST @@ -1139,7 +1139,7 @@ void RelativeDateTimeFormatter::formatRelativeImpl( case 100/* 1*/: direction = UDAT_DIRECTION_NEXT; break; case 200/* 2*/: direction = UDAT_DIRECTION_NEXT_2; break; default: break; - } + } } UDateAbsoluteUnit absunit = UDAT_ABSOLUTE_UNIT_COUNT; switch (unit) { diff --git a/deps/icu-small/source/i18n/reldtfmt.cpp b/deps/icu-small/source/i18n/reldtfmt.cpp index 2bc59c5128b43a..5fdef1c0d676d4 100644 --- a/deps/icu-small/source/i18n/reldtfmt.cpp +++ b/deps/icu-small/source/i18n/reldtfmt.cpp @@ -135,7 +135,7 @@ RelativeDateFormat* RelativeDateFormat::clone() const { return new RelativeDateFormat(*this); } -UBool RelativeDateFormat::operator==(const Format& other) const { +bool RelativeDateFormat::operator==(const Format& other) const { if(DateFormat::operator==(other)) { // The DateFormat::operator== check for fCapitalizationContext equality above // is sufficient to check equality of all derived context-related data. @@ -146,7 +146,7 @@ UBool RelativeDateFormat::operator==(const Format& other) const { fTimePattern==that->fTimePattern && fLocale==that->fLocale ); } - return FALSE; + return false; } static const UChar APOSTROPHE = (UChar)0x0027; @@ -154,11 +154,11 @@ static const UChar APOSTROPHE = (UChar)0x0027; UnicodeString& RelativeDateFormat::format( Calendar& cal, UnicodeString& appendTo, FieldPosition& pos) const { - + UErrorCode status = U_ZERO_ERROR; UnicodeString relativeDayString; UDisplayContext capitalizationContext = getContext(UDISPCTX_TYPE_CAPITALIZATION, status); - + // calculate the difference, in days, between 'cal' and now. int dayDiff = dayDifference(cal, status); @@ -170,7 +170,7 @@ UnicodeString& RelativeDateFormat::format( Calendar& cal, relativeDayString.setTo(theString, len); } - if ( relativeDayString.length() > 0 && !fDatePattern.isEmpty() && + if ( relativeDayString.length() > 0 && !fDatePattern.isEmpty() && (fTimePattern.isEmpty() || fCombinedFormat == NULL || fCombinedHasDateAtStart)) { #if !UCONFIG_NO_BREAK_ITERATION // capitalize relativeDayString according to context for relative, set formatter no context @@ -221,8 +221,8 @@ UnicodeString& RelativeDateFormat::format( Calendar& cal, UnicodeString& -RelativeDateFormat::format(const Formattable& obj, - UnicodeString& appendTo, +RelativeDateFormat::format(const Formattable& obj, + UnicodeString& appendTo, FieldPosition& pos, UErrorCode& status) const { @@ -258,7 +258,7 @@ void RelativeDateFormat::parse( const UnicodeString& text, cal.setTime(Calendar::getNow(),status); cal.add(UCAL_DATE,fDates[n].offset, status); - if(U_FAILURE(status)) { + if(U_FAILURE(status)) { // failure in setting calendar field, set offset to beginning of rel day string pos.setErrorIndex(startIndex); } else { @@ -289,7 +289,7 @@ void RelativeDateFormat::parse( const UnicodeString& text, // Set the calendar to now+offset tempCal->setTime(Calendar::getNow(),status); tempCal->add(UCAL_DATE,fDates[n].offset, status); - if(U_FAILURE(status)) { + if(U_FAILURE(status)) { pos.setErrorIndex(startIndex); delete tempCal; return; @@ -485,7 +485,7 @@ struct RelDateFmtDataSink : public ResourceSink { virtual ~RelDateFmtDataSink(); virtual void put(const char *key, ResourceValue &value, - UBool /*noFallback*/, UErrorCode &errorCode) { + UBool /*noFallback*/, UErrorCode &errorCode) override { ResourceTable relDayTable = value.getTable(errorCode); int32_t n = 0; int32_t len = 0; @@ -582,7 +582,7 @@ int32_t RelativeDateFormat::dayDifference(Calendar &cal, UErrorCode &status) { nowCal->setTime(Calendar::getNow(), status); // For the day difference, we are interested in the difference in the (modified) julian day number - // which is midnight to midnight. Using fieldDifference() is NOT correct here, because + // which is midnight to midnight. Using fieldDifference() is NOT correct here, because // 6pm Jan 4th to 10am Jan 5th should be considered "tomorrow". int32_t dayDiff = cal.get(UCAL_JULIAN_DAY, status) - nowCal->get(UCAL_JULIAN_DAY, status); diff --git a/deps/icu-small/source/i18n/reldtfmt.h b/deps/icu-small/source/i18n/reldtfmt.h index b36171ce1c6b55..98b333a02be205 100644 --- a/deps/icu-small/source/i18n/reldtfmt.h +++ b/deps/icu-small/source/i18n/reldtfmt.h @@ -71,7 +71,7 @@ class RelativeDateFormat : public DateFormat { * @return A copy of the object. * @internal ICU 3.8 */ - virtual RelativeDateFormat* clone() const; + virtual RelativeDateFormat* clone() const override; /** * Return true if the given Format objects are semantically equal. Objects @@ -80,7 +80,7 @@ class RelativeDateFormat : public DateFormat { * @return true if the given Format objects are semantically equal. * @internal ICU 3.8 */ - virtual UBool operator==(const Format& other) const; + virtual bool operator==(const Format& other) const override; using DateFormat::format; @@ -103,7 +103,7 @@ class RelativeDateFormat : public DateFormat { */ virtual UnicodeString& format( Calendar& cal, UnicodeString& appendTo, - FieldPosition& pos) const; + FieldPosition& pos) const override; /** * Format an object to produce a string. This method handles Formattable @@ -122,7 +122,7 @@ class RelativeDateFormat : public DateFormat { virtual UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, FieldPosition& pos, - UErrorCode& status) const; + UErrorCode& status) const override; /** @@ -146,7 +146,7 @@ class RelativeDateFormat : public DateFormat { */ virtual void parse( const UnicodeString& text, Calendar& cal, - ParsePosition& pos) const; + ParsePosition& pos) const override; /** * Parse a date/time string starting at the given parse position. For @@ -187,7 +187,7 @@ class RelativeDateFormat : public DateFormat { * @internal ICU 3.8 */ virtual UDate parse( const UnicodeString& text, - UErrorCode& status) const; + UErrorCode& status) const override; /** * Return a single pattern string generated by combining the patterns for the @@ -242,10 +242,10 @@ class RelativeDateFormat : public DateFormat { * @param value The UDisplayContext value to set. * @param status Input/output status. If at entry this indicates a failure * status, the function will do nothing; otherwise this will be - * updated with any new status from the function. + * updated with any new status from the function. * @internal ICU 53 */ - virtual void setContext(UDisplayContext value, UErrorCode& status); + virtual void setContext(UDisplayContext value, UErrorCode& status) override; private: SimpleDateFormat *fDateTimeFormatter; @@ -327,7 +327,7 @@ class RelativeDateFormat : public DateFormat { * other classes have different class IDs. * @internal ICU 3.8 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; diff --git a/deps/icu-small/source/i18n/rematch.cpp b/deps/icu-small/source/i18n/rematch.cpp index e358dbd1e983f8..7d6eaeed8bb22e 100644 --- a/deps/icu-small/source/i18n/rematch.cpp +++ b/deps/icu-small/source/i18n/rematch.cpp @@ -719,7 +719,7 @@ UBool RegexMatcher::find(UErrorCode &status) { if (findProgressInterrupt(startPos, status)) return FALSE; } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; case START_START: // Matches are only possible at the start of the input string @@ -767,7 +767,7 @@ UBool RegexMatcher::find(UErrorCode &status) { return FALSE; } } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; case START_STRING: case START_CHAR: @@ -799,7 +799,7 @@ UBool RegexMatcher::find(UErrorCode &status) { return FALSE; } } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; case START_LINE: { @@ -879,10 +879,15 @@ UBool RegexMatcher::find(UErrorCode &status) { } default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_ASSERT; + // Unknown value in fPattern->fStartType, should be from StartOfMatch enum. But + // we have reports of this in production code, don't use UPRV_UNREACHABLE_EXIT. + // See ICU-21669. + status = U_INTERNAL_PROGRAM_ERROR; + return FALSE; } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } @@ -993,7 +998,7 @@ UBool RegexMatcher::findUsingChunk(UErrorCode &status) { if (findProgressInterrupt(startPos, status)) return FALSE; } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; case START_START: // Matches are only possible at the start of the input string @@ -1035,7 +1040,7 @@ UBool RegexMatcher::findUsingChunk(UErrorCode &status) { return FALSE; } } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; case START_STRING: case START_CHAR: @@ -1064,7 +1069,7 @@ UBool RegexMatcher::findUsingChunk(UErrorCode &status) { return FALSE; } } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; case START_LINE: { @@ -1135,10 +1140,15 @@ UBool RegexMatcher::findUsingChunk(UErrorCode &status) { } default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_ASSERT; + // Unknown value in fPattern->fStartType, should be from StartOfMatch enum. But + // we have reports of this in production code, don't use UPRV_UNREACHABLE_EXIT. + // See ICU-21669. + status = U_INTERNAL_PROGRAM_ERROR; + return FALSE; } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } @@ -2005,7 +2015,7 @@ static UText *utext_extract_replace(UText *src, UText *dest, int64_t start, int6 return dest; } - // Caller did not provide a prexisting UText. + // Caller did not provide a preexisting UText. // Open a new one, and have it adopt the text buffer storage. if (U_FAILURE(*status)) { return NULL; @@ -3717,7 +3727,7 @@ void RegexMatcher::MatchAt(int64_t startIdx, UBool toEnd, UErrorCode &status) { } if (success && inputItr.inExpansion()) { - // We otained a match by consuming part of a string obtained from + // We obtained a match by consuming part of a string obtained from // case-folding a single code point of the input text. // This does not count as an overall match. success = FALSE; @@ -3962,7 +3972,7 @@ void RegexMatcher::MatchAt(int64_t startIdx, UBool toEnd, UErrorCode &status) { break; } - // Look-behind match is good. Restore the orignal input string region, + // Look-behind match is good. Restore the original input string region, // which had been truncated to pin the end of the lookbehind match to the // position being looked-behind. fActiveStart = fData[opValue+2]; @@ -4051,7 +4061,7 @@ void RegexMatcher::MatchAt(int64_t startIdx, UBool toEnd, UErrorCode &status) { // Look-behind expression matched, which means look-behind test as // a whole Fails - // Restore the orignal input string length, which had been truncated + // Restore the original input string length, which had been truncated // inorder to pin the end of the lookbehind match // to the position being looked-behind. fActiveStart = fData[opValue+2]; @@ -4234,7 +4244,11 @@ void RegexMatcher::MatchAt(int64_t startIdx, UBool toEnd, UErrorCode &status) { default: // Trouble. The compiled pattern contains an entry with an // unrecognized type tag. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_ASSERT; + // Unknown opcode type in opType = URX_TYPE(pat[fp->fPatIdx]). But we have + // reports of this in production code, don't use UPRV_UNREACHABLE_EXIT. + // See ICU-21669. + status = U_INTERNAL_PROGRAM_ERROR; } if (U_FAILURE(status)) { @@ -5187,7 +5201,7 @@ void RegexMatcher::MatchChunkAt(int32_t startIdx, UBool toEnd, UErrorCode &statu } if (success && inputItr.inExpansion()) { - // We otained a match by consuming part of a string obtained from + // We obtained a match by consuming part of a string obtained from // case-folding a single code point of the input text. // This does not count as an overall match. success = FALSE; @@ -5409,7 +5423,7 @@ void RegexMatcher::MatchChunkAt(int32_t startIdx, UBool toEnd, UErrorCode &statu break; } - // Look-behind match is good. Restore the orignal input string region, + // Look-behind match is good. Restore the original input string region, // which had been truncated to pin the end of the lookbehind match to the // position being looked-behind. fActiveStart = fData[opValue+2]; @@ -5489,7 +5503,7 @@ void RegexMatcher::MatchChunkAt(int32_t startIdx, UBool toEnd, UErrorCode &statu // Look-behind expression matched, which means look-behind test as // a whole Fails - // Restore the orignal input string length, which had been truncated + // Restore the original input string length, which had been truncated // inorder to pin the end of the lookbehind match // to the position being looked-behind. fActiveStart = fData[opValue+2]; @@ -5672,7 +5686,11 @@ void RegexMatcher::MatchChunkAt(int32_t startIdx, UBool toEnd, UErrorCode &statu default: // Trouble. The compiled pattern contains an entry with an // unrecognized type tag. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_ASSERT; + // Unknown opcode type in opType = URX_TYPE(pat[fp->fPatIdx]). But we have + // reports of this in production code, don't use UPRV_UNREACHABLE_EXIT. + // See ICU-21669. + status = U_INTERNAL_PROGRAM_ERROR; } if (U_FAILURE(status)) { @@ -5712,3 +5730,4 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(RegexMatcher) U_NAMESPACE_END #endif // !UCONFIG_NO_REGULAR_EXPRESSIONS + diff --git a/deps/icu-small/source/i18n/remtrans.h b/deps/icu-small/source/i18n/remtrans.h index 13de01594a3fd9..398cc5177cd57c 100644 --- a/deps/icu-small/source/i18n/remtrans.h +++ b/deps/icu-small/source/i18n/remtrans.h @@ -47,7 +47,7 @@ class RemoveTransliterator : public Transliterator { * Transliterator API. * @return A copy of the object. */ - virtual RemoveTransliterator* clone() const; + virtual RemoveTransliterator* clone() const override; /** * Implements {@link Transliterator#handleTransliterate}. @@ -59,12 +59,12 @@ class RemoveTransliterator : public Transliterator { * pos.contextLimit. Otherwise, assume the text is complete. */ virtual void handleTransliterate(Replaceable& text, UTransPosition& offset, - UBool isIncremental) const; + UBool isIncremental) const override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. diff --git a/deps/icu-small/source/i18n/repattrn.cpp b/deps/icu-small/source/i18n/repattrn.cpp index 34886624891f49..8c94948d29a43c 100644 --- a/deps/icu-small/source/i18n/repattrn.cpp +++ b/deps/icu-small/source/i18n/repattrn.cpp @@ -118,8 +118,8 @@ RegexPattern &RegexPattern::operator = (const RegexPattern &other) { int32_t numSets = other.fSets->size(); fSets8 = new Regex8BitSet[numSets]; if (fSets8 == NULL) { - fDeferredStatus = U_MEMORY_ALLOCATION_ERROR; - return *this; + fDeferredStatus = U_MEMORY_ALLOCATION_ERROR; + return *this; } for (i=1; ifFlags == other.fFlags && this->fDeferredStatus == other.fDeferredStatus) { if (this->fPatternString != NULL && other.fPatternString != NULL) { return *(this->fPatternString) == *(other.fPatternString); } else if (this->fPattern == NULL) { if (other.fPattern == NULL) { - return TRUE; + return true; } } else if (other.fPattern != NULL) { UTEXT_SETNATIVEINDEX(this->fPattern, 0); @@ -305,7 +305,7 @@ UBool RegexPattern::operator ==(const RegexPattern &other) const { return utext_equals(this->fPattern, other.fPattern); } } - return FALSE; + return false; } //--------------------------------------------------------------------- @@ -663,7 +663,7 @@ int32_t RegexPattern::split(const UnicodeString &input, int32_t r = 0; // Check m's status to make sure all is ok. if (U_SUCCESS(m.fDeferredStatus)) { - r = m.split(input, dest, destCapacity, status); + r = m.split(input, dest, destCapacity, status); } return r; } @@ -684,7 +684,7 @@ int32_t RegexPattern::split(UText *input, int32_t r = 0; // Check m's status to make sure all is ok. if (U_SUCCESS(m.fDeferredStatus)) { - r = m.split(input, dest, destCapacity, status); + r = m.split(input, dest, destCapacity, status); } return r; } diff --git a/deps/icu-small/source/i18n/rulebasedcollator.cpp b/deps/icu-small/source/i18n/rulebasedcollator.cpp index 917482d65bb4d6..5e5cc3db626433 100644 --- a/deps/icu-small/source/i18n/rulebasedcollator.cpp +++ b/deps/icu-small/source/i18n/rulebasedcollator.cpp @@ -66,8 +66,8 @@ class FixedSortKeyByteSink : public SortKeyByteSink { virtual ~FixedSortKeyByteSink(); private: - virtual void AppendBeyondCapacity(const char *bytes, int32_t n, int32_t length); - virtual UBool Resize(int32_t appendCapacity, int32_t length); + virtual void AppendBeyondCapacity(const char *bytes, int32_t n, int32_t length) override; + virtual UBool Resize(int32_t appendCapacity, int32_t length) override; }; FixedSortKeyByteSink::~FixedSortKeyByteSink() {} @@ -98,8 +98,8 @@ class CollationKeyByteSink : public SortKeyByteSink { virtual ~CollationKeyByteSink(); private: - virtual void AppendBeyondCapacity(const char *bytes, int32_t n, int32_t length); - virtual UBool Resize(int32_t appendCapacity, int32_t length); + virtual void AppendBeyondCapacity(const char *bytes, int32_t n, int32_t length) override; + virtual UBool Resize(int32_t appendCapacity, int32_t length) override; CollationKey &key_; }; @@ -239,21 +239,21 @@ RuleBasedCollator &RuleBasedCollator::operator=(const RuleBasedCollator &other) UOBJECT_DEFINE_RTTI_IMPLEMENTATION(RuleBasedCollator) -UBool +bool RuleBasedCollator::operator==(const Collator& other) const { - if(this == &other) { return TRUE; } - if(!Collator::operator==(other)) { return FALSE; } + if(this == &other) { return true; } + if(!Collator::operator==(other)) { return false; } const RuleBasedCollator &o = static_cast(other); - if(*settings != *o.settings) { return FALSE; } - if(data == o.data) { return TRUE; } + if(*settings != *o.settings) { return false; } + if(data == o.data) { return true; } UBool thisIsRoot = data->base == NULL; UBool otherIsRoot = o.data->base == NULL; U_ASSERT(!thisIsRoot || !otherIsRoot); // otherwise their data pointers should be == - if(thisIsRoot != otherIsRoot) { return FALSE; } + if(thisIsRoot != otherIsRoot) { return false; } if((thisIsRoot || !tailoring->rules.isEmpty()) && (otherIsRoot || !o.tailoring->rules.isEmpty())) { // Shortcut: If both collators have valid rule strings, then compare those. - if(tailoring->rules == o.tailoring->rules) { return TRUE; } + if(tailoring->rules == o.tailoring->rules) { return true; } } // Different rule strings can result in the same or equivalent tailoring. // The rule strings are optional in ICU resource bundles, although included by default. @@ -261,14 +261,14 @@ RuleBasedCollator::operator==(const Collator& other) const { UErrorCode errorCode = U_ZERO_ERROR; LocalPointer thisTailored(getTailoredSet(errorCode)); LocalPointer otherTailored(o.getTailoredSet(errorCode)); - if(U_FAILURE(errorCode)) { return FALSE; } - if(*thisTailored != *otherTailored) { return FALSE; } + if(U_FAILURE(errorCode)) { return false; } + if(*thisTailored != *otherTailored) { return false; } // For completeness, we should compare all of the mappings; // or we should create a list of strings, sort it with one collator, // and check if both collators compare adjacent strings the same // (order & strength, down to quaternary); or similar. // Testing equality of collators seems unusual. - return TRUE; + return true; } int32_t @@ -830,7 +830,7 @@ class UTF16NFDIterator : public NFDIterator { public: UTF16NFDIterator(const UChar *text, const UChar *textLimit) : s(text), limit(textLimit) {} protected: - virtual UChar32 nextRawCodePoint() { + virtual UChar32 nextRawCodePoint() override { if(s == limit) { return U_SENTINEL; } UChar32 c = *s++; if(limit == NULL && c == 0) { @@ -882,7 +882,7 @@ class UTF8NFDIterator : public NFDIterator { UTF8NFDIterator(const uint8_t *text, int32_t textLength) : s(text), pos(0), length(textLength) {} protected: - virtual UChar32 nextRawCodePoint() { + virtual UChar32 nextRawCodePoint() override { if(pos == length || (s[pos] == 0 && length < 0)) { return U_SENTINEL; } UChar32 c; U8_NEXT_OR_FFFD(s, pos, length, c); @@ -899,7 +899,7 @@ class FCDUTF8NFDIterator : public NFDIterator { FCDUTF8NFDIterator(const CollationData *data, const uint8_t *text, int32_t textLength) : u8ci(data, FALSE, text, 0, textLength) {} protected: - virtual UChar32 nextRawCodePoint() { + virtual UChar32 nextRawCodePoint() override { UErrorCode errorCode = U_ZERO_ERROR; return u8ci.nextCodePoint(errorCode); } @@ -911,7 +911,7 @@ class UIterNFDIterator : public NFDIterator { public: UIterNFDIterator(UCharIterator &it) : iter(it) {} protected: - virtual UChar32 nextRawCodePoint() { + virtual UChar32 nextRawCodePoint() override { return uiter_next32(&iter); } private: @@ -923,7 +923,7 @@ class FCDUIterNFDIterator : public NFDIterator { FCDUIterNFDIterator(const CollationData *data, UCharIterator &it, int32_t startIndex) : uici(data, FALSE, it, startIndex) {} protected: - virtual UChar32 nextRawCodePoint() { + virtual UChar32 nextRawCodePoint() override { UErrorCode errorCode = U_ZERO_ERROR; return uici.nextCodePoint(errorCode); } @@ -1398,7 +1398,7 @@ class PartLevelCallback : public CollationKeys::LevelCallback { levelCapacity = sink.GetRemainingCapacity(); } virtual ~PartLevelCallback() {} - virtual UBool needToWrite(Collation::Level l) { + virtual UBool needToWrite(Collation::Level l) override { if(!sink.Overflowed()) { // Remember a level that will be at least partially written. level = l; diff --git a/deps/icu-small/source/i18n/scriptset.cpp b/deps/icu-small/source/i18n/scriptset.cpp index 18a3b263b71027..6a1db8c01c3562 100644 --- a/deps/icu-small/source/i18n/scriptset.cpp +++ b/deps/icu-small/source/i18n/scriptset.cpp @@ -44,13 +44,13 @@ ScriptSet & ScriptSet::operator =(const ScriptSet &other) { return *this; } -UBool ScriptSet::operator == (const ScriptSet &other) const { +bool ScriptSet::operator == (const ScriptSet &other) const { for (uint32_t i=0; ibreakIter = other.m_search_->breakIter; m_search_->isCanonicalMatch = other.m_search_->isCanonicalMatch; m_search_->isOverlap = other.m_search_->isOverlap; @@ -83,7 +83,7 @@ USearchAttributeValue SearchIterator::getAttribute( case USEARCH_OVERLAP : return (m_search_->isOverlap == TRUE ? USEARCH_ON : USEARCH_OFF); case USEARCH_CANONICAL_MATCH : - return (m_search_->isCanonicalMatch == TRUE ? USEARCH_ON : + return (m_search_->isCanonicalMatch == TRUE ? USEARCH_ON : USEARCH_OFF); case USEARCH_ELEMENT_COMPARISON : { @@ -98,7 +98,7 @@ USearchAttributeValue SearchIterator::getAttribute( return USEARCH_DEFAULT; } } - + int32_t SearchIterator::getMatchedStart() const { return m_search_->matchedIndex; @@ -108,20 +108,20 @@ int32_t SearchIterator::getMatchedLength() const { return m_search_->matchedLength; } - + void SearchIterator::getMatchedText(UnicodeString &result) const { int32_t matchedindex = m_search_->matchedIndex; int32_t matchedlength = m_search_->matchedLength; if (matchedindex != USEARCH_DONE && matchedlength != 0) { - result.setTo(m_search_->text + matchedindex, matchedlength); + result.setTo(m_search_->text + matchedindex, matchedlength); } else { result.remove(); } } - -void SearchIterator::setBreakIterator(BreakIterator *breakiter, + +void SearchIterator::setBreakIterator(BreakIterator *breakiter, UErrorCode &status) { if (U_SUCCESS(status)) { @@ -139,11 +139,11 @@ void SearchIterator::setBreakIterator(BreakIterator *breakiter, // any subclass of BreakIterator should work fine here... m_search_->breakIter = (UBreakIterator *) breakiter; #endif - + m_breakiterator_ = breakiter; } } - + const BreakIterator * SearchIterator::getBreakIterator(void) const { return m_breakiterator_; @@ -170,7 +170,7 @@ void SearchIterator::setText(CharacterIterator &text, UErrorCode &status) setText(m_text_, status); } } - + const UnicodeString & SearchIterator::getText(void) const { return m_text_; @@ -178,10 +178,10 @@ const UnicodeString & SearchIterator::getText(void) const // operator overloading ---------------------------------------------- -UBool SearchIterator::operator==(const SearchIterator &that) const +bool SearchIterator::operator==(const SearchIterator &that) const { if (this == &that) { - return TRUE; + return true; } return (m_breakiterator_ == that.m_breakiterator_ && m_search_->isCanonicalMatch == that.m_search_->isCanonicalMatch && @@ -191,7 +191,7 @@ UBool SearchIterator::operator==(const SearchIterator &that) const m_search_->matchedLength == that.m_search_->matchedLength && m_search_->textLength == that.m_search_->textLength && getOffset() == that.getOffset() && - (uprv_memcmp(m_search_->text, that.m_search_->text, + (uprv_memcmp(m_search_->text, that.m_search_->text, m_search_->textLength * sizeof(UChar)) == 0)); } @@ -206,7 +206,7 @@ int32_t SearchIterator::first(UErrorCode &status) return handleNext(0, status); } -int32_t SearchIterator::following(int32_t position, +int32_t SearchIterator::following(int32_t position, UErrorCode &status) { if (U_FAILURE(status)) { @@ -215,7 +215,7 @@ int32_t SearchIterator::following(int32_t position, setOffset(position, status); return handleNext(position, status); } - + int32_t SearchIterator::last(UErrorCode &status) { if (U_FAILURE(status)) { @@ -225,7 +225,7 @@ int32_t SearchIterator::last(UErrorCode &status) return handlePrev(m_search_->textLength, status); } -int32_t SearchIterator::preceding(int32_t position, +int32_t SearchIterator::preceding(int32_t position, UErrorCode &status) { if (U_FAILURE(status)) { @@ -244,19 +244,19 @@ int32_t SearchIterator::next(UErrorCode &status) m_search_->reset = FALSE; if (m_search_->isForwardSearching == TRUE) { int32_t textlength = m_search_->textLength; - if (offset == textlength || matchindex == textlength || - (matchindex != USEARCH_DONE && + if (offset == textlength || matchindex == textlength || + (matchindex != USEARCH_DONE && matchindex + matchlength >= textlength)) { // not enough characters to match setMatchNotFound(); - return USEARCH_DONE; + return USEARCH_DONE; } } else { - // switching direction. - // if matchedIndex == USEARCH_DONE, it means that either a + // switching direction. + // if matchedIndex == USEARCH_DONE, it means that either a // setOffset has been called or that previous ran off the text - // string. the iterator would have been set to offset 0 if a + // string. the iterator would have been set to offset 0 if a // match is not found. m_search_->isForwardSearching = TRUE; if (m_search_->matchedIndex != USEARCH_DONE) { @@ -293,13 +293,13 @@ int32_t SearchIterator::previous(UErrorCode &status) else { offset = getOffset(); } - + int32_t matchindex = m_search_->matchedIndex; if (m_search_->isForwardSearching == TRUE) { - // switching direction. - // if matchedIndex == USEARCH_DONE, it means that either a + // switching direction. + // if matchedIndex == USEARCH_DONE, it means that either a // setOffset has been called or that next ran off the text - // string. the iterator would have been set to offset textLength if + // string. the iterator would have been set to offset textLength if // a match is not found. m_search_->isForwardSearching = FALSE; if (matchindex != USEARCH_DONE) { @@ -310,7 +310,7 @@ int32_t SearchIterator::previous(UErrorCode &status) if (offset == 0 || matchindex == 0) { // not enough characters to match setMatchNotFound(); - return USEARCH_DONE; + return USEARCH_DONE; } } @@ -319,7 +319,7 @@ int32_t SearchIterator::previous(UErrorCode &status) matchindex += m_search_->matchedLength - 2; } - return handlePrev(matchindex, status); + return handlePrev(matchindex, status); } return handlePrev(offset, status); @@ -358,7 +358,7 @@ SearchIterator::SearchIterator() m_breakiterator_ = NULL; } -SearchIterator::SearchIterator(const UnicodeString &text, +SearchIterator::SearchIterator(const UnicodeString &text, BreakIterator *breakiter) : m_breakiterator_(breakiter), m_text_(text) @@ -376,7 +376,7 @@ SearchIterator::SearchIterator(const UnicodeString &text, m_search_->textLength = text.length(); } -SearchIterator::SearchIterator(CharacterIterator &text, +SearchIterator::SearchIterator(CharacterIterator &text, BreakIterator *breakiter) : m_breakiterator_(breakiter) { @@ -424,12 +424,12 @@ void SearchIterator::setMatchStart(int32_t position) m_search_->matchedIndex = position; } -void SearchIterator::setMatchNotFound() +void SearchIterator::setMatchNotFound() { setMatchStart(USEARCH_DONE); setMatchLength(0); UErrorCode status = U_ZERO_ERROR; - // by default no errors should be returned here since offsets are within + // by default no errors should be returned here since offsets are within // range. if (m_search_->isForwardSearching) { setOffset(m_search_->textLength, status); diff --git a/deps/icu-small/source/i18n/selfmt.cpp b/deps/icu-small/source/i18n/selfmt.cpp index 47e53d75dec36f..bb18e84ef65736 100644 --- a/deps/icu-small/source/i18n/selfmt.cpp +++ b/deps/icu-small/source/i18n/selfmt.cpp @@ -164,19 +164,19 @@ SelectFormat::operator=(const SelectFormat& other) { return *this; } -UBool +bool SelectFormat::operator==(const Format& other) const { if (this == &other) { - return TRUE; + return true; } if (!Format::operator==(other)) { - return FALSE; + return false; } const SelectFormat& o = (const SelectFormat&)other; return msgPattern == o.msgPattern; } -UBool +bool SelectFormat::operator!=(const Format& other) const { return !operator==(other); } diff --git a/deps/icu-small/source/i18n/selfmtimpl.h b/deps/icu-small/source/i18n/selfmtimpl.h index 74d6dc218135e7..a36d1a5c347fb4 100644 --- a/deps/icu-small/source/i18n/selfmtimpl.h +++ b/deps/icu-small/source/i18n/selfmtimpl.h @@ -1,10 +1,10 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html /******************************************************************** - * COPYRIGHT: + * COPYRIGHT: * Copyright (c) 1997-2011, International Business Machines Corporation and * others. All Rights Reserved. - * Copyright (C) 2010 , Yahoo! Inc. + * Copyright (C) 2010 , Yahoo! Inc. ******************************************************************** * File selectfmtimpl.h * diff --git a/deps/icu-small/source/i18n/simpletz.cpp b/deps/icu-small/source/i18n/simpletz.cpp index 0007d4aec8977e..d9b0cd8e1e629d 100644 --- a/deps/icu-small/source/i18n/simpletz.cpp +++ b/deps/icu-small/source/i18n/simpletz.cpp @@ -231,7 +231,7 @@ SimpleTimeZone::operator=(const SimpleTimeZone &right) // ------------------------------------- -UBool +bool SimpleTimeZone::operator==(const TimeZone& that) const { return ((this == &that) || @@ -289,7 +289,7 @@ SimpleTimeZone::setStartYear(int32_t year) * month, regardless of what day of the week it is (e.g., (-2, 0) is the * next-to-last day of the month). *

  • If dayOfWeek is negative and dayOfWeekInMonth is positive, they specify the - * first specified day of the week on or after the specfied day of the month. + * first specified day of the week on or after the specified day of the month. * (e.g., (15, -SUNDAY) is the first Sunday after the 15th of the month * [or the 15th itself if the 15th is a Sunday].) *
  • If dayOfWeek and DayOfWeekInMonth are both negative, they specify the @@ -305,7 +305,7 @@ SimpleTimeZone::setStartYear(int32_t year) * @param time the daylight savings starting time. Please see the member * description for an example. */ - + void SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek, int32_t time, TimeMode mode, UErrorCode& status) @@ -321,17 +321,17 @@ SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfWeekInMonth, int32_t da // ------------------------------------- -void -SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfMonth, - int32_t time, TimeMode mode, UErrorCode& status) +void +SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfMonth, + int32_t time, TimeMode mode, UErrorCode& status) { setStartRule(month, dayOfMonth, 0, time, mode, status); } // ------------------------------------- -void -SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, +void +SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, int32_t time, TimeMode mode, UBool after, UErrorCode& status) { setStartRule(month, after ? dayOfMonth : -dayOfMonth, @@ -373,8 +373,8 @@ SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayO // ------------------------------------- -void -SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfMonth, +void +SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfMonth, int32_t time, TimeMode mode, UErrorCode& status) { setEndRule(month, dayOfMonth, 0, time, mode, status); @@ -382,8 +382,8 @@ SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfMonth, // ------------------------------------- -void -SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, +void +SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, int32_t time, TimeMode mode, UBool after, UErrorCode& status) { setEndRule(month, after ? dayOfMonth : -dayOfMonth, @@ -411,9 +411,9 @@ SimpleTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, return getOffset(era, year, month, day, dayOfWeek, millis, Grego::monthLength(year, month), status); } -int32_t +int32_t SimpleTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, - uint8_t dayOfWeek, int32_t millis, + uint8_t dayOfWeek, int32_t millis, int32_t /*monthLength*/, UErrorCode& status) const { // Check the month before calling Grego::monthLength(). This @@ -438,9 +438,9 @@ SimpleTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, status); } -int32_t +int32_t SimpleTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, - uint8_t dayOfWeek, int32_t millis, + uint8_t dayOfWeek, int32_t millis, int32_t monthLength, int32_t prevMonthLength, UErrorCode& status) const { @@ -466,7 +466,7 @@ SimpleTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, int32_t result = rawOffset; // Bail out if we are before the onset of daylight savings time - if(!useDaylight || year < startYear || era != GregorianCalendar::AD) + if(!useDaylight || year < startYear || era != GregorianCalendar::AD) return result; // Check for southern hemisphere. We assume that the start and end @@ -570,7 +570,7 @@ SimpleTimeZone::getOffsetFromLocal(UDate date, UTimeZoneLocalOption nonExistingT * @return 1 if the date is after the rule date, -1 if the date is before * the rule date, or 0 if the date is equal to the rule date. */ -int32_t +int32_t SimpleTimeZone::compareToRule(int8_t month, int8_t monthLen, int8_t prevMonthLen, int8_t dayOfMonth, int8_t dayOfWeek, int32_t millis, int32_t millisDelta, @@ -585,7 +585,7 @@ SimpleTimeZone::compareToRule(int8_t month, int8_t monthLen, int8_t prevMonthLen dayOfWeek = (int8_t)(1 + (dayOfWeek % 7)); // dayOfWeek is one-based if (dayOfMonth > monthLen) { dayOfMonth = 1; - /* When incrementing the month, it is desirible to overflow + /* When incrementing the month, it is desirable to overflow * from DECEMBER to DECEMBER+1, since we use the result to * compare against a real month. Wraparound of the value * leads to bug 4173604. */ @@ -631,7 +631,7 @@ SimpleTimeZone::compareToRule(int8_t month, int8_t monthLen, int8_t prevMonthLen if (ruleDay > 0) ruleDayOfMonth = 1 + (ruleDay - 1) * 7 + (7 + ruleDayOfWeek - (dayOfWeek - dayOfMonth + 1)) % 7; - + // if ruleDay is negative (we assume it's not zero here), we have to do // the same calculation figuring backward from the last day of the month. else @@ -686,8 +686,8 @@ SimpleTimeZone::setRawOffset(int32_t offsetMillis) // ------------------------------------- -void -SimpleTimeZone::setDSTSavings(int32_t millisSavedDuringDST, UErrorCode& status) +void +SimpleTimeZone::setDSTSavings(int32_t millisSavedDuringDST, UErrorCode& status) { if (millisSavedDuringDST == 0) { status = U_ILLEGAL_ARGUMENT_ERROR; @@ -700,7 +700,7 @@ SimpleTimeZone::setDSTSavings(int32_t millisSavedDuringDST, UErrorCode& status) // ------------------------------------- -int32_t +int32_t SimpleTimeZone::getDSTSavings() const { return dstSavings; @@ -745,7 +745,7 @@ UBool SimpleTimeZone::inDaylightTime(UDate date, UErrorCode& status) const * @param other the TimeZone object to be compared with * @return true if the given zone has the same rules and offset as this one */ -UBool +UBool SimpleTimeZone::hasSameRules(const TimeZone& other) const { if (this == &other) return TRUE; @@ -836,7 +836,7 @@ SimpleTimeZone::hasSameRules(const TimeZone& other) const * This method also recognizes a startDay or endDay of zero as indicating * no DST. */ -void +void SimpleTimeZone::decodeRules(UErrorCode& status) { decodeStartRule(status); @@ -867,8 +867,8 @@ SimpleTimeZone::decodeRules(UErrorCode& status) * While arguably the start range should still be 0..ONEDAY-1, we keep * the start and end ranges the same for consistency. */ -void -SimpleTimeZone::decodeStartRule(UErrorCode& status) +void +SimpleTimeZone::decodeStartRule(UErrorCode& status) { if(U_FAILURE(status)) return; @@ -922,8 +922,8 @@ SimpleTimeZone::decodeStartRule(UErrorCode& status) * analogous to decodeStartRule(). * @see decodeStartRule */ -void -SimpleTimeZone::decodeEndRule(UErrorCode& status) +void +SimpleTimeZone::decodeEndRule(UErrorCode& status) { if(U_FAILURE(status)) return; @@ -1140,14 +1140,14 @@ SimpleTimeZone::initTransitionRules(UErrorCode& status) { // For now, use ID + "(DST)" as the name dstRule = new AnnualTimeZoneRule(tzid+UnicodeString(DST_STR), getRawOffset(), getDSTSavings(), dtRule, startYear, AnnualTimeZoneRule::MAX_YEAR); - + // Check for Null pointer if (dstRule == NULL) { status = U_MEMORY_ALLOCATION_ERROR; deleteTransitionRules(); return; } - + // Calculate the first DST start time dstRule->getFirstStart(getRawOffset(), 0, firstDstStart); @@ -1168,7 +1168,7 @@ SimpleTimeZone::initTransitionRules(UErrorCode& status) { dtRule = new DateTimeRule(endMonth, endDay, endDayOfWeek, false, endTime, timeRuleType); break; } - + // Check for Null pointer if (dtRule == NULL) { status = U_MEMORY_ALLOCATION_ERROR; @@ -1178,7 +1178,7 @@ SimpleTimeZone::initTransitionRules(UErrorCode& status) { // For now, use ID + "(STD)" as the name stdRule = new AnnualTimeZoneRule(tzid+UnicodeString(STD_STR), getRawOffset(), 0, dtRule, startYear, AnnualTimeZoneRule::MAX_YEAR); - + //Check for Null pointer if (stdRule == NULL) { status = U_MEMORY_ALLOCATION_ERROR; @@ -1212,7 +1212,7 @@ SimpleTimeZone::initTransitionRules(UErrorCode& status) { deleteTransitionRules(); return; } - + } else { // Create a TimeZoneRule for initial time initialRule = new InitialTimeZoneRule(tzid, getRawOffset(), 0); diff --git a/deps/icu-small/source/i18n/smpdtfmt.cpp b/deps/icu-small/source/i18n/smpdtfmt.cpp index a3ec7cb026591c..91748d82f9fd64 100644 --- a/deps/icu-small/source/i18n/smpdtfmt.cpp +++ b/deps/icu-small/source/i18n/smpdtfmt.cpp @@ -64,6 +64,7 @@ #include "uassert.h" #include "cmemory.h" #include "umutex.h" +#include "mutex.h" #include #include "smpdtfst.h" #include "sharednumberformat.h" @@ -227,7 +228,7 @@ static const int32_t gFieldRangeBias[] = { }; // When calendar uses hebr numbering (i.e. he@calendar=hebrew), -// offset the years within the current millenium down to 1-999 +// offset the years within the current millennium down to 1-999 static const int32_t HEBREW_CAL_CUR_MILLENIUM_START_YEAR = 5000; static const int32_t HEBREW_CAL_CUR_MILLENIUM_END_YEAR = 6000; @@ -594,11 +595,29 @@ SimpleDateFormat& SimpleDateFormat::operator=(const SimpleDateFormat& other) fLocale = other.fLocale; // TimeZoneFormat can now be set independently via setter. - // If it is NULL, it will be lazily initialized from locale + // If it is NULL, it will be lazily initialized from locale. delete fTimeZoneFormat; - fTimeZoneFormat = NULL; - if (other.fTimeZoneFormat) { - fTimeZoneFormat = new TimeZoneFormat(*other.fTimeZoneFormat); + fTimeZoneFormat = nullptr; + TimeZoneFormat *otherTZFormat; + { + // Synchronization is required here, when accessing other.fTimeZoneFormat, + // because another thread may be concurrently executing other.tzFormat(), + // a logically const function that lazily creates other.fTimeZoneFormat. + // + // Without synchronization, reordered memory writes could allow us + // to see a non-null fTimeZoneFormat before the object itself was + // fully initialized. In case of a race, it doesn't matter whether + // we see a null or a fully initialized other.fTimeZoneFormat, + // only that we avoid seeing a partially initialized object. + // + // Once initialized, no const function can modify fTimeZoneFormat, + // meaning that once we have safely grabbed the other.fTimeZoneFormat + // pointer, continued synchronization is not required to use it. + Mutex m(&LOCK); + otherTZFormat = other.fTimeZoneFormat; + } + if (otherTZFormat) { + fTimeZoneFormat = new TimeZoneFormat(*otherTZFormat); } #if !UCONFIG_NO_BREAK_ITERATION @@ -639,7 +658,7 @@ SimpleDateFormat::clone() const //---------------------------------------------------------------------- -UBool +bool SimpleDateFormat::operator==(const Format& other) const { if (DateFormat::operator==(other)) { @@ -654,7 +673,7 @@ SimpleDateFormat::operator==(const Format& other) const fHaveDefaultCentury == that->fHaveDefaultCentury && fDefaultCenturyStart == that->fDefaultCenturyStart); } - return FALSE; + return false; } //---------------------------------------------------------------------- @@ -1855,7 +1874,7 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo, } } else { - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } appendTo += zoneString; @@ -1863,7 +1882,10 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo, break; case UDAT_QUARTER_FIELD: - if (count >= 4) + if (count >= 5) + _appendSymbol(appendTo, value/3, fSymbols->fNarrowQuarters, + fSymbols->fNarrowQuartersCount); + else if (count == 4) _appendSymbol(appendTo, value/3, fSymbols->fQuarters, fSymbols->fQuartersCount); else if (count == 3) @@ -1874,7 +1896,10 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo, break; case UDAT_STANDALONE_QUARTER_FIELD: - if (count >= 4) + if (count >= 5) + _appendSymbol(appendTo, value/3, fSymbols->fStandaloneNarrowQuarters, + fSymbols->fStandaloneNarrowQuartersCount); + else if (count == 4) _appendSymbol(appendTo, value/3, fSymbols->fStandaloneQuarters, fSymbols->fStandaloneQuartersCount); else if (count == 3) @@ -2192,7 +2217,7 @@ SimpleDateFormat::zeroPaddingNumber( //---------------------------------------------------------------------- /** - * Return true if the given format character, occuring count + * Return true if the given format character, occurring count * times, represents a numeric field. */ UBool SimpleDateFormat::isNumeric(UChar formatChar, int32_t count) { @@ -2561,10 +2586,10 @@ SimpleDateFormat::parse(const UnicodeString& text, Calendar& cal, ParsePosition& if (btz != NULL) { if (tzTimeType == UTZFMT_TIME_TYPE_STANDARD) { btz->getOffsetFromLocal(localMillis, - BasicTimeZone::kStandard, BasicTimeZone::kStandard, raw, dst, status); + UCAL_TZ_LOCAL_STANDARD_FORMER, UCAL_TZ_LOCAL_STANDARD_LATTER, raw, dst, status); } else { btz->getOffsetFromLocal(localMillis, - BasicTimeZone::kDaylight, BasicTimeZone::kDaylight, raw, dst, status); + UCAL_TZ_LOCAL_DAYLIGHT_FORMER, UCAL_TZ_LOCAL_DAYLIGHT_LATTER, raw, dst, status); } } else { // No good way to resolve ambiguous time at transition, @@ -2831,7 +2856,7 @@ UBool SimpleDateFormat::matchLiterals(const UnicodeString &pattern, continue; // Do not update p. } } - // hack around oldleniency being a bit of a catch-all bucket and we're just adding support specifically for paritial matches + // hack around oldleniency being a bit of a catch-all bucket and we're just adding support specifically for partial matches if(partialMatchLenient && oldLeniency) { break; } @@ -3452,7 +3477,7 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC return pos.getIndex(); } else { // count >= 3 // i.e., QQQ or QQQQ - // Want to be able to parse both short and long forms. + // Want to be able to parse short, long, and narrow forms. // Try count == 4 first: int32_t newStart = 0; @@ -3466,6 +3491,11 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC fSymbols->fShortQuarters, fSymbols->fShortQuartersCount, cal)) > 0) return newStart; } + if(getBooleanAttribute(UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH, status) || count == 5) { + if ((newStart = matchQuarterString(text, start, UCAL_MONTH, + fSymbols->fNarrowQuarters, fSymbols->fNarrowQuartersCount, cal)) > 0) + return newStart; + } if (!getBooleanAttribute(UDAT_PARSE_ALLOW_NUMERIC, status)) return newStart; // else we allowing parsing as number, below @@ -3498,6 +3528,11 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC fSymbols->fStandaloneShortQuarters, fSymbols->fStandaloneShortQuartersCount, cal)) > 0) return newStart; } + if(getBooleanAttribute(UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH, status) || count == 5) { + if ((newStart = matchQuarterString(text, start, UCAL_MONTH, + fSymbols->fStandaloneNarrowQuarters, fSymbols->fStandaloneNarrowQuartersCount, cal)) > 0) + return newStart; + } if (!getBooleanAttribute(UDAT_PARSE_ALLOW_NUMERIC, status)) return newStart; // else we allowing parsing as number, below @@ -4308,19 +4343,10 @@ SimpleDateFormat::skipUWhiteSpace(const UnicodeString& text, int32_t pos) const // Lazy TimeZoneFormat instantiation, semantically const. TimeZoneFormat * SimpleDateFormat::tzFormat(UErrorCode &status) const { - if (fTimeZoneFormat == NULL) { - umtx_lock(&LOCK); - { - if (fTimeZoneFormat == NULL) { - TimeZoneFormat *tzfmt = TimeZoneFormat::createInstance(fLocale, status); - if (U_FAILURE(status)) { - return NULL; - } - - const_cast(this)->fTimeZoneFormat = tzfmt; - } - } - umtx_unlock(&LOCK); + Mutex m(&LOCK); + if (fTimeZoneFormat == nullptr && U_SUCCESS(status)) { + const_cast(this)->fTimeZoneFormat = + TimeZoneFormat::createInstance(fLocale, status); } return fTimeZoneFormat; } diff --git a/deps/icu-small/source/i18n/smpdtfst.cpp b/deps/icu-small/source/i18n/smpdtfst.cpp index ff0dec232d29f7..db59a4b4ab7f8f 100644 --- a/deps/icu-small/source/i18n/smpdtfst.cpp +++ b/deps/icu-small/source/i18n/smpdtfst.cpp @@ -110,7 +110,7 @@ UnicodeSet *SimpleDateFormatStaticSets::getIgnorables(UDateFormatField fieldInde if (U_FAILURE(status)) { return NULL; } - + switch (fieldIndex) { case UDAT_YEAR_FIELD: case UDAT_MONTH_FIELD: @@ -118,7 +118,7 @@ UnicodeSet *SimpleDateFormatStaticSets::getIgnorables(UDateFormatField fieldInde case UDAT_STANDALONE_DAY_FIELD: case UDAT_STANDALONE_MONTH_FIELD: return gStaticSets->fDateIgnorables; - + case UDAT_HOUR_OF_DAY1_FIELD: case UDAT_HOUR_OF_DAY0_FIELD: case UDAT_MINUTE_FIELD: @@ -126,7 +126,7 @@ UnicodeSet *SimpleDateFormatStaticSets::getIgnorables(UDateFormatField fieldInde case UDAT_HOUR1_FIELD: case UDAT_HOUR0_FIELD: return gStaticSets->fTimeIgnorables; - + default: return gStaticSets->fOtherIgnorables; } diff --git a/deps/icu-small/source/i18n/smpdtfst.h b/deps/icu-small/source/i18n/smpdtfst.h index ed8ce4371f6d6d..cc80909c88e93a 100644 --- a/deps/icu-small/source/i18n/smpdtfst.h +++ b/deps/icu-small/source/i18n/smpdtfst.h @@ -33,12 +33,12 @@ class SimpleDateFormatStaticSets : public UMemory public: SimpleDateFormatStaticSets(UErrorCode &status); ~SimpleDateFormatStaticSets(); - + static void initSets(UErrorCode *status); static UBool cleanup(); - + static UnicodeSet *getIgnorables(UDateFormatField fieldIndex); - + private: UnicodeSet *fDateIgnorables; UnicodeSet *fTimeIgnorables; diff --git a/deps/icu-small/source/i18n/sortkey.cpp b/deps/icu-small/source/i18n/sortkey.cpp index 430fd5d3500948..441d15d42635bd 100644 --- a/deps/icu-small/source/i18n/sortkey.cpp +++ b/deps/icu-small/source/i18n/sortkey.cpp @@ -137,7 +137,7 @@ CollationKey::setToBogus() return *this; } -UBool +bool CollationKey::operator==(const CollationKey& source) const { return getLength() == source.getLength() && @@ -278,7 +278,7 @@ CollationKey::hashCode() const U_NAMESPACE_END U_CAPI int32_t U_EXPORT2 -ucol_keyHashCode(const uint8_t *key, +ucol_keyHashCode(const uint8_t *key, int32_t length) { return icu::computeHashCode(key, length); diff --git a/deps/icu-small/source/i18n/strmatch.cpp b/deps/icu-small/source/i18n/strmatch.cpp index 97c0fba6f1ddb7..a20f7873fec73e 100644 --- a/deps/icu-small/source/i18n/strmatch.cpp +++ b/deps/icu-small/source/i18n/strmatch.cpp @@ -69,7 +69,7 @@ StringMatcher* StringMatcher::clone() const { UnicodeMatcher* StringMatcher::toMatcher() const { StringMatcher *nonconst_this = const_cast(this); UnicodeMatcher *nonconst_base = static_cast(nonconst_this); - + return nonconst_base; } @@ -80,7 +80,7 @@ UnicodeMatcher* StringMatcher::toMatcher() const { UnicodeReplacer* StringMatcher::toReplacer() const { StringMatcher *nonconst_this = const_cast(this); UnicodeReplacer *nonconst_base = static_cast(nonconst_this); - + return nonconst_base; } @@ -221,9 +221,9 @@ int32_t StringMatcher::replace(Replaceable& text, int32_t start, int32_t limit, int32_t& /*cursor*/) { - + int32_t outLen = 0; - + // Copy segment with out-of-band data int32_t dest = limit; // If there was no match, that means that a quantifier @@ -234,9 +234,9 @@ int32_t StringMatcher::replace(Replaceable& text, outLen = matchLimit - matchStart; } } - + text.handleReplaceBetween(start, limit, UnicodeString()); // delete original text - + return outLen; } diff --git a/deps/icu-small/source/i18n/strmatch.h b/deps/icu-small/source/i18n/strmatch.h index 84b1d47398fd60..6d2e392e654c7b 100644 --- a/deps/icu-small/source/i18n/strmatch.h +++ b/deps/icu-small/source/i18n/strmatch.h @@ -68,7 +68,7 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico * @param o the object to be copied. */ StringMatcher(const StringMatcher& o); - + /** * Destructor */ @@ -78,21 +78,21 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico * Implement UnicodeFunctor * @return a copy of the object. */ - virtual StringMatcher* clone() const; + virtual StringMatcher* clone() const override; /** * UnicodeFunctor API. Cast 'this' to a UnicodeMatcher* pointer * and return the pointer. * @return the UnicodeMatcher point. */ - virtual UnicodeMatcher* toMatcher() const; + virtual UnicodeMatcher* toMatcher() const override; /** * UnicodeFunctor API. Cast 'this' to a UnicodeReplacer* pointer * and return the pointer. * @return the UnicodeReplacer pointer. */ - virtual UnicodeReplacer* toReplacer() const; + virtual UnicodeReplacer* toReplacer() const override; /** * Implement UnicodeMatcher @@ -119,7 +119,7 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico virtual UMatchDegree matches(const Replaceable& text, int32_t& offset, int32_t limit, - UBool incremental); + UBool incremental) override; /** * Implement UnicodeMatcher @@ -128,7 +128,7 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico * @return A reference to 'result'. */ virtual UnicodeString& toPattern(UnicodeString& result, - UBool escapeUnprintable = false) const; + UBool escapeUnprintable = false) const override; /** * Implement UnicodeMatcher @@ -137,20 +137,20 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico * offset). This is used by RuleBasedTransliterator for * indexing. * @param v the given value - * @return true if this matcher will match a character c, + * @return true if this matcher will match a character c, * where c & 0xFF == v */ - virtual UBool matchesIndexValue(uint8_t v) const; + virtual UBool matchesIndexValue(uint8_t v) const override; /** * Implement UnicodeMatcher */ - virtual void addMatchSetTo(UnicodeSet& toUnionTo) const; + virtual void addMatchSetTo(UnicodeSet& toUnionTo) const override; /** * Implement UnicodeFunctor */ - virtual void setData(const TransliterationRuleData*); + virtual void setData(const TransliterationRuleData*) override; /** * Replace characters in 'text' from 'start' to 'limit' with the @@ -172,7 +172,7 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico virtual int32_t replace(Replaceable& text, int32_t start, int32_t limit, - int32_t& cursor); + int32_t& cursor) override; /** * Returns a string representation of this replacer. If the @@ -188,7 +188,7 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico * @return a reference to 'result'. */ virtual UnicodeString& toReplacerPattern(UnicodeString& result, - UBool escapeUnprintable) const; + UBool escapeUnprintable) const override; /** * Remove any match data. This must be called before performing a @@ -199,7 +199,7 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -211,7 +211,7 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico * into the given set. * @param toUnionTo the set into which to union the output characters */ - virtual void addReplacementSetTo(UnicodeSet& toUnionTo) const; + virtual void addReplacementSetTo(UnicodeSet& toUnionTo) const override; private: diff --git a/deps/icu-small/source/i18n/strrepl.cpp b/deps/icu-small/source/i18n/strrepl.cpp index e9e71ee540606a..9fafeb2659ce47 100644 --- a/deps/icu-small/source/i18n/strrepl.cpp +++ b/deps/icu-small/source/i18n/strrepl.cpp @@ -199,7 +199,7 @@ int32_t StringReplacer::replace(Replaceable& text, // Delete the old text (the key) text.handleReplaceBetween(start + outLen, limit + outLen, UnicodeString()); - } + } if (hasCursor) { // Adjust the cursor for positions outside the key. These diff --git a/deps/icu-small/source/i18n/strrepl.h b/deps/icu-small/source/i18n/strrepl.h index 7f74d0d94507f6..8063626a333bb9 100644 --- a/deps/icu-small/source/i18n/strrepl.h +++ b/deps/icu-small/source/i18n/strrepl.h @@ -111,13 +111,13 @@ class StringReplacer : public UnicodeFunctor, public UnicodeReplacer { /** * Implement UnicodeFunctor */ - virtual StringReplacer* clone() const; + virtual StringReplacer* clone() const override; /** * UnicodeFunctor API. Cast 'this' to a UnicodeReplacer* pointer * and return the pointer. */ - virtual UnicodeReplacer* toReplacer() const; + virtual UnicodeReplacer* toReplacer() const override; /** * UnicodeReplacer API @@ -125,23 +125,23 @@ class StringReplacer : public UnicodeFunctor, public UnicodeReplacer { virtual int32_t replace(Replaceable& text, int32_t start, int32_t limit, - int32_t& cursor); + int32_t& cursor) override; /** * UnicodeReplacer API */ virtual UnicodeString& toReplacerPattern(UnicodeString& result, - UBool escapeUnprintable) const; + UBool escapeUnprintable) const override; /** * Implement UnicodeReplacer */ - virtual void addReplacementSetTo(UnicodeSet& toUnionTo) const; + virtual void addReplacementSetTo(UnicodeSet& toUnionTo) const override; /** * UnicodeFunctor API */ - virtual void setData(const TransliterationRuleData*); + virtual void setData(const TransliterationRuleData*) override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -151,7 +151,7 @@ class StringReplacer : public UnicodeFunctor, public UnicodeReplacer { /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; }; U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/stsearch.cpp b/deps/icu-small/source/i18n/stsearch.cpp index 003d86b64016f0..1bade8fbd1108b 100644 --- a/deps/icu-small/source/i18n/stsearch.cpp +++ b/deps/icu-small/source/i18n/stsearch.cpp @@ -205,17 +205,17 @@ StringSearch & StringSearch::operator=(const StringSearch &that) return *this; } -UBool StringSearch::operator==(const SearchIterator &that) const +bool StringSearch::operator==(const SearchIterator &that) const { if (this == &that) { - return TRUE; + return true; } if (SearchIterator::operator ==(that)) { StringSearch &thatsrch = (StringSearch &)that; return (this->m_pattern_ == thatsrch.m_pattern_ && this->m_strsrch_->collator == thatsrch.m_strsrch_->collator); } - return FALSE; + return false; } // public get and set methods ---------------------------------------- @@ -335,14 +335,14 @@ int32_t StringSearch::handleNext(int32_t position, UErrorCode &status) // the flipping direction issue has already been handled // in next() // for boundary check purposes. this will ensure that the - // next match will not preceed the current offset + // next match will not precede the current offset // note search->matchedIndex will always be set to something // in the code m_search_->matchedIndex = position - 1; } ucol_setOffset(m_strsrch_->textIter, position, &status); - + #if 0 for (;;) { if (m_search_->isCanonicalMatch) { @@ -380,22 +380,22 @@ int32_t StringSearch::handleNext(int32_t position, UErrorCode &status) // then we don't need to check the match boundaries here because // usearch_handleNextXXX will already have done it. if (m_search_->isCanonicalMatch) { - // *could* actually use exact here 'cause no extra accents allowed... - usearch_handleNextCanonical(m_strsrch_, &status); + // *could* actually use exact here 'cause no extra accents allowed... + usearch_handleNextCanonical(m_strsrch_, &status); } else { - usearch_handleNextExact(m_strsrch_, &status); + usearch_handleNextExact(m_strsrch_, &status); } - + if (U_FAILURE(status)) { - return USEARCH_DONE; + return USEARCH_DONE; } - + if (m_search_->matchedIndex == USEARCH_DONE) { - ucol_setOffset(m_strsrch_->textIter, m_search_->textLength, &status); + ucol_setOffset(m_strsrch_->textIter, m_search_->textLength, &status); } else { - ucol_setOffset(m_strsrch_->textIter, m_search_->matchedIndex, &status); + ucol_setOffset(m_strsrch_->textIter, m_search_->matchedIndex, &status); } - + return m_search_->matchedIndex; #endif } @@ -431,7 +431,7 @@ int32_t StringSearch::handlePrev(int32_t position, UErrorCode &status) setMatchNotFound(); return USEARCH_DONE; } - + for (;;) { if (m_search_->isCanonicalMatch) { // can't use exact here since extra accents are allowed. @@ -457,18 +457,18 @@ int32_t StringSearch::handlePrev(int32_t position, UErrorCode &status) } #else ucol_setOffset(m_strsrch_->textIter, position, &status); - + if (m_search_->isCanonicalMatch) { - // *could* use exact match here since extra accents *not* allowed! - usearch_handlePreviousCanonical(m_strsrch_, &status); + // *could* use exact match here since extra accents *not* allowed! + usearch_handlePreviousCanonical(m_strsrch_, &status); } else { - usearch_handlePreviousExact(m_strsrch_, &status); + usearch_handlePreviousExact(m_strsrch_, &status); } - + if (U_FAILURE(status)) { - return USEARCH_DONE; + return USEARCH_DONE; } - + return m_search_->matchedIndex; #endif } diff --git a/deps/icu-small/source/i18n/taiwncal.cpp b/deps/icu-small/source/i18n/taiwncal.cpp index 1a6a0e2e78d201..27352aa10c32b2 100644 --- a/deps/icu-small/source/i18n/taiwncal.cpp +++ b/deps/icu-small/source/i18n/taiwncal.cpp @@ -30,7 +30,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TaiwanCalendar) static const int32_t kTaiwanEraStart = 1911; // 1911 (Gregorian) -static const int32_t kGregorianEpoch = 1970; +static const int32_t kGregorianEpoch = 1970; TaiwanCalendar::TaiwanCalendar(const Locale& aLocale, UErrorCode& success) : GregorianCalendar(aLocale, success) @@ -135,7 +135,7 @@ void TaiwanCalendar::timeToFields(UDate theTime, UBool quick, UErrorCode& status /** * The system maintains a static default century start date and Year. They are - * initialized the first time they are used. Once the system default century date + * initialized the first time they are used. Once the system default century date * and year are set, they do not change. */ static UDate gSystemDefaultCenturyStart = DBL_MIN; diff --git a/deps/icu-small/source/i18n/taiwncal.h b/deps/icu-small/source/i18n/taiwncal.h index bf384fa714f05b..ab6b6aff099e28 100644 --- a/deps/icu-small/source/i18n/taiwncal.h +++ b/deps/icu-small/source/i18n/taiwncal.h @@ -91,7 +91,7 @@ class TaiwanCalendar : public GregorianCalendar { * @return return a polymorphic copy of this calendar. * @internal */ - virtual TaiwanCalendar* clone() const; + virtual TaiwanCalendar* clone() const override; public: /** @@ -104,7 +104,7 @@ class TaiwanCalendar : public GregorianCalendar { * same class ID. Objects of other classes have different class IDs. * @internal */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Return the class ID for this class. This is useful only for comparing to a return @@ -125,7 +125,7 @@ class TaiwanCalendar : public GregorianCalendar { * @return calendar type * @internal */ - virtual const char * getType() const; + virtual const char * getType() const override; private: TaiwanCalendar(); // default constructor not implemented @@ -139,13 +139,13 @@ class TaiwanCalendar : public GregorianCalendar { * @return the extended year * @internal */ - virtual int32_t handleGetExtendedYear(); + virtual int32_t handleGetExtendedYear() override; /** * Subclasses may override this method to compute several fields - * specific to each calendar system. + * specific to each calendar system. * @internal */ - virtual void handleComputeFields(int32_t julianDay, UErrorCode& status); + virtual void handleComputeFields(int32_t julianDay, UErrorCode& status) override; /** * Subclass API for defining limits of different types. * @param field one of the field numbers @@ -153,26 +153,26 @@ class TaiwanCalendar : public GregorianCalendar { * LEAST_MAXIMUM, or MAXIMUM * @internal */ - virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const; + virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override; /** * Returns true because the Taiwan Calendar does have a default century * @internal */ - virtual UBool haveDefaultCentury() const; + virtual UBool haveDefaultCentury() const override; /** * Returns the date of the start of the default century * @return start of century - in milliseconds since epoch, 1970 * @internal */ - virtual UDate defaultCenturyStart() const; + virtual UDate defaultCenturyStart() const override; /** * Returns the year in which the default century begins * @internal */ - virtual int32_t defaultCenturyStartYear() const; + virtual int32_t defaultCenturyStartYear() const override; }; U_NAMESPACE_END @@ -181,3 +181,4 @@ U_NAMESPACE_END #endif // _TAIWNCAL //eof + diff --git a/deps/icu-small/source/i18n/timezone.cpp b/deps/icu-small/source/i18n/timezone.cpp index fe564e6530e7b1..8115a45e0ac4d1 100644 --- a/deps/icu-small/source/i18n/timezone.cpp +++ b/deps/icu-small/source/i18n/timezone.cpp @@ -311,7 +311,7 @@ void U_CALLCONV initStaticTimeZones() { // be valid even if we can't load the time zone UDataMemory. ucln_i18n_registerCleanup(UCLN_I18N_TIMEZONE, timeZone_cleanup); - // new can't fail below, as we use placement new into staticly allocated space. + // new can't fail below, as we use placement new into statically allocated space. new(gRawGMT) SimpleTimeZone(0, UnicodeString(TRUE, GMT_ID, GMT_ID_LENGTH)); new(gRawUNKNOWN) SimpleTimeZone(0, UnicodeString(TRUE, UNKNOWN_ZONE_ID, UNKNOWN_ZONE_ID_LENGTH)); @@ -376,7 +376,7 @@ TimeZone::operator=(const TimeZone &right) // ------------------------------------- -UBool +bool TimeZone::operator==(const TimeZone& that) const { return typeid(*this) == typeid(that) && @@ -445,7 +445,7 @@ TimeZone::createTimeZone(const UnicodeString& ID) if (result == NULL) { U_DEBUG_TZ_MSG(("failed to load time zone with id - falling to Etc/Unknown(GMT)")); const TimeZone& unknown = getUnknown(); - // Unknown zone uses staticly allocated memory, so creation of it can never fail due to OOM. + // Unknown zone uses statically allocated memory, so creation of it can never fail due to OOM. result = unknown.clone(); } return result; @@ -530,7 +530,7 @@ TimeZone::detectHostTimeZone() static UMutex gDefaultZoneMutex; /** - * Initialize DEFAULT_ZONE from the system default time zone. + * Initialize DEFAULT_ZONE from the system default time zone. * Upon return, DEFAULT_ZONE will not be NULL, unless operator new() * returns NULL. */ @@ -544,7 +544,7 @@ static void U_CALLCONV initDefault() if (DEFAULT_ZONE != NULL) { return; } - + // NOTE: this code is safely single threaded, being only // run via umtx_initOnce(). // @@ -951,15 +951,15 @@ class TZEnumeration : public StringEnumeration { virtual ~TZEnumeration(); - virtual StringEnumeration *clone() const { + virtual StringEnumeration *clone() const override { return new TZEnumeration(*this); } - virtual int32_t count(UErrorCode& status) const { + virtual int32_t count(UErrorCode& status) const override { return U_FAILURE(status) ? 0 : len; } - virtual const UnicodeString* snext(UErrorCode& status) { + virtual const UnicodeString* snext(UErrorCode& status) override { if (U_SUCCESS(status) && map != NULL && pos < len) { getID(map[pos], status); ++pos; @@ -968,13 +968,13 @@ class TZEnumeration : public StringEnumeration { return 0; } - virtual void reset(UErrorCode& /*status*/) { + virtual void reset(UErrorCode& /*status*/) override { pos = 0; } public: static UClassID U_EXPORT2 getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; TZEnumeration::~TZEnumeration() { @@ -994,22 +994,41 @@ TimeZone::createTimeZoneIDEnumeration( return TZEnumeration::create(zoneType, region, rawOffset, ec); } +StringEnumeration* U_EXPORT2 +TimeZone::createEnumeration(UErrorCode& status) { + return TZEnumeration::create(UCAL_ZONE_TYPE_ANY, NULL, NULL, status); +} + +StringEnumeration* U_EXPORT2 +TimeZone::createEnumerationForRawOffset(int32_t rawOffset, UErrorCode& status) { + return TZEnumeration::create(UCAL_ZONE_TYPE_ANY, NULL, &rawOffset, status); +} + +StringEnumeration* U_EXPORT2 +TimeZone::createEnumerationForRegion(const char* region, UErrorCode& status) { + return TZEnumeration::create(UCAL_ZONE_TYPE_ANY, region, NULL, status); +} + +// +// Next 3 methods are equivalent to above, but ignores UErrorCode. +// These methods were deprecated in ICU 70. + StringEnumeration* U_EXPORT2 TimeZone::createEnumeration() { UErrorCode ec = U_ZERO_ERROR; - return TZEnumeration::create(UCAL_ZONE_TYPE_ANY, NULL, NULL, ec); + return createEnumeration(ec); } StringEnumeration* U_EXPORT2 TimeZone::createEnumeration(int32_t rawOffset) { UErrorCode ec = U_ZERO_ERROR; - return TZEnumeration::create(UCAL_ZONE_TYPE_ANY, NULL, &rawOffset, ec); + return createEnumerationForRawOffset(rawOffset, ec); } StringEnumeration* U_EXPORT2 -TimeZone::createEnumeration(const char* country) { +TimeZone::createEnumeration(const char* region) { UErrorCode ec = U_ZERO_ERROR; - return TZEnumeration::create(UCAL_ZONE_TYPE_ANY, country, NULL, ec); + return createEnumerationForRegion(region, ec); } // --------------------------------------- @@ -1106,7 +1125,7 @@ TimeZone::dereferOlsonLink(const UnicodeString& id) { // open the zone bundle by index ures_getByKey(rb, kZONES, rb, &ec); - ures_getByIndex(rb, idx, rb, &ec); + ures_getByIndex(rb, idx, rb, &ec); if (U_SUCCESS(ec)) { if (ures_getType(rb) == URES_INT) { @@ -1244,7 +1263,7 @@ TimeZone::getDisplayName(UBool inDaylight, EDisplayType style, const Locale& loc tzfmt->format(UTZFMT_STYLE_GENERIC_SHORT, *this, date, result, &timeType); break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } // Generic format many use Localized GMT as the final fallback. // When Localized GMT format is used, the result might not be @@ -1272,7 +1291,7 @@ TimeZone::getDisplayName(UBool inDaylight, EDisplayType style, const Locale& loc tzfmt->formatOffsetISO8601Basic(offset, FALSE, FALSE, FALSE, result, status); break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } else { @@ -1287,7 +1306,7 @@ TimeZone::getDisplayName(UBool inDaylight, EDisplayType style, const Locale& loc nameType = inDaylight ? UTZNM_SHORT_DAYLIGHT : UTZNM_SHORT_STANDARD; break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } LocalPointer tznames(TimeZoneNames::createInstance(locale, status)); if (U_FAILURE(status)) { @@ -1691,7 +1710,7 @@ TimeZone::getIDForWindowsID(const UnicodeString& winid, const char* region, Unic const UChar *tzids = ures_getStringByKey(zones, region, &len, &tmperr); // use tmperr, because // regional mapping is optional if (U_SUCCESS(tmperr)) { - // first ID delimited by space is the defasult one + // first ID delimited by space is the default one const UChar *end = u_strchr(tzids, (UChar)0x20); if (end == NULL) { id.setTo(tzids, -1); diff --git a/deps/icu-small/source/i18n/titletrn.cpp b/deps/icu-small/source/i18n/titletrn.cpp index a6beac214915cc..9c39b4676ad1cf 100644 --- a/deps/icu-small/source/i18n/titletrn.cpp +++ b/deps/icu-small/source/i18n/titletrn.cpp @@ -88,7 +88,7 @@ void TitlecaseTransliterator::handleTransliterate( // Our mode; we are either converting letter toTitle or // toLower. UBool doTitle = TRUE; - + // Determine if there is a preceding context of cased case-ignorable*, // in which case we want to start in toLower mode. If the // prior context is anything else (including empty) then start @@ -106,7 +106,7 @@ void TitlecaseTransliterator::handleTransliterate( } // else (type<0) case-ignorable: continue } - + // Convert things after a cased character toLower; things // after an uncased, non-case-ignorable character toTitle. Case-ignorable // characters are copied directly and do not change the mode. diff --git a/deps/icu-small/source/i18n/titletrn.h b/deps/icu-small/source/i18n/titletrn.h index 4e45ac6f81fabc..8409519818af12 100644 --- a/deps/icu-small/source/i18n/titletrn.h +++ b/deps/icu-small/source/i18n/titletrn.h @@ -52,12 +52,12 @@ class TitlecaseTransliterator : public CaseMapTransliterator { * Transliterator API. * @return a copy of the object. */ - virtual TitlecaseTransliterator* clone() const; + virtual TitlecaseTransliterator* clone() const override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -76,7 +76,7 @@ class TitlecaseTransliterator : public CaseMapTransliterator { * pos.contextLimit. Otherwise, assume the text is complete. */ virtual void handleTransliterate(Replaceable& text, UTransPosition& offset, - UBool isIncremental) const; + UBool isIncremental) const override; private: /** diff --git a/deps/icu-small/source/i18n/tmunit.cpp b/deps/icu-small/source/i18n/tmunit.cpp index b96dfbb5726b6f..361aecb92eda33 100644 --- a/deps/icu-small/source/i18n/tmunit.cpp +++ b/deps/icu-small/source/i18n/tmunit.cpp @@ -19,25 +19,25 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TimeUnit) /* * There are only 7 time units. - * So, TimeUnit could be made as singleton + * So, TimeUnit could be made as singleton * (similar to uniset_props.cpp, or unorm.cpp, - * in which a static TimeUnit* array is created, and + * in which a static TimeUnit* array is created, and * the creatInstance() returns a const TimeUnit*). * But the constraint is TimeUnit is a data member of Measure. * But Measure (which is an existing API) does not expect it's "unit" member * as singleton. Meaure takes ownership of the "unit" member. * In its constructor, it does not take a const "unit" pointer. * Also, Measure can clone and destruct the "unit" pointer. - * In order to preserve the old behavior and let Measure handle singleton "unit", - * 1. a flag need to be added in Measure; + * In order to preserve the old behavior and let Measure handle singleton "unit", + * 1. a flag need to be added in Measure; * 2. a new constructor which takes const "unit" as parameter need to be added, * and this new constructor will set the flag on. * 3. clone and destructor need to check upon this flag to distinguish on how - * to handle the "unit". - * + * to handle the "unit". + * * Since TimeUnit is such a light weight object, comparing with the heavy weight * format operation, we decided to avoid the above complication. - * + * * So, both TimeUnit and CurrencyUnit (the 2 subclasses of MeasureUnit) are * immutable and non-singleton. * @@ -45,18 +45,18 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TimeUnit) * If an application needs to create a long list of TimeUnitAmount on the same * time unit but different number, for example, * 1 hour, 2 hour, 3 hour, ................. 10,000 hour, - * there might be performance hit because 10,000 TimeUnit object, + * there might be performance hit because 10,000 TimeUnit object, * although all are the same time unit, will be created in heap and deleted. * * To address this performance issue, if there is any in the future, - * we should and need to change TimeUnitAmount and CurrencyAmount to be + * we should and need to change TimeUnitAmount and CurrencyAmount to be * immutable by allowing a setter on the number. - * Or we need to add 2 parallel mutable classes in order to + * Or we need to add 2 parallel mutable classes in order to * preserve the existing API. * Or we can use freezable. */ -TimeUnit* U_EXPORT2 -TimeUnit::createInstance(TimeUnit::UTimeUnitFields timeUnitField, +TimeUnit* U_EXPORT2 +TimeUnit::createInstance(TimeUnit::UTimeUnitFields timeUnitField, UErrorCode& status) { if (U_FAILURE(status)) { return NULL; @@ -94,15 +94,15 @@ TimeUnit::TimeUnit(TimeUnit::UTimeUnitFields timeUnitField) { initTime("second"); break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } -TimeUnit::TimeUnit(const TimeUnit& other) +TimeUnit::TimeUnit(const TimeUnit& other) : MeasureUnit(other), fTimeUnitField(other.fTimeUnitField) { } -TimeUnit* +TimeUnit* TimeUnit::clone() const { return new TimeUnit(*this); } diff --git a/deps/icu-small/source/i18n/tmutamt.cpp b/deps/icu-small/source/i18n/tmutamt.cpp index a143bcf8f7c2ac..2753c29374a108 100644 --- a/deps/icu-small/source/i18n/tmutamt.cpp +++ b/deps/icu-small/source/i18n/tmutamt.cpp @@ -5,7 +5,7 @@ * Copyright (C) 2008, Google, International Business Machines Corporation and * * others. All Rights Reserved. * ******************************************************************************* - */ + */ #include "unicode/tmutamt.h" @@ -16,17 +16,17 @@ U_NAMESPACE_BEGIN UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TimeUnitAmount) -TimeUnitAmount::TimeUnitAmount(const Formattable& number, +TimeUnitAmount::TimeUnitAmount(const Formattable& number, TimeUnit::UTimeUnitFields timeUnitField, UErrorCode& status) : Measure(number, TimeUnit::createInstance(timeUnitField, status), status) { } -TimeUnitAmount::TimeUnitAmount(double amount, +TimeUnitAmount::TimeUnitAmount(double amount, TimeUnit::UTimeUnitFields timeUnitField, UErrorCode& status) -: Measure(Formattable(amount), +: Measure(Formattable(amount), TimeUnit::createInstance(timeUnitField, status), status) { } @@ -38,24 +38,24 @@ TimeUnitAmount::TimeUnitAmount(const TimeUnitAmount& other) } -TimeUnitAmount& +TimeUnitAmount& TimeUnitAmount::operator=(const TimeUnitAmount& other) { Measure::operator=(other); return *this; } -UBool +bool TimeUnitAmount::operator==(const UObject& other) const { return Measure::operator==(other); } -TimeUnitAmount* +TimeUnitAmount* TimeUnitAmount::clone() const { return new TimeUnitAmount(*this); } - + TimeUnitAmount::~TimeUnitAmount() { } @@ -71,7 +71,7 @@ TimeUnit::UTimeUnitFields TimeUnitAmount::getTimeUnitField() const { return getTimeUnit().getTimeUnitField(); } - + U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/tmutfmt.cpp b/deps/icu-small/source/i18n/tmutfmt.cpp index 231ea5799c3764..057bb634ebbb24 100644 --- a/deps/icu-small/source/i18n/tmutfmt.cpp +++ b/deps/icu-small/source/i18n/tmutfmt.cpp @@ -327,7 +327,7 @@ TimeUnitFormat::setup(UErrorCode& err) { } UnicodeString* pluralCount; while ((pluralCount = const_cast(keywords->snext(err))) != NULL) { - pluralCounts.addElement(pluralCount, err); + pluralCounts.addElementX(pluralCount, err); } readFromCurrentLocale(UTMUTFMT_FULL_STYLE, gUnitsTag, pluralCounts, err); checkConsistency(UTMUTFMT_FULL_STYLE, gUnitsTag, err); @@ -362,7 +362,7 @@ struct TimeUnitFormatReadSink : public ResourceSink { virtual ~TimeUnitFormatReadSink(); - virtual void put(const char *key, ResourceValue &value, UBool, UErrorCode &errorCode) { + virtual void put(const char *key, ResourceValue &value, UBool, UErrorCode &errorCode) override { // Skip all put() calls except the first one -- discard all fallback data. if (beenHere) { return; diff --git a/deps/icu-small/source/i18n/tolowtrn.cpp b/deps/icu-small/source/i18n/tolowtrn.cpp index 02ec05cd52ad7a..289327874e3185 100644 --- a/deps/icu-small/source/i18n/tolowtrn.cpp +++ b/deps/icu-small/source/i18n/tolowtrn.cpp @@ -27,7 +27,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(LowercaseTransliterator) /** * Constructs a transliterator. */ -LowercaseTransliterator::LowercaseTransliterator() : +LowercaseTransliterator::LowercaseTransliterator() : CaseMapTransliterator(UNICODE_STRING("Any-Lower", 9), ucase_toFullLower) { } diff --git a/deps/icu-small/source/i18n/tolowtrn.h b/deps/icu-small/source/i18n/tolowtrn.h index 2fbfb90e1bface..951128ec77eaa3 100644 --- a/deps/icu-small/source/i18n/tolowtrn.h +++ b/deps/icu-small/source/i18n/tolowtrn.h @@ -50,12 +50,12 @@ class LowercaseTransliterator : public CaseMapTransliterator { * Transliterator API. * @return a copy of the object. */ - virtual LowercaseTransliterator* clone() const; + virtual LowercaseTransliterator* clone() const override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. diff --git a/deps/icu-small/source/i18n/toupptrn.h b/deps/icu-small/source/i18n/toupptrn.h index e96ca8f0ba530a..755e9edfcb5748 100644 --- a/deps/icu-small/source/i18n/toupptrn.h +++ b/deps/icu-small/source/i18n/toupptrn.h @@ -50,12 +50,12 @@ class UppercaseTransliterator : public CaseMapTransliterator { * Transliterator API. * @return a copy of the object. */ - virtual UppercaseTransliterator* clone() const; + virtual UppercaseTransliterator* clone() const override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. diff --git a/deps/icu-small/source/i18n/translit.cpp b/deps/icu-small/source/i18n/translit.cpp index c2a15837bedb0d..c7d6b510576d24 100644 --- a/deps/icu-small/source/i18n/translit.cpp +++ b/deps/icu-small/source/i18n/translit.cpp @@ -249,7 +249,7 @@ void Transliterator::transliterate(Replaceable& text) const { * pending transliterations, clients should call {@link * #finishKeyboardTransliteration} after the last call to this * method has been made. - * + * * @param text the buffer holding transliterated and untransliterated text * @param index an array of three integers. * @@ -453,7 +453,7 @@ void Transliterator::filteredTransliterate(Replaceable& text, // the changes made during the pass, extends the pass by one code point, // and tries again. //---------------------------------------------------------------------- - + // globalLimit is the limit value for the entire operation. We // set index.limit to the end of each unfiltered run before // calling handleTransliterate(), so we need to maintain the real @@ -461,7 +461,7 @@ void Transliterator::filteredTransliterate(Replaceable& text, // update globalLimit for insertions or deletions that have // happened. int32_t globalLimit = index.limit; - + // If there is a non-null filter, then break the input text up. Say the // input text has the form: // xxxabcxxdefxx @@ -471,7 +471,7 @@ void Transliterator::filteredTransliterate(Replaceable& text, // Each pass through the loop consumes a run of filtered // characters (which are ignored) and a subsequent run of // unfiltered characters (which are transliterated). - + for (;;) { if (filter != NULL) { @@ -507,7 +507,7 @@ void Transliterator::filteredTransliterate(Replaceable& text, // complete the transliteration for this run. UBool isIncrementalRun = (index.limit < globalLimit ? FALSE : incremental); - + int32_t delta; // Implement rollback. To understand the need for rollback, @@ -933,15 +933,15 @@ Transliterator::createInstance(const UnicodeString& ID, return NULL; } LocalPointer lpGlobalFilter(globalFilter); - + TransliteratorIDParser::instantiateList(list, status); if (U_FAILURE(status)) { return NULL; } - + U_ASSERT(list.size() > 0); Transliterator* t = NULL; - + if (list.size() > 1 || canonID.indexOf(ID_DELIM) >= 0) { // [NOTE: If it's a compoundID, we instantiate a CompoundTransliterator even if it only // has one child transliterator. This is so that toRules() will return the right thing @@ -1093,6 +1093,8 @@ Transliterator::createFromRules(const UnicodeString& ID, } else { UVector transliterators(status); + // TODO ICU-21701 missing U_FAILURE check here. + // Error and nullptr checking through this whole block looks suspect. int32_t passNumber = 1; int32_t limit = parser.idBlockVector.size(); @@ -1108,10 +1110,15 @@ Transliterator::createFromRules(const UnicodeString& ID, delete temp; return nullptr; } - if (temp != NULL && typeid(*temp) != typeid(NullTransliterator)) + if (temp != NULL && typeid(*temp) != typeid(NullTransliterator)) { transliterators.addElement(temp, status); - else + if (U_FAILURE(status)) { + delete temp; + return nullptr; + } + } else { delete temp; + } } } if (!parser.dataVector.isEmpty()) { @@ -1127,6 +1134,13 @@ Transliterator::createFromRules(const UnicodeString& ID, return t; } transliterators.addElement(temprbt, status); + if (U_FAILURE(status)) { + delete temprbt; + return t; + } + // TODO: ICU-21701 the transliterators vector will leak its contents if anything goes wrong. + // Under normal operation, the CompoundTransliterator constructor adopts the + // the contents of the vector. } } @@ -1290,7 +1304,7 @@ void Transliterator::_registerAlias(const UnicodeString& aliasID, /** * Unregisters a transliterator or class. This may be either * a system transliterator or a user transliterator or class. - * + * * @param ID the ID of the transliterator or class * @see #registerInstance @@ -1494,13 +1508,13 @@ UBool Transliterator::initializeRegistry(UErrorCode &status) { * is the ID of the system transliterator being defined. These * are public IDs enumerated by Transliterator.getAvailableIDs(), * unless the second field is "internal". - * + * * is a ResourceReader resource name. Currently these refer * to file names under com/ibm/text/resources. This string is passed * directly to ResourceReader, together with . - * + * * is either "FORWARD" or "REVERSE". - * + * * is a string to be passed directly to * Transliterator.getInstance(). The returned Transliterator object * then has its ID changed to and is returned. @@ -1546,10 +1560,10 @@ UBool Transliterator::initializeRegistry(UErrorCode &status) { // 'file' or 'internal'; // row[2]=resource, row[3]=direction { - + resString = ures_getStringByKey(res, "resource", &len, &lstatus); UBool visible = (type == 0x0066 /*f*/); - UTransDirection dir = + UTransDirection dir = (ures_getUnicodeStringByKey(res, "direction", &lstatus).charAt(0) == 0x0046 /*F*/) ? UTRANS_FORWARD : UTRANS_REVERSE; @@ -1575,7 +1589,7 @@ UBool Transliterator::initializeRegistry(UErrorCode &status) { // Manually add prototypes that the system knows about to the // cache. This is how new non-rule-based transliterators are // added to the system. - + // This is to allow for null pointer check NullTransliterator* tempNullTranslit = new NullTransliterator(); LowercaseTransliterator* tempLowercaseTranslit = new LowercaseTransliterator(); @@ -1589,7 +1603,7 @@ UBool Transliterator::initializeRegistry(UErrorCode &status) { #endif // Check for null pointers if (tempNullTranslit == NULL || tempLowercaseTranslit == NULL || tempUppercaseTranslit == NULL || - tempTitlecaseTranslit == NULL || tempUnicodeTranslit == NULL || + tempTitlecaseTranslit == NULL || tempUnicodeTranslit == NULL || #if !UCONFIG_NO_BREAK_ITERATION tempBreakTranslit == NULL || #endif diff --git a/deps/icu-small/source/i18n/transreg.cpp b/deps/icu-small/source/i18n/transreg.cpp index 8c90effcc2a348..726ad56f0f6f20 100644 --- a/deps/icu-small/source/i18n/transreg.cpp +++ b/deps/icu-small/source/i18n/transreg.cpp @@ -154,22 +154,23 @@ Transliterator* TransliteratorAlias::create(UParseError& pe, pos = aliasesOrRules.indexOf(noIDBlock, pos + 1); } - UVector transliterators(ec); + UVector transliterators(uprv_deleteUObject, nullptr, ec); UnicodeString idBlock; int32_t blockSeparatorPos = aliasesOrRules.indexOf((UChar)(0xffff)); while (blockSeparatorPos >= 0) { aliasesOrRules.extract(0, blockSeparatorPos, idBlock); aliasesOrRules.remove(0, blockSeparatorPos + 1); if (!idBlock.isEmpty()) - transliterators.addElement(Transliterator::createInstance(idBlock, UTRANS_FORWARD, pe, ec), ec); + transliterators.adoptElement(Transliterator::createInstance(idBlock, UTRANS_FORWARD, pe, ec), ec); if (!transes->isEmpty()) - transliterators.addElement(transes->orphanElementAt(0), ec); + transliterators.adoptElement(transes->orphanElementAt(0), ec); blockSeparatorPos = aliasesOrRules.indexOf((UChar)(0xffff)); } if (!aliasesOrRules.isEmpty()) - transliterators.addElement(Transliterator::createInstance(aliasesOrRules, UTRANS_FORWARD, pe, ec), ec); + transliterators.adoptElement(Transliterator::createInstance(aliasesOrRules, UTRANS_FORWARD, pe, ec), ec); while (!transes->isEmpty()) - transliterators.addElement(transes->orphanElementAt(0), ec); + transliterators.adoptElement(transes->orphanElementAt(0), ec); + transliterators.setDeleter(nullptr); if (U_SUCCESS(ec)) { t = new CompoundTransliterator(ID, transliterators, @@ -186,7 +187,7 @@ Transliterator* TransliteratorAlias::create(UParseError& pe, } break; case RULES: - UPRV_UNREACHABLE; // don't call create() if isRuleBased() returns TRUE! + UPRV_UNREACHABLE_EXIT; // don't call create() if isRuleBased() returns TRUE! } return t; } @@ -543,7 +544,7 @@ TransliteratorRegistry::TransliteratorRegistry(UErrorCode& status) : variantList.setComparer(uhash_compareCaselessUnicodeString); UnicodeString *emptyString = new UnicodeString(); if (emptyString != NULL) { - variantList.addElement(emptyString, status); + variantList.adoptElement(emptyString, status); } availableIDs.setDeleter(uprv_deleteUObject); availableIDs.setComparer(uhash_compareCaselessUnicodeString); @@ -592,7 +593,7 @@ Transliterator* TransliteratorRegistry::reget(const UnicodeString& ID, if (entry->entryType == TransliteratorEntry::RULES_FORWARD || entry->entryType == TransliteratorEntry::RULES_REVERSE || entry->entryType == TransliteratorEntry::LOCALE_RULES) { - + if (parser.idBlockVector.isEmpty() && parser.dataVector.isEmpty()) { entry->u.data = 0; entry->entryType = TransliteratorEntry::ALIAS; @@ -611,6 +612,8 @@ Transliterator* TransliteratorRegistry::reget(const UnicodeString& ID, entry->entryType = TransliteratorEntry::COMPOUND_RBT; entry->compoundFilter = parser.orphanCompoundFilter(); entry->u.dataVector = new UVector(status); + // TODO ICU-21701: missing check for nullptr and failed status. + // Unclear how best to bail out. entry->stringArg.remove(); int32_t limit = parser.idBlockVector.size(); @@ -626,6 +629,9 @@ Transliterator* TransliteratorRegistry::reget(const UnicodeString& ID, if (!parser.dataVector.isEmpty()) { TransliterationRuleData* data = (TransliterationRuleData*)parser.dataVector.orphanElementAt(0); entry->u.dataVector->addElement(data, status); + if (U_FAILURE(status)) { + delete data; + } entry->stringArg += (UChar)0xffff; // use U+FFFF to mark position of RBTs in ID block } } @@ -951,7 +957,7 @@ void TransliteratorRegistry::registerEntry(const UnicodeString& ID, if (newID != NULL) { // NUL-terminate the ID string newID->getTerminatedBuffer(); - availableIDs.addElement(newID, status); + availableIDs.adoptElement(newID, status); } } } else { @@ -992,7 +998,7 @@ void TransliteratorRegistry::registerSTV(const UnicodeString& source, } UnicodeString *variantEntry = new UnicodeString(variant); if (variantEntry != NULL) { - variantList.addElement(variantEntry, status); + variantList.adoptElement(variantEntry, status); if (U_SUCCESS(status)) { variantListIndex = variantList.size() - 1; } @@ -1194,12 +1200,12 @@ TransliteratorEntry* TransliteratorRegistry::find(const UnicodeString& ID) { * Top-level find method. Attempt to find a source-target/variant in * either the dynamic or the static (locale resource) store. Perform * fallback. - * + * * Lookup sequence for ss_SS_SSS-tt_TT_TTT/v: * * ss_SS_SSS-tt_TT_TTT/v -- in hashtable * ss_SS_SSS-tt_TT_TTT/v -- in ss_SS_SSS (no fallback) - * + * * repeat with t = tt_TT_TTT, tt_TT, tt, and tscript * * ss_SS_SSS-t/ * @@ -1214,7 +1220,7 @@ TransliteratorEntry* TransliteratorRegistry::find(const UnicodeString& ID) { TransliteratorEntry* TransliteratorRegistry::find(UnicodeString& source, UnicodeString& target, UnicodeString& variant) { - + TransliteratorSpec src(source); TransliteratorSpec trg(target); TransliteratorEntry* entry; @@ -1232,13 +1238,13 @@ TransliteratorEntry* TransliteratorRegistry::find(UnicodeString& source, } if (variant.length() != 0) { - + // Seek exact match in hashtable entry = findInDynamicStore(src, trg, variant); if (entry != 0) { return entry; } - + // Seek exact match in locale resources entry = findInStaticStore(src, trg, variant); if (entry != 0) { @@ -1254,7 +1260,7 @@ TransliteratorEntry* TransliteratorRegistry::find(UnicodeString& source, if (entry != 0) { return entry; } - + // Seek match in locale resources entry = findInStaticStore(src, trg, NO_VARIANT); if (entry != 0) { @@ -1320,7 +1326,7 @@ Transliterator* TransliteratorRegistry::instantiateEntry(const UnicodeString& ID return t; case TransliteratorEntry::COMPOUND_RBT: { - UVector* rbts = new UVector(entry->u.dataVector->size(), status); + UVector* rbts = new UVector(uprv_deleteUObject, nullptr, entry->u.dataVector->size(), status); // Check for null pointer if (rbts == NULL) { status = U_MEMORY_ALLOCATION_ERROR; @@ -1334,12 +1340,13 @@ Transliterator* TransliteratorRegistry::instantiateEntry(const UnicodeString& ID if (tl == 0) status = U_MEMORY_ALLOCATION_ERROR; else - rbts->addElement(tl, status); + rbts->adoptElement(tl, status); } if (U_FAILURE(status)) { delete rbts; return 0; } + rbts->setDeleter(nullptr); aliasReturn = new TransliteratorAlias(ID, entry->stringArg, rbts, entry->compoundFilter); } if (aliasReturn == 0) { @@ -1360,7 +1367,7 @@ Transliterator* TransliteratorRegistry::instantiateEntry(const UnicodeString& ID // we modify the registry with the parsed data and retry. { TransliteratorParser parser(status); - + // We use the file name, taken from another resource bundle // 2-d array at static init time, as a locale language. We're // just using the locale mechanism to map through to a file @@ -1369,7 +1376,7 @@ Transliterator* TransliteratorRegistry::instantiateEntry(const UnicodeString& ID //UResourceBundle *bundle = ures_openDirect(0, ch, &status); UnicodeString rules = entry->stringArg; //ures_close(bundle); - + //if (U_FAILURE(status)) { // We have a failure of some kind. Remove the ID from the // registry so we don't keep trying. NOTE: This will throw off @@ -1379,7 +1386,7 @@ Transliterator* TransliteratorRegistry::instantiateEntry(const UnicodeString& ID // or unrecoverable run time memory failures. // remove(ID); //} else { - + // If the status indicates a failure, then we don't have any // rules -- there is probably an installation error. The list // in the root locale should correspond to all the installed @@ -1395,7 +1402,7 @@ Transliterator* TransliteratorRegistry::instantiateEntry(const UnicodeString& ID } return 0; default: - UPRV_UNREACHABLE; // can't get here + UPRV_UNREACHABLE_EXIT; // can't get here } } U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/transreg.h b/deps/icu-small/source/i18n/transreg.h index 0a0698862be1ac..686e62ae33cd33 100644 --- a/deps/icu-small/source/i18n/transreg.h +++ b/deps/icu-small/source/i18n/transreg.h @@ -103,7 +103,7 @@ class TransliteratorAlias : public UMemory { // null, zero, empty. // 2. CompoundRBT // Here ID is the ID, aliasID is the idBlock, trans is the - // contained RBT, and idSplitPoint is the offet in aliasID + // contained RBT, and idSplitPoint is the offset in aliasID // where the contained RBT goes. compoundFilter is the // compound filter, and it is _not_ owned. // 3. Rules @@ -170,7 +170,7 @@ class TransliteratorRegistry : public UMemory { * @param ID the given ID * @param aliasReturn output param to receive TransliteratorAlias; * should be NULL on entry - * @param parseError Struct to recieve information on position + * @param parseError Struct to receive information on position * of error if an error is encountered * @param status Output param set to success/failure code. */ @@ -293,7 +293,7 @@ class TransliteratorRegistry : public UMemory { * Return a registered source specifier. * @param index which specifier to return, from 0 to n-1, where * n = countAvailableSources() - * @param result fill-in paramter to receive the source specifier. + * @param result fill-in parameter to receive the source specifier. * If index is out of range, result will be empty. * @return reference to result */ @@ -314,7 +314,7 @@ class TransliteratorRegistry : public UMemory { * @param index which specifier to return, from 0 to n-1, where * n = countAvailableTargets(source) * @param source the source specifier - * @param result fill-in paramter to receive the target specifier. + * @param result fill-in parameter to receive the target specifier. * If source is invalid or if index is out of range, result will * be empty. * @return reference to result @@ -345,7 +345,7 @@ class TransliteratorRegistry : public UMemory { * n = countAvailableVariants(source, target) * @param source the source specifier * @param target the target specifier - * @param result fill-in paramter to receive the variant + * @param result fill-in parameter to receive the variant * specifier. If source is invalid or if target is invalid or if * index is out of range, result will be empty. * @return reference to result @@ -417,11 +417,11 @@ class TransliteratorRegistry : public UMemory { public: Enumeration(const TransliteratorRegistry& reg); virtual ~Enumeration(); - virtual int32_t count(UErrorCode& status) const; - virtual const UnicodeString* snext(UErrorCode& status); - virtual void reset(UErrorCode& status); + virtual int32_t count(UErrorCode& status) const override; + virtual const UnicodeString* snext(UErrorCode& status) override; + virtual void reset(UErrorCode& status) override; static UClassID U_EXPORT2 getStaticClassID(); - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; private: int32_t index; const TransliteratorRegistry& reg; diff --git a/deps/icu-small/source/i18n/tridpars.cpp b/deps/icu-small/source/i18n/tridpars.cpp index eb6c6bbba3a9a9..0ca168e7a3e30b 100644 --- a/deps/icu-small/source/i18n/tridpars.cpp +++ b/deps/icu-small/source/i18n/tridpars.cpp @@ -153,10 +153,10 @@ TransliteratorIDParser::parseSingleID(const UnicodeString& id, int32_t& pos, single = specsToID(specsA, FORWARD); // Null pointers check if (b == NULL || single == NULL) { - delete b; - delete single; - status = U_MEMORY_ALLOCATION_ERROR; - return NULL; + delete b; + delete single; + status = U_MEMORY_ALLOCATION_ERROR; + return NULL; } single->canonID.append(OPEN_REV) .append(b->canonID).append(CLOSE_REV); @@ -169,10 +169,10 @@ TransliteratorIDParser::parseSingleID(const UnicodeString& id, int32_t& pos, single = specsToID(specsB, FORWARD); // Check for null pointer. if (a == NULL || single == NULL) { - delete a; - delete single; - status = U_MEMORY_ALLOCATION_ERROR; - return NULL; + delete a; + delete single; + status = U_MEMORY_ALLOCATION_ERROR; + return NULL; } single->canonID.append(OPEN_REV) .append(a->canonID).append(CLOSE_REV); @@ -193,8 +193,8 @@ TransliteratorIDParser::parseSingleID(const UnicodeString& id, int32_t& pos, } // Check for NULL pointer if (single == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; - return NULL; + status = U_MEMORY_ALLOCATION_ERROR; + return NULL; } single->filter = specsA->filter; } @@ -364,6 +364,8 @@ UBool TransliteratorIDParser::parseCompoundID(const UnicodeString& id, int32_t d int32_t pos = 0; int32_t withParens = 1; list.removeAllElements(); + UObjectDeleter *save = list.setDeleter(_deleteSingleID); + UnicodeSet* filter; globalFilter = NULL; canonID.truncate(0); @@ -392,7 +394,7 @@ UBool TransliteratorIDParser::parseCompoundID(const UnicodeString& id, int32_t d break; } if (dir == FORWARD) { - list.addElement(single, ec); + list.adoptElement(single, ec); } else { list.insertElementAt(single, 0, ec); } @@ -442,10 +444,10 @@ UBool TransliteratorIDParser::parseCompoundID(const UnicodeString& id, int32_t d goto FAIL; } + list.setDeleter(save); return TRUE; FAIL: - UObjectDeleter *save = list.setDeleter(_deleteSingleID); list.removeAllElements(); list.setDeleter(save); delete globalFilter; @@ -494,9 +496,8 @@ void TransliteratorIDParser::instantiateList(UVector& list, ec = U_INVALID_ID; goto RETURN; } - tlist.addElement(t, ec); + tlist.adoptElement(t, ec); if (U_FAILURE(ec)) { - delete t; goto RETURN; } } @@ -509,10 +510,7 @@ void TransliteratorIDParser::instantiateList(UVector& list, // Should never happen ec = U_INTERNAL_TRANSLITERATOR_ERROR; } - tlist.addElement(t, ec); - if (U_FAILURE(ec)) { - delete t; - } + tlist.adoptElement(t, ec); } RETURN: @@ -525,9 +523,8 @@ void TransliteratorIDParser::instantiateList(UVector& list, while (tlist.size() > 0) { t = (Transliterator*) tlist.orphanElementAt(0); - list.addElement(t, ec); + list.adoptElement(t, ec); if (U_FAILURE(ec)) { - delete t; list.removeAllElements(); break; } @@ -664,16 +661,16 @@ void TransliteratorIDParser::registerSpecialInverse(const UnicodeString& target, UnicodeString *tempus = new UnicodeString(inverseTarget); // Used for null pointer check before usage. if (tempus == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; - return; + status = U_MEMORY_ALLOCATION_ERROR; + return; } SPECIAL_INVERSES->put(target, tempus, status); if (bidirectional) { - tempus = new UnicodeString(target); - if (tempus == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; - return; - } + tempus = new UnicodeString(target); + if (tempus == NULL) { + status = U_MEMORY_ALLOCATION_ERROR; + return; + } SPECIAL_INVERSES->put(inverseTarget, tempus, status); } } @@ -911,8 +908,8 @@ void U_CALLCONV TransliteratorIDParser::init(UErrorCode &status) { SPECIAL_INVERSES = new Hashtable(TRUE, status); if (SPECIAL_INVERSES == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; - return; + status = U_MEMORY_ALLOCATION_ERROR; + return; } SPECIAL_INVERSES->setValueDeleter(uprv_deleteUObject); } diff --git a/deps/icu-small/source/i18n/tridpars.h b/deps/icu-small/source/i18n/tridpars.h index cd56146023162f..03d68ccac910c9 100644 --- a/deps/icu-small/source/i18n/tridpars.h +++ b/deps/icu-small/source/i18n/tridpars.h @@ -61,7 +61,7 @@ class TransliteratorIDParser /* not : public UObject because all methods are sta * 'sawSource' is true if there was an explicit source in the * parsed id. If there was no explicit source, then an implied * source of ANY is returned and 'sawSource' is set to false. - * + * * 'filter' is the parsed filter pattern, or null if there was no * filter. */ @@ -222,7 +222,7 @@ class TransliteratorIDParser /* not : public UObject because all methods are sta * @param source the given source. * @param target the given target. * @param variant the given variant - * @param isSourcePresent If true then the source is present. + * @param isSourcePresent If true then the source is present. * If the source is not present, ANY will be * given as the source, and isSourcePresent will be null * @return an array of 4 strings: source, target, variant, and diff --git a/deps/icu-small/source/i18n/tzfmt.cpp b/deps/icu-small/source/i18n/tzfmt.cpp index e70005a384085e..ef3cfad80ce1d6 100644 --- a/deps/icu-small/source/i18n/tzfmt.cpp +++ b/deps/icu-small/source/i18n/tzfmt.cpp @@ -106,7 +106,7 @@ static const UChar ALT_GMT_STRINGS[][4] = { }; // Order of GMT offset pattern parsing, *_HMS must be evaluated first -// because *_HM is most likely a substring of *_HMS +// because *_HM is most likely a substring of *_HMS static const int32_t PARSE_GMT_OFFSET_TYPES[] = { UTZFMT_PAT_POSITIVE_HMS, UTZFMT_PAT_NEGATIVE_HMS, @@ -270,7 +270,7 @@ GMTOffsetField::isValid(FieldType type, int32_t width) { case SECOND: return (width == 2); default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } return (width > 0); } @@ -296,7 +296,7 @@ inline uint8_t GMTOffsetField::getWidth() const { return fWidth; } - + inline const UChar* GMTOffsetField::getPatternText(void) const { return fText; @@ -316,7 +316,7 @@ U_CDECL_END // ------------------------------------------------------------------ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TimeZoneFormat) -TimeZoneFormat::TimeZoneFormat(const Locale& locale, UErrorCode& status) +TimeZoneFormat::TimeZoneFormat(const Locale& locale, UErrorCode& status) : fLocale(locale), fTimeZoneNames(NULL), fTimeZoneGenericNames(NULL), fDefParseOptionFlags(0), fTZDBTimeZoneNames(NULL) { @@ -482,11 +482,11 @@ TimeZoneFormat::operator=(const TimeZoneFormat& other) { } -UBool +bool TimeZoneFormat::operator==(const Format& other) const { TimeZoneFormat* tzfmt = (TimeZoneFormat*)&other; - UBool isEqual = + bool isEqual = fLocale == tzfmt->fLocale && fGMTPattern == tzfmt->fGMTPattern && fGMTZeroFormat == tzfmt->fGMTZeroFormat @@ -555,7 +555,7 @@ TimeZoneFormat::getDefaultParseOptions(void) const { } -UnicodeString& +UnicodeString& TimeZoneFormat::getGMTPattern(UnicodeString& pattern) const { return pattern.setTo(fGMTPattern); } @@ -595,7 +595,7 @@ TimeZoneFormat::setGMTOffsetPattern(UTimeZoneFormatGMTOffsetPatternType type, co required = FIELDS_HMS; break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } UVector* patternItems = parseOffsetPattern(pattern, required, status); @@ -828,7 +828,7 @@ TimeZoneFormat::parse(UTimeZoneFormatStyle style, const UnicodeString& text, Par int32_t offset; // Styles using localized GMT format as fallback - UBool fallbackLocalizedGMT = + UBool fallbackLocalizedGMT = (style == UTZFMT_STYLE_SPECIFIC_LONG || style == UTZFMT_STYLE_GENERIC_LONG || style == UTZFMT_STYLE_GENERIC_LOCATION); UBool fallbackShortLocalizedGMT = (style == UTZFMT_STYLE_SPECIFIC_SHORT || style == UTZFMT_STYLE_GENERIC_SHORT); @@ -1033,7 +1033,7 @@ TimeZoneFormat::parse(UTimeZoneFormatStyle style, const UnicodeString& text, Par break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } int32_t len = 0; @@ -2459,7 +2459,7 @@ TimeZoneFormat::parseOffsetPattern(const UnicodeString& pattern, OffsetFields re if (itemType != GMTOffsetField::TEXT) { if (GMTOffsetField::isValid(itemType, itemLength)) { GMTOffsetField* fld = GMTOffsetField::createTimeField(itemType, static_cast(itemLength), status); - result->addElement(fld, status); + result->addElementX(fld, status); if (U_FAILURE(status)) { break; } @@ -2485,7 +2485,7 @@ TimeZoneFormat::parseOffsetPattern(const UnicodeString& pattern, OffsetFields re if (itemType == GMTOffsetField::TEXT) { if (text.length() > 0) { GMTOffsetField* textfld = GMTOffsetField::createText(text, status); - result->addElement(textfld, status); + result->addElementX(textfld, status); if (U_FAILURE(status)) { break; } @@ -2494,7 +2494,7 @@ TimeZoneFormat::parseOffsetPattern(const UnicodeString& pattern, OffsetFields re } else { if (GMTOffsetField::isValid(itemType, itemLength)) { GMTOffsetField* fld = GMTOffsetField::createTimeField(itemType, static_cast(itemLength), status); - result->addElement(fld, status); + result->addElementX(fld, status); if (U_FAILURE(status)) { break; } @@ -2512,7 +2512,7 @@ TimeZoneFormat::parseOffsetPattern(const UnicodeString& pattern, OffsetFields re if (itemType != GMTOffsetField::TEXT) { if (GMTOffsetField::isValid(itemType, itemLength)) { GMTOffsetField* fld = GMTOffsetField::createTimeField(itemType, static_cast(itemLength), status); - result->addElement(fld, status); + result->addElementX(fld, status); if (U_FAILURE(status)) { break; } @@ -2532,12 +2532,12 @@ TimeZoneFormat::parseOffsetPattern(const UnicodeString& pattern, OffsetFields re if (itemType == GMTOffsetField::TEXT) { if (text.length() > 0) { GMTOffsetField* tfld = GMTOffsetField::createText(text, status); - result->addElement(tfld, status); + result->addElementX(tfld, status); } } else { if (GMTOffsetField::isValid(itemType, itemLength)) { GMTOffsetField* fld = GMTOffsetField::createTimeField(itemType, static_cast(itemLength), status); - result->addElement(fld, status); + result->addElementX(fld, status); } else { status = U_ILLEGAL_ARGUMENT_ERROR; } @@ -2729,7 +2729,7 @@ class ZoneIdMatchHandler : public TextTrieMapSearchResultHandler { ZoneIdMatchHandler(); virtual ~ZoneIdMatchHandler(); - UBool handleMatch(int32_t matchLength, const CharacterNode *node, UErrorCode &status); + UBool handleMatch(int32_t matchLength, const CharacterNode *node, UErrorCode &status) override; const UChar* getID(); int32_t getMatchLen(); private: @@ -2737,7 +2737,7 @@ class ZoneIdMatchHandler : public TextTrieMapSearchResultHandler { const UChar* fID; }; -ZoneIdMatchHandler::ZoneIdMatchHandler() +ZoneIdMatchHandler::ZoneIdMatchHandler() : fLen(0), fID(NULL) { } @@ -2780,15 +2780,17 @@ static void U_CALLCONV initZoneIdTrie(UErrorCode &status) { status = U_MEMORY_ALLOCATION_ERROR; return; } - StringEnumeration *tzenum = TimeZone::createEnumeration(); - const UnicodeString *id; - while ((id = tzenum->snext(status)) != NULL) { - const UChar* uid = ZoneMeta::findTimeZoneID(*id); - if (uid) { - gZoneIdTrie->put(uid, const_cast(uid), status); + StringEnumeration *tzenum = TimeZone::createEnumeration(status); + if (U_SUCCESS(status)) { + const UnicodeString *id; + while ((id = tzenum->snext(status)) != NULL) { + const UChar* uid = ZoneMeta::findTimeZoneID(*id); + if (uid) { + gZoneIdTrie->put(uid, const_cast(uid), status); + } } + delete tzenum; } - delete tzenum; } @@ -2803,7 +2805,7 @@ TimeZoneFormat::parseZoneID(const UnicodeString& text, ParsePosition& pos, Unico if (U_SUCCESS(status)) { LocalPointer handler(new ZoneIdMatchHandler()); - gZoneIdTrie->search(text, start, handler.getAlias(), status); + gZoneIdTrie->search(text, start, handler.getAlias(), status); len = handler->getMatchLen(); if (len > 0) { tzID.setTo(handler->getID(), -1); @@ -2853,7 +2855,7 @@ TimeZoneFormat::parseShortZoneID(const UnicodeString& text, ParsePosition& pos, if (U_SUCCESS(status)) { LocalPointer handler(new ZoneIdMatchHandler()); - gShortZoneIdTrie->search(text, start, handler.getAlias(), status); + gShortZoneIdTrie->search(text, start, handler.getAlias(), status); len = handler->getMatchLen(); if (len > 0) { tzID.setTo(handler->getID(), -1); diff --git a/deps/icu-small/source/i18n/tzgnames.cpp b/deps/icu-small/source/i18n/tzgnames.cpp index e056461dc30a63..ed5f42d7bc1d6d 100644 --- a/deps/icu-small/source/i18n/tzgnames.cpp +++ b/deps/icu-small/source/i18n/tzgnames.cpp @@ -195,7 +195,7 @@ class GNameSearchHandler : public TextTrieMapSearchResultHandler { GNameSearchHandler(uint32_t types); virtual ~GNameSearchHandler(); - UBool handleMatch(int32_t matchLength, const CharacterNode *node, UErrorCode &status); + UBool handleMatch(int32_t matchLength, const CharacterNode *node, UErrorCode &status) override; UVector* getMatches(int32_t& maxMatchLen); private: @@ -244,7 +244,7 @@ GNameSearchHandler::handleMatch(int32_t matchLength, const CharacterNode *node, gmatch->gnameInfo = nameinfo; gmatch->matchLength = matchLength; gmatch->timeType = UTZFMT_TIME_TYPE_UNKNOWN; - fResults->addElement(gmatch, status); + fResults->addElementX(gmatch, status); if (U_FAILURE(status)) { uprv_free(gmatch); } else { @@ -328,7 +328,7 @@ class TZGNCore : public UMemory { // --------------------------------------------------- -// TZGNCore - core implmentation of TimeZoneGenericNames +// TZGNCore - core implementation of TimeZoneGenericNames // // TimeZoneGenericNames is parallel to TimeZoneNames, // but handles run-time generated time zone names. @@ -554,7 +554,7 @@ TZGNCore::getGenericLocationName(const UnicodeString& tzCanonicalID) { // If this is not the primary zone in the country, // use the exemplar city name. - // getExemplarLocationName should retur non-empty string + // getExemplarLocationName should return non-empty string // if the time zone is associated with a region UnicodeString city; @@ -1287,7 +1287,7 @@ TimeZoneGenericNames::createInstance(const Locale& locale, UErrorCode& status) { return instance; } -UBool +bool TimeZoneGenericNames::operator==(const TimeZoneGenericNames& other) const { // Just compare if the other object also use the same // ref entry diff --git a/deps/icu-small/source/i18n/tzgnames.h b/deps/icu-small/source/i18n/tzgnames.h index bcdf0f399ba8a1..26112c5db65f70 100644 --- a/deps/icu-small/source/i18n/tzgnames.h +++ b/deps/icu-small/source/i18n/tzgnames.h @@ -10,8 +10,8 @@ #define __TZGNAMES_H /** - * \file - * \brief C API: Time zone generic names classe + * \file + * \brief C API: Time zone generic names classes */ #include "unicode/utypes.h" @@ -45,8 +45,8 @@ class U_I18N_API TimeZoneGenericNames : public UMemory { static TimeZoneGenericNames* createInstance(const Locale& locale, UErrorCode& status); - virtual UBool operator==(const TimeZoneGenericNames& other) const; - virtual UBool operator!=(const TimeZoneGenericNames& other) const {return !operator==(other);} + virtual bool operator==(const TimeZoneGenericNames& other) const; + virtual bool operator!=(const TimeZoneGenericNames& other) const {return !operator==(other);} virtual TimeZoneGenericNames* clone() const; UnicodeString& getDisplayName(const TimeZone& tz, UTimeZoneGenericNameType type, diff --git a/deps/icu-small/source/i18n/tznames.cpp b/deps/icu-small/source/i18n/tznames.cpp index d789c123630260..5c504d01cb6342 100644 --- a/deps/icu-small/source/i18n/tznames.cpp +++ b/deps/icu-small/source/i18n/tznames.cpp @@ -104,24 +104,24 @@ class TimeZoneNamesDelegate : public TimeZoneNames { TimeZoneNamesDelegate(const Locale& locale, UErrorCode& status); virtual ~TimeZoneNamesDelegate(); - virtual UBool operator==(const TimeZoneNames& other) const; - virtual UBool operator!=(const TimeZoneNames& other) const {return !operator==(other);} - virtual TimeZoneNamesDelegate* clone() const; + virtual bool operator==(const TimeZoneNames& other) const override; + virtual bool operator!=(const TimeZoneNames& other) const {return !operator==(other);} + virtual TimeZoneNamesDelegate* clone() const override; - StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const; - StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const; - UnicodeString& getMetaZoneID(const UnicodeString& tzID, UDate date, UnicodeString& mzID) const; - UnicodeString& getReferenceZoneID(const UnicodeString& mzID, const char* region, UnicodeString& tzID) const; + StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const override; + StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const override; + UnicodeString& getMetaZoneID(const UnicodeString& tzID, UDate date, UnicodeString& mzID) const override; + UnicodeString& getReferenceZoneID(const UnicodeString& mzID, const char* region, UnicodeString& tzID) const override; - UnicodeString& getMetaZoneDisplayName(const UnicodeString& mzID, UTimeZoneNameType type, UnicodeString& name) const; - UnicodeString& getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UnicodeString& name) const; + UnicodeString& getMetaZoneDisplayName(const UnicodeString& mzID, UTimeZoneNameType type, UnicodeString& name) const override; + UnicodeString& getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UnicodeString& name) const override; - UnicodeString& getExemplarLocationName(const UnicodeString& tzID, UnicodeString& name) const; + UnicodeString& getExemplarLocationName(const UnicodeString& tzID, UnicodeString& name) const override; - void loadAllDisplayNames(UErrorCode& status); - void getDisplayNames(const UnicodeString& tzID, const UTimeZoneNameType types[], int32_t numTypes, UDate date, UnicodeString dest[], UErrorCode& status) const; + void loadAllDisplayNames(UErrorCode& status) override; + void getDisplayNames(const UnicodeString& tzID, const UTimeZoneNameType types[], int32_t numTypes, UDate date, UnicodeString dest[], UErrorCode& status) const override; - MatchInfoCollection* find(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const; + MatchInfoCollection* find(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const override; private: TimeZoneNamesDelegate(); TimeZoneNamesCacheEntry* fTZnamesCacheEntry; @@ -219,10 +219,10 @@ TimeZoneNamesDelegate::~TimeZoneNamesDelegate() { umtx_unlock(&gTimeZoneNamesLock); } -UBool +bool TimeZoneNamesDelegate::operator==(const TimeZoneNames& other) const { if (this == &other) { - return TRUE; + return true; } // Just compare if the other object also use the same // cache entry @@ -230,7 +230,7 @@ TimeZoneNamesDelegate::operator==(const TimeZoneNames& other) const { if (rhs) { return fTZnamesCacheEntry == rhs->fTZnamesCacheEntry; } - return FALSE; + return false; } TimeZoneNamesDelegate* @@ -345,7 +345,7 @@ TimeZoneNames::getDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, return name; } -// Empty default implementation, to be overriden in tznames_impl.cpp. +// Empty default implementation, to be overridden in tznames_impl.cpp. void TimeZoneNames::loadAllDisplayNames(UErrorCode& /*status*/) { } @@ -419,7 +419,7 @@ TimeZoneNames::MatchInfoCollection::addZone(UTimeZoneNameType nameType, int32_t status = U_MEMORY_ALLOCATION_ERROR; return; } - matches(status)->addElement(matchInfo, status); + matches(status)->addElementX(matchInfo, status); if (U_FAILURE(status)) { delete matchInfo; } @@ -436,7 +436,7 @@ TimeZoneNames::MatchInfoCollection::addMetaZone(UTimeZoneNameType nameType, int3 status = U_MEMORY_ALLOCATION_ERROR; return; } - matches(status)->addElement(matchInfo, status); + matches(status)->addElementX(matchInfo, status); if (U_FAILURE(status)) { delete matchInfo; } diff --git a/deps/icu-small/source/i18n/tznames_impl.cpp b/deps/icu-small/source/i18n/tznames_impl.cpp index 180b7fefbf3623..d450b7456489bf 100644 --- a/deps/icu-small/source/i18n/tznames_impl.cpp +++ b/deps/icu-small/source/i18n/tznames_impl.cpp @@ -155,12 +155,12 @@ CharacterNode::addValue(void *value, UObjectDeleter *valueDeleter, UErrorCode &s } return; } - values->addElement(fValues, status); + values->addElementX(fValues, status); fValues = values; fHasValuesVector = TRUE; } // Add the new value. - ((UVector *)fValues)->addElement(value, status); + ((UVector *)fValues)->addElementX(value, status); } } @@ -174,7 +174,7 @@ TextTrieMapSearchResultHandler::~TextTrieMapSearchResultHandler(){ // TextTrieMap class implementation // --------------------------------------------------- TextTrieMap::TextTrieMap(UBool ignoreCase, UObjectDeleter *valueDeleter) -: fIgnoreCase(ignoreCase), fNodes(NULL), fNodesCapacity(0), fNodesCount(0), +: fIgnoreCase(ignoreCase), fNodes(NULL), fNodesCapacity(0), fNodesCount(0), fLazyContents(NULL), fIsEmpty(TRUE), fValueDeleter(valueDeleter) { } @@ -189,7 +189,7 @@ TextTrieMap::~TextTrieMap() { if (fValueDeleter) { fValueDeleter(fLazyContents->elementAt(i+1)); } - } + } delete fLazyContents; } } @@ -206,7 +206,7 @@ int32_t TextTrieMap::isEmpty() const { // We defer actually building the TextTrieMap node structure until the first time a // search is performed. put() simply saves the parameters in case we do // eventually need to build it. -// +// void TextTrieMap::put(const UnicodeString &key, void *value, ZNStringPool &sp, UErrorCode &status) { const UChar *s = sp.get(key, status); @@ -233,7 +233,7 @@ TextTrieMap::put(const UChar *key, void *value, UErrorCode &status) { U_ASSERT(fLazyContents != NULL); UChar *s = const_cast(key); - fLazyContents->addElement(s, status); + fLazyContents->addElementX(s, status); if (U_FAILURE(status)) { if (fValueDeleter) { fValueDeleter((void*) key); @@ -241,7 +241,7 @@ TextTrieMap::put(const UChar *key, void *value, UErrorCode &status) { return; } - fLazyContents->addElement(value, status); + fLazyContents->addElementX(value, status); } void @@ -373,7 +373,7 @@ void TextTrieMap::buildTrie(UErrorCode &status) { putImpl(keyString, val, status); } delete fLazyContents; - fLazyContents = NULL; + fLazyContents = NULL; } } @@ -470,9 +470,9 @@ ZNStringPool::ZNStringPool(UErrorCode &status) { return; } - fHash = uhash_open(uhash_hashUChars /* keyHash */, - uhash_compareUChars /* keyComp */, - uhash_compareUChars /* valueComp */, + fHash = uhash_open(uhash_hashUChars /* keyHash */, + uhash_compareUChars /* keyComp */, + uhash_compareUChars /* valueComp */, &status); if (U_FAILURE(status)) { return; @@ -521,19 +521,19 @@ const UChar *ZNStringPool::get(const UChar *s, UErrorCode &status) { } fChunks->fNext = oldChunk; } - + UChar *destString = &fChunks->fStrings[fChunks->fLimit]; u_strcpy(destString, s); fChunks->fLimit += (length + 1); uhash_put(fHash, destString, destString, &status); return destString; -} +} // // ZNStringPool::adopt() Put a string into the hash, but do not copy the string data // into the pool's storage. Used for strings from resource bundles, -// which will perisist for the life of the zone string formatter, and +// which will persist for the life of the zone string formatter, and // therefore can be used directly without copying. const UChar *ZNStringPool::adopt(const UChar * s, UErrorCode &status) { const UChar *pooledString; @@ -550,7 +550,7 @@ const UChar *ZNStringPool::adopt(const UChar * s, UErrorCode &status) { return s; } - + const UChar *ZNStringPool::get(const UnicodeString &s, UErrorCode &status) { UnicodeString &nonConstStr = const_cast(s); return this->get(nonConstStr.getTerminatedBuffer(), status); @@ -776,7 +776,7 @@ struct ZNames::ZNamesLoader : public ResourceSink { clear(); ures_getAllItemsWithFallback(zoneStrings, key, *this, localStatus); - // Ignore errors, but propogate possible warnings. + // Ignore errors, but propagate possible warnings. if (U_SUCCESS(localStatus)) { errorCode = localStatus; } @@ -794,7 +794,7 @@ struct ZNames::ZNamesLoader : public ResourceSink { } virtual void put(const char* key, ResourceValue& value, UBool /*noFallback*/, - UErrorCode &errorCode) { + UErrorCode &errorCode) override { ResourceTable namesTable = value.getTable(errorCode); if (U_FAILURE(errorCode)) { return; } for (int32_t i = 0; namesTable.getKeyAndValue(i, key, value); ++i) { @@ -857,10 +857,10 @@ class MetaZoneIDsEnumeration : public StringEnumeration { MetaZoneIDsEnumeration(UVector* mzIDs); virtual ~MetaZoneIDsEnumeration(); static UClassID U_EXPORT2 getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; - virtual const UnicodeString* snext(UErrorCode& status); - virtual void reset(UErrorCode& status); - virtual int32_t count(UErrorCode& status) const; + virtual UClassID getDynamicClassID(void) const override; + virtual const UnicodeString* snext(UErrorCode& status) override; + virtual void reset(UErrorCode& status) override; + virtual int32_t count(UErrorCode& status) const override; private: int32_t fLen; int32_t fPos; @@ -870,11 +870,11 @@ class MetaZoneIDsEnumeration : public StringEnumeration { UOBJECT_DEFINE_RTTI_IMPLEMENTATION(MetaZoneIDsEnumeration) -MetaZoneIDsEnumeration::MetaZoneIDsEnumeration() +MetaZoneIDsEnumeration::MetaZoneIDsEnumeration() : fLen(0), fPos(0), fMetaZoneIDs(NULL), fLocalVector(NULL) { } -MetaZoneIDsEnumeration::MetaZoneIDsEnumeration(const UVector& mzIDs) +MetaZoneIDsEnumeration::MetaZoneIDsEnumeration(const UVector& mzIDs) : fPos(0), fMetaZoneIDs(&mzIDs), fLocalVector(NULL) { fLen = fMetaZoneIDs->size(); } @@ -920,7 +920,7 @@ class ZNameSearchHandler : public TextTrieMapSearchResultHandler { ZNameSearchHandler(uint32_t types); virtual ~ZNameSearchHandler(); - UBool handleMatch(int32_t matchLength, const CharacterNode *node, UErrorCode &status); + UBool handleMatch(int32_t matchLength, const CharacterNode *node, UErrorCode &status) override; TimeZoneNames::MatchInfoCollection* getMatches(int32_t& maxMatchLen); private: @@ -929,7 +929,7 @@ class ZNameSearchHandler : public TextTrieMapSearchResultHandler { TimeZoneNames::MatchInfoCollection* fResults; }; -ZNameSearchHandler::ZNameSearchHandler(uint32_t types) +ZNameSearchHandler::ZNameSearchHandler(uint32_t types) : fTypes(types), fMaxMatchLen(0), fResults(NULL) { } @@ -1104,13 +1104,13 @@ TimeZoneNamesImpl::cleanup() { } } -UBool +bool TimeZoneNamesImpl::operator==(const TimeZoneNames& other) const { if (this == &other) { - return TRUE; + return true; } // No implementation for now - return FALSE; + return false; } TimeZoneNamesImpl* @@ -1165,7 +1165,7 @@ TimeZoneNamesImpl::_getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCod OlsonToMetaMappingEntry *map = (OlsonToMetaMappingEntry *)mappings->elementAt(i); const UChar *mzID = map->mzid; if (!mzIDs->contains((void *)mzID)) { - mzIDs->addElement((void *)mzID, status); + mzIDs->addElementX((void *)mzID, status); } } if (U_SUCCESS(status)) { @@ -1194,7 +1194,7 @@ TimeZoneNamesImpl::getReferenceZoneID(const UnicodeString& mzID, const char* reg return TimeZoneNamesImpl::_getReferenceZoneID(mzID, region, tzID); } -// static implementaion of getReferenceZoneID +// static implementation of getReferenceZoneID UnicodeString& TimeZoneNamesImpl::_getReferenceZoneID(const UnicodeString& mzID, const char* region, UnicodeString& tzID) { ZoneMeta::getZoneIdByMetazone(mzID, UnicodeString(region, -1, US_INV), tzID); @@ -1560,7 +1560,7 @@ struct TimeZoneNamesImpl::ZoneStringsLoader : public ResourceSink { } virtual void put(const char *key, ResourceValue &value, UBool noFallback, - UErrorCode &status) { + UErrorCode &status) override { ResourceTable timeZonesTable = value.getTable(status); if (U_FAILURE(status)) { return; } for (int32_t i = 0; timeZonesTable.getKeyAndValue(i, key, value); ++i) { @@ -1891,7 +1891,7 @@ class TZDBNameSearchHandler : public TextTrieMapSearchResultHandler { TZDBNameSearchHandler(uint32_t types, const char* region); virtual ~TZDBNameSearchHandler(); - UBool handleMatch(int32_t matchLength, const CharacterNode *node, UErrorCode &status); + UBool handleMatch(int32_t matchLength, const CharacterNode *node, UErrorCode &status) override; TimeZoneNames::MatchInfoCollection* getMatches(int32_t& maxMatchLen); private: @@ -1901,7 +1901,7 @@ class TZDBNameSearchHandler : public TextTrieMapSearchResultHandler { const char* fRegion; }; -TZDBNameSearchHandler::TZDBNameSearchHandler(uint32_t types, const char* region) +TZDBNameSearchHandler::TZDBNameSearchHandler(uint32_t types, const char* region) : fTypes(types), fMaxMatchLen(0), fResults(NULL), fRegion(region) { } @@ -2156,13 +2156,13 @@ TZDBTimeZoneNames::TZDBTimeZoneNames(const Locale& locale) TZDBTimeZoneNames::~TZDBTimeZoneNames() { } -UBool +bool TZDBTimeZoneNames::operator==(const TimeZoneNames& other) const { if (this == &other) { - return TRUE; + return true; } // No implementation for now - return FALSE; + return false; } TZDBTimeZoneNames* diff --git a/deps/icu-small/source/i18n/tznames_impl.h b/deps/icu-small/source/i18n/tznames_impl.h index 417c0511f81f8a..d047fa3541870e 100644 --- a/deps/icu-small/source/i18n/tznames_impl.h +++ b/deps/icu-small/source/i18n/tznames_impl.h @@ -74,7 +74,7 @@ class U_I18N_API ZNStringPool: public UMemory { */ struct CharacterNode { // No constructor or destructor. - // We malloc and free an uninitalized array of CharacterNode objects + // We malloc and free an uninitialized array of CharacterNode objects // and clear and delete them ourselves. void clear(); @@ -173,24 +173,24 @@ class TimeZoneNamesImpl : public TimeZoneNames { virtual ~TimeZoneNamesImpl(); - virtual UBool operator==(const TimeZoneNames& other) const; - virtual TimeZoneNamesImpl* clone() const; + virtual bool operator==(const TimeZoneNames& other) const override; + virtual TimeZoneNamesImpl* clone() const override; - StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const; - StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const; + StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const override; + StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const override; - UnicodeString& getMetaZoneID(const UnicodeString& tzID, UDate date, UnicodeString& mzID) const; - UnicodeString& getReferenceZoneID(const UnicodeString& mzID, const char* region, UnicodeString& tzID) const; + UnicodeString& getMetaZoneID(const UnicodeString& tzID, UDate date, UnicodeString& mzID) const override; + UnicodeString& getReferenceZoneID(const UnicodeString& mzID, const char* region, UnicodeString& tzID) const override; - UnicodeString& getMetaZoneDisplayName(const UnicodeString& mzID, UTimeZoneNameType type, UnicodeString& name) const; - UnicodeString& getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UnicodeString& name) const; + UnicodeString& getMetaZoneDisplayName(const UnicodeString& mzID, UTimeZoneNameType type, UnicodeString& name) const override; + UnicodeString& getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UnicodeString& name) const override; - UnicodeString& getExemplarLocationName(const UnicodeString& tzID, UnicodeString& name) const; + UnicodeString& getExemplarLocationName(const UnicodeString& tzID, UnicodeString& name) const override; - TimeZoneNames::MatchInfoCollection* find(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const; + TimeZoneNames::MatchInfoCollection* find(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const override; - void loadAllDisplayNames(UErrorCode& status); - void getDisplayNames(const UnicodeString& tzID, const UTimeZoneNameType types[], int32_t numTypes, UDate date, UnicodeString dest[], UErrorCode& status) const; + void loadAllDisplayNames(UErrorCode& status) override; + void getDisplayNames(const UnicodeString& tzID, const UTimeZoneNameType types[], int32_t numTypes, UDate date, UnicodeString dest[], UErrorCode& status) const override; static UnicodeString& getDefaultExemplarLocationName(const UnicodeString& tzID, UnicodeString& name); @@ -235,19 +235,19 @@ class TZDBTimeZoneNames : public TimeZoneNames { TZDBTimeZoneNames(const Locale& locale); virtual ~TZDBTimeZoneNames(); - virtual UBool operator==(const TimeZoneNames& other) const; - virtual TZDBTimeZoneNames* clone() const; + virtual bool operator==(const TimeZoneNames& other) const override; + virtual TZDBTimeZoneNames* clone() const override; - StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const; - StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const; + StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const override; + StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const override; - UnicodeString& getMetaZoneID(const UnicodeString& tzID, UDate date, UnicodeString& mzID) const; - UnicodeString& getReferenceZoneID(const UnicodeString& mzID, const char* region, UnicodeString& tzID) const; + UnicodeString& getMetaZoneID(const UnicodeString& tzID, UDate date, UnicodeString& mzID) const override; + UnicodeString& getReferenceZoneID(const UnicodeString& mzID, const char* region, UnicodeString& tzID) const override; - UnicodeString& getMetaZoneDisplayName(const UnicodeString& mzID, UTimeZoneNameType type, UnicodeString& name) const; - UnicodeString& getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UnicodeString& name) const; + UnicodeString& getMetaZoneDisplayName(const UnicodeString& mzID, UTimeZoneNameType type, UnicodeString& name) const override; + UnicodeString& getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UnicodeString& name) const override; - TimeZoneNames::MatchInfoCollection* find(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const; + TimeZoneNames::MatchInfoCollection* find(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const override; // When TZDBNames for the metazone is not available, this method returns NULL, // but does NOT set U_MISSING_RESOURCE_ERROR to status. diff --git a/deps/icu-small/source/i18n/tzrule.cpp b/deps/icu-small/source/i18n/tzrule.cpp index c4bf386fd4996c..a60fffbe020295 100644 --- a/deps/icu-small/source/i18n/tzrule.cpp +++ b/deps/icu-small/source/i18n/tzrule.cpp @@ -53,7 +53,7 @@ TimeZoneRule::operator=(const TimeZoneRule& right) { return *this; } -UBool +bool TimeZoneRule::operator==(const TimeZoneRule& that) const { return ((this == &that) || (typeid(*this) == typeid(that) && @@ -62,7 +62,7 @@ TimeZoneRule::operator==(const TimeZoneRule& that) const { fDSTSavings == that.fDSTSavings)); } -UBool +bool TimeZoneRule::operator!=(const TimeZoneRule& that) const { return !operator==(that); } @@ -120,14 +120,14 @@ InitialTimeZoneRule::operator=(const InitialTimeZoneRule& right) { return *this; } -UBool +bool InitialTimeZoneRule::operator==(const TimeZoneRule& that) const { return ((this == &that) || (typeid(*this) == typeid(that) && TimeZoneRule::operator==(that))); } -UBool +bool InitialTimeZoneRule::operator!=(const TimeZoneRule& that) const { return !operator==(that); } @@ -182,7 +182,7 @@ const int32_t AnnualTimeZoneRule::MAX_YEAR = 0x7FFFFFFF; /* max signed int32 */ AnnualTimeZoneRule::AnnualTimeZoneRule(const UnicodeString& name, int32_t rawOffset, - int32_t dstSavings, + int32_t dstSavings, const DateTimeRule& dateTimeRule, int32_t startYear, int32_t endYear) @@ -192,7 +192,7 @@ AnnualTimeZoneRule::AnnualTimeZoneRule(const UnicodeString& name, AnnualTimeZoneRule::AnnualTimeZoneRule(const UnicodeString& name, int32_t rawOffset, - int32_t dstSavings, + int32_t dstSavings, DateTimeRule* dateTimeRule, int32_t startYear, int32_t endYear) @@ -226,13 +226,13 @@ AnnualTimeZoneRule::operator=(const AnnualTimeZoneRule& right) { return *this; } -UBool +bool AnnualTimeZoneRule::operator==(const TimeZoneRule& that) const { if (this == &that) { - return TRUE; + return true; } if (typeid(*this) != typeid(that)) { - return FALSE; + return false; } AnnualTimeZoneRule *atzr = (AnnualTimeZoneRule*)&that; return (*fDateTimeRule == *(atzr->fDateTimeRule) && @@ -240,7 +240,7 @@ AnnualTimeZoneRule::operator==(const TimeZoneRule& that) const { fEndYear == atzr->fEndYear); } -UBool +bool AnnualTimeZoneRule::operator!=(const TimeZoneRule& that) const { return !operator==(that); } @@ -440,36 +440,36 @@ TimeArrayTimeZoneRule::operator=(const TimeArrayTimeZoneRule& right) { UErrorCode status = U_ZERO_ERROR; initStartTimes(right.fStartTimes, right.fNumStartTimes, status); //TODO - status? - fTimeRuleType = right.fTimeRuleType; + fTimeRuleType = right.fTimeRuleType; } return *this; } -UBool +bool TimeArrayTimeZoneRule::operator==(const TimeZoneRule& that) const { if (this == &that) { - return TRUE; + return true; } - if (typeid(*this) != typeid(that) || TimeZoneRule::operator==(that) == FALSE) { - return FALSE; + if (typeid(*this) != typeid(that) || !TimeZoneRule::operator==(that)) { + return false; } TimeArrayTimeZoneRule *tatzr = (TimeArrayTimeZoneRule*)&that; if (fTimeRuleType != tatzr->fTimeRuleType || fNumStartTimes != tatzr->fNumStartTimes) { - return FALSE; + return false; } // Compare start times - UBool res = TRUE; + bool res = true; for (int32_t i = 0; i < fNumStartTimes; i++) { if (fStartTimes[i] != tatzr->fStartTimes[i]) { - res = FALSE; + res = false; break; } } return res; } -UBool +bool TimeArrayTimeZoneRule::operator!=(const TimeZoneRule& that) const { return !operator==(that); } @@ -626,3 +626,4 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ //eof + diff --git a/deps/icu-small/source/i18n/tztrans.cpp b/deps/icu-small/source/i18n/tztrans.cpp index 3199b78ea833e9..900e4be5408e1b 100644 --- a/deps/icu-small/source/i18n/tztrans.cpp +++ b/deps/icu-small/source/i18n/tztrans.cpp @@ -63,28 +63,28 @@ TimeZoneTransition::operator=(const TimeZoneTransition& right) { return *this; } -UBool +bool TimeZoneTransition::operator==(const TimeZoneTransition& that) const { if (this == &that) { - return TRUE; + return true; } if (typeid(*this) != typeid(that)) { - return FALSE; + return false; } if (fTime != that.fTime) { - return FALSE; + return false; } if ((fFrom == NULL && that.fFrom == NULL) || (fFrom != NULL && that.fFrom != NULL && *fFrom == *(that.fFrom))) { if ((fTo == NULL && that.fTo == NULL) || (fTo != NULL && that.fTo != NULL && *fTo == *(that.fTo))) { - return TRUE; + return true; } } - return FALSE; + return false; } -UBool +bool TimeZoneTransition::operator!=(const TimeZoneTransition& that) const { return !operator==(that); } diff --git a/deps/icu-small/source/i18n/ucal.cpp b/deps/icu-small/source/i18n/ucal.cpp index 39a9508ca93443..33f72589c502c8 100644 --- a/deps/icu-small/source/i18n/ucal.cpp +++ b/deps/icu-small/source/i18n/ucal.cpp @@ -157,8 +157,8 @@ ucal_open( const UChar* zoneID, if (U_FAILURE(*status)) { return nullptr; } - - LocalPointer zone( (zoneID==nullptr) ? TimeZone::createDefault() + + LocalPointer zone( (zoneID==nullptr) ? TimeZone::createDefault() : _createTimeZone(zoneID, len, status), *status); if (U_FAILURE(*status)) { @@ -193,12 +193,12 @@ ucal_close(UCalendar *cal) } } -U_CAPI UCalendar* U_EXPORT2 +U_CAPI UCalendar* U_EXPORT2 ucal_clone(const UCalendar* cal, UErrorCode* status) { if(U_FAILURE(*status)) return 0; - + Calendar* res = ((Calendar*)cal)->clone(); if(res == 0) { @@ -283,7 +283,7 @@ ucal_getTimeZoneDisplayName(const UCalendar* cal, } U_CAPI UBool U_EXPORT2 -ucal_inDaylightTime( const UCalendar* cal, +ucal_inDaylightTime( const UCalendar* cal, UErrorCode* status ) { @@ -570,7 +570,7 @@ ucal_getLimit( const UCalendar* cal, } U_CAPI const char * U_EXPORT2 -ucal_getLocaleByType(const UCalendar *cal, ULocDataLocaleType type, UErrorCode* status) +ucal_getLocaleByType(const UCalendar *cal, ULocDataLocaleType type, UErrorCode* status) { if (cal == nullptr) { if (U_SUCCESS(*status)) { @@ -667,7 +667,7 @@ static const UEnumeration defaultKeywordValues = { ulist_close_keyword_values_iterator, ulist_count_keyword_values, uenum_unextDefault, - ulist_next_keyword_value, + ulist_next_keyword_value, ulist_reset_keyword_values_iterator }; @@ -698,7 +698,7 @@ ucal_getKeywordValuesForLocale(const char * /* key */, const char* locale, UBool // Resolve region char prefRegion[ULOC_COUNTRY_CAPACITY]; (void)ulocimp_getRegionForSupplementalData(locale, TRUE, prefRegion, sizeof(prefRegion), status); - + // Read preferred calendar values from supplementalData calendarPreference UResourceBundle *rb = ures_openDirect(nullptr, "supplementalData", status); ures_getByKey(rb, "calendarPreferenceData", rb, status); @@ -768,7 +768,7 @@ ucal_getKeywordValuesForLocale(const char * /* key */, const char* locale, UBool return en; } -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 ucal_getTimeZoneTransitionDate(const UCalendar* cal, UTimeZoneTransitionType type, UDate* transition, UErrorCode* status) { diff --git a/deps/icu-small/source/i18n/ucln_in.cpp b/deps/icu-small/source/i18n/ucln_in.cpp index 74c8acfab13ea4..f29cbe41dde05f 100644 --- a/deps/icu-small/source/i18n/ucln_in.cpp +++ b/deps/icu-small/source/i18n/ucln_in.cpp @@ -62,3 +62,4 @@ void ucln_i18n_registerCleanup(ECleanupI18NType type, ucln_registerAutomaticCleanup(); #endif } + diff --git a/deps/icu-small/source/i18n/ucol.cpp b/deps/icu-small/source/i18n/ucol.cpp index 7d3392da223503..f59333ede3c890 100644 --- a/deps/icu-small/source/i18n/ucol.cpp +++ b/deps/icu-small/source/i18n/ucol.cpp @@ -369,7 +369,7 @@ ucol_getStrength(const UCollator *coll) return ucol_getAttribute(coll, UCOL_STRENGTH, &status); } -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_getReorderCodes(const UCollator *coll, int32_t *dest, int32_t destCapacity, @@ -381,7 +381,7 @@ ucol_getReorderCodes(const UCollator *coll, return Collator::fromUCollator(coll)->getReorderCodes(dest, destCapacity, *status); } -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucol_setReorderCodes(UCollator* coll, const int32_t* reorderCodes, int32_t reorderCodesLength, @@ -393,7 +393,7 @@ ucol_setReorderCodes(UCollator* coll, Collator::fromUCollator(coll)->setReorderCodes(reorderCodes, reorderCodesLength, *status); } -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_getEquivalentReorderCodes(int32_t reorderCode, int32_t* dest, int32_t destCapacity, diff --git a/deps/icu-small/source/i18n/ucol_res.cpp b/deps/icu-small/source/i18n/ucol_res.cpp index aa4027eb87212b..b277cf3b280a5f 100644 --- a/deps/icu-small/source/i18n/ucol_res.cpp +++ b/deps/icu-small/source/i18n/ucol_res.cpp @@ -623,7 +623,7 @@ struct KeywordsSink : public ResourceSink { virtual ~KeywordsSink(); virtual void put(const char *key, ResourceValue &value, UBool /*noFallback*/, - UErrorCode &errorCode) { + UErrorCode &errorCode) override { if (U_FAILURE(errorCode)) { return; } ResourceTable collations = value.getTable(errorCode); for (int32_t i = 0; collations.getKeyAndValue(i, key, value); ++i) { diff --git a/deps/icu-small/source/i18n/ucol_sit.cpp b/deps/icu-small/source/i18n/ucol_sit.cpp index d6bbf97b310bd3..4dc81aebcc942d 100644 --- a/deps/icu-small/source/i18n/ucol_sit.cpp +++ b/deps/icu-small/source/i18n/ucol_sit.cpp @@ -153,7 +153,7 @@ ucol_sit_letterToAttributeValue(char letter, UErrorCode *status) { *status = U_ILLEGAL_ARGUMENT_ERROR; #ifdef UCOL_TRACE_SIT fprintf(stderr, "%s:%d: unknown letter %c: %s\n", __FILE__, __LINE__, letter, u_errorName(*status)); -#endif +#endif return UCOL_DEFAULT; } @@ -209,7 +209,7 @@ _processCollatorOption(CollatorSpec *spec, uint32_t option, const char* string, if((*(++string) != '_' && *string) || U_FAILURE(*status)) { #ifdef UCOL_TRACE_SIT fprintf(stderr, "%s:%d: unknown collator option at '%s': %s\n", __FILE__, __LINE__, string, u_errorName(*status)); -#endif +#endif *status = U_ILLEGAL_ARGUMENT_ERROR; } return string; @@ -235,7 +235,7 @@ readHexCodeUnit(const char **string, UErrorCode *status) *status = U_ILLEGAL_ARGUMENT_ERROR; #ifdef UCOL_TRACE_SIT fprintf(stderr, "%s:%d: Bad hex char at '%s': %s\n", __FILE__, __LINE__, *string, u_errorName(*status)); -#endif +#endif return 0; } result = (result << 4) | (UChar)value; @@ -247,7 +247,7 @@ readHexCodeUnit(const char **string, UErrorCode *status) *status = U_ILLEGAL_ARGUMENT_ERROR; #ifdef UCOL_TRACE_SIT fprintf(stderr, "%s:%d: Short (only %d digits, wanted 4) at '%s': %s\n", __FILE__, __LINE__, noDigits,*string, u_errorName(*status)); -#endif +#endif } return result; } diff --git a/deps/icu-small/source/i18n/ucoleitr.cpp b/deps/icu-small/source/i18n/ucoleitr.cpp index 6842061bab0912..596ce032956d0c 100644 --- a/deps/icu-small/source/i18n/ucoleitr.cpp +++ b/deps/icu-small/source/i18n/ucoleitr.cpp @@ -11,7 +11,7 @@ * Modification History: * * Date Name Description -* 02/15/2001 synwee Modified all methods to process its own function +* 02/15/2001 synwee Modified all methods to process its own function * instead of calling the equivalent c++ api (coleitr.h) * 2012-2014 markus Rewritten in C++ again. ******************************************************************************/ @@ -313,7 +313,7 @@ ucol_reset(UCollationElements *elems) } U_CAPI int32_t U_EXPORT2 -ucol_next(UCollationElements *elems, +ucol_next(UCollationElements *elems, UErrorCode *status) { if (U_FAILURE(*status)) { @@ -397,7 +397,7 @@ UCollationPCE::previousProcessed( // buffer raw CEs up to non-ignorable primary RCEBuffer rceb; int32_t ce; - + // **** do we need to reset rceb, or will it always be empty at this point **** do { high = cei->getOffset(); @@ -433,14 +433,14 @@ UCollationPCE::previousProcessed( finish: if (pceBuffer.isEmpty()) { // **** Is -1 the right value for ixLow, ixHigh? **** - if (ixLow != NULL) { - *ixLow = -1; - } - - if (ixHigh != NULL) { - *ixHigh = -1 - ; - } + if (ixLow != NULL) { + *ixLow = -1; + } + + if (ixHigh != NULL) { + *ixHigh = -1 + ; + } return UCOL_PROCESSED_NULLORDER; } @@ -511,19 +511,19 @@ ucol_setOffset(UCollationElements *elems, } U_CAPI int32_t U_EXPORT2 -ucol_primaryOrder (int32_t order) +ucol_primaryOrder (int32_t order) { return (order >> 16) & 0xffff; } U_CAPI int32_t U_EXPORT2 -ucol_secondaryOrder (int32_t order) +ucol_secondaryOrder (int32_t order) { return (order >> 8) & 0xff; } U_CAPI int32_t U_EXPORT2 -ucol_tertiaryOrder (int32_t order) +ucol_tertiaryOrder (int32_t order) { return order & 0xff; } diff --git a/deps/icu-small/source/i18n/udat.cpp b/deps/icu-small/source/i18n/udat.cpp index 016805aab66fdd..d9549d04c57994 100644 --- a/deps/icu-small/source/i18n/udat.cpp +++ b/deps/icu-small/source/i18n/udat.cpp @@ -34,7 +34,7 @@ U_NAMESPACE_USE /** * Verify that fmt is a SimpleDateFormat. Invalid error if not. * @param fmt the UDateFormat, definitely a DateFormat, maybe something else - * @param status error code, will be set to failure if there is a familure or the fmt is NULL. + * @param status error code, will be set to failure if there is a failure or the fmt is NULL. */ static void verifyIsSimpleDateFormat(const UDateFormat* fmt, UErrorCode *status) { if(U_SUCCESS(*status) && @@ -425,8 +425,8 @@ udat_setLenient( UDateFormat* fmt, } U_CAPI UBool U_EXPORT2 -udat_getBooleanAttribute(const UDateFormat* fmt, - UDateFormatBooleanAttribute attr, +udat_getBooleanAttribute(const UDateFormat* fmt, + UDateFormatBooleanAttribute attr, UErrorCode* status) { if(U_FAILURE(*status)) return FALSE; @@ -435,9 +435,9 @@ udat_getBooleanAttribute(const UDateFormat* fmt, } U_CAPI void U_EXPORT2 -udat_setBooleanAttribute(UDateFormat *fmt, - UDateFormatBooleanAttribute attr, - UBool newValue, +udat_setBooleanAttribute(UDateFormat *fmt, + UDateFormatBooleanAttribute attr, + UBool newValue, UErrorCode* status) { if(U_FAILURE(*status)) return; @@ -457,7 +457,7 @@ udat_setCalendar(UDateFormat* fmt, ((DateFormat*)fmt)->setCalendar(*((Calendar*)calendarToSet)); } -U_CAPI const UNumberFormat* U_EXPORT2 +U_CAPI const UNumberFormat* U_EXPORT2 udat_getNumberFormatForField(const UDateFormat* fmt, UChar field) { UErrorCode status = U_ZERO_ERROR; @@ -472,7 +472,7 @@ udat_getNumberFormat(const UDateFormat* fmt) return (const UNumberFormat*) ((DateFormat*)fmt)->getNumberFormat(); } -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 udat_adoptNumberFormatForFields( UDateFormat* fmt, const UChar* fields, UNumberFormat* numberFormatToSet, @@ -480,7 +480,7 @@ udat_adoptNumberFormatForFields( UDateFormat* fmt, { verifyIsSimpleDateFormat(fmt, status); if (U_FAILURE(*status)) return; - + if (fields!=NULL) { UnicodeString overrideFields(fields); ((SimpleDateFormat*)fmt)->adoptNumberFormat(overrideFields, (NumberFormat*)numberFormatToSet, *status); @@ -587,7 +587,7 @@ udat_applyPattern( UDateFormat *format, if(U_FAILURE(status)) { return; } - + if(localized) ((SimpleDateFormat*)format)->applyLocalizedPattern(pat, status); else @@ -704,6 +704,10 @@ udat_getSymbols(const UDateFormat *fmt, res = syms->getQuarters(count, DateFormatSymbols::FORMAT, DateFormatSymbols::ABBREVIATED); break; + case UDAT_NARROW_QUARTERS: + res = syms->getQuarters(count, DateFormatSymbols::FORMAT, DateFormatSymbols::NARROW); + break; + case UDAT_STANDALONE_QUARTERS: res = syms->getQuarters(count, DateFormatSymbols::STANDALONE, DateFormatSymbols::WIDE); break; @@ -712,6 +716,10 @@ udat_getSymbols(const UDateFormat *fmt, res = syms->getQuarters(count, DateFormatSymbols::STANDALONE, DateFormatSymbols::ABBREVIATED); break; + case UDAT_STANDALONE_NARROW_QUARTERS: + res = syms->getQuarters(count, DateFormatSymbols::STANDALONE, DateFormatSymbols::NARROW); + break; + case UDAT_CYCLIC_YEARS_WIDE: res = syms->getYearNames(count, DateFormatSymbols::FORMAT, DateFormatSymbols::WIDE); break; @@ -842,6 +850,10 @@ udat_countSymbols( const UDateFormat *fmt, syms->getQuarters(count, DateFormatSymbols::FORMAT, DateFormatSymbols::ABBREVIATED); break; + case UDAT_NARROW_QUARTERS: + syms->getQuarters(count, DateFormatSymbols::FORMAT, DateFormatSymbols::NARROW); + break; + case UDAT_STANDALONE_QUARTERS: syms->getQuarters(count, DateFormatSymbols::STANDALONE, DateFormatSymbols::WIDE); break; @@ -850,6 +862,10 @@ udat_countSymbols( const UDateFormat *fmt, syms->getQuarters(count, DateFormatSymbols::STANDALONE, DateFormatSymbols::ABBREVIATED); break; + case UDAT_STANDALONE_NARROW_QUARTERS: + syms->getQuarters(count, DateFormatSymbols::STANDALONE, DateFormatSymbols::NARROW); + break; + case UDAT_CYCLIC_YEARS_WIDE: syms->getYearNames(count, DateFormatSymbols::FORMAT, DateFormatSymbols::WIDE); break; @@ -1048,6 +1064,13 @@ class DateFormatSymbolsSingleSetter /* not : public UObject because all methods setSymbol(syms->fShortQuarters, syms->fShortQuartersCount, index, value, valueLength, errorCode); } + static void + setNarrowQuarter(DateFormatSymbols *syms, int32_t index, + const UChar *value, int32_t valueLength, UErrorCode &errorCode) + { + setSymbol(syms->fNarrowQuarters, syms->fNarrowQuartersCount, index, value, valueLength, errorCode); + } + static void setStandaloneQuarter(DateFormatSymbols *syms, int32_t index, const UChar *value, int32_t valueLength, UErrorCode &errorCode) @@ -1062,6 +1085,13 @@ class DateFormatSymbolsSingleSetter /* not : public UObject because all methods setSymbol(syms->fStandaloneShortQuarters, syms->fStandaloneShortQuartersCount, index, value, valueLength, errorCode); } + static void + setStandaloneNarrowQuarter(DateFormatSymbols *syms, int32_t index, + const UChar *value, int32_t valueLength, UErrorCode &errorCode) + { + setSymbol(syms->fStandaloneNarrowQuarters, syms->fStandaloneNarrowQuartersCount, index, value, valueLength, errorCode); + } + static void setShortYearNames(DateFormatSymbols *syms, int32_t index, const UChar *value, int32_t valueLength, UErrorCode &errorCode) @@ -1179,6 +1209,10 @@ udat_setSymbols( UDateFormat *format, DateFormatSymbolsSingleSetter::setShortQuarter(syms, index, value, valueLength, *status); break; + case UDAT_NARROW_QUARTERS: + DateFormatSymbolsSingleSetter::setNarrowQuarter(syms, index, value, valueLength, *status); + break; + case UDAT_STANDALONE_QUARTERS: DateFormatSymbolsSingleSetter::setStandaloneQuarter(syms, index, value, valueLength, *status); break; @@ -1187,6 +1221,10 @@ udat_setSymbols( UDateFormat *format, DateFormatSymbolsSingleSetter::setStandaloneShortQuarter(syms, index, value, valueLength, *status); break; + case UDAT_STANDALONE_NARROW_QUARTERS: + DateFormatSymbolsSingleSetter::setStandaloneNarrowQuarter(syms, index, value, valueLength, *status); + break; + case UDAT_CYCLIC_YEARS_ABBREVIATED: DateFormatSymbolsSingleSetter::setShortYearNames(syms, index, value, valueLength, *status); break; @@ -1206,7 +1244,7 @@ udat_setSymbols( UDateFormat *format, default: *status = U_UNSUPPORTED_ERROR; break; - + } } @@ -1247,7 +1285,7 @@ udat_getContext(const UDateFormat* fmt, UDisplayContextType type, UErrorCode* st /** * Verify that fmt is a RelativeDateFormat. Invalid error if not. * @param fmt the UDateFormat, definitely a DateFormat, maybe something else - * @param status error code, will be set to failure if there is a familure or the fmt is NULL. + * @param status error code, will be set to failure if there is a failure or the fmt is NULL. */ static void verifyIsRelativeDateFormat(const UDateFormat* fmt, UErrorCode *status) { if(U_SUCCESS(*status) && @@ -1257,7 +1295,7 @@ static void verifyIsRelativeDateFormat(const UDateFormat* fmt, UErrorCode *statu } -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 udat_toPatternRelativeDate(const UDateFormat *fmt, UChar *result, int32_t resultLength, @@ -1282,7 +1320,7 @@ udat_toPatternRelativeDate(const UDateFormat *fmt, return datePattern.extract(result, resultLength, *status); } -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 udat_toPatternRelativeTime(const UDateFormat *fmt, UChar *result, int32_t resultLength, @@ -1307,7 +1345,7 @@ udat_toPatternRelativeTime(const UDateFormat *fmt, return timePattern.extract(result, resultLength, *status); } -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 udat_applyPatternRelative(UDateFormat *format, const UChar *datePattern, int32_t datePatternLength, diff --git a/deps/icu-small/source/i18n/uitercollationiterator.h b/deps/icu-small/source/i18n/uitercollationiterator.h index 3a7b1a0ec23b47..e0da353f268ba9 100644 --- a/deps/icu-small/source/i18n/uitercollationiterator.h +++ b/deps/icu-small/source/i18n/uitercollationiterator.h @@ -39,22 +39,22 @@ class U_I18N_API UIterCollationIterator : public CollationIterator { virtual ~UIterCollationIterator(); - virtual void resetToOffset(int32_t newOffset); + virtual void resetToOffset(int32_t newOffset) override; - virtual int32_t getOffset() const; + virtual int32_t getOffset() const override; - virtual UChar32 nextCodePoint(UErrorCode &errorCode); + virtual UChar32 nextCodePoint(UErrorCode &errorCode) override; - virtual UChar32 previousCodePoint(UErrorCode &errorCode); + virtual UChar32 previousCodePoint(UErrorCode &errorCode) override; protected: - virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode); + virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode) override; - virtual UChar handleGetTrailSurrogate(); + virtual UChar handleGetTrailSurrogate() override; - virtual void forwardNumCodePoints(int32_t num, UErrorCode &errorCode); + virtual void forwardNumCodePoints(int32_t num, UErrorCode &errorCode) override; - virtual void backwardNumCodePoints(int32_t num, UErrorCode &errorCode); + virtual void backwardNumCodePoints(int32_t num, UErrorCode &errorCode) override; UCharIterator &iter; }; @@ -71,22 +71,23 @@ class U_I18N_API FCDUIterCollationIterator : public UIterCollationIterator { virtual ~FCDUIterCollationIterator(); - virtual void resetToOffset(int32_t newOffset); + virtual void resetToOffset(int32_t newOffset) override; - virtual int32_t getOffset() const; + virtual int32_t getOffset() const override; - virtual UChar32 nextCodePoint(UErrorCode &errorCode); + virtual UChar32 nextCodePoint(UErrorCode &errorCode) override; - virtual UChar32 previousCodePoint(UErrorCode &errorCode); + virtual UChar32 previousCodePoint(UErrorCode &errorCode) override; protected: - virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode); + virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode) override; - virtual UChar handleGetTrailSurrogate(); + virtual UChar handleGetTrailSurrogate() override; - virtual void forwardNumCodePoints(int32_t num, UErrorCode &errorCode); - virtual void backwardNumCodePoints(int32_t num, UErrorCode &errorCode); + virtual void forwardNumCodePoints(int32_t num, UErrorCode &errorCode) override; + + virtual void backwardNumCodePoints(int32_t num, UErrorCode &errorCode) override; private: /** diff --git a/deps/icu-small/source/i18n/ulocdata.cpp b/deps/icu-small/source/i18n/ulocdata.cpp index 3046167b328db8..68b9e0cf6344cf 100644 --- a/deps/icu-small/source/i18n/ulocdata.cpp +++ b/deps/icu-small/source/i18n/ulocdata.cpp @@ -104,8 +104,8 @@ U_CAPI USet* U_EXPORT2 ulocdata_getExemplarSet(ULocaleData *uld, USet *fillIn, uint32_t options, ULocaleDataExemplarSetType extype, UErrorCode *status){ - static const char* const exemplarSetTypes[] = { "ExemplarCharacters", - "AuxExemplarCharacters", + static const char* const exemplarSetTypes[] = { "ExemplarCharacters", + "AuxExemplarCharacters", "ExemplarCharactersIndex", "ExemplarCharactersPunctuation"}; const UChar *exemplarChars = NULL; @@ -195,15 +195,15 @@ static UResourceBundle * measurementTypeBundleForLocale(const char *localeID, co char region[ULOC_COUNTRY_CAPACITY]; UResourceBundle *rb; UResourceBundle *measTypeBundle = NULL; - + ulocimp_getRegionForSupplementalData(localeID, TRUE, region, ULOC_COUNTRY_CAPACITY, status); - + rb = ures_openDirect(NULL, "supplementalData", status); ures_getByKey(rb, "measurementData", rb, status); if (rb != NULL) { UResourceBundle *measDataBundle = ures_getByKey(rb, region, NULL, status); if (U_SUCCESS(*status)) { - measTypeBundle = ures_getByKey(measDataBundle, measurementType, NULL, status); + measTypeBundle = ures_getByKey(measDataBundle, measurementType, NULL, status); } if (*status == U_MISSING_RESOURCE_ERROR) { *status = U_ZERO_ERROR; diff --git a/deps/icu-small/source/i18n/umsg.cpp b/deps/icu-small/source/i18n/umsg.cpp index 2aae3a4d4393e3..c2d5a9a1f5a757 100644 --- a/deps/icu-small/source/i18n/umsg.cpp +++ b/deps/icu-small/source/i18n/umsg.cpp @@ -18,7 +18,7 @@ * * 08/5/2001 Ram Added C wrappers for C++ API. Changed implementation of old API's * Removed pattern parser. -* +* */ #include "unicode/utypes.h" @@ -67,8 +67,8 @@ u_formatMessage(const char *locale, ...) { va_list ap; - int32_t actLen; - //argument checking defered to subsequent method calls + int32_t actLen; + //argument checking deferred to subsequent method calls // start vararg processing va_start(ap, status); @@ -89,7 +89,7 @@ u_vformatMessage( const char *locale, UErrorCode *status) { - //argument checking defered to subsequent method calls + //argument checking deferred to subsequent method calls UMessageFormat *fmt = umsg_open(pattern,patternLength,locale,NULL,status); int32_t retVal = umsg_vformat(fmt,result,resultLength,ap,status); umsg_close(fmt); @@ -108,7 +108,7 @@ u_formatMessageWithError(const char *locale, { va_list ap; int32_t actLen; - //argument checking defered to subsequent method calls + //argument checking deferred to subsequent method calls // start vararg processing va_start(ap, status); @@ -130,7 +130,7 @@ u_vformatMessageWithError( const char *locale, UErrorCode *status) { - //argument checking defered to subsequent method calls + //argument checking deferred to subsequent method calls UMessageFormat *fmt = umsg_open(pattern,patternLength,locale,parseError,status); int32_t retVal = umsg_vformat(fmt,result,resultLength,ap,status); umsg_close(fmt); @@ -152,7 +152,7 @@ u_parseMessage( const char *locale, ...) { va_list ap; - //argument checking defered to subsequent method calls + //argument checking deferred to subsequent method calls // start vararg processing va_start(ap, status); @@ -171,7 +171,7 @@ u_vparseMessage(const char *locale, va_list ap, UErrorCode *status) { - //argument checking defered to subsequent method calls + //argument checking deferred to subsequent method calls UMessageFormat *fmt = umsg_open(pattern,patternLength,locale,NULL,status); int32_t count = 0; umsg_vparse(fmt,source,sourceLength,&count,ap,status); @@ -190,7 +190,7 @@ u_parseMessageWithError(const char *locale, { va_list ap; - //argument checking defered to subsequent method calls + //argument checking deferred to subsequent method calls // start vararg processing va_start(ap, status); @@ -209,7 +209,7 @@ u_vparseMessageWithError(const char *locale, UParseError *error, UErrorCode* status) { - //argument checking defered to subsequent method calls + //argument checking deferred to subsequent method calls UMessageFormat *fmt = umsg_open(pattern,patternLength,locale,error,status); int32_t count = 0; umsg_vparse(fmt,source,sourceLength,&count,ap,status); @@ -286,7 +286,7 @@ umsg_clone(const UMessageFormat *fmt, *status = U_MEMORY_ALLOCATION_ERROR; return 0; } - return retVal; + return retVal; } U_CAPI void U_EXPORT2 @@ -296,7 +296,7 @@ umsg_setLocale(UMessageFormat *fmt, const char* locale) if(fmt==NULL){ return; } - ((MessageFormat*)fmt)->setLocale(Locale(locale)); + ((MessageFormat*)fmt)->setLocale(Locale(locale)); } U_CAPI const char* U_EXPORT2 @@ -331,12 +331,12 @@ umsg_applyPattern(UMessageFormat *fmt, } // UnicodeString(pattern, -1) calls u_strlen(). - ((MessageFormat*)fmt)->applyPattern(UnicodeString(pattern,patternLength),*parseError,*status); + ((MessageFormat*)fmt)->applyPattern(UnicodeString(pattern,patternLength),*parseError,*status); } U_CAPI int32_t U_EXPORT2 umsg_toPattern(const UMessageFormat *fmt, - UChar* result, + UChar* result, int32_t resultLength, UErrorCode* status) { @@ -368,12 +368,12 @@ umsg_format( const UMessageFormat *fmt, ...) { va_list ap; - int32_t actLen; - //argument checking defered to last method call umsg_vformat which - //saves time when arguments are valid and we dont care when arguments are not + int32_t actLen; + //argument checking deferred to last method call umsg_vformat which + //saves time when arguments are valid and we don't care when arguments are not //since we return an error anyway - + // start vararg processing va_start(ap, status); @@ -411,7 +411,7 @@ umsg_vformat( const UMessageFormat *fmt, // iterate through the vararg list, and get the arguments out for(int32_t i = 0; i < count; ++i) { - + UChar *stringVal; double tDouble=0; int32_t tInt =0; @@ -422,12 +422,12 @@ umsg_vformat( const UMessageFormat *fmt, tempDate = va_arg(ap, UDate); args[i].setDate(tempDate); break; - + case Formattable::kDouble: tDouble =va_arg(ap, double); args[i].setDouble(tDouble); break; - + case Formattable::kLong: tInt = va_arg(ap, int32_t); args[i].setLong(tInt); @@ -437,7 +437,7 @@ umsg_vformat( const UMessageFormat *fmt, tInt64 = va_arg(ap, int64_t); args[i].setInt64(tInt64); break; - + case Formattable::kString: // For some reason, a temporary is needed stringVal = va_arg(ap, UChar*); @@ -447,7 +447,7 @@ umsg_vformat( const UMessageFormat *fmt, *status=U_ILLEGAL_ARGUMENT_ERROR; } break; - + case Formattable::kArray: // throw away this argument // this is highly platform-dependent, and probably won't work @@ -463,12 +463,12 @@ umsg_vformat( const UMessageFormat *fmt, default: // Unknown/unsupported argument type. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } UnicodeString resultStr; FieldPosition fieldPosition(FieldPosition::DONT_CARE); - + /* format the message */ ((const MessageFormat*)fmt)->format(args,count,resultStr,fieldPosition,*status); @@ -490,8 +490,8 @@ umsg_parse( const UMessageFormat *fmt, ...) { va_list ap; - //argument checking defered to last method call umsg_vparse which - //saves time when arguments are valid and we dont care when arguments are not + //argument checking deferred to last method call umsg_vparse which + //saves time when arguments are valid and we don't care when arguments are not //since we return an error anyway // start vararg processing @@ -590,11 +590,11 @@ umsg_vparse(const UMessageFormat *fmt, // support kObject. When MessageFormat is changed to // understand MeasureFormats, modify this code to do the // right thing. [alan] - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; // better not happen! case Formattable::kArray: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -613,7 +613,7 @@ umsg_vparse(const UMessageFormat *fmt, #define MAppend(c) if (len < destCapacity) dest[len++] = c; else len++ -int32_t umsg_autoQuoteApostrophe(const UChar* pattern, +int32_t umsg_autoQuoteApostrophe(const UChar* pattern, int32_t patternLength, UChar* dest, int32_t destCapacity, diff --git a/deps/icu-small/source/i18n/unesctrn.cpp b/deps/icu-small/source/i18n/unesctrn.cpp index 604cb0a4ba007f..0636fe1d149b60 100644 --- a/deps/icu-small/source/i18n/unesctrn.cpp +++ b/deps/icu-small/source/i18n/unesctrn.cpp @@ -85,9 +85,9 @@ static UChar* copySpec(const UChar* spec) { } ++len; UChar *result = (UChar *)uprv_malloc(len*sizeof(UChar)); - // Check for memory allocation error. + // Check for memory allocation error. if (result != NULL) { - uprv_memcpy(result, spec, (size_t)len*sizeof(result[0])); + uprv_memcpy(result, spec, (size_t)len*sizeof(result[0])); } return result; } diff --git a/deps/icu-small/source/i18n/unesctrn.h b/deps/icu-small/source/i18n/unesctrn.h index 57dd8d32cf53f3..e905c5bc5f5c6c 100644 --- a/deps/icu-small/source/i18n/unesctrn.h +++ b/deps/icu-small/source/i18n/unesctrn.h @@ -77,12 +77,12 @@ class UnescapeTransliterator : public Transliterator { /** * Transliterator API. */ - virtual UnescapeTransliterator* clone() const; + virtual UnescapeTransliterator* clone() const override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -101,7 +101,7 @@ class UnescapeTransliterator : public Transliterator { * pos.contextLimit. Otherwise, assume the text is complete. */ virtual void handleTransliterate(Replaceable& text, UTransPosition& offset, - UBool isIncremental) const; + UBool isIncremental) const override; }; diff --git a/deps/icu-small/source/i18n/uni2name.cpp b/deps/icu-small/source/i18n/uni2name.cpp index 729a1e5fa82a62..904da0207bc239 100644 --- a/deps/icu-small/source/i18n/uni2name.cpp +++ b/deps/icu-small/source/i18n/uni2name.cpp @@ -87,7 +87,7 @@ void UnicodeNameTransliterator::handleTransliterate(Replaceable& text, UTransPos offsets.start = offsets.limit; return; } - + int32_t cursor = offsets.start; int32_t limit = offsets.limit; diff --git a/deps/icu-small/source/i18n/uni2name.h b/deps/icu-small/source/i18n/uni2name.h index 99309c8e0f8785..1e01d784237a67 100644 --- a/deps/icu-small/source/i18n/uni2name.h +++ b/deps/icu-small/source/i18n/uni2name.h @@ -48,12 +48,12 @@ class UnicodeNameTransliterator : public Transliterator { /** * Transliterator API. */ - virtual UnicodeNameTransliterator* clone() const; + virtual UnicodeNameTransliterator* clone() const override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -72,7 +72,7 @@ class UnicodeNameTransliterator : public Transliterator { * pos.contextLimit. Otherwise, assume the text is complete. */ virtual void handleTransliterate(Replaceable& text, UTransPosition& offset, - UBool isIncremental) const; + UBool isIncremental) const override; private: /** diff --git a/deps/icu-small/source/i18n/unicode/alphaindex.h b/deps/icu-small/source/i18n/unicode/alphaindex.h index d72abce9acd3ec..d0cdd817fba64e 100644 --- a/deps/icu-small/source/i18n/unicode/alphaindex.h +++ b/deps/icu-small/source/i18n/unicode/alphaindex.h @@ -44,7 +44,7 @@ typedef enum UAlphabeticIndexLabelType { U_ALPHAINDEX_NORMAL = 0, /** - * Undeflow Label. The bucket with this label contains names + * Underflow Label. The bucket with this label contains names * in scripts that sort before any of the bucket labels in this index. * @stable ICU 4.8 */ @@ -61,7 +61,7 @@ typedef enum UAlphabeticIndexLabelType { U_ALPHAINDEX_INFLOW = 2, /** - * Overflow Label. Te bucket with this label contains names in scripts + * Overflow Label. The bucket with this label contains names in scripts * that sort after all of the bucket labels in this index. * @stable ICU 4.8 */ @@ -87,7 +87,7 @@ class UVector; * AlphabeticIndex supports the creation of a UI index appropriate for a given language. * It can support either direct use, or use with a client that doesn't support localized collation. * The following is an example of what an index might look like in a UI: - * + * *
      *  ... A B C D E F G H I J K L M N O P Q R S T U V W X Y Z  ...
      *
    @@ -309,17 +309,17 @@ class U_I18N_API AlphabeticIndex: public UObject {
          */
          AlphabeticIndex(const Locale &locale, UErrorCode &status);
     
    -   /**
    +   /** 
          * Construct an AlphabeticIndex that uses a specific collator.
    -     *
    +     * 
          * The index will be created with no labels; the addLabels() function must be called
          * after creation to add the desired labels to the index.
    -     *
    -     * The index adopts the collator, and is responsible for deleting it.
    +     * 
    +     * The index adopts the collator, and is responsible for deleting it. 
          * The caller should make no further use of the collator after creating the index.
    -     *
    +     * 
          * @param collator The collator to use to order the contents of this index.
    -     * @param status Error code, will be set with the reason if the
    +     * @param status Error code, will be set with the reason if the 
          *               operation fails.
          * @stable ICU 51
          */
    @@ -330,7 +330,7 @@ class U_I18N_API AlphabeticIndex: public UObject {
          * that are already in the index; they do not replace the existing
          * ones.
          * @param additions The additional characters to add to the index, such as A-Z.
    -     * @param status Error code, will be set with the reason if the
    +     * @param status Error code, will be set with the reason if the 
          *               operation fails.
          * @return this, for chaining
          * @stable ICU 4.8
    @@ -345,7 +345,7 @@ class U_I18N_API AlphabeticIndex: public UObject {
          * when creating this Index.
          *
          * @param locale The locale whose index characters are to be added.
    -     * @param status Error code, will be set with the reason if the
    +     * @param status Error code, will be set with the reason if the 
          *               operation fails.
          * @return this, for chaining
          * @stable ICU 4.8
    @@ -647,7 +647,7 @@ class U_I18N_API AlphabeticIndex: public UObject {
     private:
          /**
           * No Copy constructor.
    -      * @internal
    +      * @internal (private)
           */
          AlphabeticIndex(const AlphabeticIndex &other);
     
    @@ -658,15 +658,15 @@ class U_I18N_API AlphabeticIndex: public UObject {
     
         /**
          * No Equality operators.
    -     * @internal
    +     * @internal (private)
          */
    -     virtual UBool operator==(const AlphabeticIndex& other) const;
    +     virtual bool operator==(const AlphabeticIndex& other) const;
     
         /**
          * Inequality operator.
    -     * @internal
    +     * @internal (private)
          */
    -     virtual UBool operator!=(const AlphabeticIndex& other) const;
    +     virtual bool operator!=(const AlphabeticIndex& other) const;
     
          // Common initialization, for use from all constructors.
          void init(const Locale *locale, UErrorCode &status);
    @@ -723,7 +723,7 @@ class U_I18N_API AlphabeticIndex: public UObject {
         /**
          * Holds all user records before they are distributed into buckets.
          * Type of contents is (Record *)
    -     * @internal
    +     * @internal (private)
          */
         UVector  *inputList_;
     
    diff --git a/deps/icu-small/source/i18n/unicode/basictz.h b/deps/icu-small/source/i18n/unicode/basictz.h
    index ea8720ed13cf41..250ea309279aa7 100644
    --- a/deps/icu-small/source/i18n/unicode/basictz.h
    +++ b/deps/icu-small/source/i18n/unicode/basictz.h
    @@ -10,7 +10,7 @@
     #define BASICTZ_H
     
     /**
    - * \file
    + * \file 
      * \brief C++ API: ICU TimeZone base class
      */
     
    @@ -49,7 +49,7 @@ class U_I18N_API BasicTimeZone: public TimeZone {
          * @return clone, or nullptr if an error occurred
          * @stable ICU 3.8
          */
    -    virtual BasicTimeZone* clone() const = 0;
    +    virtual BasicTimeZone* clone() const override = 0;
     
         /**
          * Gets the first time zone transition after the base time.
    @@ -84,7 +84,7 @@ class U_I18N_API BasicTimeZone: public TimeZone {
          *              changes will be ignored, except either of them is zero.
          *              For example, a transition from rawoffset 3:00/dstsavings 1:00
          *              to rawoffset 2:00/dstsavings 2:00 is excluded from the comparison,
    -     *              but a transtion from rawoffset 2:00/dstsavings 1:00 to
    +     *              but a transition from rawoffset 2:00/dstsavings 1:00 to
          *              rawoffset 3:00/dstsavings 0:00 is included.
          * @param ec    Output param to filled in with a success or an error.
          * @return      true if the other time zone has the equivalent transitions in the
    @@ -226,8 +226,11 @@ class U_I18N_API BasicTimeZone: public TimeZone {
         /**
          * Gets the set of TimeZoneRule instances applicable to the specified time and after.
          * @param start     The start date used for extracting time zone rules
    -     * @param initial   Receives the InitialTimeZone, always not NULL
    -     * @param transitionRules   Receives the transition rules, could be NULL
    +     * @param initial   Output parameter, receives the InitialTimeZone.
    +     *                  Always not nullptr (except in case of error)
    +     * @param transitionRules   Output parameter, a UVector of transition rules.
    +     *                  May be nullptr, if there are no transition rules.
    +     *                  The caller owns the returned vector; the UVector owns the rules.
          * @param status    Receives error status code
          */
         void getTimeZoneRulesAfter(UDate start, InitialTimeZoneRule*& initial, UVector*& transitionRules,
    diff --git a/deps/icu-small/source/i18n/unicode/calendar.h b/deps/icu-small/source/i18n/unicode/calendar.h
    index be774ab26fb619..c1bdf9282038b1 100644
    --- a/deps/icu-small/source/i18n/unicode/calendar.h
    +++ b/deps/icu-small/source/i18n/unicode/calendar.h
    @@ -449,21 +449,21 @@ class U_I18N_API Calendar : public UObject {
          * represented time, use equals() instead.
          *
          * @param that  The Calendar object to be compared with.
    -     * @return      True if the given Calendar is the same as this Calendar; false
    +     * @return      true if the given Calendar is the same as this Calendar; false
          *              otherwise.
          * @stable ICU 2.0
          */
    -    virtual UBool operator==(const Calendar& that) const;
    +    virtual bool operator==(const Calendar& that) const;
     
         /**
          * Compares the inequality of two Calendar objects.
          *
          * @param that  The Calendar object to be compared with.
    -     * @return      True if the given Calendar is not the same as this Calendar; false
    +     * @return      true if the given Calendar is not the same as this Calendar; false
          *              otherwise.
          * @stable ICU 2.0
          */
    -    UBool operator!=(const Calendar& that) const {return !operator==(that);}
    +    bool operator!=(const Calendar& that) const {return !operator==(that);}
     
         /**
          * Returns true if the given Calendar object is equivalent to this
    @@ -1341,7 +1341,7 @@ class U_I18N_API Calendar : public UObject {
          *           same class ID. Objects of other classes have different class IDs.
          * @stable ICU 2.0
          */
    -    virtual UClassID getDynamicClassID(void) const = 0;
    +    virtual UClassID getDynamicClassID(void) const override = 0;
     
         /**
          * Returns the calendar type name string for this Calendar object.
    diff --git a/deps/icu-small/source/i18n/unicode/choicfmt.h b/deps/icu-small/source/i18n/unicode/choicfmt.h
    index cb01fca253355d..0e7ae186d4d670 100644
    --- a/deps/icu-small/source/i18n/unicode/choicfmt.h
    +++ b/deps/icu-small/source/i18n/unicode/choicfmt.h
    @@ -251,7 +251,7 @@ class U_I18N_API ChoiceFormat: public NumberFormat {
          * @return a copy of this object
          * @deprecated ICU 49 Use MessageFormat instead, with plural and select arguments.
          */
    -    virtual ChoiceFormat* clone() const;
    +    virtual ChoiceFormat* clone() const override;
     
         /**
          * Returns true if the given Format objects are semantically equal.
    @@ -261,7 +261,7 @@ class U_I18N_API ChoiceFormat: public NumberFormat {
          * @return         true if other is the same as this.
          * @deprecated ICU 49 Use MessageFormat instead, with plural and select arguments.
          */
    -    virtual UBool operator==(const Format& other) const;
    +    virtual bool operator==(const Format& other) const override;
     
         /**
          * Sets the pattern.
    @@ -375,7 +375,7 @@ class U_I18N_API ChoiceFormat: public NumberFormat {
          */
         virtual UnicodeString& format(double number,
                                       UnicodeString& appendTo,
    -                                  FieldPosition& pos) const;
    +                                  FieldPosition& pos) const override;
         /**
          * Formats an int32_t number using this object's choices.
          *
    @@ -389,7 +389,7 @@ class U_I18N_API ChoiceFormat: public NumberFormat {
          */
         virtual UnicodeString& format(int32_t number,
                                       UnicodeString& appendTo,
    -                                  FieldPosition& pos) const;
    +                                  FieldPosition& pos) const override;
     
         /**
          * Formats an int64_t number using this object's choices.
    @@ -404,7 +404,7 @@ class U_I18N_API ChoiceFormat: public NumberFormat {
          */
         virtual UnicodeString& format(int64_t number,
                                       UnicodeString& appendTo,
    -                                  FieldPosition& pos) const;
    +                                  FieldPosition& pos) const override;
     
         /**
          * Formats an array of objects using this object's choices.
    @@ -444,7 +444,7 @@ class U_I18N_API ChoiceFormat: public NumberFormat {
         */
         virtual void parse(const UnicodeString& text,
                            Formattable& result,
    -                       ParsePosition& parsePosition) const;
    +                       ParsePosition& parsePosition) const override;
     
         /**
          * Returns a unique class ID POLYMORPHICALLY. Part of ICU's "poor man's RTTI".
    @@ -454,7 +454,7 @@ class U_I18N_API ChoiceFormat: public NumberFormat {
          *                  other classes have different class IDs.
          * @deprecated ICU 49 Use MessageFormat instead, with plural and select arguments.
          */
    -    virtual UClassID getDynamicClassID(void) const;
    +    virtual UClassID getDynamicClassID(void) const override;
     
         /**
          * Returns the class ID for this class.  This is useful only for
    @@ -528,7 +528,7 @@ class U_I18N_API ChoiceFormat: public NumberFormat {
                 const UnicodeString &source, int32_t sourceOffset);
     
         /**
    -     * Some of the ChoiceFormat constructors do not have a UErrorCode paramater.
    +     * Some of the ChoiceFormat constructors do not have a UErrorCode parameter.
          * We need _some_ way to provide one for the MessagePattern constructor.
          * Alternatively, the MessagePattern could be a pointer field, but that is
          * not nice either.
    diff --git a/deps/icu-small/source/i18n/unicode/coleitr.h b/deps/icu-small/source/i18n/unicode/coleitr.h
    index 2696b588278cde..4e68c6f1749a8a 100644
    --- a/deps/icu-small/source/i18n/unicode/coleitr.h
    +++ b/deps/icu-small/source/i18n/unicode/coleitr.h
    @@ -8,7 +8,7 @@
      */
     
     /**
    - * \file
    + * \file 
      * \brief C++ API: Collation Element Iterator.
      */
     
    @@ -25,7 +25,7 @@
     * 08/03/98    erm         Synched with 1.2 version CollationElementIterator.java
     * 12/10/99    aliu        Ported Thai collation support from Java.
     * 01/25/01    swquek      Modified into a C++ wrapper calling C APIs (ucoliter.h)
    -* 02/19/01    swquek      Removed CollationElementsIterator() since it is
    +* 02/19/01    swquek      Removed CollationElementsIterator() since it is 
     *                         private constructor and no calls are made to it
     * 2012-2014   markus      Rewritten in C++ again.
     */
    @@ -56,10 +56,10 @@ class UCollationPCE;
     class UVector32;
     
     /**
    -* The CollationElementIterator class is used as an iterator to walk through
    +* The CollationElementIterator class is used as an iterator to walk through     
     * each character of an international string. Use the iterator to return the
    -* ordering priority of the positioned character. The ordering priority of a
    -* character, which we refer to as a key, defines how a character is collated in
    +* ordering priority of the positioned character. The ordering priority of a 
    +* character, which we refer to as a key, defines how a character is collated in 
     * the given collation object.
     * For example, consider the following in Slovak and in traditional Spanish collation:
     * 
    @@ -69,9 +69,9 @@ class UVector32;
     * 
     \htmlonly       "æb"-> the first key is key('a'), the second key is key('e'), and
     *        the third key is key('b'). \endhtmlonly 
    * The key of a character, is an integer composed of primary order(short), -* secondary order(char), and tertiary order(char). Java strictly defines the +* secondary order(char), and tertiary order(char). Java strictly defines the * size and signedness of its primitive data types. Therefore, the static -* functions primaryOrder(), secondaryOrder(), and tertiaryOrder() return +* functions primaryOrder(), secondaryOrder(), and tertiaryOrder() return * int32_t to ensure the correctness of the key value. *

    Example of the iterator usage: (without error checking) *

    @@ -97,21 +97,21 @@ class UVector32;
     * the comparison level of the collator. The method previous() returns the
     * collation order of the previous character based on the comparison level of
     * the collator. The Collation Element Iterator moves only in one direction
    -* between calls to reset(), setOffset(), or setText(). That is, next()
    -* and previous() can not be inter-used. Whenever previous() is to be called after
    +* between calls to reset(), setOffset(), or setText(). That is, next() 
    +* and previous() can not be inter-used. Whenever previous() is to be called after 
     * next() or vice versa, reset(), setOffset() or setText() has to be called first
     * to reset the status, shifting pointers to either the end or the start of
     * the string (reset() or setText()), or the specified position (setOffset()).
     * Hence at the next call of next() or previous(), the first or last collation order,
    -* or collation order at the spefcifieid position will be returned. If a change of
    +* or collation order at the specified position will be returned. If a change of
     * direction is done without one of these calls, the result is undefined.
     * 

    * The result of a forward iterate (next()) and reversed result of the backward * iterate (previous()) on the same string are equivalent, if collation orders * with the value 0 are ignored. -* Character based on the comparison level of the collator. A collation order -* consists of primary order, secondary order and tertiary order. The data -* type of the collation order is int32_t. +* Character based on the comparison level of the collator. A collation order +* consists of primary order, secondary order and tertiary order. The data +* type of the collation order is int32_t. * * Note, CollationElementIterator should not be subclassed. * @see Collator @@ -119,13 +119,13 @@ class UVector32; * @version 1.8 Jan 16 2001 */ class U_I18N_API CollationElementIterator U_FINAL : public UObject { -public: +public: // CollationElementIterator public data member ------------------------------ enum { /** - * NULLORDER indicates that an error has occured while processing + * NULLORDER indicates that an error has occurred while processing * @stable ICU 2.0 */ NULLORDER = (int32_t)0xffffffff @@ -141,7 +141,7 @@ class U_I18N_API CollationElementIterator U_FINAL : public UObject { */ CollationElementIterator(const CollationElementIterator& other); - /** + /** * Destructor * @stable ICU 2.0 */ @@ -156,7 +156,7 @@ class U_I18N_API CollationElementIterator U_FINAL : public UObject { * @return true if "other" is the same as "this" * @stable ICU 2.0 */ - UBool operator==(const CollationElementIterator& other) const; + bool operator==(const CollationElementIterator& other) const; /** * Returns true if "other" is not the same as "this". @@ -165,7 +165,7 @@ class U_I18N_API CollationElementIterator U_FINAL : public UObject { * @return true if "other" is not the same as "this" * @stable ICU 2.0 */ - UBool operator!=(const CollationElementIterator& other) const; + bool operator!=(const CollationElementIterator& other) const; /** * Resets the cursor to the beginning of the string. @@ -176,8 +176,8 @@ class U_I18N_API CollationElementIterator U_FINAL : public UObject { /** * Gets the ordering priority of the next character in the string. * @param status the error code status. - * @return the next character's ordering. otherwise returns NULLORDER if an - * error has occured or if the end of string has been reached + * @return the next character's ordering. otherwise returns NULLORDER if an + * error has occurred or if the end of string has been reached * @stable ICU 2.0 */ int32_t next(UErrorCode& status); @@ -185,8 +185,8 @@ class U_I18N_API CollationElementIterator U_FINAL : public UObject { /** * Get the ordering priority of the previous collation element in the string. * @param status the error code status. - * @return the previous element's ordering. otherwise returns NULLORDER if an - * error has occured or if the start of string has been reached + * @return the previous element's ordering. otherwise returns NULLORDER if an + * error has occurred or if the start of string has been reached * @stable ICU 2.0 */ int32_t previous(UErrorCode& status); @@ -216,11 +216,11 @@ class U_I18N_API CollationElementIterator U_FINAL : public UObject { static inline int32_t tertiaryOrder(int32_t order); /** - * Return the maximum length of any expansion sequences that end with the + * Return the maximum length of any expansion sequences that end with the * specified comparison order. * @param order a collation order returned by previous or next. - * @return maximum size of the expansion sequences ending with the collation - * element or 1 if collation element does not occur at the end of any + * @return maximum size of the expansion sequences ending with the collation + * element or 1 if collation element does not occur at the end of any * expansion sequence * @stable ICU 2.0 */ @@ -279,7 +279,7 @@ class U_I18N_API CollationElementIterator U_FINAL : public UObject { * * @stable ICU 2.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -312,9 +312,9 @@ class U_I18N_API CollationElementIterator U_FINAL : public UObject { friend class UCollationPCE; /** - * CollationElementIterator constructor. This takes the source string and the - * collation object. The cursor will walk thru the source string based on the - * predefined collation rules. If the source string is empty, NULLORDER will + * CollationElementIterator constructor. This takes the source string and the + * collation object. The cursor will walk thru the source string based on the + * predefined collation rules. If the source string is empty, NULLORDER will * be returned on the calls to next(). * @param sourceText the source string. * @param order the collation object. @@ -332,9 +332,9 @@ class U_I18N_API CollationElementIterator U_FINAL : public UObject { // but only contain the part of RBC== related to data and rules. /** - * CollationElementIterator constructor. This takes the source string and the - * collation object. The cursor will walk thru the source string based on the - * predefined collation rules. If the source string is empty, NULLORDER will + * CollationElementIterator constructor. This takes the source string and the + * collation object. The cursor will walk thru the source string based on the + * predefined collation rules. If the source string is empty, NULLORDER will * be returned on the calls to next(). * @param sourceText the source string. * @param order the collation object. diff --git a/deps/icu-small/source/i18n/unicode/coll.h b/deps/icu-small/source/i18n/unicode/coll.h index c750711fc158cf..9e0050ba6ce73e 100644 --- a/deps/icu-small/source/i18n/unicode/coll.h +++ b/deps/icu-small/source/i18n/unicode/coll.h @@ -253,7 +253,7 @@ class U_I18N_API Collator : public UObject { * @return true if other is the same as this. * @stable ICU 2.0 */ - virtual UBool operator==(const Collator& other) const; + virtual bool operator==(const Collator& other) const; /** * Returns true if "other" is not the same as "this". @@ -262,7 +262,7 @@ class U_I18N_API Collator : public UObject { * @return true if other is not the same as this. * @stable ICU 2.0 */ - virtual UBool operator!=(const Collator& other) const; + virtual bool operator!=(const Collator& other) const; /** * Makes a copy of this object. @@ -864,7 +864,7 @@ class U_I18N_API Collator : public UObject { * IDs. * @stable ICU 2.0 */ - virtual UClassID getDynamicClassID(void) const = 0; + virtual UClassID getDynamicClassID(void) const override = 0; /** * Universal attribute setter @@ -1094,7 +1094,7 @@ class U_I18N_API Collator : public UObject { /** * Default constructor. * Constructor is different from the old default Collator constructor. - * The task for determing the default collation strength and normalization + * The task for determining the default collation strength and normalization * mode is left to the child class. * @stable ICU 2.0 */ diff --git a/deps/icu-small/source/i18n/unicode/curramt.h b/deps/icu-small/source/i18n/unicode/curramt.h index 9c8496381d7aa3..818b11ae5bd8e5 100644 --- a/deps/icu-small/source/i18n/unicode/curramt.h +++ b/deps/icu-small/source/i18n/unicode/curramt.h @@ -23,10 +23,10 @@ #include "unicode/currunit.h" /** - * \file + * \file * \brief C++ API: Currency Amount Object. */ - + U_NAMESPACE_BEGIN /** @@ -69,7 +69,7 @@ class U_I18N_API CurrencyAmount: public Measure { * @stable ICU 3.0 */ CurrencyAmount(const CurrencyAmount& other); - + /** * Assignment operator * @stable ICU 3.0 @@ -81,14 +81,14 @@ class U_I18N_API CurrencyAmount: public Measure { * have the same class as returned by getDynamicClassID(). * @stable ICU 3.0 */ - virtual CurrencyAmount* clone() const; + virtual CurrencyAmount* clone() const override; /** * Destructor * @stable ICU 3.0 */ virtual ~CurrencyAmount(); - + /** * Returns a unique class ID for this object POLYMORPHICALLY. * This method implements a simple form of RTTI used by ICU. @@ -97,7 +97,7 @@ class U_I18N_API CurrencyAmount: public Measure { * different class IDs. * @stable ICU 3.0 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * Returns the class ID for this class. This is used to compare to diff --git a/deps/icu-small/source/i18n/unicode/currpinf.h b/deps/icu-small/source/i18n/unicode/currpinf.h index 1b93be08316827..e3ca34b26f27a3 100644 --- a/deps/icu-small/source/i18n/unicode/currpinf.h +++ b/deps/icu-small/source/i18n/unicode/currpinf.h @@ -29,13 +29,13 @@ class PluralRules; class Hashtable; /** - * This class represents the information needed by - * DecimalFormat to format currency plural, - * such as "3.00 US dollars" or "1.00 US dollar". + * This class represents the information needed by + * DecimalFormat to format currency plural, + * such as "3.00 US dollars" or "1.00 US dollar". * DecimalFormat creates for itself an instance of - * CurrencyPluralInfo from its locale data. + * CurrencyPluralInfo from its locale data. * If you need to change any of these symbols, you can get the - * CurrencyPluralInfo object from your + * CurrencyPluralInfo object from your * DecimalFormat and modify it. * * Following are the information needed for currency plural format and parse: @@ -61,7 +61,7 @@ class U_I18N_API CurrencyPluralInfo : public UObject { * @param status output param set to success/failure code on exit * @stable ICU 4.2 */ - CurrencyPluralInfo(const Locale& locale, UErrorCode& status); + CurrencyPluralInfo(const Locale& locale, UErrorCode& status); /** * Copy constructor @@ -92,7 +92,7 @@ class U_I18N_API CurrencyPluralInfo : public UObject { * * @stable ICU 4.2 */ - UBool operator==(const CurrencyPluralInfo& info) const; + bool operator==(const CurrencyPluralInfo& info) const; /** @@ -100,7 +100,7 @@ class U_I18N_API CurrencyPluralInfo : public UObject { * * @stable ICU 4.2 */ - UBool operator!=(const CurrencyPluralInfo& info) const; + bool operator!=(const CurrencyPluralInfo& info) const; /** @@ -120,7 +120,7 @@ class U_I18N_API CurrencyPluralInfo : public UObject { const PluralRules* getPluralRules() const; /** - * Given a plural count, gets currency plural pattern of this locale, + * Given a plural count, gets currency plural pattern of this locale, * used for currency plural format * * @param pluralCount currency plural count @@ -129,10 +129,10 @@ class U_I18N_API CurrencyPluralInfo : public UObject { * @stable ICU 4.2 */ UnicodeString& getCurrencyPluralPattern(const UnicodeString& pluralCount, - UnicodeString& result) const; + UnicodeString& result) const; /** - * Get locale + * Get locale * * @return locale * @stable ICU 4.2 @@ -157,16 +157,16 @@ class U_I18N_API CurrencyPluralInfo : public UObject { * Set currency plural pattern. * The currency plural pattern is set when CurrencyPluralInfo * instance is created. - * You can call this method to reset currency plural pattern only if + * You can call this method to reset currency plural pattern only if * you want to modify the default currency plural pattern of the locale. * - * @param pluralCount the plural count for which the currency pattern will + * @param pluralCount the plural count for which the currency pattern will * be overridden. * @param pattern the new currency plural pattern * @param status output param set to success/failure code on exit * @stable ICU 4.2 */ - void setCurrencyPluralPattern(const UnicodeString& pluralCount, + void setCurrencyPluralPattern(const UnicodeString& pluralCount, const UnicodeString& pattern, UErrorCode& status); @@ -184,7 +184,7 @@ class U_I18N_API CurrencyPluralInfo : public UObject { * * @stable ICU 4.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -198,7 +198,7 @@ class U_I18N_API CurrencyPluralInfo : public UObject { friend class DecimalFormatImpl; void initialize(const Locale& loc, UErrorCode& status); - + void setupCurrencyPluralPattern(const Locale& loc, UErrorCode& status); /* @@ -259,10 +259,10 @@ class U_I18N_API CurrencyPluralInfo : public UObject { }; -inline UBool +inline bool CurrencyPluralInfo::operator!=(const CurrencyPluralInfo& info) const { return !operator==(info); -} +} U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/unicode/currunit.h b/deps/icu-small/source/i18n/unicode/currunit.h index 090b964a0decee..8da3f1ffd8711a 100644 --- a/deps/icu-small/source/i18n/unicode/currunit.h +++ b/deps/icu-small/source/i18n/unicode/currunit.h @@ -22,10 +22,10 @@ #include "unicode/measunit.h" /** - * \file + * \file * \brief C++ API: Currency Unit Information. */ - + U_NAMESPACE_BEGIN /** @@ -94,7 +94,7 @@ class U_I18N_API CurrencyUnit: public MeasureUnit { * have the same class as returned by getDynamicClassID(). * @stable ICU 3.0 */ - virtual CurrencyUnit* clone() const; + virtual CurrencyUnit* clone() const override; /** * Destructor @@ -110,7 +110,7 @@ class U_I18N_API CurrencyUnit: public MeasureUnit { * different class IDs. * @stable ICU 3.0 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * Returns the class ID for this class. This is used to compare to diff --git a/deps/icu-small/source/i18n/unicode/datefmt.h b/deps/icu-small/source/i18n/unicode/datefmt.h index bbba0785edaccc..027fb1712f4164 100644 --- a/deps/icu-small/source/i18n/unicode/datefmt.h +++ b/deps/icu-small/source/i18n/unicode/datefmt.h @@ -52,7 +52,7 @@ class DateTimePatternGenerator; */ #if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN && !defined(U_IN_DOXYGEN) template class U_I18N_API EnumSet; #endif /** \endcond */ @@ -229,13 +229,13 @@ class U_I18N_API DateFormat : public Format { * @return clone, or nullptr if an error occurred * @stable ICU 2.0 */ - virtual DateFormat* clone() const = 0; + virtual DateFormat* clone() const override = 0; /** * Equality operator. Returns true if the two formats have the same behavior. * @stable ICU 2.0 */ - virtual UBool operator==(const Format&) const; + virtual bool operator==(const Format&) const override; using Format::format; @@ -257,7 +257,7 @@ class U_I18N_API DateFormat : public Format { virtual UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, FieldPosition& pos, - UErrorCode& status) const; + UErrorCode& status) const override; /** * Format an object to produce a string. This method handles Formattable @@ -277,7 +277,7 @@ class U_I18N_API DateFormat : public Format { virtual UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, FieldPositionIterator* posIter, - UErrorCode& status) const; + UErrorCode& status) const override; /** * Formats a date into a date/time string. This is an abstract method which * concrete subclasses must implement. @@ -291,12 +291,12 @@ class U_I18N_API DateFormat : public Format { * statfieldPositionus.getEndIndex will be set to 0 and 4, respectively. *

    Notice * that if the same time field appears more than once in a pattern, the status will - * be set for the first occurence of that time field. For instance, + * be set for the first occurrence of that time field. For instance, * formatting a UDate to the time string "1 PM PDT (Pacific Daylight Time)" * using the pattern "h a z (zzzz)" and the alignment field * DateFormat::TIMEZONE_FIELD, the offsets fieldPosition.beginIndex and * fieldPosition.getEndIndex will be set to 5 and 8, respectively, for the first - * occurence of the timezone pattern character 'z'. + * occurrence of the timezone pattern character 'z'. * * @param cal Calendar set to the date and time to be formatted * into a date/time string. When the calendar type is @@ -349,12 +349,12 @@ class U_I18N_API DateFormat : public Format { * statfieldPositionus.getEndIndex will be set to 0 and 4, respectively. *

    Notice * that if the same time field appears more than once in a pattern, the status will - * be set for the first occurence of that time field. For instance, + * be set for the first occurrence of that time field. For instance, * formatting a UDate to the time string "1 PM PDT (Pacific Daylight Time)" * using the pattern "h a z (zzzz)" and the alignment field * DateFormat::TIMEZONE_FIELD, the offsets fieldPosition.beginIndex and * fieldPosition.getEndIndex will be set to 5 and 8, respectively, for the first - * occurence of the timezone pattern character 'z'. + * occurrence of the timezone pattern character 'z'. * * @param date UDate to be formatted into a date/time string. * @param appendTo Output parameter to receive result. @@ -523,7 +523,7 @@ class U_I18N_API DateFormat : public Format { */ virtual void parseObject(const UnicodeString& source, Formattable& result, - ParsePosition& parse_pos) const; + ParsePosition& parse_pos) const override; /** * Create a default date/time formatter that uses the SHORT style for both @@ -604,7 +604,7 @@ class U_I18N_API DateFormat : public Format { #endif /* U_HIDE_INTERNAL_API */ /** - * Creates a date/time formatter for the given skeleton and + * Creates a date/time formatter for the given skeleton and * default locale. * * @param skeleton The skeleton e.g "yMMMMd." Fields in the skeleton can @@ -680,20 +680,20 @@ class U_I18N_API DateFormat : public Format { * lenient parsing, the parser may use heuristics to interpret inputs that * do not precisely match this object's format. Without lenient parsing, * inputs must match this object's format more closely. - * - * Note: ICU 53 introduced finer grained control of leniency (and added - * new control points) making the preferred method a combination of - * setCalendarLenient() & setBooleanAttribute() calls. - * This method supports prior functionality but may not support all - * future leniency control & behavior of DateFormat. For control of pre 53 leniency, - * Calendar and DateFormat whitespace & numeric tolerance, this method is safe to - * use. However, mixing leniency control via this method and modification of the - * newer attributes via setBooleanAttribute() may produce undesirable + * + * Note: ICU 53 introduced finer grained control of leniency (and added + * new control points) making the preferred method a combination of + * setCalendarLenient() & setBooleanAttribute() calls. + * This method supports prior functionality but may not support all + * future leniency control & behavior of DateFormat. For control of pre 53 leniency, + * Calendar and DateFormat whitespace & numeric tolerance, this method is safe to + * use. However, mixing leniency control via this method and modification of the + * newer attributes via setBooleanAttribute() may produce undesirable * results. * * @param lenient True specifies date/time interpretation to be lenient. * @see Calendar::setLenient - * @stable ICU 2.0 + * @stable ICU 2.0 */ virtual void setLenient(UBool lenient); @@ -799,7 +799,7 @@ class U_I18N_API DateFormat : public Format { * @param value The UDisplayContext value to set. * @param status Input/output status. If at entry this indicates a failure * status, the function will do nothing; otherwise this will be - * updated with any new status from the function. + * updated with any new status from the function. * @stable ICU 53 */ virtual void setContext(UDisplayContext value, UErrorCode& status); @@ -810,7 +810,7 @@ class U_I18N_API DateFormat : public Format { * @param type The UDisplayContextType whose value to return * @param status Input/output status. If at entry this indicates a failure * status, the function will do nothing; otherwise this will be - * updated with any new status from the function. + * updated with any new status from the function. * @return The UDisplayContextValue for the specified type. * @stable ICU 53 */ @@ -828,8 +828,8 @@ class U_I18N_API DateFormat : public Format { */ virtual DateFormat& U_EXPORT2 setBooleanAttribute(UDateFormatBooleanAttribute attr, - UBool newvalue, - UErrorCode &status); + UBool newvalue, + UErrorCode &status); /** * Returns a boolean from this DateFormat @@ -892,7 +892,7 @@ class U_I18N_API DateFormat : public Format { */ static DateFormat* U_EXPORT2 create(EStyle timeStyle, EStyle dateStyle, const Locale& inLocale); - + /** * enum set of active boolean attributes for this instance */ diff --git a/deps/icu-small/source/i18n/unicode/dcfmtsym.h b/deps/icu-small/source/i18n/unicode/dcfmtsym.h index d0f844a51a369f..c5f7404416fda3 100644 --- a/deps/icu-small/source/i18n/unicode/dcfmtsym.h +++ b/deps/icu-small/source/i18n/unicode/dcfmtsym.h @@ -169,8 +169,14 @@ class U_I18N_API DecimalFormatSymbols : public UObject { * @stable ICU 54 */ kExponentMultiplicationSymbol, +#ifndef U_HIDE_INTERNAL_API + /** Approximately sign. + * @internal + */ + kApproximatelySignSymbol, +#endif /* U_HIDE_INTERNAL_API */ /** count symbol constants */ - kFormatSymbolCount = kNineDigitSymbol + 2 + kFormatSymbolCount = kExponentMultiplicationSymbol + 2 }; /** @@ -255,7 +261,7 @@ class U_I18N_API DecimalFormatSymbols : public UObject { * @return true if another object is semantically equal to this one. * @stable ICU 2.0 */ - UBool operator==(const DecimalFormatSymbols& other) const; + bool operator==(const DecimalFormatSymbols& other) const; /** * Return true if another object is semantically unequal to this one. @@ -264,7 +270,7 @@ class U_I18N_API DecimalFormatSymbols : public UObject { * @return true if another object is semantically unequal to this one. * @stable ICU 2.0 */ - UBool operator!=(const DecimalFormatSymbols& other) const { return !operator==(other); } + bool operator!=(const DecimalFormatSymbols& other) const { return !operator==(other); } /** * Get one of the format symbols by its enum constant. @@ -284,12 +290,12 @@ class U_I18N_API DecimalFormatSymbols : public UObject { * * @param symbol Constant to indicate a number format symbol. * @param value value of the format symbol - * @param propogateDigits If false, setting the zero digit will not automatically set 1-9. + * @param propagateDigits If false, setting the zero digit will not automatically set 1-9. * The default behavior is to automatically set 1-9 if zero is being set and the value * it is being set to corresponds to a known Unicode zero digit. * @stable ICU 2.0 */ - void setSymbol(ENumberFormatSymbol symbol, const UnicodeString &value, const UBool propogateDigits); + void setSymbol(ENumberFormatSymbol symbol, const UnicodeString &value, const UBool propagateDigits); #ifndef U_HIDE_INTERNAL_API /** @@ -353,7 +359,7 @@ class U_I18N_API DecimalFormatSymbols : public UObject { * * @stable ICU 2.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -419,7 +425,7 @@ class U_I18N_API DecimalFormatSymbols : public UObject { * * This is not currently stable API, but if you think it should be stable, * post a comment on the following ticket and the ICU team will take a look: - * http://bugs.icu-project.org/trac/ticket/13580 + * https://unicode-org.atlassian.net/browse/ICU-13580 * * @param symbol Constant to indicate a number format symbol. * @return the format symbol by the param 'symbol' @@ -436,7 +442,7 @@ class U_I18N_API DecimalFormatSymbols : public UObject { * * This is not currently stable API, but if you think it should be stable, * post a comment on the following ticket and the ICU team will take a look: - * http://bugs.icu-project.org/trac/ticket/13580 + * https://unicode-org.atlassian.net/browse/ICU-13580 * * @param digit The digit, an integer between 0 and 9 inclusive. * If outside the range 0 to 9, the zero digit is returned. diff --git a/deps/icu-small/source/i18n/unicode/decimfmt.h b/deps/icu-small/source/i18n/unicode/decimfmt.h index b0da8efb1e68b5..ab6cd14e187ec3 100644 --- a/deps/icu-small/source/i18n/unicode/decimfmt.h +++ b/deps/icu-small/source/i18n/unicode/decimfmt.h @@ -909,7 +909,7 @@ class U_I18N_API DecimalFormat : public NumberFormat { * @return true if the given Format objects are semantically equal. * @stable ICU 2.0 */ - UBool operator==(const Format& other) const U_OVERRIDE; + bool operator==(const Format& other) const U_OVERRIDE; using NumberFormat::format; @@ -1831,13 +1831,13 @@ class U_I18N_API DecimalFormat : public NumberFormat { * This means a minimum of 2 integer digits, 1 fraction digit, and * a maximum of 2 fraction digits. *

    -     * .      Example: "#,#00.0#;(#,#00.0#)" for negatives in parantheses.
    +     * .      Example: "#,#00.0#;(#,#00.0#)" for negatives in parentheses.
          * 
    * In negative patterns, the minimum and maximum counts are ignored; * these are presumed to be set in the positive pattern. * * @param pattern The pattern to be applied. - * @param parseError Struct to recieve information on position + * @param parseError Struct to receive information on position * of error if an error is encountered * @param status Output param set to success/failure code on * exit. If the pattern is invalid, this will be @@ -1873,13 +1873,13 @@ class U_I18N_API DecimalFormat : public NumberFormat { * This means a minimum of 2 integer digits, 1 fraction digit, and * a maximum of 2 fraction digits. * - * Example: "#,#00.0#;(#,#00.0#)" for negatives in parantheses. + * Example: "#,#00.0#;(#,#00.0#)" for negatives in parentheses. * * In negative patterns, the minimum and maximum counts are ignored; * these are presumed to be set in the positive pattern. * * @param pattern The localized pattern to be applied. - * @param parseError Struct to recieve information on position + * @param parseError Struct to receive information on position * of error if an error is encountered * @param status Output param set to success/failure code on * exit. If the pattern is invalid, this will be @@ -2072,7 +2072,7 @@ class U_I18N_API DecimalFormat : public NumberFormat { * You can use the returned LocalizedNumberFormatter to format numbers and * get a FormattedNumber, which contains a string as well as additional * annotations about the formatted value. - * + * * If a memory allocation failure occurs, the return value of this method * might be null. If you are concerned about correct recovery from * out-of-memory situations, use this pattern: diff --git a/deps/icu-small/source/i18n/unicode/dtfmtsym.h b/deps/icu-small/source/i18n/unicode/dtfmtsym.h index f368eaef551434..200b3a6ef17a11 100644 --- a/deps/icu-small/source/i18n/unicode/dtfmtsym.h +++ b/deps/icu-small/source/i18n/unicode/dtfmtsym.h @@ -174,7 +174,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { * @return true if other is semantically equal to this. * @stable ICU 2.0 */ - UBool operator==(const DateFormatSymbols& other) const; + bool operator==(const DateFormatSymbols& other) const; /** * Return true if another object is semantically unequal to this one. @@ -183,7 +183,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { * @return true if other is semantically unequal to this. * @stable ICU 2.0 */ - UBool operator!=(const DateFormatSymbols& other) const { return !operator==(other); } + bool operator!=(const DateFormatSymbols& other) const { return !operator==(other); } /** * Gets abbreviated era strings. For example: "AD" and "BC". @@ -388,8 +388,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { * Gets quarter strings by width and context. For example: "1st Quarter", "2nd Quarter", etc. * @param count Filled in with length of the array. * @param context The formatting context, either FORMAT or STANDALONE - * @param width The width of returned strings, either WIDE or ABBREVIATED. There - * are no NARROW quarters. + * @param width The width of returned strings, either WIDE, ABBREVIATED, or NARROW. * @return the quarter strings. (DateFormatSymbols retains ownership.) * @stable ICU 3.6 */ @@ -401,8 +400,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { * @param quarters The new quarter strings. (not adopted; caller retains ownership) * @param count Filled in with length of the array. * @param context The formatting context, either FORMAT or STANDALONE - * @param width The width of returned strings, either WIDE or ABBREVIATED. There - * are no NARROW quarters. + * @param width The width of returned strings, either WIDE, ABBREVIATED, or NARROW. * @stable ICU 3.6 */ void setQuarters(const UnicodeString* quarters, int32_t count, DtContextType context, DtWidthType width); @@ -554,7 +552,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { /** * Sets timezone strings. These strings are stored in a 2-dimensional array. *

    Note: SimpleDateFormat no longer use the zone strings stored in - * a DateFormatSymbols. Therefore, the time zone strings set by this mthod + * a DateFormatSymbols. Therefore, the time zone strings set by this method * have no effects in an instance of SimpleDateFormat for formatting time * zones. * @param strings The timezone strings as a 2-d array to be copied. (not adopted; caller retains ownership) @@ -599,7 +597,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const; /* The following type and kCapContextUsageTypeCount cannot be #ifndef U_HIDE_INTERNAL_API, - they are needed for .h file declarations. */ + they are needed for .h file declarations. */ /** * Constants for capitalization context usage types. * @internal @@ -630,7 +628,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { * * @stable ICU 2.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -775,6 +773,13 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { UnicodeString *fShortQuarters; int32_t fShortQuartersCount; + /** + * Narrow quarters. For example: "1", "2", etc. + * (In many, but not all, locales, this is the same as "Q", but there are locales for which this isn't true.) + */ + UnicodeString *fNarrowQuarters; + int32_t fNarrowQuartersCount; + /** * Standalone quarter strings. For example: "1st quarter", "2nd quarter", etc. */ @@ -787,6 +792,13 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { UnicodeString *fStandaloneShortQuarters; int32_t fStandaloneShortQuartersCount; + /** + * Standalone narrow quarter strings. For example: "1", "2", etc. + * (In many, but not all, locales, this is the same as "q", but there are locales for which this isn't true.) + */ + UnicodeString *fStandaloneNarrowQuarters; + int32_t fStandaloneNarrowQuartersCount; + /** * All leap month patterns, for example "{0}bis". */ @@ -816,7 +828,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { * entry containing the localized names for a single TimeZone. * * Each such row contains (with i ranging from 0..n-1): - * + * * zoneStrings[i][0] - time zone ID * example: America/Los_Angeles * zoneStrings[i][1] - long name of zone in standard time @@ -902,7 +914,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { int32_t fStandaloneNarrowDayPeriodsCount; private: - /** valid/actual locale information + /** valid/actual locale information * these are always ICU locales, so the length should not be a problem */ char validLocale[ULOC_FULLNAME_CAPACITY]; @@ -926,7 +938,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { * Copy or alias an array in another object, as appropriate. * * @param dstArray the copy destination array. - * @param dstCount fill in with the lenth of 'dstArray'. + * @param dstCount fill in with the length of 'dstArray'. * @param srcArray the source array to be copied. * @param srcCount the length of items to be copied from the 'srcArray'. */ diff --git a/deps/icu-small/source/i18n/unicode/dtitvfmt.h b/deps/icu-small/source/i18n/unicode/dtitvfmt.h index 4a1ab801a04c9d..85a1b365d83f4a 100644 --- a/deps/icu-small/source/i18n/unicode/dtitvfmt.h +++ b/deps/icu-small/source/i18n/unicode/dtitvfmt.h @@ -434,7 +434,7 @@ class U_I18N_API DateIntervalFormat : public Format { * @return A copy of the object. * @stable ICU 4.0 */ - virtual DateIntervalFormat* clone() const; + virtual DateIntervalFormat* clone() const override; /** * Return true if the given Format objects are semantically equal. Objects @@ -443,7 +443,7 @@ class U_I18N_API DateIntervalFormat : public Format { * @return true if the given Format objects are semantically equal. * @stable ICU 4.0 */ - virtual UBool operator==(const Format& other) const; + virtual bool operator==(const Format& other) const override; /** * Return true if the given Format objects are not semantically equal. @@ -452,7 +452,7 @@ class U_I18N_API DateIntervalFormat : public Format { * @return true if the given Format objects are not semantically equal. * @stable ICU 4.0 */ - UBool operator!=(const Format& other) const; + bool operator!=(const Format& other) const; using Format::format; @@ -479,7 +479,7 @@ class U_I18N_API DateIntervalFormat : public Format { virtual UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, FieldPosition& fieldPosition, - UErrorCode& status) const ; + UErrorCode& status) const override; @@ -595,7 +595,7 @@ class U_I18N_API DateIntervalFormat : public Format { */ virtual void parseObject(const UnicodeString& source, Formattable& result, - ParsePosition& parse_pos) const; + ParsePosition& parse_pos) const override; /** @@ -652,7 +652,6 @@ class U_I18N_API DateIntervalFormat : public Format { */ virtual void setTimeZone(const TimeZone& zone); -#ifndef U_FORCE_HIDE_DRAFT_API /** * Set a particular UDisplayContext value in the formatter, such as * UDISPCTX_CAPITALIZATION_FOR_STANDALONE. This causes the formatted @@ -663,7 +662,7 @@ class U_I18N_API DateIntervalFormat : public Format { * @param status Input/output status. If at entry this indicates a failure * status, the function will do nothing; otherwise this will be * updated with any new status from the function. - * @draft ICU 68 + * @stable ICU 68 */ virtual void setContext(UDisplayContext value, UErrorCode& status); @@ -675,10 +674,9 @@ class U_I18N_API DateIntervalFormat : public Format { * status, the function will do nothing; otherwise this will be * updated with any new status from the function. * @return The UDisplayContextValue for the specified type. - * @draft ICU 68 + * @stable ICU 68 */ virtual UDisplayContext getContext(UDisplayContextType type, UErrorCode& status) const; -#endif // U_FORCE_HIDE_DRAFT_API /** * Return the class ID for this class. This is useful only for comparing to @@ -704,7 +702,7 @@ class U_I18N_API DateIntervalFormat : public Format { * other classes have different class IDs. * @stable ICU 4.0 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; protected: @@ -742,7 +740,7 @@ class U_I18N_API DateIntervalFormat : public Format { * Whether the first date in interval pattern is later date or not. * Fallback format set the default ordering. * And for a particular interval pattern, the order can be - * overriden by prefixing the interval pattern with "latestFirst:" or + * overridden by prefixing the interval pattern with "latestFirst:" or * "earliestFirst:" * For example, given 2 date, Jan 10, 2007 to Feb 10, 2007. * if the fallback format is "{0} - {1}", @@ -893,7 +891,7 @@ class U_I18N_API DateIntervalFormat : public Format { void setFallbackPattern(UCalendarDateFields field, const UnicodeString& skeleton, UErrorCode& status); - + /** @@ -1199,7 +1197,7 @@ class U_I18N_API DateIntervalFormat : public Format { UDisplayContext fCapitalizationContext; }; -inline UBool +inline bool DateIntervalFormat::operator!=(const Format& other) const { return !operator==(other); } diff --git a/deps/icu-small/source/i18n/unicode/dtitvinf.h b/deps/icu-small/source/i18n/unicode/dtitvinf.h index 8452614bfb8d87..b5afc064678224 100644 --- a/deps/icu-small/source/i18n/unicode/dtitvinf.h +++ b/deps/icu-small/source/i18n/unicode/dtitvinf.h @@ -45,7 +45,7 @@ U_NAMESPACE_BEGIN *

    * For power users, who want to create their own date interval patterns, * or want to re-set date interval patterns, they could do so by - * directly creating DateIntervalInfo and manupulating it. + * directly creating DateIntervalInfo and manipulating it. * *

    * Logically, the interval patterns are mappings @@ -114,7 +114,7 @@ U_NAMESPACE_BEGIN * the first date in the interval pattern for this locale is earlier date. * If the fallback format is "{1} - {0}", it means the first date is the * later date. - * For a particular interval pattern, the default order can be overriden + * For a particular interval pattern, the default order can be overridden * by prefixing "latestFirst:" or "earliestFirst:" to the interval pattern. * For example, if the fallback format is "{0}-{1}", * but for skeleton "yMMMd", the interval pattern when day is different is @@ -214,7 +214,7 @@ class U_I18N_API DateIntervalInfo U_FINAL : public UObject { * @return true if other is semantically equal to this. * @stable ICU 4.0 */ - virtual UBool operator==(const DateIntervalInfo& other) const; + virtual bool operator==(const DateIntervalInfo& other) const; /** * Return true if another object is semantically unequal to this one. @@ -223,7 +223,7 @@ class U_I18N_API DateIntervalInfo U_FINAL : public UObject { * @return true if other is semantically unequal to this. * @stable ICU 4.0 */ - UBool operator!=(const DateIntervalInfo& other) const; + bool operator!=(const DateIntervalInfo& other) const; @@ -319,7 +319,7 @@ class U_I18N_API DateIntervalInfo U_FINAL : public UObject { * * @stable ICU 4.0 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -406,7 +406,7 @@ class U_I18N_API DateIntervalInfo U_FINAL : public UObject { * and the best match skeleton. * * TODO (xji): set field weight or - * isolate the funtionality in DateTimePatternGenerator + * isolate the functionality in DateTimePatternGenerator * @param skeleton input skeleton * @param bestMatchDistanceInfo the difference between input skeleton * and best match skeleton. @@ -508,7 +508,7 @@ class U_I18N_API DateIntervalInfo U_FINAL : public UObject { };// end class DateIntervalInfo -inline UBool +inline bool DateIntervalInfo::operator!=(const DateIntervalInfo& other) const { return !operator==(other); } @@ -521,3 +521,4 @@ U_NAMESPACE_END #endif /* U_SHOW_CPLUSPLUS_API */ #endif + diff --git a/deps/icu-small/source/i18n/unicode/dtptngen.h b/deps/icu-small/source/i18n/unicode/dtptngen.h index dab7dcfb3dc61a..250a0e089fed6b 100644 --- a/deps/icu-small/source/i18n/unicode/dtptngen.h +++ b/deps/icu-small/source/i18n/unicode/dtptngen.h @@ -120,7 +120,7 @@ class U_I18N_API DateTimePatternGenerator : public UObject { * @return true if other is semantically equal to this. * @stable ICU 3.8 */ - UBool operator==(const DateTimePatternGenerator& other) const; + bool operator==(const DateTimePatternGenerator& other) const; /** * Return true if another object is semantically unequal to this one. @@ -129,7 +129,7 @@ class U_I18N_API DateTimePatternGenerator : public UObject { * @return true if other is semantically unequal to this. * @stable ICU 3.8 */ - UBool operator!=(const DateTimePatternGenerator& other) const; + bool operator!=(const DateTimePatternGenerator& other) const; /** * Utility to return a unique skeleton from a given pattern. For example, @@ -202,7 +202,7 @@ class U_I18N_API DateTimePatternGenerator : public UObject { /** * Adds a pattern to the generator. If the pattern has the same skeleton as * an existing pattern, and the override parameter is set, then the previous - * value is overriden. Otherwise, the previous value is retained. In either + * value is overridden. Otherwise, the previous value is retained. In either * case, the conflicting status is set and previous vale is stored in * conflicting pattern. *

    @@ -495,9 +495,9 @@ class U_I18N_API DateTimePatternGenerator : public UObject { /** * Get the default hour cycle for a locale. Uses the locale that the * DateTimePatternGenerator was initially created with. - * + * * Cannot be used on an empty DateTimePatternGenerator instance. - * + * * @param status Output param set to success/failure code on exit, which * which must not indicate a failure before the function call. * Set to U_UNSUPPORTED_ERROR if used on an empty instance. @@ -507,13 +507,13 @@ class U_I18N_API DateTimePatternGenerator : public UObject { UDateFormatHourCycle getDefaultHourCycle(UErrorCode& status) const; #endif /* #if !UCONFIG_NO_FORMATTING */ - + /** * ICU "poor man's RTTI", returns a UClassID for the actual class. * * @stable ICU 3.8 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. diff --git a/deps/icu-small/source/i18n/unicode/dtrule.h b/deps/icu-small/source/i18n/unicode/dtrule.h index dba28bf2dc4ede..19e94bc981c817 100644 --- a/deps/icu-small/source/i18n/unicode/dtrule.h +++ b/deps/icu-small/source/i18n/unicode/dtrule.h @@ -14,7 +14,7 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: Rule for specifying date and time in an year */ @@ -27,7 +27,7 @@ U_NAMESPACE_BEGIN * DateTimeRule is a class representing a time in a year by * a rule specified by month, day of month, day of week and * time in the day. - * + * * @stable ICU 3.8 */ class U_I18N_API DateTimeRule : public UObject { @@ -40,11 +40,11 @@ class U_I18N_API DateTimeRule : public UObject { enum DateRuleType { DOM = 0, /**< The exact day of month, for example, March 11. */ - DOW, /**< The Nth occurence of the day of week, + DOW, /**< The Nth occurrence of the day of week, for example, 2nd Sunday in March. */ - DOW_GEQ_DOM, /**< The first occurence of the day of week on or after the day of monnth, + DOW_GEQ_DOM, /**< The first occurrence of the day of week on or after the day of monnth, for example, first Sunday on or after March 8. */ - DOW_LEQ_DOM /**< The last occurence of the day of week on or before the day of month, + DOW_LEQ_DOM /**< The last occurrence of the day of week on or before the day of month, for example, first Sunday on or before March 14. */ }; @@ -62,7 +62,7 @@ class U_I18N_API DateTimeRule : public UObject { * Constructs a DateTimeRule by the day of month and * the time rule. The date rule type for an instance created by * this constructor is DOM. - * + * * @param month The rule month, for example, Calendar::JANUARY * @param dayOfMonth The day of month, 1-based. * @param millisInDay The milliseconds in the rule date. @@ -74,10 +74,10 @@ class U_I18N_API DateTimeRule : public UObject { int32_t millisInDay, TimeRuleType timeType); /** - * Constructs a DateTimeRule by the day of week and its oridinal + * Constructs a DateTimeRule by the day of week and its ordinal * number and the time rule. The date rule type for an instance created * by this constructor is DOW. - * + * * @param month The rule month, for example, Calendar::JANUARY. * @param weekInMonth The ordinal number of the day of week. Negative number * may be used for specifying a rule date counted from the @@ -96,7 +96,7 @@ class U_I18N_API DateTimeRule : public UObject { * on or after/before the day of month and the time rule. The date rule * type for an instance created by this constructor is either * DOM_GEQ_DOM or DOM_LEQ_DOM. - * + * * @param month The rule month, for example, Calendar::JANUARY * @param dayOfMonth The day of month, 1-based. * @param dayOfWeek The day of week, for example, Calendar::SUNDAY. @@ -144,7 +144,7 @@ class U_I18N_API DateTimeRule : public UObject { * @return true if the given DateTimeRule objects are semantically equal. * @stable ICU 3.8 */ - UBool operator==(const DateTimeRule& that) const; + bool operator==(const DateTimeRule& that) const; /** * Return true if the given DateTimeRule objects are semantically unequal. Objects @@ -153,7 +153,7 @@ class U_I18N_API DateTimeRule : public UObject { * @return true if the given DateTimeRule objects are semantically unequal. * @stable ICU 3.8 */ - UBool operator!=(const DateTimeRule& that) const; + bool operator!=(const DateTimeRule& that) const; /** * Gets the date rule type, such as DOM @@ -194,7 +194,7 @@ class U_I18N_API DateTimeRule : public UObject { int32_t getRuleDayOfWeek(void) const; /** - * Gets the ordinal number of the occurence of the day of week + * Gets the ordinal number of the occurrence of the day of week * in the month. When the date rule type is not DOW, * the value is always 0. * @return The rule day of week ordinal number in the month. @@ -243,7 +243,7 @@ class U_I18N_API DateTimeRule : public UObject { * other classes have different class IDs. * @stable ICU 3.8 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/unicode/fieldpos.h b/deps/icu-small/source/i18n/unicode/fieldpos.h index 6c28d2d3159b66..b985f3b2f76db4 100644 --- a/deps/icu-small/source/i18n/unicode/fieldpos.h +++ b/deps/icu-small/source/i18n/unicode/fieldpos.h @@ -20,7 +20,7 @@ // ***************************************************************************** // This file was generated from the java source file FieldPosition.java // ***************************************************************************** - + #ifndef FIELDPOS_H #define FIELDPOS_H @@ -29,7 +29,7 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: FieldPosition identifies the fields in a formatted output. */ @@ -71,14 +71,14 @@ U_NAMESPACE_BEGIN * double doubleNum[] = {123456789.0, -12345678.9, 1234567.89, -123456.789, * 12345.6789, -1234.56789, 123.456789, -12.3456789, 1.23456789}; * int dNumSize = (int)(sizeof(doubleNum)/sizeof(double)); - * + * * UErrorCode status = U_ZERO_ERROR; * DecimalFormat* fmt = (DecimalFormat*) NumberFormat::createInstance(status); * fmt->setDecimalSeparatorAlwaysShown(true); - * + * * const int tempLen = 20; * char temp[tempLen]; - * + * * for (int i=0; i * If there is no match when parsing, a parse failure UErrorCode is - * retured for methods which take no ParsePosition. For the method + * returned for methods which take no ParsePosition. For the method * that takes a ParsePosition, the index parameter is left unchanged. *

    * User subclasses are not supported. While clients may write @@ -111,7 +111,7 @@ class U_I18N_API Format : public UObject { * Objects of different subclasses are considered unequal. * @stable ICU 2.0 */ - virtual UBool operator==(const Format& other) const = 0; + virtual bool operator==(const Format& other) const = 0; /** * Return true if the given Format objects are not semantically @@ -120,7 +120,7 @@ class U_I18N_API Format : public UObject { * @return Return true if the given Format objects are not semantically. * @stable ICU 2.0 */ - UBool operator!=(const Format& other) const { return !operator==(other); } + bool operator!=(const Format& other) const { return !operator==(other); } /** * Clone this object polymorphically. The caller is responsible @@ -245,7 +245,7 @@ class U_I18N_API Format : public UObject { UErrorCode& status) const; /** Get the locale for this format object. You can choose between valid and actual locale. - * @param type type of the locale we're looking for (valid or actual) + * @param type type of the locale we're looking for (valid or actual) * @param status error code for the operation * @return the locale * @stable ICU 2.8 @@ -254,7 +254,7 @@ class U_I18N_API Format : public UObject { #ifndef U_HIDE_INTERNAL_API /** Get the locale for this format object. You can choose between valid and actual locale. - * @param type type of the locale we're looking for (valid or actual) + * @param type type of the locale we're looking for (valid or actual) * @param status error code for the operation * @return the locale * @internal @@ -283,12 +283,12 @@ class U_I18N_API Format : public UObject { */ Format& operator=(const Format&); // Does nothing; for subclasses - + /** * Simple function for initializing a UParseError from a UnicodeString. * * @param pattern The pattern to copy into the parseError - * @param pos The position in pattern where the error occured + * @param pos The position in pattern where the error occurred * @param parseError The UParseError object to fill in * @stable ICU 2.4 */ diff --git a/deps/icu-small/source/i18n/unicode/formattedvalue.h b/deps/icu-small/source/i18n/unicode/formattedvalue.h index f4e588d01cbddf..5febea066180a0 100644 --- a/deps/icu-small/source/i18n/unicode/formattedvalue.h +++ b/deps/icu-small/source/i18n/unicode/formattedvalue.h @@ -20,7 +20,7 @@ U_NAMESPACE_BEGIN /** * \file * \brief C++ API: Abstract operations for localized strings. - * + * * This file contains declarations for classes that deal with formatted strings. A number * of APIs throughout ICU use these classes for expressing their localized output. */ @@ -65,7 +65,7 @@ class U_I18N_API ConstrainedFieldPosition : public UMemory { /** * Sets a constraint on the field category. - * + * * When this instance of ConstrainedFieldPosition is passed to FormattedValue#nextPosition, * positions are skipped unless they have the given category. * @@ -89,7 +89,7 @@ class U_I18N_API ConstrainedFieldPosition : public UMemory { /** * Sets a constraint on the category and field. - * + * * When this instance of ConstrainedFieldPosition is passed to FormattedValue#nextPosition, * positions are skipped unless they have the given category and field. * diff --git a/deps/icu-small/source/i18n/unicode/fpositer.h b/deps/icu-small/source/i18n/unicode/fpositer.h index 35aa5da20f2cfa..0e38d0b78b3a48 100644 --- a/deps/icu-small/source/i18n/unicode/fpositer.h +++ b/deps/icu-small/source/i18n/unicode/fpositer.h @@ -84,7 +84,7 @@ class U_I18N_API FieldPositionIterator : public UObject { * equal array of run values. * @stable ICU 4.4 */ - UBool operator==(const FieldPositionIterator&) const; + bool operator==(const FieldPositionIterator&) const; /** * Returns the complement of the result of operator== @@ -92,7 +92,7 @@ class U_I18N_API FieldPositionIterator : public UObject { * @return the complement of the result of operator== * @stable ICU 4.4 */ - UBool operator!=(const FieldPositionIterator& rhs) const { return !operator==(rhs); } + bool operator!=(const FieldPositionIterator& rhs) const { return !operator==(rhs); } /** * If the current position is valid, updates the FieldPosition values, advances the iterator, @@ -104,7 +104,7 @@ class U_I18N_API FieldPositionIterator : public UObject { private: /** * Sets the data used by the iterator, and resets the position. - * Returns U_ILLEGAL_ARGUMENT_ERROR in status if the data is not valid + * Returns U_ILLEGAL_ARGUMENT_ERROR in status if the data is not valid * (length is not a multiple of 3, or start >= limit for any run). */ void setData(UVector32 *adopt, UErrorCode& status); diff --git a/deps/icu-small/source/i18n/unicode/gender.h b/deps/icu-small/source/i18n/unicode/gender.h index 5ae111a3aa816a..cf7fee963e1fe8 100644 --- a/deps/icu-small/source/i18n/unicode/gender.h +++ b/deps/icu-small/source/i18n/unicode/gender.h @@ -67,7 +67,7 @@ class U_I18N_API GenderInfo : public UObject { /** * Determines the gender of a list as a whole given the gender of each * of the elements. - * + * * @param genders the gender of each element in the list. * @param length the length of gender array. * @param status Output param set to success/failure code on exit, which diff --git a/deps/icu-small/source/i18n/unicode/gregocal.h b/deps/icu-small/source/i18n/unicode/gregocal.h index 139258d822a30c..4c2be18251faa9 100644 --- a/deps/icu-small/source/i18n/unicode/gregocal.h +++ b/deps/icu-small/source/i18n/unicode/gregocal.h @@ -35,13 +35,13 @@ #include "unicode/calendar.h" /** - * \file + * \file * \brief C++ API: Concrete class which provides the standard calendar. */ U_NAMESPACE_BEGIN -/** +/** * Concrete class which provides the standard calendar used by most of the world. *

    * The standard (Gregorian) calendar has 2 eras, BC and AD. @@ -78,9 +78,9 @@ U_NAMESPACE_BEGIN * \code * // get the supported ids for GMT-08:00 (Pacific Standard Time) * UErrorCode success = U_ZERO_ERROR; - * const StringEnumeration *ids = TimeZone::createEnumeration(-8 * 60 * 60 * 1000); + * const StringEnumeration *ids = TimeZone::createEnumeration(-8 * 60 * 60 * 1000, success); * // if no ids were returned, something is wrong. get out. - * if (ids == 0 || ids->count(success) == 0) { + * if (U_FAILURE(success)) { * return; * } * @@ -141,7 +141,7 @@ U_NAMESPACE_BEGIN * cout << "DST_OFFSET: " << (calendar->get( UCAL_DST_OFFSET, success )/(60*60*1000)) << endl; // in hours * * if (U_FAILURE(success)) { - * cout << "An error occured. success=" << u_errorName(success) << endl; + * cout << "An error occurred. success=" << u_errorName(success) << endl; * } * * delete ids; @@ -303,7 +303,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * @return return a polymorphic copy of this calendar. * @stable ICU 2.0 */ - virtual GregorianCalendar* clone() const; + virtual GregorianCalendar* clone() const override; /** * Sets the GregorianCalendar change date. This is the point when the switch from @@ -347,10 +347,10 @@ class U_I18N_API GregorianCalendar: public Calendar { * Returns true if the given Calendar object is equivalent to this * one. Calendar override. * - * @param other the Calendar to be compared with this Calendar + * @param other the Calendar to be compared with this Calendar * @stable ICU 2.4 */ - virtual UBool isEquivalentTo(const Calendar& other) const; + virtual UBool isEquivalentTo(const Calendar& other) const override; #ifndef U_FORCE_HIDE_DEPRECATED_API /** @@ -364,7 +364,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * an error status. * @deprecated ICU 2.6. Use roll(UCalendarDateFields field, int32_t amount, UErrorCode& status) instead. */ - virtual void roll(EDateFields field, int32_t amount, UErrorCode& status); + virtual void roll(EDateFields field, int32_t amount, UErrorCode& status) override; #endif // U_FORCE_HIDE_DEPRECATED_API /** @@ -378,7 +378,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * an error status. * @stable ICU 2.6. */ - virtual void roll(UCalendarDateFields field, int32_t amount, UErrorCode& status); + virtual void roll(UCalendarDateFields field, int32_t amount, UErrorCode& status) override; #ifndef U_HIDE_DEPRECATED_API /** @@ -409,7 +409,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * @return the minimum value that this field could have, given the current date. * @stable ICU 3.0 */ - int32_t getActualMinimum(UCalendarDateFields field, UErrorCode &status) const; + int32_t getActualMinimum(UCalendarDateFields field, UErrorCode &status) const override; #ifndef U_HIDE_DEPRECATED_API /** @@ -434,7 +434,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * @return the maximum value that this field could have, given the current date. * @stable ICU 2.6 */ - virtual int32_t getActualMaximum(UCalendarDateFields field, UErrorCode& status) const; + virtual int32_t getActualMaximum(UCalendarDateFields field, UErrorCode& status) const override; /** * (Overrides Calendar) Return true if the current date for this Calendar is in @@ -445,7 +445,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * false, otherwise. * @stable ICU 2.0 */ - virtual UBool inDaylightTime(UErrorCode& status) const; + virtual UBool inDaylightTime(UErrorCode& status) const override; public: @@ -459,7 +459,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * same class ID. Objects of other classes have different class IDs. * @stable ICU 2.0 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Return the class ID for this class. This is useful only for comparing to a return @@ -484,7 +484,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * @return legacy calendar type name string * @stable ICU 49 */ - virtual const char * getType() const; + virtual const char * getType() const override; private: GregorianCalendar(); // default constructor not implemented @@ -512,17 +512,17 @@ class U_I18N_API GregorianCalendar: public Calendar { * @internal */ virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, - UBool useMonth) const; + UBool useMonth) const override; /** * Subclasses may override this. This method calls * handleGetMonthLength() to obtain the calendar-specific month * length. - * @param bestField which field to use to calculate the date + * @param bestField which field to use to calculate the date * @return julian day specified by calendar fields. * @internal */ - virtual int32_t handleComputeJulianDay(UCalendarDateFields bestField) ; + virtual int32_t handleComputeJulianDay(UCalendarDateFields bestField) override; /** * Return the number of days in the given month of the given extended @@ -531,7 +531,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * implementation than the default implementation in Calendar. * @internal */ - virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const; + virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override; /** * Return the number of days in the given extended year of this @@ -540,7 +540,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * default implementation in Calendar. * @stable ICU 2.0 */ - virtual int32_t handleGetYearLength(int32_t eyear) const; + virtual int32_t handleGetYearLength(int32_t eyear) const override; /** * return the length of the given month. @@ -567,7 +567,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * @internal */ int32_t yearLength(int32_t year) const; - + /** * return the length of the year field. * @return the length of the year field @@ -589,7 +589,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * Return the day number with respect to the epoch. January 1, 1970 (Gregorian) * is day zero. * @param status Fill-in parameter which receives the status of this operation. - * @return the day number with respect to the epoch. + * @return the day number with respect to the epoch. * @internal */ virtual UDate getEpochDay(UErrorCode& status); @@ -615,7 +615,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * LEAST_MAXIMUM, or MAXIMUM * @internal */ - virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const; + virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override; /** * Return the extended year defined by the current fields. This will @@ -625,17 +625,17 @@ class U_I18N_API GregorianCalendar: public Calendar { * @return the extended year * @internal */ - virtual int32_t handleGetExtendedYear(); + virtual int32_t handleGetExtendedYear() override; - /** - * Subclasses may override this to convert from week fields + /** + * Subclasses may override this to convert from week fields * (YEAR_WOY and WEEK_OF_YEAR) to an extended year in the case * where YEAR, EXTENDED_YEAR are not set. * The Gregorian implementation assumes a yearWoy in gregorian format, according to the current era. * @return the extended year, UCAL_EXTENDED_YEAR * @internal */ - virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy); + virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy) override; /** @@ -653,19 +653,19 @@ class U_I18N_API GregorianCalendar: public Calendar { * a calendar with the specified Julian/Gregorian cutover date. * @internal */ - virtual void handleComputeFields(int32_t julianDay, UErrorCode &status); + virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override; private: /** * Compute the julian day number of the given year. * @param isGregorian if true, using Gregorian calendar, otherwise using Julian calendar * @param year the given year. - * @param isLeap true if the year is a leap year. - * @return + * @param isLeap true if the year is a leap year. + * @return */ static double computeJulianDayOfYear(UBool isGregorian, int32_t year, UBool& isLeap); - + /** * Validates the values of the set time fields. True if they're all valid. * @return True if the set time fields are all valid. @@ -757,21 +757,21 @@ class U_I18N_API GregorianCalendar: public Calendar { /** * @return true if this calendar has the notion of a default century - * @internal + * @internal */ - virtual UBool haveDefaultCentury() const; + virtual UBool haveDefaultCentury() const override; /** * @return the start of the default century * @internal */ - virtual UDate defaultCenturyStart() const; + virtual UDate defaultCenturyStart() const override; /** * @return the beginning year of the default century - * @internal + * @internal */ - virtual int32_t defaultCenturyStartYear() const; + virtual int32_t defaultCenturyStartYear() const override; }; U_NAMESPACE_END @@ -782,3 +782,4 @@ U_NAMESPACE_END #endif // _GREGOCAL //eof + diff --git a/deps/icu-small/source/i18n/unicode/listformatter.h b/deps/icu-small/source/i18n/unicode/listformatter.h index 3cc750c8387499..d7ab1d20865a39 100644 --- a/deps/icu-small/source/i18n/unicode/listformatter.h +++ b/deps/icu-small/source/i18n/unicode/listformatter.h @@ -257,7 +257,7 @@ class U_I18N_API ListFormatter : public UObject{ #endif /* U_HIDE_INTERNAL_API */ private: - + /** * Creates a ListFormatter appropriate for a locale and style. * diff --git a/deps/icu-small/source/i18n/unicode/measfmt.h b/deps/icu-small/source/i18n/unicode/measfmt.h index f48dada2abf02a..893076145f5f31 100644 --- a/deps/icu-small/source/i18n/unicode/measfmt.h +++ b/deps/icu-small/source/i18n/unicode/measfmt.h @@ -23,7 +23,7 @@ #include "unicode/udat.h" /** - * \file + * \file * \brief C++ API: Compatibility APIs for measure formatting. */ @@ -40,10 +40,10 @@ enum UMeasureFormatWidth { // Wide, short, and narrow must be first and in this order. /** * Spell out measure units. - * @stable ICU 53 + * @stable ICU 53 */ UMEASFMT_WIDTH_WIDE, - + /** * Abbreviate measure units. * @stable ICU 53 @@ -72,7 +72,7 @@ enum UMeasureFormatWidth { #endif // U_HIDE_DEPRECATED_API }; /** @stable ICU 53 */ -typedef enum UMeasureFormatWidth UMeasureFormatWidth; +typedef enum UMeasureFormatWidth UMeasureFormatWidth; U_NAMESPACE_BEGIN @@ -148,13 +148,13 @@ class U_I18N_API MeasureFormat : public Format { * Return true if given Format objects are semantically equal. * @stable ICU 53 */ - virtual UBool operator==(const Format &other) const; + virtual bool operator==(const Format &other) const override; /** * Clones this object polymorphically. * @stable ICU 53 */ - virtual MeasureFormat *clone() const; + virtual MeasureFormat *clone() const override; /** * Formats object to produce a string. @@ -164,7 +164,7 @@ class U_I18N_API MeasureFormat : public Format { const Formattable &obj, UnicodeString &appendTo, FieldPosition &pos, - UErrorCode &status) const; + UErrorCode &status) const override; #ifndef U_FORCE_HIDE_DRAFT_API /** @@ -176,7 +176,7 @@ class U_I18N_API MeasureFormat : public Format { virtual void parseObject( const UnicodeString &source, Formattable &reslt, - ParsePosition &pos) const; + ParsePosition &pos) const override; #endif // U_FORCE_HIDE_DRAFT_API /** @@ -286,7 +286,7 @@ class U_I18N_API MeasureFormat : public Format { * other classes have different class IDs. * @stable ICU 53 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; protected: /** @@ -295,7 +295,7 @@ class U_I18N_API MeasureFormat : public Format { */ MeasureFormat(); -#ifndef U_HIDE_INTERNAL_API +#ifndef U_HIDE_INTERNAL_API /** * ICU use only. @@ -360,7 +360,7 @@ class U_I18N_API MeasureFormat : public Format { const MeasureFormatCacheData *cache; const SharedNumberFormat *numberFormat; const SharedPluralRules *pluralRules; - UMeasureFormatWidth fWidth; + UMeasureFormatWidth fWidth; // Declared outside of MeasureFormatSharedData because ListFormatter // objects are relatively cheap to copy; therefore, they don't need to be diff --git a/deps/icu-small/source/i18n/unicode/measunit.h b/deps/icu-small/source/i18n/unicode/measunit.h index 0985ba0706eaa4..61da62e71f2271 100644 --- a/deps/icu-small/source/i18n/unicode/measunit.h +++ b/deps/icu-small/source/i18n/unicode/measunit.h @@ -107,12 +107,14 @@ typedef enum UMeasurePrefix { */ UMEASURE_PREFIX_YOTTA = UMEASURE_PREFIX_ONE + 24, +#ifndef U_HIDE_INTERNAL_API /** * ICU use only. * Used to determine the set of base-10 SI prefixes. * @internal */ UMEASURE_PREFIX_INTERNAL_MAX_SI = UMEASURE_PREFIX_YOTTA, +#endif /* U_HIDE_INTERNAL_API */ /** * SI prefix: zetta, 10^21. @@ -433,14 +435,14 @@ class U_I18N_API MeasureUnit: public UObject { * to the given object. * @stable ICU 3.0 */ - virtual UBool operator==(const UObject& other) const; + virtual bool operator==(const UObject& other) const; /** * Inequality operator. Return true if this object is not equal * to the given object. * @stable ICU 53 */ - UBool operator!=(const UObject& other) const { + bool operator!=(const UObject& other) const { return !(*this == other); } @@ -577,7 +579,6 @@ class U_I18N_API MeasureUnit: public UObject { */ MeasureUnit product(const MeasureUnit& other, UErrorCode& status) const; -#ifndef U_HIDE_DRAFT_API /** * Gets the list of SINGLE units contained within a MIXED or COMPOUND unit. * @@ -591,10 +592,9 @@ class U_I18N_API MeasureUnit: public UObject { * * @param status Set if an error occurs. * @return A pair with the list of units as a LocalArray and the number of units in the list. - * @draft ICU 68 + * @stable ICU 68 */ inline std::pair, int32_t> splitToSingleUnits(UErrorCode& status) const; -#endif // U_HIDE_DRAFT_API /** * getAvailable gets all of the available units. @@ -664,7 +664,7 @@ class U_I18N_API MeasureUnit: public UObject { * other classes have different class IDs. * @stable ICU 53 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; #ifndef U_HIDE_INTERNAL_API /** @@ -955,6 +955,24 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getSquareYard(); +#ifndef U_HIDE_DRAFT_API + /** + * Returns by pointer, unit of concentr: item. + * Caller owns returned value and must free it. + * Also see {@link #getItem()}. + * @param status ICU error code. + * @draft ICU 70 + */ + static MeasureUnit *createItem(UErrorCode &status); + + /** + * Returns by value, unit of concentr: item. + * Also see {@link #createItem()}. + * @draft ICU 70 + */ + static MeasureUnit getItem(); +#endif /* U_HIDE_DRAFT_API */ + /** * Returns by pointer, unit of concentr: karat. * Caller owns returned value and must free it. @@ -1805,6 +1823,24 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getThermUs(); +#ifndef U_HIDE_DRAFT_API + /** + * Returns by pointer, unit of force: kilowatt-hour-per-100-kilometer. + * Caller owns returned value and must free it. + * Also see {@link #getKilowattHourPer100Kilometer()}. + * @param status ICU error code. + * @draft ICU 70 + */ + static MeasureUnit *createKilowattHourPer100Kilometer(UErrorCode &status); + + /** + * Returns by value, unit of force: kilowatt-hour-per-100-kilometer. + * Also see {@link #createKilowattHourPer100Kilometer()}. + * @draft ICU 70 + */ + static MeasureUnit getKilowattHourPer100Kilometer(); +#endif /* U_HIDE_DRAFT_API */ + /** * Returns by pointer, unit of force: newton. * Caller owns returned value and must free it. @@ -1901,23 +1937,21 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getMegahertz(); -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of graphics: dot. * Caller owns returned value and must free it. * Also see {@link #getDot()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createDot(UErrorCode &status); /** * Returns by value, unit of graphics: dot. * Also see {@link #createDot()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getDot(); -#endif /* U_HIDE_DRAFT_API */ /** * Returns by pointer, unit of graphics: dot-per-centimeter. @@ -2079,23 +2113,21 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getDecimeter(); -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of length: earth-radius. * Caller owns returned value and must free it. * Also see {@link #getEarthRadius()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createEarthRadius(UErrorCode &status); /** * Returns by value, unit of length: earth-radius. * Also see {@link #createEarthRadius()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getEarthRadius(); -#endif /* U_HIDE_DRAFT_API */ /** * Returns by pointer, unit of length: fathom. @@ -2385,41 +2417,37 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getYard(); -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of light: candela. * Caller owns returned value and must free it. * Also see {@link #getCandela()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createCandela(UErrorCode &status); /** * Returns by value, unit of light: candela. * Also see {@link #createCandela()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getCandela(); -#endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of light: lumen. * Caller owns returned value and must free it. * Also see {@link #getLumen()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createLumen(UErrorCode &status); /** * Returns by value, unit of light: lumen. * Also see {@link #createLumen()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getLumen(); -#endif /* U_HIDE_DRAFT_API */ /** * Returns by pointer, unit of light: lux. @@ -2501,23 +2529,21 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getEarthMass(); -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of mass: grain. * Caller owns returned value and must free it. * Also see {@link #getGrain()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createGrain(UErrorCode &status); /** * Returns by value, unit of mass: grain. * Also see {@link #createGrain()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getGrain(); -#endif /* U_HIDE_DRAFT_API */ /** * Returns by pointer, unit of mass: gram. @@ -3335,77 +3361,69 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getDeciliter(); -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of volume: dessert-spoon. * Caller owns returned value and must free it. * Also see {@link #getDessertSpoon()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createDessertSpoon(UErrorCode &status); /** * Returns by value, unit of volume: dessert-spoon. * Also see {@link #createDessertSpoon()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getDessertSpoon(); -#endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of volume: dessert-spoon-imperial. * Caller owns returned value and must free it. * Also see {@link #getDessertSpoonImperial()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createDessertSpoonImperial(UErrorCode &status); /** * Returns by value, unit of volume: dessert-spoon-imperial. * Also see {@link #createDessertSpoonImperial()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getDessertSpoonImperial(); -#endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of volume: dram. * Caller owns returned value and must free it. * Also see {@link #getDram()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createDram(UErrorCode &status); /** * Returns by value, unit of volume: dram. * Also see {@link #createDram()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getDram(); -#endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of volume: drop. * Caller owns returned value and must free it. * Also see {@link #getDrop()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createDrop(UErrorCode &status); /** * Returns by value, unit of volume: drop. * Also see {@link #createDrop()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getDrop(); -#endif /* U_HIDE_DRAFT_API */ /** * Returns by pointer, unit of volume: fluid-ounce. @@ -3487,23 +3505,21 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getHectoliter(); -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of volume: jigger. * Caller owns returned value and must free it. * Also see {@link #getJigger()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createJigger(UErrorCode &status); /** * Returns by value, unit of volume: jigger. * Also see {@link #createJigger()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getJigger(); -#endif /* U_HIDE_DRAFT_API */ /** * Returns by pointer, unit of volume: liter. @@ -3553,23 +3569,21 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getMilliliter(); -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of volume: pinch. * Caller owns returned value and must free it. * Also see {@link #getPinch()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createPinch(UErrorCode &status); /** * Returns by value, unit of volume: pinch. * Also see {@link #createPinch()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getPinch(); -#endif /* U_HIDE_DRAFT_API */ /** * Returns by pointer, unit of volume: pint. @@ -3619,23 +3633,21 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getQuart(); -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of volume: quart-imperial. * Caller owns returned value and must free it. * Also see {@link #getQuartImperial()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createQuartImperial(UErrorCode &status); /** * Returns by value, unit of volume: quart-imperial. * Also see {@link #createQuartImperial()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getQuartImperial(); -#endif /* U_HIDE_DRAFT_API */ /** * Returns by pointer, unit of volume: tablespoon. @@ -3724,15 +3736,13 @@ class U_I18N_API MeasureUnit: public UObject { friend class number::impl::LongNameHandler; }; -#ifndef U_HIDE_DRAFT_API -// inline impl of @draft ICU 68 method +// inline impl of @stable ICU 68 method inline std::pair, int32_t> MeasureUnit::splitToSingleUnits(UErrorCode& status) const { int32_t length; auto array = splitToSingleUnitsImpl(length, status); return std::make_pair(std::move(array), length); } -#endif // U_HIDE_DRAFT_API U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/unicode/measure.h b/deps/icu-small/source/i18n/unicode/measure.h index 0ed02626b13b8f..7b118acfcfaf5a 100644 --- a/deps/icu-small/source/i18n/unicode/measure.h +++ b/deps/icu-small/source/i18n/unicode/measure.h @@ -18,10 +18,10 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: MeasureUnit object. */ - + #if !UCONFIG_NO_FORMATTING #include "unicode/fmtable.h" @@ -81,13 +81,13 @@ class U_I18N_API Measure: public UObject { * @stable ICU 3.0 */ virtual ~Measure(); - + /** * Equality operator. Return true if this object is equal * to the given object. * @stable ICU 3.0 */ - UBool operator==(const UObject& other) const; + bool operator==(const UObject& other) const; /** * Return a reference to the numeric value of this object. The @@ -127,7 +127,7 @@ class U_I18N_API Measure: public UObject { * other classes have different class IDs. * @stable ICU 53 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; protected: /** diff --git a/deps/icu-small/source/i18n/unicode/msgfmt.h b/deps/icu-small/source/i18n/unicode/msgfmt.h index 14b57a114dc3a5..c949132fdae73b 100644 --- a/deps/icu-small/source/i18n/unicode/msgfmt.h +++ b/deps/icu-small/source/i18n/unicode/msgfmt.h @@ -420,7 +420,7 @@ class U_I18N_API MessageFormat : public Format { * result and should delete it when done. * @stable ICU 2.0 */ - virtual MessageFormat* clone() const; + virtual MessageFormat* clone() const override; /** * Returns true if the given Format objects are semantically equal. @@ -429,7 +429,7 @@ class U_I18N_API MessageFormat : public Format { * @return true if the given Format objects are semantically equal. * @stable ICU 2.0 */ - virtual UBool operator==(const Format& other) const; + virtual bool operator==(const Format& other) const override; /** * Sets the locale to be used for creating argument Format objects. @@ -589,7 +589,7 @@ class U_I18N_API MessageFormat : public Format { * arguments. If numbered, the formatName is the * corresponding UnicodeStrings (e.g. "0", "1", "2"...). * The returned Format object should not be deleted by the caller, - * nor should the ponter of other object . The pointer and its + * nor should the pointer of other object . The pointer and its * contents remain valid only until the next call to any method * of this class is made with this object. * @param formatName the name or number specifying a format @@ -715,7 +715,7 @@ class U_I18N_API MessageFormat : public Format { virtual UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, FieldPosition& pos, - UErrorCode& status) const; + UErrorCode& status) const override; /** * Formats the given array of arguments into a user-defined argument name @@ -790,7 +790,7 @@ class U_I18N_API MessageFormat : public Format { */ virtual void parseObject(const UnicodeString& source, Formattable& result, - ParsePosition& pos) const; + ParsePosition& pos) const override; /** * Convert an 'apostrophe-friendly' pattern into a standard @@ -850,7 +850,7 @@ class U_I18N_API MessageFormat : public Format { * other classes have different class IDs. * @stable ICU 2.0 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Return the class ID for this class. This is useful only for @@ -898,7 +898,7 @@ class U_I18N_API MessageFormat : public Format { public: PluralSelectorProvider(const MessageFormat &mf, UPluralType type); virtual ~PluralSelectorProvider(); - virtual UnicodeString select(void *ctx, double number, UErrorCode& ec) const; + virtual UnicodeString select(void *ctx, double number, UErrorCode& ec) const override; void reset(); private: @@ -1088,22 +1088,22 @@ class U_I18N_API MessageFormat : public Format { */ class U_I18N_API DummyFormat : public Format { public: - virtual UBool operator==(const Format&) const; - virtual DummyFormat* clone() const; + virtual bool operator==(const Format&) const override; + virtual DummyFormat* clone() const override; virtual UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, UErrorCode& status) const; virtual UnicodeString& format(const Formattable&, UnicodeString& appendTo, FieldPosition&, - UErrorCode& status) const; + UErrorCode& status) const override; virtual UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, FieldPositionIterator* posIter, - UErrorCode& status) const; + UErrorCode& status) const override; virtual void parseObject(const UnicodeString&, Formattable&, - ParsePosition&) const; + ParsePosition&) const override; }; friend class MessageFormatAdapter; // getFormatTypeList() access diff --git a/deps/icu-small/source/i18n/unicode/nounit.h b/deps/icu-small/source/i18n/unicode/nounit.h index cee45e352df473..96aca35d0132e9 100644 --- a/deps/icu-small/source/i18n/unicode/nounit.h +++ b/deps/icu-small/source/i18n/unicode/nounit.h @@ -18,8 +18,6 @@ #include "unicode/measunit.h" -#ifndef U_HIDE_DRAFT_API - /** * \file * \brief C++ API: units for percent and permille @@ -31,7 +29,7 @@ U_NAMESPACE_BEGIN * Dimensionless unit for percent and permille. * Prior to ICU 68, this namespace was a class with the same name. * @see NumberFormatter - * @draft ICU 68 + * @stable ICU 68 */ namespace NoUnit { /** @@ -42,7 +40,7 @@ namespace NoUnit { * Since ICU 68, this function returns the same value as the default MeasureUnit constructor. * * @return a MeasureUnit instance - * @draft ICU 68 + * @stable ICU 68 */ static inline MeasureUnit U_EXPORT2 base() { return MeasureUnit(); @@ -56,7 +54,7 @@ namespace NoUnit { * Since ICU 68, this function returns the same value as MeasureUnit::getPercent(). * * @return a MeasureUnit instance - * @draft ICU 68 + * @stable ICU 68 */ static inline MeasureUnit U_EXPORT2 percent() { return MeasureUnit::getPercent(); @@ -70,7 +68,7 @@ namespace NoUnit { * Since ICU 68, this function returns the same value as MeasureUnit::getPermille(). * * @return a MeasureUnit instance - * @draft ICU 68 + * @stable ICU 68 */ static inline MeasureUnit U_EXPORT2 permille() { return MeasureUnit::getPermille(); @@ -79,7 +77,6 @@ namespace NoUnit { U_NAMESPACE_END -#endif /* U_HIDE_DRAFT_API */ #endif /* #if !UCONFIG_NO_FORMATTING */ #endif /* U_SHOW_CPLUSPLUS_API */ diff --git a/deps/icu-small/source/i18n/unicode/numberformatter.h b/deps/icu-small/source/i18n/unicode/numberformatter.h index b987e64b937455..ece433b55f09ea 100644 --- a/deps/icu-small/source/i18n/unicode/numberformatter.h +++ b/deps/icu-small/source/i18n/unicode/numberformatter.h @@ -29,7 +29,7 @@ /** * \file * \brief C++ API: All-in-one formatter for localized numbers, currencies, and units. - * + * * For a full list of options, see icu::number::NumberFormatterSettings. * *

    @@ -1517,6 +1517,9 @@ struct U_I18N_API MacroProps : public UMemory {
         /** @internal */
         UNumberSignDisplay sign = UNUM_SIGN_COUNT;
     
    +    /** @internal */
    +    bool approximately = false;
    +
         /** @internal */
         UNumberDecimalSeparatorDisplay decimal = UNUM_DECIMAL_SEPARATOR_COUNT;
     
    @@ -2164,7 +2167,6 @@ class U_I18N_API NumberFormatterSettings {
          */
         Derived scale(const Scale &scale) &&;
     
    -#ifndef U_HIDE_DRAFT_API
         /**
          * Specifies the usage for which numbers will be formatted ("person-height",
          * "road", "rainfall", etc.)
    @@ -2203,9 +2205,9 @@ class U_I18N_API NumberFormatterSettings {
          * @param usage A `usage` parameter from the units resource. See the
          * unitPreferenceData in *source/data/misc/units.txt*, generated from
          * `unitPreferenceData` in [CLDR's
    -     * supplemental/units.xml](https://github.com/unicode-org/cldr/blob/master/common/supplemental/units.xml).
    +     * supplemental/units.xml](https://github.com/unicode-org/cldr/blob/main/common/supplemental/units.xml).
          * @return The fluent chain.
    -     * @draft ICU 68
    +     * @stable ICU 68
          */
         Derived usage(StringPiece usage) const &;
     
    @@ -2214,10 +2216,9 @@ class U_I18N_API NumberFormatterSettings {
          *
          * @param usage The unit `usage`.
          * @return The fluent chain.
    -     * @draft ICU 68
    +     * @stable ICU 68
          */
         Derived usage(StringPiece usage) &&;
    -#endif // U_HIDE_DRAFT_API
     
     #ifndef U_HIDE_DRAFT_API
     #ifndef U_HIDE_INTERNAL_API
    @@ -2486,6 +2487,12 @@ class U_I18N_API LocalizedNumberFormatter
     
     #ifndef U_HIDE_INTERNAL_API
     
    +            
    +    /**
    +     * @internal
    +     */
    +    const DecimalFormatSymbols* getDecimalFormatSymbols() const;
    +    
         /** Internal method.
          * @internal
          */
    @@ -2715,7 +2722,6 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue {
         template
         inline StringClass toDecimalNumber(UErrorCode& status) const;
     
    -#ifndef U_HIDE_DRAFT_API
     	/**
          * Gets the resolved output unit.
          *
    @@ -2725,10 +2731,11 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue {
          * as "foot-and-inch" or "hour-and-minute-and-second".
          *
          * @return `MeasureUnit`.
    -     * @draft ICU 68
    +     * @stable ICU 68
          */
         MeasureUnit getOutputUnit(UErrorCode& status) const;
     
    +#ifndef U_HIDE_INTERNAL_API
         /**
          * Gets the gender of the formatted output. Returns "" when the gender is
          * unknown, or for ungendered languages.
    @@ -2736,9 +2743,6 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue {
          * @internal ICU 69 technology preview.
          */
         const char *getGender(UErrorCode& status) const;
    -#endif // U_HIDE_DRAFT_API
    -
    -#ifndef U_HIDE_INTERNAL_API
     
         /**
          *  Gets the raw DecimalQuantity for plural rule selection.
    diff --git a/deps/icu-small/source/i18n/unicode/numberrangeformatter.h b/deps/icu-small/source/i18n/unicode/numberrangeformatter.h
    index 432f2f6095dedf..363f7d48cfe169 100644
    --- a/deps/icu-small/source/i18n/unicode/numberrangeformatter.h
    +++ b/deps/icu-small/source/i18n/unicode/numberrangeformatter.h
    @@ -608,12 +608,11 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue {
         /** @copydoc FormattedValue::nextPosition() */
         UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const U_OVERRIDE;
     
    -#ifndef U_HIDE_DRAFT_API
         /**
          * Extracts the formatted range as a pair of decimal numbers. This endpoint
          * is useful for obtaining the exact number being printed after scaling
          * and rounding have been applied by the number range formatting pipeline.
    -     *
    +     * 
          * The syntax of the unformatted numbers is a "numeric string"
          * as defined in the Decimal Arithmetic Specification, available at
          * http://speleotrove.com/decimal
    @@ -626,11 +625,10 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue {
          *         for example, std::string.
          * @param status Set if an error occurs.
          * @return A pair of StringClasses containing the numeric strings.
    -     * @draft ICU 68
    +     * @stable ICU 68
          */
         template
         inline std::pair getDecimalNumbers(UErrorCode& status) const;
    -#endif // U_HIDE_DRAFT_API
     
         /**
          * Returns whether the pair of numbers was successfully formatted as a range or whether an identity fallback was
    @@ -643,6 +641,15 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue {
          */
         UNumberRangeIdentityResult getIdentityResult(UErrorCode& status) const;
     
    +#ifndef U_HIDE_DRAFT_API
    +    /**
    +     * Default constructor; makes an empty FormattedNumberRange.
    +     * @draft ICU 70
    +     */
    +    FormattedNumberRange()
    +        : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}
    +#endif  /* U_HIDE_DRAFT_API */
    +
         /**
          * Copying not supported; use move constructor instead.
          */
    @@ -705,8 +712,7 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue {
         friend struct impl::UFormattedNumberRangeImpl;
     };
     
    -#ifndef U_HIDE_DRAFT_API
    -// inline impl of @draft ICU 68 method
    +// inline impl of @stable ICU 68 method
     template
     std::pair FormattedNumberRange::getDecimalNumbers(UErrorCode& status) const {
         StringClass str1;
    @@ -716,7 +722,6 @@ std::pair FormattedNumberRange::getDecimalNumbers(UErr
         getDecimalNumbers(sink1, sink2, status);
         return std::make_pair(str1, str2);
     }
    -#endif // U_HIDE_DRAFT_API
     
     /**
      * See the main description in numberrangeformatter.h for documentation and examples.
    diff --git a/deps/icu-small/source/i18n/unicode/numfmt.h b/deps/icu-small/source/i18n/unicode/numfmt.h
    index 058ccb38c7f1a4..135fe5b66093a9 100644
    --- a/deps/icu-small/source/i18n/unicode/numfmt.h
    +++ b/deps/icu-small/source/i18n/unicode/numfmt.h
    @@ -16,7 +16,7 @@
     *   04/17/97    aliu        Changed DigitCount to int per code review.
     *    07/20/98    stephen        JDK 1.2 sync up. Added scientific support.
     *                            Changed naming conventions to match C++ guidelines
    -*                            Derecated Java style constants (eg, INTEGER_FIELD)
    +*                            Deprecated Java style constants (eg, INTEGER_FIELD)
     ********************************************************************************
     */
     
    @@ -79,7 +79,7 @@ class StringEnumeration;
      *    #include "unicode/unistr.h"
      *    #include "unicode/ustream.h"
      *    using namespace std;
    - *
    + *    
      *    int main() {
      *        double myNumber = 7.0;
      *        UnicodeString myString;
    @@ -266,7 +266,7 @@ class U_I18N_API NumberFormat : public Format {
          * @return clone, or nullptr if an error occurred
          * @stable ICU 2.0
          */
    -    virtual NumberFormat* clone() const = 0;
    +    virtual NumberFormat* clone() const override = 0;
     
         /**
          * Return true if the given Format objects are semantically equal.
    @@ -274,7 +274,7 @@ class U_I18N_API NumberFormat : public Format {
          * @return    true if the given Format objects are semantically equal.
          * @stable ICU 2.0
          */
    -    virtual UBool operator==(const Format& other) const;
    +    virtual bool operator==(const Format& other) const override;
     
     
         using Format::format;
    @@ -297,7 +297,7 @@ class U_I18N_API NumberFormat : public Format {
         virtual UnicodeString& format(const Formattable& obj,
                                       UnicodeString& appendTo,
                                       FieldPosition& pos,
    -                                  UErrorCode& status) const;
    +                                  UErrorCode& status) const override;
     
         /**
          * Format an object to produce a string.  This method handles
    @@ -318,7 +318,7 @@ class U_I18N_API NumberFormat : public Format {
         virtual UnicodeString& format(const Formattable& obj,
                                       UnicodeString& appendTo,
                                       FieldPositionIterator* posIter,
    -                                  UErrorCode& status) const;
    +                                  UErrorCode& status) const override;
     
         /**
          * Parse a string to produce an object.  This methods handles
    @@ -350,7 +350,7 @@ class U_I18N_API NumberFormat : public Format {
          */
         virtual void parseObject(const UnicodeString& source,
                                  Formattable& result,
    -                             ParsePosition& parse_pos) const;
    +                             ParsePosition& parse_pos) const override;
     
         /**
          * Format a double number. These methods call the NumberFormat
    @@ -685,7 +685,7 @@ class U_I18N_API NumberFormat : public Format {
          * true, the string "1234." would be parsed as the integer value
          * 1234 and parsing would stop at the "." character.  Of course,
          * the exact format accepted by the parse operation is locale
    -     * dependant and determined by sub-classes of NumberFormat.
    +     * dependent and determined by sub-classes of NumberFormat.
          * @return    true if this format will parse numbers as integers
          *            only.
          * @stable ICU 2.0
    @@ -1041,7 +1041,7 @@ class U_I18N_API NumberFormat : public Format {
     
         /**
          * Get the rounding mode. This will always return NumberFormat::ERoundingMode::kRoundUnnecessary
    -     * if the subclass does not support rounding.
    +     * if the subclass does not support rounding. 
          * @return A rounding mode
          * @stable ICU 60
          */
    @@ -1077,7 +1077,7 @@ class U_I18N_API NumberFormat : public Format {
          * other classes have different class IDs.
          * @stable ICU 2.0
          */
    -    virtual UClassID getDynamicClassID(void) const = 0;
    +    virtual UClassID getDynamicClassID(void) const override = 0;
     
     protected:
     
    @@ -1238,12 +1238,12 @@ class U_I18N_API SimpleNumberFormatFactory : public NumberFormatFactory {
         /**
          * @stable ICU 2.6
          */
    -    virtual UBool visible(void) const;
    +    virtual UBool visible(void) const override;
     
         /**
          * @stable ICU 2.6
          */
    -    virtual const UnicodeString * getSupportedIDs(int32_t &count, UErrorCode& status) const;
    +    virtual const UnicodeString * getSupportedIDs(int32_t &count, UErrorCode& status) const override;
     };
     #endif /* #if !UCONFIG_NO_SERVICE */
     
    diff --git a/deps/icu-small/source/i18n/unicode/numsys.h b/deps/icu-small/source/i18n/unicode/numsys.h
    index efdf0c0f669a35..4f839d0f354eff 100644
    --- a/deps/icu-small/source/i18n/unicode/numsys.h
    +++ b/deps/icu-small/source/i18n/unicode/numsys.h
    @@ -42,7 +42,7 @@ U_NAMESPACE_BEGIN
     constexpr const size_t kInternalNumSysNameCapacity = 8;
     
     /**
    - * Defines numbering systems. A numbering system describes the scheme by which
    + * Defines numbering systems. A numbering system describes the scheme by which 
      * numbers are to be presented to the end user.  In its simplest form, a numbering
      * system describes the set of digit characters that are to be used to display
      * numbers, such as Western digits, Thai digits, Arabic-Indic digits, etc., in a
    @@ -100,7 +100,7 @@ class U_I18N_API NumberingSystem : public UObject {
         static NumberingSystem* U_EXPORT2 createInstance(UErrorCode& status);
     
         /**
    -     * Create a numbering system using the specified radix, type, and description.
    +     * Create a numbering system using the specified radix, type, and description. 
          * @param radix         The radix (base) for this numbering system.
          * @param isAlgorithmic true if the numbering system is algorithmic rather than numeric.
          * @param description   The string representing the set of digits used in a numeric system, or the name of the RBNF
    @@ -192,7 +192,7 @@ class U_I18N_API NumberingSystem : public UObject {
          *
          * @stable ICU 4.2
          */
    -    virtual UClassID getDynamicClassID() const;
    +    virtual UClassID getDynamicClassID() const override;
     
     
     private:
    diff --git a/deps/icu-small/source/i18n/unicode/plurfmt.h b/deps/icu-small/source/i18n/unicode/plurfmt.h
    index fde2abcfae5ac2..db16054605731f 100644
    --- a/deps/icu-small/source/i18n/unicode/plurfmt.h
    +++ b/deps/icu-small/source/i18n/unicode/plurfmt.h
    @@ -70,7 +70,7 @@ class NFRule;
      *     use the predefined keywords. The whole plural formatting of messages can
      *     be done using localized patterns from resource bundles. For predefined plural
      *     rules, see the CLDR Language Plural Rules page at
    - *    http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
    + *     https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/language_plural_rules.html
      * 
      * 

    *

    Usage of PluralFormat

    @@ -389,7 +389,7 @@ class U_I18N_API PluralFormat : public Format { FieldPosition& pos, UErrorCode& status) const; -#ifndef U_HIDE_DEPRECATED_API +#ifndef U_HIDE_DEPRECATED_API /** * Sets the locale used by this PluraFormat object. * Note: Calling this method resets this PluraFormat object, @@ -434,7 +434,7 @@ class U_I18N_API PluralFormat : public Format { * @return true if other is semantically equal to this. * @stable ICU 4.0 */ - virtual UBool operator==(const Format& other) const; + virtual bool operator==(const Format& other) const override; /** * Return true if another object is semantically unequal to this one. @@ -443,19 +443,19 @@ class U_I18N_API PluralFormat : public Format { * @return true if other is semantically unequal to this. * @stable ICU 4.0 */ - virtual UBool operator!=(const Format& other) const; + virtual bool operator!=(const Format& other) const; /** * Clones this Format object polymorphically. The caller owns the * result and should delete it when done. * @stable ICU 4.0 */ - virtual PluralFormat* clone() const; + virtual PluralFormat* clone() const override; /** * Formats a plural message for a number taken from a Formattable object. * - * @param obj The object containing a number for which the + * @param obj The object containing a number for which the * plural message should be formatted. * The object must be of a numeric type. * @param appendTo output parameter to receive result. @@ -469,7 +469,7 @@ class U_I18N_API PluralFormat : public Format { UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, FieldPosition& pos, - UErrorCode& status) const; + UErrorCode& status) const override; /** * Returns the pattern from applyPattern() or constructor(). @@ -505,7 +505,7 @@ class U_I18N_API PluralFormat : public Format { */ virtual void parseObject(const UnicodeString& source, Formattable& result, - ParsePosition& parse_pos) const; + ParsePosition& parse_pos) const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -520,7 +520,7 @@ class U_I18N_API PluralFormat : public Format { * * @stable ICU 4.0 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; private: /** @@ -548,7 +548,7 @@ class U_I18N_API PluralFormat : public Format { virtual ~PluralSelectorAdapter(); - virtual UnicodeString select(void *context, double number, UErrorCode& /*ec*/) const; + virtual UnicodeString select(void *context, double number, UErrorCode& /*ec*/) const override; void reset(); diff --git a/deps/icu-small/source/i18n/unicode/plurrule.h b/deps/icu-small/source/i18n/unicode/plurrule.h index 19956cd32c6180..e90cd66a7f7c4e 100644 --- a/deps/icu-small/source/i18n/unicode/plurrule.h +++ b/deps/icu-small/source/i18n/unicode/plurrule.h @@ -71,8 +71,8 @@ class UFormattedNumberRangeData; * default rule(other) is returned. * * For more information, details, and tips for writing rules, see the - * LDML spec, C.11 Language Plural Rules: - * http://www.unicode.org/draft/reports/tr35/tr35.html#Language_Plural_Rules + * LDML spec, Part 3.5 Language Plural Rules: + * https://www.unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules * * Examples:
      *   "one: n is 1; few: n in 2..4"
    @@ -200,7 +200,7 @@ class UFormattedNumberRangeData; *

    * ICU defines plural rules for many locales based on CLDR Language Plural Rules. * For these predefined rules, see CLDR page at - * http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html + * https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/language_plural_rules.html *

    */ class U_I18N_API PluralRules : public UObject { @@ -373,25 +373,23 @@ class U_I18N_API PluralRules : public UObject { */ UnicodeString select(const number::FormattedNumber& number, UErrorCode& status) const; -#ifndef U_HIDE_DRAFT_API /** * Given a formatted number range, returns the overall plural form of the * range. For example, "3-5" returns "other" in English. * * To get a FormattedNumberRange, see NumberRangeFormatter. - * + * * This method only works if PluralRules was created with a locale. If it was created * from PluralRules::createRules(), this method sets status code U_UNSUPPORTED_ERROR. - * + * * @param range The number range onto which the rules will be applied. * @param status Set if an error occurs while selecting plural keyword. * This could happen if the FormattedNumberRange is invalid, * or if plural ranges data is unavailable. * @return The keyword of the selected rule. - * @draft ICU 68 + * @stable ICU 68 */ UnicodeString select(const number::FormattedNumberRange& range, UErrorCode& status) const; -#endif // U_HIDE_DRAFT_API #ifndef U_HIDE_INTERNAL_API /** @@ -534,21 +532,21 @@ class U_I18N_API PluralRules : public UObject { * Compares the equality of two PluralRules objects. * * @param other The other PluralRules object to be compared with. - * @return True if the given PluralRules is the same as this + * @return true if the given PluralRules is the same as this * PluralRules; false otherwise. * @stable ICU 4.0 */ - virtual UBool operator==(const PluralRules& other) const; + virtual bool operator==(const PluralRules& other) const; /** * Compares the inequality of two PluralRules objects. * * @param other The PluralRules object to be compared with. - * @return True if the given PluralRules is not the same as this + * @return true if the given PluralRules is not the same as this * PluralRules; false otherwise. * @stable ICU 4.0 */ - UBool operator!=(const PluralRules& other) const {return !operator==(other);} + bool operator!=(const PluralRules& other) const {return !operator==(other);} /** @@ -564,7 +562,7 @@ class U_I18N_API PluralRules : public UObject { * * @stable ICU 4.0 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; private: diff --git a/deps/icu-small/source/i18n/unicode/rbnf.h b/deps/icu-small/source/i18n/unicode/rbnf.h index ce60b9bec6853a..0a5a378e13b0b5 100644 --- a/deps/icu-small/source/i18n/unicode/rbnf.h +++ b/deps/icu-small/source/i18n/unicode/rbnf.h @@ -108,7 +108,7 @@ enum URBNFRuleSetTag { *

    In these rules, the base value is spelled out explicitly and set off from the * rule's output text with a colon. The rules are in a sorted list, and a rule is applicable * to all numbers from its own base value to one less than the next rule's base value. The - * ">>" token is called a substitution and tells the fomatter to + * ">>" token is called a substitution and tells the formatter to * isolate the number's ones digit, format it using this same set of rules, and place the * result at the position of the ">>" token. Text in brackets is omitted if * the number being formatted is an even multiple of 10 (the hyphen is a literal hyphen; 24 @@ -698,7 +698,7 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { * @return A copy of the object. * @stable ICU 2.6 */ - virtual RuleBasedNumberFormat* clone() const; + virtual RuleBasedNumberFormat* clone() const override; /** * Return true if the given Format objects are semantically equal. @@ -707,7 +707,7 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { * @return true if the given Format objects are semantically equal. * @stable ICU 2.6 */ - virtual UBool operator==(const Format& other) const; + virtual bool operator==(const Format& other) const override; //----------------------------------------------------------------------- // public API functions @@ -793,7 +793,7 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { */ virtual UnicodeString& format(int32_t number, UnicodeString& toAppendTo, - FieldPosition& pos) const; + FieldPosition& pos) const override; /** * Formats the specified 64-bit number using the default ruleset. @@ -805,7 +805,7 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { */ virtual UnicodeString& format(int64_t number, UnicodeString& toAppendTo, - FieldPosition& pos) const; + FieldPosition& pos) const override; /** * Formats the specified number using the default ruleset. * @param number The number to format. @@ -816,7 +816,7 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { */ virtual UnicodeString& format(double number, UnicodeString& toAppendTo, - FieldPosition& pos) const; + FieldPosition& pos) const override; /** * Formats the specified number using the named ruleset. @@ -888,13 +888,13 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { virtual UnicodeString& format(const number::impl::DecimalQuantity &number, UnicodeString& appendTo, FieldPosition& pos, - UErrorCode& status) const; + UErrorCode& status) const override; public: using NumberFormat::parse; /** - * Parses the specfied string, beginning at the specified position, according + * Parses the specified string, beginning at the specified position, according * to this formatter's rules. This will match the string against all of the * formatter's public rule sets and return the value corresponding to the longest * parseable substring. This function's behavior is affected by the lenient @@ -909,7 +909,7 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { */ virtual void parse(const UnicodeString& text, Formattable& result, - ParsePosition& parsePosition) const; + ParsePosition& parsePosition) const override; #if !UCONFIG_NO_COLLATION @@ -946,7 +946,7 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { * @see RuleBasedCollator * @stable ICU 2.0 */ - virtual void setLenient(UBool enabled); + virtual void setLenient(UBool enabled) override; /** * Returns true if lenient-parse mode is turned on. Lenient parsing is off @@ -955,7 +955,7 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { * @see #setLenient * @stable ICU 2.0 */ - virtual inline UBool isLenient(void) const; + virtual inline UBool isLenient(void) const override; #endif @@ -984,24 +984,24 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { * @param value The UDisplayContext value to set. * @param status Input/output status. If at entry this indicates a failure * status, the function will do nothing; otherwise this will be - * updated with any new status from the function. + * updated with any new status from the function. * @stable ICU 53 */ - virtual void setContext(UDisplayContext value, UErrorCode& status); + virtual void setContext(UDisplayContext value, UErrorCode& status) override; /** * Get the rounding mode. * @return A rounding mode * @stable ICU 60 */ - virtual ERoundingMode getRoundingMode(void) const; + virtual ERoundingMode getRoundingMode(void) const override; /** * Set the rounding mode. * @param roundingMode A rounding mode * @stable ICU 60 */ - virtual void setRoundingMode(ERoundingMode roundingMode); + virtual void setRoundingMode(ERoundingMode roundingMode) override; public: /** @@ -1016,7 +1016,7 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { * * @stable ICU 2.8 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Sets the decimal format symbols, which is generally not changed diff --git a/deps/icu-small/source/i18n/unicode/rbtz.h b/deps/icu-small/source/i18n/unicode/rbtz.h index 9fc0fd4657e7b8..1eca70c338bf60 100644 --- a/deps/icu-small/source/i18n/unicode/rbtz.h +++ b/deps/icu-small/source/i18n/unicode/rbtz.h @@ -14,7 +14,7 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: Rule based customizable time zone */ @@ -76,7 +76,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { *semantically equal. * @stable ICU 3.8 */ - virtual UBool operator==(const TimeZone& that) const; + virtual bool operator==(const TimeZone& that) const override; /** * Return true if the given TimeZone objects are @@ -86,20 +86,21 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * semantically unequal. * @stable ICU 3.8 */ - virtual UBool operator!=(const TimeZone& that) const; + virtual bool operator!=(const TimeZone& that) const; /** - * Adds the TimeZoneRule which represents time transitions. - * The TimeZoneRule must have start times, that is, the result - * of isTransitionRule() must be true. Otherwise, U_ILLEGAL_ARGUMENT_ERROR + * Adds the `TimeZoneRule` which represents time transitions. + * The `TimeZoneRule` must have start times, that is, the result + * of `isTransitionRule()` must be true. Otherwise, U_ILLEGAL_ARGUMENT_ERROR * is set to the error code. - * The input TimeZoneRule is adopted by this - * RuleBasedTimeZone on successful completion of this method, - * thus, the caller must not delete it when no error is returned. - * After all rules are added, the caller must call complete() method to - * make this RuleBasedTimeZone ready to handle common time + * The input `TimeZoneRule` is adopted by this `RuleBasedTimeZone`; + * the caller must not delete it. Should an error condition prevent + * the successful adoption of the rule, this function will delete it. + * + * After all rules are added, the caller must call `complete()` method to + * make this `RuleBasedTimeZone` ready to handle common time * zone functions. - * @param rule The TimeZoneRule. + * @param rule The `TimeZoneRule`. * @param status Output param to filled in with a success or an error. * @stable ICU 3.8 */ @@ -123,7 +124,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * @return A new copy of this TimeZone object. * @stable ICU 3.8 */ - virtual RuleBasedTimeZone* clone() const; + virtual RuleBasedTimeZone* clone() const override; /** * Returns the TimeZone's adjusted GMT offset (i.e., the number of milliseconds to add @@ -150,7 +151,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * @stable ICU 3.8 */ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, - uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const; + uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const override; /** * Gets the time zone offset, for current date, modified in case of @@ -173,7 +174,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { */ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, - int32_t monthLength, UErrorCode& status) const; + int32_t monthLength, UErrorCode& status) const override; /** * Returns the time zone raw and GMT offset for the given moment @@ -198,7 +199,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * @stable ICU 3.8 */ virtual void getOffset(UDate date, UBool local, int32_t& rawOffset, - int32_t& dstOffset, UErrorCode& ec) const; + int32_t& dstOffset, UErrorCode& ec) const override; /** * Sets the TimeZone's raw GMT offset (i.e., the number of milliseconds to add @@ -207,7 +208,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * @param offsetMillis The new raw GMT offset for this time zone. * @stable ICU 3.8 */ - virtual void setRawOffset(int32_t offsetMillis); + virtual void setRawOffset(int32_t offsetMillis) override; /** * Returns the TimeZone's raw GMT offset (i.e., the number of milliseconds to add @@ -216,7 +217,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * @return The TimeZone's raw GMT offset. * @stable ICU 3.8 */ - virtual int32_t getRawOffset(void) const; + virtual int32_t getRawOffset(void) const override; /** * Queries if this time zone uses daylight savings time. @@ -224,7 +225,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * false, otherwise. * @stable ICU 3.8 */ - virtual UBool useDaylightTime(void) const; + virtual UBool useDaylightTime(void) const override; #ifndef U_FORCE_HIDE_DEPRECATED_API /** @@ -240,7 +241,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * false, otherwise. * @deprecated ICU 2.4. Use Calendar::inDaylightTime() instead. */ - virtual UBool inDaylightTime(UDate date, UErrorCode& status) const; + virtual UBool inDaylightTime(UDate date, UErrorCode& status) const override; #endif // U_FORCE_HIDE_DEPRECATED_API /** @@ -251,7 +252,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * with the possible exception of the ID * @stable ICU 3.8 */ - virtual UBool hasSameRules(const TimeZone& other) const; + virtual UBool hasSameRules(const TimeZone& other) const override; /** * Gets the first time zone transition after the base time. @@ -261,7 +262,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * @return true if the transition is found. * @stable ICU 3.8 */ - virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const; + virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const override; /** * Gets the most recent time zone transition before the base time. @@ -271,7 +272,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * @return true if the transition is found. * @stable ICU 3.8 */ - virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const; + virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const override; /** * Returns the number of TimeZoneRules which represents time transitions, @@ -281,7 +282,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * @return The number of TimeZoneRules representing time transitions. * @stable ICU 3.8 */ - virtual int32_t countTransitionRules(UErrorCode& status) const; + virtual int32_t countTransitionRules(UErrorCode& status) const override; /** * Gets the InitialTimeZoneRule and the set of TimeZoneRule @@ -300,7 +301,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * @stable ICU 3.8 */ virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial, - const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const; + const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const override; #ifndef U_FORCE_HIDE_DRAFT_API /** @@ -310,7 +311,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { virtual void getOffsetFromLocal( UDate date, UTimeZoneLocalOption nonExistingTimeOpt, UTimeZoneLocalOption duplicatedTimeOpt, - int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const; + int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const override; #endif /* U_FORCE_HIDE_DRAFT_API */ private: @@ -360,7 +361,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * other classes have different class IDs. * @stable ICU 3.8 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/unicode/regex.h b/deps/icu-small/source/i18n/unicode/regex.h index 8ee74c39038163..f8e32922f4e3b1 100644 --- a/deps/icu-small/source/i18n/unicode/regex.h +++ b/deps/icu-small/source/i18n/unicode/regex.h @@ -119,7 +119,7 @@ class U_I18N_API RegexPattern U_FINAL : public UObject { * @return true if the objects are equivalent. * @stable ICU 2.4 */ - UBool operator==(const RegexPattern& that) const; + bool operator==(const RegexPattern& that) const; /** * Comparison operator. Two RegexPattern objects are considered equal if they @@ -129,7 +129,7 @@ class U_I18N_API RegexPattern U_FINAL : public UObject { * @return true if the objects are different. * @stable ICU 2.4 */ - inline UBool operator!=(const RegexPattern& that) const {return ! operator ==(that);} + inline bool operator!=(const RegexPattern& that) const {return ! operator ==(that);} /** * Assignment operator. After assignment, this RegexPattern will behave identically @@ -346,7 +346,7 @@ class U_I18N_API RegexPattern U_FINAL : public UObject { */ virtual RegexMatcher *matcher(const UnicodeString &input, UErrorCode &status) const; - + private: /** * Cause a compilation error if an application accidentally attempts to @@ -426,8 +426,8 @@ class U_I18N_API RegexPattern U_FINAL : public UObject { * @stable ICU 2.4 */ virtual UnicodeString pattern() const; - - + + /** * Returns the regular expression from which this pattern was compiled. This method will work * even if the pattern was compiled from a UnicodeString. @@ -484,9 +484,9 @@ class U_I18N_API RegexPattern U_FINAL : public UObject { * * If the delimiter pattern includes capture groups, the captured text will * also appear in the destination array of output strings, interspersed - * with the fields. This is similar to Perl, but differs from Java, + * with the fields. This is similar to Perl, but differs from Java, * which ignores the presence of capture groups in the pattern. - * + * * Trailing empty fields will always be returned, assuming sufficient * destination capacity. This differs from the default behavior for Java * and Perl where trailing empty fields are not returned. @@ -528,9 +528,9 @@ class U_I18N_API RegexPattern U_FINAL : public UObject { * * If the delimiter pattern includes capture groups, the captured text will * also appear in the destination array of output strings, interspersed - * with the fields. This is similar to Perl, but differs from Java, + * with the fields. This is similar to Perl, but differs from Java, * which ignores the presence of capture groups in the pattern. - * + * * Trailing empty fields will always be returned, assuming sufficient * destination capacity. This differs from the default behavior for Java * and Perl where trailing empty fields are not returned. @@ -554,7 +554,7 @@ class U_I18N_API RegexPattern U_FINAL : public UObject { * of fields, the trailing part of the input string, including any * field delimiters, is placed in the last destination string. * @param status A reference to a UErrorCode to receive any errors. - * @return The number of destination strings used. + * @return The number of destination strings used. * * @stable ICU 4.6 */ @@ -569,7 +569,7 @@ class U_I18N_API RegexPattern U_FINAL : public UObject { * * @stable ICU 2.4 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -601,7 +601,7 @@ class U_I18N_API RegexPattern U_FINAL : public UObject { // >= this value. For some patterns, this calculated // value may be less than the true shortest // possible match. - + int32_t fFrameSize; // Size of a state stack frame in the // execution engine. @@ -771,7 +771,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { /** - * Resets the matcher, then attempts to match the input beginning + * Resets the matcher, then attempts to match the input beginning * at the specified startIndex, and extending to the end of the input. * The input region is reset to include the entire input string. * A successful match must extend to the end of the input. @@ -785,7 +785,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { /** * Attempts to match the input string, starting from the beginning of the region, - * against the pattern. Like the matches() method, this function + * against the pattern. Like the matches() method, this function * always starts at the beginning of the input region; * unlike that function, it does not require that the entire region be matched. * @@ -911,7 +911,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * * @stable ICU 4.6 */ - virtual UText *group(UText *dest, int64_t &group_len, UErrorCode &status) const; + virtual UText *group(UText *dest, int64_t &group_len, UErrorCode &status) const; /** * Returns a shallow clone of the entire live input string with the UText current native index @@ -1123,14 +1123,14 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * without changing any other aspect of the matching state. * The new and previous text strings must have the same content. * - * This function is intended for use in environments where ICU is operating on + * This function is intended for use in environments where ICU is operating on * strings that may move around in memory. It provides a mechanism for notifying * ICU that the string has been relocated, and providing a new UText to access the * string in its new position. * * Note that the regular expression implementation never copies the underlying text - * of a string being matched, but always operates directly on the original text - * provided by the user. Refreshing simply drops the references to the old text + * of a string being matched, but always operates directly on the original text + * provided by the user. Refreshing simply drops the references to the old text * and replaces them with references to the new. * * Caution: this function is normally used only by very specialized, @@ -1140,7 +1140,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * @param input The new (moved) text string. * @param status Receives errors detected by this function. * - * @stable ICU 4.8 + * @stable ICU 4.8 */ virtual RegexMatcher &refreshInputText(UText *input, UErrorCode &status); @@ -1168,7 +1168,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * @stable ICU 2.4 */ virtual const UnicodeString &input() const; - + /** * Returns the input string being matched. This is the live input text; it should not be * altered or deleted. This method will work even if the input was originally supplied as @@ -1178,7 +1178,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * @stable ICU 4.6 */ virtual UText *inputText() const; - + /** * Returns the input string being matched, either by copying it into the provided * UText parameter or by returning a shallow clone of the live input. Note that copying @@ -1190,7 +1190,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * @stable ICU 4.6 */ virtual UText *getInput(UText *dest, UErrorCode &status) const; - + /** Sets the limits of this matcher's region. * The region is the part of the input string that will be searched to find a match. @@ -1212,14 +1212,14 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { */ virtual RegexMatcher ®ion(int64_t start, int64_t limit, UErrorCode &status); - /** + /** * Identical to region(start, limit, status) but also allows a start position without * resetting the region state. * @param regionStart The region start * @param regionLimit the limit of the region * @param startIndex The (native) index within the region bounds at which to begin searches. * @param status A reference to a UErrorCode to receive any errors. - * If startIndex is not within the specified region bounds, + * If startIndex is not within the specified region bounds, * U_INDEX_OUTOFBOUNDS_ERROR is returned. * @stable ICU 4.6 */ @@ -1296,14 +1296,14 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { **/ virtual RegexMatcher &useTransparentBounds(UBool b); - + /** * Return true if this matcher is using anchoring bounds. * By default, matchers use anchoring region bounds. * * @return true if this matcher is using anchoring bounds. * @stable ICU 4.0 - */ + */ virtual UBool hasAnchoringBounds() const; @@ -1396,7 +1396,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * @stable ICU 4.6 */ virtual UText *replaceAll(UText *replacement, UText *dest, UErrorCode &status); - + /** * Replaces the first substring of the input that matches @@ -1419,7 +1419,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * @stable ICU 2.4 */ virtual UnicodeString replaceFirst(const UnicodeString &replacement, UErrorCode &status); - + /** * Replaces the first substring of the input that matches @@ -1446,8 +1446,8 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * @stable ICU 4.6 */ virtual UText *replaceFirst(UText *replacement, UText *dest, UErrorCode &status); - - + + /** * Implements a replace operation intended to be used as part of an * incremental find-and-replace. @@ -1477,8 +1477,8 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { */ virtual RegexMatcher &appendReplacement(UnicodeString &dest, const UnicodeString &replacement, UErrorCode &status); - - + + /** * Implements a replace operation intended to be used as part of an * incremental find-and-replace. @@ -1595,10 +1595,10 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { UText *dest[], int32_t destCapacity, UErrorCode &status); - + /** * Set a processing time limit for match operations with this Matcher. - * + * * Some patterns, when matching certain strings, can run in exponential time. * For practical purposes, the match operation may appear to be in an * infinite loop. @@ -1649,7 +1649,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * @stable ICU 4.0 */ virtual void setStackLimit(int32_t limit, UErrorCode &status); - + /** * Get the size of the heap storage available for use by the back tracking stack. * @@ -1681,7 +1681,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { /** * Get the callback function for this URegularExpression. * - * @param callback Out parameter, receives a pointer to the user-supplied + * @param callback Out parameter, receives a pointer to the user-supplied * callback function. * @param context Out parameter, receives the user context pointer that * was set when uregex_setMatchCallback() was called. @@ -1714,7 +1714,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { /** * Get the find progress callback function for this URegularExpression. * - * @param callback Out parameter, receives a pointer to the user-supplied + * @param callback Out parameter, receives a pointer to the user-supplied * callback function. * @param context Out parameter, receives the user context pointer that * was set when uregex_setFindProgressCallback() was called. @@ -1746,7 +1746,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * * @stable ICU 2.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; private: // Constructors and other object boilerplate are private. @@ -1783,9 +1783,9 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { // Call user find callback function, if set. Return true if operation should be interrupted. inline UBool findProgressInterrupt(int64_t matchIndex, UErrorCode &status); - + int64_t appendGroup(int32_t groupNum, UText *dest, UErrorCode &status) const; - + UBool findUsingChunk(UErrorCode &status); void MatchChunkAt(int32_t startIdx, UBool toEnd, UErrorCode &status); UBool isChunkWordBoundary(int32_t pos); @@ -1800,13 +1800,13 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { // Only created if the pattern contains backreferences. int64_t fInputLength; // Full length of the input text. int32_t fFrameSize; // The size of a frame in the backtrack stack. - + int64_t fRegionStart; // Start of the input region, default = 0. int64_t fRegionLimit; // End of input region, default to input.length. - + int64_t fAnchorStart; // Region bounds for anchoring operations (^ or $). int64_t fAnchorLimit; // See useAnchoringBounds - + int64_t fLookStart; // Region bounds for look-ahead/behind and int64_t fLookLimit; // and other boundary tests. See // useTransparentBounds @@ -1828,7 +1828,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { // or -1 if there was no previous match. int64_t fAppendPosition; // First position after the end of the previous // appendReplacement(). As described by the - // JavaDoc for Java Matcher, where it is called + // JavaDoc for Java Matcher, where it is called // "append position" UBool fHitEnd; // True if the last match touched the end of input. UBool fRequireEnd; // True if the last match required end-of-input @@ -1844,7 +1844,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { int32_t fTimeLimit; // Max time (in arbitrary steps) to let the // match engine run. Zero for unlimited. - + int32_t fTime; // Match time, accumulates while matching. int32_t fTickCounter; // Low bits counter for time. Counts down StateSaves. // Kept separately from fTime to keep as much diff --git a/deps/icu-small/source/i18n/unicode/region.h b/deps/icu-small/source/i18n/unicode/region.h index 66f5f920757348..ba4a650f4f9ca6 100644 --- a/deps/icu-small/source/i18n/unicode/region.h +++ b/deps/icu-small/source/i18n/unicode/region.h @@ -11,7 +11,7 @@ #define REGION_H /** - * \file + * \file * \brief C++ API: Region classes (territory containment) */ @@ -30,23 +30,23 @@ U_NAMESPACE_BEGIN /** - * Region is the class representing a Unicode Region Code, also known as a + * Region is the class representing a Unicode Region Code, also known as a * Unicode Region Subtag, which is defined based upon the BCP 47 standard. We often think of * "regions" as "countries" when defining the characteristics of a locale. Region codes There are different * types of region codes that are important to distinguish. *

    - * Macroregion - A code for a "macro geographical (continental) region, geographical sub-region, or - * selected economic and other grouping" as defined in - * UN M.49 (http://unstats.un.org/unsd/methods/m49/m49regin.htm). - * These are typically 3-digit codes, but contain some 2-letter codes, such as the LDML code QO + * Macroregion - A code for a "macro geographical (continental) region, geographical sub-region, or + * selected economic and other grouping" as defined in + * UN M.49 (http://unstats.un.org/unsd/methods/m49/m49regin.htm). + * These are typically 3-digit codes, but contain some 2-letter codes, such as the LDML code QO * added for Outlying Oceania. Not all UNM.49 codes are defined in LDML, but most of them are. * Macroregions are represented in ICU by one of three region types: WORLD ( region code 001 ), * CONTINENTS ( regions contained directly by WORLD ), and SUBCONTINENTS ( things contained directly * by a continent ). *

    * TERRITORY - A Region that is not a Macroregion. These are typically codes for countries, but also - * include areas that are not separate countries, such as the code "AQ" for Antarctica or the code - * "HK" for Hong Kong (SAR China). Overseas dependencies of countries may or may not have separate + * include areas that are not separate countries, such as the code "AQ" for Antarctica or the code + * "HK" for Hong Kong (SAR China). Overseas dependencies of countries may or may not have separate * codes. The codes are typically 2-letter codes aligned with the ISO 3166 standard, but BCP47 allows * for the use of 3-digit codes in the future. *

    @@ -57,7 +57,7 @@ U_NAMESPACE_BEGIN * usually due to a country splitting into multiple territories or changing its name. *

    * GROUPING - A widely understood grouping of territories that has a well defined membership such - * that a region code has been assigned for it. Some of these are UNM.49 codes that do't fall into + * that a region code has been assigned for it. Some of these are UNM.49 codes that do't fall into * the world/continent/sub-continent hierarchy, while others are just well known groupings that have * their own region code. Region "EU" (European Union) is one such region code that is a grouping. * Groupings will never be returned by the getContainingRegion() API, since a different type of region @@ -81,27 +81,27 @@ class U_I18N_API Region : public UObject { * Returns true if the two regions are equal. * @stable ICU 51 */ - UBool operator==(const Region &that) const; + bool operator==(const Region &that) const; /** * Returns true if the two regions are NOT equal; that is, if operator ==() returns false. * @stable ICU 51 */ - UBool operator!=(const Region &that) const; - + bool operator!=(const Region &that) const; + /** * Returns a pointer to a Region using the given region code. The region code can be either 2-letter ISO code, * 3-letter ISO code, UNM.49 numeric code, or other valid Unicode Region Code as defined by the LDML specification. * The identifier will be canonicalized internally using the supplemental metadata as defined in the CLDR. * If the region code is NULL or not recognized, the appropriate error code will be set ( U_ILLEGAL_ARGUMENT_ERROR ) - * @stable ICU 51 + * @stable ICU 51 */ static const Region* U_EXPORT2 getInstance(const char *region_code, UErrorCode &status); /** * Returns a pointer to a Region using the given numeric region code. If the numeric region code is not recognized, * the appropriate error code will be set ( U_ILLEGAL_ARGUMENT_ERROR ). - * @stable ICU 51 + * @stable ICU 51 */ static const Region* U_EXPORT2 getInstance (int32_t code, UErrorCode &status); @@ -110,12 +110,12 @@ class U_I18N_API Region : public UObject { * @stable ICU 55 */ static StringEnumeration* U_EXPORT2 getAvailable(URegionType type, UErrorCode &status); - + /** * Returns a pointer to the region that contains this region. Returns NULL if this region is code "001" (World) * or "ZZ" (Unknown region). For example, calling this method with region "IT" (Italy) returns the * region "039" (Southern Europe). - * @stable ICU 51 + * @stable ICU 51 */ const Region* getContainingRegion() const; @@ -125,7 +125,7 @@ class U_I18N_API Region : public UObject { * that matches the given type. Note: The URegionTypes = "URGN_GROUPING", "URGN_DEPRECATED", or "URGN_UNKNOWN" * are not appropriate for use in this API. NULL will be returned in this case. For example, calling this method * with region "IT" (Italy) for type "URGN_CONTINENT" returns the region "150" ( Europe ). - * @stable ICU 51 + * @stable ICU 51 */ const Region* getContainingRegion(URegionType type) const; @@ -148,10 +148,10 @@ class U_I18N_API Region : public UObject { * @stable ICU 55 */ StringEnumeration* getContainedRegions( URegionType type, UErrorCode &status ) const; - + /** * Returns true if this region contains the supplied other region anywhere in the region hierarchy. - * @stable ICU 51 + * @stable ICU 51 */ UBool contains(const Region &other) const; @@ -159,33 +159,33 @@ class U_I18N_API Region : public UObject { * For deprecated regions, return an enumeration over the IDs of the regions that are the preferred replacement * regions for this region. Returns null for a non-deprecated region. For example, calling this method with region * "SU" (Soviet Union) would return a list of the regions containing "RU" (Russia), "AM" (Armenia), "AZ" (Azerbaijan), etc... - * @stable ICU 55 + * @stable ICU 55 */ StringEnumeration* getPreferredValues(UErrorCode &status) const; /** * Return this region's canonical region code. - * @stable ICU 51 + * @stable ICU 51 */ const char* getRegionCode() const; /** * Return this region's numeric code. * Returns a negative value if the given region does not have a numeric code assigned to it. - * @stable ICU 51 + * @stable ICU 51 */ int32_t getNumericCode() const; /** * Returns the region type of this region. - * @stable ICU 51 + * @stable ICU 51 */ URegionType getType() const; #ifndef U_HIDE_INTERNAL_API /** * Cleans up statically allocated memory. - * @internal + * @internal */ static void cleanupRegionData(); #endif /* U_HIDE_INTERNAL_API */ @@ -209,7 +209,7 @@ class U_I18N_API Region : public UObject { * Initializes the region data from the ICU resource bundles. The region data * contains the basic relationships such as which regions are known, what the numeric * codes are, any known aliases, and the territory containment data. - * + * * If the region data has already loaded, then this method simply returns without doing * anything meaningful. */ diff --git a/deps/icu-small/source/i18n/unicode/reldatefmt.h b/deps/icu-small/source/i18n/unicode/reldatefmt.h index f3feeead87b6bc..2a3742fd63c392 100644 --- a/deps/icu-small/source/i18n/unicode/reldatefmt.h +++ b/deps/icu-small/source/i18n/unicode/reldatefmt.h @@ -560,7 +560,7 @@ class U_I18N_API RelativeDateTimeFormatter : public UObject { * * This method returns a String. To get more information about the * formatting result, use formatNumericToValue(). - * + * * @param offset The signed offset for the specified unit. This * will be formatted according to this object's * NumberFormat object. @@ -586,7 +586,7 @@ class U_I18N_API RelativeDateTimeFormatter : public UObject { * * This method returns a FormattedRelativeDateTime, which exposes more * information than the String returned by formatNumeric(). - * + * * @param offset The signed offset for the specified unit. This * will be formatted according to this object's * NumberFormat object. diff --git a/deps/icu-small/source/i18n/unicode/scientificnumberformatter.h b/deps/icu-small/source/i18n/unicode/scientificnumberformatter.h index a56b8ca2685cf2..aa7e80543e4066 100644 --- a/deps/icu-small/source/i18n/unicode/scientificnumberformatter.h +++ b/deps/icu-small/source/i18n/unicode/scientificnumberformatter.h @@ -19,7 +19,7 @@ #include "unicode/unistr.h" /** - * \file + * \file * \brief C++ API: Formats in scientific notation. */ @@ -159,14 +159,14 @@ class U_I18N_API ScientificNumberFormatter : public UObject { class U_I18N_API SuperscriptStyle : public Style { public: - virtual SuperscriptStyle *clone() const; + virtual SuperscriptStyle *clone() const override; protected: virtual UnicodeString &format( const UnicodeString &original, FieldPositionIterator &fpi, const UnicodeString &preExponent, UnicodeString &appendTo, - UErrorCode &status) const; + UErrorCode &status) const override; }; class U_I18N_API MarkupStyle : public Style { @@ -177,14 +177,14 @@ class U_I18N_API ScientificNumberFormatter : public UObject { : Style(), fBeginMarkup(beginMarkup), fEndMarkup(endMarkup) { } - virtual MarkupStyle *clone() const; + virtual MarkupStyle *clone() const override; protected: virtual UnicodeString &format( const UnicodeString &original, FieldPositionIterator &fpi, const UnicodeString &preExponent, UnicodeString &appendTo, - UErrorCode &status) const; + UErrorCode &status) const override; private: UnicodeString fBeginMarkup; UnicodeString fEndMarkup; @@ -219,4 +219,4 @@ U_NAMESPACE_END #endif /* U_SHOW_CPLUSPLUS_API */ -#endif +#endif diff --git a/deps/icu-small/source/i18n/unicode/search.h b/deps/icu-small/source/i18n/unicode/search.h index 3074839b5fbafc..295a3ce67e9cf5 100644 --- a/deps/icu-small/source/i18n/unicode/search.h +++ b/deps/icu-small/source/i18n/unicode/search.h @@ -17,10 +17,10 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: SearchIterator object. */ - + #if !UCONFIG_NO_COLLATION && !UCONFIG_NO_BREAK_ITERATION #include "unicode/uobject.h" @@ -42,27 +42,27 @@ U_NAMESPACE_BEGIN /** * - * SearchIterator is an abstract base class that provides + * SearchIterator is an abstract base class that provides * methods to search for a pattern within a text string. Instances of - * SearchIterator maintain a current position and scans over the - * target text, returning the indices the pattern is matched and the length + * SearchIterator maintain a current position and scans over the + * target text, returning the indices the pattern is matched and the length * of each match. *

    - * SearchIterator defines a protocol for text searching. - * Subclasses provide concrete implementations of various search algorithms. - * For example, StringSearch implements language-sensitive pattern - * matching based on the comparison rules defined in a - * RuleBasedCollator object. - *

    - * Other options for searching includes using a BreakIterator to restrict + * SearchIterator defines a protocol for text searching. + * Subclasses provide concrete implementations of various search algorithms. + * For example, StringSearch implements language-sensitive pattern + * matching based on the comparison rules defined in a + * RuleBasedCollator object. + *

    + * Other options for searching includes using a BreakIterator to restrict * the points at which matches are detected. *

    * SearchIterator provides an API that is similar to that of - * other text iteration classes such as BreakIterator. Using - * this class, it is easy to scan through text looking for all occurances of - * a given pattern. The following example uses a StringSearch - * object to find all instances of "fox" in the target string. Any other - * subclass of SearchIterator can be used in an identical + * other text iteration classes such as BreakIterator. Using + * this class, it is easy to scan through text looking for all occurrences of + * a given pattern. The following example uses a StringSearch + * object to find all instances of "fox" in the target string. Any other + * subclass of SearchIterator can be used in an identical * manner. *

    
      * UnicodeString target("The quick brown fox jumped over the lazy fox");
    @@ -70,7 +70,7 @@ U_NAMESPACE_BEGIN
      *
      * SearchIterator *iter  = new StringSearch(pattern, target);
      * UErrorCode      error = U_ZERO_ERROR;
    - * for (int pos = iter->first(error); pos != USEARCH_DONE;
    + * for (int pos = iter->first(error); pos != USEARCH_DONE; 
      *                               pos = iter->next(error)) {
      *     printf("Found match at %d pos, length is %d\n", pos, iter.getMatchedLength());
      * }
    @@ -85,9 +85,9 @@ class U_I18N_API SearchIterator : public UObject {
     
         // public constructors and destructors -------------------------------
     
    -    /**
    -    * Copy constructor that creates a SearchIterator instance with the same
    -    * behavior, and iterating over the same text.
    +    /** 
    +    * Copy constructor that creates a SearchIterator instance with the same 
    +    * behavior, and iterating over the same text. 
         * @param other the SearchIterator instance to be copied.
         * @stable ICU 2.0
         */
    @@ -102,14 +102,14 @@ class U_I18N_API SearchIterator : public UObject {
         // public get and set methods ----------------------------------------
     
         /**
    -     * Sets the index to point to the given position, and clears any state
    +     * Sets the index to point to the given position, and clears any state 
          * that's affected.
          * 

    - * This method takes the argument index and sets the position in the text - * string accordingly without checking if the index is pointing to a - * valid starting point to begin searching. + * This method takes the argument index and sets the position in the text + * string accordingly without checking if the index is pointing to a + * valid starting point to begin searching. * @param position within the text to be set. If position is less - * than or greater than the text range for searching, + * than or greater than the text range for searching, * an U_INDEX_OUTOFBOUNDS_ERROR will be returned * @param status for errors if it occurs * @stable ICU 2.0 @@ -127,7 +127,7 @@ class U_I18N_API SearchIterator : public UObject { virtual int32_t getOffset(void) const = 0; /** - * Sets the text searching attributes located in the enum + * Sets the text searching attributes located in the enum * USearchAttribute with values from the enum USearchAttributeValue. * USEARCH_DEFAULT can be used for all attributes for resetting. * @param attribute text attribute (enum USearchAttribute) to be set @@ -139,23 +139,23 @@ class U_I18N_API SearchIterator : public UObject { USearchAttributeValue value, UErrorCode &status); - /** + /** * Gets the text searching attributes * @param attribute text attribute (enum USearchAttribute) to be retrieve * @return text attribute value * @stable ICU 2.0 */ USearchAttributeValue getAttribute(USearchAttribute attribute) const; - + /** * Returns the index to the match in the text string that was searched. - * This call returns a valid result only after a successful call to + * This call returns a valid result only after a successful call to * first, next, previous, or last. - * Just after construction, or after a searching method returns + * Just after construction, or after a searching method returns * USEARCH_DONE, this method will return USEARCH_DONE. *

    * Use getMatchedLength to get the matched string length. - * @return index of a substring within the text string that is being + * @return index of a substring within the text string that is being * searched. * @see #first * @see #next @@ -166,10 +166,10 @@ class U_I18N_API SearchIterator : public UObject { int32_t getMatchedStart(void) const; /** - * Returns the length of text in the string which matches the search - * pattern. This call returns a valid result only after a successful call + * Returns the length of text in the string which matches the search + * pattern. This call returns a valid result only after a successful call * to first, next, previous, or last. - * Just after construction, or after a searching method returns + * Just after construction, or after a searching method returns * USEARCH_DONE, this method will return 0. * @return The length of the match in the target text, or 0 if there * is no match currently. @@ -180,13 +180,13 @@ class U_I18N_API SearchIterator : public UObject { * @stable ICU 2.0 */ int32_t getMatchedLength(void) const; - + /** - * Returns the text that was matched by the most recent call to + * Returns the text that was matched by the most recent call to * first, next, previous, or last. - * If the iterator is not pointing at a valid match (e.g. just after - * construction or after USEARCH_DONE has been returned, - * returns an empty string. + * If the iterator is not pointing at a valid match (e.g. just after + * construction or after USEARCH_DONE has been returned, + * returns an empty string. * @param result stores the matched string or an empty string if a match * is not found. * @see #first @@ -196,16 +196,16 @@ class U_I18N_API SearchIterator : public UObject { * @stable ICU 2.0 */ void getMatchedText(UnicodeString &result) const; - + /** * Set the BreakIterator that will be used to restrict the points - * at which matches are detected. The user is responsible for deleting + * at which matches are detected. The user is responsible for deleting * the breakiterator. - * @param breakiter A BreakIterator that will be used to restrict the - * points at which matches are detected. If a match is - * found, but the match's start or end index is not a - * boundary as determined by the BreakIterator, - * the match will be rejected and another will be searched + * @param breakiter A BreakIterator that will be used to restrict the + * points at which matches are detected. If a match is + * found, but the match's start or end index is not a + * boundary as determined by the BreakIterator, + * the match will be rejected and another will be searched * for. If this parameter is NULL, no break * detection is attempted. * @param status for errors if it occurs @@ -213,10 +213,10 @@ class U_I18N_API SearchIterator : public UObject { * @stable ICU 2.0 */ void setBreakIterator(BreakIterator *breakiter, UErrorCode &status); - + /** - * Returns the BreakIterator that is used to restrict the points at - * which matches are detected. This will be the same object that was + * Returns the BreakIterator that is used to restrict the points at + * which matches are detected. This will be the same object that was * passed to the constructor or to setBreakIterator. * Note that NULL is a legal value; it means that break * detection should not be attempted. @@ -227,34 +227,34 @@ class U_I18N_API SearchIterator : public UObject { const BreakIterator * getBreakIterator(void) const; /** - * Set the string text to be searched. Text iteration will hence begin at - * the start of the text string. This method is useful if you want to - * re-use an iterator to search for the same pattern within a different + * Set the string text to be searched. Text iteration will hence begin at + * the start of the text string. This method is useful if you want to + * re-use an iterator to search for the same pattern within a different * body of text. The user is responsible for deleting the text. * @param text string to be searched. - * @param status for errors. If the text length is 0, + * @param status for errors. If the text length is 0, * an U_ILLEGAL_ARGUMENT_ERROR is returned. * @stable ICU 2.0 */ - virtual void setText(const UnicodeString &text, UErrorCode &status); + virtual void setText(const UnicodeString &text, UErrorCode &status); /** - * Set the string text to be searched. Text iteration will hence begin at - * the start of the text string. This method is useful if you want to - * re-use an iterator to search for the same pattern within a different + * Set the string text to be searched. Text iteration will hence begin at + * the start of the text string. This method is useful if you want to + * re-use an iterator to search for the same pattern within a different * body of text. *

    - * Note: No parsing of the text within the CharacterIterator - * will be done during searching for this version. The block of text + * Note: No parsing of the text within the CharacterIterator + * will be done during searching for this version. The block of text * in CharacterIterator will be used as it is. * The user is responsible for deleting the text. * @param text string iterator to be searched. - * @param status for errors if any. If the text length is 0 then an + * @param status for errors if any. If the text length is 0 then an * U_ILLEGAL_ARGUMENT_ERROR is returned. * @stable ICU 2.0 */ virtual void setText(CharacterIterator &text, UErrorCode &status); - + /** * Return the string text to be searched. * @return text string to be searched. @@ -265,27 +265,27 @@ class U_I18N_API SearchIterator : public UObject { // operator overloading ---------------------------------------------- /** - * Equality operator. + * Equality operator. * @param that SearchIterator instance to be compared. - * @return true if both BreakIterators are of the same class, have the + * @return true if both BreakIterators are of the same class, have the * same behavior, terates over the same text and have the same * attributes. false otherwise. * @stable ICU 2.0 */ - virtual UBool operator==(const SearchIterator &that) const; + virtual bool operator==(const SearchIterator &that) const; /** - * Not-equal operator. + * Not-equal operator. * @param that SearchIterator instance to be compared. * @return false if operator== returns true, and vice versa. * @stable ICU 2.0 */ - UBool operator!=(const SearchIterator &that) const; + bool operator!=(const SearchIterator &that) const; // public methods ---------------------------------------------------- /** - * Returns a copy of SearchIterator with the same behavior, and + * Returns a copy of SearchIterator with the same behavior, and * iterating over the same text, as this one. Note that all data will be * replicated, except for the text string to be searched. * @return cloned object @@ -294,14 +294,14 @@ class U_I18N_API SearchIterator : public UObject { virtual SearchIterator* safeClone(void) const = 0; /** - * Returns the first index at which the string text matches the search - * pattern. The iterator is adjusted so that its current index (as - * returned by getOffset) is the match position if one + * Returns the first index at which the string text matches the search + * pattern. The iterator is adjusted so that its current index (as + * returned by getOffset) is the match position if one * was found. * If a match is not found, USEARCH_DONE will be returned and * the iterator will be adjusted to the index USEARCH_DONE * @param status for errors if it occurs - * @return The character index of the first match, or + * @return The character index of the first match, or * USEARCH_DONE if there are no matches. * @see #getOffset * @stable ICU 2.0 @@ -309,33 +309,33 @@ class U_I18N_API SearchIterator : public UObject { int32_t first(UErrorCode &status); /** - * Returns the first index equal or greater than position at which the - * string text matches the search pattern. The iterator is adjusted so - * that its current index (as returned by getOffset) is the + * Returns the first index equal or greater than position at which the + * string text matches the search pattern. The iterator is adjusted so + * that its current index (as returned by getOffset) is the * match position if one was found. * If a match is not found, USEARCH_DONE will be returned and the * iterator will be adjusted to the index USEARCH_DONE. * @param position where search if to start from. If position is less - * than or greater than the text range for searching, + * than or greater than the text range for searching, * an U_INDEX_OUTOFBOUNDS_ERROR will be returned * @param status for errors if it occurs - * @return The character index of the first match following - * position, or USEARCH_DONE if there are no + * @return The character index of the first match following + * position, or USEARCH_DONE if there are no * matches. * @see #getOffset * @stable ICU 2.0 */ int32_t following(int32_t position, UErrorCode &status); - + /** - * Returns the last index in the target text at which it matches the - * search pattern. The iterator is adjusted so that its current index - * (as returned by getOffset) is the match position if one was + * Returns the last index in the target text at which it matches the + * search pattern. The iterator is adjusted so that its current index + * (as returned by getOffset) is the match position if one was * found. * If a match is not found, USEARCH_DONE will be returned and * the iterator will be adjusted to the index USEARCH_DONE. * @param status for errors if it occurs - * @return The index of the first match, or USEARCH_DONE if + * @return The index of the first match, or USEARCH_DONE if * there are no matches. * @see #getOffset * @stable ICU 2.0 @@ -343,11 +343,11 @@ class U_I18N_API SearchIterator : public UObject { int32_t last(UErrorCode &status); /** - * Returns the first index less than position at which the string - * text matches the search pattern. The iterator is adjusted so that its - * current index (as returned by getOffset) is the match - * position if one was found. If a match is not found, - * USEARCH_DONE will be returned and the iterator will be + * Returns the first index less than position at which the string + * text matches the search pattern. The iterator is adjusted so that its + * current index (as returned by getOffset) is the match + * position if one was found. If a match is not found, + * USEARCH_DONE will be returned and the iterator will be * adjusted to the index USEARCH_DONE *

    * When USEARCH_OVERLAP option is off, the last index of the @@ -356,11 +356,11 @@ class U_I18N_API SearchIterator : public UObject { * position. * * @param position where search is to start from. If position is less - * than or greater than the text range for searching, + * than or greater than the text range for searching, * an U_INDEX_OUTOFBOUNDS_ERROR will be returned * @param status for errors if it occurs - * @return The character index of the first match preceding - * position, or USEARCH_DONE if there are + * @return The character index of the first match preceding + * position, or USEARCH_DONE if there are * no matches. * @see #getOffset * @stable ICU 2.0 @@ -370,10 +370,10 @@ class U_I18N_API SearchIterator : public UObject { /** * Returns the index of the next point at which the text matches the * search pattern, starting from the current position - * The iterator is adjusted so that its current index (as returned by + * The iterator is adjusted so that its current index (as returned by * getOffset) is the match position if one was found. * If a match is not found, USEARCH_DONE will be returned and - * the iterator will be adjusted to a position after the end of the text + * the iterator will be adjusted to a position after the end of the text * string. * @param status for errors if it occurs * @return The index of the next match after the current position, @@ -384,9 +384,9 @@ class U_I18N_API SearchIterator : public UObject { int32_t next(UErrorCode &status); /** - * Returns the index of the previous point at which the string text + * Returns the index of the previous point at which the string text * matches the search pattern, starting at the current position. - * The iterator is adjusted so that its current index (as returned by + * The iterator is adjusted so that its current index (as returned by * getOffset) is the match position if one was found. * If a match is not found, USEARCH_DONE will be returned and * the iterator will be adjusted to the index USEARCH_DONE @@ -398,12 +398,12 @@ class U_I18N_API SearchIterator : public UObject { */ int32_t previous(UErrorCode &status); - /** + /** * Resets the iteration. - * Search will begin at the start of the text string if a forward - * iteration is initiated before a backwards iteration. Otherwise if a - * backwards iteration is initiated before a forwards iteration, the - * search will begin at the end of the text string. + * Search will begin at the start of the text string if a forward + * iteration is initiated before a backwards iteration. Otherwise if a + * backwards iteration is initiated before a forwards iteration, the + * search will begin at the end of the text string. * @stable ICU 2.0 */ virtual void reset(); @@ -426,7 +426,7 @@ class U_I18N_API SearchIterator : public UObject { * @stable ICU 2.0 */ BreakIterator *m_breakiterator_; - + /** * Unicode string version of the search text * @stable ICU 2.0 @@ -445,35 +445,35 @@ class U_I18N_API SearchIterator : public UObject { /** * Constructor for use by subclasses. * @param text The target text to be searched. - * @param breakiter A {@link BreakIterator} that is used to restrict the - * points at which matches are detected. If - * handleNext or handlePrev finds a - * match, but the match's start or end index is not a - * boundary as determined by the BreakIterator, - * the match is rejected and handleNext or - * handlePrev is called again. If this parameter - * is NULL, no break detection is attempted. + * @param breakiter A {@link BreakIterator} that is used to restrict the + * points at which matches are detected. If + * handleNext or handlePrev finds a + * match, but the match's start or end index is not a + * boundary as determined by the BreakIterator, + * the match is rejected and handleNext or + * handlePrev is called again. If this parameter + * is NULL, no break detection is attempted. * @see #handleNext * @see #handlePrev * @stable ICU 2.0 */ - SearchIterator(const UnicodeString &text, + SearchIterator(const UnicodeString &text, BreakIterator *breakiter = NULL); /** * Constructor for use by subclasses. *

    - * Note: No parsing of the text within the CharacterIterator - * will be done during searching for this version. The block of text + * Note: No parsing of the text within the CharacterIterator + * will be done during searching for this version. The block of text * in CharacterIterator will be used as it is. * @param text The target text to be searched. - * @param breakiter A {@link BreakIterator} that is used to restrict the - * points at which matches are detected. If - * handleNext or handlePrev finds a - * match, but the match's start or end index is not a - * boundary as determined by the BreakIterator, - * the match is rejected and handleNext or - * handlePrev is called again. If this parameter + * @param breakiter A {@link BreakIterator} that is used to restrict the + * points at which matches are detected. If + * handleNext or handlePrev finds a + * match, but the match's start or end index is not a + * boundary as determined by the BreakIterator, + * the match is rejected and handleNext or + * handlePrev is called again. If this parameter * is NULL, no break detection is attempted. * @see #handleNext * @see #handlePrev @@ -497,20 +497,20 @@ class U_I18N_API SearchIterator : public UObject { * subclasses to provide different search algorithms. *

    * If a match is found, the implementation should return the index at - * which the match starts and should call - * setMatchLength with the number of characters - * in the target text that make up the match. If no match is found, the + * which the match starts and should call + * setMatchLength with the number of characters + * in the target text that make up the match. If no match is found, the * method should return USEARCH_DONE. *

    - * @param position The index in the target text at which the search + * @param position The index in the target text at which the search * should start. * @param status for error codes if it occurs. - * @return index at which the match starts, else if match is not found + * @return index at which the match starts, else if match is not found * USEARCH_DONE is returned * @see #setMatchLength * @stable ICU 2.0 */ - virtual int32_t handleNext(int32_t position, UErrorCode &status) + virtual int32_t handleNext(int32_t position, UErrorCode &status) = 0; /** @@ -519,20 +519,20 @@ class U_I18N_API SearchIterator : public UObject { * subclasses to provide different search algorithms. *

    * If a match is found, the implementation should return the index at - * which the match starts and should call - * setMatchLength with the number of characters - * in the target text that make up the match. If no match is found, the + * which the match starts and should call + * setMatchLength with the number of characters + * in the target text that make up the match. If no match is found, the * method should return USEARCH_DONE. *

    - * @param position The index in the target text at which the search + * @param position The index in the target text at which the search * should start. * @param status for error codes if it occurs. - * @return index at which the match starts, else if match is not found + * @return index at which the match starts, else if match is not found * USEARCH_DONE is returned * @see #setMatchLength * @stable ICU 2.0 */ - virtual int32_t handlePrev(int32_t position, UErrorCode &status) + virtual int32_t handlePrev(int32_t position, UErrorCode &status) = 0; /** @@ -560,15 +560,15 @@ class U_I18N_API SearchIterator : public UObject { virtual void setMatchStart(int32_t position); /** - * sets match not found + * sets match not found * @stable ICU 2.0 */ void setMatchNotFound(); }; -inline UBool SearchIterator::operator!=(const SearchIterator &that) const +inline bool SearchIterator::operator!=(const SearchIterator &that) const { - return !operator==(that); + return !operator==(that); } U_NAMESPACE_END @@ -577,3 +577,4 @@ U_NAMESPACE_END #endif /* U_SHOW_CPLUSPLUS_API */ #endif + diff --git a/deps/icu-small/source/i18n/unicode/selfmt.h b/deps/icu-small/source/i18n/unicode/selfmt.h index 9b98f6db7adb76..bdce00e593ea6b 100644 --- a/deps/icu-small/source/i18n/unicode/selfmt.h +++ b/deps/icu-small/source/i18n/unicode/selfmt.h @@ -259,7 +259,7 @@ class U_I18N_API SelectFormat : public Format { * @return true if other is semantically equal to this. * @stable ICU 4.4 */ - virtual UBool operator==(const Format& other) const; + virtual bool operator==(const Format& other) const override; /** * Return true if another object is semantically unequal to this one. @@ -268,14 +268,14 @@ class U_I18N_API SelectFormat : public Format { * @return true if other is semantically unequal to this. * @stable ICU 4.4 */ - virtual UBool operator!=(const Format& other) const; + virtual bool operator!=(const Format& other) const; /** * Clones this Format object polymorphically. The caller owns the * result and should delete it when done. * @stable ICU 4.4 */ - virtual SelectFormat* clone() const; + virtual SelectFormat* clone() const override; /** * Format an object to produce a string. @@ -295,7 +295,7 @@ class U_I18N_API SelectFormat : public Format { UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, FieldPosition& pos, - UErrorCode& status) const; + UErrorCode& status) const override; /** * Returns the pattern from applyPattern() or constructor. @@ -331,7 +331,7 @@ class U_I18N_API SelectFormat : public Format { */ virtual void parseObject(const UnicodeString& source, Formattable& result, - ParsePosition& parse_pos) const; + ParsePosition& parse_pos) const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -343,7 +343,7 @@ class U_I18N_API SelectFormat : public Format { * ICU "poor man's RTTI", returns a UClassID for the actual class. * @stable ICU 4.4 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; private: friend class MessageFormat; diff --git a/deps/icu-small/source/i18n/unicode/simpletz.h b/deps/icu-small/source/i18n/unicode/simpletz.h index eb888cea675ea0..f5c155de466923 100644 --- a/deps/icu-small/source/i18n/unicode/simpletz.h +++ b/deps/icu-small/source/i18n/unicode/simpletz.h @@ -31,10 +31,10 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: SimpleTimeZone is a concrete subclass of TimeZone. */ - + #if !UCONFIG_NO_FORMATTING #include "unicode/basictz.h" @@ -107,11 +107,11 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * the same ID, raw GMT offset, and DST rules. * * @param that The SimpleTimeZone object to be compared with. - * @return True if the given time zone is equal to this time zone; false + * @return true if the given time zone is equal to this time zone; false * otherwise. * @stable ICU 2.0 */ - virtual UBool operator==(const TimeZone& that) const; + virtual bool operator==(const TimeZone& that) const override; /** * Constructs a SimpleTimeZone with the given raw GMT offset and time zone ID, @@ -134,7 +134,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * TimeZone.createInstance() to create a TimeZone instead of creating a * SimpleTimeZone directly with this constructor. *

    - * Various types of daylight-savings time rules can be specfied by using different + * Various types of daylight-savings time rules can be specified by using different * values for startDay and startDayOfWeek and endDay and endDayOfWeek. For a * complete explanation of how these parameters work, see the documentation for * setStartRule(). @@ -175,7 +175,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * TimeZone.createInstance() to create a TimeZone instead of creating a * SimpleTimeZone directly with this constructor. *

    - * Various types of daylight-savings time rules can be specfied by using different + * Various types of daylight-savings time rules can be specified by using different * values for startDay and startDayOfWeek and endDay and endDayOfWeek. For a * complete explanation of how these parameters work, see the documentation for * setStartRule(). @@ -219,7 +219,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * TimeZone.createInstance() to create a TimeZone instead of creating a * SimpleTimeZone directly with this constructor. *

    - * Various types of daylight-savings time rules can be specfied by using different + * Various types of daylight-savings time rules can be specified by using different * values for startDay and startDayOfWeek and endDay and endDayOfWeek. For a * complete explanation of how these parameters work, see the documentation for * setStartRule(). @@ -293,7 +293,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * month, regardless of what day of the week it is (e.g., (-2, 0) is the * next-to-last day of the month).

  • *
  • If dayOfWeek is negative and dayOfWeekInMonth is positive, they specify the - * first specified day of the week on or after the specfied day of the month. + * first specified day of the week on or after the specified day of the month. * (e.g., (15, -SUNDAY) is the first Sunday after the 15th of the month * [or the 15th itself if the 15th is a Sunday].)
  • *
  • If dayOfWeek and DayOfWeekInMonth are both negative, they specify the @@ -337,7 +337,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * month, regardless of what day of the week it is (e.g., (-2, 0) is the * next-to-last day of the month).
  • *
  • If dayOfWeek is negative and dayOfWeekInMonth is positive, they specify the - * first specified day of the week on or after the specfied day of the month. + * first specified day of the week on or after the specified day of the month. * (e.g., (15, -SUNDAY) is the first Sunday after the 15th of the month * [or the 15th itself if the 15th is a Sunday].)
  • *
  • If dayOfWeek and DayOfWeekInMonth are both negative, they specify the @@ -571,7 +571,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @stable ICU 2.0 */ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, - uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const; + uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const override; /** * Gets the time zone offset, for current date, modified in case of @@ -590,7 +590,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { */ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t milliseconds, - int32_t monthLength, UErrorCode& status) const; + int32_t monthLength, UErrorCode& status) const override; /** * Gets the time zone offset, for current date, modified in case of * daylight savings. This is the offset to add *to* UTC to get local time. @@ -618,7 +618,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @stable ICU 2.8 */ virtual void getOffset(UDate date, UBool local, int32_t& rawOffset, - int32_t& dstOffset, UErrorCode& ec) const; + int32_t& dstOffset, UErrorCode& ec) const override; #ifndef U_FORCE_HIDE_DRAFT_API /** @@ -628,7 +628,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { virtual void getOffsetFromLocal( UDate date, UTimeZoneLocalOption nonExistingTimeOpt, UTimeZoneLocalOption duplicatedTimeOpt, - int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const; + int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const override; #endif /* U_FORCE_HIDE_DRAFT_API */ /** @@ -638,7 +638,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @return The TimeZone's raw GMT offset. * @stable ICU 2.0 */ - virtual int32_t getRawOffset(void) const; + virtual int32_t getRawOffset(void) const override; /** * Sets the TimeZone's raw GMT offset (i.e., the number of milliseconds to add @@ -647,7 +647,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @param offsetMillis The new raw GMT offset for this time zone. * @stable ICU 2.0 */ - virtual void setRawOffset(int32_t offsetMillis); + virtual void setRawOffset(int32_t offsetMillis) override; /** * Sets the amount of time in ms that the clock is advanced during DST. @@ -668,7 +668,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * but not 0. * @stable ICU 2.0 */ - virtual int32_t getDSTSavings(void) const; + virtual int32_t getDSTSavings(void) const override; /** * Queries if this TimeZone uses Daylight Savings Time. @@ -676,7 +676,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @return True if this TimeZone uses Daylight Savings Time; false otherwise. * @stable ICU 2.0 */ - virtual UBool useDaylightTime(void) const; + virtual UBool useDaylightTime(void) const override; #ifndef U_FORCE_HIDE_DEPRECATED_API /** @@ -693,7 +693,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * false otherwise. * @deprecated ICU 2.4. Use Calendar::inDaylightTime() instead. */ - virtual UBool inDaylightTime(UDate date, UErrorCode& status) const; + virtual UBool inDaylightTime(UDate date, UErrorCode& status) const override; #endif // U_FORCE_HIDE_DEPRECATED_API /** @@ -702,7 +702,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @return true if the given zone has the same rules and offset as this one * @stable ICU 2.0 */ - UBool hasSameRules(const TimeZone& other) const; + UBool hasSameRules(const TimeZone& other) const override; /** * Clones TimeZone objects polymorphically. Clients are responsible for deleting @@ -711,7 +711,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @return A new copy of this TimeZone object. * @stable ICU 2.0 */ - virtual SimpleTimeZone* clone() const; + virtual SimpleTimeZone* clone() const override; /** * Gets the first time zone transition after the base time. @@ -721,7 +721,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @return true if the transition is found. * @stable ICU 3.8 */ - virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const; + virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const override; /** * Gets the most recent time zone transition before the base time. @@ -731,7 +731,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @return true if the transition is found. * @stable ICU 3.8 */ - virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const; + virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const override; /** * Returns the number of TimeZoneRules which represents time transitions, @@ -741,7 +741,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @return The number of TimeZoneRules representing time transitions. * @stable ICU 3.8 */ - virtual int32_t countTransitionRules(UErrorCode& status) const; + virtual int32_t countTransitionRules(UErrorCode& status) const override; /** * Gets the InitialTimeZoneRule and the set of TimeZoneRule @@ -760,7 +760,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @stable ICU 3.8 */ virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial, - const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const; + const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const override; public: @@ -775,7 +775,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * same class ID. Objects of other classes have different class IDs. * @stable ICU 2.0 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Return the class ID for this class. This is useful only for comparing to a return diff --git a/deps/icu-small/source/i18n/unicode/smpdtfmt.h b/deps/icu-small/source/i18n/unicode/smpdtfmt.h index 3296c6b3ab75b6..733a1cff13b0bc 100644 --- a/deps/icu-small/source/i18n/unicode/smpdtfmt.h +++ b/deps/icu-small/source/i18n/unicode/smpdtfmt.h @@ -756,7 +756,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { * names of the months), but not to provide the pattern. *

    * A numbering system override is a string containing either the name of a known numbering system, - * or a set of field and numbering system pairs that specify which fields are to be formattied with + * or a set of field and numbering system pairs that specify which fields are to be formatted with * the alternate numbering system. For example, to specify that all numeric fields in the specified * date or time pattern are to be rendered using Thai digits, simply specify the numbering system override * as "thai". To specify that just the year portion of the date be formatted using Hebrew numbering, @@ -797,7 +797,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { * names of the months), but not to provide the pattern. *

    * A numbering system override is a string containing either the name of a known numbering system, - * or a set of field and numbering system pairs that specify which fields are to be formattied with + * or a set of field and numbering system pairs that specify which fields are to be formatted with * the alternate numbering system. For example, to specify that all numeric fields in the specified * date or time pattern are to be rendered using Thai digits, simply specify the numbering system override * as "thai". To specify that just the year portion of the date be formatted using Hebrew numbering, @@ -867,7 +867,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { * @return A copy of the object. * @stable ICU 2.0 */ - virtual SimpleDateFormat* clone() const; + virtual SimpleDateFormat* clone() const override; /** * Return true if the given Format objects are semantically equal. Objects @@ -876,7 +876,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { * @return true if the given Format objects are semantically equal. * @stable ICU 2.0 */ - virtual UBool operator==(const Format& other) const; + virtual bool operator==(const Format& other) const override; using DateFormat::format; @@ -899,7 +899,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { */ virtual UnicodeString& format( Calendar& cal, UnicodeString& appendTo, - FieldPosition& pos) const; + FieldPosition& pos) const override; /** * Format a date or time, which is the standard millis since 24:00 GMT, Jan @@ -922,7 +922,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { virtual UnicodeString& format( Calendar& cal, UnicodeString& appendTo, FieldPositionIterator* posIter, - UErrorCode& status) const; + UErrorCode& status) const override; using DateFormat::parse; @@ -954,7 +954,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { */ virtual void parse( const UnicodeString& text, Calendar& cal, - ParsePosition& pos) const; + ParsePosition& pos) const override; /** @@ -1097,7 +1097,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { * other classes have different class IDs. * @stable ICU 2.0 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Set the calendar to be used by this date format. Initially, the default @@ -1108,7 +1108,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { * @param calendarToAdopt Calendar object to be adopted. * @stable ICU 2.0 */ - virtual void adoptCalendar(Calendar* calendarToAdopt); + virtual void adoptCalendar(Calendar* calendarToAdopt) override; /* Cannot use #ifndef U_HIDE_INTERNAL_API for the following methods since they are virtual */ /** @@ -1144,7 +1144,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { * updated with any new status from the function. * @stable ICU 53 */ - virtual void setContext(UDisplayContext value, UErrorCode& status); + virtual void setContext(UDisplayContext value, UErrorCode& status) override; /** * Overrides base class method and @@ -1153,7 +1153,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { * @param formatToAdopt the NumbeferFormat used * @stable ICU 54 */ - void adoptNumberFormat(NumberFormat *formatToAdopt); + void adoptNumberFormat(NumberFormat *formatToAdopt) override; /** * Allow the user to set the NumberFormat for several fields @@ -1299,7 +1299,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { int32_t maxDigits) const; /** - * Return true if the given format character, occuring count + * Return true if the given format character, occurring count * times, represents a numeric field. */ static UBool isNumeric(char16_t formatChar, int32_t count); @@ -1386,7 +1386,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { * * @param pattern the pattern string * @param patternOffset the starting offset into the pattern text. On - * outupt will be set the offset of the first non-literal character in the pattern + * output will be set the offset of the first non-literal character in the pattern * @param text the text being parsed * @param textOffset the starting offset into the text. On output * will be set to the offset of the character after the match diff --git a/deps/icu-small/source/i18n/unicode/sortkey.h b/deps/icu-small/source/i18n/unicode/sortkey.h index 14902668a2d4f2..b1231f18b78402 100644 --- a/deps/icu-small/source/i18n/unicode/sortkey.h +++ b/deps/icu-small/source/i18n/unicode/sortkey.h @@ -28,10 +28,10 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file - * \brief C++ API: Keys for comparing strings multiple times. + * \file + * \brief C++ API: Keys for comparing strings multiple times. */ - + #if !UCONFIG_NO_COLLATION #include "unicode/uobject.h" @@ -145,7 +145,7 @@ class U_I18N_API CollationKey : public UObject { * @return Returns true if two collation keys are equal, false otherwise. * @stable ICU 2.0 */ - UBool operator==(const CollationKey& source) const; + bool operator==(const CollationKey& source) const; /** * Compare if two collation keys are not the same. @@ -153,7 +153,7 @@ class U_I18N_API CollationKey : public UObject { * @return Returns true if two collation keys are different, false otherwise. * @stable ICU 2.0 */ - UBool operator!=(const CollationKey& source) const; + bool operator!=(const CollationKey& source) const; /** @@ -186,7 +186,7 @@ class U_I18N_API CollationKey : public UObject { uint8_t* toByteArray(int32_t& count) const; #endif -#ifndef U_HIDE_DEPRECATED_API +#ifndef U_HIDE_DEPRECATED_API /** * Convenience method which does a string(bit-wise) comparison of the * two collation keys. @@ -237,7 +237,7 @@ class U_I18N_API CollationKey : public UObject { * ICU "poor man's RTTI", returns a UClassID for the actual class. * @stable ICU 2.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -316,7 +316,7 @@ class U_I18N_API CollationKey : public UObject { } fUnion; }; -inline UBool +inline bool CollationKey::operator!=(const CollationKey& other) const { return !(*this == other); diff --git a/deps/icu-small/source/i18n/unicode/stsearch.h b/deps/icu-small/source/i18n/unicode/stsearch.h index 3cfd68d64771b9..c23e651d897511 100644 --- a/deps/icu-small/source/i18n/unicode/stsearch.h +++ b/deps/icu-small/source/i18n/unicode/stsearch.h @@ -17,10 +17,10 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: Service for searching text based on RuleBasedCollator. */ - + #if !UCONFIG_NO_COLLATION && !UCONFIG_NO_BREAK_ITERATION #include "unicode/tblcoll.h" @@ -29,7 +29,7 @@ U_NAMESPACE_BEGIN -/** +/** * * StringSearch is a SearchIterator that provides * language-sensitive text searching based on the comparison rules defined @@ -37,7 +37,7 @@ U_NAMESPACE_BEGIN * StringSearch ensures that language eccentricity can be * handled, e.g. for the German collator, characters ß and SS will be matched * if case is chosen to be ignored. - * See the + * See the * "ICU Collation Design Document" for more information. *

    * There are 2 match options for selection:
    @@ -46,7 +46,7 @@ U_NAMESPACE_BEGIN *
    * A pattern string P matches a text string S at the offsets [start, end] * if - *

    + * 
     
      * option 1. Some canonical equivalent of P matches some canonical equivalent
      *           of S'
      * option 2. P matches S' and if P starts or ends with a combining mark,
    @@ -55,10 +55,10 @@ U_NAMESPACE_BEGIN
      * 
    * Option 2. will be the default. *

    - * This search has APIs similar to that of other text iteration mechanisms - * such as the break iterators in BreakIterator. Using these - * APIs, it is easy to scan through text looking for all occurrences of - * a given pattern. This search iterator allows changing of direction by + * This search has APIs similar to that of other text iteration mechanisms + * such as the break iterators in BreakIterator. Using these + * APIs, it is easy to scan through text looking for all occurrences of + * a given pattern. This search iterator allows changing of direction by * calling a reset followed by a next or previous. * Though a direction change can occur without calling reset first, * this operation comes with some speed penalty. @@ -101,7 +101,7 @@ U_NAMESPACE_BEGIN * from getCollator and using the APIs in coll.h. * Lastly to update StringSearch to the new collator attributes, * reset has to be called. - *

    + *

    * Restriction:
    * Currently there are no composite characters that consists of a * character with combining class > 0 before a character with combining @@ -118,7 +118,7 @@ U_NAMESPACE_BEGIN * UErrorCode error = U_ZERO_ERROR; * StringSearch iter(pattern, target, Locale::getUS(), NULL, status); * for (int pos = iter.first(error); - * pos != USEARCH_DONE; + * pos != USEARCH_DONE; * pos = iter.next(error)) * { * printf("Found match at %d pos, length is %d\n", pos, iter.getMatchedLength()); @@ -139,120 +139,120 @@ class U_I18N_API StringSearch U_FINAL : public SearchIterator // public constructors and destructors -------------------------------- /** - * Creating a StringSearch instance using the argument locale - * language rule set. A collator will be created in the process, which - * will be owned by this instance and will be deleted during + * Creating a StringSearch instance using the argument locale + * language rule set. A collator will be created in the process, which + * will be owned by this instance and will be deleted during * destruction * @param pattern The text for which this object will search. * @param text The text in which to search for the pattern. - * @param locale A locale which defines the language-sensitive - * comparison rules used to determine whether text in the - * pattern and target matches. - * @param breakiter A BreakIterator object used to constrain - * the matches that are found. Matches whose start and end - * indices in the target text are not boundaries as - * determined by the BreakIterator are - * ignored. If this behavior is not desired, + * @param locale A locale which defines the language-sensitive + * comparison rules used to determine whether text in the + * pattern and target matches. + * @param breakiter A BreakIterator object used to constrain + * the matches that are found. Matches whose start and end + * indices in the target text are not boundaries as + * determined by the BreakIterator are + * ignored. If this behavior is not desired, * NULL can be passed in instead. * @param status for errors if any. If pattern or text is NULL, or if - * either the length of pattern or text is 0 then an + * either the length of pattern or text is 0 then an * U_ILLEGAL_ARGUMENT_ERROR is returned. * @stable ICU 2.0 */ StringSearch(const UnicodeString &pattern, const UnicodeString &text, - const Locale &locale, + const Locale &locale, BreakIterator *breakiter, UErrorCode &status); /** - * Creating a StringSearch instance using the argument collator - * language rule set. Note, user retains the ownership of this collator, + * Creating a StringSearch instance using the argument collator + * language rule set. Note, user retains the ownership of this collator, * it does not get destroyed during this instance's destruction. * @param pattern The text for which this object will search. * @param text The text in which to search for the pattern. - * @param coll A RuleBasedCollator object which defines - * the language-sensitive comparison rules used to - * determine whether text in the pattern and target + * @param coll A RuleBasedCollator object which defines + * the language-sensitive comparison rules used to + * determine whether text in the pattern and target * matches. User is responsible for the clearing of this * object. - * @param breakiter A BreakIterator object used to constrain - * the matches that are found. Matches whose start and end - * indices in the target text are not boundaries as - * determined by the BreakIterator are - * ignored. If this behavior is not desired, + * @param breakiter A BreakIterator object used to constrain + * the matches that are found. Matches whose start and end + * indices in the target text are not boundaries as + * determined by the BreakIterator are + * ignored. If this behavior is not desired, * NULL can be passed in instead. - * @param status for errors if any. If either the length of pattern or + * @param status for errors if any. If either the length of pattern or * text is 0 then an U_ILLEGAL_ARGUMENT_ERROR is returned. * @stable ICU 2.0 */ - StringSearch(const UnicodeString &pattern, + StringSearch(const UnicodeString &pattern, const UnicodeString &text, - RuleBasedCollator *coll, + RuleBasedCollator *coll, BreakIterator *breakiter, UErrorCode &status); /** - * Creating a StringSearch instance using the argument locale - * language rule set. A collator will be created in the process, which - * will be owned by this instance and will be deleted during + * Creating a StringSearch instance using the argument locale + * language rule set. A collator will be created in the process, which + * will be owned by this instance and will be deleted during * destruction *

    - * Note: No parsing of the text within the CharacterIterator - * will be done during searching for this version. The block of text + * Note: No parsing of the text within the CharacterIterator + * will be done during searching for this version. The block of text * in CharacterIterator will be used as it is. * @param pattern The text for which this object will search. * @param text The text iterator in which to search for the pattern. - * @param locale A locale which defines the language-sensitive - * comparison rules used to determine whether text in the - * pattern and target matches. User is responsible for + * @param locale A locale which defines the language-sensitive + * comparison rules used to determine whether text in the + * pattern and target matches. User is responsible for * the clearing of this object. - * @param breakiter A BreakIterator object used to constrain - * the matches that are found. Matches whose start and end - * indices in the target text are not boundaries as - * determined by the BreakIterator are - * ignored. If this behavior is not desired, + * @param breakiter A BreakIterator object used to constrain + * the matches that are found. Matches whose start and end + * indices in the target text are not boundaries as + * determined by the BreakIterator are + * ignored. If this behavior is not desired, * NULL can be passed in instead. - * @param status for errors if any. If either the length of pattern or + * @param status for errors if any. If either the length of pattern or * text is 0 then an U_ILLEGAL_ARGUMENT_ERROR is returned. * @stable ICU 2.0 */ StringSearch(const UnicodeString &pattern, CharacterIterator &text, - const Locale &locale, + const Locale &locale, BreakIterator *breakiter, UErrorCode &status); /** - * Creating a StringSearch instance using the argument collator - * language rule set. Note, user retains the ownership of this collator, + * Creating a StringSearch instance using the argument collator + * language rule set. Note, user retains the ownership of this collator, * it does not get destroyed during this instance's destruction. *

    - * Note: No parsing of the text within the CharacterIterator - * will be done during searching for this version. The block of text + * Note: No parsing of the text within the CharacterIterator + * will be done during searching for this version. The block of text * in CharacterIterator will be used as it is. * @param pattern The text for which this object will search. * @param text The text in which to search for the pattern. - * @param coll A RuleBasedCollator object which defines - * the language-sensitive comparison rules used to - * determine whether text in the pattern and target + * @param coll A RuleBasedCollator object which defines + * the language-sensitive comparison rules used to + * determine whether text in the pattern and target * matches. User is responsible for the clearing of this * object. - * @param breakiter A BreakIterator object used to constrain - * the matches that are found. Matches whose start and end - * indices in the target text are not boundaries as - * determined by the BreakIterator are - * ignored. If this behavior is not desired, + * @param breakiter A BreakIterator object used to constrain + * the matches that are found. Matches whose start and end + * indices in the target text are not boundaries as + * determined by the BreakIterator are + * ignored. If this behavior is not desired, * NULL can be passed in instead. - * @param status for errors if any. If either the length of pattern or + * @param status for errors if any. If either the length of pattern or * text is 0 then an U_ILLEGAL_ARGUMENT_ERROR is returned. * @stable ICU 2.0 */ StringSearch(const UnicodeString &pattern, CharacterIterator &text, - RuleBasedCollator *coll, + RuleBasedCollator *coll, BreakIterator *breakiter, UErrorCode &status); /** - * Copy constructor that creates a StringSearch instance with the same + * Copy constructor that creates a StringSearch instance with the same * behavior, and iterating over the same text. * @param that StringSearch instance to be copied. * @stable ICU 2.0 @@ -290,31 +290,31 @@ class U_I18N_API StringSearch U_FINAL : public SearchIterator StringSearch & operator=(const StringSearch &that); /** - * Equality operator. + * Equality operator. * @param that instance to be compared. - * @return true if both instances have the same attributes, - * breakiterators, collators and iterate over the same text + * @return true if both instances have the same attributes, + * breakiterators, collators and iterate over the same text * while looking for the same pattern. * @stable ICU 2.0 */ - virtual UBool operator==(const SearchIterator &that) const; + virtual bool operator==(const SearchIterator &that) const override; // public get and set methods ---------------------------------------- /** - * Sets the index to point to the given position, and clears any state + * Sets the index to point to the given position, and clears any state * that's affected. *

    - * This method takes the argument index and sets the position in the text - * string accordingly without checking if the index is pointing to a - * valid starting point to begin searching. + * This method takes the argument index and sets the position in the text + * string accordingly without checking if the index is pointing to a + * valid starting point to begin searching. * @param position within the text to be set. If position is less - * than or greater than the text range for searching, + * than or greater than the text range for searching, * an U_INDEX_OUTOFBOUNDS_ERROR will be returned * @param status for errors if it occurs * @stable ICU 2.0 */ - virtual void setOffset(int32_t position, UErrorCode &status); + virtual void setOffset(int32_t position, UErrorCode &status) override; /** * Return the current index in the text being searched. @@ -324,68 +324,68 @@ class U_I18N_API StringSearch U_FINAL : public SearchIterator * @return current index in the text being searched. * @stable ICU 2.0 */ - virtual int32_t getOffset(void) const; + virtual int32_t getOffset(void) const override; /** * Set the target text to be searched. - * Text iteration will hence begin at the start of the text string. - * This method is - * useful if you want to re-use an iterator to search for the same + * Text iteration will hence begin at the start of the text string. + * This method is + * useful if you want to re-use an iterator to search for the same * pattern within a different body of text. * @param text text string to be searched - * @param status for errors if any. If the text length is 0 then an + * @param status for errors if any. If the text length is 0 then an * U_ILLEGAL_ARGUMENT_ERROR is returned. * @stable ICU 2.0 */ - virtual void setText(const UnicodeString &text, UErrorCode &status); - + virtual void setText(const UnicodeString &text, UErrorCode &status) override; + /** * Set the target text to be searched. - * Text iteration will hence begin at the start of the text string. - * This method is - * useful if you want to re-use an iterator to search for the same + * Text iteration will hence begin at the start of the text string. + * This method is + * useful if you want to re-use an iterator to search for the same * pattern within a different body of text. - * Note: No parsing of the text within the CharacterIterator - * will be done during searching for this version. The block of text + * Note: No parsing of the text within the CharacterIterator + * will be done during searching for this version. The block of text * in CharacterIterator will be used as it is. * @param text text string to be searched - * @param status for errors if any. If the text length is 0 then an + * @param status for errors if any. If the text length is 0 then an * U_ILLEGAL_ARGUMENT_ERROR is returned. * @stable ICU 2.0 */ - virtual void setText(CharacterIterator &text, UErrorCode &status); + virtual void setText(CharacterIterator &text, UErrorCode &status) override; /** * Gets the collator used for the language rules. *

    * Caller may modify but must not delete the RuleBasedCollator! - * Modifications to this collator will affect the original collator passed in to + * Modifications to this collator will affect the original collator passed in to * the StringSearch> constructor or to setCollator, if any. * @return collator used for string search * @stable ICU 2.0 */ RuleBasedCollator * getCollator() const; - + /** - * Sets the collator used for the language rules. User retains the - * ownership of this collator, thus the responsibility of deletion lies + * Sets the collator used for the language rules. User retains the + * ownership of this collator, thus the responsibility of deletion lies * with the user. The iterator's position will not be changed by this method. - * @param coll collator + * @param coll collator * @param status for errors if any * @stable ICU 2.0 */ void setCollator(RuleBasedCollator *coll, UErrorCode &status); - + /** * Sets the pattern used for matching. * The iterator's position will not be changed by this method. * @param pattern search pattern to be found - * @param status for errors if any. If the pattern length is 0 then an + * @param status for errors if any. If the pattern length is 0 then an * U_ILLEGAL_ARGUMENT_ERROR is returned. * @stable ICU 2.0 */ void setPattern(const UnicodeString &pattern, UErrorCode &status); - + /** * Gets the search pattern. * @return pattern used for matching @@ -395,32 +395,32 @@ class U_I18N_API StringSearch U_FINAL : public SearchIterator // public methods ---------------------------------------------------- - /** + /** * Reset the iteration. - * Search will begin at the start of the text string if a forward - * iteration is initiated before a backwards iteration. Otherwise if - * a backwards iteration is initiated before a forwards iteration, the + * Search will begin at the start of the text string if a forward + * iteration is initiated before a backwards iteration. Otherwise if + * a backwards iteration is initiated before a forwards iteration, the * search will begin at the end of the text string. * @stable ICU 2.0 */ - virtual void reset(); + virtual void reset() override; /** - * Returns a copy of StringSearch with the same behavior, and + * Returns a copy of StringSearch with the same behavior, and * iterating over the same text, as this one. Note that all data will be * replicated, except for the user-specified collator and the * breakiterator. * @return cloned object * @stable ICU 2.0 */ - virtual StringSearch * safeClone() const; - + virtual StringSearch * safeClone() const override; + /** * ICU "poor man's RTTI", returns a UClassID for the actual class. * * @stable ICU 2.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -435,27 +435,27 @@ class U_I18N_API StringSearch U_FINAL : public SearchIterator /** * Search forward for matching text, starting at a given location. - * Clients should not call this method directly; instead they should + * Clients should not call this method directly; instead they should * call {@link SearchIterator#next }. *

    * If a match is found, this method returns the index at which the match - * starts and calls {@link SearchIterator#setMatchLength } with the number - * of characters in the target text that make up the match. If no match + * starts and calls {@link SearchIterator#setMatchLength } with the number + * of characters in the target text that make up the match. If no match * is found, the method returns USEARCH_DONE. *

    - * The StringSearch is adjusted so that its current index - * (as returned by {@link #getOffset }) is the match position if one was + * The StringSearch is adjusted so that its current index + * (as returned by {@link #getOffset }) is the match position if one was * found. * If a match is not found, USEARCH_DONE will be returned and * the StringSearch will be adjusted to the index USEARCH_DONE. - * @param position The index in the target text at which the search + * @param position The index in the target text at which the search * starts * @param status for errors if any occurs - * @return The index at which the matched text in the target starts, or + * @return The index at which the matched text in the target starts, or * USEARCH_DONE if no match was found. * @stable ICU 2.0 */ - virtual int32_t handleNext(int32_t position, UErrorCode &status); + virtual int32_t handleNext(int32_t position, UErrorCode &status) override; /** * Search backward for matching text, starting at a given location. @@ -463,24 +463,24 @@ class U_I18N_API StringSearch U_FINAL : public SearchIterator * SearchIterator.previous(), which this method overrides. *

    * If a match is found, this method returns the index at which the match - * starts and calls {@link SearchIterator#setMatchLength } with the number - * of characters in the target text that make up the match. If no match + * starts and calls {@link SearchIterator#setMatchLength } with the number + * of characters in the target text that make up the match. If no match * is found, the method returns USEARCH_DONE. *

    - * The StringSearch is adjusted so that its current index - * (as returned by {@link #getOffset }) is the match position if one was + * The StringSearch is adjusted so that its current index + * (as returned by {@link #getOffset }) is the match position if one was * found. * If a match is not found, USEARCH_DONE will be returned and * the StringSearch will be adjusted to the index USEARCH_DONE. - * @param position The index in the target text at which the search + * @param position The index in the target text at which the search * starts. * @param status for errors if any occurs - * @return The index at which the matched text in the target starts, or + * @return The index at which the matched text in the target starts, or * USEARCH_DONE if no match was found. * @stable ICU 2.0 */ - virtual int32_t handlePrev(int32_t position, UErrorCode &status); - + virtual int32_t handlePrev(int32_t position, UErrorCode &status) override; + private : StringSearch(); // default constructor not implemented @@ -506,3 +506,4 @@ U_NAMESPACE_END #endif /* U_SHOW_CPLUSPLUS_API */ #endif + diff --git a/deps/icu-small/source/i18n/unicode/tblcoll.h b/deps/icu-small/source/i18n/unicode/tblcoll.h index 1709e836dd4e98..2de1af85392fc8 100644 --- a/deps/icu-small/source/i18n/unicode/tblcoll.h +++ b/deps/icu-small/source/i18n/unicode/tblcoll.h @@ -223,14 +223,14 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @return true if arguments is the same as this object. * @stable ICU 2.0 */ - virtual UBool operator==(const Collator& other) const; + virtual bool operator==(const Collator& other) const override; /** * Makes a copy of this object. * @return a copy of this object, owned by the caller * @stable ICU 2.0 */ - virtual RuleBasedCollator* clone() const; + virtual RuleBasedCollator* clone() const override; /** * Creates a collation element iterator for the source string. The caller of @@ -274,7 +274,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { **/ virtual UCollationResult compare(const UnicodeString& source, const UnicodeString& target, - UErrorCode &status) const; + UErrorCode &status) const override; /** * Does the same thing as compare but limits the comparison to a specified @@ -292,7 +292,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { virtual UCollationResult compare(const UnicodeString& source, const UnicodeString& target, int32_t length, - UErrorCode &status) const; + UErrorCode &status) const override; /** * The comparison function compares the character data stored in two @@ -312,7 +312,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { */ virtual UCollationResult compare(const char16_t* source, int32_t sourceLength, const char16_t* target, int32_t targetLength, - UErrorCode &status) const; + UErrorCode &status) const override; /** * Compares two strings using the Collator. @@ -327,7 +327,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { */ virtual UCollationResult compare(UCharIterator &sIter, UCharIterator &tIter, - UErrorCode &status) const; + UErrorCode &status) const override; /** * Compares two UTF-8 strings using the Collator. @@ -344,7 +344,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { */ virtual UCollationResult compareUTF8(const StringPiece &source, const StringPiece &target, - UErrorCode &status) const; + UErrorCode &status) const override; /** * Transforms the string into a series of characters @@ -362,7 +362,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { */ virtual CollationKey& getCollationKey(const UnicodeString& source, CollationKey& key, - UErrorCode& status) const; + UErrorCode& status) const override; /** * Transforms a specified region of the string into a series of characters @@ -382,14 +382,14 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { virtual CollationKey& getCollationKey(const char16_t *source, int32_t sourceLength, CollationKey& key, - UErrorCode& status) const; + UErrorCode& status) const override; /** * Generates the hash code for the rule-based collation object. * @return the hash code. * @stable ICU 2.0 */ - virtual int32_t hashCode() const; + virtual int32_t hashCode() const override; #ifndef U_FORCE_HIDE_DEPRECATED_API /** @@ -402,7 +402,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * was instantiated from rules, locale is empty. * @deprecated ICU 2.8 likely to change in ICU 3.0, based on feedback */ - virtual Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const; + virtual Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const override; #endif // U_FORCE_HIDE_DEPRECATED_API /** @@ -417,7 +417,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @param info the version # information, the result will be filled in * @stable ICU 2.0 */ - virtual void getVersion(UVersionInfo info) const; + virtual void getVersion(UVersionInfo info) const override; #ifndef U_HIDE_DEPRECATED_API /** @@ -449,7 +449,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * IDs. * @stable ICU 2.0 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Returns the class ID for this class. This is useful only for comparing to @@ -511,7 +511,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @stable ICU 2.2 */ virtual void setAttribute(UColAttribute attr, UColAttributeValue value, - UErrorCode &status); + UErrorCode &status) override; /** * Universal attribute getter. @@ -521,7 +521,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @stable ICU 2.2 */ virtual UColAttributeValue getAttribute(UColAttribute attr, - UErrorCode &status) const; + UErrorCode &status) const override; /** * Sets the variable top to the top of the specified reordering group. @@ -539,7 +539,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @see getMaxVariable * @stable ICU 53 */ - virtual Collator &setMaxVariable(UColReorderCode group, UErrorCode &errorCode); + virtual Collator &setMaxVariable(UColReorderCode group, UErrorCode &errorCode) override; /** * Returns the maximum reordering group whose characters are affected by UCOL_ALTERNATE_HANDLING. @@ -547,7 +547,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @see setMaxVariable * @stable ICU 53 */ - virtual UColReorderCode getMaxVariable() const; + virtual UColReorderCode getMaxVariable() const override; #ifndef U_FORCE_HIDE_DEPRECATED_API /** @@ -566,7 +566,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @return variable top primary weight * @deprecated ICU 53 Call setMaxVariable() instead. */ - virtual uint32_t setVariableTop(const char16_t *varTop, int32_t len, UErrorCode &status); + virtual uint32_t setVariableTop(const char16_t *varTop, int32_t len, UErrorCode &status) override; /** * Sets the variable top to the primary weight of the specified string. @@ -583,7 +583,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @return variable top primary weight * @deprecated ICU 53 Call setMaxVariable() instead. */ - virtual uint32_t setVariableTop(const UnicodeString &varTop, UErrorCode &status); + virtual uint32_t setVariableTop(const UnicodeString &varTop, UErrorCode &status) override; /** * Sets the variable top to the specified primary weight. @@ -596,7 +596,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @param status error code * @deprecated ICU 53 Call setMaxVariable() instead. */ - virtual void setVariableTop(uint32_t varTop, UErrorCode &status); + virtual void setVariableTop(uint32_t varTop, UErrorCode &status) override; #endif // U_FORCE_HIDE_DEPRECATED_API /** @@ -606,7 +606,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @see getMaxVariable * @stable ICU 2.0 */ - virtual uint32_t getVariableTop(UErrorCode &status) const; + virtual uint32_t getVariableTop(UErrorCode &status) const override; /** * Get a UnicodeSet that contains all the characters and sequences tailored in @@ -617,7 +617,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * in the root collator. The object must be disposed of by using delete * @stable ICU 2.4 */ - virtual UnicodeSet *getTailoredSet(UErrorCode &status) const; + virtual UnicodeSet *getTailoredSet(UErrorCode &status) const override; /** * Get the sort key as an array of bytes from a UnicodeString. @@ -634,7 +634,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @stable ICU 2.0 */ virtual int32_t getSortKey(const UnicodeString& source, uint8_t *result, - int32_t resultLength) const; + int32_t resultLength) const override; /** * Get the sort key as an array of bytes from a char16_t buffer. @@ -653,7 +653,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @stable ICU 2.2 */ virtual int32_t getSortKey(const char16_t *source, int32_t sourceLength, - uint8_t *result, int32_t resultLength) const; + uint8_t *result, int32_t resultLength) const override; /** * Retrieves the reordering codes for this collator. @@ -670,7 +670,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { */ virtual int32_t getReorderCodes(int32_t *dest, int32_t destCapacity, - UErrorCode& status) const; + UErrorCode& status) const override; /** * Sets the ordering of scripts for this collator. @@ -685,7 +685,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { */ virtual void setReorderCodes(const int32_t* reorderCodes, int32_t reorderCodesLength, - UErrorCode& status) ; + UErrorCode& status) override; /** * Implements ucol_strcollUTF8(). @@ -694,7 +694,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { virtual UCollationResult internalCompareUTF8( const char *left, int32_t leftLength, const char *right, int32_t rightLength, - UErrorCode &errorCode) const; + UErrorCode &errorCode) const override; /** Get the short definition string for a collator. This internal API harvests the collator's * locale and the attribute set and produces a string that can be used for opening @@ -722,7 +722,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { virtual int32_t internalGetShortDefinitionString(const char *locale, char *buffer, int32_t capacity, - UErrorCode &status) const; + UErrorCode &status) const override; /** * Implements ucol_nextSortKeyPart(). @@ -730,7 +730,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { */ virtual int32_t internalNextSortKeyPart( UCharIterator *iter, uint32_t state[2], - uint8_t *dest, int32_t count, UErrorCode &errorCode) const; + uint8_t *dest, int32_t count, UErrorCode &errorCode) const override; // Do not enclose the default constructor with #ifndef U_HIDE_INTERNAL_API /** @@ -806,7 +806,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @param actualLocale the actual locale * @internal */ - virtual void setLocales(const Locale& requestedLocale, const Locale& validLocale, const Locale& actualLocale); + virtual void setLocales(const Locale& requestedLocale, const Locale& validLocale, const Locale& actualLocale) override; private: friend class CollationElementIterator; diff --git a/deps/icu-small/source/i18n/unicode/timezone.h b/deps/icu-small/source/i18n/unicode/timezone.h index 73cae44d533365..382ad97d5bf381 100644 --- a/deps/icu-small/source/i18n/unicode/timezone.h +++ b/deps/icu-small/source/i18n/unicode/timezone.h @@ -34,7 +34,7 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: TimeZone object */ @@ -184,10 +184,10 @@ class U_I18N_API TimeZone : public UObject { * @param zoneType The system time zone type. * @param region The ISO 3166 two-letter country code or UN M.49 * three-digit area code. When NULL, no filtering - * done by region. + * done by region. * @param rawOffset An offset from GMT in milliseconds, ignoring * the effect of daylight savings time, if any. - * When NULL, no filtering done by zone offset. + * When NULL, no filtering done by zone offset. * @param ec Output param to filled in with a success or * an error. * @return an enumeration object, owned by the caller. @@ -199,15 +199,28 @@ class U_I18N_API TimeZone : public UObject { const int32_t* rawOffset, UErrorCode& ec); +#ifndef U_HIDE_DEPRECATED_API /** * Returns an enumeration over all recognized time zone IDs. (i.e., * all strings that createTimeZone() accepts) * * @return an enumeration object, owned by the caller. - * @stable ICU 2.4 + * @deprecated ICU 70 Use createEnumeration(UErrorCode&) instead. */ static StringEnumeration* U_EXPORT2 createEnumeration(); +#endif // U_HIDE_DEPRECATED_API + /** + * Returns an enumeration over all recognized time zone IDs. (i.e., + * all strings that createTimeZone() accepts) + * + * @param status Receives the status. + * @return an enumeration object, owned by the caller. + * @stable ICU 70 + */ + static StringEnumeration* U_EXPORT2 createEnumeration(UErrorCode& status); + +#ifndef U_HIDE_DEPRECATED_API /** * Returns an enumeration over time zone IDs with a given raw * offset from GMT. There may be several times zones with the @@ -223,21 +236,57 @@ class U_I18N_API TimeZone : public UObject { * @param rawOffset an offset from GMT in milliseconds, ignoring * the effect of daylight savings time, if any * @return an enumeration object, owned by the caller - * @stable ICU 2.4 + * @deprecated ICU 70 Use createEnumerationForRawOffset(int32_t,UErrorCode&) instead. */ static StringEnumeration* U_EXPORT2 createEnumeration(int32_t rawOffset); +#endif // U_HIDE_DEPRECATED_API + /** + * Returns an enumeration over time zone IDs with a given raw + * offset from GMT. There may be several times zones with the + * same GMT offset that differ in the way they handle daylight + * savings time. For example, the state of Arizona doesn't + * observe daylight savings time. If you ask for the time zone + * IDs corresponding to GMT-7:00, you'll get back an enumeration + * over two time zone IDs: "America/Denver," which corresponds to + * Mountain Standard Time in the winter and Mountain Daylight Time + * in the summer, and "America/Phoenix", which corresponds to + * Mountain Standard Time year-round, even in the summer. + * + * @param rawOffset an offset from GMT in milliseconds, ignoring + * the effect of daylight savings time, if any + * @param status Receives the status. + * @return an enumeration object, owned by the caller + * @stable ICU 70 + */ + static StringEnumeration* U_EXPORT2 createEnumerationForRawOffset(int32_t rawOffset, UErrorCode& status); + +#ifndef U_HIDE_DEPRECATED_API /** * Returns an enumeration over time zone IDs associated with the - * given country. Some zones are affiliated with no country + * given region. Some zones are affiliated with no region * (e.g., "UTC"); these may also be retrieved, as a group. * - * @param country The ISO 3166 two-letter country code, or NULL to - * retrieve zones not affiliated with any country. + * @param region The ISO 3166 two-letter country code, or NULL to + * retrieve zones not affiliated with any region. * @return an enumeration object, owned by the caller - * @stable ICU 2.4 + * @deprecated ICU 70 Use createEnumerationForRegion(const char*,UErrorCode&) instead. + */ + static StringEnumeration* U_EXPORT2 createEnumeration(const char* region); +#endif // U_HIDE_DEPRECATED_API + + /** + * Returns an enumeration over time zone IDs associated with the + * given region. Some zones are affiliated with no region + * (e.g., "UTC"); these may also be retrieved, as a group. + * + * @param region The ISO 3166 two-letter country code, or NULL to + * retrieve zones not affiliated with any region. + * @param status Receives the status. + * @return an enumeration object, owned by the caller + * @stable ICU 70 */ - static StringEnumeration* U_EXPORT2 createEnumeration(const char* country); + static StringEnumeration* U_EXPORT2 createEnumerationForRegion(const char* region, UErrorCode& status); /** * Returns the number of IDs in the equivalency group that @@ -282,9 +331,9 @@ class U_I18N_API TimeZone : public UObject { * system configuration. If the host system detection routines fail, * or if they specify a TimeZone or TimeZone offset which is not * recognized, then the special TimeZone "Etc/Unknown" is returned. - * + * * Note that ICU4C does not change the default time zone unless - * `TimeZone::adoptDefault(TimeZone*)` or + * `TimeZone::adoptDefault(TimeZone*)` or * `TimeZone::setDefault(const TimeZone&)` is explicitly called by a * user. This method does not update the current ICU's default, * and may return a different TimeZone from the one returned by @@ -454,22 +503,22 @@ class U_I18N_API TimeZone : public UObject { * IDs, but subclasses are expected to also compare the fields they add.) * * @param that The TimeZone object to be compared with. - * @return True if the given TimeZone is equal to this TimeZone; false + * @return true if the given TimeZone is equal to this TimeZone; false * otherwise. * @stable ICU 2.0 */ - virtual UBool operator==(const TimeZone& that) const; + virtual bool operator==(const TimeZone& that) const; /** * Returns true if the two TimeZones are NOT equal; that is, if operator==() returns * false. * * @param that The TimeZone object to be compared with. - * @return True if the given TimeZone is not equal to this TimeZone; false + * @return true if the given TimeZone is not equal to this TimeZone; false * otherwise. * @stable ICU 2.0 */ - UBool operator!=(const TimeZone& that) const {return !operator==(that);} + bool operator!=(const TimeZone& that) const {return !operator==(that);} /** * Returns the TimeZone's adjusted GMT offset (i.e., the number of milliseconds to add @@ -698,7 +747,7 @@ class U_I18N_API TimeZone : public UObject { * @stable ICU 2.0 */ UnicodeString& getDisplayName(UBool inDaylight, EDisplayType style, const Locale& locale, UnicodeString& result) const; - + /** * Queries if this time zone uses daylight savings time. * @return true if this time zone uses daylight savings time, @@ -730,7 +779,7 @@ class U_I18N_API TimeZone : public UObject { * always returns a BasicTimeZone) provides a series of methods allowing * historic and future time zone rule iteration, so you can check if daylight saving * time is observed or not within a given period. - * + * * @stable ICU 2.0 */ virtual UBool useDaylightTime(void) const = 0; @@ -790,8 +839,8 @@ class U_I18N_API TimeZone : public UObject { * same class ID. Objects of other classes have different class IDs. * @stable ICU 2.0 */ - virtual UClassID getDynamicClassID(void) const = 0; - + virtual UClassID getDynamicClassID(void) const override = 0; + /** * Returns the amount of time to be added to local standard time * to get local wall clock time. @@ -816,7 +865,7 @@ class U_I18N_API TimeZone : public UObject { * When the time zone is not associated with a specific location, * for example - "Etc/UTC", "EST5EDT", then this method returns * "001" (UN M.49 area code for World). - * + * * @param id The system time zone ID. * @param region Output buffer for receiving the region code. * @param capacity The size of the output buffer. @@ -824,10 +873,10 @@ class U_I18N_API TimeZone : public UObject { * is not a known system time zone ID, * U_ILLEGAL_ARGUMENT_ERROR is set. * @return The length of the output region code. - * @stable ICU 4.8 - */ - static int32_t U_EXPORT2 getRegion(const UnicodeString& id, - char *region, int32_t capacity, UErrorCode& status); + * @stable ICU 4.8 + */ + static int32_t U_EXPORT2 getRegion(const UnicodeString& id, + char *region, int32_t capacity, UErrorCode& status); protected: @@ -923,7 +972,7 @@ class U_I18N_API TimeZone : public UObject { * Parses the given custom time zone identifier * @param id id A string of the form GMT[+-]hh:mm, GMT[+-]hhmm, or * GMT[+-]hh. - * @param sign Receves parsed sign, 1 for positive, -1 for negative. + * @param sign Receives parsed sign, 1 for positive, -1 for negative. * @param hour Receives parsed hour field * @param minute Receives parsed minute field * @param second Receives parsed second field @@ -951,7 +1000,7 @@ class U_I18N_API TimeZone : public UObject { * @param min offset minutes * @param sec offset seconds * @param negative sign of the offset, true for negative offset. - * @param id Receves the format result (normalized custom ID) + * @param id Receives the format result (normalized custom ID) * @return The reference to id */ static UnicodeString& formatCustomID(int32_t hour, int32_t min, int32_t sec, diff --git a/deps/icu-small/source/i18n/unicode/tmunit.h b/deps/icu-small/source/i18n/unicode/tmunit.h index 2e949ddfbd560d..24abb49f198274 100644 --- a/deps/icu-small/source/i18n/unicode/tmunit.h +++ b/deps/icu-small/source/i18n/unicode/tmunit.h @@ -73,7 +73,7 @@ class U_I18N_API TimeUnit: public MeasureUnit { * Override clone. * @stable ICU 4.2 */ - virtual TimeUnit* clone() const; + virtual TimeUnit* clone() const override; /** * Copy operator. @@ -95,7 +95,7 @@ class U_I18N_API TimeUnit: public MeasureUnit { * different class IDs. * @stable ICU 4.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * Returns the class ID for this class. This is used to compare to diff --git a/deps/icu-small/source/i18n/unicode/tmutamt.h b/deps/icu-small/source/i18n/unicode/tmutamt.h index bb9144e2d072dc..88e892fb0c26c2 100644 --- a/deps/icu-small/source/i18n/unicode/tmutamt.h +++ b/deps/icu-small/source/i18n/unicode/tmutamt.h @@ -5,7 +5,7 @@ * Copyright (C) 2009-2010, Google, International Business Machines Corporation and * * others. All Rights Reserved. * ******************************************************************************* - */ + */ #ifndef __TMUTAMT_H__ #define __TMUTAMT_H__ @@ -38,27 +38,27 @@ class U_I18N_API TimeUnitAmount: public Measure { public: /** * Construct TimeUnitAmount object with the given number and the - * given time unit. + * given time unit. * @param number a numeric object; number.isNumeric() must be true * @param timeUnitField the time unit field of a time unit - * @param status the input-output error code. + * @param status the input-output error code. * If the number is not numeric or the timeUnitField * is not valid, * then this will be set to a failing value: * U_ILLEGAL_ARGUMENT_ERROR. * @stable ICU 4.2 */ - TimeUnitAmount(const Formattable& number, + TimeUnitAmount(const Formattable& number, TimeUnit::UTimeUnitFields timeUnitField, UErrorCode& status); /** * Construct TimeUnitAmount object with the given numeric amount and the - * given time unit. + * given time unit. * @param amount a numeric amount. * @param timeUnitField the time unit field on which a time unit amount * object will be created. - * @param status the input-output error code. + * @param status the input-output error code. * If the timeUnitField is not valid, * then this will be set to a failing value: * U_ILLEGAL_ARGUMENT_ERROR. @@ -69,7 +69,7 @@ class U_I18N_API TimeUnitAmount: public Measure { /** - * Copy constructor + * Copy constructor * @stable ICU 4.2 */ TimeUnitAmount(const TimeUnitAmount& other); @@ -83,36 +83,36 @@ class U_I18N_API TimeUnitAmount: public Measure { /** - * Clone. + * Clone. * @return a polymorphic clone of this object. The result will have the same class as returned by getDynamicClassID(). * @stable ICU 4.2 */ - virtual TimeUnitAmount* clone() const; - + virtual TimeUnitAmount* clone() const override; + /** * Destructor * @stable ICU 4.2 */ virtual ~TimeUnitAmount(); - - /** - * Equality operator. + + /** + * Equality operator. * @param other the object to compare to. * @return true if this object is equal to the given object. * @stable ICU 4.2 */ - virtual UBool operator==(const UObject& other) const; + virtual bool operator==(const UObject& other) const; - /** - * Not-equality operator. + /** + * Not-equality operator. * @param other the object to compare to. * @return true if this object is not equal to the given object. * @stable ICU 4.2 */ - UBool operator!=(const UObject& other) const; + bool operator!=(const UObject& other) const; /** @@ -140,7 +140,7 @@ class U_I18N_API TimeUnitAmount: public Measure { * other classes have different class IDs. * @stable ICU 4.2 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** @@ -160,7 +160,7 @@ class U_I18N_API TimeUnitAmount: public Measure { -inline UBool +inline bool TimeUnitAmount::operator!=(const UObject& other) const { return !operator==(other); } diff --git a/deps/icu-small/source/i18n/unicode/tmutfmt.h b/deps/icu-small/source/i18n/unicode/tmutfmt.h index ad871f7c09fd4f..02e0563a010e63 100644 --- a/deps/icu-small/source/i18n/unicode/tmutfmt.h +++ b/deps/icu-small/source/i18n/unicode/tmutfmt.h @@ -126,7 +126,7 @@ class U_I18N_API TimeUnitFormat: public MeasureFormat { * @return A copy of the object. * @deprecated ICU 53 */ - virtual TimeUnitFormat* clone() const; + virtual TimeUnitFormat* clone() const override; /** * Assignment operator @@ -134,15 +134,6 @@ class U_I18N_API TimeUnitFormat: public MeasureFormat { */ TimeUnitFormat& operator=(const TimeUnitFormat& other); - /** - * Return true if the given Format objects are not semantically equal. - * Objects of different subclasses are considered unequal. - * @param other the object to be compared with. - * @return true if the given Format objects are not semantically equal. - * @deprecated ICU 53 - */ - UBool operator!=(const Format& other) const; - /** * Set the locale used for formatting or parsing. * @param locale the locale to be set @@ -167,7 +158,7 @@ class U_I18N_API TimeUnitFormat: public MeasureFormat { */ virtual void parseObject(const UnicodeString& source, Formattable& result, - ParsePosition& pos) const; + ParsePosition& pos) const override; /** * Return the class ID for this class. This is useful only for comparing to @@ -193,7 +184,7 @@ class U_I18N_API TimeUnitFormat: public MeasureFormat { * other classes have different class IDs. * @deprecated ICU 53 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; private: Hashtable* fTimeUnitToCountToPatterns[TimeUnit::UTIMEUNIT_FIELD_COUNT]; @@ -236,11 +227,6 @@ class U_I18N_API TimeUnitFormat: public MeasureFormat { friend struct TimeUnitFormatReadSink; }; -inline UBool -TimeUnitFormat::operator!=(const Format& other) const { - return !operator==(other); -} - U_NAMESPACE_END #endif /* U_HIDE_DEPRECATED_API */ diff --git a/deps/icu-small/source/i18n/unicode/translit.h b/deps/icu-small/source/i18n/unicode/translit.h index 0556b740fab792..56eb6448ca4589 100644 --- a/deps/icu-small/source/i18n/unicode/translit.h +++ b/deps/icu-small/source/i18n/unicode/translit.h @@ -18,7 +18,7 @@ /** * \file - * \brief C++ API: Tranforms text from one format to another. + * \brief C++ API: Transforms text from one format to another. */ #if !UCONFIG_NO_TRANSLITERATION @@ -157,7 +157,7 @@ class TransliteratorIDParser; * transliterator B decrements character values, then A * is an inverse of B and vice versa. If we compose A * with B in a compound transliterator, the result is the - * indentity transliterator, that is, a transliterator that does not + * identity transliterator, that is, a transliterator that does not * change its input text. * * The Transliterator method getInverse() @@ -219,7 +219,7 @@ class TransliteratorIDParser; * acts a template; future calls to {@link #createInstance } with the ID * of the registered object return clones of that object. Thus any * object passed to registerInstance() must implement - * clone() propertly. To register a transliterator subclass + * clone() properly. To register a transliterator subclass * without instantiating it (until it is needed), users may call * {@link #registerFactory }. In this case, the objects are * instantiated by invoking the zero-argument public constructor of @@ -317,7 +317,7 @@ class TransliteratorIDParser; * replacement. The cursor is the point in the text at which the * next replacement, if any, will be applied. The cursor is usually * placed within the replacement text; however, it can actually be - * placed into the precending or following context by using the + * placed into the preceding or following context by using the * special character '@'. Examples: * *

    @@ -1061,7 +1061,7 @@ class U_I18N_API Transliterator : public UObject {
          *
          * @param ID a valid ID, as enumerated by getAvailableIDs()
          * @param dir        either FORWARD or REVERSE.
    -     * @param parseError Struct to recieve information on position
    +     * @param parseError Struct to receive information on position
          *                   of error if an error is encountered
          * @param status     Output param to filled in with a success or an error.
          * @return A Transliterator object with the given ID
    @@ -1380,7 +1380,7 @@ class U_I18N_API Transliterator : public UObject {
          * Return a registered source specifier.
          * @param index which specifier to return, from 0 to n-1, where
          * n = countAvailableSources()
    -     * @param result fill-in paramter to receive the source specifier.
    +     * @param result fill-in parameter to receive the source specifier.
          * If index is out of range, result will be empty.
          * @return reference to result
          * @stable ICU 2.0
    @@ -1403,7 +1403,7 @@ class U_I18N_API Transliterator : public UObject {
          * @param index which specifier to return, from 0 to n-1, where
          * n = countAvailableTargets(source)
          * @param source the source specifier
    -     * @param result fill-in paramter to receive the target specifier.
    +     * @param result fill-in parameter to receive the target specifier.
          * If source is invalid or if index is out of range, result will
          * be empty.
          * @return reference to result
    @@ -1430,7 +1430,7 @@ class U_I18N_API Transliterator : public UObject {
          * n = countAvailableVariants(source, target)
          * @param source the source specifier
          * @param target the target specifier
    -     * @param result fill-in paramter to receive the variant
    +     * @param result fill-in parameter to receive the variant
          * specifier.  If source is invalid or if target is invalid or if
          * index is out of range, result will be empty.
          * @return reference to result
    @@ -1527,7 +1527,7 @@ class U_I18N_API Transliterator : public UObject {
          * different class IDs.
          * @stable ICU 2.0
          */
    -    virtual UClassID getDynamicClassID(void) const = 0;
    +    virtual UClassID getDynamicClassID(void) const override = 0;
     
     private:
         static UBool initializeRegistry(UErrorCode &status);
    diff --git a/deps/icu-small/source/i18n/unicode/tzfmt.h b/deps/icu-small/source/i18n/unicode/tzfmt.h
    index 4411865984b54e..6db8477026a931 100644
    --- a/deps/icu-small/source/i18n/unicode/tzfmt.h
    +++ b/deps/icu-small/source/i18n/unicode/tzfmt.h
    @@ -299,7 +299,7 @@ class U_I18N_API TimeZoneFormat : public Format {
          *                Objects of different subclasses are considered unequal.
          * @stable ICU 50
          */
    -    virtual UBool operator==(const Format& other) const;
    +    virtual bool operator==(const Format& other) const override;
     
         /**
          * Clone this object polymorphically. The caller is responsible
    @@ -307,7 +307,7 @@ class U_I18N_API TimeZoneFormat : public Format {
          * @return A copy of the object
          * @stable ICU 50
          */
    -    virtual TimeZoneFormat* clone() const;
    +    virtual TimeZoneFormat* clone() const override;
     
         /**
          * Creates an instance of TimeZoneFormat for the given locale.
    @@ -327,7 +327,7 @@ class U_I18N_API TimeZoneFormat : public Format {
         const TimeZoneNames* getTimeZoneNames() const;
     
         /**
    -     * Sets the time zone display name data to this format instnace.
    +     * Sets the time zone display name data to this format instance.
          * The caller should not delete the TimeZoenNames object after it is adopted
          * by this call.
          * @param tznames TimeZoneNames object to be adopted.
    @@ -336,7 +336,7 @@ class U_I18N_API TimeZoneFormat : public Format {
         void adoptTimeZoneNames(TimeZoneNames *tznames);
     
         /**
    -     * Sets the time zone display name data to this format instnace.
    +     * Sets the time zone display name data to this format instance.
          * @param tznames TimeZoneNames object to be set.
          * @stable ICU 50
          */
    @@ -355,7 +355,7 @@ class U_I18N_API TimeZoneFormat : public Format {
          * Sets the localized GMT format pattern. The pattern must contain
          * a single argument {0}, for example "GMT {0}".
          * @param pattern The localized GMT format pattern to be used by this object.
    -     * @param status Recieves the status.
    +     * @param status Receives the status.
          * @see #getGMTPattern
          * @stable ICU 50
          */
    @@ -437,7 +437,7 @@ class U_I18N_API TimeZoneFormat : public Format {
          * Sets the default parse options.
          * 

    Note: By default, an instance of TimeZoneFormat * created by {@link #createInstance} has no parse options set (UTZFMT_PARSE_OPTION_NONE). - * To specify multipe options, use bitwise flags of UTimeZoneFormatParseOption. + * To specify multiple options, use bitwise flags of UTimeZoneFormatParseOption. * @see #UTimeZoneFormatParseOption * @stable ICU 50 */ @@ -590,7 +590,7 @@ class U_I18N_API TimeZoneFormat : public Format { * @param text The text contains a time zone string at the position. * @param style The format style * @param pos The position. - * @param parseOptions The parse options repesented by bitwise flags of UTimeZoneFormatParseOption. + * @param parseOptions The parse options represented by bitwise flags of UTimeZoneFormatParseOption. * @param timeType The output argument for receiving the time type (standard/daylight/unknown), * or NULL if the information is not necessary. * @return A TimeZone, or null if the input could not be parsed. @@ -636,7 +636,7 @@ class U_I18N_API TimeZoneFormat : public Format { * @stable ICU 50 */ virtual UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, - FieldPosition& pos, UErrorCode& status) const; + FieldPosition& pos, UErrorCode& status) const override; /** * Parse a string to produce an object. This methods handles parsing of @@ -650,7 +650,7 @@ class U_I18N_API TimeZoneFormat : public Format { * delete it when done. * @stable ICU 50 */ - virtual void parseObject(const UnicodeString& source, Formattable& result, ParsePosition& parse_pos) const; + virtual void parseObject(const UnicodeString& source, Formattable& result, ParsePosition& parse_pos) const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -662,7 +662,7 @@ class U_I18N_API TimeZoneFormat : public Format { * ICU "poor man's RTTI", returns a UClassID for the actual class. * @stable ICU 50 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; protected: /** @@ -1058,7 +1058,7 @@ class U_I18N_API TimeZoneFormat : public Format { * Returns the time zone ID of a match at the specified index within * the MatchInfoCollection. * @param matches the collection of matches - * @param idx the index withing matches + * @param idx the index within matches * @param tzID receives the resolved time zone ID * @return a reference to tzID. */ diff --git a/deps/icu-small/source/i18n/unicode/tznames.h b/deps/icu-small/source/i18n/unicode/tznames.h index 19858cd7e2cf6d..b32e9562d5e663 100644 --- a/deps/icu-small/source/i18n/unicode/tznames.h +++ b/deps/icu-small/source/i18n/unicode/tznames.h @@ -142,7 +142,7 @@ class U_I18N_API TimeZoneNames : public UObject { * @return Return true if the given Format objects are semantically equal. * @stable ICU 50 */ - virtual UBool operator==(const TimeZoneNames& other) const = 0; + virtual bool operator==(const TimeZoneNames& other) const = 0; /** * Return true if the given TimeZoneNames objects are not semantically @@ -151,7 +151,7 @@ class U_I18N_API TimeZoneNames : public UObject { * @return Return true if the given Format objects are not semantically equal. * @stable ICU 50 */ - UBool operator!=(const TimeZoneNames& other) const { return !operator==(other); } + bool operator!=(const TimeZoneNames& other) const { return !operator==(other); } /** * Clone this object polymorphically. The caller is responsible diff --git a/deps/icu-small/source/i18n/unicode/tzrule.h b/deps/icu-small/source/i18n/unicode/tzrule.h index 2a983ef58ac448..ab0b97b6fd26fe 100644 --- a/deps/icu-small/source/i18n/unicode/tzrule.h +++ b/deps/icu-small/source/i18n/unicode/tzrule.h @@ -10,7 +10,7 @@ #define TZRULE_H /** - * \file + * \file * \brief C++ API: Time zone rule classes */ @@ -30,7 +30,7 @@ U_NAMESPACE_BEGIN * TimeZoneRule is a class representing a rule for time zone. * TimeZoneRule has a set of time zone attributes, such as zone name, * raw offset (UTC offset for standard time) and daylight saving time offset. - * + * * @stable ICU 3.8 */ class U_I18N_API TimeZoneRule : public UObject { @@ -56,7 +56,7 @@ class U_I18N_API TimeZoneRule : public UObject { * @return true if the given TimeZoneRule objects are semantically equal. * @stable ICU 3.8 */ - virtual UBool operator==(const TimeZoneRule& that) const; + virtual bool operator==(const TimeZoneRule& that) const; /** * Return true if the given TimeZoneRule objects are semantically unequal. Objects @@ -65,7 +65,7 @@ class U_I18N_API TimeZoneRule : public UObject { * @return true if the given TimeZoneRule objects are semantically unequal. * @stable ICU 3.8 */ - virtual UBool operator!=(const TimeZoneRule& that) const; + virtual bool operator!=(const TimeZoneRule& that) const; /** * Fills in "name" with the name of this time zone. @@ -231,7 +231,7 @@ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule { * @return A copy of the object. * @stable ICU 3.8 */ - virtual InitialTimeZoneRule* clone() const; + virtual InitialTimeZoneRule* clone() const override; /** * Assignment operator. @@ -247,7 +247,7 @@ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule { * @return true if the given TimeZoneRule objects are semantically equal. * @stable ICU 3.8 */ - virtual UBool operator==(const TimeZoneRule& that) const; + virtual bool operator==(const TimeZoneRule& that) const override; /** * Return true if the given TimeZoneRule objects are semantically unequal. Objects @@ -256,7 +256,7 @@ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule { * @return true if the given TimeZoneRule objects are semantically unequal. * @stable ICU 3.8 */ - virtual UBool operator!=(const TimeZoneRule& that) const; + virtual bool operator!=(const TimeZoneRule& that) const override; /** * Gets the time when this rule takes effect in the given year. @@ -280,7 +280,7 @@ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule { * @return true if the other TimeZoneRule is equivalent to this one. * @stable ICU 3.8 */ - virtual UBool isEquivalentTo(const TimeZoneRule& that) const; + virtual UBool isEquivalentTo(const TimeZoneRule& that) const override; /** * Gets the very first time when this rule takes effect. @@ -293,7 +293,7 @@ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule { * "result" is unchanged. * @stable ICU 3.8 */ - virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const; + virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const override; /** * Gets the final time when this rule takes effect. @@ -306,7 +306,7 @@ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule { * "result" is unchanged. * @stable ICU 3.8 */ - virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const; + virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const override; /** * Gets the first time when this rule takes effect after the specified time. @@ -323,7 +323,7 @@ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule { * @stable ICU 3.8 */ virtual UBool getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, - UBool inclusive, UDate& result) const; + UBool inclusive, UDate& result) const override; /** * Gets the most recent time when this rule takes effect before the specified time. @@ -340,7 +340,7 @@ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule { * @stable ICU 3.8 */ virtual UBool getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, - UBool inclusive, UDate& result) const; + UBool inclusive, UDate& result) const override; public: /** @@ -367,14 +367,14 @@ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule { * other classes have different class IDs. * @stable ICU 3.8 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; /** * AnnualTimeZoneRule is a class used for representing a time zone * rule which takes effect annually. The calendar system used for the rule is * is based on Gregorian calendar - * + * * @stable ICU 3.8 */ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { @@ -442,7 +442,7 @@ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { * @return A copy of the object. * @stable ICU 3.8 */ - virtual AnnualTimeZoneRule* clone() const; + virtual AnnualTimeZoneRule* clone() const override; /** * Assignment operator. @@ -458,7 +458,7 @@ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { * @return true if the given TimeZoneRule objects are semantically equal. * @stable ICU 3.8 */ - virtual UBool operator==(const TimeZoneRule& that) const; + virtual bool operator==(const TimeZoneRule& that) const override; /** * Return true if the given TimeZoneRule objects are semantically unequal. Objects @@ -467,7 +467,7 @@ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { * @return true if the given TimeZoneRule objects are semantically unequal. * @stable ICU 3.8 */ - virtual UBool operator!=(const TimeZoneRule& that) const; + virtual bool operator!=(const TimeZoneRule& that) const override; /** * Gets the start date/time rule used by this rule. @@ -515,7 +515,7 @@ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { * @return true if the other TimeZoneRule is equivalent to this one. * @stable ICU 3.8 */ - virtual UBool isEquivalentTo(const TimeZoneRule& that) const; + virtual UBool isEquivalentTo(const TimeZoneRule& that) const override; /** * Gets the very first time when this rule takes effect. @@ -528,7 +528,7 @@ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { * "result" is unchanged. * @stable ICU 3.8 */ - virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const; + virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const override; /** * Gets the final time when this rule takes effect. @@ -541,7 +541,7 @@ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { * "result" is unchanged. * @stable ICU 3.8 */ - virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const; + virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const override; /** * Gets the first time when this rule takes effect after the specified time. @@ -558,7 +558,7 @@ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { * @stable ICU 3.8 */ virtual UBool getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, - UBool inclusive, UDate& result) const; + UBool inclusive, UDate& result) const override; /** * Gets the most recent time when this rule takes effect before the specified time. @@ -575,7 +575,7 @@ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { * @stable ICU 3.8 */ virtual UBool getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, - UBool inclusive, UDate& result) const; + UBool inclusive, UDate& result) const override; private: @@ -608,13 +608,13 @@ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { * other classes have different class IDs. * @stable ICU 3.8 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; /** * TimeArrayTimeZoneRule represents a time zone rule whose start times are * defined by an array of milliseconds since the standard base time. - * + * * @stable ICU 3.8 */ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { @@ -658,7 +658,7 @@ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { * @return A copy of the object. * @stable ICU 3.8 */ - virtual TimeArrayTimeZoneRule* clone() const; + virtual TimeArrayTimeZoneRule* clone() const override; /** * Assignment operator. @@ -674,7 +674,7 @@ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { * @return true if the given TimeZoneRule objects are semantically equal. * @stable ICU 3.8 */ - virtual UBool operator==(const TimeZoneRule& that) const; + virtual bool operator==(const TimeZoneRule& that) const override; /** * Return true if the given TimeZoneRule objects are semantically unequal. Objects @@ -683,13 +683,13 @@ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { * @return true if the given TimeZoneRule objects are semantically unequal. * @stable ICU 3.8 */ - virtual UBool operator!=(const TimeZoneRule& that) const; + virtual bool operator!=(const TimeZoneRule& that) const override; /** * Gets the time type of the start times used by this rule. The return value * is either DateTimeRule::WALL_TIME or STANDARD_TIME * or UTC_TIME. - * + * * @return The time type used of the start times used by this rule. * @stable ICU 3.8 */ @@ -721,7 +721,7 @@ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { * @return true if the other TimeZoneRule is equivalent to this one. * @stable ICU 3.8 */ - virtual UBool isEquivalentTo(const TimeZoneRule& that) const; + virtual UBool isEquivalentTo(const TimeZoneRule& that) const override; /** * Gets the very first time when this rule takes effect. @@ -734,7 +734,7 @@ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { * "result" is unchanged. * @stable ICU 3.8 */ - virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const; + virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const override; /** * Gets the final time when this rule takes effect. @@ -747,7 +747,7 @@ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { * "result" is unchanged. * @stable ICU 3.8 */ - virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const; + virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const override; /** * Gets the first time when this rule takes effect after the specified time. @@ -764,7 +764,7 @@ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { * @stable ICU 3.8 */ virtual UBool getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, - UBool inclusive, UDate& result) const; + UBool inclusive, UDate& result) const override; /** * Gets the most recent time when this rule takes effect before the specified time. @@ -781,7 +781,7 @@ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { * @stable ICU 3.8 */ virtual UBool getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, - UBool inclusive, UDate& result) const; + UBool inclusive, UDate& result) const override; private: @@ -819,7 +819,7 @@ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { * other classes have different class IDs. * @stable ICU 3.8 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; diff --git a/deps/icu-small/source/i18n/unicode/tztrans.h b/deps/icu-small/source/i18n/unicode/tztrans.h index e87fea7c3cee7f..5adbeb35e43a66 100644 --- a/deps/icu-small/source/i18n/unicode/tztrans.h +++ b/deps/icu-small/source/i18n/unicode/tztrans.h @@ -10,7 +10,7 @@ #define TZTRANS_H /** - * \file + * \file * \brief C++ API: Time zone transition */ @@ -37,7 +37,7 @@ class U_I18N_API TimeZoneTransition : public UObject { /** * Constructs a TimeZoneTransition with the time and the rules before/after * the transition. - * + * * @param time The time of transition in milliseconds since the base time. * @param from The time zone rule used before the transition. * @param to The time zone rule used after the transition. @@ -86,7 +86,7 @@ class U_I18N_API TimeZoneTransition : public UObject { * @return true if the given TimeZoneTransition objects are semantically equal. * @stable ICU 3.8 */ - UBool operator==(const TimeZoneTransition& that) const; + bool operator==(const TimeZoneTransition& that) const; /** * Return true if the given TimeZoneTransition objects are semantically unequal. Objects @@ -95,7 +95,7 @@ class U_I18N_API TimeZoneTransition : public UObject { * @return true if the given TimeZoneTransition objects are semantically unequal. * @stable ICU 3.8 */ - UBool operator!=(const TimeZoneTransition& that) const; + bool operator!=(const TimeZoneTransition& that) const; /** * Returns the time of transition in milliseconds. @@ -187,7 +187,7 @@ class U_I18N_API TimeZoneTransition : public UObject { * other classes have different class IDs. * @stable ICU 3.8 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/unicode/ucal.h b/deps/icu-small/source/i18n/unicode/ucal.h index 04c4a25de99951..94abae83919a85 100644 --- a/deps/icu-small/source/i18n/unicode/ucal.h +++ b/deps/icu-small/source/i18n/unicode/ucal.h @@ -171,7 +171,7 @@ */ typedef void* UCalendar; -/** Possible types of UCalendars +/** Possible types of UCalendars * @stable ICU 2.0 */ enum UCalendarType { @@ -196,25 +196,25 @@ enum UCalendarType { /** @stable ICU 2.0 */ typedef enum UCalendarType UCalendarType; -/** Possible fields in a UCalendar +/** Possible fields in a UCalendar * @stable ICU 2.0 */ enum UCalendarDateFields { - /** - * Field number indicating the era, e.g., AD or BC in the Gregorian (Julian) calendar. + /** + * Field number indicating the era, e.g., AD or BC in the Gregorian (Julian) calendar. * This is a calendar-specific value. - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_ERA, /** * Field number indicating the year. This is a calendar-specific value. - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_YEAR, /** - * Field number indicating the month. This is a calendar-specific value. + * Field number indicating the month. This is a calendar-specific value. * The first month of the year is * JANUARY; the last depends on the number of months in a year. * @see #UCAL_JANUARY @@ -230,7 +230,7 @@ enum UCalendarDateFields { * @see #UCAL_NOVEMBER * @see #UCAL_DECEMBER * @see #UCAL_UNDECIMBER - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_MONTH, @@ -243,7 +243,7 @@ enum UCalendarDateFields { * the year. * @see ucal_getAttribute * @see ucal_setAttribute - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_WEEK_OF_YEAR, @@ -258,7 +258,7 @@ enum UCalendarDateFields { * @see ucal_setAttribute * @see #UCAL_FIRST_DAY_OF_WEEK * @see #UCAL_MINIMAL_DAYS_IN_FIRST_WEEK - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_WEEK_OF_MONTH, @@ -267,14 +267,14 @@ enum UCalendarDateFields { * day of the month. This is a synonym for DAY_OF_MONTH. * The first day of the month has value 1. * @see #UCAL_DAY_OF_MONTH - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_DATE, /** * Field number indicating the day * number within the current year. The first day of the year has value 1. - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_DAY_OF_YEAR, @@ -290,7 +290,7 @@ enum UCalendarDateFields { * @see #UCAL_THURSDAY * @see #UCAL_FRIDAY * @see #UCAL_SATURDAY - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_DAY_OF_WEEK, @@ -315,7 +315,7 @@ enum UCalendarDateFields { * DAY_OF_WEEK_IN_MONTH 5 and the end of 4. * @see #UCAL_DAY_OF_WEEK * @see #UCAL_WEEK_OF_MONTH - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_DAY_OF_WEEK_IN_MONTH, @@ -326,7 +326,7 @@ enum UCalendarDateFields { * @see #UCAL_AM * @see #UCAL_PM * @see #UCAL_HOUR - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_AM_PM, @@ -337,7 +337,7 @@ enum UCalendarDateFields { * E.g., at 10:04:15.250 PM the HOUR is 10. * @see #UCAL_AM_PM * @see #UCAL_HOUR_OF_DAY - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_HOUR, @@ -346,7 +346,7 @@ enum UCalendarDateFields { * hour of the day. HOUR_OF_DAY is used for the 24-hour clock. * E.g., at 10:04:15.250 PM the HOUR_OF_DAY is 22. * @see #UCAL_HOUR - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_HOUR_OF_DAY, @@ -354,7 +354,7 @@ enum UCalendarDateFields { * Field number indicating the * minute within the hour. * E.g., at 10:04:15.250 PM the UCAL_MINUTE is 4. - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_MINUTE, @@ -362,7 +362,7 @@ enum UCalendarDateFields { * Field number indicating the * second within the minute. * E.g., at 10:04:15.250 PM the UCAL_SECOND is 15. - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_SECOND, @@ -370,26 +370,26 @@ enum UCalendarDateFields { * Field number indicating the * millisecond within the second. * E.g., at 10:04:15.250 PM the UCAL_MILLISECOND is 250. - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_MILLISECOND, /** * Field number indicating the * raw offset from GMT in milliseconds. - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_ZONE_OFFSET, /** * Field number indicating the * daylight savings offset in milliseconds. - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_DST_OFFSET, - + /** - * Field number + * Field number * indicating the extended year corresponding to the * UCAL_WEEK_OF_YEAR field. This may be one greater or less * than the value of UCAL_EXTENDED_YEAR. @@ -398,7 +398,7 @@ enum UCalendarDateFields { UCAL_YEAR_WOY, /** - * Field number + * Field number * indicating the localized day of week. This will be a value from 1 * to 7 inclusive, with 1 being the localized first day of the week. * @stable ICU 2.6 @@ -406,15 +406,15 @@ enum UCalendarDateFields { UCAL_DOW_LOCAL, /** - * Year of this calendar system, encompassing all supra-year fields. For example, + * Year of this calendar system, encompassing all supra-year fields. For example, * in Gregorian/Julian calendars, positive Extended Year values indicate years AD, - * 1 BC = 0 extended, 2 BC = -1 extended, and so on. - * @stable ICU 2.8 + * 1 BC = 0 extended, 2 BC = -1 extended, and so on. + * @stable ICU 2.8 */ UCAL_EXTENDED_YEAR, /** - * Field number + * Field number * indicating the modified Julian day number. This is different from * the conventional Julian day number in two regards. First, it * demarcates days at local zone midnight, rather than noon GMT. @@ -423,13 +423,13 @@ enum UCalendarDateFields { * the date-related fields. * @stable ICU 2.8 */ - UCAL_JULIAN_DAY, + UCAL_JULIAN_DAY, /** - * Ranges from 0 to 23:59:59.999 (regardless of DST). This field behaves exactly - * like a composite of all time-related fields, not including the zone fields. As such, + * Ranges from 0 to 23:59:59.999 (regardless of DST). This field behaves exactly + * like a composite of all time-related fields, not including the zone fields. As such, * it also reflects discontinuities of those fields on DST transition days. On a day - * of DST onset, it will jump forward. On a day of DST cessation, it will jump + * of DST onset, it will jump forward. On a day of DST cessation, it will jump * backward. This reflects the fact that it must be combined with the DST_OFFSET field * to obtain a unique local time value. * @stable ICU 2.8 @@ -470,7 +470,7 @@ typedef enum UCalendarDateFields UCalendarDateFields; * who create locale resources for the field of first-day-of-week should be aware of * this. For instance, in US locale, first-day-of-week is set to 1, i.e., UCAL_SUNDAY. */ -/** Possible days of the week in a UCalendar +/** Possible days of the week in a UCalendar * @stable ICU 2.0 */ enum UCalendarDaysOfWeek { @@ -531,7 +531,7 @@ enum UCalendarMonths { /** @stable ICU 2.0 */ typedef enum UCalendarMonths UCalendarMonths; -/** Possible AM/PM values in a UCalendar +/** Possible AM/PM values in a UCalendar * @stable ICU 2.0 */ enum UCalendarAMPMs { @@ -571,13 +571,13 @@ enum USystemTimeZoneType { /** @stable ICU 4.8 */ typedef enum USystemTimeZoneType USystemTimeZoneType; -/** +/** * Create an enumeration over system time zone IDs with the given - * filter conditions. + * filter conditions. * @param zoneType The system time zone type. * @param region The ISO 3166 two-letter country code or UN M.49 * three-digit area code. When NULL, no filtering - * done by region. + * done by region. * @param rawOffset An offset from GMT in milliseconds, ignoring the * effect of daylight savings time, if any. When NULL, * no filtering done by zone offset. @@ -586,7 +586,7 @@ typedef enum USystemTimeZoneType USystemTimeZoneType; * using enum_close(), or NULL upon failure. In case of failure, * *ec will indicate the error. * @stable ICU 4.8 - */ + */ U_CAPI UEnumeration* U_EXPORT2 ucal_openTimeZoneIDEnumeration(USystemTimeZoneType zoneType, const char* region, const int32_t* rawOffset, UErrorCode* ec); @@ -630,7 +630,7 @@ ucal_openCountryTimeZones(const char* country, UErrorCode* ec); * routines fail, or if they specify a TimeZone or TimeZone offset * which is not recognized, then the special TimeZone "Etc/Unknown" * is returned. - * + * * The default may be changed with `ucal_setDefaultTimeZone()` or with * the C++ TimeZone API, `TimeZone::adoptDefault(TimeZone*)`. * @@ -642,9 +642,9 @@ ucal_openCountryTimeZones(const char* country, UErrorCode* ec); * * @return The result string length, not including the terminating * null - * + * * @see #UCAL_UNKNOWN_ZONE_ID - * + * * @stable ICU 2.6 */ U_CAPI int32_t U_EXPORT2 @@ -668,27 +668,27 @@ ucal_setDefaultTimeZone(const UChar* zoneID, UErrorCode* ec); * system. If the host system detection routines fail, or if they specify * a TimeZone or TimeZone offset which is not recognized, then the special * TimeZone "Etc/Unknown" is returned. - * + * * Note that host time zone and the ICU default time zone can be different. - * + * * The ICU default time zone does not change once initialized unless modified * by calling `ucal_setDefaultTimeZone()` or with the C++ TimeZone API, * `TimeZone::adoptDefault(TimeZone*)`. - * + * * If the host operating system configuration has changed since ICU has * initialized then the returned value can be different than the ICU default * time zone, even if the default has not changed. * *

    This function is not thread safe.

    - * + * * @param result A buffer to receive the result, or NULL * @param resultCapacity The capacity of the result buffer * @param ec input/output error code * @return The result string length, not including the terminating * null - * + * * @see #UCAL_UNKNOWN_ZONE_ID - * + * * @stable ICU 65 */ U_CAPI int32_t U_EXPORT2 @@ -719,7 +719,7 @@ ucal_getDSTSavings(const UChar* zoneID, UErrorCode* ec); * @return The current date and time. * @stable ICU 2.0 */ -U_CAPI UDate U_EXPORT2 +U_CAPI UDate U_EXPORT2 ucal_getNow(void); /** @@ -731,7 +731,7 @@ ucal_getNow(void); * the UCalendar returned by the function is initialized with GMT zone with TimeZone ID * UCAL_UNKNOWN_ZONE_ID ("Etc/Unknown") without any errors/warnings. If you want * to check if a TimeZone ID is valid prior to this function, use ucal_getCanonicalTimeZoneID. - * + * * @param zoneID The desired TimeZone ID. If 0, use the default time zone. * @param len The length of zoneID, or -1 if null-terminated. * @param locale The desired locale @@ -745,7 +745,7 @@ ucal_getNow(void); * @see #UCAL_UNKNOWN_ZONE_ID * @stable ICU 2.0 */ -U_CAPI UCalendar* U_EXPORT2 +U_CAPI UCalendar* U_EXPORT2 ucal_open(const UChar* zoneID, int32_t len, const char* locale, @@ -758,7 +758,7 @@ ucal_open(const UChar* zoneID, * @param cal The UCalendar to close. * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_close(UCalendar *cal); #if U_SHOW_CPLUSPLUS_API @@ -788,7 +788,7 @@ U_NAMESPACE_END * @return A pointer to a UCalendar identical to cal. * @stable ICU 4.0 */ -U_CAPI UCalendar* U_EXPORT2 +U_CAPI UCalendar* U_EXPORT2 ucal_clone(const UCalendar* cal, UErrorCode* status); @@ -801,30 +801,30 @@ ucal_clone(const UCalendar* cal, * @param status A pointer to an UErrorCode to receive any errors. * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_setTimeZone(UCalendar* cal, const UChar* zoneID, int32_t len, UErrorCode* status); -/** - * Get the ID of the UCalendar's time zone. - * - * @param cal The UCalendar to query. - * @param result Receives the UCalendar's time zone ID. - * @param resultLength The maximum size of result. - * @param status Receives the status. - * @return The total buffer size needed; if greater than resultLength, the output was truncated. - * @stable ICU 51 - */ -U_CAPI int32_t U_EXPORT2 +/** + * Get the ID of the UCalendar's time zone. + * + * @param cal The UCalendar to query. + * @param result Receives the UCalendar's time zone ID. + * @param resultLength The maximum size of result. + * @param status Receives the status. + * @return The total buffer size needed; if greater than resultLength, the output was truncated. + * @stable ICU 51 + */ +U_CAPI int32_t U_EXPORT2 ucal_getTimeZoneID(const UCalendar *cal, UChar *result, int32_t resultLength, UErrorCode *status); /** - * Possible formats for a UCalendar's display name + * Possible formats for a UCalendar's display name * @stable ICU 2.0 */ enum UCalendarDisplayNameType { @@ -854,7 +854,7 @@ typedef enum UCalendarDisplayNameType UCalendarDisplayNameType; * @return The total buffer size needed; if greater than resultLength, the output was truncated. * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucal_getTimeZoneDisplayName(const UCalendar* cal, UCalendarDisplayNameType type, const char* locale, @@ -870,7 +870,7 @@ ucal_getTimeZoneDisplayName(const UCalendar* cal, * @return true if cal is currently in daylight savings time, false otherwise * @stable ICU 2.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 ucal_inDaylightTime(const UCalendar* cal, UErrorCode* status ); @@ -921,7 +921,7 @@ U_CAPI UDate U_EXPORT2 ucal_getGregorianChange(const UCalendar *cal, UErrorCode *pErrorCode); /** - * Types of UCalendar attributes + * Types of UCalendar attributes * @stable ICU 2.0 */ enum UCalendarAttribute { @@ -998,7 +998,7 @@ typedef enum UCalendarWallTimeOption UCalendarWallTimeOption; * @see ucal_setAttribute * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucal_getAttribute(const UCalendar* cal, UCalendarAttribute attr); @@ -1013,7 +1013,7 @@ ucal_getAttribute(const UCalendar* cal, * @see ucal_getAttribute * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_setAttribute(UCalendar* cal, UCalendarAttribute attr, int32_t newValue); @@ -1027,7 +1027,7 @@ ucal_setAttribute(UCalendar* cal, * @see ucal_countAvailable * @stable ICU 2.0 */ -U_CAPI const char* U_EXPORT2 +U_CAPI const char* U_EXPORT2 ucal_getAvailable(int32_t localeIndex); /** @@ -1038,7 +1038,7 @@ ucal_getAvailable(int32_t localeIndex); * @see ucal_getAvailable * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucal_countAvailable(void); /** @@ -1052,7 +1052,7 @@ ucal_countAvailable(void); * @see ucal_setDateTime * @stable ICU 2.0 */ -U_CAPI UDate U_EXPORT2 +U_CAPI UDate U_EXPORT2 ucal_getMillis(const UCalendar* cal, UErrorCode* status); @@ -1067,7 +1067,7 @@ ucal_getMillis(const UCalendar* cal, * @see ucal_setDateTime * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_setMillis(UCalendar* cal, UDate dateTime, UErrorCode* status ); @@ -1086,7 +1086,7 @@ ucal_setMillis(UCalendar* cal, * @see ucal_setDateTime * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_setDate(UCalendar* cal, int32_t year, int32_t month, @@ -1110,7 +1110,7 @@ ucal_setDate(UCalendar* cal, * @see ucal_setDate * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_setDateTime(UCalendar* cal, int32_t year, int32_t month, @@ -1129,7 +1129,7 @@ ucal_setDateTime(UCalendar* cal, * @return true if cal1 and cal2 are equivalent, false otherwise. * @stable ICU 2.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 ucal_equivalentTo(const UCalendar* cal1, const UCalendar* cal2); @@ -1151,7 +1151,7 @@ ucal_equivalentTo(const UCalendar* cal1, * @see ucal_roll * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_add(UCalendar* cal, UCalendarDateFields field, int32_t amount, @@ -1181,7 +1181,7 @@ ucal_add(UCalendar* cal, * @see ucal_add * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_roll(UCalendar* cal, UCalendarDateFields field, int32_t amount, @@ -1203,7 +1203,7 @@ ucal_roll(UCalendar* cal, * @see ucal_clear * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucal_get(const UCalendar* cal, UCalendarDateFields field, UErrorCode* status ); @@ -1223,7 +1223,7 @@ ucal_get(const UCalendar* cal, * @see ucal_clear * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_set(UCalendar* cal, UCalendarDateFields field, int32_t value); @@ -1243,7 +1243,7 @@ ucal_set(UCalendar* cal, * @see ucal_clear * @stable ICU 2.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 ucal_isSet(const UCalendar* cal, UCalendarDateFields field); @@ -1261,7 +1261,7 @@ ucal_isSet(const UCalendar* cal, * @see ucal_clear * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_clearField(UCalendar* cal, UCalendarDateFields field); @@ -1275,11 +1275,11 @@ ucal_clearField(UCalendar* cal, * @see ucal_clearField * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_clear(UCalendar* calendar); /** - * Possible limit values for a UCalendar + * Possible limit values for a UCalendar * @stable ICU 2.0 */ enum UCalendarLimitType { @@ -1289,7 +1289,7 @@ enum UCalendarLimitType { UCAL_MAXIMUM, /** Greatest minimum value */ UCAL_GREATEST_MINIMUM, - /** Leaest maximum value */ + /** Least maximum value */ UCAL_LEAST_MAXIMUM, /** Actual minimum value */ UCAL_ACTUAL_MINIMUM, @@ -1314,7 +1314,7 @@ typedef enum UCalendarLimitType UCalendarLimitType; * @return The requested value. * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucal_getLimit(const UCalendar* cal, UCalendarDateFields field, UCalendarLimitType type, @@ -1322,7 +1322,7 @@ ucal_getLimit(const UCalendar* cal, /** Get the locale for this calendar object. You can choose between valid and actual locale. * @param cal The calendar object - * @param type type of the locale we're looking for (valid or actual) + * @param type type of the locale we're looking for (valid or actual) * @param status error code for the operation * @return the locale name * @stable ICU 2.8 @@ -1399,24 +1399,24 @@ ucal_getKeywordValuesForLocale(const char* key, enum UCalendarWeekdayType { /** * Designates a full weekday (no part of the day is included in the weekend). - * @stable ICU 4.4 + * @stable ICU 4.4 */ UCAL_WEEKDAY, /** * Designates a full weekend day (the entire day is included in the weekend). - * @stable ICU 4.4 + * @stable ICU 4.4 */ UCAL_WEEKEND, /** * Designates a day that starts as a weekday and transitions to the weekend. * Call ucal_getWeekendTransition() to get the time of transition. - * @stable ICU 4.4 + * @stable ICU 4.4 */ UCAL_WEEKEND_ONSET, /** * Designates a day that starts as the weekend and transitions to a weekday. * Call ucal_getWeekendTransition() to get the time of transition. - * @stable ICU 4.4 + * @stable ICU 4.4 */ UCAL_WEEKEND_CEASE }; @@ -1488,7 +1488,7 @@ ucal_isWeekend(const UCalendar *cal, UDate date, UErrorCode *status); * * A typical way of using this function is to call it first with the largest field of interest, then * with progressively smaller fields. - * + * * @param cal The UCalendar to compare and update. * @param target The target date to compare to the current calendar setting. * @param field The field to compare; one of UCAL_ERA, UCAL_YEAR, UCAL_MONTH, @@ -1499,7 +1499,7 @@ ucal_isWeekend(const UCalendar *cal, UDate date, UErrorCode *status); * @return The date difference for the specified field. * @stable ICU 4.8 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucal_getFieldDifference(UCalendar* cal, UDate target, UCalendarDateFields field, @@ -1553,7 +1553,7 @@ typedef enum UTimeZoneTransitionType UTimeZoneTransitionType; /**< @stable ICU 5 * otherwise. * @stable ICU 50 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 ucal_getTimeZoneTransitionDate(const UCalendar* cal, UTimeZoneTransitionType type, UDate* transition, UErrorCode* status); diff --git a/deps/icu-small/source/i18n/unicode/ucol.h b/deps/icu-small/source/i18n/unicode/ucol.h index 6122cc1d59cbf3..6d22eb6069ec87 100644 --- a/deps/icu-small/source/i18n/unicode/ucol.h +++ b/deps/icu-small/source/i18n/unicode/ucol.h @@ -26,7 +26,7 @@ /** * \file - * \brief C API: Collator + * \brief C API: Collator * *

    Collator C API

    * @@ -34,12 +34,12 @@ * string comparison. You use this service to build * searching and sorting routines for natural language text. *

    - * For more information about the collation service see + * For more information about the collation service see * the User Guide. *

    - * Collation service provides correct sorting orders for most locales supported in ICU. + * Collation service provides correct sorting orders for most locales supported in ICU. * If specific data for a locale is not available, the orders eventually falls back - * to the CLDR root sort order. + * to the CLDR root sort order. *

    * Sort ordering may be customized by providing your own set of rules. For more on * this subject see the @@ -55,7 +55,7 @@ * For usage in C programs. */ struct UCollator; -/** structure representing a collator object instance +/** structure representing a collator object instance * @stable ICU 2.0 */ typedef struct UCollator UCollator; @@ -70,7 +70,7 @@ typedef struct UCollator UCollator; * target string in the ucol_strcoll() method. * @see ucol_strcoll() *

    - * Possible values for a comparison result + * Possible values for a comparison result * @stable ICU 2.0 */ typedef enum { @@ -85,8 +85,8 @@ typedef enum { /** Enum containing attribute values for controlling collation behavior. * Here are all the allowable values. Not every attribute can take every value. The only - * universal value is UCOL_DEFAULT, which resets the attribute value to the predefined - * value for that locale + * universal value is UCOL_DEFAULT, which resets the attribute value to the predefined + * value for that locale * @stable ICU 2.0 */ typedef enum { @@ -108,21 +108,21 @@ typedef enum { UCOL_IDENTICAL=15, UCOL_STRENGTH_LIMIT, - /** Turn the feature off - works for UCOL_FRENCH_COLLATION, + /** Turn the feature off - works for UCOL_FRENCH_COLLATION, UCOL_CASE_LEVEL, UCOL_HIRAGANA_QUATERNARY_MODE & UCOL_DECOMPOSITION_MODE*/ UCOL_OFF = 16, - /** Turn the feature on - works for UCOL_FRENCH_COLLATION, + /** Turn the feature on - works for UCOL_FRENCH_COLLATION, UCOL_CASE_LEVEL, UCOL_HIRAGANA_QUATERNARY_MODE & UCOL_DECOMPOSITION_MODE*/ UCOL_ON = 17, - + /** Valid for UCOL_ALTERNATE_HANDLING. Alternate handling will be shifted */ UCOL_SHIFTED = 20, /** Valid for UCOL_ALTERNATE_HANDLING. Alternate handling will be non ignorable */ UCOL_NON_IGNORABLE = 21, - /** Valid for UCOL_CASE_FIRST - + /** Valid for UCOL_CASE_FIRST - lower case sorts before upper case */ UCOL_LOWER_FIRST = 24, /** upper case sorts before lower case */ @@ -151,55 +151,55 @@ typedef enum { * A special reordering code that is used to specify the default * reordering codes for a locale. * @stable ICU 4.8 - */ + */ UCOL_REORDER_CODE_DEFAULT = -1, /** * A special reordering code that is used to specify no reordering codes. * @stable ICU 4.8 - */ + */ UCOL_REORDER_CODE_NONE = USCRIPT_UNKNOWN, /** * A special reordering code that is used to specify all other codes used for * reordering except for the codes lised as UColReorderCode values and those * listed explicitly in a reordering. * @stable ICU 4.8 - */ + */ UCOL_REORDER_CODE_OTHERS = USCRIPT_UNKNOWN, /** * Characters with the space property. * This is equivalent to the rule value "space". * @stable ICU 4.8 - */ + */ UCOL_REORDER_CODE_SPACE = 0x1000, /** * The first entry in the enumeration of reordering groups. This is intended for use in * range checking and enumeration of the reorder codes. * @stable ICU 4.8 - */ + */ UCOL_REORDER_CODE_FIRST = UCOL_REORDER_CODE_SPACE, /** * Characters with the punctuation property. * This is equivalent to the rule value "punct". * @stable ICU 4.8 - */ + */ UCOL_REORDER_CODE_PUNCTUATION = 0x1001, /** * Characters with the symbol property. * This is equivalent to the rule value "symbol". * @stable ICU 4.8 - */ + */ UCOL_REORDER_CODE_SYMBOL = 0x1002, /** * Characters with the currency property. * This is equivalent to the rule value "currency". * @stable ICU 4.8 - */ + */ UCOL_REORDER_CODE_CURRENCY = 0x1003, /** * Characters with the digit property. * This is equivalent to the rule value "digit". * @stable ICU 4.8 - */ + */ UCOL_REORDER_CODE_DIGIT = 0x1004, #ifndef U_HIDE_DEPRECATED_API /** @@ -215,7 +215,7 @@ typedef enum { * level to UCOL_PRIMARY to ignore secondary and tertiary differences. * Use this to set the strength of a Collator object. * Example of primary difference, "abc" < "abd" - * + * * Diacritical differences on the same base letter represent a secondary * difference. Set comparison level to UCOL_SECONDARY to ignore tertiary * differences. Use this to set the strength of a Collator object. @@ -231,7 +231,7 @@ typedef enum { * unicode spellings. UCOL_IDENTICAL. * For example, "ä" == "ä". * - * UCollationStrength is also used to determine the strength of sort keys + * UCollationStrength is also used to determine the strength of sort keys * generated from UCollator objects * These values can be now found in the UColAttributeValue enum. * @stable ICU 2.0 @@ -239,7 +239,7 @@ typedef enum { typedef UColAttributeValue UCollationStrength; /** Attributes that collation service understands. All the attributes can take UCOL_DEFAULT - * value, as well as the values specific to each one. + * value, as well as the values specific to each one. * @stable ICU 2.0 */ typedef enum { @@ -249,32 +249,32 @@ typedef enum { * weights in the order they appear. * @stable ICU 2.0 */ - UCOL_FRENCH_COLLATION, + UCOL_FRENCH_COLLATION, /** Attribute for handling variable elements. * Acceptable values are UCOL_NON_IGNORABLE (default) - * which treats all the codepoints with non-ignorable + * which treats all the codepoints with non-ignorable * primary weights in the same way, - * and UCOL_SHIFTED which causes codepoints with primary + * and UCOL_SHIFTED which causes codepoints with primary * weights that are equal or below the variable top value - * to be ignored on primary level and moved to the quaternary + * to be ignored on primary level and moved to the quaternary * level. * @stable ICU 2.0 */ - UCOL_ALTERNATE_HANDLING, + UCOL_ALTERNATE_HANDLING, /** Controls the ordering of upper and lower case letters. * Acceptable values are UCOL_OFF (default), which orders * upper and lower case letters in accordance to their tertiary - * weights, UCOL_UPPER_FIRST which forces upper case letters to - * sort before lower case letters, and UCOL_LOWER_FIRST which does + * weights, UCOL_UPPER_FIRST which forces upper case letters to + * sort before lower case letters, and UCOL_LOWER_FIRST which does * the opposite. * @stable ICU 2.0 */ - UCOL_CASE_FIRST, + UCOL_CASE_FIRST, /** Controls whether an extra case level (positioned before the third - * level) is generated or not. Acceptable values are UCOL_OFF (default), + * level) is generated or not. Acceptable values are UCOL_OFF (default), * when case level is not generated, and UCOL_ON which causes the case * level to be generated. Contents of the case level are affected by - * the value of UCOL_CASE_FIRST attribute. A simple way to ignore + * the value of UCOL_CASE_FIRST attribute. A simple way to ignore * accent differences in a string is to set the strength to UCOL_PRIMARY * and enable case level. * @stable ICU 2.0 @@ -282,14 +282,14 @@ typedef enum { UCOL_CASE_LEVEL, /** Controls whether the normalization check and necessary normalizations * are performed. When set to UCOL_OFF (default) no normalization check - * is performed. The correctness of the result is guaranteed only if the + * is performed. The correctness of the result is guaranteed only if the * input data is in so-called FCD form (see users manual for more info). * When set to UCOL_ON, an incremental check is performed to see whether * the input data is in the FCD form. If the data is not in the FCD form, * incremental NFD normalization is performed. * @stable ICU 2.0 */ - UCOL_NORMALIZATION_MODE, + UCOL_NORMALIZATION_MODE, /** An alias for UCOL_NORMALIZATION_MODE attribute. * @stable ICU 2.0 */ @@ -298,7 +298,7 @@ typedef enum { * UCOL_TERTIARY, UCOL_QUATERNARY or UCOL_IDENTICAL. The usual strength * for most locales (except Japanese) is tertiary. * - * Quaternary strength + * Quaternary strength * is useful when combined with shifted setting for alternate handling * attribute and for JIS X 4061 collation, when it is used to distinguish * between Katakana and Hiragana. @@ -306,13 +306,13 @@ typedef enum { * is affected only by the number of non-ignorable code points in * the string. * - * Identical strength is rarely useful, as it amounts + * Identical strength is rarely useful, as it amounts * to codepoints of the NFD form of the string. * @stable ICU 2.0 */ - UCOL_STRENGTH, + UCOL_STRENGTH, #ifndef U_HIDE_DEPRECATED_API - /** When turned on, this attribute positions Hiragana before all + /** When turned on, this attribute positions Hiragana before all * non-ignorables on quaternary level This is a sneaky way to produce JIS * sort order. * @@ -343,7 +343,7 @@ typedef enum { * * @stable ICU 2.8 */ - UCOL_NUMERIC_COLLATION = UCOL_STRENGTH + 2, + UCOL_NUMERIC_COLLATION = UCOL_STRENGTH + 2, /* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API, * it is needed for layout of RuleBasedCollator object. */ @@ -356,7 +356,7 @@ typedef enum { #endif // U_FORCE_HIDE_DEPRECATED_API } UColAttribute; -/** Options for retrieving the rule string +/** Options for retrieving the rule string * @stable ICU 2.0 */ typedef enum { @@ -365,7 +365,7 @@ typedef enum { * Same as calling the version of getRules() without UColRuleOption. * @stable ICU 2.0 */ - UCOL_TAILORING_ONLY, + UCOL_TAILORING_ONLY, /** * Retrieves the "UCA rules" concatenated with the tailoring rules. * The "UCA rules" are an approximation of the root collator's sort order. @@ -373,7 +373,7 @@ typedef enum { * See https://unicode-org.github.io/icu/userguide/collation/customization#building-on-existing-locales * @stable ICU 2.0 */ - UCOL_FULL_RULES + UCOL_FULL_RULES } UColRuleOption ; /** @@ -386,11 +386,11 @@ typedef enum { * or in language tag syntax ("el-u-kf-upper"). * See User Guide: Collation API. * - * The UCollator pointer is used in all the calls to the Collation + * The UCollator pointer is used in all the calls to the Collation * service. After finished, collator must be disposed of by calling * {@link #ucol_close }. - * @param loc The locale containing the required collation rules. - * Special values for locales can be passed in - + * @param loc The locale containing the required collation rules. + * Special values for locales can be passed in - * if NULL is passed for the locale, the default locale * collation rules will be used. If empty string ("") or * "root" are passed, the root collator will be returned. @@ -401,7 +401,7 @@ typedef enum { * @see ucol_close * @stable ICU 2.0 */ -U_CAPI UCollator* U_EXPORT2 +U_CAPI UCollator* U_EXPORT2 ucol_open(const char *loc, UErrorCode *status); /** @@ -418,7 +418,7 @@ ucol_open(const char *loc, UErrorCode *status); * UCOL_DEFAULT (set the mode according to the rules) * @param strength The default collation strength; one of UCOL_PRIMARY, UCOL_SECONDARY, * UCOL_TERTIARY, UCOL_IDENTICAL,UCOL_DEFAULT_STRENGTH - can be also set in the rules. - * @param parseError A pointer to UParseError to recieve information about errors + * @param parseError A pointer to UParseError to receive information about errors * occurred during parsing. This argument can currently be set * to NULL, but at users own risk. Please provide a real structure. * @param status A pointer to a UErrorCode to receive any errors @@ -429,7 +429,7 @@ ucol_open(const char *loc, UErrorCode *status); * @see ucol_close * @stable ICU 2.0 */ -U_CAPI UCollator* U_EXPORT2 +U_CAPI UCollator* U_EXPORT2 ucol_openRules( const UChar *rules, int32_t rulesLength, UColAttributeValue normalizationMode, @@ -438,31 +438,31 @@ ucol_openRules( const UChar *rules, UErrorCode *status); #ifndef U_HIDE_DEPRECATED_API -/** +/** * Open a collator defined by a short form string. * The structure and the syntax of the string is defined in the "Naming collators" - * section of the users guide: + * section of the users guide: * https://unicode-org.github.io/icu/userguide/collation/concepts#collator-naming-scheme - * Attributes are overriden by the subsequent attributes. So, for "S2_S3", final + * Attributes are overridden by the subsequent attributes. So, for "S2_S3", final * strength will be 3. 3066bis locale overrides individual locale parts. - * The call to this function is equivalent to a call to ucol_open, followed by a + * The call to this function is equivalent to a call to ucol_open, followed by a * series of calls to ucol_setAttribute and ucol_setVariableTop. - * @param definition A short string containing a locale and a set of attributes. + * @param definition A short string containing a locale and a set of attributes. * Attributes not explicitly mentioned are left at the default * state for a locale. * @param parseError if not NULL, structure that will get filled with error's pre * and post context in case of error. - * @param forceDefaults if false, the settings that are the same as the collator + * @param forceDefaults if false, the settings that are the same as the collator * default settings will not be applied (for example, setting - * French secondary on a French collator would not be executed). - * If true, all the settings will be applied regardless of the + * French secondary on a French collator would not be executed). + * If true, all the settings will be applied regardless of the * collator default value. If the definition * strings are to be cached, should be set to false. - * @param status Error code. Apart from regular error conditions connected to + * @param status Error code. Apart from regular error conditions connected to * instantiating collators (like out of memory or similar), this * API will return an error if an invalid attribute or attribute/value * combination is specified. - * @return A pointer to a UCollator or 0 if an error occured (including an + * @return A pointer to a UCollator or 0 if an error occurred (including an * invalid attribute). * @see ucol_open * @see ucol_setAttribute @@ -482,11 +482,11 @@ ucol_openFromShortString( const char *definition, /** * Get a set containing the contractions defined by the collator. The set includes * both the root collator's contractions and the contractions defined by the collator. This set - * will contain only strings. If a tailoring explicitly suppresses contractions from + * will contain only strings. If a tailoring explicitly suppresses contractions from * the root collator (like Russian), removed contractions will not be in the resulting set. - * @param coll collator + * @param coll collator * @param conts the set to hold the result. It gets emptied before - * contractions are added. + * contractions are added. * @param status to hold the error code * @return the size of the contraction set * @@ -514,7 +514,7 @@ ucol_getContractionsAndExpansions( const UCollator *coll, USet *contractions, USet *expansions, UBool addPrefixes, UErrorCode *status); -/** +/** * Close a UCollator. * Once closed, a UCollator should not be used. Every open collator should * be closed. Otherwise, a memory leak will result. @@ -524,7 +524,7 @@ ucol_getContractionsAndExpansions( const UCollator *coll, * @see ucol_safeClone * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucol_close(UCollator *coll); #if U_SHOW_CPLUSPLUS_API @@ -561,31 +561,31 @@ U_NAMESPACE_END * @see ucol_equal * @stable ICU 2.0 */ -U_CAPI UCollationResult U_EXPORT2 +U_CAPI UCollationResult U_EXPORT2 ucol_strcoll( const UCollator *coll, const UChar *source, int32_t sourceLength, const UChar *target, int32_t targetLength); -/** -* Compare two strings in UTF-8. -* The strings will be compared using the options already specified. -* Note: When input string contains malformed a UTF-8 byte sequence, +/** +* Compare two strings in UTF-8. +* The strings will be compared using the options already specified. +* Note: When input string contains malformed a UTF-8 byte sequence, * this function treats these bytes as REPLACEMENT CHARACTER (U+FFFD). -* @param coll The UCollator containing the comparison rules. -* @param source The source UTF-8 string. -* @param sourceLength The length of source, or -1 if null-terminated. -* @param target The target UTF-8 string. -* @param targetLength The length of target, or -1 if null-terminated. -* @param status A pointer to a UErrorCode to receive any errors -* @return The result of comparing the strings; one of UCOL_EQUAL, -* UCOL_GREATER, UCOL_LESS -* @see ucol_greater -* @see ucol_greaterOrEqual -* @see ucol_equal -* @stable ICU 50 -*/ +* @param coll The UCollator containing the comparison rules. +* @param source The source UTF-8 string. +* @param sourceLength The length of source, or -1 if null-terminated. +* @param target The target UTF-8 string. +* @param targetLength The length of target, or -1 if null-terminated. +* @param status A pointer to a UErrorCode to receive any errors +* @return The result of comparing the strings; one of UCOL_EQUAL, +* UCOL_GREATER, UCOL_LESS +* @see ucol_greater +* @see ucol_greaterOrEqual +* @see ucol_equal +* @stable ICU 50 +*/ U_CAPI UCollationResult U_EXPORT2 ucol_strcollUTF8( const UCollator *coll, @@ -609,7 +609,7 @@ ucol_strcollUTF8( * @see ucol_equal * @stable ICU 2.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 ucol_greater(const UCollator *coll, const UChar *source, int32_t sourceLength, const UChar *target, int32_t targetLength); @@ -628,7 +628,7 @@ ucol_greater(const UCollator *coll, * @see ucol_equal * @stable ICU 2.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 ucol_greaterOrEqual(const UCollator *coll, const UChar *source, int32_t sourceLength, const UChar *target, int32_t targetLength); @@ -647,13 +647,13 @@ ucol_greaterOrEqual(const UCollator *coll, * @see ucol_greaterOrEqual * @stable ICU 2.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 ucol_equal(const UCollator *coll, const UChar *source, int32_t sourceLength, const UChar *target, int32_t targetLength); /** - * Compare two UTF-8 encoded trings. + * Compare two UTF-8 encoded strings. * The strings will be compared using the options already specified. * @param coll The UCollator containing the comparison rules. * @param sIter The source string iterator. @@ -664,7 +664,7 @@ ucol_equal(const UCollator *coll, * @see ucol_strcoll * @stable ICU 2.6 */ -U_CAPI UCollationResult U_EXPORT2 +U_CAPI UCollationResult U_EXPORT2 ucol_strcollIter( const UCollator *coll, UCharIterator *sIter, UCharIterator *tIter, @@ -679,19 +679,19 @@ ucol_strcollIter( const UCollator *coll, * @see ucol_setStrength * @stable ICU 2.0 */ -U_CAPI UCollationStrength U_EXPORT2 +U_CAPI UCollationStrength U_EXPORT2 ucol_getStrength(const UCollator *coll); /** * Set the collation strength used in a UCollator. * The strength influences how strings are compared. * @param coll The UCollator to set. - * @param strength The desired collation strength; one of UCOL_PRIMARY, + * @param strength The desired collation strength; one of UCOL_PRIMARY, * UCOL_SECONDARY, UCOL_TERTIARY, UCOL_QUATERNARY, UCOL_IDENTICAL, UCOL_DEFAULT * @see ucol_getStrength * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucol_setStrength(UCollator *coll, UCollationStrength strength); @@ -700,9 +700,9 @@ ucol_setStrength(UCollator *coll, * These reordering codes are a combination of UScript codes and UColReorderCode entries. * @param coll The UCollator to query. * @param dest The array to fill with the script ordering. - * @param destCapacity The length of dest. If it is 0, then dest may be NULL and the function + * @param destCapacity The length of dest. If it is 0, then dest may be NULL and the function * will only return the length of the result without writing any codes (pre-flighting). - * @param pErrorCode Must be a valid pointer to an error code value, which must not indicate a + * @param pErrorCode Must be a valid pointer to an error code value, which must not indicate a * failure before the function call. * @return The number of reordering codes written to the dest array. * @see ucol_setReorderCodes @@ -711,41 +711,41 @@ ucol_setStrength(UCollator *coll, * @see UColReorderCode * @stable ICU 4.8 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_getReorderCodes(const UCollator* coll, int32_t* dest, int32_t destCapacity, UErrorCode *pErrorCode); -/** +/** * Sets the reordering codes for this collator. * Collation reordering allows scripts and some other groups of characters * to be moved relative to each other. This reordering is done on top of - * the DUCET/CLDR standard collation order. Reordering can specify groups to be placed + * the DUCET/CLDR standard collation order. Reordering can specify groups to be placed * at the start and/or the end of the collation order. These groups are specified using * UScript codes and UColReorderCode entries. * - *

    By default, reordering codes specified for the start of the order are placed in the + *

    By default, reordering codes specified for the start of the order are placed in the * order given after several special non-script blocks. These special groups of characters * are space, punctuation, symbol, currency, and digit. These special groups are represented with - * UColReorderCode entries. Script groups can be intermingled with + * UColReorderCode entries. Script groups can be intermingled with * these special non-script groups if those special groups are explicitly specified in the reordering. * - *

    The special code OTHERS stands for any script that is not explicitly + *

    The special code OTHERS stands for any script that is not explicitly * mentioned in the list of reordering codes given. Anything that is after OTHERS * will go at the very end of the reordering in the order given. * *

    The special reorder code DEFAULT will reset the reordering for this collator * to the default for this collator. The default reordering may be the DUCET/CLDR order or may be a reordering that - * was specified when this collator was created from resource data or from rules. The + * was specified when this collator was created from resource data or from rules. The * DEFAULT code must be the sole code supplied when it is used. * If not, then U_ILLEGAL_ARGUMENT_ERROR will be set. * *

    The special reorder code NONE will remove any reordering for this collator. - * The result of setting no reordering will be to have the DUCET/CLDR ordering used. The + * The result of setting no reordering will be to have the DUCET/CLDR ordering used. The * NONE code must be the sole code supplied when it is used. * * @param coll The UCollator to set. - * @param reorderCodes An array of script codes in the new order. This can be NULL if the + * @param reorderCodes An array of script codes in the new order. This can be NULL if the * length is also set to 0. An empty array will clear any reordering codes on the collator. * @param reorderCodesLength The length of reorderCodes. * @param pErrorCode Must be a valid pointer to an error code value, which must not indicate a @@ -755,8 +755,8 @@ ucol_getReorderCodes(const UCollator* coll, * @see UScriptCode * @see UColReorderCode * @stable ICU 4.8 - */ -U_CAPI void U_EXPORT2 + */ +U_CAPI void U_EXPORT2 ucol_setReorderCodes(UCollator* coll, const int32_t* reorderCodes, int32_t reorderCodesLength, @@ -772,7 +772,7 @@ ucol_setReorderCodes(UCollator* coll, * @param dest The array to fill with the script ordering. * @param destCapacity The length of dest. If it is 0, then dest may be NULL and the function * will only return the length of the result without writing any codes (pre-flighting). - * @param pErrorCode Must be a valid pointer to an error code value, which must not indicate + * @param pErrorCode Must be a valid pointer to an error code value, which must not indicate * a failure before the function call. * @return The number of reordering codes written to the dest array. * @see ucol_setReorderCodes @@ -781,7 +781,7 @@ ucol_setReorderCodes(UCollator* coll, * @see UColReorderCode * @stable ICU 4.8 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_getEquivalentReorderCodes(int32_t reorderCode, int32_t* dest, int32_t destCapacity, @@ -799,7 +799,7 @@ ucol_getEquivalentReorderCodes(int32_t reorderCode, * the output was truncated. * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_getDisplayName( const char *objLoc, const char *dispLoc, UChar *result, @@ -815,7 +815,7 @@ ucol_getDisplayName( const char *objLoc, * @see ucol_countAvailable * @stable ICU 2.0 */ -U_CAPI const char* U_EXPORT2 +U_CAPI const char* U_EXPORT2 ucol_getAvailable(int32_t localeIndex); /** @@ -826,7 +826,7 @@ ucol_getAvailable(int32_t localeIndex); * @see ucol_getAvailable * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_countAvailable(void); #if !UCONFIG_NO_SERVICE @@ -930,26 +930,26 @@ ucol_getFunctionalEquivalent(char* result, int32_t resultCapacity, * Get the collation tailoring rules from a UCollator. * The rules will follow the rule syntax. * @param coll The UCollator to query. - * @param length + * @param length * @return The collation tailoring rules. * @stable ICU 2.0 */ -U_CAPI const UChar* U_EXPORT2 -ucol_getRules( const UCollator *coll, +U_CAPI const UChar* U_EXPORT2 +ucol_getRules( const UCollator *coll, int32_t *length); #ifndef U_HIDE_DEPRECATED_API /** Get the short definition string for a collator. This API harvests the collator's - * locale and the attribute set and produces a string that can be used for opening + * locale and the attribute set and produces a string that can be used for opening * a collator with the same attributes using the ucol_openFromShortString API. * This string will be normalized. * The structure and the syntax of the string is defined in the "Naming collators" - * section of the users guide: + * section of the users guide: * https://unicode-org.github.io/icu/userguide/collation/concepts#collator-naming-scheme * This API supports preflighting. * @param coll a collator * @param locale a locale that will appear as a collators locale in the resulting - * short string definition. If NULL, the locale will be harvested + * short string definition. If NULL, the locale will be harvested * from the collator. * @param buffer space to hold the resulting string * @param capacity capacity of the buffer @@ -968,21 +968,21 @@ ucol_getShortDefinitionString(const UCollator *coll, /** Verifies and normalizes short definition string. * Normalized short definition string has all the option sorted by the argument name, - * so that equivalent definition strings are the same. + * so that equivalent definition strings are the same. * This API supports preflighting. * @param source definition string * @param destination space to hold the resulting string * @param capacity capacity of the buffer * @param parseError if not NULL, structure that will get filled with error's pre * and post context in case of error. - * @param status Error code. This API will return an error if an invalid attribute - * or attribute/value combination is specified. All the preflighting + * @param status Error code. This API will return an error if an invalid attribute + * or attribute/value combination is specified. All the preflighting * errors are also featured * @return length of the resulting normalized string. * * @see ucol_openFromShortString * @see ucol_getShortDefinitionString - * + * * @deprecated ICU 54 */ @@ -999,7 +999,7 @@ ucol_normalizeShortDefinitionString(const char *source, * Get a sort key for a string from a UCollator. * Sort keys may be compared using strcmp. * - * Note that sort keys are often less efficient than simply doing comparison. + * Note that sort keys are often less efficient than simply doing comparison. * For more details, see the ICU User Guide. * * Like ICU functions that write to an output buffer, the buffer contents @@ -1017,7 +1017,7 @@ ucol_normalizeShortDefinitionString(const char *source, * @see ucol_keyHashCode * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_getSortKey(const UCollator *coll, const UChar *source, int32_t sourceLength, @@ -1034,29 +1034,29 @@ ucol_getSortKey(const UCollator *coll, * The generated sort key may or may not be compatible with * sort keys generated using ucol_getSortKey(). * @param coll The UCollator containing the collation rules. - * @param iter UCharIterator containing the string we need + * @param iter UCharIterator containing the string we need * the sort key to be calculated for. * @param state Opaque state of sortkey iteration. * @param dest Buffer to hold the resulting sortkey part * @param count number of sort key bytes required. * @param status error code indicator. * @return the actual number of bytes of a sortkey. It can be - * smaller than count if we have reached the end of + * smaller than count if we have reached the end of * the sort key. * @stable ICU 2.6 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_nextSortKeyPart(const UCollator *coll, UCharIterator *iter, uint32_t state[2], uint8_t *dest, int32_t count, UErrorCode *status); -/** enum that is taken by ucol_getBound API - * See below for explanation - * do not change the values assigned to the - * members of this enum. Underlying code - * depends on them having these numbers +/** enum that is taken by ucol_getBound API + * See below for explanation + * do not change the values assigned to the + * members of this enum. Underlying code + * depends on them having these numbers * @stable ICU 2.0 */ typedef enum { @@ -1077,11 +1077,11 @@ typedef enum { /** * Produce a bound for a given sortkey and a number of levels. - * Return value is always the number of bytes needed, regardless of + * Return value is always the number of bytes needed, regardless of * whether the result buffer was big enough or even valid.
    * Resulting bounds can be used to produce a range of strings that are * between upper and lower bounds. For example, if bounds are produced - * for a sortkey of string "smith", strings between upper and lower + * for a sortkey of string "smith", strings between upper and lower * bounds with one level would include "Smith", "SMITH", "sMiTh".
    * There are two upper bounds that can be produced. If UCOL_BOUND_UPPER * is produced, strings matched would be as above. However, if bound @@ -1091,28 +1091,28 @@ typedef enum { * TestBounds. * Sort keys may be compared using strcmp. * @param source The source sortkey. - * @param sourceLength The length of source, or -1 if null-terminated. - * (If an unmodified sortkey is passed, it is always null + * @param sourceLength The length of source, or -1 if null-terminated. + * (If an unmodified sortkey is passed, it is always null * terminated). - * @param boundType Type of bound required. It can be UCOL_BOUND_LOWER, which - * produces a lower inclusive bound, UCOL_BOUND_UPPER, that - * produces upper bound that matches strings of the same length - * or UCOL_BOUND_UPPER_LONG that matches strings that have the + * @param boundType Type of bound required. It can be UCOL_BOUND_LOWER, which + * produces a lower inclusive bound, UCOL_BOUND_UPPER, that + * produces upper bound that matches strings of the same length + * or UCOL_BOUND_UPPER_LONG that matches strings that have the * same starting substring as the source string. - * @param noOfLevels Number of levels required in the resulting bound (for most - * uses, the recommended value is 1). See users guide for + * @param noOfLevels Number of levels required in the resulting bound (for most + * uses, the recommended value is 1). See users guide for * explanation on number of levels a sortkey can have. * @param result A pointer to a buffer to receive the resulting sortkey. * @param resultLength The maximum size of result. - * @param status Used for returning error code if something went wrong. If the + * @param status Used for returning error code if something went wrong. If the * number of levels requested is higher than the number of levels - * in the source key, a warning (U_SORT_KEY_TOO_SHORT_WARNING) is + * in the source key, a warning (U_SORT_KEY_TOO_SHORT_WARNING) is * issued. - * @return The size needed to fully store the bound. + * @return The size needed to fully store the bound. * @see ucol_keyHashCode * @stable ICU 2.1 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_getBound(const uint8_t *source, int32_t sourceLength, UColBoundMode boundType, @@ -1120,7 +1120,7 @@ ucol_getBound(const uint8_t *source, uint8_t *result, int32_t resultLength, UErrorCode *status); - + /** * Gets the version information for a Collator. Version is currently * an opaque 32-bit number which depends, among other things, on major @@ -1168,7 +1168,7 @@ ucol_getUCAVersion(const UCollator* coll, UVersionInfo info); * Example (uncompressed): *

    191B1D 01 050505 01 910505 00
      * 1F2123 01 050505 01 910505 00
    - * will be merged as + * will be merged as *
    191B1D 02 1F2123 01 050505 02 050505 01 910505 02 910505 00
    * * If the destination buffer is not big enough, then its contents are undefined. @@ -1189,7 +1189,7 @@ ucol_getUCAVersion(const UCollator* coll, UVersionInfo info); * in which cases the contents of dest is undefined * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_mergeSortkeys(const uint8_t *src1, int32_t src1Length, const uint8_t *src2, int32_t src2Length, uint8_t *dest, int32_t destCapacity); @@ -1197,7 +1197,7 @@ ucol_mergeSortkeys(const uint8_t *src1, int32_t src1Length, /** * Universal attribute setter * @param coll collator which attributes are to be changed - * @param attr attribute type + * @param attr attribute type * @param value attribute value * @param status to indicate whether the operation went on smoothly or there were errors * @see UColAttribute @@ -1205,7 +1205,7 @@ ucol_mergeSortkeys(const uint8_t *src1, int32_t src1Length, * @see ucol_getAttribute * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucol_setAttribute(UCollator *coll, UColAttribute attr, UColAttributeValue value, UErrorCode *status); /** @@ -1219,7 +1219,7 @@ ucol_setAttribute(UCollator *coll, UColAttribute attr, UColAttributeValue value, * @see ucol_setAttribute * @stable ICU 2.0 */ -U_CAPI UColAttributeValue U_EXPORT2 +U_CAPI UColAttributeValue U_EXPORT2 ucol_getAttribute(const UCollator *coll, UColAttribute attr, UErrorCode *status); /** @@ -1272,16 +1272,16 @@ ucol_getMaxVariable(const UCollator *coll); * @see ucol_restoreVariableTop * @deprecated ICU 53 Call ucol_setMaxVariable() instead. */ -U_DEPRECATED uint32_t U_EXPORT2 -ucol_setVariableTop(UCollator *coll, - const UChar *varTop, int32_t len, +U_DEPRECATED uint32_t U_EXPORT2 +ucol_setVariableTop(UCollator *coll, + const UChar *varTop, int32_t len, UErrorCode *status); #endif /* U_HIDE_DEPRECATED_API */ -/** - * Gets the variable top value of a Collator. +/** + * Gets the variable top value of a Collator. * @param coll collator which variable top needs to be retrieved - * @param status error code (not changed by function). If error code is set, + * @param status error code (not changed by function). If error code is set, * the return value is undefined. * @return the variable top primary weight * @see ucol_getMaxVariable @@ -1306,7 +1306,7 @@ U_CAPI uint32_t U_EXPORT2 ucol_getVariableTop(const UCollator *coll, UErrorCode * @see ucol_setVariableTop * @deprecated ICU 53 Call ucol_setMaxVariable() instead. */ -U_DEPRECATED void U_EXPORT2 +U_DEPRECATED void U_EXPORT2 ucol_restoreVariableTop(UCollator *coll, const uint32_t varTop, UErrorCode *status); #endif /* U_HIDE_DEPRECATED_API */ @@ -1314,15 +1314,15 @@ ucol_restoreVariableTop(UCollator *coll, const uint32_t varTop, UErrorCode *stat * Thread safe cloning operation. The result is a clone of a given collator. * @param coll collator to be cloned * @param stackBuffer Deprecated functionality as of ICU 52, use NULL.
    - * user allocated space for the new clone. - * If NULL new memory will be allocated. + * user allocated space for the new clone. + * If NULL new memory will be allocated. * If buffer is not large enough, new memory will be allocated. * Clients can use the U_COL_SAFECLONE_BUFFERSIZE. * @param pBufferSize Deprecated functionality as of ICU 52, use NULL or 1.
    - * pointer to size of allocated space. - * If *pBufferSize == 0, a sufficient size for use in cloning will + * pointer to size of allocated space. + * If *pBufferSize == 0, a sufficient size for use in cloning will * be returned ('pre-flighting') - * If *pBufferSize is not enough for a stack-based safe clone, + * If *pBufferSize is not enough for a stack-based safe clone, * new memory will be allocated. * @param status to indicate whether the operation went on smoothly or there were errors * An informational status value, U_SAFECLONE_ALLOCATED_ERROR, is used if any @@ -1333,7 +1333,7 @@ ucol_restoreVariableTop(UCollator *coll, const uint32_t varTop, UErrorCode *stat * @see ucol_close * @stable ICU 2.0 */ -U_CAPI UCollator* U_EXPORT2 +U_CAPI UCollator* U_EXPORT2 ucol_safeClone(const UCollator *coll, void *stackBuffer, int32_t *pBufferSize, @@ -1349,21 +1349,21 @@ ucol_safeClone(const UCollator *coll, #endif /* U_HIDE_DEPRECATED_API */ /** - * Returns current rules. Delta defines whether full rules are returned or just the tailoring. - * Returns number of UChars needed to store rules. If buffer is NULL or bufferLen is not enough + * Returns current rules. Delta defines whether full rules are returned or just the tailoring. + * Returns number of UChars needed to store rules. If buffer is NULL or bufferLen is not enough * to store rules, will store up to available space. * * ucol_getRules() should normally be used instead. * See https://unicode-org.github.io/icu/userguide/collation/customization#building-on-existing-locales * @param coll collator to get the rules from - * @param delta one of UCOL_TAILORING_ONLY, UCOL_FULL_RULES. + * @param delta one of UCOL_TAILORING_ONLY, UCOL_FULL_RULES. * @param buffer buffer to store the result in. If NULL, you'll get no rules. * @param bufferLen length of buffer to store rules in. If less than needed you'll get only the part that fits in. * @return current rules * @stable ICU 2.0 * @see UCOL_FULL_RULES */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_getRulesEx(const UCollator *coll, UColRuleOption delta, UChar *buffer, int32_t bufferLen); #ifndef U_HIDE_DEPRECATED_API @@ -1376,7 +1376,7 @@ ucol_getRulesEx(const UCollator *coll, UColRuleOption delta, UChar *buffer, int3 * locale. For description see the definition of * ULocDataLocaleType in uloc.h * @param status error code of the operation - * @return real locale name from which the collation data comes. + * @return real locale name from which the collation data comes. * If the collator was instantiated from rules, returns * NULL. * @deprecated ICU 2.8 Use ucol_getLocaleByType instead @@ -1394,7 +1394,7 @@ ucol_getLocale(const UCollator *coll, ULocDataLocaleType type, UErrorCode *statu * locale. For description see the definition of * ULocDataLocaleType in uloc.h * @param status error code of the operation - * @return real locale name from which the collation data comes. + * @return real locale name from which the collation data comes. * If the collator was instantiated from rules, returns * NULL. * @stable ICU 2.8 @@ -1403,7 +1403,7 @@ U_CAPI const char * U_EXPORT2 ucol_getLocaleByType(const UCollator *coll, ULocDataLocaleType type, UErrorCode *status); /** - * Get a Unicode set that contains all the characters and sequences tailored in + * Get a Unicode set that contains all the characters and sequences tailored in * this collator. The result must be disposed of by using uset_close. * @param coll The UCollator for which we want to get tailored chars * @param status error code of the operation @@ -1434,18 +1434,18 @@ ucol_getUnsafeSet( const UCollator *coll, /** Touches all resources needed for instantiating a collator from a short string definition, * thus filling up the cache. - * @param definition A short string containing a locale and a set of attributes. + * @param definition A short string containing a locale and a set of attributes. * Attributes not explicitly mentioned are left at the default * state for a locale. * @param parseError if not NULL, structure that will get filled with error's pre * and post context in case of error. - * @param forceDefaults if false, the settings that are the same as the collator + * @param forceDefaults if false, the settings that are the same as the collator * default settings will not be applied (for example, setting - * French secondary on a French collator would not be executed). - * If true, all the settings will be applied regardless of the + * French secondary on a French collator would not be executed). + * If true, all the settings will be applied regardless of the * collator default value. If the definition * strings are to be cached, should be set to false. - * @param status Error code. Apart from regular error conditions connected to + * @param status Error code. Apart from regular error conditions connected to * instantiating collators (like out of memory or similar), this * API will return an error if an invalid attribute or attribute/value * combination is specified. @@ -1459,7 +1459,7 @@ ucol_prepareShortStringOpen( const char *definition, UErrorCode *status); #endif /* U_HIDE_INTERNAL_API */ -/** Creates a binary image of a collator. This binary image can be stored and +/** Creates a binary image of a collator. This binary image can be stored and * later used to instantiate a collator using ucol_openBinary. * This API supports preflighting. * @param coll Collator @@ -1476,8 +1476,8 @@ ucol_cloneBinary(const UCollator *coll, UErrorCode *status); /** Opens a collator from a collator binary image created using - * ucol_cloneBinary. Binary image used in instantiation of the - * collator remains owned by the user and should stay around for + * ucol_cloneBinary. Binary image used in instantiation of the + * collator remains owned by the user and should stay around for * the lifetime of the collator. The API also takes a base collator * which must be the root collator. * @param bin binary image owned by the user and required through the @@ -1493,8 +1493,8 @@ ucol_cloneBinary(const UCollator *coll, * @stable ICU 3.2 */ U_CAPI UCollator* U_EXPORT2 -ucol_openBinary(const uint8_t *bin, int32_t length, - const UCollator *base, +ucol_openBinary(const uint8_t *bin, int32_t length, + const UCollator *base, UErrorCode *status); diff --git a/deps/icu-small/source/i18n/unicode/ucoleitr.h b/deps/icu-small/source/i18n/unicode/ucoleitr.h index e8bcd368d4f0a4..25efcf2a08e77e 100644 --- a/deps/icu-small/source/i18n/unicode/ucoleitr.h +++ b/deps/icu-small/source/i18n/unicode/ucoleitr.h @@ -11,7 +11,7 @@ * Modification History: * * Date Name Description -* 02/15/2001 synwee Modified all methods to process its own function +* 02/15/2001 synwee Modified all methods to process its own function * instead of calling the equivalent c++ api (coleitr.h) *******************************************************************************/ @@ -22,8 +22,8 @@ #if !UCONFIG_NO_COLLATION -/** - * This indicates an error has occurred during processing or if no more CEs is +/** + * This indicates an error has occurred during processing or if no more CEs is * to be returned. * @stable ICU 2.0 */ @@ -31,7 +31,7 @@ #include "unicode/ucol.h" -/** +/** * The UCollationElements struct. * For usage in C programs. * @stable ICU 2.0 @@ -42,10 +42,10 @@ typedef struct UCollationElements UCollationElements; * \file * \brief C API: UCollationElements * - * The UCollationElements API is used as an iterator to walk through each + * The UCollationElements API is used as an iterator to walk through each * character of an international string. Use the iterator to return the - * ordering priority of the positioned character. The ordering priority of a - * character, which we refer to as a key, defines how a character is collated + * ordering priority of the positioned character. The ordering priority of a + * character, which we refer to as a key, defines how a character is collated * in the given collation object. * For example, consider the following in Slovak and in traditional Spanish collation: *
    @@ -82,19 +82,19 @@ typedef struct UCollationElements UCollationElements;
      * ucol_next() returns the collation order of the next.
      * ucol_prev() returns the collation order of the previous character.
      * The Collation Element Iterator moves only in one direction between calls to
    - * ucol_reset. That is, ucol_next() and ucol_prev can not be inter-used.
    - * Whenever ucol_prev is to be called after ucol_next() or vice versa,
    - * ucol_reset has to be called first to reset the status, shifting pointers to
    - * either the end or the start of the string. Hence at the next call of
    - * ucol_prev or ucol_next, the first or last collation order will be returned.
    - * If a change of direction is done without a ucol_reset, the result is
    + * ucol_reset. That is, ucol_next() and ucol_prev can not be inter-used. 
    + * Whenever ucol_prev is to be called after ucol_next() or vice versa, 
    + * ucol_reset has to be called first to reset the status, shifting pointers to 
    + * either the end or the start of the string. Hence at the next call of 
    + * ucol_prev or ucol_next, the first or last collation order will be returned. 
    + * If a change of direction is done without a ucol_reset, the result is 
      * undefined.
    - * The result of a forward iterate (ucol_next) and reversed result of the
    - * backward iterate (ucol_prev) on the same string are equivalent, if
    + * The result of a forward iterate (ucol_next) and reversed result of the  
    + * backward iterate (ucol_prev) on the same string are equivalent, if 
      * collation orders with the value 0 are ignored.
    - * Character based on the comparison level of the collator.  A collation order
    - * consists of primary order, secondary order and tertiary order.  The data
    - * type of the collation order is int32_t.
    + * Character based on the comparison level of the collator.  A collation order 
    + * consists of primary order, secondary order and tertiary order.  The data 
    + * type of the collation order is int32_t. 
      *
      * @see UCollator
      */
    @@ -113,7 +113,7 @@ typedef struct UCollationElements UCollationElements;
      * @return a struct containing collation element information
      * @stable ICU 2.0
      */
    -U_CAPI UCollationElements* U_EXPORT2
    +U_CAPI UCollationElements* U_EXPORT2 
     ucol_openElements(const UCollator  *coll,
                       const UChar      *text,
                             int32_t    textLength,
    @@ -126,7 +126,7 @@ ucol_openElements(const UCollator  *coll,
      * @return       the hash code.
      * @stable ICU 2.0
      */
    -U_CAPI int32_t U_EXPORT2
    +U_CAPI int32_t U_EXPORT2 
     ucol_keyHashCode(const uint8_t* key, int32_t length);
     
     /**
    @@ -135,7 +135,7 @@ ucol_keyHashCode(const uint8_t* key, int32_t length);
      * @param elems The UCollationElements to close.
      * @stable ICU 2.0
      */
    -U_CAPI void U_EXPORT2
    +U_CAPI void U_EXPORT2 
     ucol_closeElements(UCollationElements *elems);
     
     /**
    @@ -147,7 +147,7 @@ ucol_closeElements(UCollationElements *elems);
      * @see ucol_previous
      * @stable ICU 2.0
      */
    -U_CAPI void U_EXPORT2
    +U_CAPI void U_EXPORT2 
     ucol_reset(UCollationElements *elems);
     
     /**
    @@ -155,41 +155,41 @@ ucol_reset(UCollationElements *elems);
      * A single character may contain more than one collation element.
      * @param elems The UCollationElements containing the text.
      * @param status A pointer to a UErrorCode to receive any errors.
    - * @return The next collation elements ordering, otherwise returns UCOL_NULLORDER
    + * @return The next collation elements ordering, otherwise returns UCOL_NULLORDER 
      *         if an error has occurred or if the end of string has been reached
      * @stable ICU 2.0
      */
    -U_CAPI int32_t U_EXPORT2
    +U_CAPI int32_t U_EXPORT2 
     ucol_next(UCollationElements *elems, UErrorCode *status);
     
     /**
      * Get the ordering priority of the previous collation element in the text.
      * A single character may contain more than one collation element.
    - * Note that internally a stack is used to store buffered collation elements.
    + * Note that internally a stack is used to store buffered collation elements. 
      * @param elems The UCollationElements containing the text.
    - * @param status A pointer to a UErrorCode to receive any errors. Noteably
    + * @param status A pointer to a UErrorCode to receive any errors. Notably 
      *               a U_BUFFER_OVERFLOW_ERROR is returned if the internal stack
      *               buffer has been exhausted.
    - * @return The previous collation elements ordering, otherwise returns
    - *         UCOL_NULLORDER if an error has occurred or if the start of string has
    + * @return The previous collation elements ordering, otherwise returns 
    + *         UCOL_NULLORDER if an error has occurred or if the start of string has 
      *         been reached.
      * @stable ICU 2.0
      */
    -U_CAPI int32_t U_EXPORT2
    +U_CAPI int32_t U_EXPORT2 
     ucol_previous(UCollationElements *elems, UErrorCode *status);
     
     /**
    - * Get the maximum length of any expansion sequences that end with the
    + * Get the maximum length of any expansion sequences that end with the 
      * specified comparison order.
      * This is useful for .... ?
      * @param elems The UCollationElements containing the text.
      * @param order A collation order returned by previous or next.
    - * @return maximum size of the expansion sequences ending with the collation
    - *         element or 1 if collation element does not occur at the end of any
    + * @return maximum size of the expansion sequences ending with the collation 
    + *         element or 1 if collation element does not occur at the end of any 
      *         expansion sequence
      * @stable ICU 2.0
      */
    -U_CAPI int32_t U_EXPORT2
    +U_CAPI int32_t U_EXPORT2 
     ucol_getMaxExpansion(const UCollationElements *elems, int32_t order);
     
     /**
    @@ -209,7 +209,7 @@ ucol_getMaxExpansion(const UCollationElements *elems, int32_t order);
      * @see ucol_getText
      * @stable ICU 2.0
      */
    -U_CAPI void U_EXPORT2
    +U_CAPI void U_EXPORT2 
     ucol_setText(      UCollationElements *elems,
                  const UChar              *text,
                        int32_t            textLength,
    @@ -224,7 +224,7 @@ ucol_setText(      UCollationElements *elems,
      * @see ucol_setOffset
      * @stable ICU 2.0
      */
    -U_CAPI int32_t U_EXPORT2
    +U_CAPI int32_t U_EXPORT2 
     ucol_getOffset(const UCollationElements *elems);
     
     /**
    @@ -239,7 +239,7 @@ ucol_getOffset(const UCollationElements *elems);
      * @see ucol_getOffset
      * @stable ICU 2.0
      */
    -U_CAPI void U_EXPORT2
    +U_CAPI void U_EXPORT2 
     ucol_setOffset(UCollationElements *elems,
                    int32_t             offset,
                    UErrorCode         *status);
    @@ -251,7 +251,7 @@ ucol_setOffset(UCollationElements *elems,
     * @stable ICU 2.6
     */
     U_CAPI int32_t U_EXPORT2
    -ucol_primaryOrder (int32_t order);
    +ucol_primaryOrder (int32_t order); 
     
     /**
     * Get the secondary order of a collation order.
    @@ -260,7 +260,7 @@ ucol_primaryOrder (int32_t order);
     * @stable ICU 2.6
     */
     U_CAPI int32_t U_EXPORT2
    -ucol_secondaryOrder (int32_t order);
    +ucol_secondaryOrder (int32_t order); 
     
     /**
     * Get the tertiary order of a collation order.
    @@ -269,7 +269,7 @@ ucol_secondaryOrder (int32_t order);
     * @stable ICU 2.6
     */
     U_CAPI int32_t U_EXPORT2
    -ucol_tertiaryOrder (int32_t order);
    +ucol_tertiaryOrder (int32_t order); 
     
     #endif /* #if !UCONFIG_NO_COLLATION */
     
    diff --git a/deps/icu-small/source/i18n/unicode/ucsdet.h b/deps/icu-small/source/i18n/unicode/ucsdet.h
    index 50281ad1fb54cb..8c62fde9d2eeed 100644
    --- a/deps/icu-small/source/i18n/unicode/ucsdet.h
    +++ b/deps/icu-small/source/i18n/unicode/ucsdet.h
    @@ -32,7 +32,7 @@
     #endif   // U_SHOW_CPLUSPLUS_API
     
     /**
    - * \file
    + * \file 
      * \brief C API: Charset Detection API
      *
      * This API provides a facility for detecting the
    @@ -53,7 +53,7 @@
      * Compact Encoding Detector, https://github.com/google/compact_enc_det.
      * It often gives more accurate results, especially with short input samples.
      */
    -
    + 
     
     struct UCharsetDetector;
     /**
    @@ -155,8 +155,8 @@ ucsdet_setDeclaredEncoding(UCharsetDetector *ucsd, const char *encoding, int32_t
     
     /**
      * Return the charset that best matches the supplied input data.
    - *
    - * Note though, that because the detection
    + * 
    + * Note though, that because the detection 
      * only looks at the start of the input data,
      * there is a possibility that the returned charset will fail to handle
      * the full set of input data.
    @@ -180,7 +180,7 @@ ucsdet_setDeclaredEncoding(UCharsetDetector *ucsd, const char *encoding, int32_t
      */
     U_CAPI const UCharsetMatch * U_EXPORT2
     ucsdet_detect(UCharsetDetector *ucsd, UErrorCode *status);
    -
    +    
     
     /**
      *  Find all charset matches that appear to be consistent with the input,
    @@ -193,14 +193,14 @@ ucsdet_detect(UCharsetDetector *ucsd, UErrorCode *status);
      *  

    * The returned UCharsetMatch objects are owned by the UCharsetDetector. * They will remain valid until the detector is closed or modified - * + * *

    - * Return an error if + * Return an error if *

      *
    • no charsets appear to match the input data.
    • *
    • no input text has been provided
    • *
    - * + * * @param ucsd the charset detector to be used. * @param matchesFound pointer to a variable that will be set to the * number of charsets identified that are consistent with @@ -300,7 +300,7 @@ ucsdet_getLanguage(const UCharsetMatch *ucsm, UErrorCode *status); * NUL character will be appended to the buffer if space is available. * * The number of UChars in the output string, not including the terminating - * NUL, is returned. + * NUL, is returned. * * If the supplied buffer is smaller than required to hold the output, * the contents of the buffer are undefined. The full output string length @@ -323,7 +323,7 @@ ucsdet_getUChars(const UCharsetMatch *ucsm, /** - * Get an iterator over the set of all detectable charsets - + * Get an iterator over the set of all detectable charsets - * over the charsets that are known to the charset detection * service. * @@ -418,3 +418,5 @@ ucsdet_setDetectableCharset(UCharsetDetector *ucsd, const char *encoding, UBool #endif #endif /* __UCSDET_H */ + + diff --git a/deps/icu-small/source/i18n/unicode/udat.h b/deps/icu-small/source/i18n/unicode/udat.h index 2963e5506c821d..0e6e6b76daa37d 100644 --- a/deps/icu-small/source/i18n/unicode/udat.h +++ b/deps/icu-small/source/i18n/unicode/udat.h @@ -1530,7 +1530,21 @@ typedef enum UDateFormatSymbolType { * udat_setSymbols not supported for UDAT_ZODIAC_NAMES_NARROW) * @stable ICU 54 */ - UDAT_ZODIAC_NAMES_NARROW + UDAT_ZODIAC_NAMES_NARROW, + +#ifndef U_HIDE_DRAFT_API + /** + * The narrow quarter names, for example 1 + * @draft ICU 70 + */ + UDAT_NARROW_QUARTERS, + + /** + * The narrow standalone quarter names, for example 1 + * @draft ICU 70 + */ + UDAT_STANDALONE_NARROW_QUARTERS +#endif // U_HIDE_DRAFT_API } UDateFormatSymbolType; struct UDateFormatSymbols; @@ -1566,7 +1580,7 @@ udat_getSymbols(const UDateFormat *fmt, /** * Count the number of particular symbols for an UDateFormat. -* This function is most useful as for detemining the loop termination condition +* This function is most useful as for determining the loop termination condition * for calls to {@link #udat_getSymbols }. * @param fmt The formatter to query. * @param type The type of symbols to count. One of UDAT_ERAS, UDAT_MONTHS, UDAT_SHORT_MONTHS, diff --git a/deps/icu-small/source/i18n/unicode/udateintervalformat.h b/deps/icu-small/source/i18n/unicode/udateintervalformat.h index 9ed53a87d68904..8439444d07961b 100644 --- a/deps/icu-small/source/i18n/unicode/udateintervalformat.h +++ b/deps/icu-small/source/i18n/unicode/udateintervalformat.h @@ -48,7 +48,7 @@ * - The skeleton MMMd will produce * for en_US, "Mar 4-8" * for en_GB, "4-8 Mar" - * + * * Note: the "-" characters in the above sample output will actually be * Unicode 2013, EN_DASH, in all but the last example. * @@ -301,7 +301,6 @@ udtitvfmt_formatCalendarToResult( UFormattedDateInterval* result, UErrorCode* status); -#ifndef U_HIDE_DRAFT_API /** * Set a particular UDisplayContext value in the formatter, such as * UDISPCTX_CAPITALIZATION_FOR_STANDALONE. This causes the formatted @@ -311,7 +310,7 @@ udtitvfmt_formatCalendarToResult( * @param formatter The formatter for which to set a UDisplayContext value. * @param value The UDisplayContext value to set. * @param status A pointer to an UErrorCode to receive any errors - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI void U_EXPORT2 udtitvfmt_setContext(UDateIntervalFormat* formatter, UDisplayContext value, UErrorCode* status); @@ -323,13 +322,11 @@ udtitvfmt_setContext(UDateIntervalFormat* formatter, UDisplayContext value, UErr * @param type The UDisplayContextType whose value to return * @param status A pointer to an UErrorCode to receive any errors * @return The UDisplayContextValue for the specified type. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI UDisplayContext U_EXPORT2 udtitvfmt_getContext(const UDateIntervalFormat* formatter, UDisplayContextType type, UErrorCode* status); -#endif /* U_HIDE_DRAFT_API */ - #endif /* #if !UCONFIG_NO_FORMATTING */ #endif diff --git a/deps/icu-small/source/i18n/unicode/udatpg.h b/deps/icu-small/source/i18n/unicode/udatpg.h index 893e1e6831ae34..efe4357bfeecd2 100644 --- a/deps/icu-small/source/i18n/unicode/udatpg.h +++ b/deps/icu-small/source/i18n/unicode/udatpg.h @@ -31,15 +31,15 @@ * \file * \brief C API: Wrapper for icu::DateTimePatternGenerator (unicode/dtptngen.h). * - * UDateTimePatternGenerator provides flexible generation of date format patterns, - * like "yy-MM-dd". The user can build up the generator by adding successive - * patterns. Once that is done, a query can be made using a "skeleton", which is - * a pattern which just includes the desired fields and lengths. The generator + * UDateTimePatternGenerator provides flexible generation of date format patterns, + * like "yy-MM-dd". The user can build up the generator by adding successive + * patterns. Once that is done, a query can be made using a "skeleton", which is + * a pattern which just includes the desired fields and lengths. The generator * will return the "best fit" pattern corresponding to that skeleton. *

    The main method people will use is udatpg_getBestPattern, since normally - * UDateTimePatternGenerator is pre-built with data from a particular locale. + * UDateTimePatternGenerator is pre-built with data from a particular locale. * However, generators can be built directly from other data as well. - *

    Issue: may be useful to also have a function that returns the list of + *

    Issue: may be useful to also have a function that returns the list of * fields in a pattern, in order, since we have that internally. * That would be useful for getting the UI order of field elements. */ @@ -218,13 +218,13 @@ udatpg_clone(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode); /** * Get the best pattern matching the input skeleton. It is guaranteed to * have all of the fields in the skeleton. - * + * * Note that this function uses a non-const UDateTimePatternGenerator: * It uses a stateful pattern parser which is set up for each generator object, * rather than creating one for each function call. * Consecutive calls to this function do not affect each other, * but this function cannot be used concurrently on a single generator object. - * + * * @param dtpg a pointer to UDateTimePatternGenerator. * @param skeleton * The skeleton is a pattern containing only the variable fields. @@ -247,13 +247,13 @@ udatpg_getBestPattern(UDateTimePatternGenerator *dtpg, /** * Get the best pattern matching the input skeleton. It is guaranteed to * have all of the fields in the skeleton. - * + * * Note that this function uses a non-const UDateTimePatternGenerator: * It uses a stateful pattern parser which is set up for each generator object, * rather than creating one for each function call. * Consecutive calls to this function do not affect each other, * but this function cannot be used concurrently on a single generator object. - * + * * @param dtpg a pointer to UDateTimePatternGenerator. * @param skeleton * The skeleton is a pattern containing only the variable fields. @@ -284,7 +284,7 @@ udatpg_getBestPatternWithOptions(UDateTimePatternGenerator *dtpg, /** * Get a unique skeleton from a given pattern. For example, * both "MMM-dd" and "dd/MMM" produce the skeleton "MMMdd". - * + * * Note that this function uses a non-const UDateTimePatternGenerator: * It uses a stateful pattern parser which is set up for each generator object, * rather than creating one for each function call. @@ -341,8 +341,8 @@ udatpg_getBaseSkeleton(UDateTimePatternGenerator *unusedDtpg, /** * Adds a pattern to the generator. If the pattern has the same skeleton as * an existing pattern, and the override parameter is set, then the previous - * value is overriden. Otherwise, the previous value is retained. In either - * case, the conflicting status is set and previous vale is stored in + * value is overridden. Otherwise, the previous value is retained. In either + * case, the conflicting status is set and previous vale is stored in * conflicting pattern. *

    * Note that single-field patterns (like "MMM") are automatically added, and @@ -351,14 +351,14 @@ udatpg_getBaseSkeleton(UDateTimePatternGenerator *unusedDtpg, * @param dtpg a pointer to UDateTimePatternGenerator. * @param pattern input pattern, such as "dd/MMM" * @param patternLength the length of pattern. - * @param override When existing values are to be overridden use true, + * @param override When existing values are to be overridden use true, * otherwise use false. * @param conflictingPattern Previous pattern with the same skeleton. * @param capacity the capacity of conflictingPattern. * @param pLength a pointer to the length of conflictingPattern. * @param pErrorCode a pointer to the UErrorCode which must not indicate a * failure before the function call. - * @return conflicting status. The value could be UDATPG_NO_CONFLICT, + * @return conflicting status. The value could be UDATPG_NO_CONFLICT, * UDATPG_BASE_CONFLICT or UDATPG_CONFLICT. * @stable ICU 3.8 */ @@ -533,7 +533,7 @@ udatpg_setDecimal(UDateTimePatternGenerator *dtpg, /** * Getter corresponding to setDecimal. - * + * * @param dtpg a pointer to UDateTimePatternGenerator. * @param pLength A pointer that will receive the length of the decimal string. * @return corresponding to the decimal point. @@ -616,7 +616,7 @@ udatpg_replaceFieldTypesWithOptions(UDateTimePatternGenerator *dtpg, /** * Return a UEnumeration list of all the skeletons in canonical form. * Call udatpg_getPatternForSkeleton() to get the corresponding pattern. - * + * * @param dtpg a pointer to UDateTimePatternGenerator. * @param pErrorCode a pointer to the UErrorCode which must not indicate a * failure before the function call @@ -642,9 +642,9 @@ udatpg_openBaseSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErr /** * Get the pattern corresponding to a given skeleton. - * + * * @param dtpg a pointer to UDateTimePatternGenerator. - * @param skeleton + * @param skeleton * @param skeletonLength pointer to the length of skeleton. * @param pLength pointer to the length of return pattern. * @return pattern corresponding to a given skeleton. @@ -660,9 +660,9 @@ udatpg_getPatternForSkeleton(const UDateTimePatternGenerator *dtpg, /** * Return the default hour cycle for a locale. Uses the locale that the * UDateTimePatternGenerator was initially created with. - * + * * Cannot be used on an empty UDateTimePatternGenerator instance. - * + * * @param dtpg a pointer to UDateTimePatternGenerator. * @param pErrorCode a pointer to the UErrorCode which must not indicate a * failure before the function call. Set to U_UNSUPPORTED_ERROR diff --git a/deps/icu-small/source/i18n/unicode/uformattable.h b/deps/icu-small/source/i18n/unicode/uformattable.h index 6b8bee1f3dfe7c..4c4a307a24b4a1 100644 --- a/deps/icu-small/source/i18n/unicode/uformattable.h +++ b/deps/icu-small/source/i18n/unicode/uformattable.h @@ -173,7 +173,7 @@ ufmt_getDouble(UFormattable* fmt, UErrorCode *status); * as appropriate, is returned and the status is set to * U_INVALID_FORMAT_ERROR. If this object is of type UFMT_INT64 and * it fits within a long, then no precision is lost. If it is of - * type kDouble or kDecimalNumber, then a conversion is peformed, with + * type kDouble or kDecimalNumber, then a conversion is performed, with * truncation of any fractional part. If the type is UFMT_OBJECT and * the object is a Measure, then the result of * getNumber().getLong(status) is returned. If this object is @@ -195,7 +195,7 @@ ufmt_getLong(UFormattable* fmt, UErrorCode *status); * the maximum or minimum int64 value, as appropriate, is returned * and the status is set to U_INVALID_FORMAT_ERROR. If the * magnitude fits in an int64, then a casting conversion is - * peformed, with truncation of any fractional part. If the type + * performed, with truncation of any fractional part. If the type * is UFMT_OBJECT and the object is a Measure, then the result of * getNumber().getDouble(status) is returned. If this object is * neither a numeric type nor a Measure, then 0 is returned and @@ -267,7 +267,7 @@ ufmt_getArrayItemByIndex(UFormattable* fmt, int32_t n, UErrorCode *status); * the full precision and range of the original input, unconstrained by * the limits of a double floating point or a 64 bit int. * - * This function is not thread safe, and therfore is not declared const, + * This function is not thread safe, and therefore is not declared const, * even though it is logically const. * The resulting buffer is owned by the UFormattable and is invalid if any other functions are * called on the UFormattable. diff --git a/deps/icu-small/source/i18n/unicode/uformattedvalue.h b/deps/icu-small/source/i18n/unicode/uformattedvalue.h index c964b3a74dd3a1..1a550e87589c10 100644 --- a/deps/icu-small/source/i18n/unicode/uformattedvalue.h +++ b/deps/icu-small/source/i18n/unicode/uformattedvalue.h @@ -13,7 +13,7 @@ /** * \file * \brief C API: Abstract operations for localized strings. - * + * * This file contains declarations for classes that deal with formatted strings. A number * of APIs throughout ICU use these classes for expressing their localized output. */ @@ -22,7 +22,7 @@ /** * All possible field categories in ICU. Every entry in this enum corresponds * to another enum that exists in ICU. - * + * * In the APIs that take a UFieldCategory, an int32_t type is used. Field * categories having any of the top four bits turned on are reserved as * private-use for external APIs implementing FormattedValue. This means that @@ -34,7 +34,7 @@ typedef enum UFieldCategory { /** * For an undefined field category. - * + * * @stable ICU 64 */ UFIELD_CATEGORY_UNDEFINED = 0, @@ -160,7 +160,7 @@ ucfpos_close(UConstrainedFieldPosition* ucfpos); /** * Sets a constraint on the field category. - * + * * When this instance of UConstrainedFieldPosition is passed to ufmtval_nextPosition, * positions are skipped unless they have the given category. * @@ -192,7 +192,7 @@ ucfpos_constrainCategory( /** * Sets a constraint on the category and field. - * + * * When this instance of UConstrainedFieldPosition is passed to ufmtval_nextPosition, * positions are skipped unless they have the given category and field. * diff --git a/deps/icu-small/source/i18n/unicode/ulistformatter.h b/deps/icu-small/source/i18n/unicode/ulistformatter.h index 28a1e580370006..8334c7852f0cc9 100644 --- a/deps/icu-small/source/i18n/unicode/ulistformatter.h +++ b/deps/icu-small/source/i18n/unicode/ulistformatter.h @@ -24,7 +24,7 @@ * \file * \brief C API: Format a list in a locale-appropriate way. * - * A UListFormatter is used to format a list of items in a locale-appropriate way, + * A UListFormatter is used to format a list of items in a locale-appropriate way, * using data from CLDR. * Example: Input data ["Alice", "Bob", "Charlie", "Delta"] will be formatted * as "Alice, Bob, Charlie, and Delta" in English. diff --git a/deps/icu-small/source/i18n/unicode/ulocdata.h b/deps/icu-small/source/i18n/unicode/ulocdata.h index 3977743e3238ec..3647df9596ae63 100644 --- a/deps/icu-small/source/i18n/unicode/ulocdata.h +++ b/deps/icu-small/source/i18n/unicode/ulocdata.h @@ -229,15 +229,15 @@ ulocdata_getMeasurementSystem(const char *localeID, UErrorCode *status); /** * Returns the element gives the normal business letter size, and customary units. * The units for the numbers are always in milli-meters. - * For US since 8.5 and 11 do not yeild an integral value when converted to milli-meters, + * For US since 8.5 and 11 do not yield an integral value when converted to milli-meters, * the values are rounded off. - * So for A4 size paper the height and width are 297 mm and 210 mm repectively, + * So for A4 size paper the height and width are 297 mm and 210 mm respectively, * and for US letter size the height and width are 279 mm and 216 mm respectively. * Please note that this API will change in ICU 3.6 and will use an ulocdata object. * * @param localeID The id of the locale for which the paper size information to be retrieved. - * @param height A pointer to int to recieve the height information. - * @param width A pointer to int to recieve the width information. + * @param height A pointer to int to receive the height information. + * @param width A pointer to int to receive the width information. * @param status Must be a valid pointer to an error code value, * which must not indicate a failure before the function call. * @stable ICU 2.8 @@ -247,7 +247,7 @@ ulocdata_getPaperSize(const char *localeID, int32_t *height, int32_t *width, UEr /** * Return the current CLDR version used by the library. - * @param versionArray fillin that will recieve the version number + * @param versionArray fill-in that will receive the version number * @param status error code - could be U_MISSING_RESOURCE_ERROR if the version was not found. * @stable ICU 4.2 */ diff --git a/deps/icu-small/source/i18n/unicode/umsg.h b/deps/icu-small/source/i18n/unicode/umsg.h index c087031c6d4e35..c955dc18ac4d4a 100644 --- a/deps/icu-small/source/i18n/unicode/umsg.h +++ b/deps/icu-small/source/i18n/unicode/umsg.h @@ -1,10 +1,10 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html /******************************************************************** - * COPYRIGHT: + * COPYRIGHT: * Copyright (c) 1997-2011, International Business Machines Corporation and * others. All Rights Reserved. - * Copyright (C) 2010 , Yahoo! Inc. + * Copyright (C) 2010 , Yahoo! Inc. ******************************************************************** * * file name: umsg.h @@ -103,8 +103,8 @@ * u_uastrcpy(str, "MyDisk"); * u_uastrcpy(pattern, "The disk {1} contains {0,choice,0#no files|1#one file|1<{0,number,integer} files}"); * for(i=0; i<3; i++){ - * resultlength=0; - * resultLengthOut=u_formatMessage( "en_US", pattern, u_strlen(pattern), NULL, resultlength, &status, testArgs[i], str); + * resultlength=0; + * resultLengthOut=u_formatMessage( "en_US", pattern, u_strlen(pattern), NULL, resultlength, &status, testArgs[i], str); * if(status==U_BUFFER_OVERFLOW_ERROR){ * status=U_ZERO_ERROR; * resultlength=resultLengthOut+1; @@ -178,7 +178,7 @@ * @see u_parseMessage * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 u_formatMessage(const char *locale, const UChar *pattern, int32_t patternLength, @@ -205,7 +205,7 @@ u_formatMessage(const char *locale, * @see u_parseMessage * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 u_vformatMessage( const char *locale, const UChar *pattern, int32_t patternLength, @@ -230,7 +230,7 @@ u_vformatMessage( const char *locale, * @see u_formatMessage * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 u_parseMessage( const char *locale, const UChar *pattern, int32_t patternLength, @@ -255,7 +255,7 @@ u_parseMessage( const char *locale, * @see u_formatMessage * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 u_vparseMessage(const char *locale, const UChar *pattern, int32_t patternLength, @@ -284,7 +284,7 @@ u_vparseMessage(const char *locale, * @see u_parseMessage * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 u_formatMessageWithError( const char *locale, const UChar *pattern, int32_t patternLength, @@ -313,7 +313,7 @@ u_formatMessageWithError( const char *locale, * output was truncated. * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 u_vformatMessageWithError( const char *locale, const UChar *pattern, int32_t patternLength, @@ -341,7 +341,7 @@ u_vformatMessageWithError( const char *locale, * @see u_formatMessage * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 u_parseMessageWithError(const char *locale, const UChar *pattern, int32_t patternLength, @@ -369,7 +369,7 @@ u_parseMessageWithError(const char *locale, * @see u_formatMessage * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 u_vparseMessageWithError(const char *locale, const UChar *pattern, int32_t patternLength, @@ -380,7 +380,7 @@ u_vparseMessageWithError(const char *locale, UErrorCode* status); /*----------------------- New experimental API --------------------------- */ -/** +/** * The message format object * @stable ICU 2.0 */ @@ -392,14 +392,14 @@ typedef void* UMessageFormat; * @param pattern A pattern specifying the format to use. * @param patternLength Length of the pattern to use * @param locale The locale for which the messages are formatted. - * @param parseError A pointer to UParseError struct to receive any errors - * occured during parsing. Can be NULL. + * @param parseError A pointer to UParseError struct to receive any errors + * occurred during parsing. Can be NULL. * @param status A pointer to an UErrorCode to receive any errors. - * @return A pointer to a UMessageFormat to use for formatting - * messages, or 0 if an error occurred. + * @return A pointer to a UMessageFormat to use for formatting + * messages, or 0 if an error occurred. * @stable ICU 2.0 */ -U_CAPI UMessageFormat* U_EXPORT2 +U_CAPI UMessageFormat* U_EXPORT2 umsg_open( const UChar *pattern, int32_t patternLength, const char *locale, @@ -412,7 +412,7 @@ umsg_open( const UChar *pattern, * @param format The formatter to close. * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 umsg_close(UMessageFormat* format); #if U_SHOW_CPLUSPLUS_API @@ -442,7 +442,7 @@ U_NAMESPACE_END * @return A pointer to a UDateFormat identical to fmt. * @stable ICU 2.0 */ -U_CAPI UMessageFormat U_EXPORT2 +U_CAPI UMessageFormat U_EXPORT2 umsg_clone(const UMessageFormat *fmt, UErrorCode *status); @@ -453,7 +453,7 @@ umsg_clone(const UMessageFormat *fmt, * @param locale The locale the formatter should use. * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 umsg_setLocale(UMessageFormat *fmt, const char* locale); @@ -464,7 +464,7 @@ umsg_setLocale(UMessageFormat *fmt, * @return the locale. * @stable ICU 2.0 */ -U_CAPI const char* U_EXPORT2 +U_CAPI const char* U_EXPORT2 umsg_getLocale(const UMessageFormat *fmt); /** @@ -472,14 +472,14 @@ umsg_getLocale(const UMessageFormat *fmt); * @param fmt The formatter to use * @param pattern The pattern to be applied. * @param patternLength Length of the pattern to use - * @param parseError Struct to receive information on position + * @param parseError Struct to receive information on position * of error if an error is encountered.Can be NULL. * @param status Output param set to success/failure code on * exit. If the pattern is invalid, this will be * set to a failure result. * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 umsg_applyPattern( UMessageFormat *fmt, const UChar* pattern, int32_t patternLength, @@ -493,13 +493,13 @@ umsg_applyPattern( UMessageFormat *fmt, * @param resultLength The maximum size of result. * @param status Output param set to success/failure code on * exit. If the pattern is invalid, this will be - * set to a failure result. + * set to a failure result. * @return the pattern of the format * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 umsg_toPattern(const UMessageFormat *fmt, - UChar* result, + UChar* result, int32_t resultLength, UErrorCode* status); @@ -512,13 +512,13 @@ umsg_toPattern(const UMessageFormat *fmt, * @param result A pointer to a buffer to receive the formatted message. * @param resultLength The maximum size of result. * @param status A pointer to an UErrorCode to receive any errors - * @param ... A variable-length argument list containing the arguments + * @param ... A variable-length argument list containing the arguments * specified in pattern. - * @return The total buffer size needed; if greater than resultLength, + * @return The total buffer size needed; if greater than resultLength, * the output was truncated. * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 umsg_format( const UMessageFormat *fmt, UChar *result, int32_t resultLength, @@ -530,17 +530,17 @@ umsg_format( const UMessageFormat *fmt, * This function may perform re-ordering of the arguments depending on the * locale. For all numeric arguments, double is assumed unless the type is * explicitly integer. All choice format arguments must be of type double. - * @param fmt The formatter to use + * @param fmt The formatter to use * @param result A pointer to a buffer to receive the formatted message. * @param resultLength The maximum size of result. - * @param ap A variable-length argument list containing the arguments + * @param ap A variable-length argument list containing the arguments * @param status A pointer to an UErrorCode to receive any errors * specified in pattern. - * @return The total buffer size needed; if greater than resultLength, + * @return The total buffer size needed; if greater than resultLength, * the output was truncated. * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 umsg_vformat( const UMessageFormat *fmt, UChar *result, int32_t resultLength, @@ -552,7 +552,7 @@ umsg_vformat( const UMessageFormat *fmt, * For numeric arguments, this function will always use doubles. Integer types * should not be passed. * This function is not able to parse all output from {@link #umsg_format }. - * @param fmt The formatter to use + * @param fmt The formatter to use * @param source The text to parse. * @param sourceLength The length of source, or -1 if null-terminated. * @param count Output param to receive number of elements returned. @@ -561,7 +561,7 @@ umsg_vformat( const UMessageFormat *fmt, * specified in pattern. * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 umsg_parse( const UMessageFormat *fmt, const UChar *source, int32_t sourceLength, @@ -574,7 +574,7 @@ umsg_parse( const UMessageFormat *fmt, * For numeric arguments, this function will always use doubles. Integer types * should not be passed. * This function is not able to parse all output from {@link #umsg_format }. - * @param fmt The formatter to use + * @param fmt The formatter to use * @param source The text to parse. * @param sourceLength The length of source, or -1 if null-terminated. * @param count Output param to receive number of elements returned. @@ -584,7 +584,7 @@ umsg_parse( const UMessageFormat *fmt, * @see u_formatMessage * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 umsg_vparse(const UMessageFormat *fmt, const UChar *source, int32_t sourceLength, @@ -596,7 +596,7 @@ umsg_vparse(const UMessageFormat *fmt, /** * Convert an 'apostrophe-friendly' pattern into a standard * pattern. Standard patterns treat all apostrophes as - * quotes, which is problematic in some languages, e.g. + * quotes, which is problematic in some languages, e.g. * French, where apostrophe is commonly used. This utility * assumes that only an unpaired apostrophe immediately before * a brace is a true quote. Other unpaired apostrophes are paired, @@ -616,8 +616,8 @@ umsg_vparse(const UMessageFormat *fmt, * not * @stable ICU 3.4 */ -U_CAPI int32_t U_EXPORT2 -umsg_autoQuoteApostrophe(const UChar* pattern, +U_CAPI int32_t U_EXPORT2 +umsg_autoQuoteApostrophe(const UChar* pattern, int32_t patternLength, UChar* dest, int32_t destCapacity, diff --git a/deps/icu-small/source/i18n/unicode/unirepl.h b/deps/icu-small/source/i18n/unicode/unirepl.h index 891a1d527fd84a..7f6edcf61ad801 100644 --- a/deps/icu-small/source/i18n/unicode/unirepl.h +++ b/deps/icu-small/source/i18n/unicode/unirepl.h @@ -17,7 +17,7 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: UnicodeReplacer */ diff --git a/deps/icu-small/source/i18n/unicode/unum.h b/deps/icu-small/source/i18n/unicode/unum.h index 76c7d151357875..14f76168b61b5f 100644 --- a/deps/icu-small/source/i18n/unicode/unum.h +++ b/deps/icu-small/source/i18n/unicode/unum.h @@ -35,7 +35,7 @@ * \brief C API: Compatibility APIs for number formatting. * *

    Number Format C API

    - * + * *

    IMPORTANT: New users with are strongly encouraged to * see if unumberformatter.h fits their use case. Although not deprecated, * this header is provided for backwards compatibility only. @@ -143,7 +143,7 @@ */ typedef void* UNumberFormat; -/** The possible number format styles. +/** The possible number format styles. * @stable ICU 2.0 */ typedef enum UNumberFormatStyle { @@ -183,24 +183,24 @@ typedef enum UNumberFormatStyle { * @stable ICU 2.0 */ UNUM_SPELLOUT=5, - /** + /** * Ordinal rule-based format . The default ruleset can be specified/changed using * unum_setTextAttribute with UNUM_DEFAULT_RULESET; the available public rulesets * can be listed using unum_getTextAttribute with UNUM_PUBLIC_RULESETS. * @stable ICU 3.0 */ UNUM_ORDINAL=6, - /** - * Duration rule-based format + /** + * Duration rule-based format * @stable ICU 3.0 */ UNUM_DURATION=7, - /** + /** * Numbering system rule-based format * @stable ICU 4.2 */ UNUM_NUMBERING_SYSTEM=8, - /** + /** * Rule-based format defined by a pattern string. * @stable ICU 3.0 */ @@ -224,7 +224,7 @@ typedef enum UNumberFormatStyle { */ UNUM_CURRENCY_ACCOUNTING=12, /** - * Currency format with a currency symbol given CASH usage, e.g., + * Currency format with a currency symbol given CASH usage, e.g., * "NT$3" instead of "NT$3.23". * @stable ICU 54 */ @@ -298,7 +298,7 @@ typedef enum UNumberFormatRoundingMode { #endif /* U_HIDE_DEPRECATED_API */ UNUM_ROUND_HALFDOWN = UNUM_ROUND_HALFEVEN + 1, UNUM_ROUND_HALFUP, - /** + /** * ROUND_UNNECESSARY reports an error if formatted result is not exact. * @stable ICU 4.8 */ @@ -322,7 +322,7 @@ typedef enum UNumberFormatRoundingMode { #endif // U_HIDE_DRAFT_API } UNumberFormatRoundingMode; -/** The possible number format pad positions. +/** The possible number format pad positions. * @stable ICU 2.0 */ typedef enum UNumberFormatPadPosition { @@ -412,29 +412,27 @@ typedef enum UNumberFormatFields { } UNumberFormatFields; -#ifndef U_HIDE_DRAFT_API /** * Selectors with special numeric values to use locale default minimum grouping * digits for the DecimalFormat/UNumberFormat setMinimumGroupingDigits method. * Do not use these constants with the [U]NumberFormatter API. * - * @draft ICU 68 + * @stable ICU 68 */ typedef enum UNumberFormatMinimumGroupingDigits { /** * Display grouping using the default strategy for all locales. - * @draft ICU 68 + * @stable ICU 68 */ UNUM_MINIMUM_GROUPING_DIGITS_AUTO = -2, /** * Display grouping using locale defaults, except do not show grouping on * values smaller than 10000 (such that there is a minimum of two digits * before the first separator). - * @draft ICU 68 + * @stable ICU 68 */ UNUM_MINIMUM_GROUPING_DIGITS_MIN2 = -3, } UNumberFormatMinimumGroupingDigits; -#endif // U_HIDE_DRAFT_API /** * Create and return a new UNumberFormat for formatting and parsing @@ -455,7 +453,7 @@ typedef enum UNumberFormatMinimumGroupingDigits { *

    NOTE:: New users with are strongly encouraged to * use unumf_openForSkeletonAndLocale instead of unum_open. * - * @param pattern A pattern specifying the format to use. + * @param pattern A pattern specifying the format to use. * This parameter is ignored unless the style is * UNUM_PATTERN_DECIMAL or UNUM_PATTERN_RULEBASED. * @param patternLength The number of characters in the pattern, or -1 @@ -473,7 +471,7 @@ typedef enum UNumberFormatMinimumGroupingDigits { * @see DecimalFormat * @stable ICU 2.0 */ -U_CAPI UNumberFormat* U_EXPORT2 +U_CAPI UNumberFormat* U_EXPORT2 unum_open( UNumberFormatStyle style, const UChar* pattern, int32_t patternLength, @@ -488,7 +486,7 @@ unum_open( UNumberFormatStyle style, * @param fmt The formatter to close. * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 unum_close(UNumberFormat* fmt); #if U_SHOW_CPLUSPLUS_API @@ -518,7 +516,7 @@ U_NAMESPACE_END * @return A pointer to a UNumberFormat identical to fmt. * @stable ICU 2.0 */ -U_CAPI UNumberFormat* U_EXPORT2 +U_CAPI UNumberFormat* U_EXPORT2 unum_clone(const UNumberFormat *fmt, UErrorCode *status); @@ -546,7 +544,7 @@ unum_clone(const UNumberFormat *fmt, * @see UFieldPosition * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_format( const UNumberFormat* fmt, int32_t number, UChar* result, @@ -578,7 +576,7 @@ unum_format( const UNumberFormat* fmt, * @see UFieldPosition * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_formatInt64(const UNumberFormat *fmt, int64_t number, UChar* result, @@ -610,7 +608,7 @@ unum_formatInt64(const UNumberFormat *fmt, * @see UFieldPosition * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_formatDouble( const UNumberFormat* fmt, double number, UChar* result, @@ -695,9 +693,9 @@ unum_formatDoubleForFields(const UNumberFormat* format, * @see unum_parseInt64 * @see unum_parseDouble * @see UFieldPosition -* @stable ICU 4.4 +* @stable ICU 4.4 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_formatDecimal( const UNumberFormat* fmt, const char * number, int32_t length, @@ -792,7 +790,7 @@ unum_formatUFormattable(const UNumberFormat* fmt, * @see unum_formatDouble * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_parse( const UNumberFormat* fmt, const UChar* text, int32_t textLength, @@ -818,7 +816,7 @@ unum_parse( const UNumberFormat* fmt, * @see unum_formatDouble * @stable ICU 2.8 */ -U_CAPI int64_t U_EXPORT2 +U_CAPI int64_t U_EXPORT2 unum_parseInt64(const UNumberFormat* fmt, const UChar* text, int32_t textLength, @@ -844,7 +842,7 @@ unum_parseInt64(const UNumberFormat* fmt, * @see unum_formatDouble * @stable ICU 2.0 */ -U_CAPI double U_EXPORT2 +U_CAPI double U_EXPORT2 unum_parseDouble( const UNumberFormat* fmt, const UChar* text, int32_t textLength, @@ -879,7 +877,7 @@ unum_parseDouble( const UNumberFormat* fmt, * @see unum_formatDouble * @stable ICU 4.4 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_parseDecimal(const UNumberFormat* fmt, const UChar* text, int32_t textLength, @@ -959,7 +957,7 @@ unum_parseToUFormattable(const UNumberFormat* fmt, * @see DecimalFormat * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 unum_applyPattern( UNumberFormat *format, UBool localized, const UChar *pattern, @@ -978,7 +976,7 @@ unum_applyPattern( UNumberFormat *format, * @see unum_countAvailable * @stable ICU 2.0 */ -U_CAPI const char* U_EXPORT2 +U_CAPI const char* U_EXPORT2 unum_getAvailable(int32_t localeIndex); /** @@ -990,7 +988,7 @@ unum_getAvailable(int32_t localeIndex); * @see unum_getAvailable * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_countAvailable(void); #if UCONFIG_HAVE_PARSEALLINPUT @@ -1067,7 +1065,7 @@ typedef enum UNumberFormatAttribute { */ UNUM_PARSE_ALL_INPUT = 20, #endif - /** + /** * Scale, which adjusts the position of the * decimal point when formatting. Amounts will be multiplied by 10 ^ (scale) * before they are formatted. The default value for the scale is 0 ( no adjustment ). @@ -1090,9 +1088,9 @@ typedef enum UNumberFormatAttribute { */ UNUM_MINIMUM_GROUPING_DIGITS = 22, - /** + /** * if this attribute is set to 0, it is set to UNUM_CURRENCY_STANDARD purpose, - * otherwise it is UNUM_CURRENCY_CASH purpose + * otherwise it is UNUM_CASH_CURRENCY purpose * Default: 0 (UNUM_CURRENCY_STANDARD purpose) * @stable ICU 54 */ @@ -1111,7 +1109,7 @@ typedef enum UNumberFormatAttribute { * @stable ICU 50 */ UNUM_FORMAT_FAIL_IF_MORE_THAN_MAX_DIGITS = 0x1000, - /** + /** * if this attribute is set to 1, specifies that, if the pattern doesn't contain an exponent, the exponent will not be parsed. If the pattern does contain an exponent, this attribute has no effect. * Has no effect on formatting. * Default: 0 (unset) @@ -1119,8 +1117,8 @@ typedef enum UNumberFormatAttribute { */ UNUM_PARSE_NO_EXPONENT = 0x1001, - /** - * if this attribute is set to 1, specifies that, if the pattern contains a + /** + * if this attribute is set to 1, specifies that, if the pattern contains a * decimal mark the input is required to have one. If this attribute is set to 0, * specifies that input does not have to contain a decimal mark. * Has no effect on formatting. @@ -1171,7 +1169,7 @@ typedef enum UNumberFormatAttribute { * @see unum_setTextAttribute * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_getAttribute(const UNumberFormat* fmt, UNumberFormatAttribute attr); @@ -1194,7 +1192,7 @@ unum_getAttribute(const UNumberFormat* fmt, * @see unum_setTextAttribute * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 unum_setAttribute( UNumberFormat* fmt, UNumberFormatAttribute attr, int32_t newValue); @@ -1214,7 +1212,7 @@ unum_setAttribute( UNumberFormat* fmt, * @see unum_setTextAttribute * @stable ICU 2.0 */ -U_CAPI double U_EXPORT2 +U_CAPI double U_EXPORT2 unum_getDoubleAttribute(const UNumberFormat* fmt, UNumberFormatAttribute attr); @@ -1232,7 +1230,7 @@ unum_getDoubleAttribute(const UNumberFormat* fmt, * @see unum_setTextAttribute * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 unum_setDoubleAttribute( UNumberFormat* fmt, UNumberFormatAttribute attr, double newValue); @@ -1289,7 +1287,7 @@ typedef enum UNumberFormatTextAttribute { * @see unum_setAttribute * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_getTextAttribute( const UNumberFormat* fmt, UNumberFormatTextAttribute tag, UChar* result, @@ -1312,7 +1310,7 @@ unum_getTextAttribute( const UNumberFormat* fmt, * @see unum_setAttribute * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 unum_setTextAttribute( UNumberFormat* fmt, UNumberFormatTextAttribute tag, const UChar* newValue, @@ -1335,7 +1333,7 @@ unum_setTextAttribute( UNumberFormat* fmt, * @see DecimalFormat * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_toPattern( const UNumberFormat* fmt, UBool isPatternLocalized, UChar* result, @@ -1383,7 +1381,7 @@ typedef enum UNumberFormatSymbol { /** Significant digit symbol * @stable ICU 3.0 */ UNUM_SIGNIFICANT_DIGIT_SYMBOL = 16, - /** The monetary grouping separator + /** The monetary grouping separator * @stable ICU 3.6 */ UNUM_MONETARY_GROUPING_SEPARATOR_SYMBOL = 17, @@ -1429,12 +1427,19 @@ typedef enum UNumberFormatSymbol { */ UNUM_EXPONENT_MULTIPLICATION_SYMBOL = 27, +#ifndef U_HIDE_INTERNAL_API + /** Approximately sign. + * @internal + */ + UNUM_APPROXIMATELY_SIGN_SYMBOL = 28, +#endif + #ifndef U_HIDE_DEPRECATED_API /** * One more than the highest normal UNumberFormatSymbol value. * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420. */ - UNUM_FORMAT_SYMBOL_COUNT = 28 + UNUM_FORMAT_SYMBOL_COUNT = 29 #endif /* U_HIDE_DEPRECATED_API */ } UNumberFormatSymbol; @@ -1486,7 +1491,7 @@ unum_setSymbol(UNumberFormat *fmt, * Get the locale for this number format object. * You can choose between valid and actual locale. * @param fmt The formatter to get the locale from - * @param type type of the locale we're looking for (valid or actual) + * @param type type of the locale we're looking for (valid or actual) * @param status error code for the operation * @return the locale name * @stable ICU 2.8 @@ -1494,7 +1499,7 @@ unum_setSymbol(UNumberFormat *fmt, U_CAPI const char* U_EXPORT2 unum_getLocaleByType(const UNumberFormat *fmt, ULocDataLocaleType type, - UErrorCode* status); + UErrorCode* status); /** * Set a particular UDisplayContext value in the formatter, such as diff --git a/deps/icu-small/source/i18n/unicode/unumberformatter.h b/deps/icu-small/source/i18n/unicode/unumberformatter.h index 341d9e4ad9c628..cb980cd94ddfc8 100644 --- a/deps/icu-small/source/i18n/unicode/unumberformatter.h +++ b/deps/icu-small/source/i18n/unicode/unumberformatter.h @@ -204,7 +204,6 @@ typedef enum UNumberUnitWidth { */ UNUM_UNIT_WIDTH_ISO_CODE = 3, -#ifndef U_HIDE_DRAFT_API /** * Use the formal variant of the currency symbol; for example, "NT$" for the New Taiwan * dollar in zh-TW. @@ -212,7 +211,7 @@ typedef enum UNumberUnitWidth { *

    * Behavior of this option with non-currency units is not defined at this time. * - * @draft ICU 68 + * @stable ICU 68 */ UNUM_UNIT_WIDTH_FORMAL = 4, @@ -223,10 +222,9 @@ typedef enum UNumberUnitWidth { *

    * Behavior of this option with non-currency units is not defined at this time. * - * @draft ICU 68 + * @stable ICU 68 */ UNUM_UNIT_WIDTH_VARIANT = 5, -#endif // U_HIDE_DRAFT_API /** * Format the number according to the specified unit, but do not display the unit. For currencies, apply @@ -503,10 +501,10 @@ typedef enum UNumberDecimalSeparatorDisplay { #ifndef U_FORCE_HIDE_DRAFT_API /** * An enum declaring how to render trailing zeros. - * + * * - UNUM_TRAILING_ZERO_AUTO: 0.90, 1.00, 1.10 * - UNUM_TRAILING_ZERO_HIDE_IF_WHOLE: 0.90, 1, 1.10 - * + * * @draft ICU 69 */ typedef enum UNumberTrailingZeroDisplay { @@ -772,7 +770,6 @@ unumf_resultGetAllFieldPositions(const UFormattedNumber* uresult, UFieldPosition UErrorCode* ec); -#ifndef U_HIDE_DRAFT_API /** * Extracts the formatted number as a "numeric string" conforming to the * syntax defined in the Decimal Arithmetic Specification, available at @@ -789,7 +786,7 @@ unumf_resultGetAllFieldPositions(const UFormattedNumber* uresult, UFieldPosition * If U_BUFFER_OVERFLOW_ERROR: Returns number of chars for * preflighting. * @return Number of chars in the data. Does not include a trailing NUL. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI int32_t U_EXPORT2 unumf_resultToDecimalNumber( @@ -797,7 +794,6 @@ unumf_resultToDecimalNumber( char* dest, int32_t destCapacity, UErrorCode* ec); -#endif // U_HIDE_DRAFT_API /** diff --git a/deps/icu-small/source/i18n/unicode/unumberrangeformatter.h b/deps/icu-small/source/i18n/unicode/unumberrangeformatter.h index e1c5a5760fd55a..4e92fe29e25059 100644 --- a/deps/icu-small/source/i18n/unicode/unumberrangeformatter.h +++ b/deps/icu-small/source/i18n/unicode/unumberrangeformatter.h @@ -193,20 +193,18 @@ typedef enum UNumberRangeIdentityResult { * @internal */ UNUM_IDENTITY_RESULT_COUNT -#endif +#endif /* U_HIDE_INTERNAL_API */ } UNumberRangeIdentityResult; -#ifndef U_HIDE_DRAFT_API - struct UNumberRangeFormatter; /** * C-compatible version of icu::number::LocalizedNumberRangeFormatter. * * NOTE: This is a C-compatible API; C++ users should build against numberrangeformatter.h instead. * - * @draft ICU 68 + * @stable ICU 68 */ typedef struct UNumberRangeFormatter UNumberRangeFormatter; @@ -217,7 +215,7 @@ struct UFormattedNumberRange; * * NOTE: This is a C-compatible API; C++ users should build against numberrangeformatter.h instead. * - * @draft ICU 68 + * @stable ICU 68 */ typedef struct UFormattedNumberRange UFormattedNumberRange; @@ -241,7 +239,7 @@ typedef struct UFormattedNumberRange UFormattedNumberRange; * @param perror A parse error struct populated if an error occurs when parsing. Can be NULL. * If no error occurs, perror->offset will be set to -1. * @param ec Set if an error occurs. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI UNumberRangeFormatter* U_EXPORT2 unumrf_openForSkeletonWithCollapseAndIdentityFallback( @@ -260,7 +258,7 @@ unumrf_openForSkeletonWithCollapseAndIdentityFallback( * passed to a format function. * * @param ec Set if an error occurs. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI UFormattedNumberRange* U_EXPORT2 unumrf_openResult(UErrorCode* ec); @@ -279,7 +277,7 @@ unumrf_openResult(UErrorCode* ec); * @param second The second (usually larger) number in the range. * @param uresult The object that will be mutated to store the result; see unumrf_openResult. * @param ec Set if an error occurs. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI void U_EXPORT2 unumrf_formatDoubleRange( @@ -307,7 +305,7 @@ unumrf_formatDoubleRange( * @param secondLen The length of the second decimal number string. * @param uresult The object that will be mutated to store the result; see unumrf_openResult. * @param ec Set if an error occurs. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI void U_EXPORT2 unumrf_formatDecimalRange( @@ -332,7 +330,7 @@ unumrf_formatDecimalRange( * @param uresult The object containing the formatted number range. * @param ec Set if an error occurs. * @return A UFormattedValue owned by the input object. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI const UFormattedValue* U_EXPORT2 unumrf_resultAsValue(const UFormattedNumberRange* uresult, UErrorCode* ec); @@ -346,7 +344,7 @@ unumrf_resultAsValue(const UFormattedNumberRange* uresult, UErrorCode* ec); * @param uresult The object containing the formatted number range. * @param ec Set if an error occurs. * @return The identity result; see UNumberRangeIdentityResult. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI UNumberRangeIdentityResult U_EXPORT2 unumrf_resultGetIdentityResult( @@ -358,7 +356,7 @@ unumrf_resultGetIdentityResult( * Extracts the first formatted number as a decimal number. This endpoint * is useful for obtaining the exact number being printed after scaling * and rounding have been applied by the number range formatting pipeline. - * + * * The syntax of the unformatted number is a "numeric string" * as defined in the Decimal Arithmetic Specification, available at * http://speleotrove.com/decimal @@ -371,7 +369,7 @@ unumrf_resultGetIdentityResult( * If U_BUFFER_OVERFLOW_ERROR: Returns number of chars for * preflighting. * @return Number of chars in the data. Does not include a trailing NUL. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI int32_t U_EXPORT2 unumrf_resultGetFirstDecimalNumber( @@ -385,7 +383,7 @@ unumrf_resultGetFirstDecimalNumber( * Extracts the second formatted number as a decimal number. This endpoint * is useful for obtaining the exact number being printed after scaling * and rounding have been applied by the number range formatting pipeline. - * + * * The syntax of the unformatted number is a "numeric string" * as defined in the Decimal Arithmetic Specification, available at * http://speleotrove.com/decimal @@ -398,7 +396,7 @@ unumrf_resultGetFirstDecimalNumber( * If U_BUFFER_OVERFLOW_ERROR: Returns number of chars for * preflighting. * @return Number of chars in the data. Does not include a trailing NUL. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI int32_t U_EXPORT2 unumrf_resultGetSecondDecimalNumber( @@ -412,7 +410,7 @@ unumrf_resultGetSecondDecimalNumber( * Releases the UNumberFormatter created by unumf_openForSkeletonAndLocale(). * * @param uformatter An object created by unumf_openForSkeletonAndLocale(). - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI void U_EXPORT2 unumrf_close(UNumberRangeFormatter* uformatter); @@ -422,7 +420,7 @@ unumrf_close(UNumberRangeFormatter* uformatter); * Releases the UFormattedNumber created by unumf_openResult(). * * @param uresult An object created by unumf_openResult(). - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI void U_EXPORT2 unumrf_closeResult(UFormattedNumberRange* uresult); @@ -445,7 +443,7 @@ U_NAMESPACE_BEGIN * * @see LocalPointerBase * @see LocalPointer - * @draft ICU 68 + * @stable ICU 68 */ U_DEFINE_LOCAL_OPEN_POINTER(LocalUNumberRangeFormatterPointer, UNumberRangeFormatter, unumrf_close); @@ -462,14 +460,12 @@ U_DEFINE_LOCAL_OPEN_POINTER(LocalUNumberRangeFormatterPointer, UNumberRangeForma * * @see LocalPointerBase * @see LocalPointer - * @draft ICU 68 + * @stable ICU 68 */ U_DEFINE_LOCAL_OPEN_POINTER(LocalUFormattedNumberRangePointer, UFormattedNumberRange, unumrf_closeResult); U_NAMESPACE_END #endif // U_SHOW_CPLUSPLUS_API -#endif // U_HIDE_DRAFT_API - #endif /* #if !UCONFIG_NO_FORMATTING */ #endif //__UNUMBERRANGEFORMATTER_H__ diff --git a/deps/icu-small/source/i18n/unicode/unumsys.h b/deps/icu-small/source/i18n/unicode/unumsys.h index c767cf3d79a09c..fe713ea77a6c6d 100644 --- a/deps/icu-small/source/i18n/unicode/unumsys.h +++ b/deps/icu-small/source/i18n/unicode/unumsys.h @@ -24,7 +24,7 @@ * \file * \brief C API: UNumberingSystem, information about numbering systems * - * Defines numbering systems. A numbering system describes the scheme by which + * Defines numbering systems. A numbering system describes the scheme by which * numbers are to be presented to the end user. In its simplest form, a numbering * system describes the set of digit characters that are to be used to display * numbers, such as Western digits, Thai digits, Arabic-Indic digits, etc., in a diff --git a/deps/icu-small/source/i18n/unicode/upluralrules.h b/deps/icu-small/source/i18n/unicode/upluralrules.h index 71a45ddf85b5cd..983651b1cac069 100644 --- a/deps/icu-small/source/i18n/unicode/upluralrules.h +++ b/deps/icu-small/source/i18n/unicode/upluralrules.h @@ -39,8 +39,9 @@ struct UFormattedNumberRange; * returns the keyword for the first condition that matches the number. * If none match, the default rule(other) is returned. * - * For more information, see the LDML spec, C.11 Language Plural Rules: - * http://www.unicode.org/reports/tr35/#Language_Plural_Rules + * For more information, see the + * LDML spec, Part 3.5 Language Plural Rules: + * https://www.unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules * * Keywords: ICU locale data has 6 predefined values - * 'zero', 'one', 'two', 'few', 'many' and 'other'. Callers need to check @@ -48,7 +49,7 @@ struct UFormattedNumberRange; * * These are based on CLDR Language Plural Rules. For these * predefined rules, see the CLDR page at - * http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html + * https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/language_plural_rules.html */ /** @@ -180,7 +181,6 @@ uplrules_selectFormatted(const UPluralRules *uplrules, UChar *keyword, int32_t capacity, UErrorCode *status); -#ifndef U_HIDE_DRAFT_API /** * Given a formatted number range, returns the overall plural form of the * range. For example, "3-5" returns "other" in English. @@ -194,14 +194,13 @@ uplrules_selectFormatted(const UPluralRules *uplrules, * @param capacity The capacity of the keyword buffer. * @param status A pointer to a UErrorCode to receive any errors. * @return The length of the keyword. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI int32_t U_EXPORT2 uplrules_selectForRange(const UPluralRules *uplrules, const struct UFormattedNumberRange* urange, UChar *keyword, int32_t capacity, UErrorCode *status); -#endif // U_HIDE_DRAFT_API #ifndef U_HIDE_INTERNAL_API /** diff --git a/deps/icu-small/source/i18n/unicode/uregex.h b/deps/icu-small/source/i18n/unicode/uregex.h index 70956882471ab4..e946e632623a54 100644 --- a/deps/icu-small/source/i18n/unicode/uregex.h +++ b/deps/icu-small/source/i18n/unicode/uregex.h @@ -51,9 +51,9 @@ typedef struct URegularExpression URegularExpression; */ typedef enum URegexpFlag{ -#ifndef U_HIDE_DRAFT_API - /** Forces normalization of pattern and strings. - Not implemented yet, just a placeholder, hence draft. +#ifndef U_HIDE_DRAFT_API + /** Forces normalization of pattern and strings. + Not implemented yet, just a placeholder, hence draft. @draft ICU 2.4 */ UREGEX_CANON_EQ = 128, #endif /* U_HIDE_DRAFT_API */ @@ -66,10 +66,10 @@ typedef enum URegexpFlag{ /** If set, '.' matches line terminators, otherwise '.' matching stops at line end. * @stable ICU 2.4 */ UREGEX_DOTALL = 32, - - /** If set, treat the entire pattern as a literal string. - * Metacharacters or escape sequences in the input sequence will be given - * no special meaning. + + /** If set, treat the entire pattern as a literal string. + * Metacharacters or escape sequences in the input sequence will be given + * no special meaning. * * The flag UREGEX_CASE_INSENSITIVE retains its impact * on matching when used in conjunction with this flag. @@ -84,7 +84,7 @@ typedef enum URegexpFlag{ * otherwise, match only at start and end of input string. * @stable ICU 2.4 */ UREGEX_MULTILINE = 8, - + /** Unix-only line endings. * When this mode is enabled, only \\u000a is recognized as a line ending * in the behavior of ., ^, and $. @@ -117,9 +117,9 @@ typedef enum URegexpFlag{ * string form into an internal representation using the specified match mode flags. * The resulting regular expression handle can then be used to perform various * matching operations. + * * - * - * @param pattern The Regular Expression pattern to be compiled. + * @param pattern The Regular Expression pattern to be compiled. * @param patternLength The length of the pattern, or -1 if the pattern is * NUL terminated. * @param flags Flags that alter the default matching behavior for @@ -151,7 +151,7 @@ uregex_open( const UChar *pattern, * UText struct itself remains with the caller. This is to match the behavior of * uregex_open(). * - * @param pattern The Regular Expression pattern to be compiled. + * @param pattern The Regular Expression pattern to be compiled. * @param flags Flags that alter the default matching behavior for * the regular expression, UREGEX_CASE_INSENSITIVE, for * example. For default behavior, set this parameter to zero. @@ -178,8 +178,8 @@ uregex_openUText(UText *pattern, * This function is the same as uregex_open, except that the pattern * is supplied as an 8 bit char * string in the default code page. * - * @param pattern The Regular Expression pattern to be compiled, - * NUL terminated. + * @param pattern The Regular Expression pattern to be compiled, + * NUL terminated. * @param flags Flags that alter the default matching behavior for * the regular expression, UREGEX_CASE_INSENSITIVE, for * example. For default behavior, set this parameter to zero. @@ -210,7 +210,7 @@ uregex_openC( const char *pattern, * @param regexp The regular expression to be closed. * @stable ICU 3.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uregex_close(URegularExpression *regexp); #if U_SHOW_CPLUSPLUS_API @@ -250,7 +250,7 @@ U_NAMESPACE_END * @return the cloned copy of the compiled regular expression. * @stable ICU 3.0 */ -U_CAPI URegularExpression * U_EXPORT2 +U_CAPI URegularExpression * U_EXPORT2 uregex_clone(const URegularExpression *regexp, UErrorCode *status); /** @@ -270,7 +270,7 @@ uregex_clone(const URegularExpression *regexp, UErrorCode *status); * will remain valid until the regular expression is closed. * @stable ICU 3.0 */ -U_CAPI const UChar * U_EXPORT2 +U_CAPI const UChar * U_EXPORT2 uregex_pattern(const URegularExpression *regexp, int32_t *patLength, UErrorCode *status); @@ -286,7 +286,7 @@ uregex_pattern(const URegularExpression *regexp, * * @stable ICU 4.6 */ -U_CAPI UText * U_EXPORT2 +U_CAPI UText * U_EXPORT2 uregex_patternUText(const URegularExpression *regexp, UErrorCode *status); @@ -298,7 +298,7 @@ uregex_patternUText(const URegularExpression *regexp, * @see URegexpFlag * @stable ICU 3.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_flags(const URegularExpression *regexp, UErrorCode *status); @@ -311,7 +311,7 @@ uregex_flags(const URegularExpression *regexp, * Regular expression matching operations work directly on the application's * string data. No copy is made. The subject string data must not be * altered after calling this function until after all regular expression - * operations involving this string data are completed. + * operations involving this string data are completed. *

    * Zero length strings are permitted. In this case, no subsequent match * operation will dereference the text string pointer. @@ -323,7 +323,7 @@ uregex_flags(const URegularExpression *regexp, * @param status Receives errors detected by this function. * @stable ICU 3.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uregex_setText(URegularExpression *regexp, const UChar *text, int32_t textLength, @@ -338,7 +338,7 @@ uregex_setText(URegularExpression *regexp, * Regular expression matching operations work directly on the application's * string data; only a shallow clone is made. The subject string data must not be * altered after calling this function until after all regular expression - * operations involving this string data are completed. + * operations involving this string data are completed. * * @param regexp The compiled regular expression. * @param text The subject text string. @@ -346,13 +346,13 @@ uregex_setText(URegularExpression *regexp, * * @stable ICU 4.6 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uregex_setUText(URegularExpression *regexp, UText *text, UErrorCode *status); /** - * Get the subject text that is currently associated with this + * Get the subject text that is currently associated with this * regular expression object. If the input was supplied using uregex_setText(), * that pointer will be returned. Otherwise, the characters in the input will * be extracted to a buffer and returned. In either case, ownership remains @@ -361,7 +361,7 @@ uregex_setUText(URegularExpression *regexp, * This function will work even if the input was originally specified as a UText. * * @param regexp The compiled regular expression. - * @param textLength The length of the string is returned in this output parameter. + * @param textLength The length of the string is returned in this output parameter. * A NULL pointer may be used here if the * text length is not needed, as would be the case if * the text is known in advance to be a NUL terminated @@ -371,13 +371,13 @@ uregex_setUText(URegularExpression *regexp, * this regular expression. * @stable ICU 3.0 */ -U_CAPI const UChar * U_EXPORT2 +U_CAPI const UChar * U_EXPORT2 uregex_getText(URegularExpression *regexp, int32_t *textLength, UErrorCode *status); /** - * Get the subject text that is currently associated with this + * Get the subject text that is currently associated with this * regular expression object. * * This function will work even if the input was originally specified as a UChar string. @@ -392,7 +392,7 @@ uregex_getText(URegularExpression *regexp, * * @stable ICU 4.6 */ -U_CAPI UText * U_EXPORT2 +U_CAPI UText * U_EXPORT2 uregex_getUText(URegularExpression *regexp, UText *dest, UErrorCode *status); @@ -402,19 +402,19 @@ uregex_getUText(URegularExpression *regexp, * without changing any other aspect of the matching state. * The new and previous text strings must have the same content. * - * This function is intended for use in environments where ICU is operating on + * This function is intended for use in environments where ICU is operating on * strings that may move around in memory. It provides a mechanism for notifying * ICU that the string has been relocated, and providing a new UText to access the * string in its new position. * * Note that the regular expression implementation never copies the underlying text - * of a string being matched, but always operates directly on the original text - * provided by the user. Refreshing simply drops the references to the old text + * of a string being matched, but always operates directly on the original text + * provided by the user. Refreshing simply drops the references to the old text * and replaces them with references to the new. * * Caution: this function is normally used only by very specialized - * system-level code. One example use case is with garbage collection - * that moves the text in memory. + * system-level code. One example use case is with garbage collection + * that moves the text in memory. * * @param regexp The compiled regular expression. * @param text The new (moved) text string. @@ -422,7 +422,7 @@ uregex_getUText(URegularExpression *regexp, * * @stable ICU 4.8 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uregex_refreshUText(URegularExpression *regexp, UText *text, UErrorCode *status); @@ -447,7 +447,7 @@ uregex_refreshUText(URegularExpression *regexp, * @return true if there is a match * @stable ICU 3.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 uregex_matches(URegularExpression *regexp, int32_t startIndex, UErrorCode *status); @@ -473,7 +473,7 @@ uregex_matches(URegularExpression *regexp, * @return true if there is a match * @stable ICU 4.6 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 uregex_matches64(URegularExpression *regexp, int64_t startIndex, UErrorCode *status); @@ -486,7 +486,7 @@ uregex_matches64(URegularExpression *regexp, *

    If startIndex is >= 0 any input region that was set for this * URegularExpression is reset before the operation begins. * - *

    If the specified starting index == -1 the match begins at the start of the input + *

    If the specified starting index == -1 the match begins at the start of the input * region, or at the start of the full string if no region has been specified. * This corresponds directly with Matcher.lookingAt() in Java. * @@ -501,7 +501,7 @@ uregex_matches64(URegularExpression *regexp, * @return true if there is a match. * @stable ICU 3.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 uregex_lookingAt(URegularExpression *regexp, int32_t startIndex, UErrorCode *status); @@ -515,7 +515,7 @@ uregex_lookingAt(URegularExpression *regexp, *

    If startIndex is >= 0 any input region that was set for this * URegularExpression is reset before the operation begins. * - *

    If the specified starting index == -1 the match begins at the start of the input + *

    If the specified starting index == -1 the match begins at the start of the input * region, or at the start of the full string if no region has been specified. * This corresponds directly with Matcher.lookingAt() in Java. * @@ -530,7 +530,7 @@ uregex_lookingAt(URegularExpression *regexp, * @return true if there is a match. * @stable ICU 4.6 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 uregex_lookingAt64(URegularExpression *regexp, int64_t startIndex, UErrorCode *status); @@ -554,9 +554,9 @@ uregex_lookingAt64(URegularExpression *regexp, * @return true if a match is found. * @stable ICU 3.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 uregex_find(URegularExpression *regexp, - int32_t startIndex, + int32_t startIndex, UErrorCode *status); /** @@ -579,15 +579,15 @@ uregex_find(URegularExpression *regexp, * @return true if a match is found. * @stable ICU 4.6 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 uregex_find64(URegularExpression *regexp, - int64_t startIndex, + int64_t startIndex, UErrorCode *status); /** - * Find the next pattern match in the input string. Begin searching - * the input at the location following the end of he previous match, - * or at the start of the string (or region) if there is no + * Find the next pattern match in the input string. Begin searching + * the input at the location following the end of he previous match, + * or at the start of the string (or region) if there is no * previous match. If a match is found, uregex_start(), uregex_end(), and * uregex_group() will provide more information regarding the match. * @@ -597,7 +597,7 @@ uregex_find64(URegularExpression *regexp, * @see uregex_reset * @stable ICU 3.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 uregex_findNext(URegularExpression *regexp, UErrorCode *status); @@ -608,7 +608,7 @@ uregex_findNext(URegularExpression *regexp, * @return the number of capture groups * @stable ICU 3.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_groupCount(URegularExpression *regexp, UErrorCode *status); @@ -674,7 +674,7 @@ uregex_groupNumberFromCName(URegularExpression *regexp, * or -1 if no applicable match. * @stable ICU 3.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_group(URegularExpression *regexp, int32_t groupNum, UChar *dest, @@ -703,7 +703,7 @@ uregex_group(URegularExpression *regexp, * * @stable ICU 4.6 */ -U_CAPI UText * U_EXPORT2 +U_CAPI UText * U_EXPORT2 uregex_groupUText(URegularExpression *regexp, int32_t groupNum, UText *dest, @@ -720,11 +720,11 @@ uregex_groupUText(URegularExpression *regexp, * @param regexp The compiled regular expression. * @param groupNum The capture group number * @param status A reference to a UErrorCode to receive any errors. - * @return the starting (native) position in the input of the text matched + * @return the starting (native) position in the input of the text matched * by the specified group. * @stable ICU 3.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_start(URegularExpression *regexp, int32_t groupNum, UErrorCode *status); @@ -740,11 +740,11 @@ uregex_start(URegularExpression *regexp, * @param regexp The compiled regular expression. * @param groupNum The capture group number * @param status A reference to a UErrorCode to receive any errors. - * @return the starting (native) position in the input of the text matched + * @return the starting (native) position in the input of the text matched * by the specified group. * @stable ICU 4.6 */ -U_CAPI int64_t U_EXPORT2 +U_CAPI int64_t U_EXPORT2 uregex_start64(URegularExpression *regexp, int32_t groupNum, UErrorCode *status); @@ -762,7 +762,7 @@ uregex_start64(URegularExpression *regexp, * @return the (native) index of the position following the last matched character. * @stable ICU 3.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_end(URegularExpression *regexp, int32_t groupNum, UErrorCode *status); @@ -781,7 +781,7 @@ uregex_end(URegularExpression *regexp, * @return the (native) index of the position following the last matched character. * @stable ICU 4.6 */ -U_CAPI int64_t U_EXPORT2 +U_CAPI int64_t U_EXPORT2 uregex_end64(URegularExpression *regexp, int32_t groupNum, UErrorCode *status); @@ -789,7 +789,7 @@ uregex_end64(URegularExpression *regexp, /** * Reset any saved state from the previous match. Has the effect of * causing uregex_findNext to begin at the specified index, and causing - * uregex_start(), uregex_end() and uregex_group() to return an error + * uregex_start(), uregex_end() and uregex_group() to return an error * indicating that there is no match information available. Clears any * match region that may have been set. * @@ -799,7 +799,7 @@ uregex_end64(URegularExpression *regexp, * @param status A reference to a UErrorCode to receive any errors. * @stable ICU 3.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uregex_reset(URegularExpression *regexp, int32_t index, UErrorCode *status); @@ -808,7 +808,7 @@ uregex_reset(URegularExpression *regexp, * 64bit version of uregex_reset. * Reset any saved state from the previous match. Has the effect of * causing uregex_findNext to begin at the specified index, and causing - * uregex_start(), uregex_end() and uregex_group() to return an error + * uregex_start(), uregex_end() and uregex_group() to return an error * indicating that there is no match information available. Clears any * match region that may have been set. * @@ -818,7 +818,7 @@ uregex_reset(URegularExpression *regexp, * @param status A reference to a UErrorCode to receive any errors. * @stable ICU 4.6 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uregex_reset64(URegularExpression *regexp, int64_t index, UErrorCode *status); @@ -826,7 +826,7 @@ uregex_reset64(URegularExpression *regexp, /** * Sets the limits of the matching region for this URegularExpression. * The region is the part of the input string that will be considered when matching. - * Invoking this method resets any saved state from the previous match, + * Invoking this method resets any saved state from the previous match, * then sets the region to start at the index specified by the start parameter * and end at the index specified by the end parameter. * @@ -853,7 +853,7 @@ uregex_setRegion(URegularExpression *regexp, * 64bit version of uregex_setRegion. * Sets the limits of the matching region for this URegularExpression. * The region is the part of the input string that will be considered when matching. - * Invoking this method resets any saved state from the previous match, + * Invoking this method resets any saved state from the previous match, * then sets the region to start at the index specified by the start parameter * and end at the index specified by the end parameter. * @@ -870,7 +870,7 @@ uregex_setRegion(URegularExpression *regexp, * @param status A pointer to a UErrorCode to receive any errors. * @stable ICU 4.6 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uregex_setRegion64(URegularExpression *regexp, int64_t regionStart, int64_t regionLimit, @@ -885,12 +885,12 @@ uregex_setRegion64(URegularExpression *regexp, * @param regexp The compiled regular expression. * @param regionStart The (native) index to begin searches at. * @param regionLimit The (native) index to end searches at (exclusive). - * @param startIndex The index in the input text at which the next + * @param startIndex The index in the input text at which the next * match operation should begin. * @param status A pointer to a UErrorCode to receive any errors. * @stable ICU 4.6 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uregex_setRegionAndStart(URegularExpression *regexp, int64_t regionStart, int64_t regionLimit, @@ -920,7 +920,7 @@ uregex_regionStart(const URegularExpression *regexp, * @return The starting (native) index of this matcher's region. * @stable ICU 4.6 */ -U_CAPI int64_t U_EXPORT2 +U_CAPI int64_t U_EXPORT2 uregex_regionStart64(const URegularExpression *regexp, UErrorCode *status); @@ -949,7 +949,7 @@ uregex_regionEnd(const URegularExpression *regexp, * @return The ending point (native) of this matcher's region. * @stable ICU 4.6 */ -U_CAPI int64_t U_EXPORT2 +U_CAPI int64_t U_EXPORT2 uregex_regionEnd64(const URegularExpression *regexp, UErrorCode *status); @@ -987,8 +987,8 @@ uregex_hasTransparentBounds(const URegularExpression *regexp, * @param status A pointer to a UErrorCode to receive any errors. * @stable ICU 4.0 **/ -U_CAPI void U_EXPORT2 -uregex_useTransparentBounds(URegularExpression *regexp, +U_CAPI void U_EXPORT2 +uregex_useTransparentBounds(URegularExpression *regexp, UBool b, UErrorCode *status); @@ -1050,7 +1050,7 @@ uregex_hitEnd(const URegularExpression *regexp, * @return true if more input could cause the most recent match to no longer match. * @stable ICU 4.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 uregex_requireEnd(const URegularExpression *regexp, UErrorCode *status); @@ -1063,7 +1063,7 @@ uregex_requireEnd(const URegularExpression *regexp, * with the given replacement string. This is a convenience function that * provides a complete find-and-replace-all operation. * - * This method scans the input string looking for matches of the pattern. + * This method scans the input string looking for matches of the pattern. * Input that is not part of any match is copied unchanged to the * destination buffer. Matched regions are replaced in the output * buffer by the replacement string. The replacement string may contain @@ -1082,7 +1082,7 @@ uregex_requireEnd(const URegularExpression *regexp, * is still the full length of the untruncated string. * @stable ICU 3.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_replaceAll(URegularExpression *regexp, const UChar *replacementText, int32_t replacementLength, @@ -1095,7 +1095,7 @@ uregex_replaceAll(URegularExpression *regexp, * with the given replacement string. This is a convenience function that * provides a complete find-and-replace-all operation. * - * This method scans the input string looking for matches of the pattern. + * This method scans the input string looking for matches of the pattern. * Input that is not part of any match is copied unchanged to the * destination buffer. Matched regions are replaced in the output * buffer by the replacement string. The replacement string may contain @@ -1111,7 +1111,7 @@ uregex_replaceAll(URegularExpression *regexp, * * @stable ICU 4.6 */ -U_CAPI UText * U_EXPORT2 +U_CAPI UText * U_EXPORT2 uregex_replaceAllUText(URegularExpression *regexp, UText *replacement, UText *dest, @@ -1122,7 +1122,7 @@ uregex_replaceAllUText(URegularExpression *regexp, * with the given replacement string. This is a convenience function that * provides a complete find-and-replace operation. * - * This method scans the input string looking for a match of the pattern. + * This method scans the input string looking for a match of the pattern. * All input that is not part of the match is copied unchanged to the * destination buffer. The matched region is replaced in the output * buffer by the replacement string. The replacement string may contain @@ -1141,7 +1141,7 @@ uregex_replaceAllUText(URegularExpression *regexp, * is still the full length of the untruncated string. * @stable ICU 3.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_replaceFirst(URegularExpression *regexp, const UChar *replacementText, int32_t replacementLength, @@ -1154,7 +1154,7 @@ uregex_replaceFirst(URegularExpression *regexp, * with the given replacement string. This is a convenience function that * provides a complete find-and-replace operation. * - * This method scans the input string looking for a match of the pattern. + * This method scans the input string looking for a match of the pattern. * All input that is not part of the match is copied unchanged to the * destination buffer. The matched region is replaced in the output * buffer by the replacement string. The replacement string may contain @@ -1170,7 +1170,7 @@ uregex_replaceFirst(URegularExpression *regexp, * * @stable ICU 4.6 */ -U_CAPI UText * U_EXPORT2 +U_CAPI UText * U_EXPORT2 uregex_replaceFirstUText(URegularExpression *regexp, UText *replacement, UText *dest, @@ -1199,7 +1199,7 @@ uregex_replaceFirstUText(URegularExpression *regexp, *

    For simple, prepackaged, non-incremental find-and-replace * operations, see replaceFirst() or replaceAll().

    * - * @param regexp The regular expression object. + * @param regexp The regular expression object. * @param replacementText The string that will replace the matched portion of the * input string as it is copied to the destination buffer. * The replacement text may contain references ($1, for @@ -1214,7 +1214,7 @@ uregex_replaceFirstUText(URegularExpression *regexp, * @param destCapacity The size of the output buffer, On return, this * parameter will be updated to reflect the space remaining * unused in the output buffer. - * @param status A reference to a UErrorCode to receive any errors. + * @param status A reference to a UErrorCode to receive any errors. * @return The length of the result string. In the event that * destCapacity is inadequate, the full length of the * untruncated output string is returned. @@ -1222,7 +1222,7 @@ uregex_replaceFirstUText(URegularExpression *regexp, * @stable ICU 3.0 * */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_appendReplacement(URegularExpression *regexp, const UChar *replacementText, int32_t replacementLength, @@ -1242,17 +1242,17 @@ uregex_appendReplacement(URegularExpression *regexp, *

    For simple, prepackaged, non-incremental find-and-replace * operations, see replaceFirst() or replaceAll().

    * - * @param regexp The regular expression object. + * @param regexp The regular expression object. * @param replacementText The string that will replace the matched portion of the * input string as it is copied to the destination buffer. * The replacement text may contain references ($1, for * example) to capture groups from the match. * @param dest A mutable UText that will receive the result. Must not be NULL. - * @param status A reference to a UErrorCode to receive any errors. + * @param status A reference to a UErrorCode to receive any errors. * * @stable ICU 4.6 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uregex_appendReplacementUText(URegularExpression *regexp, UText *replacementText, UText *dest, @@ -1261,11 +1261,11 @@ uregex_appendReplacementUText(URegularExpression *regexp, /** * As the final step in a find-and-replace operation, append the remainder * of the input string, starting at the position following the last match, - * to the destination string. uregex_appendTail() is intended + * to the destination string. uregex_appendTail() is intended * to be invoked after one or more invocations of the * uregex_appendReplacement() function. * - * @param regexp The regular expression object. This is needed to + * @param regexp The regular expression object. This is needed to * obtain the input string and with the position * of the last match within it. * @param destBuf The buffer in which the results of the @@ -1275,14 +1275,14 @@ uregex_appendReplacementUText(URegularExpression *regexp, * @param destCapacity The size of the output buffer, On return, this * value will be updated to reflect the space remaining * unused in the output buffer. - * @param status A reference to a UErrorCode to receive any errors. + * @param status A reference to a UErrorCode to receive any errors. * @return The length of the result string. In the event that * destCapacity is inadequate, the full length of the * untruncated output string is returned. * * @stable ICU 3.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_appendTail(URegularExpression *regexp, UChar **destBuf, int32_t *destCapacity, @@ -1291,11 +1291,11 @@ uregex_appendTail(URegularExpression *regexp, /** * As the final step in a find-and-replace operation, append the remainder * of the input string, starting at the position following the last match, - * to the destination string. uregex_appendTailUText() is intended + * to the destination string. uregex_appendTailUText() is intended * to be invoked after one or more invocations of the * uregex_appendReplacementUText() function. * - * @param regexp The regular expression object. This is needed to + * @param regexp The regular expression object. This is needed to * obtain the input string and with the position * of the last match within it. * @param dest A mutable UText that will receive the result. Must not be NULL. @@ -1306,7 +1306,7 @@ uregex_appendTail(URegularExpression *regexp, * * @stable ICU 4.6 */ -U_CAPI UText * U_EXPORT2 +U_CAPI UText * U_EXPORT2 uregex_appendTailUText(URegularExpression *regexp, UText *dest, UErrorCode *status); @@ -1323,9 +1323,9 @@ uregex_appendTailUText(URegularExpression *regexp, * * If the delimiter pattern includes capture groups, the captured text will * also appear in the destination array of output strings, interspersed - * with the fields. This is similar to Perl, but differs from Java, + * with the fields. This is similar to Perl, but differs from Java, * which ignores the presence of capture groups in the pattern. - * + * * Trailing empty fields will always be returned, assuming sufficient * destination capacity. This differs from the default behavior for Java * and Perl where trailing empty fields are not returned. @@ -1333,7 +1333,7 @@ uregex_appendTailUText(URegularExpression *regexp, * The number of strings produced by the split operation is returned. * This count includes the strings from capture groups in the delimiter pattern. * This behavior differs from Java, which ignores capture groups. - * + * * @param regexp The compiled regular expression. * @param destBuf A (UChar *) buffer to receive the fields that * are extracted from the input string. These @@ -1343,7 +1343,7 @@ uregex_appendTailUText(URegularExpression *regexp, * set to NULL. * @param destCapacity The capacity of the destBuf. * @param requiredCapacity The actual capacity required of the destBuf. - * If destCapacity is too small, requiredCapacity will return + * If destCapacity is too small, requiredCapacity will return * the total capacity required to hold all of the output, and * a U_BUFFER_OVERFLOW_ERROR will be returned. * @param destFields An array to be filled with the position of each @@ -1362,7 +1362,7 @@ uregex_appendTailUText(URegularExpression *regexp, * @return The number of fields into which the input string was split. * @stable ICU 3.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_split( URegularExpression *regexp, UChar *destBuf, int32_t destCapacity, @@ -1397,7 +1397,7 @@ uregex_split( URegularExpression *regexp, * * @stable ICU 4.6 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_splitUText(URegularExpression *regexp, UText *destFields[], int32_t destFieldsCapacity, @@ -1492,7 +1492,7 @@ uregex_getStackLimit(const URegularExpression *regexp, * @param context context pointer. The callback function will be invoked * with the context specified at the time that * uregex_setMatchCallback() is called. - * @param steps the accumulated processing time, in match steps, + * @param steps the accumulated processing time, in match steps, * for this matching operation. * @return true to continue the matching operation. * false to terminate the matching operation. @@ -1529,7 +1529,7 @@ uregex_setMatchCallback(URegularExpression *regexp, * Get the callback function for this URegularExpression. * * @param regexp The compiled regular expression. - * @param callback Out parameter, receives a pointer to the user-supplied + * @param callback Out parameter, receives a pointer to the user-supplied * callback function. * @param context Out parameter, receives the user context pointer that * was set when uregex_setMatchCallback() was called. @@ -1544,7 +1544,7 @@ uregex_getMatchCallback(const URegularExpression *regexp, /** * Function pointer for a regular expression find callback function. - * + * * When set, a callback function will be called during a find operation * and for operations that depend on find, such as findNext, split and some replace * operations like replaceFirst. @@ -1556,7 +1556,7 @@ uregex_getMatchCallback(const URegularExpression *regexp, * When invoked, this callback will specify the index at which a match operation is about * to be attempted, giving the application the opportunity to terminate a long-running * find operation. - * + * * If the call back function returns false, the find operation will be terminated early. * * Note: the callback function must not call other functions on this @@ -1600,7 +1600,7 @@ uregex_setFindProgressCallback(URegularExpression *regexp, * Get the find progress callback function for this URegularExpression. * * @param regexp The compiled regular expression. - * @param callback Out parameter, receives a pointer to the user-supplied + * @param callback Out parameter, receives a pointer to the user-supplied * callback function. * @param context Out parameter, receives the user context pointer that * was set when uregex_setFindProgressCallback() was called. diff --git a/deps/icu-small/source/i18n/unicode/uregion.h b/deps/icu-small/source/i18n/unicode/uregion.h index 4e4e6aac9f8fcc..25472ae6405b2c 100644 --- a/deps/icu-small/source/i18n/unicode/uregion.h +++ b/deps/icu-small/source/i18n/unicode/uregion.h @@ -17,7 +17,7 @@ * \file * \brief C API: URegion (territory containment and mapping) * - * URegion objects represent data associated with a particular Unicode Region Code, also known as a + * URegion objects represent data associated with a particular Unicode Region Code, also known as a * Unicode Region Subtag, which is defined based upon the BCP 47 standard. These include: * * Two-letter codes defined by ISO 3166-1, with special LDML treatment of certain private-use or * reserved codes; @@ -25,7 +25,7 @@ * URegion objects can also provide mappings to and from additional codes. There are different types * of regions that are important to distinguish: *

    - * Macroregion - A code for a "macro geographical (continental) region, geographical sub-region, or + * Macroregion - A code for a "macro geographical (continental) region, geographical sub-region, or * selected economic and other grouping" as defined in UN M.49. These are typically 3-digit codes, * but contain some 2-letter codes for LDML extensions, such as "QO" for Outlying Oceania. * Macroregions are represented in ICU by one of three region types: WORLD (code 001), @@ -33,8 +33,8 @@ * by a continent ). *

    * TERRITORY - A Region that is not a Macroregion. These are typically codes for countries, but also - * include areas that are not separate countries, such as the code "AQ" for Antarctica or the code - * "HK" for Hong Kong (SAR China). Overseas dependencies of countries may or may not have separate + * include areas that are not separate countries, such as the code "AQ" for Antarctica or the code + * "HK" for Hong Kong (SAR China). Overseas dependencies of countries may or may not have separate * codes. The codes are typically 2-letter codes aligned with ISO 3166, but BCP47 allows for the use * of 3-digit codes in the future. *

    @@ -45,7 +45,7 @@ * usually due to a country splitting into multiple territories or changing its name. *

    * GROUPING - A widely understood grouping of territories that has a well defined membership such - * that a region code has been assigned for it. Some of these are UN M.49 codes that don't fall into + * that a region code has been assigned for it. Some of these are UN M.49 codes that don't fall into * the world/continent/sub-continent hierarchy, while others are just well-known groupings that have * their own region code. Region "EU" (European Union) is one such region code that is a grouping. * Groupings will never be returned by the uregion_getContainingRegion, since a different type of region @@ -59,51 +59,51 @@ * URegionType is an enumeration defining the different types of regions. Current possible * values are URGN_WORLD, URGN_CONTINENT, URGN_SUBCONTINENT, URGN_TERRITORY, URGN_GROUPING, * URGN_DEPRECATED, and URGN_UNKNOWN. - * - * @stable ICU 51 + * + * @stable ICU 51 */ typedef enum URegionType { /** * Type representing the unknown region. - * @stable ICU 51 + * @stable ICU 51 */ URGN_UNKNOWN, /** * Type representing a territory. - * @stable ICU 51 + * @stable ICU 51 */ URGN_TERRITORY, /** * Type representing the whole world. - * @stable ICU 51 + * @stable ICU 51 */ URGN_WORLD, /** * Type representing a continent. - * @stable ICU 51 + * @stable ICU 51 */ URGN_CONTINENT, /** * Type representing a sub-continent. - * @stable ICU 51 + * @stable ICU 51 */ URGN_SUBCONTINENT, /** * Type representing a grouping of territories that is not to be used in * the normal WORLD/CONTINENT/SUBCONTINENT/TERRITORY containment tree. - * @stable ICU 51 + * @stable ICU 51 */ URGN_GROUPING, /** * Type representing a region whose code has been deprecated, usually * due to a country splitting into multiple territories or changing its name. - * @stable ICU 51 + * @stable ICU 51 */ URGN_DEPRECATED, diff --git a/deps/icu-small/source/i18n/unicode/ureldatefmt.h b/deps/icu-small/source/i18n/unicode/ureldatefmt.h index b66139461b53ad..3c448900437e45 100644 --- a/deps/icu-small/source/i18n/unicode/ureldatefmt.h +++ b/deps/icu-small/source/i18n/unicode/ureldatefmt.h @@ -81,7 +81,7 @@ typedef enum UDateRelativeDateTimeFormatterStyle { typedef enum URelativeDateTimeUnit { /** * Specifies that relative unit is year, e.g. "last year", - * "in 5 years". + * "in 5 years". * @stable ICU 57 */ UDAT_REL_UNIT_YEAR, @@ -153,7 +153,7 @@ typedef enum URelativeDateTimeUnit { UDAT_REL_UNIT_WEDNESDAY, /** * Specifies that relative unit is Thursday, e.g. "last Thursday", - * "this Thursday", "next Thursday", "in 5 Thursdays". + * "this Thursday", "next Thursday", "in 5 Thursdays". * @stable ICU 57 */ UDAT_REL_UNIT_THURSDAY, diff --git a/deps/icu-small/source/i18n/unicode/usearch.h b/deps/icu-small/source/i18n/unicode/usearch.h index 26c22b7353953d..fd0b84f672353d 100644 --- a/deps/icu-small/source/i18n/unicode/usearch.h +++ b/deps/icu-small/source/i18n/unicode/usearch.h @@ -27,62 +27,63 @@ * \file * \brief C API: StringSearch * - * C APIs for an engine that provides language-sensitive text searching based + * C APIs for an engine that provides language-sensitive text searching based * on the comparison rules defined in a UCollator data struct, - * see ucol.h. This ensures that language eccentricity can be - * handled, e.g. for the German collator, characters ß and SS will be matched - * if case is chosen to be ignored. - * See the + * see ucol.h. This ensures that language eccentricity can be + * handled, e.g. for the German collator, characters ß and SS will be matched + * if case is chosen to be ignored. + * See the * "ICU Collation Design Document" for more information. - *

    - * The implementation may use a linear search or a modified form of the Boyer-Moore - * search; for more information on the latter see + *

    + * As of ICU4C 4.0 / ICU4J 53, the implementation uses a linear search. In previous versions, + * a modified form of the Boyer-Moore searching algorithm was used. For more information + * on the modified Boyer-Moore algorithm see * - * "Efficient Text Searching in Java", published in Java Report + * "Efficient Text Searching in Java", published in Java Report * in February, 1999. *

    * There are 2 match options for selection:
    - * Let S' be the sub-string of a text string S between the offsets start and + * Let S' be the sub-string of a text string S between the offsets start and * end . *
    - * A pattern string P matches a text string S at the offsets + * A pattern string P matches a text string S at the offsets * if - *

    - * option 1. Some canonical equivalent of P matches some canonical equivalent
    + * 
     
    + * option 1. Some canonical equivalent of P matches some canonical equivalent 
      *           of S'
    - * option 2. P matches S' and if P starts or ends with a combining mark,
    - *           there exists no non-ignorable combining mark before or after S'
    - *           in S respectively.
    + * option 2. P matches S' and if P starts or ends with a combining mark, 
    + *           there exists no non-ignorable combining mark before or after S' 
    + *           in S respectively. 
      * 
    * Option 2. will be the default. *

    - * This search has APIs similar to that of other text iteration mechanisms - * such as the break iterators in ubrk.h. Using these - * APIs, it is easy to scan through text looking for all occurrences of - * a given pattern. This search iterator allows changing of direction by - * calling a reset followed by a next or previous. - * Though a direction change can occur without calling reset first, + * This search has APIs similar to that of other text iteration mechanisms + * such as the break iterators in ubrk.h. Using these + * APIs, it is easy to scan through text looking for all occurrences of + * a given pattern. This search iterator allows changing of direction by + * calling a reset followed by a next or previous. + * Though a direction change can occur without calling reset first, * this operation comes with some speed penalty. - * Generally, match results in the forward direction will match the result + * Generally, match results in the forward direction will match the result * matches in the backwards direction in the reverse order *

    - * usearch.h provides APIs to specify the starting position + * usearch.h provides APIs to specify the starting position * within the text string to be searched, e.g. usearch_setOffset, - * usearch_preceding and usearch_following. Since the - * starting position will be set as it is specified, please take note that - * there are some dangerous positions which the search may render incorrect + * usearch_preceding and usearch_following. Since the + * starting position will be set as it is specified, please take note that + * there are some dangerous positions which the search may render incorrect * results: *

      *
    • The midst of a substring that requires normalization. *
    • If the following match is to be found, the position should not be the - * second character which requires to be swapped with the preceding - * character. Vice versa, if the preceding match is to be found, - * position to search from should not be the first character which + * second character which requires to be swapped with the preceding + * character. Vice versa, if the preceding match is to be found, + * position to search from should not be the first character which * requires to be swapped with the next character. E.g certain Thai and * Lao characters require swapping. - *
    • If a following pattern match is to be found, any position within a - * contracting sequence except the first will fail. Vice versa if a - * preceding pattern match is to be found, a invalid starting point + *
    • If a following pattern match is to be found, any position within a + * contracting sequence except the first will fail. Vice versa if a + * preceding pattern match is to be found, a invalid starting point * would be any character within a contracting sequence except the last. *
    *

    @@ -91,9 +92,9 @@ * boundaries given by the breakiterator. For instance the pattern "e" will * not be found in the string "\u00e9" if a character break iterator is used. *

    - * Options are provided to handle overlapping matches. - * E.g. In English, overlapping matches produces the result 0 and 2 - * for the pattern "abab" in the text "ababab", where else mutually + * Options are provided to handle overlapping matches. + * E.g. In English, overlapping matches produces the result 0 and 2 + * for the pattern "abab" in the text "ababab", where else mutually * exclusive matches only produce the result of 0. *

    * Options are also provided to implement "asymmetric search" as described in @@ -101,19 +102,19 @@ * UTS #10 Unicode Collation Algorithm, specifically the USearchAttribute * USEARCH_ELEMENT_COMPARISON and its values. *

    - * Though collator attributes will be taken into consideration while - * performing matches, there are no APIs here for setting and getting the + * Though collator attributes will be taken into consideration while + * performing matches, there are no APIs here for setting and getting the * attributes. These attributes can be set by getting the collator * from usearch_getCollator and using the APIs in ucol.h. - * Lastly to update String Search to the new collator attributes, + * Lastly to update String Search to the new collator attributes, * usearch_reset() has to be called. - *

    + *

    * Restriction:
    * Currently there are no composite characters that consists of a - * character with combining class > 0 before a character with combining - * class == 0. However, if such a character exists in the future, the + * character with combining class > 0 before a character with combining + * class == 0. However, if such a character exists in the future, the * search mechanism does not guarantee the results for option 1. - * + * *

    * Example of use:
    *

    
    @@ -125,14 +126,14 @@
      * u_uastrcpy(target, tgtstr);
      * u_uastrcpy(pattern, patstr);
      *
    - * UStringSearch *search = usearch_open(pattern, -1, target, -1, "en_US",
    + * UStringSearch *search = usearch_open(pattern, -1, target, -1, "en_US", 
      *                                  NULL, &status);
      * if (U_SUCCESS(status)) {
    - *     for (int pos = usearch_first(search, &status);
    - *          pos != USEARCH_DONE;
    + *     for (int pos = usearch_first(search, &status); 
    + *          pos != USEARCH_DONE; 
      *          pos = usearch_next(search, &status))
      *     {
    - *         printf("Found match at %d pos, length is %d\n", pos,
    + *         printf("Found match at %d pos, length is %d\n", pos, 
      *                                        usearch_getMatchedLength(search));
      *     }
      * }
    @@ -143,7 +144,7 @@
      */
     
     /**
    -* DONE is returned by previous() and next() after all valid matches have
    +* DONE is returned by previous() and next() after all valid matches have 
     * been returned, and by first() and last() if there are no matches at all.
     * @stable ICU 2.4
     */
    @@ -170,7 +171,7 @@ typedef enum {
          */
         USEARCH_OVERLAP = 0,
     #ifndef U_HIDE_DEPRECATED_API
    -    /**
    +    /** 
          * Option for canonical matches; option 1 in header documentation.
          * The default value will be USEARCH_OFF.
          * Note: Setting this option to USEARCH_ON currently has no effect on
    @@ -178,7 +179,7 @@ typedef enum {
          * canonical match behavior, you must set UCOL_NORMALIZATION_MODE
          * appropriately (to UCOL_OFF or UCOL_ON) in the UCollator used by
          * the UStringSearch object.
    -     * @see usearch_openFromCollator
    +     * @see usearch_openFromCollator 
          * @see usearch_getCollator
          * @see usearch_setCollator
          * @see ucol_getAttribute
    @@ -186,7 +187,7 @@ typedef enum {
          */
         USEARCH_CANONICAL_MATCH = 1,
     #endif  /* U_HIDE_DEPRECATED_API */
    -    /**
    +    /** 
          * Option to control how collation elements are compared.
          * The default value will be USEARCH_STANDARD_ELEMENT_COMPARISON.
          * @stable ICU 4.4
    @@ -206,7 +207,7 @@ typedef enum {
     * @stable ICU 2.4
     */
     typedef enum {
    -    /**
    +    /** 
          * Default value for any USearchAttribute
          * @stable ICU 2.4
          */
    @@ -215,20 +216,20 @@ typedef enum {
          * Value for USEARCH_OVERLAP and USEARCH_CANONICAL_MATCH
          * @stable ICU 2.4
          */
    -    USEARCH_OFF,
    +    USEARCH_OFF, 
         /**
          * Value for USEARCH_OVERLAP and USEARCH_CANONICAL_MATCH
          * @stable ICU 2.4
          */
         USEARCH_ON,
    -    /**
    +    /** 
          * Value (default) for USEARCH_ELEMENT_COMPARISON;
          * standard collation element comparison at the specified collator
          * strength.
          * @stable ICU 4.4
          */
         USEARCH_STANDARD_ELEMENT_COMPARISON,
    -    /**
    +    /** 
          * Value for USEARCH_ELEMENT_COMPARISON;
          * collation element comparison is modified to effectively provide
          * behavior between the specified strength and strength - 1. Collation
    @@ -247,7 +248,7 @@ typedef enum {
          * @stable ICU 4.4
          */
         USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD,
    -    /**
    +    /** 
          * Value for USEARCH_ELEMENT_COMPARISON.
          * collation element comparison is modified to effectively provide
          * behavior between the specified strength and strength - 1. Collation
    @@ -293,14 +294,14 @@ typedef enum {
     * @param textlength length of the text string, -1 for null-termination
     * @param locale name of locale for the rules to be used
     * @param breakiter A BreakIterator that will be used to restrict the points
    -*                  at which matches are detected. If a match is found, but
    -*                  the match's start or end index is not a boundary as
    -*                  determined by the BreakIterator, the match will
    -*                  be rejected and another will be searched for.
    -*                  If this parameter is NULL, no break detection is
    +*                  at which matches are detected. If a match is found, but 
    +*                  the match's start or end index is not a boundary as 
    +*                  determined by the BreakIterator, the match will 
    +*                  be rejected and another will be searched for. 
    +*                  If this parameter is NULL, no break detection is 
     *                  attempted.
     * @param status for errors if it occurs. If pattern or text is NULL, or if
    -*               patternlength or textlength is 0 then an
    +*               patternlength or textlength is 0 then an 
     *               U_ILLEGAL_ARGUMENT_ERROR is returned.
     * @return search iterator data structure, or NULL if there is an error.
     * @stable ICU 2.4
    @@ -381,16 +382,16 @@ U_NAMESPACE_END
     /* get and set methods -------------------------------------------------- */
     
     /**
    -* Sets the current position in the text string which the next search will
    -* start from. Clears previous states.
    -* This method takes the argument index and sets the position in the text
    -* string accordingly without checking if the index is pointing to a
    -* valid starting point to begin searching.
    +* Sets the current position in the text string which the next search will 
    +* start from. Clears previous states. 
    +* This method takes the argument index and sets the position in the text 
    +* string accordingly without checking if the index is pointing to a 
    +* valid starting point to begin searching. 
     * Search positions that may render incorrect results are highlighted in the
     * header comments
     * @param strsrch search iterator data struct
     * @param position position to start next search from. If position is less
    -*          than or greater than the text range for searching,
    +*          than or greater than the text range for searching, 
     *          an U_INDEX_OUTOFBOUNDS_ERROR will be returned
     * @param status error status if any.
     * @stable ICU 2.4
    @@ -401,14 +402,14 @@ U_CAPI void U_EXPORT2 usearch_setOffset(UStringSearch *strsrch,
     
     /**
     * Return the current index in the string text being searched.
    -* If the iteration has gone past the end of the text (or past the beginning
    +* If the iteration has gone past the end of the text (or past the beginning 
     * for a backwards search), USEARCH_DONE is returned.
     * @param strsrch search iterator data struct
     * @see #USEARCH_DONE
     * @stable ICU 2.4
     */
     U_CAPI int32_t U_EXPORT2 usearch_getOffset(const UStringSearch *strsrch);
    -
    +    
     /**
     * Sets the text searching attributes located in the enum USearchAttribute
     * with values from the enum USearchAttributeValue.
    @@ -425,7 +426,7 @@ U_CAPI void U_EXPORT2 usearch_setAttribute(UStringSearch         *strsrch,
                                                USearchAttributeValue  value,
                                                UErrorCode            *status);
     
    -/**
    +/**    
     * Gets the text searching attributes.
     * @param strsrch search iterator data struct
     * @param attribute text attribute to be retrieve
    @@ -439,15 +440,15 @@ U_CAPI USearchAttributeValue U_EXPORT2 usearch_getAttribute(
     
     /**
     * Returns the index to the match in the text string that was searched.
    -* This call returns a valid result only after a successful call to
    -* usearch_first, usearch_next, usearch_previous,
    +* This call returns a valid result only after a successful call to 
    +* usearch_first, usearch_next, usearch_previous, 
     * or usearch_last.
    -* Just after construction, or after a searching method returns
    +* Just after construction, or after a searching method returns 
     * USEARCH_DONE, this method will return USEARCH_DONE.
     * 

    * Use usearch_getMatchedLength to get the matched string length. * @param strsrch search iterator data struct -* @return index to a substring within the text string that is being +* @return index to a substring within the text string that is being * searched. * @see #usearch_first * @see #usearch_next @@ -458,16 +459,16 @@ U_CAPI USearchAttributeValue U_EXPORT2 usearch_getAttribute( */ U_CAPI int32_t U_EXPORT2 usearch_getMatchedStart( const UStringSearch *strsrch); - + /** -* Returns the length of text in the string which matches the search pattern. -* This call returns a valid result only after a successful call to -* usearch_first, usearch_next, usearch_previous, +* Returns the length of text in the string which matches the search pattern. +* This call returns a valid result only after a successful call to +* usearch_first, usearch_next, usearch_previous, * or usearch_last. -* Just after construction, or after a searching method returns +* Just after construction, or after a searching method returns * USEARCH_DONE, this method will return 0. * @param strsrch search iterator data struct -* @return The length of the match in the string text, or 0 if there is no +* @return The length of the match in the string text, or 0 if there is no * match currently. * @see #usearch_first * @see #usearch_next @@ -480,17 +481,17 @@ U_CAPI int32_t U_EXPORT2 usearch_getMatchedLength( const UStringSearch *strsrch); /** -* Returns the text that was matched by the most recent call to -* usearch_first, usearch_next, usearch_previous, +* Returns the text that was matched by the most recent call to +* usearch_first, usearch_next, usearch_previous, * or usearch_last. -* If the iterator is not pointing at a valid match (e.g. just after +* If the iterator is not pointing at a valid match (e.g. just after * construction or after USEARCH_DONE has been returned, returns * an empty string. If result is not large enough to store the matched text, -* result will be filled with the partial text and an U_BUFFER_OVERFLOW_ERROR -* will be returned in status. result will be null-terminated whenever -* possible. If the buffer fits the matched text exactly, a null-termination +* result will be filled with the partial text and an U_BUFFER_OVERFLOW_ERROR +* will be returned in status. result will be null-terminated whenever +* possible. If the buffer fits the matched text exactly, a null-termination * is not possible, then a U_STRING_NOT_TERMINATED_ERROR set in status. -* Pre-flighting can be either done with length = 0 or the API +* Pre-flighting can be either done with length = 0 or the API * usearch_getMatchedLength. * @param strsrch search iterator data struct * @param result UChar buffer to store the matched string @@ -504,37 +505,37 @@ U_CAPI int32_t U_EXPORT2 usearch_getMatchedLength( * @see #USEARCH_DONE * @stable ICU 2.4 */ -U_CAPI int32_t U_EXPORT2 usearch_getMatchedText(const UStringSearch *strsrch, - UChar *result, - int32_t resultCapacity, +U_CAPI int32_t U_EXPORT2 usearch_getMatchedText(const UStringSearch *strsrch, + UChar *result, + int32_t resultCapacity, UErrorCode *status); #if !UCONFIG_NO_BREAK_ITERATION /** -* Set the BreakIterator that will be used to restrict the points at which +* Set the BreakIterator that will be used to restrict the points at which * matches are detected. * @param strsrch search iterator data struct * @param breakiter A BreakIterator that will be used to restrict the points -* at which matches are detected. If a match is found, but -* the match's start or end index is not a boundary as -* determined by the BreakIterator, the match will -* be rejected and another will be searched for. -* If this parameter is NULL, no break detection is +* at which matches are detected. If a match is found, but +* the match's start or end index is not a boundary as +* determined by the BreakIterator, the match will +* be rejected and another will be searched for. +* If this parameter is NULL, no break detection is * attempted. * @param status for errors if it occurs * @see #usearch_getBreakIterator * @stable ICU 2.4 */ -U_CAPI void U_EXPORT2 usearch_setBreakIterator(UStringSearch *strsrch, +U_CAPI void U_EXPORT2 usearch_setBreakIterator(UStringSearch *strsrch, UBreakIterator *breakiter, UErrorCode *status); /** -* Returns the BreakIterator that is used to restrict the points at which -* matches are detected. This will be the same object that was passed to the -* constructor or to usearch_setBreakIterator. Note that -* NULL +* Returns the BreakIterator that is used to restrict the points at which +* matches are detected. This will be the same object that was passed to the +* constructor or to usearch_setBreakIterator. Note that +* NULL * is a legal value; it means that break detection should not be attempted. * @param strsrch search iterator data struct * @return break iterator used @@ -543,12 +544,12 @@ U_CAPI void U_EXPORT2 usearch_setBreakIterator(UStringSearch *strsrch, */ U_CAPI const UBreakIterator * U_EXPORT2 usearch_getBreakIterator( const UStringSearch *strsrch); - + #endif /** -* Set the string text to be searched. Text iteration will hence begin at the -* start of the text string. This method is useful if you want to re-use an +* Set the string text to be searched. Text iteration will hence begin at the +* start of the text string. This method is useful if you want to re-use an * iterator to search for the same pattern within a different body of text. * * The UStringSearch retains a pointer to the text string. The caller must not @@ -557,13 +558,13 @@ U_CAPI const UBreakIterator * U_EXPORT2 usearch_getBreakIterator( * @param strsrch search iterator data struct * @param text new string to look for match * @param textlength length of the new string, -1 for null-termination -* @param status for errors if it occurs. If text is NULL, or textlength is 0 +* @param status for errors if it occurs. If text is NULL, or textlength is 0 * then an U_ILLEGAL_ARGUMENT_ERROR is returned with no change * done to strsrch. * @see #usearch_getText * @stable ICU 2.4 */ -U_CAPI void U_EXPORT2 usearch_setText( UStringSearch *strsrch, +U_CAPI void U_EXPORT2 usearch_setText( UStringSearch *strsrch, const UChar *text, int32_t textlength, UErrorCode *status); @@ -572,17 +573,17 @@ U_CAPI void U_EXPORT2 usearch_setText( UStringSearch *strsrch, * Return the string text to be searched. * @param strsrch search iterator data struct * @param length returned string text length -* @return string text +* @return string text * @see #usearch_setText * @stable ICU 2.4 */ -U_CAPI const UChar * U_EXPORT2 usearch_getText(const UStringSearch *strsrch, +U_CAPI const UChar * U_EXPORT2 usearch_getText(const UStringSearch *strsrch, int32_t *length); /** -* Gets the collator used for the language rules. +* Gets the collator used for the language rules. *

    -* Deleting the returned UCollator before calling +* Deleting the returned UCollator before calling * usearch_close would cause the string search to fail. * usearch_close will delete the collator if this search owns it. * @param strsrch search iterator data struct @@ -593,22 +594,22 @@ U_CAPI UCollator * U_EXPORT2 usearch_getCollator( const UStringSearch *strsrch); /** -* Sets the collator used for the language rules. User retains the ownership +* Sets the collator used for the language rules. User retains the ownership * of this collator, thus the responsibility of deletion lies with the user. -* This method causes internal data such as Boyer-Moore shift tables to -* be recalculated, but the iterator's position is unchanged. +* This method causes internal data such as the pattern collation elements +* and shift tables to be recalculated, but the iterator's position is unchanged. * @param strsrch search iterator data struct * @param collator to be used * @param status for errors if it occurs * @stable ICU 2.4 */ -U_CAPI void U_EXPORT2 usearch_setCollator( UStringSearch *strsrch, +U_CAPI void U_EXPORT2 usearch_setCollator( UStringSearch *strsrch, const UCollator *collator, UErrorCode *status); /** * Sets the pattern used for matching. -* Internal data like the Boyer Moore table will be recalculated, but the +* Internal data like the pattern collation elements will be recalculated, but the * iterator's position is unchanged. * * The UStringSearch retains a pointer to the pattern string. The caller must not @@ -617,12 +618,12 @@ U_CAPI void U_EXPORT2 usearch_setCollator( UStringSearch *strsrch, * @param strsrch search iterator data struct * @param pattern string * @param patternlength pattern length, -1 for null-terminated string -* @param status for errors if it occurs. If text is NULL, or textlength is 0 +* @param status for errors if it occurs. If text is NULL, or textlength is 0 * then an U_ILLEGAL_ARGUMENT_ERROR is returned with no change * done to strsrch. * @stable ICU 2.4 */ -U_CAPI void U_EXPORT2 usearch_setPattern( UStringSearch *strsrch, +U_CAPI void U_EXPORT2 usearch_setPattern( UStringSearch *strsrch, const UChar *pattern, int32_t patternlength, UErrorCode *status); @@ -630,46 +631,46 @@ U_CAPI void U_EXPORT2 usearch_setPattern( UStringSearch *strsrch, /** * Gets the search pattern * @param strsrch search iterator data struct -* @param length return length of the pattern, -1 indicates that the pattern +* @param length return length of the pattern, -1 indicates that the pattern * is null-terminated * @return pattern string * @stable ICU 2.4 */ U_CAPI const UChar * U_EXPORT2 usearch_getPattern( - const UStringSearch *strsrch, + const UStringSearch *strsrch, int32_t *length); /* methods ------------------------------------------------------------- */ /** -* Returns the first index at which the string text matches the search -* pattern. -* The iterator is adjusted so that its current index (as returned by +* Returns the first index at which the string text matches the search +* pattern. +* The iterator is adjusted so that its current index (as returned by * usearch_getOffset) is the match position if one was found. * If a match is not found, USEARCH_DONE will be returned and * the iterator will be adjusted to the index USEARCH_DONE. * @param strsrch search iterator data struct * @param status for errors if it occurs -* @return The character index of the first match, or +* @return The character index of the first match, or * USEARCH_DONE if there are no matches. * @see #usearch_getOffset * @see #USEARCH_DONE * @stable ICU 2.4 */ -U_CAPI int32_t U_EXPORT2 usearch_first(UStringSearch *strsrch, +U_CAPI int32_t U_EXPORT2 usearch_first(UStringSearch *strsrch, UErrorCode *status); /** * Returns the first index equal or greater than position at which * the string text -* matches the search pattern. The iterator is adjusted so that its current -* index (as returned by usearch_getOffset) is the match position if +* matches the search pattern. The iterator is adjusted so that its current +* index (as returned by usearch_getOffset) is the match position if * one was found. * If a match is not found, USEARCH_DONE will be returned and * the iterator will be adjusted to the index USEARCH_DONE *

    * Search positions that may render incorrect results are highlighted in the -* header comments. If position is less than or greater than the text range +* header comments. If position is less than or greater than the text range * for searching, an U_INDEX_OUTOFBOUNDS_ERROR will be returned * @param strsrch search iterator data struct * @param position to start the search at @@ -680,38 +681,38 @@ U_CAPI int32_t U_EXPORT2 usearch_first(UStringSearch *strsrch, * @see #USEARCH_DONE * @stable ICU 2.4 */ -U_CAPI int32_t U_EXPORT2 usearch_following(UStringSearch *strsrch, - int32_t position, +U_CAPI int32_t U_EXPORT2 usearch_following(UStringSearch *strsrch, + int32_t position, UErrorCode *status); - + /** -* Returns the last index in the target text at which it matches the search -* pattern. The iterator is adjusted so that its current -* index (as returned by usearch_getOffset) is the match position if +* Returns the last index in the target text at which it matches the search +* pattern. The iterator is adjusted so that its current +* index (as returned by usearch_getOffset) is the match position if * one was found. * If a match is not found, USEARCH_DONE will be returned and * the iterator will be adjusted to the index USEARCH_DONE. * @param strsrch search iterator data struct * @param status for errors if it occurs -* @return The index of the first match, or USEARCH_DONE if there +* @return The index of the first match, or USEARCH_DONE if there * are no matches. * @see #usearch_getOffset * @see #USEARCH_DONE * @stable ICU 2.4 */ -U_CAPI int32_t U_EXPORT2 usearch_last(UStringSearch *strsrch, +U_CAPI int32_t U_EXPORT2 usearch_last(UStringSearch *strsrch, UErrorCode *status); /** -* Returns the first index less than position at which the string text -* matches the search pattern. The iterator is adjusted so that its current -* index (as returned by usearch_getOffset) is the match position if +* Returns the first index less than position at which the string text +* matches the search pattern. The iterator is adjusted so that its current +* index (as returned by usearch_getOffset) is the match position if * one was found. * If a match is not found, USEARCH_DONE will be returned and * the iterator will be adjusted to the index USEARCH_DONE *

    * Search positions that may render incorrect results are highlighted in the -* header comments. If position is less than or greater than the text range +* header comments. If position is less than or greater than the text range * for searching, an U_INDEX_OUTOFBOUNDS_ERROR will be returned. *

    * When USEARCH_OVERLAP option is off, the last index of the @@ -727,35 +728,35 @@ U_CAPI int32_t U_EXPORT2 usearch_last(UStringSearch *strsrch, * @see #USEARCH_DONE * @stable ICU 2.4 */ -U_CAPI int32_t U_EXPORT2 usearch_preceding(UStringSearch *strsrch, - int32_t position, +U_CAPI int32_t U_EXPORT2 usearch_preceding(UStringSearch *strsrch, + int32_t position, UErrorCode *status); - + /** * Returns the index of the next point at which the string text matches the * search pattern, starting from the current position. -* The iterator is adjusted so that its current -* index (as returned by usearch_getOffset) is the match position if +* The iterator is adjusted so that its current +* index (as returned by usearch_getOffset) is the match position if * one was found. * If a match is not found, USEARCH_DONE will be returned and * the iterator will be adjusted to the index USEARCH_DONE * @param strsrch search iterator data struct * @param status for errors if it occurs -* @return The index of the next match after the current position, or +* @return The index of the next match after the current position, or * USEARCH_DONE if there are no more matches. * @see #usearch_first * @see #usearch_getOffset * @see #USEARCH_DONE * @stable ICU 2.4 */ -U_CAPI int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, +U_CAPI int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, UErrorCode *status); /** * Returns the index of the previous point at which the string text matches * the search pattern, starting at the current position. -* The iterator is adjusted so that its current -* index (as returned by usearch_getOffset) is the match position if +* The iterator is adjusted so that its current +* index (as returned by usearch_getOffset) is the match position if * one was found. * If a match is not found, USEARCH_DONE will be returned and * the iterator will be adjusted to the index USEARCH_DONE @@ -768,13 +769,13 @@ U_CAPI int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, * @see #USEARCH_DONE * @stable ICU 2.4 */ -U_CAPI int32_t U_EXPORT2 usearch_previous(UStringSearch *strsrch, +U_CAPI int32_t U_EXPORT2 usearch_previous(UStringSearch *strsrch, UErrorCode *status); - -/** + +/** * Reset the iteration. -* Search will begin at the start of the text string if a forward iteration -* is initiated before a backwards iteration. Otherwise if a backwards +* Search will begin at the start of the text string if a forward iteration +* is initiated before a backwards iteration. Otherwise if a backwards * iteration is initiated before a forwards iteration, the search will begin * at the end of the text string. * @param strsrch search iterator data struct @@ -805,7 +806,7 @@ U_CAPI void U_EXPORT2 usearch_reset(UStringSearch *strsrch); * A match will not include a partial combining sequence. Combining * character sequences are considered to be inseparable units, * and either match the pattern completely, or are considered to not match - * at all. Thus, for example, an A followed a combining accent mark will + * at all. Thus, for example, an A followed a combining accent mark will * not be found when searching for a plain (unaccented) A. (unless * the collation strength has been set to ignore all accents). * @@ -817,7 +818,7 @@ U_CAPI void U_EXPORT2 usearch_reset(UStringSearch *strsrch); * Characters that expand to multiple collation elements * (German sharp-S becoming 'ss', or the composed forms of accented * characters, for example) also must match completely. - * Searching for a single 's' in a string containing only a sharp-s will + * Searching for a single 's' in a string containing only a sharp-s will * find no match. * * @@ -832,7 +833,7 @@ U_CAPI void U_EXPORT2 usearch_reset(UStringSearch *strsrch); * in the input text. * This parameter may be NULL. * A value of -1 will be returned if no match was found. - * + * * @param status Report any errors. Note that no match found is not an error. * @return true if a match was found, false otherwise. * @@ -865,7 +866,7 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, * A match will not include a partial combining sequence. Combining * character sequences are considered to be inseparable units, * and either match the pattern completely, or are considered to not match - * at all. Thus, for example, an A followed a combining accent mark will + * at all. Thus, for example, an A followed a combining accent mark will * not be found when searching for a plain (unaccented) A. (unless * the collation strength has been set to ignore all accents). * @@ -877,7 +878,7 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, * Characters that expand to multiple collation elements * (German sharp-S becoming 'ss', or the composed forms of accented * characters, for example) also must match completely. - * Searching for a single 's' in a string containing only a sharp-s will + * Searching for a single 's' in a string containing only a sharp-s will * find no match. * * @@ -892,7 +893,7 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, * in the input text. * This parameter may be NULL. * A value of -1 will be returned if no match was found. - * + * * @param status Report any errors. Note that no match found is not an error. * @return true if a match was found, false otherwise. * diff --git a/deps/icu-small/source/i18n/unicode/uspoof.h b/deps/icu-small/source/i18n/unicode/uspoof.h index bf675bef51b51c..b674c91b2c246c 100644 --- a/deps/icu-small/source/i18n/unicode/uspoof.h +++ b/deps/icu-small/source/i18n/unicode/uspoof.h @@ -1134,7 +1134,7 @@ uspoof_getCheckResultNumerics(const USpoofCheckResult *checkResult, UErrorCode * * @param sc The USpoofChecker * @param id1 The first of the two identifiers to be compared for * confusability. The strings are in UTF-16 format. - * @param length1 the length of the first identifer, expressed in + * @param length1 the length of the first identifier, expressed in * 16 bit UTF-16 code units, or -1 if the string is * nul terminated. * @param id2 The second of the two identifiers to be compared for diff --git a/deps/icu-small/source/i18n/unicode/utmscale.h b/deps/icu-small/source/i18n/unicode/utmscale.h index b7dca15367dcfe..5a0bdc68c66195 100644 --- a/deps/icu-small/source/i18n/unicode/utmscale.h +++ b/deps/icu-small/source/i18n/unicode/utmscale.h @@ -14,7 +14,7 @@ #if !UCONFIG_NO_FORMATTING -/** +/** * \file * \brief C API: Universal Time Scale * @@ -217,7 +217,7 @@ typedef enum UDateTimeScale { * @stable ICU 3.2 */ UDTS_UNIX_TIME, - + /** * Used in IUC4C. Data is a double. Value * is milliseconds since January 1, 1970. @@ -225,7 +225,7 @@ typedef enum UDateTimeScale { * @stable ICU 3.2 */ UDTS_ICU4C_TIME, - + /** * Used in Windows for file times. Data is an int64_t. Value * is ticks (1 tick == 100 nanoseconds) since January 1, 1601. @@ -233,7 +233,7 @@ typedef enum UDateTimeScale { * @stable ICU 3.2 */ UDTS_WINDOWS_FILE_TIME, - + /** * Used in the .NET framework's System.DateTime structure. Data is an int64_t. Value * is ticks (1 tick == 100 nanoseconds) since January 1, 0001. @@ -241,7 +241,7 @@ typedef enum UDateTimeScale { * @stable ICU 3.2 */ UDTS_DOTNET_DATE_TIME, - + /** * Used in older Macintosh systems. Data is int32_t or int64_t. Value * is seconds since January 1, 1904. @@ -249,7 +249,7 @@ typedef enum UDateTimeScale { * @stable ICU 3.2 */ UDTS_MAC_OLD_TIME, - + /** * Used in newer Macintosh systems. Data is a double. Value * is seconds since January 1, 2001. @@ -257,7 +257,7 @@ typedef enum UDateTimeScale { * @stable ICU 3.2 */ UDTS_MAC_TIME, - + /** * Used in Excel. Data is an ?unknown?. Value * is days since December 31, 1899. @@ -265,7 +265,7 @@ typedef enum UDateTimeScale { * @stable ICU 3.2 */ UDTS_EXCEL_TIME, - + /** * Used in DB2. Data is an ?unknown?. Value * is days since December 31, 1899. @@ -305,7 +305,7 @@ typedef enum UTimeScaleValue { /** * The constant used to select the units vale * for a time scale. - * + * * @see utmscale_getTimeScaleValue * * @stable ICU 3.2 @@ -315,7 +315,7 @@ typedef enum UTimeScaleValue { /** * The constant used to select the epoch offset value * for a time scale. - * + * * @see utmscale_getTimeScaleValue * * @stable ICU 3.2 @@ -325,7 +325,7 @@ typedef enum UTimeScaleValue { /** * The constant used to select the minimum from value * for a time scale. - * + * * @see utmscale_getTimeScaleValue * * @stable ICU 3.2 @@ -335,7 +335,7 @@ typedef enum UTimeScaleValue { /** * The constant used to select the maximum from value * for a time scale. - * + * * @see utmscale_getTimeScaleValue * * @stable ICU 3.2 @@ -345,7 +345,7 @@ typedef enum UTimeScaleValue { /** * The constant used to select the minimum to value * for a time scale. - * + * * @see utmscale_getTimeScaleValue * * @stable ICU 3.2 @@ -355,7 +355,7 @@ typedef enum UTimeScaleValue { /** * The constant used to select the maximum to value * for a time scale. - * + * * @see utmscale_getTimeScaleValue * * @stable ICU 3.2 @@ -366,10 +366,10 @@ typedef enum UTimeScaleValue { /** * The constant used to select the epoch plus one value * for a time scale. - * + * * NOTE: This is an internal value. DO NOT USE IT. May not * actually be equal to the epoch offset value plus one. - * + * * @see utmscale_getTimeScaleValue * * @internal ICU 3.2 @@ -379,10 +379,10 @@ typedef enum UTimeScaleValue { /** * The constant used to select the epoch plus one value * for a time scale. - * + * * NOTE: This is an internal value. DO NOT USE IT. May not * actually be equal to the epoch offset value plus one. - * + * * @see utmscale_getTimeScaleValue * * @internal ICU 3.2 @@ -392,9 +392,9 @@ typedef enum UTimeScaleValue { /** * The constant used to select the units round value * for a time scale. - * + * * NOTE: This is an internal value. DO NOT USE IT. - * + * * @see utmscale_getTimeScaleValue * * @internal ICU 3.2 @@ -404,9 +404,9 @@ typedef enum UTimeScaleValue { /** * The constant used to select the minimum safe rounding value * for a time scale. - * + * * NOTE: This is an internal value. DO NOT USE IT. - * + * * @see utmscale_getTimeScaleValue * * @internal ICU 3.2 @@ -416,9 +416,9 @@ typedef enum UTimeScaleValue { /** * The constant used to select the maximum safe rounding value * for a time scale. - * + * * NOTE: This is an internal value. DO NOT USE IT. - * + * * @see utmscale_getTimeScaleValue * * @internal ICU 3.2 @@ -430,7 +430,7 @@ typedef enum UTimeScaleValue { #ifndef U_HIDE_DEPRECATED_API /** * The number of time scale values, in other words limit of this enum. - * + * * @see utmscale_getTimeScaleValue * @deprecated ICU 59 The numeric value may change over time, see ICU ticket #12420. */ @@ -441,12 +441,12 @@ typedef enum UTimeScaleValue { /** * Get a value associated with a particular time scale. - * + * * @param timeScale The time scale * @param value A constant representing the value to get * @param status The status code. Set to U_ILLEGAL_ARGUMENT_ERROR if arguments are invalid. * @return - the value. - * + * * @stable ICU 3.2 */ U_CAPI int64_t U_EXPORT2 @@ -460,7 +460,7 @@ U_CAPI int64_t U_EXPORT2 * @param otherTime The int64_t datetime * @param timeScale The time scale to convert from * @param status The status code. Set to U_ILLEGAL_ARGUMENT_ERROR if the conversion is out of range. - * + * * @return The datetime converted to the universal time scale * * @stable ICU 3.2 @@ -476,7 +476,7 @@ U_CAPI int64_t U_EXPORT2 * @param universalTime The datetime in the universal time scale * @param timeScale The time scale to convert to * @param status The status code. Set to U_ILLEGAL_ARGUMENT_ERROR if the conversion is out of range. - * + * * @return The datetime converted to the given time scale * * @stable ICU 3.2 @@ -487,3 +487,4 @@ U_CAPI int64_t U_EXPORT2 #endif /* #if !UCONFIG_NO_FORMATTING */ #endif + diff --git a/deps/icu-small/source/i18n/unicode/utrans.h b/deps/icu-small/source/i18n/unicode/utrans.h index e959378285cfb8..1ad7dbda62f679 100644 --- a/deps/icu-small/source/i18n/unicode/utrans.h +++ b/deps/icu-small/source/i18n/unicode/utrans.h @@ -81,7 +81,7 @@ typedef void* UTransliterator; * @stable ICU 2.0 */ typedef enum UTransDirection { - + /** * UTRANS_FORWARD means from <source> to <target> for a * transliterator with ID <source>-<target>. For a transliterator @@ -133,7 +133,7 @@ typedef struct UTransPosition { * @stable ICU 2.4 */ int32_t contextStart; - + /** * Ending index, exclusive, of the context to be considered for a * transliteration operation. The transliterator will ignore @@ -143,7 +143,7 @@ typedef struct UTransPosition { * @stable ICU 2.4 */ int32_t contextLimit; - + /** * Beginning index, inclusive, of the text to be transliterated. * INPUT/OUTPUT parameter: This parameter is advanced past @@ -152,7 +152,7 @@ typedef struct UTransPosition { * @stable ICU 2.4 */ int32_t start; - + /** * Ending index, exclusive, of the text to be transliterated. * INPUT/OUTPUT parameter: This parameter is updated to reflect @@ -169,9 +169,9 @@ typedef struct UTransPosition { ********************************************************************/ /** - * Open a custom transliterator, given a custom rules string - * OR - * a system transliterator, given its ID. + * Open a custom transliterator, given a custom rules string + * OR + * a system transliterator, given its ID. * Any non-NULL result from this function should later be closed with * utrans_close(). * @@ -215,7 +215,7 @@ utrans_openU(const UChar *id, * inverse of trans, or NULL if the open call fails. * @stable ICU 2.0 */ -U_CAPI UTransliterator* U_EXPORT2 +U_CAPI UTransliterator* U_EXPORT2 utrans_openInverse(const UTransliterator* trans, UErrorCode* status); @@ -229,7 +229,7 @@ utrans_openInverse(const UTransliterator* trans, * utrans_xxx() functions, or NULL if the clone call fails. * @stable ICU 2.0 */ -U_CAPI UTransliterator* U_EXPORT2 +U_CAPI UTransliterator* U_EXPORT2 utrans_clone(const UTransliterator* trans, UErrorCode* status); @@ -239,7 +239,7 @@ utrans_clone(const UTransliterator* trans, * @param trans the transliterator to be closed. * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 utrans_close(UTransliterator* trans); #if U_SHOW_CPLUSPLUS_API @@ -293,7 +293,7 @@ utrans_getUnicodeID(const UTransliterator *trans, * @param status a pointer to the UErrorCode * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 utrans_register(UTransliterator* adoptedTrans, UErrorCode* status); @@ -327,7 +327,7 @@ utrans_unregisterID(const UChar* id, int32_t idLength); * @see UnicodeSet * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 utrans_setFilter(UTransliterator* trans, const UChar* filterPattern, int32_t filterPatternLen, @@ -340,7 +340,7 @@ utrans_setFilter(UTransliterator* trans, * @return the number of system transliterators. * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 utrans_countAvailableIDs(void); /** @@ -382,7 +382,7 @@ utrans_openIDs(UErrorCode *pErrorCode); * @param status a pointer to the UErrorCode * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 utrans_trans(const UTransliterator* trans, UReplaceable* rep, const UReplaceableCallbacks* repFunc, @@ -433,7 +433,7 @@ utrans_trans(const UTransliterator* trans, * @param status a pointer to the UErrorCode * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 utrans_transIncremental(const UTransliterator* trans, UReplaceable* rep, const UReplaceableCallbacks* repFunc, @@ -470,7 +470,7 @@ utrans_transIncremental(const UTransliterator* trans, * @param status a pointer to the UErrorCode * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 utrans_transUChars(const UTransliterator* trans, UChar* text, int32_t* textLength, @@ -505,7 +505,7 @@ utrans_transUChars(const UTransliterator* trans, * @see utrans_transIncremental * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 utrans_transIncrementalUChars(const UTransliterator* trans, UChar* text, int32_t* textLength, @@ -569,16 +569,16 @@ utrans_getSourceSet(const UTransliterator* trans, /** * Deprecated, use utrans_openU() instead. - * Open a custom transliterator, given a custom rules string - * OR - * a system transliterator, given its ID. + * Open a custom transliterator, given a custom rules string + * OR + * a system transliterator, given its ID. * Any non-NULL result from this function should later be closed with * utrans_close(). * * @param id a valid ID, as returned by utrans_getAvailableID() * @param dir the desired direction * @param rules the transliterator rules. See the C++ header rbt.h - * for rules syntax. If NULL then a system transliterator matching + * for rules syntax. If NULL then a system transliterator matching * the ID is returned. * @param rulesLength the length of the rules, or -1 if the rules * are zero-terminated. @@ -590,11 +590,11 @@ utrans_getSourceSet(const UTransliterator* trans, * utrans_xxx() functions, or NULL if the open call fails. * @deprecated ICU 2.8 Use utrans_openU() instead, see utrans.h */ -U_DEPRECATED UTransliterator* U_EXPORT2 +U_DEPRECATED UTransliterator* U_EXPORT2 utrans_open(const char* id, UTransDirection dir, const UChar* rules, /* may be Null */ - int32_t rulesLength, /* -1 if null-terminated */ + int32_t rulesLength, /* -1 if null-terminated */ UParseError* parseError, /* may be Null */ UErrorCode* status); @@ -613,7 +613,7 @@ utrans_open(const char* id, * zero-termination. This may be greater than bufCapacity. * @deprecated ICU 2.8 Use utrans_getUnicodeID() instead, see utrans.h */ -U_DEPRECATED int32_t U_EXPORT2 +U_DEPRECATED int32_t U_EXPORT2 utrans_getID(const UTransliterator* trans, char* buf, int32_t bufCapacity); @@ -627,7 +627,7 @@ utrans_getID(const UTransliterator* trans, * @param id a zero-terminated ID * @deprecated ICU 2.8 Use utrans_unregisterID() instead, see utrans.h */ -U_DEPRECATED void U_EXPORT2 +U_DEPRECATED void U_EXPORT2 utrans_unregister(const char* id); /** @@ -648,7 +648,7 @@ utrans_unregister(const char* id); * zero-termination. This may be greater than bufCapacity. * @deprecated ICU 2.8 Use utrans_openIDs() instead, see utrans.h */ -U_DEPRECATED int32_t U_EXPORT2 +U_DEPRECATED int32_t U_EXPORT2 utrans_getAvailableID(int32_t index, char* buf, int32_t bufCapacity); diff --git a/deps/icu-small/source/i18n/unicode/vtzone.h b/deps/icu-small/source/i18n/unicode/vtzone.h index c0a2a14c897077..e7d2f515410ee1 100644 --- a/deps/icu-small/source/i18n/unicode/vtzone.h +++ b/deps/icu-small/source/i18n/unicode/vtzone.h @@ -14,7 +14,7 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: RFC2445 VTIMEZONE support */ @@ -72,7 +72,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { *semantically equal. * @stable ICU 3.8 */ - virtual UBool operator==(const TimeZone& that) const; + virtual bool operator==(const TimeZone& that) const override; /** * Return true if the given TimeZone objects are @@ -82,7 +82,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * semantically unequal. * @stable ICU 3.8 */ - virtual UBool operator!=(const TimeZone& that) const; + virtual bool operator!=(const TimeZone& that) const; /** * Create a VTimeZone instance by the time zone ID. @@ -105,7 +105,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { /** * Create a VTimeZone instance by RFC2445 VTIMEZONE data - * + * * @param vtzdata The string including VTIMEZONE data block * @param status Output param to filled in with a success or an error. * @return A VTimeZone initialized by the VTIMEZONE data or @@ -187,7 +187,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * @return A new copy of this TimeZone object. * @stable ICU 3.8 */ - virtual VTimeZone* clone() const; + virtual VTimeZone* clone() const override; /** * Returns the TimeZone's adjusted GMT offset (i.e., the number of milliseconds to add @@ -214,7 +214,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * @stable ICU 3.8 */ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, - uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const; + uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const override; /** * Gets the time zone offset, for current date, modified in case of @@ -237,7 +237,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { */ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, - int32_t monthLength, UErrorCode& status) const; + int32_t monthLength, UErrorCode& status) const override; /** * Returns the time zone raw and GMT offset for the given moment @@ -262,7 +262,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * @stable ICU 3.8 */ virtual void getOffset(UDate date, UBool local, int32_t& rawOffset, - int32_t& dstOffset, UErrorCode& ec) const; + int32_t& dstOffset, UErrorCode& ec) const override; #ifndef U_FORCE_HIDE_DRAFT_API /** @@ -272,7 +272,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { virtual void getOffsetFromLocal( UDate date, UTimeZoneLocalOption nonExistingTimeOpt, UTimeZoneLocalOption duplicatedTimeOpt, - int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const; + int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const override; #endif /* U_FORCE_HIDE_DRAFT_API */ /** @@ -282,7 +282,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * @param offsetMillis The new raw GMT offset for this time zone. * @stable ICU 3.8 */ - virtual void setRawOffset(int32_t offsetMillis); + virtual void setRawOffset(int32_t offsetMillis) override; /** * Returns the TimeZone's raw GMT offset (i.e., the number of milliseconds to add @@ -291,7 +291,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * @return The TimeZone's raw GMT offset. * @stable ICU 3.8 */ - virtual int32_t getRawOffset(void) const; + virtual int32_t getRawOffset(void) const override; /** * Queries if this time zone uses daylight savings time. @@ -299,7 +299,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * false, otherwise. * @stable ICU 3.8 */ - virtual UBool useDaylightTime(void) const; + virtual UBool useDaylightTime(void) const override; #ifndef U_FORCE_HIDE_DEPRECATED_API /** @@ -315,7 +315,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * false, otherwise. * @deprecated ICU 2.4. Use Calendar::inDaylightTime() instead. */ - virtual UBool inDaylightTime(UDate date, UErrorCode& status) const; + virtual UBool inDaylightTime(UDate date, UErrorCode& status) const override; #endif // U_FORCE_HIDE_DEPRECATED_API /** @@ -326,7 +326,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * with the possible exception of the ID * @stable ICU 3.8 */ - virtual UBool hasSameRules(const TimeZone& other) const; + virtual UBool hasSameRules(const TimeZone& other) const override; /** * Gets the first time zone transition after the base time. @@ -336,7 +336,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * @return true if the transition is found. * @stable ICU 3.8 */ - virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const; + virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const override; /** * Gets the most recent time zone transition before the base time. @@ -346,7 +346,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * @return true if the transition is found. * @stable ICU 3.8 */ - virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const; + virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const override; /** * Returns the number of TimeZoneRules which represents time transitions, @@ -356,7 +356,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * @return The number of TimeZoneRules representing time transitions. * @stable ICU 3.8 */ - virtual int32_t countTransitionRules(UErrorCode& status) const; + virtual int32_t countTransitionRules(UErrorCode& status) const override; /** * Gets the InitialTimeZoneRule and the set of TimeZoneRule @@ -375,7 +375,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * @stable ICU 3.8 */ virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial, - const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const; + const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const override; private: enum { DEFAULT_VTIMEZONE_LINES = 100 }; @@ -461,7 +461,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * other classes have different class IDs. * @stable ICU 3.8 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/units_complexconverter.cpp b/deps/icu-small/source/i18n/units_complexconverter.cpp index db56f5ded9cf98..78cefbf7ebb733 100644 --- a/deps/icu-small/source/i18n/units_complexconverter.cpp +++ b/deps/icu-small/source/i18n/units_complexconverter.cpp @@ -164,7 +164,7 @@ MaybeStackVector ComplexUnitsConverter::convert(double quantity, if (i < n - 1) { // If quantity is at the limits of double's precision from an // integer value, we take that integer value. - int64_t flooredQuantity = floor(quantity * (1 + DBL_EPSILON)); + int64_t flooredQuantity = static_cast(floor(quantity * (1 + DBL_EPSILON))); if (uprv_isNaN(quantity)) { // With clang on Linux: floor does not support NaN, resulting in // a giant negative number. For now, we produce "0 feet, NaN @@ -183,7 +183,7 @@ MaybeStackVector ComplexUnitsConverter::convert(double quantity, } else { quantity = remainder; } - } + } } applyRounder(intValues, quantity, rounder, status); @@ -244,20 +244,20 @@ void ComplexUnitsConverter::applyRounder(MaybeStackArray &intValues, } // Check if there's a carry, and bubble it back up the resulting intValues. - int64_t carry = floor(unitsConverters_[lastIndex]->convertInverse(quantity) * (1 + DBL_EPSILON)); + int64_t carry = static_cast(floor(unitsConverters_[lastIndex]->convertInverse(quantity) * (1 + DBL_EPSILON))); if (carry <= 0) { return; } - quantity -= unitsConverters_[lastIndex]->convert(carry); + quantity -= unitsConverters_[lastIndex]->convert(static_cast(carry)); intValues[lastIndex - 1] += carry; // We don't use the first converter: that one is for the input unit for (int32_t j = lastIndex - 1; j > 0; j--) { - carry = floor(unitsConverters_[j]->convertInverse(intValues[j]) * (1 + DBL_EPSILON)); + carry = static_cast(floor(unitsConverters_[j]->convertInverse(static_cast(intValues[j])) * (1 + DBL_EPSILON))); if (carry <= 0) { return; } - intValues[j] -= round(unitsConverters_[j]->convert(carry)); + intValues[j] -= static_cast(round(unitsConverters_[j]->convert(static_cast(carry)))); intValues[j - 1] += carry; } } diff --git a/deps/icu-small/source/i18n/units_converter.cpp b/deps/icu-small/source/i18n/units_converter.cpp index 2854ad30b3288f..7e946e584bb76a 100644 --- a/deps/icu-small/source/i18n/units_converter.cpp +++ b/deps/icu-small/source/i18n/units_converter.cpp @@ -461,7 +461,7 @@ Convertibility U_I18N_API extractConvertibility(const MeasureUnitImpl &source, if (source.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED || target.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED) { - status = U_INTERNAL_PROGRAM_ERROR; + status = U_ARGUMENT_TYPE_MISMATCH; return UNCONVERTIBLE; } @@ -514,7 +514,7 @@ void UnitsConverter::init(const ConversionRates &ratesInfo, UErrorCode &status) if (this->conversionRate_.source.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED || this->conversionRate_.target.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED) { - status = U_INTERNAL_PROGRAM_ERROR; + status = U_ARGUMENT_TYPE_MISMATCH; return; } @@ -522,13 +522,13 @@ void UnitsConverter::init(const ConversionRates &ratesInfo, UErrorCode &status) this->conversionRate_.target, ratesInfo, status); if (U_FAILURE(status)) return; if (unitsState == Convertibility::UNCONVERTIBLE) { - status = U_INTERNAL_PROGRAM_ERROR; + status = U_ARGUMENT_TYPE_MISMATCH; return; } loadConversionRate(conversionRate_, conversionRate_.source, conversionRate_.target, unitsState, ratesInfo, status); - + } int32_t UnitsConverter::compareTwoUnits(const MeasureUnitImpl &firstUnit, @@ -540,7 +540,7 @@ int32_t UnitsConverter::compareTwoUnits(const MeasureUnitImpl &firstUnit, if (firstUnit.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED || secondUnit.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED) { - status = U_INTERNAL_PROGRAM_ERROR; + status = U_ARGUMENT_TYPE_MISMATCH; return 0; } @@ -550,7 +550,7 @@ int32_t UnitsConverter::compareTwoUnits(const MeasureUnitImpl &firstUnit, } if (unitsState == Convertibility::UNCONVERTIBLE || unitsState == Convertibility::RECIPROCAL) { - status = U_INTERNAL_PROGRAM_ERROR; + status = U_ARGUMENT_TYPE_MISMATCH; return 0; } diff --git a/deps/icu-small/source/i18n/units_converter.h b/deps/icu-small/source/i18n/units_converter.h index 1b83155a17b571..5c002f4147e6ab 100644 --- a/deps/icu-small/source/i18n/units_converter.h +++ b/deps/icu-small/source/i18n/units_converter.h @@ -75,7 +75,7 @@ struct U_I18N_API Factor { // Apply SI or binary prefix to the Factor. void applyPrefix(UMeasurePrefix unitPrefix); - // Does an in-place substition of the "symbolic constants" based on + // Does an in-place substitution of the "symbolic constants" based on // constantExponents (resetting the exponents). // // In ICU4J, see UnitConverter.Factor.getConversionRate(). @@ -208,7 +208,7 @@ class U_I18N_API UnitsConverter : public UMemory { /** * Initialises the object. - */ + */ void init(const ConversionRates &ratesInfo, UErrorCode &status); }; diff --git a/deps/icu-small/source/i18n/units_data.cpp b/deps/icu-small/source/i18n/units_data.cpp index 61f537479fa908..d1d1fc5bc05e4c 100644 --- a/deps/icu-small/source/i18n/units_data.cpp +++ b/deps/icu-small/source/i18n/units_data.cpp @@ -59,7 +59,7 @@ class ConversionRateDataSink : public ResourceSink { * @param noFallback Ignored. * @param status The standard ICU error code output parameter. */ - void put(const char *source, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) { + void put(const char *source, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) override { if (U_FAILURE(status)) { return; } if (uprv_strcmp(source, "convertUnits") != 0) { // This is very strict, however it is the cheapest way to be sure @@ -146,7 +146,7 @@ class UnitPreferencesSink : public ResourceSink { * @param status The standard ICU error code output parameter. Note: if an * error is returned, outPrefs and outMetadata may be inconsistent. */ - void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) { + void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) override { if (U_FAILURE(status)) { return; } if (uprv_strcmp(key, "unitPreferenceData") != 0) { // This is very strict, however it is the cheapest way to be sure diff --git a/deps/icu-small/source/i18n/units_router.cpp b/deps/icu-small/source/i18n/units_router.cpp index 51f66bfa892be7..0e6082fae5c438 100644 --- a/deps/icu-small/source/i18n/units_router.cpp +++ b/deps/icu-small/source/i18n/units_router.cpp @@ -66,9 +66,9 @@ void UnitsRouter::init(const MeasureUnit &inputUnit, StringPiece region, StringP UnitPreferences prefs(status); MeasureUnitImpl inputUnitImpl = MeasureUnitImpl::forMeasureUnitMaybeCopy(inputUnit, status); - MeasureUnit baseUnit = - (extractCompoundBaseUnit(inputUnitImpl, conversionRates, status)).build(status); - CharString category = getUnitQuantity(baseUnit.getIdentifier(), status); + MeasureUnitImpl baseUnitImpl = + (extractCompoundBaseUnit(inputUnitImpl, conversionRates, status)); + CharString category = getUnitQuantity(baseUnitImpl, status); if (U_FAILURE(status)) { return; } diff --git a/deps/icu-small/source/i18n/units_router.h b/deps/icu-small/source/i18n/units_router.h index c6e4e4f5288363..b3300f7e27737a 100644 --- a/deps/icu-small/source/i18n/units_router.h +++ b/deps/icu-small/source/i18n/units_router.h @@ -109,7 +109,7 @@ namespace units { * * NOTE: * the output units and their limits will be extracted from the units preferences database by knowing - * the followings: + * the following: * - input unit * - locale * - usage diff --git a/deps/icu-small/source/i18n/unum.cpp b/deps/icu-small/source/i18n/unum.cpp index de693fc7276244..7043f7adc12308 100644 --- a/deps/icu-small/source/i18n/unum.cpp +++ b/deps/icu-small/source/i18n/unum.cpp @@ -38,7 +38,7 @@ U_NAMESPACE_USE U_CAPI UNumberFormat* U_EXPORT2 -unum_open( UNumberFormatStyle style, +unum_open( UNumberFormatStyle style, const UChar* pattern, int32_t patternLength, const char* locale, @@ -93,11 +93,11 @@ unum_open( UNumberFormatStyle style, UParseError tErr; /* UnicodeString can handle the case when patternLength = -1. */ const UnicodeString pat(pattern, patternLength); - + if(parseErr==NULL){ parseErr = &tErr; } - + retVal = new RuleBasedNumberFormat(pat, Locale(locale), *parseErr, *status); } break; @@ -155,7 +155,7 @@ unum_clone(const UNumberFormat *fmt, { if(U_FAILURE(*status)) return 0; - + Format *res = 0; const NumberFormat* nf = reinterpret_cast(fmt); const DecimalFormat* df = dynamic_cast(nf); @@ -171,7 +171,7 @@ unum_clone(const UNumberFormat *fmt, *status = U_MEMORY_ALLOCATION_ERROR; return 0; } - + return (UNumberFormat*) res; } @@ -196,26 +196,26 @@ unum_formatInt64(const UNumberFormat* fmt, { if(U_FAILURE(*status)) return -1; - + UnicodeString res; if(!(result==NULL && resultLength==0)) { // NULL destination for pure preflighting: empty dummy string // otherwise, alias the destination buffer res.setTo(result, 0, resultLength); } - + FieldPosition fp; - + if(pos != 0) fp.setField(pos->field); - + ((const NumberFormat*)fmt)->format(number, res, fp, *status); if(pos != 0) { pos->beginIndex = fp.getBeginIndex(); pos->endIndex = fp.getEndIndex(); } - + return res.extract(result, resultLength, *status); } @@ -227,7 +227,7 @@ unum_formatDouble( const UNumberFormat* fmt, UFieldPosition *pos, /* 0 if ignore */ UErrorCode* status) { - + if(U_FAILURE(*status)) return -1; UnicodeString res; @@ -238,17 +238,17 @@ unum_formatDouble( const UNumberFormat* fmt, } FieldPosition fp; - + if(pos != 0) fp.setField(pos->field); - + ((const NumberFormat*)fmt)->format(number, res, fp, *status); - + if(pos != 0) { pos->beginIndex = fp.getBeginIndex(); pos->endIndex = fp.getEndIndex(); } - + return res.extract(result, resultLength, *status); } @@ -280,7 +280,7 @@ unum_formatDoubleForFields(const UNumberFormat* format, return res.extract(result, resultLength, *status); } -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_formatDecimal(const UNumberFormat* fmt, const char * number, int32_t length, @@ -324,7 +324,7 @@ unum_formatDecimal(const UNumberFormat* fmt, -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_formatDoubleCurrency(const UNumberFormat* fmt, double number, UChar* currency, @@ -340,7 +340,7 @@ unum_formatDoubleCurrency(const UNumberFormat* fmt, // otherwise, alias the destination buffer res.setTo(result, 0, resultLength); } - + FieldPosition fp; if (pos != 0) { fp.setField(pos->field); @@ -353,12 +353,12 @@ unum_formatDoubleCurrency(const UNumberFormat* fmt, } Formattable n(tempCurrAmnt); ((const NumberFormat*)fmt)->format(n, res, fp, *status); - + if (pos != 0) { pos->beginIndex = fp.getBeginIndex(); pos->endIndex = fp.getEndIndex(); } - + return res.extract(result, resultLength, *status); } @@ -372,15 +372,15 @@ parseRes(Formattable& res, { if(U_FAILURE(*status)) return; - + const UnicodeString src((UBool)(textLength == -1), text, textLength); ParsePosition pp; - + if(parsePos != 0) pp.setIndex(*parsePos); - + ((const NumberFormat*)fmt)->parse(src, res, pp); - + if(pp.getErrorIndex() != -1) { *status = U_PARSE_ERROR; if(parsePos != 0) { @@ -614,7 +614,7 @@ unum_setDoubleAttribute( UNumberFormat* fmt, { NumberFormat* nf = reinterpret_cast(fmt); DecimalFormat* df = dynamic_cast(nf); - if (df != NULL && attr == UNUM_ROUNDING_INCREMENT) { + if (df != NULL && attr == UNUM_ROUNDING_INCREMENT) { df->setRoundingIncrement(newValue); } } @@ -706,27 +706,27 @@ unum_setTextAttribute( UNumberFormat* fmt, case UNUM_POSITIVE_PREFIX: df->setPositivePrefix(val); break; - + case UNUM_POSITIVE_SUFFIX: df->setPositiveSuffix(val); break; - + case UNUM_NEGATIVE_PREFIX: df->setNegativePrefix(val); break; - + case UNUM_NEGATIVE_SUFFIX: df->setNegativeSuffix(val); break; - + case UNUM_PADDING_CHARACTER: df->setPadCharacter(val); break; - + case UNUM_CURRENCY_CODE: df->setCurrency(val.getTerminatedBuffer(), *status); break; - + default: *status = U_UNSUPPORTED_ERROR; break; @@ -751,7 +751,7 @@ unum_toPattern( const UNumberFormat* fmt, { if(U_FAILURE(*status)) return -1; - + UnicodeString pat; if(!(result==NULL && resultLength==0)) { // NULL destination for pure preflighting: empty dummy string @@ -838,15 +838,15 @@ unum_applyPattern( UNumberFormat *fmt, { UErrorCode tStatus = U_ZERO_ERROR; UParseError tParseError; - + if(parseError == NULL){ parseError = &tParseError; } - + if(status==NULL){ status = &tStatus; } - + int32_t len = (patternLength == -1 ? u_strlen(pattern) : patternLength); const UnicodeString pat((UChar*)pattern, len, len); diff --git a/deps/icu-small/source/i18n/uregex.cpp b/deps/icu-small/source/i18n/uregex.cpp index 763a78a14a9b4d..514159e8b7af35 100644 --- a/deps/icu-small/source/i18n/uregex.cpp +++ b/deps/icu-small/source/i18n/uregex.cpp @@ -1169,7 +1169,7 @@ uregex_replaceAll(URegularExpression *regexp2, uregex_reset(regexp2, 0, status); - // Note: Seperate error code variables for findNext() and appendReplacement() + // Note: Separate error code variables for findNext() and appendReplacement() // are used so that destination buffer overflow errors // in appendReplacement won't stop findNext() from working. // appendReplacement() and appendTail() special case incoming buffer @@ -1353,7 +1353,7 @@ int32_t RegexCImpl::appendReplacement(RegularExpression *regexp, } // - // Validate all paramters + // Validate all parameters // if (validateRE(regexp, TRUE, status) == FALSE) { return 0; @@ -1497,7 +1497,7 @@ int32_t RegexCImpl::appendReplacement(RegularExpression *regexp, // Scan for Named Capture Group, ${name}. UnicodeString groupName; U16_FWD_1(replacementText, replIdx, replacementLength); - while (U_SUCCESS(*status) && c32 != RIGHTBRACKET) { + while (U_SUCCESS(*status) && c32 != RIGHTBRACKET) { if (replIdx >= replacementLength) { *status = U_REGEX_INVALID_CAPTURE_GROUP_NAME; break; @@ -1977,3 +1977,4 @@ uregex_splitUText(URegularExpression *regexp2, #endif // !UCONFIG_NO_REGULAR_EXPRESSIONS + diff --git a/deps/icu-small/source/i18n/uregexc.cpp b/deps/icu-small/source/i18n/uregexc.cpp index 8674b4f17f5876..c7d3bcd2c743fb 100644 --- a/deps/icu-small/source/i18n/uregexc.cpp +++ b/deps/icu-small/source/i18n/uregexc.cpp @@ -8,7 +8,7 @@ * file name: regexc.cpp * description: The purpose of this function is to separate the codepage * conversion from the rest of the uregex_ API. This can removes any -* dependency on codepage conversion, which reduces the overhead of +* dependency on codepage conversion, which reduces the overhead of */ #include "unicode/uregex.h" diff --git a/deps/icu-small/source/i18n/usearch.cpp b/deps/icu-small/source/i18n/usearch.cpp index 47da3d7364de3f..80b80fa3b43710 100644 --- a/deps/icu-small/source/i18n/usearch.cpp +++ b/deps/icu-small/source/i18n/usearch.cpp @@ -26,17 +26,13 @@ U_NAMESPACE_USE -// don't use Boyer-Moore -// (and if we decide to turn this on again there are several new TODOs that will need to be addressed) -#define BOYER_MOORE 0 - // internal definition --------------------------------------------------- #define LAST_BYTE_MASK_ 0xFF #define SECOND_LAST_BYTE_SHIFT_ 8 #define SUPPLEMENTARY_MIN_VALUE_ 0x10000 -static const Normalizer2Impl *g_nfcImpl = NULL; +static const Normalizer2Impl *g_nfcImpl = nullptr; // internal methods ------------------------------------------------- @@ -48,11 +44,11 @@ static const Normalizer2Impl *g_nfcImpl = NULL; */ static inline void setColEIterOffset(UCollationElements *elems, - int32_t offset) + int32_t offset, + UErrorCode &status) { // Note: Not "fast" any more after the 2013 collation rewrite. // We do not want to expose more internals than necessary. - UErrorCode status = U_ZERO_ERROR; ucol_setOffset(elems, offset, &status); } @@ -76,29 +72,10 @@ inline uint32_t getMask(UCollationStrength strength) } } -/** -* @param ce 32-bit collation element -* @return hash code -*/ -static -inline int hashFromCE32(uint32_t ce) -{ - int hc = (int)( - ((((((ce >> 24) * 37) + - (ce >> 16)) * 37) + - (ce >> 8)) * 37) + - ce); - hc %= MAX_TABLE_SIZE_; - if (hc < 0) { - hc += MAX_TABLE_SIZE_; - } - return hc; -} - U_CDECL_BEGIN static UBool U_CALLCONV usearch_cleanup(void) { - g_nfcImpl = NULL; + g_nfcImpl = nullptr; return TRUE; } U_CDECL_END @@ -112,7 +89,7 @@ U_CDECL_END static inline void initializeFCD(UErrorCode *status) { - if (g_nfcImpl == NULL) { + if (g_nfcImpl == nullptr) { g_nfcImpl = Normalizer2Factory::getNFCImpl(*status); ucln_i18n_registerCleanup(UCLN_I18N_USEARCH, usearch_cleanup); } @@ -175,18 +152,18 @@ inline int32_t getCE(const UStringSearch *strsrch, uint32_t sourcece) } /** -* Allocate a memory and returns NULL if it failed. +* Allocate a memory and returns nullptr if it failed. * Internal method, status assumed to be a success. * @param size to allocate * @param status output error if any, caller to check status before calling * method, status assumed to be success when passed in. -* @return newly allocated array, NULL otherwise +* @return newly allocated array, nullptr otherwise */ static inline void * allocateMemory(uint32_t size, UErrorCode *status) { uint32_t *result = (uint32_t *)uprv_malloc(size); - if (result == NULL) { + if (result == nullptr) { *status = U_MEMORY_ALLOCATION_ERROR; } return result; @@ -197,7 +174,7 @@ inline void * allocateMemory(uint32_t size, UErrorCode *status) * Creates a new array if we run out of space. The caller will have to * manually deallocate the newly allocated array. * Internal method, status assumed to be success, caller has to check status -* before calling this method. destination not to be NULL and has at least +* before calling this method. destination not to be nullptr and has at least * size destinationlength. * @param destination target array * @param offset destination offset to add value @@ -222,7 +199,7 @@ inline int32_t * addTouint32_tArray(int32_t *destination, int32_t *temp = (int32_t *)allocateMemory( sizeof(int32_t) * newlength, status); if (U_FAILURE(*status)) { - return NULL; + return nullptr; } uprv_memcpy(temp, destination, sizeof(int32_t) * (size_t)offset); *destinationlength = newlength; @@ -237,7 +214,7 @@ inline int32_t * addTouint32_tArray(int32_t *destination, * Creates a new array if we run out of space. The caller will have to * manually deallocate the newly allocated array. * Internal method, status assumed to be success, caller has to check status -* before calling this method. destination not to be NULL and has at least +* before calling this method. destination not to be nullptr and has at least * size destinationlength. * @param destination target array * @param offset destination offset to add value @@ -263,7 +240,7 @@ inline int64_t * addTouint64_tArray(int64_t *destination, sizeof(int64_t) * newlength, status); if (U_FAILURE(*status)) { - return NULL; + return nullptr; } uprv_memcpy(temp, destination, sizeof(int64_t) * (size_t)offset); @@ -286,11 +263,9 @@ inline int64_t * addTouint64_tArray(int64_t *destination, * @param strsrch string search data * @param status output error if any, caller to check status before calling * method, status assumed to be success when passed in. -* @return total number of expansions */ static -inline uint16_t initializePatternCETable(UStringSearch *strsrch, - UErrorCode *status) +inline void initializePatternCETable(UStringSearch *strsrch, UErrorCode *status) { UPattern *pattern = &(strsrch->pattern); uint32_t cetablesize = INITIAL_ARRAY_SIZE_; @@ -298,7 +273,7 @@ inline uint16_t initializePatternCETable(UStringSearch *strsrch, uint32_t patternlength = pattern->textLength; UCollationElements *coleiter = strsrch->utilIter; - if (coleiter == NULL) { + if (coleiter == nullptr) { coleiter = ucol_openElements(strsrch->collator, pattern->text, patternlength, status); // status will be checked in ucol_next(..) later and if it is an @@ -310,7 +285,7 @@ inline uint16_t initializePatternCETable(UStringSearch *strsrch, ucol_setText(coleiter, pattern->text, pattern->textLength, status); } if(U_FAILURE(*status)) { - return 0; + return; } if (pattern->ces != cetable && pattern->ces) { @@ -318,7 +293,6 @@ inline uint16_t initializePatternCETable(UStringSearch *strsrch, } uint32_t offset = 0; - uint16_t result = 0; int32_t ce; while ((ce = ucol_next(coleiter, status)) != UCOL_NULLORDER && @@ -330,7 +304,7 @@ inline uint16_t initializePatternCETable(UStringSearch *strsrch, patternlength - ucol_getOffset(coleiter) + 1, status); if (U_FAILURE(*status)) { - return 0; + return; } offset ++; if (cetable != temp && cetable != pattern->cesBuffer) { @@ -338,14 +312,11 @@ inline uint16_t initializePatternCETable(UStringSearch *strsrch, } cetable = temp; } - result += (uint16_t)(ucol_getMaxExpansion(coleiter, ce) - 1); } cetable[offset] = 0; pattern->ces = cetable; pattern->cesLength = offset; - - return result; } /** @@ -358,11 +329,10 @@ inline uint16_t initializePatternCETable(UStringSearch *strsrch, * @param strsrch string search data * @param status output error if any, caller to check status before calling * method, status assumed to be success when passed in. -* @return total number of expansions */ static -inline uint16_t initializePatternPCETable(UStringSearch *strsrch, - UErrorCode *status) +inline void initializePatternPCETable(UStringSearch *strsrch, + UErrorCode *status) { UPattern *pattern = &(strsrch->pattern); uint32_t pcetablesize = INITIAL_ARRAY_SIZE_; @@ -370,26 +340,25 @@ inline uint16_t initializePatternPCETable(UStringSearch *strsrch, uint32_t patternlength = pattern->textLength; UCollationElements *coleiter = strsrch->utilIter; - if (coleiter == NULL) { + if (coleiter == nullptr) { coleiter = ucol_openElements(strsrch->collator, pattern->text, patternlength, status); - // status will be checked in ucol_next(..) later and if it is an - // error UCOL_NULLORDER the result of ucol_next(..) and 0 will be + // status will be checked in nextProcessed(..) later and if it is an error + // then UCOL_PROCESSED_NULLORDER is returned by nextProcessed(..), so 0 will be // returned. strsrch->utilIter = coleiter; } else { ucol_setText(coleiter, pattern->text, pattern->textLength, status); } if(U_FAILURE(*status)) { - return 0; + return; } - if (pattern->pces != pcetable && pattern->pces != NULL) { + if (pattern->pces != pcetable && pattern->pces != nullptr) { uprv_free(pattern->pces); } uint32_t offset = 0; - uint16_t result = 0; int64_t pce; icu::UCollationPCE iter(coleiter); @@ -397,7 +366,7 @@ inline uint16_t initializePatternPCETable(UStringSearch *strsrch, // ** Should processed CEs be signed or unsigned? // ** (the rest of the code in this file seems to play fast-and-loose with // ** whether a CE is signed or unsigned. For example, look at routine above this one.) - while ((pce = iter.nextProcessed(NULL, NULL, status)) != UCOL_PROCESSED_NULLORDER && + while ((pce = iter.nextProcessed(nullptr, nullptr, status)) != UCOL_PROCESSED_NULLORDER && U_SUCCESS(*status)) { int64_t *temp = addTouint64_tArray(pcetable, offset, &pcetablesize, pce, @@ -405,7 +374,7 @@ inline uint16_t initializePatternPCETable(UStringSearch *strsrch, status); if (U_FAILURE(*status)) { - return 0; + return; } offset += 1; @@ -415,28 +384,24 @@ inline uint16_t initializePatternPCETable(UStringSearch *strsrch, } pcetable = temp; - //result += (uint16_t)(ucol_getMaxExpansion(coleiter, ce) - 1); } pcetable[offset] = 0; pattern->pces = pcetable; pattern->pcesLength = offset; - - return result; } /** * Initializes the pattern struct. -* Internal method, status assumed to be success. * @param strsrch UStringSearch data storage * @param status output error if any, caller to check status before calling * method, status assumed to be success when passed in. -* @return expansionsize the total expansion size of the pattern */ static -inline int16_t initializePattern(UStringSearch *strsrch, UErrorCode *status) +inline void initializePattern(UStringSearch *strsrch, UErrorCode *status) { - if (U_FAILURE(*status)) { return 0; } + if (U_FAILURE(*status)) { return; } + UPattern *pattern = &(strsrch->pattern); const UChar *patterntext = pattern->text; int32_t length = pattern->textLength; @@ -456,90 +421,19 @@ inline int16_t initializePattern(UStringSearch *strsrch, UErrorCode *status) } // ** HACK ** - if (strsrch->pattern.pces != NULL) { + if (strsrch->pattern.pces != nullptr) { if (strsrch->pattern.pces != strsrch->pattern.pcesBuffer) { uprv_free(strsrch->pattern.pces); } - strsrch->pattern.pces = NULL; - } - - // since intializePattern is an internal method status is a success. - return initializePatternCETable(strsrch, status); -} - -/** -* Initializing shift tables, with the default values. -* If a corresponding default value is 0, the shift table is not set. -* @param shift table for forwards shift -* @param backshift table for backwards shift -* @param cetable table containing pattern ce -* @param cesize size of the pattern ces -* @param expansionsize total size of the expansions -* @param defaultforward the default forward value -* @param defaultbackward the default backward value -*/ -static -inline void setShiftTable(int16_t shift[], int16_t backshift[], - int32_t *cetable, int32_t cesize, - int16_t expansionsize, - int16_t defaultforward, - int16_t defaultbackward) -{ - // estimate the value to shift. to do that we estimate the smallest - // number of characters to give the relevant ces, ie approximately - // the number of ces minus their expansion, since expansions can come - // from a character. - int32_t count; - for (count = 0; count < MAX_TABLE_SIZE_; count ++) { - shift[count] = defaultforward; + strsrch->pattern.pces = nullptr; } - cesize --; // down to the last index - for (count = 0; count < cesize; count ++) { - // number of ces from right of array to the count - int temp = defaultforward - count - 1; - shift[hashFromCE32(cetable[count])] = temp > 1 ? static_cast(temp) : 1; - } - shift[hashFromCE32(cetable[cesize])] = 1; - // for ignorables we just shift by one. see test examples. - shift[hashFromCE32(0)] = 1; - for (count = 0; count < MAX_TABLE_SIZE_; count ++) { - backshift[count] = defaultbackward; - } - for (count = cesize; count > 0; count --) { - // the original value count does not seem to work - backshift[hashFromCE32(cetable[count])] = count > expansionsize ? - (int16_t)(count - expansionsize) : 1; - } - backshift[hashFromCE32(cetable[0])] = 1; - backshift[hashFromCE32(0)] = 1; + initializePatternCETable(strsrch, status); } /** -* Building of the pattern collation element list and the boyer moore strsrch -* table. -* The canonical match will only be performed after the default match fails. -* For both cases we need to remember the size of the composed and decomposed -* versions of the string. Since the Boyer-Moore shift calculations shifts by -* a number of characters in the text and tries to match the pattern from that -* offset, the shift value can not be too large in case we miss some -* characters. To choose a right shift size, we estimate the NFC form of the -* and use its size as a shift guide. The NFC form should be the small -* possible representation of the pattern. Anyways, we'll err on the smaller -* shift size. Hence the calculation for minlength. -* Canonical match will be performed slightly differently. We'll split the -* pattern into 3 parts, the prefix accents (PA), the middle string bounded by -* the first and last base character (MS), the ending accents (EA). Matches -* will be done on MS first, and only when we match MS then some processing -* will be required for the prefix and end accents in order to determine if -* they match PA and EA. Hence the default shift values -* for the canonical match will take the size of either end's accent into -* consideration. Forwards search will take the end accents into consideration -* for the default shift values and the backwards search will take the prefix -* accents into consideration. -* If pattern has no non-ignorable ce, we return a illegal argument error. -* Internal method, status assumed to be success. +* Initializes the pattern struct and builds the pattern collation element table. * @param strsrch UStringSearch data storage * @param status for output errors if it occurs, status is assumed to be a * success when it is passed in. @@ -547,2046 +441,100 @@ inline void setShiftTable(int16_t shift[], int16_t backshift[], static inline void initialize(UStringSearch *strsrch, UErrorCode *status) { - int16_t expandlength = initializePattern(strsrch, status); - if (U_SUCCESS(*status) && strsrch->pattern.cesLength > 0) { - UPattern *pattern = &strsrch->pattern; - int32_t cesize = pattern->cesLength; - - int16_t minlength = cesize > expandlength - ? (int16_t)cesize - expandlength : 1; - pattern->defaultShiftSize = minlength; - setShiftTable(pattern->shift, pattern->backShift, pattern->ces, - cesize, expandlength, minlength, minlength); - return; - } - strsrch->pattern.defaultShiftSize = 0; + initializePattern(strsrch, status); } -#if BOYER_MOORE -/** -* Check to make sure that the match length is at the end of the character by -* using the breakiterator. -* @param strsrch string search data -* @param start target text start offset -* @param end target text end offset -*/ -static -void checkBreakBoundary(const UStringSearch *strsrch, int32_t * /*start*/, - int32_t *end) -{ #if !UCONFIG_NO_BREAK_ITERATION - UBreakIterator *breakiterator = strsrch->search->internalBreakIter; - if (breakiterator) { - int32_t matchend = *end; - //int32_t matchstart = *start; - - if (!ubrk_isBoundary(breakiterator, matchend)) { - *end = ubrk_following(breakiterator, matchend); - } - - /* Check the start of the matched text to make sure it doesn't have any accents - * before it. This code may not be necessary and so it is commented out */ - /*if (!ubrk_isBoundary(breakiterator, matchstart) && !ubrk_isBoundary(breakiterator, matchstart-1)) { - *start = ubrk_preceding(breakiterator, matchstart); - }*/ - } -#endif -} - -/** -* Determine whether the target text in UStringSearch bounded by the offset -* start and end is one or more whole units of text as -* determined by the breakiterator in UStringSearch. -* @param strsrch string search data -* @param start target text start offset -* @param end target text end offset -*/ -static -UBool isBreakUnit(const UStringSearch *strsrch, int32_t start, - int32_t end) +// If the caller provided a character breakiterator we'll return that, +// otherwise we lazily create the internal break iterator. +static UBreakIterator* getBreakIterator(UStringSearch *strsrch, UErrorCode &status) { -#if !UCONFIG_NO_BREAK_ITERATION - UBreakIterator *breakiterator = strsrch->search->breakIter; - //TODO: Add here. - if (breakiterator) { - int32_t startindex = ubrk_first(breakiterator); - int32_t endindex = ubrk_last(breakiterator); - - // out-of-range indexes are never boundary positions - if (start < startindex || start > endindex || - end < startindex || end > endindex) { - return FALSE; - } - // otherwise, we can use following() on the position before the - // specified one and return true of the position we get back is the - // one the user specified - UBool result = (start == startindex || - ubrk_following(breakiterator, start - 1) == start) && - (end == endindex || - ubrk_following(breakiterator, end - 1) == end); - if (result) { - // iterates the individual ces - UCollationElements *coleiter = strsrch->utilIter; - const UChar *text = strsrch->search->text + - start; - UErrorCode status = U_ZERO_ERROR; - ucol_setText(coleiter, text, end - start, &status); - for (int32_t count = 0; count < strsrch->pattern.cesLength; - count ++) { - int32_t ce = getCE(strsrch, ucol_next(coleiter, &status)); - if (ce == UCOL_IGNORABLE) { - count --; - continue; - } - if (U_FAILURE(status) || ce != strsrch->pattern.ces[count]) { - return FALSE; - } - } - int32_t nextce = ucol_next(coleiter, &status); - while (ucol_getOffset(coleiter) == (end - start) - && getCE(strsrch, nextce) == UCOL_IGNORABLE) { - nextce = ucol_next(coleiter, &status); - } - if (ucol_getOffset(coleiter) == (end - start) - && nextce != UCOL_NULLORDER) { - // extra collation elements at the end of the match - return FALSE; - } - } - return result; + if (U_FAILURE(status)) { + return nullptr; } -#endif - return TRUE; -} -/** -* Getting the next base character offset if current offset is an accent, -* or the current offset if the current character contains a base character. -* accents the following base character will be returned -* @param text string -* @param textoffset current offset -* @param textlength length of text string -* @return the next base character or the current offset -* if the current character is contains a base character. -*/ -static -inline int32_t getNextBaseOffset(const UChar *text, - int32_t textoffset, - int32_t textlength) -{ - if (textoffset < textlength) { - int32_t temp = textoffset; - if (getFCD(text, &temp, textlength) >> SECOND_LAST_BYTE_SHIFT_) { - while (temp < textlength) { - int32_t result = temp; - if ((getFCD(text, &temp, textlength) >> - SECOND_LAST_BYTE_SHIFT_) == 0) { - return result; - } - } - return textlength; - } + if (strsrch->search->breakIter != nullptr) { + return strsrch->search->breakIter; } - return textoffset; -} -/** -* Gets the next base character offset depending on the string search pattern -* data -* @param strsrch string search data -* @param textoffset current offset, one offset away from the last character -* to search for. -* @return start index of the next base character or the current offset -* if the current character is contains a base character. -*/ -static -inline int32_t getNextUStringSearchBaseOffset(UStringSearch *strsrch, - int32_t textoffset) -{ - int32_t textlength = strsrch->search->textLength; - if (strsrch->pattern.hasSuffixAccents && - textoffset < textlength) { - int32_t temp = textoffset; - const UChar *text = strsrch->search->text; - U16_BACK_1(text, 0, temp); - if (getFCD(text, &temp, textlength) & LAST_BYTE_MASK_) { - return getNextBaseOffset(text, textoffset, textlength); - } + if (strsrch->search->internalBreakIter != nullptr) { + return strsrch->search->internalBreakIter; } - return textoffset; -} -/** -* Shifting the collation element iterator position forward to prepare for -* a following match. If the last character is a unsafe character, we'll only -* shift by 1 to capture contractions, normalization etc. -* Internal method, status assumed to be success. -* @param text strsrch string search data -* @param textoffset start text position to do search -* @param ce the text ce which failed the match. -* @param patternceindex index of the ce within the pattern ce buffer which -* failed the match -* @return final offset -*/ -static -inline int32_t shiftForward(UStringSearch *strsrch, - int32_t textoffset, - int32_t ce, - int32_t patternceindex) -{ - UPattern *pattern = &(strsrch->pattern); - if (ce != UCOL_NULLORDER) { - int32_t shift = pattern->shift[hashFromCE32(ce)]; - // this is to adjust for characters in the middle of the - // substring for matching that failed. - int32_t adjust = pattern->cesLength - patternceindex; - if (adjust > 1 && shift >= adjust) { - shift -= adjust - 1; - } - textoffset += shift; - } - else { - textoffset += pattern->defaultShiftSize; - } + // Need to create the internal break iterator. + strsrch->search->internalBreakIter = ubrk_open(UBRK_CHARACTER, + ucol_getLocaleByType(strsrch->collator, ULOC_VALID_LOCALE, &status), + strsrch->search->text, strsrch->search->textLength, &status); - textoffset = getNextUStringSearchBaseOffset(strsrch, textoffset); - // check for unsafe characters - // * if it is the start or middle of a contraction: to be done after - // a initial match is found - // * thai or lao base consonant character: similar to contraction - // * high surrogate character: similar to contraction - // * next character is a accent: shift to the next base character - return textoffset; + return strsrch->search->internalBreakIter; } -#endif // #if BOYER_MOORE +#endif /** -* sets match not found +* Sets the match result to "not found", regardless of the incoming error status. +* If an error occurs while setting the result, it is reported back. +* * @param strsrch string search data +* @param status for output errors, if they occur. */ static -inline void setMatchNotFound(UStringSearch *strsrch) +inline void setMatchNotFound(UStringSearch *strsrch, UErrorCode &status) { - // this method resets the match result regardless of the error status. + UErrorCode localStatus = U_ZERO_ERROR; + strsrch->search->matchedIndex = USEARCH_DONE; strsrch->search->matchedLength = 0; if (strsrch->search->isForwardSearching) { - setColEIterOffset(strsrch->textIter, strsrch->search->textLength); - } - else { - setColEIterOffset(strsrch->textIter, 0); - } -} - -#if BOYER_MOORE -/** -* Gets the offset to the next safe point in text. -* ie. not the middle of a contraction, swappable characters or supplementary -* characters. -* @param collator collation sata -* @param text string to work with -* @param textoffset offset in string -* @param textlength length of text string -* @return offset to the next safe character -*/ -static -inline int32_t getNextSafeOffset(const UCollator *collator, - const UChar *text, - int32_t textoffset, - int32_t textlength) -{ - int32_t result = textoffset; // first contraction character - while (result != textlength && ucol_unsafeCP(text[result], collator)) { - result ++; - } - return result; -} - -/** -* This checks for accents in the potential match started with a . -* composite character. -* This is really painful... we have to check that composite character do not -* have any extra accents. We have to normalize the potential match and find -* the immediate decomposed character before the match. -* The first composite character would have been taken care of by the fcd -* checks in checkForwardExactMatch. -* This is the slow path after the fcd of the first character and -* the last character has been checked by checkForwardExactMatch and we -* determine that the potential match has extra non-ignorable preceding -* ces. -* E.g. looking for \u0301 acute in \u01FA A ring above and acute, -* checkExtraMatchAccent should fail since there is a middle ring in \u01FA -* Note here that accents checking are slow and cautioned in the API docs. -* Internal method, status assumed to be a success, caller should check status -* before calling this method -* @param strsrch string search data -* @param start index of the potential unfriendly composite character -* @param end index of the potential unfriendly composite character -* @param status output error status if any. -* @return TRUE if there is non-ignorable accents before at the beginning -* of the match, FALSE otherwise. -*/ - -static -UBool checkExtraMatchAccents(const UStringSearch *strsrch, int32_t start, - int32_t end, - UErrorCode *status) -{ - UBool result = FALSE; - if (strsrch->pattern.hasPrefixAccents) { - int32_t length = end - start; - int32_t offset = 0; - const UChar *text = strsrch->search->text + start; - - U16_FWD_1(text, offset, length); - // we are only concerned with the first composite character - if (unorm_quickCheck(text, offset, UNORM_NFD, status) == UNORM_NO) { - int32_t safeoffset = getNextSafeOffset(strsrch->collator, - text, 0, length); - if (safeoffset != length) { - safeoffset ++; - } - UChar *norm = NULL; - UChar buffer[INITIAL_ARRAY_SIZE_]; - int32_t size = unorm_normalize(text, safeoffset, UNORM_NFD, 0, - buffer, INITIAL_ARRAY_SIZE_, - status); - if (U_FAILURE(*status)) { - return FALSE; - } - if (size >= INITIAL_ARRAY_SIZE_) { - norm = (UChar *)allocateMemory((size + 1) * sizeof(UChar), - status); - // if allocation failed, status will be set to - // U_MEMORY_ALLOCATION_ERROR and unorm_normalize internally - // checks for it. - size = unorm_normalize(text, safeoffset, UNORM_NFD, 0, norm, - size, status); - if (U_FAILURE(*status) && norm != NULL) { - uprv_free(norm); - return FALSE; - } - } - else { - norm = buffer; - } - - UCollationElements *coleiter = strsrch->utilIter; - ucol_setText(coleiter, norm, size, status); - uint32_t firstce = strsrch->pattern.ces[0]; - UBool ignorable = TRUE; - uint32_t ce = UCOL_IGNORABLE; - while (U_SUCCESS(*status) && ce != firstce && ce != (uint32_t)UCOL_NULLORDER) { - offset = ucol_getOffset(coleiter); - if (ce != firstce && ce != UCOL_IGNORABLE) { - ignorable = FALSE; - } - ce = ucol_next(coleiter, status); - } - UChar32 codepoint; - U16_PREV(norm, 0, offset, codepoint); - result = !ignorable && (u_getCombiningClass(codepoint) != 0); - - if (norm != buffer) { - uprv_free(norm); - } - } - } - - return result; -} - -/** -* Used by exact matches, checks if there are accents before the match. -* This is really painful... we have to check that composite characters at -* the start of the matches have to not have any extra accents. -* We check the FCD of the character first, if it starts with an accent and -* the first pattern ce does not match the first ce of the character, we bail. -* Otherwise we try normalizing the first composite -* character and find the immediate decomposed character before the match to -* see if it is an non-ignorable accent. -* Now normalizing the first composite character is enough because we ensure -* that when the match is passed in here with extra beginning ces, the -* first or last ce that match has to occur within the first character. -* E.g. looking for \u0301 acute in \u01FA A ring above and acute, -* checkExtraMatchAccent should fail since there is a middle ring in \u01FA -* Note here that accents checking are slow and cautioned in the API docs. -* @param strsrch string search data -* @param start offset -* @param end offset -* @return TRUE if there are accents on either side of the match, -* FALSE otherwise -*/ -static -UBool hasAccentsBeforeMatch(const UStringSearch *strsrch, int32_t start, - int32_t end) -{ - if (strsrch->pattern.hasPrefixAccents) { - UCollationElements *coleiter = strsrch->textIter; - UErrorCode status = U_ZERO_ERROR; - // we have been iterating forwards previously - uint32_t ignorable = TRUE; - int32_t firstce = strsrch->pattern.ces[0]; - - setColEIterOffset(coleiter, start); - int32_t ce = getCE(strsrch, ucol_next(coleiter, &status)); - if (U_FAILURE(status)) { - return TRUE; - } - while (ce != firstce) { - if (ce != UCOL_IGNORABLE) { - ignorable = FALSE; - } - ce = getCE(strsrch, ucol_next(coleiter, &status)); - if (U_FAILURE(status) || ce == UCOL_NULLORDER) { - return TRUE; - } - } - if (!ignorable && inNormBuf(coleiter)) { - // within normalization buffer, discontiguous handled here - return TRUE; - } - - // within text - int32_t temp = start; - // original code - // accent = (getFCD(strsrch->search->text, &temp, - // strsrch->search->textLength) - // >> SECOND_LAST_BYTE_SHIFT_); - // however this code does not work well with VC7 .net in release mode. - // maybe the inlines for getFCD combined with shifting has bugs in - // VC7. anyways this is a work around. - UBool accent = getFCD(strsrch->search->text, &temp, - strsrch->search->textLength) > 0xFF; - if (!accent) { - return checkExtraMatchAccents(strsrch, start, end, &status); - } - if (!ignorable) { - return TRUE; - } - if (start > 0) { - temp = start; - U16_BACK_1(strsrch->search->text, 0, temp); - if (getFCD(strsrch->search->text, &temp, - strsrch->search->textLength) & LAST_BYTE_MASK_) { - setColEIterOffset(coleiter, start); - ce = ucol_previous(coleiter, &status); - if (U_FAILURE(status) || - (ce != UCOL_NULLORDER && ce != UCOL_IGNORABLE)) { - return TRUE; - } - } - } - } - - return FALSE; -} - -/** -* Used by exact matches, checks if there are accents bounding the match. -* Note this is the initial boundary check. If the potential match -* starts or ends with composite characters, the accents in those -* characters will be determined later. -* Not doing backwards iteration here, since discontiguos contraction for -* backwards collation element iterator, use up too many characters. -* E.g. looking for \u030A ring in \u01FA A ring above and acute, -* should fail since there is a acute at the end of \u01FA -* Note here that accents checking are slow and cautioned in the API docs. -* @param strsrch string search data -* @param start offset of match -* @param end end offset of the match -* @return TRUE if there are accents on either side of the match, -* FALSE otherwise -*/ -static -UBool hasAccentsAfterMatch(const UStringSearch *strsrch, int32_t start, - int32_t end) -{ - if (strsrch->pattern.hasSuffixAccents) { - const UChar *text = strsrch->search->text; - int32_t temp = end; - int32_t textlength = strsrch->search->textLength; - U16_BACK_1(text, 0, temp); - if (getFCD(text, &temp, textlength) & LAST_BYTE_MASK_) { - int32_t firstce = strsrch->pattern.ces[0]; - UCollationElements *coleiter = strsrch->textIter; - UErrorCode status = U_ZERO_ERROR; - int32_t ce; - setColEIterOffset(coleiter, start); - while ((ce = getCE(strsrch, ucol_next(coleiter, &status))) != firstce) { - if (U_FAILURE(status) || ce == UCOL_NULLORDER) { - return TRUE; - } - } - int32_t count = 1; - while (count < strsrch->pattern.cesLength) { - if (getCE(strsrch, ucol_next(coleiter, &status)) - == UCOL_IGNORABLE) { - // Thai can give an ignorable here. - count --; - } - if (U_FAILURE(status)) { - return TRUE; - } - count ++; - } - - ce = ucol_next(coleiter, &status); - if (U_FAILURE(status)) { - return TRUE; - } - if (ce != UCOL_NULLORDER && ce != UCOL_IGNORABLE) { - ce = getCE(strsrch, ce); - } - if (ce != UCOL_NULLORDER && ce != UCOL_IGNORABLE) { - if (ucol_getOffset(coleiter) <= end) { - return TRUE; - } - if (getFCD(text, &end, textlength) >> SECOND_LAST_BYTE_SHIFT_) { - return TRUE; - } - } - } - } - return FALSE; -} -#endif // #if BOYER_MOORE - -/** -* Checks if the offset runs out of the text string -* @param offset -* @param textlength of the text string -* @return TRUE if offset is out of bounds, FALSE otherwise -*/ -static -inline UBool isOutOfBounds(int32_t textlength, int32_t offset) -{ - return offset < 0 || offset > textlength; -} - -/** -* Checks for identical match -* @param strsrch string search data -* @param start offset of possible match -* @param end offset of possible match -* @return TRUE if identical match is found -*/ -static -inline UBool checkIdentical(const UStringSearch *strsrch, int32_t start, - int32_t end) -{ - if (strsrch->strength != UCOL_IDENTICAL) { - return TRUE; - } - - // Note: We could use Normalizer::compare() or similar, but for short strings - // which may not be in FCD it might be faster to just NFD them. - UErrorCode status = U_ZERO_ERROR; - UnicodeString t2, p2; - strsrch->nfd->normalize( - UnicodeString(FALSE, strsrch->search->text + start, end - start), t2, status); - strsrch->nfd->normalize( - UnicodeString(FALSE, strsrch->pattern.text, strsrch->pattern.textLength), p2, status); - // return FALSE if NFD failed - return U_SUCCESS(status) && t2 == p2; -} - -#if BOYER_MOORE -/** -* Checks to see if the match is repeated -* @param strsrch string search data -* @param start new match start index -* @param end new match end index -* @return TRUE if the the match is repeated, FALSE otherwise -*/ -static -inline UBool checkRepeatedMatch(UStringSearch *strsrch, - int32_t start, - int32_t end) -{ - int32_t lastmatchindex = strsrch->search->matchedIndex; - UBool result; - if (lastmatchindex == USEARCH_DONE) { - return FALSE; - } - if (strsrch->search->isForwardSearching) { - result = start <= lastmatchindex; + setColEIterOffset(strsrch->textIter, strsrch->search->textLength, localStatus); } else { - result = start >= lastmatchindex; - } - if (!result && !strsrch->search->isOverlap) { - if (strsrch->search->isForwardSearching) { - result = start < lastmatchindex + strsrch->search->matchedLength; - } - else { - result = end > lastmatchindex; - } + setColEIterOffset(strsrch->textIter, 0, localStatus); } - return result; -} - -/** -* Gets the collation element iterator's current offset. -* @param coleiter collation element iterator -* @param forwards flag TRUE if we are moving in th forwards direction -* @return current offset -*/ -static -inline int32_t getColElemIterOffset(const UCollationElements *coleiter, - UBool forwards) -{ - int32_t result = ucol_getOffset(coleiter); - // intricacies of the the backwards collation element iterator - if (FALSE && !forwards && inNormBuf(coleiter) && !isFCDPointerNull(coleiter)) { - result ++; - } - return result; -} - -/** -* Checks match for contraction. -* If the match ends with a partial contraction we fail. -* If the match starts too far off (because of backwards iteration) we try to -* chip off the extra characters depending on whether a breakiterator has -* been used. -* Internal method, error assumed to be success, caller has to check status -* before calling this method. -* @param strsrch string search data -* @param start offset of potential match, to be modified if necessary -* @param end offset of potential match, to be modified if necessary -* @param status output error status if any -* @return TRUE if match passes the contraction test, FALSE otherwise -*/ - -static -UBool checkNextExactContractionMatch(UStringSearch *strsrch, - int32_t *start, - int32_t *end, UErrorCode *status) -{ - UCollationElements *coleiter = strsrch->textIter; - int32_t textlength = strsrch->search->textLength; - int32_t temp = *start; - const UCollator *collator = strsrch->collator; - const UChar *text = strsrch->search->text; - // This part checks if either ends of the match contains potential - // contraction. If so we'll have to iterate through them - // The start contraction needs to be checked since ucol_previous dumps - // all characters till the first safe character into the buffer. - // *start + 1 is used to test for the unsafe characters instead of *start - // because ucol_prev takes all unsafe characters till the first safe - // character ie *start. so by testing *start + 1, we can estimate if - // excess prefix characters has been included in the potential search - // results. - if ((*end < textlength && ucol_unsafeCP(text[*end], collator)) || - (*start + 1 < textlength - && ucol_unsafeCP(text[*start + 1], collator))) { - int32_t expansion = getExpansionPrefix(coleiter); - UBool expandflag = expansion > 0; - setColEIterOffset(coleiter, *start); - while (expansion > 0) { - // getting rid of the redundant ce, caused by setOffset. - // since backward contraction/expansion may have extra ces if we - // are in the normalization buffer, hasAccentsBeforeMatch would - // have taken care of it. - // E.g. the character \u01FA will have an expansion of 3, but if - // we are only looking for acute and ring \u030A and \u0301, we'll - // have to skip the first ce in the expansion buffer. - ucol_next(coleiter, status); - if (U_FAILURE(*status)) { - return FALSE; - } - if (ucol_getOffset(coleiter) != temp) { - *start = temp; - temp = ucol_getOffset(coleiter); - } - expansion --; - } - int32_t *patternce = strsrch->pattern.ces; - int32_t patterncelength = strsrch->pattern.cesLength; - int32_t count = 0; - while (count < patterncelength) { - int32_t ce = getCE(strsrch, ucol_next(coleiter, status)); - if (ce == UCOL_IGNORABLE) { - continue; - } - if (expandflag && count == 0 && ucol_getOffset(coleiter) != temp) { - *start = temp; - temp = ucol_getOffset(coleiter); - } - if (U_FAILURE(*status) || ce != patternce[count]) { - (*end) ++; - *end = getNextUStringSearchBaseOffset(strsrch, *end); - return FALSE; - } - count ++; - } + // If an error occurred while setting the result to not found (ex: OOM), + // then we want to report that error back to the caller. + if (U_SUCCESS(status) && U_FAILURE(localStatus)) { + status = localStatus; } - return TRUE; } /** -* Checks and sets the match information if found. -* Checks -*