From a4e3a3b6cd6ec3fd41df0ade91b45a7a8251f1c3 Mon Sep 17 00:00:00 2001 From: Ilya Kantor Date: Wed, 12 Aug 2015 22:15:00 +0300 Subject: [PATCH 01/28] minor --- 1-js/10-es-modern/14-proxy/article.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1-js/10-es-modern/14-proxy/article.md b/1-js/10-es-modern/14-proxy/article.md index 6316250e..b64a3a5d 100644 --- a/1-js/10-es-modern/14-proxy/article.md +++ b/1-js/10-es-modern/14-proxy/article.md @@ -37,7 +37,7 @@ let proxy = new Proxy(target, handler) @@ -319,7 +319,7 @@ alert( proxy(1, 2) ); Она получает исходный объект `target` и список аргументов `argumentsList`. -Пример ниже передаёт операцию создания исходной функции, выводя сообщение об этом: +Пример ниже передаёт операцию создания исходному классу или функции-конструктору, выводя сообщение об этом: ```js //+ run From 1695f67bcc22180acb1ea8a585ff1c8d615155e9 Mon Sep 17 00:00:00 2001 From: Ilya Kantor Date: Sat, 15 Aug 2015 10:50:31 +0300 Subject: [PATCH 02/28] cleanup --- 1-js/1-getting-started/1-intro/article.md | 234 -- .../1-getting-started/1-intro/limitations.png | Bin 37445 -> 0 bytes .../1-intro/limitations@2x.png | Bin 91603 -> 0 bytes .../1-getting-started/2-pre-coding/article.md | 118 - 1-js/1-getting-started/3-editor/article.md | 70 - 1-js/1-getting-started/4-devtools/article.md | 114 - 1-js/1-getting-started/4-devtools/bug.html | 17 - 1-js/1-getting-started/4-devtools/chrome.png | Bin 10372 -> 0 bytes .../4-devtools/chrome@2x.png | Bin 16529 -> 0 bytes .../4-devtools/firebug-gray.png | Bin 8937 -> 0 bytes 1-js/1-getting-started/4-devtools/firefox.png | Bin 17613 -> 0 bytes .../4-devtools/firefox@2x.png | Bin 32366 -> 0 bytes .../4-devtools/firefox_console_down.png | Bin 242 -> 0 bytes .../4-devtools/firefox_console_down@2x.png | Bin 544 -> 0 bytes .../4-devtools/firefox_console_enable.png | Bin 18638 -> 0 bytes .../4-devtools/firefox_console_enable@2x.png | Bin 34425 -> 0 bytes 1-js/1-getting-started/4-devtools/safari.png | Bin 24386 -> 0 bytes 1-js/1-getting-started/index.md | 3 - .../10-es-modern/1-es-modern-usage/article.md | 75 - 1-js/10-es-modern/10-set-map/article.md | 284 -- .../1-promise-settimeout/solution.md | 8 - .../11-promise/1-promise-settimeout/task.md | 27 - .../11-promise/2-promise-sequence/solution.md | 27 - .../solution.view/guest.json | 4 - .../solution.view/httpGet.js | 25 - .../solution.view/index.html | 33 - .../solution.view/user.json | 4 - .../2-promise-sequence/source.view/guest.json | 4 - .../2-promise-sequence/source.view/httpGet.js | 25 - .../2-promise-sequence/source.view/index.html | 20 - .../2-promise-sequence/source.view/user.json | 4 - .../11-promise/2-promise-sequence/task.md | 26 - 1-js/10-es-modern/11-promise/anon.png | Bin 30427 -> 0 bytes 1-js/10-es-modern/11-promise/article.md | 843 ------ 1-js/10-es-modern/11-promise/guest.json | 4 - 1-js/10-es-modern/11-promise/promiseEcma.png | Bin 15667 -> 0 bytes .../11-promise/promiseEcma@2x.png | Bin 41058 -> 0 bytes .../11-promise/promiseHandlerVariants.png | Bin 47078 -> 0 bytes .../11-promise/promiseHandlerVariants@2x.png | Bin 102052 -> 0 bytes 1-js/10-es-modern/11-promise/promiseInit.png | Bin 10858 -> 0 bytes .../11-promise/promiseInit@2x.png | Bin 22918 -> 0 bytes .../11-promise/promiseLoadAvatarChain-1.png | Bin 13476 -> 0 bytes .../promiseLoadAvatarChain-1@2x.png | Bin 30101 -> 0 bytes .../11-promise/promiseLoadAvatarChain-2.png | Bin 24556 -> 0 bytes .../promiseLoadAvatarChain-2@2x.png | Bin 54386 -> 0 bytes .../11-promise/promiseLoadAvatarChain-3.png | Bin 41763 -> 0 bytes .../promiseLoadAvatarChain-3@2x.png | Bin 92826 -> 0 bytes .../11-promise/promiseLoadAvatarChain-4.png | Bin 53308 -> 0 bytes .../promiseLoadAvatarChain-4@2x.png | Bin 118790 -> 0 bytes .../11-promise/promiseLoadAvatarChain.png | Bin 51151 -> 0 bytes .../11-promise/promiseLoadAvatarChain@2x.png | Bin 115409 -> 0 bytes 1-js/10-es-modern/11-promise/promiseTwo.png | Bin 17988 -> 0 bytes .../10-es-modern/11-promise/promiseTwo@2x.png | Bin 36357 -> 0 bytes .../11-promise/promiseTwoThen.png | Bin 29460 -> 0 bytes .../11-promise/promiseTwoThen@2x.png | Bin 63681 -> 0 bytes .../11-promise/promiseUserFlow.png | Bin 32441 -> 0 bytes .../11-promise/promiseUserFlow@2x.png | Bin 72869 -> 0 bytes 1-js/10-es-modern/11-promise/user.json | 4 - .../10-es-modern/11-promise/userNoGithub.json | 4 - 1-js/10-es-modern/12-generator/anon.png | Bin 30427 -> 0 bytes 1-js/10-es-modern/12-generator/article.md | 904 ------ .../10-es-modern/12-generator/genYield2-2.png | Bin 33709 -> 0 bytes .../12-generator/genYield2-2@2x.png | Bin 78330 -> 0 bytes .../10-es-modern/12-generator/genYield2-3.png | Bin 27928 -> 0 bytes .../12-generator/genYield2-3@2x.png | Bin 63896 -> 0 bytes 1-js/10-es-modern/12-generator/genYield2.png | Bin 22530 -> 0 bytes .../12-generator/genYield2@2x.png | Bin 50282 -> 0 bytes .../12-generator/generateSequence-1.png | Bin 10259 -> 0 bytes .../12-generator/generateSequence-1@2x.png | Bin 23891 -> 0 bytes .../12-generator/generateSequence-2.png | Bin 14686 -> 0 bytes .../12-generator/generateSequence-2@2x.png | Bin 32379 -> 0 bytes .../12-generator/generateSequence-3.png | Bin 14754 -> 0 bytes .../12-generator/generateSequence-3@2x.png | Bin 32615 -> 0 bytes .../12-generator/generateSequence-4.png | Bin 14788 -> 0 bytes .../12-generator/generateSequence-4@2x.png | Bin 32193 -> 0 bytes 1-js/10-es-modern/12-generator/user.json | 4 - 1-js/10-es-modern/13-modules/article.md | 242 -- .../13-modules/nums.view/bundle.js | 70 - .../13-modules/nums.view/index.html | 11 - .../10-es-modern/13-modules/nums.view/main.js | 3 - .../10-es-modern/13-modules/nums.view/nums.js | 5 - .../13-modules/nums.view/webpack.config.js | 22 - 1-js/10-es-modern/14-proxy/article.md | 388 --- 1-js/10-es-modern/2-let-const/article.md | 215 -- 1-js/10-es-modern/3-destructuring/article.md | 324 -- 1-js/10-es-modern/4-es-function/article.md | 469 --- 1-js/10-es-modern/5-es-string/article.md | 332 --- 1-js/10-es-modern/6-es-object/article.md | 368 --- 1-js/10-es-modern/7-es-class/article.md | 382 --- 1-js/10-es-modern/8-symbol/article.md | 210 -- 1-js/10-es-modern/9-iterator/article.md | 230 -- 1-js/10-es-modern/index.md | 4 - .../1-hello-world/1-hello-alert/solution.md | 22 - .../1-hello-alert/solution.view/index.html | 16 - .../1-hello-world/1-hello-alert/task.md | 9 - 1-js/2-first-steps/1-hello-world/article.md | 104 - .../1-bitwise-operator-value/solution.md | 6 - .../1-bitwise-operator-value/task.md | 13 - .../2-check-integer/solution.md | 14 - .../2-check-integer/task.md | 14 - .../3-bitwise-symmetry/solution.md | 27 - .../3-bitwise-symmetry/task.md | 12 - .../4-bit-rounding/solution.md | 29 - .../4-bit-rounding/task.md | 12 - .../10-bitwise-operators/article.md | 751 ----- .../11-uibasic/1-simple-page/solution.md | 30 - .../11-uibasic/1-simple-page/task.md | 8 - 1-js/2-first-steps/11-uibasic/article.md | 111 - .../12-ifelse/1-if-zero-string/solution.md | 13 - .../12-ifelse/1-if-zero-string/task.md | 12 - .../2-check-standard/ifelse_task2.png | Bin 7977 -> 0 bytes .../2-check-standard/ifelse_task2/index.html | 18 - .../12-ifelse/2-check-standard/solution.md | 6 - .../12-ifelse/2-check-standard/task.md | 13 - .../2-check-standardifelse_task2/index.html | 18 - .../12-ifelse/3-sign/if_sign/index.html | 24 - .../12-ifelse/3-sign/solution.md | 15 - 1-js/2-first-steps/12-ifelse/3-sign/task.md | 12 - .../12-ifelse/4-check-login/ifelse_task.png | Bin 12863 -> 0 bytes .../12-ifelse/4-check-login/solution.md | 33 - .../12-ifelse/4-check-login/task.md | 17 - .../5-rewrite-if-question/solution.md | 6 - .../12-ifelse/5-rewrite-if-question/task.md | 14 - .../6-rewrite-if-else-question/solution.md | 9 - .../6-rewrite-if-else-question/task.md | 22 - 1-js/2-first-steps/12-ifelse/article.md | 233 -- .../1-alert-null-2-undefined/solution.md | 7 - .../1-alert-null-2-undefined/task.md | 10 - .../13-logical-ops/2-alert-or/solution.md | 15 - .../13-logical-ops/2-alert-or/task.md | 10 - .../3-alert-1-null-2/solution.md | 7 - .../13-logical-ops/3-alert-1-null-2/task.md | 10 - .../13-logical-ops/4-alert-and/solution.md | 10 - .../13-logical-ops/4-alert-and/task.md | 10 - .../13-logical-ops/5-alert-and-or/solution.md | 16 - .../13-logical-ops/5-alert-and-or/task.md | 10 - .../6-check-if-in-range/solution.md | 6 - .../6-check-if-in-range/task.md | 7 - .../7-check-if-out-range/solution.md | 12 - .../7-check-if-out-range/task.md | 7 - .../13-logical-ops/8-if-question/solution.md | 21 - .../13-logical-ops/8-if-question/task.md | 14 - 1-js/2-first-steps/13-logical-ops/article.md | 282 -- .../solution.md | 34 - .../1-primitive-conversions-questions/task.md | 30 - .../14-types-conversion/article.md | 212 -- .../1-loop-last-value/solution.md | 26 - .../15-while-for/1-loop-last-value/task.md | 14 - .../2-which-value-while/solution.md | 31 - .../15-while-for/2-which-value-while/task.md | 23 - .../3-which-value-for/solution.md | 17 - .../15-while-for/3-which-value-for/task.md | 21 - .../15-while-for/4-for-even/solution.md | 12 - .../15-while-for/4-for-even/task.md | 7 - .../5-replace-for-while/solution.md | 11 - .../15-while-for/5-replace-for-while/task.md | 13 - .../6-repeat-until-correct/solution.md | 18 - .../6-repeat-until-correct/task.md | 11 - .../15-while-for/7-list-primes/solution.md | 28 - .../15-while-for/7-list-primes/task.md | 12 - 1-js/2-first-steps/15-while-for/article.md | 349 --- .../1-rewrite-switch-if-else/solution.md | 21 - .../1-rewrite-switch-if-else/task.md | 24 - .../16-switch/2-rewrite-if-switch/solution.md | 27 - .../16-switch/2-rewrite-if-switch/task.md | 22 - 1-js/2-first-steps/16-switch/article.md | 186 -- .../1-if-else-required/solution.md | 1 - .../1-if-else-required/task.md | 35 - .../solution.md | 16 - .../2-rewrite-function-question-or/task.md | 23 - .../17-function-basics/3-min/solution.md | 21 - .../17-function-basics/3-min/task.md | 16 - .../17-function-basics/4-pow/solution.md | 34 - .../17-function-basics/4-pow/task.md | 17 - .../17-function-basics/article.md | 435 --- .../article.md | 366 --- .../19-recursion/1-sum-to/solution.md | 45 - .../19-recursion/1-sum-to/task.md | 34 - .../19-recursion/2-factorial/solution.md | 25 - .../19-recursion/2-factorial/task.md | 29 - .../3-fibonacci-numbers/solution.md | 99 - .../19-recursion/3-fibonacci-numbers/task.md | 24 - 1-js/2-first-steps/19-recursion/article.md | 243 -- .../1-hello-alert-ext/alert.js | 1 - .../1-hello-alert-ext/index.html | 14 - .../1-hello-alert-ext/solution.md | 12 - .../1-hello-alert-ext/task.md | 7 - .../2-async-defer-first/solution.md | 6 - .../2-async-defer-first/task.md | 27 - .../2-external-script/article.md | 251 -- .../1-nfe-check/solution.md | 21 - .../1-nfe-check/task.md | 22 - .../20-named-function-expression/article.md | 147 - .../21-javascript-specials/article.md | 400 --- 1-js/2-first-steps/3-structure/article.md | 146 - 1-js/2-first-steps/4-strict-mode/article.md | 80 - .../5-variables/1-hello-variables/solution.md | 13 - .../5-variables/1-hello-variables/task.md | 10 - 1-js/2-first-steps/5-variables/article.md | 259 -- .../5-variables/variable-change.png | Bin 19413 -> 0 bytes .../5-variables/variable-change@2x.png | Bin 44840 -> 0 bytes 1-js/2-first-steps/5-variables/variable.png | Bin 8943 -> 0 bytes .../2-first-steps/5-variables/variable@2x.png | Bin 19980 -> 0 bytes .../1-declare-variables/solution.md | 13 - .../1-declare-variables/task.md | 8 - .../2-first-steps/6-variable-names/article.md | 120 - 1-js/2-first-steps/7-types-intro/article.md | 168 -- .../8-operators/1-increment-order/solution.md | 23 - .../8-operators/1-increment-order/task.md | 20 - .../2-assignment-result/solution.md | 11 - .../8-operators/2-assignment-result/task.md | 12 - 1-js/2-first-steps/8-operators/article.md | 428 --- 1-js/2-first-steps/9-comparison/article.md | 248 -- 1-js/2-first-steps/index.md | 3 - .../1-debugging-chrome/article.md | 259 -- .../1-debugging-chrome/chrome_break_error.png | Bin 26781 -> 0 bytes .../chrome_break_error@2x.png | Bin 45339 -> 0 bytes .../1-debugging-chrome/chrome_sources.png | Bin 24968 -> 0 bytes .../1-debugging-chrome/chrome_sources@2x.png | Bin 42394 -> 0 bytes .../chrome_sources_break.png | Bin 26022 -> 0 bytes .../chrome_sources_break@2x.png | Bin 43318 -> 0 bytes .../chrome_sources_breakpoint.png | Bin 21477 -> 0 bytes .../chrome_sources_breakpoint@2x.png | Bin 35088 -> 0 bytes .../chrome_sources_buttons.png | Bin 23153 -> 0 bytes .../chrome_sources_buttons@2x.png | Bin 40071 -> 0 bytes .../1-debugging-chrome/console_error.png | Bin 8726 -> 0 bytes .../1-debugging-chrome/console_error@2x.png | Bin 13465 -> 0 bytes .../debugging.view/index.html | 22 - .../1-debugging-chrome/debugging.view/pow.js | 8 - .../1-debugging-chrome/error.view/index.html | 22 - .../1-debugging-chrome/error.view/pow.js | 8 - .../1-debugging-chrome/manage1.png | Bin 522 -> 0 bytes .../1-debugging-chrome/manage1@2x.png | Bin 391 -> 0 bytes .../1-debugging-chrome/manage2.png | Bin 296 -> 0 bytes .../1-debugging-chrome/manage2@2x.png | Bin 482 -> 0 bytes .../1-debugging-chrome/manage3.png | Bin 218 -> 0 bytes .../1-debugging-chrome/manage3@2x.png | Bin 257 -> 0 bytes .../1-debugging-chrome/manage4.png | Bin 210 -> 0 bytes .../1-debugging-chrome/manage4@2x.png | Bin 254 -> 0 bytes .../1-debugging-chrome/manage5.png | Bin 347 -> 0 bytes .../1-debugging-chrome/manage5@2x.png | Bin 520 -> 0 bytes .../1-debugging-chrome/manage6.png | Bin 254 -> 0 bytes .../1-debugging-chrome/manage6@2x.png | Bin 234 -> 0 bytes .../statusbarButtonGlyphs.svg | 1 - .../2-coding-style/1-style-errors/solution.md | 51 - .../2-coding-style/1-style-errors/task.md | 27 - 1-js/3-writing-js/2-coding-style/article.md | 435 --- .../2-coding-style/code-style.png | Bin 128724 -> 0 bytes .../2-coding-style/code-style@2x.png | Bin 252176 -> 0 bytes .../2-coding-style/figure-bracket-style.png | Bin 58994 -> 0 bytes .../figure-bracket-style@2x.png | Bin 165149 -> 0 bytes .../3-write-unmain-code/article.md | 301 -- .../1-pow-nan-spec/_js.view/solution.js | 10 - .../1-pow-nan-spec/_js.view/source.js | 8 - .../4-testing/1-pow-nan-spec/_js.view/test.js | 26 - .../4-testing/1-pow-nan-spec/solution.md | 17 - .../4-testing/1-pow-nan-spec/task.md | 17 - .../4-testing/2-pow-test-0/solution.md | 39 - .../2-pow-test-0/solution.view/index.html | 27 - .../2-pow-test-0/solution.view/test.js | 44 - .../2-pow-test-0/source.view/index.html | 26 - .../2-pow-test-0/source.view/test.js | 26 - .../4-testing/2-pow-test-0/task.md | 7 - .../4-testing/3-pow-test-wrong/solution.md | 27 - .../4-testing/3-pow-test-wrong/task.md | 22 - 1-js/3-writing-js/4-testing/article.md | 452 --- .../4-testing/beforeafter.view/index.html | 32 - .../4-testing/beforeafter.view/test.js | 24 - 1-js/3-writing-js/4-testing/index.html | 44 - .../4-testing/pow-1.view/index.html | 44 - .../3-writing-js/4-testing/pow-1.view/test.js | 7 - .../4-testing/pow-2.view/index.html | 44 - .../3-writing-js/4-testing/pow-2.view/test.js | 11 - .../4-testing/pow-3.view/index.html | 50 - .../3-writing-js/4-testing/pow-3.view/test.js | 14 - .../4-testing/pow-4.view/index.html | 50 - .../3-writing-js/4-testing/pow-4.view/test.js | 20 - .../4-testing/pow-full.view/index.html | 52 - .../4-testing/pow-full.view/test.js | 44 - .../4-testing/pow-min.view/index.html | 44 - .../4-testing/pow-min.view/test.js | 7 - .../4-testing/pow-nan-assert.view/index.html | 48 - .../4-testing/pow-nan-assert.view/test.js | 26 - .../4-testing/pow-nan.view/index.html | 48 - .../4-testing/pow-nan.view/test.js | 26 - 1-js/3-writing-js/index.md | 8 - .../1-properties-and-methods/article.md | 118 - .../1-check-arguments-undefined/solution.md | 12 - .../1-check-arguments-undefined/task.md | 16 - .../2-sum-arguments/solution.md | 21 - .../2-sum-arguments/task.md | 14 - .../10-arguments-pseudoarray/article.md | 428 --- .../11-datetime/1-new-date/solution.md | 10 - .../11-datetime/1-new-date/task.md | 7 - .../2-get-week-day/_js.view/solution.js | 5 - .../2-get-week-day/_js.view/test.js | 29 - .../11-datetime/2-get-week-day/solution.md | 22 - .../11-datetime/2-get-week-day/task.md | 14 - .../3-weekday/_js.view/solution.js | 10 - .../11-datetime/3-weekday/_js.view/test.js | 29 - .../11-datetime/3-weekday/solution.md | 19 - .../11-datetime/3-weekday/task.md | 14 - .../4-get-date-ago/_js.view/solution.js | 6 - .../4-get-date-ago/_js.view/test.js | 27 - .../11-datetime/4-get-date-ago/solution.md | 29 - .../11-datetime/4-get-date-ago/task.md | 17 - .../5-last-day-of-month/_js.view/solution.js | 4 - .../5-last-day-of-month/_js.view/test.js | 13 - .../5-last-day-of-month/solution.md | 14 - .../11-datetime/5-last-day-of-month/task.md | 13 - .../6-get-seconds-today/solution.md | 28 - .../11-datetime/6-get-seconds-today/task.md | 13 - .../7-get-seconds-to-tomorrow/solution.md | 16 - .../7-get-seconds-to-tomorrow/task.md | 13 - .../8-format-date-ddmmyy/_js.view/solution.js | 13 - .../8-format-date-ddmmyy/_js.view/test.js | 13 - .../8-format-date-ddmmyy/solution.md | 51 - .../11-datetime/8-format-date-ddmmyy/task.md | 14 - .../_js.view/solution.js | 34 - .../9-format-date-relative/_js.view/test.js | 18 - .../9-format-date-relative/solution.md | 48 - .../9-format-date-relative/task.md | 26 - 1-js/4-data-structures/11-datetime/article.md | 519 ---- .../2-number/1-sum-interface/solution.md | 11 - .../2-number/1-sum-interface/task.md | 9 - .../2-number/2-why-rounded-down/solution.md | 8 - .../2-number/2-why-rounded-down/task.md | 19 - .../2-number/3-sum-prices/solution.md | 13 - .../2-number/3-sum-prices/task.md | 16 - .../2-number/4-endless-loop-error/solution.md | 14 - .../2-number/4-endless-loop-error/task.md | 13 - .../5-get-decimal/_js.view/solution.js | 7 - .../2-number/5-get-decimal/_js.view/test.js | 21 - .../2-number/5-get-decimal/solution.md | 82 - .../2-number/5-get-decimal/task.md | 12 - .../2-number/6-formula-binet/solution.md | 35 - .../2-number/6-formula-binet/task.md | 29 - .../2-number/7-random-0-max/solution.md | 9 - .../2-number/7-random-0-max/task.md | 5 - .../2-number/8-random-min-max/solution.md | 10 - .../2-number/8-random-min-max/task.md | 5 - .../2-number/9-random-int-min-max/solution.md | 80 - .../2-number/9-random-int-min-max/task.md | 7 - 1-js/4-data-structures/2-number/article.md | 612 ---- .../3-string/1-ucfirst/_js.view/solution.js | 5 - .../3-string/1-ucfirst/_js.view/test.js | 9 - .../3-string/1-ucfirst/solution.md | 27 - .../3-string/1-ucfirst/task.md | 12 - .../2-check-spam/_js.view/solution.js | 5 - .../3-string/2-check-spam/_js.view/test.js | 13 - .../3-string/2-check-spam/solution.md | 17 - .../3-string/2-check-spam/task.md | 14 - .../3-string/3-truncate/_js.view/solution.js | 4 - .../3-string/3-truncate/_js.view/test.js | 16 - .../3-string/3-truncate/solution.md | 28 - .../3-string/3-truncate/task.md | 17 - .../4-extract-currency/_js.view/solution.js | 3 - .../4-extract-currency/_js.view/test.js | 8 - .../3-string/4-extract-currency/solution.md | 1 - .../3-string/4-extract-currency/task.md | 8 - 1-js/4-data-structures/3-string/article.md | 534 ---- .../4-object/1-hello-object/solution.md | 10 - .../4-object/1-hello-object/task.md | 13 - 1-js/4-data-structures/4-object/article.md | 339 --- .../4-object/object-person-1.png | Bin 3070 -> 0 bytes .../4-object/object-person-1@2x.png | Bin 7309 -> 0 bytes .../4-object/object-person-2.png | Bin 2099 -> 0 bytes .../4-object/object-person-2@2x.png | Bin 5001 -> 0 bytes .../4-object/object-person-empty.png | Bin 3731 -> 0 bytes .../4-object/object-person-empty@2x.png | Bin 8333 -> 0 bytes 1-js/4-data-structures/4-object/object.png | Bin 3543 -> 0 bytes 1-js/4-data-structures/4-object/object@2x.png | Bin 10261 -> 0 bytes .../1-is-empty/_js.view/solution.js | 6 - .../1-is-empty/_js.view/test.js | 11 - .../5-object-for-in/1-is-empty/solution.md | 20 - .../5-object-for-in/1-is-empty/task.md | 22 - .../2-sum-salaries/solution.md | 20 - .../5-object-for-in/2-sum-salaries/task.md | 23 - .../5-object-for-in/3-max-salary/solution.md | 24 - .../5-object-for-in/3-max-salary/task.md | 22 - .../4-multiply-numeric/_js.view/solution.js | 11 - .../4-multiply-numeric/_js.view/source.js | 5 - .../4-multiply-numeric/_js.view/test.js | 13 - .../4-multiply-numeric/solution.md | 27 - .../4-multiply-numeric/task.md | 32 - .../5-object-for-in/article.md | 171 -- .../6-object-reference/article.md | 157 - .../object-reference-console.png | Bin 14779 -> 0 bytes .../object-reference-console@2x.png | Bin 33019 -> 0 bytes .../variable-contains-reference.png | Bin 7856 -> 0 bytes .../variable-contains-reference@2x.png | Bin 17306 -> 0 bytes .../variable-copy-reference.png | Bin 11359 -> 0 bytes .../variable-copy-reference@2x.png | Bin 25536 -> 0 bytes .../variable-copy-value.png | Bin 17442 -> 0 bytes .../variable-copy-value@2x.png | Bin 39369 -> 0 bytes .../7-array/1-get-last-in-array/solution.md | 16 - .../7-array/1-get-last-in-array/task.md | 9 - .../10-maximal-subarray/_js.view/solution.js | 10 - .../10-maximal-subarray/_js.view/test.js | 33 - .../7-array/10-maximal-subarray/solution.md | 101 - .../7-array/10-maximal-subarray/task.md | 28 - .../7-array/2-add-item-to-array/solution.md | 6 - .../7-array/2-add-item-to-array/task.md | 7 - .../7-array/3-create-array/solution.md | 11 - .../7-array/3-create-array/task.md | 24 - .../7-array/4-random-from-array/solution.md | 11 - .../7-array/4-random-from-array/task.md | 16 - .../5-calculator-for-input/solution.md | 23 - .../7-array/5-calculator-for-input/task.md | 13 - .../7-array/6-item-value/solution.md | 24 - .../7-array/6-item-value/task.md | 18 - .../7-array/7-array-find/_js.view/solution.js | 11 - .../7-array/7-array-find/_js.view/test.js | 26 - .../7-array/7-array-find/solution.md | 61 - .../7-array/7-array-find/task.md | 18 - .../8-filter-range/_js.view/solution.js | 11 - .../7-array/8-filter-range/_js.view/test.js | 15 - .../7-array/8-filter-range/solution.md | 29 - .../7-array/8-filter-range/task.md | 17 - .../7-array/9-eratosthenes-sieve/sieve.gif | Bin 44506 -> 0 bytes .../7-array/9-eratosthenes-sieve/solution.md | 40 - .../7-array/9-eratosthenes-sieve/task.md | 25 - 1-js/4-data-structures/7-array/array-pop.png | Bin 12719 -> 0 bytes .../7-array/array-pop@2x.png | Bin 29253 -> 0 bytes .../4-data-structures/7-array/array-shift.png | Bin 20798 -> 0 bytes .../7-array/array-shift@2x.png | Bin 46546 -> 0 bytes .../4-data-structures/7-array/array-speed.png | Bin 11394 -> 0 bytes .../7-array/array-speed@2x.png | Bin 25069 -> 0 bytes 1-js/4-data-structures/7-array/article.md | 462 --- 1-js/4-data-structures/7-array/queue.png | Bin 4727 -> 0 bytes 1-js/4-data-structures/7-array/queue@2x.png | Bin 10247 -> 0 bytes 1-js/4-data-structures/7-array/stack.png | Bin 9352 -> 0 bytes 1-js/4-data-structures/7-array/stack@2x.png | Bin 20146 -> 0 bytes .../1-add-class/_js.view/solution.js | 11 - .../1-add-class/_js.view/test.js | 33 - .../8-array-methods/1-add-class/solution.md | 30 - .../8-array-methods/1-add-class/task.md | 23 - .../10-filter-anagrams/_js.view/solution.js | 16 - .../10-filter-anagrams/_js.view/test.js | 26 - .../10-filter-anagrams/solution.md | 70 - .../10-filter-anagrams/task.md | 27 - .../11-array-unique/_js.view/solution.js | 10 - .../11-array-unique/_js.view/test.js | 15 - .../11-array-unique/solution.md | 82 - .../8-array-methods/11-array-unique/task.md | 22 - .../2-camelcase/_js.view/solution.js | 10 - .../2-camelcase/_js.view/test.js | 22 - .../8-array-methods/2-camelcase/solution.md | 26 - .../8-array-methods/2-camelcase/task.md | 20 - .../3-remove-class/_js.view/solution.js | 11 - .../3-remove-class/_js.view/test.js | 43 - .../3-remove-class/solution.md | 33 - .../8-array-methods/3-remove-class/task.md | 30 - .../4-filter-in-place/_js.view/solution.js | 10 - .../4-filter-in-place/_js.view/test.js | 9 - .../4-filter-in-place/solution.md | 21 - .../8-array-methods/4-filter-in-place/task.md | 17 - .../8-array-methods/5-sort-back/solution.md | 15 - .../8-array-methods/5-sort-back/task.md | 14 - .../6-copy-sort-array/solution.md | 14 - .../8-array-methods/6-copy-sort-array/task.md | 18 - .../7-shuffle-array/solution.md | 23 - .../8-array-methods/7-shuffle-array/task.md | 14 - .../8-sort-objects/solution.md | 26 - .../8-array-methods/8-sort-objects/task.md | 23 - .../linked-list.png | Bin 5368 -> 0 bytes .../linked-list@2x.png | Bin 12095 -> 0 bytes .../9-output-single-linked-list/solution.md | 158 - .../9-output-single-linked-list/task.md | 50 - .../8-array-methods/article.md | 441 --- .../1-rewrite-for-map/solution.md | 15 - .../1-rewrite-for-map/task.md | 21 - .../2-partial-sums-array/_js.view/solution.js | 12 - .../2-partial-sums-array/_js.view/test.js | 18 - .../2-partial-sums-array/solution.md | 47 - .../2-partial-sums-array/task.md | 24 - .../9-array-iteration/article.md | 235 -- .../9-array-iteration/reduce.png | Bin 10372 -> 0 bytes .../9-array-iteration/reduce@2x.png | Bin 22545 -> 0 bytes 1-js/4-data-structures/index.md | 3 - .../1-window-and-variable/solution.md | 24 - .../1-window-and-variable/task.md | 13 - .../2-window-and-variable-2/solution.md | 12 - .../2-window-and-variable-2/task.md | 13 - .../3-window-and-variable-3/solution.md | 14 - .../3-window-and-variable-3/task.md | 15 - .../1-global-object/article.md | 233 -- .../2-closures/1-say-phrase-first/solution.md | 16 - .../2-closures/1-say-phrase-first/task.md | 18 - .../2-which-value-is-modified/solution.md | 9 - .../2-which-value-is-modified/task.md | 25 - .../2-closures/3-var-window/solution.md | 29 - .../2-closures/3-var-window/task.md | 19 - .../2-closures/4-call-inplace/solution.md | 37 - .../2-closures/4-call-inplace/task.md | 17 - .../5-access-outer-variable/solution.md | 3 - .../5-access-outer-variable/task.md | 17 - .../6-counter-window-variable/solution.md | 30 - .../6-counter-window-variable/task.md | 29 - 1-js/5-functions-closures/2-closures/6@2x.png | Bin 23137 -> 0 bytes .../2-closures/article.md | 411 --- .../3-scope-new-function/article.md | 93 - .../1-closure-sum/solution.md | 18 - .../4-closures-usage/1-closure-sum/task.md | 13 - .../2-stringbuffer/_js.view/solution.js | 10 - .../2-stringbuffer/_js.view/test.js | 21 - .../2-stringbuffer/solution.md | 32 - .../4-closures-usage/2-stringbuffer/task.md | 45 - .../_js.view/solution.js | 16 - .../_js.view/test.js | 30 - .../3-stringbuffer-with-clear/solution.md | 34 - .../3-stringbuffer-with-clear/task.md | 24 - .../4-sort-by-field/solution.md | 37 - .../4-closures-usage/4-sort-by-field/task.md | 53 - .../_js.view/solution.js | 24 - .../_js.view/source.js | 11 - .../_js.view/test.js | 58 - .../5-filter-through-function/solution.md | 82 - .../5-filter-through-function/task.md | 29 - .../6-make-army/_js.view/solution.js | 19 - .../6-make-army/_js.view/source.js | 13 - .../6-make-army/_js.view/test.js | 20 - .../4-closures-usage/6-make-army/solution.md | 218 -- .../4-closures-usage/6-make-army/task.md | 31 - .../4-closures-usage/article.md | 125 - .../5-closures-module/article.md | 322 -- .../hello-conflict.view/hello.js | 10 - .../hello-conflict.view/index.html | 23 - .../hello-module.view/hello.js | 14 - .../hello-module.view/index.html | 23 - .../6-memory-management/article.md | 326 -- .../6-memory-management/family-no-family.png | Bin 20338 -> 0 bytes .../family-no-family@2x.png | Bin 46815 -> 0 bytes .../family-no-father-2.png | Bin 10180 -> 0 bytes .../family-no-father-2@2x.png | Bin 22996 -> 0 bytes .../6-memory-management/family-no-father.png | Bin 16531 -> 0 bytes .../family-no-father@2x.png | Bin 38572 -> 0 bytes .../6-memory-management/family.png | Bin 17474 -> 0 bytes .../6-memory-management/family@2x.png | Bin 39866 -> 0 bytes .../7-with/1-with-function/solution.md | 21 - .../7-with/1-with-function/task.md | 22 - .../7-with/2-with-variables/solution.md | 22 - .../7-with/2-with-variables/task.md | 19 - 1-js/5-functions-closures/7-with/article.md | 190 -- 1-js/5-functions-closures/index.md | 5 - .../1-call-array-this/solution.md | 15 - .../1-call-array-this/task.md | 16 - .../2-check-syntax/solution.md | 27 - .../1-object-methods/2-check-syntax/task.md | 16 - .../1-object-methods/3-why-this/solution.md | 32 - .../1-object-methods/3-why-this/task.md | 26 - .../4-object-property-this/solution.md | 22 - .../4-object-property-this/task.md | 18 - .../5-return-this/solution.md | 5 - .../1-object-methods/5-return-this/task.md | 21 - .../6-return-object-this/solution.md | 26 - .../6-return-object-this/task.md | 23 - .../7-calculator/_js.view/solution.js | 14 - .../7-calculator/_js.view/test.js | 22 - .../1-object-methods/7-calculator/solution.md | 24 - .../1-object-methods/7-calculator/task.md | 22 - .../8-chain-calls/solution.md | 23 - .../1-object-methods/8-chain-calls/task.md | 40 - .../1-object-methods/article.md | 244 -- .../1-array-equals-string/solution.md | 15 - .../1-array-equals-string/task.md | 11 - .../2-tostring-valueof/solution.md | 10 - .../2-tostring-valueof/task.md | 24 - .../3-compare-empty-arrays/solution.md | 34 - .../3-compare-empty-arrays/task.md | 13 - .../solution.md | 35 - .../task.md | 18 - .../5-sum-many-brackets/solution.md | 61 - .../5-sum-many-brackets/task.md | 17 - .../2-object-conversion/article.md | 281 -- .../1-two-functions-one-object/solution.md | 19 - .../1-two-functions-one-object/task.md | 18 - .../_js.view/solution.js | 15 - .../2-calculator-constructor/_js.view/test.js | 25 - .../2-calculator-constructor/solution.md | 27 - .../2-calculator-constructor/task.md | 22 - .../3-accumulator/_js.view/solution.js | 8 - .../3-accumulator/_js.view/test.js | 37 - .../3-accumulator/solution.md | 19 - .../3-constructor-new/3-accumulator/task.md | 24 - .../_js.view/solution.js | 29 - .../4-calculator-extendable/_js.view/test.js | 26 - .../4-calculator-extendable/solution.md | 55 - .../4-calculator-extendable/task.md | 47 - .../3-constructor-new/article.md | 216 -- .../1-replace-property-getter/solution.md | 48 - .../1-replace-property-getter/task.md | 32 - .../4-descriptors-getters-setters/article.md | 403 --- .../1-objects-counter/_js.view/solution.js | 11 - .../1-objects-counter/_js.view/test.js | 28 - .../1-objects-counter/solution.md | 29 - .../1-objects-counter/task.md | 33 - .../article.md | 255 -- .../1-rewrite-sum-arguments/solution.md | 31 - .../1-rewrite-sum-arguments/task.md | 30 - .../_js.view/solution.js | 3 - .../_js.view/test.js | 15 - .../solution.md | 28 - .../task.md | 40 - 1-js/6-objects-more/6-call-apply/article.md | 311 -- .../7-bind/1-cross-browser-bind/solution.md | 8 - .../7-bind/1-cross-browser-bind/task.md | 23 - .../2-write-to-object-after-bind/solution.md | 22 - .../2-write-to-object-after-bind/task.md | 18 - .../7-bind/3-second-bind/solution.md | 58 - .../7-bind/3-second-bind/task.md | 17 - .../solution.md | 4 - .../4-function-property-after-bind/task.md | 22 - .../7-bind/5-question-use-bind/solution.md | 110 - .../7-bind/5-question-use-bind/task.md | 50 - .../7-bind/6-ask-currying/solution.md | 73 - .../7-bind/6-ask-currying/task.md | 57 - 1-js/6-objects-more/7-bind/article.md | 434 --- .../1-logging-decorator/_js.view/solution.js | 9 - .../1-logging-decorator/_js.view/test.js | 50 - .../1-logging-decorator/solution.md | 44 - .../8-decorators/1-logging-decorator/task.md | 32 - .../_js.view/solution.js | 9 - .../_js.view/test.js | 55 - .../2-logging-decorator-arguments/solution.md | 34 - .../2-logging-decorator-arguments/task.md | 29 - .../3-caching-decorator/_js.view/solution.js | 11 - .../3-caching-decorator/_js.view/test.js | 31 - .../3-caching-decorator/solution.md | 34 - .../8-decorators/3-caching-decorator/task.md | 34 - 1-js/6-objects-more/8-decorators/article.md | 232 -- 1-js/6-objects-more/index.md | 3 - .../_js.view/solution.js | 32 - .../_js.view/test.js | 18 - .../1-format-date-polymorphic/solution.md | 15 - .../1-format-date-polymorphic/task.md | 26 - 1-js/7-js-misc/1-class-instanceof/article.md | 252 -- .../2-json/1-serialize-object/solution.md | 12 - .../2-json/1-serialize-object/task.md | 14 - .../2-serialize-object-circular/solution.md | 64 - .../2-serialize-object-circular/task.md | 26 - 1-js/7-js-misc/2-json/article.md | 366 --- .../1-output-numbers-100ms/solution.md | 17 - .../1-output-numbers-100ms/task.md | 21 - .../solution.md | 17 - .../2-output-numbers-100ms-settimeout/task.md | 5 - .../3-highlight-tactics/solution.md | 5 - .../3-highlight-tactics/task.md | 34 - .../4-settimeout-result/solution.md | 8 - .../4-settimeout-result/task.md | 31 - .../5-setinterval-result/solution.md | 37 - .../5-setinterval-result/task.md | 44 - .../6-who-runs-faster/solution.md | 55 - .../6-who-runs-faster/task.md | 35 - .../7-delay/_js.view/solution.js | 12 - .../7-delay/_js.view/test.js | 46 - .../7-delay/solution.md | 46 - .../3-setTimeout-setInterval/7-delay/task.md | 23 - .../8-debounce/_js.view/solution.js | 19 - .../8-debounce/_js.view/test.js | 47 - .../8-debounce/solution.md | 38 - .../8-debounce/task.md | 25 - .../9-throttle/_js.view/solution.js | 29 - .../9-throttle/_js.view/test.js | 47 - .../9-throttle/solution.md | 42 - .../9-throttle/task.md | 52 - .../3-setTimeout-setInterval/article.md | 326 -- .../setInterval-anim.view/index.html | 59 - .../setinterval-interval.png | Bin 8216 -> 0 bytes .../setinterval-interval@2x.png | Bin 20136 -> 0 bytes .../settimeout-interval.png | Bin 8049 -> 0 bytes .../settimeout-interval@2x.png | Bin 20113 -> 0 bytes .../4-eval/1-eval-calculator/solution.md | 12 - .../4-eval/1-eval-calculator/task.md | 9 - 1-js/7-js-misc/4-eval/article.md | 266 -- .../1-finally-or-code-after/solution.md | 43 - .../1-finally-or-code-after/task.md | 43 - .../2-eval-calculator-errors/solution.md | 36 - .../2-eval-calculator-errors/task.md | 13 - 1-js/7-js-misc/5-exception/article.md | 590 ---- 1-js/7-js-misc/index.md | 3 - 1-js/8-oop/1-about-oop/article.md | 56 - .../solution.md | 42 - .../task.md | 43 - .../2-internal-external-interface/article.md | 338 --- .../coffee-inside.jpg | Bin 61294 -> 0 bytes .../2-internal-external-interface/coffee.jpg | Bin 12546 -> 0 bytes .../1-object-with-getters-setters/solution.md | 29 - .../1-object-with-getters-setters/task.md | 25 - .../2-getter-power/solution.md | 28 - .../3-getters-setters/2-getter-power/task.md | 32 - .../3-add-public-coffeemachine/solution.md | 47 - .../3-add-public-coffeemachine/task.md | 52 - .../4-setter-onready/solution.md | 69 - .../4-setter-onready/task.md | 59 - .../5-coffeemachine-add-isrunning/solution.md | 62 - .../5-coffeemachine-add-isrunning/task.md | 25 - 1-js/8-oop/3-getters-setters/article.md | 167 -- .../1-coffeemachine-fix-run/solution.md | 15 - .../solution.view/index.html | 51 - .../source.view/index.html | 45 - .../1-coffeemachine-fix-run/task.md | 21 - .../2-coffeemachine-disable-stop/solution.md | 0 .../solution.view/index.html | 58 - .../2-coffeemachine-disable-stop/task.md | 16 - .../3-inherit-fridge/solution.md | 29 - .../3-inherit-fridge/task.md | 67 - .../4-add-methods-fridge/solution.md | 89 - .../4-add-methods-fridge/task.md | 48 - .../5-override-disable/solution.md | 68 - .../5-override-disable/task.md | 17 - .../8-oop/5-functional-inheritance/article.md | 403 --- 1-js/8-oop/index.md | 3 - .../1-property-after-delete/solution.md | 5 - .../1-property-after-delete/task.md | 28 - .../1-prototype/2-proto-and-this/proto5.png | Bin 2059 -> 0 bytes .../1-prototype/2-proto-and-this/proto6.png | Bin 1840 -> 0 bytes .../1-prototype/2-proto-and-this/solution.md | 18 - .../1-prototype/2-proto-and-this/task.md | 24 - .../3-search-algorithm/solution.md | 33 - .../1-prototype/3-search-algorithm/task.md | 32 - 1-js/9-prototypes/1-prototype/article.md | 246 -- .../1-prototype/proto-animal-rabbit.png | Bin 7966 -> 0 bytes .../1-prototype/proto-animal-rabbit@2x.png | Bin 18263 -> 0 bytes .../1-prototype-after-new/solution.md | 9 - .../1-prototype-after-new/task.md | 89 - .../2-default-arguments/solution.md | 15 - .../2-default-arguments/task.md | 27 - .../3-compare-calls/solution.md | 33 - .../2-new-prototype/3-compare-calls/task.md | 27 - .../4-new-object-same-constructor/solution.md | 34 - .../4-new-object-same-constructor/task.md | 13 - 1-js/9-prototypes/2-new-prototype/article.md | 229 -- .../1-defer-to-prototype/solution.md | 15 - .../1-defer-to-prototype/task.md | 16 - .../2-defer-to-prototype-extended/solution.md | 23 - .../2-defer-to-prototype-extended/task.md | 19 - .../3-native-prototypes/article.md | 328 -- .../native-prototype-object.png | 1 - .../native-prototypes-array-tostring.png | Bin 19637 -> 0 bytes .../native-prototypes-array-tostring@2x.png | Bin 43151 -> 0 bytes .../native-prototypes-classes.png | Bin 47148 -> 0 bytes .../native-prototypes-classes@2x.png | Bin 103096 -> 0 bytes .../native-prototypes-object.png | Bin 14652 -> 0 bytes .../native-prototypes-object@2x.png | Bin 32622 -> 0 bytes .../4-classes/1-rewrite-by-class/solution.md | 32 - .../4-classes/1-rewrite-by-class/task.md | 39 - .../2-hamsters-with-proto/solution.md | 52 - .../4-classes/2-hamsters-with-proto/task.md | 33 - 1-js/9-prototypes/4-classes/article.md | 128 - .../1-inheritance-error-assign/solution.md | 44 - .../1-inheritance-error-assign/task.md | 25 - .../solution.md | 18 - .../2-inheritance-error-constructor/task.md | 30 - .../3-clock-class/clock.js | 32 - .../3-clock-class/solution.md | 7 - .../3-clock-class/solution.view/clock.js | 32 - .../3-clock-class/solution.view/index.html | 21 - .../3-clock-class/source.view/clock.js | 32 - .../3-clock-class/source.view/index.html | 21 - .../5-class-inheritance/3-clock-class/task.md | 11 - .../4-clock-class-extended/extended-clock.js | 14 - .../4-clock-class-extended/solution.md | 7 - .../solution.view/clock.js | 32 - .../solution.view/extended-clock.js | 14 - .../solution.view/index.html | 26 - .../source.view/clock.js | 32 - .../source.view/extended-clock.js | 13 - .../source.view/index.html | 35 - .../4-clock-class-extended/task.md | 15 - .../5-menu-timer-animated/solution.md | 3 - .../solution.view/index.html | 64 - .../solution.view/menu.js | 28 - .../source.view/index.html | 33 - .../5-menu-timer-animated/source.view/menu.js | 28 - .../5-menu-timer-animated/task.md | 14 - .../6-constructor-inherited/solution.md | 26 - .../6-constructor-inherited/task.md | 19 - .../5-class-inheritance/article.md | 358 --- .../class-inheritance-array-object.png | Bin 18701 -> 0 bytes .../class-inheritance-array-object@2x.png | Bin 41798 -> 0 bytes .../class-inheritance-rabbit-animal.png | Bin 20976 -> 0 bytes .../class-inheritance-rabbit-animal@2x.png | Bin 48186 -> 0 bytes .../class-inheritance-rabbit-run-animal.png | Bin 23137 -> 0 bytes ...class-inheritance-rabbit-run-animal@2x.png | Bin 51989 -> 0 bytes .../5-class-inheritance/console_dir_array.png | Bin 17005 -> 0 bytes .../console_dir_array@2x.png | Bin 35086 -> 0 bytes .../1-strange-instanceof/solution.md | 7 - .../6-instanceof/1-strange-instanceof/task.md | 21 - .../2-instanceof-result/solution.md | 18 - .../6-instanceof/2-instanceof-result/task.md | 23 - 1-js/9-prototypes/6-instanceof/article.md | 91 - .../7-oop-errors/1-format-error/solution.md | 28 - .../7-oop-errors/1-format-error/task.md | 17 - 1-js/9-prototypes/7-oop-errors/article.md | 285 -- 1-js/9-prototypes/8-mixins/article.md | 170 -- 1-js/9-prototypes/index.md | 3 - 1-js/index.md | 5 - .../1-regexp-introduction/article.md | 104 - .../10-regexp-ahchors/1-start-end/solution.md | 6 - .../10-regexp-ahchors/1-start-end/task.md | 4 - .../10-regexp-ahchors/2-test-mac/solution.md | 21 - .../10-regexp-ahchors/2-test-mac/task.md | 20 - .../10-regexp-ahchors/article.md | 68 - .../11-regexp-multiline-mode/article.md | 89 - .../12-regexp-lookahead/article.md | 4 - .../article.md | 305 -- .../bad_backtrack_greedy1.png | Bin 2357 -> 0 bytes .../bad_backtrack_greedy11.png | Bin 1119 -> 0 bytes .../bad_backtrack_greedy2.png | Bin 2503 -> 0 bytes .../bad_backtrack_greedy3.png | Bin 2505 -> 0 bytes .../bad_backtrack_greedy4.png | Bin 2552 -> 0 bytes .../bad_backtrack_greedy5.png | Bin 2462 -> 0 bytes .../2-regexp-methods/article.md | 392 --- .../1-find-time-hh-mm/solution.md | 8 - .../1-find-time-hh-mm/task.md | 8 - .../3-regexp-character-classes/article.md | 271 -- .../hello-java-boundaries.png | Bin 3614 -> 0 bytes .../hello-java-boundaries@2x.png | Bin 6841 -> 0 bytes .../love-html5-classes.png | Bin 4722 -> 0 bytes .../love-html5-classes@2x.png | Bin 8220 -> 0 bytes .../1-find-range-1/solution.md | 18 - .../1-find-range-1/task.md | 5 - .../2-find-time-2-formats/solution.md | 9 - .../2-find-time-2-formats/task.md | 11 - .../article.md | 170 -- .../1-find-text-manydots/solution.md | 11 - .../1-find-text-manydots/task.md | 13 - .../2-find-html-colors-6hex/solution.md | 34 - .../2-find-html-colors-6hex/task.md | 14 - .../solution.md | 18 - .../3-find-decimal-positive-numbers/task.md | 13 - .../4-find-decimal-numbers/solution.md | 13 - .../4-find-decimal-numbers/task.md | 13 - .../5-regexp-quantifiers/article.md | 168 -- .../1-lazy-greedy/solution.md | 6 - .../1-lazy-greedy/task.md | 8 - .../2-difference-find-quote/solution.md | 16 - .../2-difference-find-quote/task.md | 5 - .../3-find-html-comments/solution.md | 18 - .../3-find-html-comments/task.md | 11 - .../4-find-html-tags-greedy-lazy/solution.md | 38 - .../4-find-html-tags-greedy-lazy/task.md | 18 - .../6-regexp-greedy-and-lazy/article.md | 335 --- .../witch_greedy1.png | Bin 8828 -> 0 bytes .../witch_greedy1@2x.png | Bin 15909 -> 0 bytes .../witch_greedy2.png | Bin 8542 -> 0 bytes .../witch_greedy2@2x.png | Bin 14976 -> 0 bytes .../witch_greedy3.png | Bin 10907 -> 0 bytes .../witch_greedy3@2x.png | Bin 20119 -> 0 bytes .../witch_greedy4.png | Bin 10935 -> 0 bytes .../witch_greedy4@2x.png | Bin 20053 -> 0 bytes .../witch_greedy5.png | Bin 10914 -> 0 bytes .../witch_greedy5@2x.png | Bin 19924 -> 0 bytes .../witch_greedy6.png | Bin 10410 -> 0 bytes .../witch_greedy6@2x.png | Bin 18965 -> 0 bytes .../6-regexp-greedy-and-lazy/witch_lazy3.png | Bin 8670 -> 0 bytes .../witch_lazy3@2x.png | Bin 15188 -> 0 bytes .../6-regexp-greedy-and-lazy/witch_lazy4.png | Bin 8799 -> 0 bytes .../witch_lazy4@2x.png | Bin 15533 -> 0 bytes .../6-regexp-greedy-and-lazy/witch_lazy5.png | Bin 9045 -> 0 bytes .../witch_lazy5@2x.png | Bin 16112 -> 0 bytes .../6-regexp-greedy-and-lazy/witch_lazy6.png | Bin 9885 -> 0 bytes .../witch_lazy6@2x.png | Bin 17631 -> 0 bytes .../1-find-webcolor-3-or-6/solution.md | 30 - .../1-find-webcolor-3-or-6/task.md | 14 - .../2-parse-expression/solution.md | 53 - .../2-parse-expression/task.md | 20 - .../7-regexp-groups/article.md | 150 - .../7-regexp-groups/regexp-nested-groups.png | Bin 12959 -> 0 bytes .../regexp-nested-groups@2x.png | Bin 24479 -> 0 bytes .../1-find-matching-bbtags/solution.md | 21 - .../1-find-matching-bbtags/task.md | 41 - .../8-regexp-backreferences/article.md | 68 - .../1-find-programming-language/solution.md | 36 - .../1-find-programming-language/task.md | 6 - .../2-match-quoted-string/solution.md | 19 - .../2-match-quoted-string/task.md | 26 - .../3-match-exact-tag/solution.md | 18 - .../3-match-exact-tag/task.md | 14 - .../9-regexp-alternation/article.md | 26 - 10-regular-expressions-javascript/index.md | 3 - 11-extra/10-cookie/article.md | 255 -- 11-extra/10-cookie/cookie.js | 45 - 11-extra/10-cookie/safari-nocookie.png | Bin 27935 -> 0 bytes 11-extra/10-cookie/safari-nocookie@2x.png | Bin 72648 -> 0 bytes .../11-intl/1-collate-array-sort/solution.md | 27 - 11-extra/11-intl/1-collate-array-sort/task.md | 17 - 11-extra/11-intl/article.md | 484 --- 11-extra/12-regexp-specials/article.md | 193 -- 11-extra/3-templates/article.md | 308 -- 11-extra/4-books/article.md | 83 - 11-extra/5-setimmediate/article.md | 54 - .../setimmediate.view/index.html | 45 - .../setimmediate.view/setImmediate.js | 27 - 11-extra/6-bind-late/article.md | 160 - 11-extra/7-sublime/article.md | 47 - 11-extra/7-sublime/sheet.pdf | Bin 142604 -> 0 bytes 11-extra/8-range-textrange-selection/56.gif | Bin 4896 -> 0 bytes 11-extra/8-range-textrange-selection/57.gif | Bin 1307 -> 0 bytes 11-extra/8-range-textrange-selection/58.gif | Bin 1916 -> 0 bytes .../8-range-textrange-selection/article.md | 428 --- .../domRangeCreate.view/index.html | 40 - .../domRangeHighlight.view/index.html | 37 - .../fix-ie.view/fixIERangeObject.js | 93 - .../fix-ie.view/index.html | 30 - .../ieTextRangeHighlight.view/index.html | 35 - .../setSelection.view/index.html | 37 - 11-extra/9-drag-and-drop-plus/DragAvatar.js | 83 - 11-extra/9-drag-and-drop-plus/DragManager.js | 120 - 11-extra/9-drag-and-drop-plus/DragZone.js | 39 - 11-extra/9-drag-and-drop-plus/DropTarget.js | 85 - .../9-drag-and-drop-plus/TreeDragAvatar.js | 43 - 11-extra/9-drag-and-drop-plus/TreeDragZone.js | 9 - .../9-drag-and-drop-plus/TreeDropTarget.js | 72 - 11-extra/9-drag-and-drop-plus/article.md | 207 -- .../dragTree.view/DragAvatar.js | 83 - .../dragTree.view/DragManager.js | 120 - .../dragTree.view/DragZone.js | 39 - .../dragTree.view/DropTarget.js | 85 - .../dragTree.view/TreeDragAvatar.js | 43 - .../dragTree.view/TreeDragZone.js | 9 - .../dragTree.view/TreeDropTarget.js | 72 - .../dragTree.view/dragTree.css | 22 - .../dragTree.view/index.html | 73 - .../9-drag-and-drop-plus/dragTree.view/lib.js | 43 - .../9-drag-and-drop-plus/dragzonetarget.png | Bin 11721 -> 0 bytes 11-extra/index.md | 4 - .../1-browser-environment/article.md | 69 - .../1-browser-environment/windowObjects.png | Bin 24483 -> 0 bytes .../windowObjects@2x.png | Bin 54163 -> 0 bytes .../10-compare-document-position/article.md | 170 -- .../1-createtextnode-vs-innerhtml/solution.md | 31 - .../1-createtextnode-vs-innerhtml/task.md | 21 - .../10-clock-setinterval/solution.md | 56 - .../solution.view/index.html | 57 - .../source.view/index.html | 13 - .../10-clock-setinterval/task.md | 8 - .../2-remove-polyfill/solution.md | 23 - .../2-remove-polyfill/task.md | 28 - .../3-insert-after/solution.md | 29 - .../3-insert-after/task.md | 26 - .../4-remove-children/solution.md | 54 - .../4-remove-children/task.md | 29 - .../5-why-aaa/solution.md | 5 - .../11-modifying-document/5-why-aaa/task.md | 25 - .../6-create-list/solution.md | 4 - .../6-create-list/solution.view/index.html | 30 - .../6-create-list/task.md | 18 - .../build-tree-dom.view/index.html | 70 - .../7-create-object-tree/solution.md | 6 - .../solution.view/index.html | 52 - .../source.view/index.html | 67 - .../7-create-object-tree/task.md | 50 - .../8-tree-count/solution.md | 8 - .../8-tree-count/solution.view/index.html | 64 - .../8-tree-count/source.view/index.html | 54 - .../8-tree-count/task.md | 10 - .../9-calendar-table/solution.md | 11 - .../9-calendar-table/solution.view/index.html | 84 - .../9-calendar-table/source.view/index.html | 41 - .../9-calendar-table/task.md | 19 - .../11-modifying-document/article.md | 412 --- .../1-append-to-list/solution.md | 8 - .../12-multi-insert/1-append-to-list/task.md | 15 - .../2-sort-table-performance/solution.md | 11 - .../solution.view/index.html | 202 -- .../2-sort-table-performance/task.md | 48 - 2-ui/1-document/12-multi-insert/article.md | 362 --- .../12-multi-insert/benchmark.view/bench.js | 11 - .../benchmark.view/documentfragment-bench.js | 45 - .../12-multi-insert/benchmark.view/index.html | 23 - .../12-multi-insert/documentfragment-bench.js | 45 - .../12-multi-insert/insert-bench.js | 59 - .../12-multi-insert/insertAdjacentFF.js | 35 - .../12-multi-insert/insertAdjacentHTML.png | Bin 2309 -> 0 bytes 2-ui/1-document/13-document-write/article.md | 149 - .../1-round-button-javascript/solution.md | 43 - .../solution.view/index.html | 40 - .../source.view/index.html | 22 - .../1-round-button-javascript/task.md | 33 - .../2-create-notification/solution.md | 0 .../solution.view/index.css | 14 - .../solution.view/index.html | 65 - .../source.view/index.css | 14 - .../source.view/index.html | 50 - .../2-create-notification/task.md | 41 - .../14-styles-and-classes/article.md | 319 -- .../getiecomputedstyle.js | 18 - .../getiecomputedstyle.view/index.html | 30 - .../1-get-scroll-height-bottom/solution.md | 1 - .../1-get-scroll-height-bottom/task.md | 9 - .../15-metrics/2-scrollbar-width/solution.md | 23 - .../15-metrics/2-scrollbar-width/task.md | 7 - .../15-metrics/3-div-placeholder/solution.md | 29 - .../solution.view/index.html | 50 - .../3-div-placeholder/source.view/index.html | 37 - .../15-metrics/3-div-placeholder/task.md | 52 - .../4-put-ball-in-center/ball-half/index.html | 41 - .../15-metrics/4-put-ball-in-center/field.png | Bin 1693 -> 0 bytes .../4-put-ball-in-center/solution.md | 51 - .../solution.view/index.html | 41 - .../source.view/index.html | 30 - .../15-metrics/4-put-ball-in-center/task.md | 19 - .../15-metrics/5-expand-element/solution.md | 43 - .../5-expand-element/solution.view/index.html | 53 - .../5-expand-element/source.view/index.html | 39 - .../15-metrics/5-expand-element/task.md | 15 - .../6-width-vs-clientwidth/solution.md | 11 - .../15-metrics/6-width-vs-clientwidth/task.md | 7 - 2-ui/1-document/15-metrics/article.md | 317 -- .../15-metrics/cssWidthScroll.view/index.html | 26 - 2-ui/1-document/15-metrics/metric-all.png | Bin 142969 -> 0 bytes 2-ui/1-document/15-metrics/metric-all@2x.png | Bin 315112 -> 0 bytes .../15-metrics/metric-client-left-top-rtl.png | Bin 65151 -> 0 bytes .../metric-client-left-top-rtl@2x.png | Bin 187786 -> 0 bytes .../15-metrics/metric-client-left-top.png | Bin 68390 -> 0 bytes .../15-metrics/metric-client-left-top@2x.png | Bin 193964 -> 0 bytes .../15-metrics/metric-client-width-height.png | Bin 79576 -> 0 bytes .../metric-client-width-height@2x.png | Bin 177030 -> 0 bytes .../metric-client-width-nopadding.png | Bin 62338 -> 0 bytes .../metric-client-width-nopadding@2x.png | Bin 155408 -> 0 bytes 2-ui/1-document/15-metrics/metric-css.png | Bin 75689 -> 0 bytes 2-ui/1-document/15-metrics/metric-css@2x.png | Bin 168491 -> 0 bytes .../15-metrics/metric-offset-parent.png | Bin 113955 -> 0 bytes .../15-metrics/metric-offset-parent@2x.png | Bin 351341 -> 0 bytes .../15-metrics/metric-offset-width-height.png | Bin 85629 -> 0 bytes .../metric-offset-width-height@2x.png | Bin 186048 -> 0 bytes .../15-metrics/metric-scroll-top.png | Bin 119185 -> 0 bytes .../15-metrics/metric-scroll-top@2x.png | Bin 261376 -> 0 bytes .../15-metrics/metric-scroll-width-height.png | Bin 108300 -> 0 bytes .../metric-scroll-width-height@2x.png | Bin 265113 -> 0 bytes .../15-metrics/metric.view/index.html | 94 - .../1-pageyoffset-polyfill/solution.md | 39 - .../1-pageyoffset-polyfill/task.md | 12 - 2-ui/1-document/16-metrics-window/article.md | 213 -- .../document-client-width-height.png | Bin 17073 -> 0 bytes .../document-client-width-height@2x.png | Bin 36239 -> 0 bytes .../1-find-point-coordinates/solution.md | 42 - .../solution.view/index.css | 27 - .../solution.view/index.html | 65 - .../source.view/index.css | 27 - .../source.view/index.html | 42 - .../1-find-point-coordinates/task.md | 24 - .../17-coordinates/2-position-at/solution.md | 0 .../2-position-at/solution.view/index.css | 28 - .../2-position-at/solution.view/index.html | 82 - .../2-position-at/source.view/index.css | 28 - .../2-position-at/source.view/index.html | 55 - .../17-coordinates/2-position-at/task.md | 13 - 2-ui/1-document/17-coordinates/article.md | 201 -- 2-ui/1-document/17-coordinates/coords.png | Bin 10367 -> 0 bytes 2-ui/1-document/17-coordinates/coords@2x.png | Bin 24253 -> 0 bytes .../1-get-document-scrolls/solution.md | 24 - .../1-get-document-scrolls/task.md | 15 - .../2-position-at-absolute/solution.md | 0 .../solution.view/index.css | 28 - .../solution.view/index.html | 100 - .../2-position-at-absolute/task.md | 9 - .../3-position-at-2/solution.md | 0 .../3-position-at-2/solution.view/index.css | 29 - .../3-position-at-2/solution.view/index.html | 115 - .../3-position-at-2/task.md | 27 - .../18-coordinates-document/article.md | 226 -- .../getcoords-compare.png | Bin 9622 -> 0 bytes .../getcoords-compare@2x.png | Bin 16397 -> 0 bytes .../18-coordinates-document/pagewindow0.png | Bin 26598 -> 0 bytes .../18-coordinates-document/screen.png | Bin 22365 -> 0 bytes .../standards-scroll.png | Bin 23446 -> 0 bytes .../18-coordinates-document/standards.png | Bin 26537 -> 0 bytes 2-ui/1-document/19-dom-cheatsheet/article.md | 187 -- .../2-dom-nodes/1-body-from-head/solution.md | 21 - .../2-dom-nodes/1-body-from-head/task.md | 24 - 2-ui/1-document/2-dom-nodes/article.md | 269 -- 2-ui/1-document/3-dom-console/1.png | Bin 28286 -> 0 bytes 2-ui/1-document/3-dom-console/1@2x.png | Bin 57423 -> 0 bytes 2-ui/1-document/3-dom-console/2.png | Bin 28260 -> 0 bytes 2-ui/1-document/3-dom-console/2@2x.png | Bin 44086 -> 0 bytes 2-ui/1-document/3-dom-console/3.png | Bin 25328 -> 0 bytes 2-ui/1-document/3-dom-console/3@2x.png | Bin 47823 -> 0 bytes 2-ui/1-document/3-dom-console/article.md | 80 - 2-ui/1-document/3-dom-console/losi.html | 13 - .../1-dom-children/solution.md | 32 - .../4-traversing-dom/1-dom-children/task.md | 38 - .../2-has-childnodes/solution.md | 28 - .../4-traversing-dom/2-has-childnodes/task.md | 14 - .../3-navigation-links-which-null/solution.md | 10 - .../3-navigation-links-which-null/task.md | 9 - .../4-select-diagonal-cells/solution.md | 1 - .../solution.view/index.html | 66 - .../source.view/index.html | 63 - .../4-select-diagonal-cells/task.md | 17 - 2-ui/1-document/4-traversing-dom/article.md | 433 --- .../4-traversing-dom/dom-links-elements.png | Bin 34106 -> 0 bytes .../dom-links-elements@2x.png | Bin 71004 -> 0 bytes .../1-document/4-traversing-dom/dom-links.png | Bin 32591 -> 0 bytes .../4-traversing-dom/dom-links@2x.png | Bin 70415 -> 0 bytes .../4-traversing-dom/travel.view/index.html | 20 - .../1-find-elements/solution.md | 26 - .../1-find-elements/table.html | 48 - .../1-find-elements/task.md | 20 - .../2-tree-info/solution.md | 18 - .../2-tree-info/solution.view/index.html | 66 - .../2-tree-info/source.view/index.html | 54 - .../2-tree-info/task.md | 14 - .../5-searching-elements-dom/article.md | 382 --- .../solution.md | 47 - .../1-collection-length-after-remove/task.md | 35 - .../2-compare-elements-count/solution.md | 5 - .../2-compare-elements-count/task.md | 13 - .../3-benchmark-search-dom/solution.md | 31 - .../solution.view/index.html | 207 -- .../source.view/index.html | 170 -- .../3-benchmark-search-dom/task.md | 11 - .../4-get-second-li/solution.md | 21 - .../4-get-second-li/task.md | 16 - .../6-searching-elements-internals/article.md | 172 -- .../console-innerhtml.png | Bin 10438 -> 0 bytes .../console-innerhtml@2x.png | Bin 17069 -> 0 bytes .../solution.md | 18 - .../1-console-firstchild-innerhtml/task.md | 12 - .../2-lastchild-nodetype-inline/solution.md | 18 - .../2-lastchild-nodetype-inline/task.md | 19 - .../3-tag-in-comment/solution.md | 19 - .../3-tag-in-comment/task.md | 16 - .../4-where-document-in-hierarchy/solution.md | 72 - .../4-where-document-in-hierarchy/task.md | 11 - .../7-basic-dom-node-properties/article.md | 555 ---- .../7-basic-dom-node-properties/hierarchy.png | Bin 10361 -> 0 bytes .../1-polyfill-matches/solution.md | 21 - .../8-dom-polyfill/1-polyfill-matches/task.md | 7 - .../2-polyfill-closest/solution.md | 24 - .../8-dom-polyfill/2-polyfill-closest/task.md | 7 - .../3-polyfill-textcontent-ie8/solution.md | 29 - .../3-polyfill-textcontent-ie8/task.md | 9 - 2-ui/1-document/8-dom-polyfill/article.md | 222 -- .../1-get-user-attribute/solution.md | 20 - .../solution.view/index.html | 14 - .../1-get-user-attribute/task.md | 24 - .../2-set-class-links/solution.md | 56 - .../solution.view/index.html | 38 - .../2-set-class-links/task.md | 31 - .../article.md | 555 ---- 2-ui/1-document/index.md | 3 - .../1-hide-other/solution.md | 0 .../1-hide-other/solution.view/index.html | 23 - .../1-hide-other/source.view/index.html | 19 - .../1-hide-other/task.md | 10 - .../2-hide-self-onclick/solution.md | 7 - .../2-hide-self-onclick/task.md | 10 - .../3-which-handlers-run/solution.md | 16 - .../3-which-handlers-run/task.md | 19 - .../4-sliding-menu/solution.md | 67 - .../4-sliding-menu/solution.view/index.html | 58 - .../4-sliding-menu/source.view/index.html | 20 - .../4-sliding-menu/task.md | 10 - .../5-hide-message/solution.md | 10 - .../5-hide-message/solution.view/index.html | 47 - .../5-hide-message/solution.view/messages.css | 36 - .../5-hide-message/source.view/index.html | 33 - .../5-hide-message/source.view/messages.css | 31 - .../5-hide-message/task.md | 12 - .../6-carousel/carousel1.png | Bin 11712 -> 0 bytes .../6-carousel/carousel1@2x.png | Bin 26455 -> 0 bytes .../6-carousel/carousel2.png | Bin 13402 -> 0 bytes .../6-carousel/carousel2@2x.png | Bin 31491 -> 0 bytes .../6-carousel/solution.md | 19 - .../6-carousel/solution.view/index.html | 68 - .../6-carousel/solution.view/style.css | 72 - .../6-carousel/source.view/index.html | 48 - .../6-carousel/source.view/style.css | 46 - .../6-carousel/task.md | 12 - .../1-introduction-browser-events/article.md | 503 ---- .../2-events-and-timing-depth/article.md | 180 -- .../1-move-ball-field/solution.md | 35 - .../solution.view/index.html | 92 - .../1-move-ball-field/source.view/index.html | 40 - .../1-move-ball-field/task.md | 22 - .../3-obtaining-event-object/article.md | 110 - .../4-event-bubbling/article.md | 261 -- .../4-event-bubbling/both.view/example.css | 33 - .../4-event-bubbling/both.view/index.html | 20 - .../4-event-bubbling/both.view/script.js | 12 - .../bubble-target.view/example.css | 33 - .../bubble-target.view/index.html | 21 - .../bubble-target.view/script.js | 9 - .../4-event-bubbling/capture.view/example.css | 33 - .../4-event-bubbling/capture.view/index.html | 16 - .../4-event-bubbling/capture.view/script.js | 11 - .../4-event-bubbling/event-order-bubbling.png | Bin 11369 -> 0 bytes .../event-order-bubbling@2x.png | Bin 25044 -> 0 bytes .../4-event-bubbling/eventflow.png | Bin 78653 -> 0 bytes .../4-event-bubbling/eventflow@2x.png | Bin 175388 -> 0 bytes .../1-hide-message-delegate/solution.md | 2 - .../solution.view/index.html | 45 - .../solution.view/messages.css | 37 - .../source.view/index.html | 33 - .../source.view/messages.css | 32 - .../1-hide-message-delegate/task.md | 11 - .../2-sliding-tree/solution.md | 112 - .../2-sliding-tree/solution.view/index.html | 89 - .../2-sliding-tree/source.view/index.html | 50 - .../5-event-delegation/2-sliding-tree/task.md | 18 - .../3-sort-table/solution.md | 19 - .../3-sort-table/solution.view/index.html | 106 - .../3-sort-table/source.view/index.html | 56 - .../5-event-delegation/3-sort-table/task.md | 20 - .../5-event-delegation/article.md | 239 -- .../5-event-delegation/bagua-bubble.png | Bin 9707 -> 0 bytes .../5-event-delegation/bagua-bubble@2x.png | Bin 21689 -> 0 bytes .../5-event-delegation/bagua.view/bagua.css | 59 - .../5-event-delegation/bagua.view/index.html | 94 - .../6-behavior/1-behavior-tooltip/solution.md | 0 .../solution.view/index.html | 81 - .../1-behavior-tooltip/source.view/index.html | 32 - .../6-behavior/1-behavior-tooltip/task.md | 33 - .../6-behavior/article.md | 98 - .../1-why-return-false-fails/solution.md | 42 - .../1-why-return-false-fails/task.md | 21 - .../2-catch-link-navigation/solution.md | 28 - .../solution.view/index.html | 43 - .../source.view/index.html | 25 - .../2-catch-link-navigation/task.md | 18 - .../3-image-gallery/solution.md | 55 - .../3-image-gallery/solution.view/gallery.css | 44 - .../3-image-gallery/solution.view/index.html | 70 - .../3-image-gallery/source.view/gallery.css | 35 - .../3-image-gallery/source.view/index.html | 25 - .../3-image-gallery/task.md | 20 - .../7-default-browser-action/article.md | 154 - .../menu.view/index.html | 22 - .../menu.view/menu.css | 25 - .../menu.view/menu.js | 8 - .../8-dispatch-events/article.md | 452 --- 2-ui/2-events-and-interfaces/index.md | 3 - .../1-selectable-list/solution.md | 0 .../solution.view/index.html | 100 - .../1-selectable-list/source.view/index.html | 38 - .../1-mouse-clicks/1-selectable-list/task.md | 20 - .../1-mouse-clicks/2-tree-coords/solution.md | 28 - .../2-tree-coords/solution.view/index.html | 94 - .../2-tree-coords/source.view/index.html | 70 - .../1-mouse-clicks/2-tree-coords/task.md | 37 - .../3-event-details/1-mouse-clicks/article.md | 327 -- .../10-onload-ondomcontentloaded/article.md | 213 -- .../window-onbeforeunload.view/index.html | 22 - .../11-onload-onerror/1-nice-alt/solution.md | 8 - .../1-nice-alt/solution.view/index.html | 49 - .../1-nice-alt/source.view/index.html | 40 - .../11-onload-onerror/1-nice-alt/task.md | 17 - .../2-load-img-callback/solution.md | 8 - .../solution.view/index.html | 57 - .../source.view/index.html | 50 - .../2-load-img-callback/task.md | 23 - .../3-script-callback/solution.md | 18 - .../3-script-callback/solution.view/go.js | 3 - .../solution.view/index.html | 42 - .../3-script-callback/source.view/go.js | 3 - .../3-script-callback/source.view/index.html | 22 - .../3-script-callback/task.md | 19 - .../4-scripts-callback/solution.md | 8 - .../4-scripts-callback/solution.view/a.js | 3 - .../4-scripts-callback/solution.view/b.js | 3 - .../4-scripts-callback/solution.view/c.js | 3 - .../solution.view/index.html | 54 - .../4-scripts-callback/source.view/a.js | 3 - .../4-scripts-callback/source.view/b.js | 3 - .../4-scripts-callback/source.view/c.js | 3 - .../4-scripts-callback/source.view/index.html | 21 - .../4-scripts-callback/task.md | 24 - .../11-onload-onerror/article.md | 241 -- .../3-event-details/2-unselectable/article.md | 186 -- .../1-behavior-nested-tooltip/solution.md | 0 .../solution.view/index.html | 132 - .../source.view/index.html | 52 - .../1-behavior-nested-tooltip/task.md | 25 - .../2-hoverintent/solution.md | 19 - .../solution.view/hoverIntent.js | 75 - .../2-hoverintent/solution.view/index.html | 43 - .../2-hoverintent/solution.view/style.css | 26 - .../2-hoverintent/source.view/hoverIntent.js | 3 - .../2-hoverintent/source.view/index.html | 43 - .../2-hoverintent/source.view/style.css | 26 - .../2-hoverintent/task.md | 47 - .../article.md | 229 -- .../index.html | 74 - .../script.js | 46 - .../style.css | 65 - .../index.html | 79 - .../script.js | 13 - .../style.css | 65 - .../mouseleave-table.view/index.html | 79 - .../mouseleave-table.view/script.js | 6 - .../mouseleave-table.view/style.css | 65 - .../mouseleave.view/index.html | 22 - .../mouseleave.view/script.js | 4 - .../mouseleave.view/style.css | 21 - .../mouseover-mouseout-from-outside.png | Bin 10710 -> 0 bytes .../mouseover-mouseout-from-outside@2x.png | Bin 22617 -> 0 bytes .../mouseover-mouseout-over-elems.png | Bin 9619 -> 0 bytes .../mouseover-mouseout-over-elems@2x.png | Bin 20652 -> 0 bytes .../mouseover-mouseout.png | Bin 6319 -> 0 bytes .../mouseover-mouseout@2x.png | Bin 12845 -> 0 bytes .../mouseover-to-child.png | Bin 7135 -> 0 bytes .../mouseover-to-child@2x.png | Bin 17525 -> 0 bytes .../mouseoverout-child.view/index.html | 23 - .../mouseoverout-child.view/script.js | 4 - .../mouseoverout-child.view/style.css | 21 - .../mouseoverout-fast.view/index.html | 23 - .../mouseoverout-fast.view/script.js | 47 - .../mouseoverout-fast.view/style.css | 23 - .../mouseoverout.view/index.html | 37 - .../mouseoverout.view/script.js | 21 - .../mouseoverout.view/style.css | 165 - .../4-drag-and-drop/1-slider/solution.md | 6 - .../1-slider/solution.view/index.html | 66 - .../1-slider/solution.view/style.css | 21 - .../1-slider/source.view/index.html | 21 - .../1-slider/source.view/style.css | 21 - .../4-drag-and-drop/1-slider/task.md | 14 - .../4-drag-and-drop/2-drag-heroes/solution.md | 5 - .../2-drag-heroes/solution.view/index.html | 37 - .../2-drag-heroes/solution.view/soccer.css | 48 - .../2-drag-heroes/solution.view/soccer.js | 101 - .../2-drag-heroes/source.view/index.html | 37 - .../2-drag-heroes/source.view/soccer.css | 48 - .../2-drag-heroes/source.view/soccer.js | 1 - .../4-drag-and-drop/2-drag-heroes/task.md | 20 - .../4-drag-and-drop/article.md | 221 -- .../4-drag-and-drop/ball.view/index.html | 46 - .../4-drag-and-drop/ball2.view/index.html | 51 - .../4-drag-and-drop/ball3.view/index.html | 65 - .../4-drag-and-drop/ball_shift.png | Bin 8822 -> 0 bytes .../4-drag-and-drop/ball_shift@2x.png | Bin 22517 -> 0 bytes .../5-drag-and-drop-objects/article.md | 531 ---- .../5-drag-and-drop-objects/between.png | Bin 2977 -> 0 bytes .../dragDemo.view/DragManager.js | 157 - .../dragDemo.view/dragDemo.css | 15 - .../dragDemo.view/index.html | 41 - .../5-drag-and-drop-objects/shiftx.png | Bin 1382 -> 0 bytes .../1-scale-with-mouse-wheel/solution.md | 2 - .../solution.view/index.html | 52 - .../1-scale-with-mouse-wheel/task.md | 15 - .../6-mousewheel/2-no-doc-scroll/solution.md | 0 .../solution.view/fix-textarea-scroll.js | 14 - .../2-no-doc-scroll/solution.view/index.html | 41 - .../2-no-doc-scroll/source.view/index.html | 40 - .../6-mousewheel/2-no-doc-scroll/task.md | 27 - 2-ui/3-event-details/6-mousewheel/article.md | 77 - .../6-mousewheel/wheel.view/index.html | 61 - 2-ui/3-event-details/7-fixevent/article.md | 66 - .../1-avatar-above-scroll/solution.md | 0 .../solution.view/index.html | 130 - .../source.view/index.html | 111 - .../8-onscroll/1-avatar-above-scroll/task.md | 11 - .../8-onscroll/2-updown-button/solution.md | 94 - .../2-updown-button/solution.view/index.html | 102 - .../2-updown-button/source.view/index.html | 41 - .../8-onscroll/2-updown-button/task.md | 20 - .../8-onscroll/3-load-visible-img/solution.md | 36 - .../solution.view/index.html | 164 - .../3-load-visible-img/source.view/index.html | 108 - .../8-onscroll/3-load-visible-img/task.md | 50 - 2-ui/3-event-details/8-onscroll/article.md | 31 - .../1-numeric-input/solution.md | 36 - .../1-numeric-input/solution.view/index.html | 49 - .../1-numeric-input/source.view/index.html | 36 - .../9-keyboard-events/1-numeric-input/task.md | 13 - .../2-check-sync-keydown/solution.md | 10 - .../solution.view/index.html | 55 - .../2-check-sync-keydown/task.md | 18 - .../9-keyboard-events/article.md | 338 --- .../keyboard-dump.view/index.html | 45 - .../keyboard-dump.view/script.js | 28 - .../keyboard-dump.view/style.css | 18 - 2-ui/3-event-details/index.md | 5 - .../1-add-select-option/solution.md | 25 - .../1-add-select-option/task.md | 19 - .../1-form-elements/article.md | 318 -- .../4-forms-controls/1-form-elements/form.png | Bin 3860 -> 0 bytes .../1-emulate-placeholder/solution.md | 3 - .../solution.view/index.html | 74 - .../source.view/index.html | 48 - .../1-emulate-placeholder/task.md | 19 - .../2-focus-blur/2-keyboard-mouse/solution.md | 9 - .../2-keyboard-mouse/solution.view/index.html | 65 - .../2-keyboard-mouse/source.view/index.html | 42 - .../2-focus-blur/2-keyboard-mouse/task.md | 11 - .../2-focus-blur/3-hotkeys/solution.md | 100 - .../3-hotkeys/solution.view/index.html | 61 - .../3-hotkeys/solution.view/my.css | 27 - .../3-hotkeys/source.view/index.html | 22 - .../2-focus-blur/3-hotkeys/source.view/my.css | 27 - .../2-focus-blur/3-hotkeys/task.md | 14 - .../2-focus-blur/4-edit-td-click/solution.md | 7 - .../4-edit-td-click/solution.view/bagua.css | 56 - .../4-edit-td-click/solution.view/index.html | 78 - .../4-edit-td-click/solution.view/my.css | 23 - .../4-edit-td-click/solution.view/script.js | 62 - .../4-edit-td-click/source.view/bagua.css | 56 - .../4-edit-td-click/source.view/index.html | 78 - .../4-edit-td-click/source.view/my.css | 1 - .../4-edit-td-click/source.view/script.js | 3 - .../2-focus-blur/4-edit-td-click/task.md | 16 - .../6-input-nice-placeholder/solution.md | 22 - .../solution.view/index.html | 33 - .../solution.view/style.css | 17 - .../source.view/index.html | 21 - .../source.view/style.css | 17 - .../6-input-nice-placeholder/task.md | 11 - .../7-capslock-warning-field/solution.md | 91 - .../solution.view/index.html | 77 - .../source.view/index.html | 19 - .../7-capslock-warning-field/task.md | 10 - 2-ui/4-forms-controls/2-focus-blur/article.md | 340 --- .../1-calculate-capitalization/solution.md | 10 - .../solution.view/index.html | 153 - .../source.view/index.html | 102 - .../1-calculate-capitalization/task.md | 20 - .../3-events-change/article.md | 218 -- .../4-forms-submit/1-modal-dialog/solution.md | 21 - .../1-modal-dialog/solution.view/index.html | 155 - .../1-modal-dialog/source.view/index.html | 65 - .../4-forms-submit/1-modal-dialog/task.md | 34 - .../2-form-validation/solution.md | 0 .../solution.view/index.html | 118 - .../2-form-validation/source.view/index.html | 74 - .../4-forms-submit/2-form-validation/task.md | 17 - .../4-forms-submit/article.md | 65 - 2-ui/4-forms-controls/index.md | 3 - 2-ui/5-widgets/1-architect-intro/article.md | 11 - .../2-widgets-structure/1-clock/solution.md | 0 .../1-clock/solution.view/clock.js | 31 - .../1-clock/solution.view/index.html | 42 - .../1-clock/source.view/index.html | 43 - .../2-widgets-structure/1-clock/task.md | 24 - .../2-slider-widget/solution.md | 1 - .../2-slider-widget/solution.view/index.html | 107 - .../2-slider-widget/task.md | 8 - .../3-selectable-list-component/solution.md | 1 - .../solution.view/index.html | 36 - .../solution.view/listSelect.js | 68 - .../solution.view/style.css | 7 - .../3-selectable-list-component/task.md | 20 - .../2-widgets-structure/4-voter/solution.md | 0 .../4-voter/solution.view/index.html | 73 - .../4-voter/source.view/index.html | 44 - .../2-widgets-structure/4-voter/task.md | 25 - .../5-voter-proto/solution.md | 0 .../5-voter-proto/solution.view/index.html | 27 - .../5-voter-proto/solution.view/style.css | 11 - .../5-voter-proto/solution.view/voter.js | 31 - .../2-widgets-structure/5-voter-proto/task.md | 9 - .../6-voter-add-step/solution.md | 0 .../6-voter-add-step/solution.view/index.html | 30 - .../solution.view/step-voter.js | 13 - .../6-voter-add-step/solution.view/style.css | 11 - .../6-voter-add-step/solution.view/voter.js | 31 - .../6-voter-add-step/task.md | 23 - 2-ui/5-widgets/2-widgets-structure/article.md | 313 -- .../menu-dom.view/index.html | 34 - .../2-widgets-structure/menu-dom.view/menu.js | 61 - .../menu-dom.view/style.css | 23 - .../2-widgets-structure/menu.view/index.html | 32 - .../2-widgets-structure/menu.view/menu.js | 14 - .../2-widgets-structure/menu.view/style.css | 23 - .../1-semantic-menu/solution.md | 35 - .../1-semantic-menu/solution.view/index.html | 56 - .../1-semantic-menu/source.view/index.html | 42 - .../3-widgets-markup/1-semantic-menu/task.md | 47 - 2-ui/5-widgets/3-widgets-markup/article.md | 212 -- .../1-table-template/solution.md | 1 - .../1-table-template/solution.view/index.html | 76 - .../1-table-template/source.view/index.html | 41 - .../1-table-template/task.md | 25 - .../2-template-display-none/solution.md | 5 - .../2-template-display-none/task.md | 7 - .../3-menu-template/solution.md | 5 - .../3-menu-template/solution.view/index.html | 54 - .../3-menu-template/solution.view/menu.css | 23 - .../3-menu-template/solution.view/menu.js | 66 - .../3-menu-template/source.view/index.html | 47 - .../3-menu-template/source.view/menu.css | 23 - .../3-menu-template/source.view/menu.js | 56 - .../4-template-lodash/3-menu-template/task.md | 30 - 2-ui/5-widgets/4-template-lodash/article.md | 584 ---- .../menu-template.view/index.html | 49 - .../menu-template.view/menu.css | 23 - .../menu-template.view/menu.js | 56 - .../4-template-lodash/template-debugger.png | Bin 35419 -> 0 bytes .../template-debugger@2x.png | Bin 64366 -> 0 bytes .../template-error-sourceurl.view/index.html | 31 - .../1-voter-events/solution.md | 1 - .../1-voter-events/solution.view/index.html | 45 - .../1-voter-events/solution.view/voter.js | 39 - .../5-custom-events/1-voter-events/task.md | 26 - .../2-selectable-list-evented/solution.md | 0 .../solution.view/index.html | 38 - .../solution.view/listSelect.js | 80 - .../solution.view/style.css | 7 - .../2-selectable-list-evented/task.md | 12 - .../3-custom-select/solution.md | 9 - .../solution.view/customselect.css | 49 - .../solution.view/customselect.js | 56 - .../3-custom-select/solution.view/index.html | 53 - .../source.view/customselect.css | 49 - .../source.view/customselect.js | 1 - .../3-custom-select/source.view/index.html | 54 - .../5-custom-events/3-custom-select/task.md | 20 - .../4-slider-events/slider.png | Bin 5357 -> 0 bytes .../4-slider-events/solution.md | 34 - .../4-slider-events/solution.view/index.html | 42 - .../4-slider-events/solution.view/slider.css | 20 - .../4-slider-events/solution.view/slider.js | 88 - .../5-custom-events/4-slider-events/task.md | 46 - 2-ui/5-widgets/5-custom-events/article.md | 120 - .../menu-callback.view/index.html | 59 - .../menu-callback.view/menu.css | 23 - .../menu-callback.view/menu.js | 66 - .../menu-event.view/index.html | 53 - .../5-custom-events/menu-event.view/menu.css | 23 - .../5-custom-events/menu-event.view/menu.js | 70 - 2-ui/5-widgets/6-what-next/article.md | 32 - 2-ui/5-widgets/index.md | 3 - 2-ui/index.md | 3 - .../1-webcomponents-intro/article.md | 93 - .../satellite-expanded.jpg | Bin 53660 -> 0 bytes .../satellite-expanded@2x.jpg | Bin 143928 -> 0 bytes .../1-webcomponents-intro/satellite.jpg | Bin 52516 -> 0 bytes .../1-webcomponents-intro/satellite@2x.jpg | Bin 163742 -> 0 bytes .../twitter-components.png | Bin 75075 -> 0 bytes .../twitter-components@2x.png | Bin 223473 -> 0 bytes .../2-webcomponent-core/article.md | 225 -- 3-webcomponents/3-shadow-dom/article.md | 175 -- .../3-shadow-dom/shadow-content.png | Bin 6100 -> 0 bytes .../3-shadow-dom/shadow-content@2x.png | Bin 10235 -> 0 bytes .../3-shadow-dom/shadow-dom-chrome.png | Bin 21439 -> 0 bytes .../3-shadow-dom/shadow-dom-chrome@2x.png | Bin 49046 -> 0 bytes 3-webcomponents/4-template-tag/article.md | 60 - 3-webcomponents/5-css-scoping/article.md | 304 -- 3-webcomponents/6-link-import/article.md | 146 - .../6-link-import/import-show.view/index.html | 17 - .../6-link-import/import-show.view/timer.html | 19 - .../import-style.view/index.html | 10 - .../import-style.view/timer.html | 29 - .../7-webcomponent-build/article.md | 306 -- .../message.view/index.html | 23 - .../message.view/ui-message.html | 55 - .../ui-slider.view/index.html | 29 - .../ui-slider.view/jquery.html | 2 - .../ui-slider.view/ui-slider.html | 60 - 3-webcomponents/index.md | 3 - 4-ajax/1-ajax-intro/article.md | 86 - 4-ajax/1-ajax-intro/suggest.png | Bin 3976 -> 0 bytes 4-ajax/1-ajax-intro/tree.html | 30 - 4-ajax/10-ajax-jsonp/article.md | 154 - 4-ajax/10-ajax-jsonp/jsonp.view/index.html | 33 - .../10-ajax-jsonp/jsonp.view/scriptRequest.js | 48 - 4-ajax/10-ajax-jsonp/jsonp.view/server.js | 39 - 4-ajax/11-server-sent-events/article.md | 298 -- .../eventsource.view/index.html | 62 - .../eventsource.view/server.js | 54 - 4-ajax/12-ajax-iframe/article.md | 397 --- 4-ajax/12-ajax-iframe/comet.png | Bin 5422 -> 0 bytes .../date-activex.view/activex.js | 37 - .../date-activex.view/index.html | 32 - .../date-activex.view/server.js | 42 - .../date-comet.view/iframeComet.js | 83 - .../12-ajax-iframe/date-comet.view/index.html | 28 - .../12-ajax-iframe/date-comet.view/server.js | 43 - 4-ajax/12-ajax-iframe/date.view/iframe.js | 92 - 4-ajax/12-ajax-iframe/date.view/index.html | 24 - 4-ajax/12-ajax-iframe/date.view/server.js | 42 - 4-ajax/13-csrf/article.md | 138 - 4-ajax/14-fetch/article.md | 80 - 4-ajax/14-fetch/user.js | 4 - 4-ajax/15-ajax-summary/article.md | 109 - 4-ajax/2-ajax-nodejs/article.md | 135 - 4-ajax/2-ajax-nodejs/example/index.html | 40 - 4-ajax/2-ajax-nodejs/example/server.js | 30 - .../phones-async.view/index.html | 43 - .../phones-async.view/phones.json | 155 - .../1-phones-list/phones-async.view/server.js | 30 - .../1-phones-list/phones-list.view/index.html | 58 - .../phones-list.view/phones.json | 155 - .../1-phones-list/phones-list.view/server.js | 30 - .../1-phones-list/solution.md | 54 - .../1-phones-list/task.md | 12 - 4-ajax/3-ajax-xmlhttprequest/article.md | 414 --- .../phones-async.view/index.html | 45 - .../phones-async.view/phones.json | 155 - .../phones-async.view/server.js | 30 - .../phones.view/index.html | 31 - .../phones.view/phones.json | 155 - .../phones.view/server.js | 30 - .../readystate.view/index.html | 38 - .../readystate.view/server.js | 42 - 4-ajax/4-xhr-forms/article.md | 302 -- .../1-do-we-need-origin/solution.md | 9 - .../1-do-we-need-origin/task.md | 28 - 4-ajax/5-xhr-crossdomain/article.md | 401 --- .../5-xhr-crossdomain/xhr-another-domain.png | Bin 30260 -> 0 bytes .../xhr-another-domain@2x.png | Bin 66197 -> 0 bytes 4-ajax/5-xhr-crossdomain/xhr-preflight.png | Bin 54422 -> 0 bytes 4-ajax/5-xhr-crossdomain/xhr-preflight@2x.png | Bin 116123 -> 0 bytes 4-ajax/6-xhr-onprogress/article.md | 191 -- .../6-xhr-onprogress/progress.view/index.html | 68 - .../6-xhr-onprogress/progress.view/server.js | 38 - 4-ajax/7-xhr-resume/article.md | 114 - .../upload-resume.view/index.html | 51 - .../7-xhr-resume/upload-resume.view/server.js | 119 - .../upload-resume.view/uploader.js | 105 - 4-ajax/8-xhr-longpoll/article.md | 88 - 4-ajax/8-xhr-longpoll/longpoll.png | Bin 14570 -> 0 bytes .../8-xhr-longpoll/longpoll.view/browser.js | 56 - .../8-xhr-longpoll/longpoll.view/index.html | 29 - 4-ajax/8-xhr-longpoll/longpoll.view/server.js | 76 - 4-ajax/9-websockets/article.md | 493 --- 4-ajax/9-websockets/websocket.zip | Bin 1950 -> 0 bytes 4-ajax/index.md | 3 - 5-animation/1-bezier/article.md | 209 -- 5-animation/1-bezier/bezier-car.png | Bin 6798 -> 0 bytes 5-animation/1-bezier/bezier-car@2x.png | Bin 15217 -> 0 bytes 5-animation/1-bezier/bezier-letter.png | Bin 7517 -> 0 bytes 5-animation/1-bezier/bezier-letter@2x.png | Bin 16259 -> 0 bytes 5-animation/1-bezier/bezier-vase.png | Bin 7365 -> 0 bytes 5-animation/1-bezier/bezier-vase@2x.png | Bin 16860 -> 0 bytes 5-animation/1-bezier/bezier2.png | Bin 3140 -> 0 bytes 5-animation/1-bezier/bezier2@2x.png | Bin 7282 -> 0 bytes 5-animation/1-bezier/bezier3-draw1.png | Bin 21383 -> 0 bytes 5-animation/1-bezier/bezier3-draw1@2x.png | Bin 52773 -> 0 bytes 5-animation/1-bezier/bezier3-draw2.png | Bin 16973 -> 0 bytes 5-animation/1-bezier/bezier3-draw2@2x.png | Bin 42954 -> 0 bytes 5-animation/1-bezier/bezier3-e.png | Bin 4828 -> 0 bytes 5-animation/1-bezier/bezier3-e@2x.png | Bin 10375 -> 0 bytes 5-animation/1-bezier/bezier3.png | Bin 3938 -> 0 bytes 5-animation/1-bezier/bezier3@2x.png | Bin 8875 -> 0 bytes 5-animation/1-bezier/bezier4-e.png | Bin 6990 -> 0 bytes 5-animation/1-bezier/bezier4-e@2x.png | Bin 15781 -> 0 bytes 5-animation/1-bezier/bezier4.png | Bin 4424 -> 0 bytes 5-animation/1-bezier/bezier4@2x.png | Bin 10050 -> 0 bytes 5-animation/1-bezier/demo.svg | 1 - 5-animation/1-bezier/pause.png | Bin 1707 -> 0 bytes 5-animation/1-bezier/play.png | Bin 1711 -> 0 bytes .../1-animate-logo-css/solution.md | 16 - .../solution.view/index.html | 47 - .../1-animate-logo-css/source.view/index.html | 29 - .../1-animate-logo-css/task.md | 16 - .../2-animate-logo-bezier-css/bezier-up.png | Bin 6771 -> 0 bytes .../bezier-up@2x.png | Bin 15975 -> 0 bytes .../2-animate-logo-bezier-css/solution.md | 7 - .../solution.view/index.html | 38 - .../2-animate-logo-bezier-css/task.md | 10 - 5-animation/2-css-transitions/article.md | 457 --- .../2-css-transitions/bezier-linear.png | Bin 3082 -> 0 bytes .../2-css-transitions/bezier-linear@2x.png | Bin 7161 -> 0 bytes .../2-css-transitions/bezier-train-over.png | Bin 11620 -> 0 bytes .../bezier-train-over@2x.png | Bin 26974 -> 0 bytes .../2-css-transitions/boat.view/index.html | 43 - .../2-css-transitions/boat.view/style.css | 13 - .../digits-negative-delay.view/index.html | 16 - .../digits-negative-delay.view/script.js | 5 - .../digits-negative-delay.view/style.css | 12 - .../2-css-transitions/digits.view/index.html | 16 - .../2-css-transitions/digits.view/script.js | 3 - .../2-css-transitions/digits.view/style.css | 12 - 5-animation/2-css-transitions/ease-in-out.png | Bin 4421 -> 0 bytes .../2-css-transitions/ease-in-out@2x.png | Bin 10019 -> 0 bytes 5-animation/2-css-transitions/ease-in.png | Bin 4489 -> 0 bytes 5-animation/2-css-transitions/ease-in@2x.png | Bin 10122 -> 0 bytes 5-animation/2-css-transitions/ease-out.png | Bin 4377 -> 0 bytes 5-animation/2-css-transitions/ease-out@2x.png | Bin 9847 -> 0 bytes 5-animation/2-css-transitions/ease.png | Bin 4403 -> 0 bytes 5-animation/2-css-transitions/ease@2x.png | Bin 10035 -> 0 bytes .../step-end.view/index.html | 22 - .../2-css-transitions/step-end.view/style.css | 12 - .../2-css-transitions/step.view/index.html | 22 - .../2-css-transitions/step.view/style.css | 12 - 5-animation/2-css-transitions/train-curve.png | Bin 4226 -> 0 bytes .../2-css-transitions/train-curve@2x.png | Bin 9863 -> 0 bytes .../train-linear.view/index.html | 15 - .../train-linear.view/style.css | 8 - .../train-over.view/index.html | 15 - .../train-over.view/style.css | 8 - .../2-css-transitions/train.view/index.html | 15 - .../2-css-transitions/train.view/style.css | 8 - .../3-js-animation/1-animate-ball/solution.md | 20 - .../1-animate-ball/solution.view/index.html | 51 - .../1-animate-ball/solution.view/style.css | 10 - .../1-animate-ball/source.view/index.html | 19 - .../1-animate-ball/source.view/style.css | 10 - .../3-js-animation/1-animate-ball/task.md | 8 - .../2-animate-ball-hops/solution.md | 30 - .../solution.view/index.html | 61 - .../solution.view/style.css | 10 - .../2-animate-ball-hops/task.md | 11 - 5-animation/3-js-animation/article.md | 508 ---- 5-animation/3-js-animation/back.png | Bin 7225 -> 0 bytes .../3-js-animation/back.view/index.html | 34 - .../3-js-animation/back.view/style.css | 13 - 5-animation/3-js-animation/back@2x.png | Bin 16256 -> 0 bytes 5-animation/3-js-animation/bezier-linear.png | Bin 3082 -> 0 bytes .../3-js-animation/bezier-linear@2x.png | Bin 7161 -> 0 bytes .../bounce-easeinout.view/index.html | 52 - .../bounce-easeinout.view/style.css | 13 - .../bounce-easeout.view/index.html | 48 - .../bounce-easeout.view/style.css | 13 - 5-animation/3-js-animation/bounce-inout.png | Bin 13225 -> 0 bytes .../3-js-animation/bounce-inout@2x.png | Bin 29302 -> 0 bytes .../3-js-animation/bounce.view/index.html | 38 - .../3-js-animation/bounce.view/style.css | 13 - 5-animation/3-js-animation/circ-ease.png | Bin 14059 -> 0 bytes 5-animation/3-js-animation/circ-ease@2x.png | Bin 30812 -> 0 bytes 5-animation/3-js-animation/circ.png | Bin 6821 -> 0 bytes .../3-js-animation/circ.view/index.html | 34 - .../3-js-animation/circ.view/style.css | 13 - 5-animation/3-js-animation/circ@2x.png | Bin 15231 -> 0 bytes 5-animation/3-js-animation/elastic.png | Bin 11306 -> 0 bytes .../3-js-animation/elastic.view/index.html | 34 - .../3-js-animation/elastic.view/style.css | 13 - 5-animation/3-js-animation/elastic@2x.png | Bin 25615 -> 0 bytes 5-animation/3-js-animation/linear.png | Bin 5961 -> 0 bytes 5-animation/3-js-animation/linear@2x.png | Bin 13820 -> 0 bytes .../3-js-animation/move-raf.view/index.html | 53 - .../3-js-animation/move.view/index.html | 37 - 5-animation/3-js-animation/quad.png | Bin 7060 -> 0 bytes .../3-js-animation/quad.view/index.html | 34 - .../3-js-animation/quad.view/style.css | 13 - 5-animation/3-js-animation/quad@2x.png | Bin 15872 -> 0 bytes 5-animation/3-js-animation/quint.png | Bin 6598 -> 0 bytes .../3-js-animation/quint.view/index.html | 34 - .../3-js-animation/quint.view/style.css | 13 - 5-animation/3-js-animation/quint@2x.png | Bin 14860 -> 0 bytes .../3-js-animation/text.view/index.html | 47 - .../3-js-animation/text.view/style.css | 10 - .../3-js-animation/width.view/animate.js | 20 - .../3-js-animation/width.view/index.html | 36 - 5-animation/index.md | 3 - 6-optimize/1-optimize-intro/article.md | 5 - 6-optimize/2-minification/article.md | 513 ---- 6-optimize/2-minification/my.png | Bin 35168 -> 0 bytes 6-optimize/2-minification/my.svg | 1 - 6-optimize/2-minification/my@2x.png | Bin 60013 -> 0 bytes 6-optimize/3-better-minification/article.md | 172 -- 6-optimize/4-memory-leaks/article.md | 317 -- 6-optimize/4-memory-leaks/chrome.png | Bin 18285 -> 0 bytes 6-optimize/4-memory-leaks/goodluck.png | Bin 17574 -> 0 bytes 6-optimize/4-memory-leaks/ie1.png | Bin 3679 -> 0 bytes 6-optimize/4-memory-leaks/ie2.png | Bin 6387 -> 0 bytes 6-optimize/4-memory-leaks/ie9_disable1.png | Bin 42545 -> 0 bytes 6-optimize/4-memory-leaks/ie9_disable2.png | Bin 18133 -> 0 bytes .../4-memory-leaks/leak-ie8-2.view/index.html | 35 - .../leak-ie8-table.view/index.html | 34 - .../leak-ie8-widget.view/index.html | 40 - .../leak-ie8-xhr.view/index.html | 37 - .../4-memory-leaks/leak-ie8.view/index.html | 39 - 6-optimize/4-memory-leaks/leak-xhr-2.png | Bin 12577 -> 0 bytes 6-optimize/4-memory-leaks/leak-xhr-2@2x.png | Bin 27803 -> 0 bytes 6-optimize/4-memory-leaks/leak-xhr.png | Bin 17176 -> 0 bytes 6-optimize/4-memory-leaks/leak-xhr@2x.png | Bin 39029 -> 0 bytes 6-optimize/5-memory-leaks-jquery/article.md | 144 - .../6-memory-removechild-innerhtml/article.md | 147 - .../html-innerhtml.png | Bin 5445 -> 0 bytes .../html-list.png | Bin 4180 -> 0 bytes .../6-memory-removechild-innerhtml/html.png | Bin 4400 -> 0 bytes .../7-gcc-advanced-optimization/article.md | 530 ---- 6-optimize/8-gcc-check-types/article.md | 177 -- 6-optimize/9-gcc-closure-library/article.md | 180 -- 6-optimize/index.md | 4 - .../1-window-methods/article.md | 241 -- 7-frames-and-windows/2-iframes/article.md | 178 -- .../2-iframes/sandbox.view/index.html | 14 - .../2-iframes/sandbox.view/sandboxed.html | 21 - .../3-same-origin-policy/article.md | 135 - .../article.md | 102 - .../5-window-focus/article.md | 167 -- .../6-clickjacking/article.md | 202 -- .../clickjacking-visible.view/facebook.html | 10 - .../clickjacking-visible.view/index.html | 35 - .../clickjacking.view/facebook.html | 10 - .../clickjacking.view/index.html | 35 - .../top-location.view/iframe.html | 18 - .../top-location.view/index.html | 44 - 7-frames-and-windows/index.md | 2 - 8-css-for-js/1-css-why/article.md | 75 - 8-css-for-js/10-box-sizing/article.md | 191 -- 8-css-for-js/10-box-sizing/border-box.png | Bin 27565 -> 0 bytes 8-css-for-js/10-box-sizing/border-box@2x.png | Bin 59837 -> 0 bytes .../11-margin/1-failing-margins/solution.md | 5 - .../11-margin/1-failing-margins/task.md | 43 - .../2-position-text-into-input/solution.md | 30 - .../solution.view/index.html | 29 - .../source.view/index.html | 20 - .../2-position-text-into-input/task.md | 15 - 8-css-for-js/11-margin/article.md | 173 -- .../h2-margin-top-position.view/index.html | 43 - .../11-margin/h2-margin-top.view/index.html | 43 - .../hr-margin-left-src.view/index.html | 43 - .../11-margin/hr-margin-left.view/index.html | 52 - .../negative-margin-bottom.view/index.html | 40 - 8-css-for-js/12-space-under-img/article.md | 148 - .../12-space-under-img/block.view/index.html | 31 - .../inline-p.view/index.html | 27 - .../12-space-under-img/inline.view/index.html | 27 - .../valign-p.view/index.html | 27 - .../valign-small-lh.view/index.html | 27 - .../valign-small.view/index.html | 27 - .../12-space-under-img/valign.view/index.html | 27 - 8-css-for-js/13-overflow/article.md | 162 - 8-css-for-js/14-height-percent/article.md | 141 - .../index.html | 44 - .../height-percent-float.view/index.html | 44 - .../height-percent.view/index.html | 47 - .../1-select-elements-selector/index.html | 79 - .../1-select-elements-selector/solution.md | 6 - .../source.view/index.html | 87 - .../1-select-elements-selector/task.md | 41 - .../2-margin-between-pairs-size-1/solution.md | 30 - .../solution.view/index.html | 36 - .../source.view/index.html | 32 - .../2-margin-between-pairs-size-1/task.md | 37 - .../3-margin-between-pairs/index.html | 36 - .../3-margin-between-pairs/solution.md | 26 - .../solution.view/index.html | 36 - .../source.view/index.html | 32 - .../3-margin-between-pairs/task.md | 37 - 8-css-for-js/15-css-selectors/article.md | 254 -- .../nthchild-type.view/index.html | 40 - .../15-css-selectors/nthchild.view/index.html | 37 - .../15-css-selectors/relation.view/index.html | 71 - 8-css-for-js/17-css-sprite/article.gif | Bin 255 -> 0 bytes 8-css-for-js/17-css-sprite/article.md | 209 -- .../17-css-sprite/height48.view/index.html | 36 - 8-css-for-js/17-css-sprite/icons.gif | Bin 767 -> 0 bytes 8-css-for-js/17-css-sprite/minus.gif | Bin 535 -> 0 bytes 8-css-for-js/17-css-sprite/plus.gif | Bin 535 -> 0 bytes .../17-css-sprite/sprite-example/index.html | 27 - .../sprite-tree-1/height48.view/index.html | 36 - .../17-css-sprite/sprite-tree-1/index.html | 36 - .../sprite-tree-src.view/index.html | 68 - .../17-css-sprite/sprite-tree.view/index.html | 69 - .../17-css-sprite/sprites-example-lines2.png | Bin 7976 -> 0 bytes .../17-css-sprite/sprites-example.png | Bin 7021 -> 0 bytes 8-css-for-js/18-css-format/article.md | 151 - 8-css-for-js/2-css-units/article.md | 319 -- 8-css-for-js/3-display/article.md | 265 -- .../gallery-float-diffsize.png | Bin 20309 -> 0 bytes .../gallery-float-diffsize.view/index.html | 75 - .../gallery-inline-block.view/index.html | 61 - .../1-inline-block-vs-float/solution.md | 45 - .../solution.view/index.html | 71 - .../4-float/1-inline-block-vs-float/task.md | 16 - .../2-tree-with-multiline-nodes/solution.md | 2 - .../solution.view/index.html | 68 - .../source.view/index.html | 45 - .../2-tree-with-multiline-nodes/task.md | 18 - .../nav-div-wrong/arrow-left.jpg | Bin 1908 -> 0 bytes .../nav-div-wrong/arrow-right.jpg | Bin 1896 -> 0 bytes .../3-paginator-css/nav-div-wrong/index.html | 44 - .../4-float/3-paginator-css/solution.md | 101 - .../3-paginator-css/solution.view/index.html | 63 - .../3-paginator-css/source.view/index.html | 41 - 8-css-for-js/4-float/3-paginator-css/task.md | 17 - .../4-add-border-keep-width/solution.md | 41 - .../4-float/4-add-border-keep-width/task.md | 36 - 8-css-for-js/4-float/article.md | 439 --- 8-css-for-js/4-float/float-small-margin.png | Bin 46260 -> 0 bytes .../4-float/gallery-float.view/index.html | 71 - 8-css-for-js/4-float/text.png | Bin 77725 -> 0 bytes .../4-float/two-columns-2.view/index.html | 72 - .../4-float/two-columns.view/index.html | 71 - .../4-float/winnie-block-bg.view/index.html | 36 - .../4-float/winnie-block.view/index.html | 33 - .../4-float/winnie-clear-1.view/index.html | 51 - .../4-float/winnie-clear-2.view/index.html | 52 - .../4-float/winnie-clear-3.view/index.html | 52 - .../4-float/winnie-clear-4.view/index.html | 42 - .../winnie-clearfill-clearfix.view/index.html | 55 - .../winnie-clearfill-div.view/index.html | 44 - .../winnie-clearfill-float.view/index.html | 44 - .../winnie-clearfill-overflow.view/index.html | 44 - .../4-float/winnie-nofloat-1.view/index.html | 29 - .../4-float/winnie-nofloat-2.view/index.html | 29 - .../4-float/winnie-nofloat-3.view/index.html | 28 - .../4-float/winnie-nofloat.view/index.html | 28 - 8-css-for-js/4-float/winnie.view/index.html | 49 - .../5-position/1-modal-window/solution.md | 20 - .../1-modal-window/solution.view/index.html | 53 - .../1-modal-window/source.view/index.html | 47 - .../5-position/1-modal-window/task.md | 17 - 8-css-for-js/5-position/article.md | 374 --- .../position-100-wrong.view/index.html | 21 - .../1-center-ball-css/solution.md | 13 - .../solution.view/index.html | 34 - .../1-center-ball-css/source.view/index.html | 30 - .../6-css-center/1-center-ball-css/task.md | 20 - .../6-css-center/2-form-modal/solution.md | 11 - .../2-form-modal/solution.view/index.html | 94 - .../2-form-modal/source.view/index.html | 21 - .../6-css-center/2-form-modal/task.md | 23 - .../solution.md | 29 - .../task.md | 28 - 8-css-for-js/6-css-center/article.md | 412 --- .../vertical-align.view/index.html | 23 - .../7-font-size-line-height/article.md | 127 - 8-css-for-js/8-white-space/article.md | 124 - 8-css-for-js/9-outline/article.md | 45 - 8-css-for-js/index.md | 2 - 9-tools/1-tools-browser-extensions/article.md | 129 - .../1-tools-browser-extensions/dnsflusher.png | Bin 838 -> 0 bytes .../downloadhelper.jpg | Bin 104963 -> 0 bytes .../1-tools-browser-extensions/jsonview.png | Bin 4660 -> 0 bytes .../pageinsight.png | Bin 16574 -> 0 bytes .../webdeveloper.png | Bin 6700 -> 0 bytes 9-tools/2-fiddler/article.md | 99 - 9-tools/2-fiddler/fiddler-hook.png | Bin 2350 -> 0 bytes 9-tools/2-fiddler/fiddler.png | Bin 19388 -> 0 bytes 9-tools/3-ie-http-analyzer/article.md | 43 - .../3-ie-http-analyzer/ie-http-analyzer-2.gif | Bin 99077 -> 0 bytes .../3-ie-http-analyzer/ie-http-analyzer-3.gif | Bin 157 -> 0 bytes .../3-ie-http-analyzer/ie-http-analyzer.gif | Bin 29433 -> 0 bytes 9-tools/index.md | 2 - README.md | 37 +- archive/1-class-property/article.md | 104 - archive/2-request-with-auth/solution.md | 1 - archive/2-request-with-auth/task.md | 15 - .../3-jquery-stub/1-jquery-intro/article.md | 47 - .../3-jquery-stub/2-jquery-search/article.md | 295 -- .../1-select-parents-with-self/solution.md | 6 - .../1-select-parents-with-self/task.md | 21 - .../3-jquery-traversal/article.md | 461 --- archive/3-jquery-stub/4-jquery-dom/article.md | 46 - .../1-rewrite-with-jquery/solution.md | 0 .../solution.view/bagua.css | 55 - .../solution.view/index.html | 83 - .../source.view/bagua.css | 55 - .../source.view/index.html | 96 - .../1-rewrite-with-jquery/task.md | 6 - .../5-jquery-stub-article/article.md | 3 - archive/3-jquery-stub/index.md | 3 - archive/3-reflow/article.md | 4 - archive/3-reflow/reflow.view/index.html | 494 --- archive/4-script-place-optimize/article.md | 64 - archive/menu.html | 76 - archive/upload-2way.view/index.html | 48 - archive/upload-2way.view/server.js | 110 - archive/upload-2way.view/uploader.js | 84 - .../widget-tasks/1-date-selector/solution.md | 0 .../solution.view/dateselector.js | 104 - .../1-date-selector/solution.view/index.html | 60 - .../source.view/dateselector.js | 12 - .../1-date-selector/source.view/index.html | 40 - archive/widget-tasks/1-date-selector/task.md | 46 - .../1-tooltip-over-element/solution.md | 81 - .../solution.view/index.html | 112 - .../source.view/index.html | 51 - .../1-tooltip-over-element/task.md | 32 - .../tooltip-fixed-center.png | Bin 1880 -> 0 bytes .../tooltip-fixed-center2.png | Bin 2087 -> 0 bytes .../2-draggable-windows/index.html | 47 - .../2-draggable-windows/solution.md | 10 - .../solution.view/draggableWindow.js | 127 - .../solution.view/index.html | 47 - .../solution.view/window.css | 52 - .../source.view/index.html | 52 - .../widget-tasks/2-draggable-windows/task.md | 25 - .../widget-tasks/2-moving-tooltip/solution.md | 31 - .../2-moving-tooltip/solution.view/index.html | 142 - .../2-moving-tooltip/source.view/index.html | 56 - archive/widget-tasks/2-moving-tooltip/task.md | 34 - archive/widget-tasks/3-resize-img/solution.md | 75 - .../3-resize-img/solution.view/index.html | 158 - .../3-resize-img/source.view/index.html | 32 - archive/widget-tasks/3-resize-img/task.md | 28 - .../widget-tasks/3-window-manager/solution.md | 1 - .../solution.view/draggableWindow.js | 145 - .../3-window-manager/solution.view/index.html | 51 - .../3-window-manager/solution.view/window.css | 52 - .../solution.view/windowManager.js | 52 - archive/widget-tasks/3-window-manager/task.md | 35 - .../4-double-calendar-with-arrows/solution.md | 3 - .../solution.view/calendar.css | 28 - .../solution.view/calendar.js | 161 - .../solution.view/datepicker.css | 41 - .../solution.view/datepicker.js | 133 - .../solution.view/index.html | 55 - .../source.view/calendar.css | 28 - .../source.view/calendar.js | 161 - .../source.view/datepicker.css | 1 - .../source.view/datepicker.js | 8 - .../source.view/index.html | 43 - .../4-double-calendar-with-arrows/task.md | 47 - .../4-img-select-mouse/solution.md | 21 - .../solution.view/index.html | 138 - .../4-img-select-mouse/source.view/index.html | 36 - .../widget-tasks/4-img-select-mouse/task.md | 31 - .../widget-tasks/5-menu-animated/solution.md | 0 .../5-menu-animated/solution.view/index.html | 115 - .../5-menu-animated/source.view/index.html | 76 - archive/widget-tasks/5-menu-animated/task.md | 25 - .../5-tree-checkboxes/solution.md | 75 - .../5-tree-checkboxes/solution.view/fetch.js | 25 - .../solution.view/index.html | 71 - .../solution.view/regions.js | 2365 --------------- .../5-tree-checkboxes/solution.view/tree.css | 36 - .../5-tree-checkboxes/solution.view/tree.js | 73 - .../5-tree-checkboxes/source.view/index.html | 2656 ----------------- .../widget-tasks/5-tree-checkboxes/task.md | 33 - archive/widget-tasks/7-calendar/solution.md | 0 .../7-calendar/solution.view/calendar.css | 28 - .../7-calendar/solution.view/calendar.js | 156 - .../7-calendar/solution.view/index.html | 37 - .../7-calendar/source.view/calendar-table.js | 58 - .../7-calendar/source.view/calendar.css | 28 - .../7-calendar/source.view/calendar.js | 10 - .../7-calendar/source.view/index.html | 37 - archive/widget-tasks/7-calendar/task.md | 46 - .../widget-tasks/8-autocomplete/solution.md | 0 .../solution.view/autocomplete-list.js | 62 - .../solution.view/autocomplete.css | 45 - .../solution.view/autocomplete.js | 104 - .../solution.view/filtering-list-provider.js | 20 - .../8-autocomplete/solution.view/index.html | 47 - archive/widget-tasks/8-autocomplete/task.md | 36 - .../9-hover-menu-onclick/solution.md | 0 .../solution.view/hoverintent.js | 62 - .../solution.view/index.html | 61 - .../solution.view/menu.css | 52 - .../solution.view/menu.js | 131 - .../widget-tasks/9-hover-menu-onclick/task.md | 12 - archive/widget-tasks/article.md | 2 - changes.sketch | Bin 2342912 -> 0 bytes figures.sketch | Bin 10960896 -> 0 bytes index.md | 2 - script/clean-unused-png.php | 22 - 2035 files changed, 4 insertions(+), 106676 deletions(-) delete mode 100644 1-js/1-getting-started/1-intro/article.md delete mode 100644 1-js/1-getting-started/1-intro/limitations.png delete mode 100644 1-js/1-getting-started/1-intro/limitations@2x.png delete mode 100644 1-js/1-getting-started/2-pre-coding/article.md delete mode 100644 1-js/1-getting-started/3-editor/article.md delete mode 100644 1-js/1-getting-started/4-devtools/article.md delete mode 100755 1-js/1-getting-started/4-devtools/bug.html delete mode 100644 1-js/1-getting-started/4-devtools/chrome.png delete mode 100755 1-js/1-getting-started/4-devtools/chrome@2x.png delete mode 100755 1-js/1-getting-started/4-devtools/firebug-gray.png delete mode 100644 1-js/1-getting-started/4-devtools/firefox.png delete mode 100755 1-js/1-getting-started/4-devtools/firefox@2x.png delete mode 100644 1-js/1-getting-started/4-devtools/firefox_console_down.png delete mode 100755 1-js/1-getting-started/4-devtools/firefox_console_down@2x.png delete mode 100644 1-js/1-getting-started/4-devtools/firefox_console_enable.png delete mode 100755 1-js/1-getting-started/4-devtools/firefox_console_enable@2x.png delete mode 100755 1-js/1-getting-started/4-devtools/safari.png delete mode 100644 1-js/1-getting-started/index.md delete mode 100644 1-js/10-es-modern/1-es-modern-usage/article.md delete mode 100644 1-js/10-es-modern/10-set-map/article.md delete mode 100644 1-js/10-es-modern/11-promise/1-promise-settimeout/solution.md delete mode 100644 1-js/10-es-modern/11-promise/1-promise-settimeout/task.md delete mode 100644 1-js/10-es-modern/11-promise/2-promise-sequence/solution.md delete mode 100644 1-js/10-es-modern/11-promise/2-promise-sequence/solution.view/guest.json delete mode 100644 1-js/10-es-modern/11-promise/2-promise-sequence/solution.view/httpGet.js delete mode 100644 1-js/10-es-modern/11-promise/2-promise-sequence/solution.view/index.html delete mode 100644 1-js/10-es-modern/11-promise/2-promise-sequence/solution.view/user.json delete mode 100644 1-js/10-es-modern/11-promise/2-promise-sequence/source.view/guest.json delete mode 100644 1-js/10-es-modern/11-promise/2-promise-sequence/source.view/httpGet.js delete mode 100644 1-js/10-es-modern/11-promise/2-promise-sequence/source.view/index.html delete mode 100644 1-js/10-es-modern/11-promise/2-promise-sequence/source.view/user.json delete mode 100644 1-js/10-es-modern/11-promise/2-promise-sequence/task.md delete mode 100644 1-js/10-es-modern/11-promise/anon.png delete mode 100644 1-js/10-es-modern/11-promise/article.md delete mode 100644 1-js/10-es-modern/11-promise/guest.json delete mode 100644 1-js/10-es-modern/11-promise/promiseEcma.png delete mode 100644 1-js/10-es-modern/11-promise/promiseEcma@2x.png delete mode 100644 1-js/10-es-modern/11-promise/promiseHandlerVariants.png delete mode 100644 1-js/10-es-modern/11-promise/promiseHandlerVariants@2x.png delete mode 100644 1-js/10-es-modern/11-promise/promiseInit.png delete mode 100644 1-js/10-es-modern/11-promise/promiseInit@2x.png delete mode 100644 1-js/10-es-modern/11-promise/promiseLoadAvatarChain-1.png delete mode 100644 1-js/10-es-modern/11-promise/promiseLoadAvatarChain-1@2x.png delete mode 100644 1-js/10-es-modern/11-promise/promiseLoadAvatarChain-2.png delete mode 100644 1-js/10-es-modern/11-promise/promiseLoadAvatarChain-2@2x.png delete mode 100644 1-js/10-es-modern/11-promise/promiseLoadAvatarChain-3.png delete mode 100644 1-js/10-es-modern/11-promise/promiseLoadAvatarChain-3@2x.png delete mode 100644 1-js/10-es-modern/11-promise/promiseLoadAvatarChain-4.png delete mode 100644 1-js/10-es-modern/11-promise/promiseLoadAvatarChain-4@2x.png delete mode 100644 1-js/10-es-modern/11-promise/promiseLoadAvatarChain.png delete mode 100644 1-js/10-es-modern/11-promise/promiseLoadAvatarChain@2x.png delete mode 100644 1-js/10-es-modern/11-promise/promiseTwo.png delete mode 100644 1-js/10-es-modern/11-promise/promiseTwo@2x.png delete mode 100644 1-js/10-es-modern/11-promise/promiseTwoThen.png delete mode 100644 1-js/10-es-modern/11-promise/promiseTwoThen@2x.png delete mode 100644 1-js/10-es-modern/11-promise/promiseUserFlow.png delete mode 100644 1-js/10-es-modern/11-promise/promiseUserFlow@2x.png delete mode 100644 1-js/10-es-modern/11-promise/user.json delete mode 100644 1-js/10-es-modern/11-promise/userNoGithub.json delete mode 100644 1-js/10-es-modern/12-generator/anon.png delete mode 100644 1-js/10-es-modern/12-generator/article.md delete mode 100644 1-js/10-es-modern/12-generator/genYield2-2.png delete mode 100644 1-js/10-es-modern/12-generator/genYield2-2@2x.png delete mode 100644 1-js/10-es-modern/12-generator/genYield2-3.png delete mode 100644 1-js/10-es-modern/12-generator/genYield2-3@2x.png delete mode 100644 1-js/10-es-modern/12-generator/genYield2.png delete mode 100644 1-js/10-es-modern/12-generator/genYield2@2x.png delete mode 100644 1-js/10-es-modern/12-generator/generateSequence-1.png delete mode 100644 1-js/10-es-modern/12-generator/generateSequence-1@2x.png delete mode 100644 1-js/10-es-modern/12-generator/generateSequence-2.png delete mode 100644 1-js/10-es-modern/12-generator/generateSequence-2@2x.png delete mode 100644 1-js/10-es-modern/12-generator/generateSequence-3.png delete mode 100644 1-js/10-es-modern/12-generator/generateSequence-3@2x.png delete mode 100644 1-js/10-es-modern/12-generator/generateSequence-4.png delete mode 100644 1-js/10-es-modern/12-generator/generateSequence-4@2x.png delete mode 100644 1-js/10-es-modern/12-generator/user.json delete mode 100644 1-js/10-es-modern/13-modules/article.md delete mode 100644 1-js/10-es-modern/13-modules/nums.view/bundle.js delete mode 100644 1-js/10-es-modern/13-modules/nums.view/index.html delete mode 100644 1-js/10-es-modern/13-modules/nums.view/main.js delete mode 100644 1-js/10-es-modern/13-modules/nums.view/nums.js delete mode 100644 1-js/10-es-modern/13-modules/nums.view/webpack.config.js delete mode 100644 1-js/10-es-modern/14-proxy/article.md delete mode 100644 1-js/10-es-modern/2-let-const/article.md delete mode 100644 1-js/10-es-modern/3-destructuring/article.md delete mode 100644 1-js/10-es-modern/4-es-function/article.md delete mode 100644 1-js/10-es-modern/5-es-string/article.md delete mode 100644 1-js/10-es-modern/6-es-object/article.md delete mode 100644 1-js/10-es-modern/7-es-class/article.md delete mode 100644 1-js/10-es-modern/8-symbol/article.md delete mode 100644 1-js/10-es-modern/9-iterator/article.md delete mode 100644 1-js/10-es-modern/index.md delete mode 100644 1-js/2-first-steps/1-hello-world/1-hello-alert/solution.md delete mode 100644 1-js/2-first-steps/1-hello-world/1-hello-alert/solution.view/index.html delete mode 100644 1-js/2-first-steps/1-hello-world/1-hello-alert/task.md delete mode 100644 1-js/2-first-steps/1-hello-world/article.md delete mode 100644 1-js/2-first-steps/10-bitwise-operators/1-bitwise-operator-value/solution.md delete mode 100644 1-js/2-first-steps/10-bitwise-operators/1-bitwise-operator-value/task.md delete mode 100644 1-js/2-first-steps/10-bitwise-operators/2-check-integer/solution.md delete mode 100644 1-js/2-first-steps/10-bitwise-operators/2-check-integer/task.md delete mode 100644 1-js/2-first-steps/10-bitwise-operators/3-bitwise-symmetry/solution.md delete mode 100644 1-js/2-first-steps/10-bitwise-operators/3-bitwise-symmetry/task.md delete mode 100644 1-js/2-first-steps/10-bitwise-operators/4-bit-rounding/solution.md delete mode 100644 1-js/2-first-steps/10-bitwise-operators/4-bit-rounding/task.md delete mode 100644 1-js/2-first-steps/10-bitwise-operators/article.md delete mode 100644 1-js/2-first-steps/11-uibasic/1-simple-page/solution.md delete mode 100644 1-js/2-first-steps/11-uibasic/1-simple-page/task.md delete mode 100644 1-js/2-first-steps/11-uibasic/article.md delete mode 100644 1-js/2-first-steps/12-ifelse/1-if-zero-string/solution.md delete mode 100644 1-js/2-first-steps/12-ifelse/1-if-zero-string/task.md delete mode 100644 1-js/2-first-steps/12-ifelse/2-check-standard/ifelse_task2.png delete mode 100644 1-js/2-first-steps/12-ifelse/2-check-standard/ifelse_task2/index.html delete mode 100644 1-js/2-first-steps/12-ifelse/2-check-standard/solution.md delete mode 100644 1-js/2-first-steps/12-ifelse/2-check-standard/task.md delete mode 100644 1-js/2-first-steps/12-ifelse/2-check-standardifelse_task2/index.html delete mode 100644 1-js/2-first-steps/12-ifelse/3-sign/if_sign/index.html delete mode 100644 1-js/2-first-steps/12-ifelse/3-sign/solution.md delete mode 100644 1-js/2-first-steps/12-ifelse/3-sign/task.md delete mode 100644 1-js/2-first-steps/12-ifelse/4-check-login/ifelse_task.png delete mode 100644 1-js/2-first-steps/12-ifelse/4-check-login/solution.md delete mode 100644 1-js/2-first-steps/12-ifelse/4-check-login/task.md delete mode 100644 1-js/2-first-steps/12-ifelse/5-rewrite-if-question/solution.md delete mode 100644 1-js/2-first-steps/12-ifelse/5-rewrite-if-question/task.md delete mode 100644 1-js/2-first-steps/12-ifelse/6-rewrite-if-else-question/solution.md delete mode 100644 1-js/2-first-steps/12-ifelse/6-rewrite-if-else-question/task.md delete mode 100644 1-js/2-first-steps/12-ifelse/article.md delete mode 100644 1-js/2-first-steps/13-logical-ops/1-alert-null-2-undefined/solution.md delete mode 100644 1-js/2-first-steps/13-logical-ops/1-alert-null-2-undefined/task.md delete mode 100644 1-js/2-first-steps/13-logical-ops/2-alert-or/solution.md delete mode 100644 1-js/2-first-steps/13-logical-ops/2-alert-or/task.md delete mode 100644 1-js/2-first-steps/13-logical-ops/3-alert-1-null-2/solution.md delete mode 100644 1-js/2-first-steps/13-logical-ops/3-alert-1-null-2/task.md delete mode 100644 1-js/2-first-steps/13-logical-ops/4-alert-and/solution.md delete mode 100644 1-js/2-first-steps/13-logical-ops/4-alert-and/task.md delete mode 100644 1-js/2-first-steps/13-logical-ops/5-alert-and-or/solution.md delete mode 100644 1-js/2-first-steps/13-logical-ops/5-alert-and-or/task.md delete mode 100644 1-js/2-first-steps/13-logical-ops/6-check-if-in-range/solution.md delete mode 100644 1-js/2-first-steps/13-logical-ops/6-check-if-in-range/task.md delete mode 100644 1-js/2-first-steps/13-logical-ops/7-check-if-out-range/solution.md delete mode 100644 1-js/2-first-steps/13-logical-ops/7-check-if-out-range/task.md delete mode 100644 1-js/2-first-steps/13-logical-ops/8-if-question/solution.md delete mode 100644 1-js/2-first-steps/13-logical-ops/8-if-question/task.md delete mode 100644 1-js/2-first-steps/13-logical-ops/article.md delete mode 100644 1-js/2-first-steps/14-types-conversion/1-primitive-conversions-questions/solution.md delete mode 100644 1-js/2-first-steps/14-types-conversion/1-primitive-conversions-questions/task.md delete mode 100644 1-js/2-first-steps/14-types-conversion/article.md delete mode 100644 1-js/2-first-steps/15-while-for/1-loop-last-value/solution.md delete mode 100644 1-js/2-first-steps/15-while-for/1-loop-last-value/task.md delete mode 100644 1-js/2-first-steps/15-while-for/2-which-value-while/solution.md delete mode 100644 1-js/2-first-steps/15-while-for/2-which-value-while/task.md delete mode 100644 1-js/2-first-steps/15-while-for/3-which-value-for/solution.md delete mode 100644 1-js/2-first-steps/15-while-for/3-which-value-for/task.md delete mode 100644 1-js/2-first-steps/15-while-for/4-for-even/solution.md delete mode 100644 1-js/2-first-steps/15-while-for/4-for-even/task.md delete mode 100644 1-js/2-first-steps/15-while-for/5-replace-for-while/solution.md delete mode 100644 1-js/2-first-steps/15-while-for/5-replace-for-while/task.md delete mode 100644 1-js/2-first-steps/15-while-for/6-repeat-until-correct/solution.md delete mode 100644 1-js/2-first-steps/15-while-for/6-repeat-until-correct/task.md delete mode 100644 1-js/2-first-steps/15-while-for/7-list-primes/solution.md delete mode 100644 1-js/2-first-steps/15-while-for/7-list-primes/task.md delete mode 100644 1-js/2-first-steps/15-while-for/article.md delete mode 100644 1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/solution.md delete mode 100644 1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/task.md delete mode 100644 1-js/2-first-steps/16-switch/2-rewrite-if-switch/solution.md delete mode 100644 1-js/2-first-steps/16-switch/2-rewrite-if-switch/task.md delete mode 100644 1-js/2-first-steps/16-switch/article.md delete mode 100644 1-js/2-first-steps/17-function-basics/1-if-else-required/solution.md delete mode 100644 1-js/2-first-steps/17-function-basics/1-if-else-required/task.md delete mode 100644 1-js/2-first-steps/17-function-basics/2-rewrite-function-question-or/solution.md delete mode 100644 1-js/2-first-steps/17-function-basics/2-rewrite-function-question-or/task.md delete mode 100644 1-js/2-first-steps/17-function-basics/3-min/solution.md delete mode 100644 1-js/2-first-steps/17-function-basics/3-min/task.md delete mode 100644 1-js/2-first-steps/17-function-basics/4-pow/solution.md delete mode 100644 1-js/2-first-steps/17-function-basics/4-pow/task.md delete mode 100644 1-js/2-first-steps/17-function-basics/article.md delete mode 100644 1-js/2-first-steps/18-function-declaration-expression/article.md delete mode 100644 1-js/2-first-steps/19-recursion/1-sum-to/solution.md delete mode 100644 1-js/2-first-steps/19-recursion/1-sum-to/task.md delete mode 100644 1-js/2-first-steps/19-recursion/2-factorial/solution.md delete mode 100644 1-js/2-first-steps/19-recursion/2-factorial/task.md delete mode 100644 1-js/2-first-steps/19-recursion/3-fibonacci-numbers/solution.md delete mode 100644 1-js/2-first-steps/19-recursion/3-fibonacci-numbers/task.md delete mode 100644 1-js/2-first-steps/19-recursion/article.md delete mode 100644 1-js/2-first-steps/2-external-script/1-hello-alert-ext/alert.js delete mode 100644 1-js/2-first-steps/2-external-script/1-hello-alert-ext/index.html delete mode 100644 1-js/2-first-steps/2-external-script/1-hello-alert-ext/solution.md delete mode 100644 1-js/2-first-steps/2-external-script/1-hello-alert-ext/task.md delete mode 100644 1-js/2-first-steps/2-external-script/2-async-defer-first/solution.md delete mode 100644 1-js/2-first-steps/2-external-script/2-async-defer-first/task.md delete mode 100644 1-js/2-first-steps/2-external-script/article.md delete mode 100644 1-js/2-first-steps/20-named-function-expression/1-nfe-check/solution.md delete mode 100644 1-js/2-first-steps/20-named-function-expression/1-nfe-check/task.md delete mode 100644 1-js/2-first-steps/20-named-function-expression/article.md delete mode 100644 1-js/2-first-steps/21-javascript-specials/article.md delete mode 100644 1-js/2-first-steps/3-structure/article.md delete mode 100644 1-js/2-first-steps/4-strict-mode/article.md delete mode 100644 1-js/2-first-steps/5-variables/1-hello-variables/solution.md delete mode 100644 1-js/2-first-steps/5-variables/1-hello-variables/task.md delete mode 100644 1-js/2-first-steps/5-variables/article.md delete mode 100644 1-js/2-first-steps/5-variables/variable-change.png delete mode 100644 1-js/2-first-steps/5-variables/variable-change@2x.png delete mode 100644 1-js/2-first-steps/5-variables/variable.png delete mode 100644 1-js/2-first-steps/5-variables/variable@2x.png delete mode 100644 1-js/2-first-steps/6-variable-names/1-declare-variables/solution.md delete mode 100644 1-js/2-first-steps/6-variable-names/1-declare-variables/task.md delete mode 100644 1-js/2-first-steps/6-variable-names/article.md delete mode 100644 1-js/2-first-steps/7-types-intro/article.md delete mode 100644 1-js/2-first-steps/8-operators/1-increment-order/solution.md delete mode 100644 1-js/2-first-steps/8-operators/1-increment-order/task.md delete mode 100644 1-js/2-first-steps/8-operators/2-assignment-result/solution.md delete mode 100644 1-js/2-first-steps/8-operators/2-assignment-result/task.md delete mode 100644 1-js/2-first-steps/8-operators/article.md delete mode 100644 1-js/2-first-steps/9-comparison/article.md delete mode 100644 1-js/2-first-steps/index.md delete mode 100644 1-js/3-writing-js/1-debugging-chrome/article.md delete mode 100644 1-js/3-writing-js/1-debugging-chrome/chrome_break_error.png delete mode 100755 1-js/3-writing-js/1-debugging-chrome/chrome_break_error@2x.png delete mode 100644 1-js/3-writing-js/1-debugging-chrome/chrome_sources.png delete mode 100755 1-js/3-writing-js/1-debugging-chrome/chrome_sources@2x.png delete mode 100644 1-js/3-writing-js/1-debugging-chrome/chrome_sources_break.png delete mode 100755 1-js/3-writing-js/1-debugging-chrome/chrome_sources_break@2x.png delete mode 100644 1-js/3-writing-js/1-debugging-chrome/chrome_sources_breakpoint.png delete mode 100755 1-js/3-writing-js/1-debugging-chrome/chrome_sources_breakpoint@2x.png delete mode 100644 1-js/3-writing-js/1-debugging-chrome/chrome_sources_buttons.png delete mode 100755 1-js/3-writing-js/1-debugging-chrome/chrome_sources_buttons@2x.png delete mode 100644 1-js/3-writing-js/1-debugging-chrome/console_error.png delete mode 100755 1-js/3-writing-js/1-debugging-chrome/console_error@2x.png delete mode 100755 1-js/3-writing-js/1-debugging-chrome/debugging.view/index.html delete mode 100755 1-js/3-writing-js/1-debugging-chrome/debugging.view/pow.js delete mode 100755 1-js/3-writing-js/1-debugging-chrome/error.view/index.html delete mode 100755 1-js/3-writing-js/1-debugging-chrome/error.view/pow.js delete mode 100644 1-js/3-writing-js/1-debugging-chrome/manage1.png delete mode 100755 1-js/3-writing-js/1-debugging-chrome/manage1@2x.png delete mode 100644 1-js/3-writing-js/1-debugging-chrome/manage2.png delete mode 100755 1-js/3-writing-js/1-debugging-chrome/manage2@2x.png delete mode 100644 1-js/3-writing-js/1-debugging-chrome/manage3.png delete mode 100755 1-js/3-writing-js/1-debugging-chrome/manage3@2x.png delete mode 100644 1-js/3-writing-js/1-debugging-chrome/manage4.png delete mode 100755 1-js/3-writing-js/1-debugging-chrome/manage4@2x.png delete mode 100644 1-js/3-writing-js/1-debugging-chrome/manage5.png delete mode 100755 1-js/3-writing-js/1-debugging-chrome/manage5@2x.png delete mode 100644 1-js/3-writing-js/1-debugging-chrome/manage6.png delete mode 100755 1-js/3-writing-js/1-debugging-chrome/manage6@2x.png delete mode 100644 1-js/3-writing-js/1-debugging-chrome/statusbarButtonGlyphs.svg delete mode 100644 1-js/3-writing-js/2-coding-style/1-style-errors/solution.md delete mode 100644 1-js/3-writing-js/2-coding-style/1-style-errors/task.md delete mode 100644 1-js/3-writing-js/2-coding-style/article.md delete mode 100644 1-js/3-writing-js/2-coding-style/code-style.png delete mode 100644 1-js/3-writing-js/2-coding-style/code-style@2x.png delete mode 100644 1-js/3-writing-js/2-coding-style/figure-bracket-style.png delete mode 100644 1-js/3-writing-js/2-coding-style/figure-bracket-style@2x.png delete mode 100644 1-js/3-writing-js/3-write-unmain-code/article.md delete mode 100644 1-js/3-writing-js/4-testing/1-pow-nan-spec/_js.view/solution.js delete mode 100644 1-js/3-writing-js/4-testing/1-pow-nan-spec/_js.view/source.js delete mode 100644 1-js/3-writing-js/4-testing/1-pow-nan-spec/_js.view/test.js delete mode 100644 1-js/3-writing-js/4-testing/1-pow-nan-spec/solution.md delete mode 100644 1-js/3-writing-js/4-testing/1-pow-nan-spec/task.md delete mode 100644 1-js/3-writing-js/4-testing/2-pow-test-0/solution.md delete mode 100644 1-js/3-writing-js/4-testing/2-pow-test-0/solution.view/index.html delete mode 100644 1-js/3-writing-js/4-testing/2-pow-test-0/solution.view/test.js delete mode 100644 1-js/3-writing-js/4-testing/2-pow-test-0/source.view/index.html delete mode 100644 1-js/3-writing-js/4-testing/2-pow-test-0/source.view/test.js delete mode 100644 1-js/3-writing-js/4-testing/2-pow-test-0/task.md delete mode 100644 1-js/3-writing-js/4-testing/3-pow-test-wrong/solution.md delete mode 100644 1-js/3-writing-js/4-testing/3-pow-test-wrong/task.md delete mode 100644 1-js/3-writing-js/4-testing/article.md delete mode 100755 1-js/3-writing-js/4-testing/beforeafter.view/index.html delete mode 100755 1-js/3-writing-js/4-testing/beforeafter.view/test.js delete mode 100755 1-js/3-writing-js/4-testing/index.html delete mode 100755 1-js/3-writing-js/4-testing/pow-1.view/index.html delete mode 100755 1-js/3-writing-js/4-testing/pow-1.view/test.js delete mode 100755 1-js/3-writing-js/4-testing/pow-2.view/index.html delete mode 100755 1-js/3-writing-js/4-testing/pow-2.view/test.js delete mode 100755 1-js/3-writing-js/4-testing/pow-3.view/index.html delete mode 100755 1-js/3-writing-js/4-testing/pow-3.view/test.js delete mode 100755 1-js/3-writing-js/4-testing/pow-4.view/index.html delete mode 100755 1-js/3-writing-js/4-testing/pow-4.view/test.js delete mode 100755 1-js/3-writing-js/4-testing/pow-full.view/index.html delete mode 100755 1-js/3-writing-js/4-testing/pow-full.view/test.js delete mode 100755 1-js/3-writing-js/4-testing/pow-min.view/index.html delete mode 100755 1-js/3-writing-js/4-testing/pow-min.view/test.js delete mode 100755 1-js/3-writing-js/4-testing/pow-nan-assert.view/index.html delete mode 100755 1-js/3-writing-js/4-testing/pow-nan-assert.view/test.js delete mode 100755 1-js/3-writing-js/4-testing/pow-nan.view/index.html delete mode 100755 1-js/3-writing-js/4-testing/pow-nan.view/test.js delete mode 100644 1-js/3-writing-js/index.md delete mode 100644 1-js/4-data-structures/1-properties-and-methods/article.md delete mode 100644 1-js/4-data-structures/10-arguments-pseudoarray/1-check-arguments-undefined/solution.md delete mode 100644 1-js/4-data-structures/10-arguments-pseudoarray/1-check-arguments-undefined/task.md delete mode 100644 1-js/4-data-structures/10-arguments-pseudoarray/2-sum-arguments/solution.md delete mode 100644 1-js/4-data-structures/10-arguments-pseudoarray/2-sum-arguments/task.md delete mode 100644 1-js/4-data-structures/10-arguments-pseudoarray/article.md delete mode 100644 1-js/4-data-structures/11-datetime/1-new-date/solution.md delete mode 100644 1-js/4-data-structures/11-datetime/1-new-date/task.md delete mode 100644 1-js/4-data-structures/11-datetime/2-get-week-day/_js.view/solution.js delete mode 100644 1-js/4-data-structures/11-datetime/2-get-week-day/_js.view/test.js delete mode 100644 1-js/4-data-structures/11-datetime/2-get-week-day/solution.md delete mode 100644 1-js/4-data-structures/11-datetime/2-get-week-day/task.md delete mode 100644 1-js/4-data-structures/11-datetime/3-weekday/_js.view/solution.js delete mode 100644 1-js/4-data-structures/11-datetime/3-weekday/_js.view/test.js delete mode 100644 1-js/4-data-structures/11-datetime/3-weekday/solution.md delete mode 100644 1-js/4-data-structures/11-datetime/3-weekday/task.md delete mode 100644 1-js/4-data-structures/11-datetime/4-get-date-ago/_js.view/solution.js delete mode 100644 1-js/4-data-structures/11-datetime/4-get-date-ago/_js.view/test.js delete mode 100644 1-js/4-data-structures/11-datetime/4-get-date-ago/solution.md delete mode 100644 1-js/4-data-structures/11-datetime/4-get-date-ago/task.md delete mode 100644 1-js/4-data-structures/11-datetime/5-last-day-of-month/_js.view/solution.js delete mode 100644 1-js/4-data-structures/11-datetime/5-last-day-of-month/_js.view/test.js delete mode 100644 1-js/4-data-structures/11-datetime/5-last-day-of-month/solution.md delete mode 100644 1-js/4-data-structures/11-datetime/5-last-day-of-month/task.md delete mode 100644 1-js/4-data-structures/11-datetime/6-get-seconds-today/solution.md delete mode 100644 1-js/4-data-structures/11-datetime/6-get-seconds-today/task.md delete mode 100644 1-js/4-data-structures/11-datetime/7-get-seconds-to-tomorrow/solution.md delete mode 100644 1-js/4-data-structures/11-datetime/7-get-seconds-to-tomorrow/task.md delete mode 100644 1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/_js.view/solution.js delete mode 100644 1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/_js.view/test.js delete mode 100644 1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/solution.md delete mode 100644 1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/task.md delete mode 100644 1-js/4-data-structures/11-datetime/9-format-date-relative/_js.view/solution.js delete mode 100644 1-js/4-data-structures/11-datetime/9-format-date-relative/_js.view/test.js delete mode 100644 1-js/4-data-structures/11-datetime/9-format-date-relative/solution.md delete mode 100644 1-js/4-data-structures/11-datetime/9-format-date-relative/task.md delete mode 100644 1-js/4-data-structures/11-datetime/article.md delete mode 100644 1-js/4-data-structures/2-number/1-sum-interface/solution.md delete mode 100644 1-js/4-data-structures/2-number/1-sum-interface/task.md delete mode 100644 1-js/4-data-structures/2-number/2-why-rounded-down/solution.md delete mode 100644 1-js/4-data-structures/2-number/2-why-rounded-down/task.md delete mode 100644 1-js/4-data-structures/2-number/3-sum-prices/solution.md delete mode 100644 1-js/4-data-structures/2-number/3-sum-prices/task.md delete mode 100644 1-js/4-data-structures/2-number/4-endless-loop-error/solution.md delete mode 100644 1-js/4-data-structures/2-number/4-endless-loop-error/task.md delete mode 100644 1-js/4-data-structures/2-number/5-get-decimal/_js.view/solution.js delete mode 100644 1-js/4-data-structures/2-number/5-get-decimal/_js.view/test.js delete mode 100644 1-js/4-data-structures/2-number/5-get-decimal/solution.md delete mode 100644 1-js/4-data-structures/2-number/5-get-decimal/task.md delete mode 100644 1-js/4-data-structures/2-number/6-formula-binet/solution.md delete mode 100644 1-js/4-data-structures/2-number/6-formula-binet/task.md delete mode 100644 1-js/4-data-structures/2-number/7-random-0-max/solution.md delete mode 100644 1-js/4-data-structures/2-number/7-random-0-max/task.md delete mode 100644 1-js/4-data-structures/2-number/8-random-min-max/solution.md delete mode 100644 1-js/4-data-structures/2-number/8-random-min-max/task.md delete mode 100644 1-js/4-data-structures/2-number/9-random-int-min-max/solution.md delete mode 100644 1-js/4-data-structures/2-number/9-random-int-min-max/task.md delete mode 100644 1-js/4-data-structures/2-number/article.md delete mode 100644 1-js/4-data-structures/3-string/1-ucfirst/_js.view/solution.js delete mode 100644 1-js/4-data-structures/3-string/1-ucfirst/_js.view/test.js delete mode 100644 1-js/4-data-structures/3-string/1-ucfirst/solution.md delete mode 100644 1-js/4-data-structures/3-string/1-ucfirst/task.md delete mode 100644 1-js/4-data-structures/3-string/2-check-spam/_js.view/solution.js delete mode 100644 1-js/4-data-structures/3-string/2-check-spam/_js.view/test.js delete mode 100644 1-js/4-data-structures/3-string/2-check-spam/solution.md delete mode 100644 1-js/4-data-structures/3-string/2-check-spam/task.md delete mode 100644 1-js/4-data-structures/3-string/3-truncate/_js.view/solution.js delete mode 100644 1-js/4-data-structures/3-string/3-truncate/_js.view/test.js delete mode 100644 1-js/4-data-structures/3-string/3-truncate/solution.md delete mode 100644 1-js/4-data-structures/3-string/3-truncate/task.md delete mode 100644 1-js/4-data-structures/3-string/4-extract-currency/_js.view/solution.js delete mode 100644 1-js/4-data-structures/3-string/4-extract-currency/_js.view/test.js delete mode 100644 1-js/4-data-structures/3-string/4-extract-currency/solution.md delete mode 100644 1-js/4-data-structures/3-string/4-extract-currency/task.md delete mode 100644 1-js/4-data-structures/3-string/article.md delete mode 100644 1-js/4-data-structures/4-object/1-hello-object/solution.md delete mode 100644 1-js/4-data-structures/4-object/1-hello-object/task.md delete mode 100644 1-js/4-data-structures/4-object/article.md delete mode 100644 1-js/4-data-structures/4-object/object-person-1.png delete mode 100644 1-js/4-data-structures/4-object/object-person-1@2x.png delete mode 100644 1-js/4-data-structures/4-object/object-person-2.png delete mode 100644 1-js/4-data-structures/4-object/object-person-2@2x.png delete mode 100644 1-js/4-data-structures/4-object/object-person-empty.png delete mode 100644 1-js/4-data-structures/4-object/object-person-empty@2x.png delete mode 100644 1-js/4-data-structures/4-object/object.png delete mode 100644 1-js/4-data-structures/4-object/object@2x.png delete mode 100644 1-js/4-data-structures/5-object-for-in/1-is-empty/_js.view/solution.js delete mode 100644 1-js/4-data-structures/5-object-for-in/1-is-empty/_js.view/test.js delete mode 100644 1-js/4-data-structures/5-object-for-in/1-is-empty/solution.md delete mode 100644 1-js/4-data-structures/5-object-for-in/1-is-empty/task.md delete mode 100644 1-js/4-data-structures/5-object-for-in/2-sum-salaries/solution.md delete mode 100644 1-js/4-data-structures/5-object-for-in/2-sum-salaries/task.md delete mode 100644 1-js/4-data-structures/5-object-for-in/3-max-salary/solution.md delete mode 100644 1-js/4-data-structures/5-object-for-in/3-max-salary/task.md delete mode 100644 1-js/4-data-structures/5-object-for-in/4-multiply-numeric/_js.view/solution.js delete mode 100644 1-js/4-data-structures/5-object-for-in/4-multiply-numeric/_js.view/source.js delete mode 100644 1-js/4-data-structures/5-object-for-in/4-multiply-numeric/_js.view/test.js delete mode 100644 1-js/4-data-structures/5-object-for-in/4-multiply-numeric/solution.md delete mode 100644 1-js/4-data-structures/5-object-for-in/4-multiply-numeric/task.md delete mode 100644 1-js/4-data-structures/5-object-for-in/article.md delete mode 100644 1-js/4-data-structures/6-object-reference/article.md delete mode 100644 1-js/4-data-structures/6-object-reference/object-reference-console.png delete mode 100644 1-js/4-data-structures/6-object-reference/object-reference-console@2x.png delete mode 100644 1-js/4-data-structures/6-object-reference/variable-contains-reference.png delete mode 100644 1-js/4-data-structures/6-object-reference/variable-contains-reference@2x.png delete mode 100644 1-js/4-data-structures/6-object-reference/variable-copy-reference.png delete mode 100644 1-js/4-data-structures/6-object-reference/variable-copy-reference@2x.png delete mode 100644 1-js/4-data-structures/6-object-reference/variable-copy-value.png delete mode 100644 1-js/4-data-structures/6-object-reference/variable-copy-value@2x.png delete mode 100644 1-js/4-data-structures/7-array/1-get-last-in-array/solution.md delete mode 100644 1-js/4-data-structures/7-array/1-get-last-in-array/task.md delete mode 100644 1-js/4-data-structures/7-array/10-maximal-subarray/_js.view/solution.js delete mode 100644 1-js/4-data-structures/7-array/10-maximal-subarray/_js.view/test.js delete mode 100644 1-js/4-data-structures/7-array/10-maximal-subarray/solution.md delete mode 100644 1-js/4-data-structures/7-array/10-maximal-subarray/task.md delete mode 100644 1-js/4-data-structures/7-array/2-add-item-to-array/solution.md delete mode 100644 1-js/4-data-structures/7-array/2-add-item-to-array/task.md delete mode 100644 1-js/4-data-structures/7-array/3-create-array/solution.md delete mode 100644 1-js/4-data-structures/7-array/3-create-array/task.md delete mode 100644 1-js/4-data-structures/7-array/4-random-from-array/solution.md delete mode 100644 1-js/4-data-structures/7-array/4-random-from-array/task.md delete mode 100644 1-js/4-data-structures/7-array/5-calculator-for-input/solution.md delete mode 100644 1-js/4-data-structures/7-array/5-calculator-for-input/task.md delete mode 100644 1-js/4-data-structures/7-array/6-item-value/solution.md delete mode 100644 1-js/4-data-structures/7-array/6-item-value/task.md delete mode 100644 1-js/4-data-structures/7-array/7-array-find/_js.view/solution.js delete mode 100644 1-js/4-data-structures/7-array/7-array-find/_js.view/test.js delete mode 100644 1-js/4-data-structures/7-array/7-array-find/solution.md delete mode 100644 1-js/4-data-structures/7-array/7-array-find/task.md delete mode 100644 1-js/4-data-structures/7-array/8-filter-range/_js.view/solution.js delete mode 100644 1-js/4-data-structures/7-array/8-filter-range/_js.view/test.js delete mode 100644 1-js/4-data-structures/7-array/8-filter-range/solution.md delete mode 100644 1-js/4-data-structures/7-array/8-filter-range/task.md delete mode 100644 1-js/4-data-structures/7-array/9-eratosthenes-sieve/sieve.gif delete mode 100644 1-js/4-data-structures/7-array/9-eratosthenes-sieve/solution.md delete mode 100644 1-js/4-data-structures/7-array/9-eratosthenes-sieve/task.md delete mode 100644 1-js/4-data-structures/7-array/array-pop.png delete mode 100644 1-js/4-data-structures/7-array/array-pop@2x.png delete mode 100644 1-js/4-data-structures/7-array/array-shift.png delete mode 100644 1-js/4-data-structures/7-array/array-shift@2x.png delete mode 100644 1-js/4-data-structures/7-array/array-speed.png delete mode 100644 1-js/4-data-structures/7-array/array-speed@2x.png delete mode 100644 1-js/4-data-structures/7-array/article.md delete mode 100644 1-js/4-data-structures/7-array/queue.png delete mode 100644 1-js/4-data-structures/7-array/queue@2x.png delete mode 100644 1-js/4-data-structures/7-array/stack.png delete mode 100644 1-js/4-data-structures/7-array/stack@2x.png delete mode 100644 1-js/4-data-structures/8-array-methods/1-add-class/_js.view/solution.js delete mode 100644 1-js/4-data-structures/8-array-methods/1-add-class/_js.view/test.js delete mode 100644 1-js/4-data-structures/8-array-methods/1-add-class/solution.md delete mode 100644 1-js/4-data-structures/8-array-methods/1-add-class/task.md delete mode 100644 1-js/4-data-structures/8-array-methods/10-filter-anagrams/_js.view/solution.js delete mode 100644 1-js/4-data-structures/8-array-methods/10-filter-anagrams/_js.view/test.js delete mode 100644 1-js/4-data-structures/8-array-methods/10-filter-anagrams/solution.md delete mode 100644 1-js/4-data-structures/8-array-methods/10-filter-anagrams/task.md delete mode 100644 1-js/4-data-structures/8-array-methods/11-array-unique/_js.view/solution.js delete mode 100644 1-js/4-data-structures/8-array-methods/11-array-unique/_js.view/test.js delete mode 100644 1-js/4-data-structures/8-array-methods/11-array-unique/solution.md delete mode 100644 1-js/4-data-structures/8-array-methods/11-array-unique/task.md delete mode 100644 1-js/4-data-structures/8-array-methods/2-camelcase/_js.view/solution.js delete mode 100644 1-js/4-data-structures/8-array-methods/2-camelcase/_js.view/test.js delete mode 100644 1-js/4-data-structures/8-array-methods/2-camelcase/solution.md delete mode 100644 1-js/4-data-structures/8-array-methods/2-camelcase/task.md delete mode 100644 1-js/4-data-structures/8-array-methods/3-remove-class/_js.view/solution.js delete mode 100644 1-js/4-data-structures/8-array-methods/3-remove-class/_js.view/test.js delete mode 100644 1-js/4-data-structures/8-array-methods/3-remove-class/solution.md delete mode 100644 1-js/4-data-structures/8-array-methods/3-remove-class/task.md delete mode 100644 1-js/4-data-structures/8-array-methods/4-filter-in-place/_js.view/solution.js delete mode 100644 1-js/4-data-structures/8-array-methods/4-filter-in-place/_js.view/test.js delete mode 100644 1-js/4-data-structures/8-array-methods/4-filter-in-place/solution.md delete mode 100644 1-js/4-data-structures/8-array-methods/4-filter-in-place/task.md delete mode 100644 1-js/4-data-structures/8-array-methods/5-sort-back/solution.md delete mode 100644 1-js/4-data-structures/8-array-methods/5-sort-back/task.md delete mode 100644 1-js/4-data-structures/8-array-methods/6-copy-sort-array/solution.md delete mode 100644 1-js/4-data-structures/8-array-methods/6-copy-sort-array/task.md delete mode 100644 1-js/4-data-structures/8-array-methods/7-shuffle-array/solution.md delete mode 100644 1-js/4-data-structures/8-array-methods/7-shuffle-array/task.md delete mode 100644 1-js/4-data-structures/8-array-methods/8-sort-objects/solution.md delete mode 100644 1-js/4-data-structures/8-array-methods/8-sort-objects/task.md delete mode 100644 1-js/4-data-structures/8-array-methods/9-output-single-linked-list/linked-list.png delete mode 100644 1-js/4-data-structures/8-array-methods/9-output-single-linked-list/linked-list@2x.png delete mode 100644 1-js/4-data-structures/8-array-methods/9-output-single-linked-list/solution.md delete mode 100644 1-js/4-data-structures/8-array-methods/9-output-single-linked-list/task.md delete mode 100644 1-js/4-data-structures/8-array-methods/article.md delete mode 100644 1-js/4-data-structures/9-array-iteration/1-rewrite-for-map/solution.md delete mode 100644 1-js/4-data-structures/9-array-iteration/1-rewrite-for-map/task.md delete mode 100644 1-js/4-data-structures/9-array-iteration/2-partial-sums-array/_js.view/solution.js delete mode 100644 1-js/4-data-structures/9-array-iteration/2-partial-sums-array/_js.view/test.js delete mode 100644 1-js/4-data-structures/9-array-iteration/2-partial-sums-array/solution.md delete mode 100644 1-js/4-data-structures/9-array-iteration/2-partial-sums-array/task.md delete mode 100644 1-js/4-data-structures/9-array-iteration/article.md delete mode 100644 1-js/4-data-structures/9-array-iteration/reduce.png delete mode 100644 1-js/4-data-structures/9-array-iteration/reduce@2x.png delete mode 100644 1-js/4-data-structures/index.md delete mode 100644 1-js/5-functions-closures/1-global-object/1-window-and-variable/solution.md delete mode 100644 1-js/5-functions-closures/1-global-object/1-window-and-variable/task.md delete mode 100644 1-js/5-functions-closures/1-global-object/2-window-and-variable-2/solution.md delete mode 100644 1-js/5-functions-closures/1-global-object/2-window-and-variable-2/task.md delete mode 100644 1-js/5-functions-closures/1-global-object/3-window-and-variable-3/solution.md delete mode 100644 1-js/5-functions-closures/1-global-object/3-window-and-variable-3/task.md delete mode 100644 1-js/5-functions-closures/1-global-object/article.md delete mode 100644 1-js/5-functions-closures/2-closures/1-say-phrase-first/solution.md delete mode 100644 1-js/5-functions-closures/2-closures/1-say-phrase-first/task.md delete mode 100644 1-js/5-functions-closures/2-closures/2-which-value-is-modified/solution.md delete mode 100644 1-js/5-functions-closures/2-closures/2-which-value-is-modified/task.md delete mode 100644 1-js/5-functions-closures/2-closures/3-var-window/solution.md delete mode 100644 1-js/5-functions-closures/2-closures/3-var-window/task.md delete mode 100644 1-js/5-functions-closures/2-closures/4-call-inplace/solution.md delete mode 100644 1-js/5-functions-closures/2-closures/4-call-inplace/task.md delete mode 100644 1-js/5-functions-closures/2-closures/5-access-outer-variable/solution.md delete mode 100644 1-js/5-functions-closures/2-closures/5-access-outer-variable/task.md delete mode 100644 1-js/5-functions-closures/2-closures/6-counter-window-variable/solution.md delete mode 100644 1-js/5-functions-closures/2-closures/6-counter-window-variable/task.md delete mode 100755 1-js/5-functions-closures/2-closures/6@2x.png delete mode 100644 1-js/5-functions-closures/2-closures/article.md delete mode 100644 1-js/5-functions-closures/3-scope-new-function/article.md delete mode 100644 1-js/5-functions-closures/4-closures-usage/1-closure-sum/solution.md delete mode 100644 1-js/5-functions-closures/4-closures-usage/1-closure-sum/task.md delete mode 100644 1-js/5-functions-closures/4-closures-usage/2-stringbuffer/_js.view/solution.js delete mode 100644 1-js/5-functions-closures/4-closures-usage/2-stringbuffer/_js.view/test.js delete mode 100644 1-js/5-functions-closures/4-closures-usage/2-stringbuffer/solution.md delete mode 100644 1-js/5-functions-closures/4-closures-usage/2-stringbuffer/task.md delete mode 100644 1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/_js.view/solution.js delete mode 100644 1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/_js.view/test.js delete mode 100644 1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/solution.md delete mode 100644 1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/task.md delete mode 100644 1-js/5-functions-closures/4-closures-usage/4-sort-by-field/solution.md delete mode 100644 1-js/5-functions-closures/4-closures-usage/4-sort-by-field/task.md delete mode 100644 1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/solution.js delete mode 100644 1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/source.js delete mode 100644 1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/test.js delete mode 100644 1-js/5-functions-closures/4-closures-usage/5-filter-through-function/solution.md delete mode 100644 1-js/5-functions-closures/4-closures-usage/5-filter-through-function/task.md delete mode 100644 1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/solution.js delete mode 100644 1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/source.js delete mode 100644 1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/test.js delete mode 100644 1-js/5-functions-closures/4-closures-usage/6-make-army/solution.md delete mode 100644 1-js/5-functions-closures/4-closures-usage/6-make-army/task.md delete mode 100644 1-js/5-functions-closures/4-closures-usage/article.md delete mode 100644 1-js/5-functions-closures/5-closures-module/article.md delete mode 100755 1-js/5-functions-closures/5-closures-module/hello-conflict.view/hello.js delete mode 100755 1-js/5-functions-closures/5-closures-module/hello-conflict.view/index.html delete mode 100755 1-js/5-functions-closures/5-closures-module/hello-module.view/hello.js delete mode 100755 1-js/5-functions-closures/5-closures-module/hello-module.view/index.html delete mode 100644 1-js/5-functions-closures/6-memory-management/article.md delete mode 100644 1-js/5-functions-closures/6-memory-management/family-no-family.png delete mode 100644 1-js/5-functions-closures/6-memory-management/family-no-family@2x.png delete mode 100644 1-js/5-functions-closures/6-memory-management/family-no-father-2.png delete mode 100644 1-js/5-functions-closures/6-memory-management/family-no-father-2@2x.png delete mode 100644 1-js/5-functions-closures/6-memory-management/family-no-father.png delete mode 100644 1-js/5-functions-closures/6-memory-management/family-no-father@2x.png delete mode 100644 1-js/5-functions-closures/6-memory-management/family.png delete mode 100644 1-js/5-functions-closures/6-memory-management/family@2x.png delete mode 100644 1-js/5-functions-closures/7-with/1-with-function/solution.md delete mode 100644 1-js/5-functions-closures/7-with/1-with-function/task.md delete mode 100644 1-js/5-functions-closures/7-with/2-with-variables/solution.md delete mode 100644 1-js/5-functions-closures/7-with/2-with-variables/task.md delete mode 100644 1-js/5-functions-closures/7-with/article.md delete mode 100644 1-js/5-functions-closures/index.md delete mode 100644 1-js/6-objects-more/1-object-methods/1-call-array-this/solution.md delete mode 100644 1-js/6-objects-more/1-object-methods/1-call-array-this/task.md delete mode 100644 1-js/6-objects-more/1-object-methods/2-check-syntax/solution.md delete mode 100644 1-js/6-objects-more/1-object-methods/2-check-syntax/task.md delete mode 100644 1-js/6-objects-more/1-object-methods/3-why-this/solution.md delete mode 100644 1-js/6-objects-more/1-object-methods/3-why-this/task.md delete mode 100644 1-js/6-objects-more/1-object-methods/4-object-property-this/solution.md delete mode 100644 1-js/6-objects-more/1-object-methods/4-object-property-this/task.md delete mode 100644 1-js/6-objects-more/1-object-methods/5-return-this/solution.md delete mode 100644 1-js/6-objects-more/1-object-methods/5-return-this/task.md delete mode 100644 1-js/6-objects-more/1-object-methods/6-return-object-this/solution.md delete mode 100644 1-js/6-objects-more/1-object-methods/6-return-object-this/task.md delete mode 100644 1-js/6-objects-more/1-object-methods/7-calculator/_js.view/solution.js delete mode 100644 1-js/6-objects-more/1-object-methods/7-calculator/_js.view/test.js delete mode 100644 1-js/6-objects-more/1-object-methods/7-calculator/solution.md delete mode 100644 1-js/6-objects-more/1-object-methods/7-calculator/task.md delete mode 100644 1-js/6-objects-more/1-object-methods/8-chain-calls/solution.md delete mode 100644 1-js/6-objects-more/1-object-methods/8-chain-calls/task.md delete mode 100644 1-js/6-objects-more/1-object-methods/article.md delete mode 100644 1-js/6-objects-more/2-object-conversion/1-array-equals-string/solution.md delete mode 100644 1-js/6-objects-more/2-object-conversion/1-array-equals-string/task.md delete mode 100644 1-js/6-objects-more/2-object-conversion/2-tostring-valueof/solution.md delete mode 100644 1-js/6-objects-more/2-object-conversion/2-tostring-valueof/task.md delete mode 100644 1-js/6-objects-more/2-object-conversion/3-compare-empty-arrays/solution.md delete mode 100644 1-js/6-objects-more/2-object-conversion/3-compare-empty-arrays/task.md delete mode 100644 1-js/6-objects-more/2-object-conversion/4-object-types-conversion-questions/solution.md delete mode 100644 1-js/6-objects-more/2-object-conversion/4-object-types-conversion-questions/task.md delete mode 100644 1-js/6-objects-more/2-object-conversion/5-sum-many-brackets/solution.md delete mode 100644 1-js/6-objects-more/2-object-conversion/5-sum-many-brackets/task.md delete mode 100644 1-js/6-objects-more/2-object-conversion/article.md delete mode 100644 1-js/6-objects-more/3-constructor-new/1-two-functions-one-object/solution.md delete mode 100644 1-js/6-objects-more/3-constructor-new/1-two-functions-one-object/task.md delete mode 100644 1-js/6-objects-more/3-constructor-new/2-calculator-constructor/_js.view/solution.js delete mode 100644 1-js/6-objects-more/3-constructor-new/2-calculator-constructor/_js.view/test.js delete mode 100644 1-js/6-objects-more/3-constructor-new/2-calculator-constructor/solution.md delete mode 100644 1-js/6-objects-more/3-constructor-new/2-calculator-constructor/task.md delete mode 100644 1-js/6-objects-more/3-constructor-new/3-accumulator/_js.view/solution.js delete mode 100644 1-js/6-objects-more/3-constructor-new/3-accumulator/_js.view/test.js delete mode 100644 1-js/6-objects-more/3-constructor-new/3-accumulator/solution.md delete mode 100644 1-js/6-objects-more/3-constructor-new/3-accumulator/task.md delete mode 100644 1-js/6-objects-more/3-constructor-new/4-calculator-extendable/_js.view/solution.js delete mode 100644 1-js/6-objects-more/3-constructor-new/4-calculator-extendable/_js.view/test.js delete mode 100644 1-js/6-objects-more/3-constructor-new/4-calculator-extendable/solution.md delete mode 100644 1-js/6-objects-more/3-constructor-new/4-calculator-extendable/task.md delete mode 100644 1-js/6-objects-more/3-constructor-new/article.md delete mode 100644 1-js/6-objects-more/4-descriptors-getters-setters/1-replace-property-getter/solution.md delete mode 100644 1-js/6-objects-more/4-descriptors-getters-setters/1-replace-property-getter/task.md delete mode 100644 1-js/6-objects-more/4-descriptors-getters-setters/article.md delete mode 100644 1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/_js.view/solution.js delete mode 100644 1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/_js.view/test.js delete mode 100644 1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/solution.md delete mode 100644 1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/task.md delete mode 100644 1-js/6-objects-more/5-static-properties-and-methods/article.md delete mode 100644 1-js/6-objects-more/6-call-apply/1-rewrite-sum-arguments/solution.md delete mode 100644 1-js/6-objects-more/6-call-apply/1-rewrite-sum-arguments/task.md delete mode 100644 1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/_js.view/solution.js delete mode 100644 1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/_js.view/test.js delete mode 100644 1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/solution.md delete mode 100644 1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/task.md delete mode 100644 1-js/6-objects-more/6-call-apply/article.md delete mode 100644 1-js/6-objects-more/7-bind/1-cross-browser-bind/solution.md delete mode 100644 1-js/6-objects-more/7-bind/1-cross-browser-bind/task.md delete mode 100644 1-js/6-objects-more/7-bind/2-write-to-object-after-bind/solution.md delete mode 100644 1-js/6-objects-more/7-bind/2-write-to-object-after-bind/task.md delete mode 100644 1-js/6-objects-more/7-bind/3-second-bind/solution.md delete mode 100644 1-js/6-objects-more/7-bind/3-second-bind/task.md delete mode 100644 1-js/6-objects-more/7-bind/4-function-property-after-bind/solution.md delete mode 100644 1-js/6-objects-more/7-bind/4-function-property-after-bind/task.md delete mode 100644 1-js/6-objects-more/7-bind/5-question-use-bind/solution.md delete mode 100644 1-js/6-objects-more/7-bind/5-question-use-bind/task.md delete mode 100644 1-js/6-objects-more/7-bind/6-ask-currying/solution.md delete mode 100644 1-js/6-objects-more/7-bind/6-ask-currying/task.md delete mode 100644 1-js/6-objects-more/7-bind/article.md delete mode 100644 1-js/6-objects-more/8-decorators/1-logging-decorator/_js.view/solution.js delete mode 100644 1-js/6-objects-more/8-decorators/1-logging-decorator/_js.view/test.js delete mode 100644 1-js/6-objects-more/8-decorators/1-logging-decorator/solution.md delete mode 100644 1-js/6-objects-more/8-decorators/1-logging-decorator/task.md delete mode 100644 1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/_js.view/solution.js delete mode 100644 1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/_js.view/test.js delete mode 100644 1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/solution.md delete mode 100644 1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/task.md delete mode 100644 1-js/6-objects-more/8-decorators/3-caching-decorator/_js.view/solution.js delete mode 100644 1-js/6-objects-more/8-decorators/3-caching-decorator/_js.view/test.js delete mode 100644 1-js/6-objects-more/8-decorators/3-caching-decorator/solution.md delete mode 100644 1-js/6-objects-more/8-decorators/3-caching-decorator/task.md delete mode 100644 1-js/6-objects-more/8-decorators/article.md delete mode 100644 1-js/6-objects-more/index.md delete mode 100644 1-js/7-js-misc/1-class-instanceof/1-format-date-polymorphic/_js.view/solution.js delete mode 100644 1-js/7-js-misc/1-class-instanceof/1-format-date-polymorphic/_js.view/test.js delete mode 100644 1-js/7-js-misc/1-class-instanceof/1-format-date-polymorphic/solution.md delete mode 100644 1-js/7-js-misc/1-class-instanceof/1-format-date-polymorphic/task.md delete mode 100644 1-js/7-js-misc/1-class-instanceof/article.md delete mode 100644 1-js/7-js-misc/2-json/1-serialize-object/solution.md delete mode 100644 1-js/7-js-misc/2-json/1-serialize-object/task.md delete mode 100644 1-js/7-js-misc/2-json/2-serialize-object-circular/solution.md delete mode 100644 1-js/7-js-misc/2-json/2-serialize-object-circular/task.md delete mode 100644 1-js/7-js-misc/2-json/article.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/1-output-numbers-100ms/solution.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/1-output-numbers-100ms/task.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/2-output-numbers-100ms-settimeout/solution.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/2-output-numbers-100ms-settimeout/task.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/3-highlight-tactics/solution.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/3-highlight-tactics/task.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/4-settimeout-result/solution.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/4-settimeout-result/task.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/5-setinterval-result/solution.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/5-setinterval-result/task.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/6-who-runs-faster/solution.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/6-who-runs-faster/task.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/7-delay/_js.view/solution.js delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/7-delay/_js.view/test.js delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/7-delay/solution.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/7-delay/task.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/_js.view/solution.js delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/_js.view/test.js delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/solution.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/task.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/_js.view/solution.js delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/_js.view/test.js delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/solution.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/task.md delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/article.md delete mode 100755 1-js/7-js-misc/3-setTimeout-setInterval/setInterval-anim.view/index.html delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/setinterval-interval.png delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/setinterval-interval@2x.png delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/settimeout-interval.png delete mode 100644 1-js/7-js-misc/3-setTimeout-setInterval/settimeout-interval@2x.png delete mode 100644 1-js/7-js-misc/4-eval/1-eval-calculator/solution.md delete mode 100644 1-js/7-js-misc/4-eval/1-eval-calculator/task.md delete mode 100644 1-js/7-js-misc/4-eval/article.md delete mode 100644 1-js/7-js-misc/5-exception/1-finally-or-code-after/solution.md delete mode 100644 1-js/7-js-misc/5-exception/1-finally-or-code-after/task.md delete mode 100644 1-js/7-js-misc/5-exception/2-eval-calculator-errors/solution.md delete mode 100644 1-js/7-js-misc/5-exception/2-eval-calculator-errors/task.md delete mode 100644 1-js/7-js-misc/5-exception/article.md delete mode 100644 1-js/7-js-misc/index.md delete mode 100644 1-js/8-oop/1-about-oop/article.md delete mode 100644 1-js/8-oop/2-internal-external-interface/1-add-method-property-coffeemachine/solution.md delete mode 100644 1-js/8-oop/2-internal-external-interface/1-add-method-property-coffeemachine/task.md delete mode 100644 1-js/8-oop/2-internal-external-interface/article.md delete mode 100755 1-js/8-oop/2-internal-external-interface/coffee-inside.jpg delete mode 100755 1-js/8-oop/2-internal-external-interface/coffee.jpg delete mode 100644 1-js/8-oop/3-getters-setters/1-object-with-getters-setters/solution.md delete mode 100644 1-js/8-oop/3-getters-setters/1-object-with-getters-setters/task.md delete mode 100644 1-js/8-oop/3-getters-setters/2-getter-power/solution.md delete mode 100644 1-js/8-oop/3-getters-setters/2-getter-power/task.md delete mode 100644 1-js/8-oop/3-getters-setters/3-add-public-coffeemachine/solution.md delete mode 100644 1-js/8-oop/3-getters-setters/3-add-public-coffeemachine/task.md delete mode 100644 1-js/8-oop/3-getters-setters/4-setter-onready/solution.md delete mode 100644 1-js/8-oop/3-getters-setters/4-setter-onready/task.md delete mode 100644 1-js/8-oop/3-getters-setters/5-coffeemachine-add-isrunning/solution.md delete mode 100644 1-js/8-oop/3-getters-setters/5-coffeemachine-add-isrunning/task.md delete mode 100644 1-js/8-oop/3-getters-setters/article.md delete mode 100644 1-js/8-oop/5-functional-inheritance/1-coffeemachine-fix-run/solution.md delete mode 100755 1-js/8-oop/5-functional-inheritance/1-coffeemachine-fix-run/solution.view/index.html delete mode 100755 1-js/8-oop/5-functional-inheritance/1-coffeemachine-fix-run/source.view/index.html delete mode 100644 1-js/8-oop/5-functional-inheritance/1-coffeemachine-fix-run/task.md delete mode 100644 1-js/8-oop/5-functional-inheritance/2-coffeemachine-disable-stop/solution.md delete mode 100755 1-js/8-oop/5-functional-inheritance/2-coffeemachine-disable-stop/solution.view/index.html delete mode 100644 1-js/8-oop/5-functional-inheritance/2-coffeemachine-disable-stop/task.md delete mode 100644 1-js/8-oop/5-functional-inheritance/3-inherit-fridge/solution.md delete mode 100644 1-js/8-oop/5-functional-inheritance/3-inherit-fridge/task.md delete mode 100644 1-js/8-oop/5-functional-inheritance/4-add-methods-fridge/solution.md delete mode 100644 1-js/8-oop/5-functional-inheritance/4-add-methods-fridge/task.md delete mode 100644 1-js/8-oop/5-functional-inheritance/5-override-disable/solution.md delete mode 100644 1-js/8-oop/5-functional-inheritance/5-override-disable/task.md delete mode 100644 1-js/8-oop/5-functional-inheritance/article.md delete mode 100644 1-js/8-oop/index.md delete mode 100644 1-js/9-prototypes/1-prototype/1-property-after-delete/solution.md delete mode 100644 1-js/9-prototypes/1-prototype/1-property-after-delete/task.md delete mode 100755 1-js/9-prototypes/1-prototype/2-proto-and-this/proto5.png delete mode 100755 1-js/9-prototypes/1-prototype/2-proto-and-this/proto6.png delete mode 100644 1-js/9-prototypes/1-prototype/2-proto-and-this/solution.md delete mode 100644 1-js/9-prototypes/1-prototype/2-proto-and-this/task.md delete mode 100644 1-js/9-prototypes/1-prototype/3-search-algorithm/solution.md delete mode 100644 1-js/9-prototypes/1-prototype/3-search-algorithm/task.md delete mode 100644 1-js/9-prototypes/1-prototype/article.md delete mode 100644 1-js/9-prototypes/1-prototype/proto-animal-rabbit.png delete mode 100644 1-js/9-prototypes/1-prototype/proto-animal-rabbit@2x.png delete mode 100644 1-js/9-prototypes/2-new-prototype/1-prototype-after-new/solution.md delete mode 100644 1-js/9-prototypes/2-new-prototype/1-prototype-after-new/task.md delete mode 100644 1-js/9-prototypes/2-new-prototype/2-default-arguments/solution.md delete mode 100644 1-js/9-prototypes/2-new-prototype/2-default-arguments/task.md delete mode 100644 1-js/9-prototypes/2-new-prototype/3-compare-calls/solution.md delete mode 100644 1-js/9-prototypes/2-new-prototype/3-compare-calls/task.md delete mode 100644 1-js/9-prototypes/2-new-prototype/4-new-object-same-constructor/solution.md delete mode 100644 1-js/9-prototypes/2-new-prototype/4-new-object-same-constructor/task.md delete mode 100644 1-js/9-prototypes/2-new-prototype/article.md delete mode 100644 1-js/9-prototypes/3-native-prototypes/1-defer-to-prototype/solution.md delete mode 100644 1-js/9-prototypes/3-native-prototypes/1-defer-to-prototype/task.md delete mode 100644 1-js/9-prototypes/3-native-prototypes/2-defer-to-prototype-extended/solution.md delete mode 100644 1-js/9-prototypes/3-native-prototypes/2-defer-to-prototype-extended/task.md delete mode 100644 1-js/9-prototypes/3-native-prototypes/article.md delete mode 100644 1-js/9-prototypes/3-native-prototypes/native-prototype-object.png delete mode 100644 1-js/9-prototypes/3-native-prototypes/native-prototypes-array-tostring.png delete mode 100644 1-js/9-prototypes/3-native-prototypes/native-prototypes-array-tostring@2x.png delete mode 100644 1-js/9-prototypes/3-native-prototypes/native-prototypes-classes.png delete mode 100644 1-js/9-prototypes/3-native-prototypes/native-prototypes-classes@2x.png delete mode 100644 1-js/9-prototypes/3-native-prototypes/native-prototypes-object.png delete mode 100644 1-js/9-prototypes/3-native-prototypes/native-prototypes-object@2x.png delete mode 100644 1-js/9-prototypes/4-classes/1-rewrite-by-class/solution.md delete mode 100644 1-js/9-prototypes/4-classes/1-rewrite-by-class/task.md delete mode 100644 1-js/9-prototypes/4-classes/2-hamsters-with-proto/solution.md delete mode 100644 1-js/9-prototypes/4-classes/2-hamsters-with-proto/task.md delete mode 100644 1-js/9-prototypes/4-classes/article.md delete mode 100644 1-js/9-prototypes/5-class-inheritance/1-inheritance-error-assign/solution.md delete mode 100644 1-js/9-prototypes/5-class-inheritance/1-inheritance-error-assign/task.md delete mode 100644 1-js/9-prototypes/5-class-inheritance/2-inheritance-error-constructor/solution.md delete mode 100644 1-js/9-prototypes/5-class-inheritance/2-inheritance-error-constructor/task.md delete mode 100755 1-js/9-prototypes/5-class-inheritance/3-clock-class/clock.js delete mode 100644 1-js/9-prototypes/5-class-inheritance/3-clock-class/solution.md delete mode 100755 1-js/9-prototypes/5-class-inheritance/3-clock-class/solution.view/clock.js delete mode 100755 1-js/9-prototypes/5-class-inheritance/3-clock-class/solution.view/index.html delete mode 100755 1-js/9-prototypes/5-class-inheritance/3-clock-class/source.view/clock.js delete mode 100755 1-js/9-prototypes/5-class-inheritance/3-clock-class/source.view/index.html delete mode 100644 1-js/9-prototypes/5-class-inheritance/3-clock-class/task.md delete mode 100755 1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/extended-clock.js delete mode 100644 1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.md delete mode 100755 1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/clock.js delete mode 100755 1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/extended-clock.js delete mode 100755 1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/index.html delete mode 100755 1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/clock.js delete mode 100755 1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/extended-clock.js delete mode 100755 1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/index.html delete mode 100644 1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/task.md delete mode 100644 1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/solution.md delete mode 100755 1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/solution.view/index.html delete mode 100755 1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/solution.view/menu.js delete mode 100755 1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/source.view/index.html delete mode 100755 1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/source.view/menu.js delete mode 100644 1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/task.md delete mode 100644 1-js/9-prototypes/5-class-inheritance/6-constructor-inherited/solution.md delete mode 100644 1-js/9-prototypes/5-class-inheritance/6-constructor-inherited/task.md delete mode 100644 1-js/9-prototypes/5-class-inheritance/article.md delete mode 100644 1-js/9-prototypes/5-class-inheritance/class-inheritance-array-object.png delete mode 100644 1-js/9-prototypes/5-class-inheritance/class-inheritance-array-object@2x.png delete mode 100644 1-js/9-prototypes/5-class-inheritance/class-inheritance-rabbit-animal.png delete mode 100644 1-js/9-prototypes/5-class-inheritance/class-inheritance-rabbit-animal@2x.png delete mode 100644 1-js/9-prototypes/5-class-inheritance/class-inheritance-rabbit-run-animal.png delete mode 100644 1-js/9-prototypes/5-class-inheritance/class-inheritance-rabbit-run-animal@2x.png delete mode 100755 1-js/9-prototypes/5-class-inheritance/console_dir_array.png delete mode 100755 1-js/9-prototypes/5-class-inheritance/console_dir_array@2x.png delete mode 100644 1-js/9-prototypes/6-instanceof/1-strange-instanceof/solution.md delete mode 100644 1-js/9-prototypes/6-instanceof/1-strange-instanceof/task.md delete mode 100644 1-js/9-prototypes/6-instanceof/2-instanceof-result/solution.md delete mode 100644 1-js/9-prototypes/6-instanceof/2-instanceof-result/task.md delete mode 100644 1-js/9-prototypes/6-instanceof/article.md delete mode 100644 1-js/9-prototypes/7-oop-errors/1-format-error/solution.md delete mode 100644 1-js/9-prototypes/7-oop-errors/1-format-error/task.md delete mode 100644 1-js/9-prototypes/7-oop-errors/article.md delete mode 100644 1-js/9-prototypes/8-mixins/article.md delete mode 100644 1-js/9-prototypes/index.md delete mode 100644 1-js/index.md delete mode 100644 10-regular-expressions-javascript/1-regexp-introduction/article.md delete mode 100644 10-regular-expressions-javascript/10-regexp-ahchors/1-start-end/solution.md delete mode 100644 10-regular-expressions-javascript/10-regexp-ahchors/1-start-end/task.md delete mode 100644 10-regular-expressions-javascript/10-regexp-ahchors/2-test-mac/solution.md delete mode 100644 10-regular-expressions-javascript/10-regexp-ahchors/2-test-mac/task.md delete mode 100644 10-regular-expressions-javascript/10-regexp-ahchors/article.md delete mode 100644 10-regular-expressions-javascript/11-regexp-multiline-mode/article.md delete mode 100644 10-regular-expressions-javascript/12-regexp-lookahead/article.md delete mode 100644 10-regular-expressions-javascript/13-regexp-infinite-backtracking-problem/article.md delete mode 100644 10-regular-expressions-javascript/13-regexp-infinite-backtracking-problem/bad_backtrack_greedy1.png delete mode 100644 10-regular-expressions-javascript/13-regexp-infinite-backtracking-problem/bad_backtrack_greedy11.png delete mode 100644 10-regular-expressions-javascript/13-regexp-infinite-backtracking-problem/bad_backtrack_greedy2.png delete mode 100644 10-regular-expressions-javascript/13-regexp-infinite-backtracking-problem/bad_backtrack_greedy3.png delete mode 100644 10-regular-expressions-javascript/13-regexp-infinite-backtracking-problem/bad_backtrack_greedy4.png delete mode 100644 10-regular-expressions-javascript/13-regexp-infinite-backtracking-problem/bad_backtrack_greedy5.png delete mode 100644 10-regular-expressions-javascript/2-regexp-methods/article.md delete mode 100644 10-regular-expressions-javascript/3-regexp-character-classes/1-find-time-hh-mm/solution.md delete mode 100644 10-regular-expressions-javascript/3-regexp-character-classes/1-find-time-hh-mm/task.md delete mode 100644 10-regular-expressions-javascript/3-regexp-character-classes/article.md delete mode 100644 10-regular-expressions-javascript/3-regexp-character-classes/hello-java-boundaries.png delete mode 100644 10-regular-expressions-javascript/3-regexp-character-classes/hello-java-boundaries@2x.png delete mode 100644 10-regular-expressions-javascript/3-regexp-character-classes/love-html5-classes.png delete mode 100644 10-regular-expressions-javascript/3-regexp-character-classes/love-html5-classes@2x.png delete mode 100644 10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/1-find-range-1/solution.md delete mode 100644 10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/1-find-range-1/task.md delete mode 100644 10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/2-find-time-2-formats/solution.md delete mode 100644 10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md delete mode 100644 10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/article.md delete mode 100644 10-regular-expressions-javascript/5-regexp-quantifiers/1-find-text-manydots/solution.md delete mode 100644 10-regular-expressions-javascript/5-regexp-quantifiers/1-find-text-manydots/task.md delete mode 100644 10-regular-expressions-javascript/5-regexp-quantifiers/2-find-html-colors-6hex/solution.md delete mode 100644 10-regular-expressions-javascript/5-regexp-quantifiers/2-find-html-colors-6hex/task.md delete mode 100644 10-regular-expressions-javascript/5-regexp-quantifiers/3-find-decimal-positive-numbers/solution.md delete mode 100644 10-regular-expressions-javascript/5-regexp-quantifiers/3-find-decimal-positive-numbers/task.md delete mode 100644 10-regular-expressions-javascript/5-regexp-quantifiers/4-find-decimal-numbers/solution.md delete mode 100644 10-regular-expressions-javascript/5-regexp-quantifiers/4-find-decimal-numbers/task.md delete mode 100644 10-regular-expressions-javascript/5-regexp-quantifiers/article.md delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/1-lazy-greedy/solution.md delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/1-lazy-greedy/task.md delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/2-difference-find-quote/solution.md delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/2-difference-find-quote/task.md delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/3-find-html-comments/solution.md delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/3-find-html-comments/task.md delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/article.md delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy1.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy1@2x.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy2.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy2@2x.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy3.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy3@2x.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy4.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy4@2x.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy5.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy5@2x.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy6.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy6@2x.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy3.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy3@2x.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy4.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy4@2x.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy5.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy5@2x.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy6.png delete mode 100644 10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy6@2x.png delete mode 100644 10-regular-expressions-javascript/7-regexp-groups/1-find-webcolor-3-or-6/solution.md delete mode 100644 10-regular-expressions-javascript/7-regexp-groups/1-find-webcolor-3-or-6/task.md delete mode 100644 10-regular-expressions-javascript/7-regexp-groups/2-parse-expression/solution.md delete mode 100644 10-regular-expressions-javascript/7-regexp-groups/2-parse-expression/task.md delete mode 100644 10-regular-expressions-javascript/7-regexp-groups/article.md delete mode 100644 10-regular-expressions-javascript/7-regexp-groups/regexp-nested-groups.png delete mode 100644 10-regular-expressions-javascript/7-regexp-groups/regexp-nested-groups@2x.png delete mode 100644 10-regular-expressions-javascript/8-regexp-backreferences/1-find-matching-bbtags/solution.md delete mode 100644 10-regular-expressions-javascript/8-regexp-backreferences/1-find-matching-bbtags/task.md delete mode 100644 10-regular-expressions-javascript/8-regexp-backreferences/article.md delete mode 100644 10-regular-expressions-javascript/9-regexp-alternation/1-find-programming-language/solution.md delete mode 100644 10-regular-expressions-javascript/9-regexp-alternation/1-find-programming-language/task.md delete mode 100644 10-regular-expressions-javascript/9-regexp-alternation/2-match-quoted-string/solution.md delete mode 100644 10-regular-expressions-javascript/9-regexp-alternation/2-match-quoted-string/task.md delete mode 100644 10-regular-expressions-javascript/9-regexp-alternation/3-match-exact-tag/solution.md delete mode 100644 10-regular-expressions-javascript/9-regexp-alternation/3-match-exact-tag/task.md delete mode 100644 10-regular-expressions-javascript/9-regexp-alternation/article.md delete mode 100644 10-regular-expressions-javascript/index.md delete mode 100644 11-extra/10-cookie/article.md delete mode 100644 11-extra/10-cookie/cookie.js delete mode 100644 11-extra/10-cookie/safari-nocookie.png delete mode 100644 11-extra/10-cookie/safari-nocookie@2x.png delete mode 100644 11-extra/11-intl/1-collate-array-sort/solution.md delete mode 100644 11-extra/11-intl/1-collate-array-sort/task.md delete mode 100644 11-extra/11-intl/article.md delete mode 100644 11-extra/12-regexp-specials/article.md delete mode 100644 11-extra/3-templates/article.md delete mode 100644 11-extra/4-books/article.md delete mode 100644 11-extra/5-setimmediate/article.md delete mode 100644 11-extra/5-setimmediate/setimmediate.view/index.html delete mode 100644 11-extra/5-setimmediate/setimmediate.view/setImmediate.js delete mode 100644 11-extra/6-bind-late/article.md delete mode 100644 11-extra/7-sublime/article.md delete mode 100644 11-extra/7-sublime/sheet.pdf delete mode 100644 11-extra/8-range-textrange-selection/56.gif delete mode 100644 11-extra/8-range-textrange-selection/57.gif delete mode 100644 11-extra/8-range-textrange-selection/58.gif delete mode 100644 11-extra/8-range-textrange-selection/article.md delete mode 100644 11-extra/8-range-textrange-selection/domRangeCreate.view/index.html delete mode 100644 11-extra/8-range-textrange-selection/domRangeHighlight.view/index.html delete mode 100644 11-extra/8-range-textrange-selection/fix-ie.view/fixIERangeObject.js delete mode 100644 11-extra/8-range-textrange-selection/fix-ie.view/index.html delete mode 100644 11-extra/8-range-textrange-selection/ieTextRangeHighlight.view/index.html delete mode 100644 11-extra/8-range-textrange-selection/setSelection.view/index.html delete mode 100644 11-extra/9-drag-and-drop-plus/DragAvatar.js delete mode 100644 11-extra/9-drag-and-drop-plus/DragManager.js delete mode 100644 11-extra/9-drag-and-drop-plus/DragZone.js delete mode 100644 11-extra/9-drag-and-drop-plus/DropTarget.js delete mode 100644 11-extra/9-drag-and-drop-plus/TreeDragAvatar.js delete mode 100644 11-extra/9-drag-and-drop-plus/TreeDragZone.js delete mode 100644 11-extra/9-drag-and-drop-plus/TreeDropTarget.js delete mode 100644 11-extra/9-drag-and-drop-plus/article.md delete mode 100644 11-extra/9-drag-and-drop-plus/dragTree.view/DragAvatar.js delete mode 100644 11-extra/9-drag-and-drop-plus/dragTree.view/DragManager.js delete mode 100644 11-extra/9-drag-and-drop-plus/dragTree.view/DragZone.js delete mode 100644 11-extra/9-drag-and-drop-plus/dragTree.view/DropTarget.js delete mode 100644 11-extra/9-drag-and-drop-plus/dragTree.view/TreeDragAvatar.js delete mode 100644 11-extra/9-drag-and-drop-plus/dragTree.view/TreeDragZone.js delete mode 100644 11-extra/9-drag-and-drop-plus/dragTree.view/TreeDropTarget.js delete mode 100644 11-extra/9-drag-and-drop-plus/dragTree.view/dragTree.css delete mode 100644 11-extra/9-drag-and-drop-plus/dragTree.view/index.html delete mode 100644 11-extra/9-drag-and-drop-plus/dragTree.view/lib.js delete mode 100644 11-extra/9-drag-and-drop-plus/dragzonetarget.png delete mode 100644 11-extra/index.md delete mode 100644 2-ui/1-document/1-browser-environment/article.md delete mode 100644 2-ui/1-document/1-browser-environment/windowObjects.png delete mode 100644 2-ui/1-document/1-browser-environment/windowObjects@2x.png delete mode 100644 2-ui/1-document/10-compare-document-position/article.md delete mode 100644 2-ui/1-document/11-modifying-document/1-createtextnode-vs-innerhtml/solution.md delete mode 100644 2-ui/1-document/11-modifying-document/1-createtextnode-vs-innerhtml/task.md delete mode 100644 2-ui/1-document/11-modifying-document/10-clock-setinterval/solution.md delete mode 100644 2-ui/1-document/11-modifying-document/10-clock-setinterval/solution.view/index.html delete mode 100644 2-ui/1-document/11-modifying-document/10-clock-setinterval/source.view/index.html delete mode 100644 2-ui/1-document/11-modifying-document/10-clock-setinterval/task.md delete mode 100644 2-ui/1-document/11-modifying-document/2-remove-polyfill/solution.md delete mode 100644 2-ui/1-document/11-modifying-document/2-remove-polyfill/task.md delete mode 100644 2-ui/1-document/11-modifying-document/3-insert-after/solution.md delete mode 100644 2-ui/1-document/11-modifying-document/3-insert-after/task.md delete mode 100644 2-ui/1-document/11-modifying-document/4-remove-children/solution.md delete mode 100644 2-ui/1-document/11-modifying-document/4-remove-children/task.md delete mode 100644 2-ui/1-document/11-modifying-document/5-why-aaa/solution.md delete mode 100644 2-ui/1-document/11-modifying-document/5-why-aaa/task.md delete mode 100644 2-ui/1-document/11-modifying-document/6-create-list/solution.md delete mode 100755 2-ui/1-document/11-modifying-document/6-create-list/solution.view/index.html delete mode 100644 2-ui/1-document/11-modifying-document/6-create-list/task.md delete mode 100755 2-ui/1-document/11-modifying-document/7-create-object-tree/build-tree-dom.view/index.html delete mode 100644 2-ui/1-document/11-modifying-document/7-create-object-tree/solution.md delete mode 100755 2-ui/1-document/11-modifying-document/7-create-object-tree/solution.view/index.html delete mode 100755 2-ui/1-document/11-modifying-document/7-create-object-tree/source.view/index.html delete mode 100644 2-ui/1-document/11-modifying-document/7-create-object-tree/task.md delete mode 100644 2-ui/1-document/11-modifying-document/8-tree-count/solution.md delete mode 100644 2-ui/1-document/11-modifying-document/8-tree-count/solution.view/index.html delete mode 100644 2-ui/1-document/11-modifying-document/8-tree-count/source.view/index.html delete mode 100644 2-ui/1-document/11-modifying-document/8-tree-count/task.md delete mode 100644 2-ui/1-document/11-modifying-document/9-calendar-table/solution.md delete mode 100644 2-ui/1-document/11-modifying-document/9-calendar-table/solution.view/index.html delete mode 100644 2-ui/1-document/11-modifying-document/9-calendar-table/source.view/index.html delete mode 100644 2-ui/1-document/11-modifying-document/9-calendar-table/task.md delete mode 100644 2-ui/1-document/11-modifying-document/article.md delete mode 100644 2-ui/1-document/12-multi-insert/1-append-to-list/solution.md delete mode 100644 2-ui/1-document/12-multi-insert/1-append-to-list/task.md delete mode 100644 2-ui/1-document/12-multi-insert/2-sort-table-performance/solution.md delete mode 100644 2-ui/1-document/12-multi-insert/2-sort-table-performance/solution.view/index.html delete mode 100644 2-ui/1-document/12-multi-insert/2-sort-table-performance/task.md delete mode 100644 2-ui/1-document/12-multi-insert/article.md delete mode 100644 2-ui/1-document/12-multi-insert/benchmark.view/bench.js delete mode 100644 2-ui/1-document/12-multi-insert/benchmark.view/documentfragment-bench.js delete mode 100644 2-ui/1-document/12-multi-insert/benchmark.view/index.html delete mode 100755 2-ui/1-document/12-multi-insert/documentfragment-bench.js delete mode 100755 2-ui/1-document/12-multi-insert/insert-bench.js delete mode 100644 2-ui/1-document/12-multi-insert/insertAdjacentFF.js delete mode 100755 2-ui/1-document/12-multi-insert/insertAdjacentHTML.png delete mode 100644 2-ui/1-document/13-document-write/article.md delete mode 100644 2-ui/1-document/14-styles-and-classes/1-round-button-javascript/solution.md delete mode 100755 2-ui/1-document/14-styles-and-classes/1-round-button-javascript/solution.view/index.html delete mode 100755 2-ui/1-document/14-styles-and-classes/1-round-button-javascript/source.view/index.html delete mode 100644 2-ui/1-document/14-styles-and-classes/1-round-button-javascript/task.md delete mode 100644 2-ui/1-document/14-styles-and-classes/2-create-notification/solution.md delete mode 100755 2-ui/1-document/14-styles-and-classes/2-create-notification/solution.view/index.css delete mode 100755 2-ui/1-document/14-styles-and-classes/2-create-notification/solution.view/index.html delete mode 100755 2-ui/1-document/14-styles-and-classes/2-create-notification/source.view/index.css delete mode 100755 2-ui/1-document/14-styles-and-classes/2-create-notification/source.view/index.html delete mode 100644 2-ui/1-document/14-styles-and-classes/2-create-notification/task.md delete mode 100644 2-ui/1-document/14-styles-and-classes/article.md delete mode 100644 2-ui/1-document/14-styles-and-classes/getiecomputedstyle.view/getiecomputedstyle.js delete mode 100644 2-ui/1-document/14-styles-and-classes/getiecomputedstyle.view/index.html delete mode 100644 2-ui/1-document/15-metrics/1-get-scroll-height-bottom/solution.md delete mode 100644 2-ui/1-document/15-metrics/1-get-scroll-height-bottom/task.md delete mode 100644 2-ui/1-document/15-metrics/2-scrollbar-width/solution.md delete mode 100644 2-ui/1-document/15-metrics/2-scrollbar-width/task.md delete mode 100644 2-ui/1-document/15-metrics/3-div-placeholder/solution.md delete mode 100755 2-ui/1-document/15-metrics/3-div-placeholder/solution.view/index.html delete mode 100755 2-ui/1-document/15-metrics/3-div-placeholder/source.view/index.html delete mode 100644 2-ui/1-document/15-metrics/3-div-placeholder/task.md delete mode 100755 2-ui/1-document/15-metrics/4-put-ball-in-center/ball-half/index.html delete mode 100755 2-ui/1-document/15-metrics/4-put-ball-in-center/field.png delete mode 100644 2-ui/1-document/15-metrics/4-put-ball-in-center/solution.md delete mode 100755 2-ui/1-document/15-metrics/4-put-ball-in-center/solution.view/index.html delete mode 100755 2-ui/1-document/15-metrics/4-put-ball-in-center/source.view/index.html delete mode 100644 2-ui/1-document/15-metrics/4-put-ball-in-center/task.md delete mode 100644 2-ui/1-document/15-metrics/5-expand-element/solution.md delete mode 100755 2-ui/1-document/15-metrics/5-expand-element/solution.view/index.html delete mode 100755 2-ui/1-document/15-metrics/5-expand-element/source.view/index.html delete mode 100644 2-ui/1-document/15-metrics/5-expand-element/task.md delete mode 100644 2-ui/1-document/15-metrics/6-width-vs-clientwidth/solution.md delete mode 100644 2-ui/1-document/15-metrics/6-width-vs-clientwidth/task.md delete mode 100644 2-ui/1-document/15-metrics/article.md delete mode 100755 2-ui/1-document/15-metrics/cssWidthScroll.view/index.html delete mode 100644 2-ui/1-document/15-metrics/metric-all.png delete mode 100644 2-ui/1-document/15-metrics/metric-all@2x.png delete mode 100644 2-ui/1-document/15-metrics/metric-client-left-top-rtl.png delete mode 100644 2-ui/1-document/15-metrics/metric-client-left-top-rtl@2x.png delete mode 100644 2-ui/1-document/15-metrics/metric-client-left-top.png delete mode 100644 2-ui/1-document/15-metrics/metric-client-left-top@2x.png delete mode 100644 2-ui/1-document/15-metrics/metric-client-width-height.png delete mode 100644 2-ui/1-document/15-metrics/metric-client-width-height@2x.png delete mode 100644 2-ui/1-document/15-metrics/metric-client-width-nopadding.png delete mode 100644 2-ui/1-document/15-metrics/metric-client-width-nopadding@2x.png delete mode 100644 2-ui/1-document/15-metrics/metric-css.png delete mode 100644 2-ui/1-document/15-metrics/metric-css@2x.png delete mode 100644 2-ui/1-document/15-metrics/metric-offset-parent.png delete mode 100644 2-ui/1-document/15-metrics/metric-offset-parent@2x.png delete mode 100644 2-ui/1-document/15-metrics/metric-offset-width-height.png delete mode 100644 2-ui/1-document/15-metrics/metric-offset-width-height@2x.png delete mode 100644 2-ui/1-document/15-metrics/metric-scroll-top.png delete mode 100644 2-ui/1-document/15-metrics/metric-scroll-top@2x.png delete mode 100644 2-ui/1-document/15-metrics/metric-scroll-width-height.png delete mode 100644 2-ui/1-document/15-metrics/metric-scroll-width-height@2x.png delete mode 100755 2-ui/1-document/15-metrics/metric.view/index.html delete mode 100644 2-ui/1-document/16-metrics-window/1-pageyoffset-polyfill/solution.md delete mode 100644 2-ui/1-document/16-metrics-window/1-pageyoffset-polyfill/task.md delete mode 100644 2-ui/1-document/16-metrics-window/article.md delete mode 100644 2-ui/1-document/16-metrics-window/document-client-width-height.png delete mode 100644 2-ui/1-document/16-metrics-window/document-client-width-height@2x.png delete mode 100644 2-ui/1-document/17-coordinates/1-find-point-coordinates/solution.md delete mode 100755 2-ui/1-document/17-coordinates/1-find-point-coordinates/solution.view/index.css delete mode 100755 2-ui/1-document/17-coordinates/1-find-point-coordinates/solution.view/index.html delete mode 100755 2-ui/1-document/17-coordinates/1-find-point-coordinates/source.view/index.css delete mode 100755 2-ui/1-document/17-coordinates/1-find-point-coordinates/source.view/index.html delete mode 100644 2-ui/1-document/17-coordinates/1-find-point-coordinates/task.md delete mode 100644 2-ui/1-document/17-coordinates/2-position-at/solution.md delete mode 100755 2-ui/1-document/17-coordinates/2-position-at/solution.view/index.css delete mode 100755 2-ui/1-document/17-coordinates/2-position-at/solution.view/index.html delete mode 100755 2-ui/1-document/17-coordinates/2-position-at/source.view/index.css delete mode 100755 2-ui/1-document/17-coordinates/2-position-at/source.view/index.html delete mode 100644 2-ui/1-document/17-coordinates/2-position-at/task.md delete mode 100644 2-ui/1-document/17-coordinates/article.md delete mode 100644 2-ui/1-document/17-coordinates/coords.png delete mode 100644 2-ui/1-document/17-coordinates/coords@2x.png delete mode 100644 2-ui/1-document/18-coordinates-document/1-get-document-scrolls/solution.md delete mode 100644 2-ui/1-document/18-coordinates-document/1-get-document-scrolls/task.md delete mode 100644 2-ui/1-document/18-coordinates-document/2-position-at-absolute/solution.md delete mode 100644 2-ui/1-document/18-coordinates-document/2-position-at-absolute/solution.view/index.css delete mode 100644 2-ui/1-document/18-coordinates-document/2-position-at-absolute/solution.view/index.html delete mode 100644 2-ui/1-document/18-coordinates-document/2-position-at-absolute/task.md delete mode 100644 2-ui/1-document/18-coordinates-document/3-position-at-2/solution.md delete mode 100644 2-ui/1-document/18-coordinates-document/3-position-at-2/solution.view/index.css delete mode 100644 2-ui/1-document/18-coordinates-document/3-position-at-2/solution.view/index.html delete mode 100644 2-ui/1-document/18-coordinates-document/3-position-at-2/task.md delete mode 100644 2-ui/1-document/18-coordinates-document/article.md delete mode 100755 2-ui/1-document/18-coordinates-document/getcoords-compare.png delete mode 100755 2-ui/1-document/18-coordinates-document/getcoords-compare@2x.png delete mode 100755 2-ui/1-document/18-coordinates-document/pagewindow0.png delete mode 100755 2-ui/1-document/18-coordinates-document/screen.png delete mode 100755 2-ui/1-document/18-coordinates-document/standards-scroll.png delete mode 100755 2-ui/1-document/18-coordinates-document/standards.png delete mode 100644 2-ui/1-document/19-dom-cheatsheet/article.md delete mode 100644 2-ui/1-document/2-dom-nodes/1-body-from-head/solution.md delete mode 100644 2-ui/1-document/2-dom-nodes/1-body-from-head/task.md delete mode 100644 2-ui/1-document/2-dom-nodes/article.md delete mode 100644 2-ui/1-document/3-dom-console/1.png delete mode 100755 2-ui/1-document/3-dom-console/1@2x.png delete mode 100644 2-ui/1-document/3-dom-console/2.png delete mode 100755 2-ui/1-document/3-dom-console/2@2x.png delete mode 100644 2-ui/1-document/3-dom-console/3.png delete mode 100755 2-ui/1-document/3-dom-console/3@2x.png delete mode 100644 2-ui/1-document/3-dom-console/article.md delete mode 100644 2-ui/1-document/3-dom-console/losi.html delete mode 100644 2-ui/1-document/4-traversing-dom/1-dom-children/solution.md delete mode 100644 2-ui/1-document/4-traversing-dom/1-dom-children/task.md delete mode 100644 2-ui/1-document/4-traversing-dom/2-has-childnodes/solution.md delete mode 100644 2-ui/1-document/4-traversing-dom/2-has-childnodes/task.md delete mode 100644 2-ui/1-document/4-traversing-dom/3-navigation-links-which-null/solution.md delete mode 100644 2-ui/1-document/4-traversing-dom/3-navigation-links-which-null/task.md delete mode 100644 2-ui/1-document/4-traversing-dom/4-select-diagonal-cells/solution.md delete mode 100644 2-ui/1-document/4-traversing-dom/4-select-diagonal-cells/solution.view/index.html delete mode 100644 2-ui/1-document/4-traversing-dom/4-select-diagonal-cells/source.view/index.html delete mode 100644 2-ui/1-document/4-traversing-dom/4-select-diagonal-cells/task.md delete mode 100644 2-ui/1-document/4-traversing-dom/article.md delete mode 100644 2-ui/1-document/4-traversing-dom/dom-links-elements.png delete mode 100644 2-ui/1-document/4-traversing-dom/dom-links-elements@2x.png delete mode 100644 2-ui/1-document/4-traversing-dom/dom-links.png delete mode 100644 2-ui/1-document/4-traversing-dom/dom-links@2x.png delete mode 100644 2-ui/1-document/4-traversing-dom/travel.view/index.html delete mode 100644 2-ui/1-document/5-searching-elements-dom/1-find-elements/solution.md delete mode 100644 2-ui/1-document/5-searching-elements-dom/1-find-elements/table.html delete mode 100644 2-ui/1-document/5-searching-elements-dom/1-find-elements/task.md delete mode 100644 2-ui/1-document/5-searching-elements-dom/2-tree-info/solution.md delete mode 100644 2-ui/1-document/5-searching-elements-dom/2-tree-info/solution.view/index.html delete mode 100644 2-ui/1-document/5-searching-elements-dom/2-tree-info/source.view/index.html delete mode 100644 2-ui/1-document/5-searching-elements-dom/2-tree-info/task.md delete mode 100644 2-ui/1-document/5-searching-elements-dom/article.md delete mode 100644 2-ui/1-document/6-searching-elements-internals/1-collection-length-after-remove/solution.md delete mode 100644 2-ui/1-document/6-searching-elements-internals/1-collection-length-after-remove/task.md delete mode 100644 2-ui/1-document/6-searching-elements-internals/2-compare-elements-count/solution.md delete mode 100644 2-ui/1-document/6-searching-elements-internals/2-compare-elements-count/task.md delete mode 100644 2-ui/1-document/6-searching-elements-internals/3-benchmark-search-dom/solution.md delete mode 100644 2-ui/1-document/6-searching-elements-internals/3-benchmark-search-dom/solution.view/index.html delete mode 100644 2-ui/1-document/6-searching-elements-internals/3-benchmark-search-dom/source.view/index.html delete mode 100644 2-ui/1-document/6-searching-elements-internals/3-benchmark-search-dom/task.md delete mode 100644 2-ui/1-document/6-searching-elements-internals/4-get-second-li/solution.md delete mode 100644 2-ui/1-document/6-searching-elements-internals/4-get-second-li/task.md delete mode 100644 2-ui/1-document/6-searching-elements-internals/article.md delete mode 100644 2-ui/1-document/7-basic-dom-node-properties/1-console-firstchild-innerhtml/console-innerhtml.png delete mode 100644 2-ui/1-document/7-basic-dom-node-properties/1-console-firstchild-innerhtml/console-innerhtml@2x.png delete mode 100644 2-ui/1-document/7-basic-dom-node-properties/1-console-firstchild-innerhtml/solution.md delete mode 100644 2-ui/1-document/7-basic-dom-node-properties/1-console-firstchild-innerhtml/task.md delete mode 100644 2-ui/1-document/7-basic-dom-node-properties/2-lastchild-nodetype-inline/solution.md delete mode 100644 2-ui/1-document/7-basic-dom-node-properties/2-lastchild-nodetype-inline/task.md delete mode 100644 2-ui/1-document/7-basic-dom-node-properties/3-tag-in-comment/solution.md delete mode 100644 2-ui/1-document/7-basic-dom-node-properties/3-tag-in-comment/task.md delete mode 100644 2-ui/1-document/7-basic-dom-node-properties/4-where-document-in-hierarchy/solution.md delete mode 100644 2-ui/1-document/7-basic-dom-node-properties/4-where-document-in-hierarchy/task.md delete mode 100644 2-ui/1-document/7-basic-dom-node-properties/article.md delete mode 100644 2-ui/1-document/7-basic-dom-node-properties/hierarchy.png delete mode 100644 2-ui/1-document/8-dom-polyfill/1-polyfill-matches/solution.md delete mode 100644 2-ui/1-document/8-dom-polyfill/1-polyfill-matches/task.md delete mode 100644 2-ui/1-document/8-dom-polyfill/2-polyfill-closest/solution.md delete mode 100644 2-ui/1-document/8-dom-polyfill/2-polyfill-closest/task.md delete mode 100644 2-ui/1-document/8-dom-polyfill/3-polyfill-textcontent-ie8/solution.md delete mode 100644 2-ui/1-document/8-dom-polyfill/3-polyfill-textcontent-ie8/task.md delete mode 100644 2-ui/1-document/8-dom-polyfill/article.md delete mode 100644 2-ui/1-document/9-attributes-and-custom-properties/1-get-user-attribute/solution.md delete mode 100644 2-ui/1-document/9-attributes-and-custom-properties/1-get-user-attribute/solution.view/index.html delete mode 100644 2-ui/1-document/9-attributes-and-custom-properties/1-get-user-attribute/task.md delete mode 100644 2-ui/1-document/9-attributes-and-custom-properties/2-set-class-links/solution.md delete mode 100644 2-ui/1-document/9-attributes-and-custom-properties/2-set-class-links/solution.view/index.html delete mode 100644 2-ui/1-document/9-attributes-and-custom-properties/2-set-class-links/task.md delete mode 100644 2-ui/1-document/9-attributes-and-custom-properties/article.md delete mode 100644 2-ui/1-document/index.md delete mode 100644 2-ui/2-events-and-interfaces/1-introduction-browser-events/1-hide-other/solution.md delete mode 100755 2-ui/2-events-and-interfaces/1-introduction-browser-events/1-hide-other/solution.view/index.html delete mode 100755 2-ui/2-events-and-interfaces/1-introduction-browser-events/1-hide-other/source.view/index.html delete mode 100644 2-ui/2-events-and-interfaces/1-introduction-browser-events/1-hide-other/task.md delete mode 100644 2-ui/2-events-and-interfaces/1-introduction-browser-events/2-hide-self-onclick/solution.md delete mode 100644 2-ui/2-events-and-interfaces/1-introduction-browser-events/2-hide-self-onclick/task.md delete mode 100644 2-ui/2-events-and-interfaces/1-introduction-browser-events/3-which-handlers-run/solution.md delete mode 100644 2-ui/2-events-and-interfaces/1-introduction-browser-events/3-which-handlers-run/task.md delete mode 100644 2-ui/2-events-and-interfaces/1-introduction-browser-events/4-sliding-menu/solution.md delete mode 100755 2-ui/2-events-and-interfaces/1-introduction-browser-events/4-sliding-menu/solution.view/index.html delete mode 100755 2-ui/2-events-and-interfaces/1-introduction-browser-events/4-sliding-menu/source.view/index.html delete mode 100644 2-ui/2-events-and-interfaces/1-introduction-browser-events/4-sliding-menu/task.md delete mode 100644 2-ui/2-events-and-interfaces/1-introduction-browser-events/5-hide-message/solution.md delete mode 100755 2-ui/2-events-and-interfaces/1-introduction-browser-events/5-hide-message/solution.view/index.html delete mode 100755 2-ui/2-events-and-interfaces/1-introduction-browser-events/5-hide-message/solution.view/messages.css delete mode 100755 2-ui/2-events-and-interfaces/1-introduction-browser-events/5-hide-message/source.view/index.html delete mode 100755 2-ui/2-events-and-interfaces/1-introduction-browser-events/5-hide-message/source.view/messages.css delete mode 100644 2-ui/2-events-and-interfaces/1-introduction-browser-events/5-hide-message/task.md delete mode 100644 2-ui/2-events-and-interfaces/1-introduction-browser-events/6-carousel/carousel1.png delete mode 100644 2-ui/2-events-and-interfaces/1-introduction-browser-events/6-carousel/carousel1@2x.png delete mode 100644 2-ui/2-events-and-interfaces/1-introduction-browser-events/6-carousel/carousel2.png delete mode 100644 2-ui/2-events-and-interfaces/1-introduction-browser-events/6-carousel/carousel2@2x.png delete mode 100644 2-ui/2-events-and-interfaces/1-introduction-browser-events/6-carousel/solution.md delete mode 100755 2-ui/2-events-and-interfaces/1-introduction-browser-events/6-carousel/solution.view/index.html delete mode 100755 2-ui/2-events-and-interfaces/1-introduction-browser-events/6-carousel/solution.view/style.css delete mode 100755 2-ui/2-events-and-interfaces/1-introduction-browser-events/6-carousel/source.view/index.html delete mode 100644 2-ui/2-events-and-interfaces/1-introduction-browser-events/6-carousel/source.view/style.css delete mode 100644 2-ui/2-events-and-interfaces/1-introduction-browser-events/6-carousel/task.md delete mode 100644 2-ui/2-events-and-interfaces/1-introduction-browser-events/article.md delete mode 100644 2-ui/2-events-and-interfaces/2-events-and-timing-depth/article.md delete mode 100644 2-ui/2-events-and-interfaces/3-obtaining-event-object/1-move-ball-field/solution.md delete mode 100755 2-ui/2-events-and-interfaces/3-obtaining-event-object/1-move-ball-field/solution.view/index.html delete mode 100755 2-ui/2-events-and-interfaces/3-obtaining-event-object/1-move-ball-field/source.view/index.html delete mode 100644 2-ui/2-events-and-interfaces/3-obtaining-event-object/1-move-ball-field/task.md delete mode 100644 2-ui/2-events-and-interfaces/3-obtaining-event-object/article.md delete mode 100644 2-ui/2-events-and-interfaces/4-event-bubbling/article.md delete mode 100755 2-ui/2-events-and-interfaces/4-event-bubbling/both.view/example.css delete mode 100755 2-ui/2-events-and-interfaces/4-event-bubbling/both.view/index.html delete mode 100755 2-ui/2-events-and-interfaces/4-event-bubbling/both.view/script.js delete mode 100755 2-ui/2-events-and-interfaces/4-event-bubbling/bubble-target.view/example.css delete mode 100755 2-ui/2-events-and-interfaces/4-event-bubbling/bubble-target.view/index.html delete mode 100755 2-ui/2-events-and-interfaces/4-event-bubbling/bubble-target.view/script.js delete mode 100755 2-ui/2-events-and-interfaces/4-event-bubbling/capture.view/example.css delete mode 100755 2-ui/2-events-and-interfaces/4-event-bubbling/capture.view/index.html delete mode 100755 2-ui/2-events-and-interfaces/4-event-bubbling/capture.view/script.js delete mode 100644 2-ui/2-events-and-interfaces/4-event-bubbling/event-order-bubbling.png delete mode 100644 2-ui/2-events-and-interfaces/4-event-bubbling/event-order-bubbling@2x.png delete mode 100644 2-ui/2-events-and-interfaces/4-event-bubbling/eventflow.png delete mode 100644 2-ui/2-events-and-interfaces/4-event-bubbling/eventflow@2x.png delete mode 100644 2-ui/2-events-and-interfaces/5-event-delegation/1-hide-message-delegate/solution.md delete mode 100755 2-ui/2-events-and-interfaces/5-event-delegation/1-hide-message-delegate/solution.view/index.html delete mode 100755 2-ui/2-events-and-interfaces/5-event-delegation/1-hide-message-delegate/solution.view/messages.css delete mode 100755 2-ui/2-events-and-interfaces/5-event-delegation/1-hide-message-delegate/source.view/index.html delete mode 100755 2-ui/2-events-and-interfaces/5-event-delegation/1-hide-message-delegate/source.view/messages.css delete mode 100644 2-ui/2-events-and-interfaces/5-event-delegation/1-hide-message-delegate/task.md delete mode 100644 2-ui/2-events-and-interfaces/5-event-delegation/2-sliding-tree/solution.md delete mode 100755 2-ui/2-events-and-interfaces/5-event-delegation/2-sliding-tree/solution.view/index.html delete mode 100755 2-ui/2-events-and-interfaces/5-event-delegation/2-sliding-tree/source.view/index.html delete mode 100644 2-ui/2-events-and-interfaces/5-event-delegation/2-sliding-tree/task.md delete mode 100644 2-ui/2-events-and-interfaces/5-event-delegation/3-sort-table/solution.md delete mode 100755 2-ui/2-events-and-interfaces/5-event-delegation/3-sort-table/solution.view/index.html delete mode 100755 2-ui/2-events-and-interfaces/5-event-delegation/3-sort-table/source.view/index.html delete mode 100644 2-ui/2-events-and-interfaces/5-event-delegation/3-sort-table/task.md delete mode 100644 2-ui/2-events-and-interfaces/5-event-delegation/article.md delete mode 100644 2-ui/2-events-and-interfaces/5-event-delegation/bagua-bubble.png delete mode 100644 2-ui/2-events-and-interfaces/5-event-delegation/bagua-bubble@2x.png delete mode 100755 2-ui/2-events-and-interfaces/5-event-delegation/bagua.view/bagua.css delete mode 100755 2-ui/2-events-and-interfaces/5-event-delegation/bagua.view/index.html delete mode 100644 2-ui/2-events-and-interfaces/6-behavior/1-behavior-tooltip/solution.md delete mode 100644 2-ui/2-events-and-interfaces/6-behavior/1-behavior-tooltip/solution.view/index.html delete mode 100644 2-ui/2-events-and-interfaces/6-behavior/1-behavior-tooltip/source.view/index.html delete mode 100644 2-ui/2-events-and-interfaces/6-behavior/1-behavior-tooltip/task.md delete mode 100644 2-ui/2-events-and-interfaces/6-behavior/article.md delete mode 100644 2-ui/2-events-and-interfaces/7-default-browser-action/1-why-return-false-fails/solution.md delete mode 100644 2-ui/2-events-and-interfaces/7-default-browser-action/1-why-return-false-fails/task.md delete mode 100644 2-ui/2-events-and-interfaces/7-default-browser-action/2-catch-link-navigation/solution.md delete mode 100755 2-ui/2-events-and-interfaces/7-default-browser-action/2-catch-link-navigation/solution.view/index.html delete mode 100755 2-ui/2-events-and-interfaces/7-default-browser-action/2-catch-link-navigation/source.view/index.html delete mode 100644 2-ui/2-events-and-interfaces/7-default-browser-action/2-catch-link-navigation/task.md delete mode 100644 2-ui/2-events-and-interfaces/7-default-browser-action/3-image-gallery/solution.md delete mode 100755 2-ui/2-events-and-interfaces/7-default-browser-action/3-image-gallery/solution.view/gallery.css delete mode 100755 2-ui/2-events-and-interfaces/7-default-browser-action/3-image-gallery/solution.view/index.html delete mode 100755 2-ui/2-events-and-interfaces/7-default-browser-action/3-image-gallery/source.view/gallery.css delete mode 100755 2-ui/2-events-and-interfaces/7-default-browser-action/3-image-gallery/source.view/index.html delete mode 100644 2-ui/2-events-and-interfaces/7-default-browser-action/3-image-gallery/task.md delete mode 100644 2-ui/2-events-and-interfaces/7-default-browser-action/article.md delete mode 100755 2-ui/2-events-and-interfaces/7-default-browser-action/menu.view/index.html delete mode 100755 2-ui/2-events-and-interfaces/7-default-browser-action/menu.view/menu.css delete mode 100755 2-ui/2-events-and-interfaces/7-default-browser-action/menu.view/menu.js delete mode 100644 2-ui/2-events-and-interfaces/8-dispatch-events/article.md delete mode 100644 2-ui/2-events-and-interfaces/index.md delete mode 100644 2-ui/3-event-details/1-mouse-clicks/1-selectable-list/solution.md delete mode 100755 2-ui/3-event-details/1-mouse-clicks/1-selectable-list/solution.view/index.html delete mode 100755 2-ui/3-event-details/1-mouse-clicks/1-selectable-list/source.view/index.html delete mode 100644 2-ui/3-event-details/1-mouse-clicks/1-selectable-list/task.md delete mode 100644 2-ui/3-event-details/1-mouse-clicks/2-tree-coords/solution.md delete mode 100755 2-ui/3-event-details/1-mouse-clicks/2-tree-coords/solution.view/index.html delete mode 100755 2-ui/3-event-details/1-mouse-clicks/2-tree-coords/source.view/index.html delete mode 100644 2-ui/3-event-details/1-mouse-clicks/2-tree-coords/task.md delete mode 100644 2-ui/3-event-details/1-mouse-clicks/article.md delete mode 100644 2-ui/3-event-details/10-onload-ondomcontentloaded/article.md delete mode 100755 2-ui/3-event-details/10-onload-ondomcontentloaded/window-onbeforeunload.view/index.html delete mode 100644 2-ui/3-event-details/11-onload-onerror/1-nice-alt/solution.md delete mode 100755 2-ui/3-event-details/11-onload-onerror/1-nice-alt/solution.view/index.html delete mode 100755 2-ui/3-event-details/11-onload-onerror/1-nice-alt/source.view/index.html delete mode 100644 2-ui/3-event-details/11-onload-onerror/1-nice-alt/task.md delete mode 100644 2-ui/3-event-details/11-onload-onerror/2-load-img-callback/solution.md delete mode 100755 2-ui/3-event-details/11-onload-onerror/2-load-img-callback/solution.view/index.html delete mode 100755 2-ui/3-event-details/11-onload-onerror/2-load-img-callback/source.view/index.html delete mode 100644 2-ui/3-event-details/11-onload-onerror/2-load-img-callback/task.md delete mode 100644 2-ui/3-event-details/11-onload-onerror/3-script-callback/solution.md delete mode 100755 2-ui/3-event-details/11-onload-onerror/3-script-callback/solution.view/go.js delete mode 100755 2-ui/3-event-details/11-onload-onerror/3-script-callback/solution.view/index.html delete mode 100755 2-ui/3-event-details/11-onload-onerror/3-script-callback/source.view/go.js delete mode 100755 2-ui/3-event-details/11-onload-onerror/3-script-callback/source.view/index.html delete mode 100644 2-ui/3-event-details/11-onload-onerror/3-script-callback/task.md delete mode 100644 2-ui/3-event-details/11-onload-onerror/4-scripts-callback/solution.md delete mode 100755 2-ui/3-event-details/11-onload-onerror/4-scripts-callback/solution.view/a.js delete mode 100755 2-ui/3-event-details/11-onload-onerror/4-scripts-callback/solution.view/b.js delete mode 100755 2-ui/3-event-details/11-onload-onerror/4-scripts-callback/solution.view/c.js delete mode 100755 2-ui/3-event-details/11-onload-onerror/4-scripts-callback/solution.view/index.html delete mode 100755 2-ui/3-event-details/11-onload-onerror/4-scripts-callback/source.view/a.js delete mode 100755 2-ui/3-event-details/11-onload-onerror/4-scripts-callback/source.view/b.js delete mode 100755 2-ui/3-event-details/11-onload-onerror/4-scripts-callback/source.view/c.js delete mode 100755 2-ui/3-event-details/11-onload-onerror/4-scripts-callback/source.view/index.html delete mode 100644 2-ui/3-event-details/11-onload-onerror/4-scripts-callback/task.md delete mode 100644 2-ui/3-event-details/11-onload-onerror/article.md delete mode 100644 2-ui/3-event-details/2-unselectable/article.md delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/solution.md delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/solution.view/index.html delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/source.view/index.html delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/task.md delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.md delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.view/hoverIntent.js delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.view/index.html delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.view/style.css delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/hoverIntent.js delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/index.html delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/style.css delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/task.md delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/article.md delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation-2.view/index.html delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation-2.view/script.js delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation-2.view/style.css delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation.view/index.html delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation.view/script.js delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation.view/style.css delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave-table.view/index.html delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave-table.view/script.js delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave-table.view/style.css delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave.view/index.html delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave.view/script.js delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave.view/style.css delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseover-mouseout-from-outside.png delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseover-mouseout-from-outside@2x.png delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseover-mouseout-over-elems.png delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseover-mouseout-over-elems@2x.png delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseover-mouseout.png delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseover-mouseout@2x.png delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseover-to-child.png delete mode 100644 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseover-to-child@2x.png delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-child.view/index.html delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-child.view/script.js delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-child.view/style.css delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-fast.view/index.html delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-fast.view/script.js delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-fast.view/style.css delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout.view/index.html delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout.view/script.js delete mode 100755 2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout.view/style.css delete mode 100644 2-ui/3-event-details/4-drag-and-drop/1-slider/solution.md delete mode 100644 2-ui/3-event-details/4-drag-and-drop/1-slider/solution.view/index.html delete mode 100644 2-ui/3-event-details/4-drag-and-drop/1-slider/solution.view/style.css delete mode 100644 2-ui/3-event-details/4-drag-and-drop/1-slider/source.view/index.html delete mode 100644 2-ui/3-event-details/4-drag-and-drop/1-slider/source.view/style.css delete mode 100644 2-ui/3-event-details/4-drag-and-drop/1-slider/task.md delete mode 100644 2-ui/3-event-details/4-drag-and-drop/2-drag-heroes/solution.md delete mode 100644 2-ui/3-event-details/4-drag-and-drop/2-drag-heroes/solution.view/index.html delete mode 100644 2-ui/3-event-details/4-drag-and-drop/2-drag-heroes/solution.view/soccer.css delete mode 100644 2-ui/3-event-details/4-drag-and-drop/2-drag-heroes/solution.view/soccer.js delete mode 100644 2-ui/3-event-details/4-drag-and-drop/2-drag-heroes/source.view/index.html delete mode 100644 2-ui/3-event-details/4-drag-and-drop/2-drag-heroes/source.view/soccer.css delete mode 100644 2-ui/3-event-details/4-drag-and-drop/2-drag-heroes/source.view/soccer.js delete mode 100644 2-ui/3-event-details/4-drag-and-drop/2-drag-heroes/task.md delete mode 100644 2-ui/3-event-details/4-drag-and-drop/article.md delete mode 100644 2-ui/3-event-details/4-drag-and-drop/ball.view/index.html delete mode 100644 2-ui/3-event-details/4-drag-and-drop/ball2.view/index.html delete mode 100644 2-ui/3-event-details/4-drag-and-drop/ball3.view/index.html delete mode 100644 2-ui/3-event-details/4-drag-and-drop/ball_shift.png delete mode 100644 2-ui/3-event-details/4-drag-and-drop/ball_shift@2x.png delete mode 100644 2-ui/3-event-details/5-drag-and-drop-objects/article.md delete mode 100644 2-ui/3-event-details/5-drag-and-drop-objects/between.png delete mode 100644 2-ui/3-event-details/5-drag-and-drop-objects/dragDemo.view/DragManager.js delete mode 100644 2-ui/3-event-details/5-drag-and-drop-objects/dragDemo.view/dragDemo.css delete mode 100644 2-ui/3-event-details/5-drag-and-drop-objects/dragDemo.view/index.html delete mode 100644 2-ui/3-event-details/5-drag-and-drop-objects/shiftx.png delete mode 100644 2-ui/3-event-details/6-mousewheel/1-scale-with-mouse-wheel/solution.md delete mode 100644 2-ui/3-event-details/6-mousewheel/1-scale-with-mouse-wheel/solution.view/index.html delete mode 100644 2-ui/3-event-details/6-mousewheel/1-scale-with-mouse-wheel/task.md delete mode 100644 2-ui/3-event-details/6-mousewheel/2-no-doc-scroll/solution.md delete mode 100644 2-ui/3-event-details/6-mousewheel/2-no-doc-scroll/solution.view/fix-textarea-scroll.js delete mode 100644 2-ui/3-event-details/6-mousewheel/2-no-doc-scroll/solution.view/index.html delete mode 100644 2-ui/3-event-details/6-mousewheel/2-no-doc-scroll/source.view/index.html delete mode 100644 2-ui/3-event-details/6-mousewheel/2-no-doc-scroll/task.md delete mode 100644 2-ui/3-event-details/6-mousewheel/article.md delete mode 100644 2-ui/3-event-details/6-mousewheel/wheel.view/index.html delete mode 100644 2-ui/3-event-details/7-fixevent/article.md delete mode 100644 2-ui/3-event-details/8-onscroll/1-avatar-above-scroll/solution.md delete mode 100644 2-ui/3-event-details/8-onscroll/1-avatar-above-scroll/solution.view/index.html delete mode 100644 2-ui/3-event-details/8-onscroll/1-avatar-above-scroll/source.view/index.html delete mode 100644 2-ui/3-event-details/8-onscroll/1-avatar-above-scroll/task.md delete mode 100644 2-ui/3-event-details/8-onscroll/2-updown-button/solution.md delete mode 100644 2-ui/3-event-details/8-onscroll/2-updown-button/solution.view/index.html delete mode 100644 2-ui/3-event-details/8-onscroll/2-updown-button/source.view/index.html delete mode 100644 2-ui/3-event-details/8-onscroll/2-updown-button/task.md delete mode 100644 2-ui/3-event-details/8-onscroll/3-load-visible-img/solution.md delete mode 100644 2-ui/3-event-details/8-onscroll/3-load-visible-img/solution.view/index.html delete mode 100644 2-ui/3-event-details/8-onscroll/3-load-visible-img/source.view/index.html delete mode 100644 2-ui/3-event-details/8-onscroll/3-load-visible-img/task.md delete mode 100644 2-ui/3-event-details/8-onscroll/article.md delete mode 100644 2-ui/3-event-details/9-keyboard-events/1-numeric-input/solution.md delete mode 100644 2-ui/3-event-details/9-keyboard-events/1-numeric-input/solution.view/index.html delete mode 100644 2-ui/3-event-details/9-keyboard-events/1-numeric-input/source.view/index.html delete mode 100644 2-ui/3-event-details/9-keyboard-events/1-numeric-input/task.md delete mode 100644 2-ui/3-event-details/9-keyboard-events/2-check-sync-keydown/solution.md delete mode 100644 2-ui/3-event-details/9-keyboard-events/2-check-sync-keydown/solution.view/index.html delete mode 100644 2-ui/3-event-details/9-keyboard-events/2-check-sync-keydown/task.md delete mode 100644 2-ui/3-event-details/9-keyboard-events/article.md delete mode 100644 2-ui/3-event-details/9-keyboard-events/keyboard-dump.view/index.html delete mode 100644 2-ui/3-event-details/9-keyboard-events/keyboard-dump.view/script.js delete mode 100644 2-ui/3-event-details/9-keyboard-events/keyboard-dump.view/style.css delete mode 100644 2-ui/3-event-details/index.md delete mode 100644 2-ui/4-forms-controls/1-form-elements/1-add-select-option/solution.md delete mode 100644 2-ui/4-forms-controls/1-form-elements/1-add-select-option/task.md delete mode 100644 2-ui/4-forms-controls/1-form-elements/article.md delete mode 100755 2-ui/4-forms-controls/1-form-elements/form.png delete mode 100644 2-ui/4-forms-controls/2-focus-blur/1-emulate-placeholder/solution.md delete mode 100755 2-ui/4-forms-controls/2-focus-blur/1-emulate-placeholder/solution.view/index.html delete mode 100755 2-ui/4-forms-controls/2-focus-blur/1-emulate-placeholder/source.view/index.html delete mode 100644 2-ui/4-forms-controls/2-focus-blur/1-emulate-placeholder/task.md delete mode 100644 2-ui/4-forms-controls/2-focus-blur/2-keyboard-mouse/solution.md delete mode 100755 2-ui/4-forms-controls/2-focus-blur/2-keyboard-mouse/solution.view/index.html delete mode 100755 2-ui/4-forms-controls/2-focus-blur/2-keyboard-mouse/source.view/index.html delete mode 100644 2-ui/4-forms-controls/2-focus-blur/2-keyboard-mouse/task.md delete mode 100644 2-ui/4-forms-controls/2-focus-blur/3-hotkeys/solution.md delete mode 100755 2-ui/4-forms-controls/2-focus-blur/3-hotkeys/solution.view/index.html delete mode 100755 2-ui/4-forms-controls/2-focus-blur/3-hotkeys/solution.view/my.css delete mode 100755 2-ui/4-forms-controls/2-focus-blur/3-hotkeys/source.view/index.html delete mode 100755 2-ui/4-forms-controls/2-focus-blur/3-hotkeys/source.view/my.css delete mode 100644 2-ui/4-forms-controls/2-focus-blur/3-hotkeys/task.md delete mode 100644 2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/solution.md delete mode 100644 2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/solution.view/bagua.css delete mode 100644 2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/solution.view/index.html delete mode 100644 2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/solution.view/my.css delete mode 100644 2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/solution.view/script.js delete mode 100644 2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/source.view/bagua.css delete mode 100644 2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/source.view/index.html delete mode 100644 2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/source.view/my.css delete mode 100644 2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/source.view/script.js delete mode 100644 2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/task.md delete mode 100644 2-ui/4-forms-controls/2-focus-blur/6-input-nice-placeholder/solution.md delete mode 100755 2-ui/4-forms-controls/2-focus-blur/6-input-nice-placeholder/solution.view/index.html delete mode 100644 2-ui/4-forms-controls/2-focus-blur/6-input-nice-placeholder/solution.view/style.css delete mode 100755 2-ui/4-forms-controls/2-focus-blur/6-input-nice-placeholder/source.view/index.html delete mode 100644 2-ui/4-forms-controls/2-focus-blur/6-input-nice-placeholder/source.view/style.css delete mode 100644 2-ui/4-forms-controls/2-focus-blur/6-input-nice-placeholder/task.md delete mode 100644 2-ui/4-forms-controls/2-focus-blur/7-capslock-warning-field/solution.md delete mode 100755 2-ui/4-forms-controls/2-focus-blur/7-capslock-warning-field/solution.view/index.html delete mode 100755 2-ui/4-forms-controls/2-focus-blur/7-capslock-warning-field/source.view/index.html delete mode 100644 2-ui/4-forms-controls/2-focus-blur/7-capslock-warning-field/task.md delete mode 100644 2-ui/4-forms-controls/2-focus-blur/article.md delete mode 100644 2-ui/4-forms-controls/3-events-change/1-calculate-capitalization/solution.md delete mode 100755 2-ui/4-forms-controls/3-events-change/1-calculate-capitalization/solution.view/index.html delete mode 100755 2-ui/4-forms-controls/3-events-change/1-calculate-capitalization/source.view/index.html delete mode 100644 2-ui/4-forms-controls/3-events-change/1-calculate-capitalization/task.md delete mode 100644 2-ui/4-forms-controls/3-events-change/article.md delete mode 100644 2-ui/4-forms-controls/4-forms-submit/1-modal-dialog/solution.md delete mode 100755 2-ui/4-forms-controls/4-forms-submit/1-modal-dialog/solution.view/index.html delete mode 100755 2-ui/4-forms-controls/4-forms-submit/1-modal-dialog/source.view/index.html delete mode 100644 2-ui/4-forms-controls/4-forms-submit/1-modal-dialog/task.md delete mode 100644 2-ui/4-forms-controls/4-forms-submit/2-form-validation/solution.md delete mode 100755 2-ui/4-forms-controls/4-forms-submit/2-form-validation/solution.view/index.html delete mode 100755 2-ui/4-forms-controls/4-forms-submit/2-form-validation/source.view/index.html delete mode 100644 2-ui/4-forms-controls/4-forms-submit/2-form-validation/task.md delete mode 100644 2-ui/4-forms-controls/4-forms-submit/article.md delete mode 100644 2-ui/4-forms-controls/index.md delete mode 100644 2-ui/5-widgets/1-architect-intro/article.md delete mode 100644 2-ui/5-widgets/2-widgets-structure/1-clock/solution.md delete mode 100755 2-ui/5-widgets/2-widgets-structure/1-clock/solution.view/clock.js delete mode 100755 2-ui/5-widgets/2-widgets-structure/1-clock/solution.view/index.html delete mode 100755 2-ui/5-widgets/2-widgets-structure/1-clock/source.view/index.html delete mode 100644 2-ui/5-widgets/2-widgets-structure/1-clock/task.md delete mode 100644 2-ui/5-widgets/2-widgets-structure/2-slider-widget/solution.md delete mode 100755 2-ui/5-widgets/2-widgets-structure/2-slider-widget/solution.view/index.html delete mode 100644 2-ui/5-widgets/2-widgets-structure/2-slider-widget/task.md delete mode 100644 2-ui/5-widgets/2-widgets-structure/3-selectable-list-component/solution.md delete mode 100755 2-ui/5-widgets/2-widgets-structure/3-selectable-list-component/solution.view/index.html delete mode 100755 2-ui/5-widgets/2-widgets-structure/3-selectable-list-component/solution.view/listSelect.js delete mode 100755 2-ui/5-widgets/2-widgets-structure/3-selectable-list-component/solution.view/style.css delete mode 100644 2-ui/5-widgets/2-widgets-structure/3-selectable-list-component/task.md delete mode 100644 2-ui/5-widgets/2-widgets-structure/4-voter/solution.md delete mode 100755 2-ui/5-widgets/2-widgets-structure/4-voter/solution.view/index.html delete mode 100755 2-ui/5-widgets/2-widgets-structure/4-voter/source.view/index.html delete mode 100644 2-ui/5-widgets/2-widgets-structure/4-voter/task.md delete mode 100644 2-ui/5-widgets/2-widgets-structure/5-voter-proto/solution.md delete mode 100755 2-ui/5-widgets/2-widgets-structure/5-voter-proto/solution.view/index.html delete mode 100755 2-ui/5-widgets/2-widgets-structure/5-voter-proto/solution.view/style.css delete mode 100755 2-ui/5-widgets/2-widgets-structure/5-voter-proto/solution.view/voter.js delete mode 100644 2-ui/5-widgets/2-widgets-structure/5-voter-proto/task.md delete mode 100644 2-ui/5-widgets/2-widgets-structure/6-voter-add-step/solution.md delete mode 100644 2-ui/5-widgets/2-widgets-structure/6-voter-add-step/solution.view/index.html delete mode 100644 2-ui/5-widgets/2-widgets-structure/6-voter-add-step/solution.view/step-voter.js delete mode 100644 2-ui/5-widgets/2-widgets-structure/6-voter-add-step/solution.view/style.css delete mode 100644 2-ui/5-widgets/2-widgets-structure/6-voter-add-step/solution.view/voter.js delete mode 100644 2-ui/5-widgets/2-widgets-structure/6-voter-add-step/task.md delete mode 100644 2-ui/5-widgets/2-widgets-structure/article.md delete mode 100644 2-ui/5-widgets/2-widgets-structure/menu-dom.view/index.html delete mode 100644 2-ui/5-widgets/2-widgets-structure/menu-dom.view/menu.js delete mode 100644 2-ui/5-widgets/2-widgets-structure/menu-dom.view/style.css delete mode 100644 2-ui/5-widgets/2-widgets-structure/menu.view/index.html delete mode 100644 2-ui/5-widgets/2-widgets-structure/menu.view/menu.js delete mode 100644 2-ui/5-widgets/2-widgets-structure/menu.view/style.css delete mode 100644 2-ui/5-widgets/3-widgets-markup/1-semantic-menu/solution.md delete mode 100755 2-ui/5-widgets/3-widgets-markup/1-semantic-menu/solution.view/index.html delete mode 100755 2-ui/5-widgets/3-widgets-markup/1-semantic-menu/source.view/index.html delete mode 100644 2-ui/5-widgets/3-widgets-markup/1-semantic-menu/task.md delete mode 100644 2-ui/5-widgets/3-widgets-markup/article.md delete mode 100644 2-ui/5-widgets/4-template-lodash/1-table-template/solution.md delete mode 100755 2-ui/5-widgets/4-template-lodash/1-table-template/solution.view/index.html delete mode 100755 2-ui/5-widgets/4-template-lodash/1-table-template/source.view/index.html delete mode 100644 2-ui/5-widgets/4-template-lodash/1-table-template/task.md delete mode 100644 2-ui/5-widgets/4-template-lodash/2-template-display-none/solution.md delete mode 100644 2-ui/5-widgets/4-template-lodash/2-template-display-none/task.md delete mode 100644 2-ui/5-widgets/4-template-lodash/3-menu-template/solution.md delete mode 100755 2-ui/5-widgets/4-template-lodash/3-menu-template/solution.view/index.html delete mode 100755 2-ui/5-widgets/4-template-lodash/3-menu-template/solution.view/menu.css delete mode 100755 2-ui/5-widgets/4-template-lodash/3-menu-template/solution.view/menu.js delete mode 100755 2-ui/5-widgets/4-template-lodash/3-menu-template/source.view/index.html delete mode 100755 2-ui/5-widgets/4-template-lodash/3-menu-template/source.view/menu.css delete mode 100755 2-ui/5-widgets/4-template-lodash/3-menu-template/source.view/menu.js delete mode 100644 2-ui/5-widgets/4-template-lodash/3-menu-template/task.md delete mode 100644 2-ui/5-widgets/4-template-lodash/article.md delete mode 100644 2-ui/5-widgets/4-template-lodash/menu-template.view/index.html delete mode 100644 2-ui/5-widgets/4-template-lodash/menu-template.view/menu.css delete mode 100644 2-ui/5-widgets/4-template-lodash/menu-template.view/menu.js delete mode 100755 2-ui/5-widgets/4-template-lodash/template-debugger.png delete mode 100755 2-ui/5-widgets/4-template-lodash/template-debugger@2x.png delete mode 100644 2-ui/5-widgets/4-template-lodash/template-error-sourceurl.view/index.html delete mode 100644 2-ui/5-widgets/5-custom-events/1-voter-events/solution.md delete mode 100755 2-ui/5-widgets/5-custom-events/1-voter-events/solution.view/index.html delete mode 100644 2-ui/5-widgets/5-custom-events/1-voter-events/solution.view/voter.js delete mode 100644 2-ui/5-widgets/5-custom-events/1-voter-events/task.md delete mode 100644 2-ui/5-widgets/5-custom-events/2-selectable-list-evented/solution.md delete mode 100755 2-ui/5-widgets/5-custom-events/2-selectable-list-evented/solution.view/index.html delete mode 100644 2-ui/5-widgets/5-custom-events/2-selectable-list-evented/solution.view/listSelect.js delete mode 100644 2-ui/5-widgets/5-custom-events/2-selectable-list-evented/solution.view/style.css delete mode 100644 2-ui/5-widgets/5-custom-events/2-selectable-list-evented/task.md delete mode 100644 2-ui/5-widgets/5-custom-events/3-custom-select/solution.md delete mode 100755 2-ui/5-widgets/5-custom-events/3-custom-select/solution.view/customselect.css delete mode 100755 2-ui/5-widgets/5-custom-events/3-custom-select/solution.view/customselect.js delete mode 100755 2-ui/5-widgets/5-custom-events/3-custom-select/solution.view/index.html delete mode 100644 2-ui/5-widgets/5-custom-events/3-custom-select/source.view/customselect.css delete mode 100644 2-ui/5-widgets/5-custom-events/3-custom-select/source.view/customselect.js delete mode 100755 2-ui/5-widgets/5-custom-events/3-custom-select/source.view/index.html delete mode 100644 2-ui/5-widgets/5-custom-events/3-custom-select/task.md delete mode 100644 2-ui/5-widgets/5-custom-events/4-slider-events/slider.png delete mode 100644 2-ui/5-widgets/5-custom-events/4-slider-events/solution.md delete mode 100644 2-ui/5-widgets/5-custom-events/4-slider-events/solution.view/index.html delete mode 100644 2-ui/5-widgets/5-custom-events/4-slider-events/solution.view/slider.css delete mode 100644 2-ui/5-widgets/5-custom-events/4-slider-events/solution.view/slider.js delete mode 100644 2-ui/5-widgets/5-custom-events/4-slider-events/task.md delete mode 100644 2-ui/5-widgets/5-custom-events/article.md delete mode 100755 2-ui/5-widgets/5-custom-events/menu-callback.view/index.html delete mode 100644 2-ui/5-widgets/5-custom-events/menu-callback.view/menu.css delete mode 100755 2-ui/5-widgets/5-custom-events/menu-callback.view/menu.js delete mode 100755 2-ui/5-widgets/5-custom-events/menu-event.view/index.html delete mode 100644 2-ui/5-widgets/5-custom-events/menu-event.view/menu.css delete mode 100755 2-ui/5-widgets/5-custom-events/menu-event.view/menu.js delete mode 100644 2-ui/5-widgets/6-what-next/article.md delete mode 100644 2-ui/5-widgets/index.md delete mode 100644 2-ui/index.md delete mode 100644 3-webcomponents/1-webcomponents-intro/article.md delete mode 100644 3-webcomponents/1-webcomponents-intro/satellite-expanded.jpg delete mode 100644 3-webcomponents/1-webcomponents-intro/satellite-expanded@2x.jpg delete mode 100644 3-webcomponents/1-webcomponents-intro/satellite.jpg delete mode 100644 3-webcomponents/1-webcomponents-intro/satellite@2x.jpg delete mode 100644 3-webcomponents/1-webcomponents-intro/twitter-components.png delete mode 100644 3-webcomponents/1-webcomponents-intro/twitter-components@2x.png delete mode 100644 3-webcomponents/2-webcomponent-core/article.md delete mode 100644 3-webcomponents/3-shadow-dom/article.md delete mode 100644 3-webcomponents/3-shadow-dom/shadow-content.png delete mode 100644 3-webcomponents/3-shadow-dom/shadow-content@2x.png delete mode 100644 3-webcomponents/3-shadow-dom/shadow-dom-chrome.png delete mode 100644 3-webcomponents/3-shadow-dom/shadow-dom-chrome@2x.png delete mode 100644 3-webcomponents/4-template-tag/article.md delete mode 100644 3-webcomponents/5-css-scoping/article.md delete mode 100644 3-webcomponents/6-link-import/article.md delete mode 100644 3-webcomponents/6-link-import/import-show.view/index.html delete mode 100644 3-webcomponents/6-link-import/import-show.view/timer.html delete mode 100644 3-webcomponents/6-link-import/import-style.view/index.html delete mode 100644 3-webcomponents/6-link-import/import-style.view/timer.html delete mode 100644 3-webcomponents/7-webcomponent-build/article.md delete mode 100644 3-webcomponents/7-webcomponent-build/message.view/index.html delete mode 100644 3-webcomponents/7-webcomponent-build/message.view/ui-message.html delete mode 100644 3-webcomponents/7-webcomponent-build/ui-slider.view/index.html delete mode 100644 3-webcomponents/7-webcomponent-build/ui-slider.view/jquery.html delete mode 100644 3-webcomponents/7-webcomponent-build/ui-slider.view/ui-slider.html delete mode 100644 3-webcomponents/index.md delete mode 100644 4-ajax/1-ajax-intro/article.md delete mode 100644 4-ajax/1-ajax-intro/suggest.png delete mode 100644 4-ajax/1-ajax-intro/tree.html delete mode 100644 4-ajax/10-ajax-jsonp/article.md delete mode 100644 4-ajax/10-ajax-jsonp/jsonp.view/index.html delete mode 100644 4-ajax/10-ajax-jsonp/jsonp.view/scriptRequest.js delete mode 100644 4-ajax/10-ajax-jsonp/jsonp.view/server.js delete mode 100644 4-ajax/11-server-sent-events/article.md delete mode 100644 4-ajax/11-server-sent-events/eventsource.view/index.html delete mode 100644 4-ajax/11-server-sent-events/eventsource.view/server.js delete mode 100644 4-ajax/12-ajax-iframe/article.md delete mode 100644 4-ajax/12-ajax-iframe/comet.png delete mode 100644 4-ajax/12-ajax-iframe/date-activex.view/activex.js delete mode 100644 4-ajax/12-ajax-iframe/date-activex.view/index.html delete mode 100644 4-ajax/12-ajax-iframe/date-activex.view/server.js delete mode 100644 4-ajax/12-ajax-iframe/date-comet.view/iframeComet.js delete mode 100644 4-ajax/12-ajax-iframe/date-comet.view/index.html delete mode 100644 4-ajax/12-ajax-iframe/date-comet.view/server.js delete mode 100644 4-ajax/12-ajax-iframe/date.view/iframe.js delete mode 100644 4-ajax/12-ajax-iframe/date.view/index.html delete mode 100644 4-ajax/12-ajax-iframe/date.view/server.js delete mode 100644 4-ajax/13-csrf/article.md delete mode 100644 4-ajax/14-fetch/article.md delete mode 100644 4-ajax/14-fetch/user.js delete mode 100644 4-ajax/15-ajax-summary/article.md delete mode 100644 4-ajax/2-ajax-nodejs/article.md delete mode 100644 4-ajax/2-ajax-nodejs/example/index.html delete mode 100644 4-ajax/2-ajax-nodejs/example/server.js delete mode 100644 4-ajax/3-ajax-xmlhttprequest/1-phones-list/phones-async.view/index.html delete mode 100644 4-ajax/3-ajax-xmlhttprequest/1-phones-list/phones-async.view/phones.json delete mode 100644 4-ajax/3-ajax-xmlhttprequest/1-phones-list/phones-async.view/server.js delete mode 100644 4-ajax/3-ajax-xmlhttprequest/1-phones-list/phones-list.view/index.html delete mode 100644 4-ajax/3-ajax-xmlhttprequest/1-phones-list/phones-list.view/phones.json delete mode 100644 4-ajax/3-ajax-xmlhttprequest/1-phones-list/phones-list.view/server.js delete mode 100644 4-ajax/3-ajax-xmlhttprequest/1-phones-list/solution.md delete mode 100644 4-ajax/3-ajax-xmlhttprequest/1-phones-list/task.md delete mode 100644 4-ajax/3-ajax-xmlhttprequest/article.md delete mode 100644 4-ajax/3-ajax-xmlhttprequest/phones-async.view/index.html delete mode 100644 4-ajax/3-ajax-xmlhttprequest/phones-async.view/phones.json delete mode 100644 4-ajax/3-ajax-xmlhttprequest/phones-async.view/server.js delete mode 100644 4-ajax/3-ajax-xmlhttprequest/phones.view/index.html delete mode 100644 4-ajax/3-ajax-xmlhttprequest/phones.view/phones.json delete mode 100644 4-ajax/3-ajax-xmlhttprequest/phones.view/server.js delete mode 100644 4-ajax/3-ajax-xmlhttprequest/readystate.view/index.html delete mode 100644 4-ajax/3-ajax-xmlhttprequest/readystate.view/server.js delete mode 100644 4-ajax/4-xhr-forms/article.md delete mode 100644 4-ajax/5-xhr-crossdomain/1-do-we-need-origin/solution.md delete mode 100644 4-ajax/5-xhr-crossdomain/1-do-we-need-origin/task.md delete mode 100644 4-ajax/5-xhr-crossdomain/article.md delete mode 100644 4-ajax/5-xhr-crossdomain/xhr-another-domain.png delete mode 100644 4-ajax/5-xhr-crossdomain/xhr-another-domain@2x.png delete mode 100644 4-ajax/5-xhr-crossdomain/xhr-preflight.png delete mode 100644 4-ajax/5-xhr-crossdomain/xhr-preflight@2x.png delete mode 100644 4-ajax/6-xhr-onprogress/article.md delete mode 100644 4-ajax/6-xhr-onprogress/progress.view/index.html delete mode 100644 4-ajax/6-xhr-onprogress/progress.view/server.js delete mode 100644 4-ajax/7-xhr-resume/article.md delete mode 100644 4-ajax/7-xhr-resume/upload-resume.view/index.html delete mode 100644 4-ajax/7-xhr-resume/upload-resume.view/server.js delete mode 100644 4-ajax/7-xhr-resume/upload-resume.view/uploader.js delete mode 100644 4-ajax/8-xhr-longpoll/article.md delete mode 100644 4-ajax/8-xhr-longpoll/longpoll.png delete mode 100644 4-ajax/8-xhr-longpoll/longpoll.view/browser.js delete mode 100644 4-ajax/8-xhr-longpoll/longpoll.view/index.html delete mode 100644 4-ajax/8-xhr-longpoll/longpoll.view/server.js delete mode 100644 4-ajax/9-websockets/article.md delete mode 100644 4-ajax/9-websockets/websocket.zip delete mode 100644 4-ajax/index.md delete mode 100644 5-animation/1-bezier/article.md delete mode 100644 5-animation/1-bezier/bezier-car.png delete mode 100644 5-animation/1-bezier/bezier-car@2x.png delete mode 100644 5-animation/1-bezier/bezier-letter.png delete mode 100644 5-animation/1-bezier/bezier-letter@2x.png delete mode 100644 5-animation/1-bezier/bezier-vase.png delete mode 100644 5-animation/1-bezier/bezier-vase@2x.png delete mode 100644 5-animation/1-bezier/bezier2.png delete mode 100644 5-animation/1-bezier/bezier2@2x.png delete mode 100644 5-animation/1-bezier/bezier3-draw1.png delete mode 100644 5-animation/1-bezier/bezier3-draw1@2x.png delete mode 100644 5-animation/1-bezier/bezier3-draw2.png delete mode 100644 5-animation/1-bezier/bezier3-draw2@2x.png delete mode 100644 5-animation/1-bezier/bezier3-e.png delete mode 100644 5-animation/1-bezier/bezier3-e@2x.png delete mode 100644 5-animation/1-bezier/bezier3.png delete mode 100644 5-animation/1-bezier/bezier3@2x.png delete mode 100644 5-animation/1-bezier/bezier4-e.png delete mode 100644 5-animation/1-bezier/bezier4-e@2x.png delete mode 100644 5-animation/1-bezier/bezier4.png delete mode 100644 5-animation/1-bezier/bezier4@2x.png delete mode 100644 5-animation/1-bezier/demo.svg delete mode 100644 5-animation/1-bezier/pause.png delete mode 100644 5-animation/1-bezier/play.png delete mode 100644 5-animation/2-css-transitions/1-animate-logo-css/solution.md delete mode 100644 5-animation/2-css-transitions/1-animate-logo-css/solution.view/index.html delete mode 100644 5-animation/2-css-transitions/1-animate-logo-css/source.view/index.html delete mode 100644 5-animation/2-css-transitions/1-animate-logo-css/task.md delete mode 100644 5-animation/2-css-transitions/2-animate-logo-bezier-css/bezier-up.png delete mode 100644 5-animation/2-css-transitions/2-animate-logo-bezier-css/bezier-up@2x.png delete mode 100644 5-animation/2-css-transitions/2-animate-logo-bezier-css/solution.md delete mode 100644 5-animation/2-css-transitions/2-animate-logo-bezier-css/solution.view/index.html delete mode 100644 5-animation/2-css-transitions/2-animate-logo-bezier-css/task.md delete mode 100644 5-animation/2-css-transitions/article.md delete mode 100644 5-animation/2-css-transitions/bezier-linear.png delete mode 100644 5-animation/2-css-transitions/bezier-linear@2x.png delete mode 100644 5-animation/2-css-transitions/bezier-train-over.png delete mode 100644 5-animation/2-css-transitions/bezier-train-over@2x.png delete mode 100644 5-animation/2-css-transitions/boat.view/index.html delete mode 100644 5-animation/2-css-transitions/boat.view/style.css delete mode 100644 5-animation/2-css-transitions/digits-negative-delay.view/index.html delete mode 100644 5-animation/2-css-transitions/digits-negative-delay.view/script.js delete mode 100644 5-animation/2-css-transitions/digits-negative-delay.view/style.css delete mode 100644 5-animation/2-css-transitions/digits.view/index.html delete mode 100644 5-animation/2-css-transitions/digits.view/script.js delete mode 100644 5-animation/2-css-transitions/digits.view/style.css delete mode 100644 5-animation/2-css-transitions/ease-in-out.png delete mode 100644 5-animation/2-css-transitions/ease-in-out@2x.png delete mode 100644 5-animation/2-css-transitions/ease-in.png delete mode 100644 5-animation/2-css-transitions/ease-in@2x.png delete mode 100644 5-animation/2-css-transitions/ease-out.png delete mode 100644 5-animation/2-css-transitions/ease-out@2x.png delete mode 100644 5-animation/2-css-transitions/ease.png delete mode 100644 5-animation/2-css-transitions/ease@2x.png delete mode 100644 5-animation/2-css-transitions/step-end.view/index.html delete mode 100644 5-animation/2-css-transitions/step-end.view/style.css delete mode 100644 5-animation/2-css-transitions/step.view/index.html delete mode 100644 5-animation/2-css-transitions/step.view/style.css delete mode 100644 5-animation/2-css-transitions/train-curve.png delete mode 100644 5-animation/2-css-transitions/train-curve@2x.png delete mode 100644 5-animation/2-css-transitions/train-linear.view/index.html delete mode 100644 5-animation/2-css-transitions/train-linear.view/style.css delete mode 100644 5-animation/2-css-transitions/train-over.view/index.html delete mode 100644 5-animation/2-css-transitions/train-over.view/style.css delete mode 100644 5-animation/2-css-transitions/train.view/index.html delete mode 100644 5-animation/2-css-transitions/train.view/style.css delete mode 100644 5-animation/3-js-animation/1-animate-ball/solution.md delete mode 100644 5-animation/3-js-animation/1-animate-ball/solution.view/index.html delete mode 100644 5-animation/3-js-animation/1-animate-ball/solution.view/style.css delete mode 100644 5-animation/3-js-animation/1-animate-ball/source.view/index.html delete mode 100644 5-animation/3-js-animation/1-animate-ball/source.view/style.css delete mode 100644 5-animation/3-js-animation/1-animate-ball/task.md delete mode 100644 5-animation/3-js-animation/2-animate-ball-hops/solution.md delete mode 100644 5-animation/3-js-animation/2-animate-ball-hops/solution.view/index.html delete mode 100644 5-animation/3-js-animation/2-animate-ball-hops/solution.view/style.css delete mode 100644 5-animation/3-js-animation/2-animate-ball-hops/task.md delete mode 100644 5-animation/3-js-animation/article.md delete mode 100644 5-animation/3-js-animation/back.png delete mode 100644 5-animation/3-js-animation/back.view/index.html delete mode 100644 5-animation/3-js-animation/back.view/style.css delete mode 100644 5-animation/3-js-animation/back@2x.png delete mode 100644 5-animation/3-js-animation/bezier-linear.png delete mode 100644 5-animation/3-js-animation/bezier-linear@2x.png delete mode 100644 5-animation/3-js-animation/bounce-easeinout.view/index.html delete mode 100644 5-animation/3-js-animation/bounce-easeinout.view/style.css delete mode 100644 5-animation/3-js-animation/bounce-easeout.view/index.html delete mode 100644 5-animation/3-js-animation/bounce-easeout.view/style.css delete mode 100644 5-animation/3-js-animation/bounce-inout.png delete mode 100644 5-animation/3-js-animation/bounce-inout@2x.png delete mode 100644 5-animation/3-js-animation/bounce.view/index.html delete mode 100644 5-animation/3-js-animation/bounce.view/style.css delete mode 100644 5-animation/3-js-animation/circ-ease.png delete mode 100644 5-animation/3-js-animation/circ-ease@2x.png delete mode 100644 5-animation/3-js-animation/circ.png delete mode 100644 5-animation/3-js-animation/circ.view/index.html delete mode 100644 5-animation/3-js-animation/circ.view/style.css delete mode 100644 5-animation/3-js-animation/circ@2x.png delete mode 100644 5-animation/3-js-animation/elastic.png delete mode 100644 5-animation/3-js-animation/elastic.view/index.html delete mode 100644 5-animation/3-js-animation/elastic.view/style.css delete mode 100644 5-animation/3-js-animation/elastic@2x.png delete mode 100644 5-animation/3-js-animation/linear.png delete mode 100644 5-animation/3-js-animation/linear@2x.png delete mode 100644 5-animation/3-js-animation/move-raf.view/index.html delete mode 100644 5-animation/3-js-animation/move.view/index.html delete mode 100644 5-animation/3-js-animation/quad.png delete mode 100644 5-animation/3-js-animation/quad.view/index.html delete mode 100644 5-animation/3-js-animation/quad.view/style.css delete mode 100644 5-animation/3-js-animation/quad@2x.png delete mode 100644 5-animation/3-js-animation/quint.png delete mode 100644 5-animation/3-js-animation/quint.view/index.html delete mode 100644 5-animation/3-js-animation/quint.view/style.css delete mode 100644 5-animation/3-js-animation/quint@2x.png delete mode 100644 5-animation/3-js-animation/text.view/index.html delete mode 100644 5-animation/3-js-animation/text.view/style.css delete mode 100644 5-animation/3-js-animation/width.view/animate.js delete mode 100644 5-animation/3-js-animation/width.view/index.html delete mode 100644 5-animation/index.md delete mode 100644 6-optimize/1-optimize-intro/article.md delete mode 100644 6-optimize/2-minification/article.md delete mode 100644 6-optimize/2-minification/my.png delete mode 100644 6-optimize/2-minification/my.svg delete mode 100644 6-optimize/2-minification/my@2x.png delete mode 100644 6-optimize/3-better-minification/article.md delete mode 100644 6-optimize/4-memory-leaks/article.md delete mode 100644 6-optimize/4-memory-leaks/chrome.png delete mode 100644 6-optimize/4-memory-leaks/goodluck.png delete mode 100644 6-optimize/4-memory-leaks/ie1.png delete mode 100644 6-optimize/4-memory-leaks/ie2.png delete mode 100644 6-optimize/4-memory-leaks/ie9_disable1.png delete mode 100644 6-optimize/4-memory-leaks/ie9_disable2.png delete mode 100644 6-optimize/4-memory-leaks/leak-ie8-2.view/index.html delete mode 100644 6-optimize/4-memory-leaks/leak-ie8-table.view/index.html delete mode 100644 6-optimize/4-memory-leaks/leak-ie8-widget.view/index.html delete mode 100644 6-optimize/4-memory-leaks/leak-ie8-xhr.view/index.html delete mode 100644 6-optimize/4-memory-leaks/leak-ie8.view/index.html delete mode 100644 6-optimize/4-memory-leaks/leak-xhr-2.png delete mode 100644 6-optimize/4-memory-leaks/leak-xhr-2@2x.png delete mode 100644 6-optimize/4-memory-leaks/leak-xhr.png delete mode 100644 6-optimize/4-memory-leaks/leak-xhr@2x.png delete mode 100644 6-optimize/5-memory-leaks-jquery/article.md delete mode 100644 6-optimize/6-memory-removechild-innerhtml/article.md delete mode 100644 6-optimize/6-memory-removechild-innerhtml/html-innerhtml.png delete mode 100644 6-optimize/6-memory-removechild-innerhtml/html-list.png delete mode 100644 6-optimize/6-memory-removechild-innerhtml/html.png delete mode 100644 6-optimize/7-gcc-advanced-optimization/article.md delete mode 100644 6-optimize/8-gcc-check-types/article.md delete mode 100644 6-optimize/9-gcc-closure-library/article.md delete mode 100644 6-optimize/index.md delete mode 100644 7-frames-and-windows/1-window-methods/article.md delete mode 100644 7-frames-and-windows/2-iframes/article.md delete mode 100644 7-frames-and-windows/2-iframes/sandbox.view/index.html delete mode 100644 7-frames-and-windows/2-iframes/sandbox.view/sandboxed.html delete mode 100644 7-frames-and-windows/3-same-origin-policy/article.md delete mode 100644 7-frames-and-windows/4-cross-window-messaging-with-postmessage/article.md delete mode 100644 7-frames-and-windows/5-window-focus/article.md delete mode 100644 7-frames-and-windows/6-clickjacking/article.md delete mode 100644 7-frames-and-windows/6-clickjacking/clickjacking-visible.view/facebook.html delete mode 100644 7-frames-and-windows/6-clickjacking/clickjacking-visible.view/index.html delete mode 100644 7-frames-and-windows/6-clickjacking/clickjacking.view/facebook.html delete mode 100644 7-frames-and-windows/6-clickjacking/clickjacking.view/index.html delete mode 100644 7-frames-and-windows/6-clickjacking/top-location.view/iframe.html delete mode 100644 7-frames-and-windows/6-clickjacking/top-location.view/index.html delete mode 100644 7-frames-and-windows/index.md delete mode 100644 8-css-for-js/1-css-why/article.md delete mode 100644 8-css-for-js/10-box-sizing/article.md delete mode 100644 8-css-for-js/10-box-sizing/border-box.png delete mode 100644 8-css-for-js/10-box-sizing/border-box@2x.png delete mode 100644 8-css-for-js/11-margin/1-failing-margins/solution.md delete mode 100644 8-css-for-js/11-margin/1-failing-margins/task.md delete mode 100644 8-css-for-js/11-margin/2-position-text-into-input/solution.md delete mode 100644 8-css-for-js/11-margin/2-position-text-into-input/solution.view/index.html delete mode 100644 8-css-for-js/11-margin/2-position-text-into-input/source.view/index.html delete mode 100644 8-css-for-js/11-margin/2-position-text-into-input/task.md delete mode 100644 8-css-for-js/11-margin/article.md delete mode 100644 8-css-for-js/11-margin/h2-margin-top-position.view/index.html delete mode 100644 8-css-for-js/11-margin/h2-margin-top.view/index.html delete mode 100644 8-css-for-js/11-margin/hr-margin-left-src.view/index.html delete mode 100644 8-css-for-js/11-margin/hr-margin-left.view/index.html delete mode 100644 8-css-for-js/11-margin/negative-margin-bottom.view/index.html delete mode 100644 8-css-for-js/12-space-under-img/article.md delete mode 100644 8-css-for-js/12-space-under-img/block.view/index.html delete mode 100644 8-css-for-js/12-space-under-img/inline-p.view/index.html delete mode 100644 8-css-for-js/12-space-under-img/inline.view/index.html delete mode 100644 8-css-for-js/12-space-under-img/valign-p.view/index.html delete mode 100644 8-css-for-js/12-space-under-img/valign-small-lh.view/index.html delete mode 100644 8-css-for-js/12-space-under-img/valign-small.view/index.html delete mode 100644 8-css-for-js/12-space-under-img/valign.view/index.html delete mode 100644 8-css-for-js/13-overflow/article.md delete mode 100644 8-css-for-js/14-height-percent/article.md delete mode 100644 8-css-for-js/14-height-percent/height-percent-float-exact.view/index.html delete mode 100644 8-css-for-js/14-height-percent/height-percent-float.view/index.html delete mode 100644 8-css-for-js/14-height-percent/height-percent.view/index.html delete mode 100644 8-css-for-js/15-css-selectors/1-select-elements-selector/index.html delete mode 100644 8-css-for-js/15-css-selectors/1-select-elements-selector/solution.md delete mode 100644 8-css-for-js/15-css-selectors/1-select-elements-selector/source.view/index.html delete mode 100644 8-css-for-js/15-css-selectors/1-select-elements-selector/task.md delete mode 100644 8-css-for-js/15-css-selectors/2-margin-between-pairs-size-1/solution.md delete mode 100644 8-css-for-js/15-css-selectors/2-margin-between-pairs-size-1/solution.view/index.html delete mode 100644 8-css-for-js/15-css-selectors/2-margin-between-pairs-size-1/source.view/index.html delete mode 100644 8-css-for-js/15-css-selectors/2-margin-between-pairs-size-1/task.md delete mode 100644 8-css-for-js/15-css-selectors/3-margin-between-pairs/index.html delete mode 100644 8-css-for-js/15-css-selectors/3-margin-between-pairs/solution.md delete mode 100644 8-css-for-js/15-css-selectors/3-margin-between-pairs/solution.view/index.html delete mode 100644 8-css-for-js/15-css-selectors/3-margin-between-pairs/source.view/index.html delete mode 100644 8-css-for-js/15-css-selectors/3-margin-between-pairs/task.md delete mode 100644 8-css-for-js/15-css-selectors/article.md delete mode 100644 8-css-for-js/15-css-selectors/nthchild-type.view/index.html delete mode 100644 8-css-for-js/15-css-selectors/nthchild.view/index.html delete mode 100644 8-css-for-js/15-css-selectors/relation.view/index.html delete mode 100644 8-css-for-js/17-css-sprite/article.gif delete mode 100644 8-css-for-js/17-css-sprite/article.md delete mode 100644 8-css-for-js/17-css-sprite/height48.view/index.html delete mode 100644 8-css-for-js/17-css-sprite/icons.gif delete mode 100644 8-css-for-js/17-css-sprite/minus.gif delete mode 100644 8-css-for-js/17-css-sprite/plus.gif delete mode 100644 8-css-for-js/17-css-sprite/sprite-example/index.html delete mode 100644 8-css-for-js/17-css-sprite/sprite-tree-1/height48.view/index.html delete mode 100644 8-css-for-js/17-css-sprite/sprite-tree-1/index.html delete mode 100644 8-css-for-js/17-css-sprite/sprite-tree-src.view/index.html delete mode 100644 8-css-for-js/17-css-sprite/sprite-tree.view/index.html delete mode 100644 8-css-for-js/17-css-sprite/sprites-example-lines2.png delete mode 100644 8-css-for-js/17-css-sprite/sprites-example.png delete mode 100644 8-css-for-js/18-css-format/article.md delete mode 100644 8-css-for-js/2-css-units/article.md delete mode 100644 8-css-for-js/3-display/article.md delete mode 100644 8-css-for-js/4-float/1-inline-block-vs-float/gallery-float-diffsize.png delete mode 100644 8-css-for-js/4-float/1-inline-block-vs-float/gallery-float-diffsize.view/index.html delete mode 100644 8-css-for-js/4-float/1-inline-block-vs-float/gallery-inline-block.view/index.html delete mode 100644 8-css-for-js/4-float/1-inline-block-vs-float/solution.md delete mode 100644 8-css-for-js/4-float/1-inline-block-vs-float/solution.view/index.html delete mode 100644 8-css-for-js/4-float/1-inline-block-vs-float/task.md delete mode 100644 8-css-for-js/4-float/2-tree-with-multiline-nodes/solution.md delete mode 100644 8-css-for-js/4-float/2-tree-with-multiline-nodes/solution.view/index.html delete mode 100644 8-css-for-js/4-float/2-tree-with-multiline-nodes/source.view/index.html delete mode 100644 8-css-for-js/4-float/2-tree-with-multiline-nodes/task.md delete mode 100644 8-css-for-js/4-float/3-paginator-css/nav-div-wrong/arrow-left.jpg delete mode 100644 8-css-for-js/4-float/3-paginator-css/nav-div-wrong/arrow-right.jpg delete mode 100644 8-css-for-js/4-float/3-paginator-css/nav-div-wrong/index.html delete mode 100644 8-css-for-js/4-float/3-paginator-css/solution.md delete mode 100644 8-css-for-js/4-float/3-paginator-css/solution.view/index.html delete mode 100644 8-css-for-js/4-float/3-paginator-css/source.view/index.html delete mode 100644 8-css-for-js/4-float/3-paginator-css/task.md delete mode 100644 8-css-for-js/4-float/4-add-border-keep-width/solution.md delete mode 100644 8-css-for-js/4-float/4-add-border-keep-width/task.md delete mode 100644 8-css-for-js/4-float/article.md delete mode 100644 8-css-for-js/4-float/float-small-margin.png delete mode 100644 8-css-for-js/4-float/gallery-float.view/index.html delete mode 100644 8-css-for-js/4-float/text.png delete mode 100644 8-css-for-js/4-float/two-columns-2.view/index.html delete mode 100644 8-css-for-js/4-float/two-columns.view/index.html delete mode 100644 8-css-for-js/4-float/winnie-block-bg.view/index.html delete mode 100644 8-css-for-js/4-float/winnie-block.view/index.html delete mode 100644 8-css-for-js/4-float/winnie-clear-1.view/index.html delete mode 100644 8-css-for-js/4-float/winnie-clear-2.view/index.html delete mode 100644 8-css-for-js/4-float/winnie-clear-3.view/index.html delete mode 100644 8-css-for-js/4-float/winnie-clear-4.view/index.html delete mode 100644 8-css-for-js/4-float/winnie-clearfill-clearfix.view/index.html delete mode 100644 8-css-for-js/4-float/winnie-clearfill-div.view/index.html delete mode 100644 8-css-for-js/4-float/winnie-clearfill-float.view/index.html delete mode 100644 8-css-for-js/4-float/winnie-clearfill-overflow.view/index.html delete mode 100644 8-css-for-js/4-float/winnie-nofloat-1.view/index.html delete mode 100644 8-css-for-js/4-float/winnie-nofloat-2.view/index.html delete mode 100644 8-css-for-js/4-float/winnie-nofloat-3.view/index.html delete mode 100644 8-css-for-js/4-float/winnie-nofloat.view/index.html delete mode 100644 8-css-for-js/4-float/winnie.view/index.html delete mode 100644 8-css-for-js/5-position/1-modal-window/solution.md delete mode 100644 8-css-for-js/5-position/1-modal-window/solution.view/index.html delete mode 100644 8-css-for-js/5-position/1-modal-window/source.view/index.html delete mode 100644 8-css-for-js/5-position/1-modal-window/task.md delete mode 100644 8-css-for-js/5-position/article.md delete mode 100644 8-css-for-js/5-position/position-100-wrong.view/index.html delete mode 100644 8-css-for-js/6-css-center/1-center-ball-css/solution.md delete mode 100644 8-css-for-js/6-css-center/1-center-ball-css/solution.view/index.html delete mode 100644 8-css-for-js/6-css-center/1-center-ball-css/source.view/index.html delete mode 100644 8-css-for-js/6-css-center/1-center-ball-css/task.md delete mode 100644 8-css-for-js/6-css-center/2-form-modal/solution.md delete mode 100644 8-css-for-js/6-css-center/2-form-modal/solution.view/index.html delete mode 100644 8-css-for-js/6-css-center/2-form-modal/source.view/index.html delete mode 100644 8-css-for-js/6-css-center/2-form-modal/task.md delete mode 100644 8-css-for-js/6-css-center/3-vertical-align-table-cell-position/solution.md delete mode 100644 8-css-for-js/6-css-center/3-vertical-align-table-cell-position/task.md delete mode 100644 8-css-for-js/6-css-center/article.md delete mode 100644 8-css-for-js/6-css-center/vertical-align.view/index.html delete mode 100644 8-css-for-js/7-font-size-line-height/article.md delete mode 100644 8-css-for-js/8-white-space/article.md delete mode 100644 8-css-for-js/9-outline/article.md delete mode 100644 8-css-for-js/index.md delete mode 100644 9-tools/1-tools-browser-extensions/article.md delete mode 100644 9-tools/1-tools-browser-extensions/dnsflusher.png delete mode 100644 9-tools/1-tools-browser-extensions/downloadhelper.jpg delete mode 100644 9-tools/1-tools-browser-extensions/jsonview.png delete mode 100644 9-tools/1-tools-browser-extensions/pageinsight.png delete mode 100644 9-tools/1-tools-browser-extensions/webdeveloper.png delete mode 100644 9-tools/2-fiddler/article.md delete mode 100644 9-tools/2-fiddler/fiddler-hook.png delete mode 100644 9-tools/2-fiddler/fiddler.png delete mode 100644 9-tools/3-ie-http-analyzer/article.md delete mode 100644 9-tools/3-ie-http-analyzer/ie-http-analyzer-2.gif delete mode 100644 9-tools/3-ie-http-analyzer/ie-http-analyzer-3.gif delete mode 100644 9-tools/3-ie-http-analyzer/ie-http-analyzer.gif delete mode 100644 9-tools/index.md delete mode 100644 archive/1-class-property/article.md delete mode 100644 archive/2-request-with-auth/solution.md delete mode 100644 archive/2-request-with-auth/task.md delete mode 100644 archive/3-jquery-stub/1-jquery-intro/article.md delete mode 100644 archive/3-jquery-stub/2-jquery-search/article.md delete mode 100644 archive/3-jquery-stub/3-jquery-traversal/1-select-parents-with-self/solution.md delete mode 100644 archive/3-jquery-stub/3-jquery-traversal/1-select-parents-with-self/task.md delete mode 100644 archive/3-jquery-stub/3-jquery-traversal/article.md delete mode 100644 archive/3-jquery-stub/4-jquery-dom/article.md delete mode 100644 archive/3-jquery-stub/5-jquery-stub-article/1-rewrite-with-jquery/solution.md delete mode 100644 archive/3-jquery-stub/5-jquery-stub-article/1-rewrite-with-jquery/solution.view/bagua.css delete mode 100644 archive/3-jquery-stub/5-jquery-stub-article/1-rewrite-with-jquery/solution.view/index.html delete mode 100644 archive/3-jquery-stub/5-jquery-stub-article/1-rewrite-with-jquery/source.view/bagua.css delete mode 100644 archive/3-jquery-stub/5-jquery-stub-article/1-rewrite-with-jquery/source.view/index.html delete mode 100644 archive/3-jquery-stub/5-jquery-stub-article/1-rewrite-with-jquery/task.md delete mode 100644 archive/3-jquery-stub/5-jquery-stub-article/article.md delete mode 100644 archive/3-jquery-stub/index.md delete mode 100644 archive/3-reflow/article.md delete mode 100644 archive/3-reflow/reflow.view/index.html delete mode 100644 archive/4-script-place-optimize/article.md delete mode 100644 archive/menu.html delete mode 100644 archive/upload-2way.view/index.html delete mode 100644 archive/upload-2way.view/server.js delete mode 100644 archive/upload-2way.view/uploader.js delete mode 100644 archive/widget-tasks/1-date-selector/solution.md delete mode 100644 archive/widget-tasks/1-date-selector/solution.view/dateselector.js delete mode 100644 archive/widget-tasks/1-date-selector/solution.view/index.html delete mode 100644 archive/widget-tasks/1-date-selector/source.view/dateselector.js delete mode 100644 archive/widget-tasks/1-date-selector/source.view/index.html delete mode 100644 archive/widget-tasks/1-date-selector/task.md delete mode 100644 archive/widget-tasks/1-tooltip-over-element/solution.md delete mode 100644 archive/widget-tasks/1-tooltip-over-element/solution.view/index.html delete mode 100644 archive/widget-tasks/1-tooltip-over-element/source.view/index.html delete mode 100644 archive/widget-tasks/1-tooltip-over-element/task.md delete mode 100644 archive/widget-tasks/1-tooltip-over-element/tooltip-fixed-center.png delete mode 100644 archive/widget-tasks/1-tooltip-over-element/tooltip-fixed-center2.png delete mode 100644 archive/widget-tasks/2-draggable-windows/index.html delete mode 100644 archive/widget-tasks/2-draggable-windows/solution.md delete mode 100644 archive/widget-tasks/2-draggable-windows/solution.view/draggableWindow.js delete mode 100644 archive/widget-tasks/2-draggable-windows/solution.view/index.html delete mode 100644 archive/widget-tasks/2-draggable-windows/solution.view/window.css delete mode 100644 archive/widget-tasks/2-draggable-windows/source.view/index.html delete mode 100644 archive/widget-tasks/2-draggable-windows/task.md delete mode 100644 archive/widget-tasks/2-moving-tooltip/solution.md delete mode 100644 archive/widget-tasks/2-moving-tooltip/solution.view/index.html delete mode 100644 archive/widget-tasks/2-moving-tooltip/source.view/index.html delete mode 100644 archive/widget-tasks/2-moving-tooltip/task.md delete mode 100644 archive/widget-tasks/3-resize-img/solution.md delete mode 100644 archive/widget-tasks/3-resize-img/solution.view/index.html delete mode 100644 archive/widget-tasks/3-resize-img/source.view/index.html delete mode 100644 archive/widget-tasks/3-resize-img/task.md delete mode 100644 archive/widget-tasks/3-window-manager/solution.md delete mode 100644 archive/widget-tasks/3-window-manager/solution.view/draggableWindow.js delete mode 100644 archive/widget-tasks/3-window-manager/solution.view/index.html delete mode 100644 archive/widget-tasks/3-window-manager/solution.view/window.css delete mode 100644 archive/widget-tasks/3-window-manager/solution.view/windowManager.js delete mode 100644 archive/widget-tasks/3-window-manager/task.md delete mode 100644 archive/widget-tasks/4-double-calendar-with-arrows/solution.md delete mode 100644 archive/widget-tasks/4-double-calendar-with-arrows/solution.view/calendar.css delete mode 100644 archive/widget-tasks/4-double-calendar-with-arrows/solution.view/calendar.js delete mode 100644 archive/widget-tasks/4-double-calendar-with-arrows/solution.view/datepicker.css delete mode 100644 archive/widget-tasks/4-double-calendar-with-arrows/solution.view/datepicker.js delete mode 100644 archive/widget-tasks/4-double-calendar-with-arrows/solution.view/index.html delete mode 100644 archive/widget-tasks/4-double-calendar-with-arrows/source.view/calendar.css delete mode 100644 archive/widget-tasks/4-double-calendar-with-arrows/source.view/calendar.js delete mode 100644 archive/widget-tasks/4-double-calendar-with-arrows/source.view/datepicker.css delete mode 100644 archive/widget-tasks/4-double-calendar-with-arrows/source.view/datepicker.js delete mode 100644 archive/widget-tasks/4-double-calendar-with-arrows/source.view/index.html delete mode 100644 archive/widget-tasks/4-double-calendar-with-arrows/task.md delete mode 100644 archive/widget-tasks/4-img-select-mouse/solution.md delete mode 100644 archive/widget-tasks/4-img-select-mouse/solution.view/index.html delete mode 100644 archive/widget-tasks/4-img-select-mouse/source.view/index.html delete mode 100644 archive/widget-tasks/4-img-select-mouse/task.md delete mode 100644 archive/widget-tasks/5-menu-animated/solution.md delete mode 100644 archive/widget-tasks/5-menu-animated/solution.view/index.html delete mode 100644 archive/widget-tasks/5-menu-animated/source.view/index.html delete mode 100644 archive/widget-tasks/5-menu-animated/task.md delete mode 100644 archive/widget-tasks/5-tree-checkboxes/solution.md delete mode 100644 archive/widget-tasks/5-tree-checkboxes/solution.view/fetch.js delete mode 100644 archive/widget-tasks/5-tree-checkboxes/solution.view/index.html delete mode 100644 archive/widget-tasks/5-tree-checkboxes/solution.view/regions.js delete mode 100644 archive/widget-tasks/5-tree-checkboxes/solution.view/tree.css delete mode 100644 archive/widget-tasks/5-tree-checkboxes/solution.view/tree.js delete mode 100644 archive/widget-tasks/5-tree-checkboxes/source.view/index.html delete mode 100644 archive/widget-tasks/5-tree-checkboxes/task.md delete mode 100644 archive/widget-tasks/7-calendar/solution.md delete mode 100644 archive/widget-tasks/7-calendar/solution.view/calendar.css delete mode 100644 archive/widget-tasks/7-calendar/solution.view/calendar.js delete mode 100644 archive/widget-tasks/7-calendar/solution.view/index.html delete mode 100644 archive/widget-tasks/7-calendar/source.view/calendar-table.js delete mode 100644 archive/widget-tasks/7-calendar/source.view/calendar.css delete mode 100644 archive/widget-tasks/7-calendar/source.view/calendar.js delete mode 100644 archive/widget-tasks/7-calendar/source.view/index.html delete mode 100644 archive/widget-tasks/7-calendar/task.md delete mode 100644 archive/widget-tasks/8-autocomplete/solution.md delete mode 100644 archive/widget-tasks/8-autocomplete/solution.view/autocomplete-list.js delete mode 100644 archive/widget-tasks/8-autocomplete/solution.view/autocomplete.css delete mode 100644 archive/widget-tasks/8-autocomplete/solution.view/autocomplete.js delete mode 100644 archive/widget-tasks/8-autocomplete/solution.view/filtering-list-provider.js delete mode 100644 archive/widget-tasks/8-autocomplete/solution.view/index.html delete mode 100644 archive/widget-tasks/8-autocomplete/task.md delete mode 100644 archive/widget-tasks/9-hover-menu-onclick/solution.md delete mode 100644 archive/widget-tasks/9-hover-menu-onclick/solution.view/hoverintent.js delete mode 100644 archive/widget-tasks/9-hover-menu-onclick/solution.view/index.html delete mode 100644 archive/widget-tasks/9-hover-menu-onclick/solution.view/menu.css delete mode 100644 archive/widget-tasks/9-hover-menu-onclick/solution.view/menu.js delete mode 100644 archive/widget-tasks/9-hover-menu-onclick/task.md delete mode 100644 archive/widget-tasks/article.md delete mode 100644 changes.sketch delete mode 100644 figures.sketch delete mode 100644 index.md delete mode 100644 script/clean-unused-png.php diff --git a/1-js/1-getting-started/1-intro/article.md b/1-js/1-getting-started/1-intro/article.md deleted file mode 100644 index 75db80f1..00000000 --- a/1-js/1-getting-started/1-intro/article.md +++ /dev/null @@ -1,234 +0,0 @@ -# Введение в JavaScript - -Давайте посмотрим, что такого особенного в JavaScript, почему именно он, и какие еще технологии существуют, кроме JavaScript. - -## Что такое JavaScript? - -*JavaScript* изначально создавался для того, чтобы сделать web-странички "живыми". -Программы на этом языке называются *скриптами*. В браузере они подключаются напрямую к HTML и, как только загружается страничка -- тут же выполняются. - -**Программы на JavaScript -- обычный текст**. Они не требуют какой-то специальной подготовки. - -В этом плане JavaScript сильно отличается от другого языка, который называется [Java](http://ru.wikipedia.org/wiki/Java). - -[smart header="Почему JavaScript?"] -Когда создавался язык JavaScript, у него изначально было другое название: "LiveScript". Но тогда был очень популярен язык Java, и маркетологи решили, что схожее название сделает новый язык более популярным. - -Планировалось, что JavaScript будет эдаким "младшим братом" Java. Однако, история распорядилась по-своему, JavaScript сильно вырос, и сейчас это совершенно независимый язык, со своей спецификацией, которая называется [ECMAScript](https://ru.wikipedia.org/wiki/ECMAScript), и к Java не имеет никакого отношения. - -У него много особенностей, которые усложняют освоение, но по ходу учебника мы с ними разберёмся. -[/smart] - -JavaScript может выполняться не только в браузере, а где угодно, нужна лишь специальная программа -- [интерпретатор](http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D1%80%D0%B5%D1%82%D0%B0%D1%82%D0%BE%D1%80). Процесс выполнения скрипта называют "интерпретацией". - -[smart header="Компиляция и интерпретация, для программистов"] -Для выполнения программ, не важно на каком языке, существуют два способа: "компиляция" и "интерпретация". - - - -Современные интерпретаторы перед выполнением преобразуют JavaScript в машинный код или близко к нему, оптимизируют, а уже затем выполняют. И даже во время выполнения стараются оптимизировать. Поэтому JavaScript работает очень быстро. -[/smart] - -Во все основные браузеры встроен интерпретатор JavaScript, именно поэтому они могут выполнять скрипты на странице. Но, разумеется, JavaScript можно использовать не только в браузере. Это полноценный язык, программы на котором можно запускать и на сервере, и даже в стиральной машинке, если в ней установлен соответствующий интерпретатор. - -[warn header="Поговорим о браузерах"] - -Далее в этой главе мы говорим о возможностях и ограничениях JavaScript именно в контексте браузера. - -[/warn] - -## Что умеет JavaScript? - -Современный JavaScript -- это "безопасный" язык программирования общего назначения. Он не предоставляет низкоуровневых средств работы с памятью, процессором, так как изначально был ориентирован на браузеры, в которых это не требуется. - -Что же касается остальных возможностей -- они зависят от окружения, в котором запущен JavaScript. В браузере JavaScript умеет делать всё, что относится к манипуляции со страницей, взаимодействию с посетителем и, в какой-то мере, с сервером: - - - -## Что НЕ умеет JavaScript? - -JavaScript -- быстрый и мощный язык, но браузер накладывает на его исполнение некоторые ограничения.. - -Это сделано для безопасности пользователей, чтобы злоумышленник не мог с помощью JavaScript получить личные данные или как-то навредить компьютеру пользователя. - -Этих ограничений нет там, где JavaScript используется вне браузера, например на сервере. Кроме того, современные браузеры предоставляют свои механизмы по установке плагинов и расширений, которые обладают расширенными возможностями, но требуют специальных действий по установке от пользователя - -**Большинство возможностей JavaScript в браузере ограничено текущим окном и страницей.** - - - - - -## В чём уникальность JavaScript? - -Есть как минимум *три* замечательных особенности JavaScript: - -[compare] -+Полная интеграция с HTML/CSS. -+Простые вещи делаются просто. -+Поддерживается всеми распространёнными браузерами и включён по умолчанию. -[/compare] - -**Этих трёх вещей одновременно нет больше ни в одной браузерной технологии.** - -Поэтому JavaScript и является самым распространённым средством создания браузерных интерфейсов. - -## Тенденции развития - -Перед тем, как вы планируете изучить новую технологию, полезно ознакомиться с её развитием и перспективами. Здесь в JavaScript всё более чем хорошо. - -### HTML 5 - -*HTML 5* -- эволюция стандарта HTML, добавляющая новые теги и, что более важно, ряд новых возможностей браузерам. - -Вот несколько примеров: - - -Многие возможности HTML5 всё ещё в разработке, но браузеры постепенно начинают их поддерживать. - -[summary]Тенденция: JavaScript становится всё более и более мощным и возможности браузера растут в сторону десктопных приложений.[/summary] - -### EcmaScript 6 - -Сам язык JavaScript улучшается. Современный стандарт EcmaScript 5 включает в себя новые возможности для разработки, EcmaScript 6 будет шагом вперёд в улучшении синтаксиса языка. - -Современные браузеры улучшают свои движки, чтобы увеличить скорость исполнения JavaScript, исправляют баги и стараются следовать стандартам. - -[summary]Тенденция: JavaScript становится всё быстрее и стабильнее, в язык добавляются новые возможности.[/summary] - -Очень важно то, что новые стандарты HTML5 и ECMAScript сохраняют максимальную совместимость с предыдущими версиями. Это позволяет избежать неприятностей с уже существующими приложениями. - -Впрочем, небольшая проблема с "супер-современными штучками" всё же есть. Иногда браузеры стараются включить новые возможности, которые ещё не полностью описаны в стандарте, но настолько интересны, что разработчики просто не могут ждать. - -...Однако, со временем стандарт меняется и браузерам приходится подстраиваться к нему, что может привести к ошибкам в уже написанном, основанном на старой реализации, JavaScript-коде. Поэтому следует дважды подумать перед тем, как применять на практике такие "супер-новые" решения. - -При этом все браузеры сходятся к стандарту, и различий между ними уже гораздо меньше, чем всего лишь несколько лет назад. - -[summary]Тенденция: всё идет к полной совместимости со стандартом.[/summary] - - -## Альтернативные браузерные технологии - -Вместе с JavaScript на страницах используются и другие технологии. Связка с ними может помочь достигнуть более интересных результатов в тех местах, где браузерный JavaScript пока не столь хорош, как хотелось бы. - -### Java - -Java -- язык общего назначения, на нём можно писать самые разные программы. Для интернет-страниц есть особая возможность - написание *апплетов*. - -*Апплет* -- это программа на языке Java, которую можно подключить к HTML при помощи тега `applet`, выглядит это примерно так: - -```html - - - - - -``` - -Такой тег загружает Java-программу из файла `BTApplet.class` и выполняет её с параметрами `param`. Апплет выполняется в отдельной части страницы, в прямоугольном "контейнере". Все действия пользователя внутри него обрабатывает апплет. Контейнер, впрочем, может быть и спрятан, если апплету нечего показывать. - -Конечно, для этого на компьютере должна быть установлена и включена среда выполнения Java, включая браузерный плагин. Кроме того, апплет должен быть подписан сертификатом издателя (в примере выше апплет без подписи), иначе Java заблокирует его. - -**Чем нам, JavaScript-разработчикам, может быть интересен Java?** - -В первую очередь тем, что подписанный Java-апплет может всё то же, что и обычная программа, установленная на компьютере посетителя. Конечно, для этого понадобится согласие пользователя при открытии такого апплета. - -[compare] -+Java может делать *всё* от имени посетителя, совсем как установленная программа. Потенциально опасные действия требуют подписанного апплета и согласия пользователя. --Java требует больше времени для загрузки. --Среда выполнения Java, включая браузерный плагин, должна быть установлена на компьютере посетителя и включена. --Java-апплет не интегрирован с HTML-страницей, а выполняется отдельно. Но он может вызывать функции JavaScript. -[/compare] - - -### Плагины и расширения для браузера - -Все современные браузеры предоставляют возможность написать плагины. Для этого можно использовать как JavaScript (Chrome, Opera, Firefox), так и язык С (ActiveX для Internet Explorer). - -Эти плагины могут как отображать содержимое специального формата (плагин для проигрывания музыки, для показа PDF), так и взаимодействовать со страницей. - -Как и в ситуации с Java-апплетом, у них широкие возможности, но посетитель поставит их в том случае, если вам доверяет. - -### Adobe Flash - -Adobe Flash -- кросс-браузерная платформа для мультимедиа-приложений, анимаций, аудио и видео. - -*Flash-ролик* -- это скомпилированная программа, написанная на языке ActionScript. Её можно подключить к HTML-странице и запустить в прямоугольном контейнере. - -В первую очередь Flash полезен тем, что позволяет **кросс-браузерно** работать с микрофоном, камерой, с буфером обмена, а также поддерживает продвинутые возможности по работе с сетевыми соединениями. - -[compare] -+Сокеты, UDP для P2P и другие продвинутые возможности по работе с сетевыми соединениями -+Поддержка мультимедиа: изображения, аудио, видео. Работа с веб-камерой и микрофоном. --Flash должен быть установлен и включён. А на некоторых устройствах он вообще не поддерживается. --Flash не интегрирован с HTML-страницей, а выполняется отдельно. --Существуют ограничения безопасности, однако они немного другие, чем в JavaScript. -[/compare] - -Из Flash можно вызывать JavaScript и наоборот, поэтому обычно сайты используют JavaScript, а там, где он не справляется -- можно подумать о Flash. - - -## Языки поверх JavaScript - - -Синтаксис JavaScript устраивает не всех: одним он кажется слишком свободным, другим -- наоборот, слишком ограниченным, третьи хотят добавить в язык дополнительные возможности, которых нет в стандарте... - -Это нормально, ведь требования и проекты у всех разные. - -В последние годы появилось много языков, которые добавляют различные возможности "поверх" JavaScript, а для запуска в браузере -- при помощи специальных инструментов "трансляторов" превращаются в обычный JavaScript-код. - -Это преобразование происходит автоматически и совершенно прозрачно, при этом неудобств в разработке и отладке практически нет. - -При этом разные языки выглядят по-разному и добавляют совершенно разные вещи: - - - -[smart header="ES6 и ES7 прямо сейчас"] -Существуют также трансляторы, которые берут код, использующий возможности будущих стандартов JavaScript, и преобразуют его в более старый вариант, который понимают все браузеры. - -Например, [babeljs](https://babeljs.io/). - -Благодаря этому, мы можем использовать многие возможности будущего уже сегодня. -[/smart] - - -## Итого - -Язык JavaScript уникален благодаря своей полной интеграции с HTML/CSS. Он работает почти у всех посетителей. - -...Но хороший JavaScript-программист не должен забывать и о других технологиях. - -Ведь наша цель -- создание хороших приложений, и здесь Flash, Java и браузерные расширения имеют свои уникальные возможности, которые можно использовать вместе с JavaScript. - -Что же касается CoffeeScript, TypeScript и других языков, построенных над JavaScript -- они могут быть очень полезны. Рекомендуется посмотреть их, хотя бы в общих чертах, но, конечно, уже после освоения самого JavaScript. - diff --git a/1-js/1-getting-started/1-intro/limitations.png b/1-js/1-getting-started/1-intro/limitations.png deleted file mode 100644 index 0f58b9d664f91657f08d9b827bc60b89576c327b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37445 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 GQU3vCPwol; diff --git a/1-js/1-getting-started/1-intro/limitations@2x.png b/1-js/1-getting-started/1-intro/limitations@2x.png deleted file mode 100644 index e790016b85a3418ce88ee1850c5ae80531c391cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91603 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 z 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 T8lC+g;2-RP-2L2pkN^4~kFguX diff --git a/1-js/1-getting-started/2-pre-coding/article.md b/1-js/1-getting-started/2-pre-coding/article.md deleted file mode 100644 index 05833be2..00000000 --- a/1-js/1-getting-started/2-pre-coding/article.md +++ /dev/null @@ -1,118 +0,0 @@ -# Справочники и спецификации - -В этом разделе мы познакомимся со справочниками и спецификациями. - -Если вы только начинаете изучение, то вряд ли они будут нужны прямо сейчас. Тем не менее, эта глава находится в начале, так как предсказать точный момент, когда вы захотите заглянуть в справочник -- невозможно, но точно известно, что этот момент настанет. - -Поэтому рекомендуется кратко взглянуть на них и взять на заметку, чтобы при необходимости вернуться к ним в будущем. - -[cut] - -## Справочники, и как в них искать - -Самая полная и подробная информация по JavaScript и браузерам есть в справочниках. - -Её объём таков, что перевести всё с английского невозможно. Даже сделать "единый полный справочник" не получается, так как изменений много и они происходят постоянно. - -Тем не менее, жить вполне можно если знать, куда смотреть. - -**Есть три основных справочника по JavaScript на английском языке**: - -
    -
  1. [Mozilla Developer Network](https://developer.mozilla.org/) -- содержит информацию, верную для основных браузеров. Также там присутствуют расширения только для Firefox (они помечены). - -Когда мне нужно быстро найти "стандартную" информацию по `RegExp` - ввожу в Google **"RegExp MDN"**, и ключевое слово "MDN" (Mozilla Developer Network) приводит к информации из этого справочника. -
  2. -
  3. [MSDN](http://msdn.microsoft.com) -- справочник от Microsoft. Там много информации, в том числе и по JavaScript (они называют его "JScript"). Если нужно что-то, специфичное для IE -- лучше лезть сразу туда. - -Например, для информации об особенностях `RegExp` в IE -- полезное сочетание: **"RegExp msdn"**. Иногда к поисковой фразе лучше добавить термин "JScript": **"RegExp msdn jscript"**.
  4. -
  5. [Safari Developer Library](https://developer.apple.com/library/safari/navigation/index.html) -- менее известен и используется реже, но в нём тоже можно найти ценную информацию.
  6. -
- -Есть ещё справочники, не от разработчиков браузеров, но тоже хорошие: - -
    -
  1. [http://help.dottoro.com]() -- содержит подробную информацию по HTML/CSS/JavaScript.
  2. -
  3. [http://javascript.ru/manual]() -- справочник по JavaScript на русском языке, он содержит основную информацию по языку, без функций для работы с документом. К нему можно обращаться и по адресу, если знаете, что искать. Например, так: [http://javascript.ru/RegExp](). -
  4. -
  5. [http://www.quirksmode.org]() -- информация о браузерных несовместимостях. Этот ресурс сам по себе довольно старый и, в первую очередь, полезен для поддержки устаревших браузеров. Для поиска можно пользоваться комбинацией **"quirksmode onkeypress"** в Google.
  6. -
  7. [http://caniuse.com]() -- ресурс о поддержке браузерами новейших возможностей HTML/CSS/JavaScript. Например, для поддержки функций криптографии: [http://caniuse.com/#feat=cryptography](). -
  8. -
- -## Спецификации - -Спецификация -- это самый главный, определяющий документ, в котором написано, как себя ведёт JavaScript, браузер, CSS и т.п. - -Если что-то непонятно, и справочник не даёт ответ, то спецификация, как правило, раскрывает тему гораздо глубже и позволяет расставить точки над i. - -### Спецификация ECMAScript - -Спецификация (формальное описание синтаксиса, базовых объектов и алгоритмов) языка Javascript называется [ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm). - -Её перевод есть на сайте в разделе [стандарт языка](http://es5.javascript.ru/). - -[smart header="Почему не просто "JavaScript" ?"] -Вы можете спросить: "Почему спецификация для JavaScript не называется просто *"JavaScript"*, зачем существует какое-то отдельное название?" - -Всё потому, что JavaScript™ -- зарегистрированная торговая марка, принадлежащая корпорации Oracle. - -Название "ECMAScript" было выбрано, чтобы сохранить спецификацию независимой от владельцев торговой марки. -[/smart] - -Спецификация может рассказать многое о том, как работает язык, и она является самым фундаментальным, доверенным источником информации. - -### Спецификации HTML/DOM/CSS - -JavaScript -- язык общего назначения, поэтому в спецификации ECMAScript нет ни слова о браузерах. - -Главная организация, которая занимается HTML, CSS, XML и множеством других стандартов -- [Консорциум Всемирной паутины](https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D1%81%D0%BE%D1%80%D1%86%D0%B8%D1%83%D0%BC_%D0%92%D1%81%D0%B5%D0%BC%D0%B8%D1%80%D0%BD%D0%BE%D0%B9_%D0%BF%D0%B0%D1%83%D1%82%D0%B8%D0%BD%D1%8B) (World Wide Consortium, сокращённо W3C). - -Информацию о них можно найти на сайте [w3.org](http://w3.org). К сожалению, найти в этой куче то, что нужно, может быть нелегко, особенно когда неизвестно в каком именно стандарте искать. Самый лучший способ -- попросить Google с указанием сайта. - -Например, для поиска `document.cookie` набрать [document.cookie site:w3.org](https://www.google.com/search?q=document.cookie+site%3Aw3.org). - -Последние версии стандартов расположены на домене [dev.w3.org](http://dev.w3.org). - -Кроме того, в том, что касается HTML5 и DOM/CSS, W3C активно использует наработки другой организации -- [WhatWG](https://whatwg.org/). Поэтому самые актуальные версии спецификаций по этим темам обычно находятся на [https://whatwg.org/specs/](). - -Иногда бывает так, что информация на сайте [http://dev.w3.org]() отличается от [http://whatwg.org](). В этом случае, как правило, следует руководствоваться [http://whatwg.org](). - -## Итого - -Итак, посмотрим какие у нас есть источники информации. - -Справочники: -
    -
  • Mozilla Developer Network -- информация для Firefox и большинства браузеров. -Google-комбо: `"RegExp MDN"`, ключевое слово "MDN".
  • -
  • MSDN -- информация по IE. -Google-комбо: `"RegExp msdn"`. Иногда лучше добавить термин "JScript": `"RegExp msdn jscript"`.
  • -
  • [Safari Developer Library](https://developer.apple.com/library/safari/navigation/index.html) -- информация по Safari.
  • -
  • http://help.dottoro.com -- подробная информация по HTML/CSS/JavaScript с учётом браузерной совместимости. -Google-комбо: `"RegExp dottoro"`.
  • -
  • [](http://javascript.ru/manual) -- справочник по JavaScript на русском языке. К нему можно обращаться и по адресу, если знаете, что искать. Например, так: [](http://javascript.ru/RegExp). -Google-комбо: `"RegExp site:javascript.ru"`. -
  • -
- -Спецификации содержат важнейшую информацию о том, как оно "должно работать": - -
    -
  • JavaScript, современный стандарт [ES5 (англ)](http://www.ecma-international.org/publications/standards/Ecma-262.htm), и предыдущий [ES3 (рус)](http://javascript.ru/ecma).
  • -
  • HTML/DOM/CSS -- на сайте [http://w3.org](http://www.w3.org). -Google-комбо: `"document.cookie site:w3.org"`.
  • -
  • ...А самые последние версии стандартов -- на [http://dev.w3.org]() и на [http://whatwg.org/specs/](https://whatwg.org/specs/).
  • -
- -То, как оно на самом деле работает и несовместимости: - -
    -
  • [http://quirksmode.org/](). Google-комбо: `"innerHeight quirksmode"`.
  • -
- -Поддержка современных и новейших возможностей браузерами: - -
    -
  • [http://caniuse.com](). Google-комбо: `"caniuse geolocation"`.
  • -
diff --git a/1-js/1-getting-started/3-editor/article.md b/1-js/1-getting-started/3-editor/article.md deleted file mode 100644 index 9523c6c8..00000000 --- a/1-js/1-getting-started/3-editor/article.md +++ /dev/null @@ -1,70 +0,0 @@ -# Редакторы для кода - -Для разработки обязательно нужен хороший редактор. - -Выбранный вами редактор должен иметь в своем арсенале: - -
    -
  1. Подсветку синтаксиса.
  2. -
  3. Автодополнение.
  4. -
  5. "Фолдинг" (от англ. folding) -- возможность скрыть-раскрыть блок кода.
  6. -
- -[cut] -## IDE - -Термин IDE (Integrated Development Environment) -- "интегрированная среда разработки", означает редактор, который расширен большим количеством "наворотов", умеет работать со вспомогательными системами, такими как багтрекер, контроль версий, и много чего ещё. - -Как правило, IDE загружает весь проект целиком, поэтому может предоставлять автодополнение по функциям всего проекта, удобную навигацию по его файлам и т.п. - -Если вы ещё не задумывались над выбором IDE, присмотритесь к следующим вариантам. - -
    -
  • Продукты IntelliJ: [WebStorm](http://www.jetbrains.com/webstorm/), а также в зависимости от дополнительного языка программирования [PHPStorm (PHP)](http://www.jetbrains.com/phpstorm/), [IDEA (Java)](http://www.jetbrains.com/idea/), [RubyMine (Ruby)](http://www.jetbrains.com/ruby/) и другие.
  • -
  • Visual Studio, в сочетании с разработкой под .NET (Win)
  • -
  • Продукты на основе Eclipse, в частности [Aptana](http://www.aptana.com/) и Zend Studio
  • -
  • [Komodo IDE](http://www.activestate.com/komodo-ide) и его облегчённая версия [Komodo Edit](http://www.activestate.com/komodo-edit).
  • -
  • [Netbeans](http://netbeans.org/)
  • -
- -Почти все они, за исключением Visual Studio, кросс-платформенные. - -Сортировка в этом списке ничего не означает. Выбор осуществляется по вкусу и по другим технологиям, которые нужно использовать вместе с JavaScript. - -Большинство IDE -- платные, с возможностью скачать и бесплатно использовать некоторое время. Но их стоимость, по сравнению с зарплатой веб-разработчика, невелика, поэтому ориентироваться можно на удобство. - -## Лёгкие редакторы - -Лёгкие редакторы -- не такие мощные, как IDE, но они быстрые и простые, мгновенно стартуют. - -Основная сфера применения лёгкого редактора -- мгновенно открыть нужный файл, чтобы что-то в нём поправить. - -На практике "лёгкие" редакторы могут обладать большим количеством плагинов, так что граница между IDE и "лёгким" редактором размыта, спорить что именно редактор, а что IDE -- не имеет смысла. - -Достойны внимания: - -
    -
  • Sublime Text (кросс-платформенный, shareware).
  • -
  • Atom (кросс-платформенный, free).
  • -
  • SciTe простой, легкий и очень быстрый (Windows, бесплатный).
  • -
  • Notepad++ (Windows, бесплатный).
  • -
  • Vim, Emacs. Если умеете их готовить.
  • -
- -## Мои редакторы - -Лично мои любимые редакторы: - -
    -
  • Как IDE -- редакторы от Jetbrains: для чистого JavaScript [WebStorm](http://www.jetbrains.com/webstorm/), если ещё какой-то язык, то в зависимости от языка: [PHPStorm (PHP)](http://www.jetbrains.com/phpstorm/), [IDEA (Java)](http://www.jetbrains.com/idea/), [RubyMine (Ruby)](http://www.jetbrains.com/ruby/). У них есть и другие редакторы под разные языки, но я ими не пользовался.
  • -
  • Как быстрый редактор -- Sublime Text.
  • -
  • Иногда Visual Studio, если разработка идёт под платформу .NET (Win).
  • -
- -Если не знаете, что выбрать -- можно посмотреть на них ;) - -## Не будем ссориться - -В списках выше перечислены редакторы, которые использую я или мои знакомые -- хорошие разработчики. Конечно, существуют и другие отличные редакторы, если вам что-то нравится -- пользуйтесь. - -Выбор редактора, как и любого инструмента, во многом индивидуален и зависит от ваших проектов, привычек, личных предпочтений. diff --git a/1-js/1-getting-started/4-devtools/article.md b/1-js/1-getting-started/4-devtools/article.md deleted file mode 100644 index 7a26dfce..00000000 --- a/1-js/1-getting-started/4-devtools/article.md +++ /dev/null @@ -1,114 +0,0 @@ -# Консоль разработчика - -При разработке скриптов всегда возможны ошибки... Впрочем, что я говорю? У вас абсолютно точно будут ошибки, если конечно вы -- человек, а не робот. - -Чтобы читать их в удобном виде, а также получать массу полезной информации о выполнении скриптов, в браузерах есть *инструменты разработки*. - -**Для разработки рекомендуется использовать Chrome или Firefox.** - -Другие браузеры, как правило, находятся в положении "догоняющих" по возможностям встроенных инструментов разработки. Если ошибка, к примеру, именно в Internet Explorer, тогда уже смотрим конкретно в нём, но обычно -- Chrome/Firefox. - -В инструментах разработчика предусмотрена масса возможностей, но на текущем этапе мы просто посмотрим, как их открывать, смотреть в консоли ошибки и запускать команды JavaScript. - -[cut] - -## Google Chrome - -Откройте страницу [bug.html](bug.html). - -В её JavaScript-коде есть ошибка. Конечно, обычному посетителю она не видна, нужно открыть инструменты разработчика. - -Для этого используйте сочетание клавиш [key Ctrl+Shift+J], а если у вас Mac, то [key Cmd+Shift+J]. - -При этом откроются инструменты разработчика и вкладка Console, в которой будет ошибка. - -Выглядеть будет примерно так: - - - - -
    -
  • При клике на `bug.html` вы перейдёте во вкладку с кодом к месту ошибки, там будет и краткое описание ошибки. -В данном случае ошибка вызвана строкой `lalala`, которая интерпретатору непонятна.
  • -
  • В этом же окошке вы можете набирать команды на JavaScript. Например, наберите `alert("Hello")` -- команду вывода сообщения и запустите её нажатием [key Enter]. Мы познакомимся с этой и другими командами далее.
  • -
  • Для перевода курсора на следующую строку (если команда состоит из нескольких строк) -- используется сочетание [key Shift+Enter].
  • -
- -Далее в учебнике мы подробнее рассмотрим отладку в Chrome в главе [](/debugging-chrome). - -## Firefox - -Для разработки в Firefox используется расширение Firebug. - -
    -
  1. Первым делом его надо установить. - -Это можно сделать со страницы https://addons.mozilla.org/ru/firefox/addon/firebug/. - -Перезапустите браузер. Firebug появится в правом-нижнем углу окна: - - - -Если иконки не видно -- возможно, у вас выключена панель расширений. Нажмите [key Ctrl+\] для её отображения. - -Ну а если её нет и там, то нажмите [key F12] -- это горячая клавиша для запуска Firebug, расширение появится, если установлено. -
  2. -
  3. Далее, для того чтобы консоль заработала, её надо включить. - -Если консоль уже была включена ранее, то этот шаг не нужен, но если она серая -- выберите в меню `Консоль` и включите её: - - - -
  4. -
  5. Для того, чтобы Firebug работал без глюков, желательно сначала открыть Firebug, а уже потом -- зайти на страницу. - -С открытым Firebug зайдите на страницу с ошибкой: [bug.html](/devtools/bug.html). - -Консоль покажет ошибку: - - - -Кликните на строчке с ошибкой и браузер покажет исходный код. При необходимости включайте дополнительные панели. -
  6. -
- -Как и в Chrome, можно набирать и запускать команды. Область для команд на рисунке находится справа, запуск команд осуществляется нажатием [key Ctrl+Enter] (для Mac -- [key Cmd+Enter]). - -Можно перенести её вниз, нажав на кнопочку (на рисунке её не видно, но она присутствует в правом нижнем углу панели разработки). - -Об основных возможностях можно прочитать на сайте firebug.ru. - -## Internet Explorer - -Панель разработчика запускается нажатием [key F12]. - -Откройте её и зайдите на страницу с ошибкой: [bug.html](/devtools/bug.html). Если вы разобрались с Chrome/Firefox, то дальнейшее будет вам более-менее понятно, так как инструменты IE построены позже и по аналогии с Chrome/Firefox. - -## Safari - -Горячие клавиши: [key Ctrl+Shift+I], [key Ctrl+Alt+C] для Mac -- [key Cmd] вместо [key Ctrl]. - -Для доступа к функционалу разработки через меню: - -
    -
  1. -В Safari первым делом нужно активировать меню разработки. - -Откройте меню, нажав на колесико справа-сверху и выберите `Настройки`. - -Затем вкладка `Дополнительно`: - - - -Отметьте `Показывать меню "Разработка" в строке меню`. Закройте настройки. -
  2. -
  3. Нажмите на колесико и выберите `Показать строку меню`. - -Инструменты будут доступны в появившейся строке меню, в пункте `Разработка`.
  4. -
- -## Итого - -Мы разобрали, как открывать инструменты разработчика и смотреть ошибки, а также запускать простые команды, не отходя от браузера. - -Далее мы приступим к изучению JavaScript. diff --git a/1-js/1-getting-started/4-devtools/bug.html b/1-js/1-getting-started/4-devtools/bug.html deleted file mode 100755 index b72b78f5..00000000 --- a/1-js/1-getting-started/4-devtools/bug.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - На этой странице есть скрипт с ошибкой. - - - - - \ No newline at end of file diff --git a/1-js/1-getting-started/4-devtools/chrome.png b/1-js/1-getting-started/4-devtools/chrome.png deleted file mode 100644 index b084d584df6e31daef02f7bc4a4b1eda96dc6be8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10372 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 diff --git a/1-js/1-getting-started/4-devtools/firefox@2x.png b/1-js/1-getting-started/4-devtools/firefox@2x.png deleted file mode 100755 index ff3633b74c037a586ce2b31d547db00e30250c2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32366 zcmYg%c{tSH_qdWMAt7ZOA!LclzRZ-p$S!1=vab;$%#x*SG0C17yJX)9Gi1+B_GRqr zjNLG1`}Y1kzdwG@eV+TrIrpA(UiUfY+;h(B+$ckRZKkVSS7~Tyn4aor7}L~1>FFs7g&G|lU0GTAN0TZ{v$eIgy1F_xHb$XPFc{3q z$;rmX#@gE2-@kt+CMMR`*9indS6A2c^fVL-ZEtV?{rh)wb8~NR@5smqm4=2)CfC)~ z&Cbq}h{VIgLkI-2zrVk*u+Yv$)7RJ6-`_tsH#aaaP+3`-pP%2_+S=06Vrgmlk8@~f zXk%kzZEbCReZ8@+B7>d zvpC2@b371tguzgyBdD=@TbLHo+^m9G8YL@}y0hDtW;3(CMI9O5+g(MN$$6wqOg2R> zE{q=S?7UV|NJ>ngF7EX&VOO_sXF@bcRq7Pr>gLLLNZ~T|pnsR2=BV9$dvbDdc;LJ} z{N#6whlkry8$nl5k!s8^+1=S3Yj|?JMSYyqb)Tzs^-$;IuV2FpibipJ*zM)L{eD#A z?95I}c`3EL%q(zl2|#mDZ_t#NT=HH^N!fJk@FcZXUtLb> z2J`e7dZ^S>NzqHiGn2^}lc?M6YLZl1c-`TfuH0MC=D>4N+Utd^Sz=+`qPv}-TZs$YMxZWmF*9I%yw!dfHNa8f^Eh zFO2%FeuP3?n9n7pW}KxIx0c3|X;>+*TxqJDs6`E3;xtqP~&)WSIi>6&`d#CZ2L|`iBHwb`^Ba@Nj|+r zdjptLrv*~w6X{O`oC|q@h{Bw#%UX0J7bR-4Go zqo6>T+4~ULH>}xCBy_lXK|+@bKuRZ)i8`TT*#o z!TV!jVWD`s^p4uAiN1DckBRnLLa+4yKYW|-eHRQ4|Lfyj`G<0$RuN-(h_^MOaiG@g zE5?*4QU_;7tDY??Zq)AGRJd+i|63b8zJEhOBow41C+E;X4@l7(IAV!q$~SQSA3N<% zU-0*UU&?JCiC-p;Jw!s0mzL$0V`k)grGhhlQ4~q|MMU%lOoVxpQ8CE3Mb-osaN2e@ zaYSsgS`%pt5XmJi9vP3SfX;T4R7ey>NCe!1BxFg<)Msg^u~$Xv7n7`aUqN;VzKt&k zkBM(`NjdoEhhYfIr;=#mOX1GxYeoIFyScxp-K}1CQHp5j_T-w#{2N;$ADw8#C6~$S zw8Lxxmf!W6faboM9{QP6uC)MlT>3gart+&>LU~H{y&$NzFBK8)#n&zINf9%6VztUv zgSlqS$Jy|WKU|G|#cHVh&)-Xc;|@=ai|cuTunyg1*teDQqRb&9>-F-9w+tk{pU9O_ zlwc!OyDi|J97C;*RN)NfDkk~F>SGD?&L>l;t1a(p$sPMk+V2E`q?fNU!Fc0|;Kq`@ zD#@ijpB9lVO8VQ+%QAglvl{@Fjb=QP+fgG#rS)-jnXNJ_BndAIF&Y;pIO6(9m%0x| zsdG-$gXN8ev#3VupP)yIIy{1~SrGLr9{Nn8my^zw*T&a!P2|RZf+HNnA^a_ir)8SKczAd^4@DHzFeEFg_-osnDcjD;VQXv zG(IjC=TrOn;_1+upD)8@PLi|EKC`1DS}yz*+oRf6dewtlYp3s3ZXc1FIqQ;_gRsH7 zr`|;qyJ%Z-caK-*Y(Ff#F=MB`XXw4kS9}pa-F-9u=&RLB|1ONQ+xzHV9g7-46c=vA z>yqPL_SKFXZooIEglCNTmVhFOkLsEiVIbXAarY<b`v9_^nH$rUG1bHPKo*1*OJU#_Ck5iX2(p%=mfGD_`Fh7}Mn*l0(euAgJ4kSh0_nP@SZIP|wa1VG`9mU+2aCGYz`;gLJrR4~xGt;<3{`tNn*{S!Awqau)>p z%OdI(Yv3k5zWAlCICJXNaC!5@(1!kLoT?mZzopU3v=v_FZujL_`5-X zCi;wn6|7+|^P7GzqD{Iu9r+P-<%@5Q{l21T*pcF{#MLKx=k_PXToL{B8z_9E@Wjye zgoiGQbx1V%HrnQ&Pt)B%DIhdb8MrTmeSlXPOO$aY*SXamyfq@G8xrZB5}QHX_sow* zJubL`(5<3)NFeJu!-G4&epQenV{`IM04`L?VPIQ?wn_rIs$IE97#0}J-?1pyVLm8S z`rtt0ScP>&Pv|o7|3{;{jir9ttyssB%pY) z23=S8>sQt>iwoeS^FwK6q80E2iJKSyc&{IDlFv4>#QngjKmE+*OiNTPTnQ=d{0`Q8 zrFv@OAv=fAVdoW6TDV2Rlxo|}ywKa#d%3vAKs%SV z^1Z;#`6*s03CZytabh`GN(%kns90VIH|ZqyJAvK=bO9c~@I-~3o|EStk@i{{G`cnAjvKhC+(M2! zK{1DOc~Wb}`SUj7R{3l!<{88nM*LgeM?a)k4%K=rkg;SeKd2H|+oB4>Oo_1a2ImCc@ehh26(mD z1Fu>g|3^TFth0@7BahWb;r|@Y_4J(V_%;RvrrywB_t|rOMViOIlct3CaUb*&r+RE6 z-j>ag5d^;eZRwmr9cbg*h!;0sYYO^;);=~2i=6Ns49U-fO0*?UK*i%g`SStsEOJtk z*2?SGkRUjm@}zVk^?D7u-5ngba671yq#(u5?*cDQfgYA# z#34i1w0$=BQq%6eJ-ggY&=cP|hrFzO!f>>V;yHRA^~D5No{@mp`vWSKS)UE~77fdB zM518>M>`vN>vFUu+NDn>P=@OKBX76x2_oE0v$G~9Y;2D=Ym=h1X#d5h7;YxYlvK%3 z|1iT%$JHY9)0OjK1U-~_P z2QOFdc8^a|sJ8g&$HZ`83^5{_dZMZjk_&RJHP}Qikp-voC;wap_&J2b%VxxiM1MTqjq+9VP2U16 z2o}^*!ZyB7qMEPoq45p@0RhC5zu*GlI{!;JuQzgB&ByX7$rF>}91D*g)3<7-^if4{ zB()WVK^pzPkMf*F>YGGLdwA0~g?6HIA2V-v+7PXc@}Ef%m)YoRp>5`F)dm9mW6#ub zV3BGJJULe_3SWxl_**jy&RZ5}ip(@CA|Bj;8vao{i7BEr;=jdtI9dq9$p1?Vse}GR zLPJId0Yz|fI+e%tFU%xQcQaANs=OZI&0pxS(B1g8FmgxbZLrPW(}N%Il+69Ty(785 z_EJKpyOkqYO3Hv<_HdG!dXTV+BL3z5rNCdv!Mr8)-thduZVfwljj#86clY-dzNSaU zk~0ROMt~`UOVgaV(@LaDs-6$Nd&&FA?NZ{8h>KB=QJ_6)1wFoY1^C8;K z9!$Md+mW_9LhOwhE%fsyxjJ$6GWob`esYDCf}D>(2Guyb17s}Y+9?-j#!5PbC!7Hw zpcWUmAQ{e0wF3hx%cD@K6Q(WGK`ILJ^>zMxa~nvnH%fEW9MsZE7Iq^}h)qjST8uuH zdPSb}n7TG5VLovZ*%LfsOE|y(2fX*&7G2(5$oZyxRY{2@AHUb65|m@QJv@)6CovFB z#kMU)CEg1W1t?wjgaY!E8fs-N$Wd#589O!M={Ia@kfM&7e3M^EDbF%bGvbx)K!m=N z-Ca6?<3%Zop`rH}6bxN+ORJf< zLzstaF87VxBG$th1E*x{sES<(L_8L43pBY03jKWE!>F#OPu3d?2tC zU{lw1NVqY3vbL`fJa|0R?;uk|j)$=eF295InX>mT^r61>40WtL>MYr;jc{{Hk*w0b zlFuxu#&~HOBuajI*nlMcY$6U~BHNx);6nQRN2lI^#m!esO5))OEPIu!m~w^MFRvu6 z=XXTScx^c!T0g(byP2StZyL>qX1TO}gQ#E7;FbB15SO45J@v3v8Kj)> zV*G=?@JjU%FIO~VBB19hHm2hG7sy?$!}fLpr%%os3t@Js=bxL0-=VKlwx4pe;7&WC z5i{eLAp@iL%E(PCXSLTI;B$9)ZeE>bP|~LhDATCe<7iRBQZ|a)%_MIp8sBsHOkfq9 zDwOT4x~3;NWBRH0)a?!RuM2Vbp`t-mckpRwvF=nCy2!{fO!e`jndyk6@xr&?e8x@f zkSFdVLBF7n*=1)yl|zRc_nxXQ|C$P;D^S0eq#F6Y9B;kS?e2GUX`d~+A5{nsQCb2z zW5q?c{Nyg^Qs%o6#bG^^<72#B#a@;H);TCxxra~lO-c>}-uX7MOzKWjv-%B6x3mZ)Z)s!Eke- z;h^`O0_2Ln^U_(~X%IL5w8hdkU>Gcg4&+ZHx891$eLtaJOgWQp5Gek&UI8`KrYRnvOZLW5Q!NNTgusqKIDck5tNZ3o6I)O(l8VSg-voUKniV< z9)qQ91ow?W^4c9#Ct}V^jw{xx-alaJvefP9>~IEWWIVX~p!D`|n3OqS>hyc==C%)0 z4)D)>lXxF!SoV+qG3gxJTyMI|qjT~ZD3)U2*#D&~O9as}J^OCk;m7ywZP^xVp%As; ztK?1PYadhvK{>NFOOfTka2Gyv}6%E5V-32Ie&-Aia2-zCIe z+B4;D2lrdQhlIRp3kTCbRY$*_6|A?cVma<~S;@R$@GDV91M%Imrz`Zdh^eB)a*hem zEw>^v*|X7CYIdl{kv3d<`W!ZY)3fgy03HEd&$W2(-qTKbM}i_s@!UNW<|^?0;I5AA zpJ&-xDQur8B{+bxl7X`dG#g?T>>5b-g0xS+ST0%o?fvQfIToRZ+I?#j`Q!m@!8M<* z;FgBGF<|hc*?9ecrNUxHglOug>bUTG(<>{1y&#^F?`;?wnPzN^zbllTpxg2rt^cyh z_7ah5v1hx7x*}3pe#Vtao7x$9|GW5V_2%XIp>lm7mV|t=3V&)M=$GMFU@ERb&#(zA zOpNbtmhM!fx;|;my!M|$b-S@s)*Ppwx8stxZtgDxZ};ygReJe^SXf}D^Baby>Cd^t zVMjB&qsG+M&5=RmS5HHa2#6i#U?~!=a@Xjux%Am;dRySugq_~`d6K2M>a z6kh)qE#aRI-XQXKz_8=xhN^Od>=l1vNiXHsp88}Jen6YE2Qhd2?^XlhOIU^qo3ZKz zgpw7^`gxzyN)7OI+Q0_Ei0%^lL`gToYv}}Uk6pWY#}+TRnu;CLEYn~+)_}q7@o`#vE zU3$ah#C_mJ@wkV~%hJF^r`#((o~}jm@pO7smSsD*dPi1b#VXj+GA*^D(t0A-&wS>2 zAO7dXclpgCi?*1|*Du8}K%?He9J`&Uq2bagi zdqj{4_vod9#Zc`VO~-Io!4ziD`o*ZWm$@aJEA+F=KX&%6<8ozS-_Y1B1D<{8)vAP; z>-a{avabUm=5dPLIpR1T0KgEBa0~p|9d{@5Wv?c$xndA&GXS9VV>__LG_pP1jLK|>1sNy zpcoEuEtLo0irM%$yH%w01vBYoLCL(ZdiO9JZxU?0U)vpQWRu%{jv?LqxO*_a^E7{7 z6(oW2qI`SC3h)Sb(}MVwe)!fsNh2E2fl7F0BkZqF1m`ihH0;`T<8U{Z*|_yD@Z$j( zn1HVXiz|4V`scu82;idB>BprR(wHS#wz2!xc)C>T9oRZ7!!{78-d4OfLdWe6*eEYy!|5(-b+8f{ z;B}A9wYocVa_i4@mW`7qME_Fth`+tl%%bVeu29zp+}^qLi0Q@Zea;JO7xPcAL}gZ# zI9BxrxX<&;2D}Fq^hl%8<^83kH9(+~$n`?QZ+!-h(D&m2pQOj}Q`W8U0<*`#7@^er z7Q)>^Gv-|ZEcnxnJRIlanxW2!9hew{#9z~^@EUZOtm=EOpevvvgDW!ztSj42lN)GN zgEHD7K+bo@v!|GCKoLHQ*z(6bEZkZ-3$NMYJz)QEqksb$l^+=5V58R6N8I%)A{r>d z8G6|EV(lt@PI94>Xv!vqZT}{!Jz(Burrzk!5U~Ag)DE20flB?zy*h}U*7stMn8ZfyV$}Unu_QbQo zxkiCxeIv^pG6hxwRXDAFbF+PbD+0m715z<7>DPDgX!kbCbid^qGZR&=d-8kKaRM+N4g z!Wr{U?cgUqWh%^^faG*G0?qNhPTQo7kWnh?lmAZt=`kdLxfs7d6y4()MeU6p@fwk~ zF|UG_#J`jHjLhXH;%~zj_O=>z!_id)VC+clKbc$dxSI9pa6>E+@+ZGGh)N z!+c14@}m3nk8NPp;9<*6Rhur<=527=!2y)QwO&39hXC4|#aik-OU9PeI#({0^_&*u zQSZ(~Y^##aO($11^1mYWa+{W4+nUbI{8Fny8X=lwa6)iBb6Aat;q;rG<4ZIINPcR3 zO6T?E_WGM17}D{{2iF-!E{h!eVKIjuUkE*2QuP1z zWhf&}IqAXL!B(ZA;r_}tq6T^GjDdu5c*xl)((M3#C^B<*2UR{Sdh+SJTJMjGZdUkg z{D8Oe_BJ|YAm#Ck`%k5^oiW*mZcFl>MEAA!z_{8W5LOO%FuCwe)z`_cbrBhMWDS(s zFX72_TK5_lat@X2mrBYxE2B04r*`IZVP{6o;fNJ0K|7&oVW zUr{hR$Z)u!Q3vP__^Pj8QyYnI*&|HO!lg2#>WdYgpr-lJj^`|AGtNBW8nC+5zDUOh zss6aYJCw8cGJyG~>cwTz;9$~$S_@>+9sH+o262z=pXlm1L>&I}jiOkeEtk*u9tGt= z`mE#wcRx})Nz?CPlY$%QZLtb<5)766Fk?-w$KpUP_DznMN8X*8a zin~)AvAwd=6vwCmq{)4Ljb_G?#4g8IRaMvR6-L-|#k^`Q%8m!WW3oU=Io~++Xg~gw zMDRcw7@r(*$Fi`szT>@zoEUh=vv}ZXM&_NoAb_5(l{$`}enmxl00)n>?{*xG`oAih zsy#?=AF19h_&oUd^I*^2$daD*;CP;7>hCj}j?duS6|^oXvbR2=BE6O@ zd!&flV}6#uju4teAu4{lABE0%+0ndm@naXLLCTHpuK~;g#dHYy#`dI{6?NQX??3O; z)%`Or7SXH${7aeYzXcf>Hs?tdT>A2zvx~)*`tdWhY+n!QCTWqp$JcE>QT*i4& zqKxukpo%G;vz7ia0@6L;TSC5bIGf0De0r}1^K%u^KS++t|GO{>`3b#?(fW7NUNgei z2{eB44`^Ic4ifk+l2=bH1X@}Ars-SyA8BS|+$U^@tS zLrIpfDVOp1-DphJ5oQcXXo=QX?72=-WnAdmsHH=@%xbX%Jc+Rguc^z|aWp(Gb~MBH zS42Wetj$VZ5+p&?C9a5C;H{)|A>O6{lH5^)bHuhUB; zEU#Iru9D)lU|tUmoi_Rj20Y`*%p```ZmCY-xp9sY!OnEAs5>VJb0@}{bd zO;{yMh4Ni{xPTzpJ2|uGfRjf7n#=b-XvGLTBZh^&6nIG-5lyQ3RD+j&X+UfNG9Q1v za)C{aPuV5ebJ#NejWJams&#gpr?aQLl)zTEEl1z*^2ARDJZZ9Rpac1)wNlGfuVCTN@b5e+ z;X+d>!AvG!$8c-dSqSgXY4D}l3yq>;vO61F3f+&(#EQP>Yx2`JM|a=JES1%CMHYWCD` z(eFy7#zABtNUAEB?!$xw+?9DbP#*W7(#xycd$Faw^S8*Eq!3f&5-U6J7ve;b;1&ED zHh4DV1lENTD7+JVDtzlatqSb5=A-eEyr%CT|GZ#zSz6gFxk}|rJ+c+p2$GU2e}C(K zeSGL)n!hSmaO~Ll?1vJu4?JQ4jHSO-X|NtB+~3pf-z!-!T zlUR*qdeVem(Q6z0H|jVD&_f^^kwTY1W^AWAZI|#m!?jX_$=P(eDnJ!?7aIJCpjv&;nmDDYlt$(2ci#4mIvAU9MjCwH#+n}yP-D^F?NJYYEIJ0} zCrOtp57asJu3n@g^NCQ(Sc!PAe;q6C$pSTid$wse7{Sfc39mrk$jVpodz)2WLX6H? z-9RD_Y{6pgngqv<=YKj(3G2>iok7@IumfB{GXcu*ohjeJ*?G3*266NG5F)my2tv5Oebu8Faf8ZyiHu?ail^qpoN`QN^B>1caG3@CRzc| zg*sp=ptShgB0sTgpM{pN)aSvP700Lx#H(=dYx-MN7%|ODEpr!#?cidSrQj}hNd<@ea-E7rOYaw(sexVrrSA@K6YETDM-or+!{~9VtAZHOy7Tw>$d7DJfzW zH)vI)nBGebxOEQ-d~}p^g>g?|y-|o_UdhpBz#U`o1^U2@`N|Mzo(>*llPeKWRFswF z+Ib=6#Lvm{Ym<(yoch`)-Ok<60{PY7pExe#b@y2*Es<65%(-blR8ecot$Z=y@8-#s zaB@;ev;3L3CUEsK#e-?ed3N#hwD!;3o79!`Q;xSVI--c(Ys{M(S44Xw$yF>vxkRP9Gvi3ZafclJWIyU=g!NE4SB1emJ`qqe1t!hgCVIBq+xtMy z6-hJgl;6XQ?H(RQsgkv@^+tHfOv4{FGRTU(t*6gxrx!j!H@(cgUYl|2k;2K3bZqau zqnXN1AkdCCn{v01UCiPKY&NXdj(m=EOJ%S%?H+ZRK&T#-Za8SttHBC02z919PQ_7E^fUwts11Vxu;W0kX%6f@^fSru-$18~Hi;|Z*;u|79! ztt6%X-?m}Lg}<9N*0;D%<;f)>ZbEBHyZ(KVvDS?5x9Fu;P&eWh@7@p`s2 zb6`2J!J`K_7=Qh*$!iQH%!SjX5_CuEg8R5@vmJG$psJ822RNEKD8SW zaFgoJ=>XAA%!I+Tm$${&pg8(u2+CUl%eX2pS5Twa&W;Q8(LQ*j0L8&tHO@`9hP-4pQUE*u7K8b9l z&lBjb$9lEhURd)d(=@%|rueDj$oq(nJ8dZGl0U!)MS$i!-$A0~A}BaUaKZM;(KWHt|<;e@fQfnyN3e0aS}kBUNhPRDnwq*osGQN`+Ujtr$C&X8hQ)&v(Kia)OQ5JaqNHO2YdQb8%lF>t1lBda!WL? z;y$sza70&q6fZPQQsQN{Uh$>D+%41jnD(=>0-@}qzRcWk+tLE5L~BaP{R70T_3=R0 z-2Eb@@g2`;F8*r1)%WvZ{zo596o$ldQeeiU8C2`+$ zzlA_ubVEk_tW!}0nq0f!p5u0z-=Wm7Z!Z^n1S>BBN&9o(_?93OzBF4KzL-|SRfzHlIrv) zzOCTqiLIV}9cL2&#NE(v_seF>s|t=O&cx+C=Oa|Nj|wu2nk99eL4^h%H7@lddRB5X z@`|9LjLq|42yaLBW#tNh@owa4lv5E+BvaHoOM}8I``$ZWpdr~EY}!6S(JuB6u71>X zqiwo^)UitTV0ZEaLlbJ8S`6_Edq2GA@?wM((15P5u zR{xHz>wIjBzLN9%^4@_YQuV!F0A}ZKIs?o{d{O?my-mv9w#Pg8R`yS^zAfH*1c9Zaz54U!a;)QR3Pt%6g_4%`E3@^uC(=s^1XogdC@-%)3Ovbd^h~!! zzw1}`3uO9wBJ=Zp-o`P5TpS%PSzWcpYFUdvSCfts{IyuHV zkxE9s9QLr-Ap?$2)}l>bxOe0@Y`i!<&0U8M!d7G|(23w3Mp}ZP;A`Z*+}F>#_yqVF z_6na#R7g7WqmpYpzK&8%+E=dsl%uA!RL6R5E3Gte*y}|0>QpsW_U_-+dJT|v`|z^w zuPa67d2#qm*RF8Qb*-!~mXk5X$&Yooug)}Rn1+_73dF?z6ns{j^vjhVU>xzo-&;k~ zp;?DREb<;#&RtP^-ETiapD7P1o{m>$T;I4%4}y=(1rG%d#tabVkG^kw9}d`~`0ZtS znoMJE>J3m*f-zt*uE98{|HN8XwG^smqrsF>712Q0aW_0Ep3s99Amk@XLOf5H+?m_k zKkXQ<#0GieQWoYjJtIu23{VB2z1I_2*T836NBdminfCrEwDep!tvc9U>FC;5yTZU&;DB_?WFfRh&`seak__(RC?nX zaXUOo_y$W@oO)bt`=Op8M8@{(V4H{F3y-`Q`PJGd-K6qtl9UFc{*??*-~I;OM5umI zH)~?bQFpo~H~swmLZ#r}@kK-5{rkSWbD|Rew1cZ~()LIb6zlkOrc@8N#_YJc44P1V zT=Jl(U1s^*?aK-uEm4*6?gz#&)Q+{ z-mS-5d7zE~2R&Qwd<~hhE)4>nkLI@5Ab-(!xN~TqTmGTArWTc0zr=gZ%{wnU4FD&d zP#qSkr%BHrx;+Bt(yz+FJ+C@peV^fHT|OV39iiEkznMiWt-!zZQ|OQN_NLcg`IyhT zcq~_(0id&PN^{=lb19Pp`0jRK$ZmPCe1Cnh4PoY+^QoCInwgST&qqDR9%W>xt4r^6 z2O>ns&0z4*b9!{(sWO$)7EqsVwwZ9j{nG^oPT%bF%GbD`7t_4mG)Sk>ORSSDD| zSy<(B3-9z#dp*)sjo%Kr4@Cc*ae8sV(vEp|fkMOyo4uR?7I(fN6})PTPFOASH}iZw z!7Eq!Y1Jznb@3V3&k4Eo=W+LJBp-0j%xq3)ntOO2hq)`%1N>L$1Z8a*ck;r|qbFn~PPi zk=46Xbx^7qIAwI{ z#(~to>fn%<5#CddTbpEk7#3YYy<*n>5OF>C0!2ZJ0n+^F=1q@iQ^%`6&DKm-+go^H z@VR&(*e0`jme=|dY3t9>L(GK%;k9-YQE(Cs_af_hwL90%_9oD}W$aM)oXgPjgS`a* z8M7jp?qw2>{Bv^Jl=j*Mq8pCFrcU)@>cRxR0>iTsSQyp5S4c6){k^tIQ?7{-UR)jK z9Ju{_6Fn*Kso4XplIp9nN}PAQSPptJK|09JwvZUy^LSF`EHG$c?J?OHOD=vf?o?M{ zYQ|yl1!^jcm%Pb+TQE7Vcz}6>K&LRovf6D2iL8)XFN#PVFgE=1v-ztO$jUgyU>=w} zWXiY9m(~|{x|CW6bpRo!>+|Ac#cS%Y?BOmdH@TxD+LZ$?$Cy}6Oj;QpNho+o$MzoI z)c7Y8@+w8`+^V@1rowmg<;&=JvWWhF(AdZ!gc{z6F^*hS^-wqMBgv@D?QWrCRofwB znMxIM1DkvJ;(zOY{`_*s0g!~iPEHD{_W<3ND#3p)KXJ7z(h>?OcxwLcr7?w3%E25s zi?1YM`vi%B13)pvN30-G)B!N9jW_B6iUFp;lua=k+h-IBWNigxFcEwm8{8hXi*jMP zm`;n$&AhdyLR3|Q*T;y3v`PV_+!7uPXs3AVqp6xSA`E3OD!Y*3G+iF zfy|W+Ufa~2V{6&<;kB}+-50Fu0d7CFM~g_5?`vvo+pJRVeuLkkI&+v(B5)v_5v(u z-!c{6So8xTTUE|Nv;`}0xd#0F%NO+t$^fb=7e7yW&5ssH;P2lPU8rH0o{WG#+;Q)9 zK3?fZV0U6Dzr3B`;A=;-pSjHih)R`!xH{xBC#q?%%;$ff9+U$%Nl1Ou$nqN2_s{_> zf^W%0MULIxP$#uY8-gF`y@~ifr~}X<#zV9xwdo|1_v{`Z|B$g_ndV)mwBQaO z#!jFmuH3d}q2{v{#c%u+Hn?xVvAqMEu?trK<&@JB;~AKCnU2&95RZQxRTGe+H{v7y z+`M=B{o6k-P0N1FSIyVm7N|OIn-KkKs%xJ|?42i4_$Fc0U1X=^FAhp&yz=T+XbTc`f86!>qyr?aY&mLA<>izE=Y)=)f#o zE`(4(4BjIGCU38sSKEQxCgIx4?!wprQIG95N;|78F+uPdrb|c5x2zIfG-dn3ssi7L zl8J!$H&{=iyyQ8O?0*=5@!||b-Q??d@zF}Jvxu6C(~s}#1Wvzxw+Z>cvP+lAGVNpgA%rF2D)vT@e4#By$e?_y+`Rb-oecaeY9YDCXV_bWrdFl zQ+c?Xh4}YK*KcWVRyWO)_pai^{p6pEbFvQ}s^Pl$zNGPZkUKiIMS53OJ88yc3%zeF ze0hzf=^IHfto)Hsf@7|9>UGIWfoU7I#J{_isjQU^G5%bodGzKEIB)bjHMwhNhzSW- zJs=>9Y~z`s3M0f9uGzPzCo`Z`%g9e;NdaPn3ndFeUqm0*IvIO|QPRlL~`R`1(rP4Wu(UYp{T9OiY!rlc>t7S_1@ zr>CjBzBNff!m${g!GIe?n-bRFYxQ>dr}I^BOjfR}7uEmxT()bX^65d)1>K3TUqt{X z@K19l_U|(5hTj2pP)(=Y+#39m-)4K%!rtOd41_?EO@qK9cQTwyZ25j>ol1>;>iB;~$Xf`~59M|7chaps+ zla_zXHKUZzz~@OHeB2`^7w-L%{z!iCwsAP9FXJ2e>DE%F!|`Lty-MbHjgEK`*U7rU zMDl&(ku;uJ4ERb21vWKn&L#yo3S(=jm0JBorLDC*{9gCBKh8Th2gfI@pj>_e4dyMQKyybzx{cJ$91jB#nkg#{Y{*ik(j;IJ3u z1ch94ZLkhybF$Z1;;8*ANVZWmexEM*JW8-WqMG`l@$7(8%686ty8AY8lk4R#6R{z> z@0@|sUz(#9Zkyk@wCcxu=JLdOL+0dPh2;P!S;tEI-LHFDTEYF)S#Yz`$kFR zD=O12VDCgj1}|;$VXj}nh|;=-v=q3yP758-Cavb}wVPov{GuRED zQzIu|4{7oe&?2|?&FMr3|BWZGWPEUqoGl#LYwN$3DyufGRSi^7E!T2F4MfZZq#_c> zie%seXumfzD)BwAF*GglHVUZ8j%R@P!sb8%;P5FlX#;>=rGW69R`e#JV)9@!Q77EF zEC_8X`~e+$wgGb+aOyMT8JxIv*5(~DU-En%fu^Qh7>Z!W`@Rw@*J6nWyQ_U6DAs73 zEW>aSh*l^}lVy{}5-=RzaNRcG>&_0YVvnHU{{{Frn6L@S)$^{icGk_K*Lu@7N^_irO6UcICLG` zZ&fy6zS%*f4n|Pdr}8YxMCVzh?|2fsTZSpM51ziMCPnWqCiW0j?*AQg0D{8fOKQF~GCUNscXIu>DaO<-#U;-zw^hEv-&?meI?6?i2WNYiUgR)7su;Ql* zFUH)V*jfC*tTTC*)R)4`Zz=r91+tSfMD)73S94$Z&c;}_Aff3B8x_{m`@@&(!@Pb~ zYs5b{mQp2bad~R}DgJ$4Ufr-$@y_^ar#-wDnuR){M`7()Ab?6jP*4cg7j5nU-yFLy z`{@Na>$N7RDFS0%P!x3-qVz$B;Oh9oQibiO9*VdtjiJl2hY=CnH}+VXSN38i*PjE* z_8FoHCz#DKogD1qrPhF}_j09^QNjg=4ylpVI^XZ?&`XrXgzl~6)Uz82ZK1~eHkh`& z#V85~1{M6RL$7BwYAn4CfUFqbueNp6I(thEW~ zCtiK>`hw#XuD7S_`GFGYivV3MY5mJji$RWTVP{3liGjp2@Jmb!%_(%g!2@|+2fs(L zu$80b@@z}vK7OEZWIjJ=2L1OfXSaLWDL8*daBk_O{+IJ>i*awr*~?h%?3X+U0Q&9r z*+xviN#}mihh8E;_GM6Z&Zb0HT$U9~5w^#FP_B{4o1ss6eBXy?WqofNu0kM&d?@Dl z&5w#O$MyN$H`)8djwET?n>F8l6{)( zh#~(wnDLam5?H(CsAgkh)6aoA9)Uw8T&aqLn^4qQJc;XUb5nVyqgO9Ji_V$x7Bf?0yY2hFPs$lF;TOj9ad`du(8R18CZIy>2Kn0i6 z$6j&`T~ugcWM&?=0SJdV^~=1cRnv*jcTpCU< zNapSm@x~kQL%|ZDyjJ6(zIm_D7Z2ro0&&zfeBtSDV&cF5(Z}RFv&pu)^!iknF8~oz zbrB(*qn#V@KvsLVU#3!&N0xl*)z!x8g`3-p&EB+6gg>8H5FuYrP^lw4H%TMuQ0IPU zL}O7FtcjS~ns%_1)0s19H+^K=PgW%!+~RfGF;z}^D?c8jkMxc?PWhC#q<0ZNppvP2 zrs9|GSk%2CovU2~husA_;IY+O(=J7`)Y!3p82)$KBGY`Kk!hROwhNCn>uyKNr!W43 zd&dqJuzDRZHt_v@w0o(H?#QdigyY%C3J_eT!QbtfudhXiDdsJ`z=`-r!ZqRIn?5s> zfee#OrGClMn-{QSoiOQBn-Y=JIwiZygR_%p;~E>nmRr*x`KFn{ri}-U1QHOt(=qh( z;HRC>g^yrRjfZmPoxe_{GOc#zi`Z6s)Y|seBSKTttRWZXBjL9_GF)-Vy>`Ohy>Amn z?Qzv!u;vLvW#%>P;D${Y99ph?|%Mmil9Mz7{ zeGtWsuQi(bw9%;)QlpiKYP1vnyOnjrC*ksItaj``0JtjO($*Md=vMnQ%YHqB0-?=` zzq7#@mZ^;Ubx3m>u-}eZ)=~LGjU}`z7)&T41@kETN^L=sqnWqeI@ncsKy6xyGoCKv z(_yK;xD+cp8QY2qi@cR9{A(|qFVy;N`VO&uATU+OT*#2f(tZHBIX{~Qmr8WsbvkmF z!NyHpC}lvX039suetN^^)_dqUIDpq?ZRKpWt`Hd|vKygWNVdv$AeXT`pE>Kx&>(#8 zYP0>DWg!c;Z@AMOt&Rm4m>=Pw^ugXowvVnIa&;Q_G*kUdpc$tnbZuP+D@w3+y^H}b zfhAc`QHq_5OL3!g!#H|!i%>la6}tqINdeh4O9r8O4bLP_tj+( zB+e-nv_A7L;APu#!Y|0H+I2@i44Dhiu6FD^B6}57kkgi__WNYFzX`CA*IJ@L5C({8 zg}J<#7PdOShv=UJQJSX6(q1Cx39Mv!a(IT|@Sw@GLYM`=9_f2ZHcl}D_Z*~tmbWU= zOdSWyobHRNk>&Ebicc!Xf2J))8b#eMp$ZTx>_WRvW&6#A_rOp`%&A~2YE;1&urMb5 zCNK-_L4N$WqB)QDi+v!axBu8<^k?2J<2HS7=_>SAV_qe+Oxe83r443XSuwLIegR)( zg`@@F+c&xr2Ka*$$2;QXINnqt^IX6wU!U=&k>~nVaxWLK?TgB%S0>+sdn`e9|CH^7 zv7DB^iZNRXSp>m>cW8!-IIG^6$+w^rM&GH3kJenWr*ga9ad?1#-&f|6V*SBG;!fD_ zs*To}ZGI|zO1i?O%FK({wm%HLamQBV=O6flKSTDbGUoQ{dp`9NZ|$kVesD07`wFH^ z<7%pH6Av;bxA|}3i_>kWEPXCPqC7_OaWZ$OyRibOXhAyCZlEK;-G@r@Y-F7?|R@f3Kgb8Tu1{K-w zU-}Ml08mwCUcmJEqGdcOxgnN--mA7qMzC&~4M6pboS47&!+1`^yFpiO0xL6}y4){g z;o-zkHgLkP5~eK*at5JWgsg0Gtu$rKv=hV^Zzf|2N4gH_tsM;Sl|KX#+99nQhx!)x_CF6%qwvO4V`pv6Zc(Pm^w4UA%0>e=b%f<6 z^cERB49-d9;=-ZK&c>;*Z6iR$&b@uWynpqB?F;(b7qA3cnD_C^-RUKt?)s19x%M6d zCb?Ui_U-3xGI*~@MVmJ<)Z_!JihrrGoEv7x+0!=4nYUKl9}Q*S1eP9u1jBa@GIjPU zu-?>zmo&iHudX2ca^a_6*}w~4@%6Lw3`MQ&FjBCceC}WBHtLxsW%BbFDlCajGIuz@ z{mz2!;Ox%D({|YK&jx{*3*TRCb)jb4VbKtCI!su11@j8kHSrMeKz-Mup+u(@rVdoJ z5l`=;*$@NokDn@9rp7X3a0*H!AHUCcM&xy4Ik<_Dw#e%1r;!8^;*1%8Jo%6;-=RMq zg2B33BBO|*)Ti9dJOS>Xx-(5sTn``N0)x8PGXCs-f!X1dY)a1L9ntSEA^fu8RPquP zRPs3iEe2r#!!x#3oS>NlT(b5cfe;iZ%XIZ9OwM9#iM+j}9j39w0K zvCTmG#cIowuG*1KkG7>B`bWb19vxBOg)rM0Y({6~jBpd$TkXMy@SxuWf$>OW_I?F` z?uOT}-^KNPStMal1r;KKmv*0n5rEj;^@1o&^zu9F$S-z~%N(^&j~6W;!6^|BDQZ4m zdPW2E<*eCrG;q0^} zz`Wa z$;+W+eddLmRzW77nFRgC4AM^s;)h24=@0@|j|#ByA6N^uKselj=kBl!Km*^7!QU3| zQ3K_m#1dg6QhIe@90Y%OcwAv*1a+wcy&d_obBNxBl`DeeI$%AJCW7Vq@%90p`x$93 zLm4UOo+t?En*s4A2z!MS#?e!lR($;&F$NGB1JQGbqjDmO(P)%@K72F03?^O=IJ!)j zn654k)j>!XpW9@XxLiF58$-eWP?8R701BmTvybpAAC*Z2=UoR5yd8_VA}F)lBb#Jy zrRLRVh)kZDx`P8R7-!)tZJk4YKvmLewS2V8d`K#TI8ZGJ-hj{sx7A|@gU@cfa)+Pg z(3%`eyKb@&4P8KYtdOUTnWfGHyUb;0$W3|q1J-Ny`z__YelrRrTyL>^T?IuV)Yj&| zUV2Vur}o1s*hVPotdAhxfP7*xC5D}RM{gZq2I-?DWZN-J$WKiJeKJY>hxPN$q#}wr zXXM+Fp1%zR9^~`96R_o$)1iLIVTZ;3{sZdwR+(EFxjPP%ZV80%n$0-`YWuF}2_ml7 z$Pk|pA=C}~0tB1o?a%Ev)={~YW2d1KSMEI?v^(ywSA1@GPltR0@@F1OUMgWD># zeTMt7dc3Kr#Kjiif@{<1z_G`5o#8|;NCXGM3qbKH^zWV2w8AgNmq^BI8a>n zJ$VC>te4RXLc~Fx`BnT-J?QirI=X5svH5KZ!4EnL8mpNB;Y;=*F%ytYrNm$&0guD2 zXp!s}J%NKJX%E`ui8GT4qHc?TE9T}&W{oneTL7^Qy?L)jg8qARBe=~5s3CPen}%fP z(4bR57>s9e>A@apQ|{p4XPE59hIJ3^43sJ%nE~fnQ0yS)4Qx zxqIYVU(l)2G7TFi1&%0gD#-G&)8VmfB>FR29xEZmgL3khEx4rG${JuG$*}1q@3B-iUiXmtS0_&teiD+u{^Xogit54Mlr4qWWic6W3=g3a?)qz=JnzkR2Gw6WL&*>*Rw0;*+!iu8^bC`(Lv%LVa6= z{f?{17&S6TgZFK|Jxqf?QnwddS1X5UtZ*h6~F^4CFP1osu*9Mu@zf1}S@EljcZR zaC=?VUz+s45rhyKR+@eM9d5Lk7nt|m5-TUhLV5f z7Pec7A^KqI7|^Wd)+1h2jQMu4U%-EaNK=F#RGWdUS`zp(F+rYi=I98~{o1L3tpbEV zbgZBj$^SkZMG#Z3Vg{wL-+9Sc@Sfi{V)V11x(FQijH!#kqknZ990hNF)6wzjlhwyA z|B+rm7?o7UfKh$lvq76C?-KG%a3lhmUT%T|s96rc65G#T?d*9mel~ zqvR=kiUY`amoU<+6mr(aA*NrzC>vloC1JZ@L>h@e8y5XzGm-Cs!Tjumq^tkeevx3r zypc%1{p!DF<}4CQ;zHV@&E=xuE!s7KF_sTMt?2>I%UVxshF~>e2m^>-X%~fgpXAM7T!uH5UaB%B$ zS>z{jy`j#zh}1+v`#1Gh{My1F5Yp!~tzO22|06Bg zaf!hzcnJJ4pP4EcOH6Ow8r#Ev=)wP}UuVK3wPwB4?op&05)O35;3m0gwyXZHhGmt~R6Ea|Ys4E1@g1)<(dK_hg zyRSY*cILbbvP2%u(;0u5J*NXfPg)QkHDt~2MLdK|_m?~-dk2|^JpvOmQZrV2Haot^ z`Tsq8eS;9692q@t0DVk0zd;WLyJ+jF z+!swym5@5Bos3C6PeQ1cDOfw8gud3-r=hOa$FGjc*~Z>e+yC6Rv-^Ih@pVTZi;Ih& zg55^Z^rujU+Q$SLk4=hSN`D4fb z(}JbJl2Ls6e_Bw7ZtY~RXrIR%V2a6y+%v z8%ybZ<=V`3TaRlcs;VV`Bze})U+xP_jdq}(St<&|-gfdx2>K!#9T?F;dOq~z@y~|i zyBv}I&xM}2wHZyo)#a-%g^8O&VQjC>Cyut-AcqQLKzk;HN@a{CphMvkm=b>ldjrMw zKUR>NLcsrH>;Jj`|47lL;Pe4Z=1qyOWcWW|_#b)v&#*t8V`jkr-)i~)M?wgA^um9b ztpNX-&Vzg=gZ?_IOM(1H7JRPL73>H{kHY&G|Fk2cKvqJx#*4-ZUZzeJ8R<^EMrnVN zM|Hu5Ax-W-q7}sq=Y%GcfYkVSOEPA36{zrQ@%t?U2Ls7qFmRU47mv!7enHkp0YA95 znO_!dZ-sv>8Gx`v4r9r+ckqK_1y?2G-B@Pzd-k7~SwZik$k@PGHv?w=-yXE2>HPKA zDE!nNtQ9<*0IJZXv4&ner+{)`N7NYqH*f-InE2GIz4f3zj6hRGb~8=zUZH zzS#K&9#VH+hXA~*Gd-Lrxl@HU3LvW*L-1{SK6AMtL=`A@D4^gM@h+gr^j(i5=@TI2tMcj5dw3A0Fr%mTGQJQxjrNwY;*k)Z4VQ6Y z(>aRjge~1pcQ{Sw3-BOsnu9KecOM@|p5ZOgNBD|LcujE!orag^_7NWKbne?4kd8(t zvE!s-h0=FVqyhjRiZ1CXo;e%bfqvVLC-mDNesY%!oG0?5psoBXBuwk{YqJyV=B^74 zIZHMpX~Q4>sEpByv~-yN`V?L2C&T}OYkhv#W!`Af~GOsh@@d~@DI^kE{*D>u|IJF{$nMFiCfh-g`q=O&_`%}4R-VIA6-Q9 z9rhD%jW$&-4PX^hd7y%i&sqFo#~%1#Fpe?u27< zqMK5blND6KROBh=?}mK0vFr09nN;ynn<)RMZID@n`5QuCyfx&>yq&$&53iQh$yZ(U z%WH9STD9)v3pF3}OhOGbC!tQSyBg=GT_v4!{k}EPmNdgWPuqjU9!7=jh6h=@3bj@a zT?_2vuphLz$GHr@Kj|X%<7u-_!>sCylV1DW*h1xug6GbrQj+vL5JK5*V6$s*1h2bo zg0|K>8}|TcwU1R@#=6DBLFT2P^YHi3SDgmI>fMSRs@C57#uWVyQ{z;Vbl@}HZ3d{$ zCxfGuO(SPGYV_vVM}MUUUb>J*IR zf7-^N9__%<_Clr?D*AFt`^B$b$>4_H>bP}jvmV7d3GLwpL#T-}yU;cKt#Jk*anyqO zo31NMI?UB!;Yn-L>{m2-Y15e>D=%6C(;Jv>s3H$9JW54Ju$b(8FYNZw#A&a4!!5z2 zg{ed6=tW&DSDv*r-Kw_~%k-EB>o1$~Ftv1>=0q{#mbgxtfh{tl-ri;YRVLpr_1vL; zGfC~d#?~rP`RVDM63KDQK1TLbU=uN+Y9F-3~0``jJ`<3Pcx}ifFdZ> zB1b}U2>Dh&x(jwW!gqJbc3O;mEF*2zA=k7t1QUf)eU8saG9drBgYZW%pW7T*9D5+< zDkQee2yD!lb0)UlHo@AhEE!&R^jCUoJ-?x-qp}}i8$Iphpq@Ml0KpYpMVY%yaJ80F z>PvUcdHd6Ut5opuLaabOTsFY)U0WE>djZFmCud!th@?**tXZ5*>DfE<*3q^whV>FIBT4G5G?i=!5TR-bz{+Fe zAF1bbw;oI~FLVmFdHiM-NlYEMj7`k76)0IWsT%Lp{6@g&-RGMh-_nf;?kxa4a@4VY zCJyo9q1I4JIzv>mUasXoIAoK}#|FH$2;4(W&i}>{PlUG_9gOlytf-3G+ukxzB zFpWMKmZLBF1yyprIoi?M2P>^?N#+*PQPZ^qYCL-)xw||OTju44(izc}91|5n=f@aL zKDgH6tpEGWEsFl1F;&&C-t_BjX`D^i_SGvLO+DWDIwytZ9Z}nCMSu6MZc5L@xwQcy zxcTi<4HikcR+sWmdF_M!{pq%h1G~g&4t2XHq5SPWI`yKj~CHK=~qfp?3S2tJgzX^Lgt)cg~=j(%q4xq`_ zZ+5SR^XMi|IYRoDV_cgV8;XRic(bB^ z%38LB4S#y+1JrrS;=#KR)>erhl}w`p-(07>grf;z{lX}p#>B!UNz&KxA1DnMG;Sb) zkzqD&gYbY}*cIx)@C3fbfLf+B8QLX(X~Ip%EZ-H{;|2@1a!(4M+{U+94MAR811D*B zka_o3XtGYchMXSvcc81^iB_4~2S$#OjAnXHu-$W?cL*6eW~@5iztVbcIIuzl5L9*X%jf zy7byK1Z#9~G&?iPHU)n*&0meI^SR}B)ZhvatZ*&sH^4>n)?dVX@j73tO@2lDI@7uFo0aM($_`wsZ*Imt)$h>BE)bzViPp!`aZ?y`B)tU(VJ0xOpfA*xI+_c`r3* z8&W?==4ll1H@+}2=7092S?hBMF zoNW0q!psT6jo*Qj*;!DAcg9RL{m7$)Ch|7YB>CfG4-i=4*>%EAQ>IhopfCS&dEPP) z;4U{wr)4{*b)#NQ0YKNXdttZ(@yj9pSYcizQ=5w8Br|mMFZeM+fJ^hCz{RX`5mhYJ zXV4hXIr@3?$L-$0%8!`NTqxMo*qxBu5i;+deYFE`mu)&HK(7;+ZL^XI7;KgweyOyI zKf6P~@4qR8TAZQW+8T-~3mIhjKYe`XaMybQzku%p4s_ugHkQ^E>OmN(4PV1cwI{Y> z-zcT^MZ29J9(H&Xz)zMx04&%jlLcDbU7qLFF3RY^?m7&+0xx(mjS;WN*!piX*kM;? zMKi#6`(GX0tmwLMn3o6&l)G|5WnT4hoJN-$h^XlN8+H;?O2dm61HlLjln$0Z<->d; zzHEgPM!j3|I(igd9{rt2WL?ebRu;IQN|z73Ku2IMv_`XcYLpuSqIbu_)?}mo5CyA2k zyL;X=#^2SqWF4AYj9LI3uj9bC(S${DAZFb$Q$dvkC_EmrCbh^bwBoc~DsfPB8+til zhtLK00M6nqLgwKNaJ>0-StwwJ0B0b9+D^9ukWLVC1c6B}%N?xediKyO2m4?wkr6iV z1QN2ni)$e^phJ8~=uxN`TVTOS8?Ft<5CFij?pCWcE;L?>`RQlJh=VGh{cCs+U0Rk1 z#=-t83}`ThI8TsW*sn@z~ohmB!^$q6z&* zBY;CmOvmzjPSIqs$7Rbsa+4zhg@%-kG&d|O1mIdzqS*J$UZuXS>F`4!Cvgk>*L0ri zadJgB@K2+k2XnDv|F5*97jqBBLYsa&tAq~B6#KhTlxs191dTLVEy|6|Bub3me`#}& z+O}k@w_@~b+ZX$O`6@8Qt*imRa+Xe_IWR)U^yTg!Tg$B-VI5^Mmfnjlg$w7>7B?<% za9z!Ro3^m_)|RC$h&z!v5Fh2hBlgzs$1U@qT zVd2yJa!pD~e}X!UlgHKbihqo-$4gAPJh~uw$Zg3Tu3yDVZ93B{BfPd)T_kwFI66$q z#^#f&TE+`Y`wn4A)v#lB++*F{U!AeEVhubr>JJ*6YbdW5IQ)|UJ%YrkUjD%PDMTag zMG{t`m#*0V<(njK+E9}_Te^$-o^cYxc2^>Tj2TUCc>hB9-(<_z9eZq~t8imsO*yXR zF6s5_Z(;t2-U~e7a?>@nxg0r`G`YeNiM7j7`FeHz!J)_yWqjjFnah*Hly6@XbCNl1eL6u-s7TsXwcmG*5)^&UBn7T$nRrTj zU+3X7(Q;k-7~0Ly?gVE$_UXG`kc#@>K7`pCxXCd`U6a3@X6R!!b?=6qkAYE^hhC#- z+}o!XQ}3Pind?$7UJ4DKEDDTl4cp@5u3|NC6Fn+*wGY}Bq0JsB7BVpS%wWRiY&ubI z!e^Oh-l_Mxcm`X^y)$znOJZE{Xp3>`rxWzNJ1#_F7hU?Rm?t~#Ly6e*Fj`KBAtI&BidPdGh*1X&G+^_W#q@eT$IIPb0PoOK^3|NGRJ56Vy)?vqKR-6j>09=5%(Hv!iXJI%X&8S#O`j9{Ry0nR zR~SSi)7)^|V0v7YPDIeWI+*076#CS$uk58cUqar*k23ZZ9{Gq*?@qsm+Y31N&(P(fB1So*}dyg@b`dyu?z>n4-IZLiZs>Oc^veZ z$e|Gm3GYw+@L@UM?p=^8%|*wfvAY4ZPt$VsRYwyl8t9EQP95m8^hSiTP3`5NSuX6~ zY5G{kOW&2TU5%2FdP>RqG}UB2A@t&0GT*F_Pk7z*wj789cK3R%#!T(+ZgVC2>bGhE zH*fM@*_(-_j2_IlvdE}VIc}hPb|&JePEHq@(!^|B;@-tu?H(zlN{k4GyZ`d}mPzjs8o1wHWZvbfg!>mujUO?YM##9oG)w2p-|t ziUIsAVU@7{U4`@|HT5l(EY}U$*BMgf+MlzErj+DDw2q!wz7gIRy04<8EaUB{6C`v+ zOs-@k`q-@T=Za%1eQMCm<#%vCwO6r@0DV&NYxb>IH4*Vtw{nl4Z76<_7fTubtPe{% zq-jJjY@KjFwbgq$>dd0B4E%|v=ERSi-+~+fPk>C&0Ibsh|Ih2kt?u0@?bV$jandOn z5%F!no$^~sj0zMK*y}+W?7PaG<)2+&1sSuVqV9Hy>{760j=#9fq$%JQEK>OM+K%AQ zD_ZqdNQKc$9nZ49Ssv-fomBGrz^?=ex^hT4F1fuxFy;8ORbr+qCVSb@vw6rJm7d|_ zcp_%%?)^_(1Z^S@DP+lGSm7C$#)VtL3KLr@bs;1I9EYF9d{(dmKqz!c5$!XI8y_M? zyr15Ym~L~~cr5j7tC2zH5o@ibiSgQ`AH~a*7T=VMO5Zv=eSnTz%Wq3@;1<3KKJynF z97O|rUq?X86!CjDv%+R@d=RNVY9_&Lw$t9s`=1#|#5Q4$4uRjAz7f-%$8v{z@Xa%mo1Y?>zV9{_fv+=!gG#z^+y z#mXujp@!t-Ej`+Mm)#Z@ba*3KpV79pzd4(E$GTIkcdHCjV17Mo_#`G+&51khOq&?f zi_8Gi#Qrw_=E~Hw8`6SASKu1#k*5OOoJ!Ay9gA6$@8wCT=M7$cWwhXswEr^Qp0a*S zn*EfOqRowS32mdy?24v zF~Y=f10(5-9Xl*KWBoGET+oVPZUk@=4kEqx7#8 zLXckQ?j&z_a>hSzi;%r7eHJ|$_c5Ouzm67eaG?Iu))ok^w-71({aezfOfmegbFn_F zty&jaGq3Bz)40Wu3q`$}AI`#Mw#GZS%*#i+d}y5W4N;y3dQHxXa)-t>=JsB%g|*Y8 zA_BFmm7sf+c4Y>vX}9$WP4@e54%$z;1Z~c~!DAopv;28~?gVxc5eK^_Uo~>K;K@3l zUn(JHk*3%mi^mQ>mgNZ%s};Y)ls-_)w8&mGL8olTXZRz{=TUg`@e|pHuYH$99C|Hn zH?F)K(Vw_1nMF-lyB#7Ndef}rg%Xcg`Q+LU3(dig7S1b(tV?w%RvN}iitneLLejfF zc}eU1o=vUy$}1YY`EAGea;)|VuFNoU$c={-Px`#y;DDU@6#r0D!SDELm((@gvLSjLE()6CO91d^PiyQht-v?ktKYhHcC*YEyQ zbKB#1ih;QQ{|&{K1dXtGe)=)5GD*;u?f9FP(G+4xTe4K1{vn{eNk@3#&j)3@P|>NG zZ%!S8aVv($X|IGnQ@7Xj7Cwti-CE(>7t-EuS4&CN7h{2ocw^iK^x0K%lntCc-O{pJ z$tQ6xGa2(`(V`k%H1dH%sw180W91)WWgZ3F`hR+zwlldpHyI}H{63RBLZP?Gqoqow z$}I8ncA<~moTgYHi5$>|>-=3TdWzgj2K6x$B|YHnrW|8>1d>T{T3 z-iNOf)squ~)g3Zg5qx$(e%@Tr>ejFNGNZ_;82@H)aA0LF$A0{?ea7T-6rB%eUh} zqDd@?iAt?(-|MePXG>cyJs-GwO(J}Nd-=5ilYY0*@lc#-xt;k$eR)|R#r64AeI>TN zP%F?Nc>fvWhaP5<`QmqL!Ux-qP( z%jP9E(JaarOPLqg1okKdq+dqoQ21O|irewaP@z9AO3hit3VmjiJOlD6EHJ3Ek?f9Ba3mv$t_E_lU2%H1S z>?1D=5Aefs#4qN(o1YZ+W_jv#Z^mWWZMWx$)?hv;WCS|M`Gn9;sY9(RL&1R6y;^qR z3sQ&TZ&Hk&0Pv?AoBx54n!>!JUbjYfzeUYfX-TyC;Oi3aAlmEsPHkFzS0BkD|CSVT z1(je-CM~{m<|$yWyb{oLdTyIVni`s3sb!{o_PF8MFZ){-Qo5AOnzlt|S8l0V9N$%V z?w)??e5W_`b^Af>4TuM%xn!#-!k@!9=k|Lc@@uA{erKD6!8fTL9~)9^`+KlwQ4ekav*lI8 zK01{IFR~!?V+!3)e)>*JwQBYW|N1mF<4tGOYY2%|pNusXDz-7%nlos`j|*M`x}D30 zo=xC|`$BA7@(Zne^;4$Bhn`<_8%Yb#dd?QV_TpBkMPOa8?Pr#-tD+ZO7)!WqwBkqC zvp66!u5p1IvjX54%q5Yu>-KTncce8RvmYOsj@8C3na_+T**(|=n1^*GiDWzr57}PTWK8gVdaKwRCn!NbFVD*wVFf5@uNp2pD^~>+K(tc^&gvl)Ywbf%MLaO z)n7=zDRZIN)hVdIH9x@WgEhO@fu@9Ck;3ZYSMOiFOYmbP2NXw~b@IE_ZBps|Q`NVl z(O=N6_Ffcqje7hF>}lzfAGDm=0+APtwSQRCIe)yMS;;GVsMHZ#RBtOK$1?Y$O3|3r zs!k{^fHHGS!2UX8m(mT>kvfJaqg`g>u|gGD*j~k34?V^a9`tmck-BqHy@k8Vp|aZh!*-Mi-gu)ST6a~5-V}-BLK?G=$ zBLa>|1BwWYS?aWuGOZV5NMV-Ip7pCfTV@%ln3vPA)Qw%3A98^bUHJE5wcO@ap$Xm* srrWh!(x=_C5rAW4^s5V^wi`z9ACp#FR2t3&N&o-=07*qoM6N<$f}+r5_W%F@ diff --git a/1-js/1-getting-started/4-devtools/firefox_console_down@2x.png b/1-js/1-getting-started/4-devtools/firefox_console_down@2x.png deleted file mode 100755 index e19b9f3e581ecb0909bd1d0ceb717388a603393c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 544 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 QbN~PV07*qoM6N<$g3odUPXGV_ diff --git a/1-js/1-getting-started/4-devtools/firefox_console_enable@2x.png b/1-js/1-getting-started/4-devtools/firefox_console_enable@2x.png deleted file mode 100755 index 2bf6ea181c913468a447bcfb08eaf8275d17adf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34425 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 diff --git a/1-js/1-getting-started/4-devtools/safari.png b/1-js/1-getting-started/4-devtools/safari.png deleted file mode 100755 index 9a9cac5b52eed67d59d53d8430c761edecd45248..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24386 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 V-G>l4di}3cUK%J>_1QS+e*iwsRtx|D diff --git a/1-js/1-getting-started/index.md b/1-js/1-getting-started/index.md deleted file mode 100644 index b3e8e77d..00000000 --- a/1-js/1-getting-started/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# Введение - -Про язык JavaScript и окружение для разработки на нём. \ No newline at end of file diff --git a/1-js/10-es-modern/1-es-modern-usage/article.md b/1-js/10-es-modern/1-es-modern-usage/article.md deleted file mode 100644 index 86b8b7ff..00000000 --- a/1-js/10-es-modern/1-es-modern-usage/article.md +++ /dev/null @@ -1,75 +0,0 @@ -# ES-2015 сейчас - -[Стандарт ES-2015](http://www.ecma-international.org/publications/standards/Ecma-262.htm) был принят в июне 2015. Пока что большинство браузеров реализуют его частично, текущее состояние реализации различных возможностей можно посмотреть здесь: [](https://kangax.github.io/compat-table/es6/). - -Когда стандарт будет более-менее поддерживаться во всех браузерах, то весь учебник будет обновлён в соответствии с ним. Пока же, как центральное место для "сбора" современных фич JavaScript, создан этот раздел. - -Чтобы писать код на ES-2015 прямо сейчас, есть следующие варианты. - -## Конкретный движок JS - -Самое простое -- это когда нужен один конкретный движок JS, например V8 (Chrome). - -Тогда можно использовать только то, что поддерживается именно в нём. Заметим, что в V8 большинство возможностей ES-2015 поддерживаются только при включённом `use strict`. - -При разработке на Node.JS обычно так и делают. Если же нужна кросс-браузерная поддержка, то этот вариант не подойдёт. - -## Babel.JS - -[Babel.JS](https://babeljs.io) -- это [транспайлер](https://en.wikipedia.org/wiki/Source-to-source_compiler), переписывающий код на ES-2015 в код на предыдущем стандарте ES5. - -Он состоит из двух частей: - -

    -
  1. Собственно транспайлер, который переписывает код.
  2. -
  3. Полифилл, который добавляет методы `Array.from`, `String.prototype.repeat` и другие.
  4. -
- -На странице [](https://babeljs.io/repl/) можно поэкспериментировать с транспайлером: слева вводится код в ES-2015, а справа появляется результат его преобразования в ES5. - -Обычно Babel.JS работает на сервере в составе системы сборки JS-кода (например [webpack](http://webpack.github.io/) или [brunch](http://brunch.io/)) и автоматически переписывает весь код в ES5. - -Настройка такой конвертации тривиальна, единственно -- нужно поднять саму систему сборки, а добавить к ней Babel легко, плагины есть к любой из них. - -Если же хочется "поиграться", то можно использовать и браузерный вариант Babel. - -Это выглядит так: - -```html - -*!* - - -*/!* - - -``` - -Сверху подключается браузерный скрипт `browser.min.js` из пакета Babel. Он включает в себя полифилл и транспайлер. Далее он автоматически транслирует и выполняет скрипты с `type="text/babel"`. - -Размер `browser.min.js` превышает 1 мегабайт, поэтому такое использование в production строго не рекомендуется. - -# Примеры на этом сайте - -[warn header="Только при поддержке браузера"] -Запускаемые примеры с ES-2015 будут работать только если ваш браузер поддерживает соответствующую возможность стандарта. -[/warn] - -Это означает, что при запуске примеров в браузере, который их не поддерживает, будет ошибка. Это не означает, что пример неправильный! Просто пока нет поддержки... - -Рекомендуется [Chrome Canary](https://www.google.com/chrome/browser/canary.html) большинство примеров в нём работает. [Firefox Developer Edition](https://www.mozilla.org/en-US/firefox/channel/#developer) тоже неплох в поддержке современного стандарта, но на момент написания этого текста переменные [let](/let-const) работают только при указании `version=1.7` в типе скрипта: ` - - - - \ No newline at end of file diff --git a/1-js/10-es-modern/11-promise/2-promise-sequence/solution.view/user.json b/1-js/10-es-modern/11-promise/2-promise-sequence/solution.view/user.json deleted file mode 100644 index 32f89971..00000000 --- a/1-js/10-es-modern/11-promise/2-promise-sequence/solution.view/user.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "iliakan", - "isAdmin": true -} diff --git a/1-js/10-es-modern/11-promise/2-promise-sequence/source.view/guest.json b/1-js/10-es-modern/11-promise/2-promise-sequence/source.view/guest.json deleted file mode 100644 index c32ac845..00000000 --- a/1-js/10-es-modern/11-promise/2-promise-sequence/source.view/guest.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "guest", - "isAdmin": false -} diff --git a/1-js/10-es-modern/11-promise/2-promise-sequence/source.view/httpGet.js b/1-js/10-es-modern/11-promise/2-promise-sequence/source.view/httpGet.js deleted file mode 100644 index d7a16a96..00000000 --- a/1-js/10-es-modern/11-promise/2-promise-sequence/source.view/httpGet.js +++ /dev/null @@ -1,25 +0,0 @@ -function httpGet(url) { - - return new Promise(function(resolve, reject) { - - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, true); - - xhr.onload = function() { - if (this.status == 200) { - resolve(this.response); - } else { - var error = new Error(this.statusText); - error.code = this.status; - reject(error); - } - }; - - xhr.onerror = function() { - reject(new Error("Network Error")); - }; - - xhr.send(); - }); - -} diff --git a/1-js/10-es-modern/11-promise/2-promise-sequence/source.view/index.html b/1-js/10-es-modern/11-promise/2-promise-sequence/source.view/index.html deleted file mode 100644 index fa875c5b..00000000 --- a/1-js/10-es-modern/11-promise/2-promise-sequence/source.view/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/10-es-modern/11-promise/2-promise-sequence/source.view/user.json b/1-js/10-es-modern/11-promise/2-promise-sequence/source.view/user.json deleted file mode 100644 index 32f89971..00000000 --- a/1-js/10-es-modern/11-promise/2-promise-sequence/source.view/user.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "iliakan", - "isAdmin": true -} diff --git a/1-js/10-es-modern/11-promise/2-promise-sequence/task.md b/1-js/10-es-modern/11-promise/2-promise-sequence/task.md deleted file mode 100644 index a75b8d9a..00000000 --- a/1-js/10-es-modern/11-promise/2-promise-sequence/task.md +++ /dev/null @@ -1,26 +0,0 @@ - -# Загрузить массив последовательно - -Есть массив URL: - -```js -//+ run -'use strict'; - -let urls = [ - 'user.json', - 'guest.json' -]; -``` - -Напишите код, который все URL из этого массива загружает -- один за другим (последовательно), и сохраняет в результаты в массиве `results`, а потом выводит. - -Вариант с параллельной загрузкой выглядел бы так: - -```js -Promise.all( urls.map(httpGet) ) - .then(alert); -``` - -В этой задаче загрузку нужно реализовать последовательно. - diff --git a/1-js/10-es-modern/11-promise/anon.png b/1-js/10-es-modern/11-promise/anon.png deleted file mode 100644 index a1675d2fee874e14fe4b2d222b1d30b29cec78d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30427 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 - -На `promise` можно навешивать коллбэки двух типов: - -
    -
  • `onFulfilled` -- срабатывают, когда `promise` в состоянии "выполнен успешно".
  • -
  • `onRejected` -- срабатывают, когда `promise` в состоянии "выполнен с ошибкой".
  • -
- -Способ использования, в общих чертах, такой: -
    -
  1. Код, которому надо сделать что-то асинхронно, создаёт объект `promise` и возвращает его.
  2. -
  3. Внешний код, получив `promise`, навешивает на него обработчики.
  4. -
  5. По завершении процесса асинхронный код переводит `promise` в состояние `fulfilled` (с результатом) или `rejected` (с ошибкой). При этом автоматически вызываются соответствующие обработчики во внешнем коде.
  6. -
- -Синтаксис создания `Promise`: - -```js -var promise = new Promise(function(resolve, reject) { - // Эта функция будет вызвана автоматически - - // В ней можно делать любые асинхронные операции, - // А когда они завершатся — нужно вызвать одно из: - // resolve(результат) при успешном выполнении - // reject(ошибка) при ошибке -}) -``` - -Универсальный метод для навешивания обработчиков: - -```js -promise.then(onFulfilled, onRejected) -``` - -
    -
  • `onFulfilled` -- функция, которая будет вызвана с результатом при `resolve`.
  • -
  • `onRejected` -- функция, которая будет вызвана с ошибкой при `reject`.
  • -
- -С его помощью можно назначить как оба обработчика сразу, так и только один: - -```js -// onFulfilled сработает при успешном выполнении -promise.then(onFulfilled) -// onRejected сработает при ошибке -promise.then(null, onRejected) -``` - -[smart header=".catch"] -Для того, чтобы поставить обработчик только на ошибку, вместо `.then(null, onRejected)` можно написать `.catch(onRejected)` -- это то же самое. -[/smart] - -[smart header="Синхронный `throw` -- то же самое, что `reject`"] -Если в функции промиса происходит синхронный `throw` (или иная ошибка), то вызывается `reject`: -```js -//+ run -'use strict'; - -let p = new Promise((resolve, reject) => { - // то же что reject(new Error("o_O")) - throw new Error("o_O"); -}) - -p.catch(alert); // Error: o_O -``` -[/smart] - -Посмотрим, как это выглядит вместе, на простом примере. - - -## Пример с setTimeout - -Возьмём `setTimeout` в качестве асинхронной операции, которая должна через некоторое время успешно завершиться с результатом "result": - -```js -//+ run -'use strict'; - -// Создаётся объект promise -let promise = new Promise((resolve, reject) => { - - setTimeout(() => { - // переведёт промис в состояние fulfilled с результатом "result" - resolve("result"); - }, 1000); - -}); - -// promise.then навешивает обработчики на успешный результат или ошибку -promise - .then( - result => { - // первая функция-обработчик - запустится при вызове resolve - alert("Fulfilled: " + result); // result - аргумент resolve - }, - error => { - // вторая функция - запустится при вызове reject - alert("Rejected: " + error); // error - аргумент reject - } - ); - -``` - -В результате запуска кода выше -- через 1 секунду выведется "Fulfilled: result". - -А если бы вместо `resolve("result")` был вызов `reject("error")`, то вывелось бы "Rejected: error". Впрочем, как правило, если при выполнении возникла проблема, то `reject` вызывают не со строкой, а с объектом ошибки типа `new Error`: - -```js -//+ run -// Этот promise завершится с ошибкой через 1 секунду -var promise = new Promise((resolve, reject) => { - - setTimeout(() => { -*!* - reject(new Error("время вышло!")); -*/!* - }, 1000); - -}); - -promise - .then( - result => alert("Fulfilled: " + result), -*!* - error => alert("Rejected: " + error.message) // Rejected: время вышло! -*/!* - ); - -``` - -Конечно, вместо `setTimeout` внутри функции промиса может быть и запрос к серверу и ожидание ввода пользователя, или другой асинхронный процесс. Главное, чтобы по своему завершению он вызвал `resolve` или `reject`, которые передадут результат обработчикам. - -[smart header="Только один аргумент"] -Функции `resolve/reject` принимают ровно один аргумент -- результат/ошибку. - -Именно он передаётся обработчикам в `.then`, как можно видеть в примерах выше. -[/smart] - -## Promise после reject/resolve -- неизменны - -Заметим, что после вызова `resolve/reject` промис уже не может "передумать". - -Когда промис переходит в состояние "выполнен" -- с результатом (resolve) или ошибкой (reject) -- это навсегда. - -Например: - -```js -//+ run -'use strict'; - -let promise = new Promise((resolve, reject) => { - -*!* - // через 1 секунду готов результат: result -*/!* - setTimeout(() => resolve("result"), 1000); - -*!* - // через 2 секунды — reject с ошибкой, он будет проигнорирован -*/!* - setTimeout(() => reject(new Error("ignored")), 2000); - -}); - -promise - .then( - result => alert("Fulfilled: " + result), // сработает - error => alert("Rejected: " + error) // не сработает - ); - -``` - -В результате вызова этого кода сработает только первый обработчик `then`, так как после вызова `resolve` промис уже получил состояние (с результатом), и в дальнейшем его уже ничто не изменит. - -Последующие вызовы resolve/reject будут просто проигнороированы. - -А так -- наоборот, ошибка будет раньше: - - -```js -//+ run -'use strict'; - -let promise = new Promise((resolve, reject) => { - - // reject вызван раньше, resolve будет проигнорирован - setTimeout(() => reject(new Error("error")), 1000); - - setTimeout(() => resolve("ignored"), 2000); - -}); - -promise - .then( - result => alert("Fulfilled: " + result), // не сработает - error => alert("Rejected: " + error) // сработает - ); - -``` - - -## Промисификация - -*Промисификация* -- это когда берут асинхронный функционал и делают для него обёртку, возвращающую промис. - -После промисификации использование функционала зачастую становится гораздо удобнее. - -В качестве примера сделаем такую обёртку для запросов при помощи XMLHttpRequest. - -Функция `httpGet(url)` будет возвращать промис, который при успешной загрузке данных с `url` будет переходить в `fulfilled` с этими данными, а при ошибке -- в `rejected` с информацией об ошибке: - -```js -//+ autorun -function httpGet(url) { - - return new Promise(function(resolve, reject) { - - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, true); - - xhr.onload = function() { - if (this.status == 200) { -*!* - resolve(this.response); -*/!* - } else { -*!* - var error = new Error(this.statusText); - error.code = this.status; - reject(error); -*/!* - } - }; - - xhr.onerror = function() { -*!* - reject(new Error("Network Error")); -*/!* - }; - - xhr.send(); - }); - -} -``` - -Как видно, внутри функции объект `XMLHttpRequest` создаётся и отсылается как обычно, при `onload/onerror` вызываются, соответственно, `resolve` (при статусе 200) или `reject`. - -Использование: - -```js -//+ run -httpGet("/article/promise/user.json") - .then( - response => alert(`Fulfilled: ${response}`), - error => alert(`Rejected: ${error}`) - ); -``` - - -[smart header="Метод `fetch`"] -Заметим, что ряд современных браузеров уже поддерживает [fetch](/fetch) -- новый встроенный метод для AJAX-запросов, призванный заменить XMLHttpRequest. Он гораздо мощнее, чем `httpGet`. И -- да, этот метод использует промисы. Полифилл для него доступен на [](https://github.com/github/fetch). -[/smart] - - -## Цепочки промисов - -"Чейнинг" (chaining), то есть возможность строить асинхронные цепочки из промисов -- пожалуй, основная причина, из-за которой существуют и активно используются промисы. - -Например, мы хотим по очереди: -
    -
  1. Загрузить данные посетителя с сервера (асинхронно).
  2. -
  3. Затем отправить запрос о нём на github (асинхронно).
  4. -
  5. Когда это будет готово, вывести его github-аватар на экран (асинхронно).
  6. -
  7. ...И сделать код расширяемым, чтобы цепочку можно было легко продолжить.
  8. -
- -Вот код для этого, использующий функцию `httpGet`, описанную выше: - -```js -//+ run -'use strict'; - -// сделать запрос -httpGet('/article/promise/user.json') -*!* - // 1. Получить данные о пользователе в JSON и передать дальше -*/!* - .then(response => { - console.log(response); - let user = JSON.parse(response); -*!* - return user; -*/!* - }) -*!* - // 2. Получить информацию с github -*/!* - .then(user => { - console.log(user); -*!* - return httpGet(`https://api.github.com/users/${user.name}`); -*/!* - }) -*!* - // 3. Вывести аватар на 3 секунды (можно с анимацией) -*/!* - .then(githubUser => { - console.log(githubUser); - githubUser = JSON.parse(githubUser); - - let img = new Image(); - img.src = githubUser.avatar_url; - img.className = "promise-avatar-example"; - document.body.appendChild(img); - -*!* - setTimeout(() => img.remove(), 3000); // (*) -*/!* - }); -``` - -Самое главное в этом коде -- последовательность вызовов: - -```js -httpGet(...) - .then(...) - .then(...) - .then(...) -``` - -При чейнинге, то есть последовательных вызовах `.then…then…then`, в каждый следующий `then` переходит результат от предыдущего. Вызовы `console.log` оставлены, чтобы при запуске можно было посмотреть конкретные значения, хотя они здесь и не очень важны. - -**Если очередной `then` вернул промис, то далее по цепочке будет передан не сам этот промис, а его результат.** - -В коде выше: - -
    -
  1. Функция в первом `then` возвращает "обычное" значение `user`. Это значит, что `then` возвратит промис в состоянии "выполнен" с `user` в качестве результата. Он станет аргументом в следующем `then`.
  2. -
  3. Функция во втором `then` возвращает промис (результат нового вызова `httpGet`). Когда он будет завершён (может пройти какое-то время), то будет вызван следующий `then` с его результатом.
  4. -
  5. Третий `then` ничего не возвращает.
  6. -
- -Схематично его работу можно изобразить так: - - - -Значком "песочные часы" помечены периоды ожидания, которых всего два: в исходном `httpGet` и в подвызове далее по цепочке. - -Если `then` возвращает промис, то до его выполнения может пройти некоторое время, оставшаяся часть цепочки будет ждать. - -То есть, логика довольно проста: -
    -
  • В каждом `then` мы получаем текущий результат работы.
  • -
  • Можно его обработать синхронно и вернуть результат (например, применить `JSON.parse`). Или же, если нужна асинхронная обработка -- инициировать её и вернуть промис.
  • -
- -Обратим внимание, что последний `then` в нашем примере ничего не возвращает. Если мы хотим, чтобы после `setTimeout` `(*)` асинхронная цепочка могла быть продолжена, то последний `then` тоже должен вернуть промис. Это общее правило: если внутри `then` стартует новый асинхронный процесс, то для того, чтобы оставшаяся часть цепочки выполнилась после его окончания, мы должны вернуть промис. - -В данном случае промис должен перейти в состояние "выполнен" после срабатывания `setTimeout`. - -Строку `(*)` для этого нужно переписать так: -```js -.then(githubUser => { - ... - - // вместо setTimeout(() => img.remove(), 3000); (*) - - return new Promise((resolve, reject) => { - setTimeout(() => { - img.remove(); - // после таймаута — вызов resolve, - // можно без результата, чтобы управление перешло в следующий then - // (или можно передать данные пользователя дальше по цепочке) -*!* - resolve(); -*/!* - }, 3000); - }); -}) -``` - -Теперь, если к цепочке добавить ещё `then`, то он будет вызван после окончания `setTimeout`. - -## Перехват ошибок - -Выше мы рассмотрели "идеальный случай" выполнения, когда ошибок нет. - -А что, если github не отвечает? Или JSON.parse бросил синтаксическую ошибку при обработке данных? - -Да мало ли, где ошибка... - -Правило здесь очень простое. - -**При возникновении ошибки -- она отправляется в ближайший обработчик `onRejected`.** - -Такой обработчик нужно поставить через второй аргумент `.then(..., onRejected)` или, что то же самое, через `.catch(onRejected)`. - -Чтобы поймать всевозможные ошибки, которые возникнут при загрузке и обработке данных, добавим `catch` в конец нашей цепочки: - -```js -//+ run -'use strict'; - -*!* -// в httpGet обратимся к несуществующей странице -*/!* -httpGet('/page-not-exists') - .then(response => JSON.parse(response)) - .then(user => httpGet(`https://api.github.com/users/${user.name}`)) - .then(githubUser => { - githubUser = JSON.parse(githubUser); - - let img = new Image(); - img.src = githubUser.avatar_url; - img.className = "promise-avatar-example"; - document.body.appendChild(img); - - return new Promise((resolve, reject) => { - setTimeout(() => { - img.remove(); - resolve(); - }, 3000); - }); - }) -*!* - .catch(error => { - alert(error); // Error: Not Found - }); -*/!* -``` - -В примере выше ошибка возникает в первом же `httpGet`, но `catch` с тем же успехом поймал бы ошибку во втором `httpGet` или в `JSON.parse`. - -Принцип очень похож на обычный `try..catch`: мы делаем асинхронную цепочку из `.then`, а затем, когда нужно перехватить ошибки, вызываем `.catch(onRejected)`. - - -[smart header="А что после `catch`?"] -Обработчик `.catch(onRejected)` получает ошибку и должен обработать её. - -Есть два варианта развития событий: -
    -
  1. Если ошибка не критичная, то `onRejected` возвращает значение через `return`, и управление переходит в ближайший `.then(onFulfilled)`.
  2. -
  3. Если продолжить выполнение с такой ошибкой нельзя, то он делает `throw`, и тогда ошибка переходит в следующий ближайший `.catch(onRejected)`. -
  4. -
- -Это также похоже на обычный `try..catch` -- в блоке `catch` ошибка либо обрабатывается, и тогда выполнение кода продолжается как обычно, либо он делает `throw`. Существенное отличие -- в том, что промисы асинхронные, поэтому при отсутствии внешнего `.catch` ошибка не "вываливается" в консоль и не "убивает" скрипт. - -Ведь возможно, что новый обработчик `.catch` будет добавлен в цепочку позже. -[/smart] - -## Промисы в деталях - -Самым основным источником информации по промисам является, разумеется, [стандарт](http://www.ecma-international.org/ecma-262/6.0/index.html#sec-promise-objects). - -Чтобы наше понимание промисов было полным, и мы могли с лёгкостью разрешать сложные ситуации, посмотрим внимательнее, что такое промис и как он работает, но уже не в общих словах, а детально, в соответствии со стандартом EcmaScript. - -Согласно стандарту, у объекта `new Promise(executor)` при создании есть четыре внутренних свойства: - -
    -
  • `PromiseState` -- состояние, вначале "pending".
  • -
  • `PromiseResult` -- результат, при создании значения нет.
  • -
  • `PromiseFulfillReactions` -- список функций-обработчиков успешного выполнения.
  • -
  • `PromiseRejectReactions` -- список функций-обработчиков ошибки.
  • -
- - - -Когда функция-executor вызывает `reject` или `resolve`, то `PromiseState` становится `"resolved"` или `"rejected"`, а все функции-обработчики из соответствующего списка перемещаются в специальную системную очередь `"PromiseJobs"`. - -Эта очередь автоматически выполняется, когда интерпретатору "нечего делать". Иначе говоря, все функции-обработчики выполнятся асинхронно, одна за другой, по завершении текущего кода, примерно как `setTimeout(..,0)`. - -Исключение из этого правила -- если `resolve` возвращает другой `Promise`. Тогда дальнейшее выполнение ожидает его результата (в очередь помещается специальная задача), и функции-обработчики выполняются уже с ним. - -Добавляет обработчики в списки один метод: `.then(onResolved, onRejected)`. Метод `.catch(onRejected)` -- всего лишь сокращённая запись `.then(null, onRejected)`. - -Он делает следующее: -
    -
  • Если `PromiseState == "pending"`, то есть промис ещё не выполнен, то обработчики добавляются в соответствующие списки.
  • -
  • Иначе обработчики сразу помещаются в очередь на выполнение.
  • -
- -Здесь важно, что обработчики можно добавлять в любой момент. Можно до выполнения промиса (они подождут), а можно -- после (выполнятся в ближайшее время, через асинхронную очередь). - -Например: - -```js -//+ run -// Промис выполнится сразу же -var promise = new Promise((resolve, reject) => resolve(1)); - -// PromiseState = "resolved" -// PromiseResult = 1 - -// Добавили обработчик к выполненному промису -promise.then(alert); // ...он сработает тут же -``` - -Разумеется, можно добавлять и много обработчиков на один и тот же промис: - - -```js -//+ run -// Промис выполнится сразу же -var promise = new Promise((resolve, reject) => resolve(1)); - -promise.then( function f1(result) { -*!* - alert(result); // 1 -*/!* - return 'f1'; -}) - -promise.then( function f2(result) { -*!* - alert(result); // 1 -*/!* - return 'f2'; -}) -``` - -Вид объекта `promise` после этого: - - - -На этой иллюстрации можно увидеть добавленные нами обработчики `f1`, `f2`, а также -- автоматические добавленные обработчики ошибок `"Thrower"`. - -Дело в том, что `.then`, если один из обработчиков не указан, добавляет его "от себя", следующим образом: -
    -
  • Для успешного выполнения -- функция `Identity`, которая выглядит как `arg => return arg`, то есть возвращает аргумент без изменений.
  • -
  • Для ошибки -- функция `Thrower`, которая выглядит как `arg => throw arg`, то есть генерирует ошибку.
  • -
- -Это, по сути дела, формальность, но без неё некоторые особенности поведения промисов могут "не сойтись" в общую логику, поэтому мы упоминаем о ней здесь. - -Обратим внимание, в этом примере намеренно *не используется чейнинг*. То есть, обработчики добавляются именно на один и тот же промис. - -Поэтому оба `alert` выдадут одно значение `1`. - -Все функции из списка обработчиков вызываются с результатом промиса, одна за другой. Никакой передачи результатов между обработчиками в рамках одного промиса нет, а сам результат промиса (`PromiseResult`) после установки не меняется. - -Поэтому, чтобы продолжить работу с результатом, используется чейнинг. - -**Для того, чтобы результат обработчика передать следующей функции, `.then` создаёт новый промис и возвращает его.** - -В примере выше создаётся два таких промиса (т.к. два вызова `.then`), каждый из которых даёт свою ветку выполнения: - - - -Изначально эти новые промисы -- "пустые", они ждут. Когда в будущем выполнятся обработчики `f1, f2`, то их результат будет передан в новые промисы по стандартному принципу: - -
    -
  • Если вернётся обычное значение (не промис), новый промис перейдёт в `"resolved"` с ним.
  • -
  • Если был `throw`, то новый промис перейдёт в состояние `"rejected"` с ошибкой.
  • -
  • Если вернётся промис, то используем его результат (он может быть как `resolved`, так и `rejected`).
  • -
- - - -Дальше выполнятся уже обработчики на новом промисе, и так далее. - -Чтобы лучше понять происходящее, посмотрим на цепочку, которая получается в процессе написания кода для показа github-аватара. - -Первый промис и обработка его результата: - -```js -httpGet('/article/promise/user.json') - .then(JSON.parse) -``` - - - - -Если промис завершился через `resolve`, то результат -- в `JSON.parse`, если `reject` -- то в Thrower. - -Как было сказано выше, `Thrower` -- это стандартная внутренняя функция, которая автоматически используется, если второй обработчик не указан. - -Можно считать, что второй обработчик выглядит так: - -```js -httpGet('/article/promise/user.json') - .then(JSON.parse, *!*err => throw err*/!*) -``` - -Заметим, что когда обработчик в промисах делает `throw` -- в данном случае, при ошибке запроса, то такая ошибка не "валит" скрипт и не выводится в консоли. Она просто будет передана в ближайший следующий обработчик `onRejected`. - -Добавим в код ещё строку: - -```js -httpGet('/article/promise/user.json') - .then(JSON.parse) -*!* - .then(user => httpGet(`https://api.github.com/users/${user.name}`)) -*/!* -``` - -Цепочка "выросла вниз": - - - -Функция `JSON.parse` либо возвращает объект с данными, либо генерирует ошибку (что расценивается как `reject`). - -Если всё хорошо, то `then(user => httpGet(…))` вернёт новый промис, на который стоят уже два обработчика: - - -```js -httpGet('/article/promise/user.json') - .then(JSON.parse) - .then(user => httpGet(`https://api.github.com/users/${user.name}`)) - .then( -*!* - JSON.parse, - function avatarError(error) { - if (error.code == 404) { - return {name: "NoGithub", avatar_url: '/article/promise/anon.png'}; - } else { - throw error; - } - } -*/!* - }) -``` - - - -Наконец-то хоть какая-то обработка ошибок! - -Обработчик `avatarError` перехватит ошибки, которые были ранее. Функция `httpGet` при генерации ошибки записывает её HTTP-код в свойство `error.code`, так что мы легко можем понять -- что это: - -
    -
  • Если страница на Github не найдена -- можно продолжить выполнение, используя "аватар по умолчанию"
  • -
  • Иначе -- пробрасываем ошибку дальше.
  • -
- -Итого, после добавления оставшейся части цепочки, картина получается следующей: - -```js -//+ run -'use strict'; - -httpGet('/article/promise/userNoGithub.json') - .then(JSON.parse) - .then(user => loadUrl(`https://api.github.com/users/${user.name}`)) - .then( - JSON.parse, - function githubError(error) { - if (error.code == 404) { - return {name: "NoGithub", avatar_url: '/article/promise/anon.png'}; - } else { - throw error; - } - } - }) - .then(function showAvatar(githubUser) { - let img = new Image(); - img.src = githubUser.avatar_url; - img.className = "promise-avatar-example"; - document.body.appendChild(img); - setTimeout(() => img.remove(), 3000); - }) - .catch(function genericError(error) { - alert(error); // Error: Not Found - }); -``` - - - -В конце срабатывает общий обработчик `genericError`, который перехватывает любые ошибки. В данном случае ошибки, которые в него попадут, уже носят критический характер, что-то серьёзно не так. Чтобы посетитель не удивился отсутствию информации, мы показываем ему сообщение об этом. - -Можно и как-то иначе вывести уведомление о проблеме, главное -- не забыть обработать ошибки в конце. Если последнего `catch` не будет, а цепочка завершится с ошибкой, то посетитель об этом не узнает. - -В консоли тоже ничего не будет, так как ошибка остаётся "внутри" промиса, ожидая добавления следующего обработчика `onRejected`, которому будет передана. - -Итак, мы рассмотрели основные приёмы использования промисов. Далее -- посмотрим некоторые полезные вспомогательные методы. - -## Параллельное выполнение - -Что, если мы хотим осуществить несколько асинхронных процессов одновременно и обработать их результат? - - -В классе `Promise` есть следующие статические методы. - -### Promise.all(iterable) - -Вызов `Promise.all(iterable)` получает массив (или другой итерируемый объект) промисов и возвращает промис, который ждёт, пока все переданные промисы завершатся, и переходит в состояние "выполнено" с массивом их результатов. - -Например: - -```js -//+ run - -Promise.all([ - httpGet('/article/promise/user.json'), - httpGet('/article/promise/guest.json') -]).then(results => { - alert(results); -}); -``` - -Допустим, у нас есть массив с URL. - -```js -let urls = [ - '/article/promise/user.json', - '/article/promise/guest.json' -]; -``` - -Чтобы загрузить их параллельно, нужно: -
    -
  1. Создать для каждого URL соответствующий промис.
  2. -
  3. Обернуть массив таких промисов в `Promise.all`.
  4. -
- -Получится так: - -```js -//+ run -'use strict'; - -let urls = [ - '/article/promise/user.json', - '/article/promise/guest.json' -]; - -*!* -Promise.all( urls.map(httpGet) ) -*/!* - .then(results => { - alert(results); - }); -``` - -Заметим, что если какой-то из промисов завершился с ошибкой, то результатом `Promise.all` будет эта ошибка. При этом остальные промисы игнорируются. - -Например: - - -```js -//+ run - -Promise.all([ - httpGet('/article/promise/user.json'), - httpGet('/article/promise/guest.json'), - httpGet('/article/promise/no-such-page.json') // (нет такой страницы) -]).then( - result => alert("не сработает"), - error => alert("Ошибка: " + error.message) // Ошибка: Not Found -) -``` - -### Promise.race(iterable) - -Вызов `Promise.race`, как и `Promise.all`, получает итерируемый объект с промисами, которые нужно выполнить, и возвращает новый промис. - -Но, в отличие от `Promise.all`, результатом будет только первый успешно выполнившийся промис из списка. Остальные игнорируются. - -Например: - -```js -//+ run - -Promise.race([ - httpGet('/article/promise/user.json'), - httpGet('/article/promise/guest.json') -]).then(firstResult => { - firstResult = JSON.parse(firstResult); - alert( firstResult.name ); // iliakan или guest, смотря что загрузится раньше -}); -``` - -## Promise.resolve(value) - -Вызов `Promise.resolve(value)` создаёт успешно выполнившийся промис с результатом `value`. - -Он аналогичен конструкции: - -```js -new Promise((resolve) => resolve(value)) -``` - -`Promise.resolve`, когда хотят построить асинхронную цепочку, и начальный результат уже есть. - - -Например: - -```js -//+ run -Promise.resolve(window.location) // начать с этого значения - .then(httpGet) // вызвать для него httpGet - .then(alert) // и вывести результат -``` - -## Promise.reject(error) - -Аналогично `Promise.resolve(value)` создаёт уже выполнившийся промис, но не с успешным результатом, а с ошибкой `error`. - -Например: - -```js -//+ run -Promise.reject(new Error("...")) - .catch(alert) // Error: ... -``` - -Метод `Promise.reject` используется очень редко, гораздо реже чем `resolve`, потому что ошибка возникает обычно не в начале цепочки, а в процессе её выполнения. - -## Итого - -
    -
  • Промис -- это специальный объект, который хранит своё состояние, текущий результат (если есть) и коллбэки.
  • -
  • При создании `new Promise((resolve, reject) => ...)` автоматически запускается функция-аргумент, которая должна вызвать `resolve(result)` при успешном выполнении и `reject(error)` -- при ошибке.
  • -
  • Аргумент `resolve/reject` (только первый, остальные игнорируются) передаётся обработчикам на этом промисе.
  • -
  • Обработчики назначаются вызовом `.then/catch`.
  • -
  • Для передачи результата от одного обработчика к другому используется чейнинг.
  • -
- -У промисов есть некоторые ограничения. В частности, стандарт не предусматривает какой-то метод для "отмены" промиса, хотя в ряде ситуаций (http-запросы) это было бы довольно удобно. Возможно, он появится в следующей версии стандарта JavaScript. - -В современной JavaScript-разработке сложные цепочки с промисами используются редко, так как они куда проще описываются при помощи генераторов с библиотекой `co`, которые рассмотрены в [соответствующей главе](/generator). Можно сказать, что промисы лежат в основе более продвинутых способов асинхронной разработки. - -[head] - -[/head] diff --git a/1-js/10-es-modern/11-promise/guest.json b/1-js/10-es-modern/11-promise/guest.json deleted file mode 100644 index c32ac845..00000000 --- a/1-js/10-es-modern/11-promise/guest.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "guest", - "isAdmin": false -} diff --git a/1-js/10-es-modern/11-promise/promiseEcma.png b/1-js/10-es-modern/11-promise/promiseEcma.png deleted file mode 100644 index f3ffe574cd85b5c1c1c2f1e697d7d9a8c357abf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15667 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 diff --git a/1-js/10-es-modern/11-promise/promiseEcma@2x.png b/1-js/10-es-modern/11-promise/promiseEcma@2x.png deleted file mode 100644 index f1a801a96322c0cb33e339d1af1392c989d0627f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41058 zcmeFZRa9inwzi48Q$XSFR=7jq4uv}u?(R-O;qLD4?(XjH?w&~EG~eFm>~ngIzU?a5aC?X8hSITk28ur%*sH38| z5J=S&-YE#kPY_8FL1j14i%e)Q<-w(%W1DFk_SO5pWC5QT_RgA_PZGw%Rah!>(1gJ#jU4wVBig3!Cx! zO73WSmB8}p>3X!0%HoLX4-T{O2SS(M6voZGmljI+Oym?_ov%cZ6oxn6B4$djrYDEH z?neXaC^0Mw2$<`4&?BUBWaVK*h$DtKqvqf;Cte|(`&k70oQ7-P@QoPjaO2wn(SYdB zmlm|BS`jwQt~XpHpBY4Y3XpFLaIoJ~urLP}VIt!ecaAk@j(vHY*!4h0C2FMIo2p3kRi_547Tg6jNMOjimEY(_u6PeT8|k& zKSQYI9U(nR82C^q%X1(4PdY*-?V^)81Lm8{oL1Zs!-FzQkFOxTA zcs1@y7F?etGlKLu-dB-tu=ulHW)~hKXq%+d^FsvGf@PTd_SKus#5_?`qgp_%n>TL~ z2H77BlxRm4><8EZ*zvwMr||3a(>(LM!x?yUE6k1C2HN zM`$hxId5#`eCdvx;&>eQCYiy1*e;a{jn%4xdWvCpPEmeG`LOL@h3(_J+s@fI8l&j< z(ZcMDAhdm1>kd$1MusSh(p&1XcA5x0tbwwKEAS=DIMZKzccf!=-3p`7?a z(g_v#cHm(yx&dG5Zm8 z(^HK(QeIx~p9RF*sc%+XAJ@?ZQHkc1*Yl?h285_;A2U58N;)r5mCMTe8QE%#xyX(= z1y1o#xrC0Z?#s?wF?FZj6z-3)6g#Gi&+iSPYU3tP>%52)uy5@EGUxMoaXDY`?S0d_Xd20b;r-Lc zLz3%+fFflnUJ^|grmf>Vxjs_!6Txipvu0OZKtz1QJ(qY1$U`G9I+V$3^y^FR94@K> zK{XAth^zBJx2{w@wh%c>{Zjq(a4H^w8r>(nburLGYn^4m`kn2lA4jB2oc$2Z2r z;ZwajZ*?2ddLDJO++mMISxiLS{XeN^E!v$^}TquCm7 zV||6;CyB7?3TF|Qa3KN^uD@-)J04*@CR3#&oC9iQ4m1;NpZBn~EIq)*ihg-H#zo}A zeBu{g9xxr1%e>Z^ez^9hcLk1$@#J3pDYXAu%S%><2ETRt%4J~cB{X)E8NF+EBcE-( zowRdGTekV5C2P}ik@;Vp{k=IgifGk4Z}LW%BMou;aaiBtZ=3s8;K0(!BZW7qwzX0&qr*$K6JN6z zgT+e}k?Ktc|HzBHK&xkS%t4t z%{`}amDnevTWr0ve~6^Md3HG3z-*#x0``<_y*@L^5zk#O&wOgK1Nonxvy6SZOn13o z)z7R(Ym?Bu2s@H_?93-v%_H0XyWWc2D~_NZ&eFPlp-OenE{S`(@2N2lA>D1ZWxJK-WN zRcXrD1Q6a!w(Pk69F=<}-W`tusG>FVLq}8opebw|^nP3?MPF#75@;;U{Cr;}UUV5l z4p?y^C+RRKZun(?bqS*OJOSJNBLs*4HGCYnp!RHTwJI?2Nw>n?Kq4gF;ON^Ni%5&( zkpw_LQmI|j{pah34EJzVZv~z3uNSMBW5Y(;I%#xUGU@%kyO?tW1D%_5eDN&!C~AxJ z8ItV9eC0*bywS|qN(Bh#Q8yBFcD?+z$(#n-dZ*?o24zdm#kk1SzCSY*IX)pn`2Azp zRyYg2OV#CE;$Ji+W7@ zbr=hHGr96VthejDm1B*+Omr->XKVx%c43$d3Mm8{tS6Me z7D=KS{BmE#4Og2iT#m3&8XLmqt>^anTf+P9oL2l-&wDrUwpKrdC%J~Q!`UF4&j57# z@SZr!|Qx$(%JMjv1T2e zGAd3jTm|V_&|cf~Ufz!N$z!2vMKtGOi%!lIDzN%k=tmaz`j|Xyla{xcNmJ-mC9d$&->UUO{~9XHI+x6+=A=Jr>C!yX7vdNdoB0{0>U4Xfrj449O_6J(;3 z4dH`?$CQg&7qfl1vwIt*Vn+Jq5Ayq;oXkwUO86}->;ytZyeu9^ZS@x&XWYO_TCi7c zhViopq4E!0V9}!9EB1Dt%-IZWP@?^mfm-0UDfatVvL{zq5XO&lGilM(cgHh2d9HL;b@b^M5VR18eagZ6#%8P{*@QXF8&DHt1X zCc0~2Dp@1CkP!3y-a%Tfeql?HyF={!Qceuxomk5Kdbh57G;oMB`tEkh7478U5irI1 zm(i$;Brn$g!3`pTq-#0M{Kx){R{NKc>5uJFOp@LZ~%pxSNkH~;@-Vk z@#n^#c@p~2uTa;O2exRBf^RrU1~$^dMg)3MZPoK({Dvl`-1JFQ42R0cySenB+fiDb zYXL}4-{ajJ_!eQ!%}qqHa`TrLjb3J5$U><+;bq7}o_Ui=wb_|l%B?a^k!^i2U*gbt zXbpfYzmLiw(j7vJLyg1Zfrv%!k1!QQAm+cyoj30y(#wFOR4RlfTw1s6fxr~NMlyl8 zD!Hm!Id1_t83!&{zaMWz{?z1b5~~PO2t0(}&vDe6$5V!}h0}XEYsiwg{TP`MwYeIH z$eRzx(NE5bg`8#CDx_I4aSWcv0;;HR|cHdQNL zvD2ePYFd2{@h2Ret+Pgind?4=oUiKW$IMYJ#EXD84)e<#fhO^iSnsSC-+&z_Of5122Ds97Kp>|Uf10k_%9$OtOd~FS~)a{B|m-^Xy zmJiKSrW-vl^o)d+iFhNBU*qqHYS#`%CbH!7e9Iq}3vN;+S0epXJ%Ku+`1I_?9nkS$ z8A}M@ZG3ch2)($>1xBrwGEBYwEX4qFH{4l8;}6TOZ;G(bYu%h9>-s9a%@ntq%uY;M zX;o`^6*d1t=Jrq=he46gVi}?rWmlr8{-h0B5s~c~gR6gO9#}~j5Ktu==a(S4Kde3O z5;dzFH8DmtsMt3$KB+&ntU^&b-ckHp|cS>9R8dXy(n)sYcNCvs&`8bE= zW@9GmVC~d5USMR;hi$ZQc#xhuQC~_Y`pFZY^_e^$aRbL%TeiYmmnWDvuV>5?xeNz3 zT9(nOblrNtXnM`pquZ%kuoF=i5`39k0!kxfL>o9PM8AyVU=Sbu9b1u7Gh$iC#4x_- z);NChz6M~J+IEhL$**P36!s`Y$e3|nlEGSQB|CBN-JrWH^)$2%{jhwBb~uhFSS^~-!ZECh~lIzXa`*julxla7sI(dWau8jdaYBo{s z5a;wgJ()gbEv5qdPSK4SRV>icOZ%`%$IVCY4+}~9K`e%T5$`S9(+D8|H_o>_0+;Iy zk!JZ8@7BaL^Qrz-fJ-R&{B1CdPln~Yj}o@c6H%K4vil7pW;%mMC-GI~4eYVbAV*D7 zEaL`xj10nt&R`||#?GQo<0&`vyFHney0!gjV^Om8Z!dZtSkeQ=s+GHo^Un`Krn7qf z2823+nQ6T#&$O4)^@KWKzQ{Uy4(QO?VEE5YT*m%<4@7#fcBmjPet!%<#F|P%rb>1R zo+KT-W5Z6H-&yXLnYg-1@9h<8cvCfK;>IQHZmx877l(%^^EfkOS@t9;2Q!b7$~`GP zICm@}!aa~+KX>FPXG)NYRjH7f+v^algyczOP71OW|!mAtEvIdJDIpo&V^oG=uLQ1Tp=h3>j} zah&w=de?$1!D#&xZPj1L)MxbM7m=kd{b7s$xmAAzTiab|72Fx`GRNP%7iyK%S=lvb7X!a9~`PxQL##@##d zQTW_QsH%S1Uo^a!E@LgVs_-)F-eA|VyIb&3%tTAHd-I2cx9EZedNSqh`}L<5V*F|4 zN{y!--`CZ9zO5YO93w%ScKQ)S(;J6QkXH9P3O|(h5KF%9tIc*F);C>D#AkzrY^nIb z$GYdoC!u157psjn-Pz_f+8*9Mgz!dQuZZnN+w4Z9SOk2&**BJ-d9wks$Q}M}UrR4e zR{AX1W$T`GwEF{s(!vA7spdC=;))LS*H`lmp#8?qH8%bxOAF{75SCp1#FNt07f$SG za+q@lU8$w|iJ+!E5w*bbjlSR`!k%UMrK;JbL`W=kHG`D6VZ)%oYa?j1BT;h?UcN$<5_#>y17(%Kw{iX55pyMHF-UqnHpIayUd#{E@?sgV07~`zd z1S+kv#bcd;WMl$?QUbcMsRI0b^DaN5kOX5Q&nvcNS)~2ce%bqWI8_s$4*QnK6nSL# zz}>*&7&*bmmLX)PTm)NH5jEJGDDT0;hX^tWEkboi8TE@iHcwsTrFY0uy}G|ma!Sgf zsglSH_vNNhJ=R?`+D^aV`7&PMzjW3#Bjeb7uOdDNj;8%$r?yAjy0`t<`y7NDbI|3G z>=9nRy>s9@_8SfVM89HtLPvfKHd*1Rk9o%R7+AX!QRLPwOtr!GC}%2elsCO*Ous!s z?|Pc2XXPz#c?qa^GOVEH0%xWZlCSm6mh~K3?FQ4d*xx*ER&z=m@HN7dq-b}Reyw7( z@Un?Pg8})|B;ofc-&9v0G$!gL*mNl>p8d{ID-q#5&VNdFwPKpKWq`h$5;bndVo74% ze4e~tc(atkc5-?vid!lGdTpYu|LlV-q=>A~+z=;`DHEZaT=_EhoFy3WVOcUEZ5paU0cB%tP+YYPC#mii9qEb-x0}w8mKr_iDGGc4N>?@z0{r3j=*11QqHxz|zZjjl{D zPnCZtuzs}fa_xs8CKf9g&kwA;Uj_Jf6XQN;QsQs#gVC-y&>XN}1-aS+!^wNRgv3gm zz)kNP#!T9Jh^$vPa$ib5cjZ%lt<#xyTc#1F#wG1eC!T0;aKsTl%g#IvSYNQn&4p<& ziXnbj$01xGS-%YzMUL1#4Se4Tg#rsd+$Rs z;}W;WT3wo5Wuj|>6Oc$mAP}0UpijHadFh~etdTt#*VD+Tl%EmBP9uU{!p$4pmqu`Z zKV7;0z`8@(Q+7CV;Jk`d#hn7u;$hA6q*7B2aN2nx=EB_HUX(ogm_ z1}~lTp=X;;wbM!qJJC1(R$ANrSMN`DxXO+8Mxs2JG7d}%Ob-kSFYK4%GZZ5p;W*jo z@Ic?rQ!)1|(*tEERgF7NMK9-V0sOlN=$D@L&k7O$O~QWjKHXl;RpD>p$p#v_DF$*~ zL;$qeU|h)~5bN56!e9pbS62>So`!wULuI5`F_V?r38|J9U@QHUMG z5?8=xU>oRvnkWbB2X^oc9^y+n0fG2e4_ui+fB9VCq ze|&ln(0^w(n}@J@ub&n3`3_pw3rg_cHT>MMAp(J$*|bZ}jrvb+Kg6$Ut?c}u|5LgJ z7se0FiDSdKg!Dg#`z;LejR+TS=iejn&ugxrz;Zw~5nZv*U?Be6!Yf~*)(8}|+kZcU z{AvFKLiN+NUnhwBe>%br@$>&Q>&yQC?^-J>5}B7?DCcDEdP~6e%{vV<`3Rkh+juCW z^tKO^8XN9kBe$Uo_7X>S<*HYaq0qmtcD?|1Ir_ruAxT6#M`%Uv(RF>}36~*WJ3~W;km~!ZxTsFL&i>asqW2EcPm@!5o zk@4fUwg*=sH*)T$^{QHtXJT>lmyeW!a^y^0l*3}yz=o+$DR-!AO+aBzx`swCjdNp4 z|E?t@nuf~H_Nc+jK2j-vo`!0)wl>?vL@LVnu=}w=c+^=^6YVP$qPa$8`b2=$R-?3O z0G!I7K2*bCqn;R3>DXWgKR#^%8faG(o!qTju{C^knP8%*Y$TH;+pOO-@q0ZbxM zVs4ONh@su>0IQZAea@y{k#6GP#rk7EX~UhXE*PQc76-NdM808lNQSuCer^=7MXcDe z@x88#H}dX$%y=JgkcMKqQ%#Zi0}7b^JbLtM7%-kW$kq7XuX`&w_&&-OO@PkK1Hl=6 zOlPgscVDJ#GHEKE&BSlpL6G)Z3+80XuOyobVgBdmINA>28Okz%Qcz#;prQz{qV2ebXZg6M}V>v8Hz@mS9VBMX#t|@a(&Yz{^ScDyQ?IpFJNc6(%xL*CACsm zwc~TpNfdr$0U#=&kp1fUCOU2`viXg#4Z3lx3=MMcGs){EgZ40ZDVITwEJo7@gg1zo z(T(20?ip|VZs^8s@dBzz6v9vFYfC5z03i%5z=QUttkJQv$A`V18@De0v~vj5-_4`|U0eW@KW`D(&B&2=H&}`^9*q7Pz!=nOs_4r+g{L@ zN*I;QmdC1=8-&%>4W=&F2egU3aJkpWPPFn4F&_@@-fGH#3XQy|4r0LEjL_nJt}__)5K2s132~YM--0BAYtS)s1@K2)#G<&m$a(TYb5oBb zi{VTFQ~zvPc#4*Lp&NwkUoeuINmxmBohZfWY*?x|+JXqbY9L}1^*I`@hAysrXWQS= zE|*1G4$AH5Z&NqC554$#Vg32sRQQ)Q4JA}O(&~|k7~3;dDhA3SQ`y|;G>l5pLiy0g zV&Z{2yIS;PoUR){F}d3A8PbB6ECpnvRr$sQ45K?*6$^M<0(moK2tYZYg;@Wx?40de zu}V%l_A6vVV8Q_^L81>+IkyoEP0yp# zlXpaYH-jXbkr)0yJl>Zc5^{tj-KxY4wT!P_G8Yt4x9z|DEfqIfH8)y;X?R@N5X6=( z-q4CQffjEKH=_bYBU4x9C@$I`rcig43c46Egx|TGFx-9IpZLR^7TK%QBYNtK*gp^r zO=!lC1iDPAkEfuNPZ2l#LS7Gcd$X37dMHTTz632nKUyR<2njAgdKiv?qT%>DYWd65 zBv^$tlir#f?zf#%;U{2XYTAW2dh_8y@L}M3L&}zS_&^jQ7p<#T*`Q0PxmtmS1_yY9 zrd8DCt_nT@w$2I?kap@7>Dbs*oBKLl?H5`3l7(B{PF3ON^{JN8HpMDtgdR}xH6@jS zIxbnl-m)lp%uCt4G*#j8cI9ITNO%?B-bNRlZvRkc%XDQaxlM|Q#0Y-_RKc-Jmoj!< z%4)h^qJ+-ulFa|E!^~|fY2;XF%$J1JY8*a@{HF*Cw}*=WoWOgpFSS7aHJzIQQt`y{ zJ0U{&fXv3NyL>!7ETQbX-5}29s-Az-H8=k(doq3qL(}6XZwfLw}q;ROaa+~AckYPE8#NtY%67Q zui4A%gE$}7$<@2lXT|}(_H|7!^0kL<Yy zIaUm%+LfWhLwU@%-_>r|j25=Jm$U--K77TzabqJc>w|I<8O(RFBCidKwtuv38s1}b zU2;_qgEN;_-6e+zPUX*$9pFIU=7&4=--pN6I+yj+d~LYHVQoQy7m!KVr_?i+$u zvu|g6sBJI4&vi@3o=TCwY?2@2H8>CMX*_bpcwQy=lBTX6RsUR1qECq-u7+g_v=!Ue zeYNmz{*C<0-%9Y$brnfZ4o+q72BsAKJfTJ8TI-d*NxqtnsgG{$!U|^a1_zJ65pXUe zd+9pEW}AXwlR_~6MygDgK~>Q>d;P5aec3yD?GxscUj_~!YgqGYn zSalI_a>6da`rIh$rjkCu?^)r5k@t?OeqU!24~xf(F@^wCf6U`TrCU7n28nW6iA zUxs`Ahv_A?HzGM)*#u|ZFahL(B`er4hu*q&`nc=*H=<;Wz44nTB!U$t@!#-fb>zfK z{hAGj@2%7AW5UHP7tQAVQMq?VylA$I%(Syp#??_>s=wy9RJi{poE%h36IA~CG+jOs z)PXnSB>{I&i~j@8yPHF5zLNW`MlF#JWhA0&d7FI@%WKH>R{-2s58DNre_RH z=dBH*Ghbe+XXs*5`d013>dsb5*;%b^->@4P-Nh2L`zxtdXx@yKl})SL%xujhv|0^= z$qL@SU3XS8)yHgLqBXtU8J3~D!B=!yK)wi(G&bSXckr8<02-m$)vOY7^<|H$PaA^I z-b#&rz+C458(TAT99cVig>OZlmoVd{HcPGP_ViMNBR37HFuHD9_wN1L=STT3>l)sD zeCTQZrT*7A2VhtIzQl8wLn4UAHzIjf@~isDMUT!|q~vjB>?YqvBMT;4KFR(2nJtlF z^)Y$%?9t-k2z>j|@%ZReSx>%#FA+}0 z)e_a^-?uFiN?CMIhp)2oIJla+;*D#penba+(A-ce2GHS>G$Drf8`i*ZLycha_74N-1mSa z>gjf3?)!CDQf)?dbD_^!vR022l0r>X{}CPm zON(bwv5u#d71OiOa4%mMI{9*G%j9=;ErF$o!97!*9(#*~m+9;7hk|~Jh?01c8PFmX zx;p=}R`TrXs{m`Cze4g((*;=b{-P1B0kQcT8xF{ZRuv){zo}6-hdXOs0R^b$%vP^` zyPkP5CAnj*;oG0Rd6Pt3+>U#3^RanR{aKuNoBVa$G!!d=>%{4T%*YnKMtP=#1YFj{vB({ivSMi+^1S3r;qh zEkoZY7s?q}j_0K&`zz5{jd$~|Bgc@bA(nYu1~w|}`|~2eyUD2RkF!t{_}tA1vw%km zwCDyYS)_b5yZxtnUFg93+yF|Rl8RVKhx0#okMKzIaRPc8Jl-*SIT^YLXETNBLD)0r z3m80aKY3@nw=`Q{w{1IHU%NiQ!`^CYTTq6Hoo%pK6mKV_=Q(D0ofB!~E#Am_4^sgM zvq2&vnpSOY1_Giv@eYz*RyMMRV&u&2Z&fEBy|u$;RHR|55pE}02xrh(Uy+X@l$cy< zTc1vwgOXkiMO$-OvuLKnXgTbTfTI-8s}=8y=154y3b+p*qQ9@Ac=qb+2*rJ3URct`hmoj;^#`WV3LenEoKPDPNOM{cpF9 zRgg3o$LWJnXgp}4NrOF(mtw50+E5&cbfLl$=>qvQE-1y4vWNf@W9(0fiGG|Fm-6tV z59qeTIZn*vZPZA-bx+0z(=37Y_z!in?|nR~{G4+Oe` z>6vE${p`B)81PesA0NB6+ny#lyWJ9@Z!3#?~ zCu2tw{F3phtHvvybC%|xA2;D_(_MFiz-sUB&7-pnlMJA4UlI5cXi!+3*Xu!Ck_&bf z#B-jGkvWEwFo;5nx?Tbq_|gblvlf%5gRvK9)mGPQGpjD?PO`42Xd!`G(}wf%$Vf9+w%T$sKkX8xoLcHZF{B zvrN;vB{Lx-La#MV2gjQX`lHOiL|XxtVU=gWS|zmWYuqab5#yWqyJoI+?)KM`R4nJq zx-e8-`UNJ5vzm4XyJ$hlsvtI=M^B>c?(2?OZZS0teLR)l$QzJAY@fAk{NLZUkVTzy z=f$cl=KtFHP<|Us3mcPOTm95}!VNu=qZ;p5Qm=xgrS zs9EPR;c=3XDpW>>z2H6vxAA)gK_37<+rpJS6iqe$bpBLz*~v(zSNq*FUb`xLi~C?* zi85Hm7r5W}i0I##P?S-s@UbWzM?0F#O_lHkACP*hw6&B`ueM2?W16_Q!;5ygHIimk z{{{aFbv2{xxDSrCYsw&~YXHE1g%DD1x83wO$yU=Cr>asZX!d%2ZRbmV9;G|x!(A5!>h=#h-W z1H4hre(Ty9puGT2yW16S*A2k`xqrb;&L-|8@-glu^3Ag6;O}z{(<5G$;-hV_gyRd) zJ~&W4lqV)8VL{-C=~Rv62Z0bbXB?lZnCDZ^NFY@aoTfYD+A?E2e9Z32W4#=t9v6qg zJe$Mv0e1u(2rzjl?C%?f(JsZYR`QiKpPyq$d8XybZgmI^$n0u~6Mtdm60+Sze!178 z24@1V{>WFnKVoU*LPo{AeOe9HqzSt^Mh`+%lq^6= zNUpE=WDmtpRis%33>Quz9I|3~WCQ|bnW(fj(G>thH>X`vy(2!bszozM6 zvKzN|iEOJDn{$BJx_bTkA>*CFB{jt$?u@@WB1$0bNzs!P2tN7ij2mB&nj|B2wf>agug-ZJ%F zLZM(L8DI4A#O8x+eO-Aw8E!40pFw92D~S;!{HBC}&|IYzt+j*XulMHrv5mozPcM=9 zSF|((4TXrYWB3=ByM|F&%-Y~MH7OcxMP;X<7*wXz2lMa+Er;OF6`&gFs8hQ#I#EbgAKo{2jugZ5U^fi<_un2;o{p+!g-Ph8U+J-My!S$b;a zwR-iQr!qYo%?I+clA$qTxE}ZRdphojT3EzqHqnBcHYw(^tkAVNP)95RwEQV1(%YBC zo_kC0*TT4m<5nXH+_x&++vqS`vs1wev-ojy=2$j%7=W0~@G%RW^#PW*J8)ltbQ7>C zpJ{Sx@xml)0XJeCy*nBMhVA*EYog4VHkw7cVacVhoGT%1gbaj`PtPL?ZKWj}_Y){a z9Eyr@b;4;qYZA-v%&hFgQcg!^d+$XHJ}0%yTbk2}rXgWtw2|feWV(M;E=lrfGOl*E zS4gxt@jacY0>f=u_l!`1H1uoyO=_#H`qv;$iXvpxlB>pdD31hd9F5OpM&+v71CIKx zO4$JLesDVJiOYT5$hOHpn$M*%-mg<)E5r7eYWaXVv?@MIm$&re$ETy3i@1(A-c>D5 zjXV#JS52I>fy{L=WzDLEW06pr0}QL*5(-bqz7NBClV#)VA*>!wVT(CkWU?|-4^`y@ zMNIY6_}38ctNyU<&DLHABU6NwA8*f=)7tS`0>K7^xc>+l3(+9hvyFt(OSFodTIxJA zt^|M`*l~X>pYLaw=jjrT0&TnL!+>$?3I7xF=61o%Hg&Nr7Wpdz)e(!912v%3QuQ`p zrp)>B=WmW+*>iz28g$&C^k&Q1{5pq9qK;SZu&#h0teEbSl@&l!#am3WEfY?>+i9CvhBGBYrgJ}6R(pU1>{Va`-75sv}mW!7_Uk~dL_IMI}cY=S_HGd zP;F~*PBubst5dvPJx`C*JDY6q^kD&b_}gu*Y9SnY`aOs ztqykx*E=N_46{t;TRzNz3ra!22(|o%a9GsjxVTp(dw+u$-Q0WuvIyEs)p=6IIESeY zSpBuyYcV?c3pzqxi;2(~lxnz2A#y7E>Ev%Fh0r?kty|V78H4MmSBnEsrjx+eY!SER z>6|E?s%Ch&PV&TOn%hTz2?bT6)>sdkvHMg6rBmMO4}gT}diVY~Dxc?3ZU9y!sxwBY z5AC)dr}xZBt?x^i1uMYcYc+D=plUb3l#KuPa{;8gbUi_^8belY8ek#nmwe;P+vs~| zb>VhIt#0KZ!n#}_lw+OJWP8fT!@lQyouN3z~oF(ehX9{S#(L0ebhx){&2WbdN!oX~53DJT%QX1VD?!m_w1lMHSA| z%ycRhXB(w)Km}6B1A+SX=|SEot!i3OfZ_S~OUx|tn?|fN!->!whU2SsCPn>pG4*?} zw=Uv?*7`29)5&X~JOQ(5&+aYT*OZ2k@f)binG0F*RJ!u~?Us~Kna%d`X&0y?K;~?W!M7J!ai7pUr!;}9c=~PmJ<7KIBgC6KOU?Fq;(0!5E|=+%HOyQ4 ztlCme*#5lY>0&gX-^|OCgXQ$+r;KzCgfjuZgRJLWNlcTbafkRJq}qD+pl_0y3#F0L z$ZhnRufd;ag0y#=x5?-&*!*_Y^s~;s+%2;9Ip)HUD_tEWVHc&LU^()ZL?7ayH|+PR zk6pghEVupVORK|hd|4DuiFHyhtrv0@&j4;c4~JtQJMEm4nqyc6Tnr@+ll#K%11?aW z-WL^JBn6t+6Y(_$%hfpKZN=+=gU@J#%pB-;xf!PoXm{-u)(K(VB5vcxNE zI_2Vz*(*2mn9_p`fg`%3>Oo?YjE28X-m$v95NPXdE3h#R#LY=(Cbu58U60aO>%O1& z42lte26gK)O6Lv-GulSxw6(=^V1nGKlo^uka9v)~`TV}lTbFCqF=?7eRw8W`JYeaf z6*04sHs{MKY12{vQ9wC-sa5L$M4*9pwsg`2eHMO-|DNX0e9E=Kk;&5mZ3}oBAt?dWG-8SptNgcSG zdmwlo-MqPecFK<7XdMDXlkm&_dPRwX8@feEUe{_^n7@~CYw;ru<6Ql!5(e4AU+8d( z*G7|iV$!1~*wROBP!f8`p zLfeusNxHuuXhC;cHe3j=$$KKYfUxcbrTp1b31O%8JwU+zey>G0#BibuZ5-|W9L1%UJkCXv8Duy^BDS+zN~u-ad^UEvD4|k%U{*76 zz@v%qAqYpN*jX&Gkdqv1(de&0L)%J*8coX@BC?0WuL|H?+O7hJs#9t%Dht!9T;7#m zCJI7@wIm}@ma5&t)gmv<022%scO9gBbtX}x?NH`UC%VJ;vQovTUx&RwBqd&fDb+Ok8>B`$BtP2 z_O{Rhh(~?+HQ{?*D68F>HmiDW??}~`9?4!oFVZ5bLPOJH(HLZCCGVb>_R<9FETK7W z%tjNR47eZi8O8pwDlyGkw*+Ym_|Z8p8p z)2Vm4h^yV&mHfD`5{NKF??gf-lr#dB+n&mxWE~tf<{*l^%NRN1vdyI?tPojz-Qozs z*79cuR@4RtI}**%z{X&dc##bd;tjP|aGa3ODB^DvNg0vMRk5{N*B)pbhr-0#5-(v_ zVu(;pOg$DFjN}bzI~BdfoL}aXgmIm;lnNe(vOYC6r1n3AyQY_d!NC28BWQ{D>k&3% z>ZFq9Te{N}EDf;8PbdbkS8n_W?UDrybiuvFZJ9*1yFipoZV;n<`!90gCp$|ygSfd>(i>DJ$HbOLjJQ1aCgQS!`* zJ?}zV4o$vV8FFB0!35K`56PAPB!;EIBe{*HFHX^#K)2^g6Kr zlwO1SN?IH82BZF(sUZJO=0N*GHzI!!)Bc~zKv4cau$k^U%H334-T&YkYU7j+PGb>V zO8bGXsu=4|*59z9c~z@7_yZ{SXjd?1PnG*d^cg?7%$2k0TsSkpL5b|3QNAMZ+rIa+ z_ssZcVQ-{w3%EXN%=N0Y0e9a``@E0uZ45+TdLxSf7Uih2cH zHa1<)t0n_1Vld4YG)uj$zkCH|JXJUfRNUwxdyF-boIbYIrk0ip>R85H+KVu04;Kweu<}9lH zbQ8xao~=$j=CL&EbE%D$j5;7V8A7~=E8O!97^&uM+}&ynqLFe`@|A4 zEraeU8?c{)ovXvYnJVjuN+#@OV|%~4BLIt#qLn4jCX8S+z^X_yEq`I?V00H|bo^JP zxck(0?D=*#_VdQq+2Cz+U9Vl9f!IoQb6%N#uYIk=DyuS-)qvq974dSuA2*c1e~u8X zwy7Oy?rrpk^J|-FAOKU_1G*L=(wcvMoi~xP6-_Ky(jJ424gWA3I>Aehg`yZl=@xhY zi_(Dl-;{>MetMIjw`iODS}>)f0hlY?&O(6wO6H(T7T>_WW&@hAx~G` z2rTuyX_UmzMUSE~-e6yg&uL&`5!O&j-eFFE@RS%Y`(qYDyOHbPX3cWr?(a+Wa;nxb zv?yk0sW5q8At}3c7<7Jne7@g z%TfJ*W-!+CE7X#ItS(o193CCK#`a-n74x?UE8Dv%Ll@@Hrek6lo5GgY*6rc0HA+Rm z%|0uc3LP3-NSfX6Y@C#!SheSiVjoAnZjDesVtM>k-ex)bL-%?bRp)QzQz&JhM=I5TqYu_T#wf=!m`+4J`+{RY%x7>WlPdI=H0TE zS`*1l^H7j(XAwKW@aXtnIUFoW|n1-zW1JU?wzS$)yy9-FZ4pIwz`&jYqz@l^E|6vx{7UM z>o+?Xuo;v`Z{2ycwDf5k)w^-s&BdrOdFmA!gm@S6v_xk%q4LV@Yk`ikKC*nI)oox)(_7MlxPe~i4ci=r_zgy>-`Je2 zv0z!l{5Z7-*rf#`nkYcc+dKG3a~RI)=gEvL8AW*o_aX zb?BE=0qE9BxIQH3oVQ1(T2V_6yz7(_uf&_X;$2Y>&TCIVa_qLzWXo-b9@2r9(dO>+P5Q+{tN(O>FMZ@vwj; zI(-SH#^&jV#B7wVEEQsNob^F-T)uDiqvMhonME8!^Olx`S=UEE^kY>h+OAYQi69=r z8#BY@$WqrGAd_cG7G}W9)a$QXaBa_BQmUm&s891+^viWK)WLk;6<-Ufi^n!QSt#sPOB^zpS*VRo!{=IUNIjNnW5FP1s!e)`abLO-AfU=Pep~L1` zK97^wv-jS<4|A6 zmlk#}A`GSclJyJG;ic;u9NeDrKO%~cU=TC<5^7{BZZivK@9_&Izo25sgYA<`cVR`G;VoP!~o|=LXCD z-~zS0_%23wr*{MMo-aI2u*B#GIeJjeL-?_1m&;n9Smyuy=P9_6A|pu>3Dd=fy)|! z#t=1Ae1SzmW)>|&jV_h_utAd~cy(uGmC2R4J+_9^tv>UnZ~NOq1CS70dsB%gjYmOz zhoY%#O{sm`%59c`UwvVCuYW+1sFsE5x??lN=CfC<0W$m5|!E|kJ?yS~d zO8r^E)hRnCk~<$KETm4h8;Pp0=NpRePg$QrjrxK<%RFK%&aaJ1#htCxywxJ!67&>i zT2eloftJ%;cV%9hd5&Fm9ypq%8kP(?vREd%jDlC1Z4Vzp)>xk~|r8 zh((cnk^tEDWXJ?a^st=8bOASdU5dZkE-v@uuh24$(v4WM;Mmb2_H z$5Y{-aQ6L?KL)_fy81G)_?<-zy6UszuPY(Li_H3! z$zCY=-$MBa!~ajzAMxSesDI&sG%e3q^HOOwQxPiXR(vY1z8(#dnsUHaH#UQUV{Ld4S3{| zrt-RV)UxWwXeZofp?x#wWaasWe=3t+{zog&ET376x$PKAuXuTin@8rm0rc}g72Iuj za~VNfPVdF9#l#1A@4)7-=?d=Hi7&a(mQZ$pzKUN0^<>X%AtO~PPqw-Ru}eY@4HB-m zt*VdIx0a1svICPy0vuz)esbYZzQ>51v(RksJw5(ey6d}asN!faahv!3kZ9M7({ueo zWO(n)N7RQ=!y#LXWw}x=ov0-KrRonT ze%Lgczf(PB3sro)R=ButUS!p&`=f}1W+n%7g|vPbXi(J|-0<#&e!}`oU3gPU3lY0k zdr1FpmH3dW6`oY}vs0$Sb>O1@(&prp?gu z`?jK#f6BMJDLje>u;zP8^ov1D#pZ(6adn${oyW31*=^}oQr z6+L4Y89q$b=ZKgG$cFyyY`{DUe-2VF~J>zUXbTRC--%FAhWWT)N$c}BuicJUwAJBmx-T0;R zSy67eEn$#PkdJ4q@uD@2Su$Dj;0G|P2ds00PVPKZ#%yFdOOcxw8~KS-${jtM+xB*4 zj4Tcqz&6hATCmAKAdAGtCs!l88GpeGTwP&h6+oqujLsjOwTJGZ(pf=PBy=EoB( zxBc5d>H4a*45l(|vmF*{K@tL-4-sG_BWr>N_BH`bS5AKLLY%V)gW>QMAh?>@>iKNW z^gB2fW_9w_)F_2Za*WuS)$BP!gMsO7(tVz)!Ebz;!HI=tv*l~(5?z#+#khH}vRxNX ziLYjF?i^QejHN{(qAN*}oOdSE#o-B%YcL$Tk(KSd;~*)DK)VytCh*C29adPjrj z2R27tHFjzjnH{iqpI%f6vX8?Xr!SR&^P>_Q)5(f4Hd%*EnNiFXxA#@>8@- z>tiC2K+M#p>qd)0Y*k%vycv=eEOpD&)m)VAmJfAV_^mnF>KeiEuB(XBHt{j;M4FTS z?Bv_#PFGBoDB}YG_mM;Kky&6lHfpnj&8HdVv77kSOpt7P`QNy|Mhl|F<5OTlDr##-D$juIdFKrMTOiXz!9hT)vn#Du-cEkcYj7i}J?xRZZRiWY8<33E$$q=6u zh~9sOZ%TPPYQ%TBjV$TyyFH;tty9T3!N|Wp$J_kcm*2JUS~x5_8k6V-hLA<*m=(=u5+0*2A*JG5aj#bgE#|MkLOw~?kxUyr)c zlvoV#!^FY%q&g)>=h@(5`vY&U8f0Tqwi`RQ|8qhX!_0Xfn=&Z^;NQ~am4gRPN&7m+B4af(~GfcNx z#5reEq^S#pw_O?@dQk35blea+?RwrRUJi(+Jrvq|j+pU%jJ&E!w9FrMk?lOUMEJ*F zb-@X(3v|}-l<1zT;d=*24&`R_b)s$trV6?|iMI~vxyjJ9STUFpp z7;VegBJedk+!6_g?Ia{xdIfDA9)6E1hTYQZJ)${bxt`F=4;I7Ggif;~g(s{!$7?0q z?{Jp~_b*hEd2D${FFnqB8*_DRG^sfXMinpOmt0sAbmDncA-|>PQV(OmH++L;cwEKu z@FZw?JIfkh_fvG*>mZUZ`E zn==&k5DlB>T1{54dGAd+SMQPz{L|C3j#Zb60&(Y}c%%8vr&iSOK6_YlLJtCMR?U}6 zjtP339xAONmdxBf=H&NRK`8F`%YS}nDt(+Y8njhK0K^p4ptJ`22ADz5lH~+Lrx<6V774SmfcHkKiXs zajlQ=)>ms)W~%feK&#Q_56-y*`t$@XolaO{=y2i`x2s{HCf$EF;V%VKG!Jz-D{<`u zz3L9*j%zkiLxWb^3$AlSzkj-?FgJ9lYWB`(do^~WI^v*9n&SP#wYBzsS|{nNY2DRo zs>jpq{B^nwz6I2*b-8j4j^$b>g?)rVcv=lyXh3W@On*n7idhU;vbi#ioLM_hZ7g`n zXsv!PX=MKw4c{ePznU<5-sdzCzKc`gDpA25ix52+S?@zUwjdzX@o}#H1%6qdvrfk2 znJCiws3#A{VOh$M$peh-lNcae@@5`bx=t*zK7GEIJQRhC_BayDp_0r@aw|9u+_MCi zXzpAE&$a7tvJ~V-x;9cAuLV5SXS#d&+5brpc5_t>7q0&|>eeR-JydWWCb;)~+D2|0 z*Ne69HrgMZVC(SDuWJ_@DsTslU@0r4rbXXMwWpxj)6ld666vXnF0spMa?!7s!<;NRBdJ!piWKjHAPveF<0RRkrC)1&qyOu zvkWP!!Jtc<@6OLp33rNQbvC+l0(#%%)I#aR0QAQ(yg?s&Hw=zAZu6BcVQ@sC`4R}D zA?io`^$Bw`Eo58Cg|Zftx6fo6U#&o zg_b($MK0s}bor{;Zfx^JG3!KPCP^l08k=EsXY6lEdOrOG`s@y3%)T1_V$t>-bY$@V zg4kmt&S9rML(O`wON&8=e{}>Mf%l%WXQjv*T-_EA`}{#W3tHF9@o>RBU15qQvwm-> zN#Pjt?oY!U=M(uND;9~@#EH1N*1kCJT6xQvF>>FA059FJt3L!i%pTgWxd0wi5f|Fl zWsiu#9`R0v#xk+aj~1&L8P5giePz7`eEVFHqZv4vYmL4_cNvm9a(!WPbnP_vIL#!A zM3n1RNl4Kbh1ns?e(&_oUsqe|@p)H48j)|yU8g0fmw42oi+i-#v-@7j$ua!-zO=5|2XowJzZI8D+Y-8Jd7S zN?6a3k6d3C*lU4VsiCtoKCjUzCOybnvB|J49gz6Ts3eFG8uc{Uk*6a_JJB=mn#tGM zsds7HGmvwWg+;decJ}Ve!}#{|<(p@Ef^mAV20+Wj0^^1U=X1n1OOYwAs|=}QasR$f zSJ`AzbYE@IqMkvAEM<8-=06adc(VSl2izMHYK(W?!;v4tP( zOaU5Q|3;yY*pp!65V?=YY^r9;i|SLSus^(YK7<7+u4u`-1QB!4^Dbk>({5`YT4L<&);f?h>HYd2cRdERwc8^jGr@PYpHljcZb(Q=^Ju|Nn)CYhAuC`^KrJvOTOFj+jMu6 zgHmI*qTdYfo}BUqXvReU*9~5{`kncnh+0CbTah>WSi!_{N`gqo}2r zg5q;l4WQ8K$Iy?)J?G}%xwstBE^zzfeh|$>y;bXhwUWyNIdR}0hhzo>qO>cG)3bzi z{c@eXQ(H;$<@*nwpLP$ebtqw1G$l}bESb)lZqI8GV~Ai|{zWYzv%EGAC`s61dy_I9 zB-CCA4EO-^-|q9@q#qE`8b1E#ea;a22iTG!H6D26e_inbVsnSF{vX%;kv+tieqyhN z0u6y{|7s@ZgD}Ad=zn8Z4?+ky_0Uc9@BVk>H^kmP{po-F?!=NGuyTks_P;X!8>~Vc z_h=3OX;0|?PvifsH|(IG(2mSu?(iX%s8Dvc7N!o+1mwJ8aN(VxpeDVH@%%Q6YPn%1U+)=Q?X1cy^@#kHK*g2C3@F%eF2&0JEl3?d3Fgha$%K4nQX&5aAaR&0tP?95c_RH$Cpb?@3^PkT*Iyd~bPSy*l$P&NzKr=VLK~GBgIoL?PX%AW8qmpETktSv2>d@_OAxS)_dm6Jc)$nvXuoeM zCbDy9kgu7)JsA5+Ri{mdUZPGE*uDns7=2{K5lrRdl`lKCL*(d| z*`|NS*!glw)o-#NjJO&i4}JutUK8lcKNNVntJo;db#wf{Rw$=DPhh8g^sMv5uxe5J zE#=O`_kJ>g#uBk3FirQS~ZvL0~;?M=BJJ-2+a@g2#dbpoFqOz zHL5j>Sd=ZJi>RL_&~&N~I93T4MQkLla*+dDeSMd)qe6m*5MV4SfEfDLY2Jnh+bdNi zqgaJS87aFfi)SY!_iop7OqFjGQq#Qd0)>D7zD^P?akGOB^+?qivwP}oA5mNc{HIqO znspZ|enM}wz zZ*r*2bkcDt@P6ld9Qb*7^oKq96|#rhg^^zkkt9kCI`O+dFE3?Ys`Ue(dO$iK+m>&r zpcEqRcX{JWbaBSc>7gciXRJK+_=-L(o`37cM#L5o^!p25;F1CgiA9Unl#0Ui%#w1P z&u1wMWn@Wh`Oylw{H|T-I_Y$755UI&@Z6UGi@K?9hZlFpEau%RVMQeFIj(`{k`i4{ zJM^c0-HdOdUM$SVjk7+{BTaNppPIz**VKxA3E{)1BN|U#0T{zQwgnl!UL>J?mbiz^ z8?6nO=V@65E6Mx8t7~68_k$noZ84&A8cBR>8kuW#U}W%d#KlUWN^D$O_luF;rlp#oRmMGU2l|?`dlKpAI;d;XXwyEZ#nnN@jAV~ z>8+#cw8;d1n+BTM^5c0A(64)V$T#5%V&xkhu+NXqTm_l(N9viR4cbui z0t);xoTG?K<4)QuR?0r{f56SzN;xu_<3;Wu%h{TJ-fCwJOc@}%^ZWS`A4JhVDiBF= zcjBSG94XQ@dSgM8$P<2Aj(SR@fs4JUbKKG7FXlQX^Ne3n0V8o|i<8H9G~0TMUMJBA z8F;OXy>z+t+eP!@)(k${CN9E4M2H;G@|lV!+_KY}DiZ9a^XePARnG!0&W_kr{B_Ai zY6?8cezY<+VP&JXu;vXC9rVHBZlng0zKTbkIU&?)G5u5d7|ssBv7hfmn{Q z4bgcDULEw)21{YVuzr8Ydeg)wf0q>KzFMupzyDxW#s2{*h5m7ugWzwXnxJYf*i#_S zrrqJE+(@OkzV@DM`B&ifjB#Ze$&htfUfse_5;d-UE1|!VPx!Pf$c+50L;b35-~u_F znpx_A4vpZt((vv++03N+nOb1$)K$&&mQGT6-@Jl4nmI>OR=0@{qq>l$jgpa}5}s1} zWAfGYoY=tN=5gR9kHRB%VpUyjm}7IDh^B_?P_;1M)QhEdzjE*joukdpNUeXsMyZbgy0yk`hB zp#t1HMJ9W?P+7WmsiyNH)0>a$-U&RmrmImbiBU+a++xn2x!z+4x14afav|kXxtIk` zPq-Iv!lsu@4ORgrVw)c20C%MG<<}V*i}R5y_bDP;>1Pv^PL6L}x75m&V7q48-FQFK z+fzAI99sQ{!kv@Nj@FkN1`wsw(WbBVfd@k*Jj2FQwe<``#R#<&h<0aqX0G07G;hbs|3gt2SwVrin5 zg%OtEsMdw}PgHsoK4RZlDnE?S*+^R0t4BHOC$$5vx|=0&XDus_W;5gpt(5tZo(?Vo zz8rcZkJdT8MNRN&%#KnLMVlk`5!30stZouI0-3CHZ8DZIUC8(M2!~#e(a`htM>X57 zt}W*|>cP`*4O$5g#>z_g-o|W1r&FLd8_DcH;e8!|UdhVQ6jmv%w~5Kiq@~SGs_D{S zG-;17*{%;rn5|+vYF$5iNa^^=UmPSyS<_~hZ|A~%>us(}7uM*U2$}u5`=oMC8|_65 z7iriy*l+oK5ZOY3o|pT{8Hps0*hg3zg`TcNgtnWh?Azz#)pD-YuZs4G)VHgsIK+G^ zSSIo#ui1=!;z2i}pzO7qNr$2v(bjn9)NOHW#Pl~&I2Usaw}`W6jhGj$%f74x5`~%C zo7?^D4WAAD=UQJ*^?efJ*8924IRSwVe&g-YX#YfYZAMoY}^^16@Tz`61PXWNFLm?}XCTZd3h8S{N0jlBHO?+5s55~b^4qew$y5mD zc33a!gAX;{D5I$9;nV^nH}SdIO&yJ|hSCB?F5_o~N(-vQwSCB^+K80K|H?DwMTk;LIbk%dSghgyl`jMcW-Fl~=Wxz+oKeuTw?`XOz zb84;LDt=OSnbUMQq|5qr-$7mCkIDN*qMp|3`^z2CpgXJgV3iEPS#~kM7rQ4;Vz5Zn zPOen#e(F{@PRDceI)3NIe5sx0#Nfwl@0yY*^lZlDcxm+<_OUG{bMhvZwer^mY!sU?15 zRS~5CFP(4MJ0=499SrXN_>(06Dno6Vc`95M|D_b`*z5gY&D<^_91y19YG z9xG0{S-sWq2d>ol?Bd@_$p%ekPlji4Ih)ZC1#yDD>!#t85S5z~ zqPd(;4p_`-Qv~2HPNwhyLsUqI$abxGOEPKV0*=JhlPUM+M)i<9>JV&gb9|$7ij&4$ ztyb|Qw;ENT{igw{=;ClcQ#}5vEl`|_iU;6Syx&HBLHMapCH9mTP>?LUyfQdXW*#W5 z+K`bz5|4qomT6BWO7-Z=#{PZSx+z<$&y(4S{vxE{8MX(tXXVQ$;z#vyN<|Bu>fX;u zZTP?2qc>r_%BnI5(=ZEx<(9yqa{AHmRxRCL#n-&)0BMNny7$^2;ZB7)=lu`e6n%z; z$AnlYY24tc`m4R@4erw$Gm(1X*zW!=9P8~Ft^Ihz!TaNNLuFJR(rX{GLX{hvBH;o9Cg^wmrv*~(Mn>U@g2u;5LWF3r2D*% z4f7SvLy)mISz!^**Q@186Px&bENt~$e`FidG81ReFJC2}$G#n`TY?8GEAZ^kZ|>K2 zBvd+ivQp0Ex_%6y86ao16>RA)Y!1ytdQGd0MZsuo^92Q2ex3IIXHr+N$a&lFq%{6F z_Gu07bDRdw6T|>@`@}HFn<#lW!FSOj(G!-nDhYb^NWU?1!Oi!ng%amTy5~kzW6Q$2 zwzZ*e{aPn)X$LaT{y_~`xC;?98y){CiJ~bn(#&Lx`mOdKOO05rw8}W2DGa|~gC7C?ZQdUCokGhxA(pC$r1k+*{mzFIa1slOtXYW~zh`=iAnaeP>kSO3gkndud@om63mE<3dpW81vuIHtH2mz_F>4!l zf-gweAJXOgvtsm(@unD)r$~$OWd6JuSB~EZaxT@~D-eAO?aB*!LMAu;I}x@ZS5I3) zy^iNFMXux01a;5a1ZUVI$k{mAJ&0BWESH&U(1zGKYVPQQ`&Hg?n8(9 z;?;ipGqqv*2Q<|8f1Y29bWl>Wf#z-%jtC~s9zP4|Xw#SFZ(B>o)#U9jSiL!=bX7+l zi3{I4WXlvvmX4kFYkG_rS&J`HM;`Eaa?`jyMx1y{tB$jn?p1%$3jOS(GUbVmD4?#& zhImWI=U2^#bR2i{yuzvzxQ3KzRQ0|~zZ$&aLaafFvC+}3FH&9|tF{O8Ng4sOt(@wI zkD~&j>T%?ap5qU5G`6?q6eA^77@K{UZ{7mqZOeu$t763RHjSw6zSZ!;IZF6AW@_@S zN=lH?ax9^gnOO!W#B}Gv7NO1IgtWnMH>mR)iuimv{+H^^#1iUVO{d5{Z9LANSzK(5 z`@;Mr+$6DYxQ|qgpUStC)!oF+)xHRTdnsZr9tLy{mX&#-g0!6LhganNCBHk{N3%e? z3YT+vBT}F&GRfm?@64ZcZ!wqaA2mFTg!}Yxh(O&W!+TtHZl@u(xY$Bx7JXi~bYz!2dTL8M2UF6?GsYQr>C=X{1dJTCm`9+FpviIHK^?TIr1^xj& zHcdO059_`%(y3-Z$l=3!7d(U4AqgKbdi`CM#E9N~e%`0K<2sWidDK|-#hyM~X6~Q% zlZalduGT->sNILS#?s_Ssb?OuFVoLj`hwHseq02#I2m@C501yrL+1`>kQ2c(H32$q zvv;jcKhF>|q_3D%I_GhfXfUg5w!c-Afv`H&Pc5E_v+y48EPcDSXwtpJ|@_40tQ*K7%!DFDFX`X#zqQfC2eDb%>_E85id$MmS54HLYzI3#?( z&-B}8a^d@NxBB+Et@^z*XMsOl7@(i72)()~{d#vP=@vWuTzuX}xXMf5%F15d&I;p> zO(nVMMNE>iD9~uFT%qTNthjbi>+7zL+nWq9d9RLNmbr|B?8*r=N z`d&V@$Rud}l8>5iPt;QL9%~vX$Y;H*ae~JZc#`IM<0~41>rT|4fdBr^V|+%Gx^Occ zo4X70`2w0vb3b-U;+@k?dbYUAcy~2>X<5QwxfD*j!08}Beh8iy7-qdM=y3ZMKk}^> zuG*mPEQYt!*LU`Zmpr!jd18Ql4Ocs7O8I% zw9V8w#41bK)ZdvaffLZTG_lo$HPq;PdSI(JWWC&YdPie@iL0H2BJ#m6OE_ol)9rji z^&!nhRQU%JLDyUPs0v3mtj-JB{Awah2#+^z^8WT*}*AnZF!H6wN#&H=HsX-iE@#CWxV}6wE(2 zUL6~#8nMB&yBV}7+m;2J!l})=TuYqvv$6as;~=`PHa*yq5Ygxg`Qj2M6K?^wK#c*< zx!8KP>&miXDq`29n{O9$UqWm79ZlsquGzx(cwPkF$MMpdjy11UXkL>KkU5Nv6l4s{ zfg4fAxJ{W|0o9c$jaHH6rxJZpOL{pC?#GLm%LtAnQL=j<9agPe@dcu&0b@#jq_#Vx z;W+E?OE0%x-ki;=okPTWE&jF4MCL9hG&UR@Mk7v&GfYVptJcJ99JqpDKK*ToNu3x2hnD-5Ys z$>t~88B@pI&p7ktc^{P0Hu*Wx5i#%J3&a(#aqsvA_0*DjC51fOwd6H0#l5A@X>hunM9iUY`#eeohAn=r z##yIfKZ^H)?J+I$(p{%5+}GF^h|q0p#Wg zRz+OnR;3L?5_x~vB>QMD<9rU{f454h+f)9LFJ*l^DnXWxoDFfsv$%dt6WOIwrAz_B znWAj#wRVoBGv-^W{HB~pf3(cqAG;~LQK^OHaGZq;dQK@LwO{BR(|XpCOiLhLx8C3) zsqkUpye^H%MevvLhW8gPwb~o8pd)XtGB_^ZL#5PUo;v>dtE7|%4}7og@LGV7?_j*I z@n-#vRi4hlI}VZSteRojWM(lU6(i@2nvfBFL`-mB0_K>VuYKW=g`GWh~Bd1N`!N(vxw#=qgj-%dM(fILT^R|%6^1Vy}C3EEhnoS{hDHQeJ74=k*UGVk}y@Z8H zX+pMI9_0+ua%P%M@=<;#E2r1A=VMg?wAq<9Sfnr%pX>}1Yk~nSKve$Q8AdK+i{CuD z{(?Uug*|4%&p#yC?Da1@b06cbvsL&}QA7`c>Z+cPecfZ?97UOt^QPvA_8WmHR2cUB zclh)4i(4goJN#n;HmVxoY(y&=RW+|wa!@x>uAU$)M1P~M*#+QqyH5|0G=ms=UV57T z;MwS5dm9nn2^U&*^YMdk)1|(>_$%cLbK3&W??bXWM*E+R*HHzWV6PdKQ$aos&x1WO zul7pcgf6(_llil8`Ot#hh z8g@GjEi{rT^Ya@ph{rZ4qrpJdWb5~H7{%1&vI0|6W6G!_RD%f=eP#OY%-83nXk2`FhlbjW6e+nny;><Kk;pU?M@9$Yrx-2>)JmWzosT1F_+$}rA{mw_F1#A3UW>*VeS)$Bz1w_Hh@Y! z1C!g}hWu;jSKLL$4LK0Y<>!^pUELxo2Cr9ZVTn`cpK)$=feZKOlA{NX(1ov z3?8FZ*ox!@ZM+Lj?%8yp|GeU-$ZuTR7-Wm=PkD)-0ht<Xqfxn&c2lg_6ZsE=&Lx92iNF)6 zd`KPNGU<_p9afc1F2ijOPX1WUOFFa$^Q#giI!zg4OhHOK)V*uhDj3M>rCWx0bzyM> zu4f*?1ERVm*~r2g;p=_6(;mHJO4F%ASJRd4qx01*my4PPvA;Y)`}uA0mDam_Eg=dE zqlDGC-1in&K3B~>P^9u`u8xe8T3#Av*?O2@n_$BT>3$pqTe)V=7CR|+{hoS|h^+g> zD2Y{o3kZqN86jWU1twjuWP>jyvE)=R$lhyFRde>wa|X)|i|g{b#>+HsO%ovX zx(ce*c&T#E5S>W`kq=OwkfQO+x4-}8GH#iIxg$4U7B`%fDpp^nVP-|;Q|1`u-Naq@D@bjhZxCZIq?ROBlAjt2XWv-ye{Z416HGMX}KOmXXyeU=U2)GE!8 z{RIuXB&V84&i;t`Z_IWWeg7_B1>O9&DsFjqgGWbhoKICG7LWu4=KsP4!u><_`6FPU zXIfyHbS)J|Lc86-4HVbOtC+YuAD}3qB=^&g;avVL1b|%ZBn$bh^Oyx}?tgeclmbLD za3coy`k#oOjWk37V53#}73)6=fUQsniOxFuP4b_}Gy|l(|2#uEb^!E$#0C5ieZnv% z5o87MZ*f5z1w?MpX59Ek@!yf(zo{TOxaWQJ`Avh_~)c^U~-I$OZ_-CL1 z|B2-2K&;{=I_h-ru>Z9D0UDBu8)^6b9>RZ;;?4SvuZFdOX6__`>u-k=7D7^hX1BIi z7Ms61P-xhRWLp)jii?dob4IF!o7+=bj0tHFQ@eY;gXHz`?CmE@=q*Y}rjPe?n)van zJoS)hDup}2`C5aybmnA8tay&NEwH`4IpDC2$%}fxU&K>3hq%z|CHa`k0zV%;E~nIz z>x>v5bLq^w46Vxu;Yf{33*`Fhi1!z+?S-Q1$!-%9;irR!&pibov}@DZFq96^PgJ4z zxP94$(Q*eP`Spjw78IS3TnRND*OHnoIogXk*k4p_cFQi#uK0O18T_r&LWBwkV2=l0 z6NE*7Zqa=Db#cU9T33!BHafQatYI5e!(#;p>mS}9ho)wCxj|d|n^|z!!9egu?wz+$ z$!fA51AH^L9B`QYz2)`m*z`(ALLKWxWXIVwUm2Ru?6^GzL$r*vYEtsKK{2U&RPzUC zU#UN2YCS)Ne~leCGzI7}>8_?Ok16_s1C}aY6)z%>=6$=e@w&G6e|`C}m_aCfWWLhe+2smi(XO^G99sj=U0T4f)u+Wl6$iNwoBMDlKB}* zPE4fK+8s1rln(HnB7MrNk`Q5;zIwb^ zVewEKE^|U+M$k02+83y=*1hu39Bshd=*&;+4NWJ+&}{l|{yyNC-2g8D+-im!q8QwC zCOO!?Gbdr2syk_<-S}vpk`)dG%!0RrGc$Odvov@nwa6$G{nRh+1q8K=V{jQfpA43+ zqJgQ~B6`iPt+HgNbDz52RAC5x5y zQLq4L$o?AIV|vtE5AzY*A1=^ET1g;Y-;er>k^!d&u`i2WLG_bu5t+RtsWq- zJFV4N>Qi};U~HjT&A}(jqz&v_X!FtTKig@WA;~y#KJPvQ-aHs~1hLvx;;oq2OmaUO zVPYp83&-DvXgR8^17uQJdN#CRT10Y1hN;l}5{ds@o+>@(jt%36L?p!Z#zmI&M*PF zPjxK=-8FkZfA^?t*fgp;N6hqNi2dX`aZCc261TLxm|P(>DugdkuB9)Z!PjJ}Dtw&@ zb?{@K`u^}N#nePldk3wukI8*@$f??g`G+M~09NCOpbB%TAs1z8YzB$4`@@H?Fw$be zs_ifcmQE#)$?XiYKwrYaV>rvPIuDHp{yd)TU3%b+reN zSK3y+4bgZ>8E!C@;HU7)fBg~qPFI_e=s#p?IHWWl^FIg(9LlTwrmi%IXmpkFFQyef z0%*5#+uYSUdcN~RBoSJq`wNOrK2jffPIZ458j$~W)oN7x>?TAd)Wb3}QDjQ8fv#wG z>~*D=Dl)!<{?c6o6$!>L+;6H%kQsR^)>y0`wZVE(OVW@n9oNz|@YcL+X)9^jkU2c0 z3B5>4yy4K)LWnrpq!)9YE_6I3`xR-SB=)*A`qX0A;SwxH(c1NCgSHxJ2NYmQoXMLz zZ$H2Me+Jqr_65*t32RttiJOSCW|3~G@VM7vK>YWdX-{EvrLwP~*?rnXo~@<#*jz}} za3chXBBPSz=lMsNBuq$mxNY9W^2J{fk>j2b`z0baj!v0o#`SNNJh~Sz%O(#rq6&K1 z)e|JYOy}Dywl?tC%3+pORovK9pdr=gFASILQHa@HrkDVC|KPPvCrESV-sD;C%+7}W zh-0@yAOXm!TD@lKw}9O&$i~U%Z?s*UwMsSB4K6Lo-8^!;6;5$yW$`dJWc$W-qE0pa zPE%;Jg|&wB6S3DjY0a^1M4>YWZCJ3w4=wEs9!asV@GH=@@qfLh3~+#VKo?J&(LhaW znPj!#i{Z4;9A=V5N89s60>>^DossIws+)K^{6LAd$rjR3N^1Hx7FtgAV;55t%r8v< zMUxiPl9CGJ4*Y#m#$+SrQCoBmbCSsZ>_tOR(Z%*)noj?DZys8pa(JoZH5ffFB#J=u z@&ZU|-(He9BKOnZ$d0eyVazftM5l;d)r$xtcM08SG`|;GcM;tm&)GKtdlR`No+E{_ zMw8!9pE{}J&mXdM5zk%VqzXatY>#)}{o2`i_Q9%QR>WBkB8&$))al1( zVcARhQ<6@*v9BfFW9tGcEwtHaRcJ>}b%zanh zho9&lLPt#Q`8EL{htnh`=3GvjZryt)NXc?`&X|Za$IPvr0yg=MhXC)@HEwWL>Ywuy zRc%?lHXMUxl!2+DwsON0{9&q=fVIler(avkuO9KFLIYz!Rb6m8mj+3b@n!%D7^E$j}zZ!47L~AWq2R;gPhOwKjJFSBFEibThM;zJH@xu8S;N9k9%Uq&_}n zue$O@I3|mo`xxn(%rMLxR!ZNVFD~uCP9{IoeKGl!`pu*`J(D=%Po)0yV(0F9hY0=H zI*HrXYCaNCHjJrCDNKRc;0l*3Rey_ayzQtkQ`dlC&F*b!vm9U8msIUarab`59~gT-hjMbTJ?PA@y1K^ggw_A61xNTdCE1ukJ@7dZs!0U z{hmy2lL9|44BR6tSlvhCYrKxH;L6W@WLe=lJOX@52azFY-wkoO=x*FTA_Ss5YPx8% zo^ZUTR*1`*=(@D|*@<|#qk~o%vM0;p%=?a=h~yOb^2UE+Q$NpbPBF&f(VL%%*6Y7p z9SXUQ)*5}X`wZhj?WZos&#%ZC(0}o5bbcC!zjj|sBJXm;^O?eQe@It3bEnMdvdVw= zJTZ{6L*SwD_#%;nwhF`82h`JRWE$3+!a8T%GOXxh_8zaZp*5-ML+x6}$ktIJ@^jAj zsGCs^I+{b^9Z?x@>b(?yvrEIPE(Cm?Tb){^13c*2tG#W<>HyYx)+?MmWX3lX^oy?w z_1xlOJ{1d}c#o$~F48E34^>8-{{#^xkZ|I%=!=g`E9h)!`_vX>u{a79hs8WhYVF*j za&{i+Kj-$IT*pnoJ*(uI42tp!kt*{YZ1}V~mlRbzpby=hRZDlg9aY~lB@L6{oACcR zuMNXTiVhKc-vgAd(Et)&Z*C%%&V64_Z=+7vtiVcSFBkcr%ZU<6()9igTw>1E$@m{z zmP5$1HHp_<9u))^E%=L9(;BI1L;B-u=;XVDPfjrP)<4rl%IVqqM?cZo@{78Z&bFbA zF;!j~8SU#EpdYw*&wYsV@tvaHjC8+(UXU$Eo(&+-pBIExU~}o6KZs@>_UHZn|47m2 zzRjWh=}54442sB+d~iZuNyu65@-)_1c<2)J4!&kSVRKPi`SH%bzn#BaUlN1Z8Wv1C zfRova%iwlv+s@(9Y0f|&{MU;AY8fuvYPI#aK`*5x{yU$&G5$FwkC*;JM5?sA4-jVI z@=j`<+;oiAChS+**WSMm5L=8OF+=@uV8piB#rvy|#{2Ns&-WJ8?~4MRzPz!eJzwe;|@Wptrw6-Wc_32XIPH(w~qV-uvWS%9d$aR}F%F%8pFT0nDvC22ot|$^Y zZzb*AgKjr{xoMkAdd|NG0tM4=`*PV9QhNmRvnEmmd`~z|?jx1eyXD??;#(UL{S#!k zoIzCs;H%be>T;6_S`05I@z&)j(5M+L^c?o%SIV`&ZOv>dwl{_Wt8}-j+vHH;S-H6< zPyXu`jZmnx+){K?hhW#C4P#1*3WIPYvP z^P_blW+18P@q@Aaj83b!m>8zPe6#so|MlU^;Dhzmec};(74cuJ!f@2Hwe|o(;0|Qt zGXDRn?yTRUXy5*igrF!5(kQh^Hxg0;(%rBiNQZRi5`uJxxFETNbV~Qqox6Y{&63jn zEcfT5_xJn!2haR?9&^kwbIvt0*LA*M^F9dN=Mx%r7v5G)PYz)^@Er z&SvU`6H>=VSS6xNPmfB}O})c-6P38#KWt~7S0CF|?mgUx&`e;m179tzC}m)eLLByYBLuPH}hV+dba|5X^E~gyJ)wy9GEPB0N5%x%Up}w8ln0)l!#lF@i`$ zeALg$$68+5HPgvRrln5fwKBcfT2rs9<2sSmHz6QqLq3{$ z-RQHH1)4xXL0*8opU$jrtd3sNGneXy?kbee5oDo^idB|tZc7cmAa&!^%W__EXWVkU zTyFP^Cdcb{sHM&5$HtCp>7g2>xNPyfM)kj9DH7V+-Ry-t zRruJDj@SZUU-1xaH!ea!lw_vQ@K*8@;yyJ2d!;3yD8UPg#cKXo}u3E!-q#iYnLp2;uLqo=U5<)vj@ZQ-Y~6^Gpo524}D1nSBGZ}uMA8cUvsk@d2j zch!n#jZVFtC`;Rm9XKjlAzzPaTkiu~ob=75PLPcFHTU`MhNWD)+YeZJ4wK}gBa+B{ zs3@BF`VpnT&OqxDf93GVnoNw|bv!1#@|8zV5C(4``!n>Hxqx2AyqhoSV)2i=2)bDk zGMn!x2o_Q>MUZxOl3yo{KwGuLB5ZroC*%b2p3CMyxw_HY(Ezb@BNU}WAJ?Vk6=hp_ ztBQs$Z~qph3ohYEwYE7F1nX%tv%H>pQ*LDLz6; z+Kj=3>l?bsG&1M+>i!t6#r6$~G|8Vjyu8k?!+9q@@TCCy{1 z^!hhy`VHTtb*y@bI3&Tp7ou1pSPf-RdKrtcJ)8UpnLzO8v7Sk<_f~DKggOP>$uzJQ z^GTVBMeq8Q38p>~&O@_-R>Apn2!J~|3q&}ZH{zx~(vl2!u?`u(;T<|NDkxI4O)Be( zVotE08P@0bNMUppy&15AdCV;&zomq8t_e7Jcugc?klBI^Jc^pQ z(lcrzpEfs5|Exc0e&uAZ?Ro<(w*ayfnb2CC*V$3=pPl6B2>4gop9p8|c>1km_<(1{ z>b^V-K|y^TjdDco`?X2~zEIzM(@E};u1+;TNS9+58Bc{813Z;?##^bB_QCz!_$#7J z$C|3MN#`;oqLhvqCT4e#7ODJ(E7CG6p0M~+ZtB6{LlINk#tq(qrxc=sgI@4TqMj3% z8(8?rBnzPfB0BQ-%U1OzN`-t4H!g<5fJ0-?J0~3(QPK5ny2HZ{ZRr{YM)>j@i@M++ zEN4&jxyDE4tDaToNpm&I7$a$qYBz7CT-8vcUL`Va)n* zTrIkC%1ov!!kb)*l0Ss<8GrZQw3c0y4&2H_(wd>1swj2P^T&Amwa0D)J~NG z!>Y2#>|cU+A>o$wd)*|o_hNqpaiWV2_M~*baI2n$KPmH}P?%rhJ#G0CTGSmg1lNv8 zv7d?}t7c7A-pQI#X9cO6`PCuho(`T)JrXw+5Yd;P^a;S%KOYfumwLSV@p%81hZb;m zD%)(T;sbCQ?6&=swdlOCyi&TL>1BH$u-)4AqcE5F*UZ3}TUu>h_bW^6bJ#a^N$ z@dz(&SQnub?rYzYu0d%qB2(JP7Z&y^-_e*dT(xFr@s2)q4SXtgbyNu*v@shW@@4)V zK>q#p-F06NLTrh8chq@aLW70h6ScE(6-1U*XPe<>$|mZLGT-9PbLEWnK(r!WeAy{6 z*>*`>SnO^!LrYVp`1eX>s(e8fl|*T+^VJc%Lw$c;XYf5;P`gdpQK)gK7u8~T8WB=P z7&eJ6x|U-59KEBrpJi!e-2e7-K&CZGoD`t-cK_I4IWlh7+_q#PIy6kG32Dr)C`}*z zjRYIRlO$O@uUMTvaS_|{a`F`Uc41dTC}!lab^`E_2LA6e2u%xq(&fPFytwrzJF-f* z5*v2*5WxU@;j^Q0e?dLVUaQTg*bOL2+)0-w1w8^Xud^zxmI-Iv?1rj9RLI6Gr-Yll z$Pt+OT;cPTT|6XAY8E@}o;*L3A9`U;682hswa=53bin zJX+p-beuOENtGVoHp2SG4*kTU{H%wYT^p_be|RC~ndU_N>$K*${?)j-;8_l07EIL+ z%~?{0GwRmC3uPp`+@=6?;}r=^8V@vNocDuFL)$9E~eP%0tV}H=ZRRg zuOZ{0bhx54)u5xjN(u8AW?mGubG`Ois zHU{^7bJ_)=_DA;E+_&8M8)s2XT-KUuVnyxzg7bR|&uNjRW8Mew=i%;N;sr(}e(!i# zUEfN6au?WN?Gu7uY6@F(K&X_yQUzTy5;f_XO8Iyc_jmjl{6xmp;?J;D%VYa1PP38o zcZ5Ow5FI*dp2SSi(O)`((WSHbVq+6)3hkn}>-*a?9tR;~9mcQ&z6tD&e+W&xioF^q z;-&s*thZAp!4@7214@IR+#XLp#w?JOtaTIE*Vd0u5X5>xRYVao8#InTq2d3f-EMYi zz@8-wYuM=OH@@&1re!f;UyoR!@ribIBzJYnXmk&w3ti)v^dC?y&X$}wpy`DOt|S4` zyg)<0Rzr*vU0i@}fb*}QyYHv4tRM3h8ViTk$9#Lniy24SUxU6G2f2*qg=#Hoxx?D) z-oFxO7XR6Sha6R#9pRQE(*JN4=|6iuzHEw#vJe$1R6Uu+{lr5G5yYhs>+H$tjbY}~ zsC5?E&$ssqk-`{U=;37BuJcT&a#?;GYXNP*hHHBm^^tP3M*(G^gCd@;tchDU$YtbY zzMNDJ=n+V;=0_1QOH6~U-hf2P2iYacQ^Ky>9CqZsUiZn;+2P^DtfI!e?x@MY&~Yvi z!R1Mr8W=FrU+!uoI2bjS0~S{q0;kGhPELJ^YSr%YG}x(Ka2=3$RdJ7<7mr8HN@_mg z$SQSh<1e)3S|OYw(_7D4xzMT+mTa|}I)9zk8jANuUF7Ohoo z@i4KD(NSN&&kLl%A%x((@;~o(n+%%!n1i%1gt@*n-I)TYgq>GSOA7+7j7QqI63QI! z>5Ef)zXFX4f&NQVWf^aGWA+XnC6nqn^2JK__M~j%vwaHkJr$-XPqql0eNMSA{H0P> zdZ1D!!M$qp!Pd1~6DRYVUzkJ}3Ji}c%cYcl@$D z{>;sR6R1zhA~Twqm+D^ z-&=KlRi{A>C{UR1OPto0{Qzv6(CMd9EYq!K0$(tnjtiEQfd^r{BiD^#ykMNno1?&O zwH2sg9M%&U?01GlsLsgK6c(%^_-NWsHv@cK3DyeAR@sSWA4y_e%!1!K*`YrBmIej-Y*>ah8!L6dOS(#>!FU;Tl~&SFT4-VDs5bp!+)@fZQjwlA=;)ABC7L5jl^d z-*f>~Jv=es?kMgP?giN*znVhJ^j3(mCzJI`67_Y=o0Yn@UGUBxz)eBT`K3Y6EE^o@ zj*u~7oaiu8AIb@D@b5BXF{<3PF>M`ie4=1ne{5=`mcceOBEl7qvv0N3>M3$qH?0EF^;xfY^I>Y2cA0e3a?(qB56W<7@StuPH&EMEc2>6YAF4PaJ6qZ!~+rA`PYetz`i z1vTmGCiks9Dudgmg$0iIz6oX0M`@+GS;)2lr3=Dd-j0sOSwd4&g^$FA`1ajzx8m!M z76IILORzVYt;Cz#^i~hPpzl&MoufR!2E|Z})jTfRZPGEsZ~G*;ZKvd#8M_OAYbO9# zTZF7cX6m2K7tQkkXqMrAgaZV@2ndzPVd#_&fAeQni=6;yQ&!Y5FIm<*13pfY*(w9r zX7J|d3r8%t&UE_P`)d2Wy}`FvSa?4!y)b;YE0|s8eb#&l{s-!X))2 zf2D^fBa5~k6Wx_X>}z%CE5F$4Unu`bsRA9C*b&z!cRW+-z*W9%Je1+Ty~gqjRVx2& zk+<^BUcFH?Du(Qv%CCqfjun*@sW7?H@~yO6M&WgGGMWs_#0e5f0-o%PX(bwaKM^OZ zkAoQ@EK?uPX#7Hpn&(V2?3?2bR~ze>uB&33xE&ev8+XT?yhH}i21s`!PIHIaAIL?> zHha$Qe6$pEE|=lDfwOpw{gnP~Nunrbb+$K{;3$q%`9{m{u1;@FPze=qVj*sB`|cz> z+2PaMZi1%Sv5P_<p>#+@L@}mjQOwS2o~QiIXX6~-ZwTIQg=_cQ*K>x! zW3LX%gV5+}C@-qCbaY*1yV{@RB7n{W7RL8zE@|{0msg%SHE@H`7sZCRBXB=~(E$<$ zPJtL$4Rr0r{ny8LX_?uv=}T6e;KqC)TWY125F1>UmShyF!*TkI2LNfz9P;K<=X*J? zZ)oxQwtxtGAHMdf+uIlvDA;FLxjhpp6Y2g2IAdDXjK_H}^0ah!7jIzLvUY(!cxsZ$uM&woAzv5To5$h-=_iX(Ww|Fz5DPE=G_Kuk58vDCqU z_XOih`Q7b)&#{jzt(B_VCK@dHC@vwy6b%#>6nMfIz$A|yy2E}Cny7jdweK;7Wqz|< zWNsDxigI@&`6zrAe$bF7Q^MGz=mja$_5OAVee)ITvJ%%_PeB!s76>xtGASOkqXOP3*AJK zr+zO0wQx}*QMN6*sSg4kN@3_LzlQ+r3tqXV+4MO|ll(f| zs$V8iq52iEk~GFQrwbb90Z}($5Al#3AP@6jGmA#T2T{qA{ z{*WPy>G$-=cXtW?KN0cvdxFK#^uc`#wEwUoUxn{s58+w%zK8#fpkOs136?koR;0_p zAD+b3@*cI>fMLx4iJ&}4MV^E6Ck)EJJqtj4ipcx7XV~6pRW8#nJWt_ zC)!kLF=5ERLqPuxGG#NWL7aatQ@kE&l%iT+tc>^Y@BOxV3cAC^K|xXOWGmW2L2h!= L%2H*L?}GjZLl^3l diff --git a/1-js/10-es-modern/11-promise/promiseHandlerVariants.png b/1-js/10-es-modern/11-promise/promiseHandlerVariants.png deleted file mode 100644 index 4161d9f532eb70ff4bd21b51b6fe859b2cdf2c0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47078 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

^b2)PrlG=m*nwuI>5;+OBbOwMtBzX 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

?P)~@Za&!GrmGRMwB8Y2ofDPof`lTnqYws0| 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 diff --git a/1-js/10-es-modern/11-promise/promiseInit.png b/1-js/10-es-modern/11-promise/promiseInit.png deleted file mode 100644 index 148b4b8dc3615bad92cca9dff61f8b5ee799c0f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10858 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 z 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 My56HQRok%t0l)Z+q5uE@ diff --git a/1-js/10-es-modern/11-promise/promiseLoadAvatarChain-1.png b/1-js/10-es-modern/11-promise/promiseLoadAvatarChain-1.png deleted file mode 100644 index 58847d6568b189e27b9f1f4d100be7faa901c6f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13476 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 P^da|BNxD?h;N$-Q7;_@# diff --git a/1-js/10-es-modern/11-promise/promiseLoadAvatarChain-2.png b/1-js/10-es-modern/11-promise/promiseLoadAvatarChain-2.png deleted file mode 100644 index ebd35699d8a16f7526b6d274da82a834a4c23e65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24556 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 diff --git a/1-js/10-es-modern/11-promise/promiseLoadAvatarChain-2@2x.png b/1-js/10-es-modern/11-promise/promiseLoadAvatarChain-2@2x.png deleted file mode 100644 index e9b738409dba41227d7e0dd5cce1a1bfbbfcf5e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54386 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

Pk1v8 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 WbCsX!ZVLkZ6A_XSEalhw_J07%@?qfs diff --git a/1-js/10-es-modern/11-promise/promiseLoadAvatarChain-3.png b/1-js/10-es-modern/11-promise/promiseLoadAvatarChain-3.png deleted file mode 100644 index 3e9056a705e941754ef7c6398a952c09acc7cd5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41763 zcmdSBQ*fnQ`0g8Z>~xZjZFOwhwylnByJK~1+eXK>ZQIVCS!?}w)!7&4=A1fJ=PEVl z{D!{4-}62rVRAB}aL}00KtMon;$lJyKtRA*KtLb_kl=uCVn>=_0e^rU6hsApDkrdy zfq?jc#D(~kT!GIrAUwbKe{`F=*j&=K%t=NCg2f?n%n%75Bl9UC3U`Z%7En&!@Ogfq z_CfP_6(d0MYsi`Bem~9;i*BD1KnRQptRF4Vrfq3#`%Gy&+qcgbz#O*W4a|5+OS!x_ zw>fN5Bv%@Ubv|iRHWuRli3kMp$JZw7(F6z*9|#OL3h3Q-86O?+EgujhkY5NHehGP* zY;+hZiJvR}R54_J*6LF63QXiT5N3WLcOGVbR3i{zKtf->7BIf&ga`;iKcKI~*`$!Z zHziP|_$ZJ-U%!u#0F4xBaUnv1`F{NlNSq)mE%z{eKgH5PR1 zlF*<+Kn@9Ly#<+^*T|qF3{4uZ)k|2}ai#I1LbQU-0A=kRm$C(>Agx3*=Ap)eVbPpc zBcGx*2ad}};Em^9JUI=$C!A*i;5;t8wF z+X{olEqYaYYutej*1aFY*W2<2nJ@CRT@U?P*v^rPJY8k^!T52KL7hAkw@-pC_iOd) zvbsFPHB>iD1Go7s0%3Eh#%-M{q^Zisd@#7Gci~;DoLGXYij5lY{o(#_79J<;Tn+nR zi-9CNa=S|=p*hH`P}=7>@JHDR6USr5x64X9=FOOj=bgc7Px@To42&e^MH7b?nHOr4 zv7^5}`Pxe}mWzKS{i2Lr-0e0h^yoP59rv1c6-L}+?Z&{o0X=+z>IdDVR4idNtVy}s zmnzLJKGu;Bi;lk8$f27E<87M~BNI#BRCL*t%0%ni_soLednq)P&SQrk$9XL~}bAn)d4czTPpew$jFV z-Q}mrpRp#Ng2+z$DE$OdzwT=}b_01pd2}pQ{2}Qg4m7NuiJW1{Z`GXw=AP%%v zq+axfq-lxqe<9t8Xol8ZZ4g*x#(W-{=CvI|h3Pt(y+X8LsX6LKWY&JuEmpcfRxVi% ziDH~^rI<4E2Fyp93a~e4D9GZ)*NvGh3$~cMs5Nj5rsVFoM^x$NL?;(zFpzg>=i6$_ zKpW<^e?u?@&2l^~EEC`P%WAVKp-SCyMu|+@DiFV~-BaYDHnWs8p!>GsethQe=g#8f zBSQ(@9?3`s_n`1EaL_|-U7XEmZLP!pQxC@b*$!;8PEfwijR4O!%f<1IdqdxStq%(H z39}A&)#4N6>rME2rP*8>;c=p6(J1b zu%`V&crPOJYAkTEmC<>MvndKAO(^s5_WU@(rHUgX^J*!8armR#c47Mm^7tsYUtg34 z7cEk=-M)d>2SV7p$+1+t2QxO~tTGSn4D-g3Z>2_C9u&zUinNp4vdeUORu*Gw*q0Yt z?NzRMvDSTihl1V2s7zIFvV?4~bLMiTKSS4<(@q%6fZ}4IbHcK7ZE;y6I?C)~=8>@6 zx!KY2TEK#C(>gwH)wP->$VmF}>eICU(sA8)mD~DSwhVNy-dDA5xRZT!q z6s**2m+Q==f^~^F0U}@lau>^9Nkou`_tJUaYud<=Tad-0$@D(HYnkxk;PKh1=%-Ri zbE+9TA)zXA^19F4eBs`XH%225H$er75Xo!Fij0!eT`yd#f4)=|@wuAU@c9;mcLN)z zjyu9ch{~+L%q=?kndd^*G&Zj5^L7%1vnu-F{c<1r3vN?s{yfDj*Y)mcRhr=f18IR_ zlF#ebWFt5atMfF&@F6D3{j$!f!V4pQ-|yqGwR7=>2V>E2E$&ZD_1Yg@G}=Es4Ia$S z0!zL>`s}{v=KDYSE)3{8&KS69x4E=S@2M>E&rYb}QBhl=7{`TF{mw0SUr7k3)$2!@ zGkvL{r+erOl6odrH8m1~)6i+-cp{9S3!8>sQKA#S^=mpD!}i!)*zjp$cRYFPc6>J) z$vx{6kYsWs5dK} z8u~F`hN%u$E6y;@7!j2i@~|#9*&K^i+SsA->AhhLE!t5^M5-J(SSr?0H7#_7#*F0% zM$|0}s+g=QWL_rAhiVI)8rYHCKgcpxIIc%qvE5QQ{mmZa?5Dz1UD`q*euM7!G8qpK z`9u@V+Bh%p5iTw;Q+lr%k!5N#pr-cH;cU(B%`9??mKP@D(M$Fds8k|z5&O$0#~+I9xQEbm%yCM2n9rJCMs?c6 ziM4<*Cz=-KAGAm4X!g*_e7}unRQ|Yve9cE|5+dCSY4ozh6}t%qE;pVEmWIR%ByDFl z?7hTV=&+?fIn;kbaBIYN_Uid~a;Wnj7~J-mgZ;ZCcy8Y>&!yMb5OsY_dGJJh!d(V z)6)ziVMBU;P+^#%c-Na((de^KNciIrD8hb*#f!&oVzmmJLY@F3npW|AAJOP=K4;E? z^-`_N^`|g5lJ<#q$~}>?U5zzx2dpB`MMK75@09HO$0n^Q9rlsa$4PgDEH6?viA2+x zv-;qAinNGjNWPj8RI-kPpgjfY25+;fS=@*=<%u7%xx{@nkJ%FzUKUQ&ohgc8bn9oQ z-D-25M{XOK>D0EgPayGtu1k0%PZ=fo zhzzAW8As{*d!I+GquzNF0uPkJ{Q70~Zdu@0(daRYw`6Yw2*}7c ztG1Ht9D0j~H5tG9ytvpfUwAcM&axJANry739uGBppz9)_Ju_J<7<|`B4CFKT+VunZ zm>)c`r9_er#A5rFQ#|8paDTzvfn;{^^YC11I2dw4oiVnIlky@2kwl8F%4sLF9MbBx z)^Zxbd=PD_4>%pSaQO10-AarkdJ%N(@WxfC4<;MvKx27^HERcipvq)Y|5~{jU6>|o z6m1vk84@f}FLFi?HSwVQGwM03mD z@!pm6wwETHc45VWG>f!*M)%Y_lX~hS!n4`-h>n!_PM%pHBTrZ-WifYZo}pvAKbNA@ z$|W%opL58O*VkZ$puKwVYO~p1owsO%E?1S*5u7pChkayTfrlHHdB=OmIOrUhYiIx| zfCDZQeS-Px{Xt2-O$?!LrHOJvcZNjJuj0+RV2dAae5Ij9nW2&^3qw147ZRacO<27ya9q zkil!l0xo-u+)$wh39wC%Q@7_)yq}IvkF~F>&p*!7_HGPZDT30j)-ZHp4FTq9U{zB!XY@g)M$}JlSU{ibVTl68jsk|EJF?@3ActN6TfML)Ye1 zNlIA&p$FLC#GzDg>pYUgFA7y6WG4m&?4sX6=9g|Mgxyp4%kTZPM7S{gOnhQ&g!}4= za){fd36{yK9qL@a z9atSqz92oP4yRDy>N`{e$52*r_m;GXRbDoyoUW|h-_2Qf&V#Nvt~Z-C#fvNiZ6hN` zZ3#lpqq`^J{!0q)U_Rv3!%;MFqO6h;KWU?c+%FiMz1X-zQ6_^34?y2}$hp{?5)BfJ z1!3D{53>yFO^(u}CJsdx*NYBU>4PpqSX}6koWXf@39lFuQ5uf=cJGUs6k3XjIsFTV}*i5Rm{PCgDyx}!6HUQeWQbWzfE}z#JeM-7^%Qw$_)c?}-91sA-nSoIM2ezNTuznK4;6IuM|H69U;{So|5i&qto;-*!VE%QpoS3MzdH#4YLuZDB48QkYjLhC+R=-^%$oXpmpy8< zJ~1c}QJC?(z<9)w%-pFKqnesnvRN{pnijRH|x$(Rp}KuswtWYzTap~ zqO`jJ)2y_FB%SdDEO$Ipjt7+{_Sc9mM*Wg@zA=7RNCs0XgBKxJ6>{6rneyP8++RNN zPedI5*?~$sqS;L5c=u7pow~Zy4GfrIk;s4%oaf5#>P6`5!T))!gRwu6G9JMmMOQsP zzJh{zlz%5Sl*;U?yY@$gQd5h_8PXppz8vfNzUsIz;HJd92fu3rNv?vUT@KY-jKKE5 z#w}`gl~Qb)DVJo@y+kA5cmnt4HG`huqOn=zK<(}23FGs`vXxJJla;af zWzR2vFa`!XS4mLm2=UCt%kt8<+S{%%q*=ch zbEnjXP;bD)#!3rvFY=7|%D{u$9BcV%4_FkecJ9l#W=72yYHvBX=#Pwr6s5vewl|P6 zdB5{ey-j(nBJN1^&7(}dUbg?i@%_!-k}xModxe{?;eF%JOXlh23TEf?a(pK&vs?lb zmWIucFZncBOGFd;+97L7cQY8_It5s=d>Q%azI;X0x;6 zl_l)w<@V7m5&A|NfSPyhX8n2Ac*)jb1ItsrK%4c)ckt$MX)hwj)*2h^WZ^7$Gq=;* zG_d;nC(^6^cBdbIBq(QnZ71@P{ZH+~hMTFSGpR`Qoo3$HZcW_wq?eic1e2o{D%0SD zT|X$@g+UfE;u#NcVkl_mh0C-%Q2Wbd`4~5^;Gg*jpBYFL^H0px=2U!0uWDC;ssoJxg=Td!9 zBKK8v_7nO>=#ik}DUDy!s)2ptwmcEjNn0nEO;oL_fU9dGHiFcX9HXTePbS%&yq5*o zGe4Da>n=(s+ZASss>G5{qXO~;vPK|S^ex$7Oh}jJtxQwZr6wZNU(qRJ7)X-CTR#J= z>U%#jG{|_LQziP}>AW26tDC4{>s)UwUCw*aItu7b72tc=fx>c(k5=%+*ER@@ zjaNtQ3~58I=1(C|37giVO+-73EN~-)wQ@p%oyFKs%bLDS6Q9(L=b|+z5lcJO8H?#L zCm2UEr|D)a8JP7$)B{MGHwC;OsAs#xKfLm~WWKju6Z2HxhAc0Urr$1ec0~+FOn@Xh zJPRT`PUs#kttNi^RV6ZJBT{@Q zYVs@}THQo6-*kJluGiebFi?72vY&}r=&-c;gM|4l&X){&-5gb-9Qd zzazN~8R(LlySpCq^cM;Dy-W9f1{uV!5C8@~k=!OR7|iCZyC(*RoNAQVJbBan}@ zNfLd6_aO^N8R&h|c3bn%;y|-hyI$5ShIao4vi9X_zJ`~o`Dm>zBFL%K*xdRvSQReF z=;S|Lzj#&H5nRU3vo=&dZZ@0F93}@dQwBU2aKvM-4?l3G19xj4uA{79lVu0lu2^wF zl1xAHmcn?|>hhzpKC0QhFsq0g^$bRFo_s>WZulXoU@le)1ihhmNs$kEd~yiUAE$k| z^eEkLDY5QWoD)=tVs$x^M$|TH#YVohZNL$k1XOZ=*0wJv+62&Qvh)E079>+|hqp}~ zs>1g_Zw6?ebbj}523_G;abH2NNQh8I4`s3w(^$RWM=VSJE<-qMC&+6e=*xwJ3BFv& z{FF;{a0@!TV6JO{TPAg3R%crlpa+7`hxh^*uMaW`l>Ni$<0IXpdtA-f{%TNjH|O^$c7 z*}D=(!Y`}#eYjEg2*;c^`clbgwBZe(H%ezScmULRAO!c1Q1ir7!t6slT&Rbs3izwSK5t4KE7GA-QsWxX8_ z!*_>S9VjT+b0TA6UegKexO{KRsUcB{qEa`C;BgwN$>{ahvJ!ah;QSL3y7J%caY!}J zx(oM9`6xkL=ZY%0ueQAayog8+33I!pGDmE7nZ|k&V?!7wGGsYaQx1K}@h0FReD@;{<;dQPOmuXGp?En{l`C z$un>>fo=V8FoDI|)q%l-9EscA!M%ODGiJP;9iiw8138E7S7;d(Gp%zzq{IIkr2*Vd zAf_K%w6KJ54mKqPN8KTq_zyHp(Q7$3hOz^5jfBq4rImJag5ps7aaKHs+!H6Y+cVKE zR^am}?wDRH-r^knU4ZlXPvgZh69efULa0jeS^#cEpajKZKD_y=^bA-5VFO zXf0Aa4t8X`Z$;ZXx$_Qt6&**|wS1f6$07FZdfe>kq~(w)QMkpX1DOIDtuX6KYqm2h zP5kf?71=9SXezQR6A07=1?eDLe9>nSeX0jc!RcTKzLIZxFrH+!tYQ+}3J+YfAD=V| z{wmuRga2@4iEETxb90LJv`Y?JxstaWx5E()QBl@G*UQs!YNf334Gt=V_~$mSZtGJ% zXI(G;{fHQkk7ElgDsjStSD~1lT7szgerR|>JsYx$yr=pze!D(W@zkAiY{paDP;@32 z3Oz-_Qp~Gy;V^k{&${=i*K^`wzH6>@QU$aa_1dG%)B~OZ$ zkTVjattqzf-B~N+T_pP_T}?6(cLqzDqy5+T%oCG{GBS7s<@iue%-OxWxqLU8jwRVc zT23@A*;4R%GhZ<3JRP2=!#@#|9wu)ypLt!K6cv$1eV7<*dQ~MGm^qdQTu(#q(bph> zmEtZ7Vb5wK>9+$y$t;!YO(o(>5?oXqD6%p{BSF|3_P1GzT^p>(=+rUdHh&?!J1iq9 zKDwGHZ92WQdHU{enNC~B(&|)Y8brY9_v5fwwcxg4Xh)IIiG$&OrLq)S(Sun$YdmYr-|o~Cxq?l%SVK-C(n~;Rn(EO zL@(=RM{Fg09d%Q>GgvFmX=~G&57$b`&{v=BDTHiWDFfolaH6^N{gHj6uX0af*{B{{ zIAernPUct5$1ee=B&b?nJ}*)^l6}Q2ECp>R(0xU1VtyHOu%U2BSK=O!a04xgzW7W; z66}e^11abi_QJjs5Rw@`2uLPGz)>8VmY5t50)MLl3B<^XEwga*FBT+f1);VQth!_r z`h!LM4B5Afu>LY1z&RX~6!>+L4X!R|iV|NA0g7A|_api7Mi4r4*Qa|o(`u7`IF;Kq za1EvsSbE;|yt#t)#g$WPraUClj}q7~1VEjK1ljy(_;S)j<$&O?TR9z`QYQf-KGvKYE$_`iK;hd`sS+wg$1D^|#GhhRYcNy=pT4?z|1AW%pqAdsu^!EM4G)_HheZjpThYw#)7-Z_Ugz%>rJeWl)Uz=iz#wBWq zj?Ad+9e=x9*Sn5@s~St@5RDrz$|XsDCjHZFY9-7N1PHS*AQld9lykTX1lH~(gKsW{ z?i18>V!Aeofp5KwuM&>l?8(m;p-h!0k%3QJ7{G{FYy*bbaWkAsf5e_?f*yemUIh`h z7*mJKMb{TCD^J@jgu!RtEaiva-@jGp+FaZd;QQCIplDI!goeTVeI&_3n8E0 z9T|e#zo$qAd%Mc@SiQoXn+02pNbIdLF$!K5v~QqamVJXjEY<}8?bhjEhhY0egz?+g z(?#Qe6(BzY5FSgJbcIT`IgOt;lhD}7p78?U*MYyl&1oXP>?ATAy53Wg^D;0x)Zb8C~Vu&0Ct`M3KDv1GJqkRWjJJt1|l5AWCHN+%F(#%o0!f&{~j z13)IBt%)GO8!!UxBeoF(2RX+9ykBa#twV)C!Je5GJwBwN`K=ncr|@8-eD2*Dz~y;H z3}s&uVsOcTr#o{y#XxV9D~1q=xR&FGmc~f{25AF(8$M zfX1xh1Fw31XT{-PpCQ8O;7?^kIkNw$RIFfQl1ckh+QaM5D|tpDG^^mzFUY3{lTid# zBcFOa32QZ_mu)vM1C$UAs<2^J3(J8x2|vB{4J6W^Z!2@@m$BOze)s6p*~A|nu*(}bz_h^z{@KQE+tY<>GG9KW$*3aIupG?E_ir9?dz8w1k5g$F8-K&x9npcSMB}0T0UNb$tT@LL|@fbzjJig{4_n_b!dAX-4=SwkVXY#qiyeFZ&PBooBc@ z;P3_HrvSM{Z;i=lqtTNxE?T27Ohqyb%HNE@L}BTCzzRd+B%W+@Hlxiah4@;mBLcU!e1%w3ixL~1H<;!UZKw3HimI^2N30d~i60(U^+u2^MX&>x4c3rV@q7|JvuN<9W(uO*HRl%I_erob zxTb&^jeA%I;RFG4pWyp)|F?<(c_KjYH{$|7w_7SQ1B1eW-Zvvn{`^c8oYHUq3XpKW zfjkYZ_0Yekg8n~HB(wEV$XzmJS4u8bn9mLbPfx=Cv0BY3FUwiK6Wh8!VY_b3O-d>f zHTc^-GW(+j{^xLV1CzLz*AbD(!bKSk_0z+bV+J`s9N9!Jw3xwn5+p{feS1fNtI?h! zrSkj3zWG2zd-U9m0}#r-tW^zwK_y#36aw;z<>_m zd+z22`u`*mWka=@wBd+&TkpXEW`6(v&!Hw|&5Ykjf_LOZJQK&>sVf;Kd+9}#KfBDU zeF&&Tungmm&D+KDl6r(a9|COun% zu9=Z`db*TBdsV4==2~U45rg@$Qshda$@lc88BMZ*eM@ErQ&l>_8fwe3TD#^p?Pl`D z*^aP@_2J>0av};iaGKs}=)WnbPmWHt5%_jH;x^;*I!-n2YV3(_;JoE$5{HIH_JK6N zl0q8W#q>i{9Of(#cAV`Wf5tJgv=Ja|7A8S7)6$EGxJzZ|q_FeKsb9CaFR#nCt52~=ZpJW$1I1EYe8=fA~EK%9`@;VP{=})R^#+9tEhb^S5nc*Tx zJGcx36b9_=nq*(j*gaGwM{Z@Q z+X^S{OK1xkYXq}QZDJ%YKDY7WS%s~k#pMrIzZaHFoxq#zSJfDsbi~diE*NdL%#6Gw zJP5pJopy;%>DqRDuW~S09&t(Dhqj?6glMV9@OGOpxN=m}$H` zUDWZoTy?rls*H5K+;!tcYSWXtD{#)Ig}q3L6%x93#JQiSeC$%g&guKmoF;2S5l%wv zm`oYt57LD4g>TV=(1rsJMBXGH31?jB@dNr=SgnbJ(?|_;Rbx4Z*v%@hQGu()&T5GIID2RRi671B&$GeY)Vxj1`A=*d0~iYP z^Ckgqf_mJelWEh@=flEtZQ_Z_nS2O(`|&Puy9V{HAkQ%l)IGT}esi^>7#u^1ynr-fsbc(!$6(fkYDe z1A6mij0s?GesM5A7T!&hKQ0b1QXb5Xd-Q}|4y!S3xX@M93ln>yGmH27r^0hi!hJWA zv%&UNWMhUKuO?j-tYJLO#%@`bO%F~R4Ryi`TP);>cT#behaAjM&U6f-;xz|F^)i%Q zj%5$@1ewZEf|;i+pNrZ)k-s~p>nM&TR4;xKzR?VlchdeWuaiq>#Cw0vRTED?0)-52nr>^IIJ>~rd8vu4AMxK8G+zKZUcCxUvm(zJUuR6M@fj@*EeW1V+! z4(-+ImHOvH=kB2MF;`x9IvPyN>7TL73buzlLqu_k&yDI=H$XYHbXasoa>3~Hxe?|` zSKHLnOsVy&DzOq;on;VJVq&v-+AqJ$@!lX=h9}MgIhff#-H))4sg72-#qP4ID)woo z_l1o$)wLwrXG{88eT0LVSr+4YC2Gge3tK2sW z$j?>kis2Xa2EZl}CCy7V4mHL1v%9lbx`FV?pM&8(U9R4PQL!DF)_4S@$IQoRH1C}5 z`{4j^0>;03LNUWZO#k6^s1vRAi&T+KoJJ+>$s>$sA!)j}q*VMSMe{I|(4>)U#gWb7 ze4(Kzs#Mqe%^CBIAxCfERT>U8*8Jp{l_}v}sr8V7NJ*=ZdMo!LnTA3K#Iw^A$A4P{nxYR&J zB+y4H*x*KP2tBl>hQ6ZBNMZ&?ne2x==Hvl!H*%))viwySb4Q+ zReR*a&c~IH9kn$Vh5|{OjrIy#R9-7G< zQJ?R$5<`A=zH7$5=XW`mnalJa!M~7k#tFoJ0TkZ-yDD!kmUoB9)2BljLtu5Bh zDj5upMKXN)ar+_KW%FS-3{wNa3L8NJ%=Q_&jQ8uNcZ4eB>0Ij9dGPN@Ui&k~{9g2! zoIZ9QhVM%wmntKPuLJ-aP|aN?^>Sak62nT}pb^skm9F&)$>eOacB5Wc({)RVB8x_+3LzfTaaP^J z``hM~YLxZIMPiNW^% z7wl<-Mw}o;OP6Z8`zP14i@(YT|FZuah66kN`k4K6)Mb%#mt#vm2?5eA-#%g`h+HIQ zd;6dOhjfh=w<*GSAH+)YI;TD%T2$?&B{C`e<-yHnU{~I-*w_k*joUM7-wovpZ5otK zw3B;x-2`0|;^a0WEZm%!w%^8x_UL4trThEGo*VIEwGrHT63qy`k47baSNZ%z2oTNN zHoX<3z$L8UDiBtZF%J*f^T@ZSnx;i-g26*rr;Wpa2LQqenP1#(aH)>ysaAgJVHpBD zF2cT|Xny|1xYLF7I?8FWD>>R198KwcT{$_NafZxrs1hV^Rh2;w1p)aw&I5$ZtLnmm z5OU~Rz;i%g0OqO&xD!BKK>qX3Z~$x<4N=(8|JhsQcx(~=eUPu>%ZGD11dtj3Nd`#t z_|IJ#z{L1}A(5X%#W^W$07COW6v!;ir)A$&I12piBneP-oJR2^AVB`bz<&$>zx$94 z3vyx(3SOd%_hx}HjR-KY@Zq3jpEP@t<3i3s`i-Rs#+gAs!-Ps4u+LH}_f2y%DOBFn9MN-%b5P~hRXdBjeOrN5h_aF`jgkv;5KV= zllDui0|K*10BCKP{V+YJD8Tn)Q!W(HG`Z#j6+#{5+&Nv)bq-|DHay8ngz#Kns~04o zXW`ZA4q#FG@b_;(yF~-1eJ4&Z0(kp3eLseO);olmKygKbePol~ZsaelT9--o0c3W- zH6juq1XYN1fY|QKq*rBfu;sHG&Ff$m9Gh%Lsv@w2-NdMx!Q8Ol_-E}O363vY1G3w! z$>J}h0In#A&UVNrI~CVR(5@5}(j=CZRkj(ISla(-GXbdcrLlYqXQm=CT^8S;mqJ1I zZg_3F}=Rp6!RLrrvH%$6xQJti2-RD-OP z<#52rhhakBn0r7IWQp33ruHD9#sJon%PT>}IBVU9Zj~mhP;@r>L_WrH-zC<8JM6e< zRhcJmSb^U^9-A}1@dGKo?mACnntAa*Gflz3jJvaeXu}ttwyWS`re%~|_fQeNg?R`( z-O5h$&nl$m99E`dq-HT&UL_mYdU0OLET5-4JTuDQ@=U@+AiiDTZ2NXC zKy^#20VYrPpdS#1SvG7mW{&*k{l1$+LI-j!tXwt;o`p$lrreR}eFe8@vd9tbnbe1< zR~h;o1mqH6-Wke*uJLsPlG>kl++4-RU#SQr&iq$r!xT*eiEx zfVSlx!#5LnQIYLbs3sS$MC4C=ecJ5SSvtw+Ceo%Nw+DU0B@0b(n?i58 z#kS`&1g~!Z6Gnq=_(t-R(}dUsUT;0kS9lR|7vNS2+<$j>*?9Z@Z693`Ke)H$k1yMd zbj!}r#m>~gwtuGVZu7*{hy@{E()P6u>U{4IR@;`JeGQ3+Ktf#X2vMymyg1S6h_YgA zBHHaa*(h(uW0rP3<}^EjPEgi_Zev=Hx5hz^liSIbm%7HDOTtX7)A(cbXHGu*pO3Jmt1T_n=~)(&voI57`^Ui zb2yu0=J$G|wO@o)-Rs{*dv{p~4et671_QuCXUulG>jzZ|dp-+QLDMKLcG{6u(T+KdF>g`tFf*r}~%Vil^h$n^V3Zkov))MVf^ zj6Q6i5GFNgitaOqq` z#Dc-N6jep(p%yO`-#dFcipuBw_k*(pIhna#3K1la?Tdxkh_DNgecgBp4E(jm@cWqj?#w1;H--HKH0^gif!x zOz7HsB_5rdSKsbqk6fw8k4I{2Jb?f))dBZr*82(Mb^o>J@P%@@A0HdHXi%$mI9^8q ziZlK(M1_716kvLpvJ`UoUpE~kQ1H{{D3bA@4_vLmGRsqcLy)O?U?p7&IKrq<@)l>Z z-wnL8zVd3D=S0W+Z1BB!fLz8Kl4!VWiT|@T71>B@KSa1Vrf_&R z_sGd?#c)_TK{1y8qpct!T!Wwx5YVb7yV{C~_M&e7l7^6hYqeQ3%U9OAbL_qk7OgTE zk_3J>I2q)V)g1)tbn+gTSSZ6c+E)wOIAJ~; zldTsRmw_O|Ja(YeJB{adR=QMKUB_d65SuVBbj?GRtqCx_1u#?9M!cv}pi*{pxk!;{4FC=GljMpz~8ws*E3)@>RFf5)5ich|?gwb&jmw%NuTIt(>glVs|zO-6L0Y?9-w z>3^w%BH6*67Ccx_!2Wd=3KCIk*s@nJ&(NIXPRyc10dPN55>}|v^0MXC$Y%#NcQ9-p z@%jjZ z4+nwOxi)?K)9(;__p`rUJ;vdo;*48DK8P1Swa+Xi!XHk1;=!Z^p1Q z8TGkIU8dl#Q@p81QXeh^P(FqzXi2b(r>rm^`(rUPc!9a`t|hu#NTFgHwp~-bLqzHo z!|aDN?AxnV(-L?nY-N8rhp}A&`GE`hCW+;{mUj`8FR6D$OW{(PZP;6c>pb{ZLrxn7 zGsttrb6yFGrBgLNW5y7Yf4uS=_J(vN@R8PE%fg>ak;aXuZ7S(!Og)epVk}0JWyT^T z_{aB=-^7h9!zKwVJ`UbRw7@30K_{hA^&%j9uRVekf?t9UatJt@?k3xMaLG-taQL~(5hp4aMeV- zxU5y6g;_LPe)5)JK(j!~#j^(;f|@%#q5AVz0r46MgXQw>n|QlBSIAnbORE=7)&7?y zFjk&=_}LS`1v_7}$_mry{SPKm4&6!AYNx&mQ>tHI7jik)@!d;fyin38igqxYxG`(! zuhY`|=cDIn1X{w*Cjz?nL54X8ByzkS&?s^1%&S-Y?_e9eh{ z)XcWUu?woGC@O1)fRCrM7GaHcsn;(4%L)zBVdu=0R zjwUv|FO0Ayp1M#fT=3}6NuIqy@j|rOu<1%hY;+nW7rF5!-H;UHHoPi|a{CML5TJuB z)s7{VzZoD3kq{Z2cb1>lh?7CPt%&~G`m)opx>0sT&i;f^6~P^0 zbKyD0#wh38Npn168t_dIP!aivo&G&Mn%F{F<5u-#JpN!O_Wi)t`HV#UX2(Vzez+T8 zk|*|ih-GDR)$6g%;2;9>LEtdaWQA`^Dl|70A$%rwa4uHirb@W;2QYIq;Hvq!xq&5R zs+tNQWW$9AS>-MXP83>ua*GkHv3OWE+kBeDQz813$m#Q2*Ydsnnj|FD(<}MprzD2A zk@0TfoohoU{pF#e`Tnh|_6#7bO`a8E3c+p}(%n(=&e1$#%xj3nrz%R)XQxF4# z^YzOaUOXpoZUJ4u0nP$|y98ZXG6Sw5c-}om40pW&$kxeEqS3N~CMHK635%~g z9j;r&$zYh*TzGOk_cu|262N{VC|BwZI|=svISc-=J}O(yLaPA7iXdluw4iT#;^lZM zH!Y+ z32aYg?uuw9jzAh5eri~3# zpj|RL2E%SwR&emM^YIY_jffHho8nLL0lY>yFpnB;V#C*Kp6yvN3ky<`vZ2T066-d* znN!pG^xAJ$c3Z_bAdzmoSt|ruK9c|2S;O47X(lMdItfFcn|2_b1;}Wf>SY@i3|AGz zNF6sk_fwn^0B$TX9fAKRxG6FEiSSMye$0K0XQXE!Q|)M|$^F>sx^PtxKE}s|pL>gLL# zB(h|~2o>07ziqhD5Zd9tP7sCM!4(AYUmPiRV^qOb+OkqsQQ)#!y+exr-3t!%LLzHJ zC%sT^>it)fJ7LKxQJ=fZF7|&hch13?eE*)G2_~FqV%wP5nAkQawr$&<*tRFOZQIV1 zOsst}-`~BpTeWvtdu#vf%9B3b=X7B7ft!~%%I|^sd|Nd{ zS8M01U)st}67pA*x!HU-!(4J)dO1>c!TUPs3lC#FC}@_cS>U2oOh#I&2WNpk6PloI zpj;y96FHvbiMr;Djtg>32a^f$%XP)WZbAPKbOaLf$l90$5NpGWKPd1kqjMREk_DDzH)h6&c#k%$c7!=L&N z1$GfSt{fy1IW#VUj{7=yr!oG;^b( zdiflO@CghP-*-!D`gns19)6q6%dUC6x1BH)%u;z0ouhrt0YNQ}k0|qyh(atE@HFkn7@xKoxanRgRAN%7ym~ zlf`Z?ij?WHC<)t}=N$(SSvttY1AeLLkz^+^nc{K^ILl_7G7kycRfH2aHA=&}zNDfa zd@QCl=8d2f#b(p;I!mwdxe-ht!LDHOBU4yuw#N?gR7>`h3Z?#Qu?1y($8@1--;GDt znUVA2Zg&9$LZmjDKeZRI5Q#q}3iVLV?gq`8@e=F*Zz7Do-75Dhq*90tv4&I7GGbME z2Cw>b_4+0hj@LCygX+DYcOO1PAOdk};#c=lS7emo)qn)7{w0$>2na6=c&)yZdvtMN zF~dbfEnm;6jU%{S)EU5{^)MqG6R-%=mgOAYadUFqE1e{8Zu=U`9*McJ`Fs$3ta;$> ze=MZy`l09lyKAbHkMH$qO9cb!u$y22<1{;yO9~1DgTlTVWTe#Z*Ox3N^NA^?{MeCw z2xF#)0S+bvp!|;S>OdoFr$7KTu1)~i<7Z285y+%Y)4Oou}hNb-Qg^P9f5 zqRee!>Ud96?zt?kkx=cH9T(WFN^tqL`9U%G-WdY8_6OPP53^r1f05ea#gRsE;;b{k|VS>9d+SbOggXJ;4Fw^At zoE6P`l^2h;z=LKKW`))GVykotMVuaR)?Tr5Ji?v zr-hB530$%%z9&3I05%O2 ztev66{6yjclv0N16`u{{yFi+KZ=Ij{3egYz^CvLK&wA3|q-;d}JjgL0nOOP-*!U*@ z{hvp{CZaC)QS)uG2=iPBxS35o1>Oe~MqP5)KDy#xc=PXR{$C$B{>UC{Sf7#hY$~Ot z1TzFC76kqk+i=l32D*XxJ_+;5Z&HHYeg+PvEfNqm!?j(p z;Jc;3o299@c&k4qt1N6y($eP^Z^tMbnz<>k-v2oy1f{a8iFZeDHX>EDJCP-u8O>7} z*6KE@WKG^m8b!|`)kaLfu5f^Eb-6eo!fv@#O>1#kDbU_;Gv2^`G0Kz4{n{#%6lAE9 z!$tp|mvwt|Pf{mL{rpgIY@2%Gm7PS_N^Qi>`Y!8n4{)FTHrg_=&)gz^FSiUr*@1g( zazAjp+vs&OUq8mttZlf6qvyk?PY8@?f>0pp`E`Ai@*id&k!$|nWFHMTUgea|9<4c} zwzUq-dk8chgyZ#IV*{`qPIo+1L-@uT?)`Zb2#%h#GN+^)F)ZYM$gt`t2~7}WGuV^$X|4` z;0qd~G?52FnbYjzez}Wb(9(8TI(AT^G4@OfXOJr7j!GGZ+RYe|Ht(BA2BwGRA!m+D z+9gCYEvvIgWCXiQktR5Bb|>D(9f6mRta+rR4%IPJ(PStUr>2at1LEcqECRzRe|Ie| z&d!L9v~(;xZg&6DW!S_G)h~?X-P@(yx4Re|o@u~!k}=>O35m8JnYEQy*;MAhlW0en z+1-%$Wlv^_*BJUWY_xCi-ETt_#*TGkwKwt`mfQaz8!2Hie^EY#V%RQY0za|Y{lpU# zBrmqcsjdllZVZ;MgQp;1MpPYcIKu%Q#}SI`e6I@50}ixXs;}%65va{X*6@Le zbhK0g8DuvW2gat)p!c!s4V99olr6Xs*J4(E_FDHZ9rs-~gOj|Twm)$)9Ze12-`Y zqjP=E1faP&$;8X*Y#9_k85YyAI_|+fSghp4CavXc(Y0NY3lA3BMXl02pWOTryGfH_ z7FR87K-PL%4Bi^Vg%jgsp)$u8keU~2J-KqJ_GeG|ivt5WV(ndyO_kwoPrriQSpT|z zSEhnYlxM+aLpW#WnbS@fOP~B&g=fa1M{`wO11`?=TEV4|YF6^`(N5r;cE>uYNE6_v zCG>FW1>)NvY2kjB$Ey((V_tp(AX0``Q)VR=<-O>1#Sy|%vz){=#}<#~m7*(Sr*6l2 z$0armr0&Vf(Wm$qWqA_n`OAgBv30>Q=vh2;F}KxyTZo^XflA*PB^@y4iD7qKZyA_0 zGszQa;^(WqbnCkKO+`I0#6ygeWy>i-<7M{b(-)|{LWj2K^2HV@^_n&j`vz>b?T(Wz z@ZG?6h%dLtZv#$gJ>E<;F|ED`NB46}FzxQCw6zgxA!{8@tQn)4v%tQvLZcnIb+FF0 zcebl-cfo{J56VOFW2Cw|J~2T1vD3#2u#n#(ud1X|YM{c)#eQmg8n$ld%qh>}QRjM{ zIkwMucJO%X(+F27XF1hNnU_$OK7Be7>AZFCAseNZMINUFLyZ)+=f%Rw>1dH^Hoe)b zig?>9Yj}f(=H0^}CW2S^7AYzurRp>}ee-^_K1^eOvxwK}raO2S+n(jcO{me!s^sWS zn#xsu`>!OX>i;N-X*P6-j(_5y@{BVn40wBELiRxp|rbejkC(3_)i+ZOPI6K;M?CpFl?k(?}vIc^VuJJNAa z06(O5bC?R0xduZSKNMj{hsO4{r8Ig3p-JnFPT>`V@c5)eVc7XvJIBW zq6P;hSK*Mf$%ZH)iBn&K64MN+D`6-!lwa6(B=-t__`Y}~_D?DiZpFg0L!T_svK~&5 zBuh*eDK&#HWTph6n|EmIq>m@0Hh`R}|GM z?YN$XC+bvt(+=-$63R+V7!g^wla0h`VHoX+a6ak4EHF7bA0$?An1&M4-Miycv>lP3 zsvGl;eflD2LScMgIL_WDN&Oj(={3>2JPZBlOgR8rE_daLTZ1-sXLTtc zZoXv;psG9OV%1mGmlcercSX3ho>g5C@HT%H_yn*1LE)!71?I{pdwzTU^f%Bn>xAf z(JgPGUkM{Ya_`=J^GVRjNzY!3`9qs~i zCiP&;ZlL`$`9nfco&Cr-OcEI5kKnY8pXhVLjGeQTRr7EKIXhn#Pc2))g$A`kjsuC$ zBP;yZ`%e_*a`o*f-Vj4>SrX0hjhEu4qZZXmuKO?1Y)RaOqx!i6HfKlCI@Jca1*L~T zfUAIi7vFJ~z1$4<);}c9i<4W-MTjPTvlNz=8uzlwG=1`jzzVHfes#QJ{C<~p1A zFZrGRP0cJ_3LDvo6y>;#q}bhUyr>j?)0@{wFCE)gLsB-CS140vP(`|We%G~dtXr(y>~UM4IBE(S;sxVu+UUdkKFR^Q8% z9#zxys#L{!B-rB}Lzq>%1$6uxyiHY2S|e4e(z)h++az{j2+7-1>eHH{9Hpn>-{0>h zKxxDBEVt@fRVd_TQppi=mzevIIH56_Q-8Jfp+{m$Db5iO2mjB&<=ST zK$nyI>@Lt>jL`oDk`f;$AKSV0dHl?Fa9vEn)cJl)X6^U}7!!Gyl9G`U>4>)BY7#U; z3_noXkewd3CR{k-cE}rCI-+u_lAf`j-@xlZBYfO+Q@*y!u0*~Vtj|>{^U{6pRq){C zX?nrHg+o4wWrj3eE0ZkAI3^Myn2;m_MM=Grj?Lj1F)Ixf_j@InH7~p<*`E?ki_39D z;AE|#+EYY^K@?eXW?!Ka8+W|na{f(FOgdJfsS64s6N}*i=wM^{&U_H5zc4n2Ulxp= zN`T7WwDW$;^tOD`blX`&_8QPwS?UG9ukIYpx%iFCh8I!nlzp>B;uF18hL4e;ycW%n zXke8KzIvXDi1dbtUM5d#9piCd*e!=vBT5|)@!EoV>R@d_E=*|X14i&vfj6Dg`59pg zjb7hAby@z9Vrt7n=5C>_Dwaj&ozCe zY5{{@pS-RpMyusH49#HY?=;#Dx`sQ~!Y-}W6ERWs2)&;7>&w;2OYtAdzT*m$ccj*L zU=8+EEGv@=8;k_cPhN}Ppqk&pE_U@bc1-JhlKrB!Vb<>klITz+Pu_P%-2pq*wSMvw zsG)P>xXZakujxB7#Ai2~fFh*-U3q?~v=LpaG9Zn~X(VF-;10DV^Tu z5(h&;e@>kO1&3uKlZ{ZTYuoY-(ApH?*V|l#X||i)I~3i4=ie*4Z_G0i)gmgaYyMPYClfxw zijx39Ih~xkb43l3-UwI$rir8l`MTsCv(718KEb z4IkF57g2EEntMabSa1rx-gJLEb%(~NMZTBFo}9Z^2+_Fhv7MM-W6tv7Be>Xs$TZ!F zMYcP(ihRx_txJ*!$nuyuSA4-D4HC8rOLCUh;l0PkP;<0c-Tsq!s*=f>9_ZnbdEzcT zwshSHt1!XF<7v#lbw$JK@XqogvQZatzM`P|Sty~aJwWum z;vqWUeBM-Y?U$_pEn;iMWc7?#{KJ){Mq{Vl%VafuU-X}R4ad9ZU@reGELL7x=k;i1 z6}|UGI`DU>?ja~wcx=SNn(*l@z$LDfM&sE2TvjL4F@@TFZsTPASF{Z!Ro5%pMu&-c zZY+_zi&v#z_BeRT&1(19vFel*bX0laqb?dORI4SwW8!R8w~^73!`-5P*}QtJCBGTl zrWn`Y-&IDOJi`U~O4E%D(Pflm zzv43p(e7S!nJ9^-Tif&}M*@+?EyUQ6?lMu_x8u5p-xfE>=J)$MC@gT}o z>`ZUGSufQC8c{0mz!=P_!irI)Ej77D(l^jQgUR;VVpL|k$hCVn-^Zgi8S0-0mnU^b zFOHrj7J*vpgvvXlQhjB6aTHIUbhx!niMZ)hf3jT+p%=gbv!zN!U_5I!*fAb6tj7*99^P%`VZiJx!V zSc;D`lbyCmx%}BsX{ZB@g3~sw;^8F?d%0jTy>Ay5=Ext5H-10yxKI|4o}TP{4UYDg zf>H~qzCWt$V7)M`FB?+|QdtRvq&jar*M5v!n}1L0XiEg7ZlJQB2EPeHzfPDEi3{N( zEAhUBA{a0yb`U7g=POX<3c7qVP$DWHS<-6@gG-~_#DFS0x#Ec%S%P2vlj!GFEI6&h zZ8ueN)GqP{`{JH8`idsPm6ngE-Jo^pTYP`TO6y-dp`KG&dV=xSU`qjlAIv)yUo5EU0{>Df(ZzGAbSu&T5z;#5H?J@|D9TC_Hy zfy1A*MAt*i|yFrz~?&8cby41yC*{5F*vJEg&em;=c z;AEo0V655NkoZP3WzkkEdFsWciIv;TL9xQ~i@Wk%9qtmVXOhVu?w9RK2lrs#{duTE zSad{)FdVis(xHQV;4Gu?@n963snex1ta+6!Gcb)#JmKUOz2>VmSsh*6?(DbH==m!G z9N{skk>NKUX;bS+cf7CG=ru%S@vf+9^UpB0^w8-o58rP)ul&qaqMbz}2dUQgX@%B7 zig3}t*I%9ws@Q*>+#8n2j#(Qh`~BX>+T@5I&eiqFmz4PDZ|kFJ@aZ!lw?7W!1VZ1W zTA71O{bBjG0FYhvtGl*kG)ndvPGwS7klsunE2gYB7kfOI-$K5Az|Bt}k%B-nO5_`) z_YWV={xCm_qy7X1`O8g(KR{_Lp8);G5s+1j0e?&aQw>DmpMV&Z2v}mB70u2;|A#df z0}F;lao|h;I#VnVqnZ*=$-@34%vJoz5E}-u_~%Shq90Th$pq-l2A&tFzxpUp8hmE? z=S(KVAPus9Xl%VM+kacaWg)VxaAPa_2rSV zoFmtphQrSQ4HUrc@S#BRiH(*k+n>N3FmK0B#>=jE`kjjETTTHAia=r~S04Jg!{O0Q{k0eO>>2T%0Hi1CpD$^w88?x#?#j8n{o2=#WhIKnR}d3hL_;Esbw}60>Lm z?TVjTNS=CaU_wghY%~>F-URxE$IU7R1UObfAAyGi#r&C456HZTs=p0A_*=^8MNrc}!MR0m0@gXPXitX2s9>7l*#OM-Gf3(Ga5+ z36tT1GYsFNSyHauG8j-81QS7!q_#;2;G@4`BC9xyAY0CXe(;-c#n*7T8G8`*Bp)bO zHu|-(z!J4+F8~6+=~)q6^!F0!A!9sw65Ty9^ZJYwzK~}b%_8HA3ViFz%g#zy5nin^ zyG5fOO*|TzjR^QMjB~DFClDmK0ePo%)YAnlC-C`ylp63=31$x@`D!SQatN75QjO<% zZKyR0;}dgD1;aC)u{@}X{Pfd11(yx5C@3`iI*PzF2@zu?e5%|WE0fgw$ z$Ms4A;^G_kY;5cn!c5E{*0Rh;`LXwcO#SbBzZnkVgA#HmZnUp@(}$x>n-<1#mDWbg zhH^%}w#pDA%V; zZk#}6;rh&p^%arX*~n(cOQgVzmP+dqC};d8=>F`|Lr&WuKA*Hej0R`WuD`@)kWD86uLf=cZugjoy{DQW~o6WlX51#HukN zIQZRdpgy$M?#%O38N&un%%WA)i@#kKsQK-Tsr{DCo4ezqxhKuB+3-j(DL2X675;WB zPkxai(oIRQ?QVSL%zOr36HUvNZDQJ`)mA1P6q)H`Z#ZlRqM(}snysqa9tfQm;tZTa z0O5+mBOBe%hrLzGT@YItiuY>}hz%2$34Qhltlol_qkOa=L+R-BT|;aYptg=L8yCvO zs>5d1RmmaRuCk5Fi*1m|PFgdto6Llh0ZC1DBO)8tt}=b0lfH^DcCQgBw9TV@gz%6q zJX@SA%k4%xIRLc(q9vCNa?(w`XNkB59(^~UTPKqm&2puL8S}0|@FM93briy26Y8}j((>s`t zzPD(x0NVGv~Yp%k6S?>Y|)e7TrJ`9{kH>8hp8P%I~XfMJs~W+ ziMFO{b)dqF3bBqOK`%+z1^t7h9*%snUiSm9^%+Pt$y0=Vt2%7HXeTwrfyRevDz?Tp zelR-e!Agf25Smz)2gpLU578>FTp5+OM2j-|gj^PY`PCn&t~3YlTw%iRC&V?THCmzN z0a2R~L%b_7SI$9+?yJsfDI(YCj4!*$Bi#Hh&Vp+~R@%+PbjYa6%5qT`+^Jje?`p`O zpTyk6@hToGtzo$8vseP{iQ5Tg(lGw0jp_N~E2EwzO2}O->~9l~S-tU}f_UV;yYUqi zwUrvRFGN$0AP&>wh#4oD>r*eizOh~R9xvROpaaU9(F&!&Rq&^(!PXYAIm#fpj|P*< zg0@VH4Kk1jR~0c@Q1XnN_9vjlN785Ls&z@G_o7(GRvtNPSL+P}n-xfII(Vm~Tv&;6 z!-gpVI<_L;LEbCY9u_?zu)9L?mpZKu3^>|fE<=_$sceH4loNO(CEF4GnGrL)WQmrq zh?;<&-o9D~kRHsL!E=hxHV)`8gF#d`m4O3529+D5YCrxT*R!WarVjc+2;5(yYqRTF zG!#bw23#kJSim1FC{`Aadv(q0v4|5u)Ylb7-il5{c7ho7CVAlAubD+o< zaJkQZbBzS=FUh&oo#1%r`CV~NwV~y<_aiNLmtzQgyX@f3mJt}0&mZ7Tr-UW4kdY_Q zU5Sv)P@xT5(7{{Sijqn0^iMpcD<6XpK8nG7{jHx#BG9rk!No zu;t0~C;m@D2PVTwrK9ot8-_U3&)vtKQHg_yol9%%`RFyV($&K(G&iBoF2Ch<&(_kJ zd#x%&zAln{JIo{-{V6?I@AiBtxUm4Wxm^WousJOwuSF-x3%BIUr;j8XfU^8;yTyeM47e6Qask zmvxt6Eu|N;$&r%#y#H&r0b-TRneK0d)!gZh#ZZlR(E;{7ohd~E_P z`cCLZp%#H3lB-s@u4ZM3lg!Qiy;3vfKIr-Bci$6Iyj~yp{Qm7JBWUfF`%<<87moDC zCSd};AkL0ZQ%_Rse8KF~YB05>9BRwfb(jKs@^p!oU(;NL4QeAKQPBb(P5s0ppiH5) z5?LsRs%9xo0A5_Zd=Pc}UIuwdC7kTlhKS60J2FxZW|)a16TId~2*Mx>{=lDF?z7y@ zrZ>eS_+c9gC=Yi_0^bztrDkM9BH!Hwoq(^tB^rDhx)76MEuDe)>dyDlXm5f z=uNDCPFYH(x@dE>Q`%PrY0Y5=cV(|;O`ex%WXtry<{qA`!JIFqW<)-$c@qPpb?@-r zeG^yt7TaZ|bHjc!xvXuASz;wLSx?Y|WwOI7V42il#gvneSl%8BkNkhwUkesiTu{<_ zY~@Qwz(G;Ae?zD{ZVI?+#2U}2thd`4iNXDOb@=3$H{4oBM9jhKUTl4>BRS1y z6iOEc7er(NHJ2+uaCb8HT)$RpBoA^F4}P`YIr)PvT0f?#37 zFyvu1h=Qo=)C7if5_cXRdg;-!8uXngNTlyCHQCxU z!^GuF-FOvp*h&@E1s7J3B`mkU%IOT%Jt7u6ag3|ZrMihT2gZ7s!LZVv%B|(21@7)X zH=k%P%jKAdte>B@cDw zVz}nMst>;+FM7+lvos>a`k=x8@cn!%Nvrix54^!EtEwu;u2xY`*1C=W7<^@sibM&V zpAR(!U?<_Zanf^6!`YTrAWy=;SOq-E)vi29<*EP1kL} zL8PR%HZ)#eNC=OGfq8n7ouwl+9vq`d9lNzp4_Q()WC=RlpCvX9iLj~FxiN3xDQJv$ z_mz<{dZw#tItVFgdUYzmK*3TGKi_Z4#7xKyj+MMVhnX(Bwb9>FR3PPIj6@b1aM~Gx z6;db}&aN+}FKtE$Ldf~}Y#Ue5#0C$x=$m4fb;v8Mi?M~OC}2Z^f=CH<8IA+uqo{H- z4@R30U6Z8dJtZLTGq0Sn)kphkJ)0T*t=8PlMc)hK5JxJ4KAqi^e2EBj*>%0f!w7Qi zY&of=evT((ay`B3l>dchvl-z9o8f6dFPX_~L@_8)Y}WW! zsJ0lM5^E9Q+A=i&cnzjVXX8avRID>mJ0#_XN@9X9bUHE|%1Y=DpM4J`yIgN`q+I$c z`OFL8H92wcR{;bygedRA@HD1+a2QCW(kO zoe0{7_%6VAi%gg8e5`CyqFfa9;KX1?$;h|bz*vM?4eFZKP!ay%S-(~{ruP+}fCK(d zh3k~+affn=3fA+FX`^31-Bx3Rge6W(0C<4;tm?1egLWh>spi7`{^ck%3IOLILTj*R zN{5f-?$;0e1+Lmqdveb+|Hvxq&ezD7-3>*q+)v$?Wmnw|k>C~G`KNdeC8TrP$7K3O z8u~KgEaeBMHTd)DanB!WHHA#eWUl7mvP?8p-!7sLalY@^S8rJC`!APA--xYtsxBd% z@PCqmxfCT%-xOA{nT*$#CL#|eo}K`6{iUY$vC}i`>;%48v!kqyY?+ruEa{d+j$H_f z+sIgJVOD?g75Px%!=u09H+9dY)o9RBs`~nU-xV+H*`5c5lo2gAjl)aT^E2oFSsQw zJ5m&7?s43YWmM<=%_E6#>%gf&7R|D2cd-F?zv@|GH$B)ZH=Wm4LD)R((mfhD^qU+PY~)ME+NuX%LO6@gt|yP*PPc8qZ?;I5Om^)bk4Ft=$rXS^cY^B9f9sxa zCUvYllk`k(ieB0|oP#BK6kL5Jl|2t%W0`pd$o$5z710J~Uae73U%G3_GjwCpd_iVb z5Azhb*x*7XgvAcVfUXg_(;b}co<)KNmAs!eAfLktx4z+~9k(%%h8Q-BF)L$7hY1q? z5n1??Giw%Moa5Wx)Q5Vo*7_=t2o1^TDhk;8-5@oY!XYlpBTN$#O^k?&V^SsD4GeQk z67wnCsA$-6fr~X50=26@FNO1$ky|4HHmd z49t9-&X7sUELAi6+>8nC`wdc+_;cF;jmUUOM=u!>_5oXCH7!DQZE6VbxhJdnNS9Ab zUsFEY6EtLK42%#Fngk}mWHoh0eGB>nq!xpIKH1p&agJV6T=YwXn+FxDoGwYD?r%$-`1&Ekp zA!Eji@><}}3H3+ZZR*J(Wr|?C!>cv$J)}W~A?Y?ko3rBImDJNjLxv6sBWK0q!q1(*jXst!72R3PAoLoj_}^^H|c#wXF3&K=~8M ze>R`}Z{YKoKVL(Z;t<>8F6B)z;an~)nCA0DhIXYcsfd(+Tlr1{q=S-W?R@Hg$*|f- zP$=p+Wa1|f;E#Wy0&NC`^V;|{ALzb|8VCgG!;J#OKYa%NSTY>wBAGR#i}@SW@e>uu z@qY<1@{|0%s6yb@D$%A5Xrg~Nr1=g5Y-B7KBM0g470d#Q34`@3F!{i!3ScAPzNFl% zG`zb>zq9!$N{EN?RW_aa<%Lfbf-cC`V>ZW!YV$CF)&rB9uJOS<#qzJpsM&j`DreVW z33h`EI5%zT6bbwYcQVbctI7*AMRQ8Jd8A&YwbUmY=O9$~P96O%e^xyHd3b?U4)JWL z#7WTl=j3;+tdhb%3DM}0uX_6@3$Wuv^EmYvqk+4%z}l}TVU-u)`Gkcbm9EuW9sBO} zgq3+k_*-xH{bN~tVY^!!ImL|AV37Z=%O9rH=DpqTSlF5g9#cloEx&B_ZJ!p{+PyM= z{>}N|g7bw4bQZi9xA@gqdG{2ZJ2*UoFXbhj%2p=WsUH>7kkLBR9+)_l!V+SU8%3(f z!}2$WaGpzoK)mO0eaWiHbT_3&-4`i3sEHuVcq_kuo14=O)z$)oa%|+=XuqKCUhes5 z&j6LH^PdqvnT01dz{xIF=M8Us_2#=pkIyJhf9jXqsjm(M+m-7+(zxJEmi^lY0xK`( zW^{&c+=U5t2j_+bnj_;_jp;*~H*h=D9{zKhU>!# zjW*_afMNdD%{@hZz4Jem)DA$oawX!?P?JSXLL*nE=j-M+qK1m-sc{Pm)>|y| z_-SH-tyc-DN?5=ufy2#&2V!W_8b@f+?| ze~GO;gWk!@PFkyHdU;?b-@C2C?hfy3&%5vob5+!2HLDn=-h|aAd#-Vja}VDB{sM1n z=cyByF90piBYz%UevzPL_AqKw=1*4&4c;T34EZ%0bnye7$;k}O`U*Qr9SOzUfKHNR zt|gA$oRF*Z3LB1ySG{vzmy>fWC3uDQL;s!!^GxK!8K+c;yZg@1?ZT1vmQ|}ABj`{etr?zaGeeI z{eoBEgr2qwuKMs1Vd>baQ}@{MspT9dfL#5V$4>|YLruOlsZzXy$zN<@s3CT>HThwy zO|-cX>+1u4x zp1&yjw{NeAmfd1UCxs{e(E7?Ekw|jz5(fLq4Eu2tl7~c=?cm5D)K~Or+shiyL1Ari z$|Pq*qV=zZ5(<$*M&}WDe};z&&#y+SI_Y1=_PKc-*>JIDFHbV2XRInL63?Hc+IQIJ zZWu7etA$jK=XGd3sc7%wbef#}chR{Rh@eZ6sWPqT#+SMCgY^emWZpT?-OfUd{i?5< zv9ONCktc61-`a8*CnVIA1px_?jAlIwk={T1i5$YN37)FF>0rdAp@ zrQ0g*Vi7v86Sx~CobYB(Aqn>m?)A=|1)jAzoK1wBr8sN?HwdehMS>{uk<@RYUDX78eI?%Or&H;`C(tkMPx z<86tUn@!)~F>iHUVw^{FSFRUiZu0L$Fc7#*)uIzRgigCh)bKp37e?nPZl(DX-jfP0 zrPbb_qc#%1mE8?3|ER?IwbeEX^nf4sB_*pwkgM*^+wXA)hR{W?-`;oWarqUu%58he zxif87Y%wa!W6kM5jH*Bt$N3=f5R8&zhj zgzm+=dG~k(ctfAf?p~^uA0G8CIT@?~t(yTf&}waN0LgNf5KRa3KLa5ps|UdzO{odo z=1X1gfD=WrvkD7Nq_OWVsTp*_Vkt!yn({ygr0 z%?|xo%PO=a=nSh^bby^Ee6C9-4wK>iV%=e2^LDqU$IGMf5NJ(d+q@89Ou5{}Lep*i z1$MN-^L@Y*97-bmcA_en2k3U_t8zSHJ zMG!fyeKeN$`~V5M#IvY16h@Ax=z{mqH_)65y75(5T%qG#S9bt)|^=0Ps)=4Bxl=w@ds!`R@4`+s0aiQ%&Q2#+D7SRFO5r$Yn8ZtVB zKD%~XIR6!%eT|p|kA4lhMvG6M2>ZnZe<-q)2vX!JwSD){HR;9pWgCA`bv^}BA_v3U z;2getT<~~bb6rD$Ksl0}Q+F5*7FO-2P^K2TROjrrifWg0BOWA-<1WK~WroJP-ArFT zS?5lqkk8YC`yH-|@)GuzIjG+e$_ubh)MHX5q;cDq!~K3g+dcYDAuF#aQNCn0(t6EK zF8Uz&&WyFM@GHw)$SfCLMuV{?gN)T~C1Q8@rqe`6Qy#y`){d4)w`r%!jc0fEnWLtx z_6>2p7Y4a4(~UCehiM;-!XA0FS000fbC$qibUJLGCq}oBAq!Z!jg<4?$#^)h=f^V20zfWx&YPfDAt=%&x)foLK`)a|c~x`1Gvj zfbmvmwVvji4poOYpr=wR&;8c4>e<1jDpaEB>(O3*^XEu;f1tU}w*`q@;C=OOe5)=c zHHt8^ol-^rHv4=eG=IaRO1V)bdX3{UYuquCGv1~uEAe@%Y(swBJsAtFskM^F$%~01 z5{Z64;!3r0HJ8M3`Rmi^eA%X(Y)+KuGQ617_WhDPG%trJF*tO}i&y|@)Rl`s#9Y-; z=WI~`3=u_M-=6OL%(&8G_xTp@ofU+)6oiVXmej@|+{JMiIYpcV`TC8tks%4!M*T>3 zVOwOM3t>@X8`;Pn00}LJw^M_wH1IuSG&5>nXxcjy+h6c}6bIO+n;Z?}x5^!nN?0<{ z*k2NJ17^LQ2?Vg|?v31Rr>9=}uDxWuxe>*(i$SwX()n6KMcd)XH;>~OX>kFKrpd-klkcNfq z951=g_=<6J?nDuWCsnC_Pm#1Vm+IVjoy1$Nsd`=D)^IPnLB?D@Y`#gYW^iD;^Y9re z)SvL9h<_u_3mDVzUVW{mgX1-Zm6Fr0jL(7Rw=KGV;NB84d3oqRZ2|7j!!#!K=kdDQ zbO2yxr=Tb1Dg|%Su>xmx+uZ10sx^|?7vIisqo_wmh{i%;>a01W)Vcf4<{Hn1+drq+ zBr<$RzY`W437YH;*gDWf6Ell7f0VeKSj)}maEo!w>o15G^QS$wLnZ3$u*Ss@R*um9 z_R?L%`TlU*inar9g^nu2W%DG*$P4W}I6{^6`?hfD#ZOxbxGAuNVnpx&Y{B|2k&vaw zdex@H@6*kZs*3M!NO7jK^3Jk*sa1pDisl+UCmx(PR`>Y^(xWn#GBet2=qP%4xjsLJ zXL!u6r^n6QVpXORM90|w7$6B&_^s{d|3YR*i$|}2P0F<}FaR#~^4(zlV3Ysd{vjIg z-Cp%dU?}f!l?*r~k>3u00WP~7@%iK;zAq-GWgMiZORw`{-VE|xON($`6R6eO+|XIl ztg9rX#?1uAJ|R0g*AaMXW^5~g$IbmQaJ`Gn%Y3HQ#tr@?)Gln`*{2VMZok16gUZ_LMI;BY{Q9%} z4WT$?nJRq{(NYtZ0+;nL`Z^OTlKbv>p*ht$KdIiF^-i)a_s9tCQPKQf^s{j8#6E#e zXXi$k(zfBo6JrL$ocE6R?h`p)A4YQ7a3hV|eNHV?bKLvwY2a0~Kv;6xDVEwOZfR4; z5n^S}?T$@*pB_e)hHeQS;@QWfT$ImX)fZ>)6cx?>Cgy!4ZAfP>*U>Ev^?v47glEt4 zJp00{h$T}D=q2==qS)pRi7A7P#JqdS)N#7RYXVMQSwm(30EdoL2Z)BjDtAiK*(*`g zzP>!xrnd__Hltni88u=BL!4D9sLPGZ{nNop+8f@W*J$1Mq^OA!c)L1{Q(iHfGqe5V zX-W2;^&?Mu?}%w(ySqGnPFPRrqv*xC?)knd4(r%NJXZU;p{uEo_T9H8P6zBz^V21E z=DmjGdvn7wZtDs`8K?OU1#j}?h}xkgOt{$(4; z2$Y_h9j-WEI51X{DvpCersL9UxD?+%oP*{??ZiV>DJSRHWfqqA#X%PU$RBHp!JK_a zTL@ee<*(`TPj7xsLC#5;L{GS zS0c5rk%4Azu*mi(HQ9snt+R556np?D`IpSl1QH~YxqT6#Rv;5NbikRx&)g3NVbbfn z^!HeS6o?rTG~f;XF2sM416c;?iVZ%?UzU*otS!**FMuxpRSJ@d193$t3-&)^$nPIp z&qy}k@;UuwBB4ORqJHjI2))1RIZ5Ewqj(Bd+%Y)+3r+f}Pdd$Jx>@Ajg4X;aNzBGT zDpq=A5=i+$3_SVRFQ2<1PsU0@#joGKzdV59fBqmMOo*S)?>$ogEd%uv*nh*2{{K1X zy7$<^{q)Zj`>v_=x>!y}jl!$W-Jo|Elv+N9m62@13X^w1f#Ig{EzA*A5ol+WsJj2T z(l-Wy8czjwW1W?DF*bsUCWzWBi118=3rXOEGB#avxWv7MCR8?)0s&uIST;TxaKOfs z`4(0`gW4N^S^sH5>X%C)BRKou#}$AmdxL^SY|j6o`{RF*WkUGw2!cW2?-m|wLeo#g zD>(O6L5(O%#Cdp5qX2%%hmQpK5F}D}efd}iKp9A4O{w*Wvf$%73c%`L<)#}hTO{dk z+5?q?4N=QKm|%d&eGmi-rxch{lgzggVC=Ea5|wu4;YlZmMTr9x6;exh=c}UN-2HwO z;28ZVeM`0BQ1j zJwHQ^I<0PWomM>t$_0ax<>^!c20R{Q`LBRqix25-R5m^)LNypjk)Ou!Yx?S2RE!CA zE_r){`R_Yym5J-K)Rdgyjb&d1b11ItsIMZx!bk6aY3(e-qI%vwPOK7wD_ydLq=1xk z3Q|gUcS(oD!qS}!(k-HND&5^EDcvk3NK3>2tiRv?xt{BJ{p_2)&WkhmoH_TLnfcD= zzNacAGr)h~i8cb>UGWFfjOKhw2RXp!d6Ky``82Hd2Kr)mf5%zY;>p9u)Q71+FB4|q zmwgBt4iM*%7#<{hCALN>$nE+1ZQPw6Wvmsn`=HtN*Kvjc*pfIy(kJ)vNEpB^ZcY$W z%O&8i6qUr&*w2B%3hz`o$*T?*;%JOqh0jDsM!AAap~Bx+FMOZ^P=f3^JS}6SIb|il z+$4c)e{VIGyl_pQh^e!8%^vB)2`NhRVX7L#Nljgs6*u^u;{n`y+SR6%_n^a;IO)ke)Ngi*yS{ z>m0NHFJo5qi3x=}1new(2rY2=y@hO!IMRr*_|-glMcm$@OTJl$i~6%#i% zy#*?wvCw+*o|)kh8y+k<3}gTDRfg+rcdOw+vTDPY((3FgbWTZE6R_dlj4$mQ!JEyg z)8t88B+B^SWItvJ-Yr7RTGk`9}EltQ!##s(z#+BJ9|j!Q;+-;yagj$@xM;SZAqcND49MC2PKR zZHkR}!PIAoe~*; zUtl4o4~=@O{ijbXK^7eNI;jC`G|wozdsAEy23cBC=O{gD=&!l41e@tfFLK%rnx`|1 zCH?AQ8olg(LyoYcyC`TMxSRf-*!lAN<^xIEYKae!_5Vxdg&3|y_Z!$Jhh{Ue#==Du z*Y3Qi8Pn=hLLn@4VxHsAZXP!!`JMUcW@w%M?1rbjXj5mXclNxP^K+FHgYB4h9w%8~ zIN!aM{D#fl_3*)m!|gI}QNyb`{j;geG5yye`tzccI2c4WCY@9MC~0EuiNsVHhf}B~ zubmwil;)Z7ys=CW#(t|H!^xgc#MxPnhB5jpJRKqI-@D+;Lg0E{I)aSECQ&Unt{m^UFK5=!ckDxq8R&P#_Sgok*kpqa6Vt={ z@*te8%Sk|oV^r%k*VS>HBlRc?9yF>yj9T0Mu47;Iw!-Xn{uiE!{`A8J`;e_B$P3kn zX%32gZEUxd^C@l4g*I>4+f37S=}t+f^tBeua2UlFq{N2PVC?%>f*<5$D-M4iqw9r0 z@`kEg##o+BLy0J7(&W9OMZ5a!`p71h?Jvs+d_<3rn=i{s^@`@# zpEpZXnDuo*Re6~XF{}24$KN=Suw@_L?h7L@NQXV;r6u2jQMB1IP=<>4ZiwtslO`z7$K-qT{h2smk(|5RkG(pSGBQKO@Q{=!iaEvFoNP}a9K zamP+RKagYGO;|!kZ<1p5F2o95pR3^X5#bQRM0UiRCUiJZi!*ypNFWGwK&9- zY#Q8}dX{EuI48jfB$*|37GuA$ph(%bWf_VGBC6c34#!@|8-h1aBiTGi+SO=cv zLJuPGu#-CDsp5^hcbHwRvwt!ZuE{02&S?pz%f?*XFV{*!>G5`TW3dPqGdU)St`W+Tc;uSi)RmBv{BqFPr3_dEI62|Ygatni=)4bac*)1ycBVFoVfEn9Znl2xe zJvyvhnMN-*=UNxf&)a#bs0};0_As;haPwx*&dK+}DY~+rOLv=7@aw!R3g_oO{)21u z#mYAu@rH0tv~zMThnru%lINs-ehq$&()hvTC4Gf#;POqmj~v@XF!E?pduD?58XY zzR)%foVP7xUFe@L=mex7qBlTypB06&#ybMlSW}A3$F#RbnUthvR$G$XKpFIS)D!JQ zewU`Y^wFmS!-PjA8~!BI!;$eSs8N$t;GF2?EK$475ix6p2AM?I@vuMZ7j+mb_k8); zR@JZhanG2}i*|GZxyYU0KavSgJ;~aHl4xOr0vht1%v!%yZ`(Seyj&*UCbRHixVsB^ zG*+ZO|IU~tEPNTQyf4ywt4%UxSG>o$)@mXJKYAgzxZoAdGmR;s5P{MYUZU}^ZH)>i z8-n?!ujS?O5`Hcy*G95=TXTkXA;Sol%{A#8LYyT6}FqP*?qLNf& z*o)77)^*N1F5_mf%P9vn?f8PLi-zD>_6vOh$p=qWv=~NDNzr9Q+iqZ;ZT4sk<$`cv zGV(oY4r2C$s#aQB=bcw{%JYc;;CxANz(MQs*nSiF*YpA?STg=Rkw1NuBC~Cnqod#v zA1u6U>z#MV2}>Z)JLpXYjV-}*5?bp(=DQP%@J>ICbVsqPH2M9V{PXY+T@G(DJdz@c zkL0r#=7$s=ny@@ru6N-s!P`&u{8JSCHlLE;>hTP8%y(jaP8nSU^6pQyZY?vhxM97q zvkJN?CyH<02`2Cf;UZoajlcDdw;GR1*2{fAIXmL^^ULY=(9YV0^ADz%bz%m3@c7+P z9;O!gQ?wn<(6X4}7V;eT=EM^HSCYQ+&oN{c%*=_)7f9Xi7ecCC>-(6PlydvROPl-O z8?fY8irf4OH^S6%zaVew)6Q9;VV|HAPYly+P}d0B?F!zBnsb;f{t7c~OT@Z!n5B{Y zv}evMccC8WdlebBHH&dUfRQ6m9$kykbJATn!i&B%xOuv7dRc!Hqn6!5eBuYu;=}Op z9Ut^v=itO@YkxJQS)<4nleu2wGxEu|c0jAPVJOkNKRRHhOG_IoMwyxXZY-V1JcOAu zi*U`aU&9zV;hogN9omOD@ni6RC3mmThLub#K|U`liT)H(Q}40ijoI( zw|=jUe6cvK9PUNN0ts^5U4cr{4;_^pN(2h6g&d=Wu!(OSI)uOG?w9o7w0J&)YvwS$YiBxo%<*(hb> z2@6#g4yONpzKW{G7KiJ2s7ou!0W8SQl&DGBb@VvR4l8gzEq7)}_FU1g#K)4~&u6Fl z+?I(7{eHPZtZ}Q_@fbv&4b1*St#Ig30(LQ#1-L_5zgS!H{ubO-9AJpA8aFvIJy@Jg zxl7yd;L_8UQ#W7$@HP2(Dl6c zPW>ZAeSyi7iR_l1&L;}%g!^z^mPyO+pvfX_u#1i^38M>){ z@22nOne)>=Rx3(N)QLNF-G1@ZZ4lOU&w}&pKFN}a5B*(m{A0fw{j$vMyXy%4AP%Qg zk$`a*UPA}^4y$7kJL~lE%ar7*BXA!FJJmmBOye$2)->?dET5=W*%2+BuSD>LYdWkk zJflo+{G!Ut*id=T$56;em{VToh;gWgyNDJuTYX7b%{NnS$PUg+$j-`=4W3diI}uA>%1_s-xU4k% zb}9zC10RU0DAApzu5Fi1z;V$EDqqlQ4C)Kq0E&)QY{o5KilghyT(FN?7~+j*_O&4p zGkLuN~_DcH8g9`*rl-ofVNjsc5mCrPL)&3c%GRnJ96S5bm_S~ ztxifD{UjFX{jg#E87AF@iSj%C8wJY9`;(=SA+<)xFl#vu3I+0uMh52kq$g1Si;LDF zs|$_wN{r`Gp~HyAO9z;l$4C)Pbpt_v8n0&|W<=f*-~0EGGI43SEr$^k_*pj_8G@`$ z1ptSb3-E}Og3R2pvcZTfIk*+B3R0}cKb#ZlH!e%z)4o&jghM@N`V+RSB$ zd-GsFEWpC=PZxckE*pHuLAt1}0!~ISAVq;=Eci$%EormAcniVGphl-RWWQ$Vk##Rw z;4!Do(|v`HE#wb^Cb}`re_-mjhZkyGmHaF&LsMwcvnK@s8Stq&y!XexT>#ww>Kw`? z-xlkuOVXOyzha#HQW_ zb5bY(Nsd;TL3>w>Uk{atPR=Y~?wv@D8wN;zVv?S08*E&iz~b*V`aE?bKos)5>dl$X z`I$`lYJH_i^&8_AED(7pN;Hf-lx1TM1iHihZ9OqQU{7K=m9HXvA?cu9KB=71-69@h$T>Ae*S1pV{vEwR>cpQuhXxr8xMR+Q%%u^on z{d{&z-c24K3V+aFWjg8^idB=2eu893fcOc+=z1NvGrcaDdNJV%Ki_rOJ3615K}KYz zjO@=SvbMT^89@hK{2(O1m&%2j>dyVYgzJxU@$gzC8#t=FY7+_qa!GJ?>Ap((_X#&9 z7W6PT(2*K#Dh;50TFw+I(<2)|+?5ef3LEO4^kX1fgF_NIDpsoGzCl(nU=w+E@&B}q zaVT;WG|7`dmI`RGSx7Z+NrIXRxDap0K`QB8(jm`*XGQ^~3jtO}T0+D{kyiZ4klJ}@ z47LUu8c^^{55P*g_oDz9(h4d!QeVZPASwod{;4jI3E-R5{H5Oqmx3i4!+J_1Il45bWRkpF* zZ(;MFlZ#4Vj{%g-f`rneBd@Z!+j2$gSBm_|$5`bDe_JGvpdL~;VYW5kCqujY#D;T! zXiDiVv{f~nt6Bi2ai~E5HA$ac{dd{?Fg@Jem<|iF0*Jyt~X>Xtz$T zm0Cs4Be|x^7=MdY!*_B!AD~BYp?#A9$luhrwuH6 zaZ$fP;XJ_S_h2-7$KNCl9JHgIWqv!;+}FW0ctINBRk@>ac&_VLg@f$D(vtXU}CP@oiuPN{hDZm+WnPUt6`Pl zmqePX>Zg%}Pp97n z=9xKO!B{$f-O68l5kOpvC>X;ZAUzV8&++uUP!ea zVj`jW*PW@A`2hFc?Zqjf zLH$3E@7MF`oVDIBu-0$px9`30z3;lNd(T&8MX5*F&#~{^x${Uy`t7?rckTi1+(8$^ zx{rEd98SA~`ghm)os`&}is2VqckYPXk$Ees_VMn{BBnQ?=~Bm`dHw5DS%wF#B*oaT zWK~};(}!k|C#Y79?>rI`@~W(a786?L&@vcf5{aqcOJKZ>e(cG*m1jQC0(zZ1L^Jz3 zb?ClZEZ7(Dy@pfidYEPw2>=P^e&Gj1-W*>Z^P9coL&Ku|yKN+S?ZO}l(}`#k|P=lj~-U(33N~53q`mZDd9Q^Z-3R05)E)%tQv`i5`)!HZjN@^jdJUC2=4F7kT z_;jc#1vnL0(EcmwBeTfz8aLUqf0s$AjM|<5k1BMOGeGZf$ZucBZ>dG%nk>VVk_av0 zUDm-lXoI(Kf$t`2x2N;DDdra8pGEqzyoV2*YM+H_gIXLE5){y-YM(YC3j`{4?M?@R z$BI%gu)ExmKATtNnArSb_i(ys4QbZ(e72J5IL`0>NJD2#Q`PMUc}Bh663eVkEQJw8a)*}MeC>~%wztCdbGICo0Oc%yWGN$s_@ zK0mC=I{qtb3m9l3FPi>b)cEff7A5){MxM`5+;5xs$&cybv4v3ZE4wP2jOi*B$Os(`%_-~b7M^C3)#I|aLMoZHa2$^(+oxSm zUN!poX&}( zgIq0YyjluDU&xFcsDk6uDoa!$V%uaxr{~+reoxul_x4`~STzls6+K|sQ&KZ$g|!79 zUJ{eNt9A%Iqq!Z@=`dweJ-VT|=TPFf^mFt|_ahuI1-dPACPBKAvZzJ_Tp1 zEVG5)`Dm!$W~CCT4>%{IoT^qEzzt~1aEE0JP$Y5DF1!w{3(`5L*?NzgiDRvH6cu8`W%P?p?P*T1S4Y=gIT%RAv-kL<+U|8Gi55_~7t}CoaoDDr|~bAG$7M*M9xb5H9(f$E6rt->P<<6$M%itt>tVC-PW8Fvo*8U9AG9dv!A| zz*~zc&_*uJx75M9n0gbIXZ~R~e4R$Dc*A<*SfwrX^rmvZ+I%qA$~8jzUOd*GC~!Vo zV-~1qE{e&`FeBQIXWe<$PU7wIl7UcH!LG_F{RStY@RToNAYpsjFQ($BM zz?IL?G`Z|^aeq~3veRk4#IJ!P9b>&X=KAYHYi}!0#h}L@>U&;iBuwUOLU$OT3))pA zq%8Z1{f%{*q~)m>v&}R7?0hbf@8WJ-)gu6|Y;A_8%S_*?MLOUg!Y36bTpqs}Y z*nZECN6xqKg+c^FHF0Xr<7Tr{!5YJo<}*=9+Z5Cl@lun_wskep#ixHhMoHte*>T|l zwyjFz@i!7>x!rBY^OiUI(I{2V5^-)kd}XaCB^IRhDh3L~*Od3LaqIag*Vn7qy=VUl zkW{n&+3 z>p_NkX|I#{v&^$G1nH#fV5ZPxaR%Oes{++p^TpL^PuR5oqZemaJ)NHFZTAOHgj5do zU<&o-g--z~ra)zm`k)FI<${6`xfgN^fj7`Z9-<7_Mzt2nI;HLkIS}oD>s(eZTJw?uYqQ zwAvijT4w53*0H-D0k5M-(%UNSM0STr6{qY1pU8D}M7{L0(ZM%T>X~lJT19eGrRbr_p#! zWs`ugWwIh8!2ErWn)wfMyB%#I&ciiX(WvYl&*ZUJV_m>;@+RNTy>L%`Qnl7u$12nD zZ=A;)8O~LHeqprd%e%RM|)ZssdaGksZ^G6@NsG4 z&DeD&@=f9TtAn4bV$krs3TT85!QKwgoOF(`hIOEVbi}Dv7`8o`c;z!eY&)lDaLF_N z)7_x;SgX(Ko!D!T_kIZr2rQskn(J#uG_R4?v=~>M$@#3M?rd!|Bb51UZ?c{OU<X>wKU9S0oG+e*BWGKg|@IBT0Bwlz-cJ5Fg4GW7I41694UTnLKta*-Ka zI$qS(*Sv~z%1B_bho+2=h2FIFlTcyLAs`7M!|D2szBTl{hp7?*z?6Wy6@z!Pd&y~E|B z;o^@3t*nDLJwzeGne7LK?bZ?ewZ0H-K8}O0_f@Q72CCUY-K`xB&U$NvLqojY*uddinR6y?RGHq}Pf-6hNr$b(O8^ zh}p%DJ)37tp`I!6K-FF^8e7>BDdHS~lNpWa<)OMVk(uG4;b{BBu^vm3h1yz8;M6dz z>Y-%Kmv8%BNxu}OPPi&S2AQnWVtVyNa#3lzqQ<2f|^Fdpm}41fRxNt?2A0FRKL52Esa#DuO1wV;VB~|CH#Fe z$Jy(}m?3bJhs*w_s_lki?Ec{x9jE@)e3HQ#YgV4pXJ+pMz_LiPQPZ#YUY9fAHUa~9_d0t7J%yirA-Ptly}&^kTM&P>&6TC%N{EHl)E*r@eScdt$~R9nie(r~ z?e>ia(r84b}~PZN;=Lvg4}qK{`hz zkswvzN5%s}1Qn0K8aI%vYeh@-ddg7i#)@{;9a@Nc=zvn))#KN?z7NLAriyDSn9WH4 zmgU>8md^sBS{vR-X96H|?CuD?sLbu%?K$T4R=)9*EU8BX#1hSZAqs@+51_Thlr@c4 z_iC<)z2F1mkg>^XDW^-d%L1j8As=LOsUD(GzhRd@?W8A0DP8rG-gu*(u2|=`@NQpS z2gAHhAn6$uoo|ut4iQ4w@VkR{--JXt&}!w|myN5f~}GV?q`)({ruHTK=+dd8K@|&DO7OELArtQFpgDW%Tjth;Omw%g^+J9Mg-h zaOOY-1_`hu8DzS#9lbHtL(>5r>#&lezgS5?FrmYB%R=;ta=j|0^xJ+s0czHGG?gO$ zbz_{B9C2t+x@Syh^Xco&`Fzma*d#pD+X&a`K_~-_Q`~`py$_w>1UXH_F&M6syjjP95>X^j<~lD8R7^4kLkwIt_O=U-)CTD*MXUK` zD@PJA)kY=cy)O-qO4XG4Vx=l!W*bc$i&d!nKB)eqScl-k*`ytFvZa;@Yj`&EoO#LsgreKPw<)3*F6fqnZ2|*RoyO0=LRc! zIkhH2`vT`VJzEb(ipnT$vDB%aV>qrocvJ?tT)BS)HJ=Lj zY-6rqLSf*tkguJlXr?BDk>qUb?3e3y-S|+x(&dWkO`7|MLQZMU`=2ktpF<1vzTCfs z7g2DX?p>(4EtnWak^h-D%rWv!8N%4;oxYt*iO-u!R&-??UWu}K?;=IsrxTK28KPd! zIM+W1B%=xh{lf9+72)k%{_Z5sU7`7)H-*jDb({I4ebzVf6XV;UA7(W$^Nz8_jj0@| z$|P6M6v+Oy`wl^3YVI~d$fF`kyVS0A?3h<=FF+x^ru4#LTSh=o#$;&8M2iEt*ar5w zP?#RfseUo_;&6TyPr#QO8QA6(wUIF7RUJxZP157XX>W#nlzR3CWTGq`?R+=bRW2cY z4ZGR;#OtdetF|Vr?%ibF_|ufEU_N_g`k)`{FXCbij}d#`>YD9^h_I+i4iIv))Ng$~ zue)FULdQm%kIHg(Zt*Z<yx7Yc8jMK}ntV_Bs^{|Vvxo=e`rC%mfIWJ+h z{5}@#wwLw7fc=H<_329$L3=*+m(I}zz*zG?*(sWK)*L-mzyf{iE*avOk163w8$RY{ ztiMy+L(ytB0%p-6FmWU-q!4;sXFk7CVSC@OeQzN^|J{k;u(|Umi+GEf_VS(Juhttv zZj(0#RMRH{xv=4@wA$!3#EtBm6k-AavsK%H6R*NINBxh=+b%el$mi;&w**ppB%yix zmwYQd@xs*cep)a}$=)p+h{vGudPJ;7f#8v+`8DTNFzeFOnw8XsRhCwSjm0F(jh3&K z)%vio<{1k}wT;{1SeU0`Q83p}=Ayn;ltR#bpgbMZpry&aG6Nwth%04aprL$O6{zA> ze=|$Z+5mK2IA_$1H+-aGpy)IBX|;Ja2ja?-Po;zTYbwr!AkdTMjV73}vWrBw(Rd{l zbbT!{%l(+XS<$5h*5>C6v^?}{s<^T|^U!%TKW$I;5yl7_`o41mSP%Q08P6p0-SsHt zre7cFvG3BjYJf1f#{C*UFZW#4#YKCbkF!i1Bvd$`i9+)7kQw)8)8%m05Qf?3@Ds#M zLJV=-OdDb=RR?J8#U=Qvnv#jBmX6m)>erF?m|;zhN4VxAPv$m0r3)>Vmu%XO`(&_++h{dgN4HEm$@DEEPG;7Q80hf-1~3M! zbJOKD{vmnm@@9GyB2Sf}u&j;1vetQ~g~lxr(Y_EZ+phA=wj}Ou?nYZgfEq9$N)P?) z6UELhrUQT&lWTx-$^4-nu{qn99T)`Pu|6qxMm~A5Q*E)qTgJYH(ZzL$6n$GdVoW^k!quEFn?=a z`f8tvk0B5eHLXKAQWp+Fh{nfEflxB)d#c&CAQmgK!zxs69G)(maoTtVJsu-w94Vyk zPv?Q&we6&FstL{cT+U{(zd?c6U({Q9|CyxFkms$jCqyAL;`qqf)l*mA-|W zt`lc`wyI7wYN_w|iesO)^h|Gn#{#4M zLyVcy#8XUVDJmFY=kw{6%n7huh^6#;%0jvA-FOIX&1c)2@(%hV0=Yv%g04I5NY zv^oYUV%#ae`AlDZUi$;7=Ya?V4Ox&7t-C#1&6>GeFOcEo+O5o68nlIx%5=!Lc;BG@ zGKc*ha^%bsw2K)jm+sKBem18uZNU7kPj8{g3#tI|oKu{Zx*qh5dS0VIAyb{MMcVA< ze4(JAZ(WS6m#Bp;jClkOPc1g*Ti9>7EndDD8Njt0_3+E{CRnqf+>9Z+uQUrkBA5#Z=@AyW)dCeG*Ls+H^%(B#)P0h<%VZ-fK@D@ zMvqydPs1f1Fl%BK6b2jtNz`+>$?0d@jGv(PYxB%>cZRR~f$P|E#z+_3+f_?WOZL1X z!|XTwU=L>$o0sAF!&|6Rz|38-jMGLT-tclg+TTy2=3} zx&5@hs6}?L1*=+_gj?4O8x>P>AeA`xq^??0?m7hWye>SHUF#9f*YB8`71R26PsP3^ zI{(zt(z1z;FBPQ;>$FW>gt+b<4cn|Gg531q@hr-J!Cjq#lBcfN@n_Yfc-pMzQ?L^~ z>zqg`k~XK*PD;1yt>Jq(T6G9v)agA+{FZEj8)k3xsNy(VtF(;`k@T{%!)l`J=g(Xl z@@I*4%|&cV^h|@iGrK$z0!lO<8Ddn%J7&Bmai+zW>#;}bby`Yi>!xJ9#M(o$YTho5 z$%V;sW024b(1LTgn4IgRhtvmM&HrD$3dKhlH8^$a(GO;4rx*sy@KkN2;FkSub4VzMuhU>dB7; ztYqPwRi@ICc=bh-+TI(T9VZXoN<G zY9ob=s+eu!6TjDRg}L_PXfpU>B|uqe*jwflbCquYNx#Zf98Mr~7Dk?y7T&ehp48@gUr6j> zo6*%(H~Dee3vDaW-=NzqSemx2;Z-BE0!Djayi=~}QwCIN#`oDuiDO`#*y{1X#lH)4 zJUj{448Cdeb(UAmo_sb*Xllbb>;)MrJuVu1F?}R0mT#ScmKXA9ULGdOewP1?7e?UW zU0FKCy|7C0Xr4$`>bERPe2kQlFG`dd86CFHZ+mdCB{R>YssZ`XC{}|PCRKtrTO+=^ zoM=Ezg=UDGb#S#gbZWf5&ySG{Th+obx=%+<&!XJnYk!d=@@m*aL4BOYdF$Ho@P<=K zFIK<4hj3Q-dfSnt%vq*`<}ZW6_5BVN0DxYvTOJCaRj8Z&R0k7Ef#>!}ob3YUAvab>sIk~3 z^S|ZFlT;-8dg5RUur9yG#Y=xo0{|8qNM9qGw{~O-F3^tl1iYtGw zNc2eJ532mpG=}G)|8nI^*eI@?Q3~+yGO?bbxN?6!buPkx zCAAQtxbpvhC^Q!M?8Ljr*UJ#R{_Ni+;2+4LS|G0AwIg)@uJ<4xwOOp(^f>>1_v#&L zuUVCFBE*X^9=`~P6omB{@+HB5oB<#YVloPVEo2%}uV)ltg`!@o!OARBe!@!09H|DE8K zYR7u!P>%X<5449qMiZrFt{hL-Jml+q)y(MYkQnUq*TpHT`x9iA(Cpj>)vI^Qz0A-| zQwKV8tiY<=Q476q0FQ|c@wH*TPF7O6zf(NmM0q)3ftSDGmm)<jXv*)wNl#Q@z}SG}_t zoulYKHXT4iDY86{uE?SP_D(Cnu={G+>%tf*kqO2&r@0RgcLBgRv3!?gldz9AjGH?popn1a~;wFf=#n{qtB zoE+!KK*d0V*A3^kUQw8w&&(Rr?Mwd;Luzj7LP1;6sd%A$rguhy@h4#t7&Z@7_ z3?9576TZqci#=3mY)S2zKB6np`QToJ{F+*SY@}U0pXprrT%6|bMAT4efUpod*R9h$ zP@{D04#hJ8%S6`9PdxZ(1Uh}4Swi>Yey)-1_Ab@Y7;VJIg;>G7KS>y6G{*T9AR4qJ zVQkKBN6t!ROy$J;b~K$hx8u+U4-%hD%6h6 z@?+RiAMjyps(tm3LLajeLTXQbXqmR)3i8y;vjW91_FN0tbyow0hQ-DHOcqT96(sK{ zjuqRy3IG*P6xyMCQ$_Q!Z@D(($3B$I?HYef_Ve5J_xVDu%zE#N|B>e}jN=dyC7ek% z7mNy-=OUDzI&h!Z0_uhI=QA-OZLuO9uxx93QK<|!!hyL`BkZp3q1{;6VoLkzUR6;xQqV07?tHk9RC_)MhWUj?+9}J`JC5v z>jcy7<{89ch8R19!TiT0oUNCw&%%Ng$t;`xhJ*T~eg!%e6WAG{yj(TC*ZNX#W?ola zDo(xbZTV&1r2fsE!pXsOHU+4GcPnI?wRy~NUb-1yWO*Ius(Tqv`DY40P*N@;({`JBjOdYlEmRLD3+8+lbaW7VGDRR(G2dCy5d z7lmH-dFtcz1|eU#QAOpo8A4|A;A+4GK3FXp68}USzV)QtlJt@2od8t^N3EZRf(C8S+DUr%*6)e9Xn*Ha|B_CH zt1pxlLCwESC7})?;OHp+R&e|gxf~s>uoWwLla?9lE1rrswO_`Lhj~xqy`&tqA&-Fy zo)R7rGc6&VeJ^AC)fIuwJHe*x%1rmbjhFtYLuqxByOAqPN8^B@wLs|rB4d`y0-#}5 zz^3__UhPrwp-ogy-I1>BwM!&N^Jeh7hl%i z4mGc${u~dy6JTM!>qAa@3?Cg`V2>eyHUBsXfoxBhZvJ8)izuGuW3D4CU;DMkIahlv z{_G|X!1j(lx8#L3QcUk-e(RiEvkZNoNo_h?Jg`sUXSKd-WwVtw;>Mfy5(MTsdss!v z%udW*D&hT6C#TD4r0%*DI25{>>Nl8EXWyCq%gnkRX`{3imw?88v%zVCZS#$0`esIf z)<(t0V6aSw)C+~Ev!j|Wxi)HGfo%lm=Xbun!pC|akh>Og!bAE=SS@I7eC>|3VxlV9 zYIFFp5N|@{YYesydYj8m(BjQ|`R$v;&kkQObBUiBS|6=b_7u35GVs!msnt6EER`FM z_8Tb;?+`?8)={Lu74=m4qE4H1%dU&%D0HtrKun&rr-R$p&M5YZTiW3;0oL9ve5aNE z*7!46Woxl6s8pz32-f#fySja@j(?9FTKC2gp^bNa5b3sahoI_W!+r;u-pxkStNNjsI z6pU=zhM9eC6b~;c{)rJSsY1EuX(A)#4$iu`Vp66=<@(D|G}BU`t3vC=!b&%#Y5fa5 z3r!eS^h5uLp(~-A4Ko9%fRvUQQ}23}g@K84)l%xaBv{&Dt#xGg!_UvYC#(|e6?oWD z!KV`lgrY|!5^TM_wx1$=_U5f=K|+K-Vc(X4BfE+ZfGK(IWFr+%?_GlzLQ|)$^K&){ ziLaZA<^UuteH>Dt|8dB`gG^~ME2ryxwJ@U%(ls(Tfv9Vl6xvn=YHYNd3nmjbnWoo7 zN~<1rJCe|ZvN688;kT317aZ%D2B7*lU(f0Y82qzO+IM0IW;A&;s25SQbD zbG*%F)WWa~%t{+-#SeWL5A?~uVYuZ(RztsK4H)qdh-5ipb6phMsqVGfD5Y818=f4` zt+Sm26?~tj72BzUpWP-cFW>dxQIsczbFP=%dIYuU_#zssyur$`;^#xtxt4TC;JRADB* zj#F*2Gqh1@`U1z8UBBtMIU0#4@T&JNqyEYTu}eGO4jq?^nTBUtr!FYEmbx#Nz&967 zUJUgwsieOOHPbsBjCoMURXS#*?y;T09*N(`I~GTas9(r!Q)dWDMD=rHVWeEC0e_vA zlUq@MZDe6FepRaHatl~s$ZcToX2BOW>B?zvkI^NX?NY~GaqvAdP?ae8VWIJ`|GdgP zVsI!e>G)F1Lp&>G%(+ZYgtV~%76Bm}IE%B>&V39XKTAF<8J#<=u{C(E_WT&jQPO5b zH9nA>d5F`!{rD^S1ESd=P{FGy;GR^X&-gn$&!F(hZSrG_Rz^R<*%ttqu1B%WOMj89 z-|9bGymtFcnksbMF=K6F``PE-Nzj-b%I7YBz^+ZIatSE2M|JAN*zu&qX+n1DWAMP- z^*`QY#f(?)rSr2}j;W=t)iop!AoWc=aYMi6?wHddHC+!sIafCAaUaF-!Qi&_(aSYm zq7e*dn*q+o{e!2FlwcGWkit5LD zU7j{SNko-ol26L!b&^O5f#p&y9)WE`oVSLGbJu*?d3%pUxr)?}$*X>HxE=Qxr&=3w ztk;b7h}Z0)-MDvQzVi}6{(#@fw~Nr^euLuqw(xU!&w4=cg5ZT|qW)58M>Qhc`4i7% z0?5{gduL)#&S7a(fttiO*zZKzQ^AkTt;`PqP)Sf97rN)|m>KvyW#HxQ4&*)PU4}4g z&+4M0n;;7zL{x&kX$jC}E3i(dlGKv7_PJI@1{q`WJSri6g@;)H#;}Y}V>G9$%96@< zZu6_qSm>k_@z$u%l%FVUod~rSWjxecjw+%14TkN8{x9Gx&4wLG>VD;{tUil&FAId& zO1cpkHa;GbpHctjS>M7h)ea$?B#o_x{sxz+oHyxl?WSvE)P|Ll?tGck_A*2p)U>tg z(+i5(A1&wWzvNirAusxClXugT*Cj0%#k>zTC5|e+><)$XqbAM0Ah4q;8|GBpX=dZ| zhc7i6S`VC#GyNp}0Ep4GeAn4JKI}Q74tViZ_9C=Hw+8-h=C+)_lB0Cnt}ZkU%TP>x z1E=<&2BqIO8mZu}JTzi^N@e;9S)la%B(78A*x{;KxJB3GK5i2cTazBYtNDIQ_Df)y z-Y!q}fTH0L{gLTnbG3xu?60v=ro{RwQ_h(Wy%lnvW3T*0)`;m07drR^ec<~f2b-x; z2Jh$sGvM7HBX2fSlyvCF$pwuF_B6~GnV}9DhbhQr_m2h8{HZh!i;*tPZTkKMd}dug zNwDsvcQkJmWnLY=Hqp>wsOhO*w{0c=&TjBE@3v_ z5esMU<)HF$8vBNdzla?<#@4Iuo3gi30*M7ThM_Bsv9sXIsq{(n1LM|K(lG_4&3RW( z-*0QFKahz2_x9skG(sv6JOs7%sla|x z*&-|DE3GJ}7ky$q!T7&hiV zax%=YGxD|r>kH`AP-0lgEAzqz>QT^EeZhI$8^tD12uN^{4@)pqlIBsbRfg)m~9v9m4E zoWk(2DQjImVBgn7Cgh7Rl380reZU!-qnUgIBgwD{W1jy_WxLJXYh zK%8z)X1(;O`rT6E7s_J17&pIeTNfmD-g+T?5wy8huhjw?a0|1oE~ok%Kn#`0F!*HB zO?-(;I`U2(`&_u;2YJ~!*PV@*GLr=mk>U=At^_gyszRegK-(e({IC{N5?N)vG-Pge zeW7?fWlv$(?lQF~ZYJcu7Rb8bJepA^EY+MYSplsaclLoLh{{zBkd*geE0DB1fg~dB z4V$dsKR`E=u3Ke@5P6^NOHISLvn_4A7pEUxZ5eSR&LxFUH=??CGliWmV)HNRe8E@C z;Zjn5MHEmJu$L0)Ki>h(TVh?7nYK0%>w-gBJV#W0z4{F+w=M03a~<;9b}z367b|_= z0r;Q1a+<=6a2ML!J$0ULXP;I{;LD}^kklmJ9m;~ruJ_Y_j6lfZ99cpXw}goG=6~>@ z6y(5wexLb`7Cz#1%sSFmkAkY~wDQB950!OflDV%mLtz%U)l4#(akY>U+s^xwDYVN^ zKKiBRCT4orizSS-ml3W84UM?3Tuy+^25)%QVEf3q8qtd5gp8D%>K2;9R#WqOr5l#* z1yttu>_VcHo4@;lSFL$*ynyP$-tT;EW0#aCzpTG+u*nc{ki(p=yhwE&+`}mUZQ+}p zPYzf6)c!|MmP<2d>fMIL<^s2EP3eXxPh#pu0!OC$n6OZ!)qSE<=T6>K$k; zo@~kFeG|o-^QfjProdh55yxiD^s#;&Kp5FgLbh}X($_TGU*ugZ2Q>G$?N?MP!&8^W79`MlUi;Mfs4y;cV`QwstZ_gHhZ0=ZH4&Z z$@v}SM=5;%Z0Z*^Aji%)#iX(lHVrqq&0W@r97xaArWb>o3_BP>*ZY}KLTvR?K?4!u zXQn#)$o;eCy+qOI&Bvtx*I5&=AT@F(erRq|r-&iDp53(lAq3p#EVpr)&?82~uX5u) zkt$416zb%WeaZ*bsPgTypQ~U!3*CYjzdrDIKi-FXJCwu_KZaWaPe{k1go-TJTjJ&53-;BvXlH*jFi z&u~(mVSV6`?cANki@`-!OFvcFn+kc4&Su30$Fo#wQwv}jzLZ(q(l0Li8hsbvafZU6 z#H*neAg<}W^B60m?N_zt}wMIdnY)JA2 zeCu(tA%Va?c8m`TF=Hl2=uyUZYt{4pa%$laRN{U3AWjM$u$9VlU^AmTF5H+??a+nwD6~Ybn(P|HXKAHI!XZ^rk|eT%i}dDBP>EzfDd&?sy&jZifvv zf8yiovEb7VjU&oo&d5^A<=ne~DYWjei@%84oZriA<#jeB_qs*UItVRl-mhiPxF=*- zGY{{T&5^ZZH!ng4Dy%N^BJMnUWUkFLsyjv-b+vNP@Y1$aW;V~=S~POZNzAuT*h5KB zXtVf9Xxb3|9vs6o!p~hFyTX1k{~~j6danRx$5dIOFJ9K_W=Wok%D;oqx4Bl= zhPx82PYr!9sOYOBW9-d|k^9L8x;(bNa?A`*HFPSqz3aUj^wLDy%_DP&Q@ia5FIiVo zB)zLSSX`#v40mcIfidHovYPe?({E0Qbb$#HV=(!6TkVb@!SAXSc9^dXsrHCK1$gu( zk)JzYw*kPz1^4k0asuLk5HWScM-H^tAzy+&2Zii>;}ugF9_nkUy2gY>qBnIFTObFb z^Z`Cj`@O)Q^@G=P?V@L^WL5{P_DG-9n;|24hn1+yD%DZR?c0l$Ed)hpUzB{Ncig8f zcIT5ur-jzwGST#e}o^(819iS&bu=vaNnPpyQI`4WA3kt^fOnu%)Bk1k?mem z=54;9d@r7Mp#ruAh_455!KIc+ulpp&HEBsg!Y6w{WUwqzMqc`&exD4Z?nbjTIuN8N1h3X+ z|M0+wq%caG&(J;uwT{%rsjk~~;BTTan^zc+2yi!sOzLo<3IPis?Oo-*R}akAlD^b4 zzZ-p+3gh2^sqWjOTS`>ivzDjX;YiL$4>B;Bj2;NleKR&J>B1Y9@|9-T@UI@;qKbI9XN=> zuBB=~d>NkJ@VwM`Ulku>({0OrJ*0_usz>FEsCqiEixv5`ubSSkJ>tU^OYNNGbI0q* zs${2Gnd`&@?L*pvw6jgT%1w_tsMLPj+sS=MF0o=h8*%>d43%W}E8PYVULr zy#3=V{kMwtGDvOhvZ&#ri$ap|2#Y^q*DGn8MZZlGAEQqhhoY+3Vkx^gF>;o{U-a1F zZ5Pxe$yS#76nI0Pj?y~?nHr6I)|P$9jV6*r{naLrYcs&C0>X9d*1b#8kd8xkbb2;? zrYH^!fZuYWngPeDAPVYF3YrqX3>P% z2Dox9x=y7ItX8c7(a{a=mhs1Zkq%>r?6|FfU7qtI&I%aCK?EX{BN%CZY~;RMcF)dt zP8kkH@yQ#Z)j}#PqLQv`?vDm`%o@Gx+?bX6OjdzM^X^wSokEwe?Tk9olBMfzIBtBD zFzY?qz=vta%SCX<>yt(EIRv^Pu;HhIvQT+*?L!aesiH2)vs{r9cw9@e&KHAZ?}`Pb zMDbw-`=K<9w4g_5nX&%zM5r7!zN1Pv#Ly0#qm5aUSNgc&PV*u|<+Buaqs!`M5)1Jo z6!LUigogWb8XR<8qlpQiPPq=p&_HWuGXmpnomIMi5uKA&5+X#q%3Obh-6Fg>OKRXy zy4|Qa#17eSjD_PYP|h@$<9oFHmb%($Bo`84YgX3jL$IFXI9YK~S>!Q#IBe}xOWM(N z-(5$4k9^Jtw}stVlNf=L8&E(K&F0)?UbX)k=s>93)8~~{;5FfwJIW+qFkh%d9-qkL zxGu*Lb%Y}l1&_tLMNcW;V?19c@l`m(DUy-h;Os*@MF09kTarNgJqdG0G`q@{&wZ))>^h5**%;e@(9UF6r@*{(W%;AOE&@z%fNppX!0PV!9AF zmA}6ddfebwnabk(ogcF4E_2fBhl5YNLTWJYN;82gdW9O`7L^xSc9y-kZg)bXKnhFMqIw-$NM?AO++9AV{=y>+JWo}A zm@)Jz`ffBsT>Fcz3*Ii!&6fMVHSO;!^tU&Db`r1pYzSQc&`=IB=yS|-anA&7w>HZL zpD^#b^*Bkm_BN|e!`Yq_by;khKE%G@HW@1dM=h{5m^1Uexvh68mod@8&(D9z96)K< zR@Xr0A@wM%y%GaAigb+U4bz9VoDwM3v*nL!Z9Hgsbi(tY)fGxf*YkE!@aW$Mb~z7+ zZPj_KulRSTW``k$&aiH)u-o?7kBf`Xi=V~yX+J2dTI<#kPzD-B^A*hwPkg0HBzrm! zR4@0C{@w85Foxn%75VvyezPIx%_1<5QdQ#u7QS&Ey^q0G?lz}fC~EQ%G^C3coC$DT z&ml7r=s|c1Ti*6zjKrZjN>avV3o8GdfyXHB&NH{=evx~XG3o2dyK^fj>M+D_om+&Y ztIJ(5hR5<(;r#s`iHYKOkAMIA1J@US^P@!4JS*%+=yxj)9|YCBB_%)sY7g=jxput8 z9S)dYPPk^VFf6t!aQzy1@GCh&)Y{#nD`ED9r1$Xqf^DlPZFWmWH>J)-IOq7*pF z6Zz@cq2&wcHv<&a+KH97#Ib7CW&ClR@?nM{Xw89eKqU)!d&XIH)vcE&*q95|PzNb% z>jB&9`0+5G(C;gd2j4`l%1kLx07h+NdC{hZ2TqoJR4Dh;Pinb`OSNBRE-Zl=$TBGp z>7d))SGGsBZfq;eG~m4dRp^*$=!xP4+lZty*;ef)vjlBXxQ!6A_I-Jek`e$ZFY|?j z(or<-?eWjrLz#~&ueA%`Sa&9}%$Tb&y&(H(+~FR78UMsHyR&)QVn@ydpaI zvZ(9v-qg=JATvZgXKmJPm+AZcIj>REru>evTEOfht!RWp#4|tdgwbHEh0N;i~vX&xGg=7vg_AO4O*>$sm0BSSa)N#0&wpF|Hp*vcv?|2%$FS2| zwz5416=@cdojzh$jYUkBKIFJPkP&+Chi0Z;E~aGi=sMDwd=_Q*oY24Mic$VWE@gCR zJJ%W{*f0Lae_*2wS8ds%pVgaPVu-|)3*sySMimV7SPyj^zEhs==1+ep$nU`}y=Huw z=vrC_Mpf6SHa!b0Tv^52>UuNpXt;tK@4@c?$$)CNLXFkLx>J8?2we-~NZEUq1x4A{ z1Uf&nRw5ZE)y3HHgwR(f?1jfl_b9vG3o=V{m-i)c!J|xg@wVnC7B*RLok{r})y0;0 z>kk(NXCxbp_i0RfwMkZ%T!ymeoJlGaB9p%>e&ljrOy%#rb;4X`0ryN0_1F>iH`%Mo zA=tJ-J+UEaXtdCdYmI0_2cKIs&VfxD-b z#s$=d+v)}!zn$P4jL1d7tXz6JtF~7YcU`glANH5zEPR6LqMQ;~`zh&fV^h3a(8NbS z<4{yGJ)kp9%L@Pf6oU4k#&4bsM98(02CO?_Q@}^-8q>EtTOV9*9m$|KS zxL8n&OzwHt=q=lYpZ@%8fy$<~MCA#m^3S+1G zZB3daxa?KMQqM0>!BaxGT#2)7XXoTDw}tjF;`m!%1)JVG|IaQLF)dvWk_Y$NVJm1q8^akaA^21 zx*^DemG^o--nh+<-6TcIzEEr)&V*h7;+_)f1bXwJe7X~2A@;*7H$&#=E7&eDN1|WZ zLaNW(R5DBQqh;#9_yJo0IYuX?9?qn8NbmfH4Zkq+v=Pqa&C7)lCS?fBR6v22;485N z6pgTc4sn*M7?|Q93L=>>1}6wT9dQ=(jQ?CJ0qj@MM?uL+SLAzWLU;;6KHH26x%0Td zEs3iSy4c&kGqBxsU_V)%MEn+y7O5_W?9<05!=XMlMEE%$WdG27HWBl9GRc^n06}gm zZ@{Tub)-i&p@3XV#59>q?8m4a4muE0{L7K12}+5zn0K&?b!>i^{qFTEtS2((qZi?_ z0fS2z6YJh+`56)QIWdYMWb)mx!1TrI?=}VVI~J2%OGA+ixdo4tfnWZULUpb~Xv#cs8sS%E*xETdJ=3=X%n|?Q@~2u&SCL&dYfcejDJ3vkIn| z8e6Ql75%6?}|~yG(Kh(@pS1g6^rGNl*VO;`-HHVXvZv z_CS2$%+&Ol=Z23BGBVQA7oqsK^gA$T6S2+es(2v~V?icdoujGu$&06d)ZoFG0vpm^ z-1Bu1=8Go_d)Ngs>Glg438u1ykEtwA=+}c`%hdr>u%Kh9{12MIK9FipmQ3qOqoF}) z0<9+zUkdprg^1g#=#BB7Q0J1Ii_Z`Mk1gunmYc4F!&~pjNNKD#Q7$-Y+W?6a3}hZx z_(kj=xJ~!`4m%b@K-g)FDR4aWX?ytZKQ}2;dp=I2;Eb4Qd^*~#?gZc*?JJbrBkOe% zfz3-i^8V)S`kPL0kv9hu^Qp|!EWYWC$gtW|Dk-0i0d zW-~D2^Y)JC^!lN;WB7_#zYp0+4{;@#&2qD%dFIkQ{kj(&@1m;FSYT^(#Op#t1Yh!m zW)Pr~0x>xs%vJ1EAIx{Bpzmg_ZAVqUakZ^G&1kDTG20L|RwI7Kwjcf!GkWS6AnnwE z^m}nz3HRL;VM}HHt$Ccp8sjo{`&yY>>-B2Pz{ta0nGmyzttvh{#L!V*-<<9f%F9Uz zu1?60a6Cc~Qvd6BOH3xxVRQ~9GI`0I@7((`f7Tma;*JpRR@Xh**=m_BJT8chMyki67Gda?doOl*nt#QfBv00IW<|VTg3~s7=QQAoc-Cahow~R8p zmOc5%C209^g)UE2Oq2FzyV9$(WkDs1lV0=6yfHC{yjc*UDlkq<_r~G91%1KashBQV z2u?G$c_H4kA$i=?Dmr6aOIjUhH6F1!ii}v&1mq=j|2{N82v9FBhE=*G0CP%SdE9|X zC6g;FuSDkRDPPy9c>w*Nb`_tbv^$qp;80Dn@)wiBwi@^fA zba?o!@!2t-w6sm_TIA+7&rMN@* z%>wgBBbMVc!pt#LBPKXEmxt+d^2LYA4d|Ehu?|fAw)E^MDS!s!M5iN-DWVthB$$Nc z2Og&N*T*3Jo52nPhQvRE_1(0EQs2nHwIZqk z2ei~1O?nEr+sQJNZk;+Bmvuj>o;R8%vkBjD!4_8N{zT=feT4t`k1Fi}hdz4Ts2zgf zD#n=i_%?v93968sOhw`7J|OV3QcYa-!;DW!Ah_d`W(g+rF_fH(m_s5oEGmlvv`^+t z>P#o95%zD|Z~BPoZ)x*FxcI1LSI^<*jzBfM`#yD_2JY^gOx}R0mx2^v8m56174Bb_ z{p#c!%45nu_sQH3HlFP)ZE1c`1wU8^4A9lQYYccf@xl3%o5)F{(d=Aqd|w%T4m`d; z7)&yRqe(EoOe5+kyvIwP7c+6mnInKh5J<|->wnd4U~(X_aL5F#$yh`qQhhc*;xz|F zg7*<8#DLT01l!65CZy1K1=Wf+dwb10l-LcAf-2al3^zsFMmPy2m`OJr=~G~L|Mcgf zBfNO0Sn`aR6P%LL_P}&qh9zsMzcz$=s_MbXoU+6<_`xPdByOY@NjK2OyTr~G zd36$EEGg+b1W!U?v2BZ4sXV6pxEp(=ht-H+39!sNlZ5tR%O;`wHyJN8 zLV)TH_FyQ7aRd7Q{_>;*I2W3!XZ<@0=*4_IUZK<877QW6lw2#wL_w;K8~#=BKCSz# z&u_rY$Q+8%=c9Wi#--&6YglO2-%CfO$hJpNL|i4iu7gMj$I_X_@eFnHHQu1ty|oA-ZzwFIn#|6k1iXypGMZPGIKt2>V6H(j91^Yi*mqIFTnge&sfs@v%<<@Iyq{2?4cNP3Qq;|))dG@VOz%P_~)mFuH5=#t;5C)=!vwzyn-Q|L~DPyNglH=c-y=Y$-9_!CFnOeZ(g_fmAQB#BygYf({y z=E<@u69hFgle64y&*gUVEAXHNOb{Hy!`bzpU%xx1JgxO73fe({}aYM z0-zhOvb&TijtkDB+s(d{RP9DBQxeZ^m#IcKt#?=)iLIf{#Sa+|_VR*z$zajnPRk)g zX2|=SGP&NG%zWiO;u>kRjv~ZtV%Umk-V4EG+*+vsC1-u1W4*PCT?KwXCvwFeP=5g_V6R5Qw3w}oGM}Nu&U{U6>sV#z zHtj<({Hcj|I8P?JL5G+M8kwMNXO({PJB^#OHc*DuO@WDt+;N|@l*`Q}Mxyt9WI^cq zq(Y8PY+9~zqP3km%hgGtN;gm$S+KAS6T`o0@$E$VQR4a=O0@ur&?}P%P;yBLuT*Yj zi8?1}eNB~U(2mh`1)or3(B-;fkdKkC&@uL{Yt4m|lVoUDm{E(x9FeP9BfINnTS&fw zYXAS9ads#wi!+kkIfD}8qD=|LP2M&l@K%syGL~Omu(3gH`%e8S)&l%~grtQ!U0LIV zx1gKjC<7OSUUXL4#~gNZRWm!1??~2V%KUv+nQ+yd`-{cqKd=21sCnf`S(A&M`GJ({ zY$<9M2ipGUxtw_54*3o!Y%e~A29q`@3r?k0B{5|!-V-CZz- zjwv_Ua^jvzmC;eqoFhs>M&r_I_&lsOX1EvswLSZTPPwlj{}!;jc38q-riNg4h*3_Z zCBm0c>9g?MhjR0kc89_#O?qE`%<8?xM~8tBQ>6YC7=RX}7y%~@1RW1y%Y`kpW$VXG zBPOiEbFSp;kQ4isMl^d=0uGk@ij?=^bYH`hJvucfwJgAd&_xTmizJ&82LeH5!o3=oB; zU6@V_P7GzjIoxI=){p0!{aJfcy_`LRCE#z2@A`YX)LH|#e#1a<;f(;ztvtVd!|#Jj zv=S8sM_%uy$HG7Q&5S!f2^krqT~PPWj`vw785H_4P#e$7fHOGLS&D)MMz>|A<0_4( z>$}R>&yqAHv}zWY8IJ2gbSQ4o3|Yp}X%i{QS~mvs2bmN*mZr~bmLrYLDPm%kZjZTi zsV-GF_|d-0u9DLsJpo9hl8&uPK!=^ZsVmT5SOVU8@~04%F8#}*7I@vf5{QuQ*Xx&; z(eGAad|aybnWcjL?#939bo~#smI1l3as8k%=KGfZfE{(C7 zTmMU>ey*ZwGSAA=cEa9hf>n)6aiSh6;QLfxtvTE#R_y40Mc2XrX{)JpqlwsUh4uHU z@g0gSR%7y5)RbMTN^wu8UrP_7OOr(pOLeSb0Ko`ga8=YRj~xYUrRxYL-Xr>lW*0Fd zqslfc`nlHvRVkm(=yEsuF0+uH>_H$-1%^?RwI#Mv7inoT3EeoU5R668*yuISL0K8P z75$Wa5aGG>X}+ooEeQ;;X33J}YWHV;lQy?mNK@B3)fBE;%hJav zX4CysxqgPb4si)n-q5I;Z$}Ob)z4!bY;Nt9+)BacS$=A7*sQ2c4{uMHMXE&zvmV9| zHe*78wFjV71>DCf47DR4Rh?U>XMp6f0EL+0<8vwg&-WKgF+Vn+HTIo z&E$N_;8s~#D7gMpL0t6X6*Q{*E7(Ihch@+51mF}av1H~HW|r=+s~axY12l|hmI)>e z;k4(8h+MqHYHD{$KWSyc(4t%2PPy^nX+oD_Nj$)Fxp}QCBlXu(0^xYGkux=&UUy*a zGX6BRTD^t}GkR{pjOqOo%58QwCbw1f+g*#Jv)(f&@$f*hN2;lL)5Mf0&>g%@%N0Yi zzobg(UUsIb3V!P&;$EGzd1TU+-9A|={?*~#k7&VY{OJg?jg$xS*@Z@aNgA3^lEYos z3nN+Xe4(Q`((U45VYX$ffw4}M0pM14qSNo`i!-UGZ!>Dkp}M+I7dP@(bqB?5Ws-AV zpD9O_gtfGv*p94DghE1|Ix}-!sKj~IETM_WzERr7*0Nt9G?JAnsTRQarIHpl>SCMe z6RSW2R!X+Jsqn(VZK(Ar_7%eeLqs}(Oll}SnNo{svzmm-V_M>B(>dAcxe9aq5OF84NacEqp z(_GzVsifvHrGDdHj*re)^TadDn#;Cuk;M(%QM7s;o}|@x{AQ0rsUwueO&$-ftJh^A zXn1v$(WK4P$B!k+th+L=qq!Kgmvj71+xQISam*(p9}aCUi;YEG+fAK^`ouqFZz#7~ za+Cc@kp@UjXS#i~Ru}t@wNG8Z60^bq zzrC{aEx=)`7rsP|9ldUAcTBWBz=tg=!3RM!-ypHJ7yvr6v~DpvI8r3L(PWiyEYcyS zXni~puOBQJ$mp8^pIX<^ua_9%D5E2%m{T9_AMh9Th7kAtu>qr&!_&@ z5l7dhimyLPSNf%$7nO2kOYXzd6sgFY$D)O@zpYFqPk!h+^_r-84~Oz@foO-l&h~z^ zptEdKTcZ5!As5}6RB7{rwG%)pG|@in^z?A%`hHA3tipP)w{OFrxBndA6HMiL**Ov$ zoO*L}`|bjd5T&@W*UBg(+fhhLBMkL@mPE`17FO)!r?i#p*#p&-1TI#>wgtIUlevY{ zuBx$>-dl4GHmvljZ@okG@JVVt!$Ajl?`4I}TZqSRr^cJrd2!!z!Uu~YoleUiWN@`? z_#Rs+b0w3cq;TX@?uHL<9nZ|MJYKe%GGUo-<`|IvWYHbEjWi%pr!kcNp znkJUZErrmxAL|rq=s>IqICHPfKz61BSLvLR!zm2*Lx;epx|WREPGL!nhS8QU8idNF z2!N^t%-2#OiD%I^%eRp!suQJhU7D=LHpj_`KnaaSQH@c6A;ar&I-=5AmcHmDDHReD z4MQSxu^+Qpww_$c3pogY1{=U?na#4JR8yVillDl_x%G@*pJUD8jhSpU3LdCkRE)~e zW^-~#mi0#?|6wdjcJ8m>ysgfRq`~}Ha6z{QvJY`4Gn}vLTagd87)J}Wzddd(9lE(l z7C;+O7cB-s{UkO!P5@o&t6e`DiWoF1Zu9UQsJQr`6VcEv^>A7$mw0lS>Mw{H>R!*z z%SGwj{G9$%x*Pz;YUz*;4 zrx(i6O(dOx8jI$yTfKrMM>6QU0A|kEna^;^-94b4sjdN>@C;Lr8Sl1}GW)ge}>mS5@8qaThc0?x@@^wtN>Rby6YG8LWPc;1IJ z(l$69#G=8)WbgO|CNR4A8*d^pdXGzUO@Og)%frbY&F)D3q&z;WhJf3j00%%_ zT)@rIWO@ncv}T&{IvIDte)V;|rjZiX^prKsqcdo7@S%@$L+@n}%YI-8s>S6Pe8q(hqxRYYhaVRyIZAr&l?N7%ZxA2Fr z&F9&w?vX+dBN}~-DOw4E4Ji07eDCO^wyO3PkC<2;hN{G{1@-n6A`*MlA07=(i?gB# zZc#i%C4!hG)oD;@DYpt{fd)>S+$=dtvfU{ajKjsrEO%?b+HGw9=zc2xQVzEnO_|t@ zkP(L+L7WXY9$%yX-YSDA2H6?Rm4Rjoyr&b z)@JjsFOR8=@#`WSa+?~X!VchLLs@3iT>x`I#%5i?l99y}C}BYWpY-eVsZrJ+xe}71 z$kjQrk3COohvAVLZ^L}FF%}nbTp5|ILIsIXSSxe98l{Ln27_X;81?LAj5ptF=^DP> z+uWH-eb=0Knonm<1qH}!5`WU1*iLo}3l035pF+CM z9F)!NmCif5OPaDU-RR`B7ejU)C|8+Lk=_b)WuA5}^T8-ibh1SDEyH=iLjgw>Rj&;c%u(^ABqYS zN=+7$ZIDcz=+^`*$lPgTL^}`nifl{pwwlQVBNAgzuu)f4E!G$F)vZ1`I@WrE-g=p) zll=L~6(of%x+6*Ii0Z&8cXpH)o+RkR0G||a7O6Y!>8B~;LE}IiRY%@24s;ycuce)?`-%faNT^=fB@ z)m7(6NKCIk)iw0-1})jrG{mr{I^Y|r?_yp2@!T|f-Z=bGfE;GTx>kFoiK>M2AETDB z)br-lllRB2Yy4V-$aQZ-_#V=SvE@c(#*}1a%qB|6JYk!8StsnFZl5BV@tX_K{tPin z*GJ#o!)NCk#8&ise;h|cYm^U(8YH7AKF#J!);6Qi{kDRDdn(_f0SNl#N^GVI^vd*w z+Z*~`F?M2OfQsIFoJ^*4$8EjpFVZ=z+D~(&U1fF~18CU1$SCjirgJ$VK575(ca~m3 zwM(m%x;5&u#&Gd~<7Gn-!b!5MqXu3dB_-L(<9ozl|J^}rMwc;4l#oo%X?fl2TOaQ# zi517IqWoU1Opm8Z4dD`f9bbi{PGRb=U*V7uP$c`PxkCjH^xni|`L>V?Eq&%Jrz!Z7 zy2YpzoD+j$f}t5jUz=Finr`mpR?Q0Y+!ev)r!^o70 zey%9+Yh=*m<#O3Ya#3TqK)72zqdEB42yEMv$OO6cBem>E-w}63S zZ(1cv_GW!i#ov>Z!`|`K>r<@tL`k6(-a|ATZ>~?T+f_t}3+rZo?^Ennewm|ZTQ87* zJe>b|NB2uiOjK)rb=HdC z8j#whxv@BkcH^+rW#TgPLzEm>EXHqwd)Il6pVUPHH={^Uwu{uI>FtXAqw||$hJ30q zPX&o7G(vG8_DY?Ka^zfhV>@qoEp5; z$)KvR0*SDks+bPq{8I01{OpiqDTXCaVoqk#!I7_fCRSD_866BOU6aK4j>J-FrKOVO zLTPAHefJ1w#FeC6*QSr$N+Ms^r=+275@E%9pMnFOa5*jKoQaa&I&rzmv0IxXC2Q~u zlwq7`Cgc$-0b}F?AGa254C{W_J=EDoHThbflSTOoy%s|uiAF)iox7Q<5GoW@*x87! zX1A_n`6W4R{%fP8Q1An@6-u)?BI4e0D$;2|EA&P+@D>zH?0(xafGH z;_kdWA7f=-MnAM?O3@)J+67w8M&4T<0wF&M)U#5NyIITfgqS=j&A{lJUn|7emrk?R z@{FksM0ImsWEJ%<_WdBeKp|9XyeH`e?_az+@5`@`HoFf;(M0@bita;*AA9=(cNUZj zVhDC;Rp)L^`$O_Y(n{@bu@W)lR5Ti#O;-0dD@0)DYmZ#b98z6%wO4mz2hZ;9IVn;2 z&(F=`Nuz(@M-nPt&~Bm`=kC_Xa~~Ri_6Rr_W7(QB1V>`$HU62XNJN+`mmP)qa^NE= zjHjv&N$Ttr5i1pNl8A`0=+Ye?rK)IhL6(Qft?75b1=PwC4RN)?LYdC9dkm|YnM!l| zx0$a;JzJ|?1F?VvPZSlw*78i01Q;w^Cwga#T+Rg)bv(jo^HE$x^@`Q?Lp)FTBg@=M z@2_e>Cs7HCT3l{{r$RIrZ_lFGKJPm_`XE!AZPbg{%h5IdGL3&@6CX{AnC=hWJ~kHf z7UBEQ4-M627>y@mXS)>-L`}`~J!+G13mc$MdtU&+-sz^V_$hjkTr@IgNxgQE)@Jkc ziPVN!>K=a%gS{dvgrN9~z00&{uT<*8R{KDFLfYu?buyyi3=?;lkot4TouNuotsZK;qNX3=xcV zE$qHT%4J7yxS$nJee7~&9W9nJ4Tt|1pFMmKFZSk-W~Vn0QAD$o*cy#>W=_GYfF=DR zu@0c6(nS0y7%cqM(L|f88W2sxKyDS&62otXmCut@8Ry8=6y{-E9G@gmh^P{`Bmhj| zwXw#x#Y@LoVg|i^kz3zOOat$?&y?L9t|*w<-t%>;cr9LHfZKo6K%CciV@V-R4BLh! zNsElD{eAseBXuVqExA7D)Wk#RHB~!FuCfu ze4+S^Qp%=mqE+P6pJ(4TnD@r7m^&}224n;|r|8Yur*cgc%RP5;cCeAumt}-$B%Ndo z3|%w;&Q;)Lj*R129@+zFdb8J0jpU(Vxkw~Y=*@bHBo=DTJ|!gNe7`P>5}7b?IrZX{ zLHja<0$*GQO+H>D7JD9#RboR$MK@_7_2!5g`NU0g_J&M|&y#~Zbe|q0>#MfDTUqN; z`bp{GJRW<+=;DI3D`vFY-lKMI4>JDpz1>uruS_2b{nqX^(v(JvTF+)JC}<|Tx0wsm zXTPsrg`XeO&ajf^tYc`=!Vo|6DCv1L6UO-M#ilbORkLTqR}{Cy{O0$XydW>TfUFjs zdDTEBSN!wayh7&h;yd5*sJx0P=--7Qzk;XUy!FmhN>3{iPCH{KF&l4{M#9ck$bxCcbaO+N<3k*slbMmt47$ z(MV@gBkz57?ExJ{VoC<6{hdiDc+5QK)`2DFD$U!az97p`mui!RP^lQ(jgNh-Y$g(S z`6`il@7*5Kt;|uACspY7Jfd2D_@-?8)~w8AkLc>IW==UI=2XNCC^W+1kiNsN*=qc8 z-!pJ;#8w;dUGz~@p+&Id;=M36^Z?+^&%35yBN>P6iEdq^9l1n4X0a`Z-}P2WIIhn`dHGe*!XEg3O8pUu| zDbt{z=Qm9Je)&&st!nVejXIio>!LAqJ!Pz{%br*Yz_@#R|DNjTj5xIEbgv|w z)&6Q9*(gWAU1|wshm1zA?ZUq06Xsg7sx+}~x>^Tb%AbZ3sfP>Kc%a73Z>&<9*=UWh z(sg8;4t6D!XVA0(ZCf24|(fVM2VyrR7|H-6AITH8X6QuiB@Qcw)CeM zIXg>L=(cf7mXE}?Ik}9FXztxUB}7@04mzhfcdz6Q4Z-_zHvw0ss^?=T`^k#4(@k6& zu7sn`8v#DME{q9(ia>Zo;724FjjVzrHS;;^$|_AQ?jj@QSN6={B&B+J%l&aX)A?k% zuXg2Ei2-4S&4P=S*1aFu5&r2+}Uq5hqfdOgy?JId4hZTp5E+-5WEWk!b{ zUmSSb^HK({5s$=>oVjqGyR*w^BOHbs8f)^SHaJKaA&2(GOVHRmmssg8JuHoYO?*cn zoi(xp%bTUaP?^zK=sTrx#Uwa!d9mmNvNqn!!(@xdj-i>u*$5g|73_EjHGJmpM&jhc z!2DTQ`%2>^sTbj2YJUZLT2*}pcA~i!U4TPOuyqU4sL_8KDFnZ{p+D~HanJPU7-28(w0DU| zh#zEqStD$THsh(v56GbZ=Tk3VNCRK)lnMO6J-4pB4xul*CUy?If16`}(c3#%+R34J z)E^4|x6F_?7{tL`n9hf=eM+6C(4r@8W+S*xel$ zf#9^EffrvzZv?e7F8^;<`0w*ER>yu3EwVeTPZ!3fJ~vteAz}6Kh44S;u=oHqEi&(~2l37_ zV-#}eG}N`XJ6fVI(7AyTAMK$RT}Y=LnVDYVz4BTfml4i6P>jBCDR|gRHBU_ z9Ep>sP*6=t#6QWhS!^WtIvfk(S$lg=?mIjF;9x1>fF{MPTZEt$7N#Kb4r-@;)-|BE-WU_C@j3&Vl`ZJUOre`2uW zps*18H3|=r@ztW_YNeWJV0mMLFCo(2x8UNvo1O%Onw|vT~?Zj zAmyW@KzIhJR-EJ8W_Mfu4Fc|*;1a)lr_i?n;^$=qVefHo={v)`ZS0t7kbJ3*KM1t& ztajJJ#2i0#X+azykdtd}GVQ){}Kyhm*xXBzJ3`wD+(TnMB;_l^+LnStX54Eur7j!=`AA((BD& z8=n*4{taYpF|SWw$*H!m<>5f|B8YnG@Bcio80UZzKD;dmn?9NFMY#hmkL7ZI&@sGL zPG3l(h6H8&Wlaohgb;(I(!iaB*gX#sqOhFOJ(YiQ<=)REUjhUi1ecOfMuEz=GyUE~ zD>?!~Y9j#G$sg03yx9LVMfK))T?Can22KH*Ps7}3H;)4NamLWOJ+KY6$D=M(Vs$`- zV6!6fgdKqtT7NHQF8ng*YxP19!TW!*3&M_WXcJ*UPeIJkg61`#I|u8IW{#DNU2caI z)WI|lLp7mEoikGeuU91SQ;Cmt{k-91a7_j3Y(Sg za_gvtpZ4NV2TzvPgEg57FBUFMJ!&bZCCDSbxVv7IBt3s??I+ADp+++g!|&U7X=`cA znVE=Vd%8X0(s9uLXXCF|cx-5iq>!Q6-y^8hoCIlz|3Yczb#UMD zrciv%Q+4mVHf!k$bu>Z06Y_MtzuB^EH~tGgKc|<{*|6i%t(AkzsWUNLgHpx1zY=S3H`(3fvf@tb>nx?P1Dhm9$o?IIS>tzm5B;HxtI_KvY zr1u^^T|SORpKv}F#Es7s4}Yg5wsEy0lt=HzY~b5yW1Ap?g2+e;i6F#S*h3IM8vO_j zRd{uL73^<3g7lF2r#BasH_zz-ZuqrXz4~}QM_&3n)uT$zaJuRm`0i1#9 z2Ms}sD3?ONe(alE^RclyCi{m$GLQQ?IAL417>8g&JlUX(r>$a1^|95@ym+S%-2>s% zH2SxSqy)|QxyXAV3>_gMSNeEV@Y(c65^Etzg5Bu-LuhIW*&w!<7u{OegMIaQ7%Be+ z6YvnCHc^^IKCjos^vFIbvmx8ntV<6SQWm~vJ>L2{7XCVZBp6V;?Zu+?K{`J`2T`UI zd()Qk<*Td5u=4h?pZ{Lx74+0=73xq8f$Ng~ppXZ&fiQc-fhpE>r~ylr4omZK{a4NW zCqj-h+$2vLQ(|^KoL?dV>n?66^EN28Z4m;-_QBy8B`KHKN!E9dEW_Uv@2(fL2XMg8 zFVDC2T9`&Iz5Kmvoe+QwXl?f(Cfwa))Zer!q>hwyTiY-mlyP*(*`~wgo)H6Hr#^KH z)$Z&N7LBd$Z)gr;)6;8nPn;=Dlo#A?nVzjnrEnhw;;@sGK|MLk}Krp6Q2jOyJ2q z^|Hscp=}8jsWUFm38&X=b zB5{6qw?&QpINjo{>&UM+Cbsd~kOWa9w!_6!NId22F~oGHaOGzhr z-+45^R&0kV7l>~(ve<=K;T(jJxu=_jII4}2LtJQxe6?0*hx?($?;713fe`IlxI|zgZshJ7(^fu@19Uxha$|B&Md#Bv$y2?XhOFeE?XZq@^oaYDp~rg ze~C1=vRUKyG+RhO3{10e9YQp7n~L9F=D095CfS~9O8A3ErXfnmd^r&-l;A5!Z7dM5 zRgzi7XPFk&Gp`iZ=&(FrB@7Qv__aLQC008*JO?i}nO6S#L3>?2Q@16BQU7A+Es&Fx zK1fV$Ck>6@#tQq0eyOR~?PJgb1@C|z`&6ZY7G472N7Ic*Y@h#uOoPP|^Rw;9NCK6q z)EhKlZR*9YWJIi-qn00-RJA$Ok9!6uV<4kB6glV8bmu6w5O>;LAmE8KLVOq-@`*nb zQ-EEl+773AKLk;dN`{SC;Y1+Bg&thXlMb=w9%Ibax-ydft3`<;#|W zCE*=T<*ruOtN)w@kRx<)eR%E&hdZ2ix8gfi87L=*DQ1{$jeq}pu<5C^+m#oA2s09B zRyT_G#X}SQk||cju>0g9+!7R0M!inwh%1KhlfoSj&p7)t1unq(^8p}(5#seGGCUV* z4d+rTc)^!hopXw49<}>$E^Ok|!kzg{qj+hXLEOQg%>$8*3)twAH3pa;Z9eDDI60(5 zjG#>x@4`+PNrvCnC532Gz7wM!&?hJzUdb_~dpubAm|*r)iG-p9xTB67&=Hl$oZplP z9KZs6^pSKpi1i-q_3lAT_T9wsl?Vt!BUyZ}-+$nyT0=YD$gwN)U4Yf?iL#~{{X!VH zS07B%RC5vdaP?kp^TJ8?wHzw3={dP=Nfm?NJmxx|?9(m3&Tsy% zhdYhAK+<{jTl;?IGDzZ;E(8~2DvlPYU|$8Jc(LD-&~!I6{;9Tf=NYxaUZtO8qJ-q9 zoZrOg8lXty4EH|9F*1XU?urP*8A zIn+!F;@Yy3{ki5aqffB{Jb&8T^S8Q4&>+8vnmCUgaUm`pIZ^xYwUi?EqxIMT}7y(+oO(vrjFCOdJ z-xf@1eS9e6WhCu+uiPf4U{!Fp`PwVXZci_Tqy0DWvDICH7?!LB(P6h5x6+anCOx0< z%xK=RCKV9nXc;7P>(E_gC797-ck0#Dx*u_ktWJC)mu;PMUdYK2(SK!`MQq7mR%O;? zvH84dqYRkQTsPCg&M@B;m?-j~&f0{N1De=bxxQqDRXqGAcnA{bNmGVp1A}Z*_zluu zam#ZwZJe7F^R;LqA8W2?HVt0!-@`Q2StY`Q=?6wgJ~W`P z3YWwV$+hjnPEhgBcQoZ=%&}xN(rdvII;}JIe3)=tREygT*!bz`ehD2nH3Xm#5>-Bn z1%|75*Sz3J_ay`yWqTPR-?m_?!MX`WbZ-~0ogtWXBNMNDc)z2q{q2-AFmg)(iLVSZ z=5%`ikamOr$vt1NSV)s`}w5=^>88?)tks)aMkESW{%qS32d?$oPXuF zHv6PfJmR?2l-Eo);ak}*UHSv zAD;NQrRba|9ez&g%V}0VxRlXf$?_atp)Huf*+5!vlKdX&RWS+z z_08dC)E2(jf!FeS<2t{>4-Tz2Kv!be8N#rI9sPi4+EVPhI?w#7m`E`--Bf)&j zR`r)va>JuS$;`CQwRuBX~g@m7UVhynlMA*Rco z@#Dphz3=WN%4o0RNkpWrH#isI^mn&~OgR`y%6j4l5;7(1t%oP+PL9JTc0MgRJ?>=t zmZYjO8~3JzVb0BVVOA!5)N}9yxey7(;Z;< znnL3fXe1V|@wk`CQf!06`5;=EN^z!?Q zui-*K5s}kB|EFMSB0ylV_2k(iw$ARC-Qk%*u$0{r2h^Vy4Fb5 zp^iheUok;JpHsXU_gEcg%L|b4W(n{```KewS=tYJViUFeh`aY#?Uoisdn2J$~R`!3!n2@M7owHpNPs=mf2LUffYls zUs{@u&3mjh$1ys7=FLw@CAD+hL83aiu0oe;>rSEi^pFIK3V5iN&^Imr)o>on)k$wQ zvXY^@v^3P7KwliH_^>r)&@-^LXR04{pM5#$>Vl$ph}N5iXt)huY<4vFo!vKT35GcP zY{E*PVqEK`LS2HsutXSoQ2ADIvK6$Geb!<`LbJ0abv^&=aHvOOIyeETqR(&?R=U{} zo|`A)kOh>%3Rrrh!^LfcovFvI`*C<=U(hcj#qQ%HkelS#HUS7ODhdZ0fQa1`&$fhX zG;zKTbZ_Ox+O0wlw1)P?FSi02y9(n-i!m`L+&B*V7ZRAh1V19KvT|M74`FBa46SVZ zXjP8bdDIsm$)&^grhf_HZH}-Hu_r1g*8)x4bo)EwPVPp|t9oDG`&eqS+VO5L=0Ptl zj=7cE4E8X`h0yG0{}y^GKimHx=fd6^Gg77U(<==)U5dF64+X?Dcxn?`Q%$9|6|gIM z>9@M0A>B|fq5U|4GHS;`E`7sc-ayzw{f_N*5)SU`+HcnCI<7rQV{Z8roFOlX(EagE z-fmTxNqgV*-l@Cu`rOWAP(_a4;IwV&<<|G_or?T zE@U0!*QoE@=ws2&g7_rAD=DRpR-^4(By zz^%K9)ZcEofimIsFQp(O3EyC7rB7B;z6>?H1ZbnY#61Rng5P^3p$1Q(kWLJ>j3v!P z3T|yff2K8o!>CY~a}pyBh>Fdy1E+ylP3(N&UzFr8MQ<$pt zp$n9siIYTTHL5?2M@H^Aqc1GTGGB79IPX&^Xf96{IA$FoaJ!Cq)z(nS<2h|*BhGp7 ze@pe%aLmfFO_?^u(SN62R7dmeZYDTglf9*ZI+}%pz`Wg^`TD6b!zSGEB>U`-jfTws zp-2fJW7?`3xuAP%%Ib0t<=EIUAgrGJ{KsyrfJUhi1AH#wBha@#w$Wh8F@+v+a+4i%FZ*HOV% zxw*m`3X1uIx95;DmOT?wE7&7%x`M;tm;d=fz6A)12yt@iJjiq_NhsxA2)O_Ai_WdhowD_ypEcdfS`&7Jd~ZZT2H*POB~ zEA(|JVl&7!{yXHtm+g?c&^_{v9~a%3Tl~2|5qmPU(2$(J_`kD54Qm9xQy%rt+h}L|xvD=~Bz)to#HhC#2Xo}gMZ=T^LK_SWX1zl3jP&C#0*4-2mKyi)6Srx0DH-j9_!Dg?=C_nqK08z<{E zW}=**6`ud7UfKimcFB*(>Y)#Y>zye}wg0j}hDgi&LlSc2euIzWuwN2G^+M)H-#lqG zDn`eJo)Ik`H|q}wX-EMbhQS+41bITzH^J`-=z@Z3YeH}4r-!+cDSvzrGC&vy1}`2wYZR03;uRD7Wdt4@pBVX_xate zc@~55I}A55tZR`2aiFDa1E@-?JtMY-sKmyXf|P`=c>8CahEV@hRVk$QXyBqiHoW&v zG0=Q^c4=k$b9jFoVKeQ;o`L>Q96nvxB3MNhKldD6$GB;_*Sq8O>plE~@!8D>vJA>e zBvbIx9n)XWOKq#`;^!0*PqH%-|7~;dZfT~%%PDAdH)k5Vyy(JPBQM6FR+nGsD|S#v zWwGL65fgFKH2uHoBS9@qHZ*i{1GKK+*ikUuKl;U>xJk<82Lq@6&Jq*;+X#5E>njT7 ztha#8Dsai*X}%>aY)))@HOQcM68sC^I3}{=4KVgKCr17XHz%hI9z`s;)+l0;EuS8e zYVAe8kU#vAMU+YN`{zW}A|L}918W?pxbgZ0#W8&yrC@3vb?X}zx$Vn``a)v@ZW@AC zJrfT4EZ+jlajVJoN~ziQ#d|2<>X&>%5+eA$06lK)9K~IuraD=pJUWIfm9( zN6VIUub~)`mF2b@V-KjaRt0AR8{JCmhP{JOD-ON$+#|ls#2n9ye(&!y6naNb9Xk^( z29qoDrRM{iqo<>M8i@7<7W1?T!p@s={&;Rlb-bCMgz`vPR@cb?NzbPWi?>g{&km(HgFlgE7PR7Had zw95mOQ)Uf5pOEw1dRgfjZt^Sw z;QrGtOl2ck_ylU+(b}qX+IF)|^Y4Y>pb7!blv9C37}tMVMl-`C-G|wmbmC@j<(l%W=k*7w$zwcXvJlizyE|S2{~h(N7x$0Q>`tLV&x$HA-js#sf@; z>~~1BcKx@TltB1TZwR#a(EAXk9n#44*oeEbto>~yI@=!KZacD9CDm4L196ua`s)@9 z;zbvc{B2We!a1spD|B*7o%eRqv1Wo{31xF{)7iN8Of$cSB(?iL%3s)W93>u)$po9 zG~ed0W2}XYxP!fHc4Kfj@GF0%nIhtMvsmFCI6E zfNX|LVeX4B_OtwJ!LH7i*^Ui@s5DI9bM`p+SkwKU@l(eeq#x`px&>QXPmV7Vh1`v% z!oBu(Q8(m$^>}FV?Z){Ar2Q{;=B$QE+Nzyp(U+}%T^)y7mJd)eg)?ZKSxkVr26gx( zOhBVXTf8|Ju>R&)4zO#EDhW;a-fD2Hr}*DEJ7@Lwx!enBy}JWB{8z?`u*k8)FFQkn z?UmQ^vG8wfbfj1icxrhg1sIjfvO>GHie1<=S5=h4!}vl`qfus|)>1Y3Vx(<*PyR-tp@j7|RGcCY8$ zdVf}qF_y1JiC(Hv8EZ8x+7?3aV4yzU=+JiYxqd!ObDyEl<3z!hUvw!rT<7Y=vlVCJlPchaZ;QRNE% zgZ3JtfC;;{ig_1IE1{!$jyd|Hnj7h%+}9vclS{9tE;#;sL7CRg$*<_-NR!mAC1=p4ab=(b-aB`t_izq)9FA6Lb4sc;NL6Dp(uNGr}J(k298AWY;45 z%4I8LkpfANuW*hIVh?Exeoa2Iha1*T)$n9$OaARQ46|2y#V4d>KnRTiNZOoztiF*3 z@_F|!K3Ks5h=o!HNdR;6N{f`4a|c%NC!R()4I!F=h=WMf~P5r~AN} zniWMKrYhOW7Va^62Th@5L4f4xj3e!!5a#8$@KW($zv0oVQ$~IP>h5)m`8mekk<)2h zEQ7}s5u!RBkY6^Z{wK>irpFI*j(CW^)WBnA0EGx&CL_L1yRHt$^AyEQgK0*~SAB?u zM*lW`8)WbN^6h-wv&j2B31}LB;x}&uAXoxiV4&V9?|B1fV|jf<1ei1HBQcpHE?n{8 zkCTzPd_1(D>@=pm>Ex>G0R0C$-fw;gp`XYKnn5DMDU^ZZr^f%>#AI|49eF2l74N37`IzL?{dq+Z*E{ zGFw9w=7Sm>5d)IUR!%3?z-Ro9SzmO`!_ISn<$SAjTZnT!2>}V}(b%CmW=e0^Z&!cz zVuUbOAJUrkFGS{Sh0LrQexdY~p!vKE--m4EwHBn{)v_5~N7mI16N~{^3BczAtyi{M zd?t9bVc?(!SH|fz!0^`Er>&s@;r|s9n#@B-bo?mDLIizR1kfK`jS8&4U2lQ;Zh?`0 z0t9VH^fc%6urE<2;P_vsQTPHWd^(R7#VTX5``A-kjEoH{_(1>}z~A8vU}UBSYx!j! zJu{G2f`d^dx*f2Q@R)p&&7R5&yOqrPG}0`dot15&+R8S-+H0&^$q;6~7$@}65K{qU zP(+N5Eeqab7xt9CjR&XQcqaUGdB+$ViUoi4mgt$<1qC84`M~GHo)61B4qKQFDziU2 zb@r;y3Rt029suOc%^Jug{~LKyrNOYg(0VaDp--Dc8|;y+LTUUMR&dZ)zG?XrR=^xA z@(_oEj=&cf0sBywu+rlQfHO2q0%URTLd2s&pEgYZmNbo(4o^c>NV({W5t?5cRv;PT zc8zRgwG{`jR_p-#C`n*Ls43i|`mh)KJdDimnm$>RbM54Qeatbz{{B_I5penzbyW7X zKGa1_a?yZgrTfJ$I51!OW`Gqk+ItUl>?*ELLqhVl8a zpirgP>h9DZ9Awv?sdn*SW@7Jme|wYqMaSto^) zw8FpMg!&G*!T^Ghj^|*1;@A0sSf+luJL}`48S>MkpI@9prY%_i0t#Mddat_upg<0Y zPV%L>AgQ62bIS_7%1#Jrajh`=UB>DXgJDKCqzt2R(nG5fzyIHqoQ?jglcoigVrgGw zA+Ppg>G&6;Oqi$YpTF}$H(_;ehOYFD+a99RVvb{!V7FSiXH798mTb?Lq5Az$6u85n53Z2IebIo}zZeo63z@ztzO@dz;(*pk=hBndT7#P@WK zIz<(#Ng$^x7ez3eh_$L|fgU&4z@UIq9m$EozV$G)c5pspUj_3AWvI#e2qAv478geg z`bwClrHBb+=s73k>0}bZ zz@(Bdp|$if^geu?GP0H=l$ZBE4}>Oo4+j-Pa#|Ge;0X_iVfY&BDy->+o-X!{rH0g7MR z;^EgC-9!z~ijZ_I$x~&dWi$Ht@GHaHy(VrPL%p<+b`J`5)dv`lNGxJgDZ)sD&(bHF z$lTJt;60)Y^j%;|Cy96^01$)1?*#PBizhmj)K9YJ`G9up%;Ur?bh;6e{p!hYnzujWqN2@GSRg4IZ@o6d_cVseI3P0jHFy2um&?8+ISZyffx z*9=oS7uREy5#)qfR#2;Xr9-;p-CTd^{hUOxk1!)I;z`r!yM3d^_o}N7{K-gV3VlLk z(C3N(G-n~q%3ca;=c3b+QU>?nLFi)&%@)r0n^AN7vDOQ`UkUNQ^Pb8(3(X3XoMDxm z+fS$PT3mJn#QWbqegfFK6jHCO%{I+aHE&N@?V6Zmo5{GP&Y=xJ<+k)2=4t;0eg4x( z1_neL!X5ri(L)2)kF${6x7=SL(=r=O(sm@S1)tPu8H=lG-e^luhp*HOcABR@CWQymcfUZB;OlF838kN z0>h;_rDh!bg$Md3>C!uxZE%D~%kXDnB>&Yh>agqL5)Se#qAtXJ;Lpiw0Q&FbdUkDk zo6S;nanle}vTpVhxjfb5j5H*`II5bTlZ1H*avp>gXvcpVB)${PP6&em_L%tq>UGsI zq2=INy=LnJg{PuRTJ@>8nPxfnt^53&*YJN3d~b(E<}sR%mdn)ypeq=q;;c?}UU7*vhB@_M^G8G&>P`mKOJeR2 z9~jFd2Ta1ffo5TRe9%yY`B+Or-bG_y^N)VcD|_2n__phJNJ}ylT_xj59}7$hdpdv# zd<9AVAQ^IejJ%@h>K=T$q1fMv?5Z0(!qV3(kNBrwrTjw)H-kfcQp~hYPrNTU%r{^=tW@L|*J0n0Ou1-;Kfi(r7wn(O9+@$@?&0%&Xbw4cPBsCmFNEe^&} za|DZZaESbn64-QHR93yC_;a41#Gb;H)xHiTa3k>)7UYX3yA$@^2HWLeMZKjnT?*Os z&nlVAaehw7VDh2j-6t2pr>IU2KSE?vLWxN>TMi~_H7Q1H+4{kT@3@S0IK=;idSt2I z(?@MdtQ=(59F0V5JK1@B$#;?eb!Q%bnyrL$Y9gFR(rIV4zB)m_O>1x6rn`T>2nB#i!&2qM5jsf z>*62~wp`-TD>8xj1FkqwNKLvmf}%0HXC!a<@=u*~f?hytDPI5!x~ya6?&uiw+$5{E z-|UL8z;*Uig!obA3ljLdOP0ww@Xn9}4B)amdWL7eY^@W60BfXQ@`PN9=k51+Xf-K=@FE{1Ta|bDa48Yv0`n@A`*7aV-EuLw5L+ zLs4>&h*K6!cbBLe_$;8IZ}*WCLLQmLl~cmVK;4Dgx1$zG%`Ls1x?Wl{;k1x(;x)Nwh>I!E>+IGZK;Mi+!lw68^aKyuoC||-9=|9Z_vPCSUx_qut_on|n zesmOR@Y7JzIiS@`$VgR|Ds32ei>yZy0jtn$c4IFQvj~8h0BYVY)JwJWN3M{ez`NH47 zJ}UeF{`OzG^nd-o{J8pSI2H+J2z(mmR+>3~t0)+BYul~NtC!OsY4Bjr030{Ux1Rhc0fkrp{QYr2`tC4j z2S-SIYy;<-{(nOh1Bf{!dN#~X0wRxJ>TrV}T3v0KB&PfCw*gZh1z5X#ddzZ$S^`*)xYl}pqU|%C3W}32 zz@`;D$5C<*`HW}$;I$pzjKxYQ^O%(Y63{Q?Rc5N<&^plo9?gsVjhA0TOb&fsQ&_#oh+Mqq8l&!K!81^h7 z==pFn3H~Top*g46!XW!e%tgYkck;(?VW&vmhd*kj<@Q`E{hlrMgY-i6<_%-@r zNlQ3DG^ZR?bK62%esyJ9BNwwq55(8=!C>O4Dm$5S@<8-wxhB|iPVPmp8dIbE%tl|u zKHL{i;!|xgw%&?Akm;0BMfC4xo3uDnWQA#cG?R$hPSy*0@Ys{9q@3;TA@bJX|Hx*A zPYKU6Lc?X}o)DAZ=zKWf0lT9UaiJk$&B@A$>5C1}od}J#JoM8GLrehqW;*0lfHp{@s;^S5G!J)nc<=FpZ+J2e?6?zx8NgFo-_9Uo|) zFNuSnv)&>?%%%nfv9Gp{*kf44_zHn!kje9<%Go=j57xg}OKXz|6T`u+gI?{&CyZ<( z_A{E)J0rcGpZIt%IbF}wd$EWMCj359MbzF9e9Yq(+xdFdb|d#TWe-Uq#*X3M(<(8e zSs|&rrOaBQyB#Q&+O{MX1TZ$3Uag+oe=w=$Ii;SMMZ<^Y z0f0qN1#WMtQzedIu`5q?mCF08tTL*DTH1$^Kq3z6Ps-Guo_^)c1!Yub2FG3r;6?Y% zMgT}{WR&b2Qo=@0YR7@GE(ol zaxv9e@Q=cm4j8b-iu3Cb^{)ExjEHJh7sqeG|Si?&SDUiodPVggb>VPnS(DHqJ~GxbrD-u7dD*DsKQ9F86c|rQrxxXqkOlGX1zPN zSub$1?Vo@7Aw|#_@*^=}B_TR>EsJ$W!>HoBDfgG9NY!8%Gz!1G(NTti$ts)- z^GnrUtKoWs2O4#HGTpxu>*fWOij6H6tjujG@9LyL=D}*#Ug0U~)b`XDxS)q`bsSbd zI#Fs#ciVQ#9?i)a>V|^LMA0=+P^_lFxYZd>1smWXHEU{>JwN@wM8dub!hiKrqxyhZ8 zx6S9j;pXzBxC?CexjkL1&yZweO5Q27j)vUVn~I*@9enEJyRUAsx?;=o7*^TnfABQj zsYE*9JKePFLOR~s!GIQWE`7AMJ3{UXCVm?uVkN`$w^6HD(V6JXRKq0uTr zvRH<7JN^psXnz3B=Jct4c@>^ue-#y&g;xS0#wB(66&aAEQWjO?;6mkx#dFKI``3J)`Xf0C zn*&jVR*A=;=OFL`%7cfS%((k`tkdZ(&+1l5VW*r5Yt%jQJoicQ1;Z{|lJSxfas8=# zDYrG@?x|NsKJhFr*2x`9Auqm(_rALrA9ZH#fH#)`A*cWzE)_U9Xzz@AvF5kUsu%L+ z3lJl!ztNxd#b}-E{Koa7#q8{P$aho&#oi4$K5x(gpPtUDfr>*hW!A+p%M3$~hhF5V z1mD@z4%u$F3ZLF|x*%uuNb{)2!mX=_7Np8OV(_Q+wq-b`vW_GII%4suKyzMn?9C(X ztIpMXTsJ-`GVwQI)pU5SoWNjEG zCyz(?(QUjQFb0}~MovOdq6T(OWDR5H$zIXccP?z9FWOJ6*!$3QOZ38#5kPS~mO#=_gOe7x{5mR2I z*Ky0pybv5NyFSP#x$jLm}TJCC_>+o=X4zl;^TDOlgE7d zvPg~EH9D=0dCPsK|D6~oSKAGJ=4Lgp-2l{edJbjU z8(_E9o&7;@(i;i!-DUjxIq#nE_o6gqcb~rRC*^@JGs6hQFd!!06HINI6{E!#8by9a zSJhTi^N|kw-&!o{ID)h%+m&YW=C`wRs8i=o+#$<6Hj8G{Le2w40kFU+k(lmV8P3nk z82+%Tnw(IK{KXb=TX|EJPR>X-d&XVqskoIN9Xr9uGQy6#E#Z~>D6j5#sp)!E)R4X$ zjl%8Tj++bdt7t}-^2WJUia6EkW}csv@60t>gtvg78=HxwAOBbnQFwzBSJOm`goI9G zhBaE(q1*O3OFQgTXXrRFyf1eZB?!3L`2DvIFkjY;UT>eD{%;L?doV(J|6u3~SKZ8G zlmbhl(GP4)6fGkPDe!HfRPX5W&(_2fIf)A@+qavLbb1z-n;B2~Ng4L=6IiZkG4 z$4$QcQ8nvB{)>pAt+mFpVC0Yt!gA}o=hbu1*|vy1ro1gvtw#eZ@ulnXek%x9Gum!K zK4hyd?O2ff_0HZr5~5Y_D1!gXa%o}Zot%f35j;JAZ()g$Aa&2qduFLXv^PrWZnNCj z3>Rl$%(!_~B zszoOmHxQSdq^}Hc_sJnMwvSLy-=qr6TVNc-l$Uq|C+s*b=Y79ko6&j-o(}kV-C0D= zqW((SPh=%4NxAK|$@SE>=9Z7UMCbww4Q*k~zHGsrH0f6R7+f2XPeIrGCjPg_7h0{$ zZOKkdF;6qMZ>QgFUtO}hmjM;6m@|UcElIk$KjnIrWBNqHC?Zkpc6e6B2biNjUN1DO zp@VXM(}CvHne67i>g6K%OYX*rs0jFy2^^cneTWhrpAE}k7J9SAXNADqusg_Q{oZrX zuXp~0a*C~-}`re1ZFM5vKim9i~*%J(j z7V-?QfGC*h0?cVYw-9^T0^cX$=dI>#WR zB*(LF2WmnC$Tibs_Ft{sow?{3*d|>bKBSdwpw#bB*O)5{4c4l3TU2FLATDOD&Kk|A zW~q4e(A3Q)+qY(BFc;D*+Ik0aY%xxRqeN`_$tY!p#NmCekvWbW+;A!*N@IJNI^O`- z6)>nwUQ6x1Bd>!7o@^EPzuS#>b!{4|&OYPWu&3!Q%4lz$-3d-H%eZy9JkGu2;nQvW zlxH97h6rqT`J zh)|Yw(~!Ny;QD}3Oob(N4!3q|QR##sm^RVFMiGysBl!6Aa{PBK0-w;8@l&w@sBcaz^s%Zda^_Tt|&AFjiP z-e$z2Tas@#f2i%PYjpXl!sG!GHAdjL=!!AX#0qgIUE42f(elbfM?@_vjHdC|jcbXc z*j-!pF%(0ur=yB#$Dl^ii&|#Da4Ie)K;xNoigR*0ANNQOuB!fFy7+bc?vvQX{enhW zVC9XH?n&xJI{7n_GSBh1K5$o+Z~Oz6t+~@~=kLllT*`>>$2^`Pwmwl3_WOx>Vk;`< zR`G}z+Jymi-tpUWAV6F8M zoy6c1KZT#OCzyKK?y=RI8PhXMsp~RNW!T14^>OsNd7X)+XlSGtslF^GAn~Z_#W`4r zt9eg~k3)EdfyiBIrp+4b27_I;hdok1u81Y$9CQ1s2qgC6lXgKPCIgy5Oy8)=x-H?w z0qez(<1Y8*#m{@8a4GLjM;!Rzhum9;v6aRfB5LtpO?vIkh5!J$z3}crX2#-bBvMOs zu}zg=!FdT1mgY>%$00bA664l{LNr~?)xks+Ukb;~dl(f^G8Iy>Z&htR&8lmsY$KR4 zP#EV&JRD*A(kvdEr|@0&L$fqP+{njg*hXATkk&589rLCbr5F3l<79f}Q;rF#s-Ohx zxw>1q1Oi=<;%u-Dbf8PB)XT31s3#Dox9BLYGV5=7sM|{a$O>rWfYO{P@M7- z3aGpqS?eA4BQ>U@h2bjm%t~{gVn1fM8fIV!m^_b5jF!z;tx$W$bz8wBbh%5xOVVS~aEoDJS7eDv&@huUD!*YP$RmGMlF(fBl-h zzqVke}*pL2Ard_lURvY26=9FpyAY0 z*;XcR_IE5!oG(d_Bq~!q2tI^cJ5% z7D8NuwyC`A>U0jy3Q-&t&K#+Pkh&WUdS&TX@6DB{7;LGHBGVw&k|T`t6Rtn=HjTGRkv4rmP#GMzotX*RzXSb zk!#s67j0hgj32DQ-<1=3{^Yy$NKXfNtC=W<{My|$>Nhn@IBw;2Li!qR5yg047aqdSW~@Z? z_=4R79xS<51${es76Va|y%}1g*6+*2A`9hsE^zXBvU};MSy5|I5v>)5s|*uXNW(^S zW6Xo??0VzC8iwdPkOvcjwKAQ`>G#}OZO8lH)zdAgB2AZDCqqOi$MuK-&&DKRS#OfnUeR6_ zDm$Sn6(eQSR^Qx+>|DEiEx|$5%==!Y&=J#~(Bu&gBlKfH?|#%vJ4GLPI*nQl`R!Ws z)X%<70W&fB6cbv9yeHd5Rr^ksZENh!*Tn-Dzpl7YN$yhSiaY)Fz!#?b31kqirsess zh3@EGzjlwCH496w^r&ox^y-gOcsHx0WEMApyCW9D6m}E5 zhaWnks+|W7@u?bW_OyTb*w^Mc`Q6sD1}>1utOhZWYgv*m+2vp6+W_;zI%*n940a}W_Aex zIBbzFJVkd4l*yfqUQNxa4&u(&UfA_lzq9G#f@UA(a4;Q5V3pFm$2~~088P~~5J6ix z3e6glmxrw?jr>N9%cRr)RRsPT`h4FRGo^ z$TX3AwLJ%#x-%n3aOx{nu`^;Z!|BvzHvl!=rLULIIc1uB)NF4{WA2kWzAa1TBS=fb z!)Bz~UM@9orcaRU(Q5p(95l#N&Ncq}b&0V1^~Kg=9YnU^tL98hr6ar6fL$EL(f7vL z(Z$<>>|3LojtCMt&I;bDCZ+NP1kKv8J}U44+8}#Pv6@VJa;^XtguUV7SM+_r@!6*G zBCV^bYL5ULWM{Ox$Bi$SG&T;WsD>j!5KPQBmMJ|i#pZdQ#s zy@oz|b(=##$X$5yjHo5=DVi?zn-N$VhU5b!aXy__4^v7P)|@Rzd};L%US>(^gSGor zKjYSR{jVFp%f0x@?iOqzeMjW(*US-jCeu!K(s8#T(vm63x7~N^N_lrf)D>07kolA{ zt~k5Gl$!Y@wN5Z=TJIY^zuDT8a&+WeyJX3Lg-F*f53qkcaLb8G#uTQ}S8+(&(5P;z zz-mv%QTf$?l|m`CqWrs&q-k2+YuZkhZ2@!;k@<{{xMF;pqh2r-O|iV{C<*6+l*p}6 zHp+@SIy;q6}l_`$|MKTt2re-<8?C5~a8d705!1 zQ_DUHBftT^3F`8G;L3A<(CvA>Wec-^<)`31^f1YKH5;Q)lRuicI1VPz3a;1^Ckk|zBsIsqKwIrmFF{8V?io4cS z=j{KU(ZkdvZkDsT@l&h-OwwqZY2&8h>?%5O^`0Xu7#)KRH6P2>H>&>m3t?lqq}mx> zeu}uj$?@lhzdCyC)q{V^pJbZ73@+-D*D0T{U`E#~*)n~X&qQN-5g|pX5ue59#yDxc zB$VOA>VDOHOr{OX8-JyixH5ug-s1W8A!MoObYu?>XP5x{*Us~e9U|?o{ zBW0BNyo`kYZmh2mu{=-h&E7NKvZPwlyX*P~W+RA3C*#Ha;cCM@&qhh@<$`uGb=V?* zbFtHgEQe;OX@gj9Nz0GhM2bSoZ4@dk74tI=yrSHskAmVqtX37!)$qwE z73zo-^$TovtNFcri#C{=b`0ZZ9NTP={6~g@FOJI$tYN?00-FM$IuUCGa(3^2RVGKRMJwl z_j=9O_@z#8^_IW5QVF7qO+wYAaMFsnx&jlu=Ns0ayn~j|`1Bxe{qn`?nF&8ox%nJH zYC0_i|E4rdMJ;;k5OcI3GnuMXF7JUuIQ>5B<@yb%f}c2<4d9qd9VPcKJ|%mK4#Hts>lWji z1C2H?wsT$|6XD`(>uVIPR~2<3&S!&pZj71}gHYmU2l|7D%vT-9Ht3uf-hD1^Mr(Gt zxpl#%wR6M>p#JD{9|ccBi_d7e<9hHdD|+s@Mjd z#cDyD;zy7QUztTuCo3rajd*`q(is8U_LsSs9EJtL$_w!UAsMTPwV9@Xn*Avz9eVOI ziv-8*&bc}%NXYRAC(9m`?~ZTYmuV$k-HtNk)4l$TrZz(EKCi*z)ECB=c+rc$?XJE{ zhL6#9dXJZ8$P(ZHWGgnxtV2G9 zfcB7Dcx&FxQ;dV$>_r_{c;Hy%>P=XEXkDK$=Wvk&Sp(-ch6VrH86I8KK0E!amhelV zdL4p2*zU)Eb$_GUkk$jq?)y#g9yBkJT{5E0qD`x2SA*2?wf<$RdA!cu$ zgsyImi09jczhVD8aZL%ik-vZHw!@s!Q+J%BA(sO zswyK2x?|L&?Q*z#g>TVuB{;Y(*!w>F!j%9JjUG~9W4s!Z!$4y&BwN%S7#qMQNG`HjC zT)8>Sv)Llt7=N0C!C3knGv(pj>ijt^izzjY?-CDSHmeq`KKw<4sWu5%1mZHP-1}Qr zGpmHYpxcsHtHkiz!;OoO`5DI+b=_$Eij$7?s5b$dOD``L9AdIyz z+xdaNa;Y1JcHCSB-*cOuUhsKu)lPC7)y4`65gDftIpSypgS~DS9s3!4csMa`Th%=B zPs~-ZC8;IHX0lqAM)AOom~qQZROB{uR`~e)GFoyGo_)4^DOkkn^HGD;l#{TKGnAZx z2iq@3)Wu}{@mwu78WJ#q*}wI|31@g^iNpoRx^E`75P%x&jYA6Etw>1$P+#PHv*L*7ydepAyg0YB&QUS{;&(EEtnyPZ{;7FKT$ZmcU) zf}M=5@qF%k<|SLE-JtJPCSaP7fD{^`rBHe&bQHp|MfPb5wpvX$>|1^t$N(t!S|Ws* zxM*f+87N!FAjObw*q?nv=-o2;(r2qz0ZL9^St_wo(Cl4-3d*^=$BiKt-zDNam5uR> z*=;(Lsz>!;DZ=bjo>1i6&OHqom%|5jHbKsBjoZe53|Hc$>Jr#h&PER3Mx0IJpBU4! zNb>XAg!P3=V^%O=%H$0;S;V!JlX_Y~VtKY}jSFHfR_}I@3U0?X3@rUA>n?cXbmVDr zs7BM}OQdz3i*Jinmq~P2yw8e)$XWfLq%|Jwx+MIL1)C{@n@5tZSEBMvpY#E+9&Q!> zT*c%A|3cQ(A4Pp5V}r-z&T*njHsvCb85t@BS6=vq@~VYQ4|LU>;zTrFWcxImGU<&a zR>~pF=g}eowQcPCbvZaZd)z`|$sgJyt;PVC8a8x6aW)9i#*#Ef-4YSS83ozE62nvU2cZ`Hc1Tb_+<6a$Q=bK=HA|ykmaPe}c z&5<3dvuJ3XaO*vXBzTQwwA5%g&9kmEr}8ix1XWwEW_U#MvT(lN)w;-$WK3X-2_^yV z8iF+EwOWF`sYxUqec*Q7-!$^?=T5e9&T-{JkicSj&X7E?}X$kBSvN zQ2Syh&QmeVL2W9h)6Z1v^QX zYlWn%zjyBKIu#PY$KS4O* z>|>igV4&po=qlpLlYhNWx^xGX!NaTUe*@$(58Z&7;C*=h zErj3e-=YM>Aw%s$obh&DWclA6@$sQVY?xbJMGE65`j3qGl@OtepRiJF2ou2NR}9pR zWfa?llm8d<5B;>7#<%Z0yo{ac$qsS5L7k69-T#%HtpuPx^hadO|DL-4wD8~O{w=}( z{q6r_%Kpbp{jYTX|12GLvJUpBXA=LmfF)L#tCJqOI!o!x9|I1wla+gEFeNS@P)h%2 zEdZ%JIZ*i34I}kGw819#(lEGKzQC&zI-=6;Rs1zlzmC4)x4yW&*j;PEO(dN@4pDhLa?(3kHW?d(5KW6jtE; z^RyOFMOcmVofB%@7&yN`roZ`B^{-#VhitN2r#LS(kSFA0Z0}}{i`4!dF!39}V`j@D zPy<{9{2i4(l3iXh?1SvTW7|g6F!&yPSgaIR7EYK&9bHnfpb3x1-t#Z{fuWuAH71SZ za#%AJrO>fZQ9<@$ch-;8^c3b|uLUTQ~lczFSQTVSI^U*T(g$aCi^AWBLd&H;d6S?Vv)O;;-5E- zP2U)5;0Ub2|9D7r*;)!MYd(>rbusvR?ZT22%+}FSZgp54;86!ONu9SR_{i~W4)Ti2 zUQr^ih~xuQO&|o!;>3|GxkV3v=B+=Bh^r`t6^8n6VVY?UP}eN_<4>H<;tl5Adf8Zz zNXqOX^8E*ewd%AYgidOJegfYQYc_5TjDNGOEXbaJO!m*U0#eY+Z=_^DDY3!|%_mFZ zt_yZ}!c13-Efy==W(;l5r?zDTKJTK|#eBd@N?=3)LyW48X#gA5r)NDW{w{*IOT8Rv`3Yh0_V{A#yIbUSeO^ck z1!!pK#$Rc~WyHFEcvxm+O%0W_8ljJgL4jJyN2?QdV!P`8u(Eoz}AxMx|)oQijn7Hd6;~6zz^=PiDN)(u>o3}acD`0Ei2r$wdmUDf-E57-*T8CG0_KVZ?tku1Im86EEyVV(<pk$F4mKhB6>2zpVGFp3#; z>*rd?pU;Zl2)tE^bLGEpx(O!!aq_WMCYOi*i_vxQ-7UJs=G%id_ENnb&&*x?=RfN* zWgkVbGz+!$o7?O&=#P8IHTTBeqL*0%lWHjAo&altSSp$i@Q>l`4*cAxyV{0lFuz&Z-=a^4!X0l$)N{?f@mMau++)c;2`UooP2-*lRR9 zhYgXQ-$+@9LJGReLL;rhgP#NlLAh%^g+8-^fXFR1UV1Y@VpsTWoaz1G23c0~DYITe3ScP+p z<1Ee$QGvl*vWttQK5hEdcDE2+b<)G6c&r3@jkN7Ow$Zdve9-oo` ztq5Q9Nm;3M#WcgcUgI1kh+2nh*gP^H;{v_K##cD;Ruk zh1MZvb7Q5D$*%=$Rv$(3hKw0h0o@_NwY5&I!-HwP{h`Abs2q>JDeOPaAQJw6*!$|Y zsM_yq6%nN+L|Q<)q`SMNyE_J?yCkK%Q%YJwx&)-Vd+2TkhMM6W@OeJp_zT|my51k* zVh(fev(Mi9-fP`!sl@d1uMj90?ze~S1u@jgb;49xNFNW;9lp_V=QN}!GT_h2TkJeM zs;`$@y^;Qo!yj>PbTD{zWt?t~7@8Umks9Q}&bo6|GFfpmiu({*imaAEBztSH=$u9U zO-onC|Nds9%mc0qmcbn94+4z!37`L&=8D)MENH4ODWa;*^&lNfXSLSz*n6>g5SS|f ztHc^ll{iP<|6O*Gj})d?YI4Hq>%o}%*MmV*ss6_%T=F86(r({i@*l zylu7FX+H}Ppx8o^Z{F;K8I>#3`fN0yI==jjjQoPXRX|abnGtC%ysZq$*?SO%&EzQ` zBSk40YF(X=T$AFufGm4k$2?DJw2)(`EZaDY1L(w48|I9pqowhu_pyLBje-pHln z`5Z2oW(t5bVfNh;9@l3X6gp(@dc@(k|5&gl(;c)QbWh~)Z*k!j`yep*5>|uNjk*4K zR4A^GyWr$o8FQCV-6JG|#^FLOKBYBTGweutF=IP%Xe&FY~IEix{H z%fFXh6D{&icqG4uMr!NNUpF1KNmW{C;)Css}hk9KV82M;2->N3oy<0tqb-R1D(>^RH?M^XB`Y|EkTmr?#LK4>0ZEl{jQ zK+fpO#>LbIk~;8ag5v~eeSLEaF$&tw(Iv5Y+I{-JLK3B0I3EoiRSI~i=N7#Jr?Mvd zoNf?)QZMIW;thIjBU-fATq>_#rugp!+{NBFFp}Nc5$psT)Tp&-v`Jl@a#5>AGT`|^ zPVcS9iWEI~fnzipGS8mPGo#CQbznDipHmi6c<(p<6mDNey*n& z7tQ^fKgiKx#hYOH)C-zX^!X($c=T#(w% zOLy9=!q;+A1hySc@euRfJaat*sbh5aV_e#B^Ycg@U%Dr~Ld}J5EX-X}HMttMNUNscZz? zI2yh7)ga#jdT>#=0Y`zlaTSL&spp-PS&cQ=)C{#*l4K2E&9!W6qh1yaJyOZ^=yMue zj6=(HA6CxQN+a@c?utR&9s;Ba_i&B(hUMBO7TiguOqoz^me>eq_O3Ly^`e|?9~r{# zq@*Aj_YG1u^IKF!!V1Rh%kx1Vrb(mEFdhG<0C1iMk2Cde%zzrAgvD z|FYS2wXOWBF_M*%%kf!seVy->aq-$!#YL2``#5))ysc~)8FR>U~AbpeP?~Tr!jqpTxEqBHtY{-`8uce^9 z4cxux#J+a@d~95=x$OO8rXY=*MI4lKgd%iB5R?AFH(R}^g*H(4%9j57wg(LcMOy}j zeEh=^4AAj6Od-|&QDP5)n{bzHS*PD_Ho|T0mYoBZNbD=tjiZTMN5u3%M;-ln37R~a zv0d^&n{?yKmTw`bL6Fle8TE)eH_N1#9+j1sCT}L@c6!q0c_`{0H$|sT{#=%#9F+9V z6y7m=_YCw+-cm()Z2?!$ruokOOmT1TYS@Z)e1@{qzo@CJa#7w6>K13MsJYH6>^Hg{ z0<|}Y>!~$x@MV*iJ;{8wp($PHbY#{`+AJ??TwQPpNntW zYEsK~sva1mcCMGp)5h(!rrv|-7pu)Qr0{$dQ^nGZ4dsA}DL8jn2^&TKjGoTao&Rar zc6i7*6j%$bw!`bi*NT^FdM{GBld4z9)D0*x&`Vl z)HGqo-w%oVjYU&J<~)Js|LL9mGXXe zCY@+j<6_(SP1^giOfCDNu9rQvzJfAx`G zn8yhjTSE(;y;1tJ3y>jJ*mD29KUz?i@J7IQt&BttTd_V5hkw3FoGB%&6g)g_TqEIv z5|75rS+cL`j(hT$zLrQqo%vPAp&04;(w_J`K>u|zdmAGH-^4o)8%RvL z9_Os#LR!~E)0Rxr+4y^}_jWp7_Z!1U1vwJZWLut~#y{DKwI@dWS66huy%myeaRu}% z2G8?u(Y8!)AVDX|&Zx}gRH+l4A1qsb-8)RnG9WxXwid~p#dFMsKC$ABL5IrPw_R5&NNf^1e|bo%rc~Z1|BmDS0sSgT}JoB>sGM~5T%rM<4ucsbosjV z<{F{Y@??m{*l$xp`YJlK8c}$kTafVX-O|I^>`4oUWiAMZw0+>@)ftu|%R7$9usa_% z1d;efmPz`9?ftnO?vfzgr)ITP@PG}0aZ)^DD3$AjUM`|;Kf3)h?~dXdjMU{Fn4_N_Ay5G`N|5 z-9Jps!?PasHBB@-W|#Id9P-&1yUnoL2^=f0MAY;OnwM;3PT4r93@`bjSYIg z>mm~E(HAI=uBxa7n&#(vwo$yRwi1;aZT(^7tk$ff@zxV9RqV=ckrMlClB+tU4fjR1 zFM-bug=H|o-ZXoT6*)`VZlraguP(uzjq1Cn`Hfqn;9{iszVW z+ZP{VSI9(*#tCo;2z;o0T{>^$2D#AcmcKM~3>KHAfz^s;>liuNzftYY+?V*_qxvR% zF|RCAip1G1Q)=@4Gi^+H(t6jKzNu|=uU$ehnAN_wvv+dO+<)uor((x_ba~+PvcF<;+ z1y&(-!CtGt^j8o^2Yn^DP~dWwmi1Ho@m4H_LQKfGy?L|`DY3!Cm*3}a;m*y%!9D4k zSYO2+x9WO~W9Q+zmbJ0VjzoA&vi(1jCuIze4v_qi<3CdM=jX6jH7?vRSu&L(Ann zS8ZgK0S)V;3674GCMGFFPMQ+@(Q~SfmGUB`7c1$5+b!4KfDPeqpfAe8VV5@9zwR8t zu@E(~pL@%K1mh-HqT?Tr-*{OFRS@0DaTiZ~iP5iA3=G-DxnCjOLP)cU5E%&Cy;}b5=`LqLe?(bj8HDw~u znCN*r zbg@NxY5x@mC-Xj=UennAkG8pE{73jg3T%}mwyEcs!iRMK$SX0USQ-er^jvAge zFkmE##K-BuPO&_>-IrXptL$Wq)JDw0WGr>=M@Ne=hOp0~ua%XM?XjoB=t#$pb(oTC z?S}Uti%?O?yDjq@Nx~IxBe)&#@v_gxNorFAW{5)N=aeRJ0q^L?0&RG4Cyg|Z-6mY{ z%TG3qwe4v?`p%G&)%!6qL7_@~+G{utdSZ;PZ)26>uBW7%IfD4>L78iBLtIZ124eK- z*|u2w7S=!YIsB33@0s?JSaoFkWe?LA>%jKE=gNzFUFsI{Qzx`$>-E>qBj{_(p<>$5 zJsYBIIdkW;s8{^C?O)#0Y}aH5n*qPTX5dgP_LAqUr|ub7*BO>>(b0QfoRH5n-I48e z+1w6;zcQrtH|Kl0BUk=s8gbr~=ep-#67AbEy|hSH1B6W z8yP}h&*N!hOmzEYW-Jobr!jm8UqQCoqcaV_Lmy4c$T1^3;>!knd#xh}Ab1pu3=ure zV0tikf2EqV@il{90sTfP7Dqo^t7VJK{KCz;39Oge;-*)*ssIO*jZ;CjVV^(>_N8lq zi015lH)?1C)oY&E;_sEevPk|1$hN5rI{bwvLa;zn@gvSqmgQ)+A}wwWskgV3;*n`I z#dy_B0zSWY#$*3rV0yF^7--pjIr@?5cOA@llbtlsx?^g_>7!qleMf}GyLYB-vl1T9 z%1mJ;Q*VM@y_cVd250e!0^k?(m)pPA)VUSz5-lTt9g{Re4Zw2`O>f>Mhnof2-#9ijn)}B z6c`nvMY^LLY{}|Ez&Ko#V;rrT-w;Fg8=Lo=cVv$!3ce>@)~%@AHDV%(@8B%0MOWG% z7^yK$w_Jh5!>b~RH427QvBo}Aj!8Jp?W?|c-PK2ycEFb)7^w4o_JPddtZwU);;Q5& zX^mf$Nz4hbe3>oG%nJFh2o9Y-IJ+FEv0rJhR;CMU6#wTo>lPK9KEPu|_d( zS{fOiuoswEWor`%^(Z<(!`ozEHttuRlnZefuS09S*}IeksZC3PkQxf{vAD0 zgwt@Ci@rkHP)82$zTypp-x_s6@(<#@=oyt$szZQAr&)?Y-N!~Stq3+1-gaNnDR=gE zglo{^KYz^5u&o%cxS)rd<$p&SgqxlA%QHYRDp7zUMJx7g3i3kp5j>vn{{ae!C}B6c zA^(QvFAOP1KW6SIuetf1-Zep|FAT%oknC;HZMJ3Cqi;+mE23ElJN4O@;~~RY4re~a zNB?rz`Y6Ee=Z;Ph7XLbYR2 zXtNoczhch{kKkzkWR&>RJ@^#}-Vd~LDfUwv(@N7WOwO63t=-(3zxtn0!w9U~U#XUT zDoU_U0R}Xjm0kERz}g|0E-@RHMWfejP^cJn*T5ic^TeI+1Pm;ApF~)q5@hmdGp&=c zP&CbE^8yv+3A;pn`KdG=?!65=qJbKR7Y6K(^xyTRaGvYXxkWeq&Ji(cg`tMS{v@kHtAG6D7AcJBvsx<%y|)ji#|&Xy;_Y=H z99*G>=@$Qk6v84y2j2fjfi@JU@l!!iTZz@X%*mXNVv*`H>CFbpi#Uvd3$sY~!D8Mg z(fnsG7+|Cv`&9J5BA|YiNVV5ScSV_Y)0wk}!s#u8VdM!16os-`p=P2R5u(`+_y_qbdrA7v?nYtr`xLt3Si88V-$0oQw?=M!2mIKFUHuzJOr#65 zXzw8*W}C-d)wAa~Fto4Xb?D*aV!(dX_J1rPQl5S<;Pu=TVCcgl#AQ~KJy4YfnwOaz z<7ztdBjm8~xA+rMW>Ncy?@p4CJ%xi{j;(*+X2K3>yfWmQUVF^QGj&~8s|~&2HBv0A zOB~i`15I&GU6~{Q`p*A=ah4Py;*zi|^BBBe!~~J`Tef1^d?$!L_&5%4(T6UNPbfS}xYWO-coz31fAWyVPIYF7=UX z>(|wzEk3@bf_^c4${Y7hwYyj3WS^AZ41SSMJ#CSE@1XXh%tyl`DMr~n21XG7LiKpj z3AansAoY6GNJn`;!^QDuJN!Es_{vq$`l3bE7b2h<_*_XkvNEGTT@RV0L%Eo&4 zt}cTrCH+n2T8=zIR6K)9PmPso32YqohH!i|LbDbU&3*BY-mk`+DMMA9T{5l z-v1XbHGnzA2cW&6rlnbw%{RoVXtTim^QVBi;$6U#sJE9?&f`1F4S#iAy+jKTRlFW9 z2KFkUp$}dumarngz*A2~IpUT1T4_HqW}h918mS4!=2S=_X8_45>fkBg*zL zeb22Eh4W`>y)$mF0bP|52Ltxq_$gp77%|UURNCNyZu@92p($qx@sqm2DVzVCX>)Wi zqjV$8V*EW7;=R4Oho307)Qdrf4dJe@EElk?kdu#5vAU8L`duJOVc2@Ez)JD zQhJ~KNi-r4lYkTKs)GgkN>y>qvbD7I1{YTqMS#ZP@!wiNUyMLHZJ1cZ&Rsk>E{EF){6?YZ_JiRg;&%dd7nHuJ0?`%lxWp{{?JuXax=7-yhOlvZJ znMiEVG+HQWrE{TMtf{JKZc27W!soQ)glmT30HmCe4iZ=uSjC1x)h+9+O+|0V2Pfn& zczv643#8ohTVR^;pr@3w+9bHS4j8n2h9%{;472bE8cFE;k`cT$XYLq}A@j?zw{8EQ zR5rHsNIU?u>~7yq7NxK^%oZ`ZFX;fV9@TPT^u*5idIrP?IyTwW8=U+%<{8h|IA^jA zvF$b~$gy@taPJaW{@Qs6I%2~@SZ7oRb2{Dd`V|6yWdEe-v_#e8xAD^Zz|3`-*#`r> z0%?|C2%!&T!Y;!Q3S(eQjmQm+X0y=rr}91;kqG8A!YZq!t$EqEgVNTF#z=nJ&Kv4t zOD&NsiVB>tCt+3p;5VW^RhL_RV$}Y~qYvr)FQ1h~FZiCfJ-PWI;{DsT>YHqQ@D$@SbV;IRjs%(EVNO!FIx^lB-iz2m{A@>=Ee!z%2 znu2Lf+(zTuT)z2PNZ-4FZ6u&Z{*l@c{;8&dIMcRK1!>;WOfItw7I%XD-(VDkPjkqy zYQ^{bp0vqhW_VlDqjhEP&dW)7tI%xnlM2@3YaERviN;va1w3wdI2CO8use&vjU?Rq zk)Rhn3efvwP7Y?P0m=vwM=s@vmixMNV~nFOg?EuNZ1&`J+E4we*fsi*6khevY_iP|MQg2|B-w|iUVlO+Z0yAg6OuzUOjtrITHi3`FYnMFJ0hK z^w@oEm#sk#hD9)S()e3gD8H~^1wt@bdb!AgVWb;D<;O=xGrz4{LB(w1=q>lDAh$;I zA6vj-#hjzyF8H_o)R^Jn7aMMRbJ8czOCDUgpPYb-6)mo|MhU^QH@IX?v(qllF+lvl zs8lkgRZ;V(!Su|AoC?s~V<6@fKXOA7Z5$cZ(f5guw`J3|kNs|+1_aOjU4Z$fV&p{; z^d)qWMc`*g_UzBTKbL#>@ay(<<||L|BMGdgV4&?JSdV~l#k4U~wVKf?zK3EGaE)s8 z<`L`2>4#6D5O{$)Mh8E##6rc*`jJYeN!YypIjF?IP*KX}u|0GF8~?4htlIuV2zRd2 z*J6_KA3%=Rt{rvGppzF0DFD-go5_4Z>4i)V$~6SF-}9N+@>tiZKuD^`Lk8>mJsFlw z^tUH%T@>`64+VA4;Xf3E5jRKW<`gt4Dwp3O-us`56+;e>yZ)B>Q$+v4$q>-=H3EZq z=v>#{v(OdBkBBDmdUOvO#jnd8=W0Kkwr4dv*_>Yrm~&s|s8$M!k)^48I9RKK%ZKas zX*12{L7P(9YO0B%D)o8p#4>BQ*-S0E?$)5Kd*`K&{3KJns`{cl>A}Zu1#YVJYbBBV zNdo5))4y5(&$+jz&^d3hR6Nke0&ijF4`HT_XGdDj3Vcp>m7glViWpaX^TW#c!Fe77 zB151#{voNHco5Z;8xi~%5h=+E1q`LeS_e&6H&_^WPX!#|rIt5zk;nt>v$?MG7Uv^v z1<^0V$&kxdQbz+67>fmjMX!C9c&oENIj_0 zooEvbtUs|=xrjulJ8`K+`@2=_;DP_%zLbdfNLEoltsj?orc2?ZlJ2QBaEXYDxR}V| zDA?jTAVS^7@LB&fUch(BXpq=bFG(o66*4z-{}^EHjxN(yUOS3PN4o|MxYM!7f6JVY z{||-w^6+~)wu-b_g}i#u)ZG$Ck*EekmTJ&ZoY_}L8a@o64q?HjqM|fP8L@Ec`2!>$ zy6Rc2TAW8w_uemHh{!M0C=|Iz*Y$o2#ZP}5w~l6bqa>RcnBnHblQhsZpyGgwSUkDB=H>U*jQ`rXg*NS3-{a9W^KFP=DEw)U;p6<%d zNy${!N~2ZQ%!0#B2>}7Z-@e$4Bs!|b0}=9Q7R}u zG3TivKi*orKT3m*RO^T#kiV7Qp29v|^|`|J4JV?{uF9cqzF#l;vvJdxd@If?guh_R zM22g_f#js?S}khON3ku6C-VTCi?+Sjd%A9|5OBGHsd8(I=%(D&2rVx z;yK|iD*vw2dXdT^{@!fg@@9Gj^2@~t?r(7Up|jsX6_+)A|2#`FwJ_*JHW16@$c@Kp zAPnJ`R6_5DiS&*|#=HijP(HV*4_os_i#yFqOAuLY| z-_!_Gy8O#k{M-&39f&U54ecIiB;j{3oA^0j|hI_DA!!(SCpzNGeYb?$oR>p67Y2?mO;crBC|} zSQ!@ouyK`3FZ_K9?sYG!iI|I@VE1!^UNP>;XCC@JL1E_u-3?pK6PZ%cu*&6k@;C@s zc8pH?cbK8JdKeI}2ydYRhb_t#OgZ$CJ5d|CRln~T{0@(5OD$P_DfI3$-<1>0TkG`o z^X7Iz-tT5V{+gyec8;IkY>p6cr76?48@v}EL-Imwl?#>6>HtyDmBz)rexXmdeU~+NC{qVGy&lN> z`qbOOLh$jQ!4?jW_NTdIhQ9Fy>C?{q-(UZ;7XRyy|Nn3QF53U2>!2>@XSo|&?dn_G zkn0{p1ly(%y?8ucGs$ZeruCn*H?ZdTCyGqe)c<<+Y1w|?Z&Y#F{th1=<3x_^^e#}M zyO0{U0QTWoE!aF}_7-{d`hR>-FdhkZ{0Eb76-rV05fv79tdW8vZP;?kpQQiMtA|~Q z=y89D#zXQ0^>60+XO&ldo+o>HE$Ndd{MWHBUJ-+iA_c~?h_sw{u*OjY{)+E>&1R5y z_pEBFgZY1cJn?ahb6)#h@qc_Hzen2v8I-?cxTn#{j#ZyhIF>`UdGk^=D4IV79;8#3!?PaH=u7{NZ>kJvq1f`fx(uovhyoJW2 zgRQrhqi-gt#1`|COo-L9xZ^Q@k8@wNgdK2Oe5n&KPY;VJi@$qOjYxZ+IPj&-u|4Z1 zszjfMvhJTG`;;$Wy`>lXDObx)I1vxpCQ8XkZPF`O4QG+j6w*bfy~TFh%L|w+FJc`J z-7I!%39rht{@2$tKg7p^)@g4AxSv67g|vgmXNqj%aF}Wpqaa;0$5yhJS`gK z&Ync9a)6@3ovb9fUF>cMN$U;qJk$fD^?iM`g$mw(JQ9!#$To(&^O@%B8Kqf`y})ot zx^D!_s;uW+FQoyV7*>C)9uY$hBc(Zm*~=pVXVy0GDo>OPs+zPbvfE*4%XQ28SR;W) z_{)vccdv@idC$oBJU~MzS93|%E`MN8k7QpEqXM<|BD*Z%Nhy+CIIuOkCy`~(&;cig z)GfxPClAd|H4T&In^O75+}fqFTtM}3`WF1MX7wbg#lB!jjT}3gxpG|J^>6GNy>FVS z_Y<(_X|n0dLeai+^|e?hc6gg~qU5>^6e!Q+G#O*jN6IrS=HeJa*?96qSv`GDVQNkau(_2M5f)oJJJ>P}e(@HzQIOAGC9Y}4uB^B1IA z3AJG-n&^b4Cti{Tdy>aN7yC4=9af#jC0loe=Zpku+0vt-H@;WLaBbhtAKAqn{2t7Hh^gxV;obUgnWQO%)oRanNnFwq)M z;R^O;*fXuQ^t8lF%g=7n+hTAXy;yQQp_OX`N6^w^V@W@J($(p;wPYfJszQZeJT}F` zkNU{NLjz2&k|UynFOZO_qe5+T-cQ2@oC_l<)E76qNd3Pqir^~sT8WBhFQgOgVi?$S zFUy0^Vc- zN8Yg$HptMOte%vHxB$S1`{!q0oyrz8(t2=AC%!xMqY<}Uh?<&i>nzP}Cu5J_VD_SM znq`WsC+sP!j*%78%kxZ`>^*pi^WF7eS`YTRuQQgsciPO-9$(9=mkN?1>Aqh-=u1-& z=Kx%^i_v$oCC%_coX?jJ(XtY>#$~Cu9z5N_Uw2ilucGQke$z-%+a05(ib2!B+oBLq zbo;^m{W&k_aR8E06KBEeY8<2 zb%32zB8frNXQs>HQa>5LROW?Jh3b`}G||!K!B}<>wdPhIw~l zmk9trmH1awGk*P3y9Bx?-EiCK7}L-VEY$g8G!}=iS-hW~YAMtx*6364DoD8eYEq2N zB5skjPD(L|iNQ%$L0Y`&Y|bij;R^$OUX@CX_3Vh)@~Nd)UIOEY+t=GP#DKtuE zl86TI#t2SKR2Iv)MNPjHOYFJ6!)@*{&)5H)-H=A0YgFbNTH$;UWf=*XR&_~7dmTY_ zu6%>!L&KdfF*Dd`jPEo*^y`q9+eSz3yD?tUbyzPeRxIXDlxX25HbS*DISw{a_F|j6 zj@}J^@60sI?nP=ib-xhxUg}zbQ%Lkgc6ijcLD^7%iV58$ca{BeqlY@x2nxH()!p$c zRmV}9Ytbu~2)wLX`=i2*o|$)5N$R^ekRT8xP3~f<4_Oa^joL6LOaWTOsS6#jW&Y!1 z8#F%@Yb?-3pFq*V=!V~Wy}ptWpQYA(IoO9#i?1oSMBlAhZ2F6_N^?jYg)Cm`M@SGJ zmvc`AsNRfql)3J!Ni11NT;9oXy1}u-yZ658{RfW6Y5LGFX{#1Kefb=5Vf^0Y=Q?RK zbIuj{qB6dW0fUsk+JIK_@0L-QlX;iF+`?jq}zHS=0`Ggzf;DRy5yf&#A2`9~Wn}?QjvF zt4{xqT5u32ky}TMWqYK};uPp(YGO!0A04K)8P7 z!}zHn9`{5th}-?JmFJz)r$|PnIO<6=Ux|@>yk8bO&(pK0)^pY1Kbo|%TJG<^!fso( z?w=1Zpqmb7v_=&WPwYaoexY zWtZczMqn!_@K2ddB9B$Z|B zZ9#CY4WY4ZZZU)RU@oI=?MuGGDOklDN`67;ZR^wU>*wXe1B)*MuKTT08U!C78#O~d zidgE%aN$rPSgv75Fz90m=R~u_#`1&g26;KV(xg@wN|-%Hxi%xpADlTy_`)0sWTW8AmWu?__N*nzVGA>NJG)^) z7n_?~|IFebW&yjSM4@P#X~L0&&PHPyAm({x*}-WK4zV0PF-Y>)T)X%0U9uaGgG#iC z3OvS4t~yh%Sbw_PtKp(Ucs`>)$U*&U!27DUYyeAk()~}bndQV+d`9B_uf*}&32N4_ z3oOpcF9%aSw39a&4t{wkE^p=AO7MMO1jd6qGlVV}30E-c0Lyj()#YaXELb`y57ujo z(OE|qQ&&vjOPV`jec@{6U)VmmG^N&tu?A4%T>9cof$S3Uy%p;14p<`GX;!N^m_5Gn ztY=Qd){m5ygWPE6*#=#h6|T-fi$orm&=$p`b4{YPjg<7$zo| z9nlRV&m3H4s-niW`)6V@f^_`@f)cn=d@@!sd(2S2sB4S$PN+G?`lYueMYH9>xx8nb za&xEz(w8R+c>0b%R}%aZdr4NgaCXF;a!95(lk7L~nF zLxOtzw;Z*ri4x89?*>i0-}~6D*SCW8Xf4Rv>=rMG@g;uQI_0S-*tB(C!%IjprKb#C zm-JT^v|J^jV7~eoNyvLG`MKZp56)mRZ@^sPBS(&sU@6qD>uph}hPlGpVWuk;_Fk8i-N|Lio3A4%U zX?II=mBkslBX^RUq%(mkjl(TIAj;BYi)NE$51YWcL{a|;4N?p;cQ6T_(p6Ee7x`{& zzq<0qfZZ=}+oCR7#**)5I?=j*aHlm72E#VW^6`d<^ie^1IiThDXMjwu)|T;IuXMKj z3nuDlvuj-bi|$DRh}P7isMJXxQLqBuS)A7TT9Li^{JZuh_=?-))lj}kX7yxNJ*OU^Vo11uN z&z^7875dzZ(h6|Ii;f&y%hgwtRd;Os+es`k-#pfFmiA`C(U#i>_4sADg<)5zLJs0? zTivppRA;54{ptE3wG*9{I=>Yb^%8?5S*M>01TbnT#5L*iX8|>bQ)eAc?G!t2G}kte zOy^12fWLDTa_F6}&1NeMW3fN)FO z+2nA9c|V#mKuroGmuS~)1)$y`6knFlw99h0UdjT4HfI%pM5dS^Du^`M_YLLm#+Y&V zlpiySkI@2EG%FJ7?+i38eN6`&h@#C}m@fo?m&cQy&1oZjW|{KHUonzfIgXQ6c}{+= z==o%hUt?dZoaKGrVixTI9-YH)@ckX#<*319 zr>HFdvQhXLv>ClZ7`T(nS|7G$GJD-;}kIE?XsurPnMWQd-}w69beo z03tgw>KdNqsnoE(uSjq_`td;j+etX0T53U$q+vd!J}T6vbEjm)&jxNi3UKY z&8>XmAT~X(U3)#n>}?QWdn-ZI-e9!0F1PXLJ1(*5e6kJsS$*2i)rqyqH;_d!ZIrnh zm3+>vgauY9zlP!LKzI$gVH+tky#v>Wt~)f}mbtkJr^^mvZ_R?0?eJEv+;H`ChZ@Ks zA?d@C*+aOdS43^)j=+lEbfu$Xx@LOX_77=}@TQ}>=NzLS30(6Pcgx)Z#RfR|zEp}(2}R_pH^G~X z*U3h~np$5}IQnC;s?dU&ro+dr1?q>qe)IJ0q}_qzn~AoACM<#C(sXhFppwhgCa6j5 zcbAJ6Tf%-%r+2GF+2ER6fiNa{rb^Jj-AmR!EA*Vgn)`(|Pysprb3=RF8IBHsa%ef* z2%%>OU%Z;k>_F3@e5*L|tXRGoMu5;b-9)>MY$LgtlW;PbP*Od+^%=k;zr>O@XRcLo z3|r&Zgk~I{?awP2_L_c6%_#GyhfT+4`j#D&5t4q)1*Y~{1rOeh8I-DmCK4Piy)cvb zk9w}XaH~|i?lW+USr@l1yV^q_jkdrK1<~JG3n9D8;D}xK{-)_3c4y}k#QqUy&k*Ti zBW=yX19s!F%-nJ!Zax0pw-;F3d$z{1xun0x=`Z1kt=yY{eEsHa={LY4*`sNXxLCDa z893q%?I0S#v9YFa^e)Jaf+N|3xyr#IYS+f3GsKL4VVsU5?7oiz(7GSMaqHBcXFajT z2!CAYt$r+NcqkJrl9-UZVx@wlTo4J{B`0+doL8;nXbqo*(8>_70pV^C= zs*jX;7{2!5Ger*hV6qqY0Qat8LfXWSpFPx(dB*X^#_5@{O*ZqCNF)I#HdV?CU~n72 zyE|$jRUP#uUa!ZPv#DTdS=}1VVzf;Y-;UPzhvWm;+1iJkA1Y@Jk$LO!#$WH13LLCG zHMM)+fpj99hGlk)Kkb%0SW%EO)H_|xZH1Mdm&c9tQMOvBLufo!rGP4yR(dpr53 z2UJxS<{X8=BmAojVydLd(FI}_aAb}0;-oz#)T!=gsX3;0VG`e<_!4p4r+wLw9)F`} zdPlUM+7zU0RtL(g)oKP+6N^95D%%YGbYJFlEqJr{)-KBtXjU|xzAWJNiMvRqGXMIz z!HG?Kh^ky|&kJpGkr>6;0?y`ul0hE`pyyF~M>o;pNd2#+xa| z2=XH*uo@jq%Rgu?aAqPL?dj@jGkaB18MYH1=HOjDQ5mAc@7UrV+tlhaF%?ouIA)>C z|F0i+6ym1-;ua&HvBVJ1YQ>IvBpnzziHxURTHl`4G^YW$auCIHr>{s!j^E6Iizwf# zGlQFQfq?29KT&tW{Uv(Kth`oL#s}DPW4o8h{6lx27L%epF$>dV!6*LyZg8}SduDmq zgF&qrbS|S#*nDr_vg3VWHf$G@mn=)!ZJ+3~!#L7V=yK@cUZGgBZJSEK}X+#t+a0py6fPR);xk02IkwPZ8R@ z00d9mr0>~@!Cd3$tC8@?E?>Y0 zCB~ecf5iu~POR`_DymW!oM&ILV*U`dLvz<;to*f6hcX(V`~#<*$#dLsNOonBJP{ovnXXphF>pR@%~iWlh2p>0B86@q2?a zXOxfkaQtMiHzU9}QTjlf<$KO3c?>CNpr|IvAz7bB$|SxgdESAgQL_j!@+gi@uksvC zEODayG9`iOsL?!$z3T2xDM`AR2C&4v7MS6wrquZFjz0sNYG{;pHb_UN&Mw`xw`sH1 zswsxWL=ec|qn&~biQx5iS`?gQv3dQ*dSR;pM35qVAQ4cIkwKacC4}dqR3WC<`J_2A zmo4~UaPdCXn`Z`PxDq7j;=<`}!$ZzpD^*+@vE@Rw0gxxa^E6j%uvFsknB|VA(~Y02 zxkotz(Q3oZlAEXcs(U!W=IelpZ2(^e$ossGXo?W^-FS)qc%T}DeGJt+pHpG5gcZ4R z60uDG%LjdT)*mF0o_3cqVv^q1MdW{iwCbilcb5?w# z4(aZ0L`tN)L8YXn1qlV|?nb&ny1Tnyn)AG-})KYjQR_8YaXLzW=<0xPB+dqf~sNdVBl)iG8bwAj+D|mN;5YkSM z@D&AaRc*{`C2Pfm$n&nXAi2=i@}-gAr*Ehb$B0SYKfkc*lZSjO?tI|M#e1gOHr@nA zqK%yL=liNP`0hy`ihbTLRGc!q2Y6GjkT|ql;%2m}{!aI-yY1@_)Z6h{gCc&%*PUNF z3+FN#xHD{~;~dY&pK6ykNS!A&8sj4<_&43}B_D~nBhQZu^~ZfT%kC_cx!H*Lrzn2yx4M=0 zEqbq{rZhO5E}F!$@R1Lg4b4P+#66Br2jZ@yRr+2=@Z=iUgQ*R)MCg+XwDi`Bs{A5g zbj64{GFiMY)pO{a?@Kf2s=f~mdE(7Sd{D*9j_EZ57f^B~XEE@~#~M``CgR_U;Mv}> zj7WFKAT^AnBalG-2%peNM@zb7eetymN81=>$go8Du&TyK)f~ z1)-9Iq-!wY!uGT(g`shWO192p)s6kyEJ6=8mbdJFuyY)%wlK22kYA-bb_A-m61|P4{J8h2{I_nYD zXW@!TorT-l>iHqnVj>-(Ni}Ct0u2+FGh63Oca4r)SBlF`-(|H3wF@7a?dTP9Rk>Pj zOjK^WXYO5|>g-@D%~5JMwb#ZY5a`{`6DFbR?$f2{r*6 z{s-Q|%xH)xkY0lMNM;2u(}@TN<^AJ{!Ol7;a6pL!rkq|sXIU*@(+lfJ=`x`ctWKZH z5usP&Xfv<;wci9$#))1ckb8E1A--0L|8$m0r659g#XxCCxOo2-G(8MDk;8xQYc}P2 zkJX9$fC>UAe5qsco?>T|oVM0l#hOa``k+zWarsCFK=Y`|TM^A%PJ1ZBH-1K&*I2nw zgi+w>%-#OjoJC8x%Zm8iv5}WMI*4IH`qL0s{*8l1|5h<@Q|n(~gbOA>8W^t8j=Y2U z^NsD#hJwwv&i|w*AsPGT$1pEy{9yIjRDZKu{z~Jc*~$VJ_>A=*Ao~BpvRu=E#3gFI zdG`On0wn;&o%NA;zt++3Dh`Dpbc3!xe~~TzRzsjgW}rCSjgBq`PW=`hWT?8dzSzX^$6sy#o*P2wWa}fl!07)l zQv1?Dqws^fRW*JwQqM5?VyDjhZ;aGcTD~>?ovlm%G~qjgu#10`yjU44(hd}6K@Tmj zU=p+ZJqLe;{;$se)t!HJ_y2zIEBN&Pc{%vHz`vMx;^D&ouOg^2MBeV|y=%ZUGO%fL zG4^<&UmAAy>7?1>e~2SnRY+@#XxH}o#b$t&QIh*Q_T(H0D^^He-&Bt!; zE1aX*#wu*x#;H^5dbzcH3TP@0Tv}cdqN39CKPIk%+}2pRNM36YNiau|x)NO-eehT| zYn1AVOVO8MB?KUjkqRicN@^j;z;BY~MN*Ik@qvqkuXb4isW4~D3nV3KS#}NTXT$;Y z={Ea^kt#3Q0n5dSE))`xqzk9|+l6@qCCn%|&dRuxXv7N|+l~%>w|_gYmZ&eZ(LTZcfVZr+zWM;|1U9mB&g|sl zGiolqKML?h!;qfzqfHj_C9&09qI6cKdN+d}S~Z(~w_L~#tzFnGpX9@Bx)flBJ!mKY z!1#o$;9mgOHoeje6LDYylzJIrp73e8KL!h*-dG9t^uKq6^ey+P(4tB#%K0D6kD{?( zepcWO@n9*dW(&ZfDYI0=7jCu?bi-lSI7|P~j!-zz4!88feY%HD?yX;_g^0cpRv&$U z5_DHmg)dsl#xaavUubgtMdI#b(uW5WU?H2EuYblLfv7S@ayxaE<$tRibVrMY52tt6(l2Fjz#c7xLEjvOS5hkP>C0 zLwyR7S+*FUBNaixUw@nZdHTqs(KIO0^qX)rQoo_g9Fs3}OtySW-c5E#tE=Hj!y&KN zUXnp(mJzt(y8=?hg#YF698&s078F>C2Af6HoQ`)9-Bo|FJ76|{SK@P#Y|jZLYBD0w z&qRoyaZ;N;{#%amh#B(xBkFq_O)+quW)dKx>9#U{&YfdH?R?n*TQ>^3hc_))05Nub z5N7$MQ9@qm)g0*#?+gqtl*Q59(c{wfreE`g1+GB*8J$}=*x&!$%o3T{4#64#m?aMh zAdA4EKvCtl-H?H?zWJt;uOQj=6bAhXy88MvBD_Pi0DfK7gxiQofH+J~`z0m{#5aQn z{!)ICl<&BtgZ!@ic1ll2@Ut=e;OoSlfWB zp+LC2GW2VVezlm@T$M7mwxV6aaYn?p&li{AqTddkV7$V%=GTlr>nwrzKwJRjZzuW# z)c^_bBuPtug?H0UO@)i&(poW8(al{*e5!Q=e?x;Y{&i)jIcq9KpDRy*M8_i{X$ofx z@;Qn&SH}thJJ2Ar0ND8^bW5RBg(_ zo#nYroG)41O^)CV*Y=NwB zMeG-hc2R#U#2m~l+2PAndzX9mm$$&UW=KikK!7c}wG~E?G~59965UY0*okYH^6%{n z1#7TS5aR6&iV0Njda9ji$#iZ-Ha+D!kQjlp!jDD*+SZ8f`_NLc`&IYu3>Dj$~wLs)e4RGHMesX&grJdI7yDrIlo{d*TV~_jOi=#?jz9XTp0{Hp}bj#{8ED_;`k0 z`@Gb~I3vqUD*`k-eOB*|#}>gN1r5%rx8yGz%wC~ZD&nupNOujP3-~Y>;9yC*ZI7@x zTn*tOwbqMJS)9as&GW@~BCdW3atk)-9(ex&B1t|`UxAqXaD#G%%iYu3c5Au2PFz?g#H1Z#N@)zTO2P47w(LH~6sB|&Qa37Zh3tTAg23>fsbZZo?JH>Nq z`1JP{31m%X)zf2L#b^xr16!Ie4kC3T*~nDM>bF^?XEiYVoUh+p>^U?z|}(DS<2Z!f|~7=XuL3!kp!(m0Gy&sbBl)Xw)~WG=(Uoofgxe z2ibk|S<2Itm5mQR(a(a?I%RyAZMD&g=}2C%8q^*fOE5(YXx*I;5${nRwS-y!9Fwyb zOSP8*$w1cRC*PF%p{AE~XOCr=JP)^eqp>C!8L`31bcza@{rn@D>ZzQja+h4sslMf} ziA#K!4~9eBI{a25GmT?V&mrxxHH*i*AXl)^Fl``FKFU`;KdHCBVwNR_vHu~W+GZzg zGfl)&Ll5U5C?{cgHeTPS8ohh4;>$Ky_6K9U!m6 z-|WV84tn;p$(D}nO>QHZJr$4Y?fjXA7M)Kf!j#9a-;gVsYJW-t-d?axCV=MC6q5T` zSbuRjZffJnn9{~_luBXK=y_ka1j3;jXi#^pHh|u$r+YuNZ|cYW%>WByD6nA2+8~Kd z7V#Ak>PZVCanbF>{X7AV>*eX-tB({OGHn*Q2bdFy*yL@FCKmoJT1*9GjgIe&gsXel zlGV>(vow7X^#`jaz$ae9yTj*H3|^)`1by_TKkn)}$@8fWGc4KFYLXSk`yhvo3C!P) z^~-eCEvGQS*N~iEEbjc&W{#vAK9cLn0-u6$2a)mm?Q@Hsk+FS8CC+3n4#gSVvKX!P zJp0jRG4d&>hC*Ik{yA{BbXL=_V|PQJw_ItLR_;FS0DSwNF_!>Q+T4=={u6#`WJvD! zn+=~-54CL-#=hq!UOf^AJWiALZ5c8j`aG;$W4(F?`w|7`KfRAEqxtZhXn@40p7X14 z>hZ#Qfz*`cSeEXMB1?m3_l;OqX{JjYg+yDe7MRAM(cH0el1i5VM-&IE14izCC+qtH z(~OH2y|K`$FDG2do(kg{&UMVl^A3TvYizF>16ihq^DpY3bb9wIw^Rz}u4j84!n_WV zMXQVFC$l^c>R~uGygxV#P4Re$HUK?MGy>d<(Qx0%<>MAJofQLmjbwr6?lj#sMmKMY zYRQ6pu37Fdu8nMnkC;fkoDe1kN>SWpb>Q6&+EIPn4lfJNJ5(=SC2buyMN*{mCp^P4p(oK(WWASVMlsc8=b7$he^l<{O>oW#cS~AL>tZ zIf7dPqyAL#@h!f${9e)v>9iH=It>xU2`Mc%n>8}1VYTlYWm7l+>7e1i#pQ- zY0_!|GZW@pv%_T7a;6qHz1xak=KCojUDm5d%KDRA*4f7zg-ef_?^-rYJ1Ru4ro;~@ z&}FDq#@Enk%dA6$Im2Dx$iB>zKkcw?i714Y1+6zch-P zezoxA?lXah`FnT##>XFMdMj!;pfIuC)j_v*h1v)=Rl)_r{Bu=o~q-NSOEvk_SLod#QurN%Ed_<=? z&%Q5$XOe$bwSnbs5jBSV-BM#Z+-dOo8Su}CDUvfcDG_m5wK4P@RE*}+M+$A9*` zQ;KxO$ZTp-=$^W3WffTSPaC`tcjWLxy^7H(Nmr=BdIEVj!v)(=SY$9-RR!6HYjEJZ z<>NQ120RTkNtQi1tZ>J#uyEbTIBp#?#Lsff5({NFpJJdrtNk#b@j}&5bDTD%K=)lG zaLVA;PaEMMc06M2Etu|cFhm8mH5kyzKCX`#*LC_9Y5T|XOxF0@8-Jgd=c-4e9c_r; zlEQE+GFw*Qv>TKp=PL<`va_O_G`YA~DjXE67K76Xm>pzb{RFX=QSBO`lo4-biit7qveQ23YWy4$W$t zYPRrs)K#cS!3IhgjNxX_^4w>NlrN5M$uszmtUkP7u9aIP-=l95O+7v)`wpI;&6>T# zH3m*bi{YSqi=+MXsVoWngZf~XeR)rw)1~vG=XcAtdRxfEdm-O~K6^86O9~~Qop{qS zgvfKKXgkBoOWZ8mM^vFAZ`po*3j+DM?PS6-!ocfR5G%&U8K64r5>5%Q6)TNC<(V34 zU^{&c!@WW8Y+>A`_2ngR$XVe{vn#wB^8jPEq*=--J zWb-&Wk?W{sMk42U?sZah-w=oEdYOELjx?j<#tiq>50wxqLv;=PvBYCCxgeA8@_ugM zwd>Nyn|C<1m|zVBNw#pAPH_HkPiJISeW0Bc<(Wr$|ng@}~IM7URkxsbZiz;V3UZlY4VPIOOs+GoJJ%)#VYa?mmr z(QtPsL(aHCM68wG`!1$xlu40b)7;amM8$5u3QUyjc01uy$+nhye05VLaYwz!$$*=# zxmPz*J}@ltlx;wu>aFwwag(dt=x)6Dh)(b_Yv5rimF-*C7@zU7R&{8O;BFGyc5~*< zlK27Bq{)_6hxk)>y{5yOU>B0jlAk|-n3FF;7rgS@bR&A~Q zlVce+0B)Tn^23d$Y-FfjO+pEoq?7q!3!4VVds~{JF3w^?4dMYVQIvZVm6(evo##V4zE!yZ>3;EpKAp-m~#Q}qlzv5-9tS*9*l zOh$MqE>~@(nnnf=z~^-?6( zsCmo`Fp|k@%nft$J}2cKLEJ|3ysh!<(6^G1lu#OvA4%qU!et4Ada%k&c>{s>s|dT0 zd7+yE=c#<2D{9b5AgtH3#O>jfRt|ryhNYHQrcueND;p6kdZa{xB3Nj)vEKDV@$bx| zVLQ-DZ$B>e-T6pQl{z)v`dgLXdZIBu<5G#YV*jZhB~Z3{Qxn@$s)ctQ6K_ScqheiV zaE^Z@Qbb=O;?Ny!$r|n=95mlon}vL_K3O z`iX_J9C6;tW(xSnYJ=%^F!Xt@$=+ApwU?5_?a|*S@H;*X&W%F9jG!w*>j@CL#mwHl zcF8{t1gJi8@0>#-$etawv{dM&YSzrChBjZ|mJ`bDuz{W_jujBo2&Yxe_N2(QRqa@Q zY%_;?iw)qkzR~m$+t4c9XuK?CL?WOryo@32H0aL=I%tp27p(oBQF;GWp{4+K9uge0 zRbOnt5yb3Vd)B#Lf8^FL?Xlm^6lyX==@XYRz$urY;`oUi-eA*W!D1z>GCq&SL%X%G z{dDu2IWCfv_m9AJ28tOonyzLSZtZ}>(l5FF2`@x;Rr-g1RCb_}ebQELLHcarddaG? z>|$|9Uf5vdZh6K;UJtHeYa4r07OKXrUnY2C;;X9KZY<-W+xVI#3-#J}K=PLCOOQ}< zq~v%A5DtBp;={dMSFpZMS;|5Nd7;j4hI(uiuh?vU0lZjO69`h{&A+$!-#T z?^U;eUP>={y^;7u)y&2}!4P3zbm>^*2=tt>&e3J#ty@zsl$t59W)s##L00*AwBd4< z$DGRYIZ5Vzf8+(=>nXaOZs5_gY zdR*~t_J!#Vy2{06Jb9DOocp{v52d73;{q5gpW`+sI37tK+YhMf=)DeEj{BAcu(Sp6 zcOPgc{H8IxQUorxcFh9TsbhK+H1STmXp%NAUg>A05;8L}!@Z0kV21E?(!yOl(T%QT znA%Zcj*N7!{h|D`bk9mn$yc6 zX1;s5&H6SC3->x7OOsegh}E|hG=F|;+M`7pS?Qc$wyHW3{5HTjJTakDd|j_Db}ryf z*7FMGmi}JK@{Yp@zK{N@3(DY1Tn+&e1UNTcL*Kec6#rqlVSrQR64B>lya)+SW#kAn zQCPKCR2dLZKqoax9cLKJHkT3du<0}%d~ZCO!oX?L(B?;2I@{WKpD@0GkfChqd9loD zloQ_=H=mc#G8->AW9li}8ag%DNE8>vA~7vN>?f^{I+Yd)%K98}R1#yZFOq7{3ZwoI zYEL7A%MctpAoZ8Ng|V8mpawfy6sz=Ln0BAmB&BFcrFK$r5Wl+Jta{kJ2$UsPhWAdW1N!}s#bv_ zufN;lRE*-@2K{afDSP>P|L4ujva;uwXY5u#e8p^%9ux26sqZ`>rp1Yf~@A>K6Q(q1nRg}X-7PHdXEP$@ZPygjofs@t7> zoRkFKRY#@RQU3u?mmS>PPZfBoLNn!$K=vHXUwGb(`tOv*8++YVK;7SHG|x0Gz~MA1 zMt|7okIPaF?li94GT3b?yuMSIVOX3RUDW(PM>5oYghKr%lU3wXmrIxexh=JRs%dI=0r< z4Ve*NAuG5Hg)QtN)j-cdIANw1mU4fI4%P!Md9-Jysg>EUJzGuc_P~inVLj0qM#E2-4G85lkmvx~ zZB=XIerVTM1%%TJ7*P4!RmkYRwm{L7CQeY}pJIDBfv z4*B8-4_og2ed^YH>`zF5$NeCq3jjtpSS_DT@$kQ0m|e*{t1#+6?vlcn;NueghpTfxiLhJRx&8ekN=M5s(nT8lj_r;wilJ?IzL)b1C+DPI2M}7sHpFy^tWc zq=o!q4E$en@RzD(`+%yxgMBoAT-`)G;rm%Sn6e=QKj?$=D;moq#}0{CRKdTNC%hpR zPY-omtq0=ScLfcnAhWKZgr+k>kL%)o2S`T-Dum@8I?^mnvJwpSO_TU+0tp>&Brt+S zy^hvkjhkPg>v#+nBTG((?5YRj734g81VX}>xM$+3eY`eyk2;$z+QDVhcieI`4lF-73P z(?xL*L95N{;Fk2}tmAD&eAyv*FRXAl?^^vC0m9RAR-2%@AX2Vy20ZFa)m-b?E} z&c<~cfSMd7TdtLUUJeiHec&`yL=NtGU5Gm7bESbnp7oE_1#t)9bw zDNF)b*+-kb8XmEogi+IFq5xyI&=_b39-D z;4{vKZCI!x20#N6eco*0z*!1~KCBZM_ewvIg``9WvFozhZU;kX?TtcnVjbSVYC!|5 z5Kyr%FJdT#XcWIymqtSXd#{;R`%1Y^Qht)nyXMR-8!}(EYC5nh}_wex{+l{1jIW za^tI^5Cs3PHRPS`gy<6Gk=UR!8IqkX(t8Qw{1eJN!`s)XHO*^JQ+((==f`VGPe>rJ z3O`!tX93^*B7jxd8I$!JB2?DE1;y=8_%`8G$fOV;w@vFn~BZT!AMMi21DXD7;fu|01^t$V|?Aq(_m-SF; z###x{Ym@3dxMqW1F30mC{A{ql?IE&rU}H%sA?dfPyVxViwe+|SfVDbe?t#g%L2 z+eKUly&U|v$cZlU!zcPAf`qd5$E!iBul3}@L--)x_#4_G+oM8qt&zaFuLUE>xwImS z7dm0s`@Gs}c)KUE5LkuVoUXRzQFzdB=SGt~$~#^%`Vo8m__cIgW!;Y@5u81kYV}_!Bo-58$|lfmy7eA%R1h61}&T z%g$9~MxKj^+suvRb0n^;r5lXg`lbRGm&_B93 zlk(E($yw{Cx^_-?kygl7-PS{ZnRz!5s_HdFe)y`ZtdWF*o#oYj95bBzsw6ptCtMjS zrKqtkDVdG2;5mXz>?3VYU5cHlHNa$>83>LNfnpJWO^zc;t<)x#LNWWXm)Xy=qga#b zE7vAo5PM^9P_s+iTuZARNFu>X%zp}FIgTn*U7h2B6}Ng0bb0BYB=YXDzqHN#P?N!{ z&og>V1PAAEY3&>5TpsgEtFwEN(H$oP1ndF6RS3m^ocoN`*3&v&QxN2z#h;tspRXxg z9UJqn0K01?m12Q_l;(GtOoONStiw!5fFv8-rduw$+>!!;5M2j^>2?tXbVP@eff1l8 z;2pTn`rR(D=PODDBY^hQraB7;0qcpkkbD3H`r2Hj7xYFJoW3v;7#yBQB3zeG^VsuF zu1b((zYYMRh586h+W&=($sb#nHLrfY_153m@PR zZS|)kkKhM9P1FRw?-M?@W$sJ{#^h1+sYY_O*a$C(CeDg2PDek6y~-P#*&WN0%)-a4 zGrV?&co`=!04VixV#vwN7udne#JbU{kwKlr7R1vpsNWDGySuBoaK*9+CAUk?1K|=! zBn5jKjVsM>2hKg-`|bErroGN-YE%=5t7;1in^3tdS5=!s_)Ya!7_YYiA_b{(X8Ab7!#X&^AbQrR`_oAivjKkr-5E_QWe~+ zyZs_pfYCTL<^U}JS9q_02re~#B9}#mCK4`GU=9i&wc5T~H1^agl9?$!6#&f9yo;RW zZD{_%JI$hrD?ddNU_}%QotOKK#0umR2Med$b2*scZl2T)r{bL&n$(p*z;Zy6`t@9O zO_*)6{ta`XN2}BlK`wwnSD`?4{snWx)<)khVv-uO}n4k zd?rXmM@b;10h-YQ6-*@4E#j7H+@MeJ=bdL;$w42ct7BBS$H4-=%M?uKmixO$(d<@} zRQb}}GireP_wWv9q2eCo9xE|EoR!cPk!Qt^ItjPm@l@*rF4ayL{~cU4`SMXb8r7m0 z$ao7aIe$yU+bCw2u26sht92k*3XbxJ9XneO!1})}+bl%f#dtTW1!KE7L+guLKGU;T z1KT=>HrU{tT?2;85MZvZi}-x&Z-gnQ=cRt?m+2qcJew?FXSkENU?aG-y^`(;IYc>; zKG=LGJ6(b@Yhc?P4Xf)U#Bveg+y9i_qE9K*dGfr3ekAzC$LUn7FqGX)6(iy-j9Q{) zwp0a*BL}<^)cO0kY$|Ys^0O3w(w8=7pwb0nl zVMRy$0}N+_Hr%;NR*H;Fz*p>B* zXbGSqH1y*P3PdQ=;*9796YymBGnhxx;&3!#f0-U5I>GL0vc5M4`B;1ji-U z{{e~~Izx2K+uzO`P#Xz^SfIU)Q~Ws{nn(< z6vP>)OZw-w!>=ArnScdU6T&OrFFgBoW*(*U3(a{i&LW-agW)ImvM!Hs7?A?jWpB=7 zcS$9qT>s_b>p#sxT6_d`fHgUjS5gE{Asj&Zg%AY<@Vn}V10W>8@bKmT|4KPA3}^EN z{=?3j&Fbexo`SKxyT}DF(E~ohcxL9ezi(Lpxf2q=_eEv|<^C8-h)JE*I5bv)3#R^aUAq{_lAPK5p*BFQOfQ|7*&N z(QRErBjl{FD064pj*|`n0_8(Azf+L~4@o&Cxqs?iOa{z-@`;G`KP8Y}0w-a>!)_K6 z#`;_BHh^NTjlkKzbjueOay0f0`9KReeE<1n0CFK{0JY}tDo`OPV<;SWwFfq|f0Q;E zav><0*#04+_K)HcK_=xfV)bnNtheYt| z!i)lsJO5eCLIJ))-nW-0KO~Cg%pK@>E4mAS+o{-$dTh)R;_|}D-7-NO8#ZGT_?!{l zjD0ABU4tLFufPf-KKxGn%H!!#UB6>QLKJ_L5vVyAXDDiy%q!c8$4>^_J<1$<#&Nwf zuu75ff=NZCah8ro<8#bH0C=AcSSDUY$Z!5!zyQ{jqP*_}qCjPms%QZk^o-T{0(Z1V zy5ixQjGE<*bdOD|2N-zPXr*!D3H$FG4iIBgj6M`uLM~pYq-nJ?>akl(S^8ueB8s6& z0kOGn?>=RU(2d%`tXw+@Ff?=y-@?4U{ak%-kru!Kx^gUaK61GoMv&P`Ycgc<>^VtF z3g{v@-H_GS4&Dj$LA`dEYkVn9EM_5l{WEJH_vgveua-%9?>YYnkc$)zk2h`e7RSAB zu!~7G*Q>RL1dBYcLV_=Y)vY}kvm?~QY-di4n^&5P0s{}zycx%Wit#n!>vor69wC=K z(zDmC^)63Ru6lF1HV-R)JBG9?s~<;!_2l;Q;_}sy0pTstV(~xUKLTL`wgwxKNehvLoY>1Y?9AVa_xQ*O zdDLEhFtPr_hjKjaQA&}25jy&A|WSk%^FLHpYNe?*UL0CX&@IMNyO95!6S}8To zzY+n|%oZOQqqPH#BKkjO;$bsVgUE^^#QyJ%qzV$V`9G`b8=q_Ex9^3JprI5c*~COd z%Z0^ZPlYfH;Pudkni0$ID%fl8JyRS?OH&>}fuP~gNQ8Waq=gQpx^rcG|1AmgT~uL3 z2!s6kyD;)8nx}H<_S1h$6v;_0Mni?ke^v7ESq3z8YD|9Ze@aH--~`ye4Z;0s3;2u% z>IW4?9^-#X*g@|U`l;E3|Frf0Y?lUdTK?&_DbA!dcxTsaNDvBS0L3I=4f;Q=Cw1fJv~c8D3AlZ>rtYmel5j65))d4 z^=mTloS!)fwDS7T*dF=Wf%H8)v}S_;k@q9N_kiTyFIxR)4w|{3ewZa!e0i9nUte-b bE>?05mJ`iysekEtn(=<0OSXka=1Q2}qxRF4{3er0T>-a#RKtM%FLAnQ`Me&~D zKL-|)0r1_Ap}CY`KU>xYz!tX4ZPvwSS07hGknaB%1B=<8F;rz6Nprtd>anEH5aj3t zIn!s#r-wI2_H&$I1i4@~U7s)-Zv3Q8?Z_#uf#4Sgnm5bllZ?XCuW7vGd&DTCCGAAh z5zi6l%BT`uwo}9~b9f`yJ;%0iZN>R}zZwGbX8Ne{hAi$NC$eO_eBE~Ls7yYdqgMSY z#(!5zT^O4AN?rzwr4)9hW{(V8&V1$aqVhDTF+?{+1Gn+?20>?|%4KaNsG-8kW+1Sl zd;U#}ka)Pbg18jq?S9T^1_3AJObyxafPpkKe5*qyrZK=kI^${^nqFnjL~4Bnc0+x~ zw3$Hj<|*>m7d;^&4n}IT;*s;)v{#eSMS8yvv6jlbg>t_{z}d<9ZTG8YmyZ4M(V*2p zLEHnreg^a_&|oHVK)k0y7DpM0Y*84B8N)s){X-0cmX`a9sfRM{WB+fVWp-Gr3i)Z1a$d6(vfaXEmv_?%xgb5Ck!4B5FW(B-9xLS#SX_xD$32e&IvYwcCC zObwa#`Xv<Nwl=!#90bb2p4nYfRED)wV*{YEsqpW|)0qm@xEo4aJ!Vwzc8SOXm?WN}8(_4q%>3LP3;s|m&l0QU#=e71K39^w4K~Vk&bC5kmXv)SH$wI{XMbUR;yqyD_7rm$XIcR+)E? zyleGavLOg(v87$j?mZ{ATQV3jV{toBD-Y$=%+%YAhi0`<;+&g5eP>CmA;+? z)RPTfZ(F%vLo##>CE}0%ywKj9C9>VDnY>Wd(rvp+*w8!4`wVQmNpe>4zC6<|FrPT8 z4TKS61ic`MJ^NHoMO?gJEHyG|d$UtL$s!y4tv}qkTW{QkZAozCwh4g#B~R;FT8TYA z7POXrHUCId-(A91Jc^Rz9)mSY_PE%kC<>8(q{DV(RNgR}iwFho%?Cy-x6>U26~t5F z{;GK)L;g~LkT}|C|EzVugCm;iY&Z00j?{v>#`S3UNL%;mvcXgK(I5rE8jl2K;43!~NB6x_z$IJ1kGXvfP@^L%^Ql)K=E zoA!p8M@HBQy{Czkn3~QgT_~E&-f|ll4ijq^?G~q2>EW^> zzx=c+E|tG8qzU4d?F@ga2Tk-To4vot%4J{-^tVsGpfR9ja+UcYkr)fV9dCw)DUgW} z87s6Ak3p`dbDFJ2Yr1``?N1infXz54lGjwCP|@tHx^++gwG=t$+KRHFSEzG&=|h*K zO#swd&5R!)nfmB_yyig3qM6k-##(4YRWC5|164(;wMEgJkbjvYeeB1D~gdQY^z!I-JaSvR^Q`~Ao5P!6gD z|I!i$6Vg|O1QuQ)U9Ru%y?9uOkz`&es^(v3a=zNr>CDJ%qs5U>NyYVUv=+$KStN=L zkBto{GB)ZYDC4ULoM5O}##A-ZXNjZ%%A^?=Fr25Q~yDdy3BDo z*+t}&r18h*LC!XTzobz&7aS0IcbvxYRyHJ>YSY1Si-UG?jusVg=A=@tCykIg^cU66 z`c4ilA;O7&3=GvN1Z1h>C^5?4fVsZ8h%Izp!J9U<>4})+BL9dtbH)QR(&Gn9mP7x7 zz+K0vXra3jc^o5Bp8cLmMvWB}PEjmt5*?Kp8yhf$ zFn$D=z%?|>EZglr+ApW}r0XQq?Z`K&Dw6U(n`Idpt9wqMijh4!Nuy$!8HxOxw~a`p z3XO~0l{q%%L}b&})80PIDP?CeQ*aU1WECgYB)}YRm7Saa8mgn&O(%nV6U(T4bqlqU zYuF$}x|vdMVTCJp9SmCPG96fl$O0wpZnqz}!CLC}t~Wc;bBT9t&VKsbo3tZaseFiT zg_^s5#;J`S4_%~+FcbE1QnjY>PQ>;s`*d0ACEeUhxGio0!2*OaZlVuI)R93aJ|S6_Gu7H2@S}jt;!|#jQes$l^3sPGMysCB zY?u>DFV6jY-D1X6LG8QkdG&qkusIbt@Tn&^p=Nj6GE>Lnp@^ZZcmjGmShT!EL+*q2S zSyJFIx$o)xt0(Cs(PY>|Z-}+H50X`TcarQ#&DU*&%T`?a&`8fL>MUN?;g3v)%uU@( z6>q!Rd`M1g4F)xZ3(!g5=8lzaU6i-SLjNq@G{kMEEdo7_fGwn~^vEr_iP2uUBxi@| z%~(f!YO?xY0gKniy2|hr1g9ZsF2Wbbu2GDtAxw;(<{iq~!@-M|=GE}EgZAeRUfC*| z_?{=3^EDLgAoU`A}a)*m*`=?vuC?PoGg@j~1;q2pRqis&@#eAc{N=i5e z(Wrbr+U9{47Xj^w$xOi%O{WgVr}s0Ag!RFkbw8C7**_PH?p;c1jj6&mhrQ*}>EPGl zxzMoF2SA@P=8ci^A_TC9i>}C7B(faP>NZz%8o<62U8wgv9W`-y^Bdks499yAbZqm+ zRHzT2>+5{Qat~?L_6zzZokVE9d_6KxPgXD5D%L$HU8G*%h#qXDoES|R)~ z&kFjHloO3^O265(UDQhLYS`V{5tBf3!`}ARvH!Z8CY*9^!Gbh{v~x=L*f_1e@DYYR z)$(wFr0hYFUM3??7%OEud1PEBW4$+HHu{Hsa%P%`i-h~gYuqT}3`%&Q7tx>NYbw$l^Wyb+QMD%$TyM5!{4U*DOjf6g zXM@6JZlK}W@+u{cYV?GEx#)!pgLscyNYUyg(*wE==1<(n%=VdSSF+!t8Ew|N3;Q3q zCbH8}jtJ-93hQ$d^=hzw7u0S(_$s@glc)qwPpzL7=oqxUwv#hbZZ4BqWUZh|41nG_) z{wc6{u-YJwMDH0XTn%0rzx4IjyD|uXoaJc!7J*wqldVpXet7w_EtjoYSw{Vgp-@(= z{ljq0eu71xw&VRdxaPN#wg}=88JeHLHDJjX(##}RIu{TGV zld#m;r^iEqYmqFb9OkVWO*IhMLB2kg^E8%Nv_jsZyJpS2KqHpPAXTbSdmkgz@wuew zt69q*vV=wSSE%<7i;u>hsl(m&iSZXt!2-i_N8eK9uu z-Ajxta9kOstj(Rtl+N&E3xq#S&s5s|rXAKkn`rDSeL6oKWz)@2Fu$y)even_OeK42V-8?I?>HIb@YOxII)3L(aHII?Xh&!Yv7O@)lo6h ztU4i3E&;plaPs=ONz$k}_vefe-v9x<;6PAcoF{Q%ha-b?nRP5n4s9fXS;i&^fN!&k zSWeckVIbxk({dM-_tIDw1a`A#0XVKRjY2`4;BVk73j&J283oSw$hKQ4Sl|PK2m-j1 z1o4-ByAE3Zrv)z#;vXpp&uNeO*;TFs*mai9s}Se^=D^J9aN)kUGVB=me}5GO+%y2h zn5WM78_XBLzczz_15a^~|IZu8e?gQ7?wB8ss}JB&dPOJ`@j!S8zp{aW0uw0HC=hMG z-~96b^|-}Cz*UL=!Jj=4?(O>Q&40WA(Q(~ahqVj~jvW93g(r$(0(nA45--A_@VrpE zB#1J{2oY{wc`oSW!{;erPjV3UVMQgK;6TTb) zm%9)LsH~U%!yWcI;vjN@6@)Mfm)(?%=5j+WY=JlTZq8*xF6QBb;U%2Y=zGd%X^2|)ph$m8$_ zi?T!#(2gYPr5qqy#1{Jl1zM}T&N3T%N{W?&rY(-0>Q-vH_q?ps=5rTk%0PKv7NLyF ziF+W+m2rH}(n8t`smpY7Ngrvb{{l;p{L7U}E3ToE)c*FJiaS|zrxO&I_mm-nY$=vF zXI%ygftc}sT-k>La2oD1~>R zw@Fxu#l5&P1|RI_tQvstC>2RiQgzMKJLd$m*g0M<$m3dsaj#ykir5hz+S%Ap%m)TX~+WI{8Sg) zcM%?QG0?)?FcOLedwZvo0q&fswae+g#O)4Nbsj*T5bOF58Sf_3JX^$_BKSnpFCdla zkEPpE%J%y-J3O4{YW_zB+BMo)jhJik+6yKe;EawhTaS)3+%FDlztDNxOqOP^;kLL7QFPSV|nTY z=c4tBtaGPF9gpD8^c=H%q&O~V5QWj*;nmZnU1t3;NM9*Phehc_3prD#Lxm7NGBkQE zfc-#*?0gfxu&R@sF#VO=YOiz>z(v0m8n_4VS?nKbQ#C$Oy*)HW*+iOPSqfq*Ice7%0K4b@8DB5f+zl zP;C7RZp&YHiI^4^g_j1BG`??1Um|hG{;o@j4;yoz9-&pQrw?uQ=t|*xz7J)kjR7q9 z6$A3pdHF9F1s(CdxMA`BAf&w4Rztoc#l3dp1oPO}bs-x!(U8hw;4(8vdMqR!NXyp? zK*>%d?1Vt$8I0j7crQSEEJktgdrnFu-9PqDAhb#>$0Ofol*ReC_@fbZ?Ys_E?e1U9 zx6YiMyr4ly-y+qr0|bV?xMwaxntN=9eCa;i;86Zbbbx?xaqrZ3fR=vk!HVFuUx9I# zlQ`RFQG&}3xkXs0{=xzo^VkrGq2X+=lO#CoZ1V^S9k*e5(?Ybpzyvo;`a3HaO529} zvW6ARX7ppU{!FwAC3JDSGHoF)>KNlt#w^X4B@MH7k+>g8^E!|B{oCmd@pt!}4hhsb zXJov^CqHa+l<~LQvyHypJ|myuwpX7Zw}T2>i?d-sy(-Z@E7+WC#(HWc42yA#Zx<|h zu~g<={mNply&IG|*zWGp6&12SPq5TjKV*7hW@p3%gHaG|rt_A5g>q0wg>6?|9HMNx zHG;eilHL`PCu-A^Q(EMQCV5sZ6#d}Pt|C$a}c8Ft;=GZ0)?YJW2al&7!AvD zy=Xi&IzDf}?oz(8{P43DXAhyHW*W<9bWbnPtshvumI&6(`X^-}g z5yFOQ14z&BXGW!tde;nBAL|%tZ=$;dH6BU1M_YMs;2CHr53EQZ=zpY5gMwFV!-Rxi z!e~+hFJut~2bXldqt?F7xEx~K*7A5D?7x+_M&8T*X&!wx^RsE*6%e6{h;pM9NBwKH*>BMT@G^0oBK<`$q-RtBurot%VA~c$hs;$NF z8#Sb(FDFR72?|>ZL=0u2#%|ZNdk0fK-}{!{vM_o?g^gqE2~}1Yo`HbtlJWP@ldZf} zz0$#yOwWhy>IL26&wU%R&~*R;f+T*&*~Q0!?UPDxNmegY!|~0~O#qfhF!T8S&q=%t zo(45P8WK?=BOVhJP#H*~pJ+V09YJ*{lD_FbU}G#gCOM})(+Rpgk{BW1cVSeFDfF;@qwu}(?-zmi>3oW!7OzJl@RUgj$Lq5z*V9!n*d6Jw=N~-Xdui;er{QU=mY!~m?x>iI-fm{wsw7DxHT;RW zAn1sN+yLnXY=WA$`y#~)%tW_{2J=PQ{TX+R=fWRvGdlLf1h>HU?w`hTZ=zJc!^<@M@{Gc z2PGy*^7K>#TNas1?mj4#o0ie@qNx>$U%GkBXPgznaop$-KdkK zYz1$Iunv~I(n~sLG{=>heNGvysnbmB->`Pu>IuI>3LjCT=*@J!+DJy%XD{Sf2dilN zH-AKbnCO{Hedv0V;Tryxd{9=zLJPnyBYb1T&+9p*RuOWo*T33VZdquhN}h7uW`{Ij z1u5qp&yPpTma@P1R$$>{-u=AVov*~541;uz^D+;Jk8*#^Z4z)w3n9B6t{)ik1HwFy}eq@RWD3>r5z}PzEDL zz5L)fInNyW(!AbQ-)GLjNT-ETD9GEfbo6uANOst|naZg7Yt!Qkq=mV~B*u=aXXs$4 zRNDR%!B~I^;rp=pq#g$wm`^it<{!4^Aa_ZziL5Ksfdb8we#YI)j(VA}TZ8-6$&m*# z-nlW%1wL%tVp1fh>M+G=#n}CZTRq;ShEp|bFcVCs93%IuDt_#SD*Iri2?|_whckh)0lWE5!UZ;vw)9_op;XGE$ z#^WAzodhCUv9DN*OkS3xgof%Y znG;F74LtiIMQoQKppf`LU!Z(eP?omHBP(n}Z1MZ*eouKIa)k7)bJ^Vl%iduaamM!& zNxZX(6ne9-&`M8n)##DPG0$n3v}TX|SV z$ipm*JWLS^vV;UWA*3cIA0}DkoDD7Cy#mpG%9qr`Fc<|85iR%R{n`5zZS zL9NOV@!fi^nBG|4z2&ZGr~Brj+IF3PRghA6*lwn)wZ1@N^JUr~S9*lcu(?6C0RV7O z-nM&NUM_UJxtr|okX#o_&$zLtOMXU!+!vUWO5qO?E3P?_4QqsB5Q`Yb$cWBRz$60~ zfN1~4%*WZZeLVt&q~3JBvRxL(7*>ddg~v^6%5rCqDO(wn<;)2u^2I1Q%Q{0fe1 z_Brrm%dejm0DLVk zjtL6te4x)7d^tV<59NH43PNA!;&fE+!#_*j`i0-*m!GsfVB!tk3*gRUsn!I`ebPE5 zM}SyJ3Oeat4E;3*%x9T&@?0su->okzaT*5M1JP>P>V<}Yiw28sH=#8#q=O_ko&7O( z*%CGm0o*hcnAJKO@ZVH{0oGl~qL}JKJGwRR80YOEf-`IovHD=OeDE_#isR*f(;}kJ zbYVa-F#+J|+^db?T_XyXNVYpS-|(++Z4>+s0=`d4-}FbumqeU@d$WcBI7s7rxJLdI zIev#_QN6837ZBUDMVk1K#PBrut=#~73aiAd6gC2fe?Y_ze+jSsD=IN_ydj(ksioAOX>t(OFs3`TJ65{xnM zdp^7DGt3v4J+g7=2wQxaJW#o<>#RbQ(ZbWgrdD+R&N5t(zF*53Fde^ai9h09e?A@?}R)zR?_4yzUdDh}~d-EKS1wl8bm*T+j`vr*{ve1PE# zR!3*=h7D9y&2`(7U0`osD^H`YIIT6P&oc>#A?xVJVJE&zfn%AiabT6_wJJ7R`i^}S ztEC$}M?xk_4{$SKGWgssK(_UYEq)-M6)15I?dOR#(tfvBR5Fu&t5CuQz7;qqz-;p? zm!0FGXR=}7(#?U(x%a~``47!SKTt0}vZ$wi##r#c_lRHLFBHO=z4}45XVKB5O`Er7 z=M-!-dzAfuLjnO7Pi4ANG60Si-)e9U~CS`2xVolHsA ztNLuMh}*sF37EX&`T`dh%NSrp=6?FhBHjfJj_U;QT^KHWVpPRevQD)j>AQh23#vrS zrg#>XwW=sRU7C2cbv3V1(AE5{Hesc;drpSZe{cS43=AG$PWqomb9|bUNgv~StM1F( zO-22Epu45mPl&+Assq^7ci4jNd(+>oC41J{jy?F&h?=Xbcn{Y;LX@l3&kqf zm=)qu%3F9{8F}p_LNf}QU4nc+Vbco0tK`)g(=nC{yZ8=FQ-SltncLcBoNkYwewGc) zQLugaHq#fee>=|(uBN*4rn3sm8<1+TLwXA4cCI|0j{l_x_u9h(&Ia@6Z0z`ZagP=+ zWi=Rx1^$%$m;?`yqYH_Y=eShW6gqcfvsQ z(cdl%z;{0F^j@ffo}6u!0R4%DO_ZgwrHz87l8lDT#s&0**zd?d{wPxqaJ=LvLSJid z)K?@ipoc?_d=bKyXHWj<%?AzaC86dG3zVxFpf=ep)k)VI;~0}7^s-`fMPeX*E8&^g z-DD0u?ruT-aD)9p{`q~dL{OmQH%GviCxx?^5H0Rn4LI(SEW~}3EY?O69vY?;+LR*8 z&Vfg8IcK3<63;62N8Gpmlr~qR1cQ9|#*o#%`7TDU1v(}$2I6wjVEB$v_+8nRVRgR{ zM-4PEpaJI~pCaD>rbcPJ3QnnY5bJo{q8#4xGTHL{ zFI07>%sRXB13DF#2mPEC&d%60Px;41yGo@%*1sa59FouUhAACco@}J}UN7Gd#6n!3 zTf1*w$oZ~${Kx%b_y$jIWSIILnX+gAdb^G@QLW6U&Tl}i>{Cf~kOAt8X+%LV|ERuv zApQtiVE_5E2cMcRyKN!jr{)U+Y;-b%{685~Tw7&qp+79$(zCyJlt*&+W3WM4vn&ir z(4L%#XZ*-Bc{$B+H?@GWGSj5e3yDhP|4QQMnyaVU zNqDX0kduLJ4r4U$?NF7i5yO&%nNXR~$zaf5g_eHhS+Kx@4}>mcPQJN=M51NWuzScH znRf{4>EC$;W$Um=+JpcAjY0%?W$;e2lWuu7R2zSVO{-?+^L?z|#xFev$Mn9m;YUF$ z)3QSTBqIpOEK6Sc2Wxiv0@ohR6!DR`!1CRziw;o6n7IlBpN_HTLr8pyuq?FE==td$ zv*=+z>R1*ff20L#VcOmgzejac+;+TzpP0`(lA{KV>o#4icjS2CN^|anium+iQwiiv zNdNjnZq+5I(@VA*VYf$u>u#qR4&6Yan$~6bdvBN`Buw=S1bXxElAce#;PI|~lI9E_ z_cSrRxHtx_3=p95(v{U0Py3>lBWXLlfF@y56e@nS(mL3aRy$#9ttKhiY&X#tyc*?I z!h(6gkkQjS3k+cRGV`Hs-Aq>l*15yc)%%HsEOj|$wiejW`wE`5H`$2#7)mq8ST;YO)kBD=DD3BgXbcMVW?Je0?-_gFMyrV6tZYi7%tayDDz*EQ(N z`C>`z9Pg$R<9;70!^1l@K%GW9F3RoL{;n7YzB@|0_&MsR@ zR8=g+txqjp^~0+_r999#u=S@g-%qJ;Rr?v7WH)Duuj>;N!YF#>nU5U=6&^Q|3-vl0yl$OP)Rq_} zh{x`bP2!F{_N3D}Q3N z?UpOmu2ZFe?R})abI@9UxA~QGAoR?ZBxP1#o>aKScG8w(k1ZRa?jwUSMQBool4arj+)Qq2^?fhNYl6e5xPBGqH{zzWUL_n{WPS6*VTCwh~54 zKe`WRa+r4{Iq6PBLY0H+U_4$Wp`{l6_(SW1+xOh}B+t1FWkf|=JAtaz2B~QMi>ucm)tU$)vA2}omB_os*o*2p8Mc-dS zL#7s&;M6}1d04Miw`GThoam2dlG@ZRndIxjGSKhGmz#2Q!{c_iyhP5v8+BG-4#JHa zFl?(%3m*!N7Tt5$xiHbn`ljX~pI?UHa5H1mz+rKl?X0kQHDr3jvRb9NQ{tFuuu;T} zECJH^ceabaN|5e7m~A`@$;jy0(FB!A!W|l4b`Q{OV!W+BY-nQbp2Yuk-;*1p+Zau0 ze=o3TleFx{9bB0aSCaan0XA*wOgH|M+>>%sPHqB;f->Z1@OqVR6xfWzM48J@3D)((Gl;=n=!SwS~ zk(#keM0eN7=^m0qf44$+X5zIeT~BP+tyhP<&Sn_fq&$nJs{>RG>;tUBjK3a?DmJ{* zWDf|}jYNmr+BXs$GSxkwm7q4Hs7z=&>9x(#>DI*IjaOoGFDGa$ZbpSYVn+5R*14x9 zm;57`YE<>5Axi)n@dVs=htySBH8Q-JL!Y+~KCz&%RFpl^cr@aC;upgrtCrr?=a-_! zS*3}`T_HT^9ZR_%5CjCwCE+y!@ig?ij3(?DIs~Is$DB$lEv#b3qOBHnke=sn7CX0I4SQC>03WsiYuH}=KKoP zF+v|43H$YgI&PPm&+Gm1opB-dk4AL0F*E~WmOw4u6~3qP&l;(z4cE<+2TcT_hY;QQ zdzZ7rseqRIGd3sz33`kD zb@XcNk5ZqVTU7eIq*{vMa5pcH_})b9gq5bQK}nBSFsnZg3iCxpCdY-UPI0+r-^(G$ z+^_9wu0pv=9TU2O9IVD8|I(lIu6>bQHiNxM)oN`G5&3i8t7Em!-S|MW%~DJ!rf>-! zkeNV}gJIx_&j%P#eD@H|Z#w4)dUrZiBA@3JQ#i>QX(nhwMY+IRrD77_lbPL{4q^)q zC~Ek<{Y`JQnUKJ@K>APG^jOFRP7Bj%?Rnm10@y%5jOLhj`wiZKpi>UWO=ok%WoQbjiLF_n}@ zw-BC$^r^z4V)5%F&4YA8!+Nr1dp5hX`MQFLVtH%p5uO9Je&tTZ7Pzo#hwI+St%2d3 zE*mYsmWGvvI#4D#zk0eigIvu)yTlYKxa2}01R@l34>7TAGU+5^b=4MovW>mC${X6n zGD&6R=txQ_6Qx@tWrE_RZ?^!a4qZS9ajtrJXW=2$^uqGakPel|GhyEmdQOt`B`I%a zY_ikGBF7Q0B_ts7Oy0ZR>tjrfurj-1mvr3iVeXBjO3jHOU(#y5wal88WZLV!+T^PM zjob?h4<_csPa**dI+`v{_VgjP8X|X)q}NT&m?i;Lfm_QtkF=m#7rPJhrrtqD1#`My zbgZdru4SGw2hkRJ`(4$YG~J|YO;}!5>2{7Tbh?viU=}%HEV&G5?;57VQ{AAcMKqWnW;(=`J=%@PYvSV};ny4YhSiun5c(1sltPyLDxCChNT+MMX2MK(p& z?KyO@^F$g`{c_CKAX%^tsZ)*oTfT*7CIXI#vHz0(z74@^<8^2HKp(;KJDMcG`aRli zePcH$K$Z4tf-Q)%5eM(!Ps&gy_xL3xtvr?!ROxi{EC0w$QvaIHarhkGQr zke|DYG&yH_e%oW^B$6hp@EOK~=xoJ~m}Q=k+;pRnXp&J*({S1tM8al5+QgI^h=VbP z{rPH|KQ1Mm?hQ@ZhT??oAnU1hd&CB0G_T~D?QFiqpvHDWHIrwQ#iQtw{hyVz&vd2t zXhvV*?cSe}ux*NO${7by^HpKJojpR?@a)eXz17jYy1Dc>O@|Gs@X=yAg!ORnQO?2n|lH21gir5W7>!(xpB}=fQ2( zC1(7@7MP>}c?)pL9pMReVsjG{GRyu6Mnqs!0@`bg^C~*ryP`0&V9;$vkfIEX0MHh4C3x z7mP86d4dg=*k|7{SMHtSu2Volg#q{O6hs2qx{+JNR}>`WW5N}Y`1oT??K#+G1IRAo zOdbCrSa)BM1J`sm$%4O04*s*aE+?#(=uYuR-VLDH>WraBE;w70Ug6$){&dpJqz3Z7 z{$CKzl>j7Jw(Vz-#ECE8au|OF1Jez6&yV%IW1?il09s789@LHCovOU;PO#5O1}=so z+25>~XX4Csc6*4POG%_Y=QvYHGyyJwDd8_mvB@9q?~ecI@c42ipD8h=4tXm9lH3H0 zM^N^pUb5k;MBPX>^qX>AEbEfjO;hea${1g!3Xoo@>PhBy`il=i@ekq?CStELf&B{Y z33)3Un3X2!Ai3#6d~#MBjG6$IRAw=Jw{b?IAze7Mr$y8+-3L_|l*Yyuh>L-$phex0qf7S>1nB8I ztUqf~hBOeQ>4Ob*;f$9k$c)YzOMv{zJSHSiRYCzLAG!&CW#0tt9sq^JX@14`NunP- z#PKvXojx1ET|BOby8@8qBO3>PLwtE&Oc#W?9EaYB6b?q(!ELC)hx%#iwF*%dU61ZB zON66#INyVGX!}F^r0#mMF?E!hu9dMnLk*?7!s`#he}^i3fn|dZL_e%$7pGy%gVm7= z*X4$jo}QMs4i_VEAX0JJ(hvmp&Oru({_9iLz=H%BWcx61nHnTKm(xw8WSa*>x%dKT zp770Bru+qX&5hsKpB?<~yT^CEm}(vQ-MqbNfG=S^QzsnwDO422!a5ZK0>$t+Tz4$8 zO!7krm5kp333(;{Gqs(gvCjNx*PUn004Z~bcO9-dk&x^9kZ|w|Kk2I4F=cNX3Dr@; zZ<4O38{We551t0N`=!5I;1Z4WYw@{ty&Wt4I+BDATCZ<@EJZ+SVyS!>V(>03k6Oa0*@IEq)D0ClI!w#-9xG()2P(0^V zRu5gyc+iqDs(zXhTYK0Ab2I7tdw@dE(QX4LT8pC{YD^bR*zxB#!?PD6@<+a2ZT9mF znG`%jaU+47gZ`nS`G&g$7Qsl~*e`#(L{N>xqxb=j7*jJxoA&08bKe$LMUu zf8^!v{Phb3%rITP+}9vGXi%H{6x+V&HIl4|Ex_0SeLse)x*+%<3)gx{w(ECiL3A#8 z+WJ~jA&UPL)tRa*wBVH0_w?G|oS(>UK59Z$h&Wh#OAcedj5sPTPKk*Vki?u9pslbSWLePEhniOX2y>bBBwBc|Y*_1+pr?y5&-L?WN?7;ojLb->p-0 z>SSdySQJG7L5lRq=$Tvn@4`;rIMh&-x9YJe1?kqZNAX6Yn%l4pjaK;wd#&P(ozZh; z9801`7-P3QDX7|kA}JcwC*;cTS-gJI{N`DSWAp=FB)G%un}9(Qr68-m)M&(Mli>DD z!2?`bX=!uFfbAi=KQr>k)#eP@lv0$k;*;^w1sK5SG=yROWuvCi3kr^~IBd__>Nt(2 z`AgHyw{Y>S$&a=JY2^AHj^|Fug4{0zs#0JF3{agM!0T3gh`>owCgtN%DA4jG|GU!^ z?ObKbke>Q;ie>a7;PAid%i%9pw_eS|0XzcTvjWX4L8(YNuj z9;4^7Q?d?4}M&GozBfWEp8 zDr&-Er>}VI4jWU}#=V)D5l!GxSCdS{mBG#OaPK8Hqga0HXBi|XxKSeG!{rz+tL<~_ zCurpLc2JdOzJu5Q_F0+ErlryR7Nu5uah6$ThW6ml=4KI^q4hyVUsCm6CZje?Bha&< zTSHi|IJqF-r{nzh8DDmXOb)DDG_(97<=gC|JU{T->KrsvI9u%)<7-sKP-mNnVVAmH zGBZJbY-|l7sh#0rQ(O_jS*Z>4?xge@n{-evG}6J`f#Z3E49_F)U3pBlh0e!jC!}tF zTtve@mQYfhv#)>;{=?%{XIcw%6+PK!jhW0HxXWci5$@?9stP33_^vCZ0i#9-39k-j z7(oBc0xlu_tq!`P+V1*j?H#8fkZeM?et=86W*7s@Sm3Ye8Xx37y%m~H*fZ(7k9(kT zf18r(=mv7O%-%N>(mFLSmMo=JBGOa_jL&ba579%jvkAze|M!BonaZ-ZMO?BxA6OH_c_Hh?uI!(V+_n5m?Cg=8Mg z2!C=C+Brz{O|^+(*zch60|mUib6E!nhT7{oHA%YfpLPWylLj)?^>b(Euz(|&Ak!{b zLaY(7%tqJ1lC}n*yxVp9xn7*1+XA8pSR-Rx2fwVpCjH`d*~&oa;NXh6eB6!22u-t9 zKo2oD5KFm?{4J`XhL&5_MirQtdZi>2$^D2-(52)jP1 z=RK0OUK?<<`4F5S$c<;SE1yDjPC|X6fj;V z?tKb3Fmt=Yl$|CqCwL#T6VR5NdpqRgre`P7=K~4FLVJqpbe`8f@aoKPFI!`y>L~Mf-+Y)6-+Eq*n^w=(%dpl= z)Kp@K=tQM)!%Ea@skYuLgK$tJE-Qza2cqAVM;d-p}yOqi_bovUc4!<)G4Y&KHek ztk2GxG|+c*DuoUAP;9pxczUhM!?goso}Qhh^11$RMpPtQw9(2VxCgS^Ydh?_|4@O> zbOj+iz6qmx;r0;;7Enj61VSWLt=;fdV2$n)Hl23SB1gw65tX|U!aD3 zPe4o%)K9TLN(e_UDc@KrjvsqB*CS-(y$8p3PKyNh>YL&g>Jtw3`@SXmP0wlJ>9HdK z8Kxq}@DdGE^+IF2f>5^9=?5|fe8n<>*ij5#oRGwDJ+9E>BahE`C@9|8BQ;FRP{z|w zit%Q?GMDJ@Fu4(-G5XywqJK+d4nP>-oMrGwEs{UoK3>ymwyWn=cot+>E;@;Ac#(W-kZLl^*4N zj?!pu+PzZCr}+g2I_GQaqePJN76<@da`VVy=n;v^1;A1_c6~l=0p?dIuLh;gqc!k@ z`ki|my0vlu1mxfU1)#%hba-o>{zCT-&gR0?>j=f>-MJ&4DKMh;9!3915Gss?2EQR~ z*u1Bsv(@A_mf8;V1u?XYhmo=wnx$PUwRqvFPr2;w^nC~0aPUNWN#V&iX3C)-?DyFv z;tRs0SvL~bKER3|s2ku+=C^69Dz+;{8U7UHRsLK326A`3B}Sjv`bh5vvH~#n4e`*q z1oIgP0I8?0*@N-JyXyB<3ZfNMaELij710?AR%@YqaW$U~AxytV;(UDCjD84DAGX@5 z{wqvHgz!6+Gs8YYN(KK)n!_HmM0A{=is)m|xPSLxNGpD^RrR{k(1V>A&CscSA!gL& zs)fA809f7(kKub6#8P+G>$WcAAOh(?;4oZcg?~uMH!%_+d}6bcDHP%6j5Fr92JspA z!)3YMLE;bo z>KS+Nk@uCidb)~&Tc^!w_u@%O{gF#Y@cFXr%ht{1DZbGfVk2vrE~IMHsgXI@p(&j| zTf|5%_&N85vMA9>KC>JwqB9$?>Ui4dbNPvcKuF^6-L(@agiyzbD7m>2^x6qf4t#6d zt9kCdhgbnM{%&h9R?rO%X>9=lyya#M{rG0j(9ijLi6WBIj+Y*1-7?Eb5NJ9qvAa@j z7_ctsQbzZVhJXzh;|*4E1G+VXUm<3Uide`2n!!vaL!pXoO7s2E=u3oTt*0cE*Cf2x z00H0l@Pi@nhCt%=^QNaV-8Th*&oT+H25#ob^!|ke3dGJ z0f=K_96uBaI{vvXkT!h){dvjYU#eoDGm8UXP8GaW6>q5!CQ^YQ){|wOy2T*K{Kg3T zuO$Onf!b?Y7NY@-lXe~SF(`l#7`78a18Ff4iT{y)*t~!?DP3bS6Ogh}IrhXd6A+E< zcf4xo_sOw@V!M8DKMu6+DI;;)&pdEW)+Ve+?8t#bTH~VY4Yo{X^(@tLu&+1_VnlS- zf{wCqA^-DEHa0n)_srK$@;@hTd~hh%j}AN!1$S2GyQgt#7z^3m*&rVd1F@8nkXL-0 z^aOmr$Kc;EVY3hbZY6Pmow!AAYRz(C%z z3mQ~a?oW+8yE0tK@9LBT?_T?b&pjD_nNOfa{_4O|iT#x(+k+X|YzepSdd?^8pn|3= zuM-RgfJ*{duTNJDz)P~*pVVf3Ri1-eJT7`u5X=|YVG_zXmJ+BI06{5R^( zGAOQ~d-GU=26vYb+}+*X9fAdScL?t8?he5ng2UkM?(S|oGuHrOJPLV(0-+5i=b(W^i!n8CX;S>%nbx z|99O0GsBNx1={zryP&F{^exZ?^a$`R>_jDG>_KsZ{iwY7Vnr1+N zJ@oC9_vVZ4@9(}`wNr!XXgq~rsn>O%?X6{sU zub^>=KpIZuw<$Aq^cf>=v3pAfuJvlh3jby;H-XPo(B}-HmigyaxQO)<4 zJz4jj-!#T{un>#~609G>)Lgfa`p>th*c=tt1&Bfy*IBj1qF@N|mhB;HvHs1=6HiM> zUWfUZ@9mdWshB|~AK!P9|BQ+70r$lu$nq2T%wf5OT;($^SqH$qny5+zjY{!f(KPh= zC+2CtO6w+wvihU3b-lG~LLNj@IEYJ_9BLFBZ9uBDSdIK}wPg1Hs>$?+zuHfBYJ;k%< zzqHW%2@wP|#poASfwFuqI7eeGTYQA_(!e6JvBDVD81%W(nF(ycS5<`18X`gnh_1Uq z>rJMo@b92TS4TtELR=$QLI_z&aNTt&Uk$PLf`$f9$yz$w!5fp`jI0<*?*ggM?;msAk}H=Bq%5ytXzSw#U65eY5oAjWF> zDWciT9_N!P1@VAANE6oQ@nt7OW&$q4#~rQg%}OEk*g73l*Uu^_V$iv?-uX;K%i6!w z@Hm)J=Kx{Z&Hrl zs(=og5mf%>Yy>F$jK;O9^fb|cO~0zY%G;1J{Qn?djx*FEELPYyxVX%3elq0Bp^7VZ z-%TQ~uUkUopXF7+Q6d3r1QVx+$#PXg6J}73B7w&LjXi4ZBJM*VPwf}He(`to_(foc=!&C>u~YXO*tQpPY0ph|b1?cRmkDFUMm9PEFWHvVry z$^YVG@&piowH2DPS(ozTd;xhfL{n1;Pas~d%WZ&O2G$0+fW-}VfKPe@hZ-BwZ>IO4 z2i#@{6F_;Fr?|BPgx!fSzlHg8YLLYFnrdpCpr65knK3`fKskRi3T6o41PCTXtbOf3 zfuB-K)w0y#@2N2BwEVAdcffpt7F}5S;!U;U)l;U66RLhpeAeIENRw z@RiCv%d>qR{S^Qn*-iQd|6e~b+Z^6=U=F1U+U!e3O5}m#P{{(3E?h}+9a2-bx)cka z^pa@boTdlm`7f1$9q&`S2M=>ROBxjh$&fE#4U#$g0nu0JnvFl7BT&?4bVh7y;0xCy zRE$m@Yx(waCWN5XcC-oZSt+&9y`n2twW@V;|W7h~UrJ`ucC2zAkA^4Kql*^GyblpW!i z_ZuehbUG#6~&WX!CiWu<6N8R3u+fcAWvMJ#a($ z$Dj$MBT)yGg(p%%ymfA}q17&ofHFU7zAayal^~yBW4=C_Ey>yIzsA`Rl%QoZ?}j4urB`ImD-U0ChLComLHx^bnBiXszvzFD^TXP+t*`V(qHww2H_hqPhltR%a~K9|!%_3r z0c2N4>E^4NV5{O5N@nC!DTeJURp}C2JdQoV!R}Pkv$AX%YIQql2O=JE_8VX7&oeG4 zi@!K*?LTTaPLvbip2v~JKD!MwoE+n|n7J%UHw-L6FVG}2avPxjP6o^bP?EQqkE(OK z;{qbOjuW)RCEhe$MjdG9sqR`RBEGhe*dPQ3(p6CjWzyYP?wg#yfG@<3sjC&bBt}Ah zy6ik@FYt6-@X&8RJ{8l!pRRMaQSJ$14-#EIJb`B#BA>fZl@Im`7F&LcnXN1As0iZu zrO!g?IfQa@mCcLkvuaeoew&^3dX%)@-SV_0)s;!hYplC=vlCM8L0yoQ@!Fq6JF4$} z*4nF2+?J1%6oAL#q0a0*448X=#Y25sTbPMJp7*r`oO8NwRT0TS7T~R*u^{H|n@(%h zJ$RsRv?PLN-bw~gbE3{`s?upPvMea);X~YKINPs|yjAI}K8ZA;s4)}mA6uWDwC{&| zWzw7-hU|O2SqJQSr$*80il6PRSV=nKAk0(7P#@uM`B)lgzF(=?Brq~bYU1dA?E2po z5G-B!v{vc3Oal59<1w&5wifulG%I;Jzslm$*(?22-Kd5~{GwDiHl35X(eZIw3G_0u zQUq-ne9IzGP#0KAWT;C>4kzZzdJ>gb8k)h02Jh6GA=12@ZJvtP;Ay4AMc@&n=M(1lNDVL6#0E98}X_jKdr zS@-0{NIUvU%22T9+Q3_*-j;IVJaI8pAKU;@p^&1KuoGmuPtS3B^Sagf!ZkfX%McRB zS5z*mslR*}9dW0fk_Y8RS++U#IQH@9P*9$&pCdbEi z4V;i)WYsyRfD|+h&<1`KKF

4ao$9u~s~NHk;x$R<|B8618SDqR>9VANgh`t8#&E z5&iV`cs%U$1j5Rff>UV?=J2G)ixN&-LtmWe@Wz3GsQD}|1sW3LE`X3Y$k^zI{Y}xB zKJgb4&APi_vpfVMvRl!`iiX|&_`=TpT886lyD??!tKs8{pHkT9GTvtUUkfAlwym>o zR~*h)>qy;@+<6_h=YNux>)e>^2IQ)@nO7@nRz7MRpES3>?evIFgx=aQrp{aHFd?PC zRv%fLU*hq(kl?n^r`#X4X3zH*mcy~x-%V1u47se#2 zFP0nP2Z#95nOJ+534gV-d1_rY{m;XAF^YuWwRKFU#Fz!tR;q-w_;5bk(UBvA@m*t7 ztU*T#Ut2M%&B*Lv0dZ(QB)4tWl}eTyrM?^Q|Js5?(xw}sM5M~SgQH>_R$oO|Y^vCG z?!y`u@&|i*qLex>FYp!P-6bzEY-?ZTO4gl$1xx8NFuE8E< zw-7OAean;e_bQjgg=F_&Gg_#wgxLh2DGRB`ehC9_`=T;WuKL}$ zAqZ+XD-T00&AYXXeVC5xnG0PEQfwLlRjZr=W(xb*9T$dv$T7vQN&>mzEc_8A`%7!Z zXh|iIQ{!~+cbY5K0#kMv2JS=>9zrKSU1~VysHb>aP(PshoN=g_W0)+DOkZkL%RH}c zM6}JuhB{k=FFo9!w#i1CgNL9sd_jl^1yFR;TDwyV-AodFKwDCixN9|`0wc4qO6~Jx zhDu9^C&rj$)M5&UkeL@VNCf@~@3@bqWO<9Gz+XOUo)(WVBLAoK?pdN>AVtfEZ*L1D zBZv`&=X*q(KsRPUz-$HUI83%>C{eb=jM*YcS55&ebm$uMmoJP2WQ9*Hvtu;$XNi*v zgW^w_D?zJ~GNV4f8yKE6G}XF37D_H_9Q#%OBy=X*i;kdLRK=xtLP&ko{+VPY(Cx6l zR))N$j)WAJcV{wVv%x#b$iu-uGx0vqS4fn=ig57NU^h#P63=*<9}xpks=>|tD(et_ z@He56eDk><2d53ox7w_0Q{&*oRe?bANLELt3d3eGm)2zw%@;*MW8uM`(PepxV+%bB z4Z~zH2*-{@LW5nzp=6c+0}3WtE!I}swlRti3Hdwkx2?;>E4y1y+O_O^nM0lcM^Rv5wp#>NMh933Fs9j}9aqqd2N|Pok1FF8)}<$=tcHL=>RZVsrOx z0v_KHQqD-t4j~~@i8n<9P2s`qR){*ldQkhW%zGKT>29th-YT%Ms?_^IqSAx^I8t41 zRZe)?JxR;u8)0E7%4D>-dHENt(#t&z;V;;H_RG3)*SAY}nc`%sma|8-6xnw~SFA8* z_#;VSw0(m+7Px}R)w;*i!zzwqeIYE=KouKdC-tr2u@9OaIc&etvkj zNmFh0YOpoyZK%8Kj}e@RmSE2+UZ8X{^tHkK1l57qx%#8=O!esP#j$fZaW^#1rm(pl zpME>a-xe*I*n~9Gj&84HW0-sclg^{HAZJl>IoIPvd)k*(_e`>n9Imj?WF=pWo;Ug9 zt?15={Jmv?FTIr(cOzf$Os|9Wn1j;$?n0{w-s|PXDMI{r@yMn8t850316};u%fkEz z)LIfH)Xmf!Q!%#!Z1E}6$NPNnXzaK1l{;*SxNKaKG4h|rZqT7suBG^`PDc@n#-uaM z78?!xs=R|vFS}nS{5|L*g-!VsF=@ofsmS}3X0Qw9#rw|3G*{6iSXv93+1pfsTg({X zX5DyUJmOGP+seVu7+W^Nk&QIj(BRCG&DjG#TJkVFrXyx>Qh>5(_GoX*IoUtCDwFs1&1N1Q|Gn@nl>OwMiTA^{PQN>p@YL_4p8RRNW1n~h zpCf7@>DAAT5E+V_!%ub0D?Z@F&X?L!{SbIF# z`gUZ&R>kAN4*T@ncejRVWLO>n%K_*vpq>oZZvV5%imYs01Gk6(>>( z4qH5C2vC;S6xl~J2}_6YZt`+JRMVz9C`VlSEN#_+g+o9T>6QL>o3?U7rv(>hzw67# zkXI74jynuhP6$#n2F`gG^oMxoFT6p~=uGxU#-*k!JXKC7$}YE&fl4}p4SdF=fY>a@ zI$0~aIE%|V6b#{ms<)|Q&DjmF_)EDEQQ4AyUnHVuF9vMpqqBSpzK>IP^Op-jZ^?O? zxmJ&pv7QbXD!KK!pz+WZJkDB|i)z7)6W1ERSnENEqhe@LMFcJFj@4p?W%0J4_Otg`}ui!*8{4L zz1PYPMx6(=!s7--?)hH%IzTL%c5G$SxGx!z^hT8fvogTJR%xFo!57(J+))b6Y%Yzl z(w1%mV6j-4)AR$^z4>%G_2{mfgw@}`)#5NPHs@SuP>09IPNcf`#3zG4BFe_1nhKgt zGC(CLV$tux(LqwS=d8UjuTt!2MKe7B=5k0bIa8^Ew(u$=3q3J0Aq1xOg7d17mi3fm zRHO_Uez>~WVT>yhzrFlfIW%_p4=luSrf+_Da##iqSC1fB1Po?_Ql+G-@W8-VcJ_K{ zh0Rh18-(iH88+)3RD0&dE+1`VR$iml{<$fJ;8BoA_ZGcK*|3X7zGc>Yxfj`{`ZUEK z6g(m9qP*%Yl|@sdC7) znywPp)!E)mbyT{IYh9UApe9h&0!%dCzXEnd5-{mh={q-}C9cYCXCIe{HL1H{@y_Xz z3y7)#r4n>9^LA5o&BbSv&wErh?F`q_-$WJ=g^xqW2sPUIb-Vq=%!J7lgD@{}GFmHA z@+jIL^U@SZY+%$Io+k@FJg<9?(e2xxCrpt7h-`Ek!6vS2?~cMJ_4GPl?85*n6o+jS zLbr0SNx3?F;~wws&X7$_o!%D{l4tn3f>xvW8A{=?rnX!Z=Qdk*J=X@-P@bNwsuwOsAIrj>Ta1>7^n|Pl& zT0JYk&(HR`q0@srL9RvApP0(@vR;?6QKC=@Qd|B4O?B3Is(F>SI`+|6)0udL?L+5& zj_?+OK9D(6T!PjjKkIo#CK)rQJP;+_A0t~Cg1i+>Xo0P-QiQ&v;(KjJG2uv3!vym z{_c4;VgH@J7A%h1xN>YOSlNP86z~mUSVf}>>0r4}C7^tAoPf`bSBxwv!qaDcc^OVl z#D1~H6|B00+r`2O3MQD9^g`CMu846JeXN&i1nwO;mJH98@wHAUsYSF+-}gQaau2^59!y>N%uyvknDt$ArNJ}Y`2GD zhuI?Tx1KUYVk9zcEP-YI@cf(I5I>jCx;>A%8cSu{=3IDabh7l9$J)7ClGXw8K0r+B z%a1||GEf}K3Rm(40*H|5O~8J7jITk2DI-L!@+!DE3obf1R{+bl%7|nUZ0=lvlU+s6p$Um@k&^y ze;k@w0oY2KX|J#5KPc_+17u(@Lkr{h>t`2C^C0k_4HSA`D$`2d|8s2+s1!oKU~B@E z3X~F{`qdX2g}&W&I-ne+Y{8GeasZMyM+MS7<`WBlHuhhrY5xmw{r|%S{*FTLj$<*0 zy^gl0v8c)^8yO}-;0tXOqYOxJbxL;Qi*(6R0wYh{+|&^;s+7sozn!ClF_dt z?lxQU87~G`njsCP@e+b45UcGS4|PdPIZUEMsec8qTAJDG0(JLreW z7#yaV9Y{_Oe@-ayUe5I4K+SqMf@v^)?GjWPLiselOTZ9f(rVtDAw*0qpV>d9`N zNb^Ye2hTE427R07QD3#Ik^_t&{fu&De`7b{Tq$f-ra78jb?L-U>kh(8WvIVH2cRR8Bhe-O9v;%klU zVg-YE3h)TIcrzIJf?ViLg-N+_D&kZ1%yZbJJxNNyOmx6k0Nz==z5mzX4cvp`iV%N1 z;Qhf406sBayI};=8G%ZmArZi)KTOu#+us^Xjle2Y84}Ig_V`*6_xlVYF6-!^D3$#yqbpc`qPx?IPPT~;ZVi&crTuNvqTN0 z%u$M6E;`w3PJJzJZ3Ure9ZqWt7loM^pLjT6*9ygrH;6U8y|={JPQSI2LCA;<^E!)Y zEvr={uGxb9CySDGZ`L~c&l^SP<5&lM9;J!-FtDHN0)JA9yM_tIuq!sSdX;H*d!xV4 z&Dgy!8vNY7Sv(x&BysyHe*P0Eg7qX2PWpwzaea!|fA!&{iS-n&V4Ht>&GsOvaO^^j zW-IK%=~*L(5vppz@>otul8kayZk18BW^c3ae{I?NK{t{^ehv{fd3Ukv-o+%@k^b{U zg@&%@z)HKCbnHxl*BhZ%;q%JQDE`0iPsTf(4$WuI$U^vAgSlY~|B zc1p>P%{K>gB8w^7;DX|1?*hi%x<0G()m$ox4!mT%6l1fyYI|g!Gr&g6HD7Q*o3*pT zi_7;;;7m8$3BJY$&R(3~+FQ+7UCpyytw`G(yvZ}A7?f&wI(L|PC!`~g7g56&QOr+Y z68dxp9PWinf-8(3c5R3QtBq+j7#(W3>8xUN=_x2>-470gXhJ^TNFC7I_6n8zwi+-^ zJKsM200R^@K6)0O=^wROc176PO<@iUW_Yyef9mP67wrlq|H7^YxVHJ|rn~GBn0h`` zGXP9t{^~z@Q10Rg(wJEc4+Q_&$WE~WjjmpJuwj8vtf%P z`VJ^7NLKw$)rP|k76CT_bJjfaChZ}HV7PigHMaW`?eH8$%L*S^^X<2 zcyfs_L1K}=WNr4vjq0)QwPDR{f@e3k4C6zxJ${**bm!36svV9jSxp5MbLvUm%n;CO zrM{nZU8n1{v;DYud_U~l=&dTSR%dVCj;|^xcBFJQ(O;}tJfRXaWb$!yiBUiZD(3Bd zdWYsok=T}4Cn1aS`sLfqyj%CT@FH>^|F7N2gPx3b8ebUAH=p%EM4Ls`8gX`8ckWtv z4F{Ho)h6)YaAuP-x~-@uc4lJ3aLA(W`WstjZS)m4&u>jA$(>wrN;;Uj`F0gCpumMZ z3n~U9j*~Y0uwvf6qvox}+A_d3$T^Wd@0+W!w&Z-f@6?^LQD$F^!?1#;r{%TU%aE;5%?VYrAo|)j zX2#K(uQpojLp{}E@7cxXw>GlK7AuwJMx>6fzk)yZWVSc3i_G*l+(htW8Jr&nB@)C^ zY%fB9dVAg$VRRU13M#tdZQe9Q_z&tZkhkwVh0&@$D}(3=XC|@-xDqxYx4*u6qqhhX zhD3hxIJ*`=2>itqTBr3#T)`LNcH`b6GD2;vVxhiJnS*#~kHl=0Q7A01Z9QFFHlvCs zIw?GfpVrI9Q(kS@iqXS;s0O^pANi7C#-au;zh55_V#ZnF9AzHi z{BWYY82gFhKY5_w(^z!n$3bEHfx4Z&cO@+$0JOOKqZL*r*A@GC9Ch(}iUUO<53F0r z`W_|M*)cCvv@Y`n=y>g}KWFSm0Q5`(-Al_42Ch4|#vIP5-s&u9T?_*32)7SFow`Bj zDgXRw?v=~N>4&z^N#67pO7Yi0sAw{?Sb8hbqH%za7cb|Z_MlysuN`ZA`H@7~-X6Zh zK{R4Y0XBCbF~5X9qF8=0!!WN3F~ZcY>cD!B2Ybh5O{@8ft*JO(UnEzFz6niW=sumV zDR}-mEa}`8pI+zqXrH8l`P-XlZ*p*6LEwx7hX3cy8t`&3%$PD0JGTDHmepj}Blb7~ zzStB|H#-l@Bn$q+ziEanAB4N^PoR3ISZ4~>Z;yp$yn|-{SRI)Wn=zD$WAlMLqgbmG>i2VS5Mz-Qh? zCzIYBzb;esylp0OKEwk&^FxLAPk z!{g}m+m1GD1kWD?2<%W_k0AliT(K3#4Y-W)ki$YFhTl11-l@)HEs4aO9;!d8#@l)&`+8bVs^rt0 z8sB#K>#$qI2pezWxB6`!_;m)tzCZO8hyv`o2gB8ugZ8~QKAzSDetKt{t-^R+*DvAa z(oHXgS31RY#B^&{4mEhXmmSVQ++vr8hs6`zT1f^QS6CAx6(!N<$&tBSd&d>;u-?4V zxxMX&udL1WU_nXe+m}qfQbv#dY+|~?wVY;Tm ze!A?6gEPZ7ft`5bhG!YNp$B`^pLKI}yZ_jVUR3c?YP?iYIW`g~J#Ikv$&zqS$#@PM zESDc%hRC9ZD3RFz4fL+G>qN90cP(uo(s>fvVy9Bs`R#Y@x(Z&Y!5UgkGcF%gXi4K% z+Hff0F6pMxj~89MTgl^1gFrx4Gn6#F*TvAkWZXTmh{Jz`+q=*>G%&*C(_20@)V&)K zxmaLBEG9SbV&pX1|K?IfSkT4i_8oXN$xx9%$t*Zs2qAHFe9zad<`MYTZCV{Mg5?Na zLdDy2{SJB|&P6c4BL2S|?AtCCgBQDzP^gjUil~M(hlK>tcMb6xWJZwRqNo-3hAVN|^_H395ASl;=tn#aHQI4g z4@RwKlj%QYzPAH}KZgg3pKmfFy9odgU`dj`gH$`~OW00-g9MlP5C>IhTf2cOZMqr! zgXuyoT2^_V^ShgJ^9<@l%-I!7C}7B(UK9|PLJ4|JLlkTrydE(T)g+YRjM9J8^BX6Z z7nP<5p-8Bj$s3{OL*kXDSy^ zB=Xl{Wv?xY3Rs_!2FCXaeZiy>f#|IplAC&Ae*m$+H;#{Lq{#wqMUx7GNg!qIRnjJb zWUJ#q3(8mVTp?L`9wH`)5gCb?hw0H5k_>cC9|dHg5w?#m6i`9}G;u-0^=xCfsD46- zg?G`{b9dem&k)&O{-kEuyK&edMa91@B#@|re&`?NOGpI`w8Xk(72n^pR zgD^869*gPu4r!*A@5;ZF=9_59FLIZ(IIEFVyp+88q_JytF9SUkMLcDoxf!2@RVX+2 z0>0Fi`dS0zTxMUqBZ4Hj9Z={7)m+8vJ#F{Yt=b;sk!7;98)gH&wT|*0CFGE*-pJ-M z9+UpCj=5T0;}~FXK?E}KGz&H$`1^|cDH^V~T}{hLBk4^73-`*~>IxAaA`RIuf(=a9 zKzMs&_^>!k_wm~@?)HwW%#!k6TKqwIAFx7(+ZgQ6CJ6X}`rSLET`>oI5j8#p)OH#w z=mH=7g)KbqX17_rlI&6WARHk^+ zf=wxEo3z51#Z0)TdR3fVRq0bfTqOP1Z7%oDwXaH;(+SaA!+8&wH@x-spki?V#K5Te6vSZIE0%xy;b#b3HGF7iO}ok1y~Quh zOe#-7mipiOZqcPqt+!$)w-W4hxYNC@_=OyZKxVA>Xohb}21=Wjd&c%aeBIUILHEK! z3LiO$v{Z{&e}Lk`5MYdL|A*6Q?7_<%)+Xm3 zq=rAI8=72Al(q->`T!mI8@|txf{p^=dk}b@$OIRKRsqoCzjo)I-KQ;#JwLPJXrf*s zW4?Ec9Lm}6F9{HlC`FCp`M}{md{v5sM&^TNgZK9${P_dIwHOWQ#)O71=cmRQOxO-H z+Fg%mNYP;p{J1Pfi-13C7WP5~U_lkDrdQD-buF~Ojz>#*7Z|Hth5!S4Owe9}-73aA z)is+0RA)b54PZGjVmTZy^TBPmu-595X7EOi&JzvMs{og9xSrL?Y9rx)kM7yMe(}?N z&lB4cL(!znIF&2vV*Qh^;cHqU`PYFrQl!%?F`dI_`YEfuWeF7utaHFh7>Nm-{-2I){?|iRR@tm| z6o>QmrB&yJJAeqm1DQy4Tw~Db4-^Ozg8U*$I>~7I>%3#{9ri^?uzm5I5x)q7y=#9I zJC1-N%c2E;pIK(_oRNGO^JEp&14r60IlR z^q)%fZ@Pp(6(Bs>#EjXiLvVX)S7#wraihb8iEq{BD{`3#QpN>IJZvH;M_XJDg0a6L z{<6>B>NX=_zTBRiWh;~8jG{CC`65D>j)0%- zP%G$L58n|5T(4w}e#tI}<2CBgxPR}CS*-Zv%qRPS0AP^fulW3b4YB%u)Ui4gRAHW*fbvsD*zFEOPyS4~Ko-5KHdjVLmfrX80-rnzMnv zTGvhm;_1x4M>p)NJO+*1BU6pyGsxInFGkf%0>Q1=Vyq4biRHWw*KFL#H4%y za{XUZ5%SQVgX?RC1myafXJ3~8@#oRsz+de;Q_&KLe;I-L&+Sd+J($%$@55gLz(zEf zNtD6<^+5Bp2dW-^jsF^{Bb+R`a2}ECqM;?1m!gzl92%>ZsYzf6NXQ)xNWX47(r{)b zF~mz)7dh|DDl`zPZv`P;Z~m2BtT=*~?lN>^R-_E8z|MU%kB5^QZc~~*ttr-1Z>%xf z!SzKI-|97t>KbSF@4v4O0+B`OC(6t#V!BZM!A2n@hJ{7IkapQ0rZR?=Cbq0xe?KCE zQa9p?V@SNy^=O#b6tO?TC>Ji&sdv}9zI>>}{>VeX=CuE~Qx;&GZgm1Ly{kaQe9#sx zRAE<7dF6XI-w=yJw)r|{=WUn@46Q!z1}>OLU}>HQ>AbWBo5zmS)J{lQ92p;(NQR2R zDubA~{z2~jp9W;k85QL8l47LDXqL2k)BbGEtU^T6ts86W1}y^jU%v%%AM?{YLbtH! zord?b@Y2A_;6M}Bq3`$ z{m30rbV52T7P|6HKxMS-nxA3>-u;)QGJT>c3Nze1G$@iCPl~>g)gH7*h)Js_zg9@w z$;x&{AWLu*Hra$mN^4tB0_0WAgJ$Q~v?7%$q$MSb8nlnJwvYC6Dyi$Bq7M~!1N%vl zH4Q2q9B(Kann<3H@WRE+D4H(REn;b|Z!Ico)3EghY}&G#n!mYWi?2-A8z(hJVHbp`uqyKanv2vKOeb;{nYuh-tgF#K72MsE zX2<(w#*&MeLXTSJ?LDHA^{B%W!tsgIzf;hR_^6rbL6))=ApEq$6;;9}o9ivx|ZZ+vJfXk4NV??i2R z4IGDnY}Q9Om}l@FAIFU&SAAV0f)f5u7O3Foo>N|n`D5hhn7Q8;A^R&E_VPnU&F z{HP-fzPF1}90jsggzkX@YvpDf2JVTjw~NFV)P5~q`7?zgvv zhhZt?QkIX0y;*-BYqy#+41sig5M?QU0iYpl;NKcAy_btlm4^Jso<%v<`v-$CHmm2O zJLPo@uX|_tkjj`Yh)Ru{u>>woJ!t5e?`Mrq)(Z^zQG|l$R)fMFZ1od+4#7z-Gb4qF zlAO~|FLPp?Cn}dhQtMe*#0SVzahqs1Wp^fxh$5kB7Q87;7jhV1snrqR}_ZYjUmP!{Sk-llkx&DnVdFFx$#=PqEzLmTUbW2meh*a}s;K!b(t( z^)dx%;klX-r(}rmY@_{rf6Mo=INxS(Fo(~c zWI_1s)rFq{Uto64%&w~hFYR@pnMqaA;?uIw4nkQ%Ae3;WyUC%H1t7?vFqjZ3(fr`M zgULX08zPR?x50Ut`6iTgk|7(Ou21r~iZAAI;)!fs?Wh#X9L)C4db=ISE~abQJ5u1j zc8xMl5oVW>-eh8beuvq=cFUMr9Q|h1N!?wPQ@j10iyiojbCnYfZ@>p zD8eRI9hp*NEHK$rE)Fz*`1Y8-Kq{4IZL$(;8q_^=>d7EE6!R#P-e@#7xFcFg_KtHD zxQpJf>DbSf;he>}*#`M>j}L3(mH$Wi&@mhs`|h|S_TG&CJ!L)bSk7UyB_(Kv*+id{&=O`7E1#DBhRp~j0xD!_VMtffJJ~i}Kx+rPkJ_fg+4Q%g z3*oo92U*l(i%Syxa(H;4B0=oO=JtB0a$GziughJLBIOQqK`=S`5m#6z-pfXOc59fd zaQ4}vPoM8$cyd&eU;^0P+2S#NY7&Y>q9<4MYF=|X2JYOWbAw-`MjhlOLQ+5$kpO_nbB)j<_YDta*L7 zq9R}*k)RFHJF8WXea&-9Q#BnvfH49+5^FLY9aNd9PO>DjOMFV*Me5&ec_RzbVZcUmx9 zI*c72JNwDNf6QKPa8{Xe{en|N`Q=DrycAk`|0uH?d}tf82{4MVDisE!v`$l(?CR#W z4-nRjijDDC3@~x7xwp!qY828Zr@T#vR;`wPYYPmnETg9yE{m}4Zs?_Y$0x@m{w&lL zIv4Pkq@LnF1RGme?yl4^PfxOna~{k-O^hu@dqM2@BPA)}M5?tD^|3Sb zgAu==<_w(H|Vt0Ytk?H)AM^kJ?lZJzs$<9VcQAxoFA>U`*CdRyvidd48N{=B3Ww8lMi~FOk25m-Nd=-q(vbAWM4hkv1Q>ioJTtU^jo4s0>_Z%mb z)9g1;gDFR)8lLQiGvNr3@1ppK^p@2@)#=dgSe!pRdjU*Kk$yy;1YQmk^^c52W{wsH z-$&B9Th4F0+coPN)I?OP>zidD-UBDRD9yKXpPPIbvcF=&yVyC((gMb;tvyM* zOD*Q~M47My+NL~6KCmsscUP05%=vCLa{1nK;H!AO#%e`Wty(zpMXllCSD3CYbh=R_ zG;s!HhXtzJ>nC!6LUJ5t_u9&>tY>v@h*4z#%9^3#h87*34Bf>I$eC z2DHPwS&S}j`k|Uzt^oy1lS60V2kT}8A(!7IZU2!1!bwDktod7Ap+k7ae_Vn8uka@k znhFAM_;*|+4de_IP56iKpTRf%r_@loev9AgAFrVJ)FA>YAzS~Ig-Zh!j07lF?D9DO zkObfpN!XwGo&Rg-Qy4iYi~~OlG|dMJ5E+5oqiEGVhwC5O_%E77@M=omsvP{G$@ia2 z1ND%f0>m4`IaE03wq811M_bmRXiZN2F&0 zI}!l*0BW|s_2)N+q~H|Q{>F_yk1K5gATEM~B?2dba;-1VXRshn==JME7Fo0w{;Gt^ zAcc|*ppi88i{l=zDW*65m>fP%gAh0?&=(KojR`NCArybOJj82pRSn+Ubs*}@9TH}Z znP@zd>;Xbz1``pUsDpvCZN$u?gaXmk63j*KXp7Y44{Se4CMYo4!yQDw=GLr$i+Viz zZ_K?_Se#wcwh06c?(XjH8eD=q!QBb&7Tg^YoZ#;6Zoz_U1C6`8O!GYN`yDg0F~`j8 z{Qq|Mt*h2rRdt_rRV{o#G?o;|hzB`&)o@_vvU)(tBw1>Ub0r^P3z|1|?c9MnUAXPm z^Avh=?0G%10!RoikdbdngA8U<2%>rTadnxNaM9R?y{K(wOREWixlq3dA@=2>D;gxJ zawH8xdI`ULVIwhwgH(vIp>jB0dqNHtM@Nyst<>vp+~+|YuP@(+B=)kw7p7CYrWhS66AItRA%5X1=!F& zYws5>5C3w=7Xa>#HM>7nlO?1hx;$Yy}`H}s1E@7U_J469Nr7kNF z99C)&0+`rDJL~oy-&OL&&xbb~pvE~k?kyq!4r%Js(G%sT3#4pZ=tdraxh;*YjE}c5xvU(>bY6T zU^siM&4DkTS2SV_&W^>N0zamsEely4U2X`!O!2~(96`6yaDUK1`9VwbA4!!-;R1O z>Y7b16Z3DeHG8UlA9L`#-1yl6e9lMrM{ZASGuql@2}&#&_V~X8eA9B7gk7`VRu>U{ z9}FnPsl&4~T7pNhMY#MWF|(dq>(>k5!-P%M9<=|%cHxp4 z{TPzrqg+t^XLeC&=){L``F3Ibr)u5j`S$$Q8mG=CA3j)pHOm0FRXWI#m)iV>hoznB zJ9zR)Z*>0^*@&faSbUggc%-tX^j~n&Jx&H;7dyeiG zLuqN;JLethhs*A;3HhXl_Xn)F)Tt%6A0u^V(`MniWHF2T)Nx}Nc?mhhT3=t_#D=yt zr#F{-2N5lNKy`)Dli7k45`E!Z7YL`aW0(Y7d=KYsI^(x)x>z&IAmlrm^mEgm447hR zgonTpDiEkQFoX~_jc-ma|acKIhw zo491PQX5M==n&7p5k?dYAMpE}XfXVIa|50e9$s&0?lD^yiJZ|x^{e=8tE{*a|1}x7 z3?<69eOgF@kI0+3$03jQjs~5&!}RIi{c4WbkR^!)SCEk$tj1;;QcJ^TzuHs`0Yg-v z1g!($D)iQ@B)(#Z?3w0X%2w zr5mVI7nZS5-8`Co$60>ddzv~X($>#F2pXTnBuzl)tA7Ya!M z?e~Q+8$4>Axhk3elmTf+1)NtjG)E1m83Y|+Sx1Du8mi>ONHkW06*JHvCk}~$TbAl% zgZo@hNHi~z#|aHiAv5)cX<`-=Is{S$Z}PjGRL%kITlcg1`+l7{atyYdDa-{=rNm&A z@aPI>s@z}>H_mR$NiH)^cJUI8d_f8ETe~gXug{aBE?wQKr7XAQIT}Jbb|MBp_TnzF z>pf)gNO|==*rzkpdS%G^vY1fm=qJ;8{J~WYivGBh`ng7DaJP-hE!(6ad(m)YjCz_i z8z%e)Lx%TTt(K=?M>6G0pWF%_T`fvcN9-U>rF

    cXP_OT56ytOm24q@37;BT3aLE^bcXA)A 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 z

    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 diff --git a/1-js/10-es-modern/11-promise/promiseTwo.png b/1-js/10-es-modern/11-promise/promiseTwo.png deleted file mode 100644 index 0600ba4d6435940891898553b36ba50a5602b4b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17988 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 aU*5CM;gepT@L%AuFbtlqelF{r5}E+`jC;HQ diff --git a/1-js/10-es-modern/11-promise/promiseTwo@2x.png b/1-js/10-es-modern/11-promise/promiseTwo@2x.png deleted file mode 100644 index 95e4e74945e6014ffc8c8d7e1183852cf66a17d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36357 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 U;xb=X|M>oh3(E*q3F!L&4`?vdBLDyZ diff --git a/1-js/10-es-modern/11-promise/promiseTwoThen.png b/1-js/10-es-modern/11-promise/promiseTwoThen.png deleted file mode 100644 index 439b4d85c356917beae947709b6da216349a90a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29460 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 WM8yWkVpjkL`jM6ZidTq!_y1p|e>On? diff --git a/1-js/10-es-modern/11-promise/promiseTwoThen@2x.png b/1-js/10-es-modern/11-promise/promiseTwoThen@2x.png deleted file mode 100644 index db5be298a960f9d5fcb82d544ff73c0e620a0887..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63681 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 diff --git a/1-js/10-es-modern/11-promise/promiseUserFlow.png b/1-js/10-es-modern/11-promise/promiseUserFlow.png deleted file mode 100644 index 110ce79b8c6eb6151a790a33b32de6b4632107a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32441 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 OA884B@mf)Xp#KXVzg-Fd diff --git a/1-js/10-es-modern/11-promise/promiseUserFlow@2x.png b/1-js/10-es-modern/11-promise/promiseUserFlow@2x.png deleted file mode 100644 index a185fb731d4e5cdceab2032529c1dd4038d66d03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72869 zcmeFZWmKF?^Dhb{Bshd1!3jZvC&7X{1b26L2{yQd009C75ANU?5Zj)hEzF94naZ^L6VUWRrf^R2R}Ae>!o^pEXR@B;MNGV5VuJ| zMV^<#OUR+75l59kRmUSx#_OlLDqBHOe^?Ol>6lnl6q)4B!zW*Kq~^;AUK#-1ct))6 z0XA%YGVz=?d~p|PaN!QWqr)>w$Zb0Spp@WdeS+};_aQYBGMWey3SMB~2ucpvs?Gdt zQ2PlAmqb@ZXu{Lpk4XPaKzhiej1(k^x<+I3pI`jvyPpKe4~e)o-{qy_1^zR;SOhuT zX5l$Sf9hyA=kI3}PoNC+&;Hyw%{#`cmPArwu~+Hl`}1dkff|UXX?j)TA$Ii7(-3om zLRe+BAOCxlDX^=X371Ih*Y z6#pJAMMA+W6VOKcFJu1mj5!*_VnlT15B@c(O(|z;X-( zy@SCaf3N@{Ojg8V|38^q)Q7nk16n`1*l(oIP-ObD5R*gQ$>LXbWF>sKpIsYZW{-@F zrrsR*!T#FOG5K0<_Hv~1w5`eI5dkeLBndj%t9|5JQ_}(9ATZTp!#>49MoS?0l8_$4 zi}z9~Nd9zvE#^_W%%Hu9gpm2%hK`*#C)N-4F+p`V-Dbf3d-%?tg4wj2v|Umg+_x)0 z_><#`zh zQO{>fxxXlPH{s?dc8aPQBy4JehqWv_2y=fusF&HEc+7x(x!Dao2MtXpQi=N>5qnGfjddl~w?eF~*Pi?Rea-Jm? zF;)rcf5icbgYHKGMZ&*Ye+Imu??6WO%BkPme0=3iM9N-fs0Ja1pU$8XmTNDt)Vh!K ziQ;zfzt3Bgj3^lpI=YycbRRnr4mCOOrmEjI1uTzcHNuin3HM)MP~%=&`}asj7&6We zj|@Y#%07Mei}H9W%P_wnrt<9l6zNF+M_2UXwI87rlA@?Xb5Uk#KHsqq-@jHpOz&rX z!7A$V`a=6hMccxm63(uF&&*1;=$;39oH!5qEyc?w7+|V^Y>#2&+0wxWR|>4{k&*M@ z<&gVoK`CNi3|Gh|WL1?X<)c^sTZCpBB6QFz*(Jrt1Fpmx5Ys$6uWR}ytItO1Geu{+ zYtIVl$%8TtM)PvMFLn=!Qq1SAhNLzj><)I*N3I9;6R@#4@7FF2mVRASuNxzxJKxDl zDP*+sF^xy|znoEwB&{oV*rt>gtV>v;F$g~!=vAx9z=SRpzgWF13X;;Gc1e7y8xN3y z4lo#Xbd9pd0-IgFPy|UDd%_nXW_2?GEtW?wJ=F1|D-UYw6zZ;!p9D3J1|*d7g)y41 z&%}!tx3Im)%u#9V6XY;;dJ$km_`dOc7FaqI2opy_X~4*i3aL=F&{kqPXR4QNf5Xh? z+*8|Z79i;Tq6w?j`9=XHRp<+aHuO>=c~&v_(b0*=jXtr(@sB}k@9x>bJ=@JZflyG6 z1+oVHz|3Pp)0j{DIvj@cBu_~5<0i9FOhPQUS%Lz~Fjm4P=_r~9Lomy?&=K1!CVH+%c1@vn1V*xy zl$TlY25(dqx2Lwhi24gD`r<{x7sK=MEp&W+qWw3APv$Nc=!zxYp30E94Z9|_=-n#G|JwBY80 z%(985=2;B2Y0UBh`ciTip$q%2gM1%ryIcwUi`?Fi%vN9C9Yd*T zhM`&~W7xjsNLm4EvUOQDHDJxjr&{kjWk=2+pa0Sfe1*_FZcm1hl0_k)GZYoMqt>Op z>+%$L)IHgU5d1pcr^E-x`%tQp?Lf=__+*xSmrcaxHu!<`*tFBhJ9UAf2RS2J%_*=Xjtadk6^&DDL0DI>LO9y_s>C1RM#45~#bhMH z3{NU{QJ*b`6KfMCO3LS(zR%&_E>yRRVHK2KbL{g1e~!T%%-gi^x`duG9hXtW5t3@M zkLlk>UP!~sRKDzKjd~eHwUU+RUb~&0vRUIliJb(R1pDgUcN{K2?W7IqiZo&Ov)=P6 zn?a~_x0UAOp_x$eG7&*u$Klb*Qvde=u|*k!RB7&i!zEe_pf^0Fx#fZ^>D~Zz zpQbv4mAvh-dEP4WseN-ayZt(!kl-sU?KxrH@({U;^g8_{tV55v_QiIwkb$ISsoq_M z-qHXBQV&!u>60^*BhhYkbkx??4$?p7`M5nFwN>@%w)V4@ow^mn<34cn`eDfcV4Vk` zJz0>U^zmWriP|=6sIsrloHh5r1koZEsfgRvIV&7346P&HRUi|gYhgD z&TBb02P}Ra<7LNQv?65wgr6H|@8CXs6*Gwi^!`sLQxtxBW5DJ(ey^0pD zFux!;W~=CBwKAC2h|M6E<1C!q!{gAkB8J82bYOkW>I^I8ohy0cvYdgiO2M=lP7L+khWO9OnTx0BrE2A{qcX)I)4EU4*S813}) z@Z-7izn?j)0I=Nb^BV|SaKp32TYqGSAHk1IzJ)Z7$2kp!`Bz9!8H#w5lqw!y7xqj6 zAIG}W3w}bIHF3}1_J4cu*uO1g$npCfTbCgYmaD+;2kTJ3F*&qajxgo^=-ax9 zSCMRgcimg$weXpz$N_8Bo$p~J1!LojB@5oMhw}|SoIEGhx5-2P(=d=FS&YwZWTFEs zpAH`M1av!>)S#J zDDLW-muo*6Dj^g_{z~TUrBxVeD2OUUFakU_!c9ps za@Erg{^IJB#G`LUS6ton+`##KWp~^{nCvkjJ|ko0g~-_JnZnJZD>v{IqpJ=0^EJ;$ zxM)&{Tg!C!zGPW5>wKHfhUY%m!xxelbI#25$#l;JkgE}UwAIc%p|AXHM$O6q>+E-@3h}BF5pGpIu}tBt#`-G4=rlgq?+MT3ji- zw%6-@5q-y2o!z~(tm+fNeBsPPPCRu$&MU2>JD6ZLc}e6e@Xb^?2b8k_#1xvcPv`-r zW0B6?A}Q@?4zJ=6VUB2(e#j~JV3_{USXhCTWE<%Zx5k5#!45#qSEkm4=8szup}Xy; zz=>Y#f~1s=sg;`7PiFuQhU{lI6Hz(KWQU`Dv0uw<47>SP__YF-B(;hXEtJ*MK47dw_jGmo;~6_d8wB#f7AGFbgrXANn(10c5;DMTd`JW9VAxY-3~09mm?mX zwX&&Jg7smmM)on?cfQxEB)jl|8x{uG_>_ZMmIo%pZ?jGZW1g}boQ|Ab>VP%8UwdB} z+s9vs^BYb$RLRmZ=LYyB713Q-CkWnzSOvtCYVmhcGmIRJXBwp*@p;!g)~nR$9q?Z? zZO(L7-h0lFWu4@)*BTWTdIFt${q>dm#;$OO;f))9dvM8s{G}B#1@1Wt&11_>!PcS6 z7HF^G!iH-nYCz|vb$IJhDD>kC&LcgKtSJg5?$-CW{n0`k$2rO7WvTIMF`2a8yk{W}bsM^UYbgus$oB2Rbc!d9%^BP8Z=} z5$XKyHFSDmehYvjm$>9I>*#Yh6U0C69N;cFiDtn}mZ_;NAG_p7!Do4QqZoVsMrmK4 z@*0$5hg;)*R+(iTt9|@k_|AY7ClQ3~q#C`QBKe>W(>B)MFBeCDnX+uJ<8-SA20ol} zU4~MP_2vakZ!1;M22tSWp=^d`1-*e4ejSN)9R@-GL6-IVn@RD+%jum`ITL6trp6Y@ zM~=Q`(jl8ic8SxvS&6r7skpXR+&^`vx_5Ug8RH`YLrgQmnUcu62L-OfYcm zD!q5td}K@2{0ZPbbb7axDlhrGJ%~QX0mSwrsp9Hf#{>UUK6V28h^J#k@?evIqbk55 z8#`)DJgspIN_;@Kf2oz%wB?t$G-t#9w$n|=V@H??Kj0)CVB0a-mqqp3=4UMoMjhW4 z`5@J9DfRLmcbWD2Xr1_6=`i}f!|exHPdrAE1XesExX7zY@VczG6h7zuAfhS;aeZC! zM$vexJ&rl0wUl{FQFSz5+FvK*$ClpObfjyEDOId&hpnWlU7sNS!Ip7s#LLQp%>S_t z3q!_DJ081+<$+EsJfd=Nv@@;ok_@kRDSkz3iEPbaDLCBbzamBGT%jr3X4 zXR8?67Tf^Wp)VKbQ}aULD~s2D1eBVsny79t-MjU{i+-WheOJd;MM8~W(RE|}_Y);+-U_O#cMY4QZ)mf3A{{K$PuyGvAfA9rUMU{!%R z0r!f#2_+KZ^W6x^99 z9M}%9Q(@0vsSeZgh%4O@1MgH(39;IhO8SmA8!YT|KHtd7St)-ME=(GO#$e%OZ0Lxk<**we| zNw2o`$L+>xMq4597z(G%mppr9)9drnZ{Kpi0MGC^u#c53rL0uLn+eE;z9+Z|hU|HA z)l-Ty81RyDl=Zl4RzwN8hszB@t;ff;q&MF+Q=G6ho(&V>#k+U&pEvI{zt99I)~;Ns z`xZ(YwM$QwrfhTxC%2r8@LlY=e#*+TfGez)@Xn6UETc*f9c*gpty@&?2=Urp5EOJR zzJUoykE$enPZ8|omfsRZg#mbNciX1B4QFgaxHZo)9LSf;sIEmj<-lD-RX9VgDqOr8 z9T9@PmJT@IDevdcAx;U95%kpt&He(Dd@sQmyB5IDaWejJ#uQ3gWyiCl^l6|wCYSly z!p>@ehTzk}DOdaUb0vuoON?zuUxBE3cezr-VeZk-Yqe$A`N7wb47e-LbNiXk#2!TO zj-sspMnVB2 z&cyK0Y+YI9vVKL<4;US9C>r*Jp^vIAzAwjjEhXU1bE*gARMKFCNNLUR*Yu;PYS`Y0 zvDNR7XZnF753^tX2-!ow*(Fe2+oNN?5vQFC%gY{-SFfME+LSV|eIaJ@pE2OR4YXD*M5XD(^d z7-wUGuu1)U#<5u{oP6)uU_I8S;X8unN`l^8^htw20Te-h(Y3+#YSoNgG2?BR@s7jrJdq)EYbAfOqY@}lDRruIAlP&7tQ-1y=J#3dsD$L{G**{F$w0F5P9fPYY>3awAkc+t}(C`3Xf zEkwfGhc9bUQU20?o%oC2#(2$RPm^gItM0iNTTCO>Vhvk2Vp~%$@csgQO#JmtG#2jt z-GJKTfQBz9*bSL!uWc#{T0#4!_ax#@D!n$WlDEq)9_~;EVYBKEn{Qnx4dzlK6<$CnI+iNDjN5_xQBR+{;A!lkj)>Ts4 z#B0A=K?Cr6I|sOCN+_2dGK74qf6>V(pkVcE;kH#-W7Fe`yg=jdkn!r)d>GEA(R-p? zhAm9Ealv{6h!9p_OCJ6)aONs>ucKqEuQ8-M>0;EWN+!coRR3V>r$f^grmlMwY-A&< zCF|>}+W^5Aw#h?7_u5vhW&T$eHuuo4n>rOVwMB&^dIz7|t#mkg-=K+f`6Kt#2f@;k z957k^RE-_wFTbL`+BPYVdD%?26=_Rhfy#QnZPTBio-e zQTGI?zgd&OUieBI5s|XtDFnTfpjsjjMtx;C|B5d8o$Q^;n}{W-9Y(NFPv0gV4V}1A zCQNIs{|r{O3lgv1a5CVX3H6)z6kizKNKsMB#KISF!h7`4KEte)TX-;ZM#u$sPh*L^ zv&;rk-jKxHFns6Hk;AGE6W9BW+33->XmMtFz&yAo@HDAE^L^*>XtR4kz{|)b#xG(x z8J!fz1egRiOZS@^ST=bF9WieF%<{9b%LFET8iJ0qM<^rq8i}9@*MxR(>(xv<`^hxC zL#saE`vd6m+C(k@tp0r&3((v+1733i%*#>zY?Aih_U<$U0rYgBjbH957CYPlV{9Cm zU>(X$JUKyka49iWU2Yqtpl8!{aN^I(ynVhod=xxq_3X(9m|<_^+3`1AQdS2-n}Gxv z^?;y4Wr=)8U8hbYgQC5CWY5K@kK>%n-%;)--*g=G2H?1Yt zCI97dMd_yWs7S%K+KT&F_3aipSqQ2Mt$Q8bc*^0(9dJ&*+R}gIG)=G2C3&KCcdU+j zvdX9KLD~61S@cwClsG5`lM+)t{)5d6?=caz_La!=~h+RIUs8dBzMo7i@7c1xR+3bBx7*M8lAsi*Qp=+4M^mgkRl>_P7oI~$yeDnT zJ)R?{DfnBnu`YE&?fWP6iY}S;yYokdx64{+tz^r`-6(Wk`b_&dpy8Ks|ZArveKYVhP|IoH6z;AUCRLMWfHWGpnT` z0K61A{wv1|9a8NC`?d-rolBvT7~-go7w^u#eXDZxX#os9bcOJ~QIh39&NgyT-!>`9 zECsR-HGbc*B~9n|s)Pi7TCyUSAp;>|mr>Rg0YC}sTU69Xr2a3>a1W2PcPq$D_@IjR z&kkIYMk0hSd}92zC*2OvccsrGDBfh-shp$T^z8|AJCbyRtRK!+X3)v!w)Jt@S`_Gz zu~pm5-wU}_#x}pH7P=p!WsX3>)Rh*>eeWFIe4cKSIoD2PGu>fyvsag7PjRL^Bq*TN zjLx%r(ywJ&QkCS9oNx5Kg{8x&urI-M3`vx)WWzGm&nW`Cf;egTj5y$0x5;3ed3ikA z#4Ay+NlveA{$|uUGrT>GumSVQ^5kZgCgg3KkJWb_LvZYc?M#{Y0NE29SRq=D+d7kr z?=6plE(CGhH2yY!9RyS|Lz!?P{+ zRBJRQYw=wM`q5h>$%ll61y35XI1NG(_08-XboGT^M;%BvKU980kgDV;152+R_Hnhp z4ax})=ihTl^0Q73yc65`Hp;qYUawasCZT)bQ*JIO0h!4WZaDApJ#$-UyQSiVOy!+F z$%K^!z^j%av{RAmGR*DBBWEh;iNWY8 zzz(}(REU*$#y1s0;WRcoaJ%;*C- zo$$0rmGU;t_doaY3*R0OQ3*Ayw(hL6=lbwqWozik`Bzec@$T-Eg$4VaGQ;yt1{qz2 zbaf1)>g5h6JaMWl?FER{@B&5L30G!C6!nBWq-)6zG+mbK?G29Di7x||ojis+fYP^@ z{NqiPPMV?~l`Js-QmyWaq36kLeU1A(Cm9L`dtQ4-lmjwlL?*=S5@Az z_2kR2Wp;u4nd6K!!^hIR%#JbrcU3%5=a|@?)1_W#%=HgowSLw|vTqjT?yotd)5s%v zms5%~S|!skyEB2_*px1ov&|Y55p1W914#jIEyT)3AK-Y{ObIN>NnzC0y)hpcK=;>T z>kGANmM*cBC%sS_aFH8$;Gk!~=X~(#(6`lp$GFjc;YG5uurGWo^vzAjXS|z2Q0}8% zz(Ba&z*4Z@-1!>7bwD>```1;`11g|aVD$9pZriOXO}!6?L{N=jgZ{`fP}3b$^WF>; zDx|sqs!qKhON06W;n=Q%A5eiinG`e&l2?)FyqYn{V5O7ytK&6@fI+q#BePcGL7^G2 zrN2i}8=NOFs&#dp;UERGf#S434FIHiG@Qc-% z-Y=jM%Aj>a|5f(;`)6`=a{1t-vkULIt{>l9K19>9IH+Bp5t`%r0eW#@t;}=xbfUPl z9bA5sn(#Pb-^47z{U<1R#YrfM_}XYxq8ySQ(gVPyItv3vul?&3_~MnZq2L9PLqjGX zqI?MIa|%lV(O>&lrawc$T-YpS4^*f|+5ST>s>VN+)=Ez@zmW^u?Y z(XrVhV=V%p8F_jAOpWO<6xIavO2P56gj?z!!$>Ro=)Gey&+V)*qx3=mscw+3_70Ae zdlNg<*!oyUc(3L|-JPyxD<#BZ6#P?y7;KE+$5j<-Za_u{KIiXY<4mw;Iq{jZe<9;v zY^to}tj_c9K4$Lpd*Lb9)UhZi-$*P2OMrfVg-GHU7A*i2&gb1EE@@a5{L34!i6JS4 zKZ=6iHC{wT!*Y*Ux4QaRV+8Kld`!%2sN^nnGdB@CDn^beXR8c&Ku;@2a()pnHQ%Vc5`GM*BOA`_A(QG z|4!RQIch;AmH=y9YqQLGpN%@Mu`_o>@O9MH;hWk{z+s@)#Qw?S-sG#6DQ(zY!?jb7 zleT)yVL$Wf*W|hOD2~a>qhtI>geDbX>Ant&f$^hXwa6krP9xwN#CXLCrOKuyt(CXD zThCA9baqDTn@A-lZW$hW11r7*uOnx%eTvU0*>%C9)!(hvcUAaXJ35o!Q%|ta%va-A zFi$i~x0d-X)ETCI2&I&Ccr_RXxu%D=`C=A4Ll}I_{XSEU`}5A7 z{jSdxeWfE2sk7W$qqn1{pllt_@?JC6C~83nzt9zTKn2VO&1vY{whozxulX^Z_<4J| zS`fckq*1Ds4L?8>$^NLhdy>Vjnc|#n&#UjWJaJ&(lW#}VoMwpF=fL}-b#z2$LB)@X zx66sT8iG&t*kA4QRH8mZ8U?PUvHS~S#@S9OJZmF z_RHmX;RE_}82p~+CU&#}H?{QzecWIoHVt0}HaD3sQ2|XESmS(k-)33w#t%>CF2RL) zn?#Q8ey7m5C+ew+-{~g`iiqP{^}biH?rIi;4tk<%{RH1$B|11!7Z+oB>_0%^G8Fj> z@{}X?uD_;Rrih$f**wz4#nsK-#=?}nLY|G;EqSnha*f%fXc&-aA)7}Hnb$E55rb?g z1`AZ_ezR>>6KWwwn-JLEc)5u2^V$&=*w2vUl#<-or^nXl!k|(uNLFBDKIyW(JH#6Q z19Q{GE9WOT)W@Ur?Hf2)iQ!}yM+JD9fUu~UE~aM;v7!7s&^5D}$F8{{>^2+&HrI+t z1&f;-2QJ$whD$Ze2@cTmzA*SZOZ;}Ek z0-NG8+9VX3y=YoElK5UmRg>Rl3;burt$^`zF(8oBa~*d%fq%0&B_Wqewqd zPsSvyuZmFQxxOOJGx+F{brLs$C66dkg_2FMNvc5CsGWMIkdg;|HO!MdV8km7Rsq2w z^=YLv3=K!|Tg^#TZPi4KFo#;Arv)}wlP*(4sTavSCfuBrPr0<}T01!ZnzdEOZB5Kgw^9M;%5 zh13nX8die*A=F5v$RV%gcQ^21#QiO+spZwcOgJ?#f2zarKOrvxw+bS)mkEoQVM>q+Zuk; zk1LoI8+L*%dX~KbgHi!xai=zm>;c2#+ZW~2og_CqM_IVBLsl@`h05O0{OX8!bbUeh zCL70&(yJC#0ud=h5m#Y5^qZ7JXgUkXVsx~E`Sm$_mfXH`O2>I79Ziu_gVy#osUWvU z)$+D352it8l2^ZCt%>jOP2f>OKi1Z~m*;-ko`awFKx0Xb_zm=OLJ=GH6o++fhpcIP zqAIZm#ww=^2_=9*hDFW+O9Qv40l1Uob=D{1gnU6=?ey3o}{dTJI_oad* zjbxmgQoHT&%sVx>i_~Iqo%ER3tiy!gN&)krtLpL!A7n&VijFhJ`m3Gz5XCmDG9&L( z$jvFUp^Rv7#2Ta6UFt>4)lL2rOCO!5mD{E3s5%fzfg{}U3(a8NFjB+C!EG~Zo$R4w zM&iRww(~i_VZ$mU=|hJwlMuuZ4~!8MV!?+%cC0>660b?8hd! zq3?}qt1)T=)-PE(_Rf_k7I2q`(|dV(oZ^^>DXB4xLB!$g_q--e2T@y zNa-67##x1G4UvwX4Gv(cUhGpWcht(XX%&4a@|LDc5KK&Mw=nEeIGK1_v_M46Je9%nNHnz@`5C#SltvRmTmJ7)`8OP8pCmT;iMCPSvz6Y;kc>!p$>Fak)rb zQ-Mb+N15CYc0Q|fr|7zbg9R^_#LTR8(u_RLd#9ZAOYxfLQjW0@~1TOlaU9+PGpSaG5!A@Es|+ud=qb z=U0D?0*kB)@mYAXLws`b>}R2CZJh;fZ5(7ZWGIFO(}#Z`wkzEzoGmYS zoh12HRn#v;=*Mo`zX=rSLVY+lg|1{Gq|+tR$ue$ilqSTvbDS?KovFZVMu)b8P>~h& zzcmI?IgwtW#KxG5JSM*x=lo!eLV`p0A<8Zt2_=#g@I%G;ZwPH^O&7Xu!|TFLGGYI= zHnk!}Gi#pO7dy4i4e5_?d92eSj4Jh;Ydr?y=&rjRcBUd6-EJ6G1wM;sb0TvtvHgo} zk!Z#0rGh{Q3A5Fq1Iv-rO>l)?qn~OCRIg?K$qlxZ5vew`=zuL(4`^Kj&x;W{-IUaC zu-CyQ4dl$RIoLdV_3?j)!6Jw@^gEw^01PWqWBFu^j5_2JPp=>~Nu3*6us>yyaR-A* z*KD3`jhM0b-9{I__ul#6=M9NDpH%A3!IBX;w4;+u%(Z^W~R7rKPBbeXD}TG$lyR6tOWXSvyRyIL&A zTIs>3w-*ILQnzJVRg}3y{zX&QDJdyE0oR+v7G4Kbke>p-j^feRyzhT&>QB5Nz>*h3 zicst`sYo(WGFSGZ>2z)76Qi4l>oCYv(Q@`#NA3^}1R4({F3BhD{$Q&4CGaI=e2uUh zD9#s6sK~e6#1vAlcP>7r$1BS&=KG_X*l>vg!Z0 zI`rpE6vbj=Me8^3zxVJqS>*JDONs>JKxmyVk3>;Ol#UYDUYkjw_@OTaa~8kM7VVwg>=38beu1jbQa%0!D4*DQ{LW^2pjKTn=iS?}Nl!)H z(nYuV`k@nS`R$Y}5Bue!Va{6m>3%leQy*T6wN=1(Ztnx_?^q*n>gyd6TZH*1NpcR}y3YlQn@Jc=L!_8a z(V<$PMdvhzm6Z;!H^0ine~EpC52bR!GtGnd_N9Y#O~xZ4W^28OfvxWlOlZQB=8aLsbp*)re1^xo>`Tw8#J8_6b>! zHgq0_{rVlbJ&9ge#ZZISdK8a!^8MAX^3_A4i!>9=--2EFiIS6(Gr<`g3snI1 z%*&n14zc|88+2S;cmwdfh8$%Jaelw5A*lFoPr)y10v!2HdlMaDWphz9G4@(7^4m*@l)jvH7Y-}QBBGb7VsX~Rw-Ace3ZXa8fwL0^GI4LM7 z|2qm_aL2nNy_N%AzMFw^ow~M>ieN9iYFdO>jlQ0SJTjNi7cu1 zaCPY>9Uv+z+NJ)7Qtp^-W(n(1RJ2=C7ofB_ue( zc}o>=_ddg^y(Q*mroVHSy^Kja0v(Qz# zZfJNfi7p+J*jJoBgb0x`wG-$+ZvJgRM7ks&T8pfRKlsFwX>cQTVB^w!hhjI(ip6y0 z!e`W-G+nB(CxHD5>!>9gVm{$E-uFS=#5x{9UfS1c{J+B)*&CI%OPeE$ztN0)mFxTRyE7N&c;1ITnhlinVs__!F+5e;z(4o7o`SLw``BamQ z;url=Ld(9JreA#=Cdq2otb$hZ6z9ZZ)_c0z82@FYNE88HjcUO8v{t)y_Hj--3MZad z0K$PhJ^l)__w6f`5_sl90qltxA|5&mzBIn=z)QNp^Try%Lb?--4kNrF# zK12>ZMJX6loKBQn?zeU!A=78KPUdQ)98Nh=`t2Ie>H%$HRGXn`ioy8SVqK0wvSk=_ z2uMR=k@Z?)Cx}J=7y)!G$=fC%Vbe<>0*a1{^&eVPWA22RSmwNNZ!7CJKFB3~ihsSzlAp{3qs10iB;lwal9`gn$JT zGcbnR63CPBjec*cmeegSYMNKG3&`kLM_K%S_A@t1v-=diGjeZR8u~}MN7m#(qq?cu z{}|`elrB0_ErC}1`P$_|`4pG*qyr62p_z*E)>a?pg%Eorhwl_!TN5kK4GL5XhzSVN zvjlxE47g+blGqGxsO`oTrg&93AHzce9Z>F`2RhjCHzmy($l5kPCcbzEUBhONYqvVM zXNGCVZ7XKl@loeqrcB1+{-<966Op}^*&m((!wjHx2f~?84O)TNh;#k7^8G|YE>OMZ z#-_#@KeULMxK!WI!=>;q_|_u~W&Dn+>nnb2EcX0-5C-PZW|u#9;cH@Z2TaFr#k?+)o(#7=b>67 zJ!y1a?dC>CMs`y9L~Q+KJgh!BTQoG{5eYh{^Sgo`Uq18cbO8v@C;z>ZN^6MPXCLV8 z0POZsIF-X{)UO4L3T=)>*&--J>)kpE)q;~~61e{I!;h=i4|x2WY`3S%6aEHs7a+PD z#M0!V2!99OB3y*yj~~|AoGj_KdA^rpXRkWs{IVlaq(g@raD$!u4RueIJ0m(PucyNqd z@cm2BVGZFw2NV^V6`Npm>T|6VklFm1mzzV7>>lADX?&V`X>CK>#v5J|&gx5KA^0yG zX#d^v`G${?>+HM*gLAP$?!${<+K^ z-U+KFQ8;&q?@3l8eZ}&RtW_HYdsj{+aRQ2Wf_kM$1@QQ1@#Nq+c z3B}Y)_P@A5_lu;(X6HArl=Rds zLCc~!G-+C_dtOGJ8FMd~e5@Pa2~-rvsXgWo`GYo*8j-|@M3-yu^DEKgpE)+`H-N}G zbFclsl2`gejyZbb8=}9`SE83RSVL*X=>H}d9VPMdgMe-bqz;!zFr!qnxlBXC@?}~v z4rIDRrqpDi``zz^QY01S?bZ#qzbbZC-@lJlF<+1@CJSe&y-JJNX2pz_*(6~~M}X-* z6jCN;zcX1v%?u9a5PWqt?SRPiSpKKe?;kY}DkUric8RfIPh9N(+%$d^i>HKZBpKW{ zqNWE#8%qLd-~R|RlzEoX=%VzW)J&s%^?Qy#0{36{BJ~d<1*k+4q!N#Cr~uz$-?)=Q z*P^1MX#*Ypb)KHs(C&-CuG|}PxrB#*ngR`a#OUBojoClsBKAs!h$5%AwR36zRO#Y3 zh*1rx7>a+QwO^HTM8j>dP(ME1Kk+T1Oq+J>ozwea4j-kb`(a)6p|D=KtYn>w+V^#d3>16+j2B?vOn4Tg= zEf5IxKh>!;2EoK#R~8lgf06q?to_AW{3$^ODkC#K%&9*mfjIc(h#tfLqkiN+tik_$ z{8RJ(Jhi`5txVIt9e=+I;Qw{<|2-3&C6Qy9ElIr)XScLbrjt`?&HLc&c1pElL1*!Zy}zx1|~Z!=a*ro!)@qD=pK zAw}s>tOW00-nurB#%Mw}pYYZO6O)XjW1(9LRku;foHFNq$eu4ftM9r36{-4;3yW$T zLspWLbH?I}B0{=s|LpBUF<6Q(kMuoMDGNJOU*%S;1+N(Am)q)5ks$f&(Lo~CJyLZ& zV!l=(J00~_B?e3hFCY21_be3a4xD5Wj4;x|y$mU+OY69*Jh4Ads|Qh0`M-VMxIH!E zd9Ac~qMy`wS<~W6Dvn4|Xd`Lld=`9#`j?;Q#_+vc=$8VV8-3;4(h;^0)g$8pL{D$o zfHB|{UP)G#+H#Tso!p?qGsK$=jt}CM3`shjXUYRN-WnWVA5w(?iX$RJC*Ee_6>B34 z)D&wQro4X8EQv(nval0}UT) z==4D}}i)&E%RHQ;iJ!QwuK6qpQd^jhg35L@J<&#=ogYm)4%N!_N2GV`1(6H!*bq zSF;PxH+$#e*uG==?c13}g;kc@UIJ9VqR^wfZveGoJJ7ASh!@YI_s9 z_C=A}y=9cq)l3@lz^n~dxLEBEr@X7E8zZ-=KFYiP1h8D;+p}e*h6WD6$pz`bmU?=; z&QH%d^Paw-R78&rh;z)m!Q`}JN9mT4jS_TVsTnmhk7r@YqFXz(TpeU=K0{XlaD?vE z9RiUXj2lcii<4}@AgVh@HKn&erk^$j8ZTp0Sx#XJ_H5SAF!P)nIE^uM#KnwCfece6*qCI77th@CN8)P)=?WI;(@9pk$T6wfC zo6i2z>t6dc_>$f7Qt+%UCB7cu$jUJq>mT9B-%%!=#{B|LYzJ)n-oY^L2RFA|maW~P ztB5JSPO{HCIDcxv)ab7#-KKE%#^%B`V3z5}Uhfv5B+Ye* z3BpzNqkdP7(@TgTOG$YxX2w=*Jmi{q+F&$FaTNujG)fmj)V7sPe4h%lDF^^o`D2{8 zz|jhw&`s$WW_E2HreTMk?I=)dW93a+tj@1i+@*GM$P`BrF6S*Uu*hsod1-SX))#ig zaw!AVowcu?^F14$z4AWyJIz%H#*iNNY*|ZaYP`PMP~q7+dv7N$9dn+aXaxNsXiu(g z?L|n|U{>*Y81|Zhj^9$E+D2&5w|x5vYiGqhyMu4K>`_ZH8k5^CQGB!APe!PsZ}g1_7@yl#kHRsrj-(!7u|fM+eS7eL0&r& zLU8pDo@`XVk{mDbMT~v?`;mj}AifUv}>{;*Tw4wEQlcPaqS=E(JW>dY2sV3+G_cd|`={oP=h zBCj1O(C3Hw~w~|Me z5T*awwWg^4)bUcSQ`cUl+T7h{1(PMYq`S3c`QVi2xkBzi#uk@|i++5O9I*aVGi5RY;PSW~`x^hV@9jo)nb*x(WA=Di?1kfF zrEjL6#j^V_wc-6n>t0B|!WTq20MMA87MW~MRG;m@BtaAVzu0@ru&Sc&UsMqULSng_dL)2f8p8eJ=cse#~k$= zV=l;9!qG$c+Lohy+{@8QQg2@xDX!meXHxcLafpbeM%4iR)uRfuDPpf;UGr=s6@ z(kZz>%!BMa(0^?CAZ;^+D?Id*3+ZnC%<{I>U5~GFoEfE7YQe48#An?zg(pPW)AU1; z7SBWX^`;vi-4xoU`+46y{H0)#(*C}YeFV6zV(W(fxvFA~DqC}EVyz(+m-e#9X#*7p z_^JKIfHYYE@5Z`$J{oLUSe*jI({W3h@A&K>#$TAMSf!GP{|)uwvp4K2_041K$f=mf zSCZJJR#rdPg39okj&NQN&7e{2E+G06!1sg0>*!I0)`?5z2dp&5sM#{vUui5DGmsI= zbO1K%_H%GA=|>DYhoropZOnQubw z!VFG*%av;sxX00cZh@zLG6>Ii92aUp+3aFc_R?vsc0Q^V%O^w_8x-=2)^1iJEna<^ zr(+_`BV@@F-a9y*aBLsB%&h;a(fsN3 z0^yfMFXI72z#X|DRsGTWdzp0ORDfuZDOk;>(hD-Xv9uXm`Ye)>w1sNLPAs%|B#dfh zE^Bn7?~0psaIgS9{PTXKrIPn_Ga6|16_$(KOB1_hveKyCl{fATbKoefvarjyliIcU zo_W{WH8_`Jl1qMu_gQOaJ6&2;I3T^t>|Gfw87E#*@%Vu)@yO<;o%G9H@7?}dsR_`T zYE^gg7|YM;Z+#GO7z(Mr+1Nz9yIP>zKyRig8?#l|NAN6>#I#LS=Hz7cHr2h!n`DQu zumz^-ZIxFp+nT8ymG7L@wnDx~!3zt6wvjHj$sr23O}0J9(Z&zw?T_sn?oH(9!fLDu zw8j^iJS^^+xzVY#gpN7~Qn~nlB1Z*nV}{ifmuSjx8*oD`I`?n#G`S^aUt#%*O}2eD z8HGkQ$7b~Jy@Z?O39J)s)U{-~T zLd~xL%u~~Y4B_uYj{roK{u|PBQ2bI8M^Q&>%uxJ^+L(F8Bu$-h@KaQ{!)B=-EsC+I z*Vob ziQcD3valyNIu1Y6?BMVtL_HYCQR7xeohmB-c@-X>$&wLF;GADi3r<}=PwI1D{K zKK$OaACo7PDn>3&Anrji!=+mWs)p2E+_QxQuIaDK&UDFIO?PWW1%9;*U3MWy5a$7A zq4yedp*8dlA0|zIm~rQQE|gK7TtM5mjNgo-IpJ;|IDY#fW76++nFZstzwuZ2b$j9azD*%F(y@K$FHL?5Rtdkt-k`WS09EKEoT{rQp6-`xkv3OtrE zhZ@GiL^2{DtMUA5=!ibG7v&?I;Y#jr&47X2xs%gN0rs?zo;;K7;bh+G(ds+`f!9Qt zdYe`S zxrt4W_^OuiP^-VfkVnu&q^~W9x@TUDH5db3%z5300g2ikJuBLWoU2AZQ$GutS|Y#Z zWzhE^UrDhPuyMn{o&~MmxV*aG=@oT&JCF2`eiQ%rA?TaR!uBROl@E?_*Itc|- zi|xiUrQTBb$B<)W-cUTDIT&A?`{s3h#xwEF#ZwJ5B=kCN?X#B6@z?rr>Gkw)IGZ=-rHub^73Z;%r+t=TmM&urm>SPq?;S(9ti z+Z%LeiK*B%AfKcpPpJj!nN#;TJqpUB`ZQQ-8<$mQqMA+Ikl`*CW?h$(JHUYKok$IM zAS_oqSqIQaTea$=6LuJk`t&qPOxZkJE!3`3=35%d}fRe^_a(b8~bq^XQqtkT;$GK592|pOm^^6PGwP!}-RO z42;_v=M;v0kZ=RvI?Jpzu=u(pQ{Py}($aaXiDpP}&g9ziGtx7I5ZlNjw-5U(`sJxX zLeJ+)j>ac|I};eiaoIWiE+k@-sR}OJe9*t}W~}8nABB0@56tTrfii1>XhCNOtemXX=&|TU*kJevd4fcNDNiJZ|$%1dxs z0%IWhfpxO|ookg}^HP<=65K*x@gq7;yZ}-J#(E&=5wP{V_drQ2YHX-$dWoRo~B^4(lgID3wXdjAb8ZPEf z`zH=xCbXyp1TWTOttiz!Epa)YYPYeX@RezpIRqhMc?UJ(H5Pn$&X;!u+NwnteAyy5AD4U{%e(qp5|jGn?1pq}Qkpj4IomN7Uam#UJ=4?tEaHoRLyvsjf8>)7%N} z;^5+A5et{94@;2;Sr4^GX9kI}+3rf+SBg6g?<>8EHU7jl-u-iEvSkM1pR+8bPAVZ! z7GEEcEd3?%Hk0EgBCLh|eNjW+n=v{mUS{WO4`NJ>RLNb!L=NHb*xh^*Lm`tXWKaLa zhSL2dqwl=nBm220LIXom2nK_tI?iOsh9CJnCL%fyc!rfJ8Tkaxto=sDk)s6Ru| zWn5%X8xxOp+6qCb<}~Pt*M&6V4R(B$ikLbTn_ox-j|OY1iMIsO{hqz? zkTx~GlKrKNULf`69Qs`lM(6lvSYeh~9Za!*iuQxR>QgYuv7HaK=VmIb+154EFewrP zS@k3CBqQBGC}vq@T(>$2!C{mFYUEMe<3x$8z!-ps5Cx!A!&zNo8 z6o?(ZOONih{`5WH9r7cHeoyQ$#<#leH?XFDkKDic|GMXP`=vlxbRx;TLSsEefur&+>~1}KuD-rbW7QJs!1{zRHGy_A3iCOs z_-~Ls$BTi)j|rAHoOGM==2boK>qD4=2u27hA=YU$|7%f9`{b@$>`_(veg4 z3D~g|+f=eB--OjD0j$>h0iw{mM02y%-o=HpKlp846=U8#b<{2-HLG$!6|-~b<=L5_ z`_{?qcePqPEkn-+@xw~$W$u``ys%N1y|6(h*{_fv5b=WM`V$L=ul$l|`I7{ri9X+K zfz-87#L11eb_Nb}O^nC$(?58R&BL=z>q6+udo#Ve(n3<`!iH0_ zFt?;s*Yd28HV>Z)Z1bx1YAQZUr&Lhf(_8tiZ#H36^)TNQ@>g{C2`h!}$ZjTlc$zGv zWBN1FgF9b`Czj^(=E#;*6o)=6j1+(+w)ee2sQi6PZVc72_)Wm1Pq%E=r50Ofq$jQA z8?>%GhT;a8Dz@T~NG$iJeyI81p@!)3cj2*LasG4>ojJ3Ixo}LC z+f+nV2cHZcrW0Di7_|~@2TC=;I8q)Gmaj+aC$ata-&yUc+n}iwEV2NWD9OF|j_Fsl zI2!eGtGVl}`g~6UYpSJOuRbBQT+Doxl4(ahzj^#eq~|>)j6j z!GDp~HVy#QW$&@!r~T98ug+J;0h(!C9}}JZGZw1#3jhTfw!sbmZyq2pi~4E+1^GWX z-H*c&$WS8Wo4{NE)m{8=V_}o1>Ut%a`xf0SGFayi+(I~6-d&eD4bgP`C;5<4m|u<{g|Pl33TtX8B5poq%F3E7yOFvpCm9WC@N4HAWvl!h(sg6L8Hw(W;v z#?I5TuV4uYQH?7PjTzA*CVW&4fYPp=amt11|MqGN?NusVA=u(C;_eVOJ z|GgjD3%D!WSLVq&V7=r#GoB2st9lp4Oj$EJi}jly(i5SzEV=L)T|Qn^27$Y4KsJ^GHZA6JFFvLt1$bMG(bL<5&xXZ|j< zpj0B%KkwVe4%upKcGX=dxA>L$_XnbsVE}lJvKzes*a=63(YlSfyU9%Ih1m$w;=efy zUMWD61K19rZ~iN!fREUqCqb3w^7kCV-~Ntf4J=Fp20$@@bcOMkhleECA>d}NF$aeQ z1=Z01<|9Y|(~ke9gAK5ez4w+ntr6z8fT5!-o&8D+N}jCQ{}h&B0PR$=0SUsN&ItEx zs#e**(rBrl`U&JWID(qr2Nf=-W5RPps~=%ZYv#8cF$zC)Ns;$+R{ke(03G!`G(zbW zg%B{Vb(r?{C1|QPmY^h;p7c0rDZ?Ibp5Zm`-}$o#0Xd%R0}=eZz}A!~eRPcJPS=Ki zFK8kI)N%X*AM^ErCB{4tT>_jfCD><3;$<%k1~`=*y#@dFp%4t@BYd+FECk4e1zTBZ z>o{R)M8g-7K48BeO=MyIcVhfqPMxDy&!6sBcS-IrE^%Tgw*jmEy*Gto zfB;nN(`yA5;ry7ULIbaVzVe~UiTqeL`eMDO6)6ez!^;l=FHvPe5i$cl6XLHDpnUYy zQGESz-y5SmJzpfp7~Mx{@)>>rdNFY|OQw%;K5nX4zRr6hd>sU|e$uB19E3e&H=c%0 zMi8k=;mD_WKm_a+^AzwA3@cXH05*5n zH&x~=K;?h*7#5X3y%ZLKdQU9Y7LA|qoi|Wiw0QKYp6?cNcK#k+j0|W1ZIy5L7$%65 zJQoHQ72%^!CyLx5-Cez;+?o~M0NS5!bm0)Fv8U7K|NIYq%J?-5EJjEs&Kv?Pb{xN; zjfc|+&1uab6Y?1_FX-e(t$_x}M$$tFgsZ~oOYM>kF)=X>*QOR~>bWClp}*$;2quD@ zUkAk#sUw$T;@R}yZ~l*c+SBs7>6mG@`8ac|;)rSXkuAKN2%tV1 zC4H6?{z?YgJR398V_0mVbkz<8@sd9~^Lu;Z0oK5lx2mN1=Ue7*fVH1|mj~{)|4m|` zX^3dsVmzy#1)?V5`eaB3<_ARJH-3`W@esRKp?XF0mq1%o-p9i#Uq>P%|5>kD?2$Ja6~E4yJ}4Dg z_`eSmx&ec%Rb{{Z+Z*sxVlnV+6xf9o_n(K4frIit6a3#o!F+h{Pkn0EDZ!eRQq<=% zIEn!({o*;*i^Q>FogE;)=>EJQt0;90ebM)yk#d=#8{_@-B|V!=vqBL6(zEF8-ofpA zLhZP~xAuwDWg+-vHV*1~JkeT|RG1nxRd!DKjY9pG*({6?-+sE}vtbv$izPj?iV=iY z@T{}8IMSV?`(m*CBuvDmc>gppH^^Y3Q9|`{lev%9Ryrw~{e9}Wx>idQi)ZlQLi2lr zMh&tMcU3p zzqCryyY?|#DN|%n>1O=~`ld+6{9@)8{~U#8VOO1s-7li2)in8|*T-rNHCE&n#6DUW zeK)&Qee$ymQ#FN^A0j!EY1}#AD#uZ-I*u4Oaq8k+t={HB8Y!ZH@9k?G%0pVx}Kd&sC>kaJWC6$`~ZNAReQyddB> zRFk}uibKar1lx8$D?*x)iD^ty#r~5R7NB&AVnfk1Zv&v&Z)Z*8X*G11?+o3LY zkbML59?4wQ*?+OsCX40)d6%uQEz|FdT#ZqkeF4q9)6d(3IQ`RZgHRf=IEr*Tcc60Wq!|yt-A7v9S(9OoWeJ#odFJ(zqZ<_~Qd53xje#5DQkY;+XgDQ#!Uw2ft??n_D;gZs4_vLoE)unSR}+SP zY1hIXx-(ad1_wpse4?7S#dS-YOSsy1YqjFzgyc2ft=>0LqYIJAA9UD?KYH&=qi0Un z_xV%a#x^E!1-Y21Tl$S@IM}heaZ)a5La-ZSdhO$*v@zZpZjz1`F7--t$uue^rRRDg z3V4plf+TPLvEwK>n@yy zp(ZF>(TPx5m5}c~o~8i~J}0|cBXZ)px2xGzk?Vd*$;6;y1AMF1vQniyIpjUrg>8|2 z)0Za}HjH1SYVp0&Pv9OP= zAk8%-C1c17gA(VS+1)aY4C6+(eAC?c>HEFd!Q@g{lyJu8Rixc&z`%#9_!>{uu+6}n zka_Y~S*vMtUKciTLyGRo;SYR$ORd7s`YGSm3Yv*V9;JLQHdw zx?{e&{&A7*nK{x){Sm6I0(89JU3LfQ@FXf3!E}L^Be*cIhozy zGKF@#d&*bj z1|mjbUsm<_`oGYjRBY~AkBKEr@dzJkeJ%qND>iE_+(eogbT{v*1v=jQvskF!6h@Re z9FgmbfacxwgAA6wC7jN>I27Tfm7N*zK7v|E`9rv;g?hmh$F))b8fN zGpNKf?!*NvV$KiPM=g#k>22GCG|9-8anq`%InDb#So=oW=XKIgmn$0w&?b2gjip+y zHF#1vq-y;>XTBwJuMZZ#sT$-;N6uOxOwisI@jU#jW-`L6IMy`%j@Xn@jb54`!2>7c^=%AEYA@rBa?elD0>*4T|DSiD?zh7b)49e z4%Bmbv?6$$RQcs4+GJrv&Y~~sw;dC>2-DmyDi}Ox9zbpJ5Wb8h;O;7x_r9@qU#L|U zr48?$!dw}2&FWk$Y7*@V)L(vbCm3aO`cYS;n889$Ni$Ev0kSjqbiRS~qBIOM>A|CH ziY=Epcf0T`rTWaHD07bW@T%Gs?a>L2-qf3ZTAuNY!I|2ooJ?$plK6K`Nxj2vDhDBEoh)US>7j!tm(-IqLsR}7?9=hVgWQ4kz830T@T^gfuHrGMc=lHxeD?Vnby78Yp~MqC*8wz?ETy;zJSQcj)Mf_Uy1 ztLxXgwVYXAG~!)RU#;}1_0WBv|NMYtYEw&WwIqK!Zt3v2W}W3Yvg@?xe!HOJ-ZX!# zG~{%z)x#>fLCxY}s#zjagT%>8{E(7!=}+ z;cUOa-e8xsEe9Tqzric1c4s-e*M)rDVyBqTI4`qXIiV%`5c{<}O#M{3KV@JW8)v-n zOv3r}dPQ_5o1H>Y;Mle*u5Z04m3g=p3$Z9cWdw z@so=0FVDjZCb`0x->tAzDBan|-h5^Z5*NED%UQ?MA+iY0E{#ky)y~TsTb3_s)|{+i zv^#aRm0z(x|MEFGJIyt0aA$7mT~#lM$e14?*sd5n>RQ3=9>bGAib0y4N)dIauE&Ki zzE!e0vC)x&Z$wj#-fb4m&1VqtoUbJ4E%VI&p;7U9vAVX6P7m37Td{kXof(3L0`0j> zWt~!UsZrc_ff?~`^e2;V9@rVoQZ?yfg89lSmTG!ajT4$0C`Lq%c+fOJ=anm$(z(=E z@8p+HFV(9*1#TE)rZdOJRZ5CWRy~lCi|0kZ%KS9ov(iIT>6pXwZiZFi#;u79;<%er z8Wbp>R-%9I%(LAtzPZ7V{t48det2!fC~P}*M)w)&9Uy#+dt^kNS=4G=^738L^PlNI zZJmGKW9GE>W_TvXq8G^r|s5Yu3<$` zsGyRG9CqUHa5rG!*XWlO*5jMM%QGVHuwZ3&9a88TEL&GqC?H&m!?d03@{Iv(mHBx_ zO%<$S@-5}9-nG+-6m}A=p5HQsS=_>t@DO!Y@m()kUfK^RElVyrE9P!8En`O9%Ry2N z664ZmJE&pI=M1jbn-AfhsoI4wbc#uw3)bwesS+v%52P&uBQplmqg5Y4!d~|%If7tU zn>|bEsb-iZt|F?U!)f30u(*eJRvf%+wRu6>JZ;Ae^Ek&w3IkZ=DO`mFsJJNJgM5W> z7|5+*Zx%XXp`H(a2+Z|`K?tI#7k~A$c)8L@B=_e9B2v4?=D_vlaUI|F{JXBW?w`(8 zo8-Ly92%pXmb|zarr>eIgj2g!aE8;|jKW^icrz_iS3hl0E#m4@!z3drVJ!uEd%`t$ zSNz>$#M++QJ>Oo&+t*R3Tj9q|!3JQrS!HP`RVzAOfBPDz3WtcN>E}aQRHb`eq_{8~ z8GFFfB&AI-bwqTye%(PXNf9TC5|+;K7Benv?c%1o!f$xQSY$I23u->3Yrzt)FEneh z#)u^r^9weN7*W*YcGOSgOZ$4PW|w?+no2p`58-f?$r!3N-%acgAi!XTLyy(TcCn*0{N;NF7m0tp4jX0)hTzF6ge*8-Py zz+o(eIOCyTB3|y5Utd#kesyp9Jc2@77a4+Vmc(_zuC0H^sGd;LuEyy5i~A=10sqYX zoxHFDQvA!2ILMU6`?;qM)>?JSxHDTBUJO5OcbgT(x2v5dQV3k-ohwGt2e_ou#b4&+ zI1UA2f7&Rf8D$jF)`syuSU0RtbUB$(75fvvgrM))kEzAx*1-DZnttOnyG;4IWn!~~v*~9K-l3#? zGn<%3M)v^;r?`%}Y{laja|G@zM~@Kz5tX#QAY!ICC40WjMo+`Fb%rs_Qaiet<^DeI z1q&JZ<6qpPk7%u&-@AvRwl19hAsK#d6JL4}5=DC1Mf0-Dd9KQlO9kA1aP3(G9_`5g z3Buc>817C!LYz6jX?2&kV*r0D1hHiA2yZr=|E6;7p=E7+bbvqh5EoIb3Ikf6Q#W!R&U z0-m?*(tEvI#J8mOtV%ShCmz3G9HKPVJ?ciS-*5hd1 zFrb=Ct&y}|X#f{lvx>d&s(OilY&WuVMgL0bYWDNfftv9=JsmdcV`b{!F{wRi!cnW{ zYcnhsqE+J2T?Gf(ymc((=?-~=&Ixscb_2G43L46dx?7%8y)+zpMw(xQyYBD#GqR{JwXAB`Z(7Ff=!M58{rZBh7jSM0=_>V-zP$ zZ_gLxjzaEhhIfr(JpMfD)Y%^ZUSOIGkgsO?jXQUNms%D9!*rPIq4 z(PjlL?ECV?#tl)DzP3I4s2)adiv`qlM>5@>N3FAhS8R>vcT=HNsI-}`$ zzNtU00~Wm|8F=KodM+KjU86-r>UR=aO(s_t(9UTYYuu7joq5-3vtFxxXh=dSX!sO?jY-o$j_h~I=V4|CZ< zhi!KRxk1hP?oXB@B)HRIe^14nIXw7_*4`^;+f#;L<_GE;%yZvw(3oQ*fAVvzX0_B- zMuG8jLHwg#3ejOwfIMnfAiIz=@-f!H<+>p7>;--wcB_Krj$1>OMi@nu%j%+Yo|7FP z!ZU#-7nWw)7D-Na!(xAeXkR|`oub<&^4{{XwEo46{=NohAvO7fP1_Cw)zk0U43S$` zLGJAH7L(3C)z6QOg1-J-Ahp||)^j}PbD_Uf&7+jcNe+MS*1v-ut8VA+G*O|CwH7lRb&d1uD&_+La0z zq4!^svG);bKi#_DCu5zp-ua7Lv%a_FsUxzCTQx_K|0Qw0BVOJo(9~DsRr z+2rh+pur~tGIi9MXYdVS{()$>;2>>gaBvpK%4?(S6=%2?xj2RX|$o8KwG3qe} zVfituF5*AU5MbW{T9WWh-#?*f{x)?0RbKc?`rqDwh*CO0BQKq||Ae9+J+^ubgY-WW z{Qr)E@lPbAPlagd!P_1oZb)<7|JiKsM%2|{LCt(QvVZnkQUX9?10C3tpd9>%QTR0x z06fi?(%=ui_TOLr=hJ`A(qCfz-$)W>lgIK=%Py?=fc%tOJ^o5n(t;h!=!E`Yc;%yu z^?RSu2uG=5=J{X!gH`bp_5(sAv+0QmP!s>3g+>qp!T_eRss42voWM zZOQ)@;F^yg=tiIZhvOc@W@-SyVLw;+7BqbNrzI*PAg&@tk*Xg<9kt&mmiId-LV5Zk z`|59ZK=Y42fOvWP6UO3CBWUygnd1M8RMZLmD)f8%yhmXxAqHJm>Md*S(>-?b-OF)T zj>b6=P`wHuS#1EHz_5|P16zu!3NukM#CyFE@UlvA!)w>r+Z5MZQ2!jY1Rg||kVtSeR^fKzwZDC@ zq3L}#>F_cZT{}%vNn`T8_)LT3)bLu0Tq_fDVrg19ePwGc_^z|1$FZx1C5a~OP;=U4 z!1Sgt@|j(lPYKh4c}+DV`I`d4`9yJQ@-&X~fB|CF76<2~7qKZ@Ehhfr5_q`;cA7?M zwTaV~sZoV76Bl0s{Us)H`dLCE_!#m=qj~cr)Gw?Qw=zcfT4z7eSk2YuoF7|!aV%!a zDJw6TIFou9G;PT}PiCFJoimcIc5bc(2X#i)h!5A{#zm`avaj{CQc3WnQH-B`-Ct5( zN;TlJxS*)YTO8DwFrBG6xce+$rYHQuX)3mkUNy8%Txxb@J9tBLx7%YivBUlPi0a;> z|0KW#@sG_i7(9wShFf(5$otC1>L+`YFw^Xdo*D0hZkQb9+oi0#fAP zy8!k~A0H|AFDjy4Sxw_HJ>2F+YulxvIV|!}Ig6h4rD)ZUCf;>%j?fsRt2Y{SGpV{y z34OL$areCHNE!+X3q2jo8gepGPp~=463+vbg4Vrp!m?FJ=NwdPCUSw$yo-q)3A@aU zfdn^arW}a2BfE4U{(RAN!Mnu_i>(BBP2Gzkt>KB-a|`94qb2gn_d^ZKriqtr0hBbJ zb*%nIlJStfjX-%zbv;@x-qD0^UI%w8Eb9}^Bex7Xwk8RT1Qu75MFIl6D#GQS+O+A? zy$lBVxcbS0IMiE^Y#rsN>$XUI(HYMj^aHHgR6~~>929FU(dLwebrEfGT- z-+geX+~LsYuOm*=+~#V?(LhJd?AspZ#Tb-UaT0OJEb=>gG^H#Rya;vlsX1XW8n$j$nH_)kB;B} zG^;YIrD^=3!K2N-9MY($%Rp1)W)aIAWU_XA?65({2>F7BeqURY%Nptq_6-tmu}7gS zCbQAP)C-9*3HpYDVbO8|J5uR$4x#pU296q#AoJ##qH<+4U<632^WU9v8}j$y^OU(# zYRd?!nciK&|ArjR7N9S5gb@7Gr59#qvJ;;?+4m zO}lZ(2Rl2OwEMjX{Q_nOl|B3lb|p3H*lCwWnH5kqi@~CuO&NKriKqNPlXDnG_d@7U zQXf|WSSY`8_&3ZI{VTG4aF4kBaS1} z{TFum#y2x0+&ngF(_b+SgUuu2npMP4>&n7R>LPf=lUg`61&K2AYB0h)bs{}fKF=%?`t;>! zFu;xBbY#Xz+*(deTn3rEw*_WNKUA~G%gW)<)hcc9B-GMU94?-)snzHVnp&i|9Ykf2 zcWKuyzFWy+N1R@$!rcPg32$pe`qz{ik|$+~LAM*dw5ETS7G*%Pj^;`D0Ht2#k8Jsnc>RZr!qdhD z$bZ49g3Dz*W)|kAq2?^Xb)wT0ib0-zu+luls%>bY%hk*3yqMA_vdI66CK3J4_PjG@ zdB#hEO|d5Jp$%O$XZ-Z55>42p>GBQ|O&PZEI4vS&%|34bz$9u#Kp=&A3D@VdS60;? zhF`(V(JJcs`$R8rldo4DT9X}Z`#aUGc76sPfy@eu_YM>m$Iu`&)vR%(qpD#l4pbK2?Ba63wi>lXZ&Pw)b*So3N1 zzIKf!QdS>K=&$BgnyNc;W_5vX0Y2g{JJY zc*XSeR?9<8#??iTl1IkKjcXd%%2%&p&K%+jY13BnbnYJ*$lNpcX$7CPHcf69iirz` z%v1(oZ?PLI*L#4Tj*m)aKPT zL^bYC>)zKZhU2|Wo&2c> z;6dCmc^ih4E0-q^6@7&~Bpsi5^6|B1Ot&%8W_aHO7ADEu=`gU|2ugnnk)+3`H&%}w zrx4J-*g1_pDoI1kdTNgfFlf3g!f}{d){YP>3@|M@o$x+6W{dV)R$-LTsrd&3t-&9{ z1dWGlkByRl`r{iR_boNCfzH3Xcj2MnQrE8@Tfz4jE!rF$Y%o38bf*Np=&I5p|h(s6Yu`SlUg z%+RbHsV(yzCY}%8dEzig;?Nq@bd&R4-iM%{rCD&S1-In2SeZ;@xUJ9$&*Lsuwf3}p zX$=uG@u=U)2rjlMy-E-Qwvbp8P*&rv0T3cD{?`cXWibfV6-bO*q4GxXPsus`R-&Vm zZi*Lg_t~h}=SUvoAQn73Xobo zt!x_sgR_R9(n_o{%|3yuzM28q^3I5cY_imx!`FW zM&f%%w9uGTYu$;p^*9&Q$-^!06wO$`B^Ee`86bv^gf5MOds&x3Q8*s-4s<}I+;w7x@T|W`Ds*j zGFRQoO)YJlL9)~uQCt$gMdG`FVsaD*HcPL5nnWpJ1YqB114V#VnhsNR447K(xxBdI z+D43uuO;3X@1ES+9mR`HMbtt#iFgg;-1|>F<1!Qst9If@L8K>a>zufKX>onoEA6#% zApFjfrThL8@TqdzmC?%S*Xe}RU1?)Y4$tYcqw2Yt-JfF+hh+!y8cWbekY1FLmV1lj z2gR*o(5onJ0*w5!nZtMJuG^ijPbQ?*IHOdMIP=~%rEga>`>%qPUi`|~!+XZw!njxd z^c$1`U|zFxuZg9>M^e}+vs`;t6)TxB&9!RqJl9JT5mn8xZ>?+BXKZ*l)%=o2+3}WZ ztFy3a^VC_$?#gq5QW1++@;tL;7NYj4a6>%ot|u(%spJe@>!>nYztg7va?9O$EKekL z%(%zFNn)@Dn)zL|o?viwp#r(`fxCfNn#xvUF6+c}GK#u+*&>0NSqJ29vu3wwK3W_b zDp`qOvG3yS1=8in0bNTr8vP__bffoI_|uEO127;8*A5DPp}fE{pt4?w1jvasZj3~R zx}3ll&_C&G(9GW9)Wm;+n8wV2vl)_0HHZ4Q70?ubNZT_1|JGsKq_v_v6AS{gf%k1i z9IvjaCGYn*?}7xA;6cVrsE0VV{s!HQk6-6dL_*0}2Gjip6-5>60QffOfjnI)E1X-5oTp`hBP1&0|<*Z^|N;orPh) zNKD`o&0pM!PzDV4nTG-ydJOZaX%INe5lF4PhTd}g36f0$K{weas6~K+vxJ+cS&UX! zRZYM#rcuMEu}Z%Z`5Sg~02p7Etuz|Q?|h5^)D6J7O%um+KV}Zh{!5c|V4zxDa6OiWEHC`!z1U_yr`_fPsi>hWs; zBzUb0#1r>4)3@Olf(j+%_P1q?O=`H$mt`n_CHDafYXy#%hlvW{|D03E7!=%D=kt$G zZ?no^{$7=&DnJv83*LoLepo~m>R2^xBUxF+Mn<1RDfvIAmLD-*21+5~k8Solhg2`( z6WO>b8X+oFMK5aIH?x>ygqGfX`_mo5$8SIa4{;8;F%XARDIrtUeD#F{`Msc|O!03( zB0Uw@@;$8NJwO^@dlwca`U^~vNwO%GKl{tjLcoM9H7L*@!}_4Uqo%$WS#q3ym_w); zjwK7I?E8zIH~-wfDzy3f_BI?1Vy-HHfZ?k{R11GxobGN+S(htL97 z{KJ!7!C~Jmu3PT!p#btCf?RxZ0ST9%!Y|5Fmr`P>2^J$q|GVWez*cGY$%+!yVT-@#!3F$M}*mftg@c;`}% zo_zreDw18v-Av>r6+T(`BmJup;;7E)LwnT?-y{XcP+&DfU2h!$)P$ zF*Vr4Xs@nM45d}ZayY}?|DqWDDsU2o%;2!UEcBl!_n-3u5bJ+F{cofJ{~codUKyq7 zw~yXEl^_+83e9S0F-w5GH&*l6<%^J?Qkm`ugfe9?Lwhx>lu*F;k01b)It6f?-hpC5 z{;iVnfS%}?r1`(CfcD1GFk3q8HJm8x1w~w zERi-=a-Y#)EpFm1sF%k=?gy;%w3YMK>GUlFqt(UJm|fchW{3gSG{^VmM|BOO^O}vW zfs4!!f+jKXKeSBeo^qItV)wln<-ZX&NF8*8yja*CiDs3(XK}3mOu6C4EQ&vJuTpcP z*WlsZ>mTxiX>S_&m){}@mD7C=&e4|E&fXi~c`_W2{@9;L!UG%yEC-FT>ygUQB)+D0 zK`-!Q<<9ZJ-d(vUWPKC0=^yqx%r>W6QmO+HTvXp4<(0ja*6mT4DeQkHx@TScb2nT= zv(RfM2KP$s*?{EU2-AL_Tz-mqzJ*Q(T#mFRaZz)BMVz`y^^%oy7snBY&odfu&*>sa zmC<I(weK`@gVSi9$dS+}P{xEUV^Jh{yy(?z6i~YuiZtjL zvC(|}qgqw!h)uv!27VTDxt8zNVpDry7mY3QQ096hZTVi%rS3VFW8$+Pp#%|2@Sfo` zu2G}~wQx$8y!non=EmSqvk7&}!@KhNxta;)3ORe71pT?;Savhx@B%fr`9f|i!z>C zMSShs?25Z5{`cyB_5s!D?aNKsutmMPQDaIEuclHbj?;#Y64^P7M&H=@QDTTLGKgo?_VnT~pm?pt~MU0gnS?ur@hxc>50s)Nww56S?Cl*s> z>)5-2LzTY7GUSeLp~|NwdK*_B`;%c$=fmGcz?HQU#_^s6*awGhP5idp0mbVWuvKw2 zC=|pWJdiq{*)SkcZO)GXzUAC!m@C|tP9pW(BS7}o+#ZOoC=+{ld&2R&`&Ye9OT+h8 zvo9+?pH(S?C30u|H)9|9JX7zU)rvgnlWxtk(1*A{n-26+72+pU};LFpx*&;uCm5F2f*}x`-F# z1&&VOoxEWBTJ@JX?rMc^XCRGFrzWJTUPUK_wRISzF{YT{}wINu0TF?2DNfxB9^WCKp>#F;rft}(C`o@E_?Zr`qPvx^fi!rsx z4Ob)jgT%>g`@~>87WqmHshW}@RX)jhe}q+eDWu?pd{mJ?!?|A)P|ii)f0 zx<(^J2mzAd5G=TM@Zbau?(Xgo+#!VE7Tn#X(WY@oLeNGVcc<~j8f)Zq@_f(xy%+zv zKIh^e>48)%+(zPB36^YIKdDzwpLcBNq&Zc$Xyj+z8_VlXb=Yj!E+Wy1pjF)D zvnJY&CdC3^gGHNO*q$$upmWT^)cpFO6ydymg$Bkil+mwg!aic?dr@rkF|p`Iiy}2b zmjQ0LzBnz!!}BG03xD`&qwF4Y19S@MnE=dc>(ql~pXjPZY zt12N^W$3PF=xiO-Z;PILlWWQkBCo5R3$FEoiPdHrxj%;Jad*ue?GNRg+F^(Vq5pYG zZ?uVNUI5xVMT)#V`YTww<}9&=22b0S!`0Bq8JHA&6{uO2=%Xkb2bH;S?`@EFG0fen z9Hu+adoFjd)-Dt8*vWJDFyeD?L*&9gl1VRM#v1opfBf zBAe$14(IG%zLN<(v)ok1TsZxUtnvOf(~G4FI$Du;G#RH-kRtzKY7Nzw75{(@C6p|L z8KyWn`J7Ynd&~jf+#NKYUj_!YBn)rOnow6!J=iJ3OPsjhp5H<$lyg2No@XKVND<6K*VZ@O>O_a<1Iys%iQ2ky}{4tCR+=@So!;-+mvq`kmPWRQe(cqlqzCV$M+GdKB-cu8m8x2 zmie|+)J~IVLjPWF>r<8Y-4nncTpzgoN4s!E5CGL5nI{F3B^t2CF5Ty!T{PjoYlkJh zi>aqrhR?9XFF{sYrG#7;?o{|8PVkzCONT?_o9B^$l<2(!v7{HWpjEbx!_I)_L8a-> zXU9#ixY}V}~gE}XO1q115cdx|u&qm$qvy5o$0iNrqUY{|PwdC5GjC3uoSja-L^M?Fn zmQ10}~&O)Sm1nBxE4t1{?z{ zx~2r&{0kZ{9+qf$EEDhIPq#$lTPs$(KV=L@AGS`R_NQyj;hKRH#l)0gCt)$xj1Kpu z%J>Q=2_(8B?Gqsp;9Uj7xFhxoio61dQjM7#w_HGj&Ac`=zCCn$XRqK|@VB2{z-1xB zCi~9nYtGP(wG*}*{~YeA(JLa%GClUc`TInqh?#HeG^AKXIsvbg{^E-HNs1|<2Qi{- z6gv}y2d`=w_iJaf#AXD|CbQ_f5Tc8#Ep{0A@0};jfGfA&wz}{THe-_sTgdsygTfl0 zkm?v2+b6B9+Xd^qc5WTf6dPHpU1XoogbY0tfc>brb!+-z(#lp{@JRTfA*qI8fJA6b zECKxL=cYzot+Blej0_f8X=uSzudXFqjM8aQ(Rckv$;39_4YPTux^@NaXknp830A{< z=Mn330=VxbGlkn5ZFVxx9a>IJ9T@@VM6O;ibXVzo&_tD&vRG7R!xNpSJA1Me-~ATs z+@Io1X$gBAy{KDlZR8JHkEei8ko-k_UFb(y%b(9D-hxC(;ox1m^L5F2+WrhxT3NA| zVP&PC4cgLMFL+*0w`vd_xG1>pPU)IO`z`6L3Xj%qz*=tB_6Nz?RI|H=&qCC%g^&f+ zTY?V)QA?DIFNrmI{gzS+!S31AQ^D01|NBNqnV8oP{P~(pLtu?jDUn-O${|{+Y&TkbZ99Z~mxTlSg>+(*Bx#-ObGYV8wKWlXPKBeyvQ*o;5XR0Qkbt=b*T?E%cd`d9yBeFvHh zhVf;67+w_ahS|V|#iIsBCXoAd%c0Ww@eCHL2QMTs*w#f4Tq#nAuV?D>6^!hn z){no;U|wb*CmAtn*0^?kxgYZ6F2ejTzlNeS(5``+0W1ZyXnJUTS>>#|t^x%=y*8T0%ehkxL0>$rJUTyRK?095&kqs5VY-mSa^ttGiBr z>Zv*MzNx8QnwxAiKk{wb?Mar3^MNPtjwiUS&PFG?(_i<6f8s^wY(DF@lF=?+#qei8 zZ>`QI|1{>i5p(CN79Zv2>uS-t{>{gLB(($lddg1bll6e*6rj|Eew*EWdXG&15}srk ze}|W9GW8iA%dd)>L`e8z)pyxeJ~$cvA2SL6rJsQM(;PowTWgPh9HK{&HO{)|bR(X7 zv(93uy>9CDH-e|Q&m(Z{?k9M~0rHFX14~IEH2=7^;sB@;)GI%6jHEBki+Josx*lG0 zPO(0=%EfIU=JBCozj@{1AHUqJqGdKukd3-zog8H;1F~J@$+{^5*3{bV{+X2qj)TNF z#WNlGn91x|V`9L0dS3aEOb?(L?_qpGT7#&hJhA%0Xc6nF8S*6r|~I{_SQZ&lKQM<#b0q zM>~deuO&q;QE9KI3}9vfJd*d=%vG>6`Qc{{htED5m+Dp*Pj@#;KkJP`90k=Kl|1rG z%DF%z;=Wc*<5%P588_}-k(8Me&l*%ay6$q%smTHaWQ~aL%@XjvoyML=$Os2VA z^^%q9euMJ}i>|qL4>9j}?Px{k#CWysy$!%d)vsgFY1mokx;1Qp%F^V)g@hpQlBqC8 z?IPtQ5KOi0*XAXac6~(LOevow?dnqmS&>a1_%#;rUDcHIr$$ugNDhbTUE}>{^kLdQ zAdLI>!JEtj!u3xy@tgCNR%-WIW8x0Zdn_||-v*F3XPCx){raf(cTd@4 z?}J7q1Q|K(ZqKKQ#88{@iNq5XJqu+;YYjxh=Ns!rHQ@SmEO~SadWHLRQTYVWC~Ewjn37R{J1Lk`=tXw9+n z=e4H0nOWC*)Q!?fO*)4eJzM1%rzHaJ;dZXRB$yrU1#*Io1+{$fw8gjkZRaw!(@{%a zzM+yT&&Kdk+~((p9n~al7^nkXA6ZB%xW}ks3k1C41qIO}aJOu#K0nVNoipEY>+WLT zuP~3XW!V}qTq32vC*#f4NLzoSO2d+=C|RWr%%hD+0J+C`84>L!OSs-qTpW*{vqk!* zd!@WqOMPQGKu*P38n)e0;Pi(@|MncEjf?VqwV+rr%q@uOG>xg%X{Gl$54ia2nE^iX zG8ATsb(~+dy1R;JJ3N1izEm(7>;4A=#L=SWskNY}&#NQKSJPfigPr>prt(vD{wFr) z4^6Yt(emY2M9yWMVa~AVCk`FvfiJDXRKJcrmGb#R**-@(QNmV+^Q@mYy(q-?ma%9O zFf15!qZxlLp7y2aHxVH=S&KnWrli_ybNx>)f6`mP!>Zb&cg7DN#W5NsKkQnLPdl!s z=09*J8qeT|iQ6cSRi!`SI}Z@e7S3ii1l?rGZ7&yXy)67^xAa8GF=6m`#9?15L^97h zcVF+oTf(f-^3`%ja{HllGV==ce^cnTCxkCH?SH-bgCYKOL*wq8yEI z%DI0-j1ogm=X$Cv*-aLlF?ltL1(by;4)+lgIOiesehle)G+1{So&2=Ws2BK9ZJDPI z=20zi^2=TY!itsk37^o8+|O?&=WzRjwvqyfitulZhLkwQqo2Iy`)Kq!k5sH4HPnG3 z{|6%og_rdF<&!OD?~MgD@(eFgQMpy~cAY~WL?(1Q;7aJM+oxiV59=q&!b#$TDg)+N z1L$^4Ka(|My&kkt(0;%6nWL9G)8AxM3=J=CRy_}7vv2DHs2aGtDX<_52H7w?6U3L; zU=EZJcSoHV`)AdAmFi%BKDI2GXw~_f>^&)q5-&RQqZQjT>B+me(}OU_lbf5W+f|)7 z=?mZ*b)2`DpiwGqt41!Ls!IZMM6i0g=V$<5P3!YJT@u ze1hgO73G_;3v+ObonxiiezTKP^eI)To>of{Tq0mT-ru#hfgqJtBa+IkvcK>Ne%q_h zFPiqrhl8_Khs@^5APZ#)RRgDb<62t@3OoGD%gOjd5dqd-lLLllSDykp_hyA-6)Vg6 zx~CLW!{xlzx-zKRhd=WdH1ws z3Lb&mDAdhCwZX-+WCAW1RJ=z=9kpLw)*5^!2xh7R&e~nM!t17VHRd&w)KZbSc3HC) z6-7zBKR>ZRr}RvCuLjGc^zi#nfRK6Dntjd-d44^U-S@YtdwfXHB*^_VQw^BeK`tj? zmd>hPWgT@B&Kq2O#tUvuy3tMY+CCitfVCjHV0&vp-}zk9Jps5GyM8oY=O4R`j<#iv z;Mf*o4h(oBJH^Vo?5w9^lC=JfX}QQDW+~BVkFy0U~$Mv+UXE^hwP!U!hS1A+gw2Q~DSY?30kes|h*y=~BJ{q}3{5~3k7;zoIHA$4~@=|3TjNhg?} zN$$Ji;UVZVgrrM-Dm^3Q(eT8o!F)6Pnv1iSsZibiR6>Q%Z4vtq;YU%2mVdyD?=g6D znxo=Br2foYo&CQYM8Rwd8q@awT8RAgKYJ}3-W^$-t`!uVfvVv8a~dd@$u@MS3UcVV z(nH0dA?>cOaR4e)v1l-uTX>E&(S!__l2WsI#!Ty`-%|s{+?AdVOp}CAPX0nO$7Qkmc(8wJbx5eDMBXZRGfS zvpS9RddPqaV4F?c`rJFeE1a$v57%~zc{uF%>1i&(%2gHC2fC`ZTO31VL$>Sx7@aQb zh2YnB+w&OSfRpr&ik%=uR38A11m2mBsfaez`IHKEZS47@hDv!w{eT!E#L8pM<}CYBWO<=L zN31RCr@}hPoJaC_m0n~uok!Nq(=b_C_^pbv28)5IFro6QV`miua%S3~scA#@BKMcg z8yJ_;lvWzJ^wMZ-i$w8AbLx+wrPQ#-Pt^C=`Rj`Sl{}XF+>)~Gt7FIBr0rW%dxyP@ zYQxs!wNV)d?`EPGlV{hNET~Gw>sLyhk}*W1wNfK{1_NG3=cbK3$Yt;oorb?=EV1DH0px+nMwmlSR*au}pfp(-LX!`unnRyhWpftOBclqrSa89trP#qXH7~?rs(J@9S{)WQ*Y#X*4XIU-k0KQ2J1EzS+ANaJl-uj;bYw}Q)3X}6TwW$%WzmMnD8cI>Af4DQX()*Vi! zb#?h~O_YwCu6>5An~*#%OP1Pu=nVqT7ciwtpn%dlDUsHUPr(0-v5u^SU2NLv2+a7MAX)ue65FY0J#hY=}$tsUUnm6DHWW z*?V=+xzl32!3^`?+dG$}>3S-!)p|2&Enp#3pfHvn`l4l#(`fy*0S^mM@V(xd+$Cs4o@c3P zDh_RJ{eJ>Yk|{FTVfyzLa=w0o_Ek8JOi{pC)(L%f)GbpG8v)(k7>Y+rj#*T%*u zr&OpI{v61m$E0Yef4C&!20(sY{N;sB$LGy_h(-#eZF)lXw zyBh?Vv92CFA63XS&_t*STEvw`Pt-_$~sc)<EtcMJ<*I2`gF~=c5an?VP)CP_afV}e^saiRLmg4OI(}9 z!aKCX!pXzPyw+zmVA;b!)t#@Xy7am+%wsIN-dwY|{VZ?wo}*k|B-_|v;T~Fkzqkf? zLHWo}<6xTQd-Fr=TjIwuQ!U3 zB}mR9o2zQ?XLD~SJ=KSm{*0y*D(^|-uAaTaYn)FG5gcuZVb4awZ5fHvMsbC#XNKmf zc#06;$uG1^+$P&OZzCbdyX9PR7wk4Y8Gw&@88pF?XswST>@|;kT~bw{vFt2u^JjI% z$XOt(P=wiwH(LHv2rW6gqA^St-6inCY4PBllGS`sh1x3QYAJR!|4{DOavGbua)GmP z2Z~plwG>9ek$8Vmxv4*g%xy165PiMk@R=cv9TTV z9KwtRVoFe_kj3i6IY1kyb7>`+tBh^)=wCeuB+2>VBY4XH+-0X5G&xxu;OhHhsv8+; z-B|cz81_D{HORx<;Kyryn?x@?P8=_T-!X2TNZkb!Kl8zS*ynhjQ^z zdz&X%2067E2{K9KOxq;XF+T50!>*=|FNT=$6d!gSPO--MXhxv%0UXCkwi#;~UefUD zx|`2ImH{i3c}nT6`mW`gk9)XFa7pjXUksUZ=*<$}JG71e;*Zr)w%oq)!3f@rd7E0t zzkhUKcI8c|GjGCy%>z!)kW{dv`3wfin*t^fqjegV{sKm_wAka{xS~uoM-cr~gx#53C!#ABE=*9{?Yk&) z%{lncamfHPH6#z(i-%J~ad6r(lK4VAukj9q;%wL{h~}MimLu0NsWhDV9K@qJmW~(O zHa>gGyuNJlxWHvk#C+;g_DT1l(^vlx;AaV~n=nmxMd8o64s!$?(5vTZ^yOl-m2gd! zn#Ba}=URRSaiBE=Zw>!>J_>E(#kH^7gl*p&Ly_Om52_Zc)MS&H!$)^q7aox9@9bzp z41%o+hu;n4bd;MJ=@lI%k&%&cNX5KOd(rjl(Q5~h2WTR>b!g1{kF;ktrhr!26Xa$e#HYnD#<~mWbQyJ}#-RCvskA z49n|&y^DL$ z+;_2$9462L1;-N!NxQJ5`|L5WndQ_m!15x}%YDrQ;~?qaU^ULfR+EdN-C!bg)P{Ixs@T@iK5FPU*Za@V zTGPPtB>2#|=9M0O^)=0P{FkFI3!MdYzKv~dAS&y0qg*pJC6jghnGC&|Rf6BaF4o__ z;^&N9n|$m&4LG<-h&4EJBLy99G3o9(42;jtdJH|yTtRK5VJWPPdugSVkG90ZVprx55ib$9_PtqggLZw%Y)L9F=lu;3AxP^1>m;I67 zm@H1q)3>w6gv|!cn*6E1^sIi*OhpV})sd>^jf(7ae+qV{!g>DX!SgR7-RRpvHV{>M z{}0BVwrXs~ZI4X`$|i|nuoR}gK!HGAf|fQ@-6{iz%v|RKny@EdrCwB%!Nbbg?=pIB z?e{hV&OGkDju%F@^Mw6R9bSFNcS~7lq#M?~R6b%<^!mv=bi~MqtEH(C`|`C{cRS&a z7vSYdr5KkUQ_9}Z@LnDDZQx0hbr*r6pUY?H1P_ufoKDx1zu=b{--_c}Vc;`5MY0=+ z<|!HZikv|+G37%wxe&>D=iuu=8s+LkLL{85C$ytJ z^0w7aR(L_Nz0N&pe68$pKGF2@5qFyw`OF!6mWOh$>r$}3c5!q24W@VPQm6IQDmahw zAjXV%Jn~oHv0@JT#Gb7EvbClGW>~4KPZ~IL^BIGTV=GeF*MH~%U*_Hun@*!R_h0#> z`7i0qIM&Baq?*V17RY=e=V|K#&Tsk<3vp`~m~JsV=)l-hgyaccyVth6^)ae5-woz3 zuG!2l#dYe%Z?A`~d$Hy6HYer1B*fjmY_@!_kpvMgS_vpDzB=b&8LU=~)6Y8l=!T>1 z?#&rs0d}x=CpYcI+yi;0#pnUrxUQKfk-HSuyYs(;hssVp7$@S|Za8=2B_6-jZQ8ZY zv^T8NY&2ye6CC&MyJnwW{Zz-K3a0K-_HgShg(OZno7Wbk;q6$-%hL_jg$KxFFdm)C zTEuE=8a7FmWTh+-%jM}!dRfyZH&qrEnx*Lg$z-SqFI1Hq$3e8!brBPL2%5xLVT^f< z7cYcLf)~X4mkB~7v?pFYdxQdf>e9KbxkFj_34}J=A4cDem{mI#D|oL(S2c3_=1l_I z705pXP=63)0j!yLPw5k-jQ64v&uv2J;WJg(vP$in&J|2%;rXK}j~<1|V=uT6>2$ID zUbTW{@P1_86XgekuIa|bK6`WRMG}mR3AQ& z51nw+ymE+NixTmye;JkrF(*F z=3Yj=C0y;$&es|wHj%PBRi1LJDWkA)yk3G|%GoWCS!b2l?J@lngX(Df^>Mwy?dKny z4k8ixhJD}MZe`zCB6}8~d7FIpR!y`lG#s3Q2+<1A86@bJ0EaVOH%)Y%_WTxUO3mYp z{+gALv^!JhOm=28`K2M5=44nYy{QcHHlAm?4(s-+GUPtmsjsF~Zgy(ZAQDN)*ZLKI zcO-t`#X0L7ue}Ad{n(}GJIOSSsVE`8`@VJgs@h#MyaTCrdyTLa9XF$5U`%}(_Q1gB z1QsWpF{MKjaIxrN>9IdU2}r%)NKiy$m)zEk!9e>9MdHym(8(1bSIn%&6Me^zeW2SS zs@c4T1vZ^mKZ=BT$S)T}@c}>A6SYF$W`uN4!jfNN>2p#@4Y;0{JIu{yNtH-n_+pE( zB@0&g%If+q|A5UVoA-xsp1B;I#&LEn80>@wDzbcEs)RUGW9P`w3{j>0(%aU^wAxIf zuh<^|rEG8dNtEe_hWyHa-j;=$3bmWgiZ`pSv)~rd&&$YYDr=@QYUbS}+1bKj#S@d` z$yq&?{XwL%EOH-`y(e-b;t_qV+Wh^ajIxTlZps63Cr@+c##T-OG=&omo0;0fx9&Jn zUW7MV6KD}r=EHj%Wws=OuUv=27&m@Ru2~aQ6`wG>X0hD>{G=|2zUZpy2fx<97`K*U z2y{<0i6AYCLI{b6Y*Gfj-074Rb;7^0C&q__yj&KxSg_clI*IGfEk4JBCYWir65C7H zm=m_Mg|W1gg3XE7vvf%H25KObOH=B_|ehjQp^|gP=FVXTiuET zC1BMipkatgYsm4~SHx~r;YY|NVC-Icjb-R}OJw2fs3*xtRQqH#`L^9`V1Wec)LW8C--)&?FIGugupW?6FFv~}zfZoY`dkD)IX)49 zf!bt1TmV}k`&lpFK}K@?S4~ij*^hVEn8yW=gB*x!uEW@u7BrH(ETQ_jb7FTwo}O1X zy{C*h5)C?r<))R1jyr(c%qLH#bxc204zlO@5)kJa_9MVTgeo#WJQ7u~$w_+led)aT z0>ibVyB=*xd&#tdxI=S}ja!y(KepBTVyu~bJ&54*VWVADfyA)BAobXFeuRSJg+)Wt04rr`wa8adQ=o_Xdis z&mJXHp`JX2YHo9EZKT%q(3TPcVCuxVX;P7*8}%mZ^e<980hx2_g)TKk>i0vqPSydZKJ`{?ECx?VwY zCpD*~e}nyqLMiL{gjrWUUjvRS3ZFM|qgjzaS)ts8QN{M%u~)+|9TxfyZZ2^K$wwAc zP{S;j?L}=}2cQkRYpFhuqa)lfA~F*0w^NkjesV%9pN>0&N~D2ipIpJ}LPYaE9PI4g z9e3AzA!EDWzI|f_9rk_?s`e)<&pKFB-?Tys${o&&hOyWz45@AKXnfaQA z5+AE)EahKCI%rF8*N7B5H1O(@*qhlt@(bKgLV|O7c1shBpSqPcN-IdIN+;+$8a)|o zgZGXitQ#|<_mg()IQqi6;Q=6q!%z`zKNAC%;jsf~gZzYdpOVA;#h z%40pcJUTimO6)+7_Iz2Sn+}QmXWd3+k*Mp(5c>1At7)sCrwLB0N5-iR227=v(ndSK zvGMD4FxL|E9%VVYu<5qR6K%=dS5$X+r%Jx<8U6HI6=c6(NMPuD{EQv{rDf_2V<_~F z6bGk1aLTex((CDWWwsD-1(%&i2p2v$jPfO#$V$tbAH>09pGr8HN#S}FaIk)*_vc{QGGO;U+a@T&ea}q&=JUq~XbT|^USc#_ zzo38g_bn=kJr|df@^Rap*s)|Mb12?X&gv_*QlPV`&fg9FjD|Z*V2hob09I7K%;79| zvYQ9nFKSjB09TK1eyPz@J^K@h{|Sc&kGPUWOiWDrHz6rG)DNEc`}^;ysH$F!Dkzfn z=YHBEXQ$`O7VtXJjL?<62%eptRb-5QfrS+!5$)%z0 zf$st+%*t+3K8}$r@bXw_ao*{$s=&yTG4e!7Pl=AOF|Q9|RK1 zd~pxak+Y?b*mjxU=ua5$i6sxnR#-h0my}>5!poWIderrcjOZKc#r;iXxG3MB00}x| zJTH!CZ1Pzr+J2%(#YCnF-U2%e7gr|R@+x?I&iCKzv>iwk;0LQn>~ws0k5-Y-5o%Ay zwKyoReEj*}apYkSRCW}~+0gtx-z|1D5WmO3UW^|xbH=-uKK9nQr9x;L!!i1X@jbwH zbVmRHroH=_NJn?m)W+CAe!n=)g6f_BR`Yey(MtaBa3|@4^71xi^3Lh$`$5A!#Mizh zzu|fZqu$AsigISz=KS~GH{+JR68fJ=@7LrV+fq1Z*vUN3pTCTaCEdMP9z)km#m>0Z zFywx{zn|y4ca)o(idiD{3H&xyZN1E}LmJn?`*Z^z`fsPyB%Sul!a z%N9{K9%K2sP4sRTA-@@0>Zrr)&1qg+sRI;@%4R!mpkQZw8BJ@Y)%j7#*S3$bz3TAJ zAA^VSGAa20N5AGaE~KaRCl5w9d6xtm6Vd+Ys(cJeJR92mQSauKY;L{ zj+KRuy5#0tekGSn*3E5(@TTQ|uW=Pk>6WGQ=;ymJDZOorDXs_nBsB#!y5A~0UgH;S zUcJ1wIqx!EP*&VF%XuJ79VZ$Uxp(-?Y z%$rwbYm`WpHhbYj)%m<=U%R<;I`T6$wkcn4d^4XqGY$eT@#?IYR9=Ccw{h<>j-yqh zTGqcin^0&9a7Q|6KZTMk9P6Tq~zfYOsgK$L(C;A3TN6~Qv0UDHvLNH)IVsPjoyO~ zYYH!LcnAdl0#P&upZPc_Jz_ zd{RES9V?~nF$YUm73>tAP4??UtCz#0yyH$t4jQ?)RVxzixYVa(h3}epi7=VU?m7>b zJD01J?IMs#C7WJ}ZAM!3)<6CY_sK6mJ{#{dlaIR=8o_U}^a}!J+<_C>!sm#>++Gc@ zZpGbIVbkH_Pf`%PC*)q75^5D2!;J-3aaG>0wS>&4LT4XwRGGfHB`Owg_CR*`^jv%S z_yj19XP#6Ww9n;`CtE6-lJ$-sfdoc=hvRHoM`*R##}fbg^Ey|a(utf}3f^7Y3LPBA z_42vV`gJ4=AaD#P?beAlBn2GrcIl_z zEQus*yC16i2w8i&FYm-;=l7&2`k^1GTY~Iyeal@UD+s=oUUi#q8hF@wtjuQF9!}uz z{_n~R+HT3P3Nh^sA|RBaC(7J$$2-S*N+z*(D5gFHP$_u=fp zhy0)^>r21jw78qx;K#It<|hnFCFE(`;~MDTE+NV#n%}yzZMIk57UEph2uG1DT@271 zhjUJD*LAICuomseQymXGeWQY}^+NIDNxL`)aZFKJf&yLhLKw<3UPk`*!<9jX3Hbz_ z3!|z7oyYJWKJKIjmj#^~OsK<^Dj`WwlErsH^@(!=IdcNSjql$n6)}Z*eQK1pYGC@9AU&48VeK$q3b1rkS2d2yyXNo< zVV*IZjJ!>N#@`G(&Ih=Bw2-=~@CknCBz! ztR_{eJBhxSBKF_5>t^Z-QS?4H3M+0B!~ro2UHT}Rhw8}u2XXEQ30XA6zUsDfuauM{ zyO#az$i-Ro@LQeT9pt9j?$Q+d#aUa!S6y(qc#^8fasxSlIMoMdjNl{QXQt5a&*JvIMBo zbaiDhxRj2C4S?782!QuK_PA=e*9J7U^V<{R2~Ztqa2;US^ROFDA3o@txADI$<SWs)@DnboQ^Xs}OLB1U zwMYQjIRT}1)$`;n!Y6mFzwA585VJLXN8G8fi}TUK-=v~TDQ@E!hm!`BTMA+Z4_Ts@(0pJAxW6tSdoQ$T(vF?4i^Kf`2R}GdJm=Mp>G+9x z!*?hpJ@Wp34fB{BcpjE>Do+j5c=hTRfh{p0?@M>DD}spK{M3#ito3ov%Zia{H9{d5 z&8v+RZ)F+b)E{ivG`jYPq(>KvrIX0AaMi} z{vZKJ^*p_j=lWWbzJr|XR#KQ`qRqa(DlqSfWhI1&?BZnK$l6t!-og>Pnv@$>z!d^d z)~wehOM)5>UwBc&TIqCTP{1Ot;oAoTxOc%aCgb<}7oIhfOnaF0Oyse;P(r>$&& z0prE;$X_+|L(eGxKp-V5^dnOLtwDXd1#w$OE2fXf1?X_rlx67nw%Af&RRhg?vCb?3 zja?C*f}IatwEk3zVnleXxXh`DO`wXUC~lA#GdN?zk&5P{s1OO4`B3OrlVP4DAn63M zJ2CVbv+z5bgoU_p7oSvqy(iinTa}S7_dj&KpNxPZjZAKSt@Uv~E;>UFb40#=%+U7k zFdn2C08QmnU$E*&N$L}y^p9IYpRCXybj)OrwKaU7=G988A}YQVCX%y^UJ@+#aJzP@sj)_J*%>p z`RUO~)f7-_;{>}wzLxvF(vsg^2Y2%`zTgX%?`t$E!XD=R8>-otxI97^IgK7`eSpKn zVL6n<^jX`B39q-LUtZ=oz-FI7`bOKYVEL5pgzv0HKfd|C?WkkJBfO%&=#)QddY#Ao zqWbnn#3@wJa-s-f+RR2}amd=>AKK_PC1LvPyCR&peu=Jdk?y2#ajf=H71e@LV^z^6mPBiN7i}yliA(mJK;=oR`Ht(8zF}L0H_5G`D zw79UXIy=YMn?#{%Y9Kg;comOMqyX6Y0i~lSrY2NCTk&Zm5!@kcM;sGvw&^DFn;-}3^mi@%{qNX)8`0oyiN-7rk>s8m%R5wyl+`{gkwlhjP@(Q73t zWh#y*dA690m6Q?6mh3cN=Ud(!7!&hRiL+gcn=_NJ`v$z$HoAF}rWnQqNiL>xnq9sp zIWs*BOpzt36&SvbZ~z@SSYyhoX?@HDx{07yx3$Z#e{ayqlQXT9s&A9x*98`6IX8_k zSc7P#sKE78Kd0ImL8}@JH&!}E-!=e{EaBClO-{zmeyLH5!C6A-QV1s>BtG~95)DNe zNaS=4;QC@{v(tCHL`RpV3^HlMmFnqgT3K1C7jPKPmxW~5Kb}3a@)1|zr`5O@=(PXDwvtuz*0r9^;5JVHbYg*!LIP|rC^y5%4~m$R>i^r zM@f&&sf&D1RVm$9r?*m7Y8eVqcNg)!%;^xp3jb2RyPy2TsB;RDLAXWCMTSDG(MuGK ze5dOV%`>6Z=(dEtRoOW`U1}*exBYBUHuU3azjN-CIz2=+SlH!!c(XPI1HJjGrAf0h z0zP?uj3>e?j!d|D+6Wztf`TF*ucuG+H=8Jjw3D#o3Tzxd!E-eG2-SuT0enP!d}bGE zd_4(9n(@U%XuDl~v%VFl7Be?56|YEKqSV_L){PSWdyZQl9oHsD;AX|a{aZ%^Na(Z9 zMgh;MFK9v3V;NJ7`f@q!tKo?m>EELL4$CCxgO6q&=@wZ*N0w-UOa7}ir7eRX7BY8Dy4Sqw*C7aJEDvwvStRq9tVZ^jeb_58O%4mf`n?nefKVrb1Uyk5(Q~Y;&NPF zI0aMonsi$LkRmKVV|XM)Ca7uPHAN6b*vpW&(l1zg$YgtdhyFGo(@I`zl66{e_oStu z$Q33cOpuHv6O0W_$b371(?{j>4@o!S`3T<+JMC%CwFpnhaQCIA+|Syxr@on)-wt@a zyxOmZ_f_wHpq0DflOji~uI0}PEgi8|TG`U7BGb~*4efY`2%_p}IZJ%@C)AzrNsT1w zC=*lpe!O#g2j@DY9s;b>e0(~+(C@mLhE8(mzaqdAHN-w>T!Lk|TQ1c2-r7u*xI0f` zz5q$r+xbB~?>j~+Lt$DQc)n7NZ}&OA0$GddkVpButmU+uZLBd5KaZuf|EImL42q+R zwhb0M0fIXrxCICh96})I;LhN#!Civ|O>l?c?iw_~XRzQ5E`z%h>RoE8Yo_Tl)4k8$XYaGt>eIPHe!bxp!uK_&3A2kOOJB+WrVPnbR9P=`NXr#!N*UBV z-2K^;TgH3J>7&7t*;|3DYRun(Z!2%*rA(^;6Q@hbX=li0WF~Wcgbwn1A-3BMU52+Y z1&PR*ON14>h6lFD(P{K`;8a{Yr#kKrm2PR$P=?f;1b4zz96{GqXAR8@8ZvTVuhIrF z1`X6)R?{8Jbr8kPyiV)WkwoxMTn^HFekBeb0s6fU#-WHK@cS2Ax?&V|CwjUcaw#$Y zqM{nuhxtJ*ULjPT6m80JQStkTbfbI`!Sm$S-8bGm8lR2LD#FHSBRpm8T4$rI#SaOR z+mnVhD~ArYN&qmzXr2l$wVsToU$c3u7%bRm5;(uRZD_y}!8VJiU2u#b~C z3)r*?UVqbjX3H+?PU%3Ca zct^53t$`IZ>D}7S4Q_rXbyO>$wr~`BAb@+VqXF)4DdEh!EOw3znOC(TlHRHZk6Fkt zPPpSsho#cXRGnvnaWe}lHFiGw3_lnD>MB+l?-%mRT$$Mj+~1H!f#K%UxxK+LR6rw% ze)&8X4Yd|L>R@pj686>K==;-#!2^gz*ZTZutDtLCD+)odCj$U@Fgj;cgDx(n0!1Cs z}~}C(?=aO<@4S*&A!+6q9yYw%;W%^k7?rgAT>o3?pv?~4^yNL z_uH2rIuX=1`TXcn#Md&a_8JNogFmi$N(5#yZHSz{u_`ju>5>ID^xMVkQg3+}B`f)n zB}V5Xrqol|C|7*MS^Qlm*UR0oC_Nj$FwcH`-Vox75uVx1I=&zp?9#G#~2ZfoVN_U&#)EG`I`;hr2aMjB8` zeGj}H7(N_|t}>ZuP-MGxeVO(a zGjAR(2p)hCjM_@mNHCC^^^E)9OL=%*HY@CN7bro(z6p_~D*2 z#JU_)DSy=`Wn0ms434Ge`NH=@HU^ui{GS^A!yky&oDpkxW`4Uzr@HWcQLem0el~s- zJGD0A()K)k+Bk}(w-<^|&Y;AoNJiOk5L2k`D#_1%^y#*(PO(1j0MeA5#oEVB^qYA7 zx+D0_2hh-+9G}Coys>m_Ks9%eLW;i%FwgoI^%I55_$6i=ueEs_C z3r1uHapby13O-M;Z)0Z2AD|QJzCN6}_*sHE&_u^@w+xzOwW+nnU$LaH(;zC3bW>+fYhFAM3X!&7`edDau2u}oQr zb#hrSB!Al~BGAgq(<8@SPyWi!z$&Gi*dgz4Te}i@O6fa{dA2?II~!o$m#pOsUvB(M z)7Y2nrob2QyIV76j{D4kE;6b5N-R(J*D1cT)^LY;viJ_leNrL!Aosq!5%xXV?FG7g zxAx}cuaHl1J7gYXRL=90?Qi?E^SJklb4<;YhJ2`5bZym!U1NIK)|mIae~vS!ww{7G zn#q<3B%>)y=+5?*kqoHzd@AP^D-bzNZm)_!qp1!bAaW~ZaR#S57Q8KApj2+AMJmkv zeR_2^D0?mAlJ=(X@*9k%(c~`>v`0Q~#gH##K;mZYY;SZ#^~-kA2{`P&C;4nO!Ig!r z?vqxVX2$h=HFLVmHG3X>xMhD+`g!R>h)pPjg7#4FJM6?H1NL2H)$1$PKq~i;pH#KjQAh6Gu&@oH5RaW_WGZ6Fl=g_oF-<-IPQ` zO%s0`+?{MsmelaSeeYdlTjoLJo459!T-e9bUpnQPhO}Kzuw1w%X-YadOaFml3_3xz}7`KILw!!sh z=cW7uC$q&RHci=wI7f+Xi2`zD_br&p3yb4ZE*^nuaZiYlzAh{*@b@={W+{ebT8u2u z#>B(`-=G~m?~mhIsfjt@wOeRO9k+B=2VLM2;a!YvcDsY7@T{0iC71CZ24l--aPEd* zPgL`PR)~MQ@CD9- zw*af@HbjFVxg@E~j%BUwaI!C6G~Xup3Vv<=!>9|psgJ++lJ%VrqdGV9D>9HnyiK`m zLv#8U_c55KA*Jvw6VwRiuc( zr_=Gx@c9g&X7V~h)1D5Gem-C$<@H&z@~5S~K!Yy&P$owt8-oL#7W!w~w7<*OV3@!Z zDh-$6#b40X!wZ0oDVAYeLx8W~{1Lc@!tZF*%slLuFtHA9{Jb(F|9{l!WaADE{?X~2 zaF*zx8-M-2!n4p$*H10>ya9Kiw!FlqKR^SQTL|ENCd}&&_~sVASBp}H0mnfZV>XcV zi9WkHm*!4C!*wKj`tW`afCdI` z^g(e9u!j`ek%#=%5v`$qYP z&eR$i#IGbI+-!UbygU1*LeUUyT%mTD7Pz;!^w- zWvhTq7hn0Q_l$NZtA`Ur+5&<)JX=$@(KpJ$EXD|uWiZ*Y;l#;vIN=iAb8OogQzEk4 zqmV_um{4-c5;M;&R4W^4%+k;7@_TX+uX|drl)Q1OT44c-9R>F9Dnm@COEkeB^0-hy z4o&TVF9g0ajC!Cg+4BrV(J%GlEc3cDrry6qUtsBM^A?Ha5WtYGXL45Wd%i7KgJi}c zQ=GgjYM`^ zO^4YAv;>|bCiT!mgC01 z#|H-oTZ1ry6pbZIv!36RfHDst#yTIVB;d8k;I zFyLf^9D)}Lg0*!sC5Oul!!s_f5-;x3$b{PlrcNWI z?DWX+MX%fm)QL%d@s}{MWdf(OgfdQ|&6tK&BC)s@^Vto{u%IXUk4l+%Icol^Zayl@ zQZaWL&8I{J+#^22JvXJ@V49(Awtfd#6*GpEclP1aEC(dd^32xEI3m}=b~IGEAapM2 z#|zlQQ)q=pbv@zHv=1Q!Q8*7=Tn9cJA%1-!B?clhD*cq!8}z|&UkeDWyFoJtH2jU; zBF|!@jM|M+No(M~tOrAxY)^12*Kvu$*qgjCCwP{?<@}x(ga9kScd}N3jMchEKX*}$ zy2c&f)Wxt8FMpV@zw6-=bkri$z`r^XlP??;WO3rL$4<6vx5e0|%^QbyK4mB{_p zEl6UzryZgf7l{U%rdGP3k3jo?qI>@a#3eGNM`Hf3K4J+Au8p4Gbb%kCH8$F-le3iX zr^{_~u`mBl9nCw1dDVf_^-IZOA%8v_RJeuWbViD^s+*TKJBE?@sq2}o4#~@KS4;@} zwzX-VY`s4b;7wj6$u^6`?`mG;#92yDWvji5Gq7#LHJ&;XuFWZTQ0K9YJKdq2TQKS4 zE5JXUWqE?F3V1?|uNp;&^w$6)6IhaN&^=Y8x&gDWLL1zg2p3ew(~H@x2oTex3mC*2 z%E~b56kC4|Ju2JYqLcHoTh%wwx)kjof+x~U+>zS4UVur!0qv2;-@KI?1sm#yy^G+! z`5Z-32N-5-P8Lq2H7%k7ac7^;fYNSHxsBEN4!H$2Fl@uBvzQ!vK z=6YL<{+~oEs-jPV#Z?u8WdFDP1l9m{w7$l8<4{yo~?0afR7 z+r8iqWz}A_cR$1`o2J?d30~Ob5jaD@buWB9z-pvF|F(OASdIyoW@K;kHU}5>J67-k zACx&LGpe4k?ku$ZSUzg6J_d$2%5x8z6KiRdmT!RHT-;)N4$aIvOZ0XR*y=d2-b7x+ zR8DNvnZJ&M`*Z$F4)956P={PB6xi^B0+*h(xFX5dI~tlwCZjH1WGEi(+dwY4(0sCa zl*{rVmd^NWYVfnCWqn_gSkBMRhvCB{U%oMBgVX$6+q=E^B@5M`$^>@4#c?njGIpac z!v?N%lr^&rI}<*#vsNbeuMuf!0#|WU($Xaw=Nh!zWe)kKXfGBB??;GA^ivxk+Rb-` zJjs+6#yVbH*URkOFJ5B(F&a#Dlmt^9@z|0UK81%VTuhnn8{Z$CJXiZ3^{SJyWHf-0 zS_ErjSQCm3BWV(Sjd%QGzABVHx72zNf5Ymc~>3Jq-JQk5d8hB*o7)#1E<=EbHsP&fHAD0I!eDS{(LC$X>s zQdRmgB*7+8jjes-@R`zP+sOjz%J4wZ{55`A=w7Yi)*90fMv@*~TG=iv(T!1+;ZzejEgTgvyJdvXs7V_S8V1z zw97xomt4TXbShAMhIge(?KLZDP>9nbY7$TTq%(UIh3dhPIS@~?HI{A6m|`0^`1oU| zrofzw$)^Hke^@vH-}H+#+AFY=1z5W-KP#0t5?TAmd(Her(ChJ=C>82p@u9+^CkbQ2 z=|lX==}UeFi<=xL)cgv-XZ0Q_+pUqd&R-SI?iq49T(cZoSsE~i-nj!1}# zI~3KUZU;ZYo=p^4Mb&KN0E=FxJdZVO6+Bk{-4au)^*!XD09TdkC=&NqEyGxYk%8l~ z@Z(48IrsoFG&9g@eg|Sz-$4-O_Ra2x(}7eu!izwmDvLdTD$JjEd-uZwIq#Tjgybt! z1XaFaHdMEiiVCd2U~oiUhB>`SF5jQXU~xsAAArFNoa`R_VR|O^mA`@B(T$j!XvvC? zZvQ9kzl9SW;T0q+e(6p+Rd~!G?0rAhMpWxuikzACs(89;t<=tE(Q*BwZL<&y=~vx% z`JdzV%{}&kG3^40Loj7iPIimagWllJ2&VqR&tTay`wQ&egQYkAB^zTtrhMtE&HRd5 zV&nxf-(84k$zCAzbD&hQ{sOC4R6VP4)*D^^<*d}GcHHsT(cyS#9~5$PZxt{REz$fZ zccM3R-K&0)dyLsvP&-eeTR$IOm4xiXuS>6tg@|36BLN?%(O@ApR|c!2s^H8K8w{3f z--`B0VcNV73d_%kf8)@V)(;!q)s}4YDLhxGpYG136TR7}En{iVl4 z^(#T`sQk#K*ay@16=L}x4!hjaY@cpHP1Y@lS#S6B-M8jw+A0ID_$$Kc3(>17*wLfZ0LzrT%nZt+hy<2{^dz)NFTDs2q#qerv0au1NT zAk`{R$Y6Gj^fjHhw>@H?c&!1fjU56xX0>JOx8kq%a{e@SEu%h#|I?$5M-O3s1i|Hk z_urNgsbKTvi=(zEW`p~*4x40@B^Doklv$SR*Q=K?GYjMjQ_k;az_n9c==?`Kr7HE1 zxJHAlVeV0YvbMH%D>*v^@#UAd4}JrXD%1TOQlSB1cwb>>Iil5P_HZ-Wo;l`YT^r1k zTau93YZpVo`WH=B;d&U!w}qv6su{wC^sK;i`zgNEa+xF=Y*b|_epKNF|1P#{t-Cyq6g73Y?cIsySnr zZp45Gbwm)#16HPGp`R?sY!E(sH|XJbUdZk&35-wN2HCK*o-a&X=itihf!k8w+HL#k zw)Jv)ysv<$xkz_Cw1>U?JaInGQdnGcA(g?*SB~T_GrTxC$CP!>V4_LmuC6tH?R9Tq zLU{8xz@NbHi#<{PHdnxsg$ir@`3VoD6JNUZ`;WpAXaeN_i~kkLGBZvxO6&4{PiqetbOZ&<}{XPEbas8SfM#_B_#9NW9V4Ow| zp*^$wvG~L2A9`ZES&+Y9q5yozJFF~7f}&Z$*ygQwZsofAo|hrlRvKrDz`x~1p$p=i7bdeoEDKJ_OS6)Bkj?J!%u4^ou++x)Tc zeB#eY)iDhD;m)rbfdB5VqdmIY|7`#7SYQ_mYd4U(F&NA3S~6EdtT@c_p~w7WP+P{h ziQ2!h(x4f@++ZTz?}Ky2lhc0^?B8B%yo0%y&ONu^)4#6rID=EzgXNOKbGcBoztgA3 z2_%M)k*r3Sr+lS0|7>VJ;@Z)p=Rp16c3Pe|FM-ixZhI_v*UPx%4i-I=#)=rm4K zfU;IRm@jptL`oP8#fe$QwngURb%>Y@g}pfg1y3|_zz${ll8?7DGy)J+riyfM(cx8P zL>yxVldj>fTa&8%Bwoyn8h9tmPb9cu<`Ps5W}X>10y49!pH{PrwpVr`=ah>!O?(R# zsHZ*RtzUUr*U+G}h~eUYW*pwz+MhiRIy}B{x4tir-#rl=n}$8;u~yWd-MSv=u0B2W znR;f$(N`g#+}i8(-DHEkU*41OX3!SU$rjU-@5pGKg3y$q?((^d)rFph&eYDS*JjL2 z#Ecl`qVTsnjdPRJ*nyOv{S>`5uF=-itqoN^ne6pP!Ix25ZxC$%q~{)NKLf?pl$I1V zjo9v(VR9qi8_z)TdBKQzwdS-B>e_uVj`G!{#kRH{Pg_Y$CKf8E+kFI5EnYLakq8ZC z?2LqZ&TWoXulf2K^&`%fFqb*eFw?hCTTzfJsWBF;9&`Gd@e=zBO=_lAk_t^P6&n1A z9DTlTqAk`WnCs8Rr-@4xglIi18etF(5BG0`Rx z);SIucxS>sHK~`z)&=KT0JqZGQ+mzgT;B%l{~7w@$ytJkZ(a>k*rr1>hg)jtNM-B zE6eNVZ7}jfZyP-*wJi$7%FUnQ&ry9Y^FHP_QJ}eHoLrA`omL+I!3}vnW8J&J%RKmM zBKdsr?A8ijLR{tK?c@b5#|j$fOw(!3?#LAu{#s!N&TP7+qX|<%gS@#mcjF$(Y2}Fl zF&DVCF@c6iLS}$QhaeMSvE9#9z8X4gTuFDwGnlo~ujg5XR|cr08Z7PQE|&uJ_0SrLlo|%5m7*C ziMM>R5%GD=OyrS4gEK|{Kz>*PQbw3rI2mlUBo)UbZ~HFuj^mMn41o?qzH#+e^s^)* zYvhxWF}rVQJgd$0)ap@ncw1HL_-no*@Pnl-hKn?nUSLH-zzeGxIh@-|<|p)*8@sAUM3SSw5cxR|6Fd`U=~UyIWm@ zflV>pNqRPFv%@oHbpal!wXCCjuXSEcRiX(3ygtkd^M#)YPJg8#Qjym`u-*=5P*k0M zgN6A3@~BF6%;>cik0Vu!cF6iw6g9fdj4-IWmrQ>fZ-+LHnMK#AWWH7_gud7qRM+2= zRBJDdN@ESbJsHM!;bTgN5?E+R-kz7r%%+0V?rp!6gN^#l?o53PGR$guu~;TiOjuHC zjmwBXOlvlLGa(p@(PYh2z2egUT4!MyqH>PMn9Ao%RX1BXv2I$F}wG8L01yvsg=epLQ@N?)C@}L`IZcmv~MU`7+C2(_= zhz(d1l82dP&($XozTH|+zfV@jsc5lKWX$n#BphYP8 zk*QgbX)o?vv{zkz(+kj(G|}v)k=-L32$)_pHPT2P&uhzHn!n(xB&Y zRIpiLx&ffAx)7$I8E#5+7``#ZNxz0r0M+-!Q8pvWJw0K z-i$!K)fmS4c}49+)Zh+)+j_~1JGX42F9iLJ8y6h;`U57q_)Gv_l=sDXpOSKD-0=Gm zvecRHA7mQp2DkaJ3y-;(bSiv|*0J_#7HiD;hl^XyMp5I71uTLx>|@o`H$BhxL5jN{ zX^^Givonlyw%dpB_14BV@AR2`h5Px8dTSW%JaPXNH088@j?6l8xX0xraK0pC=Sbu( z_VD3V1}cPj!2Sh|#!z6@H|OoPnO$C{oR@ub2f3tHGXq_zGbxVl2~9;jTC=z@66i|E zGq5|kj;v;8PY7N^s3wM-zuE{l%0-dbF9NF<+d}O0AjKFt0UI};yw3;8tb5v2WY}59 zW|d0CT*In0{U9zO3u74V8Dj6i@+xtuAV3Dc#pSDlyy~2SL29Edb@`e#nSO_sI94w3 z(U!EcjX*5a%6U&o<&uaFFV@#L^Q_=N)g%(l$Ob{90(s#plh0bmvoss3F+b#o=}z%; zxZk|JNbvg~D6?iL&%42`m|;ccovEKlp4KGy0*LmT1#6RAy_5-=Mm4whUT7_H`0c+x ziF5zn92@E3fbW?rNA0qFSitPD=OpH#$eC`#&lx9JHWwM3PbsI%{~^J(S8%bCL9m%P zpA`z^9l%jPHIyRi*$jj-&9t5d1375dWbre|ck|3vro~uDD$#wD!KT*FX6;RDO=j}F zAWXc@I{F2$$#YzJHMS$b2Me(nhR_p%6VGu`y((UzJ z%a^)~SfyEq^r=~T8b5cU1;y-$QeWVs_2DFUNs}!v-*>@C#I82*z z@O;(O+aOa(3eZjm`J;0#Vg5XtMkz^}4Ew$KLF>z4#HN=&BF!qdZpn=X1H3e_<$myc z8?$)2f}PxJ5*cD4{Q;ssKGe1=d_O<@ zGQm2;(8oS|iIMr63cJ+4Ona?skc8W)&WdC;_sv`xaNR{Qx`yaQyP3ReXg0x$5OeXE z%x?N5i*a(3ngm*AK%8k9rrkAW>ddUU%3+otWN-RX-G|*N;Ig$axraNWinwkG`_UZ0jjeoi`rGP%mrmCPr>~(a*v5rV zPgVdIFHunqB7bhHgr}(95KUF5r$$QfR?y%3c#+%+G$&7XUyisk1-4Z*%zF!4tuP}w zb56Dfou&))1IDfh8XsyFm>&|r=JzTU=K=NavotoW3u=*5e{c7e)=Vgc7EV5AHzh{8 zx*q54$+qP_k~1NZo7Fp3j7q$AVHup~3=>?;L!P}Zu`gBv2xXERS>4}~?~-YC{#vl4 zvQ*ibEwWy%&-YcDp@vouiUS7)SQqCetBZCUHv0LSV{N#^(YBAQjbV(g)P$n-8g=K) z5T*oz@xeEQ(n71;Nbya)DQ(8n;no+^nWK^Msk5hW_|CDapEUBC@EdGAyg+S@HK7=6 zjFA!~98t`s?Aj4_E1lYGMn}SES%oZ-fGiu1ZH zPouZM7J2pL=+cU@Ma7J<5U!{!0+f6)$_iu0&XwQ7)DG!OaDPxR`b57|Pfgo*uV5&= zvWCvltu1FIuR0f|s|cA8c{GFPm1=4dj(Lsr zZNa_;M@_-&2j+QeFFF4dHyvD5OXThQQ@O?Txji`azorFbM1O@;y%$?VD_ZTMZky+r zy8RwIEeNto9J`t0~jdP^?|POG!0B_Dp5&`VY0rtSssvzY+fS)n15W}S?) z?c6q?#|LQjW$Qqx|L-mO|B?t2b+nX-3;o1#s-ISb3mtXqn4-vdaYw?F^;)m5Q*QHA zd3^VfM-1fgG9heL;K7+?*vEscWkW6b`Q20%jvRXjd+dFX zOejenZE!~Iw|KMDOHQMnB!VYge;U@RFli%jZF&6OMUb{DE-s0nB16bGnH^fLTJ2*h zpR;a5blvU7mN3oZRI3hPT6mj!(i}PL0ZGnH8am&M#>JdMg^zdZQT6%8oD>Gij|O(u zHg>=saR{|6ytG`zBhs~Xc=ZUYd}M>4#sjrN5Fpc33O@(Zts^Hs&$?8r2u$;TNlp|z z+0(!JxohP+fo4ZT;BknXzQVjXb56g?c5{ZuZ&5cEAGb4NCqu(#^(*_6Ax#LW*Pb9K zs=Tbo>U*s99mrxzw}PauOIl#HI15r*{y99!J}I5)EX|~v0%Qk=tQB=T=Eji0b8xaX!#rc*cDMb~~51 z<#jKn{O&V0i(wbsw3#+0Ty-z)yu^%-X+A1f6~8Nuf4x_()FV0BA8);)*E3(}w%?Yn zrG?g{>&l3Sju#np!inLM$1w0pjzcENn{9S`+%KqFS?e<=7h^}~2X@s^cLv=b{I5zJ zJot57Ofu}98x0d{U=y}tsG0Fj)8+QKm>iBC!FL6}MIN!ebi zQBA8gTR?dunyl)z+GJ#Y4IL5RICvAQ{c|mg4biNfl9~Oc*r%Bx7Cjhi;97@8AFG->gPl8p_vm~mgg{H;<=+fqS~~3s-Y1<1r7!k$bHDl0l#=iK+VfFM zwPV-bk^$e%G(?dNWM4h}Sjr~(c^ z@xUXq7Ve#yBm46`wjS|G&xS>CJ|2tdMX=>GTYJlZOG?BcX#s|4Pj%G2aYnX!rb{XZ zcisRF`Qs$;f)0lJ+|Hs9Tx78u3E$XxiYOT=Ap@2>XN+B6O(4N-}znm zP5R)KSD4hGjr9@4Mmiqqev9v)pPCJBuSRO0&Sb1}WOH_dMz~fN^7mKLTX{F9)eFdD zUprsR?3U>ChgQk5Ste8=X%86u;FZD;7Kfge>&%qm47-ir+Er#4Yglus+R%CP40vsg zw5;1zYI79Sl;w|Yfqn6-r?(>yV&72rW~3jm`(_SYECRAJ17H4MS35ViYZN-@~4$q!0YZt2> zoef7DX+*%JUqb*p#5fDM)Lw z&=F-z=PYhM3o@l0geJ5aY*y;mv%BeujiZ%%_4d*lG?5o{6}#A$xW{!%eCFlFmO9Gt zF3N>&xc0?*ow`niD};8HXFQ!4v{51QY{4R1 zISH(>tN`~d%B1P)2am?$;$+IC)~m{fw!NM^p2`xjWN&z@n&0IDL^I!%m{R*fCMq^E z$iSe;mc((H{3eO%Yvbn$~`R|&f#6&Q$D&;8y zB8m9)qSnK!H+E&>50>Fzg$U)vQGx9CV*iSSpf51uVjJ}Q55eHq48x$7ZCT*G zMLM3sW%kHdcOgFovrAbW=*vXu#QkY6v9tn1X)d3h^uT}0yozvcB^L{rz$88WgJ|-= zSooijB*?}7ela2{7tg2p!%n!u;=dk#g2BOAgFGZXf)rQrku9id;#^km3jdJVc@MG^ zhF2&sz>y})5SV$BGI$tn_F-FiSfajrh<6{NG*aRPkDb0~M1dDvIo}ptl{EAfY9@mA zIIc82j4OMoC};tGF@Dc?=C0)?HHi>~QB;)S_nPI6_ezTP6-fRtL|JcOLN&%gM5_OU zeLsN*;J_~W)$3RP1uLhQgK>}+v?!0Y++V%}wpeHkOz%PGPsRHulRRSGu&sy%Osyf! zDT?x+cl*V{0Qa}382$f+8Hyr6hD6zmp1@*e;@N)-Hr1(C|*r}*54 z)S+L{-4L1Xvv5XmK`HE#_!!mwLZa1r4aoyH3oUkHeU(`7h$vW;B7RTc{^!mA7~#La zC*1J+3k=s3%88ri35suspD~2|@!W`Tk?CkZd$?c7aPXa|Eg57i0%@5GL$arBfc2Cs zdl$DVP914G7h^T)h#`_ZI;%fEF9JlQ-5D(uLdCj7@CUaj3aI3w$?sWT8~N_(Z(4rU zEOK*N7{Szh432G@C4I$;>oRTlZ}4RsvE2uBc->38Q16niNiykKdb) zM9RGFb#VsBsun45cqdHB!IUSlapt-m_84ZD3`_b)V_hh4@H9yK>r)iSfOL@E)2Mq6 z!sK|+`;FUbXFKf2m;}Nhqf;QjBTC>;>i{j9Jyy9%u(@8Q3KLv*(ab= z{b&CneDM&!`$8e+dV7P5dI#K0U0y7a1JeG#+*Pk@G9Hap(m`kVL+HtY7vJC$*q@X* L;C=Z!{eb@kVe`%C diff --git a/1-js/10-es-modern/11-promise/user.json b/1-js/10-es-modern/11-promise/user.json deleted file mode 100644 index 32f89971..00000000 --- a/1-js/10-es-modern/11-promise/user.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "iliakan", - "isAdmin": true -} diff --git a/1-js/10-es-modern/11-promise/userNoGithub.json b/1-js/10-es-modern/11-promise/userNoGithub.json deleted file mode 100644 index 9e23f32b..00000000 --- a/1-js/10-es-modern/11-promise/userNoGithub.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "an-unknown-person-32662", - "isAdmin": false -} diff --git a/1-js/10-es-modern/12-generator/anon.png b/1-js/10-es-modern/12-generator/anon.png deleted file mode 100644 index a1675d2fee874e14fe4b2d222b1d30b29cec78d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30427 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 - -При создании генератора код находится в начале своего выполнения. - -Основным методом генератора является `next()`. При вызове он возобновляет выполнение кода до ближайшего ключевого слова `yield`. По достижении `yield` выполнение приостанавливается, а значение -- возвращается во внешний код: - -```js -//+ run -'use strict'; - -function* generateSequence() { - yield 1; - yield 2; - return 3; -} - -let generator = generateSequence(); - -*!* -let one = generator.next(); -*/!* - -alert(JSON.stringify(one)); // {value: 1, done: false} -``` - - - -Повторный вызов `generator.next()` возобновит выполнение и вернёт результат следующего `yield`: - -```js -let two = generator.next(); - -alert(JSON.stringify(two)); // {value: 2, done: false} -``` - - - -И, наконец, последний вызов завершит выполнение функции и вернёт результат `return`: - -```js -let three = generator.next(); - -alert(JSON.stringify(three)); // {value: 3, *!*done: true*/!*} -``` - - - - -Функция завершена. Внешний код должен увидеть это из свойства `done:true` и обработать `value:3`, как окончательный результат. - -Новые вызовы `generator.next()` больше не имеют смысла. Впрочем, если они и будут, то не вызовут ошибки, но будут возвращать один и тот же объект: `{done: true}`. - -"Открутить назад" завершившийся генератор нельзя, но можно создать новый ещё одним вызовом `generateSequence()` и выполнить его. - -[smart header="`function* (…)` или `function *(…)`?"] -Можно ставить звёздочку как сразу после `function`, так и позже, перед названием. В интернет можно найти обе эти формы записи, они верны: -```js -function* f() { - // звёздочка после function -} - -function *f() { - // звёздочка перед названием -} -``` - -Технически, нет разницы, но писать то так то эдак -- довольно странно, надо остановиться на чём-то одном. - -Автор этого текста полагает, что правильнее использовать первый вариант `function*`, так как звёздочка относится к типу объявляемой сущности (`function*` -- "функция-генератор"), а не к её названию. Конечно, это всего лишь рекомендация-мнение, не обязательное к выполнению, работать будет в любом случае. -[/smart] - - - - -## Генератор -- итератор - -Как вы, наверно, уже догадались по наличию метода `next()`, генератор связан с [итераторами](/iterator). В частности, он является итерируемым объектом. - -Его можно перебирать и через `for..of`: - -```js -//+ run -'use strict'; - -function* generateSequence() { - yield 1; - yield 2; - return 3; -} - -let generator = generateSequence(); - -for(let value of generator) { - alert(value); // 1, затем 2 -} -``` - -Заметим, однако, существенную особенность такого перебора! - -При запуске примера выше будет выведено значение `1`, затем `2`. Значение `3` выведено не будет. Это потому что стандартный перебор итератора игнорирует `value` на последнем значении, при `done: true`. Так что результат `return` в цикле `for..of` не выводится. - -Соответственно, если мы хотим, чтобы все значения возвращались при переборе через `for..of`, то надо возвращать их через `yield`: - - -```js -//+ run -'use strict'; - -function* generateSequence() { - yield 1; - yield 2; -*!* - yield 3; -*/!* -} - -let generator = generateSequence(); - -for(let value of generator) { - alert(value); // 1, затем 2, затем 3 -} -``` - -...А зачем вообще `return` при таком раскладе, если его результат игнорируется? Он тоже нужен, но в других ситуациях. Перебор через `for..of` -- в некотором смысле "исключение". Как мы увидим дальше, в других контекстах `return` очень даже востребован. - -## Композиция генераторов - -Один генератор может включать в себя другие. Это называется композицией. - -Разберём композицию на примере. - -Пусть у нас есть функция `generateSequence`, которая генерирует последовательность чисел: - -```js -//+ run -'use strict'; - -function* generateSequence(start, end) { - - for (let i = start; i <= end; i++) { - yield i; - } - -} - -// Используем оператор … для преобразования итерируемого объекта в массив -let sequence = [...generateSequence(2,5)]; - -alert(sequence); // 2, 3, 4, 5 -``` - -Мы хотим на её основе сделать другую функцию `generateAlphaNumCodes()`, которая будет генерировать коды для буквенно-цифровых символов латинского алфавита: - -

    - -Далее этот набор кодов можно превратить в строку и использовать, к примеру, для выбора из него случайного пароля. Только символы пунктуации ещё хорошо бы добавить для надёжности, но в этом примере мы будем без них. - -Естественно, раз в нашем распоряжении есть готовый генератор `generateSequence`, то хорошо бы его использовать. - -Конечно, можно внутри `generateAlphaNum` запустить несколько раз `generateSequence`, объединить результаты и вернуть. Так мы бы сделали с обычными функциями. Но композиция -- это кое-что получше. - -Она выглядит так: - -```js -//+ run -'use strict'; - -function* generateSequence(start, end) { - for (let i = start; i <= end; i++) yield i; -} - -function* generateAlphaNum() { - -*!* - // 0..9 - yield* generateSequence(48, 57); - - // A..Z - yield* generateSequence(65, 90); - - // a..z - yield* generateSequence(97, 122); -*/!* - -} - -let str = ''; - -for(let code of generateAlphaNum()) { - str += String.fromCharCode(code); -} - -alert(str); // 0..9A..Za..z -``` - -Здесь использована специальная форма `yield*`. Она применима только к другому генератору и *делегирует* ему выполнение. - -То есть, при `yield*` интерпретатор переходит внутрь генератора-аргумента, к примеру, `generateSequence(48, 57)`, выполняет его, и все `yield`, которые он делает, выходят из внешнего генератора. - -Получается -- как будто мы вставили код внутреннего генератора во внешний напрямую, вот так: - -```js -//+ run -'use strict'; - -function* generateSequence(start, end) { - for (let i = start; i <= end; i++) yield i; -} - -function* generateAlphaNum() { - -*!* - // yield* generateSequence(48, 57); - for (let i = 48; i <= 57; i++) yield i; - - // yield* generateSequence(65, 90); - for (let i = 65; i <= 90; i++) yield i; - - // yield* generateSequence(97, 122); - for (let i = 97; i <= 122; i++) yield i; -*/!* - -} - -let str = ''; - -for(let code of generateAlphaNum()) { - str += String.fromCharCode(code); -} - -alert(str); // 0..9A..Za..z -``` - -Код выше по поведению полностью идентичен варианту с `yield*`. При этом, конечно, переменные вложенного генератора не попадают во внешний, "делегирование" только выводит результаты `yield` во внешний поток. - -Композиция -- это естественное встраивание одного генератора в поток другого. При композиции значения из вложенного генератора выдаются "по мере готовности". Поэтому она будет работать даже если поток данных из вложенного генератора оказался бесконечным или ожидает какого-либо условия для завершения. - - -## yield -- дорога в обе стороны - -До этого генераторы наиболее напоминали "итераторы на стероидах". Но, как мы сейчас увидим, это не так, есть фундаментальное различие, генераторы гораздо мощнее и гибче. - -Всё дело в том, что `yield` -- дорога в обе стороны: он не только возвращает результат наружу, но и может передавать значение извне в генератор. - -Вызов `let result = yield value` делает следующее: - -
      -
    • Возвращает `value` во внешний код, приостанавливая выполнение генератора.
    • -
    • Внешний код может обработать значение, и затем вызвать `next` с аргументом: `generator.next(arg)`.
    • -
    • Генератор продолжит выполнение, аргумент `next` будет возвращён как результат `yield` (и записан в `result`).
    • -
    - -Продемонстрируем это на примере: - -```js -//+ run -'use strict'; - -function* gen() { -*!* - // Передать вопрос во внешний код и подождать ответа - let result = yield "Сколько будет 2 + 2?"; -*/!* - - alert(result); -} - -let generator = gen(); - -let question = generator.next().value; -// "Сколько будет 2 + 2?" - -setTimeout(() => generator.next(4), 2000); -``` - -На рисунке ниже прямоугольником изображён генератор, а вокруг него -- "внешний код", который с ним взаимодействует: - - - -На этой иллюстрации показано то, что происходит в генераторе: - -
      -
    1. Первый вызов `generator.next()` -- всегда без аргумента, он начинает выполнение и возвращает результат первого `yield` ("Сколько будет 2+2?"). На этой точке генератор приостанавливает выполнение.
    2. -
    3. Результат `yield` переходит во внешний код (в `question`). Внешний код может выполнять любые асинхронные задачи, генератор стоит "на паузе".
    4. -
    5. Когда асинхронные задачи готовы, внешний код вызывает `generator.next(4)` с аргументом. Выполнение генератора возобновляется, а `4` выходит из присваивания как результат `let result = yield ...`.
    6. -
    - -В примере выше -- только два `next`. - -Увеличим их количество, чтобы стал более понятен общий поток выполнения: - -```js -//+ run -'use strict'; - -function* gen() { - let ask1 = yield "Сколько будет 2 + 2?"; - - alert(ask1); // 4 - - let ask2 = yield "3 * 3?" - - alert(ask2); // 9 -} - -let generator = gen(); - -alert( generator.next().value ); // "...2+2?" - -alert( generator.next(4).value ); // "...3*3?" - -alert( generator.next(9).done ); // true -``` - -Взаимодействие с внешним кодом: - - - -
      -
    1. Первый `.next()` начинает выполнение... Оно доходит до первого `yield`.
    2. -
    3. Результат возвращается во внешний код.
    4. -
    5. Второй `.next(4)` передаёт `4` обратно в генератор как результат первого `yield` и возобновляет выполнение.
    6. -
    7. ...Оно доходит до второго `yield`, который станет результатом `.next(4)`.
    8. -
    9. Третий `next(9)` передаёт `9` в генератор как результат второго `yield` и возобновляет выполнение, которое завершается окончанием функции, так что `done: true`.
    10. -
    - -Получается "пинг-понг": каждый `next(value)` передаёт в генератор значение, которое становится результатом текущего `yield`, возобновляет выполнение и получает выражение из следующего `yield`. Исключением является первый вызов `next`, который не может передать значение в генератор, т.к. ещё не было ни одного `yield`. - -На рисунке ниже изображены шаги 3-4 из примера: - - - - - -## generator.throw - -Как мы видели в примерах выше, внешний код может вернуть генератору в качестве результата `yield` любое значение. - -...Но "вернуть" можно не только результат, но и ошибку! - -Для того, чтобы передать в `yield` ошибку, используется вызов `generator.throw(err)`. При этом на строке с `yield` возникает исключение. - -Например, в коде ниже обращение к внешнему коду `yield "Сколько будет 2 + 2"` завершится с ошибкой: - - -```js -//+ run -'use strict'; - -function* gen() { - try { - // в этой строке возникнет ошибка - let result = yield "Сколько будет 2 + 2?"; // (**) - - alert("выше будет исключение ^^^"); - } catch(e) { - alert(e); // выведет ошибку - } -} - -let generator = gen(); - -let question = generator.next().value; - -*!* -generator.throw(new Error("ответ не найден в моей базе данных")); // (*) -*/!* -``` - -"Вброшенная" в строке `(*)` ошибка возникает в строке с `yield` `(**)`. Далее она обрабатывается как обычно. В примере выше она перехватывается `try..catch` и выводится. - -Если ошибку не перехватить, то она "выпадет" из генератора. По стеку ближайший вызов, который инициировал выполнение -- это строка с `.throw`. Можно перехватить её там, как и продемонстрировано в примере ниже: - - -```js -//+ run -'use strict'; - -function* gen() { - // В этой строке возникнет ошибка - let result = yield "Сколько будет 2 + 2?"; -} - -let generator = gen(); - -let question = generator.next().value; - -*!* -try { - generator.throw(new Error("ответ не найден в моей базе данных")); -} catch(e) { - alert(e); // выведет ошибку -} -*/!* -``` - -Если же ошибка и там не перехвачена, то дальше -- как обычно, либо `try..catch` снаружи, либо она "повалит" скрипт. - -## Плоский асинхронный код - -Одна из основных областей применения генераторов -- написание "плоского" асинхронного кода. - -Общий принцип такой: -
      -
    • Генератор `yield'ит` не просто значения, а промисы.
    • -
    • Есть специальная "функция-чернорабочий" `execute(generator)` которая запускает генератор, последовательными вызовами `next` получает из него промисы -- один за другим, и, когда очередной промис выполнится, возвращает его результат в генератор следующим `next`.
    • -
    • Последнее значение генератора (`done:true`) `execute` уже обрабатывает как окончательный результат -- например, возвращает через промис куда-то ещё, во внешний код или просто использует, как в примере ниже.
    • -
    - -Напишем такой код для получения аватара пользователя с github и его вывода, аналогичный рассмотренному в статье про [промисы](/promise). - -Для AJAX-запросов будем использовать метод [fetch](/fetch), он как раз возвращает промисы. - -```js -//+ run -'use strict'; - -// генератор для получения и показа аватара -// он yield'ит промисы -function* showUserAvatar() { - - let userFetch = yield fetch('/article/generator/user.json'); - let userInfo = yield userFetch.json(); - - let githubFetch = yield fetch(`https://api.github.com/users/${userInfo.name}`); - let githubUserInfo = yield githubFetch.json(); - - let img = new Image(); - img.src = githubUserInfo.avatar_url; - img.className = "promise-avatar-example"; - document.body.appendChild(img); - - yield new Promise(resolve => setTimeout(resolve, 3000)); - - img.remove(); - - return img.src; -} - -// вспомогательная функция-чернорабочий -// для выполнения промисов из generator -function execute(generator, yieldValue) { - - let next = generator.next(yieldValue); - - if (!next.done) { - next.value.then( - result => execute(generator, result), - err => generator.throw(err) - ); - } else { - // обработаем результат return из генератора - // обычно здесь вызов callback или что-то в этом духе - alert(next.value); - } - -} - -*!* -execute( showUserAvatar() ); -*/!* -``` - -Функция `execute` в примере выше -- универсальная, она может работать с любым генератором, который `yield'ит` промисы. - -Вместе с тем, это -- всего лишь набросок, чтобы было понятно, как такая функция в принципе работает. Есть уже готовые реализации, обладающие большим количеством возможностей. - -Одна из самых известных -- это библиотека [co](https://github.com/tj/co), которую мы рассмотрим далее. - -## Библиотека "co" - -Библиотека `co`, как и `execute` в примере выше, получает генератор и выполняет его. - -Начнём сразу с примера, а потом -- детали и полезные возможности: - -```js -//+ run - -'use strict'; - -co(function*() { - - let result = yield new Promise( - resolve => setTimeout(resolve, 1000, 1) - ); - - alert(result); // 1 - -}) -``` - - -Предполагается, что библиотека `co` подключена к странице , например, отсюда: [](http://cdnjs.com/libraries/co/). В примере выше `function*()` делает `yield` промиса с `setTimeout`, который через секунду возвращает `1`. - -Вызов `co(…)` возвращает промис с результатом генератора. Если в примере выше `function*()` что-то возвратит, то это можно будет получить через `.then` в результате `co`: - -```js -//+ run -'use strict'; - -co(function*() { - - let result = yield new Promise( - resolve => setTimeout(resolve, 1000, 1) - ); - -*!* - return result; // return 1 - -}).then(alert); // 1 -*/!* -``` -[warn header="Обязательно нужен `catch`"] - -Частая ошибка начинающих -- вообще забывать про обработку результата `co`. Даже если результата нет, ошибки нужно обработать через `catch`, иначе они "подвиснут" в промисе. - -Такой код ничего не выведет: - -```js -//+ run -co(function*() { - throw new Error("Sorry that happened"); -}) -``` - -Программист даже не узнает об ошибке. Особенно обидно, когда это опечатка или другая программная ошибка, которую обязательно нужно поправить. - -Правильный вариант: - -```js -//+ run -co(function*() { - throw new Error("Sorry that happened"); -}).catch(alert); // обработать ошибку как-либо -``` - -Большинство примеров этого `catch` не содержат, но это лишь потому, что в примерах ошибок нет. А в реальном коде обязательно нужен `catch`. - -[/warn] - -Библиотека `co` умеет выполнять не только промисы. Есть несколько видов значений, которые можно `yield`, и их обработает `co`: - -
      -
    • Промис.
    • -
    • Объект-генератор.
    • -
    • Функция-генератор `function*()` -- `co` её выполнит, затем выполнит полученный генератор.
    • -
    • Функция с единственным аргументом вида `function(callback)` -- библиотека `co` её запустит со своей функцией-`callback` и будет ожидать, что при ошибке она вызовет `callback(err)`, а при успешном выполнении -- `callback(null, result)`. То есть, в первом аргументе -- будет ошибка (если есть), а втором -- результат (если нет ошибки). После чего результат будет передан в генератор.
    • -
    • Массив или объект из вышеперечисленного. При этом все задачи будут выполнены параллельно, и результат, в той же структуре, будет выдан наружу.
    • -
    - -В примере ниже происходит `yield` всех этих видов значений. Библиотека `co` обеспечивает их выполнение и возврат результата в генератор: - -```js -//+ run -'use strict'; - -Object.defineProperty(window, 'result', { - // присвоение result=… будет выводить значение - set: value => alert(JSON.stringify(value)) -}); - -co(function*() { - result = yield function*() { // генератор - return 1; - }(); - - result = yield function*() { // функция-генератор - return 2; - }; - - result = yield Promise.resolve(3); // промис - - result = yield function(callback) { // function(callback) - setTimeout(() => callback(null, 4), 1000); - }; - - - result = yield { // две задачи выполнит параллельно, как Promise.all - one: Promise.resolve(1), - two: function*() { return 2; } - }; - - result = yield [ // две задачи выполнит параллельно, как Promise.all - Promise.resolve(1), - function*() { return 2 } - ]; - -}); -``` - -[smart header="Устаревший `yield function(callback)`"] -Отдельно заметим вариант с `yield function(callback)`. Такие функции, с единственным-аргументом callback'ом, в англоязычной литературе называют "thunk". - -Функция обязана выполниться и вызвать (асинхронно) либо `callback(err)` с ошибкой, либо `callback(null, result)` с результатом. - -Использование таких функций в `yield` является устаревшим подходом, так как там, где можно использовать `yield function(callback)`, можно использовать и промисы. При этом промисы мощнее. Но в старом коде его ещё можно встретить. -[/smart] - - -Посмотрим пример посложнее, с композицией генераторов: - -```js -//+ run -'use strict'; - -co(function*() { - let result = yield* gen(); - alert(result); // hello -}); - -function* gen() { - return yield* gen2(); -} - -function* gen2() { - let result = yield new Promise( // (1) - resolve => setTimeout(resolve, 1000, 'hello') - ); - return result; -} -``` - -Это -- отличный вариант для библиотеки `co`. Композиция `yield* gen()` вызывает `gen()` в потоке внешнего генератора. Аналогично делает и `yield* gen()`. - -Поэтому `yield new Promise` из строки `(1)` в `gen2()` попадает напрямую в библиотеку `co`, как если бы он был сделан так: - -```js -//+ run -'use strict'; - -co(function*() { - // gen() и затем gen2 встраиваются во внешний генератор - let result = yield new Promise( - resolve => setTimeout(resolve, 1000, 'hello') - ); - alert(result); // hello -}); -``` - -Пример `showUserAvatar()` можно переписать с использованием `co` вот так: - -```js -//+ run -'use strict'; - -// Загрузить данные пользователя с нашего сервера -function* fetchUser(url) { - let userFetch = yield fetch(url); - - let user = yield userFetch.json(); - - return user; -} - -// Загрузить профиль пользователя с github -function* fetchGithubUser(user) { - let githubFetch = yield fetch(`https://api.github.com/users/${user.name}`); - let githubUser = yield githubFetch.json(); - - return githubUser; -} - -// Подождать ms миллисекунд -function sleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); -} - -// Использовать функции выше для получения аватара пользователя -function* fetchAvatar(url) { - - let user = yield* fetchUser(url); - - let githubUser = yield* fetchGithubUser(user); - - return githubUser.avatar_url; -} - -// Использовать функции выше для получения и показа аватара -function* showUserAvatar() { - - let avatarUrl; - - try { - avatarUrl = yield* fetchAvatar('/article/generator/user.json'); - } catch(e) { - avatarUrl = '/article/generator/anon.png'; - } - - let img = new Image(); - img.src = avatarUrl; - img.className = "promise-avatar-example"; - document.body.appendChild(img); - - yield sleep(2000); - - img.remove(); - - return img.src; -} - -co(showUserAvatar); -``` - -Заметим, что для перехвата ошибок при получении аватара используется `try..catch` вокруг `yield* fetchAvatar`: - -```js -try { - avatarUrl = yield* fetchAvatar('/article/generator/user.json'); -} catch(e) { - avatarUrl = '/article/generator/anon.png'; -} -``` - -Это -- одно из главных удобств использования генераторов. Несмотря на то, что операции `fetch` -- асинхронные, мы можем использовать обычный `try..catch` для обработки ошибок в них. - -## Для генераторов -- только yield* - -Библиотека `co` технически позволяет писать код так: -```js -let user = yield fetchUser(url); -// вместо -// let user = yield* fetchUser(url); -``` - -То есть, можно сделать `yield` генератора, `co()` его выполнит и передаст значение обратно. Как мы видели выше, библиотека `co` -- довольно всеядна. Однако, рекомендуется использовать для вызова функций-генераторов именно `yield*`. - -Причин для этого несколько: -
      -
    1. Делегирование генераторов `yield*` -- это встроенный механизм JavaScript. Вместо возвращения значения обратно в `co`, выполнения кода библиотеки... Мы просто используем возможности языка. Это правильнее.
    2. -
    3. Поскольку не происходит лишних вызовов, это быстрее по производительности.
    4. -
    5. И, наконец, пожалуй, самое приятное -- делегирование генераторов сохраняет стек.
    6. -
    - -Проиллюстрируем последнее на примере: - -```js -//+ run -'use strict'; - -co(function*() { - -*!* - // при запуске в стеке не будет видно этой строки - yield g(); // (*) -*/!* - -}).catch(function(err) { - alert(err.stack); -}); - -function* g() { - throw new Error("my error"); -} -``` - -При запуске этого кода стек может выглядеть примерно так: -```js -*!* -at g (eval at runJS …, :13:9) -*/!* - at GeneratorFunctionPrototype.next (native) - at onFulfilled (…/co/…/index.min.js:1:1136) - at …/co/…/index.min.js:1:1076 - at co (…/co/…/index.min.js:1:1039) - at toPromise (…/co/…/index.min.js:1:1740) - at next (…/co/…/index.min.js:1:1351) - at onFulfilled (…/co/…/index.min.js:1:1172) - at …/co/…/index.min.js:1:1076 - at co (…/co/…/index.min.js:1:1039) -``` - -Детали здесь не имеют значения, самое важное -- почти весь стек находится внутри библиотеки `co`. - -Из оригинального скрипта там только одна строка (первая): -```js -at g (eval at runJS …, :13:9) -``` - -То есть, стек говорит, что ошибка возникла в строке `13`: -```js -// строка 13 из кода выше -throw new Error("my error"); -``` - -Что ж, спасибо. Но как мы оказались на этой строке? Об этом в стеке нет ни слова! - -Заменим в строке `(*)` вызов `yield` на `yield*`: - -```js -//+ run -'use strict'; - -co(function*() { - -*!* - // заменили yield на yield* - yield* g(); // (*) -*/!* - -}).catch(function(err) { - alert(err.stack); -}); - -function* g() { - throw new Error("my error"); -} -``` - -Пример стека теперь: -```js -*!* -at g (eval at runJS …, :13:9) -*/!* - at GeneratorFunctionPrototype.next (native) -*!* - at eval (eval at runJS …, :6:10) -*/!* - at GeneratorFunctionPrototype.next (native) - at onFulfilled (…/co/…/index.min.js:1:1136) - at …/co/…/index.min.js:1:1076 - at co (…/co/…/index.min.js:1:1039) -*!* - at eval (eval at runJS …, :3:1) -*/!* - at eval (native) - at runJS (…) -``` - -Если очистить от вспомогательных вызовов, то эти строки -- как раз то, что нам надо: -```js -at g (eval at runJS …, :13:9) - at eval (eval at runJS …, :6:10) - at eval (eval at runJS …, :3:1) -``` - -Теперь видно, что (читаем снизу) исходный вызов был в строке `3`, далее -- вложенный в строке `6`, и затем произошла ошибка была в строке `13`. - -Почему вариант с простым `yield` не работает -- достаточно очевидно, если внимательно посмотреть на код и воспроизвести в уме, как он работает. Оставляем это упражнение вдумчивому читателю. - -Итого, рекомендация уже достаточно обоснована -- при запуске вложенных генераторов используем `yield*`. - -## Итого - -
      -
    • Генераторы создаются при помощи функций-генераторов `function*(…) {…}`.
    • -
    • Внутри генераторов и только них разрешён оператор `yield`. Это иногда создаёт недобства, поскольку в коллбэках `.map/.forEach` сделать `yield` нельзя. Впрочем, можно сделать `yield` массива (при использовании `co`).
    • -
    • Внешний код и генератор обмениваются промежуточными результатами посредством вызовов `next/yield`.
    • -
    • Генераторы позволяют писать плоский асинхронный код, при помощи библиотки `co`.
    • -
    - -Что касается кросс-браузерной поддержки -- она стремительно приближается. Пока же можно использовать генераторы вместе с [Babel](https://babeljs.io). - -[head] - - -[/head] - - - - - - - diff --git a/1-js/10-es-modern/12-generator/genYield2-2.png b/1-js/10-es-modern/12-generator/genYield2-2.png deleted file mode 100644 index 674844184f13d6245df835f803eab006faca8405..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33709 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

    <^5& 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 wW<$NgkS^pF diff --git a/1-js/10-es-modern/12-generator/genYield2-2@2x.png b/1-js/10-es-modern/12-generator/genYield2-2@2x.png deleted file mode 100644 index d6bcf78e0fe9281a735dac5a43b89699c4a0b257..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78330 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%0AaUi@3_3!SorAXKo*;9(l* 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%0D!&0Gn`V(73CFWg%5NwEfQl4ZeEa2>;SUC{C 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 z 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

    djNDW*okQ3Qls3x^|WpxUC+V{#^6Tj;| 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 WUpfrwA#1Pyk`j}DUncV5)Bgd4=oN?n diff --git a/1-js/10-es-modern/12-generator/user.json b/1-js/10-es-modern/12-generator/user.json deleted file mode 100644 index 32f89971..00000000 --- a/1-js/10-es-modern/12-generator/user.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "iliakan", - "isAdmin": true -} diff --git a/1-js/10-es-modern/13-modules/article.md b/1-js/10-es-modern/13-modules/article.md deleted file mode 100644 index fc9be8f5..00000000 --- a/1-js/10-es-modern/13-modules/article.md +++ /dev/null @@ -1,242 +0,0 @@ - -# Модули - -Концепция модулей как способа организации JavaScript-кода существовала давно. - -Когда приложение сложное и кода много -- мы пытаемся разбить его на файлы. В каждом файле описываем какую-то часть, а в дальнейшем -- собираем эти части воедино. - -Модули в стандарте EcmaScript предоставляют удобные средства для этого. - -Такие средства предлагались сообществом и ранее, например: - -

    - -Все перечисленные выше системы требуют различных библиотек или систем сборки для использования. - -Новый стандарт отличается от них прежде всего тем, что это -- стандарт. А значит, со временем, будет поддерживаться браузерами без дополнительных утилит. - -Однако, сейчас браузерной поддержки почти нет. Поэтому ES-модули используются в сочетании с системами сборки, такими как [webpack](http://webpack.github.io/), [brunch](http://brunch.io/) и другими, при подключённом [Babel.JS](https://babeljs.io). Мы рассмотрим это далее. - -## Что такое модуль? - -Модулем считается файл с кодом. - -В этом файле ключевым словом `export` помечаются переменные и функции, которые могут быть использованы снаружи. - -Другие модули могут подключать их через вызов `import`. - -## export - -Ключевое слово `export` можно ставить: - -
      -
    • перед объявлением переменных, функций и классов.
    • -
    • отдельно, при этом в фигурных скобках указывается, что именно экспортируется.
    • -
    - -Например: - -```js -// экспорт прямо перед объявлением -export let one = 1; - -// можно и раздельно, в две строки вместо одной -let two = 2; -export {two}; -``` - -Заметим, что в фигурных скобках указывается не блок, не произвольное выражение, а только имя. - -Можно указать несколько: -```js -export {one, two}; -``` - -Также можно указать, что переменная `one` будет доступна снаружи под именем `once`, а `two` -- под именем `twice`: - -```js -export {one as once, two as twice}; -``` - -Экспорт функций и классов выглядит так же: -```js -export class User { - constructor(name) { - this.name = name; - } -}; - -export function sayHi() { - alert("Hello!"); -}; - -// или export {User, sayHi} -``` - -Заметим, что и у функции и у класса при таком экспорте должно быть имя. - -Так будет ошибка: -```js -// функция без имени -export function() { alert("Error"); }; -``` - -## import - -Другие модули могут подключать экспортированные значения при помощи ключевого слова `import`. - -Синтаксис: - -```js -import {one, two} from "./nums"; -``` - -Здесь: -
      -
    • `"./nums"` -- модуль, как правило это путь к файлу модуля.
    • -
    • `one, two` -- импортируемые переменные, которые должны быть обозначены в `nums` словом `export`.
    • -
    - -В результате импорта появятся локальные переменные `one`, `two`, которые будут содержать значения соответствующих экспортов. - -Например, при таком файле `nums.js`: - -```js -export let one = 1; -export let two = 2; -``` - -Модуль ниже выведет "1 and 2": - -```js -import {one, two} from "./nums"; - -alert( `${one} and ${two}` ); // 1 and 2 -``` - -Импортировать можно и под другим именем, указав его в "as": - -```js -// импорт one под именем item1, а two – под именем item2 -import {one as item1, two as item2} from "./nums"; - -alert( `${item1} and ${item2}` ); // 1 and 2 -``` - -[smart header="Импорт всех значений в виде объекта"] - -Можно импортировать все значения сразу в виде объекта вызовом `import * as obj`, например: - -```js -*!* -import * as numbers from "./nums"; -*/!* - -alert( `${numbers.one} and ${numbers.two}` ); // 1 and 2 -``` -[/smart] - -## export default - -Выше мы видели, что модуль может экспортировать произвольное количество значений при помощи `export`. - -Однако, как правило, код стараются организовать так, чтобы каждый модуль делал одну вещь. Иначе говоря, "один файл -- одна сущность, которую он описывает". - -Например, файл `user.js` содержит `class User`, файл `login.js` -- функцию `login()` для авторизации, и т.п. - -При этом модули, разумеется, будут взаимосвязаны. Например, `login.js`, скорее всего, будет импортировать класс `User` из модуля `user.js`. - -Для такой ситуации, когда один модуль экспортирует одно значение, предусмотрено особое ключевое сочетание `export default`. - -Если поставить после `export` слово `default`, то значение станет "экспортом по умолчанию". - -Такое значение можно импортировать без фигурных скобок. - -Например, файл `user.js`: - -```js -*!*export default*/!* class User { - constructor(name) { - this.name = name; - } -}; -``` - -...А в файле `login.js`: - -```js -import User from './user'; - -new User("Вася"); -``` - -Если бы в `user.js` не было `default`, то в `login.js` необходимо было бы указать фигурные скобки: - -```js -// если в бы user.js не было default: -// export class User { ... } - -// …то при импорте понадобились бы фигурные скобки: -import {User} from './user'; - -new User("Вася"); -``` - -Как видно, "экспорт по умолчанию" -- лишь небольшой синтаксический сахар. Можно было бы и без него, импортировать значение обычным образом через фигурные скобки `{…}`. - -Но на практике этот "сахар" весьма приятен, так как позволяет легко видеть, какое именно значение экспортирует модуль, а также обойтись без лишних символов при импорте. - -## Использование - -Современный стандарт EcmaScript описывает, как импортировать и экспортировать значения из модулей, но он ничего не говорит о том, как эти модули искать, загружать и т.п. - -Такие механизмы предлагались в процессе создания стандарта, но были убраны по причине недостаточной проработанности. Возможно, они появятся в будущем. - -Сейчас используются системы сборки, как правило, в сочетании с Babel.JS. - -Система сборки обрабатывает скрипты, находит в них `import/export` и заменяет их на свои внутренние JavaScript-вызовы. При этом, как правило, много файлов-модулей объединяются в один или несколько скриптов, смотря как указано в конфигурации сборки. - -Ниже вы можете увидеть полный пример использования модулей с системой сборки [webpack](http://webpack.github.io). - -В нём есть: -
      -
    • `nums.js` -- модуль, экспортирующий `one` и `two`, как описано выше.
    • -
    • `main.js` -- модуль, который импортирует `one`, `two` из `nums` и выводит их сумму.
    • -
    • `webpack.config.js` -- конфигурация для системы сборки.
    • -
    • `bundle.js` -- файл, который создала система сборки из `main.js` и `nums.js`.
    • -
    • `index.html` -- простой HTML-файл для демонстрации.
    • -
    - -[codetabs src="nums"] - - -## Итого - -Современный стандарт описывает, как организовать код в модули, экспортировать и импортировать значения. - -Экспорт: - -
      -
    • `export` можно поставить прямо перед объявлением функции, класса, переменной.
    • -
    • Если `export` стоит отдельно от объявления, то значения в нём указываются в фигурных скобках: `export {…}`.
    • -
    • Также можно экспортировать "значение по умолчанию" при помощи `export default`.
    • -
    - -Импорт: -
      -
    • В фигурных скобках указываются значения, а затем -- модуль, откуда их брать: `import {a, b, c as d} from "module"`.
    • -
    • Можно импортировать все значения в виде объекта при помощи `import * as obj from "module"`.
    • -
    • Без фигурных скобок будет импортировано "значение по умолчанию": `import User from "user"`.
    • -
    - -На текущий момент модули требуют системы сборки на сервере. Автор этого текста преимущественно использует webpack, но есть и другие варианты. - - - - - - diff --git a/1-js/10-es-modern/13-modules/nums.view/bundle.js b/1-js/10-es-modern/13-modules/nums.view/bundle.js deleted file mode 100644 index 843371e4..00000000 --- a/1-js/10-es-modern/13-modules/nums.view/bundle.js +++ /dev/null @@ -1,70 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; - -/******/ // The require function -/******/ function __webpack_require__(moduleId) { - -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; - -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; - -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); - -/******/ // Flag the module as loaded -/******/ module.loaded = true; - -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } - - -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; - -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; - -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; - -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var _nums = __webpack_require__(1); - - document.write('Сумма импортов: ' + (_nums.one + _nums.two)); - -/***/ }, -/* 1 */ -/***/ function(module, exports) { - - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true - }); - var one = 1; - - exports.one = one; - var two = 2; - - exports.two = two; - -/***/ } -/******/ ]); \ No newline at end of file diff --git a/1-js/10-es-modern/13-modules/nums.view/index.html b/1-js/10-es-modern/13-modules/nums.view/index.html deleted file mode 100644 index c2f2d57f..00000000 --- a/1-js/10-es-modern/13-modules/nums.view/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/10-es-modern/13-modules/nums.view/main.js b/1-js/10-es-modern/13-modules/nums.view/main.js deleted file mode 100644 index d5ad677d..00000000 --- a/1-js/10-es-modern/13-modules/nums.view/main.js +++ /dev/null @@ -1,3 +0,0 @@ -import {one, two} from './nums'; - -document.write(`Сумма импортов: ${one + two}`); \ No newline at end of file diff --git a/1-js/10-es-modern/13-modules/nums.view/nums.js b/1-js/10-es-modern/13-modules/nums.view/nums.js deleted file mode 100644 index 1cce84a7..00000000 --- a/1-js/10-es-modern/13-modules/nums.view/nums.js +++ /dev/null @@ -1,5 +0,0 @@ -export let one = 1; - -let two = 2; - -export {two}; \ No newline at end of file diff --git a/1-js/10-es-modern/13-modules/nums.view/webpack.config.js b/1-js/10-es-modern/13-modules/nums.view/webpack.config.js deleted file mode 100644 index 6899addf..00000000 --- a/1-js/10-es-modern/13-modules/nums.view/webpack.config.js +++ /dev/null @@ -1,22 +0,0 @@ -// Для использования нужен Node.JS -// Поставьте его: -// npm i -g webpack -// Поставьте babel-loader: -// npm i babel-loader -// Запустите его в директории с файлами: -// webpack - -module.exports = { - entry: './main', - - output: { - filename: 'bundle.js' - }, - - module: { - loaders: [ - { test: /\.js$/, loader: "babel" } - ] - } -}; - diff --git a/1-js/10-es-modern/14-proxy/article.md b/1-js/10-es-modern/14-proxy/article.md deleted file mode 100644 index b64a3a5d..00000000 --- a/1-js/10-es-modern/14-proxy/article.md +++ /dev/null @@ -1,388 +0,0 @@ - -# Proxy - -*Прокси* (proxy) -- особый объект, смысл которого -- перехватывать обращения к другому объекту и, при необходимости, модифицировать их. - -Синтаксис: - -```js -let proxy = new Proxy(target, handler) -``` - -Здесь: - -
      -
    • `target` -- объект, обращения к которому надо перехватывать.
    • -
    • `handler` -- объект с "ловушками": функциями-перехватчиками для операций к `target`.
    • -
    - -Почти любая операция может быть перехвачена и обработана прокси до или даже вместо доступа к объекту `target`, например: чтение и запись свойств, получение списка свойств, вызов функции (если `target` -- функция) и т.п. - -Различных типов ловушек довольно много. - -Сначала мы подробно рассмотрим самые важные "ловушки", а затем посмотрим и на их полный список. - -[smart header="Если ловушки нет -- операция идёт над `target`"] -Если для операции нет ловушки, то она выполняется напрямую над `target`. -[/smart] - -## get/set - -Самыми частыми являются ловушки для чтения и записи в объект: - -
    -
    `get(target, property, receiver)`
    -
    Срабатывает при чтении свойства из прокси. -Аргументы: -
      -
    • `target` -- целевой объект, тот же который был передан первым аргументом в `new Proxy`.
    • -
    • `property` -- имя свойства.
    • -
    • `receiver` -- объект, к которому было применено присваивание. Обычно сам прокси, либо прототипно наследующий от него. Этот аргумент используется редко.
    • -
    - -
    -
    `set(target, property, value, receiver)`
    -
    Срабатывает при записи свойства в прокси. - -Аргументы: -
      -
    • `target` -- целевой объект, тот же который был передан первым аргументом в `new Proxy`.
    • -
    • `property` -- имя свойства.
    • -
    • `value` -- значение свойства.
    • -
    • `receiver` -- объект, к которому было применено присваивание, обычно сам прокси, либо прототипно наследующий от него.
    • -
    -Метод `set` должен вернуть `true`, если присвоение успешно обработано и `false` в случае ошибки (приведёт к генерации `TypeError`). -
    -
    - -Пример с выводом всех операций чтения и записи: - -```js -//+ run -'use strict'; - -let user = {}; - -let proxy = new Proxy(user, { - get(target, prop) { -*!* - alert(`Чтение ${prop}`); -*/!* - return target[prop]; - }, - set(target, prop, value) { -*!* - alert(`Запись ${prop} ${value}`); -*/!* - target[prop] = value; - return true; - } -}); - -proxy.firstName = "Ilya"; // запись - -proxy.firstName; // чтение - -alert(user.firstName); // Ilya -``` - -При каждой операции чтения и записи свойств `proxy` в коде выше срабатывают методы `get/set`. Через них значение в конечном счёте попадает в объект (или считывается из него). - -Можно сделать и позаковырестее. - -Методы `get/set` позволяют реализовать доступ к произвольным свойствам, которых в объекте нет. - -Например, в коде ниже словарь `dictionary` содержит различные фразы: - -```js -//+ run -'use strict'; - -let dictionary = { - 'Hello': 'Привет', - 'Bye': 'Пока' -}; - -alert( dictionary['Hello'] ); // Привет -``` - -А что, если фразы нет? В этом случае будем возвращать фразу без перевода и, на всякий случай, писать об этом в консоль: - - -```js -//+ run -'use strict'; - -let dictionary = { - 'Hello': 'Привет', - 'Bye': 'Пока' -}; - -dictionary = new Proxy(dictionary, { - get(target, phrase) { - if (phrase in target) { - return target[phrase]; - } else { - console.log(`No phrase: ${phrase}`); - return phrase; - } - } -}) - -*!* -// Обращаемся к произвольным свойствам словаря! -*/!* -alert( dictionary['Hello'] ); // Привет -alert( dictionary['Welcome']); // Welcome (без перевода) -``` - -Аналогично и перехватчик `set` может организовать работу с произвольными свойствами. - -# has - -Ловушка `has` срабатывает в операторе `in` и некоторых других случаях, когда проверяется наличие свойства. - -В примере выше, если проверить наличие свойства `Welcome` в `dictionary`, то оператор `in` вернёт `false`: - -```js -alert( 'Hello' in dictionary ); // true -alert( 'Welcome' in dictionary ); // false, нет такого свойства -``` - -Это потому, что для перехвата `in` используется ловушка `has`. При отсутствии ловушки операция производится напрямую над исходным объектом `target`, что и даёт такой результат. - -Синтаксис `has` аналогичен `get`. - -Вот так `dictionary` будет всегда возвращать `true` для любой `in`-проверки: - -```js -//+ run -'use strict'; - -let dictionary = { - 'Hello': 'Привет' -}; - -dictionary = new Proxy(dictionary, { - has(target, phrase) { - return true; - } -}); - -*!* -alert("BlaBlaBla" in dictionary); // true -*/!* -``` - -# deleteProperty - -Ловушка `deleteProperty` по синтаксису аналогична `get/has`. - -Срабатывает при операции `delete`, должна вернуть `true`, если удаление было успешным. - -В примере ниже `delete` не повлияет на исходный объект, так как все операции перехватываются и "аннигилируются" прокси: - -```js -//+ run -'use strict'; - -let dictionary = { - 'Hello': 'Привет' -}; - -let proxy = new Proxy(dictionary, { - deleteProperty(target, phrase) { - return true; // ничего не делаем, но возвращает true - } -}); - -*!* -// не удалит свойство -delete proxy['Hello']; -*/!* - -alert("Hello" in dictionary); // true - -// будет то же самое, что и выше -// так как нет ловушки has, операция in сработает на исходном объекте -alert("Hello" in proxy); // true -``` - - -# enumerate - -Ловушка `enumerate` перехватывает операции `for..in` и `for..of` по объекту. - -Как и до ранее, если ловушки нет, то эти операторы работают с исходным объектом: - -```js -//+ run -'use strict'; - -let obj = {a: 1, b: 1}; - -let proxy = new Proxy(obj, {}); - -*!* -// перечисление прокси работает с исходным объектом -*/!* -for(let prop in proxy) { - alert(prop); // Выведет свойства obj: a, b -} -``` - -Если же ловушка `enumerate` есть, то она будет вызвана с единственным аргументом `target` и сможет вернуть [итератор](/iterator) для свойств. - -В примере ниже прокси делает так, что итерация идёт по всем свойствам, кроме начинающихся с подчёркивания `_`: - -```js -//+ run -'use strict'; - -let user = { - name: "Ilya", - surname: "Kantor", - _version: 1, - _secret: 123456 -}; - -let proxy = new Proxy(user, { - enumerate(target) { - let props = Object.keys(target).filter(function(prop) { - return prop[0] != '_'; - }); - - return props[Symbol.iterator](); - } -}); - -*!* -// отфильтрованы свойства, начинающиеся с _ -*/!* -for(let prop in proxy) { - alert(prop); // Выведет свойства user: name, surname -} -``` - -Посмотрим внимательнее, что происходит внутри `enumerate`: -
      -
    1. Сначала получаем список интересующих нас свойств в виде массива.
    2. -
    3. Метод должен возвратить [итератор](/iterator) по массиву. Встроенный итератор для массива получаем через вызов `props[Symbol.iterator]()`.
    4. -
    - - -# apply - -Прокси умеет работать не только с обычными объектами, но и с функциями. - -Если аргумент `target` прокси -- функция, то становится доступна ловушка `apply` для её вызова. - -Метод `apply(target, thisArgument, argumentsList)` получает: - -
      -
    • `target` -- исходный объект.
    • -
    • `thisArgument` -- контекст `this` вызова.
    • -
    • `argumentsList` -- аргументы вызова в виде массива.
    • -
    - - -Она может обработать вызов сама и/или передать его функции. - -```js -//+ run -'use strict'; - -function sum(a, b) { - return a + b; -} - -let proxy = new Proxy(sum, { -*!* - // передаст вызов в target, предварительно сообщив о нём -*/!* - apply: function(target, thisArg, argumentsList) { - alert(`Буду вычислять сумму: ${argumentsList}`); - return target.apply(thisArg, argumentsList); - } -}); - -// Выведет сначала сообщение из прокси, -// а затем уже сумму -alert( proxy(1, 2) ); -``` - -Нечто подобное можно сделать через замыкания. Но прокси может гораздо больше. В том числе и перехватывать вызовы через `new`. - -## construct - -Ловушка `construct(target, argumentsList)` перехватывает вызовы при помощи `new`. - -Она получает исходный объект `target` и список аргументов `argumentsList`. - -Пример ниже передаёт операцию создания исходному классу или функции-конструктору, выводя сообщение об этом: - -```js -//+ run -'use strict'; - -function User(name, surname) { - this.name = name; - this.surname = surname; -} - -let UserProxy = new Proxy(User, { -*!* - // передаст вызов new User, предварительно сообщив о нём -*/!* - construct: function(target, argumentsList) { - alert(`Запуск new с аргументами: ${argumentsList}`); - return new target(...argumentsList); - } -}); - -let user = new UserProxy("Ilya", "Kantor"); - -alert( user.name ); // Ilya -``` - -## Полный список - -Полный список возможных функций-перехватчиков, которые может задавать `handler`: - -
      -
    • [getPrototypeOf](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/has) -- перехватывает обращение к методу `getPrototypeOf`.
    • -
    • [setPrototypeOf](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/setPrototypeOf) -- перехватывает обращение к методу `setPrototypeOf`.
    • -
    • [isExtensible](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/isExtensible) -- перехватывает обращение к методу `isExtensible`.
    • -
    • [preventExtensions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/preventExtensions) -- перехватывает обращение к методу `preventExtensions`.
    • -
    • [getOwnPropertyDescriptor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/getOwnPropertyDescriptor) -- перехватывает обращение к методу `getOwnPropertyDescriptor`.
    • -
    • [defineProperty](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/defineProperty) -- перехватывает обращение к методу `defineProperty`.
    • -
    • [has](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/has) -- перехватывает проверку существования свойства, которая используется в операторе `in` и в некоторых других методах встроенных объектов.
    • -
    • [get](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/get) -- перехватывает чтение свойства.
    • -
    • [set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/set) -- перехватывает запись свойства.
    • -
    • [deleteProperty](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/deleteProperty) -- перехватывает удаление свойства оператором `delete`.
    • -
    • [enumerate](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/enumerate) -- срабатывает при вызове `for..in` или `for..of`, возвращает итератор для свойств объекта.
    • -
    • [ownKeys](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/ownKeys) -- перехватывает обращения к методу `getOwnPropertyNames`.
    • -
    • [apply](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/apply) -- перехватывает вызовы `target()`.
    • -
    • [construct](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/construct) -- перехватывает вызовы `new target()`.
    • -
    - -Каждый перехватчик запускается с `handler` в качестве `this`. Это означает, что `handler` кроме ловушек может содержать и другие полезные свойства и методы. - -Каждый перехватчик получает в аргументах `target` и дополнительные параметры в зависимости от типа. - -Если перехватчик в `handler` не указан, то операция совершается, как если бы была вызвана прямо на `target`. - -## Итого - -`Proxy` позволяет модифицировать поведение объекта как угодно, перехватывать любые обращения к его свойствам и методам, включая вызовы для функций. - -Особенно приятна возможность перехватывать обращения к отсутствующим свойствам, разработчики ожидали её уже давно. - -Что касается поддержки, то возможности полифиллов здесь ограничены. "Переписать" прокси на старом JavaScript сложновато, учитывая низкоуровневые возможности, которые он даёт. - -Поэтому нужна именно браузерная поддержка. [Постепенно](https://kangax.github.io/compat-table/es6/) она реализуется. - - - - - diff --git a/1-js/10-es-modern/2-let-const/article.md b/1-js/10-es-modern/2-let-const/article.md deleted file mode 100644 index 1b5f4f17..00000000 --- a/1-js/10-es-modern/2-let-const/article.md +++ /dev/null @@ -1,215 +0,0 @@ -# Переменные: let и const - -В ES-2015 предусмотрены новые способы объявления переменных: через `let` и `const` вместо `var`. - -Например: -```js -let a = 5; -``` - -## let - -У объявлений переменной через `let` есть три основных отличия от `var`: - -
      -
    1. **Область видимости переменной `let` -- блок `{...}`.** - -Как мы помним, переменная, объявленная через `var`, видна везде в функции. - -Переменная, объявленная через `let`, видна только в рамках блока `{...}`, в котором объявлена. - -Это, в частности, влияет на объявления внутри `if`, `while` или `for`. - -Например, переменная через `var`: - -```js -//+ run -'use strict'; - -var apples = 5; - -if (true) { - var apples = 10; - - alert(apples); // 10 (внутри блока) -} - -alert(apples); // 10 (снаружи блока то же самое) -``` - -В примере выше `apples` -- одна переменная на весь код, которая модифицируется в `if`. - -То же самое с `let` будет работать по-другому: - -```js -//+ run -'use strict'; - -let apples = 5; // (*) - -if (true) { - let apples = 10; - - alert(apples); // 10 (внутри блока) -} - -*!* -alert(apples); // 5 (снаружи блока значение не изменилось) -*/!* -``` - -Здесь, фактически, две независимые переменные `apples`, одна -- глобальная, вторая -- в блоке `if`. - -Заметим, что если объявление `let apples` в первой строке `(*)` удалить, то в последнем `alert` будет ошибка: переменная неопределена: - -```js -//+ run -'use strict'; - -if (true) { - let apples = 10; - - alert(apples); // 10 (внутри блока) -} - -*!* -alert(apples); // ошибка! -*/!* -``` - - -Это потому что переменная `let` всегда видна именно в том блоке, где объявлена, и не более. - -
    2. -
    3. **Переменная `let` видна только после объявления.** - -Как мы помним, переменные `var` существуют и до объявления. Они равны `undefined`: - -```js -//+ run -'use strict'; - -alert(a); // undefined - -var a = 5; -``` - -С переменными `let` всё проще. До объявления их вообще нет. - -Такой доступ приведёт к ошибке: -```js -//+ run -'use strict'; - -*!* -alert(a); // ошибка, нет такой переменной -*/!* - -let a = 5; -``` - -Заметим также, что переменные `let` нельзя повторно объявлять. То есть, такой код выведет ошибку: - -```js -//+ run -'use strict'; - -let x; -let x; // ошибка: переменная x уже объявлена -``` - -Это -- хоть и выглядит ограничением по сравнению с `var`, но на самом деле проблем не создаёт. Например, два таких цикла совсем не конфликтуют: -```js -//+ run -'use strict'; - -// каждый цикл имеет свою переменную i -for(let i = 0; i<10; i++) { /* … */ } -for(let i = 0; i<10; i++) { /* … */ } - -alert( i ); // ошибка: глобальной i нет -``` - -При объявлении внутри цикла переменная `i` будет видна только в блоке цикла. Она не видна снаружи, поэтому будет ошибка в последнем `alert`. - - -
    4. -
    5. **При использовании в цикле, для каждой итерации создаётся своя переменная.** - -Переменная `var` -- одна на все итерации цикла и видна даже после цикла: - -```js -//+ run -for(var i=0; i<10; i++) { /* … */ } - -alert(i); // 10 -``` - -С переменной `let` -- всё по-другому. - -Каждому повторению цикла соответствует своя независимая переменная `let`. Если внутри цикла есть вложенные объявления функций, то в замыкании каждой будет та переменная, которая была при соответствующей итерации. - -Это позволяет легко решить классическую проблему с замыканиями, описанную в задаче [](/task/make-army). - -```js -//+ run -'use strict'; - -function makeArmy() { - - let shooters = []; - - for (*!*let*/!* i = 0; i < 10; i++) { - shooters.push(function() { - alert( i ); // выводит свой номер - }); - } - - return shooters; -} - -var army = makeArmy(); - -army[0](); // 0 -army[5](); // 5 -``` - -Если бы объявление было `var i`, то была бы одна переменная `i` на всю функцию, и вызовы в последних строках выводили бы `10` (подробнее -- см. задачу [](/task/make-army)). - -А выше объявление `let i` создаёт для каждого повторения блока в цикле свою переменную, которую функция и получает из замыкания в последних строках. -
    6. -
    - -## const - -Объявление `const` задаёт константу, то есть переменную, которую нельзя менять: - -```js -//+ run -'use strict'; - -const apple = 5; -apple = 10; // ошибка -``` - -В остальном объявление `const` полностью аналогично `let`. - -[smart header="константы и КОНСТАНТЫ"] -Константы, которые жёстко заданы всегда, во время всей программы, обычно пишутся в верхнем регистра. Например: const ORANGE = "#ffa500". - -Большинство переменных -- константы в другом смысле: они не меняются после присвоения. Но при разных запусках функции это значение может быть разным. Для таких переменных можно использовать `const` и обычные строчные буквы в имени. -[/smart] - -## Итого - - -Переменные `let`: - -
      -
    • Видны только после объявления и только в текущем блоке.
    • -
    • Нельзя переобъявлять (в том же блоке).
    • -
    • При объявлении переменной в цикле `for(let …)` -- она видна только в этом цикле. Причём каждой итерации соответствует своя переменная `let`.
    • -
    - -Переменная `const` -- это константа, в остальном -- как `let`. - diff --git a/1-js/10-es-modern/3-destructuring/article.md b/1-js/10-es-modern/3-destructuring/article.md deleted file mode 100644 index 1c095ad9..00000000 --- a/1-js/10-es-modern/3-destructuring/article.md +++ /dev/null @@ -1,324 +0,0 @@ - -# Деструктуризация - -*Деструктуризация* (destructuring assignment) -- это особый синтаксис присваивания, при котором можно присвоить массив или объект сразу нескольким переменным, разбив его на части. - -## Массив - -Пример деструктуризации массива: - -```js -'use strict'; - -let [firstName, lastName] = ["Илья", "Кантор"]; - -alert(firstName); // Илья -alert(lastName); // Кантор -``` - -При таком присвоении первое значение массива пойдёт в переменную `firstName`, второе -- в `lastName`, а последующие (если есть) -- будут отброшены. - -Ненужные элементы массива также можно отбросить, поставив лишнюю запятую: - -```js -//+ run -'use strict'; - -*!* -// первый и второй элементы не нужны -let [, , title] = "Юлий Цезарь Император Рима".split(" "); -*/!* - -alert(title); // Император -``` - -В коде выше первый и второй элементы массива никуда не записались, они были отброшены. Как, впрочем, и все элементы после третьего. - -### Оператор "spread" - -Если мы хотим получить и последующие значения массива, но не уверены в их числе -- можно добавить ещё один параметр, который получит "всё остальное", при помощи оператора `"..."` ("spread", троеточие): - -```js -//+ run -'use strict'; - -*!* -let [firstName, lastName, ...rest] = "Юлий Цезарь Император Рима".split(" "); -*/!* - -alert(firstName); // Юлий -alert(lastName); // Цезарь -alert(rest); // Император,Рима (массив из 2х элементов) -``` - -Значением `rest` будет массив из оставшихся элементов массива. Вместо `rest` можно использовать и другое имя переменной, оператор здесь -- троеточие. Оно должно стоять только последним элементом в списке слева. - -### Значения по умолчанию - -Если значений в массиве меньше, чем переменных -- ошибки не будет, просто присвоится `undefined`: - - -```js -//+ run -'use strict'; - -*!* -let [firstName, lastName] = []; -*/!* - -alert(firstName); // undefined -``` - -Впрочем, как правило, в таких случаях задают значение по умолчанию. Для этого нужно после переменной использовать символ `=` со значением, например: - -```js -//+ run -'use strict'; - -*!* -// значения по умолчанию -let [firstName="Гость", lastName="Анонимный"] = []; -*/!* - -alert(firstName); // Гость -alert(lastName); // Анонимный -``` - -В качестве значений по умолчанию можно использовать не только примитивы, но и выражения, даже включающие в себя вызовы функций: - -```js -//+ run -'use strict'; - -function defaultLastName() { - return Date.now() + '-visitor'; -} - -*!* -// lastName получит значение, соответствующее текущей дате: -let [firstName, lastName=defaultLastName()] = ["Вася"]; -*/!* - -alert(firstName); // Вася -alert(lastName); // 1436...-visitor -``` - -Заметим, что вызов функции `defaultLastName()` для генерации значения по умолчанию будет осуществлён только при необходимости, то есть если значения нет в массиве. - -## Деструктуризация объекта - -Деструктуризацию можно использовать и с объектами. При этом мы указываем, какие свойства в какие переменные должны "идти". - -Базовый синтаксис: -```js -let {var1, var2} = {var1:…, var2…} -``` - -Объект справа -- уже существующий, который мы хотим разбить на переменные. А слева -- список переменных, в которые нужно соответствующие свойства записать. - -Например: - -```js -//+ run -'use strict'; - -let options = { - title: "Меню", - width: 100, - height: 200 -}; - -*!* -let {title, width, height} = options; -*/!* - -alert(title); // Меню -alert(width); // 100 -alert(height); // 200 -``` - -Как видно, свойства `options.title`, `options.width` и `options.height` автоматически присвоились соответствующим переменным. - -Если хочется присвоить свойство объекта в переменную с другим именем, например, чтобы свойство `options.width` пошло в переменную `w`, то можно указать соответствие через двоеточие, вот так: - -```js -//+ run -'use strict'; - -let options = { - title: "Меню", - width: 100, - height: 200 -}; - -*!* -let {width: w, height: h, title} = options; -*/!* - -alert(title); // Меню -alert(w); // 100 -alert(h); // 200 -``` - -В примере выше свойство `width` отправилось в переменную `w`, свойство `height` -- в переменную `h`, а `title` -- в переменную с тем же названием. - -Если каких-то свойств в объекте нет, можно указать значение по умолчанию через знак равенства `=`, вот так; - -```js -//+ run -'use strict'; - -let options = { - title: "Меню" -}; - -*!* -let {width=100, height=200, title} = options; -*/!* - -alert(title); // Меню -alert(width); // 100 -alert(height); // 200 -``` - -Можно и сочетать одновременно двоеточие и равенство: - - -```js -//+ run -'use strict'; - -let options = { - title: "Меню" -}; - -*!* -let {width:w=100, height:h=200, title} = options; -*/!* - -alert(title); // Меню -alert(w); // 100 -alert(h); // 200 -``` - -А что, если в объекте больше значений, чем переменных? Можно ли куда-то присвоить "остаток", аналогично массивам? - -Такой возможности в текущем стандарте нет. Она планируется в будущем стандарте, и выглядеть она будет примерно так: - -```js -//+ run -'use strict'; - -let options = { - title: "Меню", - width: 100, - height: 200 -}; - -*!* -let {title, ...size} = options; -*/!* - -// title = "Меню" -// size = { width: 100, height: 200} (остаток) -``` - -Этот код будет работать, например, при использовании Babel со включёнными экспериментальными возможностями, но ещё раз заметим, что в текущий стандарт такая возможность не вошла. - -[smart header="Деструктуризация без объявления"] - -В примерах выше переменные объявлялись прямо перед присваиванием: `let {…} = {…}`. Конечно, можно и без `let`, использовать уже существующие переменные. - -Однако, здесь есть небольшой "подвох". В JavaScript, если в основном потоке кода (не внутри другого выражения) встречается `{...}`, то это воспринимается как блок. - -Например, можно использовать такой блок для ограничения видимости переменных: -```js -//+ run -'use strict'; -{ - // вспомогательные переменные, локальные для блока - let a = 5; - // поработали с ними - alert(a); // 5 - // больше эти переменные не нужны -} -alert(a); // ошибка нет такой переменной -``` - -Конечно, это бывает удобно, но в данном случае это создаст проблему при деструктуризации: - -```js -let a, b; -{a, b} = {a:5, b:6}; // будет ошибка, оно посчитает, что {a,b} - блок -``` - -Чтобы избежать интерпретации `{a, b}` как блока, нужно обернуть всё присваивание в скобки: - -```js -let a, b; -({a, b} = {a:5, b:6}); // внутри выражения это уже не блок -``` -[/smart] - -## Вложенные деструктуризации - -Если объект или массив содержат другие объекты или массивы, и их тоже хочется разбить на переменные -- не проблема. - -Деструктуризации можно как угодно сочетать и вкладывать друг в друга. - -В коде ниже `options` содержит подобъект и подмассив. В деструктуризации ниже сохраняется та же структура: - -```js -//+ run -'use strict'; - -let options = { - size: { - width: 100, - height: 200 - }, - items: ["Пончик", "Пирожное"] -} - -let { title="Меню", size: {width, height}, items: [item1, item2] } = options; - -// Меню 100 200 Пончик Пирожное -alert(title); // Меню -alert(width); // 100 -alert(height); // 200 -alert(item1); // Пончик -alert(item2); // Пирожное -``` - -Как видно, весь объект `options` корректно разбит на переменные. - - -## Итого - -
      -
    • Деструктуризация позволяет разбивать объект или массив на переменные при присвоении.
    • -
    • Синтаксис: -```js -let {prop : varName = default, ...} = object -``` - -Здесь двоеточие `:` задаёт отображение свойства `prop` в переменную `varName`, а равенство `=default` задаёт выражение, которое будет использовано, если значение отсутствует (не указано или `undefined`). - -Для массивов имеет значение порядок, поэтому нельзя использовать `:`, но значение по умолчанию -- можно: - -```js -let [var1 = default, var2, ...rest] = array -``` - -Объявление переменной в начале конструкции не обязательно. Можно использовать и существующие переменные. Однако при деструктуризации объекта может потребоваться обернуть выражение в скобки. -
    • -
    • Вложенные объекты и массивы тоже работают, при деструктуризации нужно лишь сохранить ту же структуру, что и исходный объект/массив.
    • -
    - -Как мы увидим далее, деструктуризации особенно удобны при чтении объектных параметров функций. - - - - - - diff --git a/1-js/10-es-modern/4-es-function/article.md b/1-js/10-es-modern/4-es-function/article.md deleted file mode 100644 index ab0d40e3..00000000 --- a/1-js/10-es-modern/4-es-function/article.md +++ /dev/null @@ -1,469 +0,0 @@ - -# Функции - -В функциях основные изменения касаются передачи параметров, плюс введена дополнительная короткая запись через стрелочку `=>`. - -## Параметры по умолчанию - -Можно указывать параметры по умолчанию через равенство `=`, например: - -```js -//+ run -function showMenu(title = "Без заголовка", width = 100, height = 200) { - alert(`${title} ${width} ${height}`); -} - -showMenu("Меню"); // Меню 100 200 -``` - -Параметр по умолчанию используется при отсутствующем аргументе или равном `undefined`, например: - -```js -//+ run -function showMenu(title = "Заголовок", width = 100, height = 200) { - alert(`title=${title} width=${width} height=${height}`); -} - -// По умолчанию будут взяты 1 и 3 параметры -// title=Заголовок width=null height=200 -showMenu(undefined, null); -``` - -При передаче любого значения, кроме `undefined`, включая пустую строку, ноль или `null`, параметр считается переданным, и значение по умолчание не используется. - -**Параметры по умолчанию могут быть не только значениями, но и выражениями.** - -Например: - -```js -//+ run -function sayHi(who = getCurrentUser().toUpperCase()) { - alert(`Привет, ${who}!`); -} - -function getCurrentUser() { - return 'Вася'; -} - -sayHi(); // Привет, ВАСЯ! -``` - -Заметим, что значение выражения `getCurrentUser().toUpperCase()` будет вычислено, и соответствующие функции вызваны -- лишь в том случае, если это необходимо, то есть когда функция вызвана без параметра. - -В частности, выражение по умолчанию не вычисляется при объявлении функции. В примере выше функция `getCurrentUser()` будет вызвана именно в последней строке, так как не передан параметр. - - -## Оператор spread вместо arguments - -Чтобы получить массив аргументов, можно использовать оператор `…`, например: - -```js -//+ run - -function showName(firstName, lastName, *!*...rest*/!*) { - alert(`${firstName} ${lastName} - ${rest}`); -} - -// выведет: Юлий Цезарь - Император,Рима -showName("Юлий", "Цезарь", "Император", "Рима"); -``` - -В `rest` попадёт массив всех аргументов, начиная со второго. - -Заметим, что `rest` -- настоящий массив, с методами `map`, `forEach` и другими, в отличие от `arguments`. - -[warn header="Оператор … должен быть в конце"] - -Оператор `…` собирает "все оставшиеся" аргументы, поэтому такое объявление не имеет смысла: -```js -function f(arg1, ...rest, arg2) { // arg2 после ...rest ?! - // будет ошибка -} -``` -Параметр `...rest` должен быть в конце функции. -[/warn] - - -Выше мы увидели использование `...` для чтения параметров в объявлении функции. Но этот же оператор можно использовать и при вызове функции, для передачи массива параметров как списка, например: - -```js -//+ run -'use strict'; - -let numbers = [2, 3, 15]; - -// Оператор ... в вызове передаст массив как список аргументов -// Этот вызов аналогичен Math.max(2, 3, 15) -let max = Math.max(*!*...numbers*/!*); - -alert( max ); // 15 -``` - -Формально говоря, эти два вызова делают одно и то же: - -```js -Math.max(...numbers); -Math.max.apply(Math, numbers); -``` - -Похоже, что первый -- короче и красивее. - -## Деструктуризация в параметрах - -Если функция получает объект, то она может его тут же разбить в переменные: - -```js -//+ run -'use strict'; - -let options = { - title: "Меню", - width: 100, - height: 200 -}; - -*!* -function showMenu({title, width, height}) { -*/!* - alert(`${title} ${width} ${height}`); // Меню 100 200 -} - -showMenu(options); -``` - -Можно использовать и более сложную деструктуризацию, с соответствиями и значениями по умолчанию: - -```js -//+ run -'use strict'; - -let options = { - title: "Меню" -}; - -*!* -function showMenu({title="Заголовок", width:w=100, height:h=200}) { -*/!* - alert(`${title} ${w} ${h}`); -} - -// объект options будет разбит на переменные -showMenu(options); // Меню 100 200 -``` - -Заметим, что в примере выше какой-то аргумент у `showMenu()` обязательно должен быть, чтобы разбить его на переменные. - -Если хочется, чтобы функция могла быть вызвана вообще без аргументов -- нужно добавить ей параметр по умолчанию -- уже не внутрь деструктуризации, а в самом списке аргументов: - -```js -//+ run -'use strict'; - -function showMenu({title="Заголовок", width:w=100, height:h=200} *!*= {}*/!*) { - alert(`${title} ${w} ${h}`); -} - -showMenu(); // Заголовок 100 200 -``` - -В коде выше весь объект аргументов по умолчанию равен пустому объекту `{}`, поэтому всегда есть что деструктуризовать. - -## Имя "name" - -В свойстве `name` у функции находится её имя. - -Например: - -```js -//+ run -'use strict'; - -function f() {} // f.name == "f" - -let g = function g() {}; // g.name == "g" - -alert(`${f.name} ${g.name}`) // f g -``` - -В примере выше показаны Function Declaration и Named Function Expression. В синтаксисе выше довольно очевидно, что у этих функций есть имя `name`. В конце концов, оно указано в объявлении. - -Но современный JavaScript идёт дальше, он старается даже анонимным функциям дать разумные имена. - -Например, при создании анонимной функции с одновременной записью в переменную или свойство -- её имя равно названию переменной (или свойства). - -Например: - -```js -'use strict'; - -// свойство g.name = "g" -let g = function() {}; - -let user = { - // свойство user.sayHi.name == "sayHi" - sayHi: function() { }; -} -``` - -## Функции в блоке - -Объявление функции Function Declaration, сделанное в блоке, видно только в этом блоке. - -Например: - -```js -//+ run -'use strict'; - -if (true) { - - sayHi(); // работает - - function sayHi() { - alert("Привет!"); - } - -} -sayHi(); // ошибка, функции не существует -``` - -То есть, иными словами, такое объявление -- ведёт себя в точности как если бы `let sayHi = function() {…}` было сделано в начале блока. - -## Функции через => - -Появился новый синтаксис для задания функций через "стрелку" `=>`. - -Его простейший вариант выглядит так: -```js -//+ run -'use strict'; - -*!* -let inc = x => x+1; -*/!* - -alert( inc(1) ); // 2 -``` - -Эти две записи -- примерно аналогичны: - -```js -let inc = x => x+1; - -let inc = function(x) { return x + 1; }; -``` - -Как видно, `"x => x+1"` -- это уже готовая функция. Слева от `=>` находится аргумент, а справа -- выражение, которое нужно вернуть. - -Если аргументов несколько, то нужно обернуть их в скобки, вот так: - -```js -//+ run -'use strict'; - -*!* -let sum = (a,b) => a + b; -*/!* - -// аналог с function -// let inc = function(a, b) { return a + b; }; - -alert( sum(1, 2) ); // 3 -``` - -Если нужно задать функцию без аргументов, то также используются скобки, в этом случае -- пустые: - -```js -//+ run -'use strict'; - -*!* -// вызов getTime() будет возвращать текущее время -let getTime = () => `${new Date().getHours()} : ${new Date().getMinutes()}`; -*/!* - -alert( getTime() ); // текущее время -``` - -Когда тело функции достаточно большое, то можно его обернуть в фигурные скобки `{…}`: - - -```js -//+ run -'use strict'; - -*!* -let getTime = () => { - let date = new Date(); - let hours = date.getHours(); - let minutes = date.getMinutes(); - return `${hours}:${minutes}`; -}; -*/!* - -alert( getTime() ); // текущее время -``` - -Заметим, что как только тело функции оборачивается в `{…}`, то её результат уже не возвращается автоматически. Такая функция должна делать явный `return`, как в примере выше, если конечно хочет что-либо возвратить. - -Функции-стрелки очень удобны в качестве коллбеков, например: - -```js -//+ run -`use strict`; - -let arr = [5, 8, 3]; - -*!* -let sorted = arr.sort( (a,b) => a - b ); -*/!* - -alert(sorted); // 3, 5, 8 -``` - -Такая запись -- коротка и понятна. Далее мы познакомимся с дополнительными преимуществами использования функций-стрелок для этой цели. - -## Функции-стрелки не имеют своего this - -Внутри функций-стрелок -- тот же `this`, что и снаружи. - -Это очень удобно в обработчиках событий и коллбэках, например: - -```js -//+ run -'use strict'; - -let group = { - title: "Наш курс", - students: ["Вася", "Петя", "Даша"], - - showList: function() { -*!* - this.students.forEach( - (student) => alert(`${this.title}: ${student}`) - ) -*/!* - } -} - -group.showList(); -// Наш курс: Вася -// Наш курс: Петя -// Наш курс: Даша -``` - -Здесь в `forEach` была использована функция-стрелка, поэтому `this.title` в коллбэке -- тот же, что и во внешней функции `showList`. То есть, в данном случае -- `group.title`. - -Если бы в `forEach` вместо функции-стрелки была обычная функция, то была бы ошибка: - -```js -//+ run -'use strict'; - -let group = { - title: "Наш курс", - students: ["Вася", "Петя", "Даша"], - - showList: function() { -*!* - this.students.forEach(function(student) { - alert(`${this.title}: ${student}`); // будет ошибка - }) -*/!* - } -} - -group.showList(); -``` - -При запуске будет "попытка прочитать свойство `title` у `undefined`", так как `.forEach(f)` при запуске `f` не ставит `this`. То есть, `this` внутри `forEach` будет `undefined`. - -[warn header="Функции стрелки нельзя запускать с `new`"] -Отсутствие у функции-стрелки "своего `this`" влечёт за собой естественное ограничение: такие функции нельзя использовать в качестве конструктора, то есть нельзя вызывать через `new`. -[/warn] - -## Функции-стрелки не имеют своего arguments - -В качестве `arguments` используются аргументы внешней "обычной" функции. - -Например: - -```js -//+ run -'use strict'; - -function f() { - let showArg = () => alert(arguments[0]); - showArg(); -} - -f(1); // 1 -``` - -Вызов `showArg()` выведет `1`, получив его из аргументов функции `f`. Функция-стрелка здесь вызвана без параметров, но это не важно: `arguments` всегда берутся из внешней "обычной" функции. - -Сохранение внешнего `this` и `arguments` удобно использовать для форвардинга вызовов и создания декораторов. - -Например, декоратор `defer(f, ms)` ниже получает функцию `f` и возвращает обёртку вокруг неё, откладывающую вызов на `ms` миллисекунд: - -```js -//+ run -'use strict'; - -*!* -function defer(f, ms) { - return function() { - setTimeout(() => f.apply(this, arguments), ms) - } -} -*/!* - -function sayHi(who) { - alert(`Привет, ${who}!`); -} - -let sayHiDeferred = defer(sayHi, 2000); -sayHiDeferred("Вася"); // Привет, Вася! через 2 секунды -``` - -Аналогичная реализация без функции-стрелки выглядела бы так: - -```js -function defer(f, ms) { - return function() { -*!* - let args = arguments; - let ctx = this; -*/!* - setTimeout(function() { - return f.apply(ctx, args); - }, ms); - } -} -``` - -В этом коде пришлось создавать дополнительные переменные `args` и `ctx` для передачи внешних аргументов и контекста через замыкание. - - -## Итого - -Основные улучшения в функциях: -
      -
    • Можно задавать параметры по умолчанию, а также использовать деструктуризацию для чтения приходящего объекта.
    • -
    • Оператор spread (троеточие) в объявлении позволяет функции получать оставшиеся аргументы в массив: `function f(arg1, arg2, ...rest)`.
    • -
    • Тот же оператор spread в вызове функции позволяет передать её массив как список аргументов (вместо `apply`).
    • -
    • У функции есть свойство `name`, оно содержит имя, указанное при объявлении функции, либо, если его нет, то имя свойства или переменную, в которую она записана. Есть и некоторые другие ситуации, в которых интерпретатор подставляет "самое подходящее" имя.
    • -
    • Объявление Function Declaration в блоке `{...}` видно только в этом блоке.
    • -
    • Появились функции-стрелки: -
        -
      • Без фигурных скобок возвращают выражение `expr`: `(args) => expr`.
      • -
      • С фигурными скобками требуют явного `return`.
      • -
      • Сохраняют `this` и `arguments` окружающего контекста.
      • -
      • Не могут быть использованы как конструкторы, с `new`.
      • -
      -
    • -
    - - - - diff --git a/1-js/10-es-modern/5-es-string/article.md b/1-js/10-es-modern/5-es-string/article.md deleted file mode 100644 index f28c4b8a..00000000 --- a/1-js/10-es-modern/5-es-string/article.md +++ /dev/null @@ -1,332 +0,0 @@ - -# Строки - -Есть ряд улучшений и новых методов для строк. - -Начнём с, пожалуй, самого важного. - -## Строки-шаблоны - -Добавлен новый вид кавычек для строк: -```js -let str = `обратные кавычки`; -``` - -Основные отличия от двойных `"…"` и одинарных `'…'` кавычек: - -
      -
    • **В них разрешён перевод строки.** - -Например: -```js -//+ run -alert(`моя - многострочная - строка`); -``` -Заметим, что пробелы и, собственно, перевод строки также входят в строку, и будут выведены. -
    • -
    • **Можно вставлять выражения при помощи `${…}`.** - -Например: -```js -//+ run -'use strict'; -let apples = 2; -let oranges = 3; - -alert(`${apples} + ${oranges} = ${apples + oranges}`); // 2 + 3 = 5 -``` - -Как видно, при помощи `${…}` можно вставлять как и значение переменной `${apples}`, так и более сложные выражения, которые могут включать в себя операторы, вызовы функций и т.п. Такую вставку называют "интерполяцией". -
    • -
    - -## Функции шаблонизации - -Можно использовать свою функцию шаблонизации для строк. - -Название этой функции ставится перед первой обратной кавычкой: -```js -let str = func`моя строка`; -``` - -Эта функция будет автоматически вызвана и получит в качестве аргументов строку, разбитую по вхождениям параметров `${…}` и сами эти параметры. - -Например: - -```js -//+ run -'use strict'; - -function f(strings, ...values) { - alert(JSON.stringify(strings)); // ["Sum of "," + "," =\n ","!"] - alert(JSON.stringify(strings.raw)); // ["Sum of "," + "," =\\n ","!"] - alert(JSON.stringify(values)); // [3,5,8] -} - -let apples = 3; -let oranges = 5; - -// | s[0] | v[0] |s[1]| v[1] |s[2] | v[2] |s[3] -let str = f`Sum of ${apples} + ${oranges} =\n ${apples + oranges}!`; -``` - -В примере выше видно, что строка разбивается по очереди на части: "кусок строки" -- "параметр" -- "кусок строки" -- "параметр". - -
      -
    • Участки строки идут в первый аргумент-массив `strings`.
    • -
    • У этого массива есть дополнительное свойство `strings.raw`. В нём находятся строки в точности как в оригинале. Это влияет на спец-символы, например в `strings` символ `\n` -- это перевод строки, а в `strings.raw` -- это именно два символа `\n`.
    • -
    • Дальнейший список аргументов функции шаблонизации -- это значения выражений в `${...}`, в данном случае их три.
    • -
    - -[smart header="Зачем `strings.raw`?"] -В отличие от `strings`, в `strings.raw` содержатся участки строки в "изначально введённом" виде. - -То есть, если в строке находится `\n` или `\u1234` или другое особое сочетание символов, то оно таким и останется. - -Это нужно в тех случаях, когда функция шаблонизации хочет произвести обработку полностью самостоятельно (свои спец. символы?). Или же когда обработка спец. символов не нужна -- например, строка содержит "обычный текст", набранный непрограммистом без учёта спец. символов. -[/smart] - -Как видно, функция имеет доступ ко всему: к выражениям, к участкам текста и даже, через `strings.raw` -- к оригинально введённому тексту без учёта стандартных спец. символов. - -Функция шаблонизации может как-то преобразовать строку и вернуть новый результат. - -В простейшем случае можно просто "склеить" полученные фрагменты в строку: - -```js -//+ run -'use strict'; - -// str восстанавливает строку -function str(strings, ...values) { - let str = ""; - for(let i=0; i values[num]); -} - -// Пример использования -*!* -let name = "Вася"; - -// Перевести строку -alert( i18n`Hello, ${name}!` ); // Привет, Вася! -*/!* -``` - -Итоговое использование выглядит довольно красиво, не правда ли? - -Разумеется, эту функцию можно улучшить и расширить. Функция шаблонизации -- это своего рода "стандартный синтаксический сахар" для упрощения форматирования и парсинга строк. - -## Улучшена поддержка юникода - -Внутренняя кодировка строк в JavaScript -- это UTF-16, то есть под каждый символ отводится ровно два байта. - -Но под всевозможные символы всех языков мира 2 байт не хватает. Поэтому бывает так, что одному символу языка соответствует два юникодных символа (итого 4 байта). Такое сочетание называют "суррогатной парой". - -Самый частый пример суррогатной пары, который можно встретить в литературе -- это китайские иероглифы. - -Заметим, однако, что не всякий китайский иероглиф -- суррогатная пара. Существенная часть "основного" юникод-диапазона как раз отдана под китайский язык, поэтому некоторые иероглифы -- которые в неё "влезли" -- представляются одним юникод-символом, а те, которые не поместились (реже используемые) -- двумя. - -Например: - -```js -//+ run -alert( '我'.length ); // 1 -alert( '𩷶'.length ); // 2 -``` - -В тексте выше для первого иероглифа есть отдельный юникод-символ, и поэтому длина строки `1`, а для второго используется суррогатная пара. Соответственно, длина -- `2`. - -Китайскими иероглифами суррогатные пары, естественно, не ограничиваются. - -Ими представлены редкие математические символы, а также некоторые символы для эмоций, к примеру: - -```js -//+ run -alert( '𝒳'.length ); // 2, MATHEMATICAL SCRIPT CAPITAL X -alert( '😂'.length ); // 2, FACE WITH TEARS OF JOY -``` - -В современный JavaScript добавлены методы [String.fromCodePoint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint) и [str.codePointAt](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt) -- аналоги `String.fromCharCode` и `str.charCodeAt`, корректно работающие с суррогатными парами. - -Например, `charCodeAt` считает суррогатную пару двумя разными символами и возвращает код каждой: - -```js -//+ run -// как будто в строке два разных символа (на самом деле один) -alert( '𝒳'.charCodeAt(0) + ' ' + '𝒳'.charCodeAt(1) ); // 55349 56499 -``` - -...В то время как `codePointAt` возвращает его Unicode-код суррогатной пары правильно: - -```js -//+ run -// один символ с "длинным" (более 2 байт) unicode-кодом -alert( '𝒳'.codePointAt(0) ); // 119987 -``` - -Метод `String.fromCodePoint(code)` корректно создаёт строку из "длинного кода", в отличие от старого `String.fromCharCode(code)`. - -Например: - -```js -//+ run -// Правильно -alert( String.fromCodePoint(119987) ); // 𝒳 -// Неверно! -alert( String.fromCharCode(119987) ); // 풳 -``` - -Более старый метод `fromCharCode` в последней строке дал неверный результат, так как он берёт только первые два байта от числа `119987` и создаёт символ из них, а остальные отбрасывает. - - -### \u{длинный код} - -Есть и ещё синтаксическое улучшение для больших Unicode-кодов. - -В JavaScript-строках давно можно вставлять символы по Unicode-коду, вот так: - -```js -//+ run -alert( "\u2033" ); // ″, символ двойного штриха -``` - -Синтаксис: `\uNNNN`, где `NNNN` -- четырёхзначный шестнадцатиричный код, причём он должен быть ровно четырёхзначным. - -"Лишние" цифры уже не войдут в код, например: - -```js -//+ run -alert( "\u20331" ); // Два символа: символ двойного штриха ″, а затем 1 -``` - -Чтобы вводить более длинные коды символов, добавили запись `\u{NNNNNNNN}`, где `NNNNNNNN` -- максимально восьмизначный (но можно и меньше цифр) код. - -Например: - -```js -//+ run -alert( "\u{20331}" ); // 𠌱, китайский иероглиф с этим кодом -``` - -### Unicode-нормализация - -Во многих языках есть символы, которые получаются как сочетание основного символа и какого-то значка над ним или под ним. - -Например, на основе обычного символа `a` существуют символы: `àáâäãåā`. Самые часто встречающиеся подобные сочетания имеют отдельный юникодный код. Но отнюдь не все. - -Для генерации произвольных сочетаний используются несколько юникодных символов: основа и один или несколько значков. - -Например, если после символа `S` идёт символ "точка сверху" (код `\u0307`), то показано это будет как "S с точкой сверху" `Ṡ`. - -Если нужен ещё значок над той же буквой (или под ней) -- без проблем. Просто добавляем соответствующий символ. - -К примеру, если добавить символ "точка снизу" (код `\u0323`), то будет "S с двумя точками сверху и снизу" `Ṩ` . - -Пример этого символа в JavaScript-строке: - -```js -//+ run -alert("S\u0307\u0323"); // Ṩ -``` - -Такая возможность добавить произвольной букве нужные значки, с одной стороны, необходима, а с другой стороны -- возникает проблемка: можно представить одинаковый с точки зрения визуального отображения и интерпретации символ -- разными сочетаниями Unicode-кодов. - -Вот пример: -```js -//+ run -alert("S\u0307\u0323"); // Ṩ -alert("S\u0323\u0307"); // Ṩ - -alert( "S\u0307\u0323" == "S\u0323\u0307" ); // false -``` - -В первой строке после основы `S` идёт сначала значок "верхняя точка", а потом -- нижняя, во второй -- наоборот. По кодам строки не равны друг другу. Но символ задают один и тот же. - - -С целью разрешить эту ситуацию, существует *юникодная нормализация*, при которой строки приводятся к единому, "нормальному", виду. - -В современном JavaScript это делает метод [str.normalize()](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/normalize). - -```js -//+ run -alert( "S\u0307\u0323".normalize() == "S\u0323\u0307".normalize() ); // true -``` - -Забавно, что в данной конкретной ситуации `normalize()` приведёт последовательность из трёх символов к одному: [\u1e68 (S с двумя точками)](http://www.fileformat.info/info/unicode/char/1e68/index.htm). - -```js -//+ run -alert( "S\u0307\u0323".normalize().length ); // 1, нормализовало в один символ -alert( "S\u0307\u0323".normalize() == "\u1e68" ); // true -``` - -Это, конечно, не всегда так, просто в данном случае оказалось, что именно такой символ в юникоде уже есть. Если добавить значков, то нормализация уже даст несколько символов. - -Для большинства практических задач информации, данной выше, должно быть вполне достаточно, но если хочется более подробно ознакомиться с вариантами и правилами нормализации -- они описаны в приложении к стандарту юникод [Unicode Normalization Forms](http://www.unicode.org/reports/tr15/). - -## Полезные методы - -Добавлены ряд полезных методов общего назначения: - -
      -
    • [str.includes(s)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes) -- проверяет, включает ли одна строка в себя другую, возвращает `true/false`.
    • -
    • [str.endsWith(s)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith) -- возвращает `true`, если строка `str` заканчивается подстрокой `s`.
    • -
    • [str.startsWith(s)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith) -- возвращает `true`, если строка `str` начинается со строки `s`.
    • -
    • [str.repeat(times)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat) -- повторяет строку `str` `times` раз.
    • -
    - -Конечно, всё это можно было сделать при помощи других встроенных методов, но новые методы более удобны. - -## Итого - -Улучшения: -
      -
    • Строки-шаблоны -- для удобного задания строк (многострочных, с переменными), плюс возможность использовать функцию шаблонизации для самостоятельного форматирования.
    • -
    • Юникод -- улучшена работа с суррогатными парами.
    • -
    • Полезные методы для проверок вхождения одной строки в другую.
    • -
    \ No newline at end of file diff --git a/1-js/10-es-modern/6-es-object/article.md b/1-js/10-es-modern/6-es-object/article.md deleted file mode 100644 index d298c03b..00000000 --- a/1-js/10-es-modern/6-es-object/article.md +++ /dev/null @@ -1,368 +0,0 @@ - -# Объекты и прототипы - -В этом разделе мы рассмотрим нововведения, которые касаются именно объектов. - -По классам -- чуть позже, в отдельном разделе, оно того заслуживает. - -## Короткое свойство - -Зачастую у нас есть переменные, например, `name` и `isAdmin`, и мы хотим использовать их в объекте. - -При объявлении объекта в этом случае достаточно указать только имя свойства, а значение будет взято из переменной с таким именем. - -Например: - -```js -//+ run -'use strict'; - -let name = "Вася"; -let isAdmin = true; - -*!* -let user = { - name, - isAdmin -}; -*/!* -alert( JSON.stringify(user) ); // {"name": "Вася", "isAdmin": true} -``` - - -## Вычисляемые свойства - -В качестве имени свойства можно использовать выражение, например: - -```js -//+ run -'use strict'; - -let propName = "firstName"; - -let user = { -*!* - [propName]: "Вася" -*/!* -}; - -alert( user.firstName ); // Вася -``` - -Или даже так: - -```js -//+ run -'use strict'; - -let a = "Мой "; -let b = "Зелёный "; -let c = "Крокодил"; - -let user = { -*!* - [(a + b + c).toLowerCase()]: "Вася" -*/!* -}; - -alert( user["мой зелёный крокодил"] ); // Вася -``` - - -## Геттер-сеттер для прототипа - -В ES5 для прототипа был метод-геттер: -
      -
    • `Object.getPrototypeOf(obj)`
    • -
    - -В ES-2015 также добавился сеттер: -
      -
    • `Object.setPrototypeOf(obj, newProto)`
    • -
    - -...А также "узаконено" свойство `__proto__`, которое даёт прямой доступ к прототипу. Его, в качестве "нестандартного", но удобного способа работы с прототипом реализовали почти все браузеры (кроме IE10-), так что было принято решение добавить его в стандарт. - -## Object.assign - -Функция `Object.assign` получает список объектов и копирует в первый `target` свойства из остальных. - -Синтаксис: -```js -Object.assign(target, src1, src2...) -``` - -При этом последующие свойства перезаписывают предыдущие. - -Например: - -```js -//+ run -'use strict'; - -let user = { name: "Вася" }; -let visitor = { isAdmin: false, visits: true }; -let admin = { isAdmin: true }; - -Object.assign(user, visitor, admin); - -// user <- visitor <- admin -alert( JSON.stringify(user) ); // user: Вася, visits: true, isAdmin: true -``` - -Его также можно использовать для 1-уровневого клонирования объекта: - -```js -'use strict'; - -let user = { name: "Вася", isAdmin: false }; - -*!* -// clone = пустой объект + все свойства user -let clone = Object.assign({}, user); -*/!* -``` - - -## Object.is(value1, value2) - -Новая функция для проверки равенства значений. - -Возвращает `true`, если значения `value1` и `value2` равны, иначе `false`. - -Она похожа на обычное строгое равенство `===`, но есть отличия: - -```js -//+ run - -// Сравнение +0 и -0 -alert( Object.is(+0, -0)); // false -alert( +0 === -0 ); // true - -// Сравнение с NaN -alert( Object.is(NaN, NaN) ); // true -alert( NaN === NaN ); // false -``` - -Отличия эти в большинстве ситуаций некритичны, так что непохоже, чтобы эта функция вытеснила обычную проверку `===`. Что интересно -- этот алгоритм сравнения, который называется [SameValue](http://www.ecma-international.org/ecma-262/6.0/index.html#sec-samevalue), применяется во внутренних реализациях различных методов современного стандарта. - - -## Методы объекта - -Долгое время в JavaScript термин "метод объекта" был просто альтернативным названием для свойства-функции. - -Теперь это уже не так, добавлены именно "методы объекта", которые, по сути, являются свойствами-функциями, привязанными к объекту. - -Их особенности: - -
      -
    1. Более короткий синтаксис объявления.
    2. -
    3. Наличие в методах специального внутреннего свойства `[[HomeObject]]` ("домашний объект"), ссылающегося на объект, которому метод принадлежит. Мы посмотрим его использование чуть дальше.
    4. -
    - -Для объявления метода вместо записи `"prop: function() {…}"` нужно написать просто `"prop() { … }"`. - -Например: - -```js -//+ run -'use strict'; - -let name = "Вася"; -let user = { - name, -*!* - // вместо "sayHi: function() {" пишем "sayHi() {" - sayHi() { - alert(this.name); - } -*/!* -}; - -user.sayHi(); // Вася -``` - -Как видно, для создания метода нужно писать меньше букв. Что же касается вызова -- он ничем не отличается от обычной функции. На данном этапе можно считать, что "метод" -- это просто сокращённый синтаксис для свойства-функции. Дополнительные возможности, которые даёт такое объявление, мы рассмотрим позже. - -Также методами станут объявления геттеров `get prop()` и сеттеров `set prop()`: - -```js -//+ run -'use strict'; - -let name = "Вася", surname="Петров"; -let user = { - name, - surname, - get fullName() { - return `${name} ${surname}`; - } -}; - -alert( user.fullName ); // Вася Петров -``` - -Можно задать и метод с вычисляемым названием: - -```js -//+ run -'use strict'; - -let methodName = "getFirstName"; - -let user = { - // в квадратных скобках может быть любое выражение, - // которое должно вернуть название метода - [methodName]() { // вместо [methodName]: function() { - return "Вася"; - } -}; - -alert( user.getFirstName() ); // Вася -``` - -Итак, мы рассмотрели синтаксические улучшения. Если коротко, то не надо писать слово "function". Теперь перейдём к другим отличиям. - -## super - -В ES-2015 появилось новое ключевое слово `super`. Оно предназначено только для использования в методах объекта. - -Вызов `super.parentProperty` позволяет из метода объекта получить свойство его прототипа. - -Например, в коде ниже `rabbit` наследует от `animal`. - -Вызов `super.walk()` из метода объекта `rabbit` обращается к `animal.walk()`: - -```js -//+ run -'use strict'; - -let animal = { - walk() { - alert("I'm walking"); - } -}; - -let rabbit = { - __proto__: animal, - walk() { -*!* - alert(super.walk); // walk() { … } - super.walk(); // I'm walking -*/!* - } -}; - -rabbit.walk(); -``` - -Как правило, это используется в [классах](/class), которые мы рассмотрим в следующем разделе, но важно понимать, что "классы" здесь на самом деле не при чём. Свойство `super` работает через прототип, на уровне методов объекта. - -При обращении через `super` используется `[[HomeObject]]` текущего метода, и от него берётся `__proto__`. Поэтому `super` работает только внутри методов. - -В частности, если переписать этот код, оформив `rabbit.walk` как обычное свойство-функцию, то будет ошибка: - -```js -//+ run -'use strict'; - -let animal = { - walk() { - alert("I'm walking"); - } -}; - -let rabbit = { - __proto__: animal, -*!* - walk: function() { // Надо: walk() { - super.walk(); // Будет ошибка! - } -*/!* -}; - -rabbit.walk(); -``` - -Ошибка возникнет, так как `rabbit.walk` теперь обычная функция, и не имеет `[[HomeObject]]`. В ней не работает `super`. - -Исключением из этого правила являются функции-стрелки. В них используется `super` внешней функции. Например, здесь функция-стрелка в `setTimeout` берёт внешний `super`: - - -```js -//+ run -'use strict'; - -let animal = { - walk() { - alert("I'm walking"); - } -}; - -let rabbit = { - __proto__: animal, - walk() { -*!* - setTimeout(() => super.walk()); // I'm walking -*/!* - } -}; - -rabbit.walk(); -``` - -Ранее мы говорили о том, что у функций-стрелок нет своего `this`, `arguments`: они используют те, которые во внешней функции. Теперь к этому списку добавился ещё и `super`. - -[smart header="Свойство `[[HomeObject]]` -- не изменяемое"] - -При создании метода -- он привязан к своему объекту навсегда. Технически можно даже скопировать его и запустить отдельно, и `super` продолжит работать: - -```js -//+ run -'use strict'; - -let animal = { - walk() { alert("I'm walking"); } -}; - -let rabbit = { - __proto__: animal, - walk() { - super.walk(); - } -}; - -let walk = rabbit.walk; // скопируем метод в переменную -*!* -walk(); // вызовет animal.walk() -// I'm walking -*/!* -``` - -В примере выше метод `walk()` запускается отдельно от объекта, но всё равно сохраняется через `super` доступ к его прототипу, благодаря `[[HomeObject]]`. - -Это -- скорее технический момент, так как методы объекта, всё же, предназначены для вызова в контексте этого объекта. В частности, правила для `this` в методах -- те же, что и для обычных функций. В примере выше при вызове `walk()` без объекта `this` будет `undefined`. -[/smart] - -## Итого - -Улучшения в описании свойств: -
      -
    • Запись `name: name` можно заменить на просто `name`
    • -
    • Если имя свойства находится в переменной или задано выражением `expr`, то его можно указать в квадратных скобках `[expr]`.
    • -
    • Свойства-функции можно оформить как методы: `"prop: function() {"` -> `"prop() {"`.
    • -
    - -В методах работает обращение к свойствам прототипа через `super.parentProperty`. - -Для работы с прототипом: -
      -
    • `Object.setPrototypeOf(obj, proto)` -- метод для установки прототипа.
    • -
    • `obj.__proto__` -- ссылка на прототип.
    • -
    - -Дополнительно: -
      -
    • Метод `Object.assign(target, src1, src2...)` -- копирует свойства из всех аргументов в первый объект.
    • -
    • Метод `Object.is(value1, value2)` проверяет два значения на равенство. В отличие от `===` считает `+0` и `-0` разными числами. А также считает, что `NaN` равно самому себе.
    • -
    diff --git a/1-js/10-es-modern/7-es-class/article.md b/1-js/10-es-modern/7-es-class/article.md deleted file mode 100644 index 8ce0f71b..00000000 --- a/1-js/10-es-modern/7-es-class/article.md +++ /dev/null @@ -1,382 +0,0 @@ - -# Классы - -В современном JavaScript появился новый, "более красивый" синтаксис для классов. - -Новая конструкция `class` -- удобный "синтаксический сахар" для задания конструктора вместе с прототипом. - -## Class - -Синтаксис для классов выглядит так: - -```js -class Название [extends Родитель] { - constructor - методы -} -``` - -Например: - -```js -//+ run -'use strict'; - -class User { - - constructor(name) { - this.name = name; - } - - sayHi() { - alert(this.name); - } - -} - -let user = new User("Вася"); -user.sayHi(); // Вася -``` - -Функция `constructor` запускается при создании `new User`, остальные методы -- записываются в `User.prototype`. - -Это объявление примерно аналогично такому: - -```js -function User(name) { - this.name = name; -} - -User.prototype.sayHi = function() { - alert(this.name); -}; -``` - -В обоих случаях `new User` будет создавать объекты. Метод `sayHi` -- также в обоих случаях находится в прототипе. - -Но при объявлении через `class` есть и ряд отличий: - -
      -
    • `User` нельзя вызывать без `new`, будет ошибка.
    • -
    • Объявление класса с точки зрения области видимости ведёт себя как `let`. В частности, оно видно только текущем в блоке и только в коде, который находится ниже объявления (Function Declaration видно и до объявления).
    • -
    - -Методы, объявленные внутри `class`, также имеют ряд особенностей: - -
      -
    • Метод `sayHi` является именно методом, то есть имеет доступ к `super`.
    • -
    • Все методы класса работают в режиме `use strict`, даже если он не указан.
    • -
    • Все методы класса не перечислимы. То есть в цикле `for..in` по объекту их не будет.
    • -
    - -## Class Expression - -Так же, как и Function Expression, классы можно задавать "инлайн", в любом выражении и внутри вызова функции. - -Это называется Class Expression: - -```js -//+ run -'use strict'; - -let User = class { - sayHi() { alert('Привет!'); } -}; - -new User().sayHi(); -``` - -В примере выше у класса нет имени, что один-в-один соответствует синтаксису функций. Но имя можно дать. Тогда оно, как и в Named Function Expression, будет доступно только внутри класса: - - -```js -//+ run -'use strict'; - -let SiteGuest = class User { - sayHi() { alert('Привет!'); } -}; - -new SiteGuest().sayHi(); // Привет -*!* -new User(); // ошибка -*/!* -``` - -В примере выше имя `User` будет доступно только внутри класса и может быть использовано, например для создания новых объектов данного типа. - -Наиболее очевидная область применения этой возможности -- создание вспомогательного класса прямо при вызове функции. - -Например, функция `createModel` в примере ниже создаёт объект по классу и данным, добавляет ему `_id` и пишет в "реестр" `allModels`: - -```js -//+ run -'use strict'; - -let allModels = {}; - -function createModel(Model, ...args) { - let model = new Model(...args); - - model._id = Math.random().toString(36).slice(2); - allModels[model._id] = model; - - return model; -} - -let user = createModel(class User { - constructor(name) { - this.name = name; - } - sayHi() { - alert(this.name); - } -}, "Вася"); - -user.sayHi(); // Вася - -alert( allModels[user._id].name ); // Вася -``` - -## Геттеры, сеттеры и вычисляемые свойства - -В классах, как и в обычных объектах, можно объявлять геттеры и сеттеры через `get/set`, а также использовать `[…]` для свойств с вычисляемыми именами: - -```js -//+ run -'use strict'; - -class User { - constructor(firstName, lastName) { - this.firstName = firstName; - this.lastName = lastName; - } - -*!* - // геттер -*/!* - get fullName() { - return `${this.firstName} ${this.lastName}`; - } - -*!* - // сеттер -*/!* - set fullName(newValue) { - [this.firstName, this.lastName] = newValue.split(' '); - } - -*!* - // вычисляемое название метода -*/!* - ["test".toUpperCase()]: true - -}; - -let user = new User("Вася", "Пупков"); -alert( user.fullName ); // Вася Пупков -user.fullName = "Иван Петров"; -alert( user.fullName ); // Иван Петров -alert( user.TEST ); // true -``` - -При чтении `fullName` будет вызван метод `get fullName()`, при присвоении -- метод `set fullName` с новым значением. - -[warn header="`class` не позволяет задавать свойства-значения"] - -В синтаксисе классов, как мы видели выше, можно создавать методы. Они будут записаны в прототип, как например `User.prototype.sayHi`. - -Однако, нет возможности задать в прототипе обычное значение (не функцию), такое как `User.prototype.key = "value"`. - -Конечно, никто не мешает после объявления класса в прототип дописать подобные свойства, однако предполагается, что в прототипе должны быть только методы. - -Если свойство-значение, всё же, необходимо, то, можно создать геттер, который будет нужное значение возвращать. -[/warn] - - -## Статические свойства - -Класс, как и функция, является объектом. Статические свойства класса `User` -- это свойства непосредственно `User`, то есть доступные из него "через точку". - -Для их объявления используется ключевое слово `static`. - -Например: - -```js -//+ run -'use strict'; - -class User { - constructor(firstName, lastName) { - this.firstName = firstName; - this.lastName = lastName; - } - -*!* - static createGuest() { - return new User("Гость", "Сайта"); - } -*/!* -}; - -let user = User.createGuest(); - -alert( user.firstName ); // Гость - -alert( User.createGuest ); // createGuest ... (функция) -``` - -Как правило, они используются для операций, не требующих наличия объекта, например -- для фабричных, как в примере выше, то есть как альтернативные варианты конструктора. Или же, можно добавить метод `User.compare`, который будет сравнивать двух пользователей для целей сортировки. - -Также статическими удобно делать константы: - -```js -//+ run -'use strict'; - -class Menu { - static get elemClass() { - return "menu" - } -} - -alert( Menu.elemClass ); // menu -``` - -## Наследование - -Синтаксис: -```js -class Child extends Parent { - ... -} -``` - -Посмотрим, как это выглядит на практике. В примере ниже объявлено два класса: `Animal` и наследующий от него `Rabbit`: - -```js -//+ run -'use strict'; - -class Animal { - constructor(name) { - this.name = name; - } - - walk() { - alert("I walk: " + this.name); - } -} - -*!* -class Rabbit extends Animal { -*/!* - walk() { - super.walk(); - alert("...and jump!"); - } -} - -new Rabbit("Вася").walk(); -// I walk: Вася -// and jump! -``` - -Как видим, в `new Rabbit` доступны как свои методы, так и (через `super`) методы родителя. - -Это потому, что при наследовании через `extends` формируется стандартная цепочка прототипов: методы `Rabbit` находятся в `Rabbit.prototype`, методы `Animal` -- в `Animal.prototype`, и они связаны через `__proto__`: - -```js -//+ run -'use strict'; - -class Animal { } -class Rabbit extends Animal { } - -alert( Rabbit.prototype.__proto__ == Animal.prototype ); // true -``` - -Как видно из примера выше, методы родителя (`walk`) можно переопределить в наследнике. При этом для обращения к родительскому методу используют `super.walk()`. - -Немного особая история -- с конструктором. - -Конструктор `constructor` родителя наследуется автоматически. То есть, если в потомке не указан свой `constructor`, то используется родительский. В примере выше `Rabbit`, таким образом, использует `constructor` от `Animal`. - -Если же у потомка свой `constructor`, то чтобы в нём вызвать конструктор родителя -- используется синтаксис `super()` с аргументами для родителя. - -Например, вызовем конструктор `Animal` в `Rabbit`: - -```js -//+ run -'use strict'; - -class Animal { - constructor(name) { - this.name = name; - } - - walk() { - alert("I walk: " + this.name); - } -} - -class Rabbit extends Animal { -*!* - constructor() { - // вызвать конструктор Animal с аргументом "Кроль" - super("Кроль"); // то же, что и Animal.call(this, "Кроль") - } -*/!* -} - -new Rabbit().walk(); // I walk: Кроль -``` - -Для такого вызова есть небольшие ограничения: -
      -
    • Вызвать конструктор родителя можно только изнутри конструктора потомка. В частности, `super()` нельзя вызвать из произвольного метода.
    • -
    • В конструкторе потомка мы обязаны вызвать `super()` до обращения к `this`. До вызова `super` не существует `this`, так как по спецификации в этом случае именно `super` инициализует `this`.
    • -
    - -Второе ограничение выглядит несколько странно, поэтому проиллюстрируем его примером: - -```js -//+ run -'use strict'; - -class Animal { - constructor(name) { - this.name = name; - } -} - -class Rabbit extends Animal { -*!* - constructor() { - alert(this); // ошибка, this не определён! - // обязаны вызвать super() до обращения к this - super(); - // а вот здесь уже можно использовать this - } -*/!* -} - -new Rabbit(); -``` - - -## Итого - -
      -
    • Классы можно объявлять как в основном потоке кода, так и "инлайн", по аналогии с Function Declaration и Expression.
    • -
    • В объявлении классов можно использовать методы, геттеры/сеттеры и вычислимые названия методов.
    • -
    • При наследовании вызов конструктора родителя осуществлятся через `super(...args)`, вызов родительских методов -- через `super.method(...args)`.
    • -
    - -Концепция классов, которая после долгих обсуждений получилась в стандарте EcmaScript, носит название "максимально минимальной". То есть, в неё вошли только те возможности, которые уж точно необходимы. - -В частности, не вошли "приватные" и "защищённые" свойства. То есть, все свойства и методы класса технически доступны снаружи. Возможно, они появятся в будущих редакциях стандарта. - - - - diff --git a/1-js/10-es-modern/8-symbol/article.md b/1-js/10-es-modern/8-symbol/article.md deleted file mode 100644 index 0e89bb9b..00000000 --- a/1-js/10-es-modern/8-symbol/article.md +++ /dev/null @@ -1,210 +0,0 @@ - -# Тип данных Symbol - -Новый примитивный тип данных Symbol служит для создания уникальных идентификаторов. - -Мы вначале рассмотрим объявление и особенности символов, а затем -- их использование. - -## Объявление - -Синтаксис: -```js -let sym = Symbol(); -``` - -Обратим внимание, не `new Symbol`, а просто `Symbol`, так как это -- примитив. - -У символов есть и соответствующий `typeof`: - -```js -//+ run -'use strict'; - -let sym = Symbol(); -alert( typeof sym ); // symbol -``` - - -Каждый символ -- уникален. У функции `Symbol` есть необязательный аргумент "имя символа". Можно его использовать для описания символа, в целях отладки: - -```js -//+ run -'use strict'; - -let sym = Symbol("name"); -alert( sym.toString() ); // Symbol(name) -``` - -...Но при этом если у двух символов одинаковое имя, то это не значит, что они равны: - -```js -//+ run -alert( Symbol("name") == Symbol("name") ); // false -``` - -Если хочется из разных частей программы использовать именно одинаковый символ, то можно передавать между ними объект символа или же -- использовать "глобальные символы" и "реестр глобальных символов", которые мы рассмотрим далее. - -## Глобальные символы - -Существует "глобальный реестр" символов, который позволяет, при необходимости, разделять символы между частями программы. - -Для чтения (или создания, при отсутствии) "глобального" символа служит вызов `Symbol.for(имя)`. - -Например: - -```js -//+ run -'use strict'; - -// создание символа в реестре -let name = Symbol.for("name"); - -// символ уже есть, чтение из реестра -alert( Symbol.for("name") == name ); // true -``` - -Вызов `Symbol.for` возвращает символ по имени. Обратным для него является вызов `Symbol.keyFor(sym)` позволяет получить по глобальному символу его имя: - - -```js -//+ run -'use strict'; - -// создание символа в реестре -let name = Symbol.for("name"); - -// получение имени символа -alert( Symbol.keyFor(name) ); // name -``` -[warn header="`Symbol.keyFor` возвращает `undefined`, если символ не глобальный"] -Заметим, что `Symbol.keyFor` работает *только для глобальных символов*, для остальных будет возвращено `undefined`: - -```js -//+ run -'use strict'; - -alert( Symbol.keyFor(Symbol.for("name")) ); // name, глобальный -alert( Symbol.keyFor(Symbol("name2")) ); // undefined, обычный символ -``` - -Таким образом, имя символа, если этот символ не глобальный, не имеет особого применения, оно полезно лишь в целях вывода и отладки. -[/warn] - -## Использование символов - -Символы можно использовать в качестве имён для свойств объекта, вот так: - -```js -//+ run -'use strict'; - -let isAdmin = Symbol("isAdmin"); - -let user = { - name: "Вася", - [isAdmin]: true -}; - -alert(user[isAdmin]); // true -``` - -Особенность символов -- в том, что если в объект записать свойство-символ, то оно не участвует в итерации: - -```js -//+ run -'use strict'; - -let user = { - name: "Вася", - age: 30, - [Symbol.for("isAdmin")]: true -}; - -// в цикле for..in также не будет символа -alert( Object.keys(user) ); // name, age - -// доступ к свойству через глобальный символ — работает -alert( user[Symbol.for("isAdmin")] ); -``` - -Кроме того, свойство-символ недоступно, если обратиться к его названию: `user.isAdmin` не существует. - -Зачем всё это, почему не просто использовать строки? - -Резонный вопрос. На ум могут прийти соображения производительности, так как символы -- это по сути специальные идентификаторы, они компактнее, чем строка. Но при современных оптимизациях объектов это редко имеет значение. - -Самое широкое применение символов предусмотрено внутри самого стандарта JavaScript. В современном стандарте есть много системных символов. Их список есть в спецификации, в таблице [Well-known Symbols](http://www.ecma-international.org/ecma-262/6.0/index.html#table-1). В спецификации принято символы для краткости обозначать их как '@@имя', например `@@iterator`, но доступны они как свойства `Symbol`. - -Например: -
      -
    • `Symbol.toPrimitive` -- идентификатор для свойства, задающего функцию преобразования объекта в примитив.
    • -
    • `Symbol.iterator` -- идентификатор для свойства, задающего функцию итерации по объекту.
    • -
    • ...и т.п.
    • -
    - -**Мы легко поймём смысл введения нового типа "символ", если поставим себя на место создателей языка JavaScript.** - -Допустим, в новом стандарте нам надо добавить к объекту "особый" функционал, например, функцию, которая задаёт преобразование объекта к примитиву. Как `obj.toString`, но для преобразования в примитивы. - -Мы ведь не можем просто сказать, что "свойство obj.toPrimitive теперь будет задавать преобразование к примитиву и автоматически вызываться в таких-то ситуациях". Это опасно. Мы не можем так просто взять и придать особый смысл свойству. Мало ли, вполне возможно, что свойство с таким именем уже используется в существующем коде, и если сделать его особым, то он сломается. - -Нельзя просто взять и зарезервировать какие-то свойства существующих объектов для нового функционала. - -Поэтому ввели целый тип "символы". Их можно использовать для задания таких свойств, так как они: -
      -
    • а) уникальны,
    • -
    • б) не участвуют в циклах,
    • -
    • в) заведомо не сломают старый код, который о них слыхом не слыхивал.
    • -
    - -Продемонстрируем отсутствие конфликта для нового системного свойства `Symbol.iterator`: - -```js -//+ run -'use strict'; - -let obj = { - iterator: 1, - [Symbol.iterator]() {} -} - -alert(obj.iterator); // 1 -alert(obj[Symbol.iterator]) // function, символ не конфликтует -``` - -Выше мы использовали системный символ `Symbol.iterator`, поскольку он один из самых широко поддерживаемых. Мы подробно разберём его смысл в главе про [итераторы](/iterator), пока же -- это просто пример символа. - -Чтобы получить все символы объекта, есть особый вызов [Object.getOwnPropertySymbols](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols). - -Эта функция возвращает все символы в объекте (и только их). Заметим, что старая функция `getOwnPropertyNames` символы не возвращает, что опять же гарантирует отсутствие конфликтов со старым кодом. - -```js -//+ run -'use strict'; - -let obj = { - iterator: 1, - [Symbol.iterator]: function() {} -} - -// один символ в объекте -alert( Object.getOwnPropertySymbols(obj) ); // Symbol(Symbol.iterator) - -// и одно обычное свойство -alert( Object.getOwnPropertyNames(obj) ); // iterator -``` - -## Итого - -
      -
    • Символы -- новый примитивный тип, предназначенный для уникальных идентификаторов.
    • -
    • Все символы уникальны, символы с одинаковым именем не равны друг другу.
    • -
    • Существует глобальный реестр символов, доступных через метод `Symbol.for(name)`. Для глобального символа можно получить имя вызовом и `Symbol.keyFor(sym)`.
    • -
    - -Основная область использования символов -- это системные свойства объектов, которые задают разные аспекты их поведения. Поддержка у них пока небольшая, но она растёт. Системные символы позволяют разработчикам стандарта добавлять новые "особые" свойства объектов, при этом не резервируя соответствующие строковые значения. - -Системные символы доступны как свойства функции `Symbol`, например `Symbol.iterator`. - -Мы можем создавать и свои символы, использовать их в объектах. Записывать их как свойства `Symbol`, разумеется, нельзя, если нужен глобально доступный символ, то используется `Symbol.for(имя)`. - diff --git a/1-js/10-es-modern/9-iterator/article.md b/1-js/10-es-modern/9-iterator/article.md deleted file mode 100644 index 4d7e50db..00000000 --- a/1-js/10-es-modern/9-iterator/article.md +++ /dev/null @@ -1,230 +0,0 @@ - -# Итераторы - -В современный JavaScript добавлена новая концепция "итерируемых" (iterable) объектов. - -Итерируемые или, иными словами, "перебираемые" объекты -- это те, содержимое которых можно перебрать в цикле. - -Например, перебираемым объектом является массив. Но не только он. В браузере существует множество объектов, которые не являются массивами, но содержимое которых можно перебрать (к примеру, список DOM-узлов). - -Для перебора таких объектов добавлен новый синтаксис цикла: `for..of`. - -Например: - -```js -//+ run -'use strict'; - -let arr = [1, 2, 3]; // массив — пример итерируемого объекта - -for(let value of arr) { - alert(value); // 1, затем 2, затем 3 -} -``` - -Также итерируемой является строка: - -```js -//+ run -'use strict'; - -for(let char of "Привет") { - alert(char); // Выведет по одной букве: П, р, и, в, е, т -} -``` - - -Итераторы -- расширяющая понятие "массив" концепция, которая пронизывает современный стандарт JavaScript сверху донизу. - -Практически везде, где нужен перебор, он осуществляется через итераторы. Это включает в себя не только строки, массивы, но и вызов функции с оператором spread `f(...args)`, и многое другое. - -В отличие от массивов, "перебираемые" объекты могут не иметь "длины" `length`. Как мы увидим далее, итераторы дают возможность сделать "перебираемыми" любые объекты. - -## Свой итератор - -Допустим, у нас есть некий объект, который надо "умным способом" перебрать. - -Например, `range` -- диапазон чисел от `from` до `to`, и мы хотим, чтобы `for(let num of range)` "перебирал", этот объект. При этом под перебором мы подразумеваем перечисление чисел от `from` до `to`. - -Объект `range` без итератора: - -```js -let range = { - from: 1, - to: 5 -}; - -// хотим сделать перебор -// for(let num of range) ... -``` - -Для возможности использовать объект в `for..of` нужно создать в нём свойство с названием `Symbol.iterator` (системный символ). - -При вызове метода `Symbol.iterator` перебираемый объект должен возвращать другой объект ("итератор"), который умеет осуществлять перебор. - -По стандарту у такого объекта должен быть метод `next()`, который при каждом вызове возвращает очередное значение и окончен ли перебор. - -Так это выглядит в коде: - -```js -//+ run -'use strict'; - -let range = { - from: 1, - to: 5 -} - -// сделаем объект range итерируемым -range[Symbol.iterator] = function() { - - let current = this.from; - let last = this.to; - - // метод должен вернуть объект с next() - return { - next() { - if (current <= last) { - return { - done: false, - value: current++ - }; - } else { - return { - done: true - }; - } - } - - } -}; - -for (let num of range) { - alert(num); // 1, затем 2, 3, 4, 5 -} -``` - -Как видно из кода выше, здесь имеет место разделение сущностей: - -
      -
    • Перебираемый объект `range` сам не реализует методы для своего перебора.
    • -
    • Для этого создаётся другой объект, который хранит текущее состояние перебора и возвращает значение. Этот объект называется итератором и возвращается при вызове метода `range[Symbol.iterator]`.
    • -
    • У итератора должен быть метод `next()`, который при каждом вызове возвращает объект со свойствами: -
        -
      • `value` -- очередное значение, -
      • `done` -- равно `false`, если есть ещё значения, и `true` -- в конце.
      • -
      -
    • -
    - -Конструкция `for..of` в начале своего выполнения автоматически вызывает `Symbol.iterator()`, получает итератор и далее вызывает метод `next()` до получения `done: true`. Такова внутренняя механика. Внешний код при переборе через `for..of` видит только значения. - -Такое отделение функционала перебора от самого объекта даёт дополнительную гибкость, например, объект может возвращать разные итераторы в зависимости от своего настроения и времени суток. Однако, бывают ситуации, когда оно не нужно. - -Если функционал по перебору (метод `next`) предоставляется самим объектом, то можно вернуть `this` в качестве итератора: - - -```js -//+ run -'use strict'; - -let range = { - from: 1, - to: 5, - -*!* - [Symbol.iterator]() { - return this; - }, -*/!* - - next() { - if (this.current === undefined) { - // инициализация состояния итерации - this.current = this.from; - } - - if (this.current <= this.to) { - return { - done: false, - value: this.current++ - }; - } else { - // очистка текущей итерации - delete this.current; - return { - done: true - }; - } - } - -}; - -for (let num of range) { - alert(num); // 1, затем 2, 3, 4, 5 -} - -// Произойдёт вызов Math.max(1,2,3,4,5); -alert( Math.max(...range) ); // 5 (*) - -``` - -При таком подходе сам объект и хранит состояние итерации (текущий перебираемый элемент). - -В данном случае это работает, но для большей гибкости и понятности кода рекомендуется, всё же, выделять итератор в отдельный объект со своим состоянием и кодом. - -[smart header="Оператор spread `...` и итераторы"] -В последней строке `(*)` примера выше можно видеть, что итерируемый объект передаётся через spread для `Math.max`. - -При этом `...range` автоматически превращает итерируемый объект в массив. То есть произойдёт цикл `for..of` по `range`, и его результаты будут использованы в качестве списка аргументов. -[/smart] - -[smart header="Бесконечные итераторы"] -Возможны и бесконечные итераторы. Например, пример выше при `range.to = Infinity` будет таковым. Или можно сделать итератор, генерирующий бесконечную последовательность псевдослучайных чисел. Тоже полезно. - -Нет никаких ограничений на `next`, он может возвращать всё новые и новые значения, и это нормально. - -Разумеется, цикл `for..of` по такому итератору тоже будет бесконечным, нужно его прерывать, например, через `break`. -[/smart] - -## Встроенные итераторы - -Встроенные в JavaScript итераторы можно получить и явным образом, без `for..of`, прямым вызовом `Symbol.iterator`. - -Например, этот код получает итератор для строки и вызывает его полностью "вручную": - -```js -//+ run -'use strict'; - -let str = "Hello"; - -// Делает то же, что и -// for(var letter of str) alert(letter); - -let iterator = str[Symbol.iterator](); - -while(true) { - let result = iterator.next(); - if (result.done) break; - alert(result.value); // Выведет все буквы по очереди -} -``` - -То же самое будет работать и для массивов. - -## Итого - -
      -
    • *Итератор* -- объект, предназначенный для перебора другого объекта.
    • -
    • У итератора должен быть метод `next()`, возвращающий `{done: Boolean, value: any}`, где `value` -- очередное значение, а `done: true` в конце.
    • -
    • Метод `Symbol.iterator` предназначен для получения итератора из объекта. Цикл `for..of` делает это автоматически, но можно и вызвать его напрямую.
    • -
    • В современном стандарте есть много мест, где вместо массива используются более абстрактные "итерируемые" (со свойством `Symbol.iterator`) объекты, например оператор spread `...`.
    • -
    • Встроенные объекты, такие как массивы и строки, являются итерируемыми, в соответствии с описанным выше.
    • -
    - - - - - - diff --git a/1-js/10-es-modern/index.md b/1-js/10-es-modern/index.md deleted file mode 100644 index 6a5c7f2f..00000000 --- a/1-js/10-es-modern/index.md +++ /dev/null @@ -1,4 +0,0 @@ -# Современные возможности ES-2015 - -Современный стандарт ES-2015 и его расширения для JavaScript. - diff --git a/1-js/2-first-steps/1-hello-world/1-hello-alert/solution.md b/1-js/2-first-steps/1-hello-world/1-hello-alert/solution.md deleted file mode 100644 index b27e40d9..00000000 --- a/1-js/2-first-steps/1-hello-world/1-hello-alert/solution.md +++ /dev/null @@ -1,22 +0,0 @@ -Код страницы: - -```html - - - - - - - - - - - - - - - -``` - diff --git a/1-js/2-first-steps/1-hello-world/1-hello-alert/solution.view/index.html b/1-js/2-first-steps/1-hello-world/1-hello-alert/solution.view/index.html deleted file mode 100644 index 47bb9ca9..00000000 --- a/1-js/2-first-steps/1-hello-world/1-hello-alert/solution.view/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/2-first-steps/1-hello-world/1-hello-alert/task.md b/1-js/2-first-steps/1-hello-world/1-hello-alert/task.md deleted file mode 100644 index 0f7f9375..00000000 --- a/1-js/2-first-steps/1-hello-world/1-hello-alert/task.md +++ /dev/null @@ -1,9 +0,0 @@ -# Выведите alert - -[importance 5] - -Сделайте страницу, которая выводит "Я - JavaScript!". - -Создайте её на диске, откройте в браузере, убедитесь, что всё работает. - -[demo src="solution"] diff --git a/1-js/2-first-steps/1-hello-world/article.md b/1-js/2-first-steps/1-hello-world/article.md deleted file mode 100644 index 739b103b..00000000 --- a/1-js/2-first-steps/1-hello-world/article.md +++ /dev/null @@ -1,104 +0,0 @@ -# Привет, мир! - -В этой статье мы создадим простой скрипт и посмотрим, как он работает. -[cut] -## Тег SCRIPT - -[smart header="А побыстрее?"] -В том (и только в том!) случае, если читатель нетерпелив и уже разрабатывал на JavaScript или имеет достаточно опыта в другом языке программировании, он может не читать каждую статью этого раздела, а перепрыгнуть сразу к главе [](/javascript-specials). Там будет кратко самое основное. - -Если же у вас есть достаточно времени и желание начать с азов, то читайте дальше :) -[/smart] - -Программы на языке JavaScript можно вставить в любое место HTML при помощи тега `SCRIPT`. Например: - -```html - - - - - - - - - - - -

    Начало документа...

    -*!* - -*/!* - -

    ...Конец документа

    - - - - -``` - -Этот пример использует следующие элементы: - -
    -
    <script> ... </script>
    -
    Тег `script` содержит исполняемый код. Предыдущие стандарты HTML требовали обязательного указания атрибута `type`, но сейчас он уже не нужен. Достаточно просто ` -``` - -Браузер, для которого предназначались такие трюки, очень старый Netscape, давно умер. Поэтому в этих комментариях нет нужды. -
    -
    - -Итак, для вставки скрипта мы просто пишем ` -[/head] \ No newline at end of file diff --git a/1-js/2-first-steps/11-uibasic/1-simple-page/solution.md b/1-js/2-first-steps/11-uibasic/1-simple-page/solution.md deleted file mode 100644 index a70b07e0..00000000 --- a/1-js/2-first-steps/11-uibasic/1-simple-page/solution.md +++ /dev/null @@ -1,30 +0,0 @@ -JS-код: - -```js -//+ demo run -var name = prompt("Ваше имя?", ""); -alert( name ); -``` - -Полная страница: - -```html - - - - - - - - - - - - - - -``` - diff --git a/1-js/2-first-steps/11-uibasic/1-simple-page/task.md b/1-js/2-first-steps/11-uibasic/1-simple-page/task.md deleted file mode 100644 index 6d2ca2e1..00000000 --- a/1-js/2-first-steps/11-uibasic/1-simple-page/task.md +++ /dev/null @@ -1,8 +0,0 @@ -# Простая страница - -[importance 4] - -Создайте страницу, которая спрашивает имя и выводит его. - -[demo /] - diff --git a/1-js/2-first-steps/11-uibasic/article.md b/1-js/2-first-steps/11-uibasic/article.md deleted file mode 100644 index e5c745ce..00000000 --- a/1-js/2-first-steps/11-uibasic/article.md +++ /dev/null @@ -1,111 +0,0 @@ -# Взаимодействие с пользователем: alert, prompt, confirm - - -В этом разделе мы рассмотрим базовые UI операции: `alert`, `prompt` и `confirm`, которые позволяют работать с данными, полученными от пользователя. -[cut] -## alert - -Синтаксис: - -```js -alert(сообщение) -``` - -`alert` выводит на экран окно с сообщением и приостанавливает выполнение скрипта, пока пользователь не нажмёт "ОК". - -```js -//+ run -alert( "Привет" ); -``` - -Окно сообщения, которое выводится, является *модальным окном*. Слово "модальное" означает, что посетитель не может взаимодействовать со страницей, нажимать другие кнопки и т.п., пока не разберётся с окном. В данном случае - пока не нажмёт на "OK". - -## prompt - -Функция prompt принимает два аргумента: - -```js -//+ no-beautify -result = prompt(title, default); -``` - -Она выводит модальное окно с заголовком `title`, полем для ввода текста, заполненным строкой по умолчанию `default` и кнопками OK/CANCEL. - -Пользователь должен либо что-то ввести и нажать OK, либо отменить ввод кликом на CANCEL или нажатием [key Esc] на клавиатуре. - -**Вызов `prompt` возвращает то, что ввёл посетитель -- строку или специальное значение `null`, если ввод отменён.** - -[warn header="Safari 5.1+ не возвращает `null`"] -Единственный браузер, который не возвращает `null` при отмене ввода -- это Safari. При отсутствии ввода он возвращает пустую строку. Предположительно, это ошибка в браузере. - -Если нам важен этот браузер, то пустую строку нужно обрабатывать точно так же, как и `null`, т.е. считать отменой ввода. -[/warn] - -Как и в случае с `alert`, окно `prompt` модальное. - -```js -//+ run -var years = prompt('Сколько вам лет?', 100); - -alert('Вам ' + years + ' лет!') -``` - -[warn header="Всегда указывайте `default`"] -Второй параметр может отсутствовать. Однако при этом IE вставит в диалог значение по умолчанию `"undefined"`. - -Запустите этот код в IE, чтобы понять о чём речь: - -```js -//+ run -var test = prompt("Тест"); -``` - -Поэтому рекомендуется *всегда* указывать второй аргумент: - -```js -//+ run -var test = prompt("Тест", ''); // <-- так лучше -``` - -[/warn] - - -## confirm - -Синтаксис: - -```js -result = confirm(question); -``` - -`confirm` выводит окно с вопросом `question` с двумя кнопками: OK и CANCEL. - -**Результатом будет `true` при нажатии OK и `false` - при CANCEL([key Esc]).** - -Например: - -```js -//+ run -var isAdmin = confirm("Вы - администратор?"); - -alert( isAdmin ); -``` - -## Особенности встроенных функций - -Конкретное место, где выводится модальное окно с вопросом -- обычно это центр браузера, и внешний вид окна выбирает браузер. Разработчик не может на это влиять. - -С одной стороны -- это недостаток, так как нельзя вывести окно в своем, особо красивом, дизайне. - -С другой стороны, преимущество этих функций по сравнению с другими, более сложными методами взаимодействия, которые мы изучим в дальнейшем -- как раз в том, что они очень просты. - -Это самый простой способ вывести сообщение или получить информацию от посетителя. Поэтому их используют в тех случаях, когда простота важна, а всякие "красивости" особой роли не играют. - - -## Резюме - -
      -
    • `alert` выводит сообщение.
    • -
    • `prompt` выводит сообщение и ждёт, пока пользователь введёт текст, а затем возвращает введённое значение или `null`, если ввод отменён (CANCEL/[key Esc]).
    • -
    • `confirm` выводит сообщение и ждёт, пока пользователь нажмёт "OK" или "CANCEL" и возвращает `true/false`.
    • -
    diff --git a/1-js/2-first-steps/12-ifelse/1-if-zero-string/solution.md b/1-js/2-first-steps/12-ifelse/1-if-zero-string/solution.md deleted file mode 100644 index 92098c3e..00000000 --- a/1-js/2-first-steps/12-ifelse/1-if-zero-string/solution.md +++ /dev/null @@ -1,13 +0,0 @@ -**Да, выведется,** т.к. внутри `if` стоит строка `"0"`. - -Любая строка, кроме пустой (а здесь она не пустая), в логическом контексте является `true`. - -Можно запустить и проверить: - -```js -//+ run -if ("0") { - alert( 'Привет' ); -} -``` - diff --git a/1-js/2-first-steps/12-ifelse/1-if-zero-string/task.md b/1-js/2-first-steps/12-ifelse/1-if-zero-string/task.md deleted file mode 100644 index 27ce5aee..00000000 --- a/1-js/2-first-steps/12-ifelse/1-if-zero-string/task.md +++ /dev/null @@ -1,12 +0,0 @@ -# if (строка с нулём) - -[importance 5] - -Выведется ли `alert`? - -```js -if ("0") { - alert( 'Привет' ); -} -``` - diff --git a/1-js/2-first-steps/12-ifelse/2-check-standard/ifelse_task2.png b/1-js/2-first-steps/12-ifelse/2-check-standard/ifelse_task2.png deleted file mode 100644 index a0925072bb719a49fe35fe5174d93289ffdfb1af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7977 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 - - - - - - - - - \ No newline at end of file diff --git a/1-js/2-first-steps/12-ifelse/2-check-standard/solution.md b/1-js/2-first-steps/12-ifelse/2-check-standard/solution.md deleted file mode 100644 index aacb5966..00000000 --- a/1-js/2-first-steps/12-ifelse/2-check-standard/solution.md +++ /dev/null @@ -1,6 +0,0 @@ - - -```html - -``` - diff --git a/1-js/2-first-steps/12-ifelse/2-check-standard/task.md b/1-js/2-first-steps/12-ifelse/2-check-standard/task.md deleted file mode 100644 index f5aa5eb6..00000000 --- a/1-js/2-first-steps/12-ifelse/2-check-standard/task.md +++ /dev/null @@ -1,13 +0,0 @@ -# Проверка стандарта - -[importance 2] - -Используя конструкцию `if..else`, напишите код, который будет спрашивать: "Каково "официальное" название JavaScript?". - -Если посетитель вводит "EcmaScript", то выводить "Верно!", если что-то другое -- выводить "Не знаете? "EcmaScript"!". - -Блок-схема: - - - -[demo src="ifelse_task2"] \ No newline at end of file diff --git a/1-js/2-first-steps/12-ifelse/2-check-standardifelse_task2/index.html b/1-js/2-first-steps/12-ifelse/2-check-standardifelse_task2/index.html deleted file mode 100644 index 392ead19..00000000 --- a/1-js/2-first-steps/12-ifelse/2-check-standardifelse_task2/index.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/1-js/2-first-steps/12-ifelse/3-sign/if_sign/index.html b/1-js/2-first-steps/12-ifelse/3-sign/if_sign/index.html deleted file mode 100644 index 31d37ebc..00000000 --- a/1-js/2-first-steps/12-ifelse/3-sign/if_sign/index.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/2-first-steps/12-ifelse/3-sign/solution.md b/1-js/2-first-steps/12-ifelse/3-sign/solution.md deleted file mode 100644 index df54e347..00000000 --- a/1-js/2-first-steps/12-ifelse/3-sign/solution.md +++ /dev/null @@ -1,15 +0,0 @@ - - -```js -//+ run -var value = prompt('Введите число', 0); - -if (value > 0) { - alert( 1 ); -} else if (value < 0) { - alert( -1 ); -} else { - alert( 0 ); -} -``` - diff --git a/1-js/2-first-steps/12-ifelse/3-sign/task.md b/1-js/2-first-steps/12-ifelse/3-sign/task.md deleted file mode 100644 index 9d24ede9..00000000 --- a/1-js/2-first-steps/12-ifelse/3-sign/task.md +++ /dev/null @@ -1,12 +0,0 @@ -# Получить знак числа - -[importance 2] - -Используя конструкцию `if..else`, напишите код, который получает значение `prompt`, а затем выводит `alert`: -
      -
    • `1`, если значение больше нуля,
    • -
    • `-1`, если значение меньше нуля,
    • -
    • `0`, если значение равно нулю.
    • -
    - -[demo src="if_sign"] \ No newline at end of file diff --git a/1-js/2-first-steps/12-ifelse/4-check-login/ifelse_task.png b/1-js/2-first-steps/12-ifelse/4-check-login/ifelse_task.png deleted file mode 100644 index 56ed3c7cc363792fd2933c76919880402afc9d30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12863 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 diff --git a/1-js/2-first-steps/12-ifelse/4-check-login/solution.md b/1-js/2-first-steps/12-ifelse/4-check-login/solution.md deleted file mode 100644 index edcdbb50..00000000 --- a/1-js/2-first-steps/12-ifelse/4-check-login/solution.md +++ /dev/null @@ -1,33 +0,0 @@ - - -```js -//+ run demo -var userName = prompt('Кто пришёл?', ''); - -if (userName == 'Админ') { - - var pass = prompt('Пароль?', ''); - - if (pass == 'Чёрный Властелин') { - alert( 'Добро пожаловать!' ); - } else if (pass == null) { // (*) - alert( 'Вход отменён' ); - } else { - alert( 'Пароль неверен' ); - } - -} else if (userName == null) { // (**) - alert( 'Вход отменён' ); - -} else { - - alert( 'Я вас не знаю' ); - -} -``` - -Обратите внимание на проверку `if` в строках `(*)` и `(**)`. Везде, кроме Safari, нажатие "Отмена" возвращает `null`, а вот Safari возвращает при отмене пустую строку, поэтому в браузере Safari можно было бы добавить дополнительную проверку на неё. - -Впрочем, такое поведение Safari является некорректным, надеемся, что скоро его исправят. - -Кроме того, обратите внимание на дополнительные вертикальные отступы внутри `if`. Они не обязательны, но полезны для лучшей читаемости кода. \ No newline at end of file diff --git a/1-js/2-first-steps/12-ifelse/4-check-login/task.md b/1-js/2-first-steps/12-ifelse/4-check-login/task.md deleted file mode 100644 index a158cb4b..00000000 --- a/1-js/2-first-steps/12-ifelse/4-check-login/task.md +++ /dev/null @@ -1,17 +0,0 @@ -# Проверка логина - -[importance 3] - -Напишите код, который будет спрашивать логин (`prompt`). - -Если посетитель вводит "Админ", то спрашивать пароль, если нажал отмена (escape) -- выводить "Вход отменён", если вводит что-то другое -- "Я вас не знаю". - -Пароль проверять так. Если введён пароль "Чёрный Властелин", то выводить "Добро пожаловать!", иначе -- "Пароль неверен", при отмене -- "Вход отменён". - -Блок-схема: - - - -Для решения используйте вложенные блоки `if`. Обращайте внимание на стиль и читаемость кода. - -[demo /] \ No newline at end of file diff --git a/1-js/2-first-steps/12-ifelse/5-rewrite-if-question/solution.md b/1-js/2-first-steps/12-ifelse/5-rewrite-if-question/solution.md deleted file mode 100644 index 1799c70b..00000000 --- a/1-js/2-first-steps/12-ifelse/5-rewrite-if-question/solution.md +++ /dev/null @@ -1,6 +0,0 @@ - - -```js -result = (a + b < 4) ? 'Мало' : 'Много'; -``` - diff --git a/1-js/2-first-steps/12-ifelse/5-rewrite-if-question/task.md b/1-js/2-first-steps/12-ifelse/5-rewrite-if-question/task.md deleted file mode 100644 index dc75b1fb..00000000 --- a/1-js/2-first-steps/12-ifelse/5-rewrite-if-question/task.md +++ /dev/null @@ -1,14 +0,0 @@ -# Перепишите 'if' в '?' - -[importance 5] - -Перепишите `if` с использованием оператора `'?'`: - -```js -if (a + b < 4) { - result = 'Мало'; -} else { - result = 'Много'; -} -``` - diff --git a/1-js/2-first-steps/12-ifelse/6-rewrite-if-else-question/solution.md b/1-js/2-first-steps/12-ifelse/6-rewrite-if-else-question/solution.md deleted file mode 100644 index 42b7b628..00000000 --- a/1-js/2-first-steps/12-ifelse/6-rewrite-if-else-question/solution.md +++ /dev/null @@ -1,9 +0,0 @@ - - -```js -var message = (login == 'Вася') ? 'Привет' : - (login == 'Директор') ? 'Здравствуйте' : - (login == '') ? 'Нет логина' : - ''; -``` - diff --git a/1-js/2-first-steps/12-ifelse/6-rewrite-if-else-question/task.md b/1-js/2-first-steps/12-ifelse/6-rewrite-if-else-question/task.md deleted file mode 100644 index b3babf08..00000000 --- a/1-js/2-first-steps/12-ifelse/6-rewrite-if-else-question/task.md +++ /dev/null @@ -1,22 +0,0 @@ -# Перепишите 'if..else' в '?' - -[importance 5] - -Перепишите `if..else` с использованием нескольких операторов `'?'`. - -Для читаемости -- оформляйте код в несколько строк. - -```js -var message; - -if (login == 'Вася') { - message = 'Привет'; -} else if (login == 'Директор') { - message = 'Здравствуйте'; -} else if (login == '') { - message = 'Нет логина'; -} else { - message = ''; -} -``` - diff --git a/1-js/2-first-steps/12-ifelse/article.md b/1-js/2-first-steps/12-ifelse/article.md deleted file mode 100644 index 4b33eb99..00000000 --- a/1-js/2-first-steps/12-ifelse/article.md +++ /dev/null @@ -1,233 +0,0 @@ -# Условные операторы: if, '?' - -Иногда, в зависимости от условия, нужно выполнить различные действия. Для этого используется оператор `if`. -[cut] -Например: - -```js -//+ run -var year = prompt('В каком году появилась спецификация ECMA-262 5.1?', ''); - -if (year != 2011) alert( 'А вот и неправильно!' ); -``` - -## Оператор if - -Оператор `if` ("если") получает условие, в примере выше это `year != 2011`. Он вычисляет его, и если результат -- `true`, то выполняет команду. - -Если нужно выполнить более одной команды -- они оформляются блоком кода в фигурных скобках: - -```js -if (year != 2011) { - alert( 'А вот..' ); - alert( '..и неправильно!' ); -} -``` - -**Рекомендуется использовать фигурные скобки всегда, даже когда команда одна.** - -Это улучшает читаемость кода. - - -## Преобразование к логическому типу - -Оператор `if (...)` вычисляет и преобразует выражение в скобках к логическому типу. - -В логическом контексте: -
      -
    • Число `0`, пустая строка `""`, `null` и `undefined`, а также `NaN` являются `false`,
    • -
    • Остальные значения -- `true`.
    • -
    - -Например, такое условие никогда не выполнится: - -```js -if (0) { // 0 преобразуется к false - ... -} -``` - -...А такое -- выполнится всегда: - -```js -if (1) { // 1 преобразуется к true - ... -} -``` - -Можно и просто передать уже готовое логическое значение, к примеру, заранее вычисленное в переменной: - -```js -var cond = (year != 2011); // true/false - -if (cond) { - ... -} -``` - -## Неверное условие, else - -Необязательный блок `else` ("иначе") выполняется, если условие неверно: - -```js -//+ run -var year = prompt('Введите год появления стандарта ECMA-262 5.1', ''); - -if (year == 2011) { - alert( 'Да вы знаток!' ); -} else { - alert( 'А вот и неправильно!' ); // любое значение, кроме 2011 -} -``` - -## Несколько условий, else if - -Бывает нужно проверить несколько вариантов условия. Для этого используется блок `else if ...`. Например: - -```js -//+ run -var year = prompt('В каком году появилась спецификация ECMA-262 5.1?', ''); - -if (year < 2011) { - alert( 'Это слишком рано..' ); -} else if (year > 2011) { - alert( 'Это поздновато..' ); -} else { - alert( 'Да, точно в этом году!' ); -} -``` - -В примере выше JavaScript сначала проверит первое условие, если оно ложно -- перейдет ко второму -- и так далее, до последнего `else`. - - -## Оператор вопросительный знак '?' -Иногда нужно в зависимости от условия присвоить переменную. Например: - -```js -//+ run no-beautify -var access; -var age = prompt('Сколько вам лет?', ''); - -*!* -if (age > 14) { - access = true; -} else { - access = false; -} -*/!* - -alert(access); -``` - -Оператор вопросительный знак `'?'` позволяет делать это короче и проще. - -Он состоит из трех частей: - -```js -условие ? значение1 : значение2 -``` - -Проверяется условие, затем если оно верно -- возвращается `значение1`, если неверно -- `значение2`, например: - -```js -access = (age > 14) ? true : false; -``` - -Оператор `'?'` выполняется позже большинства других, в частности -- позже сравнений, поэтому скобки можно не ставить: - -```js -access = age > 14 ? true : false; -``` - -...Но когда скобки есть -- код лучше читается. Так что рекомендуется их писать. - -[smart] -В данном случае можно было бы обойтись и без оператора `'?'`, т.к. сравнение само по себе уже возвращает `true/false`: - -```js -access = age > 14; -``` -[/smart] - -[smart header="\"Тернарный оператор\""] -Вопросительный знак -- единственный оператор, у которого есть аж три аргумента, в то время как у обычных операторов их один-два. -Поэтому его называют *"тернарный оператор"*. -[/smart] - - -## Несколько операторов '?' - -Последовательность операторов `'?'` позволяет вернуть значение в зависимости не от одного условия, а от нескольких. - -Например: -```js -//+ run -var age = prompt('возраст?', 18); - -var message = (age < 3) ? 'Здравствуй, малыш!' : - (age < 18) ? 'Привет!' : - (age < 100) ? 'Здравствуйте!' : - 'Какой необычный возраст!'; - -alert( message ); -``` - -Поначалу может быть сложно понять, что происходит. Однако, внимательно приглядевшись, мы замечаем, что это обычная последовательная проверка! - -Вопросительный знак проверяет сначала `age < 3`, если верно -- возвращает `'Здравствуй, малыш!'`, если нет -- идет за двоеточие и проверяет `age < 18`. Если это верно -- возвращает `'Привет!'`, иначе проверка `age < 100` и `'Здравствуйте!'`... И наконец, если ничего из этого не верно, то `'Какой необычный возраст!'`. - -То же самое через `if..else`: - -```js -if (age < 3) { - message = 'Здравствуй, малыш!'; -} else if (a < 18) { - message = 'Привет!'; -} else if (age < 100) { - message = 'Здравствуйте!'; -} else { - message = 'Какой необычный возраст!'; -} -``` - -## Нетрадиционное использование '?' - -Иногда оператор вопросительный знак `'?'` используют как замену `if`: - -```js -//+ run no-beautify -var company = prompt('Какая компания создала JavaScript?', ''); - -*!* -(company == 'Netscape') ? - alert('Да, верно') : alert('Неправильно'); -*/!* -``` - -Работает это так: в зависимости от условия, будет выполнена либо первая, либо вторая часть после `'?'`. - -Результат выполнения не присваивается в переменную, так что пропадёт (впрочем, `alert` ничего не возвращает). - -**Рекомендуется не использовать вопросительный знак таким образом.** - -Несмотря на то, что с виду такая запись короче `if`, она является существенно менее читаемой. - -Вот, для сравнения, то же самое с `if`: - -```js -//+ run no-beautify -var company = prompt('Какая компания создала JavaScript?', ''); - -*!* -if (company == 'Netscape') { - alert('Да, верно'); -} else { - alert('Неправильно'); -} -*/!* -``` - -При чтении кода глаз идёт вертикально и конструкции, занимающие несколько строк, с понятной вложенностью, воспринимаются гораздо легче. Возможно, вы и сами почувствуете, пробежавшись глазами, что синтаксис с `if` более прост и очевиден чем с оператором `'?'`. - -Смысл оператора `'?'` -- вернуть то или иное значение, в зависимости от условия. Пожалуйста, используйте его по назначению, а для выполнения разных веток кода есть `if`. - diff --git a/1-js/2-first-steps/13-logical-ops/1-alert-null-2-undefined/solution.md b/1-js/2-first-steps/13-logical-ops/1-alert-null-2-undefined/solution.md deleted file mode 100644 index 4756a6ce..00000000 --- a/1-js/2-first-steps/13-logical-ops/1-alert-null-2-undefined/solution.md +++ /dev/null @@ -1,7 +0,0 @@ -Ответ: `2`, это первое значение, которое в логическом контексте даст `true`. - -```js -//+ run -alert( null || 2 || undefined ); -``` - diff --git a/1-js/2-first-steps/13-logical-ops/1-alert-null-2-undefined/task.md b/1-js/2-first-steps/13-logical-ops/1-alert-null-2-undefined/task.md deleted file mode 100644 index f6e93650..00000000 --- a/1-js/2-first-steps/13-logical-ops/1-alert-null-2-undefined/task.md +++ /dev/null @@ -1,10 +0,0 @@ -# Что выведет alert (ИЛИ)? - -[importance 5] - -Что выведет код ниже? - -```js -alert( null || 2 || undefined ); -``` - diff --git a/1-js/2-first-steps/13-logical-ops/2-alert-or/solution.md b/1-js/2-first-steps/13-logical-ops/2-alert-or/solution.md deleted file mode 100644 index 30fce045..00000000 --- a/1-js/2-first-steps/13-logical-ops/2-alert-or/solution.md +++ /dev/null @@ -1,15 +0,0 @@ -Ответ: сначала `1`, затем `2`. - -```js -//+ run -alert( alert(1) || 2 || alert(3) ); -``` - -Вызов `alert` не возвращает значения, или, иначе говоря, возвращает `undefined`. - -
      -
    1. Первый оператор ИЛИ `||` выполнит первый `alert(1)`, получит `undefined` и пойдёт дальше, ко второму операнду.
    2. -
    3. Так как второй операнд `2` является истинным, то вычисления завершатся, результатом `undefined || 2` будет `2`, которое будет выведено внешним `alert( .... )`.
    4. -
    - -Второй оператор `||` не будет выполнен, выполнение до `alert(3)` не дойдёт, поэтому `3` выведено не будет. \ No newline at end of file diff --git a/1-js/2-first-steps/13-logical-ops/2-alert-or/task.md b/1-js/2-first-steps/13-logical-ops/2-alert-or/task.md deleted file mode 100644 index 1d4ed593..00000000 --- a/1-js/2-first-steps/13-logical-ops/2-alert-or/task.md +++ /dev/null @@ -1,10 +0,0 @@ -# Что выведет alert (ИЛИ)? - -[importance 3] - -Что выведет код ниже? - -```js -alert( alert(1) || 2 || alert(3) ); -``` - diff --git a/1-js/2-first-steps/13-logical-ops/3-alert-1-null-2/solution.md b/1-js/2-first-steps/13-logical-ops/3-alert-1-null-2/solution.md deleted file mode 100644 index c91e674a..00000000 --- a/1-js/2-first-steps/13-logical-ops/3-alert-1-null-2/solution.md +++ /dev/null @@ -1,7 +0,0 @@ -Ответ: `null`, это первое ложное значение из списка. - -```js -//+ run -alert( 1 && null && 2 ); -``` - diff --git a/1-js/2-first-steps/13-logical-ops/3-alert-1-null-2/task.md b/1-js/2-first-steps/13-logical-ops/3-alert-1-null-2/task.md deleted file mode 100644 index 38fee457..00000000 --- a/1-js/2-first-steps/13-logical-ops/3-alert-1-null-2/task.md +++ /dev/null @@ -1,10 +0,0 @@ -# Что выведет alert (И)? - -[importance 5] - -Что выведет код ниже? - -```js -alert( 1 && null && 2 ); -``` - diff --git a/1-js/2-first-steps/13-logical-ops/4-alert-and/solution.md b/1-js/2-first-steps/13-logical-ops/4-alert-and/solution.md deleted file mode 100644 index 83a88c73..00000000 --- a/1-js/2-first-steps/13-logical-ops/4-alert-and/solution.md +++ /dev/null @@ -1,10 +0,0 @@ -Ответ: `1`, а затем `undefined`. - -```js -//+ run -alert( alert(1) && alert(2) ); -``` - -Вызов `alert` не возвращает значения, или, иначе говоря, возвращает `undefined`. - -Поэтому до правого `alert` дело не дойдёт, вычисления закончатся на левом. \ No newline at end of file diff --git a/1-js/2-first-steps/13-logical-ops/4-alert-and/task.md b/1-js/2-first-steps/13-logical-ops/4-alert-and/task.md deleted file mode 100644 index 2d1594d9..00000000 --- a/1-js/2-first-steps/13-logical-ops/4-alert-and/task.md +++ /dev/null @@ -1,10 +0,0 @@ -# Что выведет alert (И)? - -[importance 3] - -Что выведет код ниже? - -```js -alert( alert(1) && alert(2) ); -``` - diff --git a/1-js/2-first-steps/13-logical-ops/5-alert-and-or/solution.md b/1-js/2-first-steps/13-logical-ops/5-alert-and-or/solution.md deleted file mode 100644 index e02d8e49..00000000 --- a/1-js/2-first-steps/13-logical-ops/5-alert-and-or/solution.md +++ /dev/null @@ -1,16 +0,0 @@ -Ответ: `3`. - -```js -//+ run -alert( null || 2 && 3 || 4 ); -``` - -Приоритет оператора `&&` выше, чем `||`, поэтому он выполнится первым. - -Последовательность вычислений: -``` -null || 2 && 3 || 4 -null || 3 || 4 -3 -``` - diff --git a/1-js/2-first-steps/13-logical-ops/5-alert-and-or/task.md b/1-js/2-first-steps/13-logical-ops/5-alert-and-or/task.md deleted file mode 100644 index 9e367c3b..00000000 --- a/1-js/2-first-steps/13-logical-ops/5-alert-and-or/task.md +++ /dev/null @@ -1,10 +0,0 @@ -# Что выведет этот код? - -[importance 5] - -Что выведет код ниже? - -```js -alert( null || 2 && 3 || 4 ); -``` - diff --git a/1-js/2-first-steps/13-logical-ops/6-check-if-in-range/solution.md b/1-js/2-first-steps/13-logical-ops/6-check-if-in-range/solution.md deleted file mode 100644 index 87c733b2..00000000 --- a/1-js/2-first-steps/13-logical-ops/6-check-if-in-range/solution.md +++ /dev/null @@ -1,6 +0,0 @@ - - -```js -if (age >= 14 && age <= 90) -``` - diff --git a/1-js/2-first-steps/13-logical-ops/6-check-if-in-range/task.md b/1-js/2-first-steps/13-logical-ops/6-check-if-in-range/task.md deleted file mode 100644 index df16ad99..00000000 --- a/1-js/2-first-steps/13-logical-ops/6-check-if-in-range/task.md +++ /dev/null @@ -1,7 +0,0 @@ -# Проверка if внутри диапазона - -[importance 3] - -Напишите условие `if` для проверки того факта, что переменная `age` находится между `14` и `90` включительно. - -"Включительно" означает, что концы промежутка включены, то есть `age` может быть равна `14` или `90`. \ No newline at end of file diff --git a/1-js/2-first-steps/13-logical-ops/7-check-if-out-range/solution.md b/1-js/2-first-steps/13-logical-ops/7-check-if-out-range/solution.md deleted file mode 100644 index 3d2eab1a..00000000 --- a/1-js/2-first-steps/13-logical-ops/7-check-if-out-range/solution.md +++ /dev/null @@ -1,12 +0,0 @@ -Первый вариант: - -```js -if (!(age >= 14 && age <= 90)) -``` - -Второй вариант: - -```js -if (age < 14 || age > 90) -``` - diff --git a/1-js/2-first-steps/13-logical-ops/7-check-if-out-range/task.md b/1-js/2-first-steps/13-logical-ops/7-check-if-out-range/task.md deleted file mode 100644 index 1d833664..00000000 --- a/1-js/2-first-steps/13-logical-ops/7-check-if-out-range/task.md +++ /dev/null @@ -1,7 +0,0 @@ -# Проверка if вне диапазона - -[importance 3] - -Напишите условие `if` для проверки того факта, что `age` НЕ находится между 14 и 90 включительно. - -Сделайте два варианта условия: первый с использованием оператора НЕ `!`, второй - без этого оператора. \ No newline at end of file diff --git a/1-js/2-first-steps/13-logical-ops/8-if-question/solution.md b/1-js/2-first-steps/13-logical-ops/8-if-question/solution.md deleted file mode 100644 index f1b83dab..00000000 --- a/1-js/2-first-steps/13-logical-ops/8-if-question/solution.md +++ /dev/null @@ -1,21 +0,0 @@ -Ответ: первое и третье выполнятся. - -Детали: - -```js -//+ run -// Выполнится -// Результат -1 || 0 = -1, в логическом контексте true -if (-1 || 0) alert( 'первое' ); - -// Не выполнится -// -1 && 0 = 0, в логическом контексте false -if (-1 && 0) alert( 'второе' ); - -// Выполнится -// оператор && имеет больший приоритет, чем || -// так что -1 && 1 выполнится раньше -// вычисления: null || -1 && 1 -> null || 1 -> 1 -if (null || -1 && 1) alert( 'третье' ); -``` - diff --git a/1-js/2-first-steps/13-logical-ops/8-if-question/task.md b/1-js/2-first-steps/13-logical-ops/8-if-question/task.md deleted file mode 100644 index ee7018b6..00000000 --- a/1-js/2-first-steps/13-logical-ops/8-if-question/task.md +++ /dev/null @@ -1,14 +0,0 @@ -# Вопрос про "if" - -[importance 5] - -Какие из этих `if` верны, т.е. выполнятся? - -Какие конкретно значения будут результатами выражений в условиях `if(...)`? - -```js -if (-1 || 0) alert( 'первое' ); -if (-1 && 0) alert( 'второе' ); -if (null || -1 && 1) alert( 'третье' ); -``` - diff --git a/1-js/2-first-steps/13-logical-ops/article.md b/1-js/2-first-steps/13-logical-ops/article.md deleted file mode 100644 index c81990db..00000000 --- a/1-js/2-first-steps/13-logical-ops/article.md +++ /dev/null @@ -1,282 +0,0 @@ -# Логические операторы - -Для операций над логическими значениями в JavaScript есть `||` (ИЛИ), `&&` (И) и `!` (НЕ). - -Хоть они и называются *"логическими"*, но в JavaScript могут применяться к значениям любого типа и возвращают также значения любого типа. -[cut] - -## || (ИЛИ) - -Оператор ИЛИ выглядит как двойной символ вертикальной черты: - -```js -result = a || b; -``` - -Логическое ИЛИ в классическом программировании работает следующим образом: "если *хотя бы один* из аргументов `true`, то возвращает `true`, иначе -- `false`". В JavaScript, как мы увидим далее, это не совсем так, но для начала рассмотрим только логические значения. - -Получается следующая "таблица результатов": - -```js -//+ run -alert( true || true ); // true -alert( false || true ); // true -alert( true || false ); // true -alert( false || false ); // false -``` - -Если значение не логического типа -- то оно к нему приводится в целях вычислений. Например, число `1` будет воспринято как `true`, а `0` -- как `false`: - -```js -//+ run -if (1 || 0) { // сработает как if( true || false ) - alert( 'верно' ); -} -``` - -Обычно оператор ИЛИ используется в `if`, чтобы проверить, выполняется ли хотя бы одно из условий, например: - -```js -//+ run -var hour = 9; - -*!* -if (hour < 10 || hour > 18) { -*/!* - alert( 'Офис до 10 или после 18 закрыт' ); -} -``` - -Можно передать и больше условий: - -```js -//+ run -var hour = 12, - isWeekend = true; - -if (hour < 10 || hour > 18 || isWeekend) { - alert( 'Офис до 10 или после 18 или в выходной закрыт' ); -} -``` - -## Короткий цикл вычислений - - -JavaScript вычисляет несколько ИЛИ слева направо. При этом, чтобы экономить ресурсы, используется так называемый *"короткий цикл вычисления"*. - -Допустим, вычисляются несколько ИЛИ подряд: `a || b || c || ...`. Если первый аргумент -- `true`, то результат заведомо будет `true` (хотя бы одно из значений -- `true`), и остальные значения игнорируются. - -Это особенно заметно, когда выражение, переданное в качестве второго аргумента, имеет *сторонний эффект* -- например, присваивает переменную. - -При запуске примера ниже присвоение `x` не произойдёт: - -```js -//+ run no-beautify -var x; - -*!*true*/!* || (x = 1); - -alert(x); // undefined, x не присвоен -``` - -...А в примере ниже первый аргумент -- `false`, так что ИЛИ попытается вычислить второй, запустив тем самым присваивание: - -```js -//+ run no-beautify -var x; - -*!*false*/!* || (x = 1); - -alert(x); // 1 -``` - -## Значение ИЛИ - -[quote author="Илья Канатов, участник курса JavaScript"] -`||` запинается на "правде",
    -`&&` запинается на "лжи". -[/quote] - -Итак, как мы видим, оператор ИЛИ вычисляет ровно столько значений, сколько необходимо -- до первого `true`. - -При этом оператор ИЛИ возвращает то значение, на котором остановились вычисления. Причём, не преобразованное к логическому типу. - -Например: - -```js -//+ run -alert( 1 || 0 ); // 1 -alert( true || 'неважно что' ); // true - -alert( null || 1 ); // 1 -alert( undefined || 0 ); // 0 -``` - -Это используют, в частности, чтобы выбрать первое "истинное" значение из списка: - -```js -//+ run -var undef; // переменная не присвоена, т.е. равна undefined -var zero = 0; -var emptyStr = ""; -var msg = "Привет!"; - -*!* -var result = undef || zero || emptyStr || msg || 0; -*/!* - -alert( result ); // выведет "Привет!" - первое значение, которое является true -``` - -Если все значения "ложные", то `||` возвратит последнее из них: - -```js -//+ run -alert( undefined || '' || false || 0 ); // 0 -``` - -Итак, оператор `||` вычисляет операнды слева направо до первого "истинного" и возвращает его, а если все ложные -- то последнее значение. - -Иначе можно сказать, что "`||` запинается на правде". - -## && (И) - - -Оператор И пишется как два амперсанда `&&`: - -```js -result = a && b; -``` - -В классическом программировании И возвращает `true`, если оба аргумента истинны, а иначе -- `false`: - -```js -//+ run -alert( true && true ); // true -alert( false && true ); // false -alert( true && false ); // false -alert( false && false ); // false -``` - -Пример c `if`: - -```js -//+ run -var hour = 12, - minute = 30; - -if (hour == 12 && minute == 30) { - alert( 'Время 12:30' ); -} -``` - -Как и в ИЛИ, в И допустимы любые значения: - -```js -//+ run -if (1 && 0) { // вычислится как true && false - alert( 'не сработает, т.к. условие ложно' ); -} -``` - -К И применим тот же принцип "короткого цикла вычислений", но немного по-другому, чем к ИЛИ. - -Если левый аргумент -- `false`, оператор И возвращает его и заканчивает вычисления. Иначе -- вычисляет и возвращает правый аргумент. - -Например: - -```js -//+ run -// Первый аргумент - true, -// Поэтому возвращается второй аргумент -alert( 1 && 0 ); // 0 -alert( 1 && 5 ); // 5 - -// Первый аргумент - false, -// Он и возвращается, а второй аргумент игнорируется -alert( null && 5 ); // null -alert( 0 && "не важно" ); // 0 -``` - -Можно передать и несколько значений подряд, при этом возвратится первое "ложное" (на котором остановились вычисления), а если его нет -- то последнее: - -```js -//+ run -alert( 1 && 2 && null && 3 ); // null - -alert( 1 && 2 && 3 ); // 3 -``` - -Итак, оператор `&&` вычисляет операнды слева направо до первого "ложного" и возвращает его, а если все истинные -- то последнее значение. - -Иначе можно сказать, что "`&&` запинается на лжи". - -[smart header="Приоритет у `&&` больше, чем у `||`"] -Приоритет оператора И `&&` больше, чем ИЛИ `||`, так что он выполняется раньше. - -Поэтому в следующем коде сначала будет вычислено правое И: `1 && 0 = 0`, а уже потом -- ИЛИ. - -```js -//+ run -alert( 5 || 1 && 0 ); // 5 -``` -[/smart] - -[warn header="Не используйте `&&` вместо `if`"] - -Оператор `&&` в простых случаях можно использовать вместо `if`, например: - -```js -//+ run -var x = 1; - -(x > 0) && alert( 'Больше' ); -``` - -Действие в правой части `&&` выполнится только в том случае, если до него дойдут вычисления. То есть, `alert` сработает, если в левой части будет `true`. - -Получился аналог: - -```js -//+ run -var x = 1; - -if (x > 0) { - alert( 'Больше' ); -} -``` - -Однако, как правило, вариант с `if` лучше читается и воспринимается. Он более очевиден, поэтому лучше использовать его. Это, впрочем, относится и к другим неочевидным применениям возможностей языка. -[/warn] - -## ! (НЕ) - -Оператор НЕ -- самый простой. Он получает один аргумент. Синтаксис: - -```js -var result = !value; -``` - -Действия `!`: - -
      -
    1. Сначала приводит аргумент к логическому типу `true/false`.
    2. -
    3. Затем возвращает противоположное значение.
    4. -
    - -Например: - -```js -//+ run -alert( !true ); // false -alert( !0 ); // true -``` - -**В частности, двойное НЕ используют для преобразования значений к логическому типу:** - -```js -//+ run -alert( !!"строка" ); // true -alert( !!null ); // false -``` - diff --git a/1-js/2-first-steps/14-types-conversion/1-primitive-conversions-questions/solution.md b/1-js/2-first-steps/14-types-conversion/1-primitive-conversions-questions/solution.md deleted file mode 100644 index 7a0cbf25..00000000 --- a/1-js/2-first-steps/14-types-conversion/1-primitive-conversions-questions/solution.md +++ /dev/null @@ -1,34 +0,0 @@ - - -```js -//+ no-beautify -"" + 1 + 0 = "10" // (1) -"" - 1 + 0 = -1 // (2) -true + false = 1 -6 / "3" = 2 -"2" * "3" = 6 -4 + 5 + "px" = "9px" -"$" + 4 + 5
 = "$45" -"4" - 2
 = 2 -"4px" - 2
 = NaN -7 / 0
 = Infinity -" -9\n" + 5 = " -9\n5" -" -9\n" - 5 = -14 -5 && 2
 = 2 -2 && 5
 = 5 -5 || 0
 = 5 -0 || 5 = 5 -null + 1 = 1 // (3) -undefined + 1 = NaN // (4) -null == "\n0\n" = false // (5) -+null == +"\n0\n" = true // (6) -``` - -
      -
    1. Оператор `"+"` в данном случае прибавляет `1` как строку, и затем `0`.
    2. -
    3. Оператор `"-"` работает только с числами, так что он сразу приводит `""` к `0`.
    4. -
    5. `null` при численном преобразовании становится `0`
    6. -
    7. `undefined` при численном преобразовании становится `NaN`
    8. -
    9. При сравнении `==` с `null` преобразования не происходит, есть жёсткое правило: `null == undefined` и только.
    10. -
    11. И левая и правая часть `==` преобразуются к числу `0`.
    12. -
    \ No newline at end of file diff --git a/1-js/2-first-steps/14-types-conversion/1-primitive-conversions-questions/task.md b/1-js/2-first-steps/14-types-conversion/1-primitive-conversions-questions/task.md deleted file mode 100644 index 1c2c953f..00000000 --- a/1-js/2-first-steps/14-types-conversion/1-primitive-conversions-questions/task.md +++ /dev/null @@ -1,30 +0,0 @@ -# Вопросник по преобразованиям, для примитивов - -[importance 5] - -Подумайте, какой результат будет у выражений ниже. Тут не только преобразования типов. Когда закончите -- сверьтесь с решением. - -```js -//+ no-beautify -"" + 1 + 0 -"" - 1 + 0 -true + false -6 / "3" -"2" * "3" -4 + 5 + "px" -"$" + 4 + 5
 -"4" - 2
 -"4px" - 2
 -7 / 0
 -" -9\n" + 5 -" -9\n" - 5 -5 && 2
 -2 && 5
 -5 || 0
 -0 || 5 -null + 1 -undefined + 1 -null == "\n0\n" -+null == +"\n0\n" -``` - diff --git a/1-js/2-first-steps/14-types-conversion/article.md b/1-js/2-first-steps/14-types-conversion/article.md deleted file mode 100644 index 3c7d44ab..00000000 --- a/1-js/2-first-steps/14-types-conversion/article.md +++ /dev/null @@ -1,212 +0,0 @@ -# Преобразование типов для примитивов - -Система преобразования типов в JavaScript очень проста, но отличается от других языков. Поэтому она часто служит "камнем преткновения" для приходящих из других языков программистов. -[cut] -Всего есть три преобразования: -
      -
    1. Cтроковое преобразование.
    2. -
    3. Числовое преобразование.
    4. -
    5. Преобразование к логическому значению.
    6. -
    - -**Эта глава описывает преобразование только примитивных значений, объекты разбираются далее.** - - -## Строковое преобразование - -Строковое преобразование происходит, когда требуется представление чего-либо в виде строки. Например, его производит функция `alert`. - -```js -//+ run -var a = true; - -alert( a ); // "true" -``` - -Можно также осуществить преобразование явным вызовом `String(val)`: - -```js -//+ run -alert( String(null) === "null" ); // true -``` - -Как видно из примеров выше, преобразование происходит наиболее очевидным способом, "как есть": `false` становится `"false"`, `null` -- `"null"`, `undefined` -- `"undefined"` и т.п. - -Также для явного преобразования применяется оператор `"+"`, у которого один из аргументов строка. В этом случае он приводит к строке и другой аргумент, например: - -```js -//+ run -alert( true + "test" ); // "truetest" -alert( "123" + undefined ); // "123undefined" -``` - -## Численное преобразование - -Численное преобразование происходит в математических функциях и выражениях, а также при сравнении данных различных типов (кроме сравнений `===`, `!==`). - -Для преобразования к числу в явном виде можно вызвать `Number(val)`, либо, что короче, поставить перед выражением унарный плюс `"+"`: - -```js -var a = +"123"; // 123 -var a = Number("123"); // 123, тот же эффект -``` - - - - - - - - - - - -
    ЗначениеПреобразуется в...
    `undefined``NaN`
    `null``0`
    `true / false``1 / 0`
    СтрокаПробельные символы по краям обрезаются.
    Далее, если остаётся пустая строка, то `0`, иначе из непустой строки "считывается" число, при ошибке результат `NaN`.
    - -Например: - -```js -//+ run -// после обрезания пробельных символов останется "123" -alert( +" \n 123 \n \n" ); // 123 -``` - -Ещё примеры: -
      -
    • Логические значения: - -```js -//+ run -alert( +true ); // 1 -alert( +false ); // 0 -``` - -
    • -
    • Сравнение разных типов -- значит численное преобразование: - -```js -//+ run -alert( "\n0 " == 0 ); // true -``` - -При этом строка `"\n0"` преобразуется к числу, как указано выше: начальные и конечные пробелы обрезаются, получается строка `"0"`, которая равна `0`.
    • - -
    • С логическими значениями: - -```js -//+ run -alert( "\n" == false ); -alert( "1" == true ); -``` - -Здесь сравнение `"=="` снова приводит обе части к числу. В первой строке слева и справа получается `0`, во второй `1`. -
    • -
    - -### Специальные значения - -Посмотрим на поведение специальных значений более внимательно. - -**Интуитивно, значения `null/undefined` ассоциируются с нулём, но при преобразованиях ведут себя иначе.** - -Специальные значения преобразуются к числу так: - - - - -
    ЗначениеПреобразуется в...
    `undefined``NaN`
    `null``0`
    - -Это преобразование осуществляется при арифметических операциях и сравнениях `> >= < <=`, но не при проверке равенства `==`. Алгоритм проверки равенства для этих значений в спецификации прописан отдельно (пункт [11.9.3](http://es5.github.com/x11.html#x11.9.3)). В нём считается, что `null` и `undefined` равны `"=="` между собой, но эти значения не равны никакому другому значению. - -Это ведёт к забавным последствиям. - -Например, `null` не подчиняется законам математики -- он "больше либо равен нулю": `null>=0`, но не больше и не равен: - -```js -//+ run -alert( null >= 0 ); // true, т.к. null преобразуется к 0 -alert( null > 0 ); // false (не больше), т.к. null преобразуется к 0 -alert( null == 0 ); // false (и не равен!), т.к. == рассматривает null особо. -``` - -Значение `undefined` вообще "несравнимо": - -```js -//+ run -alert( undefined > 0 ); // false, т.к. undefined -> NaN -alert( undefined == 0 ); // false, т.к. это undefined (без преобразования) -alert( undefined < 0 ); // false, т.к. undefined -> NaN -``` - -**Для более очевидной работы кода и во избежание ошибок лучше не давать специальным значениям участвовать в сравнениях `> >= < <=`.** - -Используйте в таких случаях переменные-числа или приводите к числу явно. - -## Логическое преобразование - -Преобразование к `true/false` происходит в логическом контексте, таком как `if(value)`, и при применении логических операторов. - -Все значения, которые интуитивно "пусты", становятся `false`. Их несколько: `0`, пустая строка, `null`, `undefined` и `NaN`. - -Остальное, в том числе и любые объекты -- `true`. - -Полная таблица преобразований: - - - - - - - -
    ЗначениеПреобразуется в...
    `undefined`, `null``false`
    ЧислаВсе `true`, кроме `0`, `NaN` -- `false`.
    СтрокиВсе `true`, кроме пустой строки `""` -- `false`
    ОбъектыВсегда `true`
    - -**Для явного преобразования используется двойное логическое отрицание `!!value` или вызов `Boolean(value)`.** - -[warn header="Обратите внимание: строка `\"0\"` становится `true`"] -В отличие от многих языков программирования (например PHP), `"0"` в JavaScript является `true`, как и строка из пробелов: - -```js -//+ run -alert( !!"0" ); // true -alert( !!" " ); // любые непустые строки, даже из пробелов - true! -``` - -[/warn] - - -Логическое преобразование интересно тем, как оно сочетается с численным. - -**Два значения могут быть равны, но одно из них в логическом контексте `true`, другое -- `false`**. - -Например, равенство в следующем примере верно, так как происходит численное преобразование: - -```js -//+ run -alert( 0 == "\n0\n" ); // true -``` - -...А в логическом контексте левая часть даст `false`, правая -- `true`: - -```js -//+ run -if ("\n0\n") { - alert( "true, совсем не как 0!" ); -} -``` - -С точки зрения преобразования типов в JavaScript это совершенно нормально. При равенстве -- численное преобразование, а в `if` -- логическое, только и всего. - -## Итого - -В JavaScript есть три преобразования: - -
      -
    1. Строковое: `String(value)` -- в строковом контексте или при сложении со строкой. Работает очевидным образом.
    2. -
    3. Численное: `Number(value)` -- в численном контексте, включая унарный плюс `+value`. Происходит при сравнении разных типов, кроме строгого равенства.
    4. -
    5. Логическое: `Boolean(value)` -- в логическом контексте, можно также сделать двойным НЕ: `!!value`.
    6. -
    - -Точные таблицы преобразований даны выше в этой главе. - -Особым случаем является проверка равенства с `null` и `undefined`. Они равны друг другу, но не равны чему бы то ни было ещё, этот случай прописан особо в спецификации. - diff --git a/1-js/2-first-steps/15-while-for/1-loop-last-value/solution.md b/1-js/2-first-steps/15-while-for/1-loop-last-value/solution.md deleted file mode 100644 index 15c634c9..00000000 --- a/1-js/2-first-steps/15-while-for/1-loop-last-value/solution.md +++ /dev/null @@ -1,26 +0,0 @@ -Ответ: `1`. - -```js -//+ run -var i = 3; - -while (i) { - alert( i-- ); -} -``` - -Каждое выполнение цикла уменьшает `i`. Проверка `while(i)` даст сигнал "стоп" при `i = 0`. - -Соответственно, шаги цикла: - -```js -var i = 3 -alert( i-- ); // выведет 3, затем уменьшит i до 2 - -alert(i--) // выведет 2, затем уменьшит i до 1 - -alert(i--) // выведет 1, затем уменьшит i до 0 - -// все, проверка while(i) не даст выполняться циклу дальше -``` - diff --git a/1-js/2-first-steps/15-while-for/1-loop-last-value/task.md b/1-js/2-first-steps/15-while-for/1-loop-last-value/task.md deleted file mode 100644 index 25359633..00000000 --- a/1-js/2-first-steps/15-while-for/1-loop-last-value/task.md +++ /dev/null @@ -1,14 +0,0 @@ -# Последнее значение цикла - -[importance 3] - -Какое последнее значение выведет этот код? Почему? - -```js -var i = 3; - -while (i) { - alert( i-- ); -} -``` - diff --git a/1-js/2-first-steps/15-while-for/2-which-value-while/solution.md b/1-js/2-first-steps/15-while-for/2-which-value-while/solution.md deleted file mode 100644 index f7e77582..00000000 --- a/1-js/2-first-steps/15-while-for/2-which-value-while/solution.md +++ /dev/null @@ -1,31 +0,0 @@ -
      -
    1. **От 1 до 4** - -```js -//+ run -var i = 0; -while (++i < 5) alert( i ); -``` - -Первое значение: `i=1`, так как операция `++i` сначала увеличит `i`, а потом уже произойдёт сравнение и выполнение `alert`. - -Далее `2,3,4..` Значения выводятся одно за другим. Для каждого значения сначала происходит увеличение, а потом -- сравнение, так как `++` стоит перед переменной. - -При `i=4` произойдет увеличение `i` до `5`, а потом сравнение `while(5 < 5)` -- это неверно. Поэтому на этом цикл остановится, и значение `5` выведено не будет. -
    2. -
    3. **От 1 до 5** - -```js -//+ run -var i = 0; -while (i++ < 5) alert( i ); -``` - -Первое значение: `i=1`. Остановимся на нём подробнее. Оператор `i++` увеличивает `i`, возвращая старое значение, так что в сравнении `i++ < 5` будет участвовать старое `i=0`. - -Но последующий вызов `alert` уже не относится к этому выражению, так что получит новый `i=1`. - -Далее `2,3,4..` Для каждого значения сначала происходит сравнение, а потом -- увеличение, и затем срабатывание `alert`. - -Окончание цикла: при `i=4` произойдет сравнение `while(4 < 5)` -- верно, после этого сработает `i++`, увеличив `i` до `5`, так что значение `5` будет выведено. Оно станет последним.
    4. -
    \ No newline at end of file diff --git a/1-js/2-first-steps/15-while-for/2-which-value-while/task.md b/1-js/2-first-steps/15-while-for/2-which-value-while/task.md deleted file mode 100644 index 674f005b..00000000 --- a/1-js/2-first-steps/15-while-for/2-which-value-while/task.md +++ /dev/null @@ -1,23 +0,0 @@ -# Какие значения i выведет цикл while? - -[importance 4] - -Для каждого цикла запишите, какие значения он выведет. Потом сравните с ответом. -
      -
    1. Префиксный вариант - -```js -var i = 0; -while (++i < 5) alert( i ); -``` - -
    2. -
    3. Постфиксный вариант - -```js -var i = 0; -while (i++ < 5) alert( i ); -``` - -
    4. -
    \ No newline at end of file diff --git a/1-js/2-first-steps/15-while-for/3-which-value-for/solution.md b/1-js/2-first-steps/15-while-for/3-which-value-for/solution.md deleted file mode 100644 index 941a07be..00000000 --- a/1-js/2-first-steps/15-while-for/3-which-value-for/solution.md +++ /dev/null @@ -1,17 +0,0 @@ -**Ответ: от 0 до 4 в обоих случаях.** - -```js -//+ run -for (var i = 0; i < 5; ++i) alert( i ); - -for (var i = 0; i < 5; i++) alert( i ); -``` - -Такой результат обусловлен алгоритмом работы `for`: -
      -
    1. Выполнить присвоение `i=0`
    2. -
    3. Проверить `i<5`
    4. -
    5. Если верно - выполнить тело цикла `alert(i)`, затем выполнить `i++`
    6. -
    - -Увеличение `i++` выполняется отдельно от проверки условия (2), значение `i` при этом не используется, поэтому нет никакой разницы между `i++` и `++i`. \ No newline at end of file diff --git a/1-js/2-first-steps/15-while-for/3-which-value-for/task.md b/1-js/2-first-steps/15-while-for/3-which-value-for/task.md deleted file mode 100644 index e918c89c..00000000 --- a/1-js/2-first-steps/15-while-for/3-which-value-for/task.md +++ /dev/null @@ -1,21 +0,0 @@ -# Какие значения i выведет цикл for? - -[importance 4] - -Для каждого цикла запишите, какие значения он выведет. Потом сравните с ответом. -
      -
    1. Постфиксная форма: - -```js -for (var i = 0; i < 5; i++) alert( i ); -``` - -
    2. -
    3. Префиксная форма: - -```js -for (var i = 0; i < 5; ++i) alert( i ); -``` - -
    4. -
    \ No newline at end of file diff --git a/1-js/2-first-steps/15-while-for/4-for-even/solution.md b/1-js/2-first-steps/15-while-for/4-for-even/solution.md deleted file mode 100644 index 62ca05c7..00000000 --- a/1-js/2-first-steps/15-while-for/4-for-even/solution.md +++ /dev/null @@ -1,12 +0,0 @@ - - -```js -//+ run demo -for (var i = 2; i <= 10; i++) { - if (i % 2 == 0) { - alert( i ); - } -} -``` - -Чётность проверяется по остатку при делении на `2`, используя оператор "деление с остатком" `%`: `i % 2`. \ No newline at end of file diff --git a/1-js/2-first-steps/15-while-for/4-for-even/task.md b/1-js/2-first-steps/15-while-for/4-for-even/task.md deleted file mode 100644 index d20029d0..00000000 --- a/1-js/2-first-steps/15-while-for/4-for-even/task.md +++ /dev/null @@ -1,7 +0,0 @@ -# Выведите чётные числа - -[importance 5] - -При помощи цикла `for` выведите чётные числа от `2` до `10`. - -[demo /] \ No newline at end of file diff --git a/1-js/2-first-steps/15-while-for/5-replace-for-while/solution.md b/1-js/2-first-steps/15-while-for/5-replace-for-while/solution.md deleted file mode 100644 index 84915ab4..00000000 --- a/1-js/2-first-steps/15-while-for/5-replace-for-while/solution.md +++ /dev/null @@ -1,11 +0,0 @@ - - -```js -//+ run -var i = 0; -while (i < 3) { - alert( "номер " + i + "!" ); - i++; -} -``` - diff --git a/1-js/2-first-steps/15-while-for/5-replace-for-while/task.md b/1-js/2-first-steps/15-while-for/5-replace-for-while/task.md deleted file mode 100644 index 2da6d6f2..00000000 --- a/1-js/2-first-steps/15-while-for/5-replace-for-while/task.md +++ /dev/null @@ -1,13 +0,0 @@ -# Замените for на while - -[importance 5] - -Перепишите код, заменив цикл `for` на `while`, без изменения поведения цикла. - -```js -//+ run -for (var i = 0; i < 3; i++) { - alert( "номер " + i + "!" ); -} -``` - diff --git a/1-js/2-first-steps/15-while-for/6-repeat-until-correct/solution.md b/1-js/2-first-steps/15-while-for/6-repeat-until-correct/solution.md deleted file mode 100644 index 49d5396e..00000000 --- a/1-js/2-first-steps/15-while-for/6-repeat-until-correct/solution.md +++ /dev/null @@ -1,18 +0,0 @@ - - -```js -//+ run demo -var num; - -do { - num = prompt("Введите число больше 100?", 0); -} while (num <= 100 && num != null); -``` - -Цикл `do..while` повторяется, пока верны две проверки: -
      -
    1. Проверка `num <= 100` -- то есть, введённое число всё еще меньше `100`.
    2. -
    3. Проверка `num != null` -- значение `null` означает, что посетитель нажал "Отмена", в этом случае цикл тоже нужно прекратить.
    4. -
    - -Кстати, сравнение `num <= 100` при вводе `null` даст `true`, так что вторая проверка необходима. \ No newline at end of file diff --git a/1-js/2-first-steps/15-while-for/6-repeat-until-correct/task.md b/1-js/2-first-steps/15-while-for/6-repeat-until-correct/task.md deleted file mode 100644 index 4c2fbedc..00000000 --- a/1-js/2-first-steps/15-while-for/6-repeat-until-correct/task.md +++ /dev/null @@ -1,11 +0,0 @@ -# Повторять цикл, пока ввод неверен - -[importance 5] - -Напишите цикл, который предлагает `prompt` ввести число, большее `100`. Если посетитель ввёл другое число -- попросить ввести ещё раз, и так далее. - -Цикл должен спрашивать число пока либо посетитель не введёт число, большее `100`, либо не нажмёт кнопку Cancel (ESC). - -Предполагается, что посетитель вводит только числа. Предусматривать обработку нечисловых строк в этой задаче необязательно. - -[demo /] diff --git a/1-js/2-first-steps/15-while-for/7-list-primes/solution.md b/1-js/2-first-steps/15-while-for/7-list-primes/solution.md deleted file mode 100644 index eead33a3..00000000 --- a/1-js/2-first-steps/15-while-for/7-list-primes/solution.md +++ /dev/null @@ -1,28 +0,0 @@ -# Схема решения - -```js -Для всех i от 1 до 10 { - проверить, делится ли число i на какое - либо из чисел до него - если делится, то это i не подходит, берем следующее - если не делится, то i - простое число -} -``` - -# Решение - -Решение с использованием метки: - -```js -//+ run -nextPrime: - for (var i = 2; i < 10; i++) { - - for (var j = 2; j < i; j++) { - if (i % j == 0) continue nextPrime; - } - - alert( i ); // простое - } -``` - -Конечно же, его можно оптимизировать с точки зрения производительности. Например, проверять все `j` не от `2` до `i`, а от `2` до квадратного корня из `i`. А для очень больших чисел -- существуют более эффективные специализированные алгоритмы проверки простоты числа, например [квадратичное решето](http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%B8%D1%87%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D1%82%D0%B0) и [решето числового поля](http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%89%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4_%D1%80%D0%B5%D1%88%D0%B5%D1%82%D0%B0_%D1%87%D0%B8%D1%81%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%BF%D0%BE%D0%BB%D1%8F). \ No newline at end of file diff --git a/1-js/2-first-steps/15-while-for/7-list-primes/task.md b/1-js/2-first-steps/15-while-for/7-list-primes/task.md deleted file mode 100644 index 51f8c29f..00000000 --- a/1-js/2-first-steps/15-while-for/7-list-primes/task.md +++ /dev/null @@ -1,12 +0,0 @@ -# Вывести простые числа - -[importance 3] - -Натуральное число, большее 1, называется *простым*, если оно ни на что не делится, кроме себя и `1`. - -Другими словами, n>1 - простое, если при делении на любое число от `2` до `n-1` есть остаток. - -**Создайте код, который выводит все простые числа из интервала от `2` до `10`.** Результат должен быть: `2,3,5,7`. - -P.S. Код также должен легко модифицироваться для любых других интервалов. - diff --git a/1-js/2-first-steps/15-while-for/article.md b/1-js/2-first-steps/15-while-for/article.md deleted file mode 100644 index 71991707..00000000 --- a/1-js/2-first-steps/15-while-for/article.md +++ /dev/null @@ -1,349 +0,0 @@ -# Циклы while, for - -При написании скриптов зачастую встает задача сделать однотипное действие много раз. - -Например, вывести товары из списка один за другим. Или просто перебрать все числа от 1 до 10 и для каждого выполнить одинаковый код. - -Для многократного повторения одного участка кода - предусмотрены *циклы*. -[cut] -## Цикл while - -Цикл `while` имеет вид: - -```js -while (условие) { - // код, тело цикла -} -``` - -Пока `условие` верно -- выполняется код из тела цикла. - -Например, цикл ниже выводит `i` пока `i < 3`: - -```js -//+ run -var i = 0; -while (i < 3) { - alert( i ); - i++; -} -``` - -**Повторение цикла по-научному называется *"итерация"*. Цикл в примере выше совершает три итерации.** - -Если бы `i++` в коде выше не было, то цикл выполнялся бы (в теории) вечно. На практике, браузер выведет сообщение о "зависшем" скрипте и посетитель его остановит. - -**Бесконечный цикл** можно сделать и проще: - -```js -while (true) { - // ... -} -``` - -**Условие в скобках интерпретируется как логическое значение, поэтому вместо `while (i!=0)` обычно пишут `while (i)`**: - -```js -//+ run -var i = 3; -*!* -while (i) { // при i, равном 0, значение в скобках будет false и цикл остановится -*/!* - alert( i ); - i--; -} -``` - -## Цикл do..while - -Проверку условия можно поставить *под* телом цикла, используя специальный синтаксис `do..while`: - -```js -do { - // тело цикла -} while (условие); -``` - -Цикл, описанный, таким образом, сначала выполняет тело, а затем проверяет условие. - -Например: - -```js -//+ run -var i = 0; -do { - alert( i ); - i++; -} while (i < 3); -``` - -Синтаксис `do..while` редко используется, т.к. обычный `while` нагляднее -- в нём не приходится искать глазами условие и ломать голову, почему оно проверяется именно в конце. - - -## Цикл for - -Чаще всего применяется цикл `for`. Выглядит он так: - -```js -for (начало; условие; шаг) { - // ... тело цикла ... -} -``` - -Пример цикла, который выполняет `alert(i)` для `i` от `0` до `2` включительно (до `3`): - -```js -//+ run -var i; - -for (i = 0; i < 3; i++) { - alert( i ); -} -``` - -Здесь: -
      -
    • **Начало:** `i=0`.
    • -
    • **Условие:** `i<3`.
    • -
    • **Шаг:** `i++`.
    • -
    • **Тело:** `alert(i)`, т.е. код внутри фигурных скобок (они не обязательны, если только одна операция)
    • -
    - -Цикл выполняется так: - -
      -
    1. Начало: `i=0` выполняется один-единственный раз, при заходе в цикл.
    2. -
    3. Условие: `i<3` проверяется перед каждой итерацией и при входе в цикл, если оно нарушено, то происходит выход.
    4. -
    5. Тело: `alert(i)`.
    6. -
    7. Шаг: `i++` выполняется после *тела* на каждой итерации, но перед проверкой условия.
    8. -
    9. Идти на шаг 2.
    10. -
    - -Иными словами, поток выполнения: `начало` -> (если `условие` -> `тело` -> `шаг`) -> (если `условие` -> `тело` -> `шаг`) -> ... и так далее, пока верно `условие`. - -[smart] -В цикле также можно определить переменную: - -```js -//+ run no-beautify -for (*!*var*/!* i = 0; i < 3; i++) { - alert(i); // 0, 1, 2 -} -``` - -Эта переменная будет видна и за границами цикла, в частности, после окончания цикла `i` станет равно `3`. -[/smart] - -## Пропуск частей for - -Любая часть `for` может быть пропущена. - -Например, можно убрать `начало`. Цикл в примере ниже полностью идентичен приведённому выше: - -```js -//+ run -var i = 0; - -for (; i < 3; i++) { - alert( i ); // 0, 1, 2 -} -``` - -Можно убрать и `шаг`: - -```js -//+ run -var i = 0; - -for (; i < 3;) { - alert( i ); - // цикл превратился в аналог while (i<3) -} -``` - -А можно и вообще убрать всё, получив бесконечный цикл: - -```js -for (;;) { - // будет выполняться вечно -} -``` - -При этом сами точки с запятой `;` обязательно должны присутствовать, иначе будет ошибка синтаксиса. - -[smart header="`for..in`"] -Существует также специальная конструкция `for..in` для перебора свойств объекта. - -Мы познакомимся с ней позже, когда будем [говорить об объектах](#for..in). -[/smart] - - -## Прерывание цикла: break - -Выйти из цикла можно не только при проверке условия но и, вообще, в любой момент. Эту возможность обеспечивает директива `break`. - -Например, следующий код подсчитывает сумму вводимых чисел до тех пор, пока посетитель их вводит, а затем -- выдаёт: - -```js -var sum = 0; - -while (true) { - - var value = +prompt("Введите число", ''); - -*!* - if (!value) break; // (*) -*/!* - - sum += value; - -} -alert( 'Сумма: ' + sum ); -``` - -Директива `break` в строке `(*)`, если посетитель ничего не ввёл, полностью прекращает выполнение цикла и передаёт управление на строку за его телом, то есть на `alert`. - -Вообще, сочетание "бесконечный цикл + break" -- отличная штука для тех ситуаций, когда условие, по которому нужно прерваться, находится не в начале-конце цикла, а посередине. - -## Следующая итерация: continue [#continue] - -Директива `continue` прекращает выполнение *текущей итерации* цикла. - -Она -- в некотором роде "младшая сестра" директивы `break`: прерывает не весь цикл, а только текущее выполнение его тела, как будто оно закончилось. - -Её используют, если понятно, что на текущем повторе цикла делать больше нечего. - -Например, цикл ниже использует `continue`, чтобы не выводить чётные значения: - -```js -//+ run no-beautify -for (var i = 0; i < 10; i++) { - - *!*if (i % 2 == 0) continue;*/!* - - alert(i); -} -``` - -Для чётных `i` срабатывает `continue`, выполнение тела прекращается и управление передаётся на следующий проход `for`. - -[smart header="Директива `continue` позволяет обойтись без скобок"] - -Цикл, который обрабатывает только нечётные значения, мог бы выглядеть так: - -```js -for (var i = 0; i < 10; i++) { - - if (i % 2) { - alert( i ); - } - -} -``` - -С технической точки зрения он полностью идентичен. Действительно, вместо `continue` можно просто завернуть действия в блок `if`. Однако, мы получили дополнительный уровень вложенности фигурных скобок. Если код внутри `if` более длинный, то это ухудшает читаемость, в отличие от варианта с `continue`. -[/smart] - -[warn header="Нельзя использовать break/continue справа от оператора '?'"] -Обычно мы можем заменить `if` на оператор вопросительный знак `'?'`. - -То есть, запись: - -```js -if (условие) { - a(); -} else { - b(); -} -``` - -...Аналогична записи: - -```js -условие ? a() : b(); -``` - -В обоих случаях в зависимости от условия выполняется либо `a()` либо `b()`. - -Но разница состоит в том, что оператор вопросительный знак `'?'`, использованный во второй записи, возвращает значение. - -**Синтаксические конструкции, которые не возвращают значений, нельзя использовать в операторе `'?'`.** - -К таким относятся большинство конструкций и, в частности, `break/continue`. - -Поэтому такой код приведёт к ошибке: - -```js -//+ no-beautify -(i > 5) ? alert(i) : *!*continue*/!*; -``` - -Впрочем, как уже говорилось ранее, оператор вопросительный знак `'?'` не стоит использовать таким образом. Это -- всего лишь ещё одна причина, почему для проверки условия предпочтителен `if`. -[/warn] - -## Метки для break/continue - -Бывает нужно выйти одновременно из нескольких уровней цикла. - -Например, внутри цикла по `i` находится цикл по `j`, и при выполнении некоторого условия мы бы хотели выйти из обоих циклов сразу: - -```js -//+ run no-beautify -*!*outer:*/!* for (var i = 0; i < 3; i++) { - - for (var j = 0; j < 3; j++) { - - var input = prompt('Значение в координатах '+i+','+j, ''); - - // если отмена ввода или пустая строка - - // завершить оба цикла - if (!input) *!*break outer*/!*; // (*) - - } -} -alert('Готово!'); -``` - -В коде выше для этого использована *метка*. - -Метка имеет вид `"имя:"`, имя должно быть уникальным. Она ставится перед циклом, вот так: - -```js -//+ no-beautify -outer: for (var i = 0; i < 3; i++) { ... } -``` - -Можно также выносить её на отдельную строку: - -```js -//+ no-beautify -outer: -for (var i = 0; i < 3; i++) { ... } -``` - -Вызов `break outer` ищет ближайший внешний цикл с такой меткой и переходит в его конец. - -В примере выше это означает, что будет разорван самый внешний цикл и управление перейдёт на `alert`. - -Директива `continue` также может быть использована с меткой, в этом случае управление перепрыгнет на следующую итерацию цикла с меткой. - -## Итого - -JavaScript поддерживает три вида циклов: -
      -
    • `while` -- проверка условия перед каждым выполнением.
    • -
    • `do..while` -- проверка условия после каждого выполнения.
    • -
    • `for` -- проверка условия перед каждым выполнением, а также дополнительные настройки.
    • -
    - -Чтобы организовать бесконечный цикл, используют конструкцию `while(true)`. При этом он, как и любой другой цикл, может быть прерван директивой `break`. - -Если на данной итерации цикла делать больше ничего не надо, но полностью прекращать цикл не следует -- используют директиву `continue`. - -Обе этих директивы поддерживают "метки", которые ставятся перед циклом. Метки -- единственный способ для `break/continue` повлиять на выполнение внешнего цикла. - -Заметим, что метки не позволяют прыгнуть в произвольное место кода, в JavaScript нет такой возможности. - - - - diff --git a/1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/solution.md b/1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/solution.md deleted file mode 100644 index 1605333f..00000000 --- a/1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/solution.md +++ /dev/null @@ -1,21 +0,0 @@ -Если совсем точно следовать условию, то сравнение должно быть строгим `'==='`. - -В реальном случае, скорее всего, подойдёт обычное сравнение `'=='`. - -```js -//+ no-beautify -if(browser == 'IE') { - alert('О, да у вас IE!'); -} else if (browser == 'Chrome' - || browser == 'Firefox' - || browser == 'Safari' - || browser == 'Opera') { - alert('Да, и эти браузеры мы поддерживаем'); -} else { - alert('Мы надеемся, что и в вашем браузере все ок!'); -} -``` - -Обратите внимание: конструкция `browser == 'Chrome' || browser == 'Firefox' ...` разбита на несколько строк для лучшей читаемости. - -Но всё равно запись через `switch` нагляднее. \ No newline at end of file diff --git a/1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/task.md b/1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/task.md deleted file mode 100644 index 15bf197e..00000000 --- a/1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/task.md +++ /dev/null @@ -1,24 +0,0 @@ -# Напишите "if", аналогичный "switch" - -[importance 5] - -Напишите `if..else`, соответствующий следующему `switch`: - -```js -switch (browser) { - case 'IE': - alert( 'О, да у вас IE!' ); - break; - - case 'Chrome': - case 'Firefox': - case 'Safari': - case 'Opera': - alert( 'Да, и эти браузеры мы поддерживаем' ); - break; - - default: - alert( 'Мы надеемся, что и в вашем браузере все ок!' ); -} -``` - diff --git a/1-js/2-first-steps/16-switch/2-rewrite-if-switch/solution.md b/1-js/2-first-steps/16-switch/2-rewrite-if-switch/solution.md deleted file mode 100644 index ab738f53..00000000 --- a/1-js/2-first-steps/16-switch/2-rewrite-if-switch/solution.md +++ /dev/null @@ -1,27 +0,0 @@ -Первые две проверки -- обычный `case`, третья разделена на два `case`: - -```js -//+ run -var a = +prompt('a?', ''); - -switch (a) { - case 0: - alert( 0 ); - break; - - case 1: - alert( 1 ); - break; - - case 2: - case 3: - alert( '2,3' ); -*!* - break; -*/!* -} -``` - -Обратите внимание: `break` внизу не обязателен, но ставится по "правилам хорошего тона". - -Допустим, он не стоит. Есть шанс, что в будущем нам понадобится добавить в конец ещё один `case`, например `case 4`, и мы, вполне вероятно, забудем этот `break` поставить. В результате выполнение `case 2`/`case 3` продолжится на `case 4` и будет ошибка. diff --git a/1-js/2-first-steps/16-switch/2-rewrite-if-switch/task.md b/1-js/2-first-steps/16-switch/2-rewrite-if-switch/task.md deleted file mode 100644 index a542c993..00000000 --- a/1-js/2-first-steps/16-switch/2-rewrite-if-switch/task.md +++ /dev/null @@ -1,22 +0,0 @@ -# Переписать if'ы в switch - -[importance 4] - -Перепишите код с использованием одной конструкции `switch`: - -```js -//+ run -var a = +prompt('a?', ''); - -if (a == 0) { - alert( 0 ); -} -if (a == 1) { - alert( 1 ); -} - -if (a == 2 || a == 3) { - alert( '2,3' ); -} -``` - diff --git a/1-js/2-first-steps/16-switch/article.md b/1-js/2-first-steps/16-switch/article.md deleted file mode 100644 index 9a1f8fff..00000000 --- a/1-js/2-first-steps/16-switch/article.md +++ /dev/null @@ -1,186 +0,0 @@ -# Конструкция switch - -Конструкция `switch` заменяет собой сразу несколько `if`. - -Она представляет собой более наглядный способ сравнить выражение сразу с несколькими вариантами. -[cut] -## Синтаксис - -Выглядит она так: - -```js -//+ no-beautify -switch(x) { - case 'value1': // if (x === 'value1') - ... - [break] - - case 'value2': // if (x === 'value2') - ... - [break] - - default: - ... - [break] -} -``` - -
      -
    • -Переменная `x` проверяется на строгое равенство первому значению `value1`, затем второму `value2` и так далее. -
    • -
    • -Если соответствие установлено -- switch начинает выполняться от соответствующей директивы `case` и далее, *до ближайшего `break`* (или до конца `switch`). -
    • -
    • -Если ни один `case` не совпал -- выполняетcя (если есть) вариант `default`. -
    • -
    - -При этом `case` называют *вариантами `switch`*. - -## Пример работы - -Пример использования `switch` (сработавший код выделен): - -```js -//+ run -var a = 2 + 2; - -switch (a) { - case 3: - alert( 'Маловато' ); - break; -*!* - case 4: - alert( 'В точку!' ); - break; -*/!* - case 5: - alert( 'Перебор' ); - break; - default: - alert( 'Я таких значений не знаю' ); -} -``` - -Здесь оператор `switch` последовательно сравнит `a` со всеми вариантами из `case`. - -Сначала `3`, затем -- так как нет совпадения -- `4`. Совпадение найдено, будет выполнен этот вариант, со строки `alert('В точку!')` и далее, до ближайшего `break`, который прервёт выполнение. - -**Если `break` нет, то выполнение пойдёт ниже по следующим `case`, при этом остальные проверки игнорируются.** - -Пример без `break`: - -```js -//+ run -var a = 2 + 2; - -switch (a) { - case 3: - alert( 'Маловато' ); -*!* - case 4: - alert( 'В точку!' ); - case 5: - alert( 'Перебор' ); - default: - alert( 'Я таких значений не знаю' ); -*/!* -} -``` - -В примере выше последовательно выполнятся три `alert`: - -```js -alert( 'В точку!' ); -alert( 'Перебор' ); -alert( 'Я таких значений не знаю' ); -``` - -В `case` могут быть любые выражения, в том числе включающие в себя переменные и функции. - -Например: - -```js -//+ run -var a = 1; -var b = 0; - -switch (a) { -*!* - case b + 1: - alert( 1 ); - break; -*/!* - - default: - alert('нет-нет, выполнится вариант выше') -} -``` - -## Группировка case - -Несколько значений case можно группировать. - -В примере ниже `case 3` и `case 5` выполняют один и тот же код: - -```js -//+ run no-beautify -var a = 2+2; - -switch (a) { - case 4: - alert('Верно!'); - break; - -*!* - case 3: // (*) - case 5: // (**) - alert('Неверно!'); - alert('Немного ошиблись, бывает.'); - break; -*/!* - - default: - alert('Странный результат, очень странный'); -} -``` - -При `case 3` выполнение идёт со строки `(*)`, при `case 5` -- со строки `(**)`. - -## Тип имеет значение - -Следующий пример принимает значение от посетителя. - -```js -//+ run -var arg = prompt("Введите arg?") -switch (arg) { - case '0': - case '1': - alert( 'Один или ноль' ); - - case '2': - alert( 'Два' ); - break; - - case 3: - alert( 'Никогда не выполнится' ); - - default: - alert('Неизвестное значение: ' + arg) -} -``` - -Что оно выведет при вводе числа 0? Числа 1? 2? 3? - -Подумайте, выпишите свои ответы, исходя из текущего понимания работы `switch` и *потом* читайте дальше... - -
      -
    • При вводе `0` выполнится первый `alert`, далее выполнение продолжится вниз до первого `break` и выведет второй `alert('Два')`. Итого, два вывода `alert`.
    • -
    • При вводе `1` произойдёт то же самое.
    • -
    • При вводе `2`, `switch` перейдет к `case '2'`, и сработает единственный `alert('Два')`.
    • -
    • **При вводе `3`, `switch` перейдет на `default`.** Это потому, что `prompt` возвращает строку `'3'`, а не число. Типы разные. Оператор `switch` предполагает строгое равенство `===`, так что совпадения не будет.
    • -
    - diff --git a/1-js/2-first-steps/17-function-basics/1-if-else-required/solution.md b/1-js/2-first-steps/17-function-basics/1-if-else-required/solution.md deleted file mode 100644 index be1daacc..00000000 --- a/1-js/2-first-steps/17-function-basics/1-if-else-required/solution.md +++ /dev/null @@ -1 +0,0 @@ -Оба варианта функции работают одинаково, отличий нет. \ No newline at end of file diff --git a/1-js/2-first-steps/17-function-basics/1-if-else-required/task.md b/1-js/2-first-steps/17-function-basics/1-if-else-required/task.md deleted file mode 100644 index f97c3b92..00000000 --- a/1-js/2-first-steps/17-function-basics/1-if-else-required/task.md +++ /dev/null @@ -1,35 +0,0 @@ -# Обязателен ли "else"? - -[importance 4] - -Следующая функция возвращает `true`, если параметр `age` больше `18`. -В ином случае она задаёт вопрос посредством вызова `confirm` и возвращает его результат. - -```js -function checkAge(age) { - if (age > 18) { - return true; -*!* - } else { - // ... - return confirm('Родители разрешили?'); - } -*/!* -} -``` - -Будет ли эта функция работать как-то иначе, если убрать `else`? - -```js -function checkAge(age) { - if (age > 18) { - return true; - } -*!* - // ... - return confirm('Родители разрешили?'); -*/!* -} -``` - -Есть ли хоть одно отличие в поведении этого варианта? diff --git a/1-js/2-first-steps/17-function-basics/2-rewrite-function-question-or/solution.md b/1-js/2-first-steps/17-function-basics/2-rewrite-function-question-or/solution.md deleted file mode 100644 index f021c7e4..00000000 --- a/1-js/2-first-steps/17-function-basics/2-rewrite-function-question-or/solution.md +++ /dev/null @@ -1,16 +0,0 @@ -Используя оператор `'?'`: - -```js -function checkAge(age) { - return (age > 18) ? true : confirm('Родители разрешили?'); -} -``` - -Используя оператор `||` (самый короткий вариант): - -```js -function checkAge(age) { - return (age > 18) || confirm('Родители разрешили?'); -} -``` - diff --git a/1-js/2-first-steps/17-function-basics/2-rewrite-function-question-or/task.md b/1-js/2-first-steps/17-function-basics/2-rewrite-function-question-or/task.md deleted file mode 100644 index 5d30718a..00000000 --- a/1-js/2-first-steps/17-function-basics/2-rewrite-function-question-or/task.md +++ /dev/null @@ -1,23 +0,0 @@ -# Перепишите функцию, используя оператор '?' или '||' - -[importance 4] - -Следующая функция возвращает `true`, если параметр `age` больше `18`. -В ином случае она задаёт вопрос `confirm` и возвращает его результат. - -```js -function checkAge(age) { - if (age > 18) { - return true; - } else { - return confirm('Родители разрешили?'); - } -} -``` - -Перепишите функцию, чтобы она делала то же самое, но без `if`, в одну строку. -Сделайте два варианта функции `checkAge`: -
      -
    1. Используя оператор `'?'`
    2. -
    3. Используя оператор `||`
    4. -
    diff --git a/1-js/2-first-steps/17-function-basics/3-min/solution.md b/1-js/2-first-steps/17-function-basics/3-min/solution.md deleted file mode 100644 index 91809daa..00000000 --- a/1-js/2-first-steps/17-function-basics/3-min/solution.md +++ /dev/null @@ -1,21 +0,0 @@ -Вариант решения с использованием `if`: - -```js -function min(a, b) { - if (a < b) { - return a; - } else { - return b; - } -} -``` - -Вариант решения с оператором `'?'`: - -```js -function min(a, b) { - return a < b ? a : b; -} -``` - -P.S. Случай равенства `a == b` здесь отдельно не рассматривается, так как при этом неважно, что возвращать. \ No newline at end of file diff --git a/1-js/2-first-steps/17-function-basics/3-min/task.md b/1-js/2-first-steps/17-function-basics/3-min/task.md deleted file mode 100644 index 8d042382..00000000 --- a/1-js/2-first-steps/17-function-basics/3-min/task.md +++ /dev/null @@ -1,16 +0,0 @@ -# Функция min - -[importance 1] - -Задача "Hello World" для функций :) - -Напишите функцию `min(a,b)`, которая возвращает меньшее из чисел `a,b`. - -Пример вызовов: - -```js -min(2, 5) == 2 -min(3, -1) == -1 -min(1, 1) == 1 -``` - diff --git a/1-js/2-first-steps/17-function-basics/4-pow/solution.md b/1-js/2-first-steps/17-function-basics/4-pow/solution.md deleted file mode 100644 index 30ec3ce4..00000000 --- a/1-js/2-first-steps/17-function-basics/4-pow/solution.md +++ /dev/null @@ -1,34 +0,0 @@ - - -```js -//+ run demo -/** - * Возводит x в степень n (комментарий JSDoc) - * - * @param {number} x число, которое возводится в степень - * @param {number} n степень, должна быть целым числом больше 1 - * - * @return {number} x в степени n - */ -function pow(x, n) { - var result = x; - - for (var i = 1; i < n; i++) { - result *= x; - } - - return result; -} - -var x = prompt("x?", ''); -var n = prompt("n?", ''); - -if (n <= 1) { - alert('Степень ' + n + - 'не поддерживается, введите целую степень, большую 1' - ); -} else { - alert( pow(x, n) ); -} -``` - diff --git a/1-js/2-first-steps/17-function-basics/4-pow/task.md b/1-js/2-first-steps/17-function-basics/4-pow/task.md deleted file mode 100644 index 0160bfcf..00000000 --- a/1-js/2-first-steps/17-function-basics/4-pow/task.md +++ /dev/null @@ -1,17 +0,0 @@ -# Функция pow(x,n) - -[importance 4] - -Напишите функцию `pow(x,n)`, которая возвращает `x` в степени `n`. Иначе говоря, умножает `x` на себя `n` раз и возвращает результат. - -```js -pow(3, 2) = 3 * 3 = 9 -pow(3, 3) = 3 * 3 * 3 = 27 -pow(1, 100) = 1 * 1 * ...*1 = 1 -``` - -Создайте страницу, которая запрашивает `x` и `n`, а затем выводит результат `pow(x,n)`. - -[demo /] - -P.S. В этой задаче функция обязана поддерживать только натуральные значения `n`, т.е. целые от `1` и выше. \ No newline at end of file diff --git a/1-js/2-first-steps/17-function-basics/article.md b/1-js/2-first-steps/17-function-basics/article.md deleted file mode 100644 index a9fa6f16..00000000 --- a/1-js/2-first-steps/17-function-basics/article.md +++ /dev/null @@ -1,435 +0,0 @@ -# Функции - -Зачастую нам надо повторять одно и то же действие во многих частях программы. - -Например, красиво вывести сообщение необходимо при приветствии посетителя, при выходе посетителя с сайта, ещё где-нибудь. - -Чтобы не повторять один и тот же код во многих местах, придуманы функции. Функции являются основными "строительными блоками" программы. -[cut] -Примеры встроенных функций вы уже видели -- это `alert(message)`, `prompt(message, default)` и `confirm(question)`. Но можно создавать и свои. - -## Объявление - -Пример объявления функции: - -```js -function showMessage() { - alert( 'Привет всем присутствующим!' ); -} -``` - -Вначале идет ключевое слово `function`, после него *имя функции*, затем *список параметров* в скобках (в примере выше он пустой) и *тело функции* -- код, который выполняется при её вызове. - -Объявленная функция доступна по имени, например: - -```js -//+ run -function showMessage() { - alert( 'Привет всем присутствующим!' ); -} - -*!* -showMessage(); -showMessage(); -*/!* -``` - -Этот код выведет сообщение два раза. Уже здесь видна **главная цель создания функций: избавление от дублирования кода**. - -Если понадобится поменять сообщение или способ его вывода -- достаточно изменить его в одном месте: в функции, которая его выводит. - -## Локальные переменные - -Функция может содержать *локальные* переменные, объявленные через `var`. Такие переменные видны только внутри функции: - -```js -//+ run -function showMessage() { -*!* - var message = 'Привет, я - Вася!'; // локальная переменная -*/!* - - alert( message ); -} - -showMessage(); // 'Привет, я - Вася!' - -alert( message ); // <-- будет ошибка, т.к. переменная видна только внутри -``` - -**Блоки `if/else`, `switch`, `for`, `while`, `do..while` не влияют на область видимости переменных.** - -При объявлении переменной в таких блоках, она всё равно будет видна во всей функции. - -Например: - -```js -//+ no-beautify -function count() { - // переменные i,j не будут уничтожены по окончании цикла - for (*!*var*/!* i = 0; i < 3; i++) { - *!*var*/!* j = i * 2; - } - -*!* - alert( i ); // i=3, последнее значение i, при нём цикл перестал работать - alert( j ); // j=4, последнее значение j, которое вычислил цикл -*/!* -} -``` - -**Неважно, где именно в функции и сколько раз объявляется переменная. Любое объявление срабатывает один раз и распространяется на всю функцию.** - -Объявления переменных в примере выше можно передвинуть вверх, это ни на что не повлияет: - -```js -function count() { -*!* - var i, j; // передвинули объявления var в начало -*/!* - for (i = 0; i < 3; i++) { - j = i * 2; - } - - alert( i ); // i=3 - alert( j ); // j=4 -} -``` - -## Внешние переменные - -Функция может обратиться ко внешней переменной, например: - -```js -//+ run no-beautify -var *!*userName*/!* = 'Вася'; - -function showMessage() { - var message = 'Привет, я ' + *!*userName*/!*; - alert(message); -} - -showMessage(); // Привет, я Вася -``` - -Доступ возможен не только на чтение, но и на запись. При этом, так как переменная внешняя, то изменения будут видны и снаружи функции: - -```js -//+ run -var userName = 'Вася'; - -function showMessage() { - userName = 'Петя'; // (1) присвоение во внешнюю переменную - - var message = 'Привет, я ' + userName; - alert( message ); -} - -showMessage(); - -*!* -alert( userName ); // Петя, значение внешней переменной изменено функцией -*/!* -``` - -Конечно, если бы внутри функции, в строке `(1)`, была бы объявлена своя локальная переменная `var userName`, то все обращения использовали бы её, и внешняя переменная осталась бы неизменной. - -**Переменные, объявленные на уровне всего скрипта, называют *"глобальными переменными"*.** - -В примере выше переменная `userName` -- глобальная. - -Делайте глобальными только те переменные, которые действительно имеют общее значение для вашего проекта, а нужные для решения конкретной задачи -- пусть будут локальными в соответствующей функции. - - -[warn header="Внимание: неявное объявление глобальных переменных!"] - -В старом стандарте JavaScript существовала возможность неявного объявления переменных присвоением значения. - -Например: - -```js -//+ run -function showMessage() { - message = 'Привет'; // без var! -} - -showMessage(); - -alert( message ); // Привет -``` - -В коде выше переменная `message` нигде не объявлена, а сразу присваивается. Скорее всего, программист просто забыл поставить `var`. - -При `use strict` такой код привёл бы к ошибке, но без него переменная будет создана автоматически, причём в примере выше она создаётся не в функции, а на уровне всего скрипта. - -Избегайте этого. - -Здесь опасность даже не в автоматическом создании переменной, а в том, что глобальные переменные должны использоваться тогда, когда действительно нужны "общескриптовые" параметры. - -Забыли `var` в одном месте, потом в другом -- в результате одна функция неожиданно поменяла глобальную переменную, которую использует другая. И поди разберись, кто и когда её поменял, не самая приятная ошибка для отладки. -[/warn] - -В будущем, когда мы лучше познакомимся с основами JavaScript, в главе [](/closures), мы более детально рассмотрим внутренние механизмы работы переменных и функций. - -## Параметры - -При вызове функции ей можно передать данные, которые та использует по своему усмотрению. - -Например, этот код выводит два сообщения: - -```js -//+ run no-beautify -function showMessage(*!*from, text*/!*) { // параметры from, text - - from = "** " + from + " **"; // здесь может быть сложный код оформления - - alert(from + ': ' + text); -} - -*!* -showMessage('Маша', 'Привет!'); -showMessage('Маша', 'Как дела?'); -*/!* -``` - -**Параметры копируются в локальные переменные функции**. - -Например, в коде ниже есть внешняя переменная `from`, значение которой при запуске функции копируется в параметр функции с тем же именем. Далее функция работает уже с параметром: - -```js -//+ run -function showMessage(from, text) { -*!* - from = '**' + from + '**'; // меняем локальную переменную from -*/!* - alert( from + ': ' + text ); -} - -var from = "Маша"; - -showMessage(from, "Привет"); - -alert( from ); // старое значение from без изменений, в функции была изменена копия -``` - -## Аргументы по умолчанию - -Функцию можно вызвать с любым количеством аргументов. - -Если параметр не передан при вызове -- он считается равным `undefined`. - -Например, функцию показа сообщения `showMessage(from, text)` можно вызвать с одним аргументом: - -```js -showMessage("Маша"); -``` - -При этом можно проверить, и если параметр не передан -- присвоить ему значение "по умолчанию": - -```js -//+ run -function showMessage(from, text) { -*!* - if (text === undefined) { - text = 'текст не передан'; - } -*/!* - - alert( from + ": " + text ); -} - -showMessage("Маша", "Привет!"); // Маша: Привет! -*!* -showMessage("Маша"); // Маша: текст не передан -*/!* -``` - -**При объявлении функции необязательные аргументы, как правило, располагают в конце списка.** - -Для указания значения "по умолчанию", то есть, такого, которое используется, если аргумент не указан, используется два способа: - -
      -
    1. Можно проверить, равен ли аргумент `undefined`, и если да -- то записать в него значение по умолчанию. Этот способ продемонстрирован в примере выше.
    2. -
    3. Использовать оператор `||`: - -```js -//+ run -function showMessage(from, text) { - text = text || 'текст не передан'; - - ... -} -``` - -Второй способ считает, что аргумент отсутствует, если передана пустая строка, `0`, или вообще любое значение, которое в логическом контексте является `false`. -
    4. -
    - -Если аргументов передано больше, чем надо, например `showMessage("Маша", "привет", 1, 2, 3)`, то ошибки не будет. Но, чтобы получить такие "лишние" аргументы, нужно будет прочитать их из специального объекта `arguments`, который мы рассмотрим в главе [](/arguments-pseudoarray). - -## Возврат значения - -Функция может возвратить результат, который будет передан в вызвавший её код. - -Например, создадим функцию `calcD`, которая будет возвращать дискриминант квадратного уравнения по формуле b2 - 4ac: - -```js -//+ run no-beautify -function calcD(a, b, c) { - *!*return*/!* b*b - 4*a*c; -} - -var test = calcD(-4, 2, 1); -alert(test); // 20 -``` - -**Для возврата значения используется директива `return`.** - -Она может находиться в любом месте функции. Как только до неё доходит управление -- функция завершается и значение передается обратно. - -Вызовов `return` может быть и несколько, например: - -```js -//+ run -function checkAge(age) { - if (age > 18) { - return true; - } else { - return confirm('Родители разрешили?'); - } -} - -var age = prompt('Ваш возраст?'); - -if (checkAge(age)) { - alert( 'Доступ разрешен' ); -} else { - alert( 'В доступе отказано' ); -} -``` - -Директива `return` может также использоваться без значения, чтобы прекратить выполнение и выйти из функции. - -Например: - -```js -function showMovie(age) { - if (!checkAge(age)) { -*!* - return; -*/!* - } - - alert( "Фильм не для всех" ); // (*) - // ... -} -``` - -В коде выше, если сработал `if`, то строка `(*)` и весь код под ней никогда не выполнится, так как `return` завершает выполнение функции. - -[smart header="Значение функции без `return` и с пустым `return`"] -В случае, когда функция не вернула значение или `return` был без аргументов, считается что она вернула `undefined`: - -```js -//+ run -function doNothing() { /* пусто */ } - -alert( doNothing() ); // undefined -``` - -Обратите внимание, никакой ошибки нет. Просто возвращается `undefined`. - -Ещё пример, на этот раз с `return` без аргумента: - -```js -//+ run -function doNothing() { - return; -} - -alert( doNothing() === undefined ); // true -``` - -[/smart] - -## Выбор имени функции [#function-naming] - -Имя функции следует тем же правилам, что и имя переменной. Основное отличие -- оно должно быть глаголом, т.к. функция -- это действие. - -Как правило, используются глагольные префиксы, обозначающие общий характер действия, после которых следует уточнение. - -Функции, которые начинаются с `"show"` -- что-то показывают: - -```js -//+ no-beautify -showMessage(..) // префикс show, "показать" сообщение -``` - -Функции, начинающиеся с `"get"` -- получают, и т.п.: - -```js -//+ no-beautify -getAge(..) // get, "получает" возраст -calcD(..) // calc, "вычисляет" дискриминант -createForm(..) // create, "создает" форму -checkPermission(..) // check, "проверяет" разрешение, возвращает true/false -``` - -Это очень удобно, поскольку взглянув на функцию -- мы уже примерно представляем, что она делает, даже если функцию написал совсем другой человек, а в отдельных случаях -- и какого вида значение она возвращает. - -[smart header="Одна функция -- одно действие"] - -Функция должна делать только то, что явно подразумевается её названием. И это должно быть одно действие. - -Если оно сложное и подразумевает поддействия -- может быть имеет смысл выделить их в отдельные функции? Зачастую это имеет смысл, чтобы лучше структурировать код. - -**...Но самое главное -- в функции не должно быть ничего, кроме самого действия и поддействий, неразрывно связанных с ним.** - -Например, функция проверки данных (скажем, `"validate"`) не должна показывать сообщение об ошибке. Её действие -- проверить. -[/smart] - - -[smart header="Сверхкороткие имена функций"] -Имена функций, которые используются *очень часто*, иногда делают сверхкороткими. - -Например, во фреймворке [jQuery](http://jquery.com) есть функция `$`, во фреймворке [Prototype](http://prototypejs.com) -- функция `$$`, а в библиотеке [LoDash](http://lodash.com/) очень активно используется функция с названием из одного символа подчеркивания `_`. -[/smart] - -## Итого - -Объявление функции имеет вид: - -```js -function имя(параметры, через, запятую) { - код функции -} -``` - -
      -
    • Передаваемые значения копируются в параметры функции и становятся локальными переменными.
    • -
    • Параметры функции копируются в её локальные переменные.
    • -
    • Можно объявить новые локальные переменые при помощи `var`.
    • -
    • Значение возвращается оператором `return ...`.
    • -
    • Вызов `return` тут же прекращает функцию.
    • -
    • Если `return;` вызван без значения, или функция завершилась без `return`, то её результат равен `undefined`.
    • -
    - -При обращении к необъявленной переменной функция будет искать внешнюю переменную с таким именем, но лучше, если функция использует только локальные переменные: - -
      -
    • Это делает очевидным общий поток выполнения -- что передаётся в функцию и какой получаем результат.
    • -
    • Это предотвращает возможные конфликты доступа, когда две функции, возможно написанные в разное время или разными людьми, неожиданно друг для друга меняют одну и ту же внешнюю переменную.
    • -
    - - - -Именование функций: - -
      -
    • Имя функции должно понятно и чётко отражать, что она делает. Увидев её вызов в коде, вы должны тут же понимать, что она делает.
    • -
    • Функция -- это действие, поэтому для имён функций, как правило, используются глаголы.
    • -
    - -Функции являются основными строительными блоками скриптов. Мы будем неоднократно возвращаться к ним и изучать все более и более глубоко. - - diff --git a/1-js/2-first-steps/18-function-declaration-expression/article.md b/1-js/2-first-steps/18-function-declaration-expression/article.md deleted file mode 100644 index 6449b93a..00000000 --- a/1-js/2-first-steps/18-function-declaration-expression/article.md +++ /dev/null @@ -1,366 +0,0 @@ -# Функциональные выражения - -В JavaScript функция является значением, таким же как строка или число. - -Как и любое значение, объявленную функцию можно вывести, вот так: - -```js -//+ run -function sayHi() { - alert( "Привет" ); -} - -*!* -alert( sayHi ); // выведет код функции -*/!* -``` - -Обратим внимание на то, что в последней строке после `sayHi` нет скобок. То есть, функция не вызывается, а просто выводится на экран. - -**Функцию можно скопировать в другую переменную:** - -```js -//+ run no-beautify -function sayHi() { // (1) - alert( "Привет" ); -} - -var func = sayHi; // (2) -func(); // Привет // (3) - -sayHi = null; -sayHi(); // ошибка (4) -``` - -
      -
    1. Объявление `(1)` как бы говорит интерпретатору "создай функцию и помести её в переменную `sayHi`
    2. -
    3. В строке `(2)` мы копируем функцию в новую переменную `func`. Ещё раз обратите внимание: после `sayHi` нет скобок. Если бы они были, то вызов `var func = sayHi()` записал бы в `func` *результат* работы `sayHi()` (кстати, чему он равен? правильно, `undefined`, ведь внутри `sayHi` нет `return`).
    4. -
    5. На момент `(3)` функцию можно вызывать и как `sayHi()` и как `func()`
    6. -
    7. ...Однако, в любой момент значение переменной можно поменять. При этом, если оно не функция, то вызов `(4)` выдаст ошибку.
    8. -
    - -Обычные значения, такие как числа или строки, представляют собой *данные*. А функцию можно воспринимать как *действие*. - -Это действие можно запустить через скобки `()`, а можно и скопировать в другую переменную, как было продемонстрировано выше. - - -## Объявление Function Expression [#function-expression] - -Существует альтернативный синтаксис для объявления функции, который ещё более наглядно показывает, что функция -- это всего лишь разновидность значения переменной. - -Он называется "Function Expression" (функциональное выражение) и выглядит так: - -```js -//+ run -var f = function(параметры) { - // тело функции -}; -``` - -Например: - -```js -//+ run -var sayHi = function(person) { - alert( "Привет, " + person ); -}; - -sayHi('Вася'); -``` - -## Сравнение с Function Declaration - -"Классическое" объявление функции, о котором мы говорили до этого, вида `function имя(параметры) {...}`, называется в спецификации языка "Function Declaration". - -
      -
    • *Function Declaration* -- функция, объявленная в основном потоке кода.
    • -
    • *Function Expression* -- объявление функции в контексте какого-либо выражения, например присваивания.
    • -
    - -Несмотря на немного разный вид, по сути две эти записи делают одно и то же: - -```js -// Function Declaration -function sum(a, b) { - return a + b; -} - -// Function Expression -var sum = function(a, b) { - return a + b; -} -``` - -Оба этих объявления говорят интерпретатору: "объяви переменную `sum`, создай функцию с указанными параметрами и кодом и сохрани её в `sum`". - -**Основное отличие между ними: функции, объявленные как Function Declaration, создаются интерпретатором до выполнения кода.** - -Поэтому их можно вызвать *до* объявления, например: - -```js -//+ run refresh untrusted -*!* -sayHi("Вася"); // Привет, Вася -*/!* - -function sayHi(name) { - alert( "Привет, " + name ); -} -``` - -А если бы это было объявление Function Expression, то такой вызов бы не сработал: - -```js -//+ run refresh untrusted -*!* -sayHi("Вася"); // ошибка! -*/!* - -var sayHi = function(name) { - alert( "Привет, " + name ); -} -``` - -Это из-за того, что JavaScript перед запуском кода ищет в нём Function Declaration (их легко найти: они не являются частью выражений и начинаются со слова `function`) и обрабатывает их. - -А Function Expression создаются в процессе выполнении выражения, в котором созданы, в данном случае -- функция будет создана при операции присваивания `sayHi = function...` - -Как правило, возможность Function Declaration вызвать функцию до объявления -- это удобно, так как даёт больше свободы в том, как организовать свой код. - -Можно расположить функции внизу, а их вызов -- сверху или наоборот. - -### Условное объявление функции [#bad-conditional-declaration] - -В некоторых случаях "дополнительное удобство" Function Declaration может сослужить плохую службу. - -Например, попробуем, в зависимости от условия, объявить функцию `sayHi` по-разному: - -```js -//+ run -var age = +prompt("Сколько вам лет?", 20); - -if (age >= 18) { - function sayHi() { - alert( 'Прошу вас!' ); - } -} else { - function sayHi() { - alert( 'До 18 нельзя' ); - } -} - -sayHi(); -``` - -При вводе `20` в примере выше в любом браузере, кроме Firefox, мы увидим, что условное объявление не работает. Срабатывает `"До 18 нельзя"`, несмотря на то, что `age = 20`. - -В чём дело? Чтобы ответить на этот вопрос -- вспомним, как работают функции. - -
      -
    1. Function Declaration обрабатываются перед запуском кода. Интерпретатор сканирует код и создает из таких объявлений функции. При этом второе объявление перезапишет первое. -
    2. -
    3. Дальше, во время выполнения, объявления Function Declaration игнорируются (они уже были обработаны). Это как если бы код был таким: - -```js -function sayHi() { - alert( 'Прошу вас!' ); -} - -function sayHi() { - alert( 'До 18 нельзя' ); -} - -var age = 20; - -if (age >= 18) { - /* объявление было обработано ранее */ -} else { - /* объявление было обработано ранее */ -} - -*!* -sayHi(); // "До 18 нельзя", сработает всегда вторая функция -*/!* -``` - -...То есть, от `if` здесь уже ничего не зависит. По-разному объявить функцию, в зависимости от условия, не получилось. -
    4. -
    - -Такое поведение соответствует современному стандарту. На момент написания этого раздела ему следуют все браузеры, кроме, как ни странно, Firefox. - -**Вывод: для условного объявления функций Function Declaration не годится.** - -А что, если использовать Function Expression? - -```js -//+ run -var age = prompt('Сколько вам лет?'); - -var sayHi; - -if (age >= 18) { - sayHi = function() { - alert( 'Прошу Вас!' ); - } -} else { - sayHi = function() { - alert( 'До 18 нельзя' ); - } -} - -sayHi(); -``` - -Или даже так: - -```js -//+ run no-beautify -var age = prompt('Сколько вам лет?'); - -var sayHi = (age >= 18) ? - function() { alert('Прошу Вас!'); } : - function() { alert('До 18 нельзя'); }; - -sayHi(); -``` - -Оба этих варианта работают правильно, поскольку, в зависимости от условия, создаётся именно та функция, которая нужна. - -### Анонимные функции - -Взглянем ещё на один пример. - -Функция `ask(question, yes, no)` предназначена для выбора действия в зависимости от результата `f`. - -Она выводит вопрос на подтверждение `question` и, в зависимости от согласия пользователя, вызывает `yes` или `no`: - -```js -//+ run -*!* -function ask(question, yes, no) { - if (confirm(question)) yes() - else no(); - } -*/!* - -function showOk() { - alert( "Вы согласились." ); -} - -function showCancel() { - alert( "Вы отменили выполнение." ); -} - -// использование -ask("Вы согласны?", showOk, showCancel); -``` - -Какой-то очень простой код, не правда ли? Зачем, вообще, может понадобиться такая `ask`? - -...Но при работе со страницей такие функции как раз очень востребованы, только вот спрашивают они не простым `confirm`, а выводят более красивое окно с вопросом и могут интеллектуально обработать ввод посетителя. Но это всё в своё время. - -Здесь обратим внимание на то, что то же самое можно написать более коротко: - -```js -//+ run no-beautify -function ask(question, yes, no) { - if (confirm(question)) yes() - else no(); -} - -*!* -ask( - "Вы согласны?", - function() { alert("Вы согласились."); }, - function() { alert("Вы отменили выполнение."); } -); -*/!* -``` - -Здесь функции объявлены прямо внутри вызова `ask(...)`, даже без присвоения им имени. - -**Функциональное выражение, которое не записывается в переменную, называют [анонимной функцией](http://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%BE%D0%BD%D0%B8%D0%BC%D0%BD%D0%B0%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F).** - -Действительно, зачем нам записывать функцию в переменную, если мы не собираемся вызывать её ещё раз? Можно просто объявить непосредственно там, где функция нужна. - -Такого рода код возникает естественно, он соответствует "духу" JavaScript. - -## new Function - -Существует ещё один способ создания функции, который используется очень редко, но упомянем и его для полноты картины. - -Он позволяет создавать функцию полностью "на лету" из строки, вот так: - -```js -//+ run -var sum = new Function('a,b', ' return a+b; '); - -var result = sum(1, 2); -alert( result ); // 3 -``` - -То есть, функция создаётся вызовом `new Function(params, code)`: -
    -
    `params`
    -
    Параметры функции через запятую в виде строки.
    -
    `code`
    -
    Код функции в виде строки.
    -
    - -Таким образом можно конструировать функцию, код которой неизвестен на момент написания программы, но строка с ним генерируется или подгружается динамически во время её выполнения. - -Пример использования -- динамическая компиляция шаблонов на JavaScript, мы встретимся с ней позже, при работе с интерфейсами. - -## Итого - -Функции в JavaScript являются значениями. Их можно присваивать, передавать, создавать в любом месте кода. - -
      -
    • Если функция объявлена в *основном потоке кода*, то это Function Declaration.
    • -
    • Если функция создана как *часть выражения*, то это Function Expression.
    • -
    - -Между этими двумя основными способами создания функций есть следующие различия: - - - - - - - - - - - - - - - - - - - - - - -
    Function DeclarationFunction Expression
    Время созданияДо выполнения первой строчки кода.Когда управление достигает строки с функцией.
    Можно вызвать до объявления `Да` (т.к. создаётся заранее)`Нет`
    Условное объявление в `if``Не работает``Работает`
    - -Иногда в коде начинающих разработчиков можно увидеть много Function Expression. Почему-то, видимо, не очень понимая происходящее, функции решают создавать как `var func = function()`, но в большинстве случаев обычное объявление функции -- лучше. - -**Если нет явной причины использовать Function Expression -- предпочитайте Function Declaration.** - -Сравните по читаемости: - -```js -//+ no-beautify -// Function Expression -var f = function() { ... } - -// Function Declaration -function f() { ... } -``` - -Function Declaration короче и лучше читается. Дополнительный бонус -- такие функции можно вызывать до того, как они объявлены. - -Используйте Function Expression только там, где это действительно нужно и удобно. diff --git a/1-js/2-first-steps/19-recursion/1-sum-to/solution.md b/1-js/2-first-steps/19-recursion/1-sum-to/solution.md deleted file mode 100644 index 791c4b3d..00000000 --- a/1-js/2-first-steps/19-recursion/1-sum-to/solution.md +++ /dev/null @@ -1,45 +0,0 @@ -Решение **с использованием цикла**: - -```js -//+ run -function sumTo(n) { - var sum = 0; - for (var i = 1; i <= n; i++) { - sum += i; - } - return sum; -} - -alert( sumTo(100) ); -``` - -Решение через **рекурсию**: - -```js -//+ run -function sumTo(n) { - if (n == 1) return 1; - return n + sumTo(n - 1); -} - -alert( sumTo(100) ); -``` - -Решение **по формуле**: `sumTo(n) = n*(n+1)/2`: - -```js -//+ run -function sumTo(n) { - return n * (n + 1) / 2; -} - -alert( sumTo(100) ); -``` - -P.S. Надо ли говорить, что решение по формуле работает быстрее всех? Это очевидно. Оно использует всего три операции для любого `n`, а цикл и рекурсия требуют как минимум `n` операций сложения. - -Вариант с циклом -- второй по скорости. Он быстрее рекурсии, так как операций сложения столько же, но нет дополнительных вычислительных затрат на организацию вложенных вызовов. - -Рекурсия в данном случае работает медленнее всех. - -P.P.S. Существует ограничение глубины вложенных вызовов, поэтому рекурсивный вызов `sumTo(100000)` выдаст ошибку. \ No newline at end of file diff --git a/1-js/2-first-steps/19-recursion/1-sum-to/task.md b/1-js/2-first-steps/19-recursion/1-sum-to/task.md deleted file mode 100644 index 9e7e8e8f..00000000 --- a/1-js/2-first-steps/19-recursion/1-sum-to/task.md +++ /dev/null @@ -1,34 +0,0 @@ -# Вычислить сумму чисел до данного - -[importance 5] - -Напишите функцию `sumTo(n)`, которая для данного `n` вычисляет сумму чисел от 1 до `n`, например: - -```js -//+ no-beautify -sumTo(1) = 1 -sumTo(2) = 2 + 1 = 3 -sumTo(3) = 3 + 2 + 1 = 6 -sumTo(4) = 4 + 3 + 2 + 1 = 10 -... -sumTo(100) = 100 + 99 + ... + 2 + 1 = 5050 -``` - -Сделайте три варианта решения: -
      -
    1. С использованием цикла.
    2. -
    3. Через рекурсию, т.к. `sumTo(n) = n + sumTo(n-1)` для `n > 1`.
    4. -
    5. С использованием формулы для суммы [арифметической прогрессии](http://ru.wikipedia.org/wiki/%D0%90%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B5%D1%81%D1%81%D0%B8%D1%8F).
    6. -
    - -Пример работы вашей функции: - -```js -function sumTo(n) { /*... ваш код ... */ } - -alert( sumTo(100) ); // 5050 -``` - -**Какой вариант решения самый быстрый? Самый медленный? Почему?** - -**Можно ли при помощи рекурсии посчитать `sumTo(100000)`? Если нет, то почему?** diff --git a/1-js/2-first-steps/19-recursion/2-factorial/solution.md b/1-js/2-first-steps/19-recursion/2-factorial/solution.md deleted file mode 100644 index f3811e2c..00000000 --- a/1-js/2-first-steps/19-recursion/2-factorial/solution.md +++ /dev/null @@ -1,25 +0,0 @@ -По свойствам факториала, как описано в условии, `n!` можно записать как `n * (n-1)!`. - -То есть, результат функции для `n` можно получить как `n`, умноженное на результат функции для `n-1`, и так далее до `1!`: - -```js -//+ run -function factorial(n) { - return (n != 1) ? n * factorial(n - 1) : 1; -} - -alert( factorial(5) ); // 120 -``` - -Базисом рекурсии является значение `1`. А можно было бы сделать базисом и `0`. Тогда код станет чуть короче: - -```js -//+ run -function factorial(n) { - return n ? n * factorial(n - 1) : 1; -} - -alert( factorial(5) ); // 120 -``` - -В этом случае вызов `factorial(1)` сведётся к `1*factorial(0)`, будет дополнительный шаг рекурсии. diff --git a/1-js/2-first-steps/19-recursion/2-factorial/task.md b/1-js/2-first-steps/19-recursion/2-factorial/task.md deleted file mode 100644 index 59579043..00000000 --- a/1-js/2-first-steps/19-recursion/2-factorial/task.md +++ /dev/null @@ -1,29 +0,0 @@ -# Вычислить факториал - -[importance 4] - -*Факториа́л числа* -- это число, умноженное на "себя минус один", затем на "себя минус два" и так далее, до единицы. Обозначается `n!` - -Определение факториала можно записать как: - -```js -n! = n * (n - 1) * (n - 2) * ...*1 -``` - -Примеры значений для разных `n`: - -```js -1! = 1 -2! = 2 * 1 = 2 -3! = 3 * 2 * 1 = 6 -4! = 4 * 3 * 2 * 1 = 24 -5! = 5 * 4 * 3 * 2 * 1 = 120 -``` - -Задача -- написать функцию `factorial(n)`, которая возвращает факториал числа `n!`, используя рекурсивный вызов. - -```js -alert( factorial(5) ); // 120 -``` - -Подсказка: обратите внимание, что `n!` можно записать как `n * (n-1)!`. Например: `3! = 3*2! = 3*2*1! = 6` diff --git a/1-js/2-first-steps/19-recursion/3-fibonacci-numbers/solution.md b/1-js/2-first-steps/19-recursion/3-fibonacci-numbers/solution.md deleted file mode 100644 index 5c5fbfab..00000000 --- a/1-js/2-first-steps/19-recursion/3-fibonacci-numbers/solution.md +++ /dev/null @@ -1,99 +0,0 @@ -# Вычисление рекурсией (медленное) - -Решение по формуле, используя рекурсию: - -```js -//+ run -function fib(n) { - return n <= 1 ? n : fib(n - 1) + fib(n - 2); -} - -alert( fib(3) ); // 2 -alert( fib(7) ); // 13 -// fib(77); // не запускаем, подвесит браузер -``` - -При больших значениях `n` оно будет работать очень медленно. Например, `fib(77)` уже будет вычисляться очень долго. - -Это потому, что функция порождает обширное дерево вложенных вызовов. При этом ряд значений вычисляется много раз. Например, посмотрим на отрывок вычислений: - -```js -//+ no-beautify -... -fib(5) = fib(4) + fib(3) -fib(4) = fib(3) + fib(2) -... -``` - -Здесь видно, что значение `fib(3)` нужно одновременно и для `fib(5)` и для `fib(4)`. В коде оно будет вычислено два раза, совершенно независимо. - -Можно это оптимизировать, запоминая уже вычисленные значения, получится гораздо быстрее. Альтернативный вариант -- вообще отказаться от рекурсии, а вместо этого в цикле начать с первых значений `1`, `2`, затем из них получить `fib(3)`, далее `fib(4)`, затем `fib(5)` и так далее, до нужного значения. - -Это решение будет наиболее эффективным. Попробуйте его написать. - -# Алгоритм вычисления в цикле - -Будем идти по формуле слева-направо: - -```js -//+ no-beautify -var a = 1, b = 1; // начальные значения -var c = a + b; // 2 - -/* переменные на начальном шаге: -a b c -1, 1, 2 -*/ -``` - -Теперь следующий шаг, присвоим `a` и `b` текущие 2 числа и получим новое следующее в `c`: - -```js -//+ no-beautify -a = b, b = c; -c = a + b; - -/* стало так (ещё число): - a b c -1, 1, 2, 3 -*/ -``` - -Следующий шаг даст нам ещё одно число последовательности: - -```js -//+ no-beautify -a = b, b = c; -c = a + b; - -/* стало так (ещё число): - a b c -1, 1, 2, 3, 5 -*/ -``` - -Повторять в цикле до тех пор, пока не получим нужное значение. Это гораздо быстрее, чем рекурсия, хотя бы потому что ни одно из чисел не вычисляется дважды. - -P.S. Этот подход к вычислению называется [динамическое программирование снизу-вверх](http://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5). - -# Код для вычисления в цикле - -```js -//+ run -function fib(n) { - var a = 1, - b = 1; - for (var i = 3; i <= n; i++) { - var c = a + b; - a = b; - b = c; - } - return b; -} - -alert( fib(3) ); // 2 -alert( fib(7) ); // 13 -alert( fib(77) ); // 5527939700884757 -``` - -Цикл здесь начинается с `i=3`, так как первое и второе числа Фибоначчи заранее записаны в переменные `a=1`, `b=1`. diff --git a/1-js/2-first-steps/19-recursion/3-fibonacci-numbers/task.md b/1-js/2-first-steps/19-recursion/3-fibonacci-numbers/task.md deleted file mode 100644 index b05734a0..00000000 --- a/1-js/2-first-steps/19-recursion/3-fibonacci-numbers/task.md +++ /dev/null @@ -1,24 +0,0 @@ -# Числа Фибоначчи - -[importance 5] - -Последовательность [чисел Фибоначчи](http://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%B0_%D0%A4%D0%B8%D0%B1%D0%BE%D0%BD%D0%B0%D1%87%D1%87%D0%B8) имеет формулу Fn = Fn-1 + Fn-2. То есть, следующее число получается как сумма двух предыдущих. - -Первые два числа равны `1`, затем `2(1+1)`, затем `3(1+2)`, `5(2+3)` и так далее: `1, 1, 2, 3, 5, 8, 13, 21...`. - -Числа Фибоначчи тесно связаны с [золотым сечением](http://ru.wikipedia.org/wiki/%D0%97%D0%BE%D0%BB%D0%BE%D1%82%D0%BE%D0%B5_%D1%81%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5) и множеством природных явлений вокруг нас. - -Напишите функцию `fib(n)`, которая возвращает `n-е` число Фибоначчи. Пример работы: - -```js -//+ no-beautify -function fib(n) { /* ваш код */ } - -alert( fib(3) ); // 2 -alert( fib(7) ); // 13 -alert( fib(77)); // 5527939700884757 -``` - -**Все запуски функций из примера выше должны срабатывать быстро.** - - \ No newline at end of file diff --git a/1-js/2-first-steps/19-recursion/article.md b/1-js/2-first-steps/19-recursion/article.md deleted file mode 100644 index 144e1cad..00000000 --- a/1-js/2-first-steps/19-recursion/article.md +++ /dev/null @@ -1,243 +0,0 @@ -# Рекурсия, стек - -В коде функции могут вызывать другие функции для выполнения подзадач. - -Частный случай подвызова -- когда функция вызывает сама себя. Это называется *рекурсией*. - -Рекурсия используется для ситуаций, когда выполнение одной сложной задачи можно представить как некое действие в совокупности с решением той же задачи в более простом варианте. - -Сейчас мы посмотрим примеры. - -Рекурсия -- общая тема программирования, не относящаяся напрямую к JavaScript. Если вы разрабатывали на других языках или изучали программирование раньше в ВУЗе, то наверняка уже знаете, что это такое. - -Эта глава предназначена для читателей, которые пока с этой темой незнакомы и хотят лучше разобраться в том, как работают функции. - -[cut] - - -## Степень pow(x, n) через рекурсию - -В качестве первого примера использования рекурсивных вызовов -- рассмотрим задачу возведения числа `x` в натуральную степень `n`. - -Её можно представить как совокупность более простого действия и более простой задачи того же типа вот так: - -```js -pow(x, n) = x * pow(x, n - 1) -``` - -То есть, xn = x * xn-1. - -Например, вычислим `pow(2, 4)`, последовательно переходя к более простой задаче: - -
      -
    1. `pow(2, 4) = 2 * pow(2, 3)`
    2. -
    3. `pow(2, 3) = 2 * pow(2, 2)`
    4. -
    5. `pow(2, 2) = 2 * pow(2, 1)`
    6. -
    7. `pow(2, 1) = 2`
    8. -
    - -На шаге 1 нам нужно вычислить `pow(2,3)`, поэтому мы делаем шаг 2, дальше нам нужно `pow(2,2)`, мы делаем шаг 3, затем шаг 4, и на нём уже можно остановиться, ведь очевидно, что результат возведения числа в степень 1 -- равен самому числу. - -Далее, имея результат на шаге 4, он подставляется обратно в шаг 3, затем имеем `pow(2,2)` -- подставляем в шаг 2 и на шаге 1 уже получаем результат. - -Этот алгоритм на JavaScript: - -```js -//+ run -function pow(x, n) { - if (n != 1) { // пока n != 1, сводить вычисление pow(x,n) к pow(x,n-1) - return x * pow(x, n - 1); - } else { - return x; - } -} - -alert( pow(2, 3) ); // 8 -``` - -Говорят, что "функция `pow` *рекурсивно вызывает сама себя*" до `n == 1`. - -Значение, на котором рекурсия заканчивается называют *базисом рекурсии*. В примере выше базисом является `1`. - -Общее количество вложенных вызовов называют *глубиной рекурсии*. В случае со степенью, всего будет `n` вызовов. - -Максимальная глубина рекурсии в браузерах ограничена, точно можно рассчитывать на `10000` вложенных вызовов, но некоторые интерпретаторы допускают и больше. - -Итак, рекурсию используют, когда вычисление функции можно свести к её более простому вызову, а его -- ещё к более простому, и так далее, пока значение не станет очевидно. - -## Контекст выполнения, стек - -Теперь мы посмотрим, как работают рекурсивные вызовы. Для этого мы рассмотрим, как вообще работают функции, что происходит при вызове. - -**У каждого вызова функции есть свой "контекст выполнения" (execution context).** - -Контекст выполнения -- это служебная информация, которая соответствует текущему запуску функции. Она включает в себя локальные переменные функции и конкретное место в коде, на котором находится интерпретатор. - -Например, для вызова `pow(2, 3)` из примера выше будет создан контекст выполнения, который будет хранить переменные `x = 2, n = 3`. Мы схематично обозначим его так: - -
      -
    • Контекст: { x: 2, n: 3, строка 1 }
    • -
    - -Далее функция `pow` начинает выполняться. Вычисляется выражение `n != 1` -- оно равно `true`, ведь в текущем контексте `n=3`. Поэтому задействуется первая ветвь `if` : - -```js -function pow(x, n) { - if (n != 1) { // пока n != 1 сводить вычисление pow(x,n) к pow(x,n-1) -*!* - return x * pow(x, n - 1); -*/!* - } else { - return x; - } -} -``` - -Чтобы вычислить выражение `x * pow(x, n-1)`, требуется произвести запуск `pow` с новыми аргументами. - -**При любом вложенном вызове JavaScript запоминает текущий контекст выполнения в специальной внутренней структуре данных -- "стеке контекстов".** - -Затем интерпретатор приступает к выполнению вложенного вызова. - -В данном случае вызывается та же `pow`, однако это абсолютно неважно. Для любых функций процесс одинаков. - -Для нового вызова создаётся свой контекст выполнения, и управление переходит в него, а когда он завершён -- старый контекст достаётся из стека и выполнение внешней функции возобновляется. - -Разберём происходящее с контекстами более подробно, начиная с вызова `(*)`: - -```js -//+ run -function pow(x, n) { - if (n != 1) { // пока n!=1 сводить вычисление pow(..n) к pow(..n-1) - return x * pow(x, n - 1); - } else { - return x; - } -} - -*!* -alert( pow(2, 3) ); // (*) -*/!* -``` - -
    -
    `pow(2, 3)`
    -
    Запускается функция `pow`, с аргументами `x=2`, `n=3`. Эти переменные хранятся в контексте выполнения, схематично изображённом ниже: - -
      -
    • Контекст: { x: 2, n: 3, строка 1 }
    • -
    -Выполнение в этом контексте продолжается, пока не встретит вложенный вызов в строке 3. -
    -
    `pow(2, 2)`
    -
    В строке `3` происходит вложенный вызов `pow` с аргументами `x=2`, `n=2`. Текущий контекст сохраняется в стеке, а для вложеннного вызова создаётся новый контекст (выделен жирным ниже): - -
      -
    • Контекст: { x: 2, n: 3, строка 3 }
    • -
    • Контекст: { x: 2, n: 2, строка 1 }
    • -
    -Обратим внимание, что контекст включает в себя не только переменные, но и место в коде, так что когда вложенный вызов завершится -- можно будет легко вернуться назад. - -Слово "строка" здесь условно, на самом деле, конечно, запомнено более точное место в цепочке команд. -
    -
    `pow(2, 1)`
    -
    Опять вложенный вызов в строке `3`, на этот раз -- с аргументами `x=2`, `n=1`. Создаётся новый текущий контекст, предыдущий добавляется в стек: -
      -
    • Контекст: { x: 2, n: 3, строка 3 }
    • -
    • Контекст: { x: 2, n: 2, строка 3 }
    • -
    • Контекст: { x: 2, n: 1, строка 1 }
    • -
    -На текущий момент в стеке уже два старых контекста. -
    -
    Выход из `pow(2, 1)`.
    -
    При выполнении `pow(2, 1)`, в отличие от предыдущих запусков, выражение `n != 1` будет равно `false`, поэтому сработает вторая ветка `if..else`: - -```js -function pow(x, n) { - if (n != 1) { - return x * pow(x, n - 1); - } else { -*!* - return x; // первая степень числа равна самому числу -*/!* - } -} -``` - -Здесь вложенных вызовов нет, так что функция заканчивает свою работу, возвращая `2`. Текущий контекст больше не нужен и удаляется из памяти, из стека восстанавливается предыдущий: - -
      -
    • Контекст: { x: 2, n: 3, строка 3 }
    • -
    • Контекст: { x: 2, n: 2, строка 3 }
    • -
    -Возобновляется обработка внешнего вызова `pow(2, 2)`. -
    -
    Выход из `pow(2, 2)`.
    -
    ...И теперь уже `pow(2, 2)` может закончить свою работу, вернув `4`. Восстанавливается контекст предыдущего вызова: -
      -
    • Контекст: { x: 2, n: 3, строка 3 }
    • -
    -Возобновляется обработка внешнего вызова `pow(2, 3)`. -
    -
    Выход из `pow(2, 3)`.
    -
    Самый внешний вызов заканчивает свою работу, его результат: `pow(2, 3) = 8`.
    -
    - -Глубина рекурсии в данном случае составила: **3**. - -Как видно из иллюстраций выше, глубина рекурсии равна максимальному числу контекстов, одновременно хранимых в стеке. - -Обратим внимание на требования к памяти. Рекурсия приводит к хранению всех данных для неоконченных внешних вызовов в стеке, в данном случае это приводит к тому, что возведение в степень `n` хранит в памяти `n` различных контекстов. - -Реализация возведения в степень через цикл гораздо более экономна: - -```js -function pow(x, n) { - var result = x; - for (var i = 1; i < n; i++) { - result *= x; - } - return result; -} -``` - -У такой функции `pow` будет один контекст, в котором будут последовательно меняться значения `i` и `result`. - -**Любая рекурсия может быть переделана в цикл. Как правило, вариант с циклом будет эффективнее.** - -Но переделка рекурсии в цикл может быть нетривиальной, особенно когда в функции, в зависимости от условий, используются различные рекурсивные подвызовы, когда ветвление более сложное. - -## Итого - -Рекурсия -- это когда функция вызывает сама себя, как правило, с другими аргументами. - -Существуют много областей применения рекурсивных вызовов. Здесь мы посмотрели на один из них -- решение задачи путём сведения её к более простой (с меньшими аргументами), но также рекурсия используется для работы с "естественно рекурсивными" структурами данных, такими как HTML-документы, для "глубокого" копирования сложных объектов. - -Есть и другие применения, с которыми мы встретимся по мере изучения JavaScript. - -Здесь мы постарались рассмотреть происходящее достаточно подробно, однако, если пожелаете, допустимо временно забежать вперёд и открыть главу [](/debugging-chrome), с тем чтобы при помощи отладчика построчно пробежаться по коду и посмотреть стек на каждом шаге. Отладчик даёт к нему доступ. - - - -[head] - -[/head] diff --git a/1-js/2-first-steps/2-external-script/1-hello-alert-ext/alert.js b/1-js/2-first-steps/2-external-script/1-hello-alert-ext/alert.js deleted file mode 100644 index 2c4f96f5..00000000 --- a/1-js/2-first-steps/2-external-script/1-hello-alert-ext/alert.js +++ /dev/null @@ -1 +0,0 @@ -alert('Я - JavaScript!'); \ No newline at end of file diff --git a/1-js/2-first-steps/2-external-script/1-hello-alert-ext/index.html b/1-js/2-first-steps/2-external-script/1-hello-alert-ext/index.html deleted file mode 100644 index b00b9f8a..00000000 --- a/1-js/2-first-steps/2-external-script/1-hello-alert-ext/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/2-first-steps/2-external-script/1-hello-alert-ext/solution.md b/1-js/2-first-steps/2-external-script/1-hello-alert-ext/solution.md deleted file mode 100644 index bef2fc5b..00000000 --- a/1-js/2-first-steps/2-external-script/1-hello-alert-ext/solution.md +++ /dev/null @@ -1,12 +0,0 @@ -Код для HTML-файла: - -```html - -``` - -Для файла `alert.js` из той же директории: - -```js -//+ src="alert.js" -``` - diff --git a/1-js/2-first-steps/2-external-script/1-hello-alert-ext/task.md b/1-js/2-first-steps/2-external-script/1-hello-alert-ext/task.md deleted file mode 100644 index 93cf1b4e..00000000 --- a/1-js/2-first-steps/2-external-script/1-hello-alert-ext/task.md +++ /dev/null @@ -1,7 +0,0 @@ -# Вывести alert внешним скриптом - -[importance 5] - -Возьмите решение предыдущей задачи [](/task/hello-alert) и вынесите скрипт во внешний файл `alert.js`, который расположите в той же директории. - -Откройте страницу и проверьте, что вывод сообщения всё ещё работает. \ No newline at end of file diff --git a/1-js/2-first-steps/2-external-script/2-async-defer-first/solution.md b/1-js/2-first-steps/2-external-script/2-async-defer-first/solution.md deleted file mode 100644 index 089a87e0..00000000 --- a/1-js/2-first-steps/2-external-script/2-async-defer-first/solution.md +++ /dev/null @@ -1,6 +0,0 @@ -Ответы: -
      -
    1. Первым выполнится `big.js`, это нормальная последовательность выполнения подряд идущих скриптов.
    2. -
    3. Первым выполнится `small.js`, так как скрипты из-за `async` ведут себя совершенно независимо друг от друга, страница тоже от них не зависит.
    4. -
    5. Первым выполнится `big.js`, так как скрипты, подключённые через `defer`, сохраняют порядок выполнения относительно друг друга.
    6. -
    \ No newline at end of file diff --git a/1-js/2-first-steps/2-external-script/2-async-defer-first/task.md b/1-js/2-first-steps/2-external-script/2-async-defer-first/task.md deleted file mode 100644 index 72405f9a..00000000 --- a/1-js/2-first-steps/2-external-script/2-async-defer-first/task.md +++ /dev/null @@ -1,27 +0,0 @@ -# Какой скрипт выполнится первым? - -[importance 4] - -В примере ниже подключены два скрипта `small.js` и `big.js`. - -Если предположить, что `small.js` загружается гораздо быстрее, чем `big.js` -- какой выполнится первым? - -```html - - -``` - -А вот так? - -```html - - -``` - -А так? - -```html - - -``` - diff --git a/1-js/2-first-steps/2-external-script/article.md b/1-js/2-first-steps/2-external-script/article.md deleted file mode 100644 index 41a9a3b7..00000000 --- a/1-js/2-first-steps/2-external-script/article.md +++ /dev/null @@ -1,251 +0,0 @@ -# Внешние скрипты, порядок исполнения - -Если JavaScript-кода много -- его выносят в отдельный файл, который подключается в HTML: - -```html - -``` - -Здесь `/path/to/script.js` -- это абсолютный путь к файлу, содержащему скрипт (из корня сайта). - -Браузер сам скачает скрипт и выполнит. - -Можно указать и полный URL, например: - -```html - -``` - -Вы также можете использовать путь относительно текущей страницы. Например, `src="lodash.js"` обозначает файл из текущей директории. - -Чтобы подключить несколько скриптов, используйте несколько тегов: - -```html - - -... -``` - -[smart] -Как правило, в HTML пишут только самые простые скрипты, а сложные выносят в отдельный файл. - -Браузер скачает его только первый раз и в дальнейшем, при правильной настройке сервера, будет брать из своего [кеша](http://ru.wikipedia.org/wiki/%D0%9A%D1%8D%D1%88). - -Благодаря этому один и тот же большой скрипт, содержащий, к примеру, библиотеку функций, может использоваться на разных страницах без полной перезагрузки с сервера. -[/smart] - - -[warn header="Если указан атрибут `src`, то содержимое тега игнорируется."] - -В одном теге `SCRIPT` нельзя одновременно подключить внешний скрипт и указать код. - -Вот так не cработает: - -```html - -``` - -Нужно выбрать: либо `SCRIPT` идёт с `src`, либо содержит код. Тег выше следует разбить на два: один -- с `src`, другой -- с кодом, вот так: - -```html - - -``` - -[/warn] - -## Асинхронные скрипты: defer/async - -Браузер загружает и отображает HTML постепенно. Особенно это заметно при медленном интернет-соединении: браузер не ждёт, пока страница загрузится целиком, а показывает ту часть, которую успел загрузить. - -Если браузер видит тег ` -*/!* - -

    Кролики посчитаны!

    - - - - -``` - -Такое поведение называют "синхронным". Как правило, оно вполне нормально, но есть важное следствие. - -**Если скрипт -- внешний, то пока браузер не выполнит его, он не покажет часть страницы под ним.** - -То есть, в таком документе, пока не загрузится и не выполнится `big.js`, содержимое `` будет скрыто: - -```html - - -*!* - -*/!* - - - Этот текст не будет показан, пока браузер не выполнит big.js. - - -``` - -И здесь вопрос -- действительно ли мы этого хотим? То есть, действительно ли оставшуюся часть страницы нельзя показывать до загрузки скрипта? - -Есть ситуации, когда мы не только НЕ хотим такой задержки, но она даже опасна. - -Например, если мы подключаем внешний скрипт, который показывает рекламу или вставляет счётчик посещений, а затем идёт наша страница. Конечно, неправильно, что пока счётчик или реклама не подгрузятся -- оставшаяся часть страницы не показывается. Счётчик посещений не должен никак задерживать отображение страницы сайта. Реклама тоже не должна тормозить сайт и нарушать его функционал. - -А что, если сервер, с которого загружается внешний скрипт, перегружен? Посетитель в этом случае может ждать очень долго! - -Вот пример, с подобным скриптом (стоит искусственная задержка загрузки): - -```html - -

    Важная информация не покажется, пока не загрузится скрипт.

    - - - -

    ...Важная информация!

    -``` - -Что делать? - -Можно поставить все подобные скрипты в конец страницы -- это уменьшит проблему, но не избавит от неё полностью, если скриптов несколько. Допустим, в конце страницы 3 скрипта, и первый из них тормозит -- получается, другие два его будут ждать -- тоже нехорошо. - -Кроме того, браузер дойдёт до скриптов, расположенных в конце страницы, они начнут грузиться только тогда, когда вся страница загрузится. А это не всегда правильно. Например, счётчик посещений наиболее точно сработает, если загрузить его пораньше. - -Поэтому "расположить скрипты внизу" -- не лучший выход. - -Кардинально решить эту проблему помогут атрибуты `async` или `defer`: -
    -
    Атрибут `async`
    -
    Поддерживается всеми браузерами, кроме IE9-. Скрипт выполняется полностью асинхронно. То есть, при обнаружении ` - -``` - -А в таком коде (с `defer`) первым сработает всегда `1.js`, а скрипт `2.js`, даже если загрузился раньше, будет его ждать. - -```html - - -``` - -Поэтому атрибут `defer` используют в тех случаях, когда второй скрипт `2.js` зависит от первого `1.js`, к примеру -- использует что-то, описанное первым скриптом. - -Второе отличие -- скрипт с `defer` сработает, когда весь HTML-документ будет обработан браузером. - -Например, если документ достаточно большой... -```html - - - -Много много много букв -``` - -...То скрипт `async.js` выполнится, как только загрузится -- возможно, до того, как весь документ готов. А `defer.js` подождёт готовности всего документа. - -Это бывает удобно, когда мы в скрипте хотим работать с документом, и должны быть уверены, что он полностью получен. -
    -
    - -[smart header="`async` вместе с `defer`"] -При одновременном указании `async` и `defer` в современных браузерах будет использован только `async`, в IE9- -- только `defer` (не понимает `async`). -[/smart] - -[warn header="Атрибуты `async/defer` -- только для внешних скриптов"] -Атрибуты `async/defer` работают только в том случае, если назначены на внешние скрипты, т.е. имеющие `src`. - -При попытке назначить их на обычные скрипты <script>...</script>, они будут проигнороированы. -[/warn] - -Тот же пример с `async`: - -```html - -

    Важная информация теперь не ждёт, пока загрузится скрипт...

    - - - -

    ...Важная информация!

    -``` - -При запуске вы увидите, что вся страница отобразилась тут же, а `alert` из внешнего скрипта появится позже, когда загрузится скрипт. - -[smart header="Эти атрибуты давно \"в ходу\""] -Большинство современных систем рекламы и счётчиков знают про эти атрибуты и используют их. - -Перед вставкой внешнего тега `` -
  1. Специальные атрибуты `async` и `defer` используются для того, чтобы пока грузится внешний скрипт -- браузер показал остальную (следующую за ним) часть страницы. Без них этого не происходит.
  2. -
  3. Разница между `async` и `defer`: атрибут `defer` сохраняет относительную последовательность скриптов, а `async` -- нет. Кроме того, `defer` всегда ждёт, пока весь HTML-документ будет готов, а `async` -- нет.
  4. - - -Очень важно не только читать учебник, но делать что-то самостоятельно. - -Решите задачки, чтобы удостовериться, что вы всё правильно поняли. - - diff --git a/1-js/2-first-steps/20-named-function-expression/1-nfe-check/solution.md b/1-js/2-first-steps/20-named-function-expression/1-nfe-check/solution.md deleted file mode 100644 index 5875fae8..00000000 --- a/1-js/2-first-steps/20-named-function-expression/1-nfe-check/solution.md +++ /dev/null @@ -1,21 +0,0 @@ -**Первый код выведет `function ...`, второй -- ошибку во всех браузерах, кроме IE8-.** - -```js -//+ run untrusted no-beautify -// обычное объявление функции (Function Declaration) -function g() { return 1; }; - -alert(g); // функция -``` - -Во втором коде скобки есть, значит функция внутри является не `Function Declaration`, а частью выражения, то есть `Named Function Expression`. Его имя видно только внутри, снаружи переменная `g` не определена. - -```js -//+ run untrusted no-beautify -// Named Function Expression! -(function g() { return 1; }); - -alert(g); // Ошибка! -``` - -Все браузеры, кроме IE8-, поддерживают это ограничение видимости и выведут ошибку, `"undefined variable"`. \ No newline at end of file diff --git a/1-js/2-first-steps/20-named-function-expression/1-nfe-check/task.md b/1-js/2-first-steps/20-named-function-expression/1-nfe-check/task.md deleted file mode 100644 index 0510ff4d..00000000 --- a/1-js/2-first-steps/20-named-function-expression/1-nfe-check/task.md +++ /dev/null @@ -1,22 +0,0 @@ -# Проверка на NFE - -[importance 5] - -Каков будет результат выполнения кода? - -```js -//+ no-beautify -function g() { return 1; } - -alert(g); -``` - -А такого? Будет ли разница, если да -- почему? - -```js -//+ no-beautify -(function g() { return 1; }); - -alert(g); -``` - diff --git a/1-js/2-first-steps/20-named-function-expression/article.md b/1-js/2-first-steps/20-named-function-expression/article.md deleted file mode 100644 index c51478a3..00000000 --- a/1-js/2-first-steps/20-named-function-expression/article.md +++ /dev/null @@ -1,147 +0,0 @@ -# Именованные функциональные выражения - -Специально для работы с рекурсией в JavaScript существует особое расширение функциональных выражений, которое называется "Named Function Expression" (сокращённо NFE) или, по-русски, *"именованное функциональное выражение"*. - -[cut] - - -## Named Function Expression [#functions-nfe] - -Обычное функциональное выражение: -```js -var f = function(...) { /* тело функции */ }; -``` - -Именованное с именем `sayHi`: - -```js -//+ no-beautify -var f = function *!*sayHi*/!*(...) { /* тело функции */ }; -``` - -Что же это за имя, которое идёт в дополнение к `f`, и зачем оно? - -Имя функционального выражения (`sayHi`) имеет особый смысл. Оно доступно только изнутри самой функции. - -Это ограничение видимости входит в стандарт JavaScript и поддерживается всеми браузерами, кроме IE8-. - -Например: - -```js -//+ run -var f = function sayHi(name) { - alert( sayHi ); // изнутри функции - видно (выведет код функции) -}; - -alert( sayHi ); // снаружи - не видно (ошибка: undefined variable 'sayHi') -``` - -Кроме того, имя NFE нельзя перезаписать: - -```js -//+ run -var test = function sayHi(name) { -*!* - sayHi = "тест"; // попытка перезаписи -*/!* - alert( sayHi ); // function... (перезапись не удалась) -}; - -test(); -``` - -В режиме `use strict` код выше выдал бы ошибку. - -Как правило, имя NFE используется для единственной цели -- позволить изнутри функции вызвать саму себя. - -## Пример использования - -NFE используется в первую очередь в тех ситуациях, когда функцию нужно передавать в другое место кода или перемещать из одной переменной в другую. - -**Внутреннее имя позволяет функции надёжно обращаться к самой себе, где бы она ни находилась.** - -Вспомним, к примеру, функцию-факториал из задачи [](/task/factorial): - -```js -//+ run -function f(n) { - return n ? n * f(n - 1) : 1; -}; - -alert( f(5) ); // 120 -``` - -Попробуем перенести её в другую переменную `g`: - -```js -//+ run -function f(n) { - return n ? n * f(n - 1) : 1; -}; - -*!* -var g = f; -f = null; -*/!* - -alert( g(5) ); // запуск функции с новым именем - ошибка при выполнении! -``` - -Ошибка возникла потому что функция из своего кода обращается к своему старому имени `f`. А этой функции уже нет, `f = null`. - -Для того, чтобы функция всегда надёжно работала, объявим её как Named Function Expression: - -```js -//+ run no-beautify -var f = function *!*factorial*/!*(n) { - return n ? n**!*factorial*/!*(n-1) : 1; -}; - -var g = f; // скопировали ссылку на функцию-факториал в g -f = null; - -*!* -alert( g(5) ); // 120, работает! -*/!* -``` - -[warn header="В браузере IE8- создаются две функции"] - -Как мы говорили выше, в браузере IE до 9 версии имя NFE видно везде, что является ошибкой с точки зрения стандарта. - -...Но на самом деле ситуация ещё забавнее. Старый IE создаёт в таких случаях целых две функции: одна записывается в переменную `f`, а вторая -- в переменную `factorial`. - -Например: - -```js -//+ run -var f = function factorial(n) { /*...*/ }; - -// в IE8- false -// в остальных браузерах ошибка, т.к. имя factorial не видно -alert( f === factorial ); -``` - -Все остальные браузеры полностью поддерживают именованные функциональные выражения. -[/warn] - - -[smart header="Устаревшее специальное значение `arguments.callee`"] -Если вы давно работаете с JavaScript, то, возможно, знаете, что раньше для этой цели также служило специальное значение `arguments.callee`. - -Если это название вам ни о чём не говорит -- всё в порядке, читайте дальше, мы обязательно обсудим его [в отдельной главе](#arguments-callee). - -Если же вы в курсе, то стоит иметь в виду, что оно официально исключено из современного стандарта. А NFE -- это наше настоящее. -[/smart] - - -## Итого - -Если функция задана как Function Expression, ей можно дать имя. - -Оно будет доступно только внутри функции (кроме IE8-). - -Это имя предназначено для надёжного рекурсивного вызова функции, даже если она записана в другую переменную. - -Обратим внимание, что с Function Declaration так поступить нельзя. Такое "специальное" внутреннее имя функции задаётся только в синтаксисе Function Expression. - diff --git a/1-js/2-first-steps/21-javascript-specials/article.md b/1-js/2-first-steps/21-javascript-specials/article.md deleted file mode 100644 index 3dad3c2e..00000000 --- a/1-js/2-first-steps/21-javascript-specials/article.md +++ /dev/null @@ -1,400 +0,0 @@ -# Всё вместе: особенности JavaScript - -В этой главе приводятся основные особенности JavaScript, на уровне базовых конструкций, типов, синтаксиса. - -Она будет особенно полезна, если ранее вы программировали на другом языке, ну или как повторение важных моментов раздела. - -Всё очень компактно, со ссылками на развёрнутые описания. - -[cut] - -## Структура кода - -Операторы разделяются точкой с запятой: - -```js -//+ run no-beautify -alert('Привет'); alert('Мир'); -``` - -Как правило, перевод строки тоже подразумевает точку с запятой. Так тоже будет работать: - -```js -//+ run no-beautify -alert('Привет') -alert('Мир') -``` - -...Однако, иногда JavaScript не вставляет точку с запятой. Например: - -```js -//+ run no-beautify -var a = 2 -+3 - -alert(a); // 5 -``` - -Бывают случаи, когда это ведёт к ошибкам, которые достаточно трудно найти и исправить, например: - -```js -//+ run -alert("После этого сообщения будет ошибка") - -[1, 2].forEach(alert) -``` - -Детали того, как работает код выше (массивы `[...]` и `forEach`) мы скоро изучим, здесь важно то, что при установке точки с запятой после `alert` он будет работать корректно. - -**Поэтому в JavaScript рекомендуется точки с запятой ставить. Сейчас это, фактически, общепринятый стандарт.** - -Поддерживаются однострочные комментарии `// ...` и многострочные `/* ... */`: - -Подробнее: [](/structure). - -## Переменные и типы - -
      -
    • Объявляются директивой `var`. Могут хранить любое значение: - -```js -var x = 5; -x = "Петя"; -``` - -
    • -
    • Есть 5 "примитивных" типов и объекты: - -```js -//+ no-beautify -x = 1; // число -x = "Тест"; // строка, кавычки могут быть одинарные или двойные -x = true; // булево значение true/false -x = null; // спец. значение (само себе тип) -x = undefined; // спец. значение (само себе тип) -``` - -Также есть специальные числовые значения `Infinity` (бесконечность) и `NaN`. - -Значение `NaN` обозначает ошибку и является результатом числовой операции, если она некорректна. -
    • -
    • **Значение `null` не является "ссылкой на нулевой адрес/объект" или чем-то подобным. Это просто специальное значение.** - -Оно присваивается, если мы хотим указать, что значение переменной неизвестно. - -Например: - -```js -var age = null; // возраст неизвестен -``` - -
    • -
    • **Значение `undefined` означает "переменная не присвоена".** - -Например: - -```js -var x; -alert( x ); // undefined -``` - -Можно присвоить его и явным образом: `x = undefined`, но так делать не рекомендуется. - -Про объекты мы поговорим в главе [](/object), они в JavaScript сильно отличаются от большинства других языков. -
    • -
    • В имени переменной могут быть использованы любые буквы или цифры, но цифра не может быть первой. Символы доллар `$` и подчёркивание `_` допускаются наравне с буквами.
    • -
    - -Подробнее: [](/variables), [](/types-intro). - -## Строгий режим - -Для того, чтобы интерпретатор работал в режиме максимального соответствия современному стандарту, нужно начинать скрипт директивой `'use strict';` - -```js -'use strict'; - -... -``` - -Эта директива может также указываться в начале функций. При этом функция будет выполняться в режиме соответствия, а на внешний код такая директива не повлияет. - -Одно из важных изменений в современном стандарте -- все переменные нужно объявлять через `var`. Есть и другие, которые мы изучим позже, вместе с соответствующими возможностями языка. - - - -## Взаимодействие с посетителем - -Простейшие функции для взаимодействия с посетителем в браузере: - -
    -
    ["prompt(вопрос[, по_умолчанию])"](https://developer.mozilla.org/en/DOM/window.prompt)
    -
    Задать `вопрос` и возвратить введённую строку, либо `null`, если посетитель нажал "Отмена".
    -
    ["confirm(вопрос)"](https://developer.mozilla.org/en/DOM/window.confirm)
    -
    Задать `вопрос` и предложить кнопки "Ок", "Отмена". Возвращает, соответственно, `true/false`.
    -
    ["alert(сообщение)"](https://developer.mozilla.org/en/DOM/window.alert)
    -
    Вывести сообщение на экран.
    -
    - -Все эти функции являются *модальными*, т.е. не позволяют посетителю взаимодействовать со страницей до ответа. - -Например: - -```js -//+ run -var userName = prompt("Введите имя?", "Василий"); -var isTeaWanted = confirm("Вы хотите чаю?"); - -alert( "Посетитель: " + userName ); -alert( "Чай: " + isTeaWanted ); -``` - -Подробнее: [](/uibasic). - -## Особенности операторов - -
      -
    • **Для сложения строк используется оператор `+`.** - -Если хоть один аргумент -- строка, то другой тоже приводится к строке: - -```js -//+ run -alert( 1 + 2 ); // 3, число -alert( '1' + 2 ); // '12', строка -alert( 1 + '2' ); // '12', строка -``` - -
    • -
    • **Сравнение `===` проверяет точное равенство, включая одинаковый тип.** Это самый очевидный и надёжный способ сравнения. - -**Остальные сравнения `== < <= > >=` осуществляют числовое приведение типа:** - -```js -//+ run -alert( 0 == false ); // true -alert( true > 0 ); // true -``` - -Исключение -- сравнение двух строк (см. далее). - -**Исключение: значения `null` и `undefined` ведут себя в сравнениях не как ноль.** -
        -
      • Они равны `null == undefined` друг другу и не равны ничему ещё. В частности, не равны нулю.
      • -
      • В других сравнениях (кроме `===`) значение `null` преобразуется к нулю, а `undefined` -- становится `NaN` ("ошибка").
      • -
      - -Такое поведение может привести к неочевидным результатам, поэтому лучше всего использовать для сравнения с ними `===`. Оператор `==` тоже можно, если не хотите отличать `null` от `undefined`. - -Например, забавное следствие этих правил для `null`: - -```js -//+ run no-beautify -alert( null > 0 ); // false, т.к. null преобразовано к 0 -alert( null >= 0 ); // true, т.к. null преобразовано к 0 -alert( null == 0 ); // false, в стандарте явно указано, что null равен лишь undefined -``` - -С точки зрения здравого смысла такое невозможно. Значение `null` не равно нулю и не больше, но при этом `null >= 0` возвращает `true`! -
    • -

    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 Q>I_O+LP5Mz)F}8r03g@W6#xJL diff --git a/1-js/10-es-modern/12-generator/genYield2-3@2x.png b/1-js/10-es-modern/12-generator/genYield2-3@2x.png deleted file mode 100644 index e4064bb0a91f6f59684e7d83acee8ad0003f1290..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63896 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 z zize@erAr^YVJi(A4^$XOIZ@%5Bcs?`~ya-_aX%JsUKQYm(DEuW^w^+K8;f!?c(%{znF4D$XybHw@7+LuV^n~NO3@hRW z+#`c{^`dgegV(5>u+e3aV_gjA3GT~aKM*P$9^4brST`3@YmAU?Wn=P?dQ@!yEY^ie z#Zvm6iIPO_=BlN%x*+pMigV!HMw3>-5ro2Ze>0t*A`r+iQ=hj=a55bo92L-|JyxW$ zSEt8TNXcH?siCtP(~yp5DweM=TS(!;%Tc=2Y}@HT2aM~J00&n=MdPYd$x}b#NpzGn z&>pT+M})wKv;t=R{;cw5vw!Bg>LDI0#fXt|f>MXzS#v6>M-)9G!w2c4whlyxXKcJ{`tQyk5a(^}PA!qM#dgBxxoSdYS$`jK|W(M2uf+^rjPc!juP z1~?v+{TDK6U~u@!x{chZkqVHdmbGX|JpvN~k^OPUi&R{)`z~VYkl`Un7uTDzS{{d z8QzRXb2xXXR+y2u^-nalwYYeiteV3v?WL_Pm7S<5cY8wCPS_)fE|uEXwA$NKrsVOGSkKK%dd3M_o#+tJmThHQF_xwLa&0?FSCNU|FxezY{d8os zq3o|{T!b#;+w8kAS6?gA>bFne3&?7E324@b*1-N0&c zi6HBb>J>Kh3JhGmM;~r#)Y1LPw#0v4V%D{GFkqr@qu+7auNipQl@-c~pQ{#Tk-@C|E&!1+3Vi-({Ciq^$SV7Q0G{e@14 z#q34RG>M-8!^2~PaFWe%WF%Ly9Cqs3dgr0Z zc1AHap62c+uz~y*Yd2KNTd`}*)M8(eZafe8KQl?6xIpVOm9dg!nhe;5%pi5}%TA?B z^l&cx#+oE(eIoD!FPF8u>bl2!i+d zsAfqg`q|k_-K=b^_=?^+V;V>A?R1M@>^p|uj+MLQwqyie|9-RuX;BpU>O^22SZS~NM+Y#he`5`hktXeSZ)3EUBQ!FzGl{vo6jfNL z$9^P+(Hu?EphSOKkMG|jA*)%i$D7#Vzzi>JcAXr|r({s2GTSZrRJwlCFg3cX zZ~vp9R#JOej2=W3|Fp5KkoUs@OD<|@XgRdv2KjpK(Xf~*g#mybZogH{66KY-lEbUX zn)d~jiM2F=l9QN7tstgs>5qeAxh{WybP-e4e1T5ZQ>4e6QbwQ-2ZXU&g%0!3i0GWUUT>+5*;X+k z0?ivdcC37{i=E5dlEuE(Z7bGWm{`5}s4dMft5}p^-Y!A}4)W3k6%;$Y4m7`WgfxjwTTYN~xpD;Gx2(#AmN8X{k zx(y#%$ha!uJ?{xRN0qABq$Sr}b1&!;<(%9QF5QYgRO8Ur{(x=Hk&_6$T(=l7NC&K- zIBgCdRbVW-?Ko0)nPbt(c+Aqd?4@>>xw@4_cb%NE`e)L;AUG0Rdp;}B={4?!a|Ew~ zGLN*Pt}Gb*cZ2#;O5gH*x9UtVGB|dle2e||&RxjYtb1TtIy9?Wk0G232RWPsg#a-* z*|i0<5z3O__`0-+2qf|_Cu1M`1Q441iY+pYEg+D8$$W|ivO8uSeJ}hSPNOT4bW!u30`|e6Zd^B(nzoI;&$QlFFvNsBzenn?7A^ z(hHXSeojeEouC!x zO7p?}HfUV8zumhd8xaj>(^9IMtcnQzXPe+RfXJ}m94a1eI^*UCK@#zO7iZP2-sn=w`9y|ZS=5r^)ZyPj7)hqOI znU(C#afp&czNO*kb@y9}i%x>s07GOk6VYI73}a$vmD2gQ($rSj zihP@z@xMxy*=dO1MI&1!#hn_lXXZB1YZ3s-QA5*qEpYHqN2nHzD9w)7TrS{?{1 z`s^TXg4y-Aha!jcI`>`nb$v~`)U)vGXssUXj|41xHZw~BwF=Wjap=45=c+jqFiDFl z*YE{g*nra%B+-3OzceE z8Q6AobNE003d(Rn4#KhhgjO71D(6$FnHVBe7FFTQSz|RwSJ!Fc*^Tb7>bCf{!TwA4 zZ+05eS2YR!AshD7Y|o0Qf%UfDUYAR<$&Lkto4*&}fk4OpC=JWz2fuLY`W1u}4~Gn9xd^j=^$bmln%LB4^vA>NScF9X#yY@%RZqJcKMSf2 zbd#^tk>@iXblO~T51nk#(Erlm|L?Kv#Xrz7hBMvhdfED|M2l{xXh-q!6zX4e{@t?e zLHOCg>G`clql{^BwhFpt8QJnW$Syr-|3Jt3su$`X({FuNtpo4)1ez>kCv2>>Bv<1H zDicAs|1#izRdNG9TfL3dfCqcq#&ep_C1*#g1swmB1JJ+Mc@*?VLwHceObT@k&pQAy zyr72q%b@wJx(pD~KPdWD5`Ds?MZ1eyMGhf~P))*WF8+kRSQZ^sB1*`A@-*->&#c;g zxA!e-X#Ip|W?{#}AuZ?PFRB6vB-wGq_Ksj}wIzPDy%zBEpBTD32(+0k0W7x_3b-*? zF1ECmc0tiuBE7)wvpF{js(5;^j6qsUiSE{MyV`h+<=73{<3Y=?32ui`c)Q&ZH2>)I z(1fhRuDz9Ch(!Knz9B7$(@BmuIU>p2EhVNj%=+u2$$ z!)~vYMoJr0n~_<`A3*jqf#awzRniA+>Ee;k^!CihcaxX;QXhfcf&7rg5e;hhH2o5;88(p~W>NgZ|<7T@<9j8Tyf@AT@d@ zYxtKCD>N(2_1SL_1s$sW%r=dE&jJk+H&1|_?xpvjN^WjC4c`&`4v7t+MVx*oe8zT} z02T#&TV|)msbs6oS$ZH?@7vP?J_32iDm$;m-FarYcnA|9O3K|ek8K0K?ajfrh+HSc z`uC_Yv<*HIl~Usrns6!3y4@IWS9dWg^#UHP8cmn%NoBqDJQ4&eancKRR(nNa(gr4} zD5VNj$pHY7Uct}K^G!Y;Td%A5{#0#2d#qE_W8+p#QdOW%GtZj>3HqIMn@@NY0t~k7 z*2PY7wfThbf)7!i)wHgQ^KB;~qBSDsRo*L$rnZDLIo{(|eQLZE#J2=6f&%H4D*V19 zg-lGI;Ca77FeT>HwwF%H%Ff!ZsCe45!$G+wq7PTIJ$nIr3uW$HnyR@xX3<9=j`~!U zORu7=(8RpgGwzClWb60Tf<?V%ibLRfVu`!Eu6=rnJ+rRC z5%IRQQBid^ce|#!+(CtlIS;V&&UYjPm zh~W&xM2I`1EMIXULFF)WCh3ndc^`C1TgJ!iFFqs;mi8< zukO&*;AgM}CH`h>l$cT$m$a3glMBjc#{e~O@sN8CFXfGj$KQoQ2Jsj!@Zov(Ml6#H z{0|_R@!MeIG=wkUEkmW4`wi};l>)0#?~L0<*S3sFGnwNHffMPe9nNCklXdtY)u}Oh ztmM9{$84NpGee$Z!hCRqw4m zj`)Ci@v8c4IObg2m7IYa18nEBFaO9Lbjj=`!N+|z1#Pk_w3#-^lFnxAn`cHmhNUfa zdT;D6;qad7vn10Z$PLfiXr%?*iAM^mmq4QD46pTMEj|R_s=z!n5G$5lzwSDMEZU!? zGNfDK1O!`F$9P3(Sm)6WS1yVln=?nsslwXw$+vL$JyP$y{mxD|W@Z|ThYv&n;N|c)=g`&<&VvgpUb1+!~yAQyQ(^NG8(?d@|vVyC45t0se zhMpJmgZBs5T}Nd@ThnO)?`Wj#lY%>)Gg6&9X~c1`BjJ=i$fHKqcHJIcm80Hp zPL^-$N7!((eQCr48gz!W=}!I?$na6NGnyhRclWBGq&T>fs*UFjJGDxqQs>#nX%xiq z2||NV@NloAGBYC`;=cdxmfpF+G`2#t>Ln(3a!JI?Q)db(05yz9biat~4HAgDDcp-;cL_ zQ_TRT_L5?=s-wERNirq4yF(=$is-b*6`$}C4R$ktcxkubfNJw=d&aBNOngy~c6*|P zYWIrsPD5Y3hhyc{(C4Qc}yL&Bh=XkKu;Die>}Q;@66q%Yu+aUXOg)`j+j z!4Q9hsVYq~R9)Ggb$~PP=al)fnhidHR3A9=!+C&%qfVszf?p#EI`Hc&%2u-n3uW^f zc#`6=5MXx85!vK-Tn;GVw-f=mObCw$mq;~ze?{)Nsa0W0e8#DY)~@1x#M>|js4C^c z0|$hkg@ieyP!dc1r$@UUnI zk&zXV&@SfBI3lN#I&TH{nlH{pmTI;h^Hi))yziLSBqduT>y6Y)dun=@u0G~Baa#p ziORsnO20xbPKqMkoQ&Pwv+WUr3({zV+)ErCjIFCz?g#}#j#?N*~TH+YJyl-~rDwBG0E(kH1bQPajt789#pCxtsR{Yi=a=_>?W%WNUBl|#mNUulHb z+kZwgn23!YmWnwQy+psFbU&K*W9rhnh(8U{oYuhH%^$=otYGD&Z2Y5QMF>e z2v_vhYi<=8X~)Br?o5sInJ8nhZIH@H7uv6A$kKL9Av@OHABS7nq?bz;+yVBhnNNBV z^c$ry%i|gGZ+&!}I`D*!1W^W^ng2c08v!HFh6IZv|z~gO)mZA6E&i1B!KP=)!%iY0x{#bhuOoqk) zC2|s3u$bI^g`KKjD+qMo;;@0liSyCpNH`N=Pd&aL_OK;FtrD~2ruz_M!3-i4Z9fB> zd;q${o~MeQRclHP<=}hivE%qmw1=m-2g{r)RM^Pr`m(kkH8E51Ow@X>l|>VW?P*h< zmNGK6y)7sQaTBq#^*mx+TKZ-h>JS(xmn2Zt!}CUKMCflyn~-W!^M`N0>m!H#XCiKe zu17jQn?T-L6b-in9RA%8VqZUwo8Nl&{zHQ#Q!~}zI9XKB?J0c`I@H>Jdy{D?K<84-2#Cap-0I57#=YS?I$92j%Ecf-rSx;p2 zJp~sQ0`K*LrK#@Ac0mYx*T?pio+^(rVb86)jc)*EiA>+Uo1BhDJfX*W0a-oKtDelt z*WP%`ZDBub?}qIe65IKa`re=7Vh~wf&4fFp^jX;6Cifneo6gSX7J-AcIvTh1vtja& zq@4PBcr;?xnFJ>ikti$+G-h;jKTCew6=2Y?}MqY6} zcMrwluM^%(e$YL`K7T zfjB7Z^_#SJIgv+G%lrr*&j)N3`#)lpeX;!ymnv+Wqt*k%C*j{2FCDx_+XrHxP-dGL zpywwSRgH6f&ppkkT7X#2O!u?s-Ve!dlQj(|l1y0(a6}34-o=?h?O|4bK3oT2nU5)} zRlYIarQMAynPYCAZnpeRX}ROLHCEMjO@GYNL!Y3T@A^4gKS!2Sz%T3h-rT_H!lEOt z?cR$;?=5-A(XNoOSCW*`SxbHQxN2&6QsA1gk4xd6t)@7fuOD6&bp^$;Mj!*%1+S1qCW2d0)7~Qw+NAE|*!$?4Z`Bepn!cich7 zQrE-CWx03hMgFH8Y}Y%e(s}R&Vo7dvJi~*_CC(4b*oQ+X_WDIFSZuuH^z;6j@yogb zj|hS~YRmQl$UXmoAi1{GvL@w`d}pEX;d0OycZ9EF4QL$C^O|l{zc{Z4za`pe!fK3- z%kZlR7MdAs{7?ma1z$`;=Q!s{Z~Pgg-KmhC#`D=V7`mM%_8^3TI-|Q(QZI?^dTEfa zCed)n0-{Ygr2<;b^fJajNvpLuGJ3O7Uds_Zk9-M^V=FbCLJlaEda9tx6LHzdoD_Z; z$CyYs^R@1J4j*fA_J#Gna^Hn9Fg-CCq8S$)-65xErOZn=tABmr>tHIC+DC7YAWx>% z>}B=}ZOl%?0)2QxX(FUpwsad!n7l8W^GQ+U`8JSVjV@fOtjKwa(ZK}Jd_R;VN;$Xg zXaSqx(Hm$X?$U>FlsRAsbkw-v>1C}FgIUPXtF;$>J1}Nb1u&#jLq_l$aP_aY`#juu zg8mk4e;GDiFxz)@as|>tEPK8hCf339k!1G8iD%DusDoRWw!1UiIdjCT$od{F4r*!4 zkqUp%f2;WWaxhdXa>NW)^X6y+edNfM|1r&_5k63zfnAt;uu|24|WVW-1B9*XfC^U-a@;}ts3 z7*i?0*UsbdiY5p{N6L6^W+V)EB=w`EK+l0piD*EN z)*)Pp*D;(w66>qm;PB!u#a>J+XA3`V?`mkM^9ZcaU}X`k+qba*^hefbAbXvv2x8PI ze0;u~e(&)fbXBQybgT2G#NU}&H^5ga3m=edxm05lv5R2hZm&9NsF{Jf5BRSaFk)vw-F%#N;? zw;v7YjRrZy#bu?IJG7>hdBgVavc9a$w4-=kF>}gn_P^U1y&sxhz`B!cTidT+C>) zaa%f*lBS!*^en!m8J?Dh`5_jxaFV%B-1P@^ACrkC+}6}()0+zX7EYP%nQ;#AaA zxUF$m_bO+0NZwE+&F1<2t;SV%Z7!C;($XO~;)*8AM%~or_$ryFVG*JOwsz2IVG1_We0Y! z&|!6+5~8LR09v+A{_39loZ+yJ&o3}=X4BRQIM(?Fsu!AL#o@~%qUds1guWEAcl_>4 zk-7BdcPV%fN68R?sAC9*HFIY66i3DWTHcxUAyj#Tt-O{b6vm&4L?Ts$kQ?DslC>%p z;2!Lq@vsr_Y<}=K7kM`C*ZL5%-E+I|EB9fM#{cn62;R@I_(h**Zd$E7(I>4&;}w^_ zwS}aH_9KTjRV?{tdCZi=iuO|;(%hZGK-7k z&EIM`~7ML??`#LE!W)-{2ispOoW2DlYMQ`zQ%Dvy*0D+#I|*YD*~U1 zIWNmJ`(i@1tlqJ$L`ZrTQH`!`h)XxU^7na|APq*P9>Jl6Z(I8Gm)=bV#Ntc*chxGR zOs+QXoAjwBm-rj^A3!oj0^f%R*<4k;utt_j=z7+@&D{AX{m$K5&Ei+D^mtcZUU6oN z1umk zP~|(6k#5PI%rpiHKgZYc>H9 zCi>q&m$;)VJ&bS{eBazo`!W=&;6m8OvXtf}IkezbQER4eII0|0 zS(N--^eVy@hYfP%4iI=Yh3GpmGsAEBJJ>5|WBcaWhQQnea)(DP!gbYfX6aa)WXBYSi8@UrKwK|pD22?kkSvCY6-Dbl8fys&W zmS1rN<)v@MN;SHbK^^LyF*y;~VY{#b!+BYK;Xl2qboxjs*vZ6#&=l9q2ZU9=hr#tm zt;^67I;f;sa&051&S$FBnk3Z$dJKrr!o8>tYQeDCA=Lb9ZD`B)Q>KN0%a;*az^P8eWugy5Jf?V~40iqf9uE zk!3HmCUC*WVFartHXd(JS4}IXsDr|6Ma<`Ip$Fnser7NIAGY2yDvqs-77c_1 z2#{dGrEzz62=4Cg4#Bl?cXzko?jBr%yLNDQ_tz&m=X>{#amT2C-O#)Cnrp7Pq;^HT zcke&HyMCW<0?ljKUX?y>zyGWhK$;_t^qyvY;Zxx9_f+$g-eQ*duBpB4lZ(P6)wAk_ zX?XDH770uw#_P8%7^+m_Oo_Q6vM1B}y@iL+Q?iQ0j)a`+<1ZP`Ux-sV2Bs_+_! zd@o@%aLUCIWj65~iQFnE$k@BetVE#_e!*OJ=frpeQvz^=M5b*rbG451WTJ0rQYaq5 z9VuvAA$;L#JVyIAG?y&VXzbkT9rll)yU&IAB)?D=hbHX4EArKNj;9ro!Up$$EyaBr zlG6_Rf~p_^R`BnjtRw(k1>@&>e7Y*=)kF>TLX~~*S1^K0)hTl%sN#l&g~u$Cq7j1E z8N*tC%nXb`-VTFg?z6je_C>wL9z2sSdwxJ)hlPBo`7Ahz65ivW*tl!nReSn$Ug&zs z_V&PMOr6O_;~?c3u{d3tO+!5VId}25pe%OJMQO`mT^EQx7n?G_^2Ia+ALzEpDX6`| zu782U(&$N*&cpEhDR2HBJo6tuc8KEWTULiIA$WCt6AFJff@hNNr>yYxC@MD-%W+#v zTr9TRYU69Ah!aIs5udd4rHa$JNAKE2Oy4;E@(yn(My#MyL~%oM`FOH1K5XV(innmK z&D)%-w_f4)Lkq|j!$g0v$nC|yr$~n(W$YIr(bE_eiq5?b7f6w$!j5!T3MCL#HY}fI zj~%}F_UQbk{sZv5H_7x@SpWQ}*~4V@U==soTVDg9F3}*>+<|FV<~0Ec5v%j{IU6s- zX-K)LSV%yP7hT0@mne?*bhk1`2S@0Zuy#DR_O-3P|Wg_T~6yHZ+S*WXby z-Zk`Wi`;iS4;LXJ(cYeBB{ec|lcV?f(nqy8@;Rz%b|&h)ooK_29B=m=%4nR-8yk|Tdzy`ewlKGSVunO_2#ln{H#)TN;6l=VCDRLa)gB|dJlD=#XHGhb=_cZ zA$uT(FV1c12)_t;zaCakzx9+>BGoR=h8ZRn_3AqPRlVdc*SpiXmWwifS;9aPkma&6 zl5A>C+4jPuy(;G4*`|a`Z<65x8x+!*Nrfp2=VfTnC3)RmM;qKfg^}=$`uI&|SH@bh zs4Sj;S|#naFZnAQJFbmvk4+LOA$tjw@k?oivbnjtH-$U-=rYZu`&?xBXiPH3Wg`an zeM3Ar6_z?GSEEJJh@U`$nJbVf$Y=kI7r86Qn1*Eo6G7L4)&Q`~(?l>Wsk&ggS`Q`j zzA6GOKF36xhFbJ#YtrGf)Txe7arVy!(HXcq{ z*;C3Q9^LM$>Z#*`xdRBpHK$W)Z4$y{wv9dt35#w$J<@Wz1AlCEW-;5>CO);ovJ4&M zq(h+|>{weB?2MQRe&8nSwM~|IZg{&@njNrBrn2vLn9xLW1LfHmz4b=hXnvza3gOdJ z($HD-#s-WexW5-mDS>k@U(Nz~XbE3xu zLpvrAPx*=jzviBo;Esb~-bmoMtNdr^BtnO+sN&Izj@pe}vo~Iq)~8_~*t@_xFvqjChQ2 zp_u6H+Z!u}l1+U(l_nVL<>-}9N%pq!N<4ifA4y~JLf1hx&2pB{KpR3t@6wy@^`*1Q zJ)UB(1;%a2F<*=|L|h(f(lW0z0Z5zjZx*WehVW%IY9|7F2UHM0SXfjd?g%gfWwCm@4IKnF;0}q>kvY+%XpV}(aJtOJdcwINX zBG^RPs1qi$e6-wF{!wfdVRL8a5 z4uiZZkLSv`214`mo9rxP;cSl3vk7~vL^b5r#dAw{xt&XRahIZc53&*lz7ubAG(4`5 z$PWoA)RJqk)x}sOPR+hyC79Rl&v7lLt;h0O$!f6DDKR;nw~-y4t3htvs6@(`06DVK z(4YgmfV@LLn{N`ONVbARBl`FpS$VkTI$AL0uMtb^d1DkGq1W0SMIa`oksz-=erZk{N0wU;q}L0d7aGcU^5*Zvgf$g zmCuENODBz_b#SPc`mD-gNMVs*$Wz^kWt*B~r6@VoY4%!mDGy}RSv-sumjH(~zGc(J zY9c4;{$a0i^m0_-MTC$&lA1+kJOQK8h2Jv?`p1h3yeEbSB!Ctg!cbiE!kjBU;nWyqm!`;=1Ms3;tvDNu}5G@D;e zmEWj7@u^?QS+7bd;0vs7V^%7^4LIcaxiSC+Tbg_EK~#U6V)0*G=~Q zU;WXtSX5WdZ`)jCv6J}r*oBmyQpAc%G+HexfLiFhoEskPFVQ;>B{UAs*@%)O#ShN> ztYtJS&^$PA7EvYKA4=&S?SBiO_Aq)z)Nnv7I^w=-po;QP;X(!LH9Bu~Jy@ws?KCwDsE$T{iqPm8qn z`z_(flrS4;;RY%W#n*lG&M|sbk*|@(W6-G?r=4e zhpq+o?vAXy&I|>fp6-|sa-Pl6*$92G=1gKU+PWFh=j4OqdGi5TW0}Gw`;SS#!22of zqqqB2{m|OCG9#szthC;Av zq7qPOAhMjgeiWDbe7xwBB2TajeM(5r>>ep~6vw)mcA z1lgfB?}Xyx%sUs^nP}?_wUbQ|rPE<5%OIRlu9B`Q!^!RaSd~-D51jTp@l(vYX7|mO z73y^ehK_b0=@#UAjZ>3aY!gT-m26xbnTF}LgN&KqRdq`>zBllMI`Fd?J@46cU9P;1 z0kn8&(zJbzNSyk@7Oi8VBr*(X3eB2g`!cKY;2+$seL3Lu4mY2=z<$V4;A%h*X;8g!P z_Wk=ZuB1Wq3SKAs6|2Xs;?|&D5x&l6qn4g!E-FE8bOuxZi;HJ=k%BRqK!SMU@OAA5 zlb>8~OS88iZ?>_=-c7-J4%RX#v;ytb5E$_DY)_Sm{ob;7$WAV_*rH817IoduI$N&m z$3%i1@Zm<>O*@y*@HHh)KgRNYA+s|DZQ4I*?Q+$cOF%&PV+3`VO_7PF-X&qZ?5$9t zfU5d6I}AP-VV*U~Hgy%`qAhOTj5jvz?XpUyPTovKk~5vf3|fcVeT2R5Lw})o*k-jA zl>4~+>~MKmCS7zFoDA9~A)U$KaE~;oT;4Wb8ubCZ=wY^cMBQqiDPGgVit3-oc8Xu!TI{S75e| zd_G6U)OHG)V#%4v0EjHRDn4b+{l@I&r~1r+tG4e-c@GR+k~(ER5iN*Do?$Y_=q-%3 z@Yz6xPvMqG@c{i(ZSwwiIH}=HkpeA7mqx&u|NXa@?^01_BB>3DvXY-V?RXS}*;Z!p zV9ivlo@v%vUin5te6L{@)#qrf3T2Csy*Il^PiA>uoKq7Pgz@qsDhwKnI< zp)HkJK=p4DAsQ*R8{hBU-wAx0SJ$v^yZOYD_d=Ex>fyBVtEI}u!~ArNHJhhG^2p5U zXQZZYq0`v1rAlb9FaDB)0YwKJCuJE~(GUD8cZ0RuaqtM;VyaKM%!s;2Q8{1w;FOoy z-bRIhELP*B-2eahgwC;%tIhPL_)j-pca~5hd!;U%-J}kwE}s6@g!K4@!aY^n6bv`Y zaoI(HxzdH?QCfyQ+z~K(SLusRBlYQzZGir0^wfR7cSKe7caK1!ryMWKm7PFy|CgDp zu-j2<8!NQ9XLQT2S#MsXyRIRD3(GPD%U51Q^?M26iHlkPWXY0U+6+z#S~BiQ#p9h*3a7r_?s42D{LaVxvn})a(CCO^`yW~JTJ82{ zyy$REeOCAeIa-9Af)cpe^<^@A!R?N~ljm3F;g+b)gV)GcO3xl;+!JRU^Y=@%|! z>2gpNW;@VOl-6h*)Z5=Ibp48)t}t8DxZoifceEoitN>+Cf;RC2iG@uoFWgX`v=P7$ z8YYWEZRFPV@^Z9nJ~U6xgy(g9TCK5Hr&Bq%Rh@0ioTxa=?st)UZuJ!Vbk)zcqg4V5 z#A*qT8Ju6&O%$H<6+-2R(xJh5;Y0c%o7OfuwC0f_7W=@V&13q@7 zF;D|)#n#mhmE=6u?o^i6$svt<`mRr21m7c|QH76nYX-CjH+ekFoIc1Npq43J-$eb$ z_PV-|wtQ0D`7|-?MeY2$Q8nWtL&8`Zt{dTIymHX3p1+&@39YmclS30a;}^(KPUM02 zZ3I`c5&!2E_e5dEC%%NcqnOKqve)|O;@m6Q76n;otwL^TN5It{Kb>!#R`+h{b}c1u zs-Qc>1i_pRlv+}^wT3=CYVvjuNxpiLGQ^tozjihFrmLBZO3$u7VDR+-Z8y=iCn{S?nfCa~c%w+VZZS%~nTH zQcEoBuP`JplLoui?!)$eAkBxXaj$C!opMB8?IM@_nM$Iiiiq2wSBN$Gj z`>uljd_}}zV5m!w5Jp>A6~;}Lh_zc93qO?~BBjC@Ze0A*(C6vF|KC5alQ9ypD@ni_ST+jL~&Ijx@Np zU?gJMz4k2UeyIZ5BzOk#du(YOxZDa|mK|k1()T*NKb^FF+FK%+-hx0;zZ$+SYwasm z`e}Z-j?PBQG{y3JYUA((pmDE+RulU{eeVszW61kfo8dG%Su4v__U^VL zw?zFyH!M}FoXH}8Q|p=b(%JA?ju)x~KPO)T5e5zNCQ%xRZ$+`bTiXMaqf*SqiGs;! zXtPXpX{c%Q@^kUz>9v*Yg`=%7Oor}xgKV(!z*A^9b;c~-E1Vrp0n2UA$&l@Bvju2v zSyUjp&Shs8<|zK^JQ$;!7EpnSw}?n#yzHWRntA?xhRN-ujmhikFk57-Fu9{B>$IpS zsPRp;$?MWN$gyRN@8Y%y-TUa-m@M0XDmZssOYh0xDc<%=n#0>jBjZ60JxUSC<7lbf zyPctaOI7Qrf2P%GrHOdb@xb2MO;;2+J4HufCojE#1UH`Q&oE%;kbjF;z5NJ#8m)mj zWSSw#xHu1FyW6_R-gfaS%I1^fR&CALFNr{-OfvFQ0^r;7Hl1TWfr2g}u&W+It@hSe zMOJ*zKI5*N$7+99H+iK|ig|6@YFRMPtQs9jiNkYowi1+FO~<8+@x0oSn}64|j&V7I z9qoO8HlgZeYPz$be{0oW_{P@RoRHNp=^uY5_)4US+tGcyQYhQ`GNg*@jlV7Fe%xDS z^YSA7b{7OZTniBQrpi)nd^^64V)@a2&;^Tc`)0ehxKy_5csI-Koci)hl4;51@&a>* zaZ1D(Tb;wsV#NdIiHT?J+hm(&&i`Yu18JTppMcGgb&+82hh8C94A_vagw*5^lU109lF;k z*t~~Rmw_L!Czcl;=9OO!7rUCC^Bq=CzK-RaCeWIDKfYoE*^y?udYWdEmxMS0OrJH6cbCUre&q)Jjw>cR#4`;%jKpP2bE#Ix@eD3 zjQeud?@$H-Ou#!xh;RJA)pGBo^)s3}f6R}0zc`OCNADS1r_GFA|IF2pp1C(m+&WfM z?{5|OXn8g9qw7{LELR9^ZAZB#>GdRMQCTRNE|t3jc(x3x$Z%++s_ac>S-afk!seq{ zxtnM@Hpi;)RG?n_z(g=sOU%{#q9m>{kU!CNrM$I1xbWGKQHg3%i~0TZ9UQYjMX8AI4V7hFuO|vEkg3i*@z9~ z`2Hm#Iz3HA*0ZK`{ip3g(%k;6E3wOVY5!v9Cn2&*K1{gw`LU&<6fd} zpE(_6@NQP>lI~fj<#UqO69{JwzWit~m$8YjXLviw7`uu4I&*IwH*eIDBT$<&nThRa z>itX{a$2iKao%91^D_{UN1lQeS6r&2LAbL~VVV8lpsMYa7lt7wJ^5tSe(yS%FFKEJ zzHP+%F7z0FG~&Y6);;Z1Bb_`Q5kHqGbE_b_^=k7y+pA?HkTj$nK9jZd>Wx0LcZ%X# zjo3{D-K*g-tmpyd?P_j|&DP5;$zZuu!g&ALTdi!K0xI8k)qTwO=F+Ji`WDo5%x}4n zu+zMK6d|kIwKEqwO#3REZyg%lQMPTmu-)aQJwB;{E{(015VcxuwUYET|Lj%c;UW1` zRAfiP_TZ>&m)lh_!_Jy=0@raV4-yOk^YJ)WJ6&M=C*G- z+`>BhYjV04P~~_+ax2L&#!~Y7mg=9 zTR@Yp>iq`FLbk?LUnG7-O*a0@oxQvJH{m>|rCO)K51D&VZ64D(Ozf|^%drf+PUecO z$8UiLErwjCSj|+U@fTV~$X%|F=M!xsMj-?mD<`I9RJP|&81ksPpI&WppaGL?kYC%f z>|6oH%apQ(%fVn5DDYf;nO8h2bD=L_eUirW$FNB5p48A)e9B42@$hd zze<s!T6KGQ zRQ(~uj=v+Xefw#Ru4BI{Bl*YRB`pBiSSYZ)zc*m_L+Mi5pc5o(nP?+GYBQ@nkEK+cJt)`OgC9<+qA`V}{RTS-XRn&1Do@tO! zDJs^r7ed8Qii4jx(vLY2CPfW|m`=y<(Xeh$$%{M#x%lSEK)p|WmkGqp+)cK#DKDG! zs=fGqcjCA?!xSA*iqUWU;>Mv`X*e2)JONcpwS`QQM9`zQp9c z|JUe$OfSIC-!fVmejp<-3CD~C#sBV~%P->{NbLu!*XwIY&=2pXlu07P-+w>h2jIZ! zjo7e9aX!NTLC$Y{NF`T|&sLI5CreqQ=-I=hev`L6)cxi~bTCimny;9sv!DKcQ5F)h z;1wKw1l~b;%J_7-68QCzrLb3gCZ))p5e-CmQ|nM;*Nw?1CV*9fQ6Tvm0RA5MH^ImC zLz%NjFh0US0w%?CHc~~ajLVZ?f)rDQfdQfWgb@)krkn6nA}aXi280MA^N7}j3^k+! zh?WLh@ex*@8KE=6j~jr8ag$yYLMUdUflRg*!~)2Mq-lzFuI7FAgLfj}1D(O(0~;3` zyg+@X*?n>tA0HtfX{kyix+Ia1c4^5p>_RG$f{RAHb9x-huPjI+tlz+ghbj$;$aV3K z^ofXKEe&CygoZKH$lHmKvX1u+45XJ2Ud36HeKskcW-4=(>~d)g-i*Z|g<`%!Lr-aZ zwv7UoR(7lqX0}>BxcADvTpr0TZGDISvy6AX-vRFgus-KU@Pcjbh%EO7OToHDjkAC$ zFBvZueYS7094%sO>Q>a z{0Pqn;AtTL+{8H^1dPI2jqorSY7k;RqnOGk6DH!{5=JqBDlR*BUrOs7Jd81EhWR+m zdQYEsELawd>cZqf>Yevv$Lt+T*)RNSFJw8X+*Rc}y-jJMOGa`@21~EXv|kIJ5-^e;j1w(nIn!M}(3A<*O)Im3-}7AcV1z%wxy;` zr@S3n7D;m!;c=(Z6=(>)fJ8Z{A6sg9m`n^H`|lG*#?aJc(VxS&178Amec%5->`{;O zTbgv<{ktgEL=9^aStm+?-NjrG{< zC?P)*+NJ35#~2k{kXKIRzYa(*2S(g`l8`+x)FI>E>8e)LoUSLC^SCfZR?$il)6jgJ zvXDnfGWIm^K!%Eyw=5@StQBY5iX#G|=LaaEp$?$4q%c7u(_^s!AP+N;5Uf1y1LZVR z^Qea!T|8)g0m=pf7=Jt(AOy=F6SUu*rwKrmfhsTTk8OP6Vx$RtFfS;g)L~{74P(V7 z3zdcbTuxU&zE)1o)I`6TrrD`%YQn}f3rhBBNVQt@y5>AUQo&tveCUzS_UhDs8|g&# zZTFStXY$hMJUE)jgrd+*$?k7rE^8JOl>LG9!5Mmr^IzB6{{Tjq4*xeaFv)il=y5qw zkK4O?Bo#KB#i*&Gi2fRY`KE;d?$z_+HlLRwZOI%ZRdE-{NZZk{A4Mux4nqJfa^CtTZ6W=!7*uR%6-2*m~Pzvi)&#}05L&3 zr71E*m=BQci5Oo_C3d25uncJUvI&{z`>RRg$A=HaaUyfP_BpGtcs3GjmLh|pX@yoa zbzO3a52f6;$SD$1GClOnGUm0sr_c_9J98!IkbmcG(OB)C6XxFkk~3zR@Aa^E0y`A- ze+~rz-!3AKk|QjXU*tPmi_P-3&f)4T-Z)w%Eh*&m^t^p{*+?zV##Csa?Tur2oW43X zo5f~Hh%wb?2mcw(HIrjYNL#`qHr&pd7X}1%X47lmPBh==pMv~cK$*^|KtMxcVv)wE z1QE|o9Fc2CPT^lXZHT<{V_p@(dHDdrhmwO0e?aZgXsj`wC4*iziXuj(eKveW*>Z1X znb*`uwq_MFITj=o^%WyrctI5>4pBKW%T>X<|Hf_gH}eGSR8-J0sKq-B*m?F#lFp55 zM4!=AS2O(CSB9U>+ROZ?)kOodEKr6gnWOb}sr6-4>*mGd3#9$lDm+w(2^s(*ry29bq`G`k^Bt*u`zbW%Qau&9M}cc$6Q_iXB&;MNNcU(U}-3UB1W2G;*W3hh7>K zUEv@aFovVDMJtUrL0_)SVlx8!a*2J}9Dw@7D|ktbcd0qNI~H73jjp1u!2LKwSBiYR zv0IeH-sU|KL_-A^2XE>$70Lp)7d5K5g7W=~1Z0|exYj3ynnH^CxF$ArCVh8fIcNCD zzbpMm6!`#7J`fv0Kp^fDcBe~~-~4W5KB{Sl&%OMH44On7Q~RaSGFJyoC!n)tCC)r6 zQMia$pZta#XEBG#fj(D<_I0ws8JNafHiD}tSka&~L>U!yuus`rqjJ-1KIk-R!`?$e z>LwpDvUu4(fQMYZTRcMPkic{7x+iX|+)H0H5Jw;`I{1__EV}@nkIbSSYA?i zGwaep|4mkegds`LkO?hAgGMG-trDB1IZ`Oz{X@hwX0()&l)q76oS`9mqA-sRavoKb zJ!~gZ-pNhba9;^g6PhyXkK(xu<#p0wkdh+P{x{_<`r)d`s7`ifme&jk`~}FPVj<%D zOy^$-o>x(kGJXks9`@u6sm@55l@24$=XYp4f5ZJdUs^B-w5fl;_pK(?>yR_6K3z)c zPtL%mo>dwQ7inFJ852XLiMSf$ zmX)<4?ExW|KO|?eoGsETa*SnWiI=jRtfmxdIx73#Y5HRQE4aGvz!V0Yz+v(80l})t zY?Gv1Ih%ayC-Dz>JXAAaoyO$_*00x9+~omE8%UL{zVWaT*J-hMS%f=ryga$v|SmtaV@CT-r8J%crIvjYxUggs5po6mEao zhh&L=5-9Ea&$uCo-O*`?m|~9a!IAcNMPIG0YU$3sFTCYLpixl`tq60fql}8|X2(rd zJ*}^hP(7nvXoHozOpDiT52Vw;Bx&-=ja`BBxUp${vW^F1Okgo?XxQR}x4u|_ign%K z79J;*qoTo@t-vxZwSnTGtK}Kpa z__%}#$)uq)H1d6i&FhK@Sy!70nn7Du#66Qe1qDi$wW2zcztolb`bi#)AIso`WaL+W zcUlK*EBSmOf(J9Lm!sw5C~rBk@T~^RSl`JmC=D0pW^ks{GYlKiVGYD_3#Di`N(096U5}a@+SA?2y^iG7(ne; zN0=kL>f<>05(|N6q!!XE9u&r$J^!jH#Q!j|n?u;Wpln&*)-_z8$(3kQMk|S$o|Xq= zs|faI&ER(SoutaU`naM0_@`Bg$3q+m-MCw(Lf}UHn_+LDPyJJ!+f&lP$QzMbxVr6f z1B;-`@bu<)eP1uICI_=!05AB~Ch-lgCxfBN(LW)~^ElS!<}sCglXl{^EIQ%=wlBpL zPo=e_EQ+v_bSUtc^ti1>NRFe(oCtm@{shIZ2Y@PA%TBG2P`EHSKs4r<_iwW&5KC10 zFFu)osp%)TyIGqq*yVAgs_`CKN1Z#_18sBC5mKexAKYclYbzG!JsNK^Y^)2W(wH4P z$kLP4bJOVa)wsMg5_NNP?7`YA8gWuOE7A7(8Av8DlAJM`Q%75`rDf2K_hTFB9XZrr zZD<7p)`nwp`S~xT-I}4spmC+q3x7;cb@Q-AEqt0ZDb5E+PTQ)x0w-8vLO&bU1hukZ z44tAZjxMoGhWZi^u*d%&kuS~9=3*CX{xXOb+ho3tP)OIpJ~~eqd{CwBq=ol|?@x#T zml3G`fdno`{R$P-eUV9`(?k;d(bCp|r<*ylxp`<_Izq|LW?hAWZROoIJGNnn4XHQ< zOWJWPIU zX?yY%0!1$^%}MI@!K$c~py4$>6E?4Aj^DF=J>G`Z2nk_Ix>TSf@epZC!l@1|0a3ev z{`Yt;_^=n>9B}r*O9xJGz8+e}QGXyaVByF=^6!k_|6_h1{zWhmAUs9$yS^iT`k4@m zrM)^wt-l*Cgwxwz#~TSlXxZfHoR#}qc=SikOlouSqPwz&NukN}tif0U$IgZTeh0Xk zu>S?(q(J>E%~=;Xe@xF$oX~8t9xwEBtYXB||1T$H{RarF24=R=P?R>=Y{B|-s&*DO zN#rp|)V;*WNgKysoU@LHoga_I-*>_J4Ncx;<*Aq&?VAWLM`VPr&bA1rZ5ZkeW3X!{ zyo1yi<>#?c=(Ik&Eg6YQm&M1!8;0|M9i)u^7j@vfCIn}m#Jx8|b++wHGjcKBbJpH! zCl#c8@+2ad3(qANHR(h%sRUiEzbo9il}{xVLmrpa;poU%cNv4^rAp*8_LQTH?@dqZ48eAASQG_vsY~=`_U_N^=2?MeQ z<9;w?6ivGY##g4dRL|lCbNvSzA~0wG7!A67PxD+syVKawEJwq+cX;G!^_yq5uANJS zGqt-HB0Tc3gKvh^U(;XXehKm5(2Itk(qW_jz>mAuRxv_H5y|MQmikB(BSvTsAG^fM z^<&)~D~6bN4vQ)@!pa~XTD7isKxcA7N2^a5(<-a-(~d9L)IOO$_35n1abB@il#&gD zOJ}>l6$b*b6Xt)Dbr=<}eb%vCU^K3+-1}#aI$l+-&eL^y5tW_q2X6NwjW$>Hfs{x2 zvzogDc6p(QEUB34DiwSUokLEV7_n^a4M}nvk}#5ZZ^<tBOeZt0S^28Jlwl!!ritiKJWC$puuYI!rDiV1H1gpas%9H(2k~GXKN!TB^{2Szu z|2Xxd2tSjXd*?-&lZ>AdHD`K1+k8pOKD#AILdfPnWZ^(Y@twc_q5X3m*?fc?GzDvZ zqNnA}dA*Nhr`5L?jc@L)0{F7FhC0#5tFy3Ddm65LVZ>e1IgzDH!aB#N)>O69$bCQC z^?6VujZ|zx$h`E*%N?YMax&qurE{C#qBxu3%%P9bdKw?GDHKOs+o|LQRw(TGoCJkg z*m2sGSbX_vOg0h?Y>#1#|HP#nJ}Ba;rTZt{azek~*U0Kk=cU$mn`ixwO!+hy{Zs1ojMeSa{kTPZp7God3MI3L(J5|>pqi2XiS@caTETN z8O9*vg;3+VBBkKl`T-U-T;{2!h}CwAwUG!RlcN|xHvhy^0j<|E<-teje-sLY zD1WU_X`KkF8l227CAKMND;>I@lK6+ej_j)kcC5pfDT{sCuXlwNPwAb#GRehNpd|Yx z6d-b7>F%B6iV}H+7IJ_#i3f@X>8d3x{)t>oXSF85O(=vgxq4$qd70^Yda(P&b zE!*p`#gFJuY;bPMa~8hr z@6>FEDJ#~cT*$0jpxTLz2sq8)&eon4o%%KHprBE7EMWdv#@&@Lm?fJe zy~{&nu~jDPB-QYBC|V_}T_I^X|L(Of9Y5p*Lw&iKur08D5SojTyN1|Jw1bqgil>h5Kkht{L-Uk4n8%yXToBR^FQQWehj?z9f>qppAyM@c(weyTsv zg@nBb<7e&jmH{p!$W`EkhJIYxx@cPUn3hLUn z@=FTQlNG9>^59|E^5`_m)i4OYDS2hZqsLN{71{j6L>HIEeR_2O1lxXh-1xBZ&^LcEc91v z`SAOozz7K(eokd35sy=e6IM8#2Cp}{XnCZOrmIx(@YV(n${G}lG^_c{rjq=8E9qJ(NIway6HoTY3XsF1zzCUI4rRHP54kyWxR ztfKNP-06C%0KZD?x0QOmR$O$XSZuR8c*zySYKH z30>$z833k&n=S*%bp<-0>9wGygq7wsFmgEnoy~ZltNP)xk0t#r?&0wk1z3ui`VZ9s z`e2G3M3}2DhQC&}8ZSRZ&IE~8UJ`u%m*pTMeJCffwu^YCAz~V%n1=}|)Je~dVW_?Y zKf8&xJ9>oaOpNwa%<{$RIG1G-KNAah`06;jB)Ah3+^UHN5ZjP!@FwY8M~urPPaRm^ zi5aN05|iofDN6M!badEXkV%-VfRN$CO?6M^1Qm+(^Hdbu_SbHo3DuQeP6|7`=A{Qv z!cDvw+1`#CXRi>7yb=eIYeLZIJ1Y>yJr#T@`==tKK8K*$2`)VtzNJ^^<`vT5zWr@t zI7 z*^291>xu53_i3*Dw4>f||BNK9SYh+rb=*8}qdMh*wz*M4d3}fW0;b^A?Xq1Wy2D9o za%9+Z)f#B#W&Lop%a|+S*acyJr`M9J-%d8VRr-xPX;$`uiib96w;CxjGjQd(5*aG} zp1AjuB8;}|l~>o1r;6$l(jN*3Od>#x^%U+E12U!SzF%57DzZg74F*}+95k42 zU!4D~mHY7Lpuji^P)b)h8EYq0Q6)l^tt~}{-<~rbGAzHxbwTOSr3-J1cqAz+o)%A1 zR88U<=A=?L@7R>;6N1MjxiY_*>nPdIO~|H+s>RC&>_i%jxfx12zgDqL+>k^|hlG4p zMM+XWAs%m|A-zbXnI3(A;P*HA!~j6ha<2E7e5OMVn}AnFGv;k4Q-%INQgj~_xlhgf zmNwbt;q@1{CC#^9o)SFRUl*LQvTP^#&y*RvR;gh1cifdJv^#B-vOsXJ>lh@$i39dp zheS@0n5rF$cEq1&hJ|_=5l$Z5pXi9vxT3uePMC)N?#^#%$mIivgeUxZWwL}n<;NX5 z^NuC>1cZNL3;4n#K-@>0_I0i;4u*7B@GR5f#uwPqQn%JN!c|Lbh3>H)$wt(Tl6 zWKfq#wB7D5xJj;@{&deXFF_TPiLdCaNFf#A)7L(1;47(BC#;*L>6fIn0#-d;3X52} zwU6zP&0YL=7Qp2)khkD3J=}-+*epL!&pVyfGpdAN17~;Cl4?%xEt=i?PlDSBH~y>Q zcatJo_$e(*tDe^G`0_qhk1S+z;z>%gT?v0PML)hcP#MPkr3c38cEJlXsr0c zv_kZ@$rgi*YSG@v+Xf1%Bm$=W?+*FObek$VzddeR(($|<*S&eXE_J=ga$hkWn4#IS z@9YYizmyBr(o4($Pfl46&Doe52e0cz6lv9-m`~VQoknat3ZKFwF13LtQ+O>7@Kk5f zqm1~aWHr-4B5{gk_q?!2w?EG5{zP*hHW)LL7T$OzEAudxy%XtMkxX)we+i~tpqmVB z8afNOhpV9KnXf&?{SaG};Y>P?jhkounxzx%lmLuaC$TG8Eo>rM+L1<%PpnOtD1Jk5 z2TE6ca~GH4%)W-ccK6q*%+SIxor0epZ=qdyCda46L~)^a@P6W8Djd@gk6ADHMf8PF z`RZ)XT&;DLUH+!6Sy+YUBrypi{IqH<^Mo{Ck-2T-x64Uv{KqET2E#9#pZ_4~wy%`p;Kn*Ky^AaqNkGxy-nCxb7W7bcIhENHy(5T0&=CNrmEyhIK~zg{sK4&Ms;0 zDl?L$9<&{JImt?0@g5wB=GJ=3xZr0N4XCv;cM?i$k=nI!E!E~+8jUwm6-w%Jvbd%|-k)|s%SSLyp%*k+V zE~_hOuKQ?F0o~K`0`||B1N*7O;Q1<&4oimawSx20!`*20Vh*ezmb1=06a#Gy) zhBlC5bXn5`<}Ez#-NILWkLpnO0)(*D27yxDb=4<_?UJ9#?N-@_t487(dYli~!?nx0 zWXqfu2ctD~NwV3`^Ew+eD9oUyC%eC$P#Abft#4tW(i6@PJmwtrrT`GO@039OpA3f| zKn-(mgm91@Og}AC6G0w^bZujRAyO%um_za~8=qKT!M)=j_8k{NQqh5gEL0ky!_{4# z^HhSttmuMgPO=VB-0YS#J3+N}Ucx%&Qu0R9$>BN<{2GmH5vS(Bh_U;1-<7;^Ygg?s zHg*%xZ9DF$;bs# z(?}?^Lh{ZfU(?VoQY9FG*{xE(Su;!usrmG_5mS5>WV@~~WpBS8V{jDt{ti4VuVlwmbSlgqA&UVst<)!&= zWP(D2So?LBP>t0v+@cI``C_v5eb2S;Z)Eo2*F!ol0U(rDLVH<8@U?U~jLelBraV!y zRc0NXs0?;IxQ4$7GT6z@oZT#yg|};yjr=viJ{d%&j9zdg@7|&LXlw^!L1j1KuTBBv zz$`Y1^0R!3G$%U;E5SL=%aNlKZk@HNHJkOfdv=e-nLAy+3n~3UZf)ekl8LtG#;)>P zM_h7nlNqdmy6d3o>pF>Oj=tL)7z+CB2TOHv;v^_ne4@T)NIbR;kP zKy4CNjyOaqwFQiY+D_i?AQTiHZQhZ;y&-ec6Vexc1y^RIfBcAF4qO3pV)E2PH#%4)ejs^lV$**0 zJYIz^+_Gxl+du8Rdp-V{zE6j)Yx}s}!JBLJ4?e&L?k;mAXA*!jTyHi@h9l{=M#^X^ zxc7wngn$2OHRAbj4IKoGKgILUden}Am|Y zp!HU!i2sHj#P5J^1Q}an1ty99%V~nou*`bA%~Y!3nx%m;ch7&@00Z?+Ax2_;OkbTs zkhz>Qe!~$nLgJT^FsnbFmjnn|@nV=>5N1?j&#%>SdX;qCglmTpDfYiV_JMMYH`&4N z@&t*;gpuqqf*U+E=*i@`e1G#_@Yf)O0cKFQ(U58>fb*u0G)?PD8( zRGBxu>YWc3#jl5nWY5d|N`HgIJ4jj>s0;wm{F6N0SZWp?CUz>pcO^YWaQTPWUxUWh z2y>kO`eU3BUCUAUWCGtpW;W6XnCa7Z1PFiN2dIYGCv8Z9(r*RWByG3hVGWwaYw%+sYZ`k+s0pz56iF<{^2~f@| zk!XIB>9epGS%4N2oPzn+IQ!u7sM^RwP(>}M0K zIscVq_NgGo`cilD)+hH5IgVH}#1F&ZHvhWCvm`(dsw6;v{|Oo^PG|A@?#rF^FC?o* zC4Yh}B0p3C zg7N!hWe|%k(&%9}DK*pj9>PvZM-mB5gc#+4>b<%MYIIm%V_j~MTR3qRa2-!+p8;}* zE89z4M{T5D`4aG_$BtMJRZg;(mzM2*{joK@ea5Bz^>L+Za!hM~L0wD$4h`WikDSB! zh5>Ck5>V(Z#c(x9;D|fxflO=qcN8j0FIizdMoA&=J$5p>wY8$$;Lh4)7<>T1M+=GZ z+z+}Vh;u+YSc{t5(|%TYqeF}!4m!qfyc_+t)+$#E6jdke->x`tWlmc}a{uQGvi#t} zbf~0w*N|#rA*Dm=o%KW@Kw0766r?*F3Q{LV;ybeL@}sSLJgvgLzq!9b{Z!Wu<}O;) zR$c*ncAK+6d69uKrw(Zcuwg&iZ&jkZ=B%%Dm_Y!km=T$ zcTE_K-%PmaT3%V>K~*~**D&C?B-uw6d-?g$>VVIe7x=;14s$ILf2g-P7 zRG-vmWTfUD*dD$HH^0*xt_0m_#HSrFw6Cte1p?ypfB+F-l{qI6K(cREX0`OD7_=&h zjPxAE`el+5X$mzCt$p=e+gTgvNjbgT{1>tQlMzP2M&V&P5_*a@x25KS^!8qI(}gjy zh-B%3?uVX{;9$+@X7FcuRI&HEte}fUEkL{uC?6?8Hqb)5n5M##A1&$3e_N5Iq+)eo zkpsouZE;-S3JK+pm-0t~UM{&Q(AI%dQPGSivGOD$MuZTAD3AKO^fL;AG$7Db1v7`fBR=ul#Pdbn3hD>_*(TtQm*LykCjs7}5+=WRAw! zhNv^n+%(!=F#Sk3a(!f)0bP1yGJUMSDv5+d#Y9r@W2Ab!1dV4Dh8#Gt{9_7f4n&5V z%dcbqqc!rahxZ?fT|N}bYpE;u&41eOlVA5vFqdl6Hg3$Az^VSy?9r3n6O`?x8NI{9B)_c=(VZJS&jQl4DH@W-x@OT@wHRky`<$yRMOoX;eoM&Ax#h)pBqEeCq#9;yKVP1>QTmE{g?`xWfLasXS}tAZET!$RAQH%Gyym) zNd|Lh=TM0qQ*ZFsS&Pl@8Xe4UF-U_d$cns5Y3fy2c6j!o=rjQ@9|Pryc;&EY+WYTY z!s1#9|Hd2sP|z1k;tVgTnK>l2kq>Z7l6bBR;T$n^eTip zJINMm0hm9|E(buLKCz=`-HK!6A&V}vy1<`0lR z4A3sNXYc68J=(6prp4dArHy{S!=`OkXOY61LU&2sd`T6tbY}v%IMD(m00C7hqA2Q4 zRUqdQz*oRDDIp@}@1nCFWhRaw{p$I}HiSf{;)@xsXFJ*;LE0(a2)W@nLt8x0)trAhP-w6HuCUF=UM6)?W72dt|RYD^v8L0-6 zn{KP4`E{7<5w#@&8;*h*2BHZqK-3}BP-Kno5_F>N%g|4Qh&8n!)LiKM9f?T@I`Jt$ zRFl&oU!$wJ2R_foo=+qO5Il+eYt}-bV2kSeUP(2Ywh7WvGjOc4_!*hni{W7vS^zeI zfRyQbrvVGzQ_mpO&r=CC%2<%HNIQHYBxzvsKHmDMaFFQ%hfQ$5$h$jr{;q&c?4P;8 zf&_8y(B_etID9|=;Xc$GNNFiUiw&~gzO%xXyvx6gA}lwCNI5_HL25`>5+w}}75^=K z9lwGI2yK**PFZxd0GiC>1>2w|BdSH{xfmb-PQ~Rr8VUsNK(NXBPwh!Fq<6ivcfDc~ z)4h*7Uq5J+Wn2DJ6c&~eqLvc9#hW0)BW!1LyS_6mhU4Bl)d94Z1LBULhAN~T*H`;7 zCuC{|x{<$gsZTRz5UN4+s;GFdY}N0!o6&O(WmQYKZEUKXJI@Dxg5kB`|F};XNJuGa z#>T&j#k@Ivz-v}HvH26G6EtA=W;t$9h|`f}>`cc2u0Sh$tIumURM_xfnc8X_Bm)Eh zF%^Sgs%Hr;0Qi~2zkRVcStbs5-3&ICKK;}*1x<>8y*!;lu@{)qK?D#lS6SPzR=0-|G$50tCJma+gqoIjfu zYcXeyt(~+J=sc8Wx-bZfJ%@72agmwqnRgM2MEz+&;~3_1J3Z{r=q6TLkUQZ#!DMrRHJ8y$YoS*K0pQBBlD(r9#%IuDkR)$ zBl^{Jq5U`YLdp?eKrIS()LRHHGr>(gJw)XhYTD&jvFm7=NS{CW=#_^`{&xgWklSZd zj-Q2x{Q`)~0s_#0fO4OAO3)A+HHAxTdn6gW?&nS5NuWUZCi(bS$HP1gPW=WsP3D=f zK|Ov0F|tuxG3rN3sAAAlFBCoGMK}o<3XH|$xn)kocf|_xo(KEl&7^HUi^~6vq<=ok z$I?lH>|x@4jR9fueJyHaLzWCev!H=ekes=Dt@F?ZO9=pJE&>zx6+{b{xf9nuTA9}O zK4%{r178*6?rvK^t%vkatr{XFc`go7M^jN^!#ipLl7vqLN$7j9drZQ}J{LOIb_9&_ z2G)WEB*PJeiFDu-BMueKy$+tr?53akcnPji8T)jigzab!KERyZ-7CZ++{Bz*;`(SH|$pL)7H zeEV$lRd^S3{gO!aPv-UiT9&ZTc|-uWY^7Lem<|PBSt({a*>Y}KEVVQzFrp3lR?7qR z{XE8(QY@M1uG?Mgi3xOR*J7>Ql%rd*k~%~~i5iXbE|uc#_u#Bc@q&OwXDbT&3J}j5 ztmj453c*|6&6=CVa#N}drfot(lM1a%)LIF(eB%Gi6a{3a%(AH%Yv63nv(xyBKT9Qa zN^jrXEQ4gaK~%x!J%7Z}BI0IE7jxc*I#(Pepx_e`NR;+H%J(vQa3s;iCaKJ`vPWyk zeR8E#)X^b6o=dQBkw1fT&w7O+X;%7 zE-Cw#X8JJ6E>9BucZyD?fLc7>NK0NXK6b7WP=75b6>Sp&BX=1%Q&2E|V!rQFR|ejU zv=9MP71iqo?+->G!OefP?JdGYwy--m%6AjV>=fabD&ar&cx&czLYT2^|*!-0yVUa>5Vt=Z|!Af-@dJFRkmEfv%{HO>UE-xR${>%2( z(*atsoL?bZVbX3)9=GgAs+;@Cy-;p0v+)&*IY7X$e^T5;o-tYjaQe&ovNnKn4BwY> zmg??V?Im=KF(#iJWutRMC)IuSGRaf7Ha14`#!rX>mFu%3S7o9;F#4}jE%#}%2 zoA3(_e1>gY9ePvYG|c7-B+M$zmesu%+uo*0*vwvo&H4+W@@EGRQ3GxdwOD(m$RSNG zQ}=N;4UF{`RP-DS77ltB%^Pvst8Z<_$XS&IOYGgt2wTzygv2u7zk?P`ja{E9h7efC z1UhOqD;-lbw-gCIB(IqM|74Q?CG>p@;2n#w6%+V;PaRY9vp6Hv(-+S)NZ#fQw8SCZ z$62fh0%$n|*gprgG3qC+%pR|z)RbwQJuV&{KCaR#4ma(F-{GXK@iA*tM)r!GOcxKR zr|Q&i={i^*XlWhFd(msB3$llkg{Xzf01X?fPjvRfCritHj*ohM+?MH4?2C`BEMUW=ba&lGS!DvC~*DXn7O7QbqnGl&Vy*ZoYG4w7JnXtMBpP zto_5SN!}YX3pg~g)AaIUKkPj0RHk0l*kc^3G>Hv-K2&$J9`ML)wDg(pHgKmnhn^Lo zO}9CUAXa*J2p$7GwMnP0n!sC99Zl|t(OUI%vY9oFmUl-OBeoO&qrZHTOR{naWu@i~ zmmn&fcQI(CPrR4YURtAgHy{E91nURcDWX6>`bZ`cfgR8v|5>#%IW_8n|J~;|e+El5 zrU>IlCM8arRwWy;40fDWo#dd%i2v-kdx#Zo2XoMKZlyFSks71OxGH)0Uur>*4?jw$%0sr>bq&W(LB_M>147AiyuZm8Pa9cRY9HUj04{OxrOZO< z)z+dn=TGY9^264K&g854=7HKYdt03TnS=!ID@vFCb-qm>bL}0JY(*bx`DSuKt@+py zvHM*Sn}NqW+VVh0Yi6g?4M~^#&-i_gzgDKOtXlTZwVG_%LZcfW^IY)toDZCsvb(b>~5=am*4kN*oHNKnr|JJv=SPYi!WI1t)5biB=iM ztXq3HSubA_v%bN(8EhBKtPYy?CvZ2vC)Z86acjJurEQoE<|FpbgKUa%!6~D%v!M7f zrJZwwxL`-^lrQe}=z|6o_X8*ONZUL0a&wy7krPS&X*M^f;{ZfIy)wW>3Lq{RaEmTE zjEz47LSLsm`VPWn$WT6?B!w`Jrs*8swIdM5QQWi|9172lg+E(=!AfBE76BrMe-751 zV1yZ^SS@qKwKVeA)Gk`&x(?_S+m6nz((x)SyC2k%Tv63oJFlm$nrG|Y=5fr9vq}{a z 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 diff --git a/1-js/10-es-modern/12-generator/genYield2.png b/1-js/10-es-modern/12-generator/genYield2.png deleted file mode 100644 index dd29c353263bc59be065f29045add7f6664a127e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22530 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 vdezOcCz+ zddFpXC#wWBI_CTxUws_lKam(5t0$+^+~m;eJh*>C%G@HlCXDQ8d@Upb#LV7-Nk$ij=4+P9LZaW%5*|GkN zapMDQy@_9j*YkM2Ls~J30tt4}N+m02Ur9oeVTjm)(UcKe4ownx@YCkF5x# zwRmNhyn$n+l0iiU$12o88#%B~zPx5!>(!ON@>jDNIe5r3TMx4(b=AF?-_;u=H)k$BCxH7DYGP8d9P3 zXoTGHMiI>tG8p`POhExhg!tc870^le8G4(Fou-U<7JyJ^8g)(b=u!T@k3+^#4eO z9=m@NX1^rjqo|(ik`+-r9ze!Ymtw!M;nN_<&Syr$x{XE@vTMgUb#T;j(5iwY=m+?* z&%!B7nNooAo0n-ZKk4{&xFPE>L*~rju>J`8d=|WF{LDU=!M7fkD^z65?Wf)1IT(;2 zE^jt~tvOQVPXkf_3i@{xJ|g|Sc0=i}?>a5=w0ysawQge^s3uvlnDVXbWo zffLNlbw6R|FJhphC-ah-&X$$DWVuv}k@9vwOlYUzWK?o$cYZA0rc+1D-3So>V_-oU zkXD5@Uq=@TKye)^?0W6;3>4S$0QH?u%V0lONd{U-$%bprvs(qb=51(1tm7t(1|4-! z*gUy%b)a~2!gxUiNt1z=fEc0OF*Pys(Ei$yypkFZ#;N~7jYN`>I1rjG%w(;nR4fD* zf>m%?rxQ52Pog~R=n)IaWIehZMo1n~K%W#yVOVH^@kVyfwp4u~cKZd&8hJZS5(%8H zWwB`po&ib52TZ(q4jDimJ8v$^L4Wkp-z>`#>!t5vU&VRO%K6o3D`SQE6^ zr>DcG)D}gTvL8Q7HrlrHx|&BYX0$`*g=T~mg27Vy{0APf2+IaUb%a}nm#$fn!^$T4 zg(>jbtO}O$%YPCKP(lN}ztXAiMdv1vkw5x(1Lbfw-vmMtUUfO{U_*5bsySMIyx`ip zSz5&DaIhEq+N&g%RlIJkO@S+hT;r49_|wp4iuepWpA6Z>?NAlRgD*OWo4g6FRD7Y< zWvB*}5!+Fq4GK8MwKp|uqS_(9UveD9LH$6ah-(v&$p29kWj5;;ZIG=_vi37er|cxo zZY~T}G>1-ABD;;4*_75whUS4}QX?UuvDuS8l4p@~C&;JwP4_2O|Jiy+ZK9cYDW|+R zrrbYiB%B`@`GXMrd+BXa5H3r|LPe;<==_N!{@G{)7GwWL>bwo%ih)WqT2U`EVT^Hm znYDW4a>KxSW1j&zF^c;>ANEP6XqIZW2~*p45hD_T{f+1%0qaK7^_nk{IQVf42QJ~( zd}bdvpq+L41v|y$yg;lO-zF}_b-nJ+UEZsCj`qMcyUXe_p13ZY|5kp#wTq# zzEAn&@e$PdLaF$fP_5@0FxuEAf0YLqbDyr zOX)rMRWW#8%c7-oOU#KG+M{XcdYpcI#cGYGhoi_~H)=^rmiW*aEdkN^`d_aqko1|x zxAMSc8L~_A4(XE{zq(NJo1xi`Ev`Lg$77kTdH$&eMOsA#n<><~X9$_3w@EmT;)TOv z?PD7P|HnhK|CK|=W}KFYk;}_ZGW!!WiAA}E#s^eGjr_Y6=>HNSz|7SH*i9K=o`xek|-6>l- z?cewSf`mEp#ek|j$LB8R{NL8^q9`Cx6T}QSnEym65NJ5lzfi?~8KUd|RFBfeeu_r- zT<*5`7uy(6eg+&nN`2pA?tgL;LW7u31J(_VLW=#b`p}fmuEI|z!t4L!10bN`q@PGh zRF91j`(OCJ?$ zd&E0sH-_0~bfkD?pelVx4Gi6w|CV`JEAFwTsYDXOhI$%shI>CT*zMMW8v=SuJ)1{w<*Z7#hGKm~zgFlTemGlr zZN*STP1U&=F_ZoizpFj|v!!58OZ$O4YC$Xf4z5ioFPN^)@sv%?S;HXO}n$!^-m~xftw+LKTvAJhsL8 zw#A*Yd8S%SES&g4slV2JA0q5f+gqj;8>#_-{2w3J{{|5Z9feyo+74aw|DL9^lP({1MFNGmfh`T?qE)bKcRpx z7(4$3YE!7+UAJ1>MP%w-#4atR%In!4YhxDQYwER0BwBt8ET&7KzTCEJM9{Yp0VX%^ zf6X{=fGxvOY2x1-P337b(5`E)mClYVW^VNU770%Db+{jXciU)fT)5rDmy(3dOLf|S z9;bF;&0}moWflPYcS(^NJZn2RtZXu81Dmbt}~J_crWksGwd>`fMP2L87Z@Vzsu?sB?2u$K=45SdKUmH z4Cc}7vSCOT_L<(W;xMMEYQ^ity?)j^*)rEMd`AbG?Z`-@VpAt_n8y9kNMlF1sy=(% z@OiaNSOdI%J_FR@Kfa4L=r6SCQovzh*>3-p>Usb3IP=;5BdmuUCo)i6qGsxqFb!Qv z&)0-0ri(^j&c_$8ISh&2+82#$=Qb{nB8+&*Zr1S+ehUBiEQkHih`6%I*B95_`$;mu zkm*_$thUY2>;`WC{5UXLI_(E57v|C93e4(af15hjPJ_736Yji&|4XB1@4Az>ve@J` zTb^>&8&mk$X)C23W%oq+G~yt7B>aOk(X8hG#|SP=Qbfl$?pvFN7Xm4njn`IIT|rKM z5-P?yUHbW&V+&WP%*Mro!bH+$u-blE`aJ6&fXeOyna**k+W(2_T8SZ#|F$n~v|SGV1;8Y(msi>D!Fk0-N!Gd) z;hl(2<4JWAtgvLJyW8H?BQ-u^Oj)!G`Pcs*$b6R0vwp@dnNA*=dPbtl*Vc~3w_mhW znx>9Vus;Ao4$5-Vk=RAT`S{|3{T*_+b(}D?kkY2ICj)~YvQ){E+^m@OP1`AkirQq< z<+ii+PTNYq{=$0;(J^E%Zl1XQZ_EwkH80m83^E!>rR?Z61n@s{|4l%V{z5#Udj8D4 znK;BRO+65iP|D$hF;)wksL2Bq^3OX%#^GYFxk)7omp0sz7jh`RD8YE%26!Ajp4|7> z5LPoGv#%*B&Kn)_vtTP3QUSF8#=`HPv2eZh7j8XfH0z5X_X6-NE@)SufbV)q(6))X z23^~zUfH!t#f_-^lK|S+)18V4yZ%18$EzDzMN;7HK8HtUW|QX?BVx8;Dh-EeJLH+x zW@wjM83f5J^zGk4;z8QM+dK{bhKZj4PhsL1L2JR{^+Dqv(Y6n;-4(-GR553^5wELa zt$nw9B##1M97(%x{{Hp5*gp~2SKu>P+6j?S04!>$rfEFPsAuSlU#hQ=j`2E;V64sDVw{%^Yh@GdE2lG7NQMRlnX&`C~phBjw?6+!FPSGb+(mvNIls8_pHQhgku7SmT}_dX)XRd;?$+`_$D9~kef`P< zw|mexwqqvO^cJ&TsB_r)E6_YP1;w-6>k2(Sg3ceVG-cmcSerEL%*i0<(0l;@9mcZe zPd4SkFf=1z|LhgY&Pkw z-2HcG?~t<7(m9MDZQ{y1%x*R38p)U#CYx6O~{6t)U zM|RxRg#KVQ=haudPa`ml1Ga|o_~ssr=5+vZfrnhe`qFVxVu%TBAkxORYj`t%I5r!Hk=o9#4jZgGKViI!qi}l$%bP7OWeV zkJH;vG?Qw%7GD8{?*`n!svD1Vwt!VKyBab?c2^JK^&vGa3QZ>o^QL-(*`IHHUt}Os z9(Ak%Pe#3wI6fqGcdKQq`n}>0ym<*EV!+;)B)H$yH_psti7_B1rR$krS*vXs$7_0L zxBNPDV@n*V6OdXe_$f#r-=M(gt;qMdjWZoX|L2R5qXFKhj}Fn#Z5h`tY-Db z6`1LmlV*I8P7u+l`+h_oZ@jCuVDaZ1p4;uX7VsoG#!GO}NR5>@5a}@Ftmy6%t%Q{r z2NuhQcVO?aBeWrkefj?mZ#5<>QUp z5%&}y4M&SfX=D zPN>>;47Xb{xPH^)LPovlMNa zUMPz=@s+9{0`btUi^}*|1_alLMpV} z-LSi)*DwPEAeQ2V*ZA`Av;_&x9MTL%F4XgL2{%9u@L;lg&Cl|LQ5oV)qs#m@#Y*d zU|1K$MsE^+%9DRHk!w6*Hg*tVGgE`9aV50LsJTM)5`JvWewr%1Dd6HDfOieQDbSX~ zrGRR+Lfoou(pa<(K_#U^nYL9!TwQcOOvU98^vQmGY30`N;iw#xn`@Tku{~8aIg^); zM{d2uc^rLDwD}OV)D=KLmGj_I8f_7@QZ;XG*~akhp>I`Wg$T>sUv1R5qhq^JrCxnN z+e1LsHJ-pgNiwHKIoGI~O{tD9&n`hcEU;&_{G><1eev2x+#FH4I3UzBoj5NKx)7xh z1tllsV|iNnc26!76tovTpqUgY(UwsOB>ww=$6ILP)q5e}3S$vo>rk8;!ig@U`8rLA z0VoX2Zfd3__Z!SVHk0*S49iS@Us*bO?ciCwcasUrpDFBHgCOer!xG?{LrE@px1I*F zSwQc{q9&4U0e#^4Jn(HT%~DgkmQVL|SGw?r7qviTL;SurNdfbgF3V`II^HzZ?%Day zl;epI%`qR6iz{b5K_6}C#|D-G?o#T0X7!+ae8$c=#=x_+Gh0?} znAP|D3mW#NgD6ugEo5jtA53SeJxJnj3T>RwHDdUL+gpvkk; z*i?9IxZK&PG-V)i=WG15(6>v-mQJyisDo^B8C-Qmy&94HIx7DTVY*%? zyw`+$5P~M@seuMb!J#I+K284I!- z+KUz zZU0%Jo!g{ZJJ`0KpMJ&A1lzGJUbcUr6H&jn`UxZv-V>AL=D8lm$xSAymvQV}tD?~` zKEmf(=hC9MFKMzr?IP|N!usHY1f6^>B4xx7LK4FvncHu6Ug#r{ja_Tu$;Zb(MU`D& zA>c7R3d*e^TVEKI+Bv6PZ~#w9Spk!gX{}F}kL;6`tyC+OL9HR7g?M-*vL9D0xRJUY zj`&t^r5e47HsEy@P3gNRiy$m3o+}!--BF|_`l-Bqy}wtMV28)zeL z@;hv6cWub;R}g2f*(8F$MNUvDv<-}!S~GOlr5Apq{CdR!v^DW{Nzsc{$WwH#n;(4} znn)X)IE+zI2Tvr2hJW%k`CNA_s=6heGwv|p8yVTx$8W-tD>fW^*Bk3%iy*C@^z@3V zX%BxEYWAaxBFd;Cc5?1^oncS19a}n8anFy|=Lc7h%Q~T~;ygGR?^hCAtRgK+Uc__E zue!psK9c8k!AZEk97gyl)2+15fCEi~+hHe}iCvs>z;2T_1yTz#xH-?6d*`kXdX0b= znoF+sG5Ry9_rf&;v_8L3zez;0uo%cG)f`MuUA3l_H>DoL|0jqLMXuHhXO=&8+O2Q- zz?>ZeDo=#8G3`38CK^-f9-iUPYko~U*yx34sW2zpoexK~l_zM=*JVhFj}15Zz{xim zG6Ze?*$D-+Bgbx968CenMiA`kMt{`isifuAirQV{?qtmlVTtvLB~c9`j@{_CjTn;E z0XX&elY)AFJOJ4!8hpIX$@&T8uT39`DSrZug_mhE!qCZ_VxLHgN#MJUnEbx*eUeuT#(CX$Mr8# z=qb~csF!JBPejjvtZe2!aOVjvTH^`EQ-cd`peDw;v$L7KK0nNew1K2Oq75sa-znor zWsW8Cy#VO=WThqZ-c94{y~IlpIz20k9ez1^OB(jP=lBWak4BK%50EDJ51^F~k6Aub zJMw)<45NW={X^DyxJ8EZ2VZ&pE^BKDH*|yJn`H%f(}?GCDU1t4Yw*j|5<=n;bbfEA zHQ?4_D{i`gqU@t_f>#m-!o;}{Z$kc z<<=!->B5r&f|2&Ff;y_fOP(&9BV%FnFGBat`gPySH@#v~Xe;z~_!j zm_a#&rm#@QgxmVG!*^%@y(3pL7b;GyNK}U4R*)&fvxeO@OOp)(TXsI%2t>)I`g;l* zEkRo>3Np5boPp2#a(5~2#-)7vXJRozeNp}UF^#&_FXJS8BP;JW2hLYy{Zg87Jikw6U(ik^bHtW z3GqeAR#bnCPrjB~{CiX7SaC@1EutdME{xkh_JOL`HmHfm(M-wHs=)AT^h}mukTu5p{6TPTrB{-{OA`|sO`=4% z@USicV#*BuBep)zh9HByld;TwbvzWY&&!gJst?sZ2Nns5I3{4ZSA61s>kxz5sI!X) z2jxvHvip$f(MPhyjp&Ddn&~ik-2-ARO_OSxpFdSYtZ(z`BfdKtd|}Gy49`&Q3=eKo ztR|()B*1}psqfHW5hQuf7<&!&T4jI(JVlOWHQ?Rx;d_@Q$aaoPELPLhX}b*9otoIj_T7(#tyun%h-e6A!!32FF6_#FJfG|%t+({-Gni{stLxEg}+9A zr536Etie2r{KRWEv~0#jrL>jUTpLINxk7C?7b*5e3ynO@B9`ubssaZDAM*zUsS}X5 zwY2N8yyO9e{aPN8{y*eC z|D2I+p!-`{VA2D{h-bHHqIfpp;nGsqsolE~2*SvxznK<{nT3IQoq5F?NiW2gz&HCB zV0#pZUWoYuIdS6t4ItGoa3KLx`1MkUf%SJtqDf#4g%QCOEV>w2@uK3AHA)QUUoh1# z5UsV}vWfS9!h7%0jae#yE1nhufR^(lf)~`0Rg`l~|6j>oQ)&_3ZgXt=}kr z9zW4+X(`;y`fe_-Mi8Uys`+hJ;lRaNx%^ov_Wgn2=|Aap&MJ8Ga_lTQ?iLrO9jC)vPCOdij=1Uf@a_P^bH(0zNpN)aidU^{ z=?VsfzXMD_k7;6LRja zciTWWl(_now?c0(C;a^aJt$o4=+VQV-<^&+4z=H4*@l9pzuR}`oer}2if5e58xG|z z$G-Dj1K0uJqit`_jXk3G+gphefRjY1So3-`_5-)Vcw zc%j;zS6{@Av2EtHcXoF+Lt5^1nW(t$AYI9Me;uT&NT4o4UJWjUJ-}s` zK7QEiX6w19j~o|uPu*IMZfNTp9qBWuaX<+Pzn205$vXQ%6=TS;ywk;p?+K8{P{U;=aq7`0|Ql~6|2m1QGzZT%~X8}-}s z9UE=$t7&Yvdv;GOSuV$$Wd(GQRi#aF7#Iqao<-?QUTcmHk`*tLS6~U)b$I=6w)med z_5bs)2%{I1zvl+GW1e2cjJFsVkklwe3M>2@X6V*XP)Z|>RL9o!@1VOXvmk;N&1+N3 b5Fgfc^t{KW}~m&4H-Mh70%<0|e>=glIwslH;QROKkxA=LiUdmzM`v zw&xkZ3;9hIY#`vzyKYf{!2Y))F0WB*atY9N)CWTYl&n^c`Va2_TS;4^gBB+x2x%b1CN0rlZEM{*&D zew^x_#U}6W#?Y_`RW<0K^SF8j%@rF{5eQ#|VCARxV|<-`axSb&L| z$7_D-LM!dY0{3|69w<8?^|Vw-;1>HSM2v2eT@DiGfr^G}h3xV>Ps-*|D!xGz>8ADC zl^R8Cx^(kB&6#lL-XS+CPBK#F$d2jtcf@kU?BTn2D<0ayuBz^EAH(6V10thjC~XPO z?~I5p0#F?_AW3`5HKdvn-sU;+cW(iP0`MExXBa=GW@no8ThKxO za>WYE#_x7({}%e~P73a&_i9aMXb2;51kR;sEh8em8vyFj?0Lo0ov-Elsu@iC)sCo0 zB|ql3;BXi#jSc;AtIIGet@VZ4g$yQ-RbKP%K@6~C-kSie($Pv`$hILxKjy=Ei$6%F zQSjLJ2N9eIR<;>EmCl>O=WlUvy0I!bDg74FPWRGuHwV%;7jq+m%e)qlARxRskw`Av zS-JALi)2@s44L^_uwTs#dgr=8_b3wLNVlCDm}0KWDBc)V#*Nai_Rnna#1$#@(QC;Y zae_<3q>-TeEyS5B!fQjcAP~jkl_++vBA4kQD8G~f6;o5h)Id`bTPR>R|7f0NU5y|{ zCtpY)o?MN%ow5Op2+7~?VRq8GhbUsRz(nOqH{>GvBcLK{$tFErNY^d$uwl1j%b zPoA6oO5_kwciUP_ z9(p=2nd=)GSr{;tt0);2yHXpk)EME)%86e;+%r9^esHj&Bzc3fU&Iiu%527wZ>My7 zCIUjY#Lr~mBSCF6T4(XwNwZ9jm|mFcr5$Q@CNvhbkl4tcx}8lN6D&H_8QDG(_AG<) z#j&7{ zh$w$?xEs^*eQ)*v6eMiG1YTh*WgVFsmXwiE76sT@RVKxHwVE5a2N>>Rs*y{wQlNF` z$7jq({umKa9_}5Kr3@~BB`!|1<7i!0;cS(l6N!qhR zxf#{M)_MtE!CLZ!2blD&`qSXRcQjpI@3-S_Shwq#TZN~n>b9{ui|x>-r^{2~y@CLL zpLPSy(f~#QOQMydyUtEXL%OQB69mT$qDqCOlO?U_7@Z9Rl@{6ctn%iv+my{qDYRq! zDKqbZm;Fx4e2+Ei z`qC)`x8-HfZ=Pa`10R9p9C}8(qH2@_A$c7xx$>@X`mS2U#IQu%e%DNSC>MVOrJRN- z81LW~Ms;OEP?duk$KTh=o694cqY7exPPSGR`_-?i0@?t-D>ODF3UFBq>v?fkeWjBv z);Jd_0)?KFmpAclBpMavdA84O>>l9m=#m}S7jd!)vAoUVbwqQ)J?Es>{-ChV>pYyE z%)0r(jgI%s`-_TlCnjg^NJ;5#P!ATu;Z%8APDcf%Rz5{A@{GYrJ8US1z~M}oX|6E1 zkLG>rW^E>PT&}bH}Rl%DrNxr2EI&BGgB09{DbDNrg>* zcMe}``E7lpP#~Ie7g1(xXzRCh>IOJmkM)=}L04R@=9Y&wDL#Ku^%YCVF6W<-#zS?} zT3?wM8s?Z^zu7*I)k2AH zfBBu6rGL0t+Z>?QO3LjL6IDl>9w_4{xIMAo5Llw~l3}4r?@>hI0E{ z--2!{xA*PrNF)h<7CSXad9;^{U8^u%q%w z_RPv%S{Br}hfl80Dq9{Mwi$*Z`kwSxa+ECGdbI|%<(&6Co||W^_d?0_4Mpb>!}`)s z`}7Z_kHpYEM!hLM?^$ zC(YAdM6Mi5P?sMRSgISweTmCS-3VQ3ke=6WzVIp{lzw{*e?7}+MSE|7~ z3Mo#n5}0!i``>F-`4qqmE$7e4 zip>2hk+2l06xG-dpbC!%@J&v9%I2p+0pLcA5z{$Hc+SF#lzfL%FRi&NU2YsQa& znt0#~_EeK^nsED-V$oP6rZQog6K5O)N0_8Df+uSO&rq&|*J1tOD-KdGiJ=tBdz*n{ z#wr>zX-UXGfj^BFIwWT^NEUm(v1DXizU*+F9z>uj6tYms@ztV2yK#FcmBVPUc?8fy zS}{U>Bq4OGYSd6)f}I0FYky_AetZ9gNQ1lh_~asU(6w)q$AoM-PCw(11^16^qT)jH)8w*uPt=1J174x>& zrzWK5WNps(^NtP0(8MD@CStm=L$8mlr^uqCLeLYSu+aqZ4Gt3&rK*q!XEnGRO-YOf z1?D_DcVc$PDF%0gT_5=2rgoaI8s3{y0nK@E`tk#u4|JXiviuR>8^yPkcDN7oK473X z7=LjkPuTNHykFFZqgXx_?h#Ki)~ZC?FqOABKFQqJd#}?SI-Y9??j>(^061}XuEt|) z>EhCCT%du|gF#6^8hwhH`k6@{G{&Mh+w8rTN=rMfAU|%dPHh*9zF>HJzx$$%bknt7 zXtpk=&bzJ?Ou_ao7wB`i29xkKx{|SzO<=+us~9N9j<(}+rguehXV%4SGBQ?sLHZnwr<;7PXmARa-y=0Sg`r-Y==-LWc3mk8 zk<0iC558hy#h%`>XZ1+(l94HD|Dn36`&M2MCMF1;DpQC^FP1qz{8(-HL)h7UultKvCTvCaOeM6mzNF44SX#+Z(t1_<^pLI{) z+iSlZqiqw;e%|m#{N2HO-&9_D0A{AEOC~aEZZdfU)hO9J2dnxGo3&v5s2u{GxY=;9^27{g;m!Ortz-YtEj-fLc!A;v#* zoKNa@KIV58QD#w>zP?>Nqvy~B1vi70GOv*Z;>V`8eP?$To3~r_UO5DWqG5@QRg!Nk zcBw%Nt=j&wdZCQYB9|R&3$fCELZ2iBH%fZe+`TI7w;E&kGnpvt0?SGyk|yRPrRJ2# zHje0Vp(Qn^Jv{&3{Zd48$m>&UsR+nMO@(U`sE{9=+%h*F3!}V;ej_;zDC7>W-#88J zW9?O5QXob!&lBwmc_X$J8w0;dg8TkScBnz7s(r93A-wAKL~0xL)eFIp&zU^9#CBIN z5#lEl{b$9Q*c9h;;@Y6Jb_Bn(cy&W2TK&fy9Z zRO9vit;LY}mh@hTHD2JC?kq1~t&YIbQG+O-&CYxv_1t0ycDNw?H?vvT^0kyGF#Ft6 zc0-XRK;AO%7CU+grh~R1Tr3(gi-NT%jg)9r$rBgmj7oUBt=?x);B?d#JzOU)`mx`M zJlaFoS1~%x_kC%tj1DyB@64mtoH|KE9&lbRMtbx%AB~b1$MNP!o!tzDsF6!^lP9XT z_4eDQkZ{P^U)4zkF--*xpxa8Pka z$ALa2yQli03X)IC0dvy!_MVgwbW}&h##SSZNBB`P!bi_+{OWqU0o)CAgdyDNi zy8^&^;q-Q6phiEwsPoW30)tp4@N&`aCKHlJ5A;QPGp*RMw>m3&#Ezt7TThvbPkti~ zNla(KM3J6wPDPK|!woei%^rY&YBDM-6ozV z(`&KWl@WnF9c(og^YUnMcyA;oZHsO7|P=PUIyS1qu9%N2)mxt-!x0=i= z>Z8c#I4q=7t{LyY_1Hp0!=)tR zTrT?Y0qz?N+$pG4a`HrP8dxBNB=F9X-w%Tp2-o(+moRe?oUK}I%*H9QYrlXTBJQ`C zkHEaE!5iqOg0X}y@R<@Ox^(Pb3bHG-Mne2K9V(f{q5REg+@f+TP!$idJ5b6 zH+BO>J~kZW86+^7sGO%TCG5MokkVSM&gi2BSpCtkl7utfrf3jWuIa3LRS*U(GucdL zTCO$(&lB;Y+q*5h$0KRX2cHS)(j|E4AMMVHae*65aWyc{C%mTc^wzbKLxXG~d>8k| zPlMn&TWn$;-iH*H#vig;f(*iplkn26t_V4kH8yNEi0HBIPOaQIPPJEBKs%O&t=;F0 zsZm^#oJ|D#9HL?kqY@`;AjQ^ERV=No#SKFKAeM9j-hJ)OD~8x%H{QFK_d;k@UzM_- zaxQ)eRl?@dP%fboQ17FDp>uOagKZ;BV^TXsf_Fp}ZAiD8D1doYW_rEyeJwEc!{f{I z=XPy$*FyK#Mk8aWmF)%7SBzQ-i!eMZPD#mbby5+u$9x4QX1(i6P%_WEBK;*UaUwKP z8beu5!Y__D<9o1^+G*74_sUX>{@vn{;JKu@dqT6N&Dd>ju#~Yx!9q8ty=_|DA-YE+eMRDGl z_WZl@MY4}ns_mAt?+pX?*4fKO291`(h-nFVhQB~|n1ZU0gG%`mq10z-JjF>~8qmgd zy{j}ep(1Z+?n}rc1GFQri3@GzMBEkqD89_7oH#vjJH0MNmGfx+cnxP5u3A0PCSQ@0 zK#pc*epgN!r?=|5CN3SZ(DD_tPpl>>G;*>RsAzoJRhzk^kbAR>Pn|b7aCkcwt%4h? z-1a@I92I91B9UHjIvw0MV%GLL<22Wa4U+8~O%^o&Va=SzX*etf9+#^?`fH;w7)!J+ zV_xJy@M-1FrhQg(znmPMWjf+(!l{#L%Y%;h=CKypEPQXw51T*!)f0r;$j|CU$$J60 zZl+I5ZhPn6eas7iePwslnxd-I5@Gwfvm2aNgONF(uJEC((6W4=4gmgJyGkJ7OtR&c z=(35ztWgtt*D1_2|0S#CIj2X;c|0jY1K`y4QOzg4T=2#j6})kU>$xYs+^HusTmQ^{ zfBHT=8{?sa@CiG8mwb7{({pqnAiooS0?7$dAd;g427gpu-sC^$9bx?K|8mSf=^e=w!GFA&+5vJbq_Cy)RF{R20_V5k0Nq(HvP->2`w^CGB9~*( zl?D)HXi7}N#bDY4>rl65vw=Vo;9+;g?>UP>w2SXrYS^XqV>9)bCDSXBOCD`t+~;o= zDPDN4dNhPgk4>(odYqh-aOU3)wHm?EvrM|vC)F+nKWJODMM%T+`EE-J> zqGpO^568Xq{l?)>b_Kj6@cf|`Kp zov)+R5w6t}en^ccKq|aj15l{6R~{Nv3WJWE4tFErhebTW#H(G8tPasjxX8bVO%lGO z*$``apB4pw507TUM7ZDD>)GCyA}p+Fqr+m z+1D4%CR3l%eb2KZwwsHJ8=<%59n3s?@msZ(^|RSqx_2RHSmW-Ph)cr>&B$ASHdH? zbpHZb^7Zu2<4ctLcCbG3dhdE*XvECP*YXEb-PdUm1JeoRQHp{#f(7w@h8>9!dVfh~mF400tH#-0FvQ1VWZfTX zTq%+Vc3~6nPL56#f+{>_vATJ& z^m1zLehW`-JCUKB@7f=3b)ZWQ$jbLGk;D}NNeHHt7fp1l{Py(!cj z0t&wPwUJCoID=HaKmMvtXLq-)>^SZKxxj9i#Sk7Ube`5G)r?wOru%*r!6ou$QO7$jsZqT$PVnOk^2_1rDtOvu0oX#tu_pZ13x8kS z#p_bo{Tx?Z-Cf}EVEILc{1{wI#LjIk41%!i2hcuo+Wc|Bqetut6Y}|~APwA1MUt&cKv*lQ6u;>{153M=)HS_0Snu-9YX>*q zy$b_4vX$mkQ;6dn(_vc0Tf5CUqc_@ys9(p|o=<=xE8x@H->&kVG3u2L4p#Pa6xUyh zYSpNR`q@+339NfXQkI6UH!#dfHN^TM070I7JnWkyV)k;|(65Z}NGk%gIB^C&IjjQ5o?y)hd#rn+=4+ zzM6A1Ue(D&IPr+Pxu9Ms!N`-w*(@nUKPh;gnTF-c4z>s9r@#@$)W*-p73j;%V{V1c znPMeWtn6^ElZ(cb?=+dbs>Qw;X(Mj{&{f8(54fA-K!k^DlMQPh$OF1MvStoZ7+$bA zYFhzQ^<$21*vXI;Q?^XvYLN#@XNM9)>4SPB$M&8gRlo?%=;ZTRQ`2N_$kDG$NyieG z9q&0F*~!=i?ogoONmJUd$aSVaV9p*9`3JHi+;i)`N(NEWnBZGg(ljug_}rZMB#7@f zQ>1b}&iQ+9a)z?>nu*3Ji4BWhq3}bS$BMGxt{NVxCLm(UyLsoOmaY!Ok&Bu6KFMeo z&AI;=I`2X94#!QzB3t;eLAJ^SVcW4O?4Gq2IG5kd&1t{8{MalOW%RH}JCnd6 zmzF>6fp(Xk*h^={E`+z{>0pPO%a|-g;zLAXH-y#TxLu8W;Z5_Co-`4{#cAW40E}k! z7qo28m#4*qyfw#^D;fnB#WGdtio}HDFr1R1Ev~ZJAsd zTCpc$Cw1Ht^4n)>*Kv(dnOIg=06l1bRy1|(@7S5MF`jNjthq)%Yywo?zRu4FyW}P8 zkXC#zfhIa~uHZd^-#pKPP#>mZ)Wt##4`YsA zf`d=;u(gd;3^ocJ$D5#=w#_Q|?1Ver}$|OpsdisMKe6?nJPZ>K(v3c9D+i zl=b_me@(tTLZZGN&YHL&f*zK`TP^+VUK;A4$=RtAFX&Z_;RPHx6y6p2{dqglKu_CI`!9EH$=>{zOqo zF0(PqcyHBml)$E>_(e~v5If#;`w<1Yzcg86NlV!;KU|Zlm<*zvXHwJz?Uh1(zTM`W zi(GyZ@TRyN?X-usQ7^!U?pev)7!ng2M;c>Jl8(=BMzZql^?RhIj(~Ga?O?Xrm>plA z*}BNiOvoIWJGRIOi7WY~Kkr_ZE4ucrcKW1_xwfl?#N*lgwSDu$*Idh!qNnQD`*Gx1 zGSkUU5@kXfh1hdl<9p&p)KYaNV1`Oq)GiR|8SvckpT{<=P`40x})9*6TI=0?nv|rcP zzl?KHF;O$m!Q%)nzP<>#{zQ8Z;|t6#Ov7c(gpcCQA%;ph<2=}mdy4N!ufx&X7WrtK z(3L%h8_AO|yM)oWONJitw;z+>Ph$W-eHcIpmTP%luCv#+)0)H8(jJ&MG#`)hsCPMe zCf1O;qIB(5oJlL(G!rO9Ac$5!@z53=ul6&C7@jtyR{3a2T3ikdk?*rwe3Mj|>@71; zy;7mdR$Cb>;WXJF+)`^xUC7ME2_ZF|Xn;bK!+E82+-2J5oER4uwwN}PR^uWlD_vOS zel?Mss*`|6@sh9>_ach&8$gm1RTCfjV7!c>B)yKipGA->qYt22Q-~bE4Q9#$giHba zf>EWEq8np}t>3mpHGz)THb;(Ls=UGhpdQ)A2uU51UuXkUW# zyf{$y3qKJc0ldAupi$P})HQ|p4_fcYkp-E0~=%rXJgU#-J6a=YJ5P4hRG|yG9j#%0hD5k$892& zrg&@N3Y8FQ?=UEo5^~H47R5bdPaYqh?WFjtY32BFF4U9lLId#SN^JClLm#PRyBfE8 z2C!s!3l+s}+#k!-3*nVZh5Hte3D~P~ za+2%K+w)PKHW@Z7dlN&;0m}_j6{nea$Ka+X!496|%KRk?unu=56>#tSrwtf~3#)@n zgYpu>%{>-pt*r^urxxmzD|-WHLzOnw8N8&w5dFG zAz%p!V#)5!_#p727c>q7~%e-kt`9g72}K6Yd=BWt!(~JotbofQ6?|!CBHIN3Emh+?jCPDj?m_cr_Q(E zoRTveZ{5zEIZSupUyb(MRCrzLZEzH++D9S&X)!z5-N9*0w_Y9z6AJC^hp{v5wA6Cc zzW{+iUKVi+KN0ft!(k%NC)m|cLv|yO+NxRJFR1ffvvuHi{Hdv#j!Oxs z9mE71U`)Ad`EIsTCq;`ol?&MXej3eUx-Srn03(WVuz_3sd^%{iNxQV5;o z59*Xd^}_HJ56@BAVmWs{W)fA*Rxt1AMhVvtXWcBt-p2L)Q$?+7mo-}^ZM)Q}d*x&5 zSAB-0=ZCHF>xao%5y8y5 zsly7CT?(qG38`qAKdZJd z$t>5_#ih!Ua^@qy9R7!?eIuAILi^DNV`zfzpbLhrcOe$%WAXy&8Yf56@pCWRf9f2AARD5f)T{W( z)e_g@*mZt$O`z4!iSMWFQ;JI%j?c@7HCoQ} zIGqis{=sID&a1?h?Y{ZNQCo2Tph^&GnH(k5fP#{^v)h|WSN}B}g1oXOM8%}AlqPqp z$)#rivBe4+n=#A=p{hTSb)T#xv)=T!?WthKOU7egn$Siow%#DiFOXA*G}Py|iDR)q zKf0k^4|&IHtU~*Z=~DlT7a1In@+7HxTjiC=15W8s71a}(e1)vH{!0U!2wF8W_k+*6 z9wQfk#2*X{1pJ9m9iWa%D77wtToqgwpDfTfLCrn{cZew2ObT_AgP!n$U!PklYbIlG`KvVtm#(vi z`XYDZ9AB*YB<+6Ygt=#5*X0Z-vMzMO*HNEZ1(gljeUICgGBl3i`u@lzneqI zj8akPaszhM2SIp0x@hj6rZ^c>Ya9VRk=DeYWF`dQwzI*p`!UFns!&JKf{}M^feX2x z_Pn=qqRYv_&e&ChBG(jK3#M$)v{-sX!v1fVUl@iQ6RJuJ7$N2##4GOW7~7Ndomvxn2boBoplwAQ zhKFpR2VRCNO|%9={a8UUNyM#bQ0%*X;W9PRbqkfC$U;Q(!&q^_-IqAR;;IH2SW(Ym zV1BJTHyDXW?H!p`q;$!k4v|G}? zbz84@X0rSlqK4^2mo$SJuv7Anr{>!9?!gJ9_{XrQ2l1AZ=}K@0rPt{tc#kQTCfX0w zx38+Dg=wfkli~igJ}a!g%9&v6g8(0w{}?3oh|d)sbO9L5FMrI_XB(zvfKY3^m=Qt# z8~}Yfv;jyT5G%Td7`lIr{Ac+)FYt-+m;bKKs7LUYkNbJCHOl1{B+v_ZiNuRfR0-3P z&S6Xn#idV-d#C6VQ6XMGG2;m01UsPYz$O17oj`x&mk4d$DfP$`r@1_4UA(e=0atgNlk=T~-KeR_sNfdk=rFpCaNj&-U~zq-w3-p>LHgStZ61)yVxN7A1Wh7i z=f>?(h07r5RDQPN@_5_U%E?h>@z9L6Ol?!e(AIm0A4pB*E8j{>c>5?S5^6^B#sgau z2LVP@wW6g(R1=SO4A>%{71#&6XieCXjqWgnn#$r?0jo2MyyD7h6a(A)7UGse`ejz6 zFknBK3%^Yds1~S2N{Cbit5#W1CI3@DecL1nx1mqS__X2;U-y~%XyRh+zd8=SzUFls z8LW-4Fh4Yu0?@?BMc7;ogNzoF2ykzsu!x|2|ER*(o5ELFp~ux!$j?dy@6p48(xn6A zBB%gNGWT--7kmW0F=c%mG+1WT(89{a!($$wNM|KxoNv1|m1t!fp))_O;uNuclo5b8JFx6o#-`|d7#pzi?EFP_>rV2rO{S=7rdWR zX6AF_*D^2fYNfH1UCONnY9p&U2%Cpi(=N1&H3~1kl{!~i0f`GN!(JbYXSi~qY`ACG zT6x8h4xyE0(Aa;6$rc>Jv>CMOfWcO$+k%O;a-hQUXYrpFB?UnFWtE+Nq`8%KaqQ5XrM%+N$ zK-E`|e){f=&8th#%`vq^;d3c^$1%BQ0AzVz1~%WCH{phSEl$iFWab9#F=T2yLdL9||ocEk7h9J%?&tiV0? zGPmQiKZuHb<^-l650=NgRF5)#RILdswMBfC_^s~8aj%R%+8NVKqG1W6RzJGKjD=yv zmEGy_vqP7?j5l+A*Sl>zw6EyDhAj=n#PD;Z+vE&7W&62PXpVDyX^|FbnLP z24~R=9%qq;4ppIgX{wo~rEwK0a^+>-4h+Wvobo8DgUxzQveQK4aUP>>UfA{3xy-@} z_8|==t)9@j)XDMeCey}fjalBZ1SJ~%=PrsrGvjmhI$g2n>?&ffHD#mChhqb0!R4S^1W#DcFTtp`0^3WZ2Gyfn{6ASrCq%pSynjNz|8S4;= zxD+hzzHPM-qr@|dxUNpy-NL1?&D=H%Tn|sS-W0ykVk3i_Rtz=B~boS5zVVcdyAozD1-ZHDS zb5ERIYkjba1n~$5_rW&XE$qLR@f`qKvUbAZMWWPz`=eNDQIS9ipDoL7;1^24t)&eu z{<_jyLdlC%rEFfFi%Z{P`Kex60y0r`&w(vCiY-`&8)*=lK|yK;eEZ4zWS9AP!%P*O zB{C-@80a_r80V7`lAwtiG>LDa(7m53nit54y!SCD+TX^Ubn%UFL&L-gFE-ySSZV_|>p4x~ zf5VDQW!y=~=v7I_x+%jrb%~1j4)xdjbR2v-pY9zjvL8%y9zm~R;ek8tmh+=I-CI#w@iJ zh+3ma@N*9%>6(~{Ql{Z})bGE+`wFx#Mj99np64nPNuvp(nx$EP3*AsA$5$5XO}{37 z;60#!#C|?G45~vGVcBzUc-fU(|33Xk%<13)$L{t^nu^Cm4(q@6#S*F`285*X;963V zX1&syqCg(F!u)lG8{#|bzn%RFLR;ZuzBe$2x1`yF`5*uLeHzF&Igepqo=u}N&Yq$N zd>zQ_&z7TqQVdyvtwORb?l<>-!j6x#5q)necuqW~Z?`sZx_{Eszt`Y>-v1e7B)a?} z2#}CLL4N#?Uj_nM0M$NXAYxBW*mEEa(<4jgb`@MMUvp2U!TUFw0s_@$ z0ii8~7(b}1T}X9X{|$c)0{pjUCQKl-LcsplmW?kEU|;?@*<&vL*)H8!S%cTKMZEsc zTDgB(GED)hZ35f!D3-LPtZA1W(P5W-Pt!@D``WB@j*kir`j2j_@qIDmdxQdo4gdoL zt28t;NWZ`xBwXN55D5MX|J;Fx20~ll(|&)J$@i`UU61@)%=_49A|x390{7|r;vZ_o|^ z31O)6QGz`vC_yMGQ6Uvq=)?4Po>)CMKTRtNwB04C5NM_qg@YBv1d9PV-@j9f3B_K& zQ9`eLRKilk$_pm_q?3x)e2Mc37DG}&lA=x9{^_~KrNP64fiLFg(%245jq;jjgV9<$ zXN~A=-3&gul^_&66!a%3*zZtit_ZN&9;2W$jOIW_Unn#v7{TA{WIx?UdXc)|VE(J! z>y6h=zH<>!)a?}u(8234(Ek?j?;C%8(dC56x^1_SAm~MceU<#rjlYH&f&cct?_km` zM<3(x&0nqm-6BgK-e_$>mFh^4?9X7uB2e`0Gud#)|AzAq)K`I76X;Mq4HJYcXdnL8 z;Pvu<+PwC}TH7D@tNwH0zfg?t!hhdb+C{;GfB&DM|6A}32~?P^lbMjl-@yL4Yvu?m zcxLSw{2uo0-y{7k*moc86%coA7XANM-+zH(<9;;=N3+OVnE%rFk6=NkS3p{Xnu<98 zLz9n$(2Ab;DvqXOZ{{aqra$WF z62qhgu}wdg0*=r9nQco)7_BX+=S;n{f-1ba*n2)dIjtzTCz$e>taZ7Z=tHHavWGT( z247+8lljJaz1Z%Azv%k(4OUt1|Bj|gD?i<Vh95E z?t}9;5?0lmPX4ipIeZf3^0Djo$z5X#zuyx#4y_FoKN?4TIgE%?! z<9j1KU#o|nE97v*WF>#pjbMW!X0EYpADDoh?V)D7pxZ{c7aODTRm6f72L~nv6mBb3 z0`zVYvR=ZvYhI)-UZPL1orlHR5T1SZv60Wml1w&fZzvsEQE&2`o*v-l=Wm!MCc$q0 z_V_3YI_u)#T(9ZZnnGHdG$d-tXnC66eaZMaxdEnLXR`V|j{YCl`z8x!2~oF)38Q{t#Y8tsHxolrsUxxQ%Pw!`vYO@f8#Dc_d2on>pOf6P+P zwy3l@Fix4f!;RuUo-^&7W)&vMc09Wp5$80-vofZp^z`@&lv393VD|qx`0LY@dai_8 z>(cQNHoA_~UB>|rGgtRe?ygwGcJDDUAEkGrg_*F}e)!3I^XI9PhPmrh5A;o6{$gpt zAQa-q6P-yv8Jk)8@Sh3U&8hfRe^(V%JN3TWx7HvpK3_&`tz1#G|$rYcGyxMH7 zcCt^;?&L@TSs@O?Apv0RaPF=(cU-vF1eBaci%RnM+*jm-K^8u1vuBuMij4z}(MjD^ z@2uuGzdY>0-$^JhR0#J|&eNJ&e6p&~yMN~!802)*_&fzp5ZX8STyy3-OQ8~vOh+%g zb90QZs#%Vaq0ZxD@j${F&E`}`O=*m!j)-JL5n6g$*3qF%3ius7MtwCv#GHJ!z#80QEkQE>tOQ3W8J7Q$w z)g!-Sy^tmn`-xK*cf!@GoldrMqr}7=o>kYhy@{4O{O8OI7>*PIsk)WQCLo33+Mb8z zDa`9`@n;QeEr%_xaF}^hv^;6=?!JGnWc^}H-F7vu^~N$zLUD|L27`Vp(u8JPhqu8f zJdxhT)c3JRgQl1wzqwLtD!*q6m#uSz#k!Qfotc&mI(e>NcdoJWdq*t#LXV3TR5}RPcJX!#EaW&cir(^+RQt0! z1y-P0K;<>ZM*NVVV<2^~7ZoLIfb=nQ;fc*XF=C<_rP0}u%9|E;0cU`vo0t8==s3b03Z4zBM=i8lvf;b&cVr3eh55Ki>AOHgKZ?q& zK~3(9-FH^a8M2{7#tB+6wrA-&^xYXSE3FK6p$XXWOq=n>PiA6=Z2LOdAS8>N6L z5llj``xEs8HRa`=iw0s1mZX5NC65FEr7Qz|Lz2BZA{A2o^uh!HYuAJZeLpC$x@NEm z4}&6jq<6Mrl0}zb1{m6X=BcUhb88GF%jxz}O&t*WYEePF|nT9$f! zjpB%+&xFx8NzScC?KS>lQdB-mo_ah)R|NTLWzNG^N(IapWQ&P;D?YBz>Wa&oR659Q zig3>DDTHrZy_(D&)^Y~R*xYke-6RqchugiWI!PGY&;&3qVk}uZgngJKVx<|uE#zM~ z29p@tu6`&JV)2J>YPVheq+xHEkCSz{HdDe_F7wLBtVxst%csTnx~HmsA7f>-z?l|y z$e`fe(rvjblmbdI^N$fIMsq$09PICO^B$_Wxa&JT^w!fQU|j_0(M!-HncA9XIrAUX z{AhU$pCf8c8dSBC$qvt(!hfn>Y}8EQg-B|LZNy>RDr_oSWti@0hRrw;kn{U8ATHI} z(y(ZLh9BGW!b-Lf;^=Ltjadux+?PTorQOJoNvm^l$Ma`T*_p3xnx9HCb>%iIUhfGe zT5YCly`%o6K?}5-pN)!h)>-03MM0$I1b@ooZ?sit;k?m~xzU@?L29XcBXyNdXfO(A0xLlxYk8c74WZy$<>0mVsrCuJgN_n7`7x{kVCS zkS-&=q!gT7bM_SRtDZ51c?>fno%47}JnHmu_W;-S3$L_n17;|gz_g)$2Gu|$yVuWR>NxBc%cP*be;YaXpYz=U*5oys^S)S zJfn5+GuQZQl8li7(e}CL)8gju2ECu1fSeov(mo_Rrr)t3U>!=I`0rSx5EG^rLzSv* zrZRRu0ftyk6~|)RKq(tU$0guA+{+VRbXRpJBN74GH>TP~@OS3>C{d4xw&g^}F)aX? z;ukjU%zPUeG2G*Tis0yF6J4f;B6_8f06bLKF6p8>GZT&3Df7yPHd*VWlkP69aOVAR ztL*Hi+}3=Fg0!NuZ0R5&1K0!RWOA&gR*IKzOe{ExhTdDXvZt(q$zYr78*d;)`}amU z7-cL=LHZia=xvhdy6hgkNe_nCQd^YBq=bBgo2Uww9>2ynba96pg%ykyE1;v5t2SiX z7e1Xv_W-1@rTup1jDM%!E4ydr>IvL6&MlXzY3~2}T-SvnJXbwxeXL*Nq2y;&WVUx% z^whE9rT0QGF-y$#k{nWr9Z&Y2A!OZ078x*Rx9un~7e8y$_SkdDulK{uuzLf!;hKTi z`kuE$e@*i7L*(8mWXt2Wi2K_tBv?VMzUA(&aD3geD}LpDaGT>8*l?(~)`Z&Mpw?-$ z(MEYr&)QNwY1Q;DNA+E2)G+=kcd+zOYm4%S=@+dlb_uZ3di?_CTdQ2>5Bk3!bm z-bZ~UFUnO~$0y+b&}8(UremV_AozMsy~WZhret+PfcfUQWy-jW5X=oumM`N4D6cLi zZ89C#r*j#O@|eb-fv_Dw?%sA<_ZeVnH(A9##FP||VI%xX*PXKYZQF?()?!fVXT$52 zs}?>rmn+Zb!!k}tM6TW^#YjU)0a-&J@_7x%U7UCSc8~ z)=kHJsXTN!LEWe@0Slwb{BF@9G4TG{_J#O~GF+pw^9wHWhwGwCP|(>%G)bv zhvboxjKwivTVAm5aUYbfKB^kwM}C|NMiOP3o2(iDZz zv0{^UPM%g0^J!$WnD|BR2H7S{=R$Wd{ITC0U7!F5}L5`D^UDH(6n(i{}bY zfqX6CZ+J=PVOwRq3K78IdLrHz;yjN}H`Zjx;?d)6d58&^#rmc2a+WJ+{tU8WZ|S@w zQ$!O5CDa&pchU5=v^~FGn?sgh-J?n#-|nx^EIhi^Z)}ziaXaTT@wq8b_(rC+LnI==?tQ1I`)j&5`5{;fH0CH`#Ql z7CYCCM^Wy51~6oq3mF5h3~p;HPhg218c-x~hkbu2sDiT~b3}}GU!6q3ci;gpoGI(X zR976CR7KfjxZRckj~K%&$Jz+U|r5AqmpI5i}SNkpy6<1 zDlJ-8sWJMI^5ZzCEt|~OD_%v7j?wth7^j5IW_t^G+;5z`RkVXJqy!MpE^BMhQ37LU z|C4!+o58ERY`Zc9=cCDlDq2+`uiAT%-d(J@x}5Vj%VFP}&9&K;eYi`tccBzdq>&=a zex_tM7MfuKB(^<2GoogWo;1~Az3^k7pBHiq=*SGJ5ANj24j(d47kQ{P=<1=IG zuvluN|M0+pgbJz518NW2_Y1Fit{SS*kA|nukkLc@uUkM$>EFIg9ym1HPHn~BrRsGa z+AMKT&FWTH=0|QVtTe=SI4-ZT@%O3o7VDT4#$-3if^nIGoGdJob+(7@t!dTg9fqQ! zh}8Br?72>I4F}40y;x&uS(Wp%eHyGYWNF%jZ;sFSf-bp)IffdL1`nq@9;D=O4Y0h7 z$FlMQwDX_M@^6YMOxG5S#pv49^>r}4Ju>(AdXCT)9O|ibZk;NKHzV9Vj@ljE#-gnB zH9c+~PjYQ)Cx?h5k~_-kFxYAxdy$9sykyM$7g%;k_gI&_bho@;!2D zTGP{bHW>l}Y6CW|sa0H9hILr`>CUQ91gD&G`+I!B5t(lX++cDJi1UX#k0f`~gXU;Y z!~Xhy>;3zu^*scadZjxRSI;vjz9BH_1F6U012@=Z*#*A>5^m2y(F?I+3PD=q$SsIk zNMN>H^(r^leVS|V3Wjl4Ll0a%nK#%7mT{?*p^0OOV$tcO2H>x51jK9SPc9jE;+`qp zeu*DGpFFYU!sd7(ztCpgPm`uDe|{?E7%sHA5@1My?`&` zwN~DDUucz`p3LnXy=2#YXGy8co>vR=*xOHIUgt zD6u|hsA{fX`fiSecQ+YHeIlx-#00hX0t7c-Z9%m~L)Aw3!K*2Gj7vJt0iA}#4x9H% zH5_jU(+SZ$Dp3?=pY8F&zbikYWxRW$IpI)-QAzW`i8z^v+j16|jm;BnJ<;6FIbLKj z$V*`bx4we3zN+H+D;nv1cDM zV``aFmy8*wwY*`yugMS}@3fEWCsrknmj@INPu;keGeh!Kz7KQi=wO&u!!B-zDE}3(bITqY-&aV{r6NF@KEdZ zL3Fw~k5#@?nTKr{T9z+;X+t*VI%GSD4)(x_49j1ZJ8Jdc#vj$;5v4nn!gurd5ccDz z$B)N*_mwm9C1fq;ijwG>zFPfE&$R;s*&vOAkj3-Wo1t@?=`WH^6+t5%<8O&g<5K)< z3hYlkx~85EhQodLr7&lMQoLncQ9G8K((N6GB%T(r5ULJWdg+H3pOrlB;l!&%vu|ED z_LKD5T+GYi15VlPKeO2NF%d^gUOG9cz*`5>qIM)zS1Ip+MZ0ZQS4V%|wAySXnvXZ)m>#B}} zc98j{|6NXYnZny2U-sMHx>L5xaOQ~OW+rNkw?s%@rI2hbnYs_Q=#{Qwjn6V=S`|~% zNmvsa*Qf)|*W;|`w3)3&2SsvCN9Ic^5Sh8lg%W}tMd0_R30gY$Z5g;53_l`Yu@DEp zY}$)GY%MvBwubnY_cA85<&Q`oiqWuv!MvIX)0PO?&lhtNkL(4R&u);7g5Be?r&KA~ zgwOSoI}?h@Uhz4yPZuh;h;44I@J%lJIs~%m@2cFmGxgsrAiI=lzLog_)C+>1ucU5c zO5DXk%f*Z&E!rL5r_-4kP!H9-JDS%L7n}Dro8|N}I|+#M1MnHwKTOZi*sXUQ=SGLt z`^IbeST1zvvqJQt{xpdd`I-%3;LB7kp`rehT|>dEfCN=Dv`SXYjIsO2PId>WV>$P9OVf7_c5GCS zZ7#P8>2#8-Vs(}?KQ#1-ug)Wu#P)s7C>Qn37)KI8Hv@*0*i;wTi6B#o1;-1LX)bK1 z;zWe^*4l;5-%vM@rRepm^QCIEFAh&9Hid}Mgt&H4Q;qn_CMC-R>|0$CGa4KeF*m2B z_Bj@t*$X%G3Ey9sF%k1iD_E+4vhWBg#CjSPTN;Q~?AClLd39)&n8kf}sFQgi%7e^d zZnU03iF1^cIH!30#hIZO!_e#(f)vzvT%`V7F-{Ad7B_YS`_bGJN%R)7R{AnCs9HWe zDN0dl9~&-`cXiPfDY|zD(hq>9jH0flSV@*OZjwr_Lo8`_R{*djKCSe5s8O-bVX>#( z+H?LM4n3{d6mO>Da?^b#@ys09l37>g?R}wMzM}c_6D5`oBXQfF&8>d0DxJW|%?^=Q2q(4-Zk*x<}4 z!}Qg4)$4}gaYZ8^kuyH?uc*jB_IzGK4W{=@2JXvY7jLrJXH&>XhySwn;k>93N^~M| z{M=BP1m*ORjo;@a>nzw?uCZ(7^dih=sD2N4wc7T%)^^DmwHo*OLb0WNF39CLo+pWo z$}$6QHZd~Kr=OSx}6#LoJ!T@Rvi3`MaQSm4H=GPJG~46^*0 zb$`MDHkiR2TDAWaI%w45EBeYMH_X{QZRsTo+xwtWVg6)}SRA!=FjTI^RgS0S)^8IX zv4;MA_7QsPwd2V1BG*%`TK@2G2~<~8X5Fnpg~WhM{)O}F>gi|^ZL=Yq8e}JeIrFvI zK~H|h%TMC;Sg|%|l=SW5N2*lW^%`gh|bC)aRWIpdU`5qtoDMs)cBv)0zsI5tLefTCAeM> zbKe#28MwQ@ag9%xQQA^CtkMBJ^@`5{62lRnQYFWgbyX)9SC9?_ZE%8h9+FX55NN5B z_jqAtBU*q`u0)S{Qnt2n1KXnR7I9NOCDCgnFTqCSy-r>j~%oi>vQtQMsOBIzGN5=mGM3u7hoY0nl48JsBuitFxE z8*XVQHfuZc^Ha@A&0Snx_JwHLEo_99%O2%n6+Fc>_AouM};ze$y)$ytNW8hc)J zvO4+!(TK3P`sn56m7H^hg!?}K9jBSR$)s;Z)Whd>Y6GS6${j~(-@GBYHN7!ou3dQw>q{D(h$qp-*Lr>*(p<8;nG0-6n0u?kYA}0;sdi7O}I(3XkDkVF1 z4jqDYgAkcMJDDscQ(YzK(r4$;X95+?edR=d4Cbj&R$TIT;mj9%)>f>uWscH()(jXF z<(!e;U~Uf%uZ)vcEl0NX4G&*V|F}{X92F`~C5?XXJs6TbZ84*gsnV|kqg2)1{X~z$ z@OY{fe^Z0|D?~c$tsa2F`%!K ztGRH}_9vjniR5A&J;cztof)ZZY2<=Z)pjg#9{R-ukN*?x#0`k}eVYWfeU;qIOVH=U ziALd0@fHgfU0zx;ycOV@*ro*j+ujz@FfTcKn8PWBlTMkmCz>1WBG`7 zUK8UA{$zzK3Y4Dg*WNbU4yQ%u;HHIAn5rf^l;k+$+?h4+g-qIL0v*u=<9c8#+;O3G z3=ld&S5&~ZW8jNI*!Vupn+GN&2@{>J1?}=d-{yqe&cFi0LC4`9sokk#zP_i#2s4WG zq|AuvxD;Kjnbj(>w%*H$6(n4*RhN;J4^uatrMyob`so8BBD#zm%pWIIsYz%+?PWlZ zFO9X5bc$S%6hRtHd<*tRF_^=(woh}$q`sJeve)=GzZ^WEm@pz;i1oKNWa?VQTHcF|RZ z&Kga$7kJ#am|{-w*A3IMIj+>vu=2R;5l(fUrPL}KUF|dlcuVZf6r*#qD-=@yjbOnSiUVC|gq!G06LnEa_cs)VbmqfSX!`(N*1&vCnXpDW%`*~@6 zJ)98#vQ&i`D-fUi&-ynf+t!&EtJ^5g96j4^#;v8LDkY7D?-)%L#Om(9_8oU^7C&+& zhrPRJdB{)EM=x+pXRC5t%OOiY8tN`^39i$tzbb{)@L`8nj2?|Mk-y2-NsUwUc5vK# zd_5Qui)XxFqRtz`h(EH?Zp7YYwG-;b?b6y&9ErSl)y-Smzu_rf35rKO^;^)Yng`V z5(P#%<6zk76TR%^KG-}wKejM9=-#9*h*T);xE{H33K{lxU{@XgDr(>Q;ygyg|2_Hc zsH|PLw9|*vd&Q7ADfA=p`9yn2Hs&|c-@)#e5-Ac=+aFriqfc&Ex0cg02^|*uHw(qHCd(2z_8}4PH10~s7et>R z-|sY+ZPt}KfIL1!I_4smZ&?MQGZZq6Bud7Hw)zy@CAnR}yQ>5$rdBMMw^Ev@#X*@J z9vIlcXn&sxxU$2u!S^Ja7sRRzCI(WXBDB_;xlDhNQ^LMKG^$+Ueruj?vT(mGaX&9Nq}%9=hBd4o61@JZ~7+e;R7ky+8g8o0PdoW2nIsPtg;#AUGE zldsv+bm|tmZOR${uz!AKxRlG%Vp9+gKh554=zuA`*Bf?CtPbH(HwhcM4@p3K%(YaE zC6=fY_%f)v3a?1!UTj`7~o~&Ienfrh_myM!&I^5uUWyB=yN_+ZUfO9tpkII+L6GEZ(3) zDI3zzR^PIxF=@Xv`de`m?-wSnmy5a5Eyl>xd)7?8=O7{~cNFGaIa*D8lc1f@CPS$! zV=P3?+;q-P=g2({W72K77_|1TBmYxE_j9sC4%^1p<-tUYkw1g0wPa$S6A@7(^fQNu zk!rkHj=eI#3hAsMu)iK5DR6pd0Khqrxj@qW&pt0M^WDDMqv*}IdLzpfQiN6;t8I`B zQbF7g<}#GG_&D2@d0M@2Co<|d)#foAV}x2lDLwQI3zzh~4w;AO-wMS{;J3bROi9bH zI&UX;pe)qp=Ju%q1~?Wg2~O@f-R7rDADB5V8#RZdOv?71<$_NIT4 zYe)Ep@t!z)tjW>43!bD7#LLDtd`#tW8STE3Y)ZG2O< zjyA5ez)x>0dn@dSyu%JaV~l;N%nd3-jiIxM5pK}H>FsAY6aNiXHwRN zKOP~?iSKrZPSRPMNJKDdhvn$ivz<&om)51k{e9F91<$4n^DmxS%0`PL2TKfd4ZgZ| zD4?2Lo5p~|k}j!Js$Ugw9L@w#wC88KV?c%mDQcWIN(-shx&(b^3B}k>7+MfUiV~(& zt+beYo7*&)i%9WWP^b|zfC~>ccCJM451dJ8I+xeA3H9qI#6d~NeGRbXU9d7-%?lFafA)5v=#-X#2405XZF)En$V%)cBrEj2H@aG`__Sr%Ykw1 z36V`N8xKj@oux3&v69`wyuO3K7UUR>8vR&}OL!SYni?4>AjZBO*|Oyx^p!o!v?YaT zxyxyu&c2eJ8~S(wI7!knmNH;LMIkxuf=a<|S~}bsBLK~_H!kX24G=Nis>I2*kjB=& z+)h^subuc?Y)N#1tYo_&nt)*2(OO!0eONt62jFQspqu`}is|nj%%N<{q;~#yj#PBUB+?P==R7+P>0-mmhNgrIC z6$jkY_C;0Vt#;q2R93gWT9-(t zdUfh~y|cZNCJ)|?wfW#ji|H~bw}-pgV{ag)iMahVTXs-i%3(Q&y@1tCsRzVkk+2-x;RNqZK2a*VQH`R-usu%F3Ak+wOkwG=3cADm400 zn-yJ|$-J!2;n3g(;n*YYj6C3JPQ+<~uNL~RfuUXrZFQf<`x)9RdYJu$X1{;8eL#V$ zrBJi~h-~BLj(EODN;oyeqx!v4W^a=^nGQA1i73()WjC9lCTeCL)bN%?82eR){V*sb zWP;g;OZmfdS^07`njyD$FYTY*4?UhxQ!*;(#DlMcqI27udg>~NJW71f_|zK9^NK48 zt%^`=_MERwWKG~T82OmX4^SRAE7d1Wj<|IXmsW>duYMuo2gv@-Gt44|`Fd6sg0jV~ z2?KMYe?C>9c08r^nfi|7h$X!SbBH&1YbqW@#*4DB9H4LHIwCNk`I6omIQPyU=K^+eGhI^*u{^kC)BnG zW0Xbb11!R=GOe_5Eah^QbNdUVs$hYCn6ZL77-n1HS~C=gW(SGn-*MYR8=XX4H*NBk z;tTc|#SB6hw--8Rn}#dI4tCnyorewyrfZk`QSTE2p#9ysU^8+%yjSo(Fe%y56E1~A z-kN4=R+U}9}?1b7Hf25TEMZX)UiGH~LxP0OFB*Xs+Ly7r8$|}{= z+m0q9BPzyJP|)*x3!iZe2diH%=zX{r`>Nr)xPPUAA6frmiC#>+S@^U6va$TdIIVv3 zcH>_>O@JN*Svh49#HT{lx737!2X{SW`Q->0vsuVm2tCPCW&0jHJp zRjQX53i^x4Z56|=A(amnA8C!Ziw35`yY@B3h zCKMVgs6o+#%JhZ;06wQRMwWn=NTv=_5o469loPOaiY_L;NV5I(s z&hQ6qA;YV&ErmYwa3~Zixeth|n02-Xiv%$pI!mgDbI=uQDpJ=dB+$8qJnmV;4kpte zbQ`}i3`(k$WAtofa1^>XT^W^T58OzG=-i?7JP#X)O7wtx+0@R5rf~DgFPo zD;CSr#ZI%3I;X`-Dt0}0Cy=OM%xDM^u8Ltf%!nA=cUM>798)enfrqr*1fc#I23kCbHxe*!m>W8{7+Kj8t6ek<^54G0x_ypfZ+i{Lm zwG#t_P%h;N2I&*hPJAjv_xoinV(c_%!WNq=7Rp}2KV+#ONfsZoI7JwDC4R4K5F%nn zL;UwN(8ci0Rfs}Nl$wZ&vqv~t$i;Rq)=kTc8A^j>8>0@F(K69p1`vf$>WLq?;@D|4w z+KI=PLuM+HPqnEhXH9AD%s?4Tn{O^xOYCCVRH@>7GctaJe{5L6@z_wO;nP!nQrXZDH9dZhP!iEbr8N|1c-KU#c~M z;=JG2pqTAy2ld;KzUPm**pIs2jywd_=^-;oN9pnS*c77D^t5sr&UAj$nA{>(Beo8z zTi2xPjJ#`ZclmZ^6?_eSm^sl`G@YoC3Aa7KtGJ?7sm+baZtP|=Ez%xvc61nXsH=fuXeQN- zdH2_paTP<@l0SLjBUR_WO*wJ2v)fxR@vt@Kgk;OFH8YChIqj8Z<0d4+xv$3b_KeEc z7!;{Xf&m8C&5>+k#$n_P-(D9ml<Tud9)#=s-dUSla`9vd>wA!=s0Y7Bks?sl< z<2X!}(y3lw7ASz~+KQeBmp_U^%pF87WH1en<|!8wi%y?x@pKcNHIA^?dOdY&nyk<< zqosT5v|KdqY9FV+>V-GRQ?Xv?lD*PDIS!j|X4T*@IN6~Tc3fv7IB$a`h zJ{BF}_a$xLYoSr+sp89{6?jJE@YCED48)ggxIIr2k&46n2@$r_^lW{8XI@2bOF_)yf2}F68-w479i@6VEN>8kbG@+Y zGu0cS80kvk^7jIsCmUCI=!;zJkw!6t63OL?Io#?r3ZCp$L$1@F`sN}ImRNNM56k!0 z^{PN#e(#Aa(J>k9Hr1SJ{e(j_ps1jj=h={-LRfTAIo&Ld40#x$UG1~Upenh1*~O3i zNKMYS$RE&tw0mBU&BFCZN!K?3kF6JL_v%~iw-mLh_W_LV{8@|%y46pwwzkzd?Q%bS z`@G}(P>@!B^ziUW3$O|zn0nDsdGhzaHcDH3wR&sUg@>D!-KVzR(7_#|${LD4l$Q_^LZG=vaiO{^ zWF$(!P1Gdrwhsg5Xc^@RZC$|NKns5nEN3mFC9nns|aVRPzAZSEb z3|_HNQfJFBl%i*v7$i<%Ge5;O|;}|f>66ga5pzBF)iTHYsrVaMq z*lfs<*!kPQMzN8oyK~C#F_GwZkK!6#mh-`P7P5X28P%jN1G`i6(hdzx1nEoVuc-f7 z?_FT%{j4L~BqhGi7{CrKB5Zr|eu92^gFpo@=Bn%7+k?}W!BO}^*u@$Hw_`e@gk-N~ zZWy^qeUG#C!PB71uKy_~Py1Gs0?YP20}ch>L~*mxSP;q)lXPnH(Yuav5>vQNATg{Y zE`(IB3sy<{120Wl(dDc}w7WG2wOx8WS6&S{3?vyq^axggx8oQ5^xM>(V z0TfTP}2055Dj!WXM>FG;z9|xp+11 zSZA75)PPKsL<|*i_ zhmM*~PHrrQtk!Saa@w9>Hh{)z8M|i=e~V%7Xy%TVrRp{lr7tEQ#*Ng`@2&pgjE(5} z!xj2T0L=k93cfJecp+c~HF^x#3!F8VC(v~oOP`rXmvIvP=FP<|fh-nBJC^iM$rWxh z4;dGB?g=KJlsVP+3V*Q|wLd`wGEt~;Bh%ci1SK?xOsvD?tWn%Ah_SxKw%cBpYMFoM z^3)v&w!ui8?ws&TUmG1`$$!EZ$g>=rKGL(dIe=eUI~oA``eMn*ns-@|zX4{$_s|3YXX)~!-o=9*ZHqr-?! zxs+(5!B+UD_Z(4EQq*Rk+N5(CWlRZVQ zbiQC1i#6qusr{Pb41bv=v*$j12pa{SMp4;AcVibi$1Dsy5ayK7_;Q~~MB{?#w{V*w zd~I$0YY6qcI`RaPnJfkS$XHYeip1+<*ed!;QY1*2b zF;ZHUT4Bwn>XfYnA2{p)T;ayXJ<6>gPh_3?pbh>V7%Ps!&Ra1)uT2E^7~ZUZT7B8} zdW1MU#>TKp7QOe;2sb)&tyk47F?bY7d=gj^Hg7OcCBQ&~?%(n^+Df7^jibm}B_E;2 z9Tg@RPuhx39=q?U{^a-^Ykgljb!tQIO(9@AYQ{$U!3ibBu}~hna|;x{^9VX5+e4Z96>qj86PcUI-PA=8RoS;grrNa!?sL#d>x@G|pX; zJ?8Uwa74Zn4F}aAcWcYz^OTO?*nvB&JWWvyTw6##2J7!ShBJ$#k#um~G&+p@?p-5= zi5(lvmN*<;5_B1X31b0)ka%xzgbd>vU>f(i?R5&DltRTp7@tSbn6hW9+KA!;8befy ziul2Xc1pY1xlh#%QAtJaJ0*)Wc}7CW?J3c0H)L8OM_P0r;(>-%Xo`jDaVi8uK62x zhnYTnPGeJvJbg+|{fcBR9QRKxN<#u#_O5uW6_jUl^0r@>G^kCQ)bjw9-W_R+VPRyv zsMnJA`Z5+inl5wPAj~{8I(W}fb53k-53;sBJvCOoOK(nAZ3PNQye)WU3EarbM60W| zUKnK~{$jLWe1toLlF6iqAhhSD)R;~DSKR!QPVW2Hn$$}5(i;teQN~tDAf+z(f$nqP z8z3)evEigQDguu7BUB)tb*P^(4qXby_RlI3chpc7Zc;VmB#Q)Hd;Yz=0l0%*UIH4X zLBf$`&ZwI4b&paWiW_$>{GAzIxQ?{~Vn`E?bbS3AoaD@$yIF0fhjtD&y z@oVd^9S$CQtAG|L{G4eI5rnptvuTeRtUgUy4_=ySWt|JXcOEaD*rPyqxGdF+K%1QE~4lsZauAXmHQR-UVJms?41{D|cDoHZFMefQA-HWvskog_$*2$r|2rWvilbp(?&HM}muRaLl~&tN>+#vJVV470Oi!(4U{zYV?AJ`a zWy$2Ph(f*9oCFaq?>*yAKH(!;Y3$$M?uvv}QWtCLZXP+`)rN@MObre6=+CAt9$>ma zzQqYXoVL1WZVPD_psJpLgXX=IEBP-GDMVtZEN2to9%kbo@L5%olse>FN8_azV;_c` zv16I;W*BF-+Shv__U3Tf@dbiGNyc5=6`Riq6$K|aNfv6@y*Rg=OX@ctAJ?NSf56%8 zKSTFTJ;)PmnW>GlZ;8+f14Gff3NNE{muWWr-@K4k4((^|+<5SQvHKm1ZNAXAlp!%m zmtXpzqT>`Y7o9#c)Yi0C=v1Y*j{9j_NsWESZ}4McIx$55t~b=N*;6N-P90jpVGlTi zP9;-*-4o&MZhe#g*yzf5#h}?$pMh;xFt&D@JmJOCsq})sWTSIwu;`p<< z%hc_*x!3Zs=u3F}%cG^6E(B10L>ek*dk#+ed@CK8fgWV9Qd=P%_CzDbuCuP17{fWixF5}SX zY3rR3*sd_t4ooxFeaV>!S6WZb^i`$rNqfgWSJ%!%UuBUk)Y|&78DcSxyZ{C=$IlKF zV5G#>LYEp4j70&zFn>Xw7hK2J)=39dZOLNNkI72?L2tsC-nKWA!3Td zetF!4K6riPIX4DEAf2?TrNSg9Jag`Vp0qM}d(FZHYlq%6B!F;y89-wxrFw8M?xY<2 z@wSreL77%Q@bxKPFy*Qje9ZzOjO+Zl5%)%u%MHC00%_H2zO+z6a^TrCTm>LrcMWRdECb z#ZU9se*vsC`StDZaR%-Ok6}=t-aXzzTXbXxzVmxy53Jyl9oDRLXhR#zri#X-Aw$`w zOD@#`T2b%{4Ga&|SLbZhp-2sVnSmz}X2l`CPvM?5Vp(`;Y~Yt7`q<1DMk^lNSZ=JJ z)SC-McT{3RgsCXaqyZ^dkcpP@^j`%JzIfJH31D*)SJ!FKJASPQ&scLYX2Kb1SSWO8 zG~>;XX;J1$cHRpNI1UFj@INUyH(kFS6W(0pnqJUC!$=ece{!tQTG(BfYrA%DM+>?? z;mD9lpp1446%C@w`a4>EtwNH0wTY!~(k414a^B`IFQ`jQwG>KjznT7+S)E2&5RkWX z5*nWaiDztq1SMKptrRVd5{6TkR4Dl-C;W8Fs0FOBdw;1=6+nm=hRlNT`KSF%5n=AsxZv8O1UvD%c{lgoZ4}N!U_|Q9qBp= zm0qb<1U6F~EsE0=SM1-ms=mU@t7yFp3^((td1t@nU_jSU&`r0^J!Muh z0ZZNQ9hZV29CBEa-N0cUC)-c4AByT7o0q~kM|@u57y9?{z!TX8Jp|4d!=~F)<9oD7 zxmFtuNECcoWv8m;>Ka1%#@fb#92Fm)I?UDY%1S?`2&`Cop=LN&3x5|`uvfOkDSdbZ zJ!Os(wnRH_CJiCfRaNKI554p5m~+|QYo)3pZ@eeksh zQY<+;Jwb{}VL4iSUDFk!E_{5{_QY#Icm5T7f-Dts@NbnB@_YW z;L(8Bod^eBmN=D1mv^^)(jNz;rs0bxwege1zoNVF--JYot_jZ2sJ$$)^zz6f!S+x5 zG&SJi)Kl(U2QBlg`94iazI6F|R+nKM%D7n63e9Wv6>9KxQ7C;i;nd8^ROi|!2j=gP zQuC(VBdCDe=ogFPM_W^~%u!Bh1WiArny3zaF;R0sC(m#|h!3g{Wv}Z4d)LJQz7hP$ z;O{u-mMUNK8K2g1%2!5Z#wZi`q;0qUo1e2rVpf+sH(a$#q3p{=zX81GERnFfrmQl* zymzul?o5g*;vC;&M(+n1 zWz`lG29o$;6X{58xF2M$zMJund9GqvHmTy6-AlUd{yI@y$1x%|G;;h5+cMzQAe$+1 z_lKd#Uiz|2lW&JV2`O)dkneV96*yd3j!J%@4%n^;OHCl?ZjB9Vil1J0oQ&sq=aDEJ zC@hiYc|d%2S`2fN37u0mRy!;m7F$*cB+7yWaM`J}7!?f!hLQ%}{P@!R3{_XXSXorz z$6%B+CZ**FUlZ^pH1u852(GGP6`z2G-r7PQ7w;N=BbdG0xhOd?o!2r^Yw)HL#uu3Z z`hBA@HRo|=;-rN(e$mo_w`ojAH42EA=7|EIx&h7-3^&xRAyjEXVkO9dKSJ+IhcM^)T*bDft7K) zX^|eAV>)EaNoqtQ-}OSZkD%xUlWUV)`=Q+!tq*Nyu~2@Soyot>dRafD)s>lDK5cgF zYRBuX0^^ycKO0lj;q&V6d$!%sONnFDYE@NjgDeFV>8wQHg?2vW_dyN#VE1x&v)W6S zNsRpWZ4}<)<-uvDk3Gzz4JF(=NcF$T*Gjf(VHS8h(v{h}e5A8NOw>8dKRP#Hkr{ML zB25CTPkivX!Ouzgj@U~4Ewwj-M|B#mdcx5ew9(twvna;-moNNQGDp1%*e*4Lt%XI) z+>Ne>mDfkhxst*)y@DT-yv zOG8msRKkDpm8AwXF}b`0RQPh?gN@YT1PSD!%`i=M_>)AbA0_-h;cBa+JS-Pff(}^T~dN7JsU`NVt;VboEKD2yEUA@5f5KlHR zqepSxF*HKAn8YDg_Jj)x&VG;jJw{g+Wx7By?)z_NVaRO7j55E=pVo37C z?+{#?8FdhX#GYn{ zGfNRS>mro)A+wyCA|*xBs_dsXo3=m~Li4=skY-YXR%JDqA&1Ao1;wAB-tu|Xk+LhW zQOG=9_UQ{#8tNOF;CNL$#^$84SQ#U8Q!QrPX6gOiKway}fqBN4oD$G@R=l{m^&?~~ z6}jd59w=wlx7mbFmO}xYF4L#PR}4Q@9J)_t(bIJlq@>R<$!!E3r8{lXuE zVfdM*=N^qxI$^IQm^Ctvz$K_cr*GasBYXSJbXK2*v22Ap7WGSRLid*it>JR($=dXi zCVDYCeVuAT?YuEsJc{1(qj4YI_3QQzd4P=e6P~~4>bcKFkAh3$7c0Ha_`{e~DOazR zCyX6hIuCC`W}FS>QwnggZ{JJ~EYE<>ck|kJaRlX;j|D>HzrPlhnk<=+ET|ZNZ1%Eb zI9Ij5x`0no<C9 z?_Q=nU`Qc$-eKN=>LpGX&-00hP$+A;-1O6=GZzdDF**4h%oWI@9zSEMtn2q3Ry5kF ze2anluiPUKRp$F*vOL`?o%|p2Oe{B`t3;W&lK5)a^-T*;qJ5YK zpZM(L*s0pAC3qGSXB}s2tmALcfy$Qi287w)J}lxVX0l0@lF$OCg_&B`sxoB-QSXa} zn^$V18}ys<9&77(A71)xspx*BLZkh;4EcyXAR|M!6Ub8QtRJ~vKu}5x^$4j>6l9v z^@XamO!EmJHK0W4c%#l{S<{MB;&Tv%f!BhwK9O4r!dz+pldSHB&#R> zvo4oXyy1PJ#%kB9n%MDSgO<87AX542Lsr1FW3GB_e5$>BZgWWLaElxXcuJOP5lB;S zBbD=fn#IR@VgXWM!Tcgl-+(%XI5^;yjw^n%D(>2b(&)b`uON6+0*BYB~2eYo&1u-Vx(mAJV-Z554c9h2Fk5Fn}e>J^wTKaX+?PDG+&7FID{UN*OHoUuyA1s6^BkWP1}87 z8Ck*+T}xPf354~ID4V(Uz?xoeb0YvVW;LAuUN z&C`}#Fpl4z5$C_-8PQ9nk|fNSc=!AKlfrzXQ@c%v4=Ezq-zt)c0Gf z%COmr`0}f!hFAvAw-PrEItHuGK%;J2SNWPz_HV3xSdL+hTJeCwWx6h-EC{_yhfc-J;Q24s`7x zua~d1ONL`9EKa}Jr=wvIBi3E#<|R$lPtV)vK-kkQaF2O$p8yAZWU-ergjlAcrOu*4 zZ{82Hu(=LvcTcx{3A;602^oHj`W9HfZ=W8xE;g;vb6KjWr$Y^V2LfL63-OCEIxuK> zo*v)^-Ar#bQ+TnD%vwVeMr}%G7<7~Q4;)9#^VkZF2^6MR!a0*%yB;6m*Qrph1V1H$ zPt#{6;iGZWvWMMnW{%aM_w+PpWZ{_U?THhD)hWw){?BxGmdZp4eiwYi`9T16IHPRg zt(VIeYY@!z3AT4*<~PGyf93z;PfEf+=-rzlmDuVRT@tN*%I;0sEUgCwc~<0m^hrwix6Xl|uE*PCcCm|E=&9t(XFbE2E3uzAhCH3lsbn|6)UK zGir!7dDFtp$!513!s$t!NtTq$sKA?ZzGla7>?_`*r|qrNoO?&6`ZAJGqBAvH(9&TA_Q_VKO69B85)=h8q4L6LgN&4Q=Bp#XxW zl`Fqf{r4-zSt%3p_@xS(0O%7Bg&{C(1{|G|oiWaFCdGUee7q!|UoL+%C+L11bU9ZX zYHngvZtd#YiZ7j|nMP%y|@Y`h}CEui(H6{YVZ#=o|?N8%rLnZVf4E2*q= zW!k6{A?MxHfX<#8npEC212_{iaO3S9htamaz!XuDjUnb4H!Bnhk!6#*ODs z(N0X}qn%+*Vm+?y^_Es_b0I2b%sTHNn;%!GD)_uEmAAuc6mj)6^NQ93MC&l9Y}n5h zO=x*WcxPQ9Czt9_l8Q}AeF^iiyHjG43)%9?SZPVAhTf7Ir)HF%=I@QDlG_9$7po1y z#f9J6b-t=^sg5MRE`7i`>Uai9b!*e{s0QjkY6`$tkjWynpEaA=jvsU2 z%?g_uZu-(Txj!rJCA#MH{S`CW(Z%7z4@Xn)zAQ8eofZE2G!Ma82f<8$R80^S*`GI*7L#`PP29!vow7 zfJJV_oRSH$tg)MUOpoQOMz^i4?e|E80XI(stV*v> z^6jfm35jg3;j^XU=GkihDsqI9DXf{5JL5%3jCp_QA*MowAMVRrQaJnahp7HtOBw(b zoEUOibWI$AUU50#ap{~Q;Z$wcunpNT;tw)qng@Km$S}G9+XxTGW`kr8pCDgkgWC2u z3`V2`ecv7IZsNSKPL70*7Ed0VJ3Msq3Yqg%UbZi{3{Wq0<1^05b8(<<@i6lc7_%eJ zOVG&5&&Tj+Ro;BOG_kft(x40(k$X`(+>{;VgBNL^@s>Gg&;e=QcHUJ$;`OmI6YC}c_Za>F8S zAD8#|(id661w_!+H*2cd8h=}ssXMA3+?nrTWd8L`*R;f&Ui|I<5Z5|dB|xYhYqy0V zSiNhgDNE)EPh6vQtq-OVM5@zHlGsHxGDwyA(u_T=$zL_L!~vUO;MWch1J+&@`#ZKR zJPd9!6v|<89Yfi2FGKOeGDYlfNGxT2j2Z4VFV@@5MniDWH_H~HqTof$^ zEt`q9SAXra)FE9kCh7l*{RfqV{r)06yry$B1q2>`-_jA)gX)KhvsL}^zX#a-bnqRwJ_48 zMZx6@4b^zBtF%1X=3)t+fT))s5G6j#w{H*`gK18s*{@k9y()CJV-PcguH~;u=5uQUD2G3;6 z$i~w#SX?4*4|4-Cs6PLL^4|vy4%Kh+2NYV!?teu6&m-I5^H09Z-VlP9_j+T5z4`pp z4b|O5;(t2+`zIm34^Wo3C~34q?#jlX;y^*R<04aVcV*+ep}IuF@XqlIv!K2+6XcwJ zVxXQ!z%YJ){T*r`41|Pc@VP=UvT!SW{6?x_8$E83g?$gWyt>y_^hWFWIeWKj-%^_1 zs#tWFqmLT+#((@d#Nb^CnRti?EicjIme}b<#9cb*bX_`h;l<2^2+8dyyBGsxEW2aI<%e~)70P{xFTUK_U zxxy}cHB<^lw;~K9*-~SGT24c@>h!MDdlrc;WeuXLsJrA2W94Rt$l|7!N;7$;0=#>pMG!G=p3eR1gi$P@jDDA}z!(ry(rEK>7FBIc_YU zyGEI2?eDNTiJkXXI>!yOsf;^1%5DdjA6k9SXd3F~d3?-@z^pFc%G^Y&xP4EJ2S-w) zh_dq5b}soP?`Y0n^EuL5`YlqPuAL%4=S|Dp0;irOV==a(7kNFMc0q3ET95iaa&FOZ zX_d(-4!T&cb)_yZUMj3Y0_Eu~Esyzjr*#0!*BVI$4SE@fPmnxS4L`R!!9gndP278y zz(MPu_{3W$W$*H#9)+K7Ts*G%CEBu*ru|8gj|52^Vdt2NPwF9d}#`HeV%}>K5*od{ZOCcrI|)~o{&;Pb2LYK3z>e^ zm3>NHe!r#5Ze4oV;bpnvnYWV}QHc_M9GmU=N$}uO({2tkAxjG!xY4!lM<&%~?{9O6 zDQ^e7x>1ZDAWk&^o4L#c5{VIg?xicX#x4+8)Yp@l`Wio!%b!rpsc`Q|`TL^0esS*E zoe^(yb>>IzVse3BJz?eTM(DSo_`Z3}qjAD{3e#X={8)~Li6R}bP`YH<*W*{GY0i38 z%%TP=l9t&vCjgm zXm;_;98tB;9!%ZTYPOo&QBuz{;4T3dUcBdr*fh1eQlmjgUawHn>aGDBrrFAO?a#up z3ZG+E=$(vj(9*Qqz0y6PzH{_H8&Cy-)=TgkScVYX90$QVM-5mwY(ABi2rZfBFN~Hg z`B)D7`>1J~Uk3wAM8#qSfQr9_Bq|)3PWv;Ynhyhq8(O_HnJqLf&W~e+of^B!B5hmu z)zE>%DD|D+By|tPuwz^z?pxi|aBQ3)%&;RTFC&`*E1# zbfJx3*JZP=;>*B0S3c#8OGfpl^1VFwY&?@7B#YRfY5tLe>~^jr+Deh4^$3iV2Mn`r zI6>`kWJ+sf8yzpog;Tm{N2Qp#4kGC3h(*x04}HF4$drRLkCknzs#`r2e9gcH72A(J zA>93z1n>-s#2TY-(e3-3AW+3bwr<3Rh273CG2cd!wt}bOnr_Rjgp{v_Er{5C9x}Fn z`kj`PGUGFxwC(jlrMDllkAv{ux?zrOwd9M_(99DH^i)tB{wZM}JfdDG?^mtj3b~ZPumUc*|H0>hy&a4uWEI&sokEQvb=UT>( zCKqnFJnL7gWce!%YI>kLBI$WDBa-Zg_T=!JO9o}XfXUABV`|{&v4o9vdUR=Pv*|bu zG|W!DywjnzoYvZoe}LGM7~#1e_-!|1M$CY*;QU()Kwb*$9=F>bK_4?~&iNR^EEPZp zA--o3R7PySwOD5c^7eLmXA2H3mZt#9c1gDTMg zg5e{C6|t=3h=SHlN3dz%#QX0>LK^`e7f(WcSQkZVid94}CS*GYDEzz7mp$p678M&< zRYFG^Z{~)N;}!Og%j=F}Y3|K{gVUersdwO3OF#H%vA!$#d#MeqT#Q3<)%$lgW6IEg z1Z@O8&}NegVkJVM+CeoMd@KbNnC8FPdIWO(b=7{8@-W4p&cMwByk?*~#kDS)st`qR z_aNgCWxtVo1UjMzEJrQn`P9Mn<|IXz+?Etag|7nKyb{C)YdTE1qEmt__;XDtG9)MP zrHb%^eO*_N@PJ}uQli;0D-DKi4({(Fnub@Oz@RbWwE}9tS~ePFdC?j;-hZ&Yi&_7m z(BOp3Ca#ZP#GJ_~uaL|;`oi1&i*~&#pc@6ql0U^5rtJ^*lf=#-E|d$AH6X|S4B0Ek zA2F%1jRcTGbFgGhtP{lD-L2*{s3KW5c2|lF4o}*aZ@btD-ObH(YaBYQyNX6!kI%b_ zz{iE$$}Sp0Tlb03Y(0`IS|A}oK)Ki~3%ropE6mB-XY$xUgJW8)xPt=27_go5>y@ggxQ`uPQ z+B%)tYD4hbe5~PN9@2-r0{Jc&;f)v3(skRw<*qbG4XcvYm?`Zh{Z)J}%4N;7wY&?& zC!vMp!210R>mgqY;_s)q2FtzowMeziYasi6&{A&?s@A2 zTo+p|@cDrzGdL)z29rya=wPU-S##vB$2Rt@~ z;Drx5%ChnD%o@UH;`YKH>Z72)q$~!9{1gdK^lI;dPON*G`^!H%M8+lnWj<~B=BkXr z6P~@vY5rLGUthdJNIH0SSAeXZUOAcrbO66#i6bnji*YVD@j8@to-y_Utt7ZskLG_+ zg*vJ-Ghve%#P9Fy5iPTSe)gj0@x3EX1zUSDA@-!=_!n zHj*D{D5qvE4;|JzG4R$c_#809O=!uUCP{-BS(`u(Rz1&7ZB_NtT!{|TUht88Nf1>O zvs39bPrxrt8ZQ{T zgSR*Jg$p{en?EX$O%tuRbunSxyDd@0e$M~6ZkMhu)|cq>{n9Zkqopg7a#8I}4))ac zEz;vH>0t7uRV#S4X3uU;k=J?Een{&v=hODde&r#vVSNtY<*rQ-A~RN&Dk*u?kahV=1AyR|QQ`nROGr71-{i(963&gRC8D063}6zN$qz2#B@Mi~M}vAo-+V#?jl2H59nR2Y8#VxFj5h0> zD(ps&w;l!d2c=^L^bTxAMEUa1>zvq?&$+)#U_M{m`H}=JO*8yB)YHc?fpy2Py`;x^ z=U)L3zV3ofBisxbOyVp*jJKP9r{7m!T;&c$6`YUgMneZ`D?7F?xXC=JPR=e&;zqlR z&Dm;HK_~{)sS0*&;c@XVOaUy+%!L?0d8gP2?Jyo@YF1=|(A7*m6+E6E7w1CDCj=b+ zbybv4l#|)=Upk3FW&a%IHU9a?tC8Z?nldllR%IAda_l5W8-LwLtLL(&ifi!AShLrO zF|C;FDQ-KwvEk-?21}76)$;rm(AuiH4!}j$= zC*EN)fJuxBVV(QMIZe{@O3Ghh*`bf$uC9_A8Ayy<{ep}ic)_PdJ8ZYg6 zch(`~NX04>Sw}9GYn``@!e;2F%lP>HSkOT0l3C;h5^-l%htpb$zG7-7Ee4-(=l!b0 zyW-->TFoxtqLn)e-zmnV?uz5@MqzOg?Ot(oLEc{y@{vhxf%DyfFJp);2LYZX(FPZ@ zRkh`vCAFyIgW(E2Tqb^vf_1XH%QRB`oM>I!yIA=6$=Zh&fiaD?k>vdp55$)v2dF~D zXmb1nZidBKzh9XHH=hNc$Yrm9*OF~ATSL=T4Xc0)digYTGkI}r3VrUL0p&2`#Q4M7 zp1CDPcyMdWX15CkN5@N)E{iftJwXbcJ;`S$L2L>A)Z9i(CnxWm zxa4=(Ud>9n%e|n3vo6jz;HX;V!`GIV+KN_hf=8@stix2yyT;zxIH;^x@22qD?>l_k znd`JvXaFQc^JLL+F|wiTV@=-oA@9Gv*+T<8OVGUBo6>>6tuc?dO3rR8uI1q(buNdh zlH^)%jjJ_6BnjkoPLIbYgEFs<0$;olIT8ndLAW8A$THV7@8w3aSz*a>oM5Sw<@(rrIbxf{}IvHs4CS<>~2=k^)mZ-}Rm^10a8=Ho*?pPTDnkOB)+7C>D=!`#B5FTg11ab@XOa1mT5>~kb4))rZT^mB6fvY+&57q>a*s?vKEwjN*%CE|-7YwW8 z4?yr!p#j}Qn-A;#zvv6>4y2vZ^()%78Lbrct|CSfPlDcjHk*Qb?Sl;r#Z#%3@|bK- z#Z;jgh#3aApr@XYSY9ugTZ1+bhfq2`miFrQ9w(dU#bAmx>6meL--POQ$=@)U!^`O|8I0(ITB6N_gU*vaD@5PwJ zF17&^)Mo>zmvEa~=p0CfN-qt2&LAz(2M>I=%k<;f?N2~*9;?FZ78;6Im&_VBy(YEf z=cC67(36o1c71MBm}32Og7Ef_lr{YM-R3njWYDw35mmvCZI~VLeJAok8_;^Q1twMn z@w&ZrZhDULxYK=Yp#faE1F8dTP1L5H<>$no4UGI8cYfDC%R1e51q26lZHp5<@7l{w zJsNeTNM+}fH4kY>a~mPPr5~KWzGKLrf6m~CT>ONOTm)J_d}{~eSL~yl7L^rDSbi9v za62%TL3Zv71Tq=}y%jH$bhxWt;+&i<93kKxvh>sXjklG*3!E;)9GBh(XfuX0T@?w$ znI*Z2xC?LX7pXC`u}RHcZ2*Spj!xSZA{WYi{b66S_nx@?VlDtnzr8{846o5hf9%Fz z=GD@g9L+JR;WkOh+n_Op_C>ErKm0_CCPRcx$#$&X-`P;6B@rEm*#| z>m~h(a6B=N(@oW5JKJKR zHD~KDXMi*3S$P?I7IgpMTq+Kcp|_diK`|nt`mQ6PHR5uS`tFCZ#bO2YJYKnJW#75v z(y|5&IL$i_Zs9I30lsZBZ40vuk96%8#MXbnXiZG#W6b3WrwfvV^vKgb=$IPkx9CW< zH@)p!KJ@W&1;asgXJddTkF*Y00A`#?KJ==vp{pO(4EMs~sUs*=ITH1paS9Usjy)ko)46m;=$sYXi*T>^2MpX%=5~ijvz;dCbr~ zE|~DzStg|L$Z~I9%UC9u@czEuZ7g;qCd14CHe>axijCJ+aJA z&nOU`7rRQxD=LA=R|H+HA9`@>$<*#=Q1E-;U|3)j8uNVw9`*H!v$DQ%|f z+V zY27T?ytZ+z6WOfd>jOQBjDzisFbxR5%pIk@@FR(Yuy_~kbOf72)qENq4Eouz8=!Du zA}@rEKBCHHH}uB5Kp{obPFj8|RJNMGB}IEZnHiLLngNr~w(n;6W63?!d?(Y12GjT>((I_6+n|Fc;wPZlV|skeZ{ccaYCg`}?x2)C3c)x%4zTL>afOLFdGhsCo9K{X zYlXA6o%nG|g&fVri(eQ}0Z+*FsQn}x;0z{t1DzOTV6I=QrB^@2cohUrTyIX^+4;Tp zSurDh-w*S?{gGjK1m&U)$zGTY9e60R%oq=A5)|t3LT8I*xa(m#KA;-e7S$-^ z9MdrexN(xoO4rmWBKEE!FkSwOoMVWg)8`D~m@!_TRMAS|COb|ivo9s<=>qJciBa~I zFfK%${%$SNBq@(2^0nR(twW2m#$?bop}h30%U09{dj)%%+7dEZ5FK#zBuk&kX38=M zA69f6K}uC2U^v!x0NN)Xsbf^gi6{!F-r?+>J@R!12US;Oc!Nx&->UxV#36KIPgnh@ zyvWB8VI9_lcu;sb%6Nx4RlUr#oH5lSYzU5>#X!_u~tThj$01`uwH~ z*-rC8w*9YB$Ee<{kYeS$A^nSUzobXDzt(8ye8rdE) zro!>psN5Jxrr-JM*P}ZQ;?E9-Jl>+wIC_lf`mKkiOe1){;MB@xDfT4xS&8(n&_~|q zcke)dQQEQ`7m}pJixlk~q1Etp@2c?${FVEDV~C29Q$MLy0=~M` zSaLr9bpjcjjuZIsi@N%LrUZj3lYpp>*x;iSPJ=Hz8Jf!0;tB(JG1$#2dldn!l6p;R z4$5|G>SO zjX*m+)uw?_gM2NRJ4gv9G*s`CHP+V$LE2u_SY3a-#6a>*MI-Z!c6^NJ@F2- zpA&qVrf<+zL1I~#oUX|qFBuB@>tv+He!k6hl%S1~E%miqS24Gn6$lI@l_`MiS0$cO zq_GvR9fzExi~lvNmo$Gg*!yw1wnbQ@DW&J@uP|{@w_{>JYf6y3aqQG2ff6c#Q+8@27Q;=f?+m zBCkH%-%Cs&ExjJu+&kqyPWsm-ilQjvoqGz~mQ^UOH~yuxKZOR!|MF5=NjaRJ1^wfm z+bQFF|Mw3hsF+ZebB0|U{FW<^weytm=yRtS|6lg`*_Sp+GIknF9p82sSWOM z);q`<+QDck-&-N@?*4|oS=m7Q!20{tb1|7Mp?Bx8Rg1p&)!d+d_0AVtNB=*E_YPJd z)e)w>QUXr#nRrt0$zDo+dRPAJB&;?+Rl10`Q`#*s>|S@|uTKbx>V5*YhKv-phth6R zy2$@p7HS6r4t|PGV1-cZ*S`jPQ;CGgN_4e^l_&QB z)iCTa&Ur-DgFK53W`(j|R7Y@R(SRej9lu2`uKgz;Fd@CgQjivRkhg51jz}|TS|qs+f)L(|HfBp685~H7iF|aexa(UsJ+hq zvBf|!UAA%BFVh*+841i$sCZA;8A)o{6>`YfltW>;I}r)Q3^K9<=)AXY!>0=i<$=Gt z_fmOLnE1#lQr{G}z_WZhETlJ*;wozddvNjMZs$_0o$F&TZkOGy%*Qj6%E{5j)2OWP zfQ#N1N1dsF>89aqB81RqoqA zc~*#PmK-Kdyr8$%O}{9XeQKNxe6ZeI-2>qq?w&oZ*f5 zix~)ic^|~G$PO0J7ZpIbYLt!pI^USD_%xwK#F=QOe9ny!RdeeHxxS*}`)-KOF=m4* zHJzSRRf4h%`ij`%=sI`_^gB|Cv2KFmEKJqtq|xMRg!{HKN%k08>0!X>cvMNO-Z;g4 zs0b}>d9!$v!N?#L?4ghQR+5iq4JS3oSPm;j=dd4o&Epf;q%>%>NRfxkJ}<_3aQP~_ z*zbkna;iIT)tI4;$lh7@u39p2$Q6ETbootbqc!{HaN$KkLE&EEF!C@YN$O^a>Foim zf03JyPw|`G$ImZdWU=?-b#TX_N)RnNq*V&HfL=Dog0*wCm;F56(K=?=h;;kS8Hyjcd2;o_P8 zB4>Ubz#(39)apE+(1}DEpGa%Rz$QCJSTkaZ8R`T9Uv_pJugj@D#Wf{GElmB+`pf`` z@Li=8jgp5i!EE;=TYfi>*?NtEy~^%H^>A_WcXDu@qbL^uFuD;hMU@=anl@4=$WC6OCXY{yIKxv~ zyvfg>8H8^Cvr=h&3RJs9g88D0&4BoyXeH6?uX|f8Q3A9hObb7#e%nnV^QiZg1W#zk z`&}ZSFvbjp-9qB5DkxY%a@>41+%0_WoRO%!HH~660nhgVI^`)EDji9))n}Vw)$6vE zPN=b#AG2|BUG=fKr}g1FZV^i*oulh4Y!N@dSzR~Ig^0eHgs!v(R98o~#9IK|Xy0P-RrY9VB)9Y!b4u1naYG}cCM)i9#9SyVrL2U=6D*pUS zL$1fp^HYWO^buRuF!4*1oapFqpLhu$1kdAr7Eh@fIVV>TSJ%m~03_E|z1O|-+Zjsz z^23d?-dB!+<%EW!w^oKl4!L1k4mX1K?n+~o+dh3(495e_fzG1zIpjFTIP6K!o{<}$ z7l8asoOwPhNHq1yta!is`9SafG@#5g6`g|M?sTmI)}oJ0d*M+R7_7zY$b9-dRPy1K zL{#ZJto)D5N5M9Q#uCSxwAul5ns3o#Gb;e!QH&-r#5Q(v4uwo;wNX%d6;UptWQohM zkPV*3=5iaahx_?ij5FQE+S0EShv@w25serl6Eeyvs}=GV+A+?{*Vx@=Th+T zYY_kCZIDsi1;VX$JyNwbC)bd|cUhLe**t4c{81&aicN``3k@8;OL89m9@l1xvXlvf_0IWstN(=!9ZG@2)H+2_Httg zTAL44Mq49;b;Gp`cVJFqt;axlG{f4;GRl7SbG_@o%>xK42T7ov zKz0f@Lidu#Y;Z^Xd=mw##df{Xfs~iUK@CY6I;piL=)jia$nxW`IooQT_-RZrPbjqGiNAjr#Bqd7Kj`inD zklByk*^b7B+Ul3_i*(W-IOCVuK|!HkktG!}#nQ1F3?rlfJ$pKy)*BrzsxLSUML~$q z3s8g29$1)qL|$Li6=JJOcwNv`JKzVcBG!_*x$*t2%`N(I1iV+zr{#%(FLz?Uu;^aVU}y0la0Y+&%Lw-?PK_RwmEDfAqmfk@D&^ z^}P)B5|cl;=sP6Ms>b%^`KkZ$TIdjRWquUWXXtP0lM0lUlRsO9N&j#k~99juiZLiAncB_%iIaYyM*LC`*(pdm!a3J+(FZeCYDwWLXGNXt3L)(Pk!zWLzI-Y zeYCU4C^lB4J5Se*SnB)rgoD4d7B5{i^{5B`)E`F~sViF((s01(#kH;?87rjgr7`P= z^O?AH&k$#=e}vO?OSxSn*CPmU>1wc9W*eh)AI@8qAS}C9%NcVI_qpH173dg?J3d~h z=oZ&-&INiC65^1)qxxpAJ@M=9>3Ibcy8LI$z~P>3a%Xycwgtv(9rw#PJWYfH5Sh3g zb$@in_Di6l|Hw$>NNTUbRT6Fw$G*iqZkj?JQRBL%TFeU4N7!S)PpZ5WyT?AVI^p3&r{o?o*#iy-qm+KxBMUX?J&azw-MwhUtVuN2 z)Vrtz+zyUzBvD6dMm)u;L=-7KKMpU6qr=wc7pDReg~@imu{iD_9P_ujNY6jTkiZ^l zTKWb1w#v-Xeb1&p6NZ^E4j_5x&#dAy?>Pwca9>0+6oQ{mY>|W@h6@~?n6)Lvm|A=nIcfCe6XZ|9W0H#-KtpHKMm>%*suD*Z z8D;eEoQqravWiOr?wE2S0y(jw+1oZd73{dW`C_#-r`-Yl1JokjkH`gq%{u4+%Ci_% za+5nt;XY@(3d+`z2;A^CDoIG;K&vF_Rri&N`GfZtuf98EmAe@oTAS=DMLvGuxeM^( zbkKHADOR@kb7C6C$cu%7ZkpF}$PvwS%5u3-H^Z@#YZe7;xX*(Ma6f2+mQYF(TY224=+X8 zfd9Gvm<1=MS{2CvYG1A|hz0+LG#ubIxU)J|PG`XRk^fP_-4ow2q`ayZgT@!7FQ7mz zQG^Uti|iAsX03W8jX@y!=aKFhi3&Ae1LP1(l1nEnulYI$X0+(49mH1#=c8cv-RGbM z-ltB5MjIlY>(q232#q+4XrVa@^9@RBYUZ!lNYoWZEX{5%?h64l3c5g9#(Bi3I|4R( zltGfo#3BoEQSyBIX+`8k6JXl!cBNbv!}$chsM&Im1QU}^1uiJ*?aaGeD=%-|r0>;z z?pa$|Y`Yz=Y`~5G-?|UvRfPmUy@NlpFXEkds$K)VRv)3B$G}e2@|z*o-gG zQs&ujcTA3g@Tj3Y1?Uk$d^N_42;)FpYREi3FeVa~Y#2+*0YAT$770vfl38@kwJ>)h zXQ8^J26dbXq}6O6Jet-5W9zH}mhNzew8{uHc{rzLa`wK1j-WJfGOOUaWT{9SSj#;d?s?tIYu@nO{-=3~T zfMw9_#0z#DQ2l$X&tDkqV7`Xj?TO z+*o{5`D&HmV8Ybv5ZQl&xsTOt~%67ROh`i|V$Cf6Fw_K%nW>6x<7?%N=( zB$AlRU$|?s=yIBr7boWz2Ro9qN+}*%zC_5;O-$uWcWa3QU!Xs|!*B7Q)D11S9K>-t z=SMDH)i6|DG@4A5yka=etnLh(R2k(*L29nI^{Bz%TFkvcD5mmBHeE)XPsRw(|M!ouaM zsO)(=*I(`#3lNnc%2B{oO3ybVcc4O!r=dhhcQh`QEOzN4NKt4P3`os4ycvkIF-&k9oJHY%x?6XfdMZ{}sPM-Ca z{%G`ZyW*hV%&S1x-Yq8kiNrWJn#YS-3Q6w8(pM|?yAScSrV-DCh=dp1$gb9VrhL-O z8plOwjDwJJU?hjfURK8dqD>i<4pOqH(_YGNir6@{E<(nI%$T0lM<(aOfp4bm&pC^} zZM?y_Jc#ZjIvgRATS)yq>r>H-{W5ADq-;sO!yGon5Oeu6V{Ytynh65wbUFpZWqQ`k z-N_?`c~dH<*Z`RvM~RguXX#$-s_eG*)b|LR{qW?fM-4+@Q*uGr-U11BBql zF5$(>$RvaKtzK@dG^>fbWp3{2*j2j_f^+MAL9*56gi3?+K0#LKUc`X4#AU05q?Ut* zBe~plfQf)UjzgW7y{iSf8V$~HX}JAXCB8WQD%BM;Za3L}9l}`s`q_5C=(5~4=Yh_f zJ~X}93ibsdO?{w6Jw3=$dH@9a4{K?B;&pMj8HRw^frJpuG=uEGU1in%g7axcbfYmP z=a?Gx`9G5L-GPCD^Uk9Xg8ic$-+51Auvpt++d#$tNY8fzK{?Fy|L?A7<}JwYQc*Y{ z!>I<9k`m*+{2vBX&;iAC7NAa6nhURs! zulv&xl=aAD-=t7%W#;&~K8enF)P1wH!^^5>uTJOO1e$vnVm~R zpYXV&4_Nq$77DPxq>zogS_?+zd|hvAJ9AJqXY%G;>mbVEW)c#HA3GM<&Ftja&zR$M zj=2JmUL+PDSH61lpFpeO=;7m z*YG1f&BR1WsqLJ+<8eJ~M@BF=ND3YC&(Ed1!p>%@aB$CwUk3@!i7i;!exI%CSQ_># z4~jAiN12muCE6PsNeXet&{=*%e8fK7fcQJLbQ%8iQ*iXlw}xTk7F>bH>-0}4zh)15 z;sSkRsGJBmveU()i&p94;xk<>oBv2jDt^( zgRO>omd6E+jGPh4x_*G}$tS7iu2Uvu<}D+!fErI?VzQm9iTcXM@!fR^mk96gK(&NG z9-WTzoewp&=_?(1!(~-4n7F*nOdSrfTe|6*8&mg+8Vf3itW%BHQRiHf16Uv#K?P zVP_+dq&%v=Xh1#wihTvDqb<|%d}*QU)>m1TroaYhu#iry2IX%v9xU;VQ}GUKW>l0a zhV&<~9kfXdUTjvOQWvEHdQhsd`FNV%x%$Ae(Uh_8X28d1Cvm7Itb~;$lXLln-od8D zTldl58!-R6SQSD{dEvTZDv^lZMY~F9B}Qv=uE3(%RoFlI*XT&pJwv{TL3k|n+=G$N zL$71i=fk7BbNviS=>MI+WQ+XeO)b`T4=F!6sL{W&z=C`Dg5dv$0i+DLN<(&Jj ziBI8tS+aQ_*I{9=uB6M!3J_m7h?m+MI@`Dg(QyBbOa!E6IYpS+wAGKHA`jI;?yMEJ zO~Sz3eh$HKXS`-U=akL@;d7|f8*$foN2nySQzN2atjWWbn#vj`VHdr$a=H4|yV35| zd+E#B1!>Ud&%K^EuNfJDWD)6!cb2uKL;#rcKp?wJP=M#mNtBsT;xzQVNz6{9ob|-= zIELSD1o+7zWI2jMp5Wr*LNp`r{?}YD#ejKcxU&pWsPk!$^U5-rKXPrYW?80T%l zm%J4-s4;qisz`KtU-jwD9x9E1(a@4`-IfCMogVi02M9V*usalMsw?@k5|K<%w=QO% z*tW-tnb%GYV|=WJKy3DDnjJG##zv%kxe}48zCD~UG>&;0I`_yi0qpcIf_)8v;n#eh zU>X_+g!uoo&_@j@7)q(H-x!OQN_KIuYZ-U-Bm$)QP^M8aQmhz%itCTkuR%~#QxnOU z1^s;V(k~ePUpN_+$P|sOgvXzj(c@sP#5$gI``uODw!EM&p$QZu{QP&+YE&WUxOtjt zg}@vC7lT?pL1g;rK^jwj_+L1|dzaJZ!J%6IZx)*E$bIYAfa5Q?f6Zz?r^-!N+N|6! zqI*9BF$Tdw+$a;KtgJFS<{$a%LQFQ1f6!0!&sX$lds=83IXgNX!lxGc#j&o-*g53f zuSAC!d%l_5hUOMO!fjxc+>#-LSLSI z8%D--K|1zPXs_2%xDBjML(bcnIsHS134aD%hUeaJua{x1acXiHYY9@CX81fe`&RmX zYq}j#{>$KpWqY};D;F!wX3MpD6OLn1vsnPbzCflY&0QHG|khq2@ zJBbiWKkwvCAxTM}^+x35aYcE;tNRmOH|^tV+jCHYjr&4j=NFjN4?ffo=GYE&3H?`8 zucofQKPqIg);^vugP7?bbVtm^ND=}J_-~dcCpByLrsMk6Y+j0fT*&Eimn|>Au)Tzm zAeF@K7M-)nm5-+nZ=KS-{C2*_BjQ@^_D+bT8{*?H3hi#D7%;Bp$yq8{lya|wGqKTl zAv*3%tIFYf@Lj{^JM3HkoUkmP6HfC@aqGHe9y$O-QG%lc%R&1>y{phizCyW>ZG&19 z#-*7hcGwtq!mJ^)fCx)EBJCs8+~Y4uSYYyrvJdF6&YKvdHd9=Jp&hgx6OOfYL5>jc zHtL9=w7uIAb8BirU8wP^6D^+Tb3t~UsgZ@y;Y4Ej&`xN zN5@W%yQMjde4x@(;ZAZKxB5_><;x-E?z0(V0djkwvxr)B*;LACRQjEN;_a!gkSurA zk@^Y;Cd>3}33;{Y$j?ugT5C?}?7U9SY!lQi)B4+|sD^7egq+-G#ZkwHiCnqkx*Ro4n{yVQW zlc{Jx{<6*d_q$8G;E1$?RA~UovBdu${I~-3%Sc_f0~CMT`TD2_Mvy*A%TeDI-5FH- zEw00VvS&3_otgI>1JLau3Z!C2Dx_g%WqsW5lhw)hx}PwnCN9JFJ6TnU=vD_!$HY1Z z(DnYsKidUc^t^7~OZS3O`Bk_?aGzSdAWa>)HHw@`A9Ai;3-5D~8eMnjm2-r$pt672 zRtO*uCj^e21o7t-O+ zX;ZFGAIu%H_)G6DeIr9!O^3d zmkM8sQSaPww-?7GfbgIi4r8l=;-)*Da8fbQ8_9TYF0g*7wmBx^Ugox7?+iU$5>{eYn&=^B8Ozl<#pN5zQl5 z1J7~b%ig{pyt2Wual33qfOdFx`QV`F{$H5+WM-QZC{on)EwAYvW!_fQFJm34MjOje zC}jeJAo^0oj6A2VOHuNsJg&NT5i4fHW*cZk5r%>zo2wo*b|>HzZKWHTtz6Ov(V4%3 z<3##QV@PINUe-K}SM%z?Vr5OqiSs*fv2u@s4|7Am9go{pS_WQQ1}am}V%KUTJua?! zSK#-aIvP4@#D_@7wG-#opoGG2Gx0qF1qYe*e=Qr*(zT4mh0D!elzH7&C(gw28_-1D zo2*Qv4n!4bdx*cqicZm~-yYhy;O|;>oxc&_CtHcZm;oH^2Vrr+wu2?vgsMQsxp|}*MFP7!9-Y9vF*6`5&zL%so_jxVwL1b zTAl0uoS&AO1M zCaE=%0Q>O|_P_GJ-RDDMS1Ftfra^=zDaC}=Vycy6LqXiJKVUT)`ZiZ{V*vh+{dFWi z^klVF8 zixW>ZOmMGE?@}AB#qh?GP=Z<;h`yS6O+L3s2V=dVIwII zYWbS=@G|^9ZV1b!hSaKqn!X_L9G;V3rG6cEte}F||B^Di2I?Po=rfxVt1gn&Q$7yw zdv_0SW-b8rkmF|F*o;P_OIP^1>Zk@#dneh@& z9$o7ZYrx-K7PJi{CJb9tud9$gPC$$UJJ46F2-SQzPlZE27=o?>Z}OlP)qh-*pO!~; zci|-=k0O<43*F8t5a&z4TV$>8CiXkb+=j%SN6BZsJH;rYa!+gzDc9#V)DhWq!R1%x zdfq~-cw}YFW3@oTFVSH!30_B_V38zLVN-H`O+Wo0gYuG%Y&f9xl|+7fhVw;W-8_Kx)_g7Ghj(HSq+!8r?Cl(=JSAED^d2q`H$@tr z>YHfD+PtV%_~KT2xtut49yi{dlA%B=$$6{wX^8#pJT~mHX(OikT$K9J1;*KQi!Rs_N!8CpGz?R4@S~F=*RlQ{%k0w=_;QE|6VRcf63( z(=(9j(QdYQg#&ONzF6$?JE6bt#lT4dS|)A95T(zwz%>wW8qWjf&*6}{PQNTsaE z6&FPDJ!zi4Va*~9VyuDCuEbll24Xc#>TIOih4N&}XqELv*QW6c7-X_ohy8L^M}D5E z=1Jcfh4%C1^1K=AP`~<_c^r0o&FouY6md;vHf<@DVOL4}vzb8146df*lAONj-gE** za;2&NuFv_Njc)U|YA7$d@pMAnD%)^+WoL@L%(Tt|@gCG+;F5z{hN`#6?>HGD#{fAI zR1{|=>wWdgyJ(h^$}0>yFTINZGtq&m+blM>!deq+={ z?3w#;=eu|}$h(D#+Yw>yIdVU3x*3pD)PT+ED%HoXG)3OmR;OhuVY)X?jajUuL^jR) zG>w9E9CLN{^q>Vuph@%mrOGu3QRq}4&D|#nmG(R3&sYg8h~_8qR1dk z4n0w;DrpEDPp0R^eZeIA{@Lfx2ENusJHZ?80NV*rzA%-SGMi)Vk>5n9)+76ck_&CI z*I8tMfBgJjXZ7Kc<$>s%PMqR7bEI*twJlUZy-dncyd>EG(0G4 zSDV9goxY5a_4=CptGc5~zKWgBVo!mOBHo;LWxfh=9%E$(p`HS72KySG4CgO6W_4B2 zZSFHO!5YMh?{QjT&;)9bos=4 zkF$(&QyqSY32fbT#9HOk$s*!&JBfAnI7MRH(v7(f%Z5z9dw2w0QYg_C z`yJNt?ke+_7^TTux7tPuBO@v9&zR0vEgRNjd2rw8PRMxsnMkTdYD~G(^dussjmf}D z;jlP@W)B~gm#x-$!{RFM%`NkvAWK(n{}Lu)IR6J>5`bpQpmrQP>KMKyQKk|1Si=US zCLKYuFySUv!EgG#v*7B$tWq8Geu>tLo!X|-PgsC#;-20!yH*% z)hR8wBmCj+>X)tjPcJm}<*x>_zv_Y;^LW~xZ_n{Gy;op+$~BdXT2m5Rh#F*46GbJ- z&X%4p05Da-pzNCcd-3GVh9E?Zd&C#6B@T<%El?B{6$0qntrM|+pY}$oT#kS)|C8nO zhfRLJa$;znVPh`fkgcBD{+%u8!OQ2nSh`%iU)E0bK&;{?RXLNoEH`sBSQV@2d5R8k z{Fou~1i!_pj!}{jrSbr?Btu_TJ7g0jXpchGy2oIRmAjgw&-zP2;m`UCaP~m+29w5l zmXD$}qkJTs_JlD;DVd}7z|gLY_3PZag0)2VGL$_@LueJ-AICPN6Xh0cthOOOKmIiMHp*;w`#3g zF*>-#YS^?a?z1Mq&~^$KruZ>Gd=m^Aeq&mw+xMG@dDE6yt#v%4>bYOHVYcmhv9?ib z1gKWAp|VQMqH609I0&iuSnqBPeV27$A3EZuQbKX5(nJ_um`7<&5a*K9(Ai}xDiHjPX&ju#E< z8kTzzdn~ME==z9Qod4x>ir(bNgWUtgJ&zt0qBr1XJ#WMsem1MzcAMFP4QVp^mO7{D ziuGpNo+aDJu0bI`;0N38GnTP+<(SiMJGQr0>-X*gJ+6!w{)CeNK`h#=MPh)uI=wNJ z$!A_SF0DKfx}$awokhGeZ7mg{mWB4Pb3|A0b^udEy%zC4Yg}nk+Ab29ROk*sSBIm^llWvHgXCEUXzR?(N92uB=YFV}H6FybL;~?ZILDqqF@{uLv(7 zeG=3@4=bCFylN?#$eiQVWLKNz)Hl2R60CL$niy<5-cyd01KlE2F!4RixipuKq<9o0C0Di7lhLm?D{q{CqXF%%FM7s`iM# zRq~$@9)uC#6euYKH~Oo7KyCX%pNjLa*w=HNE>$!$Tj( zbpy)6qeu0#pS@)@(~_RXcTRACBc&dv!zBbraS*#0@hR#{i$PoyQssRR6#w<$e7ImJ z)n?ZSve&+^3k1L2#`=1&i^7yof&9)ExO;#mlS*Sz?=wOmip2?rhpTml@2fNGVTyoW zQksHOfwkW%R&}d65V#B88c}*a#DIt>dCJe!xKd!SnkmR1AwFc!lZa~juuSwWo8)RV z^L>A0=T>4D%KH|$=^0k5v8b`5>@l}}4k*)>WE&zoF4KE+o}eet?QYeGL9i-Odo$nO zRo9)*d^)w5Z|=+ALA2aHLgKIs3bbasD1PktbEM*3snaEZpv(80b;QUGjwzL%#6pPi`k^wFV#_Oro39Su>vq8hsYO`3)hy;9J{m<$%e90+#5 z4GHPZMQq>2z#))awU`Q{Oq&zQmq<>13iNX{2gds8rM^ISpp5m_EOt@L=eMlrGW!1h zHOd>#OMLR-ua%EDH^1!W@;#KSDi&t^rU4@de#rkFF?r8=n}pPq{(Ma1_L1hBo<#t% zhWwC!{L1r?L9iLWRynUfiL_(o$ejK9ZgpEkwcza_9&99qS&vnZbrbF4N0+l#qiq5PI5Z{46h+K@8<&tn~ z(zHOx#W~~PiSg^AYKn+T1f+%md3#Q9o%+`P(&+UjEy&tO+D+$WM+^fJ>7NQkMlsO^ zNc^K$#l;h)1$${uf#A5tb?R^c50pl;sIv}IWrpry zFFBe^A)Y9i+L5mXG}|)Ua$C;ON;vfoKbP?0xdTp@AEH&R7N`jg9) z2R{9qUg!{Iil6IyS>jB-{VMroeP8cBf4mS`hpR7XM^@q2DG#*cn2*SrqH5|x@7KUe zWvsLLxo=h{F~;t|%mC_R$ud4*5j?&)^x{}(bKE7_SjJL8~8+G}v`T#$^ z*2<}LIZ}J9oyR!cIUx^;;IGTTpFb&_!*w_4xHXXL^uJ5^G0E6>k?`9cT>nJ2M@Y>V zuP((TY^n=ZT7-1g-qQUPO{&AX_birE8*6_>w%*Q|23;dLrLt&Z|4%7HW{y334o9i9 zsBuZfv) zD5kf7hPZ2sY*%SkkCP2U7;H5|!JPrl~GFqquf+` zI1^g^7XVdIT*=93V?xY;AyC?f+p|=fPR3vVxq$bRLBSm?qY<(p&1YB{3R8il05;d1 zi|(`2k>tAhuNK7MzyH?z?kzeY(~BrhSd1jPMt*KKkD5t%?M{U&T%3-=wz!h4wDJA{bc#u17PooAm9+A z*&JxhP)a$fl_KAO)?gfvAO3sg_o}5cHDYZ+x;imm)&xKYS=-mX<2?u;be=I8Q^Eh) z6aodS-(|rcWNQbXh+uJ2o^)2ykdGJbD*3TG2>#c37LprD{0dVjQgXxgIi}=SlG`7} zTLxO)Z+E+q{%12Rk*VR z5F+HiLH;v^tdUOS|94^!9MYY>Lm2FTxAWdpWg7AZgd6|ik|h){vgaiM2(bTP%Dd(p z@;+(ei4k}IVxkTUx%XLS@%HI|XAVuN-Z7C@2yZOx-zQe^{Q*%gBw%3w>d*UA|GUad z|8Hg9K^7;J(Y82W)CPk8vjO|mA^|ah;uTesMf<;D{|Na?a1)L@zO#Me1NQ!r6qOYz J7y9<={{fstjZFXm diff --git a/1-js/10-es-modern/12-generator/generateSequence-3@2x.png b/1-js/10-es-modern/12-generator/generateSequence-3@2x.png deleted file mode 100644 index 440fd364c753fcd80c65e530e761dbe4d3c8c3ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32615 zcmcG$V_+rA_C6dvZVL&?&#oXU|5sd?hP`|KCypqJK=8VKyNtS<`}d} z&SlPL1ptT(0OADz2LQyq$pU9}{xZ~hFiB|#{`+^-q=56HtQM$DzqJE=1pxf(WPq=& zdLW$u9zzm8pius|;q$D^Y6Jk_M}3YP8jHX6_`Q3lsDPKOd#eOTf&7FI!`}>x@!(!4 z_zCZN!Ts4M91j3{vtP=W>7UpBv^07A)eCU-SOV=k6v*%R|BmmoC#aQf(NBy&P5sS+ zk^Lud3;RMSL{Ol=eGTxR1Mhw~0N_U2*(~V4A^X#QEh~@~Ktr=ECjf5Aru5t;T~PXecKtZYir*MuOHysy&3* z3f#RWGNwCpOqz7BFEU?f0j#-WeH))RMkO*MqPaeQ-?Q4fD792t^f!R+Yyu&7xC@8({hsK&@mcK?BsdOjD=CKf0Jy(qlm^QiSr=fVHEs{tg~?b?oVP_m zNjrQ*0~NTDMsu|3zNquaB0uEgNh(rK_rZv%O&Ck8{{hm zUrJiSTSHC}cTqQ)g1o|Ft(o}G7J+YYi8+faj{b(@8V_fTu3Nq|u->gx)#%Go3L)oe z?b`NF24Siq64n^gCA9S42G!EshS}^c$-f@27S9eeh391JWP6MdXTc@@y2onb^ra(A zcXPK;n!oKC-XoB79ogOWf$;Q`JAA$JET~JSGpQlSMS!UI0hWD-uOc}?>i~H!$h=^|v8^DiUgp_(?E26f_dsuKl%g zhRIo;j?HiPaCb{|XWheevn$2SAY4!O9Vs_-0Vh10FhzOApq;g7fXji09xYY9W?#t8pjcR#!lJgC)dJZ6WSh$m+y`%Y-PE4%&2M-BXSWMPP=UzGSSd6-%5MKj?ZNg&AZ z<1>f5z)-ZFSsj`hQtyPlxWNRZgdETNQ!GX4e1r_81}BF^cpS`oJ0@}hd&DHjQ2o8) zvcd9>c4;b^&D6;sw?7Im++k5fg-6hVjb@~P_V;1pD1DsNd~Ajp<-~lCGhdutHcK

- - -
  • **Сравнение строк -- лексикографическое, символы сравниваются по своим unicode-кодам.** - -Поэтому получается, что строчные буквы всегда больше, чем прописные: - -```js -//+ run -alert( 'а' > 'Я' ); // true -``` - -
  • - - -Подробнее: [](/operators), [](/comparison). - -## Логические операторы - -В JavaScript есть логические операторы: И (обозначается `&&`), ИЛИ (обозначается `||`) и НЕ (обозначается `!`). Они интерпретируют любое значение как логическое. - -Не стоит путать их с [побитовыми операторами](/bitwise-operators) И, ИЛИ, НЕ, которые тоже есть в JavaScript и работают с числами на уровне битов. - -Как и в большинстве других языков, в логических операторах используется "короткий цикл" вычислений. Например, вычисление выражения `1 && 0 && 2` остановится после первого И `&&`, т.к. понятно что результат будет ложным (ноль интерпретируется как `false`). - -**Результатом логического оператора служит последнее значение в коротком цикле вычислений.** - -Можно сказать и по-другому: значения хоть и интерпретируются как логические, но то, которое в итоге определяет результат, возвращается без преобразования. - -Например: - -```js -//+ run -alert( 0 && 1 ); // 0 -alert( 1 && 2 && 3 ); // 3 -alert( null || 1 || 2 ); // 1 -``` - -Подробнее: [](/logical-ops). - -## Циклы - -
      -
    • Поддерживаются три вида циклов: - -```js -// 1 -while (условие) { - ... -} - -// 2 -do { - ... -} while (условие); - -// 3 -for (var i = 0; i < 10; i++) { - ... -} -``` - -
    • -
    • Переменную можно объявлять прямо в цикле, но видна она будет и за его пределами.
    • -
    • Поддерживаются директивы `break/continue` для выхода из цикла/перехода на следующую итерацию. - -Для выхода одновременно из нескольких уровней цикла можно задать метку. - -Синтаксис: "`имя_метки:`", ставится она только перед циклами и блоками, например: - -```js -*!*outer:*/!* -for(;;) { - ... - for(;;) { - ... - *!*break outer;*/!* - } -} -``` - -Переход на метку возможен только изнутри цикла, и только на внешний блок по отношению к данному циклу. В произвольное место программы перейти нельзя. -
    • -
    - -Подробнее: [](/while-for). - -## Конструкция switch - -При сравнениях в конструкции `switch` используется оператор `===`. - -Например: - -```js -//+ run -var age = prompt('Ваш возраст', 18); - -switch (age) { - case 18: - alert( 'Никогда не сработает' ); // результат prompt - строка, а не число - - case "18": // вот так - сработает! - alert( 'Вам 18 лет!' ); - break; - - default: - alert( 'Любое значение, не совпавшее с case' ); -} -``` - -Подробнее: [](/switch). - -## Функции - -Синтаксис функций в JavaScript: - -```js -//+ run -// function имя(список параметров) { тело } -function sum(a, b) { - var result = a + b; - - return result; -} - -// использование: -alert( sum(1, 2) ); // 3 -``` - -
      -
    • `sum` -- имя функции, ограничения на имя функции -- те же, что и на имя переменной.
    • -
    • Переменные, объявленные через `var` внутри функции, видны везде внутри этой функции, блоки `if`, `for` и т.п. на видимость не влияют.
    • -
    • Параметры копируются в локальные переменные `a`, `b`. -
    • -
    • Функция без `return` считается возвращающей `undefined`. Вызов `return` без значения также возвращает `undefined`: - -```js -//+ run no-beautify -function f() { } -alert( f() ); // undefined -``` - -
    • -
    - -Подробнее: [](/function-basics). - -## Function Declaration и Expression - -Функция в JavaScript является обычным значением. - -Её можно создать в любом месте кода и присвоить в переменную, вот так: - -```js -//+ run -var sum = function(a, b) { - var result = a + b; - - return result; -} - -alert( sum(1, 2) ); // 3 -``` - -Такой синтаксис, при котором функция объявляется в контексте выражения (в данном случае, выражения присваивания), называется Function Expression, а обычный синтаксис, при котором функция объявляется в основном потоке кода -- Function Declaration. - -Функции, объявленные через Function Declaration, отличаются от Function Expression тем, что интерпретатор создаёт их при входе в область видимости (в начале выполнения скрипта), так что они работают до объявления. - -Обычно это удобно, но может быть проблемой, если нужно объявить функцию в зависимости от условия. В этом случае, а также в других ситуациях, когда хочется создать функцию "здесь и сейчас", используют Function Expression. - -Детали: [](/function-declaration-expression). - -## Named Function Expression - -Если объявление функции является частью какого-либо выражения, например `var f = function...` или любого другого, то это Function Expression. - -В этом случае функции можно присвоить "внутреннее" имя, указав его после `function`. Оно будет видно только внутри этой функции и позволяет обратиться к функции изнутри себя. Обычно это используется для рекурсивных вызовов. - -Например, создадим функцию для вычисления факториала как Function Expression и дадим ей имя `me`: - -```js -//+ run -var factorial = function me(n) { - return (n == 1) ? n : n * me(n - 1); -} - -alert( factorial(5) ); // 120 -*!* -alert( me ); // ошибка, нет такой переменной -*/!* -``` - -Ограничение видимости для имени не работает в IE8-, но вызов с его помощью работает во всех браузерах. - -Более развёрнуто: [](/named-function-expression). - -## Итого - -В этой главе мы повторили основные особенности JavaScript, знание которых необходимо для обхода большинства "граблей", да и просто для написания хорошего кода. - -Это, конечно, лишь основы. Дальше вы узнаете много других особенностей и приёмов программирования на этом языке. diff --git a/1-js/2-first-steps/3-structure/article.md b/1-js/2-first-steps/3-structure/article.md deleted file mode 100644 index ec28445d..00000000 --- a/1-js/2-first-steps/3-structure/article.md +++ /dev/null @@ -1,146 +0,0 @@ -# Структура кода - -В этой главе мы рассмотрим общую структуру кода, команды и их разделение. -[cut] -## Команды - -Раньше мы уже видели пример команды: `alert('Привет, мир!')` выводит сообщение. - -Для того, чтобы добавить в код ещё одну команду -- можно поставить её после точки с запятой. - -Например, вместо одного вызова `alert` сделаем два: - -```js -//+ run no-beautify -alert('Привет'); alert('Мир'); -``` - -Как правило, каждая команда пишется на отдельной строке -- так код лучше читается: - -```js -//+ run no-beautify -alert('Привет'); -alert('Мир'); -``` - -## Точка с запятой [#semicolon] - -Точку с запятой *во многих случаях* можно не ставить, если есть переход на новую строку. - -Так тоже будет работать: - -```js -//+ run no-beautify -alert('Привет') -alert('Мир') -``` - -В этом случае JavaScript интерпретирует переход на новую строчку как разделитель команд и автоматически вставляет "виртуальную" точку с запятой между ними. - -**Однако, важно то, что "во многих случаях" не означает "всегда"!** - -Например, запустите этот код: - -```js -//+ run no-beautify -alert(3 + -1 -+ 2); -``` - -Выведет 6. - -То есть, точка с запятой не ставится. Почему? Интуитивно понятно, что здесь дело в "незавершённом выражении", конца которого JavaScript ждёт с первой строки и поэтому не ставит точку с запятой. И здесь это, пожалуй, хорошо и приятно. - -**Но в некоторых важных ситуациях JavaScript "забывает" вставить точку с запятой там, где она нужна.** - -Таких ситуаций не так много, но ошибки, которые при этом появляются, достаточно сложно обнаруживать и исправлять. - -Чтобы не быть голословным, вот небольшой пример. - -Такой код работает: -```js -//+ run -[1, 2].forEach(alert) -``` - -Он выводит по очереди `1`, `2`. Почему он работает -- сейчас не важно, позже разберёмся. - -Важно, что вот такой код уже работать не будет: - -```js -//+ run no-beautify -alert("Сейчас будет ошибка") -[1, 2].forEach(alert) -``` - -Выведется только первый `alert`, а дальше -- ошибка. Потому что перед квадратной скобкой JavaScript точку с запятой не ставит, а как раз здесь она нужна (упс!). - -Если её поставить, то всё будет в порядке: -```js -//+ run -alert( "Сейчас будет ошибка" ); -[1, 2].forEach(alert) -``` - -**Поэтому в JavaScript рекомендуется точки с запятой ставить. Сейчас это, фактически, стандарт, которому следуют все большие проекты.** - -## Комментарии - -Со временем программа становится большой и сложной. Появляется необходимость добавить *комментарии*, которые объясняют, что происходит и почему. - -Комментарии могут находиться в любом месте программы и никак не влияют на её выполнение. Интерпретатор JavaScript попросту игнорирует их. - -*Однострочные комментарии* начинаются с двойного слэша `//`. Текст считается комментарием до конца строки: - -```js -//+ run -// Команда ниже говорит "Привет" -alert( 'Привет' ); - -alert( 'Мир' ); // Второе сообщение выводим отдельно -``` - -*Многострочные комментарии* начинаются слешем-звездочкой "/*" и заканчиваются звездочкой-слэшем "*/", вот так: - -```js -//+ run -/* Пример с двумя сообщениями. -Это - многострочный комментарий. -*/ -alert( 'Привет' ); -alert( 'Мир' ); -``` - -Всё содержимое комментария игнорируется. Если поместить код внутрь /* ... */ или после `//` -- он не выполнится. - -```js -//+ run -/* Закомментировали код -alert( 'Привет' ); -*/ -alert( 'Мир' ); -``` - -[smart header="Используйте горячие клавиши!"] -В большинстве редакторов комментарий можно поставить горячей клавишей, обычно это [key Ctrl+/] для однострочных и что-то вроде [key Ctrl+Shift+/] -- для многострочных комментариев (нужно выделить блок и нажать сочетание клавиш). Детали смотрите в руководстве по редактору. -[/smart] - -[warn header="Вложенные комментарии не поддерживаются!"] -В этом коде будет ошибка: - -```js -//+ run no-beautify -/* - /* вложенный комментарий ?!? */ -*/ -alert('Мир'); -``` - -[/warn] - - -Не бойтесь комментариев. Чем больше кода в проекте -- тем они важнее. Что же касается увеличения размера кода -- это не страшно, т.к. существуют инструменты сжатия JavaScript, которые при публикации кода легко их удалят. - -На следующих занятиях мы поговорим о переменных, блоках и других структурных элементах программы на JavaScript. - diff --git a/1-js/2-first-steps/4-strict-mode/article.md b/1-js/2-first-steps/4-strict-mode/article.md deleted file mode 100644 index 02670f7b..00000000 --- a/1-js/2-first-steps/4-strict-mode/article.md +++ /dev/null @@ -1,80 +0,0 @@ -# Современный стандарт, "use strict" - -Очень долго язык JavaScript развивался без потери совместимости. Новые возможности добавлялись в язык, но старые -- никогда не менялись, чтобы не "сломать" уже существующие HTML/JS-страницы с их использованием. - -Однако, это привело к тому, что любая ошибка в дизайне языка становилась "вмороженной" в него навсегда. - -Так было до появления стандарта EcmaScript 5 (ES5), который одновременно добавил новые возможности и внёс в язык ряд исправлений, которые могут привести к тому, что старый код, который был написан до его появления, перестанет работать. - -Чтобы этого не случилось, решили, что по умолчанию эти опасные изменения будут выключены, и код будет работать по-старому. А для того, чтобы перевести код в режим полного соответствия современному стандарту, нужно указать специальную директиву `use strict`. - -Эта директива не поддерживается IE9-. - -[cut] - -## Директива use strict - -Директива выглядит как строка `"use strict";` или `'use strict';` и ставится в начале скрипта. - -Например: - -```js -"use strict"; - -// этот код будет работать по современному стандарту ES5 -... -``` - -[warn header="Отменить действие `use strict` никак нельзя"] -Не существует директивы `no use strict` или подобной, которая возвращает в старый режим. - -Если уж вошли в современный режим, то это дорога в один конец. -[/warn] - -[smart header="`use strict` для функций"] -Через некоторое время мы будем проходить [функции](/function-basics). На будущее заметим, что `use strict` также можно указывать в начале функций, тогда строгий режим будет действовать только внутри функции. -[/smart] - -В следующих главах мы будем подробно останавливаться на отличиях в работе языка при `use strict` и без него. - -## Нужен ли мне "use strict"? - -Если говорить абстрактно, то -- да, нужен. В строгом режиме исправлены некоторые ошибки в дизайне языка, и вообще, современный стандарт -- это хорошо. - -Однако, есть и две проблемы. - -
    -
    Поддержка браузеров IE9-, которые игнорируют `"use strict"`.
    -
    Предположим, что мы, используя `"use strict"`, разработали код и протестировали его в браузере Chrome. Всё работает... Однако, вероятность ошибок при этом в IE9- выросла! Он-то всегда работает по старому стандарту, а значит, иногда по-другому. Возникающие ошибки придётся отлаживать уже в IE9-, и это намного менее приятно, нежели в Chrome. - -Впрочем, проблема не так страшна. Несовместимостей мало. И если их знать (а в учебнике мы будем останавливаться на них) и писать правильный код, то всё будет в порядке и `"use strict"` станет нашим верным помощником. -
    -
    Библиотеки, написанные без учёта `"use strict"`.
    -
    Некоторые библиотеки, которые написаны без `"use strict"`, не всегда корректно работают, если вызывающий код содержит `"use strict"`. - -В первую очередь имеются в виду сторонние библиотеки, которые писали не мы, и которые не хотелось бы переписывать или править. - -Таких библиотек мало, но при переводе давно существующих проектов на `"use strict"` эта проблема возникает с завидной регулярностью. -
    -
    - -Вывод? - -**Писать код с `use strict` следует лишь в том случае, если вы уверены, что описанных выше проблем не будет.** - -Конечно же, весь код, который находится в этом учебнике, корректно работает в режиме `"use strict"`. - -## ES5-shim [#es5-shim] - -Браузер IE8 поддерживает только совсем старую версию стандарта JavaScript, а именно ES3. - -К счастью, многие возможности современного стандарта можно добавить в этот браузер, подключив библиотеку [ES5 shim](https://github.com/es-shims/es5-shim), а именно -- скрипты `es5-shim.js` и `es5-sham.js` из неё. - -## Итого - -В этой главе мы познакомились с понятием "строгий режим". - -Далее мы будем предполагать, что разработка ведётся либо в современном браузере, либо в IE8- с подключённым [ES5 shim](https://github.com/es-shims/es5-shim). Это позволит нам использовать большинство возможностей современного JavaScript во всех браузерах. - -Очень скоро, буквально в следующей главе, мы увидим особенности строгого режима на конкретных примерах. - diff --git a/1-js/2-first-steps/5-variables/1-hello-variables/solution.md b/1-js/2-first-steps/5-variables/1-hello-variables/solution.md deleted file mode 100644 index e81aff84..00000000 --- a/1-js/2-first-steps/5-variables/1-hello-variables/solution.md +++ /dev/null @@ -1,13 +0,0 @@ -Каждая строчка решения соответствует одному шагу задачи: - -```js -//+ run -var admin, name; // две переменных через запятую - -name = "Василий"; - -admin = name; - -alert( admin ); // "Василий" -``` - diff --git a/1-js/2-first-steps/5-variables/1-hello-variables/task.md b/1-js/2-first-steps/5-variables/1-hello-variables/task.md deleted file mode 100644 index 42438a4b..00000000 --- a/1-js/2-first-steps/5-variables/1-hello-variables/task.md +++ /dev/null @@ -1,10 +0,0 @@ -# Работа с переменными - -[importance 2] - -
      -
    1. Объявите две переменные: `admin` и `name`.
    2. -
    3. Запишите в `name` строку `"Василий"`.
    4. -
    5. Скопируйте значение из `name` в `admin`.
    6. -
    7. Выведите `admin` (должно вывести "Василий").
    8. -
    \ No newline at end of file diff --git a/1-js/2-first-steps/5-variables/article.md b/1-js/2-first-steps/5-variables/article.md deleted file mode 100644 index 57ce5eff..00000000 --- a/1-js/2-first-steps/5-variables/article.md +++ /dev/null @@ -1,259 +0,0 @@ -# Переменные - -В зависимости от того, для чего вы делаете скрипт, понадобится работать с информацией. - -Если это электронный магазин -- то это товары, корзина. Если чат -- посетители, сообщения и так далее. - -Чтобы хранить информацию, используются *переменные*. -[cut] -## Переменная - -*Переменная* состоит из имени и выделенной области памяти, которая ему соответствует. - -Для *объявления* или, другими словами, *создания переменной* используется ключевое слово `var`: - -```js -var message; -``` - -После объявления, можно записать в переменную данные: - -```js -var message; -message = 'Hello'; // сохраним в переменной строку -``` - -Эти данные будут сохранены в соответствующей области памяти и в дальнейшем доступны при обращении по имени: - -```js -//+ run -var message; -message = 'Hello!'; - -alert( message ); // выведет содержимое переменной -``` - -Для краткости можно совместить объявление переменной и запись данных: - -```js -var message = 'Hello!'; -``` - -Можно даже объявить несколько переменных сразу: - -```js -//+ no-beautify -var user = 'John', age = 25, message = 'Hello'; -``` - -### Аналогия из жизни - -Проще всего понять переменную, если представить её как "коробку" для данных, с уникальным именем. - -Например, переменная `message` -- это коробка, в которой хранится значение `"Hello!"`: - - - -В коробку можно положить любое значение, а позже - поменять его. Значение в переменной можно изменять сколько угодно раз: - -```js -//+ run -var message; - -message = 'Hello!'; - -message = 'World!'; // заменили значение - -alert( message ); -``` - -При изменении значения старое содержимое переменной удаляется. - - - -Можно объявить две переменные и копировать данные из одной в другую: - -```js -//+ run -var hello = 'Hello world!'; - -var message; - -*!* -// скопировали значение -message = hello; -*/!* - -alert( hello ); // Hello world! -alert( message ); // Hello world! -``` - -[smart] -Существуют [функциональные](http://ru.wikipedia.org/wiki/%D0%AF%D0%B7%D1%8B%D0%BA_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F) языки программирования, в которых значение переменной менять нельзя. Например, [Scala](http://www.scala-lang.org/) или [Erlang](http://www.erlang.org/). - -В таких языках положил один раз значение в коробку -- и оно хранится там вечно, ни удалить ни изменить. А нужно что-то другое сохранить -- изволь создать новую коробку (объявить новую переменную), повторное использование невозможно. - -С виду -- не очень удобно, но, как ни странно, и на таких языках вполне можно успешно программировать. Более того, оказывается, что в ряде областей, например в распараллеливании вычислений, они имеют преимущества. Изучение какого-нибудь функционального языка рекомендуется для расширения кругозора. -[/smart] - -## Имена переменных [#variable-naming] - -На имя переменной в JavaScript наложены всего два ограничения. -
      -
    1. Имя может состоять из: букв, цифр, символов `$` и `_`
    2. -
    3. Первый символ не должен быть цифрой.
    4. -
    - -Например: - -```js -var myName; -var test123; -``` - -**Что особенно интересно -- доллар `'$'` и знак подчеркивания `'_'` являются такими же обычными символами, как буквы:** - -```js -//+ run untrusted -var $ = 1; // объявили переменную с именем '$' -var _ = 2; // переменная с именем '_' - -alert( $ + _ ); // 3 -``` - -А такие переменные были бы неправильными: - -```js -//+ no-beautify -var 1a; // начало не может быть цифрой - -var my-name; // дефис '-' не является разрешенным символом -``` - -[smart header="Регистр букв имеет значение"] -Переменные `apple` и `AppLE` -- две разные переменные. -[/smart] - -[smart header="Русские буквы допустимы, но не рекомендуются"] - -В названии переменных можно использовать и русские буквы, например: - -```js -//+ run -var имя = "Вася"; -alert( имя ); // "Вася" -``` - -Технически, ошибки здесь нет, но на практике сложилась традиция использовать в именах только английские буквы. -[/smart] - -[warn header="Зарезервированные имена"] - -Существует список зарезервированных слов, которые нельзя использовать для переменных, так как они используются самим языком, например: `var, class, return, export` и др. - -Например, такой пример выдаст синтаксическую ошибку: - -```js -//+ run no-beautify -var return = 5; // ошибка -alert(return); -``` - -[/warn] - - -## Важность директивы var - -В старом стандарте JavaScript разрешалось создавать переменную и без `var`, просто присвоив ей значение: - -```js -num = 5; // переменная num будет создана, если ее не было -``` - -В режиме `"use strict"` так делать уже нельзя. - -Следующий код выдаст ошибку: - -```js -//+ run -"use strict"; - -*!* -num = 5; // error: num is not defined -*/!* -``` - -Обратим внимание, директиву `use strict` нужно ставить до кода, иначе она не сработает: - -```js -//+ run -var something; - -"use strict"; // слишком поздно - -*!* -num = 5; // ошибки не будет, так как строгий режим не активирован -*/!* -``` - -[warn header="Ошибка в IE8- без `var`"] -Если же вы собираетесь поддерживать IE8-, то у меня для вас ещё одна причина всегда использовать `var`. - -Следущий документ в IE8- ничего не выведет, будет ошибка: - -```html -
    - -``` - -Это потому, что переменная `test` не объявлена через `var` и совпадает с `id` элемента `
    `. Даже не спрашивайте почему -- это ошибка в браузере IE до версии 9. - -Самое "забавное" то, что такая ошибка присвоения значений будет только в IE8- и только если на странице присутствует элемент с совпадающим с именем `id`. - -Такие ошибки особенно "весело" исправлять и отлаживать. - -Вывод простой -- всегда объявляем переменные через `var`, и сюрпризов не будет. Даже в старых IE. -[/warn] - -## Константы - -*Константа* -- это переменная, которая никогда не меняется. Как правило, их называют большими буквами, через подчёркивание. Например: - -```js -//+ run -var COLOR_RED = "#F00"; -var COLOR_GREEN = "#0F0"; -var COLOR_BLUE = "#00F"; -var COLOR_ORANGE = "#FF7F00"; - -var color = COLOR_ORANGE; -alert( color ); // #FF7F00 -``` - -Технически, константа является обычной переменной, то есть её *можно* изменить. Но мы *договариваемся* этого не делать. - -Зачем нужны константы? Почему бы просто не писать `var color = "#FF7F00"`? - -
      -
    1. Во-первых, константа `COLOR_ORANGE` -- это понятное имя. По присвоению `var color="#FF7F00"` непонятно, что цвет -- оранжевый. Иными словами, константа `COLOR_ORANGE` является "понятным псевдонимом" для значения `#FF7F00`.
    2. -
    3. Во-вторых, опечатка в строке, особенно такой сложной как `#FF7F00`, может быть не замечена, а в имени константы её допустить куда сложнее.
    4. -
    - -**Константы используют вместо строк и цифр, чтобы сделать программу понятнее и избежать ошибок.** - -## Итого - -
      -
    • В JavaScript можно объявлять переменные для хранения данных. Это делается при помощи `var`.
    • -
    • Технически, можно просто записать значение и без объявления переменной, однако по ряду причин это не рекомендуется.
    • -
    • Вместе с объявлением можно сразу присвоить значение: `var x = 10`.
    • -
    • Переменные, которые названы `БОЛЬШИМИ_БУКВАМИ`, являются константами, то есть никогда не меняются. Как правило, они используются для удобства, чтобы было меньше ошибок.
    • -
    - - - diff --git a/1-js/2-first-steps/5-variables/variable-change.png b/1-js/2-first-steps/5-variables/variable-change.png deleted file mode 100644 index 19fa6fbf06f291ea3dba461a6464d9272d664dde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19413 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 diff --git a/1-js/2-first-steps/5-variables/variable-change@2x.png b/1-js/2-first-steps/5-variables/variable-change@2x.png deleted file mode 100644 index d00fbe15e7c387f14be94e39b01e9990e2fe6a0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44840 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 diff --git a/1-js/2-first-steps/5-variables/variable.png b/1-js/2-first-steps/5-variables/variable.png deleted file mode 100644 index aecd47ad001096a0dc96dd2a5d54066eaaa5e695..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8943 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 JPDHLkV1g>-ZG`{; diff --git a/1-js/2-first-steps/5-variables/variable@2x.png b/1-js/2-first-steps/5-variables/variable@2x.png deleted file mode 100644 index 97d2b79deda1e7429d2b795b890900ecd084abb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19980 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
    i{8CNBz`oqkI-_fqDx!|4syV z_;8EyyGu(&n>j*k2F0)NrJpISBc!K|puD5v@-wGH z5o`HjdD!S2JbrS|llf-wT5#R{J{TG`mF|CR&J6?n!2P=3`Wg7~{zACqlTMw#Kw1JR zYaE0z@EM36u1byo?BEAg^3%9yWAsLu?I`vxX@dYhYSp>{{?J^<7sKfPZyebzzzP3f z3Jt2Oq+d=f>A#puoP5O41kFu_g^9_Xl3(@fc~|O#H{^;#9Fq@-m>&4!gCmg!!PbmD z!0lTsjXsZgOiAs)ecv{g*A8KqgC#5Su=fHq(l#rRu;qzAg3{RjPP`!h72Hb~Um3pt z^6NLzm&4PINSS?!{L}L&k4I{(ywN*8a17AL;CXf+ix>;Om5ioS)eEk|WhybQv=KJN+EmTvt@rwOgT~8t5cE+FiOASMP#_f|#>M)|C%79GiKbvpT!#YeD>#=Jnx0{78^;Vgc$!pL~Z=iOXiq>1j zg=)49%`LjngNgZXvqOrE!yj_zB@>QeMZ-Qu=!|u=u~f=F5Jft#p?fpLF9CbKR$Z}d zt-OBl;VzzaI7vg*_8phng_pe-QTc3fWD)yK&oF6E!3fJ%4qbZme@_c%%e02Rc6PB~ zqex&+$#N$d;Gt>*eAn;?UFyQ_x7-iRtuQ603p+tN{AO8?`y1+bPD@wYEuXis?ZJBS z);=nsb7i1lE}h+hDR0cT@3)zY7d;-`e;am0!P3$Qn-572jr%%^kXn(f6f6et`~iP=9=Lm?kQ-=Dya1e zUai7UOHkR=vmq~wY{23nNy9jSK4Ig_4|3QgBaaX!V_Swr+OG8|LT6eelw$noG1Pwh zMP|cTnZf6F!;UnzL)SXFQo%kLXV4q4LrTgQa88V@A&l7T6Q3O$2-QUsRZ7u#zyXd< zxO?OMl!3iNcGFY%So6Bp7yqIBIPyE`?t(U>7rK<3V}+>B(XS6C?@S-L%k$i@onYc` zKYZ9`XdOt%f2~YR#?Y(S>is41%S-m93wA3mxICxo0mR8YPZE*Z`%N~_jaC8f=8PcX z$Km&Q$EWe>O#^e^6AW;7yV)%&C1%B`xc>2!ocHhS%pi7uGK@W$Z}T_8E^A^|n)eg} zlHYa;;A}YYvVX?no*PVLvll2zWGzn#5M>kw+UxiKEN`%wg8OyYx%Q?l7w)eCzf&r3 zrN%sRg4z4L+zi@}9JB3ufoaU-{a(UZp6)fbwiF+thoPaPx-;kNbneJ9#$U!1Ech_` za_iBPyQzex<~#-YbbRkN62lyFDb=`d(_WI^da9$xZf+a2l+}o;x-Yq{5?geY$N2gc z__0A!si{zNvBA37$>LgK^h^91hfPkU7)0Jh%&HoGUhy20q_Pk(USw|rS+lnU#Qjym zUBiiT9bN6>U$``llDvAu4E-oh|9$B5YZG1#25XZ4H{IvI=g5Hr>H<9Kl2a#QC{gZg zgqjVHxnR4S-~yw`4?`Id^;Uv+u&1`y6r&mh0vcy*xFV*fMa2Do!6~}@2&R8A<2uhB zh;Bkhp|@L}9MJJweE<}d>$vifTB|+=us@viSHl&1?_C?-CcS{;b=Q!Wa6U`Fo}Lex z8ry3p#z9Bn%he1%a= z=Kk>RI8bx*B~MD$4cu>>tGilf%(cNLU*F8spRvPyPM1l_q!B?WjkFJu3XXnqk6(Ox z(f}m?E*e!wT7R=Wa9;iE-%6t>{g{$MEzlgUr}rTuX;+R zuE5Sr6XmEM-g-AaAVz5FEuZlMKhFjapv-6^-95bm^f_RCfu5_6?5-g?pwl_90vql*jB=UpnWdO7Z3D# z)7$FW^7ZOdqPvqrZI#R>IlWS!)9H`RQ0kD z0Tnk8xp;Vr%&J*{@rmT+P7>N5NN5mDkDlk>5Lue!;qrcWI)O^sfec->)Kitw9X@Wa zn1btWV|wZW2%w=GbacwU1q0qO5(u|e?3x`gw+81Vl^5|IzxCaoQN4)cHw8K`q-R2Dn@m?wYJF+EPDxue3qJw9eVCB5 z*9t#!f){*vd|enx#bAgNVP@F6ZIO;3^|&KRAu7fnDDlg>d@rz|pB{R1)YT$&ac2AN zAO-%?_HcAr-ZOH`pnZh2$nH*NTJ{EL8q+$3@b|Cdn**R(Zd(-Qz0dP$ z&wZ5)GsbP5?TLApzlju(L->3>hV8F*&b`)^#XeGLOX2pn(rKzsN#}QL`Ttflxs!vV zLHdwMNB?$P53avgtr6hcKSHZIGW6CPj}gLl{oA;$m6q+Pn8Pnnsa#Rsc~!UKj5Hj`i zcRTw7Ti5*s99;@?Lx{y@bA8d7h;Vx?L*Q7S!venC0cUV?&Pn{D zp50Aoqt5}%!oT5$6?Iysp_YoV)k}zo(okLz;!M!{x6s(avqA?&r?V!ddoVD&o6jKG zmKNdh40Aq{%JwgS6d{YLH)(8U%h^bQwLcIp2h^2!MUkF_zK_`HG1zCKB)VeuPXuan zZSA{bIZKL@;8@$CE@CeGrfc*{wkxco?6pIi1N{Vf;K0G|Z{8@LRrH1iK;Y^DNEjPj z$7bZZPXCA+u0PnUq%E&?H&5&6ZH+!6)KhGFVB83L1@%}x*H>XvU>F0r+Kq)R^ZLJu z3}7Ez%PS0;A>BQew!9J|CAXn5O5vFvi(8xJa^FpvF*G>o)zOa+4#tk*jpa2I%=Q}0 zywg#OyjLbJjRzK-$!N*q;Lz$HIqm*OL&kvV6&!whKhNye<)%g-lc2x-k+NXUA-V5D-G!En*5WQMC||eIAb=73d7$@y}(->3mgUzqs_8J zWTa>xh(G2zoeMHMWs+yuK~>>3l(2aXZX>47Z!GrW5tQSB+Ar$eUmJ3*Yq6354ePh( zoJ1gg(x}*820@31eqsRSH(D=FW{I=R^zC-%rtJ8N5H`hIg8Y7r26zaP0H>zVt;V9L ze0<}f<+UqNFbm;|--p(g!yfZ70Kk~m0&qNphIG7bNgQ-2c9`KeJkul?R9P>ILLm^f z`0)yz#}lU@BdbusiqExd%t_J)2z#e`aPyZd= zP_#6S;xbIG%h0Nvjh;rAKxJp^NiKq!@=?*xW=q`9PLI-#iRuS)EIpGI%v&BhOLm;+ z_dh8Qo;@;JXeTop-uO&5X}UF|{P5L20Hm%q*0B($_t@}u=y=mLHg-xPN87b5D~CU@ zE>xe|c0}ADnUQ8jG!YW^ey&hVZ_n#7c*%5vr$y?Ko{xjR(O} zB}LXPC*U1IfnaCJs!QfP%as^E000sbF@udpAFi`QzI?NOhq?oJ2(g=9HUj>`Jz($^ z2Cr)0+k>8YFfm~&5{}^Y9i~n)&DKyoPxo!1Mkf>xe7eL+2i|~`Wn(fhj6`udSI`$F z;PVKcXw7$I(#|4KtJCy)_Gmyz?}pqvonhdPTcQj44#nFHxmW>wrT27Ve3>RH)0|C4 z%mWO7;Wgy3ySAgOk!c*@jqBKzFyy9QmFiZbfBgb*=KrfL@Z*%^Yn;z(5Z89ZXO4#ZiRdDdT_s0d&G^YCfVDSfahzuLL8u=H;UsQq<(i`;F^T->MgeC+FV ze&C&meE&Aszn|%dXA0It;jw>($dOd7ZeV?v-geUJaW=n8J4>GZ@7T4n@ZfMmF!I}L zD2E5?`ZfRz5F@`O-SD5YyvR(=!^wMmgdGw(w36RJc{zF6dBh{#Sts(u#98Q3RU?c* zJLgcSP`T?#RI5XH+AJK>a(7^QVA#W9SWkyr33K8pqF+NFno?{y=`~@{rr5Q9|F!#m z=7kP4)7`1Z)=r$N;o;AT@r^-_q#4P!lIJ-Ck-kjB^Fyl3yhaAX~6{4%d)h zep3Qcb%AKW8ppTwdAGHVJO0P?#hP=G-U<5D8Luo3SwCU8rxdBmdRtfC2bN!e!gyfu zi)IMvHZj>W)O}!o;e?DYO+0L z*uLsqEk%hw3)O>?`qCs?sUV(DNRH(yU3!4>`}gtvKzV!Z?{DUGrQwFVIX$&FIov%s zzYApQ;6Sh&T6&gjMDDPBsz24#Wb{5#O-m_LuNMF7=UKx#{687h!SF1U`e4F1r@wA8 zBkR)APUA&kA6ZSf5wB%}?Ju|cG5t%4Faxw$c7?h3A6yNUjW?3s4IPW7q(4op41|Jc zsDNQ^=jgQBK2)T&kFmDG`iL^zJg0R2K9+xgyq+AJ6-kDK1L&EGd~_QqS?vasQn;OW zm#Hoziz$D~6b(Xw)Rhb#X)ZC$zE5>ofvB=MHOn3dvqFloI%Ha(z6D zJn|hpSVhP~{Ht7P36vKZU>?l-$hKHc70eG5xT?_akYAOW8iXJkuyum>4XPzH;NAc9 z@c-5F?xacJ|kw?hLsB9~hv@ilBX4R1s3e zsn$X)KER8-hjjyADpRIRW17YYutp&^(%!6PfluIAl?7I%vgiV~TCq`a9u>$=aL_N! z-cA?t2AT8-8miJh>?us~fmx_KzQFUD^+IJ-BG>QCse@6ansU}#0Nr=_Vy12IQxCY&+(R2`AYkV zrwGM`EWo((Surp(`e<3T+mnh}soDo*qE*1q;(#D`-SXL9e}{0RX%)lB1cdX3R~2T1Tkt@M3t>au)krt4>EsfN zp{KE`Sz(J0z#{Jj$wuQoe-bF7#M4kI`sk)<#t5k*G5M@sMMue?tEn1rUCSchA%QKJ zo)l#zGuquDd4O|NhM*J{0!VbPBm+6xi5tF6eSoLbNG$-!BAFxuu2-FunKN4F(Fe-l z$I*`Q4|2#>P#`o)EwbpEzo{OoU{RL|*l;9Qy$;2h($l+B#=Y|>P~3!t6WsNnvtk&4 zZ?!~asXz>Zf%3QX6?Su4w^YNOmqF+mq?y1x`=OuaPCT}}Cq6#PA$->!ZryOf+EsXy zXP`!XGljwzrP1ksLwNxMrb~JS-_AX0_|(xXZ3;)t2a&kuP*GvOg>_EdThm#jjhw1- zr64or@@h_(vBGK&4ke^3vD3P-~$%(Z0bE!hQ*%1z!gyQoMd9DKpsd2 zK!2p?qw6uJWLv!}y~9FKZjmd8yV->Htp)`tG{UUxRauo$0o+%>4n|64q@9m>^BH1> z(A8Q+l!>Q$*iWb#9^r~2{_WSD!+b|%_fk%GHS#cOcs-Mf=_-Tq!2;)>_FcLS=hDp| zY$WT3*9X|)Zi-23rwVkD3hf(Tn${L%pD`E}8%;-BuWYRMg)j$kkRh`L_`o6AOW^v! z-<_~9VdjB1FPiOc9J8V#!RmaG(3=0xX4nk7?y&A8{Iw zUM9Xnln;=KeS~j1M8;l~Nv`^)FnoCLAFVx*s9D-I{=Qx^C$@0u%KFqrI&5Un5i=4J zGI%RBN8Kl1TCM?NdYv3mmeZZ1ARGwkVX!l^e5kIdzCv4kXm8$9 z;OV2^q7rMAis2f_&#GiJ{$OAfioroy!%3c8;5F6ujc5VVo+46aVI395-np&ol%03& z<(Jp<>NV@6^{rgKj11oyytX?i<~DmW2_ow0Zg%|@41YknDfQhn&*RDu=+x5IksB{b z1I$Dug~a&NQachEJov&W-7zrt*-H6aE(`>Z$!;e0>13Kp88P#+g*#$Y?wy{eszH2( ztv+55>{k|3ZIu-|+-j>TGN~agGo)af_HPGjJu#i|UM+{BPCdP2(+HSChrW<+Skm<8 zz<;v*yyRfP&(T+6Q zVg4MZyW!(x1=_Fa`e;1ph^tg30}c5+=-Y6=jl_|V_bKj*o)maK)F5BMT47u)aGYNE zck8eRxpRUXJ-3?NEEdmT>Te1?nl-XIkT`K|Bf3e5wkDWm;YlPU{M(>l3Ja>U`Et?p zAYWf7>9}?kWP#bv&7!-f@9cFArZ>uMpurbbIswcWgdc>l7?V9PpRh2$H(0oLDTz_< zd_b_NA7e#BbFrS21}8vIYd|c40TmVF!eTt;ohXMnhxUoy893JW5U3a;4@dZ_0nhFr zHd04lWnnTG-VaVU8sRszt(w>X{?5A%*>h@SSr#_>2v7>J>o5JqK{m6|bCMeVa9AKJ zU356s3{!t}W?DCtI*unisLeYqJ}!eugfG+NQmBsgklKkl;;8)o4{EyuU2!0V&4;+n#{L|Y}GY^ z2{DyMOQ%C6yU00nrAyU~Sx8K3zi_&nJ4jWM!;m_Dy24Xvi`x)tlg>BY-HEJ{_qQe$ zU#D&rT|;_N(`%OjUs!&cOfhS=9F5%V4ENgducki zWSEb0*+bJ8g)h;WsC`S-=2UFIm!IQ&j`zG<<-tX-S6GP3N2<0Ix7r?yVy;^7 z>G&nn{-0Sx(>Z2m&Nc6!HlubM(7rdMy{fv5G(>Z5@IO4c*hr`#DSuObU&NgS{v34^ zlhrlbFBz(7>S{3Xv@X`yZs}=^8>ELGj33)}9$qCaoXWW7IyA_RWnc$F+cO3Xq;@~e ztFG4EaUkOd?8u-gnN}Ex{BlVE!Q>Qq8b$#7nUJcO=^|^G4SP*yn12J&>*Hbo4M+HM z?7j*3U_jS@-vaQ!rue&ixMfgQlO`4N3 zt3udRNK}WiO%?8@nLAWTPTApew56AO9^_+nt5fa1uN1i+jPJC3}EQ`3k83hjrt z(l=97GPg&`pbB9A1Fze6rbUl?&ViGXI}Bh#ex(wXxTci+x`f2Hnq;YfLpNPl*mAr8 z9xNg$tIfk!Yp8IV6l{CKODiiEGFPTALv>kfOo%U_`FXMOU`$8CaYsaax=)LunmR6>lXQKBR@+l$zHT~({Ciq&h@s=cC@ zR--6t)E;f@qGqIGYf)eZ=ludkJ28<%gz)PT*XayYphhjXBZa?SU;%MHA8T?aBcf)Q#rl#&38C;jyL;iUqlmA+ z4E|9qjKz+zU*pBxPshw1P)+`p-Am1q7x{W7Mj*h!AAP!oVX<*Jw$B}fF(smYU3rLImWs#-H`lf>v2HLi&wdg95uRufPp z8z_Watw4CCA-{e!1rFVpkJ9EW+Z=ta(g_v(!6m_OAd9T{lQN`hnDi~7-TTq*Ky~zQ z{G4~-wwZgYq0Sd8i(~ahWhoY#^c8Pk=py%--f7IjVg>%W$_K1$U;Ea3vxe1t`(}cB zbWPJL5;XzqaZ$3#Vs@zNo$v09PDnA0RwV2vmuk9s_J~heI;7d`s%@EG0 z4$e%q6R0&;b`hfG=E~Sq$Y8(oTdGL>7X6)ubCRF(D}?LWrdX;Qe%Z8~i?kcYP?t;` zJ3OlPSDjx-9MNWTMOvtRrxmH%ytdv{5g670MAqM*agM||6~v7DFmpW$Y;E=guQuWDE(zo> zBzU@ioxBd;rJebVh#7<7o9e(+oT>^J4gSk~B=YB@(=z`+W$n1R zUjOyg%~=iD$ZVn}fUBn#n2@JXY7Be$64yi}d783e%M=p8_^;Ax!LQ}9V)7QaMOt&y zyaipEnq2abF3?2|aqTLQM$BWerv7J#e$YGnoKD!sW8YTQZlRX1GGAL)IacPYwiUEkKNGxW-)~J#;u*J}Xu%D}rtPOl`OJRJ6PB&E z*$&albs`w1M!$)%5;0n}FwYK?!mmd$(&@hseH&j+ua|T_HuOAn#S5z^4+(R?NVT%j zaGcC!E|$+5hDU8#FyGB#cDQr6SFL zYoTtRg=;<{h#{>;S(1*1qfak7QBCVUoi&)Th|Ucia&m=o!P2t`+FQH-tTpLuXk(>B zp;qfXdoq~`vvX5LWxZR(;GN(J2BY9`9XoJ65Pc-LqPR$V%+7DzTNCMK5{|YC+l;2_u%qI>Tk%X?s{P+?4mV|#bWEvB2@J>RlD0tQaS!Eet zr2d>8Gcm)0WqX{=&{TqWaXm`Oez*UfY-8Jb6_0?NbDN%40w>mP1t7>G{u-i#v>*19 zeIg2K4;nCT-Y-G-NzYvkZ;9#@O0iYasC0IeE*>ztVz@mAiE!QbzqWPXWYRU{pky+$6pT_ic@h;s4e&XWjQ6?a>k6!i4rmX6c{>7*Bv>m8hu$kEj;S0ok z2ZX}kTKP;g={i;AAbFQpnZ|bb(ayqWetna*R$lT2cHP$rcS?N^1V8+@vEM3N0GAKk zWwM#y@YvcsOo|f6>~+=TLS2w3cYtC?j!8_7exhg4hkHCPraI_6fHMUmgB($Kqr@6< z!##`}34y|PWGAwT3>-hCitm`J(!gb^0~Va*heSh*Ht*c&7JqJJ_5x2FvMMGYs8t0# zsKT~{k(ugfcg(NQ{?T36v9;b%_k)*xmC*MT%*D2=L2X9-kK_C%xc_yO^TgxYV z57gcr;ei)h>WA)|SG+mFahB3=x^2gw|GAMD7N{fGMr`lps9Kle0m4#h`nxvOLyq`2 zdkU#(w$58@^7Z4)*QRzS#ZAeN86xih)#85LsGdhgKJ${kIONkC@U|8FtT6ZCgi&H2 zr0$FT7MFJ42=N8TgrO_6xwldAEsjkpU z_GbFE(vzY;dWEwEqM&qZaB~SW!b~+1n+3rA3?S6#zt;CKJ=SIV6cv`tb;WcPeedZ4 zeAF-V?zC%s^u_C;4AkE)$8KX1l(RuHZa%>_OTn=D)+t_yo4rl{63x|^jc_y+e zq;UalhFB%0C%xqbFO$Ui8Qw;D+V~N)K{jLpgpyDejs7Qg zx;r&55>Jo9{3x!D_4r|<%U8stVc5}s^2~&5ZOkUylAgp2L{qZGB6J#A^D{o(EShLc zSP!cSSH=SedY31nPI}R6zo)&;KjxJ(4~8ykXWA8CIwG_}j*}*tUFuLXCCoU~az)%- zx($P9Vod(GNm5&-56poOD-BWzOF+`?La7w!-D-dD#P7BlmQ)zSxRB#}rENE9>P0(h zjvIwef^N5g?c=1aE$Sb)ft0YiL<)M6={IjbKoM_-Ihx~&T6YU96SO#~1&^;r%#T$03%sOh8FmZ*GoAvUmw9WM zUALeh3h$y4+(ujqfgD_FWsmH$rE3+-mCX8@iwcIkrx z(FBNgDCScdnb-_&%5X|$EYu80+<5?d>E#Y$X4#j*)JlJ$(L`42-r?LSNKKK;r5~o1 za=h&p4%h{A)2E`ifcFYIw9=-GyFA$lqss)kM#`z0D_JG9ahUu{Q~GV(3X1#HPdj$d z8Yi`jSVzECc6-$6`T5{?%baij@MTDlydqA$osh`8DC%NLSXz<-0ljkgj(Jv|eLjAZ zQ1rTm(VW6vQ0}3){2M8SP4S9x_1v${ zf_?7zVLIAl+FLx-~vF`<79ERWeQrOKmezNit=h%``SRm&O eFT4@g@rTx@mBUPLzoO*Q@@5P-)31d&#r_YxR5^(N diff --git a/1-js/2-first-steps/6-variable-names/1-declare-variables/solution.md b/1-js/2-first-steps/6-variable-names/1-declare-variables/solution.md deleted file mode 100644 index 692a5bc7..00000000 --- a/1-js/2-first-steps/6-variable-names/1-declare-variables/solution.md +++ /dev/null @@ -1,13 +0,0 @@ -Каждая строчка решения соответствует одному шагу задачи: - -```js -//+ run -var ourPlanetName = "Земля"; // буквально "название нашей планеты" - -var userName = "Петя"; // "имя посетителя" -``` - -Названия переменных можно бы сократить, например, до `planet` и `name`, но тогда станет менее понятно, о чем речь. - -Насколько допустимы такие сокращения -- зависит от скрипта, его размера и сложности, от того, есть ли другие планеты и пользователи. В общем, лучше не жалеть букв и называть переменные так, чтобы по имени можно было легко понять, что в ней находится, и нельзя было перепутать переменные. - \ No newline at end of file diff --git a/1-js/2-first-steps/6-variable-names/1-declare-variables/task.md b/1-js/2-first-steps/6-variable-names/1-declare-variables/task.md deleted file mode 100644 index 1f0ef92f..00000000 --- a/1-js/2-first-steps/6-variable-names/1-declare-variables/task.md +++ /dev/null @@ -1,8 +0,0 @@ -# Объявление переменных - -[importance 3] - -
      -
    1. Создайте переменную для названия нашей планеты и присвойте ей значение `"Земля"`. *Правильное* имя выберите сами.
    2. -
    3. Создайте переменную для имени посетителя со значением `"Петя"`. Имя также на ваш вкус.
    4. -
    \ No newline at end of file diff --git a/1-js/2-first-steps/6-variable-names/article.md b/1-js/2-first-steps/6-variable-names/article.md deleted file mode 100644 index 202a4f03..00000000 --- a/1-js/2-first-steps/6-variable-names/article.md +++ /dev/null @@ -1,120 +0,0 @@ -# Правильный выбор имени переменной - -Правильный выбор имени переменной -- одна из самых важных и сложных вещей в программировании, которая отличает начинающего от гуру. - -[cut] - -Дело в том, что большинство времени мы тратим не на изначальное написание кода, а на его развитие. - -Возможно, эти слова не очевидны, если вы пока что ничего большого не писали или пишете код "только для чтения" (написал 5 строк, отдал заказчику и забыл). Но чем более серьёзные проекты вы будете делать, тем более актуальны они будут для вас. - -Что такое это "развитие"? Это когда я вчера написал код, а сегодня (или спустя неделю) прихожу и хочу его поменять. Например, вывести сообщение не так, а эдак... Обработать товары по-другому, добавить функционал.. А где у меня там сообщение хранится? А где товар?... - -Гораздо проще найти нужные данные, если они правильно помечены, то есть когда переменная названа *правильно*. - -## Правила именования - -
      -
    • **Правило 1.** - -**Никакого транслита. Только английский.** - -Неприемлемы: - -```js -var moiTovari; -var cena; -var ssilka; -``` - -Подойдут: - -```js -var myGoods; -var price; -var link; -``` - -Чем плох транслит? - -Во-первых, среди разработчиков всего мира принято использовать английский язык для имён переменных. И если ваш код потом попадёт к кому-то другому, например вы будете в команде больше чем из одного человека, то велик шанс, что транслит ему не понравится. - -Во-вторых, русский транслит хуже читается и длиннее, чем названия на английском. - -В-третьих, в проектах вы наверняка будете применять библиотеки, написанные другими людьми. Многое уже готово, в распоряжении современного разработчика есть масса инструментов, все они используют названия переменных и функций на английском языке, и вы, конечно, будете их использовать. А от кода, где транслит перемешан с английским -- волосы могут встать дыбом, и не только на голове. - -Если вы вдруг не знаете английский -- самое время выучить. -
    • -
    • **Правило 2.** - -**Использовать короткие имена только для переменных "местного значения".** - -Называть переменные именами, не несущими смысловой нагрузки, например `a`, `e`, `p`, `mg` -- можно только в том случае, если они используются в небольшом фрагменте кода и их применение очевидно. - -Вообще же, название переменной должно быть понятным. Иногда для этого нужно использовать несколько слов. -
    • -
    • **Правило 3.** - -**Переменные из нескольких слов пишутся `вместеВотТак`.** - -Например: - -```js -var borderLeftWidth; -``` - -Этот способ записи называется "верблюжьей нотацией" или, по-английски, "camelCase". - -Существует альтернативный стандарт, когда несколько слов пишутся через знак подчеркивания `'_'`: - -```js -var border_left_width; -``` - -Преимущественно в JavaScript используется вариант `borderLeftWidth`, в частности во встроенных языковых и браузерных функциях. Поэтому целесообразно остановиться на нём. - -Ещё одна причина выбрать "верблюжью нотацию" -- запись в ней немного короче, чем c подчеркиванием, т.к. не нужно вставлять `'_'`. -
    • -
    • **Правило последнее, главное.** - -**Имя переменной должно максимально чётко соответствовать хранимым в ней данным.** - -Придумывание таких имен -- одновременно коротких и точных, при которых всегда понятно, что где лежит, приходит с опытом, но только если сознательно стремиться к этому. -
    • -
    - -Позвольте поделиться одним небольшим секретом, который очень прост, но позволит улучшить названия переменных и сэкономит время. - -Бывает так, что, написав код, мы через некоторое время к нему возвращаемся, надо что-то поправить. И мы примерно помним, что переменная, в которой хранится нужное вам значение, называется... Ну, скажем, `borderLeftWidth`. Мы ищем в её в коде, не находим, но, разобравшись, обнаруживаем, что на самом деле переменная называлась вот так: `leftBorderWidth`. - -**Если мы ищем переменную с одним именем, а находим -- с другим, то зачастую самый лучший ход -- это *переименовать* переменную, чтобы имя было тем, которое вы искали.** - -То есть, в коде `leftBorderWidth`, а мы её переименуем на ту, которую искали: `borderLeftWidth`. - -Зачем? Дело в том, что в следующий раз, когда вы захотите что-то поправить, то вы будете искать по тому же самому имени. Соответственно, это сэкономит вам время. - -Есть причина и поважнее. Поскольку именно это имя переменной пришло в голову -- скорее всего, оно больше соответствует хранимым там данным, чем то, которое было мы придумали изначально. Исключения бывают, но в любом случае -- такое несовпадение -- это повод задуматься. - -Чтобы удобно переименовывать переменную, нужно использовать [хороший редактор JavaScript](/editor), тогда этот процесс будет очень простым и быстрым. - -[smart header="Если коротко..."] -Смысл имени переменной -- это "имя на коробке", по которому мы сможем максимально быстро находить нужные нам данные. - -**Не нужно бояться переименовывать переменные, если вы придумали имя получше.** - -Современные редакторы позволяют делать это очень удобно и быстро. Это в конечном счете сэкономит вам время. -[/smart] - - -[warn header="Храните в переменной то, что следует"] -Бывают ленивые программисты, которые, вместо того чтобы объявить новую переменную, используют существующую. - -В результате получается, что такая переменная -- как коробка, в которую кидают то одно, то другое, то третье, при этом не меняя название. Что в ней лежит сейчас? А кто его знает... Нужно подойти, проверить. - -Сэкономит такой программист время на объявлении переменной -- потеряет в два раза больше на отладке кода. - -**"Лишняя" переменная -- добро, а не зло.** -[/warn] - - - diff --git a/1-js/2-first-steps/7-types-intro/article.md b/1-js/2-first-steps/7-types-intro/article.md deleted file mode 100644 index 11a98f86..00000000 --- a/1-js/2-first-steps/7-types-intro/article.md +++ /dev/null @@ -1,168 +0,0 @@ -# Шесть типов данных, typeof - -В JavaScript существует несколько основных типов данных. - -В этой главе мы получим о них общее представление, а позже, в соответствующих главах подробно познакомимся с использованием каждого типа в отдельности. - -[cut] - -## Число "number" - -```js -var n = 123; -n = 12.345; -``` - -Единый тип *число* используется как для целых, так и для дробных чисел. - -Существуют специальные числовые значения `Infinity` (бесконечность) и `NaN` (ошибка вычислений). - -Например, бесконечность `Infinity` получается при делении на ноль: - -```js -//+ run -alert( 1 / 0 ); // Infinity -``` - -Ошибка вычислений `NaN` будет результатом некорректной математической операции, например: - -```js -//+ run -alert( "нечисло" * 2 ); // NaN, ошибка -``` - -Эти значения формально принадлежат типу "число", хотя, конечно, числами в их обычном понимании не являются. - -Особенности работы с числами в JavaScript разобраны в главе [](/number). - -## Строка "string" - -```js -var str = "Мама мыла раму"; -str = 'Одинарные кавычки тоже подойдут'; -``` - -**В JavaScript одинарные и двойные кавычки равноправны.** Можно использовать или те или другие. - -[smart header="Тип *символ* не существует, есть только *строка*."] -В некоторых языках программирования есть специальный тип данных для одного символа. Например, в языке С это `char`. В JavaScript есть только тип "строка" `string`. Что, надо сказать, вполне удобно. -[/smart] - -Более подробно со строками мы познакомимся в главе [](/string). - -## Булевый (логический) тип "boolean" - -У него всего два значения: `true` (истина) и `false` (ложь). - -Как правило, такой тип используется для хранения значения типа да/нет, например: - -```js -//+ no-beautify -var checked = true; // поле формы помечено галочкой -checked = false; // поле формы не содержит галочки -``` - -О нём мы поговорим более подробно, когда будем обсуждать логические вычисления и условные операторы. - -## Специальное значение "null" - -Значение `null` не относится ни к одному из типов выше, а образует свой отдельный тип, состоящий из единственного значения `null`: - -```js -var age = null; -``` - -В JavaScript `null` не является "ссылкой на несуществующий объект" или "нулевым указателем", как в некоторых других языках. Это просто специальное значение, которое имеет смысл "ничего" или "значение неизвестно". - -В частности, код выше говорит о том, что возраст `age` неизвестен. - -## Специальное значение "undefined" - -Значение `undefined`, как и `null`, образует свой собственный тип, состоящий из одного этого значения. Оно имеет смысл "значение не присвоено". - -Если переменная объявлена, но в неё ничего не записано, то её значение как раз и есть `undefined`: - -```js -//+ run -var x; -alert( x ); // выведет "undefined" -``` - -Можно присвоить `undefined` и в явном виде, хотя это делается редко: - -```js -//+ run -var x = 123; -x = undefined; - -alert( x ); // "undefined" -``` - -В явном виде `undefined` обычно не присваивают, так как это противоречит его смыслу. Для записи в переменную "пустого" или "неизвестного" значения используется `null`. - -## Объекты "object" - -Первые 5 типов называют *"примитивными"*. - -Особняком стоит шестой тип: *"объекты"*. - -Он используется для коллекций данных и для объявления более сложных сущностей. - -Объявляются объекты при помощи фигурных скобок `{...}`, например: - -```js -var user = { name: "Вася" }; -``` - -Мы подробно разберём способы объявления объектов и, вообще, работу с объектами, позже, в главе [](/object). - -## Оператор typeof [#type-typeof] - -Оператор `typeof` возвращает тип аргумента. - -У него есть два синтаксиса: со скобками и без: -
      -
    1. Синтаксис оператора: `typeof x`.
    2. -
    3. Синтаксис функции: `typeof(x)`.
    4. -
    - -Работают они одинаково, но первый синтаксис короче. - -**Результатом `typeof` является строка, содержащая тип:** - -```js -typeof undefined // "undefined" - -typeof 0 // "number" - -typeof true // "boolean" - -typeof "foo" // "string" - -typeof {} // "object" - -*!* -typeof null // "object" (1) -*/!* - -*!* -typeof function(){} // "function" (2) -*/!* -``` - -Последние две строки помечены, потому что `typeof` ведет себя в них по-особому. - -
      -
    1. Результат `typeof null == "object"` -- это официально признанная ошибка в языке, которая сохраняется для совместимости. На самом деле `null` -- это не объект, а отдельный тип данных.
    2. -
    3. Функции мы пройдём чуть позже. Пока лишь заметим, что функции не являются отдельным базовым типом в JavaScript, а подвидом объектов. Но `typeof` выделяет функции отдельно, возвращая для них `"function"`. На практике это весьма удобно, так как позволяет легко определить функцию.
    4. -
    - -К работе с типами мы также вернёмся более подробно в будущем, после изучения основных структур данных. - -## Итого - -Есть 5 "примитивных" типов: `number`, `string`, `boolean`, `null`, `undefined` и 6-й тип -- объекты `object`. - -Очень скоро мы изучим их во всех деталях. - -Оператор `typeof x` позволяет выяснить, какой тип находится в `x`, возвращая его в виде строки. diff --git a/1-js/2-first-steps/8-operators/1-increment-order/solution.md b/1-js/2-first-steps/8-operators/1-increment-order/solution.md deleted file mode 100644 index 053e8d8d..00000000 --- a/1-js/2-first-steps/8-operators/1-increment-order/solution.md +++ /dev/null @@ -1,23 +0,0 @@ -# Разъяснения - -```js -//+ run no-beautify -var a = 1, b = 1, c, d; - -// префиксная форма сначала увеличивает a до 2, а потом возвращает -c = ++a; alert(c); // 2 - -// постфиксная форма увеличивает, но возвращает старое значение -d = b++; alert(d); // 1 - -// сначала увеличили a до 3, потом использовали в арифметике -c = (2+ ++a); alert(c); // 5 - -// увеличили b до 3, но в этом выражении оставили старое значение -d = (2+ b++); alert(d); // 4 - -// каждую переменную увеличили по 2 раза -alert(a); // 3 -alert(b); // 3 -``` - diff --git a/1-js/2-first-steps/8-operators/1-increment-order/task.md b/1-js/2-first-steps/8-operators/1-increment-order/task.md deleted file mode 100644 index 180d28eb..00000000 --- a/1-js/2-first-steps/8-operators/1-increment-order/task.md +++ /dev/null @@ -1,20 +0,0 @@ -# Инкремент, порядок срабатывания - -[importance 5] - -Посмотрите, понятно ли вам, почему код ниже работает именно так? - -```js -//+ run no-beautify -var a = 1, b = 1, c, d; - -c = ++a; alert(c); // 2 -d = b++; alert(d); // 1 - -c = (2+ ++a); alert(c); // 5 -d = (2+ b++); alert(d); // 4 - -alert(a); // 3 -alert(b); // 3 -``` - diff --git a/1-js/2-first-steps/8-operators/2-assignment-result/solution.md b/1-js/2-first-steps/8-operators/2-assignment-result/solution.md deleted file mode 100644 index c0e69ce4..00000000 --- a/1-js/2-first-steps/8-operators/2-assignment-result/solution.md +++ /dev/null @@ -1,11 +0,0 @@ -Ответ: `x = 5`. - -Оператор присваивания возвращает значение, которое будет записано в переменную, например: - -```js -//+ run -var a = 2; -alert( a *= 2 ); // 4 -``` - -Отсюда `x = 1 + 4 = 5`. \ No newline at end of file diff --git a/1-js/2-first-steps/8-operators/2-assignment-result/task.md b/1-js/2-first-steps/8-operators/2-assignment-result/task.md deleted file mode 100644 index a3c166af..00000000 --- a/1-js/2-first-steps/8-operators/2-assignment-result/task.md +++ /dev/null @@ -1,12 +0,0 @@ -# Результат присваивания - -[importance 3] - -Чему будет равен `x` в примере ниже? - -```js -var a = 2; - -var x = 1 + (a *= 2); -``` - diff --git a/1-js/2-first-steps/8-operators/article.md b/1-js/2-first-steps/8-operators/article.md deleted file mode 100644 index b8b28f3c..00000000 --- a/1-js/2-first-steps/8-operators/article.md +++ /dev/null @@ -1,428 +0,0 @@ -# Основные операторы - -Для работы с переменными, со значениями, JavaScript поддерживает все стандартные операторы, большинство которых есть и в других языках программирования. - -Несколько операторов мы знаем со школы -- это обычные сложение `+`, умножение `*`, вычитание и так далее. - -В этой главе мы сконцентрируемся на операторах, которые в курсе математики не проходят, и на их особенностях в JavaScript. -[cut] - -## Термины: "унарный", "бинарный", "операнд" - -У операторов есть своя терминология, которая используется во всех языках программирования. - -Прежде, чем мы двинемся дальше -- несколько терминов, чтобы понимать, о чём речь. - -
      -
    • *Операнд* -- то, к чему применяется оператор. Например: `5 * 2` -- оператор умножения с левым и правым операндами. Другое название: "аргумент оператора".
    • -
    • *Унарным* называется оператор, который применяется к одному выражению. Например, оператор унарный минус `"-"` меняет знак числа на противоположный: - -```js -//+ run -var x = 1; - -*!* -x = -x; -*/!* -alert( x ); // -1, применили унарный минус -``` - -
    • -
    • *Бинарным* называется оператор, который применяется к двум операндам. Тот же минус существует и в бинарной форме: - -```js -//+ run no-beautify -var x = 1, y = 3; -alert( y - x ); // 2, бинарный минус -``` -
    • -
    - - -## Сложение строк, бинарный + - -Обычно при помощи плюса `'+'` складывают числа. - -Но если бинарный оператор `'+'` применить к строкам, то он их объединяет в одну: - -```js -var a = "моя" + "строка"; -alert( a ); // моястрока -``` - -Иначе говорят, что "плюс производит конкатенацию (сложение) строк". - -**Если хотя бы один аргумент является строкой, то второй будет также преобразован к строке!** - -Причем не важно, справа или слева находится операнд-строка, в любом случае нестроковый аргумент будет преобразован. Например: - -```js -//+ run -alert( '1' + 2 ); // "12" -alert( 2 + '1' ); // "21" -``` - -**Это приведение к строке -- особенность исключительно бинарного оператора `"+"`.** - -Остальные арифметические операторы работают только с числами и всегда приводят аргументы к числу. - -Например: - -```js -//+ run -alert( 2 - '1' ); // 1 -alert( 6 / '2' ); // 3 -``` - - - -### Преобразование к числу, унарный плюс + - -Унарный, то есть применённый к одному значению, плюс ничего не делает с числами: - -```js -//+ run -alert( +1 ); // 1 -alert( +(1 - 2) ); // -1 -``` - -Как видно, плюс ничего не изменил в выражениях. Результат -- такой же, как и без него. - -Тем не менее, он широко применяется, так как его "побочный эффект" -- преобразование значения в число. - -Например, когда мы получаем значения из HTML-полей или от пользователя, то они обычно в форме строк. - -А что, если их нужно, к примеру, сложить? Бинарный плюс сложит их как строки: - -```js -//+ run -var apples = "2"; -var oranges = "3"; - -alert( apples + oranges ); // "23", так как бинарный плюс складывает строки -``` - -Поэтому используем унарный плюс, чтобы преобразовать к числу: - -```js -//+ run -var apples = "2"; -var oranges = "3"; - -alert( +apples + +oranges ); // 5, число, оба операнда предварительно преобразованы в числа -``` - -С точки зрения математики такое изобилие плюсов может показаться странным. С точки зрения программирования -- никаких разночтений: сначала выполнятся унарные плюсы, приведут строки к числам, а затем -- бинарный `'+'` их сложит. - -Почему унарные плюсы выполнились до бинарного сложения? Как мы сейчас увидим, дело в их приоритете. - -## Приоритет - - -В том случае, если в выражении есть несколько операторов -- порядок их выполнения определяется *приоритетом*. - -Из школы мы знаем, что умножение в выражении `2 * 2 + 1` выполнится раньше сложения, т.к. его *приоритет* выше, а скобки явно задают порядок выполнения. Но в JavaScript -- гораздо больше операторов, поэтому существует целая [таблица приоритетов](https://developer.mozilla.org/en/JavaScript/Reference/operators/operator_precedence). - -Она содержит как уже пройденные операторы, так и те, которые мы еще не проходили. В ней каждому оператору задан числовой приоритет. Тот, у кого число больше -- выполнится раньше. Если приоритет одинаковый, то порядок выполнения -- слева направо. - -Отрывок из таблицы: - - - - - - - - - - - - -
    .........
    15унарный плюс`+`
    15унарный минус`-`
    14умножение`*`
    14деление`/`
    13сложение`+`
    13вычитание`-`
    .........
    3присвоение`=`
    .........
    - -Так как "унарный плюс" имеет приоритет `15`, выше, чем `13` у обычного "сложения", то в выражении `+apples + +oranges` сначала сработали плюсы у `apples` и `oranges`, а затем уже обычное сложение. - -## Присваивание - -Обратим внимание, в таблице приоритетов также есть оператор присваивания `=`. - -У него -- один из самых низких приоритетов: `3`. - -Именно поэтому, когда переменную чему-либо присваивают, например, `x = 2 * 2 + 1` сначала выполнится арифметика, а уже затем -- произойдёт присвоение `=`. - -```js -var x = 2 * 2 + 1; - -alert( x ); // 5 -``` - -**Возможно присваивание по цепочке:** - -```js -//+ run -var a, b, c; - -*!* -a = b = c = 2 + 2; -*/!* - -alert( a ); // 4 -alert( b ); // 4 -alert( c ); // 4 -``` - -Такое присваивание работает справа-налево, то есть сначала вычислятся самое правое выражение `2+2`, присвоится в `c`, затем выполнится `b = c` и, наконец, `a = b`. - -[smart header="Оператор `\"=\"` возвращает значение"] -Все операторы возвращают значение. Вызов `x = выражение` не является исключением. - -Он записывает выражение в `x`, а затем возвращает его. Благодаря этому присваивание можно использовать как часть более сложного выражения: - -```js -//+ run -var a = 1; -var b = 2; - -*!* -var c = 3 - (a = b + 1); -*/!* - -alert( a ); // 3 -alert( c ); // 0 -``` - -В примере выше результатом `(a = b + 1)` является значение, которое записывается в `a` (т.е. `3`). Оно используется для вычисления `c`. - -Забавное применение присваивания, не так ли? - -Знать, как это работает -- стоит обязательно, а вот писать самому -- только если вы уверены, что это сделает код более читаемым и понятным. -[/smart] - - -## Взятие остатка % - -Оператор взятия остатка `%` интересен тем, что, несмотря на обозначение, никакого отношения к процентам не имеет. - -Его результат `a % b` -- это остаток от деления `a` на `b`. - -Например: - -```js -//+ run -alert( 5 % 2 ); // 1, остаток от деления 5 на 2 -alert( 8 % 3 ); // 2, остаток от деления 8 на 3 -alert( 6 % 3 ); // 0, остаток от деления 6 на 3 -``` - - -## Инкремент/декремент: ++, -- - -Одной из наиболее частых операций в JavaScript, как и во многих других языках программирования, является увеличение или уменьшение переменной на единицу. - -Для этого существуют даже специальные операторы: -
      -
    • **Инкремент** `++` увеличивает на 1: - -```js -//+ run no-beautify -var i = 2; -i++; // более короткая запись для i = i + 1. -alert(i); // 3 -``` - -
    • -
    • **Декремент** `--` уменьшает на 1: - -```js -//+ run no-beautify -var i = 2; -i--; // более короткая запись для i = i - 1. -alert(i); // 1 -``` - -
    • -
    - -[warn] -Инкремент/декремент можно применить только к переменной. -Код `5++` даст ошибку. -[/warn] - -Вызывать эти операторы можно не только после, но и перед переменной: `i++` (называется "постфиксная форма") или `++i` ("префиксная форма"). - -Обе эти формы записи делают одно и то же: увеличивают на `1`. - -Тем не менее, между ними существует разница. Она видна только в том случае, когда мы хотим не только увеличить/уменьшить переменную, но и использовать результат в том же выражении. - -Например: - -```js -//+ run -var i = 1; -var a = ++i; // (*) - -alert(a); // *!*2*/!* -``` - -В строке `(*)` вызов `++i` увеличит переменную, а *затем* вернёт ее значение в `a`. Так что в `a` попадёт значение `i` *после* увеличения. - -**Постфиксная форма `i++` отличается от префиксной `++i` тем, что возвращает старое значение, бывшее до увеличения.** - -В примере ниже в `a` попадёт старое значение `i`, равное `1`: - -```js -//+ run -var i = 1; -var a = i++; // (*) - -alert(a); // *!*1*/!* -``` - -
      -
    • Если результат оператора не используется, а нужно только увеличить/уменьшить переменную -- без разницы, какую форму использовать: - -```js -//+ run -var i = 0; -i++; -++i; -alert( i ); // 2 -``` - -
    • -
    • Если хочется тут же использовать результат, то нужна префиксная форма: - -```js -//+ run -var i = 0; -alert( ++i ); // 1 -``` - -
    • -
    • Если нужно увеличить, но нужно значение переменной *до увеличения* -- постфиксная форма: - -```js -//+ run -var i = 0; -alert( i++ ); // 0 -``` - -
    • -
    - -[smart header="Инкремент/декремент можно использовать в любых выражениях"] - -При этом он имеет более высокий приоритет и выполняется раньше, чем арифметические операции: - -```js -//+ run -var i = 1; -alert( 2 * ++i ); // 4 -``` - - - -```js -//+ run -var i = 1; -alert( 2 * i++ ); // 2, выполнился раньше но значение вернул старое -``` - -При этом, нужно с осторожностью использовать такую запись, потому что в более длинной строке при быстром "вертикальном" чтении кода легко пропустить такой `i++`, и будет неочевидно, что переменая увеличивается. - -Три строки, по одному действию в каждой -- длиннее, зато нагляднее: - -```js -//+ run -var i = 1; -alert( 2 * i ); -i++; -``` -[/smart] - -## Побитовые операторы - -Побитовые операторы рассматривают аргументы как 32-разрядные целые числа и работают на уровне их внутреннего двоичного представления. - -Эти операторы не являются чем-то специфичным для JavaScript, они поддерживаются в большинстве языков программирования. - -Поддерживаются следующие побитовые операторы: -
      -
    • AND(и) ( `&` )
    • -
    • OR(или) ( `|` )
    • -
    • XOR(побитовое исключающее или) ( `^` )
    • -
    • NOT(не) ( `~` )
    • -
    • LEFT SHIFT(левый сдвиг) ( `<<` )
    • -
    • RIGHT SHIFT(правый сдвиг) ( `>>` )
    • -
    • ZERO-FILL RIGHT SHIFT(правый сдвиг с заполнением нулями) ( `>>>` )
    • -
    - -Они используются редко, поэтому вынесены в отдельную главу [](/bitwise-operators). - - - -## Сокращённая арифметика с присваиванием - -Часто нужно применить оператор к переменной и сохранить результат в ней же, например: - -```js -var n = 2; -n = n + 5; -n = n * 2; -``` - -Эту запись можно укоротить при помощи совмещённых операторов, вот так: - -```js -//+ run -var n = 2; -n += 5; // теперь n=7 (работает как n = n + 5) -n *= 2; // теперь n=14 (работает как n = n * 2) - -alert( n ); // 14 -``` - -Так можно сделать для операторов `+,-,*,/` и бинарных `<<,>>,>>>,&,|,^`. - -Вызов с присваиванием имеет в точности такой же приоритет, как обычное присваивание, то есть выполнится после большинства других операций: - -```js -//+ run -var n = 2; -n *= 3 + 5; - -alert( n ); // 16 (n = 2 * 8) -``` - - -## Оператор запятая - -Один из самых необычных операторов -- запятая `','`. - -Его можно вызвать явным образом, например: - -```js -//+ run -*!* -a = (5, 6); -*/!* - -alert( a ); -``` - -Запятая позволяет перечислять выражения, разделяя их запятой `','`. Каждое из них -- вычисляется и отбрасывается, за исключением последнего, которое возвращается. - -Запятая -- единственный оператор, приоритет которого ниже присваивания. В выражении `a = (5,6)` для явного задания приоритета использованы скобки, иначе оператор `'='` выполнился бы до запятой `','`, получилось бы `(a=5), 6`. - -Зачем же нужен такой странный оператор, который отбрасывает значения всех перечисленных выражений, кроме последнего? - -Обычно он используется в составе более сложных конструкций, чтобы сделать несколько действий в одной строке. Например: - -```js -// три операции в одной строке -for (*!*a = 1, b = 3, c = a*b*/!*; a < 10; a++) { - ... -} -``` - -Такие трюки используются во многих JavaScript-фреймворках для укорачивания кода. diff --git a/1-js/2-first-steps/9-comparison/article.md b/1-js/2-first-steps/9-comparison/article.md deleted file mode 100644 index 2440ef6c..00000000 --- a/1-js/2-first-steps/9-comparison/article.md +++ /dev/null @@ -1,248 +0,0 @@ -# Операторы сравнения и логические значения - -В этом разделе мы познакомимся с операторами сравнения и с логическими значениями, которые такие операторы возвращают. - -[cut] - -Многие операторы сравнения знакомы нам из математики: - -
      -
    • Больше/меньше: a > b, a < b.
    • -
    • Больше/меньше или равно: a >= b, a <= b.
    • -
    • Равно `a == b`. -Для сравнения используется два символа равенства `'='`. Один символ `a = b` означал бы присваивание.
    • -
    • "Не равно". В математике он пишется как , в JavaScript -- знак равенства с восклицательным знаком перед ним !=.
    • -
    - -## Логические значения - -Как и другие операторы, сравнение возвращает значение. Это значение имеет *логический* тип. - -Существует всего два логических значения: -
      -
    • `true` -- имеет смысл "да", "верно", "истина".
    • -
    • `false` -- означает "нет", "неверно", "ложь".
    • -
    - -Например: - -```js -//+ run -alert( 2 > 1 ); // true, верно -alert( 2 == 1 ); // false, неверно -alert( 2 != 1 ); // true -``` - -Логические значения можно использовать и напрямую, присваивать переменным, работать с ними как с любыми другими: - -```js -//+ run -var a = true; // присваивать явно - -var b = 3 > 4; // или как результат сравнения -alert( b ); // false - -alert( a == b ); // (true == false) неверно, выведет false -``` - -## Сравнение строк - -Строки сравниваются побуквенно: - -```js -//+ run -alert( 'Б' > 'А' ); // true -``` - -[warn header="Осторожно, Unicode!"] -Аналогом "алфавита" во внутреннем представлении строк служит кодировка, у каждого символа -- свой номер (код). JavaScript использует кодировку [Unicode](http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4). - -При этом сравниваются *численные коды символов*. В частности, код у символа `Б` больше, чем у `А`, поэтому и результат сравнения такой. - -**В кодировке Unicode обычно код у строчной буквы больше, чем у прописной.** - -Поэтому регистр имеет значение: - -```js -//+ run -alert( 'а' > 'Я' ); // true, строчные буквы больше прописных -``` - -Для корректного сравнения символы должны быть в одинаковом регистре. -[/warn] - -Если строка состоит из нескольких букв, то сравнение осуществляется как в телефонной книжке или в словаре. Сначала сравниваются первые буквы, потом вторые, и так далее, пока одна не будет больше другой. - -Иными словами, больше -- та строка, которая в телефонной книге была бы на большей странице. - -Например: -
      -
    • Если первая буква первой строки больше -- значит первая строка больше, независимо от остальных символов: - -```js -//+ run -alert( 'Банан' > 'Аят' ); -``` - -
    • -
    • Если одинаковы -- сравнение идёт дальше. Здесь оно дойдёт до третьей буквы: - -```js -//+ run -alert( 'Вася' > 'Ваня' ); // true, т.к. 'с' > 'н' -``` - -
    • -
    • При этом любая буква больше отсутствия буквы: - -```js -//+ run -alert( 'Привет' > 'Прив' ); // true, так как 'е' больше чем "ничего". -``` - -
    • -
    -Такое сравнение называется *лексикографическим*. - - -[warn] -Обычно мы получаем значения от посетителя в виде строк. Например, `prompt` возвращает *строку*, которую ввел посетитель. - -Числа, полученные таким образом, в виде строк сравнивать нельзя, результат будет неверен. Например: - -```js -//+ run -alert( "2" > "14" ); // true, неверно, ведь 2 не больше 14 -``` - -В примере выше `2` оказалось больше `14`, потому что строки сравниваются посимвольно, а первый символ `'2'` больше `'1'`. - -Правильно было бы преобразовать их к числу явным образом. Например, поставив перед ними `+`: - -```js -//+ run -alert( +"2" > +"14" ); // false, теперь правильно -``` - -[/warn] - -## Сравнение разных типов - -При сравнении значений разных типов, используется числовое преобразование. Оно применяется к обоим значениям. - -Например: - -```js -//+ run -alert( '2' > 1 ); // true, сравнивается как 2 > 1 -alert( '01' == 1 ); // true, сравнивается как 1 == 1 -alert( false == 0 ); // true, false становится числом 0 -alert( true == 1 ); // true, так как true становится числом 1. -``` - -Тема преобразований типов будет продолжена далее, в главе [](/types-conversion). - -## Строгое равенство - -В обычном операторе `==` есть "проблема"" -- он не может отличить `0` от `false`: - -```js -//+ run -alert( 0 == false ); // true -``` - -Та же ситуация с пустой строкой: - - -```js -//+ run -alert( '' == false ); // true -``` - -Это естественное следствие того, что операнды разных типов преобразовались к числу. Пустая строка, как и `false`, при преобразовании к числу дают `0`. - -Что же делать, если всё же нужно отличить `0` от `false`? - -**Для проверки равенства без преобразования типов используются операторы строгого равенства `===` (тройное равно) и `!==`.** - -Если тип разный, то они всегда возвращают `false`: - -```js -//+ run -alert( 0 === false ); // false, т.к. типы различны -``` - -Строгое сравнение предпочтительно, если мы хотим быть уверены, что "сюрпризов" не будет. - -## Сравнение с null и undefined - -Проблемы со специальными значениями возможны, когда к переменной применяется операция сравнения `> < <= >=`, а у неё может быть как численное значение, так и `null/undefined`. - -**Интуитивно кажется, что `null/undefined` эквивалентны нулю, но это не так.** - -Они ведут себя по-другому. - -
      -
    1. Значения `null` и `undefined` равны `==` друг другу и не равны чему бы то ни было ещё. -Это жёсткое правило буквально прописано в спецификации языка.
    2. -
    3. При преобразовании в число `null` становится `0`, а `undefined` становится `NaN`.
    4. -
    - -Посмотрим забавные следствия. - -### Некорректный результат сравнения null с 0 -Сравним `null` с нулём: - -```js -//+ run -alert( null > 0 ); // false -alert( null == 0 ); // false -``` - -Итак, мы получили, что `null` не больше и не равен нулю. А теперь... - -```js -//+ run -alert(null >= 0); // *!*true*/!* -``` - -Как такое возможно? Если нечто *"больше или равно нулю"*, то резонно полагать, что оно либо *больше*, либо *равно*. Но здесь это не так. - -Дело в том, что алгоритмы проверки равенства `==` и сравнения `>= > < <=` работают по-разному. - -Сравнение честно приводит к числу, получается ноль. А при проверке равенства значения `null` и `undefined` обрабатываются особым образом: они равны друг другу, но не равны чему-то ещё. - -В результате получается странная с точки зрения здравого смысла ситуация, которую мы видели в примере выше. - -### Несравнимый undefined - -Значение `undefined` вообще нельзя сравнивать: - -```js -//+ run -alert( undefined > 0 ); // false (1) -alert( undefined < 0 ); // false (2) -alert( undefined == 0 ); // false (3) -``` - -
      -
    • Сравнения `(1)` и `(2)` дают `false` потому, что `undefined` при преобразовании к числу даёт `NaN`. А значение `NaN` по стандарту устроено так, что сравнения `==`, `<`, `>`, `<=`, `>=` и даже `===` с ним возвращают `false`.
    • -
    • Проверка равенства `(3)` даёт `false`, потому что в стандарте явно прописано, что `undefined` равно лишь `null` и ничему другому.
    • -
    - - -**Вывод: любые сравнения с `undefined/null`, кроме точного `===`, следует делать с осторожностью.** - -Желательно не использовать сравнения `>= > < <=` с ними, во избежание ошибок в коде. - - -## Итого - -
      -
    • В JavaScript есть логические значения `true` (истина) и `false` (ложь). Операторы сравнения возвращают их.
    • -
    • Строки сравниваются побуквенно.
    • -
    • Значения разных типов приводятся к числу при сравнении, за исключением строгого равенства `===` (`!==`).
    • -
    • Значения `null` и `undefined` равны `==` друг другу и не равны ничему другому. В других сравнениях (с участием `>`,`<`) их лучше не использовать, так как они ведут себя не как `0`.
    • -
    - -Мы ещё вернёмся к теме сравнения позже, когда лучше изучим различные типы данных в JavaScript. diff --git a/1-js/2-first-steps/index.md b/1-js/2-first-steps/index.md deleted file mode 100644 index eee61f1c..00000000 --- a/1-js/2-first-steps/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# Основы JavaScript - -Основные кирпичики из которых состоят скрипты. \ No newline at end of file diff --git a/1-js/3-writing-js/1-debugging-chrome/article.md b/1-js/3-writing-js/1-debugging-chrome/article.md deleted file mode 100644 index 8092ba0e..00000000 --- a/1-js/3-writing-js/1-debugging-chrome/article.md +++ /dev/null @@ -1,259 +0,0 @@ -# Отладка в браузере Chrome - -Перед тем, как двигаться дальше, поговорим об отладке скриптов. - -Все современные браузеры поддерживают для этого "инструменты разработчика". Исправление ошибок с их помощью намного проще и быстрее. - -На текущий момент самые многофункциональные инструменты -- в браузере Chrome. Также очень хорош Firebug (для Firefox). - -[cut] - -## Общий вид панели Sources - -В вашей версии Chrome панель может выглядеть несколько по-иному, но что где находится, должно быть понятно. - -Зайдите на [страницу с примером](debugging/index.html) браузером Chrome. - -Откройте инструменты разработчика: [key F12] или в меню `Инструменты > Инструменты Разработчика`. - -Выберите сверху `Sources`. - - - -Вы видите три зоны: - -
      -
    1. **Зона исходных файлов.** В ней находятся все подключённые к странице файлы, включая JS/CSS. Выберите `pow.js`, если он не выбран.
    2. -
    3. **Зона текста.** В ней находится текст файлов.
    4. -
    5. **Зона информации и контроля.** Мы поговорим о ней позже.
    6. -
    - -Обычно зона исходных файлов при отладке не нужна. Скройте её кнопкой . - -## Общие кнопки управления - - - -Три наиболее часто используемые кнопки управления: -
    -
    Формат
    -
    Нажатие форматирует текст текущего файла, расставляет отступы. Нужна, если вы хотите разобраться в чужом коде, плохо отформатированном или сжатом.
    -
    Консоль
    -
    Очень полезная кнопка, открывает тут же консоль для запуска команд. Можно смотреть код и тут же запускать функции. Её нажатие можно заменить на клавишу Esc.
    -
    Окно
    -
    Если код очень большой, то можно вынести инструменты разработки вбок или в отдельное окно, зажав эту кнопку и выбрав соответствующий вариант из списка.
    -
    - -## Точки остановки - -Открыли файл `pow.js` во вкладке Sources? Кликните на 6й строке файла `pow.js`, прямо на цифре 6. - -Поздравляю! Вы поставили "точку остановки" или, как чаще говорят, "брейкпойнт". - -Выглядет это должно примерно так: - - - -Слово *Брейкпойнт* (breakpoint) -- часто используемый английский жаргонизм. Это то место в коде, где отладчик будет *автоматически* останавливать выполнение JavaScript, как только оно до него дойдёт. - - -**В остановленном коде можно посмотреть текущие значения переменных, выполнять команды и т.п., в общем -- отлаживать его.** - -Вы можете видеть, что информация о точке остановки появилась справа, в подвкладке Breakpoints. - -Вкладка Breakpoints очень удобна, когда код большой, она позволяет: - -
      -
    • Быстро перейти на место кода, где стоит брейкпойнт кликом на текст.
    • -
    • Временно выключить брейкпойнт кликом на чекбокс.
    • -
    • Быстро удалить брейкпойнт правым кликом на текст и выбором Remove, и так далее.
    • -
    - -[smart header="Дополнительные возможности"] -
      -
    • Остановку можно инициировать и напрямую из кода скрипта, командой `debugger`: - -```js -function pow(x, n) { - ... - debugger; // <-- отладчик остановится тут - ... -} -``` - -
    • -
    • *Правый клик* на номер строки `pow.js` позволит создать условную точку остановки (conditional breakpoint), т.е. задать условие, при котором точка остановки сработает. - -Это удобно, если остановка нужна только при определённом значении переменной или параметра функции. -
    • -
    -[/smart] - -## Остановиться и осмотреться - -Наша функция выполняется сразу при загрузке страницы, так что самый простой способ активировать отладчик JavaScript -- перезагрузить её. Итак, нажимаем [key F5] (Windows, Linux) или [key Cmd+R] (Mac). - -Если вы сделали всё, как описано выше, то выполнение прервётся как раз на 6й строке. - - - -Обратите внимание на информационные вкладки справа (отмечены стрелками). - -В них мы можем посмотреть текущее состояние: -
      -
    1. **`Watch Expressions` -- показывает текущие значения любых выражений.** - -Можно раскрыть эту вкладку, нажать мышью `+` на ней и ввести любое выражение. Отладчик будет отображать его значение на текущий момент, автоматически перевычисляя его при проходе по коду.
    2. -
    3. **`Call Stack` -- стек вызовов, все вложенные вызовы, которые привели к текущему месту кода.** - -На текущий момент видно, отладчик находится в функции `pow` (pow.js, строка 6), вызванной из анонимного кода (index.html, строка 13).
    4. -
    5. **`Scope Variables` -- переменные.** - -На текущий момент строка 6 ещё не выполнилась, поэтому `result` равен `undefined`. - -В `Local` показываются переменные функции: объявленные через `var` и параметры. Вы также можете там видеть ключевое слово `this`, если вы не знаете, что это такое -- ничего страшного, мы это обсудим позже, в следующих главах учебника. - -В `Global` -- глобальные переменные и функции. -
    6. -
    - -## Управление выполнением - -Пришло время, как говорят, "погонять" скрипт и "оттрейсить" (от англ. trace -- отслеживать) его работу. - -Обратим внимание на панель управления справа-сверху, в ней есть 6 кнопок: - -
    -
    -- продолжить выполнение, горячая клавиша [key F8].
    -
    Продолжает выполнения скрипта с текущего момента в обычном режиме. Если скрипт не встретит новых точек остановки, то в отладчик управление больше не вернётся. - -Нажмите на эту кнопку. - -Скрипт продолжится, далее, в 6й строке находится рекурсивный вызов функции `pow`, т.е. управление перейдёт в неё опять (с другими аргументами) и сработает точка остановки, вновь включая отладчик. - -При этом вы увидите, что выполнение стоит на той же строке, но в `Call Stack` появился новый вызов. - -Походите по стеку вверх-вниз -- вы увидите, что действительно аргументы разные. -
    -
    -- сделать шаг, не заходя внутрь функции, горячая клавиша [key F10].
    -
    Выполняет одну команду скрипта. Если в ней есть вызов функции -- то отладчик обходит его стороной, т.е. не переходит на код внутри. - -Эта кнопка очень удобна, если в текущей строке вызывается функция JS-фреймворка или какая-то другая, которая нас ну совсем не интересует. Тогда выполнение продолжится дальше, без захода в эту функцию, что нам и нужно. - -Обратим внимание, в данном случае эта кнопка при нажатии всё-таки перейдёт внутрь вложенного вызова `pow`, так как внутри `pow` находится брейкпойнт, а на включённых брейкпойнтах отладчик останавливается всегда. -
    -
    -- сделать шаг, горячая клавиша [key F11].
    -
    Выполняет одну команду скрипта и переходит к следующей. Если есть вложенный вызов, то заходит внутрь функции. - -Эта кнопка позволяет подробнейшим образом пройтись по очереди по командам скрипта. -
    -
    -- выполнять до выхода из текущей функции, горячая клавиша [key Shift+F11].
    -
    Выполняет команды до завершения текущей функции. - -Эта кнопка очень удобна в случае, если мы нечаянно вошли во вложенный вызов, который нам не интересен -- чтобы быстро из него выйти. -
    -
    -- отключить/включить все точки остановки.
    -
    Эта кнопка никак не двигает нас по коду, она позволяет временно отключить все точки остановки в файле. -
    -
    -- включить/отключить автоматическую остановку при ошибке.
    -
    Эта кнопка -- одна из самых важных. - -Нажмите её несколько раз. В старых версиях Chrome у неё три режима -- нужен фиолетовый, в новых -- два, тогда достаточно синего. - -Когда она включена, то при ошибке в коде он автоматически остановится и мы сможем посмотреть в отладчике текущие значения переменных, при желании выполнить команды и выяснить, как так получилось. -
    -
    - -**Процесс отладки заключается в том, что мы останавливаем скрипт, смотрим, что с переменными, переходим дальше и ищем, где поведение отклоняется от правильного.** - -[smart header="Continue to here"] -Правый клик на номер строки открывает контекстное меню, в котором можно запустить выполнение кода до неё (Continue to here). Это удобно, когда хочется сразу прыгнуть вперёд и breakpoint неохота ставить. -[/smart] - - - -## Консоль - -При отладке, кроме просмотра переменных и передвижения по скрипту, бывает полезно запускать команды JavaScript. Для этого нужна консоль. - -В неё можно перейти, нажав кнопку "Console" вверху-справа, а можно и открыть в дополнение к отладчику, нажав на кнопку или клавишей [key ESC]. - -**Самая любимая команда разработчиков: `console.log(...)`.** - -Она пишет переданные ей аргументы в консоль, например: - -```js -//+ run -// результат будет виден в консоли -for (var i = 0; i < 5; i++) { - console.log("значение", i); -} -``` - -Полную информацию по специальным командам консоли вы можете получить на странице [Chrome Console API](https://developer.chrome.com/devtools/docs/console-api) и [Chrome CommandLine API](https://developer.chrome.com/devtools/docs/commandline-api). Почти все команды также действуют в Firebug (отладчик для браузера Firefox). - -Консоль поддерживают все браузеры, и, хотя IE10- поддерживает далеко не все функции, но `console.log` работает везде. Используйте его для вывода отладочной информации по ходу работы скрипта. - -## Ошибки - -Ошибки JavaScript выводятся в консоли. - -Например, прервите отладку -- для этого достаточно закрыть инструменты разрабтчика -- и откройте [страницу с ошибкой](error/index.html). - -Перейдите во вкладку Console инструментов разработчика ([key Ctrl+Shift+J] / [key Cmd+Shift+J]). - -В консоли вы увидите что-то подобное: - - -Красная строка -- это сообщение об ошибке. - -Если кликнуть на ссылке `pow.js` в консоли, справа в строке с ошибкой, то мы перейдём непосредственно к месту в скрипте, где возникла ошибка. - -Однако почему она возникла? - -Более подробно прояснить произошедшее нам поможет отладчик. Он может "заморозить" выполнение скрипта на момент ошибки и дать нам возможность посмотреть значения переменных и стека на тот момент. - -Для этого: -
      -
    1. Перейдите на вкладку Sources.
    2. -
    3. Включите остановку при ошибке, кликнув на кнопку
    4. -
    5. Перезагрузите страницу.
    6. -
    - -После перезагрузки страницы JavaScript-код запустится снова и отладчик остановит выполнение на строке с ошибкой: - - - -Можно посмотреть значения переменных. Открыть консоль и попробовать запустить что-то в ней. Поставить брейкпойнты раньше по коду и посмотреть, что привело к такой печальной картине, и так далее. - - -## Итого - -Отладчик позволяет: -
      -
    • Останавливаться на отмеченном месте (breakpoint) или по команде `debugger`.
    • -
    • Выполнять код -- по одной строке или до определённого места.
    • -
    • Смотреть переменные, выполнять команды в консоли и т.п.
    • -
    - -В этой главе кратко описаны возможности отладчика Google Chrome, относящиеся именно к работе с кодом. - -Пока что это всё, что нам надо, но, конечно, инструменты разработчика умеют много чего ещё. В частности, вкладка Elements -- позволяет работать со страницей (понадобится позже), Timeline -- смотреть, что именно делает браузер и сколько это у него занимает и т.п. - -Осваивать можно двумя путями: -
      -
    1. [Официальная документация](https://developer.chrome.com/devtools) (на англ.)
    2. -
    3. Кликать в разных местах и смотреть, что получается. Не забывать о клике правой кнопкой мыши.
    4. -
    - -Мы ещё вернёмся к отладчику позже, когда будем работать с HTML. -[head] - -[/head] diff --git a/1-js/3-writing-js/1-debugging-chrome/chrome_break_error.png b/1-js/3-writing-js/1-debugging-chrome/chrome_break_error.png deleted file mode 100644 index 95399c7bb6b72375fc019af4f3c7d62c86da2cf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26781 zcmV)9K*hg_P)Px%{ZLF)MgRZ*|0MwD=jZC`>gML=?d|RV|G(?&?C|jL z>h%BG+S;nW|JBvitgNiBudn|k0ORB1_xASQ-roKE{QvOn|5Z2i_4RRaaqRW~uCA`p z(b4_?|H{hCsHmu=rKPa4vbD9f_xQg5|NgVHv&hKEw6wJU(8zmxd+zS;`1tsno0`GF z!FYIh|27kSeSNE|tMc;l`uX|b;Narw^`@q#>G1yKk+}xt0qMfw= z`Y;UT?)b~f!@iG(VPRsYsHgw=_o}O{va+(t%EXtJlGxeV|F^2$CVp1|Lo}U z^11o@{QpBCR8Uj@JQ|&zpa1sqkdTkEs;2)g2~%2P!^FnU*Wmw0C;x3zx3{FxR@0mU5!|4%WgxAx>yIZrq%;@s2!r07iyy)WE-P*3Z(BZ|kox#4l zaGvjunWdk&&+j4tVop7fr@lELAF#;Tc41Nfuc5vx8Esxv|DKHI=H>s3cD}W&X>)-8 zcwn$4p853e`tj!P<=ENHs1Xhk)t$_DgOP@LYbrHRt+>S5>G+q2c8!8{NJ2pK@$2F0 zxR#``@7>dtt;YTPyQrVt_v-cH@cw~sTl@XLw7#bIF<*RGPm*kVqnJ~@G> z?pA!|c2Cu*bC5DWMbQ8NAOJ~3K~#9!?3mq4Bgq!Pmx@a+l947aVM9B!u)WO1$Oz5Q z1Mxu`?!5_CUK)wm0U7f_h2TRE+W3^96G0Neo5@_kuLR{P8Dg&>Ve;0*h%SgPKE!AL zg!voxROiEV5}lb{FUZA1y3?uZbE@jpug`9*Fk;-cz zbjZoupX5m%rSQ%nAk>Tcp5#d$rJ(*tOsHVzg+C#@U3i+<$3qy%|1Y67ubuyX@!FmU zeLUi}+1w9H=wD_20fk|m{qFCUekaR3f$>-(DB}@DKZEWFt_}GfLJ{JVNxqj(-4w!q zKH4{LUwg6D1n*+KRQjoSzgbupZ*oCj&qgu2zc)QRM@<<%K>xFxW_Fj^E%$Z!>offq zrtUrf1(T;cYMm3T{iP%g+t~?cXQkk^HN`7@JE4dfa7dD4pc{H7>2x}6!hSZ4zT3Hm zzReBA_ErME)14?E3N-5YH!>YS(mDO&jnDSYBER8VJqGdeJ+eMZtev8S_n!C-+BP%W zXzW_ddcA#-jUc*DOLz!I`#U;~BJYDJ2^~hgNf|qEvHkbX%B^1?4p8^dAdI#NTL)># z`Cf87i%L>-G%CICKoof$VpAOV?J_$EW&9~61s{KBow`jyT%rnyHeu@|Z9}U9InJL-4WLd!wfX5^-!PO=RO0K?%`nDAmvFrV(~`u|I;QV19r}6} zVMCq1jAy3;sF^kChv)0OGkxGmj7n6;J~GYve9kkn^H0wOJg}V4BrLt?&Bw7$T5mkF z(<63dMBtxiwW*(fVQKKFcUs_S8zo*qK&24aATCvJCume zTk&K;poAJmjDZUsTF;L4513Z8svCoA47EN;TGr@Fmle7N`Hv25-^Kvw1Q3dsE*A3Y zC*0L+qNrCmd8rU?^CQ#IzCkGJi%`Tn6hFck`4tD>xk|OUzgw|^*mhJc2XOw?sycPCBu(w2(q~bv1n_>v zqfYIX)^x=Yj9jbYGBOjITeeblizAL*oO~6WIak#zwYjEVf+zRR=w<@B zM_+J2U5#8&@W#$1Y3tPYIl4 z5lEaBuBFO!R06w^6WTR{&}?|-{X|r%gi+!Qy52e7yq2LoI^0`T)iQKS&pCpV*>Or} z-3S8}m9SasZ`)+fLMsXk`g{zYf(?aA-IISAq!(HWooodnCz1-S_p}01swoP%YHzI| z(5p17PKgjhmkRbPeWeoKHtgQ=ysu{#FrB!TABR-wLMUyDY9`z$w9u6g(-I9nAfiYZ zRmB0p-8j&i*BQePK=4$fQF@p;6%|2>mOmSnNZ{!9$}b~VHfH}Xi`eabm_?{ zDT%sc=r2ACAQp+I&$Ri4O+6>Z;ZoA!d^~neb}TpaS2eJzr(Qa1xzI)jp=B)=2KD;O zwxTY2;<1HQJvRO&w|qn@CnQ5{Zk>WB&&h}SE@wpMICfSe{a8zf zVd1=$$mL=!S1DH8=8m!kYi-Wx(Hbd-v~*xiuf7a`&bHDtlGkGXf|<}A+X=a}%#!jo zxl9zR{*6GXM#|^f*7zp*WQA+-2pD6FdU+$;-`k3@TgaU0mw2xj8;5IQUrUGL`r+bn z%w5ypWu1oIHbQU6GCc;Ny_O%zRGf}F9mjtgM*Ht{;v@F&elaJdH4G|4T4`t;a^A9 zz$W=%y&;E|S~YM+F2;)K@C_}Ye#uxDuW}c5Y}%)5hv)kGP4ne(c=2Pc8ayI!#SVaP zQ2965#IV+{Nw(fM&vTb7%dWM!p1L@Qr(N6`SqD0~B}!;+mz&jNfaGT_J!n+K{vp%X zpL_bd35|vG+Wh!7xy+M!ZjCIr2;G8;xfv}cFF_h@A8%D6X*xc4l97%DwKj+ zgHYir_un7)2_7NFf(J_LI-A*4j@U4&-5HaE@k zH#%&}VeWE48c`{sHCkc>NK2hijJAK*S4=S!2%U-Nu5Moj^?g!^SCm5h1Knd$Rk~He zo4USY1PIjcA3bn^$iH6eD0PIL%&?bv`bzkJF?3)sp$$K>jy_V#9Ei@VAS7( z&^c>FJG8?5ZtHOFQf>)7go-&>e^7X7B6P(u;WbhtwL%Xn#&@02hLOD!LMmZXKI zQfm^L6G_I{=Qm;~gh_~)&mqh~#DP$`&aTlInwBAk&T}$1sl^5cUbtk}Xi;D1?uemt z)_j9dl7T}Nb4#ejAan}~`Ofhg#|t2IYr(otF53yM8$qRmWAe$w^;{xO$y$+pJ~zUV zbA1Qaw#D+rAoSx+lTdx#f-HAffpe1f7Its?I?eD9{sl-`)>aHXwAAh1DuB6+0G&l` zezZVy7>%9iAKD5x$-2|$6doK<+}FJig+1E)VVdP_Hk#$5!=BD8f5%y#8F35^IYyY? z|27Hrf18v)*g4;qHnKI2he?J=h%!6EhK^$^+mWPBNN;DC369V*_F5$~u#~7c1! z1hFN0E51_NMC?^z+sX>Pww9JPcCl3`;==ACw#5p&`=&2?|Bj3A`{q7pW@2WNnHX(T zy_b2+{5&%!XU=@`JOb#e)l;0(EfaZFe&W%kQ z)dl#F);??$E>8Z@^=x%xo_`OX=#{a%&?-(}(+O2RY;5ucKeRLP_qMS&(beQ^@7TiA z!Q}i8FE{4SEnjBn+*oq6u_d>hoULnnyPl|f2lU$bp?N}IjDveX_g^v-`fPRK0Uf2x zeyF5}Xr6(~l3Ugq2c1wolk0K#v6z+jAAl0H5F49xP8q+$LRZ%(Xk42*7VZ1!q?C=hzzujMP5`|^r1Gb02>4a{uSeRcKqL zCf>otFH9cV_FodL@)uuwvYp%6N4yGR2{Yfdwv~P{{u&-~ zZX8`SAw5BxpP?|xsgd-=?f3IB54O0Sgi5f-cJNfL=xUnrat?jMJNZp&s3fQxjLjSN~lb$ zCU^PF+UxJ|VVJMOkJ*fRO1#fUcxi;FIdnjw+&IC{Lx+l0{2mUPCv=1cKQM}Ax;*Ge zpm>b9z;FViP(}BnA5nJqVl1oX!C@RqfFlL4f;>HH#+=-x#zUJ>g!4j2V)dulWTGN`MvsKv5_Ho$>kA zVi6PxE;z%=oT z$FDKFad|B*AFnr`+a0OGcE^+`3XQ1gTYc?E8$*)1&R?dDDVe|2yy$zSCvC@k%o!OU zqV%ppim|@*CpKqUCYM67u-##IL%m^EvnGu7Xvi2VuIJB)D3Ur}P-jl~isGRjf97I1 zibl~pR9~R{kS9jA__2M=zLS`6^w1~9Xyfu(|2|D0mv`(-%w59D%^dN!QC#HW#Rx~W znd!?jUBDV66GPN~2nCPy@aN#==Qi!nviZ49jvYR~>g>Bt!dmkUSOcI_+xsKba|9-d zI`c#S4~+Er$h}bpK-2pr^a$9&=Gc?Y9Qz}tqkGfE$A`AJN6Pr2KI}-Eha(R1@08Ho zDaZb&4Bj+>=8##LN+|7j%(26?Eb2j6C(%G?BH-8&vy@W>yVle0YLR`89Vw&QDW?*2 zlTj;AhVWwZewt$;;f@{LLVPnHI!fg^#KMF)l~CMUY#x^R6k|PJ#|~^bf0DV`RH%u-9ni{Ddr@^)m(aZ!+T*KmArq!-u8FDk1qk($ zrl2?J#)+n{T?ebIjWITG%fZOe3MHM7hh=CLY4Q;3?XR zP$U&0?K8lc9tOA9c`weUQmj?>0O+J{I-=FnP)>+Y92M06lSYn;2q8y9tEZtjaZJ!h z7lc}Y7mjH^XDt6Q5Q@h>E`5x}c5d1>#kkks-_~-PwUq>12#5i}o*)*ISxe>RiDoZCcL)MTPayW!+n9Ni{Xlu>i8XOHhkSq{&e7@6O$HSsl7OxNl zgFd*4(51)z(m85*8w=N}o^>q22H1jD)tHY1LPbhVH4Mbp%FvaBWXr5TQAq zVA02l(8AR1N)4M*Lj%8O=iQn^%0X@tEV z&iwVLWRpubZ!Vz)_F{OIHB=>32qb9mKMaI^R!)8p2u#- z@45c$yyyD8?OUDD-|j>*S9L-o37$_xNJm2}(NLamkAKJT`ymu$^rw>d2kO>C4%gHS z1Ae!J_gwxXy+tJ9aSSVJ2b-usEI{An?j8^+Kyc8p*V zQf#R79f#;nI#h;$OdvyA6B?(&Vr?#^0osD$hp(aFhsro^BJ_pJHF(*-3QS(Pyz=Aa zXzEU1R9tcCg#P~Tq4}$Ne~C{7g9+a0%U9}$Hu?7Dhkm?S8oHOhOFbk)WLOl#BohRR z61-*HQYag)6ez)3T7y)ln2>`SpgqLiJ*DbvC?DlRroKEPv~^~{w>sP4dNQ=~=ZJXU zCyLO>*ViLLzjyumNWAq=6-q1-p{Pg#b2PNVzC2dkmoG=?($1(=yaiaW!dWSM}zWipC3MVrL{eO#XcM^+GRs;-6(BQA&0B$kko&|89yAbXH_V(JydHe)suBJv?2`+mBd3mjGL$7BjF_x z`_Y}71wL^@p9ddCio*5xbGSDou~t)nyrE`Lz-HTK-Zq&dwWKzDaoW9l=WeGIZ`0BPwe~Un(OwvzP|a1hHnP@esV3s(!F)-EFyHVudnZ|*2s_vT{EVZam5eF*w2^tAs6$gy9)|79Kjio2 z-GfbWDQFf?7H8K&5|c#~NQa3?5GBA>6qfuly9$f#DeZY*{z!0N{?y?UhmUYLqCIf- z-%g$*!uY((tHQlFDG9SPGBdIx&+-vZpHOC=lk#e0s3KHuHueVfpZ{KlV7%og#4 z&cBPWqh!iDMi0dH<@f2^6dxA)7r&El)21`=dDH5v{2uuB*lg}hC=l=Dc@pV#{we+0 z-Td;PhKEum`fN8l#6MIjl?tW22zf%ulBx&{l5Ll6Q!(GB{VIli`iBa0@}}$5K^+=$ zAH$g3q*VhwM0#BK53uPP!nm|uom3;60H0ciO1H)#e57yFe^nI2|6UYG1VROWLBDW2 zakCB;?x;g|umB>R=ZLP@?urqfh0iwMaD+Yz_ozjZctw=De-T|t6vt%$l6WPjLb{Cz z6jL?`w zAT(f(5-~!z6InQ+IDzkWH5}Vx_xU-yv`Eekd+UmuF5JQn4xti3689%elLV3&p_@gT znej%(n;=!3vP2AwoyhkJG&7cOe0c z>{Be4BU0F4N0fcS*u>RSObq}S;7$SHUaWV<=c3?8E;KUO7UpoE(^?4FnrxV5vBn$f zYpz|3$JnSzf{mk;pr7bkD0&iRM$dNw;%9g{Am>6Yxng)dDq4g}1uyeL2z9MGM&K;J z;4lEsdun0Cu`=SpaR124$||+CKH^ySV*nnZ4t1@t=K@vu$@>0NWw{M=57sHm`%Jw9 z@T-hlF?a8e=mEapb&yoU=eyoO37KFq-Qun`(Uz}@*ZYQQYe%W zC0AiqRt<)iw4R@3wX3Pp3J23PXgof59?ey6Sy959dy@{Ls<_|het9p3sjm$vwb$Ttp<}kYt8B| z2Cl-%j7+H9O?g>w3{fI9K^8_RPI%s@N!Pu1pIn?BcEf0Klr;N7rZ z&|GSrwtsz~2o%}uLU$4k z<~OG<)ppU{UfQA=HxCyu)`|wR)tTyT$J&@TCzN)Dd(b@GYVLvE%zhCyLKDIW1qe(K zB$PjJb|<+KutQg1-oNC7HmicGlFkEnzY~m27=D{jfR+i>uXgX<)6<<`fzywg=dZUo z`Jo2Cl^)+j=)*eW@%?{SoYed=8loXT8KLnNoG(d5e1K5>XM;)ml)b z%F^=k8eG(^ykGWVgm2B^@lkUlo`n^@N>GRP8&l@%|Dfx)Rri*b&GpxJy|z<{Dgi<;#1UD{2(=)o+h>x5>g*@6-z zHH6U7UJH0KTn5N_Yv|%oSMIFX&l?W%r|U-#MNy6({oB9Dk0P=NhzG{VkXmKsQ}*_m>tqJeS7JyO9=Z&&NB$Sx2< zLaBSqq!^l~0YdRV-|CpRMv2gbIB||RN4i0%+{eDsSYA%{VGHh9?qhjGvnwI252uFD_DfQ!Ad%P zCq6{mJK41>s%sm98J*rnjl#;q3U?zcgO7z)skK{x%S*RcG}bP{uqLuI@;OFUpB zE~B>V`3d*sN2fct-_#7*mCzltY^@-#4gbE$V$q%l04M%>5dnJi(9Mg{kei3t-md=x z!#|Qxd2Z1+$lvyxqFnX`s6@z?lQ}u*%{i3hWj0*uga5F1{xMCYX&j$xC2bDxw)B@d z^xO;UmV)JOC?{@V*TnQL-2x4zw!kt?L9hX8ByA)}n?Mn|loL^?mTpB3A{!(Ii&z!U zO>jAtaHbm*!@+uqF(lq;BNy2}Sp5WU|V=VF@KoB2+uc>P8T< zaq&HWZb9N?3*i*%RY1@(>f(A_~5iCozPfm=wLE!uw|wp455Tcgs_tYj0l7g zB;ff7AK(1+1Sd2ewvZG~nk@s+!i!u&Q@EXi@z(^}fB_NB5Tr#XqU(f4)(>^G%rL?b zN}5CnJBdF@7(oJ_54?%JBuY(9JzPdC`~Y&&zWE6!G!C{9Nhbdx)HAI*;^BjbhhaRy z>%A=(4$eNY@uL$_{_jkg>p=v4g|U2p_*R}UiI8@Zz$GPof->Owz_%-|2C?ZFxd>8G z3&C{EZ6TaY^Z`z2#23&#O0P{|2+_V*gBBh?HSCCf@(|68j?h0BtpB2S(64ug(a?RG z0Y>`vZ2ECU49r*J4d(O)_yhN8HrKk~q<6==xKIC{M+C zC84dFfd+IktK2gCI4S0_jvX zbK!a?uS71uv^*WA)8nNna_kBhX;x~TI;9P-i`S7jdDLt;LKC7Tl*U{SB3R)FZR+aT zmi(#k)r1lzku)U88xk0rQ#F)@-w0+W7k+FQ-#veFpm1edh(vK$8XH0lX01Wmsnc;4 zN=T>@5UOhCf_08JqeLz*(FwQ$o>mP@3~lg z+YqLe_nSn5ydgNaH@Y_?96I6oSP2_`R#w(7PN*&9Z_BojyASR)_BQ^I@+JtShZ5SX z>V#cRl{|z{uFhGfl8*;UF|$gkhZXcr9nV}s5{hMD7*+yW`QU792sJIALbR#+96H_Q zE<>9(jS`A!qA~o1`)jNGCaC`U(%q$f5rQ{3d;6`auUIA%hY~8x`Lzth2L)SmRwp!Q zUOsC_q>+`kV=b{OWb>@D1Nf5p5b!xN()eJ<>&LFV1EGX^RFJzml`VwO8gnNA)3Z#d z(yIi$P{hFFHP`8Neht;yO4OUZ^I^ud9wUD15#tPgQQvwxK=4BUHr=Xln&^X+Z? zq4Hy>Fkgr=n?z>;UMQU|goHW>T+tK8na{Q_S7V}N0h3{3n(}cH=r9B7nV8n%y>Km` zcr=0u7iR}u7zaLu!W@??N9cbmA^yQkpYCyK($h7SE=^7#9RZGf8Xqq%MqFzVk2xZIWX!?(i!Xi-Aylo!m8z)=pFXvShwOxq43d=H~qEy)yc>2(aqT#N|uG%k4 zM^VScrt1eADvHjfHPs();G=-D0d#+P8Eo`V+$ybhkD`OKwSY#z>lDADsAu|SZCTP+ z#_o+>TMBP30n6A7Are@gK%{Xb%^N~ zTV@g>BGlsZEi70PEei`iOXB^diTNcT$bnU#zl_|%&*2l0|8_Ak@%FcrGiX`5*GTXQ z2<;6C3VI{{I7EriTQLsxjxD{4(AdWtBh=r@Gtna*#xoT~9ewtFMJIEvAIu^M1?Zs^ zLd(wpQDs`M8;#v|NGN~s0?<%MsPP1f=!*(=QT-Pd`bt+&VoMBA_G7bRAlmzKCL^_wnMpOz84R ziHV-NRav>TAmYojKN)PpvFJz&crX1rR!YuVV_G0pCUtYWW1c zxVJkHOHcy226cq?umZWBzU_iMMI4o|vxwsjp#w#l3rfUGLP0Ot^sk8**2jR$rr8(x zHIh(x55CUM+S{L)-+ZLwx0{lZKpg(B$3?KK2LD*Ys7Fz_y^l z!{dF>ch_)d=3C4R>kUpJ=IU0=T>YbE60|uTko8dcg?K&U6w4!mUu!f{spdkFz#Br( zX6=^3)Df=;wSw0d6aBOO{mTipQhu{3v*X9F>fw`kLwzhSDLtsKbSjt$rL5S)$0f)h zc9oD3R2=mF5DuIwU>p>*JWg{=CXfpTSatS zcm9Sz?eXg~GMLK<#TayYWF*6zeR-rsAx5Qx4Qn72jO5lwFgBWDv0cZ4=Q z_}+lO9bBY5mN)j5CdigcSbk&W;K)-KYW%m?ghEfCh#wS$daVJ)e{bV`E$J@$Wy|oM zGe>sI<#MT)t4)vkA%&n51u+tQ?*~Cq)8mPW{>M$WdsguJ;<4j#{qlQ=ruFyEgg%*j z_nz!VZy1e~g-xT;oAsp|t~zCWx#%sS#WmTYs?o&IA`}Vsq^DK-PzHyUg-=MlS#7dC z2kRp%{=X*p)?~HfW4@KR<+PCB1mh$y$R9jJ{gO9N7Uy2SwJnG?p1<{))UjjlY2JgSjiOwoDc6hx|}?>1JdoZ2xWL6(S4^aY6@< zYEEPB+{pjv_}u4fhIj=g$nG%o0|*w|S7$03;gidVA6g%5_gxag51 zxbRZs0s)6JLT4geF6NYDU!{{sB#CLmV4N<4mz*3SxC_MY6Ojz*$X1=Q9x#k&%XHM{ zghfP`)?6H2+$>A4qQtIUCRP+Vd8l@Uv}5vis1m9l)3_&;cCO=7 zKdf_$c?w~;F2I$Zj=vB}PEQ8n+J#pW#$u@qlYI!6o1Tuj_>_uk z%F6bSlI&3(A%qKr@QGBB5x$MkVWL&@GK8e6TCug;1TWr%D$SQ%kbvaD9KlWZIib8}Q)!_Jt_?}XaTA=~5n^|N zKqab5O{QiZ*{V~fiYYBDtD-iySwv`^^ME+! zp_Ze2+q)YqKVLeIB}H%m$>nu0uX(zw_rCg1Sjdj@BT-SS^`Te&5-Cv_O-}|<&c^Gi zyAnzh)#?(XAvOGH{LSGAvAaOB0`f8SNstvi8ZOI8p4=s z??Xush=WiBshny577~h7-mlKAyHZ&PZSd1w?I$iB59QS+tbC`^%{)|O`FqDte$8Iv z;}H;_?>j<^H}EY)q_h?hr!#IimKUa`3duw|VjhZ+9uNni7zW)SkWdgbDX&68yD_{E zo#~hgWkSJl!a!Cg^e;D0JoNW*=6t>{GT|Vh|NIOPYRcchx6~Fkua)USc*1SpMhVT3 zO38d;5X%p;+4~+|w0S@rk7CLXgltcuM&GwvA*ewXHShX$U_hymG_qq4DvK_0aouu*#8`@PL@BTfaN` z4J7o=jJia9SBvda_qHBZm+Z*w)mDN_-(-N><<$ly_Wwv|@QBZgrMKW^4^*`Q{IgXt zc%=o_h6$w{1c#kvC*-l1HV+7NZH(Y2i0K9BZj=dzJQlm*Y!*90z-C}0Y&J&^Z;yzX zA=`&~s8$m+gmQDma3Z>CQ&|-+K!22%sKTq&Jdg72>5R5Vg1IIplly2Gu@~>j8xkUf zM(kE76xvWAlqv2bDt;CAG-n4w&Eqn>;@8)^#mw*tw|*nkESF2A6l&90B*nZZw}s34ZkiWe@(0!(P>o@;rm-1Szg*?KJ{EJ8x58$t()KH8~i z4SqtwM3f;w6~ej*POrD(SKOAZVG;Vs9id6NNtUC74M9&REcrzj z=cNe0JiM^9^mQP#w6t*eOQ8adiik~LXVt{5+dc`4&=#rt)u!pOP#~1gOGYADc?#k7 zZCm5^1wwJ#wrv+G@>r3`dULbFgnB`!IYC@0cUv_vxMreUfGC=fB0O+ldmwb+fG{Ni z1%PtboB09={WvT_?g)j|YUD*qBm@Yh!F*GgwjZCM2*})Ckr0oz{D-~s4@qn9*$DQ(HmOc1ao4q3%V^%ZGMbiFCX=Yy1{Rsj zQ^|QGnYNzHqL48{)s$FL_g zt%dwvO%Q;vbYUWBhp1}sN7bRRwMxdkmTtE$HF;xPBQ#c)BxvqsGEL?F&=7sk1}*C6 zf}bcDQ*o5b-RSOou?*brMiakS=>F?CwlZV(5DNFAN`ur6Sv#Pm@?MlK z@4%9fRY#Y@*+eKT1Z;9KLSZdUN|KS-GMXEPVL&KZs*@O4FieJF7MJEtL#XIMdnr$7 zCLlDtS__3&D?@8(3a)CQ`e@Txy5nl-Cbsk z&Vc`b8^3fBz?X`d2KFKe^wPxrFXgFY5Q!bwP7xXzl{fE>O2| zmKapJ-@fF9vq>O^%K0iA*p{=crR*7l@T9er2TFI9oZ{B&tQ4u6%;%S~0l`s1ONa=) zcU=Rwj}nY2t+>{atv4t=5{ZBvAT&S~CGKjyG{iV#ynX22 z6?~>Ka#j%v2PHBYNm|F1kw|V>D|7QyYB(s9144N!l1yILrY37;GMYSoKQWUDftJ=7OP^KSWpQ|E4Xf)~~RyHGJ303TRvVc%3U2G%Q=@@jeQ&?QA ztLUM$F`QmSb`cu1d8?wS?WfyFHh%JyV%xPE;+E2=jM#m*;__{90HK?kE&@Ugrr{Zb z)aZA2SUugGIm@uk(r?5nsgETnr~-D&@?-T-!AUiyczb5nbH!^Jj@MD|wHdn2UR|Ql z?xrpG7q(6gTRm5duO|B+KD&#?n&$C*El(~D>?AZEtxv4K|EmkMsvhEv{}1lWG(xL( zKG~{XlqwWTVes(uLN`UBP{2G&G4{$bLSgdm-&mojqmUJ;KL{bA&U+e-rj4k#3EA+0 zmeI>I#dDcka|CLNCXN09QS3471kCnG(cLA+Wqp3FDv*~ZCdC1+9->I8R-leJPvK;K@i z>?JjVY)VOynFDUMM|=L2F9tb@e65q+$;Bqe!L~ZpWV^Cra zl=WheYjS9&B{aSy{NWRd906k}oYw)S4xG@OVj?7zrUl~eZ5D_iB+fWHNp=&;g6ndM zim=CC-q4`Av&Wfq%B{ecwUZoqLivrAIYre$w4#G^CeNw~+6f4ac}4u;Kv)c|gk5jK z5sq@x2=z$l(Q6{*=4K$A%(-_vNd_A_z96BM%)*>7F&mpp2p!CZcA_gP! z=FLn`XwQw&GieCj^aVnZbri(VH<1to%JqngFoy2gPLjcfjvS$fC%bSUi730ddGz;m zgo;`l+K9)LqFxbtAnF_ugk7M)q}=dr^O3BqHbUVIbpLje3^sJ+2tA-+$&7_bEN({s z725UV(I^VGw%0GE!L)=HIIHuC35|J05X?Hl!Se2FsmkUf)^Tgp8@JAEVnXYYPr5?S{E zfDi3i+KD}fe!%*$?LE76_hNOV+tIbf0>f?D!h#S}+#oC!M4W+Hl-@;}pe6WYO6a5; zbu|=Z7UIxA+lBEqx{KS3>Ba3uukN34|AzaFw$<+0u1DB&b?!b7XgWSRP4nq_p7Htd z70eVp;`Pk#CqQ^L0eoA$#LCbWHcGhZ7c5C6V-MH`|5k1!k5`0-iZMoX87i^S17{l4 z6#B`UBR`Km2q8I*6`B%4CD-hmm_Qs*OwnU6P#*hP0+*anlE~0|F`n3VlH3dc03ZNK zL_t)JktI6uWOEa?KmimA?ETIv);MS_F*Swm?#*3W$NsRm8k}}D$ihgiNxHJd=!@|QSxz5G2|nw|iZ{kDK9547>REl56YL}~bL5mPT1)7z z&t$Y6_g>cWUH@9sB07y08i8eK3I|Clx8${W?&>U(tK{(&om|e5_@5PWE)7Q6=wd04 zw<~gDEpHl71c14W57`C=^0nHbgY&k9b@TPHO&fn`yl#|g3-zR5cvITqTHx-Pi|j4D zPK4l1a^E$+JPhH*cCYug~?Ie`kpk2u}lr z#_h9Wovxjo)x&eFg2jyXs;H4nQmfQo*s8Lt>g|`GH$8mOU%pn$AHAaz0O4tzP-mV1 zU+TgBMn{eeCQbT#+qP?Kj%@scM06S`RQs63zr}Q;&~4kxPV@CuaWd#isjkI7X?nFje0|N4w{KRUpIA) zUUjPXEIk=Hp03pn-5s%+Y)B{)`bU(IV&6}X=96t>d(q3H^FyI5hKs6oEk8N+z??85V@hEmQBDL{6M>_8N zv;6x~c64ATL-&O(La-M(Eo&LCzLT zOlK(C?2QfYCouOaylqKr_E^smOJW(?!K$#ob1U+Rk}TjBL%c$vV-apabU9OGhm&Vy z&07A~iMCeMr_@YBX=1GCQl7>LY(t!le5*jgTS98%d5)mX4SJhXV}IjXirK8$W)oLI zfMq-E7b0k}MABpeE znD=3N+HJ^v*yo7D19B{q)BM`|Z+d!t63cL^B?XCuN>HdK>}q>McVpWW^TDf&wdr(Q zlA9uapM%#%3i7bD)BU!Dixt)jzuIC32kDb-)cfakx(QQ zB_tFH{eKgR=6e2)xt>U9bgFw{vBU`hwAf#QR{!ZxcSFSl?A53?~09#gf^K_(7Eund@B3>@f%BNwf^&$?nmq0 z!O+fC6dhnZ`RvtOk@V;0FEXj`J`ccmKQm_2NT}q5ey7NPt%xz>YjpgJfta)^HQsV| z@>!_&1D33_6m5q>KgK`?9~6oMB8h}bPN-6s2aCo5MVtqZvp>jL2FLH(6x^`@_R7x{TzUzfX84NUywlGn z7EH1P4~F^`^1PUx2cz)zlV6b#&pR+1Ty%OaFMvmRVaRxFW8r5G85Q#Q#95F%R{h9; z#UJI0I0-tlbDQjm0Fst;eeKp2mfZGo{m!)VEc?)z57`pmv(ZjPevcI!43no@Wm#Om z$pwZ^J!P3LTcQOh^e0CAKNN-DH_CQUEiW;lAZbklrLAlW<_P!d8t3)!N~f#rr*cGO z)x{ZN6W)~2TZrjTgY0I|%F2VeP|2DdrxLi^8YSFTvVGrEE?0!k8C=Knniqw#w_j&;Mp0;tpDd*_oB)MR=xAe^1S|VuSquPd zhZ0ceNFGeWN8@qg6QSZgao-sQNT{@gLOeie(rpEyP!}(f6Ss)SA|9RyyZBKmA9j(q zPZK~4QafxocUW^3a~DF@W&>3%nQotofxs_>dUKV$lz4em*$I4ir{SCcNhJCo?6>FP@coy>`)-jc~l`c@%CJh5Bf|r6Lqmh1yA6y%^?5wN|f6BB2tj z<)cJ+Eih%c6#5I5CSDaTg|?nq3<;<&Q3<2mW;maxP6!aL3WYxam@ow^m+2Qmh1RpG z&`MtMTKc00du2qoIxP|-a+%Nk@W3|lU1C6m-2yu^d8462Tq0*Ik=rL zXYoX_CaW1683}E+E2TC_spw)xf(gOxsuYS2Lu&R1 zC`%LyYk9)Fy7nLT&M>r%^9;b}bXMyza2wqvq8SW{?Qk^&F|G%y!DBhrj%H&;Jg_xxq$oafiSnwq-4el~f1<7^U|e*5m#jiJGRem?YrukW8dJa-@N zOs3G&lz%vPYUSw4xtEVlOd{kEP`%Eb`urC#`bVJq z;T_MbD>vbF=W=^>()rfYkv&)J-Wf=q1owaNQPtUc-QmGcW-;} zH$wJn=)&~$7zDr2^f?G><007V_|^#K8VliXAZ=ZkG6ZiS{DgP(9Og+B1VbCwR&IJ6 zLLKQv=+N7jT3^Ams?*Me`YS8n`s%0I?-}a$P-RayUC*~?_WbmY^UD!O`XIE|k3oL? z-uQP!iN_(-k*6p0IemKalL04y?|Ble_-S0z>e?b>YDy2}4^e<{D zp}8GG|2u@z8EIhHk^M?UjHREN(9onKmdyHJ--FN*P8k>;aAf~7JV5DB_lS-oKl%Ba zj#zSQFG4@qksLk`%&4M2)&D$uxb!iYEjlw|SxeK8TL&ynz?|zQ!d2d6e=|Z;|=mgW+PDRkY(&nhU1wJzh!aRoT zG52f7Q4k#%xcJ%f-G?3Js6%KkLJz$kK&4dtc`FeM1%@~G&J1Z)?}d1tQWT2r(i2xx zt!)jRJ>}jjZeT8`Z9RPWO;a9%Z0+o%bXrSqg53M~8VaJAQ7A{hdbWhtyw4mL@8eTe zg{L!8_0|qR=*SB%-@xaX?-E1yl{CADp}w@flMotJWw*xf>25K~^q3(p7E^TG*X;lb zD%m1bLf7}b*?O?Bu-ujfOYXL00S8eKlV9u+#u0yM< zbuZY>wd@-6{(2vX8fZ}08OuF=?1NB-OCU)xGDmZnA{0yvhoT6bPp9)df%jT1c*93? z48iEdOpI3TPifelVgY(&PNNGky9Crsj_5EC#*jZ`UTYba)gsO5 zB+>S%eVCfU?I!dz5bE1mSYErhOV*Hl)|R!4&1HTo)%Q!N!Ln?4`-uT4d-6c>O~}<; zMzYeii>(`rV7K11Tg@hOxms`Dvthr#>x|X;3GYD&J#_e52cf(oQ4|%R$hc@yQB%r8 zOAJ1KD#CH1j{1x377}d)GZaZA#Arqpo2ide%&2LCa!R41iW)DNW*}gig`lm)x5nA3 zyrQTog*Re^k5fuy%gAFDAVsMt^XgKGVM>ZdaH1I%)p)Bz6IIwyQcO__L}{gf+<^mu zp11-%rqrA;p`?ip^I$9nrywmRNZT;2L}4aXYx~qbOeR`#?Fe zWvl>0lG_KVLkAxtR4kG_UjjlUk!Iqm$@5~2a2EqWsALmrx1bG7njFnAMBL2a6c{(7 zaVD**Bu_kE8#vd4%E?MK3k`n3ZrDbI3-fhv8A5Sgz+(hZ2>UDLneap z6!o`P!~O{)%OVfTc!=;!2({snGEjj5m8d196eUha;m0NvxA02+}FU|99$$s+X(hb*L9rkbtx~Ca!i82 zrix-oCh`HxhTW0Y0x=XJCE5)((Ik0vVL^k&OBqBag)2x|1!p_V?a~1g z+J_1Abr3orogRGU*w%gsg%Emo2QL8hCRA8VE-jv{Ktu{}SCjRc0lWZe2+c-0jQ$DP zFv_ba(1MP@`g2RohPp8i)UYS!Cjhn+5Z$aXM)*Vp|Jn8$03OVS_a-W=4(GQNXIRUc!DtJ{p z*uDJVp*Qv*6x{~X2*VhuW&qE)NhP>g026Ap@Jc{Yln8w0S_X1-#3D2yrLB?ePthXO z)^gk9<(HJ^VU^j z6B@&-6e;UcBZ!PeD2XCr+x%`qEyIPjb4{N*4l^&&y9j-M@W|+s2(|0dRvo&$@b4Qh zy@nP5dJ}4d;X@aMay=QY7&ssSD+r3kFvPS5An01fB_6^O6d*afR&fk1&-hW$t7iY; zuRy%3AllKG3QXYwHT;LIEU^L@L3=1%ca*<46tBW0;ktJoaR)6Y1Ta|5&LopzK)Zng zG%hfamk^z^{&E?nIf>$E19^i|0HprfL06leOsFoVpe1Ie;e#S{sLRv{Ce&)-#b}D- zR8XdfVEd;Wc=_IJNO=bU?E2+f8-GDdwIp;U1s z=Jug;iusru5GrrEe`zB!Nvg!9_LsO^{{Gq#u|`sv5TU>T1b^_=`?N}qqTscr74ZC! zHX{T!5{42k=1(kM)!NY1VuAMMEesh4n*b`7BkV(l0E0IP9jgHzo1qY*F%e)B7-0?LJ4>Tt-;de zt7W$)n;@h_Z;sA6Xv2zYO@x3+?IN_X5x-7i$;lId)^f1t`Q!;e3Hl#tiX~k&2x!32}4WKd&3~e8xU$+RD#h>R}K~~28pS}%m^>Qy|37U z7%vB5PCz7?HpU#+sL95t`1#_yA~Xbq9-8q$0&A&oeLQE0qC#_dwj|ovU)@^a8Lh1& zW7O2Sj(H;XQ7NP~YHw?GG!BiniuQ{(t+3Cj{m0mx#nO7HTNST1ditU++wbjjjY_@Q z^%Wi$*j&&tG+OPCR(KBCBSR22N=c4w~$P0e$Vz z<@6dgl7zgxlH|ac#`HjLQwF{i(iUymb0tksATQEF1#!!Rm5WtcQ6mnMNHYz;No?`8VDmi%Jx42TZ^dKeXYUq!?1E7O+R<_lrMWH8LB zg4hf5ATke}pH{mv59*gN;Ua|)36zr9;i`5AgxXm`vuAKMyS~O-U7roXA*3YP+29M+ zp*}X5Ze1^tv5jSxS$imZcGgaJaE9vaF8dt#R&~8A6zYa-z%qw+r-p0ADUn5+Lf#V! zW!I^x{+iK{Ulyl!eFvw`g&kBgE>Y;Zv1jqKsx?&hIFO)wE<|=Yf?VN-`fC z+d~=Mo>Fd>Exm=%abg9i*D_V$!5bO+yBV)vU4tbRCSc5KVe4hGV1vilmZW(UPaIMz+aZOE-+j}c4ocR5*4$TMLVti1$uZ@$9u*6iJhFHHKKA7&OO@##qP&gJ z(8nKrR2%uz-c9xHJnZDDjwIGFQosF^2-4Bf=$$izXPfG~1ai61c+~3D6|h`VGObpH zLezUS!)!KZjo-h7hwqBrx?F`h4U&I)xa55hYWqMBt87SUn%VjXo)4{$-@^9VyLTs{ z_5=y78QuN|^wdR9f_cf&#nmizvsR^2N5V3 z&|U*iC?PIBdA2E$6??^ME&M0fj>_V`z`mhfNvP~tqVx7{|Cs`>nmYkgF^9={(eDP0 zq*5<$PZejGQL+$BAX6aFvJx_n2mgSUZqKuJbjnozPw_p6YW54 zU7t7k8j&rD_gFny-t0VL(Bw&_dI=-sqqP+937AM`9v&8zf>cU0T`ks}Tri;JXh2QL z^P!2JZ8C_Qt3~9o+FE<^H6mM)kiC{X>skG~NGt@WEv?k&NvIGoE0Ii-Nkv4e7p7)` z=g&$*11eP|pGHpbX=Dvg+?(rOqq}j*cZh6J$p2c=YHn{Do)1k?nWUVUD48)&f#?~Y zG0R}&#TiigMu#Iwp|ar{9R$V<>y%@yDEUf#XK-xqh?fTOb0c1d*ClDTxpYdDafUZEk=a z5A?nXMI+jqqdS!-NnCu6y$1_)){HcIj&3tXRT!IY@K&4+2<3^aM>{t8 zI@=9K{FQ3Z#1#H0ZfC(9e@X@jf7ZzCazZtNRD&o-=l&#f-@d}8&p$~@!g6508#geG z8cF5$9}(P$(22(lCmVj-gskx6%fR5m;N=*U*RL2~TQd$YF@0sX6AFl?8G5bGse*%F zWR~qONJ_#orE}u?yGE|x!Fz5gq3uR75hI#F=33xs?|!g-%-1{(zJ0j79Vuhld8C#n zU?`0jZ!^rq^fwGNV_#FOxp9*(B$r6&*8;2uLfI~4v|UIjK{P{Q&2{PujyrSkm_t%F z6>=IxA<8hM3g66rwoWKN^E)D$d?al!a6u07WB9?R`Ay9W4-V&#G&14B(x$(RG&5mG z{-?hnX-rGiHv`OM!|ia-;ru&aGUIm&4>wLd?O-o`ZO8K;{xX1sk}dS`!`WWQW6z&mcdxAd1Lu#dtP2~J|E<~g2s?l4Nr~Cg0KH!p|<%!;HS?@ zuK#^vy8q$%{xQC<;m+fR+h`KQKesh6JU-LW)pWe6|9iRbA8jM2hSx8joNOw&c>56$ zO1p%gUH|LxT}r4>!{?xOTX^glcm zzSq_)XTm>U|59=z@Y|#5v5tkuZHjwm6gR5w60biQxN!RHU2y*58-XiwU*H0>0E7zJ z%Z5hzc;E^U8m3*s_pUc;m|aRJGAiJery6t`Nm3G*JpE4jT+fuuP5JpvW^SoyqUXuw zjOnofu$0fn2AI=Th?*R%VeY-aNj8gOy3UUI8ve<2ohT{k2P7diLPBFMC(e$5mwz-( zyF920{M5W_3B~t_YWS&6xil$T5R+=hFI|o1@&)<%1?!8M3%_2p-aFI5FyUvHJLD~a zyGZE5Fxb$`r_5R9G;<%mc=B=wWK0)Ys;)>lLf0?l6zoTA7p7~l|HDq~|39H9<+&17 zQWBPTa$Yb>sIjcf$bJt~pNo!^oDmQA-w{n21_L*He{Fz(@_OU=*)iU5;AX~=Q|y}O zlYf7YEIWJpM+R6zQ@P9jr@g}s{{li6XqWIo@b&*|@BCldM&meMQXi6&9+V0eV)c&U zFzbrfRjJs*jp#v(DM;xmsW4L8LMZw}OQpXRt%AD=>e&jOinMG)K^z>#!rZ}$=%jbQ z+%Nru?s=Xx{i@rsjXBrn9rNW$p5%w*MFDIBmtna|JXQqlT^4UG(K+@%UvTjN3!iq9}_}=~=#fRM}bBmHv$x{EmSU}*vddSWq9=sj z8A7j7=CQjy`!*3m?+BrHs*}>E5Ne>`BYQvdfar_r5qF>TV6N}M>8 zA0WLPDtd@Kw38zGs${qi9+2#ulA;sP*SigXCi;p5^gni!V7wxxN@(S+ZUAaiJX99w zY87<@s8wiK-*B#*wp~B`k1Fjm5JGPvRDpyt*x*cWqgregfZDWW8^?i`6}5wMAM|Jd zh>d@OhmMZkYZF32r^^`91HIqqayKEPb=Yal?lor~rD;L{00kOJL_t(k+i5bn>(8*D z>o@82YANCie}F%rb-0O(R$cTuLdPS?8!zJcNvJf}CLY?y`vU@?Mnb%^iJ_Ey#L;wS zbz=flom8ErWKk4zb#*ViqA2Yp0j|MirFGEg#f|$zhPUVOaf#|ZbX0va6TR?s`tLtC z6Z-ff`g3~_O8I3I1LurK_EU`~E$ICX5&9~ZM3z@T|LmE9z~OEA5nV)1s749$XDbIf zb}E;IH7EeMtT+v-K`9X6ssauofY4DPHR6{On0zwSd1%+ukRK}a6ut3u`uYf8u&a~d znMt@U)%#1hXEZg{hf111cZS-6P(X!b4`zpzLyeKBO6W)_nK%EiZ9JF&`9;g%awX7Y zGM5R}1i9UJThJb1B$`^aSW00A61uQ>&gJ14aZL>r&rgiSWiIHtpEi~%{|8rV3F4tG zai}3Qm`)Fd44N9DZ!X0F>AdIO?tF1@bMEvqy)EW?+J{iVWHjRV6LcCa9_@96LXv{s zm7*oKoLQ3&%2Di&AaxQFb1GrnZ0s0$D_FRc4*an#kQLYSe{4QW!7=+z+U8fp?fJyS zek}G^IW~h`7$28-XmcFeHIjxJ>8c|%A{~#fCB8eA_qv~SOm-D)wu_Cqb|DnleMa7? za49%>qm#Oc(7j~Pdz6~rU|+@#F^l_`Ug=z|npu60<4!IT+lpr{qSKJjzg0qGx%h1C z@MGh_{hYu|_CB@6vF@JX_jBtv;VsC3MrRbI-w>m+fq0?#WqV zI^RDDPiK%vga)OYeezo+bhz$GsiW>msiT?Dz5YPJQ6qHW?0HTXK*kAD4|S39^J(s6 z8yEBCl>?TYDlNUQQVq)TNZhF4-)!jRV)sDtAvgck(MrD03gCJQx?VI43m|oGmDZ`W@E-W+;jhCN*7!PSArM>J7GT&Als!-D*X}M_PKa9SEiS z_|QWwExc-Jv8S~THlViFuNjZz9xZt7bhNK8wo^>@JJBIqQj1 z=KxeQLO2~%&BiNv`OM2wQhi!dHYw|sZYW&S?w~SOk4-F;^liFk diff --git a/1-js/3-writing-js/1-debugging-chrome/chrome_break_error@2x.png b/1-js/3-writing-js/1-debugging-chrome/chrome_break_error@2x.png deleted file mode 100755 index d9d576ecea40ffdfe2539814855b70b4ddba424b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45339 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 Fe*oA^w+;XR diff --git a/1-js/3-writing-js/1-debugging-chrome/chrome_sources_break.png b/1-js/3-writing-js/1-debugging-chrome/chrome_sources_break.png deleted file mode 100644 index ac8fb1ff5d4cd9c80a54dca1eafcb863c43d96c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26022 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 diff --git a/1-js/3-writing-js/1-debugging-chrome/chrome_sources_breakpoint.png b/1-js/3-writing-js/1-debugging-chrome/chrome_sources_breakpoint.png deleted file mode 100644 index 22fb9a5d575c660eae3f74027c05aad2ed7c0494..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21477 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 diff --git a/1-js/3-writing-js/1-debugging-chrome/chrome_sources_buttons.png b/1-js/3-writing-js/1-debugging-chrome/chrome_sources_buttons.png deleted file mode 100644 index 0f29946c3a774c94d8ae659046549b3a57aa5ab8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23153 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 diff --git a/1-js/3-writing-js/1-debugging-chrome/chrome_sources_buttons@2x.png b/1-js/3-writing-js/1-debugging-chrome/chrome_sources_buttons@2x.png deleted file mode 100755 index 7a16ea1c2656882b98bc4247e3206c16030a9ad4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40071 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 diff --git a/1-js/3-writing-js/1-debugging-chrome/console_error.png b/1-js/3-writing-js/1-debugging-chrome/console_error.png deleted file mode 100644 index ccf1b515a2bcd943ec3a4719f3225a55791499f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8726 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 diff --git a/1-js/3-writing-js/1-debugging-chrome/console_error@2x.png b/1-js/3-writing-js/1-debugging-chrome/console_error@2x.png deleted file mode 100755 index 4ab2fcea83e90ffce0743a3a3d9fa195308002ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13465 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 K$yEa1h5j#eNn!{9 diff --git a/1-js/3-writing-js/1-debugging-chrome/debugging.view/index.html b/1-js/3-writing-js/1-debugging-chrome/debugging.view/index.html deleted file mode 100755 index 246dd753..00000000 --- a/1-js/3-writing-js/1-debugging-chrome/debugging.view/index.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - Пример для отладчика. - - - - - - \ No newline at end of file diff --git a/1-js/3-writing-js/1-debugging-chrome/debugging.view/pow.js b/1-js/3-writing-js/1-debugging-chrome/debugging.view/pow.js deleted file mode 100755 index 8a9e30db..00000000 --- a/1-js/3-writing-js/1-debugging-chrome/debugging.view/pow.js +++ /dev/null @@ -1,8 +0,0 @@ -function pow(x, n) { - if (n == 1) { - return x; - } - - var result = x * pow(x, n - 1); - return result; -} \ No newline at end of file diff --git a/1-js/3-writing-js/1-debugging-chrome/error.view/index.html b/1-js/3-writing-js/1-debugging-chrome/error.view/index.html deleted file mode 100755 index 246dd753..00000000 --- a/1-js/3-writing-js/1-debugging-chrome/error.view/index.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - Пример для отладчика. - - - - - - \ No newline at end of file diff --git a/1-js/3-writing-js/1-debugging-chrome/error.view/pow.js b/1-js/3-writing-js/1-debugging-chrome/error.view/pow.js deleted file mode 100755 index 5939b71b..00000000 --- a/1-js/3-writing-js/1-debugging-chrome/error.view/pow.js +++ /dev/null @@ -1,8 +0,0 @@ -function pow(x, n) { - if (n == 1) { - return y; - } - - var result = x * pow(x, n - 1); - return result; -} \ No newline at end of file diff --git a/1-js/3-writing-js/1-debugging-chrome/manage1.png b/1-js/3-writing-js/1-debugging-chrome/manage1.png deleted file mode 100644 index f624a1fd83f6011db9513006b4d29d232ad93f8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 522 zcmV+l0`>igP)=HNO0GJSvLa4RL8Txikyc+lJtA*Jyk;UcYzjA6g=`P@;cP z!`x{3##0MJ8lLiN@OabM-4JUT5fUOT1WB-(hI==Sr(1A+T}VC=nF>k6aW;j)?Y!}9 z3$_a)y%GpvdcPB)ObRaNAP92V7|dni`Hu0h2=caRwYWto z7lXI*aOY~k5PpUfW=6l?r`c>KCrZ0OCad9+2?-1#X{HT!gj6aOYPDK2BtY}-oM(_; zuSdCDre3cz7!1zmJNg^xbUKtuB^r$e-h0gK{C|8=6j7~K|3CnK1J`)B8}DmDmjD0& M07*qoM6N<$g3}!2RsaA1 diff --git a/1-js/3-writing-js/1-debugging-chrome/manage1@2x.png b/1-js/3-writing-js/1-debugging-chrome/manage1@2x.png deleted file mode 100755 index 3f3c8116fcc047f6edacaaa50ec71a6acc437949..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmV;20eJq2P)=j-X~@9OL9>g@3B?CkCB?e6aG z@9*#L@bU2Q@bU5S(_Mjl00001bW%=J06^y0W&i*Hy-7qtR7l6|)XNrvAP@#%Oi1lY zcCova8t?yxA(jgrg#VnD&T2N_f%y*%V^6r)Xh!oF!%fxQ>Vg{{Z*xB*Oqq`J#R)Y+ z@ag7;8m(p-Z1e@GEQXC%@h(RVm4(v~S$LRU7G6f+CQ9!w&@9jDjhW<7sRGMweeE3L zH1nhC9^x=j`cNhI-g>h;O|q|uYYiG|cG@UYO;^~ywzQejx|LGGBt29|25D!Vfwt>aKQUiDLi&002ovPDHLkV1j#*$bA3+ diff --git a/1-js/3-writing-js/1-debugging-chrome/manage2.png b/1-js/3-writing-js/1-debugging-chrome/manage2.png deleted file mode 100644 index a038e31069ce977c485b68245e31c3b7235eb8f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmV+@0oVSCP)Yf zgA*_eh}7Hn?_Rxo{}xl~?c3`cr?yO4d*$t0G^w|bSH?M7T3Fi0EPePEMe6PSMkh;$ zfS3SBONYAqZ;_>*_1IZQExr2i+VU71yWVHWQcIn!(=UAZ`0>MsOKH|FtKPqQ36*+# zE5S12aA&-I{{iI8t&1?! u*|zQP(8BQThfiRk_itX|4BodiiZ1{~yTzM_F1Ks|0000XMfZ9l}H4DJhD=OG!{!f>g&+%nzg_ z*^im|3)(lcTh!(kbP1e;zPHX#X6C&empcA%P0Ymnt?4}$9^S_=z2mL87a=sYoXT}a zGv%l`9|?j0Ukk+%OnXx_=Zk!ROIC-OVhGv5V#s?s*xdVUA|*mLn!X!kUgo)2Ez~Kc z?aKsLp;~{_jWgog$CMI6%#Xt$L$SBMCXHamQk@c={mcm?fg066AL+C% zF?8O?#9(Ef68ZL@r0jv!t*dG)f8j7CwwXMIxGGDM%nL&f*g@>9x!unWlZ2n5R0HCN z9`G}y;Rri%gkNTA0U@RaaHLk`S^wB90xV zvN0oyd;G|(76_T)?TXz?XPUzpw7nbY@L1uq6etnS&9Y=pcb>Hd#W#4|VC4@scwJj* z$g=vcePGz7!A&I`R+`wVE4^71eVt+NHf6)kFx9geW9WT=3Bg~Pxj;Jpy<-@YyZ7Ii Y4}UuImF-iPN&o-=07*qoM6N<$g2z?fBLDyZ diff --git a/1-js/3-writing-js/1-debugging-chrome/manage3.png b/1-js/3-writing-js/1-debugging-chrome/manage3.png deleted file mode 100644 index 94bd7b31db3afdd9836453cf4f74cb7026381aab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^Qa~)q0VEh|%NHI8QVTs@978nDCs#BJ8wBWm{q{Cm zCg}Y8dzB5bul|1gb7$Z58%z1rkC`SPD#|@XXl>6Eq*+Stjfc(eW}Z`}EukDr$PHJV(X#`JpagLLn>YN;)=q!xSS?rKwMw(yuS{m37^E@p$!u-PViVl_dzpbfLiQ`wo%7t4R<9)AD7>WX+f*Mp^fhot6%9P8=o K=d#Wzp$Pz8SXSTw diff --git a/1-js/3-writing-js/1-debugging-chrome/manage4@2x.png b/1-js/3-writing-js/1-debugging-chrome/manage4@2x.png deleted file mode 100755 index d8758709abd5780b3a7be4f4b21c44e162a3a48c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmV|3L3<`6kucL0z}Hr4Y&aZXm{2OQ9CdclH7ohpsL;M4qf1%vV3x6=aIaA zNOGYwqP{1ixdZ5C8hW(A7_?6cQVpa&&?r2b%3!=ICoH<vn#F69mH+?%07*qoM6N<$ Ef(OxQvH$=8 diff --git a/1-js/3-writing-js/1-debugging-chrome/manage5.png b/1-js/3-writing-js/1-debugging-chrome/manage5.png deleted file mode 100644 index 55355c37db2193528deb67cf220d094010272cd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 347 zcmV-h0i^zkP)(%soK6)QH0RTKmdwG`2Sh=&SA5k;^R!4DKv=)vMalxU53utrQnZPa9v zzu=nCCe`FU?z0Rtvzu{Kllgmqm`2WR2b0Nrn5h_;L};l*wMGcTxK4vj>wdgo-+1FO zEbm4V&n%;lL-NlHvMfu*=6jh`^~J(QSTdkv0svI)?$Y_kDu7Vy;ebvkV<2g*{CM*; z#~91**l`l-FAH@0t_Yk!Yql68HBim;0D643W*$wg)jqIYYDcM7G(F+paA(~5M t?E~G>g!EdOd-9TB8IAkY58(O#=?Cw8v8gKW={f)a002ovPDHLkV1mUApN;?k diff --git a/1-js/3-writing-js/1-debugging-chrome/manage5@2x.png b/1-js/3-writing-js/1-debugging-chrome/manage5@2x.png deleted file mode 100755 index c08f8a6868106e59bc847963f864f9247616e714..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 zcmV+j0{8uiP)SP7xLWp`s+o-;G&`3B|?J(HbB zqg*&QQ>Xcz`8RXse=5K|D*iL$|AHCZbY^xKn|N_!ZsOcyqfU(9?QtGEabngP=X^oA zFjtit=@7z!c};0$RoBwx-j+z&D!SbDc}yc+81<$s9BF`3QY(w!%B;s&{Pbrgeh)BD z$~N)2l@fJVWf>ld4Fy?!3hxPEoL25NKm5R?6cpR^-r7fb$Uagmk&kB1B}`HIjLOx0 z=2&MjikU_@qVj2kLGLTe`d{r#b4ffk>9wICcUb83uU;*~>?;_h@`p-ybvW3Zjp;); zpze`VJhqPmE{hy z@}WjAtuJE6RMuWpmiHM$=%w-}>exhD@@VOU`X{kPd*`swWGHLAMO(k^emqGM#IS+X zTwvM04s_tV(NyYw0}R4}U}fYQDO=P#lz{}o{B0000< KMNUMnLSTY0Sn#_5 diff --git a/1-js/3-writing-js/1-debugging-chrome/manage6.png b/1-js/3-writing-js/1-debugging-chrome/manage6.png deleted file mode 100644 index cdd9bd0ef37cb1ad186c19541e2e0e280050ed22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmV&|^H>VfA_dMQuYss<%070|Z>_CLd6<~~%#(;1Y(m+Wl zM3`j&S=OAAIUxcd{!3{Jkfw9OBbTAIlv;Bcr%@TTJ#R%IrSD4_h{K~Cx7=9Q^8Q{; z2gTM7YImz>HeP#)6eqftw0M*%e{%AQzC7jY6I$~D-jSTE**3p9$N&HU07*qoM6N<$ Ef*U1c)&Kwi diff --git a/1-js/3-writing-js/1-debugging-chrome/manage6@2x.png b/1-js/3-writing-js/1-debugging-chrome/manage6@2x.png deleted file mode 100755 index 52dad975a7615194022ab4f721346c11118bfd3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234 zcmVc$2RE>y8TZsyWsNQ1{l@Qg})V1C_&_2;Q zM9cRCB4S&KPOlKj5}@fRA>yi3riW~C69($u8{O`%x+!A@i=(dE*b!#bMK~XpO0Cv- kW0|E3k9`1~m|gyaA728l{v1d8w*UYD07*qoM6N<$g4! \ No newline at end of file diff --git a/1-js/3-writing-js/2-coding-style/1-style-errors/solution.md b/1-js/3-writing-js/2-coding-style/1-style-errors/solution.md deleted file mode 100644 index e2473aa4..00000000 --- a/1-js/3-writing-js/2-coding-style/1-style-errors/solution.md +++ /dev/null @@ -1,51 +0,0 @@ -# Ответ - -Вы могли заметить следующие недостатки, сверху-вниз: - -```js -//+ no-beautify -function pow(x,n) // <- отсутствует пробел между аргументами -{ // <- фигурная скобка на отдельной строке - var result=1; // <- нет пробелов вокруг знака = - for(var i=0;i - - - -Не всё здесь однозначно, так что разберём эти правила подробнее. - -### Фигурные скобки - -Пишутся на той же строке, так называемый "египетский" стиль. Перед скобкой -- пробел. - - - - - -Если у вас уже есть опыт в разработке, и вы привыкли делать скобку на отдельной строке -- это тоже вариант. В конце концов, решать вам. Но в большинстве JavaScript-фреймворков стиль именно такой. - -Если условие и код достаточно короткие, например `if (cond) return null`, то запись в одну строку вполне читаема... Но, как правило, отдельная строка всё равно воспринимается лучше. - -### Длина строки - -Максимальную длину строки согласовывают в команде. Как правило, это либо `80`, либо `120` символов, в зависимости от того, какие мониторы у разработчиков. - -Более длинные строки необходимо разбивать для улучшения читаемости. - -### Отступы - -Отступы нужны двух типов: - -

      -
    • **Горизонтальный отступ, при вложенности -- два(или четыре) пробела.** - -Как правило, используются именно пробелы, т.к. они позволяют сделать более гибкие "конфигурации отступов", чем символ "Tab". - -Например, выровнять аргументы относительно открывающей скобки: -```js -//+ no-beautify -show("Строки" + - " выровнены" + - " строго" + - " одна под другой"); -``` -
    • -
    • **Вертикальный отступ, для лучшей разбивки кода -- перевод строки.** - -Используется, чтобы разделить логические блоки внутри одной функции. В примере разделены инициализация переменных, главный цикл и возвращение результата: - -```js -function pow(x, n) { - var result = 1; - // <-- - for (var i = 0; i < n; i++) { - result *= x; - } - // <-- - return result; -} -``` - -Вставляйте дополнительный перевод строки туда, где это сделает код более читаемым. Не должно быть более 9 строк кода подряд без вертикального отступа. -
    • -
    - -### Точка с запятой - -Точки с запятой нужно ставить, даже если их, казалось бы, можно пропустить. - -Есть языки, в которых точка с запятой не обязательна, и её там никто не ставит. В JavaScript перевод строки её заменяет, но лишь частично, поэтому лучше её ставить, как обсуждалось [ранее](#semicolon). - -## Именование - -Общее правило: -
      -
    • Имя переменной -- существительное.
    • -
    • Имя функции -- глагол или начинается с глагола. Бывает, что имена для краткости делают существительными, но глаголы понятнее.
    • -
    - -Для имён используется английский язык (не транслит) и верблюжья нотация. - -Более подробно -- читайте про [имена функций](#function-naming) и [имена переменных](#variable-naming). - -## Уровни вложенности - -Уровней вложенности должно быть немного. - -Например, [проверки в циклах можно делать через "continue"](#continue), чтобы не было дополнительного уровня `if(..) { ... }`: - -Вместо: - -```js -for (var i = 0; i < 10; i++) { - if (i подходит) { - ... // <- уровень вложенности 2 - } -} -``` - -Используйте: - -```js -for (var i = 0; i < 10; i++) { - if (i *!*не*/!* подходит) *!*continue*/!*; - ... // <- уровень вложенности 1 -} -``` - -Аналогичная ситуация -- с `if/else` и `return`. Следующие две конструкции идентичны. - -Первая: - -```js -function isEven(n) { // проверка чётности - if (n % 2 == 0) { - return true; -*!* - } else { - return false; - } -*/!* -} -``` - -Вторая: - -```js -function isEven(n) { // проверка чётности - if (n % 2 == 0) { - return true; - } - -*!* - return false; -*/!* -} -``` - -Если в блоке `if` идёт `return`, то `else` за ним не нужен. - -**Лучше быстро обработать простые случаи, вернуть результат, а дальше разбираться со сложным, без дополнительного уровня вложенности.** - -В случае с функцией `isEven` можно было бы поступить и проще: - -```js -function isEven(n) { // проверка чётности - return !(n % 2); -} -``` - -...Однако, если код `!(n % 2)` для вас менее очевиден чем предыдущий вариант, то стоит использовать предыдущий. - -Главное для нас -- не краткость кода, а его простота и читаемость. Совсем не всегда более короткий код проще для понимания, чем более развёрнутый. - -## Функции = Комментарии - -Функции должны быть небольшими. Если функция большая -- желательно разбить её на несколько. - -Этому правилу бывает сложно следовать, но оно стоит того. При чем же здесь комментарии? - -Вызов отдельной небольшой функции не только легче отлаживать и тестировать -- сам факт его наличия является *отличным комментарием*. - -Сравните, например, две функции `showPrimes(n)` для вывода простых чисел до `n`. - -Первый вариант использует метку: - -```js -function showPrimes(n) { - nextPrime: for (var i = 2; i < n; i++) { - - for (var j = 2; j < i; j++) { - if (i % j == 0) continue nextPrime; - } - - alert( i ); // простое - } -} -``` - -Второй вариант -- дополнительную функцию `isPrime(n)` для проверки на простоту: - -```js -function showPrimes(n) { - - for (var i = 2; i < n; i++) { - *!*if (!isPrime(i)) continue;*/!* - - alert(i); // простое - } -} - -function isPrime(n) { - for (var i = 2; i < n; i++) { - if ( n % i == 0) return false; - } - return true; -} -``` - -Второй вариант проще и понятнее, не правда ли? Вместо участка кода мы видим описание действия, которое там совершается (проверка `isPrime`). - -## Функции -- под кодом - -Есть два способа расположить функции, необходимые для выполнения кода. - -
      -
    1. Функции над кодом, который их использует: - -```js -// *!*объявить функции*/!* -function createElement() { - ... -} - -function setHandler(elem) { - ... -} - -function walkAround() { - ... -} - -// *!*код, использующий функции*/!* -var elem = createElement(); -setHandler(elem); -walkAround(); -``` - -
    2. -
    3. Сначала код, а функции внизу: - -```js -// *!*код, использующий функции*/!* -var elem = createElement(); -setHandler(elem); -walkAround(); - -// --- *!*функции*/!* --- - -function createElement() { - ... -} - -function setHandler(elem) { - ... -} - -function walkAround() { - ... -} -``` - -
    4. -
    - -...На самом деле существует еще третий "стиль", при котором функции хаотично разбросаны по коду, но это ведь не наш метод, да? - -**Как правило, лучше располагать функции под кодом, который их использует.** - -То есть, предпочтителен 2й способ. - -Дело в том, что при чтении такого кода мы хотим знать в первую очередь, *что он делает*, а уже затем *какие функции ему помогают.* Если первым идёт код, то это как раз дает необходимую информацию. Что же касается функций, то вполне возможно нам и не понадобится их читать, особенно если они названы адекватно и то, что они делают, понятно из названия. - -## Плохие комментарии - -В коде нужны комментарии. - -Сразу начну с того, каких комментариев быть почти не должно. - -**Должен быть минимум комментариев, которые отвечают на вопрос "что происходит в коде?"** - -Что интересно, в коде начинающих разработчиков обычно комментариев либо нет, либо они как раз такого типа: "что делается в этих строках". - -Серьёзно, хороший код и так понятен. - -Об этом замечательно выразился Р.Мартин в книге ["Чистый код"](http://www.ozon.ru/context/detail/id/21916535/): "Если вам кажется, что нужно добавить комментарий для улучшения понимания, это значит, что ваш код недостаточно прост, и, может, стоит переписать его". - -Если у вас образовалась длинная "простыня", то, возможно, стоит разбить её на отдельные функции, и тогда из их названий будет понятно, что делает тот или иной фрагмент. - -Да, конечно, бывают сложные алгоритмы, хитрые решения для оптимизации, поэтому нельзя такие комментарии просто запретить. Но перед тем, как писать подобное -- подумайте: "Нельзя ли сделать код понятным и без них?" - -## Хорошие комментарии - - -А какие комментарии полезны и приветствуются? - -
      -
    • **Архитектурный комментарий -- "как оно, вообще, устроено".** - -Какие компоненты есть, какие технологии использованы, поток взаимодействия. О чём и зачем этот скрипт. Взгляд с высоты птичьего полёта. Эти комментарии особенно нужны, если вы не один, а проект большой. - -Для описания архитектуры, кстати, создан специальный язык [UML](http://ru.wikipedia.org/wiki/Unified_Modeling_Language), красивые диаграммы, но можно и без этого. Главное -- чтобы понятно. -
    • -
    • **Справочный комментарий перед функцией -- о том, что именно она делает, какие параметры принимает и что возвращает.** - -Для таких комментариев существует синтаксис [JSDoc](http://en.wikipedia.org/wiki/JSDoc). - -```js -/** - * Возвращает x в степени n, только для натуральных n - * - * @param {number} x Число для возведения в степень. - * @param {number} n Показатель степени, натуральное число. - * @return {number} x в степени n. - */ -function pow(x, n) { - ... -} -``` - -Такие комментарии позволяют сразу понять, что принимает и что делает функция, не вникая в код. - -Кстати, они автоматически обрабатываются многими редакторами, например [Aptana](http://aptana.com) и редакторами от [JetBrains](http://www.jetbrains.com/), которые учитывают их при автодополнении, а также выводят их в автоподсказках при наборе кода. - -Кроме того, есть инструменты, например [JSDoc 3](https://github.com/jsdoc3/jsdoc), которые умеют генерировать по таким комментариям документацию в формате HTML. Более подробную информацию об этом можно также найти на сайте [](http://usejsdoc.org/). -
    • -
    - -**...Но куда более важными могут быть комментарии, которые объясняют не *что*, а *почему* в коде происходит именно это!** - -Как правило, из кода можно понять, что он делает. Бывает, конечно, всякое, но, в конце концов, вы этот код *видите*. Однако гораздо важнее может быть то, чего вы *не видите*! - -*Почему* это сделано именно так? На это сам код ответа не даёт. - -Например: - -
    -
    Есть несколько способов решения задачи. Почему выбран именно этот?
    -
    -Например, пробовали решить задачу по-другому, но не получилось -- напишите об этом. Почему вы выбрали именно этот способ решения? Особенно это важно в тех случаях, когда используется не первый приходящий в голову способ, а какой-то другой. - -Без этого возможна, например, такая ситуация: -
      -
    • Вы открываете код, который был написан какое-то время назад, и видите, что он "неоптимален".
    • -
    • Думаете: "Какой я был дурак", и переписываете под "более очевидный и правильный" вариант.
    • -
    • ...Порыв, конечно, хороший, да только этот вариант вы уже обдумали раньше. И отказались, а почему -- забыли. В процессе переписывания вспомнили, конечно (к счастью), но результат - потеря времени на повторное обдумывание.
    • -
    - -Комментарии, которые объясняют выбор решения, очень важны. Они помогают понять происходящее и предпринять правильные шаги при развитии кода. -
    -
    Какие неочевидные возможности обеспечивает этот код? Где ещё они используются?
    -
    -В хорошем коде должно быть минимум неочевидного. Но там, где это есть -- пожалуйста, комментируйте. -
    -
    - - -[smart header="Комментарии -- это важно"] -Один из показателей хорошего разработчика -- качество комментариев, которые позволяют эффективно поддерживать код, возвращаться к нему после любой паузы и легко вносить изменения. -[/smart] - -## Руководства по стилю - -Когда написанием проекта занимается целая команда, то должен существовать один стандарт кода, описывающий где и когда ставить пробелы, запятые, переносы строк и т.п. - -Сейчас, когда есть столько готовых проектов, нет смысла придумывать целиком своё руководство по стилю. Можно взять уже готовое, и которому, по желанию, всегда можно что-то добавить. - -Большинство есть на английском, сообщите мне, если найдёте хороший перевод: - -
      -
    • [Google JavaScript Style Guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml)
    • -
    • [JQuery Core Style Guidelines](http://docs.jquery.com/JQuery_Core_Style_Guidelines)
    • -
    • [Airbnb JavaScript Style Guide](https://github.com/airbnb/javascript)
    • -
    • [Idiomatic.JS](https://github.com/rwldrn/idiomatic.js) (есть [перевод](https://github.com/rwldrn/idiomatic.js/tree/master/translations/ru_RU))
    • -
    • [Dojo Style Guide](http://dojotoolkit.org/community/styleGuide)
    • -
    - -Для того, чтобы начать разработку, вполне хватит элементов стилей, обозначенных в этой главе. В дальнейшем, посмотрев эти руководства, вы можете выработать и свой стиль, но лучше не делать его особенно "уникальным и неповторимым", себе дороже потом будет с людьми сотрудничать. - -## Автоматизированные средства проверки - -Существуют средства, проверяющие стиль кода. - -Самые известные -- это: - -
      -
    • [JSLint](http://www.jslint.com/) -- проверяет код на соответствие [стилю JSLint](http://www.jslint.com/lint.html), в онлайн-интерфейсе вверху можно ввести код, а внизу различные настройки проверки, чтобы сделать её более мягкой.
    • -
    • [JSHint](http://www.jshint.com/) -- вариант JSLint с большим количеством настроек.
    • -
    • [Closure Linter](https://developers.google.com/closure/utilities/) -- проверка на соответствие [Google JavaScript Style Guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml).
    • -
    - -В частности, JSLint и JSHint интегрированы с большинством редакторов, они гибко настраиваются под нужный стиль и совершенно незаметно улучшают разработку, подсказывая, где и что поправить. - -Побочный эффект -- они видят некоторые ошибки, например необъявленные переменные. У меня это обычно результат опечатки, которые таким образом сразу отлавливаются. Очень рекомендую поставить что-то из этого. Я использую [JSHint](http://www.jshint.com/). - -## Итого - -Описанные принципы оформления кода уместны в большинстве проектов. Есть и другие полезные соглашения. - -Следуя (или не следуя) им, необходимо помнить, что любые советы по стилю хороши лишь тогда, когда делают код читаемее, понятнее, проще в поддержке. - diff --git a/1-js/3-writing-js/2-coding-style/code-style.png b/1-js/3-writing-js/2-coding-style/code-style.png deleted file mode 100644 index d41a988382f682e9da72ead693a5a208c2b0ee61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128724 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

    fwLb;M);9qhRgA?-5YzoqYzH*j(s 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 diff --git a/1-js/3-writing-js/2-coding-style/code-style@2x.png b/1-js/3-writing-js/2-coding-style/code-style@2x.png deleted file mode 100644 index acb8ac1bd36db81924c6de554262edb9ad7226f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252176 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

    4%smXM>c`zz3E@cn$if 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

    dQdpl5+nPyDeWwL2y9MuQ-JuI{YM}+x^6slg*W2 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 Np`!bw=CS?T{{jPI1?2z$ diff --git a/1-js/3-writing-js/3-write-unmain-code/article.md b/1-js/3-writing-js/3-write-unmain-code/article.md deleted file mode 100644 index dd15be50..00000000 --- a/1-js/3-writing-js/3-write-unmain-code/article.md +++ /dev/null @@ -1,301 +0,0 @@ -# Как писать неподдерживаемый код? - -[warn header="Познай свой код"] -Эта статья представляет собой мой вольный перевод [How To Write Unmaintainable Code](http://mindprod.com/jgloss/unmain.html) ("как писать неподдерживаемый код") с дополнениями, актуальными для JavaScript. - -Возможно, в каких-то из этих советов вам даже удастся узнать "этого парня в зеркале". -[/warn] - - -Предлагаю вашему вниманию советы мастеров древности, следование которым создаст дополнительные рабочие места для JavaScript-разработчиков. - -Если вы будете им следовать, то ваш код будет так сложен в поддержке, что у JavaScript'еров, которые придут после вас, даже простейшее изменение займет годы *оплачиваемого* труда! А сложные задачи оплачиваются хорошо, так что они, определённо, скажут вам "Спасибо". - -Более того, *внимательно* следуя этим правилам, вы сохраните и своё рабочее место, так как все будут бояться вашего кода и бежать от него... - -...Впрочем, всему своя мера. При написании такого кода он не должен *выглядеть* сложным в поддержке, код должен *быть* таковым. - -Явно кривой код может написать любой дурак. Это заметят, и вас уволят, а код будет переписан с нуля. Вы не можете такого допустить. Эти советы учитывают такую возможность. Да здравствует дзен. - - -[cut] - -## Соглашения -- по настроению - -[quote author="Сериал \"Симпсоны\", серия Helter Shelter"] -Рабочий-чистильщик осматривает дом:
    -"...Вот только жук у вас необычный...
    -И чтобы с ним справиться, я должен жить как жук, стать жуком, думать как жук."
    -(грызёт стол Симпсонов) -[/quote] - -Чтобы помешать другому программисту исправить ваш код, вы должны понять путь его мыслей. - -Представьте, перед ним -- ваш большой скрипт. И ему нужно поправить его. У него нет ни времени ни желания, чтобы читать его целиком, а тем более -- досконально разбирать. Он хотел бы по-быстрому найти нужное место, сделать изменение и убраться восвояси без появления побочных эффектов. - -Он рассматривает ваш код как бы через трубочку из туалетной бумаги. Это не даёт ему общей картины, он ищет тот небольшой фрагмент, который ему необходимо изменить. По крайней мере, он надеется, что этот фрагмент будет небольшим. - -**На что он попытается опереться в этом поиске -- так это на соглашения, принятые в программировании, об именах переменных, названиях функций и методов...** - -Как затруднить задачу? Можно везде нарушать соглашения -- это помешает ему, но такое могут заметить, и код будет переписан. Как поступил бы ниндзя на вашем месте? - -**...Правильно! Следуйте соглашениям "в общем", но иногда -- нарушайте их.** - -Тщательно разбросанные по коду нарушения соглашений с одной стороны не делают код явно плохим при первом взгляде, а с другой -- имеют в точности тот же, и даже лучший эффект, чем явное неследование им! - -### Пример из jQuery - -[warn header="jQuery / DOM"] -Этот пример требует знаний jQuery/DOM, если пока их у вас нет -- пропустите его, ничего страшного, но обязательно вернитесь к нему позже. Подобное стоит многих часов отладки. -[/warn] -Во фреймворке jQuery есть метод [wrap](http://api.jquery.com/wrap/), который обёртывает один элемент вокруг другого: - -```js -var img = $(''); // создали новые элементы (jQuery-синтаксис) -var div = $('

    '); // и поместили в переменную - -img.wrap(div); // обернуть img в div -div.append(''); -``` - -Результат кода после операции `wrap` -- два элемента, один вложен в другой: - -```html -
    - -
    -``` - -А что же после `append`? - -Можно предположить, что `` добавится в конец `div`, сразу после `img`... Но ничего подобного! - -Искусный ниндзя уже нанёс свой удар и поведение кода стало неправильным, хотя разработчик об этом даже не подозревает. - -Как правило, методы jQuery работают с теми элементами, которые им переданы. Но не здесь! - -Внутри вызова `img.wrap(div)` происходит клонирование `div` и вокруг `img` оборачивается не сам `div`, а его клон. При этом исходная переменная `div` не меняется, в ней как был пустой `div`, так и остался. - -В итоге, после вызова получается два независимых `div'а`: первый содержит `img` (этот неявный клон никуда не присвоен), а второй -- наш `span`. - -Объяснения не очень понятны? Написано что-то странное? Это просто разум, привыкший, что соглашения уважаются, не допускает мысли, что вызов `wrap` -- неявно клонирует элемент. Ведь другие jQuery-методы, кроме `clone` этого не делают. - -Как говорил [Учитель](https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D1%84%D1%83%D1%86%D0%B8%D0%B9): "В древности люди учились для того, чтобы совершенствовать себя. Нынче учатся для того, чтобы удивить других". - -## Краткость -- сестра таланта! - -Пишите "как короче", а не как понятнее. "Меньше букв" -- уважительная причина для нарушения любых соглашений. - -Ваш верный помощник -- возможности языка, использованные неочевидным образом. - -Обратите внимание на оператор вопросительный знак `'?'`, например: - -```js -// код из jQuery -i = i ? i < 0 ? Math.max(0, len + i) : i : 0; -``` - -Разработчик, встретивший эту строку и попытавшийся понять, чему же всё-таки равно `i`, скорее всего придёт к вам за разъяснениями. Смело скажите ему, что короче -- это всегда лучше. Посвятите и его в пути ниндзя. Не забудьте вручить [Дао дэ цзин](http://lib.ru/POECHIN/lao1.txt). - -## Именование - -Существенную часть науки о создании неподдерживаемого кода занимает искусство выбора имён. - -### Однобуквенные переменные - -Называйте переменные коротко: `a`, `b` или `c`. - -В этом случае никто не сможет найти её, используя фунцию "Поиск" текстового редактора. - -Более того, даже найдя -- никто не сможет "расшифровать" её и догадаться, что она означает. - -### Не используйте i для цикла - -В тех местах, где однобуквенные переменные общеприняты, например, в счетчике цикла -- ни в коем случае не используйте стандартные названия `i`, `j`, `k`. Где угодно, только не здесь! - -Остановите свой взыскательный взгляд на чём-нибудь более экзотическом. Например, `x` или `y`. - -Эффективность этого подхода особенно заметна, если тело цикла занимает одну-две страницы (чем длиннее -- тем лучше). - -В этом случае заметить, что переменная -- счетчик цикла, без пролистывания вверх, невозможно. - -### Русские слова и сокращения - -Если вам *приходится* использовать длинные, понятные имена переменных -- что поделать.. Но и здесь есть простор для творчества! - -**Назовите переменные "калькой" с русского языка или как-то "улучшите" английское слово.** - -В одном месте напишите `var ssilka`, в другом `var ssylka`, в третьем `var link`, в четвёртом -- `var lnk`... Это действительно великолепно работает и очень креативно! - -Количество ошибок при поддержке такого кода увеличивается во много раз. - -### Будьте абстрактны при выборе имени - -[quote author="Лао-цзы"]Лучший кувшин лепят всю жизнь.
    -Высокая музыка неподвластна слуху.
    -Великий образ не имеет формы.[/quote] - -При выборе имени старайтесь применить максимально абстрактное слово, например `obj`, `data`, `value`, `item`, `elem` и т.п. - -
      -
    • **Идеальное имя для переменной: `data`.** Используйте это имя везде, где можно. В конце концов, каждая переменная содержит *данные*, не правда ли? - -Но что делать, если имя `data` уже занято? Попробуйте `value`, оно не менее универсально. Ведь каждая переменная содержит *значение*. - -Занято и это? Есть и другой вариант. -
    • -
    • **Называйте переменную по типу данных, которые она хранит: `obj`, `num`, `arr`...** - -Насколько это усложнит разработку? Как ни странно, намного! - -Казалось бы, название переменной содержит информацию, говорит о том, что в переменной -- число, объект или массив... С другой стороны, **когда непосвящённый будет разбирать этот код -- он с удивлением обнаружит, что информации нет!** - -Ведь как раз тип легко понять, запустив отладчик и посмотрев, что внутри. Но в чём смысл этой переменной? Что за массив/объект/число в ней хранится? Без долгой медитации над кодом тут не обойтись! -
    • -
    • **Что делать, если и эти имена кончились? Просто добавьте цифру:** `item1, item2, elem5, data1`...
    • -
    - -### Похожие имена - -Только истинно внимательный программист достоин понять ваш код. Но как проверить, достоин ли читающий? - -**Один из способов -- использовать похожие имена переменных, например `data` и `date`.** Бегло прочитать такой код почти невозможно. А уж заметить опечатку и поправить её... Ммммм... Мы здесь надолго, время попить чайку. - -### А.К.Р.О.Н.И.М - -Используйте сокращения, чтобы сделать код короче. - -Например `ie` (Inner Element), `mc` (Money Counter) и другие. Если вы обнаружите, что путаетесь в них сами -- героически страдайте, но не переписывайте код. Вы знали, на что шли. - -### Хитрые синонимы - -[quote author="Конфуций"]Очень трудно найти чёрную кошку в тёмной комнате, особенно когда её там нет.[/quote] - -**Чтобы было не скучно -- используйте *похожие названия* для обозначения *одинаковых действий*.** - -Например, если метод показывает что-то на экране -- начните его название с `display..` (скажем, `displayElement`), а в другом месте объявите аналогичный метод как `show..` (`showFrame`). - -**Как бы намекните этим, что существует тонкое различие между способами показа в этих методах, хотя на самом деле его нет.** - -По возможности, договоритесь с членами своей команды. Если Вася в своих классах использует `display..`, то Валера -- обязательно `render..`, а Петя -- `paint..`. - -**...И напротив, если есть две функции с важными отличиями -- используйте одно и то же слово для их описания!** Например, с `print...` можно начать метод печати на принтере `printPage`, а также -- метод добавления текста на страницу `printText`. - -А теперь, пусть читающий код думает: "Куда же выводит сообщение `printMessage`?". Особый шик -- добавить элемент неожиданности. Пусть `printMessage` выводит не туда, куда все, а в новое окно! - -### Словарь терминов -- это еда! - -Ни в коем случае не поддавайтесь требованиям написать словарь терминов для проекта. Если же он уже есть -- не следуйте ему, а лучше проглотите и скажите, что так и былО! - -Пусть читающий ваш код программист напрасно ищет различия в `helloUser` и `welcomeVisitor` и пытается понять, когда что использовать. Вы-то знаете, что на самом деле различий нет, но искать их можно о-очень долго. - -**Для обозначения посетителя в одном месте используйте `user`, а в другом `visitor`, в третьем -- просто `u`. Выбирайте одно имя или другое, в зависимости от функции и настроения.** - -Это воплотит сразу два ключевых принципа ниндзя-дизайна -- *сокрытие информации* и *подмена понятий*! - -### Повторно используйте имена - -По возможности, повторно используйте имена переменных, функций и свойств. Просто записывайте в них новые значения. - -Добавляйте новое имя только если это абсолютно необходимо. - -В функции старайтесь обойтись только теми переменными, которые были переданы как параметры. - -Это не только затруднит идентификацию того, что *сейчас* находится в переменной, но и сделает почти невозможным поиск места, в котором конкретное значение было присвоено. - -Цель -- максимально усложнить отладку и заставить читающего код программиста построчно анализировать код и конспектировать изменения переменных для каждой ветки исполнения. - -**Продвинутый вариант этого подхода -- незаметно (!) подменить переменную на нечто похожее, например:** - -```js -function ninjaFunction(elem) { - // 20 строк кода, работающего с elem - - elem = elem.cloneNode(true); - - // еще 20 строк кода, работающего с elem -} -``` - -Программист, пожелавший добавить действия с `elem` во вторую часть функции, будет удивлён. Лишь во время отладки, посмотрев весь код, он с удивлением обнаружит, что оказывается имел дело с клоном! - -Регулярные встречи с этим приемом на практике говорят: защититься невозможно. Эффективно даже против опытного ниндзи. - -### Добавляйте подчеркивания - -Добавляйте подчеркивания `_` и `__` к именам переменных. Желательно, чтобы их смысл был известен только вам, а лучше -- вообще без явной причины. - -Этим вы достигните двух целей. Во-первых, код станет длиннее и менее читаемым, а во-вторых, другой программист будет долго искать смысл в подчёркиваниях. Особенно хорошо сработает и внесет сумятицу в его мысли, если в некоторых частях проекта подчеркивания будут, а в некоторых -- нет. - -В процессе развития кода вы, скорее всего, будете путаться и смешивать стили: добавлять имена с подчеркиваниями там, где обычно подчеркиваний нет, и наоборот. Это нормально и полностью соответствует третьей цели -- увеличить количество ошибок при внесении исправлений. - -### Покажите вашу любовь к разработке - -Пусть все видят, какими замечательными сущностями вы оперируете! Имена `superElement`, `megaFrame` и `niceItem` при благоприятном положении звёзд могут привести к просветлению читающего. - -Действительно, с одной стороны, кое-что написано: `super..`, `mega..`, `nice..` С другой -- это не несёт никакой конкретики. Читающий может решить поискать в этом глубинный смысл и замедитировать на часок-другой оплаченного рабочего времени. - -### Перекрывайте внешние переменные - -[quote author="Гуань Инь-цзы"] -Находясь на свету, нельзя ничего увидеть в темноте.
    -Пребывая же в темноте, увидишь все, что находится на свету. -[/quote] - -Почему бы не использовать одинаковые переменные внутри и снаружи функции? Это просто и не требует придумывать новых имён. - -```js -var *!*user*/!* = authenticateUser(); - -function render() { - var *!*user*/!* = anotherValue(); - ... - ...многобукв... - ... - ... // <-- программист захочет внести исправления сюда, и.. - ... -} -``` - -Зашедший в середину метода `render` программист, скорее всего, не заметит, что переменная `user` локально перекрыта и попытается работать с ней, полагая, что это результат `authenticateUser()`... Ловушка захлопнулась! Здравствуй, отладчик. - -## Мощные функции! - -Не ограничивайте действия функции тем, что написано в её названии. Будьте шире. - -Например, функция `validateEmail(email)` может, кроме проверки e-mail на правильность, выводить сообщение об ошибке и просить заново ввести e-mail. - -**Выберите хотя бы пару дополнительных действий, кроме основного назначения функции.** - -Главное -- они должны быть неочевидны из названия функции. Истинный ниндзя-девелопер сделает так, что они будут неочевидны и из кода тоже. - -**Объединение нескольких смежных действий в одну функцию защитит ваш код от повторного использования.** - -Представьте, что другому разработчику нужно только проверить адрес, а сообщение -- не выводить. Ваша функция `validateEmail(email)`, которая делает и то и другое, ему не подойдёт. Работодатель будет вынужден оплатить создание новой. - - -## Внимание.. Сюр-при-из! - -Есть функции, название которых говорит о том, что они ничего не меняют. Например, `isReady`, `checkPermission`, `findTags`... Предполагается, что при вызове они произведут некие вычисления, или найдут и возвратят полезные данные, но при этом их не изменят. В трактатах это называется "отсутствие сторонних эффектов". - -**По-настоящему красивый приём -- делать в таких функциях что-нибудь полезное, заодно с процессом проверки. Что именно -- совершенно неважно.** - -Удивление и ошеломление, которое возникнет у вашего коллеги, когда он увидит, что функция с названием на `is..`, `check..` или `find...` что-то меняет -- несомненно, расширит его границы разумного! - -**Ещё одна вариация такого подхода -- возвращать нестандартное значение.** - -Ведь общеизвестно, что `is..` и `check..` обычно возвращают `true/false`. Продемонстрируйте оригинальное мышление. Пусть вызов `checkPermission` возвращает не результат `true/false`, а объект с результатами проверки! А чего, полезно. - -Те же разработчики, кто попытается написать проверку `if (checkPermission(..))`, будут весьма удивлены результатом. Ответьте им: "надо читать документацию!". И перешлите эту статью. - -## Заключение - -Все советы выше пришли из реального кода... И в том числе от разработчиков с большим опытом. - -Возможно, даже больше вашего, так что не судите опрометчиво ;) - -
      -
    • Следуйте нескольким из них -- и ваш код станет полон сюрпризов.
    • -
    • Следуйте многим -- и ваш код станет истинно вашим, никто не захочет изменять его.
    • -
    • Следуйте всем -- и ваш код станет ценным уроком для молодых разработчиков, ищущих просветления.
    • -
    \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/1-pow-nan-spec/_js.view/solution.js b/1-js/3-writing-js/4-testing/1-pow-nan-spec/_js.view/solution.js deleted file mode 100644 index 7a67dac5..00000000 --- a/1-js/3-writing-js/4-testing/1-pow-nan-spec/_js.view/solution.js +++ /dev/null @@ -1,10 +0,0 @@ -function pow(x, n) { - if (n < 0) return NaN; - if (Math.round(n) != n) return NaN; - - var result = 1; - for (var i = 0; i < n; i++) { - result *= x; - } - return result; -} \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/1-pow-nan-spec/_js.view/source.js b/1-js/3-writing-js/4-testing/1-pow-nan-spec/_js.view/source.js deleted file mode 100644 index 1450a38d..00000000 --- a/1-js/3-writing-js/4-testing/1-pow-nan-spec/_js.view/source.js +++ /dev/null @@ -1,8 +0,0 @@ -/* исправьте этот код */ -function pow(x, n) { - var result = 1; - for (var i = 0; i < n; i++) { - result *= x; - } - return result; -} \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/1-pow-nan-spec/_js.view/test.js b/1-js/3-writing-js/4-testing/1-pow-nan-spec/_js.view/test.js deleted file mode 100644 index 61453678..00000000 --- a/1-js/3-writing-js/4-testing/1-pow-nan-spec/_js.view/test.js +++ /dev/null @@ -1,26 +0,0 @@ -describe("pow", function() { - - describe("возводит x в степень n", function() { - - function makeTest(x) { - var expected = x * x * x; - it("при возведении " + x + " в степень 3 результат: " + expected, function() { - assert.equal(pow(x, 3), expected); - }); - } - - for (var x = 1; x <= 5; x++) { - makeTest(x); - } - - }); - - it("при возведении в отрицательную степень результат NaN", function() { - assert(isNaN(pow(2, -1)), "pow(2, -1) не NaN"); - }); - - it("при возведении в дробную степень результат NaN", function() { - assert(isNaN(pow(2, 1.5)), "pow(2, -1.5) не NaN"); - }); - -}); \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/1-pow-nan-spec/solution.md b/1-js/3-writing-js/4-testing/1-pow-nan-spec/solution.md deleted file mode 100644 index 2586dfa3..00000000 --- a/1-js/3-writing-js/4-testing/1-pow-nan-spec/solution.md +++ /dev/null @@ -1,17 +0,0 @@ - - -```js -function pow(x, n) { -*!* - if (n < 0) return NaN; - if (Math.round(n) != n) return NaN; -*/!* - - var result = 1; - for (var i = 0; i < n; i++) { - result *= x; - } - return result; -} -``` - diff --git a/1-js/3-writing-js/4-testing/1-pow-nan-spec/task.md b/1-js/3-writing-js/4-testing/1-pow-nan-spec/task.md deleted file mode 100644 index ea90d617..00000000 --- a/1-js/3-writing-js/4-testing/1-pow-nan-spec/task.md +++ /dev/null @@ -1,17 +0,0 @@ -# Сделать pow по спецификации - -[importance 5] - -Исправьте код функции `pow`, чтобы тесты проходили. - -Для этого ниже в задаче вы найдёте ссылку на песочницу. - -Она содержит HTML с тестами. Обратите внимание, что HTML-страница в ней короче той, что обсуждалась в статье [](/testing). Это потому что библиотеки Chai, Mocha и Sinon объединены в один файл: - -```html - -``` - -Этот файл содержит код библиотек, стили, настройки для них и запуск `mocha.run` по окончании загрузки страницы. Если нет элемента с `id="mocha"`, то результаты выводятся в ``. - -Сборка сделана исключительно для более компактного представления задач, без рекомендаций использовать именно её в проектах. diff --git a/1-js/3-writing-js/4-testing/2-pow-test-0/solution.md b/1-js/3-writing-js/4-testing/2-pow-test-0/solution.md deleted file mode 100644 index 39eae1e7..00000000 --- a/1-js/3-writing-js/4-testing/2-pow-test-0/solution.md +++ /dev/null @@ -1,39 +0,0 @@ -Новый тест может быть, к примеру, таким: - -```js -it("любое число в степени 0 равно 1", function() { - assert.equal(pow(123, 0), 1); -}); -``` - -Конечно, желательно проверить на нескольких числах. - -Поэтому лучше будет создать блок `describe`, аналогичный тому, что мы делали для произвольных чисел: - -```js -describe("любое число, кроме нуля, в степени 0 равно 1", function() { - - function makeTest(x) { - it("при возведении " + x + " в степень 0 результат: 1", function() { - assert.equal(pow(x, 0), 1); - }); - } - - for (var x = -5; x <= 5; x += 2) { - makeTest(x); - } - -}); -``` - -И не забудем добавить отдельный тест для нуля: - -```js -//+ no-beautify -... -it("ноль в нулевой степени даёт NaN", function() { - assert( isNaN(pow(0, 0)), "0 в степени 0 не NaN"); -}); -... -``` - diff --git a/1-js/3-writing-js/4-testing/2-pow-test-0/solution.view/index.html b/1-js/3-writing-js/4-testing/2-pow-test-0/solution.view/index.html deleted file mode 100644 index eb1aedbf..00000000 --- a/1-js/3-writing-js/4-testing/2-pow-test-0/solution.view/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/2-pow-test-0/solution.view/test.js b/1-js/3-writing-js/4-testing/2-pow-test-0/solution.view/test.js deleted file mode 100644 index d2b9a771..00000000 --- a/1-js/3-writing-js/4-testing/2-pow-test-0/solution.view/test.js +++ /dev/null @@ -1,44 +0,0 @@ -describe("pow", function() { - - describe("возводит x в степень n", function() { - - function makeTest(x) { - var expected = x * x * x; - it("при возведении " + x + " в степень 3 результат: " + expected, function() { - assert.equal(pow(x, 3), expected); - }); - } - - for (var x = 1; x <= 5; x++) { - makeTest(x); - } - - }); - - it("при возведении в отрицательную степень результат NaN", function() { - assert(isNaN(pow(2, -1)), "pow(2, -1) не NaN"); - }); - - it("при возведении в дробную степень результат NaN", function() { - assert(isNaN(pow(2, 1.5)), "pow(2, -1.5) не NaN"); - }); - - describe("любое число, кроме нуля, в степени 0 равно 1", function() { - - function makeTest(x) { - it("при возведении " + x + " в степень 0 результат: 1", function() { - assert.equal(pow(x, 0), 1); - }); - } - - for (var x = -5; x <= 5; x += 2) { - makeTest(x); - } - - }); - - it("ноль в нулевой степени даёт NaN", function() { - assert(isNaN(pow(0, 0)), "0 в степени 0 не NaN"); - }); - -}); \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/2-pow-test-0/source.view/index.html b/1-js/3-writing-js/4-testing/2-pow-test-0/source.view/index.html deleted file mode 100644 index 7cc184b0..00000000 --- a/1-js/3-writing-js/4-testing/2-pow-test-0/source.view/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/2-pow-test-0/source.view/test.js b/1-js/3-writing-js/4-testing/2-pow-test-0/source.view/test.js deleted file mode 100644 index 61453678..00000000 --- a/1-js/3-writing-js/4-testing/2-pow-test-0/source.view/test.js +++ /dev/null @@ -1,26 +0,0 @@ -describe("pow", function() { - - describe("возводит x в степень n", function() { - - function makeTest(x) { - var expected = x * x * x; - it("при возведении " + x + " в степень 3 результат: " + expected, function() { - assert.equal(pow(x, 3), expected); - }); - } - - for (var x = 1; x <= 5; x++) { - makeTest(x); - } - - }); - - it("при возведении в отрицательную степень результат NaN", function() { - assert(isNaN(pow(2, -1)), "pow(2, -1) не NaN"); - }); - - it("при возведении в дробную степень результат NaN", function() { - assert(isNaN(pow(2, 1.5)), "pow(2, -1.5) не NaN"); - }); - -}); \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/2-pow-test-0/task.md b/1-js/3-writing-js/4-testing/2-pow-test-0/task.md deleted file mode 100644 index 28291a3a..00000000 --- a/1-js/3-writing-js/4-testing/2-pow-test-0/task.md +++ /dev/null @@ -1,7 +0,0 @@ -# Добавьте тест к задаче - -[importance 5] - -Добавьте к [предыдущей задаче](/task/pow-nan-spec) тесты, которые будут проверять, что любое число, кроме нуля, в нулевой степени равно `1`, а ноль в нулевой степени даёт `NaN` (это математически корректно, результат 00 не определён). - -При необходимости, исправьте реализацию, чтобы тесты проходили без ошибок. \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/3-pow-test-wrong/solution.md b/1-js/3-writing-js/4-testing/3-pow-test-wrong/solution.md deleted file mode 100644 index 97b66bbc..00000000 --- a/1-js/3-writing-js/4-testing/3-pow-test-wrong/solution.md +++ /dev/null @@ -1,27 +0,0 @@ -Этот тест демонстрирует один из соблазнов, которые ожидают начинающего автора тестов. - -Вместо того, чтобы написать три различных теста, он изложил их в виде одного потока вычислений, с несколькими `assert`. - -Иногда так написать легче и проще, однако при ошибке в тесте гораздо менее очевидно, что же пошло не так. - -Если в сложном тесте произошла ошибка где-то посередине потока вычислений, то придётся выяснять, какие конкретно были входные и выходные данные на этот момент, то есть по сути -- отлаживать код самого теста. - -Гораздо лучше будет разбить тест на несколько блоков `it`, с чётко прописанными входными и выходными данными. - -```js -describe("Возводит x в степень n", function() { - it("5 в степени 1 равно 5", function() { - assert.equal(pow(5, 1), 5); - }); - - it("5 в степени 2 равно 25", function() { - assert.equal(pow(5, 2), 25); - }); - - it("5 в степени 3 равно 125", function() { - assert.equal(pow(5, 3), 125); - }); -}); -``` - -Можно использовать цикл для генерации блоков `it`, в этом случае важно, чтобы сам код такого цикла был достаточно простым. Иногда проще записать несколько блоков `it` вручную, как сделано выше, чем "городить огород" из синтаксических конструкций. diff --git a/1-js/3-writing-js/4-testing/3-pow-test-wrong/task.md b/1-js/3-writing-js/4-testing/3-pow-test-wrong/task.md deleted file mode 100644 index 4d656c2f..00000000 --- a/1-js/3-writing-js/4-testing/3-pow-test-wrong/task.md +++ /dev/null @@ -1,22 +0,0 @@ -# Что не так в тесте? - -[importance 5] - -Что не так в этом тесте функции `pow`? - -```js -it("Возводит x в степень n", function() { - var x = 5; - - var result = x; - assert.equal(pow(x, 1), result); - - var result *= x; - assert.equal(pow(x, 2), result); - - var result *= x; - assert.equal(pow(x, 3), result); -}); -``` - -P.S. Синтаксически он верен и работает, но спроектирован неправильно. \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/article.md b/1-js/3-writing-js/4-testing/article.md deleted file mode 100644 index 6c04f26a..00000000 --- a/1-js/3-writing-js/4-testing/article.md +++ /dev/null @@ -1,452 +0,0 @@ -# Автоматические тесты при помощи chai и mocha - -В этой главе мы разберём основы автоматического тестирования. Оно будет применяться далее в задачах, и вообще, входит в "образовательный минимум" программиста. - -[cut] - -## Зачем нужны тесты? - -При написании функции мы обычно представляем, что она должна делать, какое значение -- на каких аргументах выдавать. - -В процессе разработки мы, время от времени, проверяем, правильно ли работает функция. Самый простой способ проверить -- это запустить её, например, в консоли, и посмотреть результат. - -Если что-то не так -- поправить, опять запустить -- посмотреть результат... И так -- "до победного конца". - -Но такие ручные запуски -- очень несовершенное средство проверки. - -**Когда проверяешь работу кода вручную -- легко его "недотестировать".** - -Например, пишем функцию `f`. Написали, тестируем с разными аргументами. Вызов функции `f(a)` -- работает, а вот `f(b)` -- не работает. Поправили код -- стало работать `f(b)`, вроде закончили. Но при этом забыли заново протестировать `f(a)` -- упс, вот и возможная ошибка в коде. - -**Автоматизированное тестирование -- это когда тесты написаны отдельно от кода, и можно в любой момент запустить их и проверить все важные случаи использования.** - -## BDD -- поведенческие тесты кода - -Мы рассмотрим методику тестирования, которая входит в [BDD](http://en.wikipedia.org/wiki/Behavior-driven_development) -- Behavior Driven Development. Подход BDD давно и с успехом используется во многих проектах. - -BDD -- это не просто тесты. Это гораздо больше. - -**Тесты BDD -- это три в одном: И тесты И документация И примеры использования одновременно.** - -Впрочем, хватит слов. Рассмотрим примеры. - -## Разработка pow: спецификация - -Допустим, мы хотим разработать функцию `pow(x, n)`, которая возводит `x` в целую степень `n`, для простоты `n≥0`. - - -Ещё до разработки мы можем представить себе, что эта функция будет делать и описать это по методике BDD. - -Это описание называется *спецификация* (или, как говорят в обиходе, "спека") и выглядит так: - -```js -describe("pow", function() { - - it("возводит в n-ю степень", function() { - assert.equal(pow(2, 3), 8); - }); - -}); -``` - -У спецификации есть три основных строительных блока, которые вы видите в примере выше: -
    -
    `describe(название, function() { ... })`
    -
    Задаёт, что именно мы описываем, используется для группировки "рабочих лошадок" -- блоков `it`. В данном случае мы описываем функцию `pow`.
    -
    `it(название, function() { ... })`
    -
    В названии блока `it` *человеческим языком* описывается, что должна делать функция, далее следует *тест*, который проверяет это.
    -
    `assert.equal(value1, value2)`
    -
    Код внутри `it`, если реализация верна, должен выполняться без ошибок. - -Различные функции вида `assert.*` используются, чтобы проверить, делает ли `pow` то, что задумано. Пока что нас интересует только одна из них -- `assert.equal`, она сравнивает свой первый аргумент со вторым и выдаёт ошибку в случае, когда они не равны. В данном случае она проверяет, что результат `pow(2, 3)` равен `8`. - - -Есть и другие виды сравнений и проверок, которые мы увидим далее.
    -
    - - -## Поток разработки - -Как правило, поток разработки таков: -
      -
    1. Пишется спецификация, которая описывает самый базовый функционал.
    2. -
    3. Делается начальная реализация.
    4. -
    5. Для проверки соответствия спецификации мы задействуем одновременно фреймворк, в нашем случае [Mocha](http://mochajs.org/) вместе со спецификацией и реализацией. Фреймворк запускает все тесты `it` и выводит ошибки, если они возникнут. При ошибках вносятся исправления.
    6. -
    7. Спецификация расширяется, в неё добавляются возможности, которые пока, возможно, не поддерживаются реализацией.
    8. -
    9. Идём на пункт 3, делаем реализацию, и так далее, до победного конца.
    10. -
    - -Разработка ведётся *итеративно*, один проход за другим, пока спецификация и реализация не будут завершены. - -В нашем случае первый шаг уже завершён, начальная спецификация готова, хорошо бы приступить к реализации. Но перед этим проведём "нулевой" запуск спецификации, просто чтобы увидеть, что уже в таком виде, даже без реализации -- тесты работают. - -## Пример в действии - -Для запуска тестов нужны соответствующие JavaScript-библиотеки. - -Мы будем использовать: -
      -
    • [Mocha](http://mochajs.org/) -- эта библиотека содержит общие функции для тестирования, включая `describe` и `it`.
    • -
    • [Chai](http://chaijs.com) -- библиотека поддерживает разнообразные функции для проверок. Есть разные "стили" проверки результатов, с которыми мы познакомимся позже, на текущий момент мы будем использовать лишь `assert.equal`.
    • -
    • [Sinon](http://sinonjs.org/) -- для эмуляции и хитрой подмены функций "заглушками", понадобится позднее.
    • -
    - -Эти библиотеки позволяют тестировать JS не только в браузере, но и на сервере Node.JS. Здесь мы рассмотрим браузерный вариант, серверный использует те же функции. - -Пример HTML-страницы для тестов: - -```html - -``` - -Эту страницу можно условно разделить на четыре части: -
      -
    1. Блок `` -- в нём мы подключаем библиотеки и стили для тестирования, нашего кода там нет.
    2. -
    3. Блок ` - - - - - - - - - - - -
      - - - - - - \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/beforeafter.view/test.js b/1-js/3-writing-js/4-testing/beforeafter.view/test.js deleted file mode 100755 index e9637032..00000000 --- a/1-js/3-writing-js/4-testing/beforeafter.view/test.js +++ /dev/null @@ -1,24 +0,0 @@ -describe("Тест", function() { - - before(function() { - alert("Начало всех тестов"); - }); - after(function() { - alert("Окончание всех тестов"); - }); - - beforeEach(function() { - alert("Вход в тест"); - }); - afterEach(function() { - alert("Выход из теста"); - }); - - it('тест 1', function() { - alert('1'); - }); - it('тест 2', function() { - alert('2'); - }); - -}); \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/index.html b/1-js/3-writing-js/4-testing/index.html deleted file mode 100755 index dac2c912..00000000 --- a/1-js/3-writing-js/4-testing/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - - - - - - \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/pow-1.view/index.html b/1-js/3-writing-js/4-testing/pow-1.view/index.html deleted file mode 100755 index dac2c912..00000000 --- a/1-js/3-writing-js/4-testing/pow-1.view/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - - - - - - \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/pow-1.view/test.js b/1-js/3-writing-js/4-testing/pow-1.view/test.js deleted file mode 100755 index 582287f9..00000000 --- a/1-js/3-writing-js/4-testing/pow-1.view/test.js +++ /dev/null @@ -1,7 +0,0 @@ -describe("pow", function() { - - it("возводит в n-ю степень", function() { - assert.equal(pow(2, 3), 8); - }); - -}); \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/pow-2.view/index.html b/1-js/3-writing-js/4-testing/pow-2.view/index.html deleted file mode 100755 index 57aebaf7..00000000 --- a/1-js/3-writing-js/4-testing/pow-2.view/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - - - - - - \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/pow-2.view/test.js b/1-js/3-writing-js/4-testing/pow-2.view/test.js deleted file mode 100755 index a14e3afa..00000000 --- a/1-js/3-writing-js/4-testing/pow-2.view/test.js +++ /dev/null @@ -1,11 +0,0 @@ -describe("pow", function() { - - it("при возведении 2 в 3ю степень результат 8", function() { - assert.equal(pow(2, 3), 8); - }); - - it("при возведении 3 в 4ю степень равен 81", function() { - assert.equal(pow(3, 4), 81); - }); - -}); \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/pow-3.view/index.html b/1-js/3-writing-js/4-testing/pow-3.view/index.html deleted file mode 100755 index 68d14a3f..00000000 --- a/1-js/3-writing-js/4-testing/pow-3.view/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - - - - - - \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/pow-3.view/test.js b/1-js/3-writing-js/4-testing/pow-3.view/test.js deleted file mode 100755 index 43457d87..00000000 --- a/1-js/3-writing-js/4-testing/pow-3.view/test.js +++ /dev/null @@ -1,14 +0,0 @@ -describe("pow", function() { - - function makeTest(x) { - var expected = x * x * x; - it("при возведении " + x + " в степень 3 результат: " + expected, function() { - assert.equal(pow(x, 3), expected); - }); - } - - for (var x = 1; x <= 5; x++) { - makeTest(x); - } - -}); \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/pow-4.view/index.html b/1-js/3-writing-js/4-testing/pow-4.view/index.html deleted file mode 100755 index 68d14a3f..00000000 --- a/1-js/3-writing-js/4-testing/pow-4.view/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - - - - - - \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/pow-4.view/test.js b/1-js/3-writing-js/4-testing/pow-4.view/test.js deleted file mode 100755 index 0e03f0fe..00000000 --- a/1-js/3-writing-js/4-testing/pow-4.view/test.js +++ /dev/null @@ -1,20 +0,0 @@ -describe("pow", function() { - - describe("возводит x в степень n", function() { - - function makeTest(x) { - var expected = x * x * x; - it("при возведении " + x + " в степень 3 результат: " + expected, function() { - assert.equal(pow(x, 3), expected); - }); - } - - for (var x = 1; x <= 5; x++) { - makeTest(x); - } - - }); - - // ... - -}); \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/pow-full.view/index.html b/1-js/3-writing-js/4-testing/pow-full.view/index.html deleted file mode 100755 index a0f4faaf..00000000 --- a/1-js/3-writing-js/4-testing/pow-full.view/index.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - - - - - - \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/pow-full.view/test.js b/1-js/3-writing-js/4-testing/pow-full.view/test.js deleted file mode 100755 index d2b9a771..00000000 --- a/1-js/3-writing-js/4-testing/pow-full.view/test.js +++ /dev/null @@ -1,44 +0,0 @@ -describe("pow", function() { - - describe("возводит x в степень n", function() { - - function makeTest(x) { - var expected = x * x * x; - it("при возведении " + x + " в степень 3 результат: " + expected, function() { - assert.equal(pow(x, 3), expected); - }); - } - - for (var x = 1; x <= 5; x++) { - makeTest(x); - } - - }); - - it("при возведении в отрицательную степень результат NaN", function() { - assert(isNaN(pow(2, -1)), "pow(2, -1) не NaN"); - }); - - it("при возведении в дробную степень результат NaN", function() { - assert(isNaN(pow(2, 1.5)), "pow(2, -1.5) не NaN"); - }); - - describe("любое число, кроме нуля, в степени 0 равно 1", function() { - - function makeTest(x) { - it("при возведении " + x + " в степень 0 результат: 1", function() { - assert.equal(pow(x, 0), 1); - }); - } - - for (var x = -5; x <= 5; x += 2) { - makeTest(x); - } - - }); - - it("ноль в нулевой степени даёт NaN", function() { - assert(isNaN(pow(0, 0)), "0 в степени 0 не NaN"); - }); - -}); \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/pow-min.view/index.html b/1-js/3-writing-js/4-testing/pow-min.view/index.html deleted file mode 100755 index 57aebaf7..00000000 --- a/1-js/3-writing-js/4-testing/pow-min.view/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - - - - - - \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/pow-min.view/test.js b/1-js/3-writing-js/4-testing/pow-min.view/test.js deleted file mode 100755 index 582287f9..00000000 --- a/1-js/3-writing-js/4-testing/pow-min.view/test.js +++ /dev/null @@ -1,7 +0,0 @@ -describe("pow", function() { - - it("возводит в n-ю степень", function() { - assert.equal(pow(2, 3), 8); - }); - -}); \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/pow-nan-assert.view/index.html b/1-js/3-writing-js/4-testing/pow-nan-assert.view/index.html deleted file mode 100755 index 5c0dd157..00000000 --- a/1-js/3-writing-js/4-testing/pow-nan-assert.view/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - - - - - - \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/pow-nan-assert.view/test.js b/1-js/3-writing-js/4-testing/pow-nan-assert.view/test.js deleted file mode 100755 index 61453678..00000000 --- a/1-js/3-writing-js/4-testing/pow-nan-assert.view/test.js +++ /dev/null @@ -1,26 +0,0 @@ -describe("pow", function() { - - describe("возводит x в степень n", function() { - - function makeTest(x) { - var expected = x * x * x; - it("при возведении " + x + " в степень 3 результат: " + expected, function() { - assert.equal(pow(x, 3), expected); - }); - } - - for (var x = 1; x <= 5; x++) { - makeTest(x); - } - - }); - - it("при возведении в отрицательную степень результат NaN", function() { - assert(isNaN(pow(2, -1)), "pow(2, -1) не NaN"); - }); - - it("при возведении в дробную степень результат NaN", function() { - assert(isNaN(pow(2, 1.5)), "pow(2, -1.5) не NaN"); - }); - -}); \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/pow-nan.view/index.html b/1-js/3-writing-js/4-testing/pow-nan.view/index.html deleted file mode 100755 index 5c0dd157..00000000 --- a/1-js/3-writing-js/4-testing/pow-nan.view/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - - - - - - \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/pow-nan.view/test.js b/1-js/3-writing-js/4-testing/pow-nan.view/test.js deleted file mode 100755 index a0c37e0b..00000000 --- a/1-js/3-writing-js/4-testing/pow-nan.view/test.js +++ /dev/null @@ -1,26 +0,0 @@ -describe("pow", function() { - - describe("возводит x в степень n", function() { - - function makeTest(x) { - var expected = x * x * x; - it("при возведении " + x + " в степень 3 результат: " + expected, function() { - assert.equal(pow(x, 3), expected); - }); - } - - for (var x = 1; x <= 5; x++) { - makeTest(x); - } - - }); - - it("при возведении в отрицательную степень результат NaN", function() { - assert(isNaN(pow(2, -1))); - }); - - it("при возведении в дробную степень результат NaN", function() { - assert(isNaN(pow(2, 1.5))); - }); - -}); \ No newline at end of file diff --git a/1-js/3-writing-js/index.md b/1-js/3-writing-js/index.md deleted file mode 100644 index 96320c44..00000000 --- a/1-js/3-writing-js/index.md +++ /dev/null @@ -1,8 +0,0 @@ -# Качество кода - -Для того, чтобы код был качественным, необходимы как минимум: -
        -
      1. Умение отладить код и поправить ошибки.
      2. -
      3. Хороший стиль кода.
      4. -
      5. Тестировать код, желательно -- в автоматическом режиме.
      6. -
      \ No newline at end of file diff --git a/1-js/4-data-structures/1-properties-and-methods/article.md b/1-js/4-data-structures/1-properties-and-methods/article.md deleted file mode 100644 index 2deef52d..00000000 --- a/1-js/4-data-structures/1-properties-and-methods/article.md +++ /dev/null @@ -1,118 +0,0 @@ -# Введение в методы и свойства - -Все значения в JavaScript, за исключением `null` и `undefined`, содержат набор вспомогательных функций и значений, доступных "через точку". - -Такие функции называют "методами", а значения -- "свойствами". Здесь мы рассмотрим основы использования свойств и методов. - -[cut] - -## Свойство str.length - -У строки есть *свойство* `length`, содержащее длину: - -```js -//+ run -alert( "Привет, мир!".length ); // 12 -``` - -Можно и записать строку в переменную, а потом запросить её свойство: - -```js -//+ run -var str = "Привет, мир!"; -alert( str.length ); // 12 -``` - -## Метод str.toUpperCase() - -Также у строк есть *метод* `toUpperCase()`, который возвращает строку в верхнем регистре: - -```js -//+ run -var hello = "Привет, мир!"; - -*!* -alert( hello.toUpperCase() ); // "ПРИВЕТ, МИР!" -*/!* -``` - -[warn header="Вызов метода -- через круглые скобки!"] - -Обратите внимание, для вызова метода обязательно нужны круглые скобки. - -Посмотрите, например, результат обращения к `toUpperCase` без скобок: - -```js -//+ run -var hello = "Привет"; - -*!* -alert( hello.toUpperCase ); // function... -*/!* -``` - -Метод -- это встроенная команда ("функция", мы поговорим о них позже), которую нужно вызвать для получения значения. При обращении без скобок мы получим саму эту функцию. Как правило браузер выведет её как-то так: `"function toUpperCase() { ... }"`. - -А чтобы получить результат -- нужно произвести её вызов, добавив скобки: - -```js -//+ run -var hello = "Привет"; - -*!* -alert( hello.toUpperCase() ); // ПРИВЕТ -*/!* -``` - -[/warn] - -Более подробно с различными свойствами и методами строк мы познакомимся в главе [](/string). - -## Метод num.toFixed(n) - -Есть методы и у чисел, например `num.toFixed(n)`. Он округляет число `num` до `n` знаков после запятой, при необходимости добивает нулями до данной длины и возвращает в виде строки (удобно для форматированного вывода): - -```js -//+ run -var n = 12.345; - -alert( n.toFixed(2) ); // "12.35" -alert( n.toFixed(0) ); // "12" -alert( n.toFixed(5) ); // "12.34500" -``` - -Детали работы `toFixed` разобраны в главе [](/number). - -[warn header="Обращение к методам чисел"] -К методу числа можно обратиться и напрямую: - -```js -//+ run -alert( 12.34.toFixed(1) ); // 12.3 -``` - -...Но если число целое, то будет проблема: - -```js -//+ run no-beautify -alert(12.toFixed(1)); // ошибка! -``` - -Ошибка произойдёт потому, что JavaScript ожидает десятичную дробь после точки. - -Это -- особенность синтаксиса JavaScript. Вот так -- будет работать: - -```js -//+ run -alert( 12..toFixed(1) ); // 12.0 -``` - -[/warn] - -## Итого - -В этой главе мы познакомились с методами и свойствами. - -Почти все значения в JavaScript, кроме разве что `null` и `undefined` имеют их и предоставляют через них разный функционал. - -Далее мы подробно разберём основные свойства и методы структур данных в JavaScript. diff --git a/1-js/4-data-structures/10-arguments-pseudoarray/1-check-arguments-undefined/solution.md b/1-js/4-data-structures/10-arguments-pseudoarray/1-check-arguments-undefined/solution.md deleted file mode 100644 index 492f3c7a..00000000 --- a/1-js/4-data-structures/10-arguments-pseudoarray/1-check-arguments-undefined/solution.md +++ /dev/null @@ -1,12 +0,0 @@ -Узнать количество реально переданных аргументов можно по значению `arguments.length`: - -```js -//+ run -function f(x) { - alert( arguments.length ? 1 : 0 ); -} - -f(undefined); -f(); -``` - diff --git a/1-js/4-data-structures/10-arguments-pseudoarray/1-check-arguments-undefined/task.md b/1-js/4-data-structures/10-arguments-pseudoarray/1-check-arguments-undefined/task.md deleted file mode 100644 index bc3afc77..00000000 --- a/1-js/4-data-structures/10-arguments-pseudoarray/1-check-arguments-undefined/task.md +++ /dev/null @@ -1,16 +0,0 @@ -# Проверка на аргумент-undefined - -[importance 5] - -Как в функции отличить отсутствующий аргумент от `undefined`? - -```js -function f(x) { - // ..ваш код.. - // выведите 1, если первый аргумент есть, и 0 - если нет -} - -f(undefined); // 1 -f(); // 0 -``` - diff --git a/1-js/4-data-structures/10-arguments-pseudoarray/2-sum-arguments/solution.md b/1-js/4-data-structures/10-arguments-pseudoarray/2-sum-arguments/solution.md deleted file mode 100644 index 1cc6573b..00000000 --- a/1-js/4-data-structures/10-arguments-pseudoarray/2-sum-arguments/solution.md +++ /dev/null @@ -1,21 +0,0 @@ - - -```js -//+ run -function sum() { - var result = 0; - - for (var i = 0; i < arguments.length; i++) { - result += arguments[i]; - } - - return result; -} - -alert( sum() ); // 0 -alert( sum(1) ); // 1 -alert( sum(1, 2) ); // 3 -alert( sum(1, 2, 3) ); // 6 -alert( sum(1, 2, 3, 4) ); // 10 -``` - diff --git a/1-js/4-data-structures/10-arguments-pseudoarray/2-sum-arguments/task.md b/1-js/4-data-structures/10-arguments-pseudoarray/2-sum-arguments/task.md deleted file mode 100644 index 771e3d76..00000000 --- a/1-js/4-data-structures/10-arguments-pseudoarray/2-sum-arguments/task.md +++ /dev/null @@ -1,14 +0,0 @@ -# Сумма аргументов - -[importance 5] - -Напишите функцию `sum(...)`, которая возвращает сумму всех своих аргументов: - -```js -sum() = 0 -sum(1) = 1 -sum(1, 2) = 3 -sum(1, 2, 3) = 6 -sum(1, 2, 3, 4) = 10 -``` - diff --git a/1-js/4-data-structures/10-arguments-pseudoarray/article.md b/1-js/4-data-structures/10-arguments-pseudoarray/article.md deleted file mode 100644 index 12bf784e..00000000 --- a/1-js/4-data-structures/10-arguments-pseudoarray/article.md +++ /dev/null @@ -1,428 +0,0 @@ -# Псевдомассив аргументов "arguments" - -В JavaScript любая функция может быть вызвана с произвольным количеством аргументов. - -[cut] -Например: - -```js -//+ run no-beautify -function go(a,b) { - alert("a="+a+", b="+b); -} - -go(1); // a=1, b=undefined -go(1,2); // a=1, b=2 -go(1,2,3); // a=1, b=2, третий аргумент не вызовет ошибку -``` - -[smart header="В JavaScript нет \"перегрузки\" функций"] - -В некоторых языках программист может создать две функции с одинаковым именем, но разным набором аргументов, а при вызове интерпретатор сам выберет нужную: - -```js -function log(a) { - ... -} - -function log(a, b, c) { - ... -} - -*!* -log(a); // вызовется первая функция -log(a, b, c); // вызовется вторая функция -*/!* -``` - -Это называется "полиморфизмом функций" или "перегрузкой функций". В JavaScript ничего подобного нет. - -**Может быть только одна функция с именем `log`, которая вызывается с любыми аргументами.** - -А уже внутри она может посмотреть, с чем вызвана и по-разному отработать. - -В примере выше второе объявление `log` просто переопределит первое. -[/smart] - -## Доступ к "лишним" аргументам - -Как получить значения аргументов, которых нет в списке параметров? - -Доступ к ним осуществляется через "псевдо-массив"
      arguments. - -Он содержит список аргументов по номерам: `arguments[0]`, `arguments[1]`..., а также свойство `length`. - -Например, выведем список всех аргументов: - -```js -//+ run -function sayHi() { - for (var i = 0; i < arguments.length; i++) { - alert( "Привет, " + arguments[i] ); - } -} - -sayHi("Винни", "Пятачок"); // 'Привет, Винни', 'Привет, Пятачок' -``` - -Все параметры находятся в `arguments`, даже если они есть в списке. Код выше сработал бы также, будь функция объявлена `sayHi(a,b,c)`. - - -[warn header="Связь между `arguments` и параметрами"] - -**В старом стандарте JavaScript псевдо-массив `arguments` и переменные-параметры ссылаются на одни и те же значения.** - -В результате изменения `arguments` влияют на параметры и наоборот. - -Например: - -```js -//+ run -function f(x) { - arguments[0] = 5; // меняет переменную x - alert( x ); // 5 -} - -f(1); -``` - -Наоборот: - -```js -//+ run -function f(x) { - x = 5; - alert( arguments[0] ); // 5, обновленный x -} - -f(1); -``` - -В современной редакции стандарта это поведение изменено. Аргументы отделены от локальных переменных: - -```js -//+ run -function f(x) { - "use strict"; // для браузеров с поддержкой строгого режима - - arguments[0] = 5; - alert( x ); // не 5, а 1! Переменная "отвязана" от arguments -} - -f(1); -``` - -**Если вы не используете строгий режим, то чтобы переменные не менялись "неожиданно", рекомендуется никогда не изменять `arguments`.** -[/warn] - -### arguments -- это не массив - -Частая ошибка новичков -- попытка применить методы `Array` к `arguments`. Это невозможно: - -```js -//+ run -function sayHi() { - var a = arguments.shift(); // ошибка! нет такого метода! -} - -sayHi(1); -``` - -Дело в том, что `arguments` -- это не массив `Array`. - -В действительности, это обычный объект, просто ключи числовые и есть `length`. На этом сходство заканчивается. Никаких особых методов у него нет, и методы массивов он тоже не поддерживает. - -Впрочем, никто не мешает сделать обычный массив из `arguments`, например так: - -```js -//+ run -var args = []; -for (var i = 0; i < arguments.length; i++) { - args[i] = arguments[i]; -} -``` - -Такие объекты иногда называют *"коллекциями"* или *"псевдомассивами"*. - -## Пример: копирование свойств copy(dst, src1, src2...) [#copy] - -Иногда встаёт задача -- скопировать в существующий объект свойства из одного или нескольких других. - -Напишем для этого функцию `copy`. Она будет работать с любым числом аргументов, благодаря использованию `arguments`. - -Синтаксис: -
      -
      copy(dst, src1, src2...)
      -
      Копирует свойства из объектов `src1, src2,...` в объект `dst`. Возвращает получившийся объект.
      -
      - -Использование: - -
        -
      • Для объединения нескольких объектов в один: - -```js -//+ run -var vasya = { - age: 21, - name: 'Вася', - surname: 'Петров' -}; - -var user = { - isAdmin: false, - isEmailConfirmed: true -}; - -var student = { - university: 'My university' -}; - -// добавить к vasya свойства из user и student -*!* -copy(vasya, user, student); -*/!* - -alert( vasya.isAdmin ); // false -alert( vasya.university ); // My university -``` - -
      • -
      • Для создания копии объекта `user`: - -```js -// скопирует все свойства в пустой объект -var userClone = copy({}, user); -``` - -Такой "клон" объекта может пригодиться там, где мы хотим изменять его свойства, при этом не трогая исходный объект `user`. - -В нашей реализации мы будем копировать только свойства первого уровня, то есть вложенные объекты как-то особым образом не обрабатываются. Впрочем, её можно расширить.
      • -
      - -А вот и реализация: - -```js -//+ autorun -function copy() { - var dst = arguments[0]; - - for (var i = 1; i < arguments.length; i++) { - var arg = arguments[i]; - for (var key in arg) { - dst[key] = arg[key]; - } - } - - return dst; -} -``` - -Здесь первый аргумент `copy` -- это объект, в который нужно копировать, он назван `dst`. Для упрощения доступа к нему можно указать его прямо в объявлении функции: - -```js -*!* -function copy(dst) { -*/!* - // остальные аргументы остаются безымянными - for (var i = 1; i < arguments.length; i++) { - var arg = arguments[i]; - for (var key in arg) { - dst[key] = arg[key]; - } - } - - return dst; -} -``` - -### Аргументы по умолчанию через || - -Если функция вызвана с меньшим количеством аргументов, чем указано, то отсутствующие аргументы считаются равными `undefined`. - -Зачастую в случае отсутствия аргумента мы хотим присвоить ему некоторое "стандартное" значение или, иначе говоря, значение "по умолчанию". Это можно удобно сделать при помощи оператора логическое ИЛИ `||`. - -Например, функция `showWarning`, описанная ниже, должна показывать предупреждение. Для этого она принимает ширину `width`, высоту `height`, заголовок `title` и содержимое `contents`, но большая часть этих аргументов необязательна: - -```js -function showWarning(width, height, title, contents) { - width = width || 200; // если не указана width, то width = 200 - height = height || 100; // если нет height, то height = 100 - title = title || "Предупреждение"; - - //... -} -``` - -Это отлично работает в тех ситуациях, когда "нормальное" значение параметра в логическом контексте отлично от `false`. В коде выше, при передаче `width = 0` или `width = null`, оператор ИЛИ заменит его на значение по умолчанию. - -А что, если мы хотим использовать значение по умолчанию только если `width === undefined`? В этом случае оператор ИЛИ уже не подойдёт, нужно поставить явную проверку: - -```js -function showWarning(width, height, title, contents) { - if (width === undefined) width = 200; - if (height === undefined) height = 100; - if (title === undefined) title = "Предупреждение"; - - //... -} -``` - -## Устаревшее свойство arguments.callee [#arguments-callee] - -[warn header="Используйте NFE вместо `arguments.callee`"] -Это свойство устарело, при `use strict` оно не работает. - -Единственная причина, по которой оно тут -- это то, что его можно встретить в старом коде, поэтому о нём желательно знать. - -Современная спецификация рекомендует использовать ["именованные функциональные выражения (NFE)"](#functions-nfe). - -[/warn] - -В старом стандарте JavaScript объект `arguments` не только хранил список аргументов, но и содержал в свойстве `arguments.callee` ссылку на функцию, которая выполняется в данный момент. - -Например: - -```js -//+ run -function f() { - alert( arguments.callee === f ); // true -} - -f(); -``` - -Эти два примера будут работать одинаково: - -```js -// подвызов через NFE -var factorial = function f(n) { - return n==1 ? 1 : n**!*f(n-1)*/!*; -}; - -// подвызов через arguments.callee -var factorial = function(n) { - return n==1 ? 1 : n**!*arguments.callee(n-1)*/!*; -}; -``` - -В учебнике мы его использовать не будем, оно приведено для общего ознакомления. - -### arguments.callee.caller - -Устаревшее свойство `arguments.callee.caller` хранит ссылку на *функцию, которая вызвала данную*. - -[warn header="Это свойство тоже устарело"] -Это свойство было в старом стандарте, при `use strict` оно не работает, как и `arguments.callee`. - -Также ранее существовало более короткое свойство `arguments.caller`. Но это уже раритет, оно даже не кросс-браузерное. А вот свойство `arguments.callee.caller` поддерживается везде, если не использован `use strict`, поэтому в старом коде оно встречается. -[/warn] - -Пример работы: - -```js -//+ run -f1(); - -function f1() { - alert( arguments.callee.caller ); // null, меня вызвали из глобального кода - f2(); -} - -function f2() { - alert( arguments.callee.caller ); // f1, функция, из которой меня вызвали - f3(); -} - -function f3() { - alert( arguments.callee.caller ); // f2, функция, из которой меня вызвали -} -``` - -В учебнике мы это свойство также не будем использовать. - - -## "Именованные аргументы" - -*Именованные аргументы* -- альтернативная техника работы с аргументами, которая вообще не использует `arguments`. - -Некоторые языки программирования позволяют передать параметры как-то так: `f(width=100, height=200)`, то есть по именам, а что не передано, тех аргументов нет. Это очень удобно в тех случаях, когда аргументов много, сложно запомнить их порядок и большинство вообще не надо передавать, по умолчанию подойдёт. - -Такая ситуация часто встречается в компонентах интерфейса. Например, у "меню" может быть масса настроек отображения, которые можно "подкрутить" но обычно нужно передать всего один-два главных параметра, а остальные возьмутся по умолчанию. - -В JavaScript для этих целей используется передача аргументов в виде объекта, а в его свойствах мы передаём параметры. - -Получается так: - -```js -function showWarning(options) { - var width = options.width || 200; // по умолчанию - var height = options.height || 100; - - var title = options.title || "Предупреждение"; - - // ... -} - -showWarning({ -``` - -Вызвать такую функцию очень легко. Достаточно передать объект аргументов, указав в нем только нужные: - -```js -showWarning({ - contents: "Вы вызвали функцию" // и всё понятно! -}); -``` - -Сравним это с передачей аргументов через список: - -```js -showWarning(null, null, "Предупреждение!"); -// мысль программиста "а что это за null, null в начале? ох, надо глядеть описание функции" -``` - -Не правда ли, объект -- гораздо проще и понятнее? - -Еще один бонус кроме красивой записи -- возможность повторного использования объекта аргументов: - -```js -var opts = { - width: 400, - height: 200, - contents: "Текст" -}; - -showWarning(opts); - -opts.contents = "Другой текст"; - -*!* -showWarning(opts); // вызвать с новым текстом, без копирования других аргументов -*/!* -``` - -Именованные аргументы применяются во многих JavaScript-фреймворках. - - - - -## Итого - -
        -
      • Полный список аргументов, с которыми вызвана функция, доступен через `arguments`.
      • -
      • Это псевдомассив, то есть объект, который похож на массив, в нём есть нумерованные свойства и `length`, но методов массива у него нет.
      • -
      • В старом стандарте было свойство `arguments.callee` со ссылкой на текущую функцию, а также свойство `arguments.callee.caller`, содержащее ссылку на функцию, которая вызвала данную. Эти свойства устарели, при `use strict` обращение к ним приведёт к ошибке.
      • -
      • Для указания аргументов по умолчанию, в тех случаях, когда они заведомо не `false`, удобен оператор `||`.
      • -
      - -В тех случаях, когда возможных аргументов много и, в особенности, когда большинство их имеют значения по умолчанию, вместо работы с `arguments` организуют передачу данных через объект, который как правило называют `options`. - -Возможен и гибридный подход, при котором первый аргумент обязателен, а второй -- `options`, который содержит всевозможные дополнительные параметры: - -```js -function showMessage(text, options) { - // показать сообщение text, настройки показа указаны в options -} -``` - diff --git a/1-js/4-data-structures/11-datetime/1-new-date/solution.md b/1-js/4-data-structures/11-datetime/1-new-date/solution.md deleted file mode 100644 index 6ae34f4f..00000000 --- a/1-js/4-data-structures/11-datetime/1-new-date/solution.md +++ /dev/null @@ -1,10 +0,0 @@ -Дата в местной временной зоне создается при помощи `new Date`. - -Месяцы начинаются с нуля, так что февраль имеет номер 1. Параметры можно указывать с точностью до минут: - -```js -//+ run -var d = new Date(2012, 1, 20, 3, 12); -alert( d ); -``` - diff --git a/1-js/4-data-structures/11-datetime/1-new-date/task.md b/1-js/4-data-structures/11-datetime/1-new-date/task.md deleted file mode 100644 index c96882ac..00000000 --- a/1-js/4-data-structures/11-datetime/1-new-date/task.md +++ /dev/null @@ -1,7 +0,0 @@ -# Создайте дату - -[importance 5] - -Создайте объект `Date` для даты: 20 февраля 2012 года, 3 часа 12 минут. - -Временная зона -- местная. Выведите его на экран. \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/2-get-week-day/_js.view/solution.js b/1-js/4-data-structures/11-datetime/2-get-week-day/_js.view/solution.js deleted file mode 100644 index b007feda..00000000 --- a/1-js/4-data-structures/11-datetime/2-get-week-day/_js.view/solution.js +++ /dev/null @@ -1,5 +0,0 @@ -function getWeekDay(date) { - var days = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб']; - - return days[date.getDay()]; -} \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/2-get-week-day/_js.view/test.js b/1-js/4-data-structures/11-datetime/2-get-week-day/_js.view/test.js deleted file mode 100644 index 5b57b663..00000000 --- a/1-js/4-data-structures/11-datetime/2-get-week-day/_js.view/test.js +++ /dev/null @@ -1,29 +0,0 @@ -describe("getWeekDay", function() { - it("3 января 2014 - пятница", function() { - assert.equal(getWeekDay(new Date(2014, 0, 3)), 'пт'); - }); - - it("4 января 2014 - суббота", function() { - assert.equal(getWeekDay(new Date(2014, 0, 4)), 'сб'); - }); - - it("5 января 2014 - воскресенье", function() { - assert.equal(getWeekDay(new Date(2014, 0, 5)), 'вс'); - }); - - it("6 января 2014 - понедельник", function() { - assert.equal(getWeekDay(new Date(2014, 0, 6)), 'пн'); - }); - - it("7 января 2014 - вторник", function() { - assert.equal(getWeekDay(new Date(2014, 0, 7)), 'вт'); - }); - - it("8 января 2014 - среда", function() { - assert.equal(getWeekDay(new Date(2014, 0, 8)), 'ср'); - }); - - it("9 января 2014 - четверг", function() { - assert.equal(getWeekDay(new Date(2014, 0, 9)), 'чт'); - }); -}); \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/2-get-week-day/solution.md b/1-js/4-data-structures/11-datetime/2-get-week-day/solution.md deleted file mode 100644 index 29c3e37a..00000000 --- a/1-js/4-data-structures/11-datetime/2-get-week-day/solution.md +++ /dev/null @@ -1,22 +0,0 @@ -Метод `getDay()` позволяет получить номер дня недели, начиная с воскресенья. - -Запишем имена дней недели в массив, чтобы можно было их достать по номеру: - -```js -//+ run -function getWeekDay(date) { - var days = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб']; - - return days[date.getDay()]; -} - -var date = new Date(2014, 0, 3); // 3 января 2014 -alert( getWeekDay(date) ); // 'пт' -``` - -В современных браузерах можно использовать и `toLocaleString`: -```js -//+ run -var date = new Date(2014, 0, 3); // 3 января 2014 -alert( date.toLocaleString('ru', {weekday: 'short'}) ); // 'Пт' -``` \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/2-get-week-day/task.md b/1-js/4-data-structures/11-datetime/2-get-week-day/task.md deleted file mode 100644 index 1918fdbc..00000000 --- a/1-js/4-data-structures/11-datetime/2-get-week-day/task.md +++ /dev/null @@ -1,14 +0,0 @@ -# Имя дня недели - -[importance 5] - -Создайте функцию `getWeekDay(date)`, которая выводит текущий день недели в коротком формате 'пн', 'вт', ... 'вс'. - -Например: - -```js -//+ no-beautify -var date = new Date(2012,0,3); // 3 января 2012 -alert( getWeekDay(date) ); // Должно вывести 'вт' -``` - diff --git a/1-js/4-data-structures/11-datetime/3-weekday/_js.view/solution.js b/1-js/4-data-structures/11-datetime/3-weekday/_js.view/solution.js deleted file mode 100644 index 429ce1e9..00000000 --- a/1-js/4-data-structures/11-datetime/3-weekday/_js.view/solution.js +++ /dev/null @@ -1,10 +0,0 @@ -function getLocalDay(date) { - - var day = date.getDay(); - - if (day == 0) { // день 0 становится 7 - day = 7; - } - - return day; -} \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/3-weekday/_js.view/test.js b/1-js/4-data-structures/11-datetime/3-weekday/_js.view/test.js deleted file mode 100644 index 940be025..00000000 --- a/1-js/4-data-structures/11-datetime/3-weekday/_js.view/test.js +++ /dev/null @@ -1,29 +0,0 @@ -describe("getLocalDay возвращает день недели", function() { - it("3 января 2014 - пятница", function() { - assert.equal(getLocalDay(new Date(2014, 0, 3)), 5); - }); - - it("4 января 2014 - суббота", function() { - assert.equal(getLocalDay(new Date(2014, 0, 4)), 6); - }); - - it("5 января 2014 - воскресенье", function() { - assert.equal(getLocalDay(new Date(2014, 0, 5)), 7); - }); - - it("6 января 2014 - понедельник", function() { - assert.equal(getLocalDay(new Date(2014, 0, 6)), 1); - }); - - it("7 января 2014 - вторник", function() { - assert.equal(getLocalDay(new Date(2014, 0, 7)), 2); - }); - - it("8 января 2014 - среда", function() { - assert.equal(getLocalDay(new Date(2014, 0, 8)), 3); - }); - - it("9 января 2014 - четверг", function() { - assert.equal(getLocalDay(new Date(2014, 0, 9)), 4); - }); -}); \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/3-weekday/solution.md b/1-js/4-data-structures/11-datetime/3-weekday/solution.md deleted file mode 100644 index 80508b2b..00000000 --- a/1-js/4-data-structures/11-datetime/3-weekday/solution.md +++ /dev/null @@ -1,19 +0,0 @@ -Решение - в использовании встроенной функции `getDay`. Она полностью подходит нашим целям, но для воскресенья возвращает 0 вместо 7: - -```js -//+ run -function getLocalDay(date) { - - var day = date.getDay(); - - if (day == 0) { // день 0 становится 7 - day = 7; - } - - return day; -} - -alert( getLocalDay(new Date(2012, 0, 3)) ); // 2 -``` - -Если удобнее, чтобы день недели начинался с нуля, то можно возвращать в функции `day - 1`, тогда дни будут от 0 (пн) до 6(вс). \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/3-weekday/task.md b/1-js/4-data-structures/11-datetime/3-weekday/task.md deleted file mode 100644 index 9f2d264e..00000000 --- a/1-js/4-data-structures/11-datetime/3-weekday/task.md +++ /dev/null @@ -1,14 +0,0 @@ -# День недели в европейской нумерации - -[importance 5] - -Напишите функцию, `getLocalDay(date)` которая возвращает день недели для даты `date`. - -День нужно возвратить в европейской нумерации, т.е. понедельник имеет номер 1, вторник номер 2, ..., воскресенье - номер 7. - -```js -//+ no-beautify -var date = new Date(2012, 0, 3); // 3 янв 2012 -alert( getLocalDay(date) ); // вторник, выведет 2 -``` - diff --git a/1-js/4-data-structures/11-datetime/4-get-date-ago/_js.view/solution.js b/1-js/4-data-structures/11-datetime/4-get-date-ago/_js.view/solution.js deleted file mode 100644 index f63438c6..00000000 --- a/1-js/4-data-structures/11-datetime/4-get-date-ago/_js.view/solution.js +++ /dev/null @@ -1,6 +0,0 @@ -function getDateAgo(date, days) { - var dateCopy = new Date(date); - - dateCopy.setDate(date.getDate() - days); - return dateCopy.getDate(); -} \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/4-get-date-ago/_js.view/test.js b/1-js/4-data-structures/11-datetime/4-get-date-ago/_js.view/test.js deleted file mode 100644 index b8d25bf5..00000000 --- a/1-js/4-data-structures/11-datetime/4-get-date-ago/_js.view/test.js +++ /dev/null @@ -1,27 +0,0 @@ -describe("getDateAgo", function() { - - it("1 день до 02.01.2015 -> число 1", function() { - assert.equal(getDateAgo(new Date(2015, 0, 2), 1), 1); - }); - - - it("2 день до 02.01.2015 -> число 31", function() { - assert.equal(getDateAgo(new Date(2015, 0, 2), 2), 31); - }); - - it("100 дней от 02.01.2015 -> число 24", function() { - assert.equal(getDateAgo(new Date(2015, 0, 2), 100), 24); - }); - - it("365 дней от 02.01.2015 -> число 2", function() { - assert.equal(getDateAgo(new Date(2015, 0, 2), 365), 2); - }); - - it("не меняет переданный объект Date", function() { - var date = new Date(2015, 0, 2); - var dateCopy = new Date(date); - getDateAgo(dateCopy, 100); - assert.equal(date.getTime(), dateCopy.getTime()); - }); - -}); \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/4-get-date-ago/solution.md b/1-js/4-data-structures/11-datetime/4-get-date-ago/solution.md deleted file mode 100644 index aa1bcb0b..00000000 --- a/1-js/4-data-structures/11-datetime/4-get-date-ago/solution.md +++ /dev/null @@ -1,29 +0,0 @@ -Из даты `date` нужно вычесть указанное количество дней. Это просто: - -```js -function getDateAgo(date, days) { - date.setDate(date.getDate() - days); - return date.getDate(); -} -``` - -Ситуацию осложняет то, что исходный объект даты не должен меняться. Это разумное требование, оно позволит избежать сюрпризов. - -Для того чтобы ему соответствовать, создадим копию объекта даты: - -```js -//+ run -function getDateAgo(date, days) { - var dateCopy = new Date(date); - - dateCopy.setDate(date.getDate() - days); - return dateCopy.getDate(); -} - -var date = new Date(2015, 0, 2); - -alert( getDateAgo(date, 1) ); // 1, (1 января 2015) -alert( getDateAgo(date, 2) ); // 31, (31 декабря 2014) -alert( getDateAgo(date, 365) ); // 2, (2 января 2014) -``` - diff --git a/1-js/4-data-structures/11-datetime/4-get-date-ago/task.md b/1-js/4-data-structures/11-datetime/4-get-date-ago/task.md deleted file mode 100644 index 0db7847b..00000000 --- a/1-js/4-data-structures/11-datetime/4-get-date-ago/task.md +++ /dev/null @@ -1,17 +0,0 @@ -# День указанное количество дней назад - -[importance 4] - -Создайте функцию `getDateAgo(date, days)`, которая возвращает число, которое было `days` дней назад от даты `date`. - -Например, для 2 января 2015: - -```js -var date = new Date(2015, 0, 2); - -alert( getDateAgo(date, 1) ); // 1, (1 января 2015) -alert( getDateAgo(date, 2) ); // 31, (31 декабря 2014) -alert( getDateAgo(date, 365) ); // 2, (2 января 2014) -``` - -P.S. Важная деталь: в процессе вычислений функция не должна менять переданный ей объект `date`. diff --git a/1-js/4-data-structures/11-datetime/5-last-day-of-month/_js.view/solution.js b/1-js/4-data-structures/11-datetime/5-last-day-of-month/_js.view/solution.js deleted file mode 100644 index 4463d1d7..00000000 --- a/1-js/4-data-structures/11-datetime/5-last-day-of-month/_js.view/solution.js +++ /dev/null @@ -1,4 +0,0 @@ -function getLastDayOfMonth(year, month) { - var date = new Date(year, month + 1, 0); - return date.getDate(); -} \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/5-last-day-of-month/_js.view/test.js b/1-js/4-data-structures/11-datetime/5-last-day-of-month/_js.view/test.js deleted file mode 100644 index f345d490..00000000 --- a/1-js/4-data-structures/11-datetime/5-last-day-of-month/_js.view/test.js +++ /dev/null @@ -1,13 +0,0 @@ -describe("getLastDayOfMonth", function() { - it("последний день 01.01.2012 - 31", function() { - assert.equal(getLastDayOfMonth(2012, 0), 31); - }); - - it("последний день 01.02.2012 - 29 (високосный год)", function() { - assert.equal(getLastDayOfMonth(2012, 1), 29); - }); - - it("последний день 01.02.2013 - 28", function() { - assert.equal(getLastDayOfMonth(2013, 1), 28); - }); -}); \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/5-last-day-of-month/solution.md b/1-js/4-data-structures/11-datetime/5-last-day-of-month/solution.md deleted file mode 100644 index 3bbca8c5..00000000 --- a/1-js/4-data-structures/11-datetime/5-last-day-of-month/solution.md +++ /dev/null @@ -1,14 +0,0 @@ -Создадим дату из следующего месяца, но день не первый, а "нулевой" (т.е. предыдущий): - -```js -//+ run -function getLastDayOfMonth(year, month) { - var date = new Date(year, month + 1, 0); - return date.getDate(); -} - -alert( getLastDayOfMonth(2012, 0) ); // 31 -alert( getLastDayOfMonth(2012, 1) ); // 29 -alert( getLastDayOfMonth(2013, 1) ); // 28 -``` - diff --git a/1-js/4-data-structures/11-datetime/5-last-day-of-month/task.md b/1-js/4-data-structures/11-datetime/5-last-day-of-month/task.md deleted file mode 100644 index 8f88e971..00000000 --- a/1-js/4-data-structures/11-datetime/5-last-day-of-month/task.md +++ /dev/null @@ -1,13 +0,0 @@ -# Последний день месяца? - -[importance 5] - -Напишите функцию `getLastDayOfMonth(year, month)`, которая возвращает последний день месяца. - -Параметры: -
        -
      • `year` -- 4-значный год, например 2012.
      • -
      • `month` -- месяц от 0 до 11.
      • -
      - -Например, `getLastDayOfMonth(2012, 1) = 29` (високосный год, февраль). diff --git a/1-js/4-data-structures/11-datetime/6-get-seconds-today/solution.md b/1-js/4-data-structures/11-datetime/6-get-seconds-today/solution.md deleted file mode 100644 index 1ecd8219..00000000 --- a/1-js/4-data-structures/11-datetime/6-get-seconds-today/solution.md +++ /dev/null @@ -1,28 +0,0 @@ -Для вывода достаточно сгенерировать объект `Date`, соответствующий началу дня, т.е. "сегодня" 00 часов 00 минут 00 секунд, и вычесть его из текущей даты. - -Полученная разница -- это как раз количество миллисекунд от начала дня, которое достаточно поделить на `1000`, чтобы получить секунды: - -```js -//+ run -function getSecondsToday() { - var now = new Date(); - - // создать объект из текущей даты, без часов-минут-секунд - var today = new Date(now.getFullYear(), now.getMonth(), now.getDate()); - - var diff = now - today; // разница в миллисекундах - return Math.round(diff / 1000); // перевести в секунды -} - -alert( getSecondsToday() ); -``` - -Альтернативное решение -- получить часы/минуты/секунды и преобразовать их все в секунды: - -```js -//+ run -function getSecondsToday() { - var d = new Date(); - return d.getHours() * 3600 + d.getMinutes() * 60 + d.getSeconds(); -}; -``` \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/6-get-seconds-today/task.md b/1-js/4-data-structures/11-datetime/6-get-seconds-today/task.md deleted file mode 100644 index 0b8cde4a..00000000 --- a/1-js/4-data-structures/11-datetime/6-get-seconds-today/task.md +++ /dev/null @@ -1,13 +0,0 @@ -# Сколько секунд уже прошло сегодня? - -[importance 5] - -Напишите функцию `getSecondsToday()` которая возвращает, сколько секунд прошло с начала сегодняшнего дня. - -Например, если сейчас `10:00` и не было перехода на зимнее/летнее время, то: - -```js -getSecondsToday() == 36000 // (3600 * 10) -``` - -Функция должна работать в любой день, т.е. в ней не должно быть конкретного значения сегодняшней даты. \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/7-get-seconds-to-tomorrow/solution.md b/1-js/4-data-structures/11-datetime/7-get-seconds-to-tomorrow/solution.md deleted file mode 100644 index 8aade9c9..00000000 --- a/1-js/4-data-structures/11-datetime/7-get-seconds-to-tomorrow/solution.md +++ /dev/null @@ -1,16 +0,0 @@ -Для получения оставшихся до конца дня миллисекунд нужно из "завтра 00ч 00мин 00сек" вычесть текущее время. - -Чтобы сгенерировать "завтра" -- увеличим текущую дату на 1 день: - -```js -//+ run -function getSecondsToTomorrow() { - var now = new Date(); - - // создать объект из завтрашней даты, без часов-минут-секунд - var tomorrow = new Date(now.getFullYear(), now.getMonth(), *!*now.getDate()+1*/!*); - - var diff = tomorrow - now; // разница в миллисекундах - return Math.round(diff / 1000); // перевести в секунды -} -``` diff --git a/1-js/4-data-structures/11-datetime/7-get-seconds-to-tomorrow/task.md b/1-js/4-data-structures/11-datetime/7-get-seconds-to-tomorrow/task.md deleted file mode 100644 index 93980a4f..00000000 --- a/1-js/4-data-structures/11-datetime/7-get-seconds-to-tomorrow/task.md +++ /dev/null @@ -1,13 +0,0 @@ -# Сколько секунд - до завтра? - -[importance 5] - -Напишите функцию `getSecondsToTomorrow()` которая возвращает, сколько секунд осталось до завтра. - -Например, если сейчас `23:00`, то: - -```js -getSecondsToTomorrow() == 3600 -``` - -P.S. Функция должна работать в любой день, т.е. в ней не должно быть конкретного значения сегодняшней даты. \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/_js.view/solution.js b/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/_js.view/solution.js deleted file mode 100644 index e9498c8f..00000000 --- a/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/_js.view/solution.js +++ /dev/null @@ -1,13 +0,0 @@ -function formatDate(date) { - - var dd = date.getDate(); - if (dd < 10) dd = '0' + dd; - - var mm = date.getMonth() + 1; - if (mm < 10) mm = '0' + mm; - - var yy = date.getFullYear() % 100; - if (yy < 10) yy = '0' + yy; - - return dd + '.' + mm + '.' + yy; -} \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/_js.view/test.js b/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/_js.view/test.js deleted file mode 100644 index 79c28e36..00000000 --- a/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/_js.view/test.js +++ /dev/null @@ -1,13 +0,0 @@ -describe("formatDate", function() { - it("правильно форматирует дату 30.01.14", function() { - assert.equal(formatDate(new Date(2014, 0, 30)), '30.01.14'); - }); - - it("правильно форматирует дату 01.01.01", function() { - assert.equal(formatDate(new Date(2001, 0, 1)), '01.01.01'); - }); - - it("правильно форматирует дату 01.01.00", function() { - assert.equal(formatDate(new Date(2000, 0, 1)), '01.01.00'); - }); -}); \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/solution.md b/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/solution.md deleted file mode 100644 index 7f752c89..00000000 --- a/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/solution.md +++ /dev/null @@ -1,51 +0,0 @@ -Получим компоненты один за другим. -
        -
      1. День можно получить как `date.getDate()`. При необходимости добавим ведущий ноль: - -```js -var dd = date.getDate(); -if (dd < 10) dd = '0' + dd; -``` - -
      2. -
      3. `date.getMonth()` возвратит месяц, начиная с нуля. Увеличим его на 1: - -```js -var mm = date.getMonth() + 1; // месяц 1-12 -if (mm < 10) mm = '0' + mm; -``` - -
      4. -
      5. `date.getFullYear()` вернет год в 4-значном формате. Чтобы сделать его двузначным - воспользуемся оператором взятия остатка `'%'`: - -```js -var yy = date.getFullYear() % 100; -if (yy < 10) yy = '0' + yy; -``` - -Заметим, что год, как и другие компоненты, может понадобиться дополнить нулем слева, причем возможно что `yy == 0` (например, 2000 год). При сложении со строкой `0+'0' == '00'`, так что будет все в порядке. -
      6. -
      - -Полный код: - -```js -//+ run -function formatDate(date) { - - var dd = date.getDate(); - if (dd < 10) dd = '0' + dd; - - var mm = date.getMonth() + 1; - if (mm < 10) mm = '0' + mm; - - var yy = date.getFullYear() % 100; - if (yy < 10) yy = '0' + yy; - - return dd + '.' + mm + '.' + yy; -} - -var d = new Date(2014, 0, 30); // 30 Янв 2014 -alert( formatDate(d) ); // '30.01.14' -``` - diff --git a/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/task.md b/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/task.md deleted file mode 100644 index 820b0a4b..00000000 --- a/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/task.md +++ /dev/null @@ -1,14 +0,0 @@ -# Вывести дату в формате дд.мм.гг - -[importance 3] - -Напишите функцию `formatDate(date)`, которая выводит дату `date` в формате `дд.мм.гг`: - -Например: - -```js -var d = new Date(2014, 0, 30); // 30 января 2014 -alert( formatDate(d) ); // '30.01.14' -``` - -P.S. Обратите внимание, ведущие нули должны присутствовать, то есть 1 января 2001 должно быть 01.01.01, а не 1.1.1. \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/9-format-date-relative/_js.view/solution.js b/1-js/4-data-structures/11-datetime/9-format-date-relative/_js.view/solution.js deleted file mode 100644 index dd68b99a..00000000 --- a/1-js/4-data-structures/11-datetime/9-format-date-relative/_js.view/solution.js +++ /dev/null @@ -1,34 +0,0 @@ -function formatDate(date) { - var diff = new Date() - date; // разница в миллисекундах - - if (diff < 1000) { // прошло менее 1 секунды - return 'только что'; - } - - var sec = Math.floor(diff / 1000); // округлить diff до секунд - - if (sec < 60) { - return sec + ' сек. назад'; - } - - var min = Math.floor(diff / 60000); // округлить diff до минут - if (min < 60) { - return min + ' мин. назад'; - } - - // форматировать дату, с учетом того, что месяцы начинаются с 0 - var d = date; - d = [ - '0' + d.getDate(), - '0' + (d.getMonth() + 1), - '' + d.getFullYear(), - '0' + d.getHours(), - '0' + d.getMinutes() - ]; - - for (var i = 0; i < d.length; i++) { - d[i] = d[i].slice(-2); - } - - return d.slice(0, 3).join('.') + ' ' + d.slice(3).join(':'); -} \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/9-format-date-relative/_js.view/test.js b/1-js/4-data-structures/11-datetime/9-format-date-relative/_js.view/test.js deleted file mode 100644 index f3efc135..00000000 --- a/1-js/4-data-structures/11-datetime/9-format-date-relative/_js.view/test.js +++ /dev/null @@ -1,18 +0,0 @@ -describe("formatDate", function() { - it("выводит дату 1мс назад как \"только что\"", function() { - assert.equal(formatDate(new Date(new Date - 1)), 'только что'); - }); - - it('выводит дату "30 сек назад"', function() { - assert.equal(formatDate(new Date(new Date - 30 * 1000)), "30 сек. назад"); - }); - - it('выводит дату "5 мин назад"', function() { - assert.equal(formatDate(new Date(new Date - 5 * 60 * 1000)), "5 мин. назад"); - }); - - it("выводит старую дату в формате дд.мм.гг чч:мм", function() { - assert.equal(formatDate(new Date(2014, 2, 1, 11, 22, 33)), "01.03.14 11:22"); - }); - -}); \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/9-format-date-relative/solution.md b/1-js/4-data-structures/11-datetime/9-format-date-relative/solution.md deleted file mode 100644 index fb842d36..00000000 --- a/1-js/4-data-structures/11-datetime/9-format-date-relative/solution.md +++ /dev/null @@ -1,48 +0,0 @@ -Для того, чтобы узнать время от `date` до текущего момента - используем вычитание дат. - -```js -//+ run -function formatDate(date) { - var diff = new Date() - date; // разница в миллисекундах - - if (diff < 1000) { // прошло менее 1 секунды - return 'только что'; - } - - var sec = Math.floor(diff / 1000); // округлить diff до секунд - - if (sec < 60) { - return sec + ' сек. назад'; - } - - var min = Math.floor(diff / 60000); // округлить diff до минут - if (min < 60) { - return min + ' мин. назад'; - } - - // форматировать дату, с учетом того, что месяцы начинаются с 0 - var d = date; - d = [ - '0' + d.getDate(), - '0' + (d.getMonth() + 1), - '' + d.getFullYear(), - '0' + d.getHours(), - '0' + d.getMinutes() - ]; - - for (var i = 0; i < d.length; i++) { - d[i] = d[i].slice(-2); - } - - return d.slice(0, 3).join('.') + ' ' + d.slice(3).join(':'); -} - -alert( formatDate(new Date(new Date - 1)) ); // только что - -alert( formatDate(new Date(new Date - 30 * 1000)) ); // 30 сек. назад - -alert( formatDate(new Date(new Date - 5 * 60 * 1000)) ); // 5 мин. назад - -alert( formatDate(new Date(new Date - 86400 * 1000)) ); // вчерашняя дата в формате "дд.мм.гг чч:мм" -``` - diff --git a/1-js/4-data-structures/11-datetime/9-format-date-relative/task.md b/1-js/4-data-structures/11-datetime/9-format-date-relative/task.md deleted file mode 100644 index 1e13df91..00000000 --- a/1-js/4-data-structures/11-datetime/9-format-date-relative/task.md +++ /dev/null @@ -1,26 +0,0 @@ -# Относительное форматирование даты - -[importance 4] - -Напишите функцию `formatDate(date)`, которая форматирует дату `date` так: -
        -
      • Если со времени `date` прошло менее секунды, то возвращает `"только что"`.
      • -
      • Иначе если со времени `date` прошло менее минуты, то `"n сек. назад"`.
      • -
      • Иначе если прошло меньше часа, то `"m мин. назад"`.
      • -
      • Иначе полная дата в формате `"дд.мм.гг чч:мм"`.
      • -
      - -Например: - -```js -function formatDate(date) { /* ваш код */ } - -alert( formatDate(new Date(new Date - 1)) ); // "только что" - -alert( formatDate(new Date(new Date - 30 * 1000)) ); // "30 сек. назад" - -alert( formatDate(new Date(new Date - 5 * 60 * 1000)) ); // "5 мин. назад" - -alert( formatDate(new Date(new Date - 86400 * 1000)) ); // вчерашняя дата в формате "дд.мм.гг чч:мм" -``` - diff --git a/1-js/4-data-structures/11-datetime/article.md b/1-js/4-data-structures/11-datetime/article.md deleted file mode 100644 index b1066817..00000000 --- a/1-js/4-data-structures/11-datetime/article.md +++ /dev/null @@ -1,519 +0,0 @@ -# Дата и Время - -Для работы с датой и временем в JavaScript используются объекты [Date](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/). - -[cut] -## Создание - -Для создания нового объекта типа `Date` используется один из синтаксисов: -
      -
      `new Date()`
      -
      Создает объект `Date` с текущей датой и временем: - -```js -//+ run -var now = new Date(); -alert( now ); -``` - -
      -
      `new Date(milliseconds)`
      -
      Создает объект `Date`, значение которого равно количеству миллисекунд (1/1000 секунды), прошедших с 1 января 1970 года GMT+0. - -```js -//+ run -// 24 часа после 01.01.1970 GMT+0 -var Jan02_1970 = new Date(3600 * 24 * 1000); -alert( Jan02_1970 ); -``` - -
      -
      `new Date(datestring)`
      -
      Если единственный аргумент - строка, используется вызов `Date.parse` (см. далее) для чтения даты из неё.
      -
      `new Date(year, month, date, hours, minutes, seconds, ms)`
      -
      Дату можно создать, используя компоненты в местной временной зоне. Для этого формата обязательны только первые два аргумента. Отсутствующие параметры, начиная с `hours` считаются равными нулю, а `date` -- единице. - -Заметим: -
        -
      • Год `year` должен быть из 4 цифр.
      • -
      • Отсчет месяцев `month` начинается с нуля 0.
      • -
      - -Например: - -```js -new Date(2011, 0, 1, 0, 0, 0, 0); // // 1 января 2011, 00:00:00 -new Date(2011, 0, 1); // то же самое, часы/секунды по умолчанию равны 0 -``` - -Дата задана с точностью до миллисекунд: - -```js -//+ run -var date = new Date(2011, 0, 1, 2, 3, 4, 567); -alert( date ); // 1.01.2011, 02:03:04.567 -``` - -
      -
      - - -## Получение компонентов даты - -Для доступа к компонентам даты-времени объекта `Date` используются следующие методы: -
      -
      `getFullYear()`
      -
      Получить год(из 4 цифр)
      -
      `getMonth()`
      -
      Получить месяц, **от 0 до 11**.
      -
      `getDate()`
      -
      Получить число месяца, от 1 до 31.
      -
      `getHours(), getMinutes(), getSeconds(), getMilliseconds()`
      -
      Получить соответствующие компоненты.
      -
      - -[warn header="Не `getYear()`, а `getFullYear()`"] -Некоторые браузеры реализуют нестандартный метод `getYear()`. Где-то он возвращает только две цифры из года, где-то четыре. Так или иначе, этот метод отсутствует в стандарте JavaScript. Не используйте его. Для получения года есть `getFullYear()`. -[/warn] - -Дополнительно можно получить день недели: -
      -
      `getDay()`
      -
      Получить номер дня в неделе. Неделя в JavaScript начинается с воскресенья, так что результат будет числом **от 0(воскресенье) до 6(суббота)**.
      -
      - -**Все методы, указанные выше, возвращают результат для местной временной зоны.** - -Существуют также UTC-варианты этих методов, возвращающие день, месяц, год и т.п. для зоны GMT+0 (UTC): `getUTCFullYear()`, `getUTCMonth()`, `getUTCDay()`. То есть, сразу после `"get"` вставляется `"UTC"`. - -Если ваше локальное время сдвинуто относительно UTC, то следующий код покажет разные часы: - -```js -//+ run -// текущая дата -var date = new Date(); - -// час в текущей временной зоне -alert( date.getHours() ); - -// сколько сейчас времени в Лондоне? -// час в зоне GMT+0 -alert( date.getUTCHours() ); -``` - -Кроме описанных выше, существуют два специальных метода без UTC-варианта: - -
      -
      `getTime()`
      -
      Возвращает число миллисекунд, прошедших с 1 января 1970 года GMT+0, то есть того же вида, который используется в конструкторе `new Date(milliseconds)`.
      -
      `getTimezoneOffset()`
      -
      Возвращает разницу между местным и UTC-временем, в минутах. - -```js -//+ run -alert( new Date().getTimezoneOffset() ); // Для GMT-1 выведет 60 -``` - -
      -
      - - - -## Установка компонентов даты - -Следующие методы позволяют устанавливать компоненты даты и времени: -
        -
      • `setFullYear(year [, month, date])`
      • -
      • `setMonth(month [, date])`
      • -
      • `setDate(date)`
      • -
      • `setHours(hour [, min, sec, ms])`
      • -
      • `setMinutes(min [, sec, ms])`
      • -
      • `setSeconds(sec [, ms])`
      • -
      • `setMilliseconds(ms)`
      • -
      • `setTime(milliseconds)` (устанавливает всю дату по миллисекундам с 01.01.1970 UTC)
      • -
      - -Все они, кроме `setTime()`, обладают также UTC-вариантом, например: `setUTCHours()`. - -Как видно, некоторые методы могут устанавливать несколько компонентов даты одновременно, в частности, `setHours`. При этом если какая-то компонента не указана, она не меняется. Например: - -```js -//+ run -var today = new Date; - -today.setHours(0); -alert( today ); // сегодня, но час изменён на 0 - -today.setHours(0, 0, 0, 0); -alert( today ); // сегодня, ровно 00:00:00. -``` - -### Автоисправление даты - -*Автоисправление* -- очень удобное свойство объектов `Date`. Оно заключается в том, что можно устанавливать заведомо некорректные компоненты (например 32 января), а объект сам себя поправит. - -```js -//+ run -var d = new Date(2013, 0, *!*32*/!*); // 32 января 2013 ?!? -alert(d); // ... это 1 февраля 2013! -``` - -**Неправильные компоненты даты автоматически распределяются по остальным.** - -Например, нужно увеличить на 2 дня дату "28 февраля 2011". Может быть так, что это будет 2 марта, а может быть и 1 марта, если год високосный. Но нам обо всем этом думать не нужно. Просто прибавляем два дня. Остальное сделает `Date`: - -```js -//+ run -var d = new Date(2011, 1, 28); -*!* -d.setDate(d.getDate() + 2); -*/!* - -alert( d ); // 2 марта, 2011 -``` - -Также это используют для получения даты, отдаленной от имеющейся на нужный промежуток времени. Например, получим дату на 70 секунд большую текущей: - -```js -//+ run -var d = new Date(); -d.setSeconds(d.getSeconds() + 70); - -alert( d ); // выведет корректную дату -``` - -Можно установить и нулевые, и даже отрицательные компоненты. Например: - -```js -//+ run -var d = new Date; - -d.setDate(1); // поставить первое число месяца -alert( d ); - -d.setDate(0); // нулевого числа нет, будет последнее число предыдущего месяца -alert( d ); -``` - - - -```js -//+ run -var d = new Date; - -d.setDate(-1); // предпоследнее число предыдущего месяца -alert( d ); -``` - -### Преобразование к числу, разность дат - -Когда объект `Date` используется в числовом контексте, он преобразуется в количество миллисекунд: - -```js -//+ run -alert(+new Date) // +date то же самое, что: +date.valueOf() -``` - -**Важный побочный эффект: даты можно вычитать, результат вычитания объектов `Date` -- их временная разница, в миллисекундах**. - -Это используют для измерения времени: - -```js -//+ run -var start = new Date; // засекли время - -// что-то сделать -for (var i = 0; i < 100000; i++) { - var doSomething = i * i * i; -} - -var end = new Date; // конец измерения - -alert( "Цикл занял " + (end - start) + " ms" ); -``` - -### Бенчмаркинг - -Допустим, у нас есть несколько вариантов решения задачи, каждый описан функцией. - -Как узнать, какой быстрее? - -Для примера возьмем две функции, которые бегают по массиву: - -```js -function walkIn(arr) { - for (var key in arr) arr[i]++ -} - -function walkLength(arr) { - for (var i = 0; i < arr.length; i++) arr[i]++; -} -``` - -Чтобы померять, какая из них быстрее, нельзя запустить один раз `walkIn`, один раз `walkLength` и замерить разницу. Одноразовый запуск ненадежен, любая мини-помеха исказит результат. - -Для правильного бенчмаркинга функция запускается много раз, чтобы сам тест занял существенное время. Это сведет влияние помех к минимуму. Сложную функцию можно запускать 100 раз, простую -- 1000 раз... - -Померяем, какая из функций быстрее: - -```js -//+ run -var arr = []; -for (var i = 0; i < 1000; i++) arr[i] = 0; - -function walkIn(arr) { - for (var key in arr) arr[i]++; -} - -function walkLength(arr) { - for (var i = 0; i < arr.length; i++) arr[i]++; -} - -function bench(f) { - var date = new Date(); - for (var i = 0; i < 10000; i++) f(arr); - return new Date() - date; -} - -alert( 'Время walkIn: ' + bench(walkIn) + 'мс' ); -alert( 'Время walkLength: ' + bench(walkLength) + 'мс' ); -``` - -Теперь представим себе, что во время первого бенчмаркинга `bench(walkIn)` компьютер что-то делал параллельно важное (вдруг) и это занимало ресурсы, а во время второго -- перестал. Реальная ситуация? Конечно реальна, особенно на современных ОС, где много процессов одновременно. - -**Гораздо более надёжные результаты можно получить, если весь пакет тестов прогнать много раз.** - -```js -//+ run -var arr = []; -for (var i = 0; i < 1000; i++) arr[i] = 0; - -function walkIn(arr) { - for (var key in arr) arr[i]++; -} - -function walkLength(arr) { - for (var i = 0; i < arr.length; i++) arr[i]++; -} - -function bench(f) { - var date = new Date(); - for (var i = 0; i < 1000; i++) f(arr); - return new Date() - date; -} - -*!* -// bench для каждого теста запустим много раз, чередуя -var timeIn = 0, - timeLength = 0; -for (var i = 0; i < 100; i++) { - timeIn += bench(walkIn); - timeLength += bench(walkLength); -} -*/!* - -alert( 'Время walkIn: ' + timeIn + 'мс' ); -alert( 'Время walkLength: ' + timeLength + 'мс' ); -``` - -[smart header="Более точное время с `performance.now()`"] -В современных браузерах (кроме IE9-) вызов [performance.now()](https://developer.mozilla.org/en-US/docs/Web/API/performance.now) возвращает количество миллисекунд, прошедшее с начала загрузки страницы. Причём именно с самого начала, до того, как загрузился HTML-файл, если точнее -- с момента выгрузки предыдущей страницы из памяти. - -Так что это время включает в себя всё, включая начальное обращение к серверу. - -Его можно посмотреть в любом месте страницы, даже в ``, чтобы узнать, сколько времени потребовалось браузеру, чтобы до него добраться, включая загрузку HTML. - -Возвращаемое значение измеряется в миллисекундах, но дополнительно имеет точность 3 знака после запятой (до миллионных долей секунды!), поэтому можно использовать его и для более точного бенчмаркинга в том числе. -[/smart] - -[smart header="`console.time(метка)` и `console.timeEnd(метка)`"] -Для измерения с одновременным выводом результатов в консоли есть методы: -
        -
      • `console.time(метка)` -- включить внутренний хронометр браузера с меткой.
      • -
      • `console.timeEnd(метка)` -- выключить внутренний хронометр браузера с меткой и вывести результат.
      • -
      -Параметр `"метка"` используется для идентификации таймера, чтобы можно было делать много замеров одновременно и даже вкладывать измерения друг в друга. - -В коде ниже таймеры `walkIn`, `walkLength` -- конкретные тесты, а таймер "All Benchmarks" -- время "на всё про всё": - -```js -//+ run -var arr = []; -for (var i = 0; i < 1000; i++) arr[i] = 0; - -function walkIn(arr) { - for (var key in arr) arr[i]++; -} - -function walkLength(arr) { - for (var i = 0; i < arr.length; i++) arr[i]++; -} - -function bench(f) { - for (var i = 0; i < 10000; i++) f(arr); -} - -console.time("All Benchmarks"); - -console.time("walkIn"); -bench(walkIn); -console.timeEnd("walkIn"); - - -console.time("walkLength"); -bench(walkLength); -console.timeEnd("walkLength"); - -console.timeEnd("All Benchmarks"); -``` - -**При запуске этого примера нужно открыть консоль, иначе вы ничего не увидите.** -[/smart] - -[warn header="Внимание, оптимизатор!"] -Современные интерпретаторы JavaScript делают массу оптимизаций, например: -
        -
      1. Автоматически выносят инвариант, то есть постоянное в цикле значение типа `arr.length`, за пределы цикла.
      2. -
      3. Стараются понять, значения какого типа хранит данная переменная или массив, какую структуру имеет объект и, исходя из этого, оптимизировать внутренние алгоритмы.
      4. -
      5. Выполняют простейшие операции, например сложение явно заданных чисел и строк, на этапе компиляции.
      6. -
      7. Могут обнаружить, что некий код, например присваивание к неиспользуемой локальной переменной, ни на что не влияет и вообще исключить его из выполнения, хотя делают это редко.
      8. -
      -Эти оптимизации могут влиять на результаты тестов, поэтому измерять скорость базовых операций JavaScript ("проводить микробенчмаркинг") до того, как вы изучите внутренности JavaScript-интерпретаторов и поймёте, что они реально делают на таком коде, не рекомендуется. -[/warn] - - -## Форматирование и вывод дат - -Во всех браузерах, кроме IE10-, поддерживается новый стандарт [Ecma 402](http://www.ecma-international.org/publications/standards/Ecma-402.htm), который добавляет специальные методы для форматирования дат. - -Это делается вызовом `date.toLocaleString(локаль, опции)`, в котором можно задать много настроек. Он позволяет указать, какие параметры даты нужно вывести, и ряд настроек вывода, после чего интерпретатор сам сформирует строку. - -Пример с почти всеми параметрами даты и русским, затем английским (США) форматированием: - -```js -//+ run -var date = new Date(2014, 11, 31, 12, 30, 0); - -var options = { - era: 'long', - year: 'numeric', - month: 'long', - day: 'numeric', - weekday: 'long', - timezone: 'UTC', - hour: 'numeric', - minute: 'numeric', - second: 'numeric' -}; - -alert( date.toLocaleString("ru", options) ); // среда, 31 декабря 2014 г. н.э. 12:30:00 -alert( date.toLocaleString("en-US", options) ); // Wednesday, December 31, 2014 Anno Domini 12:30:00 PM -``` - -Вы сможете подробно узнать о них в статье [](/intl), которая посвящена этому стандарту. - - -**Методы вывода без локализации:** - -
      -
      `toString()`, `toDateString()`, `toTimeString()`
      -
      Возвращают стандартное строчное представление, не заданное жёстко в стандарте, а зависящее от браузера. Единственное требование к нему -- читаемость человеком. Метод `toString` возвращает дату целиком, `toDateString()` и `toTimeString()` -- только дату и время соответственно. - -```js -//+ run -var d = new Date(); - -alert( d.toString() ); // вывод, похожий на 'Wed Jan 26 2011 16:40:50 GMT+0300' -``` - -
      `toUTCString()`
      -
      То же самое, что `toString()`, но дата в зоне UTC.
      -
      -
      `toISOString()`
      -
      Возвращает дату в формате ISO Детали формата будут далее. Поддерживается современными браузерами, не поддерживается IE8-. - -```js -//+ run -var d = new Date(); - -alert( d.toISOString() ); // вывод, похожий на '2011-01-26T13:51:50.417Z' -``` - -
      - -Если хочется иметь большую гибкость и кросс-браузерность, то также можно воспользоваться специальной библиотекой, например [Moment.JS](http://momentjs.com/) или написать свою функцию форматирования. - - - -## Разбор строки, Date.parse - -Все современные браузеры, включая IE9+, понимают даты в упрощённом формате ISO 8601 Extended. - -Этот формат выглядит так: `YYYY-MM-DDTHH:mm:ss.sssZ`, где: - -
        -
      • `YYYY-MM-DD` -- дата в формате год-месяц-день.
      • -
      • Обычный символ `T` используется как разделитель.
      • -
      • `HH:mm:ss.sss` -- время: часы-минуты-секунды-миллисекунды.
      • -
      • Часть `'Z'` обозначает временную зону -- в формате `+-hh:mm`, либо символ `Z`, обозначающий UTC. По стандарту её можно не указывать, тогда UTC, но в Safari с этим ошибка, так что лучше указывать всегда.
      • -
      - -Также возможны укороченные варианты, например `YYYY-MM-DD` или `YYYY-MM` или даже только `YYYY`. - -Метод `Date.parse(str)` разбирает строку `str` в таком формате и возвращает соответствующее ей количество миллисекунд. Если это невозможно, `Date.parse` возвращает `NaN`. - -Например: - -```js -//+ run -var msUTC = Date.parse('2012-01-26T13:51:50.417Z'); // зона UTC - -alert( msUTC ); // 1327571510417 (число миллисекунд) -``` - -С таймзоной `-07:00 GMT`: - -```js -//+ run -var ms = Date.parse('2012-01-26T13:51:50.417-07:00'); - -alert( ms ); // 1327611110417 (число миллисекунд) -``` - - -[smart header="Формат дат для IE8-"] -До появления спецификации EcmaScript 5 формат не был стандартизован, и браузеры, включая IE8-, имели свои собственные форматы дат. Частично, эти форматы пересекаются. - -Например, код ниже работает везде, включая старые IE: - -```js -//+ run -var ms = Date.parse("January 26, 2011 13:51:50"); - -alert( ms ); -``` - -Вы также можете почитать о старых форматах IE в документации к методу MSDN Date.parse. - -Конечно же, сейчас лучше использовать современный формат. Если же нужна поддержка IE8-, то метод `Date.parse`, как и ряд других современных методов, добавляется библиотекой [es5-shim](https://github.com/kriskowal/es5-shim). -[/smart] - -## Метод Date.now() - -Метод `Date.now()` возвращает дату сразу в виде миллисекунд. - -Технически, он аналогичен вызову `+new Date()`, но в отличие от него не создаёт промежуточный объект даты, а поэтому -- во много раз быстрее. - -Его использование особенно рекомендуется там, где производительность при работе с датами критична. Обычно это не на веб-страницах, а, к примеру, в разработке игр на JavaScript. - -## Итого - -
        -
      • Дата и время представлены в JavaScript одним объектом: [Date](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/). Создать "только время" при этом нельзя, оно должно быть с датой. Список методов `Date` вы можете найти в справочнике [Date](http://javascript.ru/Date) или выше.
      • -
      • Отсчёт месяцев начинается с нуля.
      • -
      • Отсчёт дней недели (для `getDay()`) тоже начинается с нуля (и это воскресенье).
      • -
      • Объект `Date` удобен тем, что автокорректируется. Благодаря этому легко сдвигать даты.
      • -
      • При преобразовании к числу объект `Date` даёт количество миллисекунд, прошедших с 1 января 1970 UTC. Побочное следствие -- даты можно вычитать, результатом будет разница в миллисекундах.
      • -
      • Для получения текущей даты в миллисекундах лучше использовать `Date.now()`, чтобы не создавать лишний объект `Date` (кроме IE8-)
      • -
      • Для бенчмаркинга лучше использовать `performance.now()` (кроме IE9-), он в 1000 раз точнее.
      • -
      \ No newline at end of file diff --git a/1-js/4-data-structures/2-number/1-sum-interface/solution.md b/1-js/4-data-structures/2-number/1-sum-interface/solution.md deleted file mode 100644 index d42523ce..00000000 --- a/1-js/4-data-structures/2-number/1-sum-interface/solution.md +++ /dev/null @@ -1,11 +0,0 @@ - - -```js -//+ run demo -var a = +prompt("Введите первое число", ""); -var b = +prompt("Введите второе число", ""); - -alert( a + b ); -``` - -Обратите внимание на оператор `+` перед `prompt`, он сразу приводит вводимое значение к числу. Если бы его не было, то `a` и `b` были бы строками и складывались бы как строки, то есть `"1" + "2" = "12"`. \ No newline at end of file diff --git a/1-js/4-data-structures/2-number/1-sum-interface/task.md b/1-js/4-data-structures/2-number/1-sum-interface/task.md deleted file mode 100644 index 2aac44a6..00000000 --- a/1-js/4-data-structures/2-number/1-sum-interface/task.md +++ /dev/null @@ -1,9 +0,0 @@ -# Интерфейс суммы - -[importance 5] - -Создайте страницу, которая предлагает ввести два числа и выводит их сумму. - -[demo /] - -P.S. Есть "подводный камень" при работе с типами. diff --git a/1-js/4-data-structures/2-number/2-why-rounded-down/solution.md b/1-js/4-data-structures/2-number/2-why-rounded-down/solution.md deleted file mode 100644 index 574bf957..00000000 --- a/1-js/4-data-structures/2-number/2-why-rounded-down/solution.md +++ /dev/null @@ -1,8 +0,0 @@ -Во внутреннем двоичном представлении `6.35` является бесконечной двоичной дробью. Хранится она с потерей точности.. А впрочем, посмотрим сами: - -```js -//+ run -alert( 6.35.toFixed(20) ); // 6.34999999999999964473 -``` - -Интерпретатор видит число как `6.34...`, поэтому и округляет вниз. \ No newline at end of file diff --git a/1-js/4-data-structures/2-number/2-why-rounded-down/task.md b/1-js/4-data-structures/2-number/2-why-rounded-down/task.md deleted file mode 100644 index 203280c6..00000000 --- a/1-js/4-data-structures/2-number/2-why-rounded-down/task.md +++ /dev/null @@ -1,19 +0,0 @@ -# Почему 6.35.toFixed(1) == 6.3? - -[importance 4] - -В математике принято, что `5` округляется вверх, например: - -```js -//+ run -alert( 1.5.toFixed(0) ); // 2 -alert( 1.35.toFixed(1) ); // 1.4 -``` - -Но почему в примере ниже `6.35` округляется до `6.3`? - -```js -//+ run -alert( 6.35.toFixed(1) ); // 6.3 -``` - diff --git a/1-js/4-data-structures/2-number/3-sum-prices/solution.md b/1-js/4-data-structures/2-number/3-sum-prices/solution.md deleted file mode 100644 index 242dcdde..00000000 --- a/1-js/4-data-structures/2-number/3-sum-prices/solution.md +++ /dev/null @@ -1,13 +0,0 @@ -Есть два основных подхода. -
        -
      1. Можно хранить сами цены в "копейках" (центах и т.п.). Тогда они всегда будут целые и проблема исчезнет. Но при показе и при обмене данными нужно будет это учитывать и не забывать делить на 100.
      2. -
      3. При операциях, когда необходимо получить окончательный результат -- округлять до 2го знака после запятой. Все, что дальше -- ошибка округления: - -```js -//+ run no-beautify -var price1 = 0.1, price2 = 0.2; -alert( +(price1 + price2).toFixed(2) ); -``` - -
      4. -
      \ No newline at end of file diff --git a/1-js/4-data-structures/2-number/3-sum-prices/task.md b/1-js/4-data-structures/2-number/3-sum-prices/task.md deleted file mode 100644 index 02118152..00000000 --- a/1-js/4-data-structures/2-number/3-sum-prices/task.md +++ /dev/null @@ -1,16 +0,0 @@ -# Сложение цен - -[importance 5] - -Представьте себе электронный магазин. Цены даны с точностью до копейки(цента, евроцента и т.п.). - -Вы пишете интерфейс для него. Основная работа происходит на сервере, но и на клиенте все должно быть хорошо. Сложение цен на купленные товары и умножение их на количество является обычной операцией. - -Получится глупо, если при заказе двух товаров с ценами `0.10$` и `0.20$` человек получит общую стоимость `0.30000000000000004$`: - -```js -//+ run -alert( 0.1 + 0.2 + '$' ); -``` - -Что можно сделать, чтобы избежать проблем с ошибками округления? \ No newline at end of file diff --git a/1-js/4-data-structures/2-number/4-endless-loop-error/solution.md b/1-js/4-data-structures/2-number/4-endless-loop-error/solution.md deleted file mode 100644 index 86855efd..00000000 --- a/1-js/4-data-structures/2-number/4-endless-loop-error/solution.md +++ /dev/null @@ -1,14 +0,0 @@ -Потому что `i` никогда не станет равным `10`. - -Запустите, чтобы увидеть *реальные* значения `i`: - -```js -//+ run -var i = 0; -while (i < 11) { - i += 0.2; - if (i > 9.8 && i < 10.2) alert( i ); -} -``` - -Ни одно из них в точности не равно `10`. \ No newline at end of file diff --git a/1-js/4-data-structures/2-number/4-endless-loop-error/task.md b/1-js/4-data-structures/2-number/4-endless-loop-error/task.md deleted file mode 100644 index e3ef1874..00000000 --- a/1-js/4-data-structures/2-number/4-endless-loop-error/task.md +++ /dev/null @@ -1,13 +0,0 @@ -# Бесконечный цикл по ошибке - -[importance 4] - -Этот цикл - бесконечный. Почему? - -```js -var i = 0; -while (i != 10) { - i += 0.2; -} -``` - diff --git a/1-js/4-data-structures/2-number/5-get-decimal/_js.view/solution.js b/1-js/4-data-structures/2-number/5-get-decimal/_js.view/solution.js deleted file mode 100644 index 7ff8569c..00000000 --- a/1-js/4-data-structures/2-number/5-get-decimal/_js.view/solution.js +++ /dev/null @@ -1,7 +0,0 @@ -function getDecimal(num) { - var str = "" + num; - var zeroPos = str.indexOf("."); - if (zeroPos == -1) return 0; - str = str.slice(zeroPos); - return +str; -} \ No newline at end of file diff --git a/1-js/4-data-structures/2-number/5-get-decimal/_js.view/test.js b/1-js/4-data-structures/2-number/5-get-decimal/_js.view/test.js deleted file mode 100644 index 8f79eec9..00000000 --- a/1-js/4-data-structures/2-number/5-get-decimal/_js.view/test.js +++ /dev/null @@ -1,21 +0,0 @@ -describe("getDecimal", function() { - it("возвращает дробную часть 1.2 как 0.2", function() { - assert.equal(getDecimal(1.2), 0.2); - }); - - it("возвращает дробную часть 1.3 как 0.3", function() { - assert.equal(getDecimal(1.3), 0.3); - }); - - it("возвращает дробную часть 12.345 как 0.345", function() { - assert.equal(getDecimal(12.345), 0.345); - }); - - it("возвращает дробную часть -1.2 как 0.2", function() { - assert.equal(getDecimal(-1.2), 0.2); - }); - - it("возвращает дробную часть 5 как 0", function() { - assert.equal(getDecimal(5), 0); - }); -}); \ No newline at end of file diff --git a/1-js/4-data-structures/2-number/5-get-decimal/solution.md b/1-js/4-data-structures/2-number/5-get-decimal/solution.md deleted file mode 100644 index 9bd45ee5..00000000 --- a/1-js/4-data-structures/2-number/5-get-decimal/solution.md +++ /dev/null @@ -1,82 +0,0 @@ -# Функция - -Первая идея может быть такой: - -```js -//+ run -function getDecimal(num) { - return num - Math.floor(num); -} - -alert( getDecimal(12.5) ); // 0.5 -*!* -alert( getDecimal(-1.2) ); // 0.8, неверно! -*/!* -``` - -Как видно из примера выше, для отрицательных чисел она не работает. - -Это потому, что округление `Math.floor` происходит всегда к ближайшему меньшему целому, то есть `Math.floor(-1.2) = -2`, а нам бы хотелось убрать целую часть, т.е. получить `-1`. - -Можно попытаться решить проблему так: - -```js -//+ run -function getDecimal(num) { - return num > 0 ? num - Math.floor(num) : Math.ceil(num) - num; -} - -alert( getDecimal(12.5) ); // 0.5 -*!* -alert( getDecimal(-1.2) ); // 0.19999999999999996, неверно! -alert( getDecimal(1.2) ); // 0.19999999999999996 -*/!* -``` - -Проблема с отрицательными числами решена, но результат, увы, не совсем тот. - -Внутреннее неточное представление чисел приводит к ошибке в вычислениях, которая проявляется при работе и с положительными и с отрицательными числами. - -Давайте попробуем ещё вариант -- получим остаток при делении на `1`. При таком делении от любого числа в остатке окажется именно дробная часть: - -```js -//+ run -function getDecimal(num) { - return num > 0 ? (num % 1) : (-num % 1); -} - -alert( getDecimal(12.5) ); // 0.5 -*!* -alert( getDecimal(1.2) ); // 0.19999999999999996, неверно! -*/!* -``` - -В общем-то, работает, функция стала короче, но, увы, ошибка сохранилась. - -Что делать? - -Увы, операции с десятичными дробями подразумевают некоторую потерю точности. - -Зависит от ситуации. -
        -
      • Если внешний вид числа неважен и ошибка в вычислениях допустима -- она ведь очень мала, то можно оставить как есть.
      • -
      • Перейти на промежуточные целочисленные вычисления там, где это возможно.
      • -
      • Если мы знаем, что десятичная часть жёстко ограничена, к примеру, может содержать не более 2 знаков то можно округлить число, то есть вернуть `+num.toFixed(2)`.
      • -
      - -Если эти варианты не подходят, то можно работать с числом как со строкой: - -```js -//+ run -function getDecimal(num) { - var str = "" + num; - var zeroPos = str.indexOf("."); - if (zeroPos == -1) return 0; - str = str.slice(zeroPos); - return +str; -} - -alert( getDecimal(12.5) ); // 0.5 -alert( getDecimal(1.2) ); // 0.2 -``` - diff --git a/1-js/4-data-structures/2-number/5-get-decimal/task.md b/1-js/4-data-structures/2-number/5-get-decimal/task.md deleted file mode 100644 index ec77059b..00000000 --- a/1-js/4-data-structures/2-number/5-get-decimal/task.md +++ /dev/null @@ -1,12 +0,0 @@ -# Как получить дробную часть числа? - -[importance 4] - -Напишите функцию `getDecimal(num)`, которая возвращает десятичную часть числа: - -```js -alert( getDecimal(12.345) ); // 0.345 -alert( getDecimal(1.2) ); // 0.2 -alert( getDecimal(-1.2) ); // 0.2 -``` - diff --git a/1-js/4-data-structures/2-number/6-formula-binet/solution.md b/1-js/4-data-structures/2-number/6-formula-binet/solution.md deleted file mode 100644 index 4d3abf0b..00000000 --- a/1-js/4-data-structures/2-number/6-formula-binet/solution.md +++ /dev/null @@ -1,35 +0,0 @@ - - -```js -//+ run -function fibBinet(n) { - var phi = (1 + Math.sqrt(5)) / 2; - // используем Math.round для округления до ближайшего целого - return Math.round(Math.pow(phi, n) / Math.sqrt(5)); -} - -function fib(n) { - var a = 1, - b = 0, - x; - for (i = 0; i < n; i++) { - x = a + b; - a = b - b = x; - } - return b; -} - -alert( fibBinet(2) ); // 1, равно fib(2) -alert( fibBinet(8) ); // 21, равно fib(8) -*!* -alert( fibBinet(77) ); // 5527939700884755 -alert( fib(77) ); // 5527939700884757, не совпадает! -*/!* -``` - -**Результат вычисления F77 получился неверным!** - -Причина -- в ошибках округления, ведь √5 -- бесконечная дробь. - -Ошибки округления при вычислениях множатся и, в итоге, дают расхождение. \ No newline at end of file diff --git a/1-js/4-data-structures/2-number/6-formula-binet/task.md b/1-js/4-data-structures/2-number/6-formula-binet/task.md deleted file mode 100644 index 706bdf19..00000000 --- a/1-js/4-data-structures/2-number/6-formula-binet/task.md +++ /dev/null @@ -1,29 +0,0 @@ -# Формула Бине - -[importance 4] - -Последовательность [чисел Фибоначчи](http://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%B0_%D0%A4%D0%B8%D0%B1%D0%BE%D0%BD%D0%B0%D1%87%D1%87%D0%B8) имеет формулу Fn = Fn-1 + Fn-2. То есть, следующее число получается как сумма двух предыдущих. - -Первые два числа равны `1`, затем `2(1+1)`, затем `3(1+2)`, `5(2+3)` и так далее: `1, 1, 2, 3, 5, 8, 13, 21...`. - -Код для их вычисления (из задачи [](/task/fibonacci-numbers)): - -```js -function fib(n) { - var a = 1, - b = 0, - x; - for (i = 0; i < n; i++) { - x = a + b; - a = b - b = x; - } - return b; -} -``` - -Существует [формула Бине](http://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%B0_%D0%A4%D0%B8%D0%B1%D0%BE%D0%BD%D0%B0%D1%87%D1%87%D0%B8#.D0.A4.D0.BE.D1.80.D0.BC.D1.83.D0.BB.D0.B0_.D0.91.D0.B8.D0.BD.D0.B5), согласно которой Fn равно ближайшему целому для ϕn/√5, где ϕ=(1+√5)/2 -- золотое сечение. - -Напишите функцию `fibBinet(n)`, которая будет вычислять Fn, используя эту формулу. Проверьте её для значения F77 (должно получиться `fibBinet(77) = 5527939700884757`). - -**Одинаковы ли результаты, полученные при помощи кода `fib(n)` выше и по формуле Бине? Если нет, то почему и какой из них верный?** \ No newline at end of file diff --git a/1-js/4-data-structures/2-number/7-random-0-max/solution.md b/1-js/4-data-structures/2-number/7-random-0-max/solution.md deleted file mode 100644 index 985dd191..00000000 --- a/1-js/4-data-structures/2-number/7-random-0-max/solution.md +++ /dev/null @@ -1,9 +0,0 @@ -Сгенерируем значение в диапазоне `0..1` и умножим на `max`: - -```js -//+ run -var max = 10; - -alert( Math.random() * max ); -``` - diff --git a/1-js/4-data-structures/2-number/7-random-0-max/task.md b/1-js/4-data-structures/2-number/7-random-0-max/task.md deleted file mode 100644 index a7175b55..00000000 --- a/1-js/4-data-structures/2-number/7-random-0-max/task.md +++ /dev/null @@ -1,5 +0,0 @@ -# Случайное из интервала (0, max) - -[importance 2] - -Напишите код для генерации случайного значения в диапазоне от `0` до `max`, не включая `max`. diff --git a/1-js/4-data-structures/2-number/8-random-min-max/solution.md b/1-js/4-data-structures/2-number/8-random-min-max/solution.md deleted file mode 100644 index 5954a2e0..00000000 --- a/1-js/4-data-structures/2-number/8-random-min-max/solution.md +++ /dev/null @@ -1,10 +0,0 @@ -Сгенерируем значение из интервала `0..max-min`, а затем сдвинем на `min`: - -```js -//+ run -var min = 5, - max = 10; - -alert( min + Math.random() * (max - min) ); -``` - diff --git a/1-js/4-data-structures/2-number/8-random-min-max/task.md b/1-js/4-data-structures/2-number/8-random-min-max/task.md deleted file mode 100644 index e5e8bf18..00000000 --- a/1-js/4-data-structures/2-number/8-random-min-max/task.md +++ /dev/null @@ -1,5 +0,0 @@ -# Случайное из интервала (min, max) - -[importance 2] - -Напишите код для генерации случайного числа от `min` до `max`, не включая `max`. diff --git a/1-js/4-data-structures/2-number/9-random-int-min-max/solution.md b/1-js/4-data-structures/2-number/9-random-int-min-max/solution.md deleted file mode 100644 index 749c9175..00000000 --- a/1-js/4-data-structures/2-number/9-random-int-min-max/solution.md +++ /dev/null @@ -1,80 +0,0 @@ -# Очевидное неверное решение (round) - -Самый простой, но неверный способ -- это сгенерировать значение в интервале `min..max` и округлить его `Math.round`, вот так: - -```js -//+ run -function randomInteger(min, max) { - var rand = min + Math.random() * (max - min) - rand = Math.round(rand); - return rand; -} - -alert( randomInteger(1, 3) ); -``` - -Эта функция работает. Но при этом она некорректна: вероятность получить крайние значения `min` и `max` будет в два раза меньше, чем любые другие. - -При многократном запуске этого кода вы легко заметите, что `2` выпадает чаще всех. - -Это происходит из-за того, что `Math.round()` получает разнообразные случайные числа из интервала от `1` до `3`, но при округлении до ближайшего целого получится, что: - -```js -//+ no-beautify -значения из диапазона 1 ... 1.49999.. станут 1 -значения из диапазона 1.5 ... 2.49999.. станут 2 -значения из диапазона 2.5 ... 2.99999.. станут 3 -``` - -Отсюда явно видно, что в `1` (как и `3`) попадает диапазон значений в два раза меньший, чем в `2`. Из-за этого такой перекос. - -# Верное решение с round - -Правильный способ: `Math.round(случайное от min-0.5 до max+0.5)` - -```js -//+ run -*!* -function randomInteger(min, max) { - var rand = min - 0.5 + Math.random() * (max - min + 1) - rand = Math.round(rand); - return rand; - } -*/!* - -alert( randomInteger(5, 10) ); -``` - -В этом случае диапазон будет тот же (`max-min+1`), но учтена механика округления `round`. - -# Решение с floor - -Альтернативный путь - применить округление `Math.floor()` к случайному числу от `min` до `max+1`. - -Например, для генерации целого числа от `1` до `3`, создадим вспомогательное случайное значение от `1` до `4` (не включая `4`). - -Тогда `Math.floor()` округлит их так: - -```js -//+ no-beautify -1 ... 1.999+ станет 1 -2 ... 2.999+ станет 2 -3 ... 3.999+ станет 3 -``` - -Все диапазоны одинаковы. -Итак, код: - -```js -//+ run -*!* -function randomInteger(min, max) { - var rand = min + Math.random() * (max + 1 - min); - rand = Math.floor(rand); - return rand; - } -*/!* - -alert( randomInteger(5, 10) ); -``` - diff --git a/1-js/4-data-structures/2-number/9-random-int-min-max/task.md b/1-js/4-data-structures/2-number/9-random-int-min-max/task.md deleted file mode 100644 index 7f747a25..00000000 --- a/1-js/4-data-structures/2-number/9-random-int-min-max/task.md +++ /dev/null @@ -1,7 +0,0 @@ -# Случайное целое от min до max - -[importance 2] - -Напишите функцию `randomInteger(min, max)` для генерации случайного **целого** числа между `min` и `max`, включая `min,max` как возможные значения. - -Любое число из интервала `min..max` должно иметь одинаковую вероятность. diff --git a/1-js/4-data-structures/2-number/article.md b/1-js/4-data-structures/2-number/article.md deleted file mode 100644 index b25a936b..00000000 --- a/1-js/4-data-structures/2-number/article.md +++ /dev/null @@ -1,612 +0,0 @@ -# Числа - -Все числа в JavaScript, как целые так и дробные, имеют тип `Number` и хранятся в 64-битном формате [IEEE-754](http://en.wikipedia.org/wiki/IEEE_754-1985), также известном как "double precision". - -Здесь мы рассмотрим различные тонкости, связанные с работой с числами в JavaScript. - -## Способы записи - -В JavaScript можно записывать числа не только в десятичной, но и в шестнадцатеричной (начинается с `0x`), а также восьмеричной (начинается с `0`) системах счисления: - -```js -//+ run -alert( 0xFF ); // 255 в шестнадцатиричной системе -alert( 010 ); // 8 в восьмеричной системе -``` - -Также доступна запись в *"научном формате"* (ещё говорят "запись с плавающей точкой"), который выглядит как `<число>e<кол-во нулей>`. - -Например, `1e3` -- это `1` с `3` нулями, то есть `1000`. - -```js -//+ run -// еще пример научной формы: 3 с 5 нулями -alert( 3e5 ); // 300000 -``` - -Если количество нулей отрицательно, то число сдвигается вправо за десятичную точку, так что получается десятичная дробь: - -```js -//+ run -// здесь 3 сдвинуто 5 раз вправо, за десятичную точку. -alert( 3e-5 ); // 0.00003 <-- 5 нулей, включая начальный ноль -``` - -## Деление на ноль, Infinity - -Представьте, что вы собираетесь создать новый язык... Люди будут называть его "JavaScript" (или LiveScript... неважно). - -Что должно происходить при попытке деления на ноль? - -Как правило, ошибка в программе... Во всяком случае, в большинстве языков программирования это именно так. - -Но создатель JavaScript решил пойти математически правильным путем. Ведь чем меньше делитель, тем больше результат. При делении на очень-очень маленькое число должно получиться очень большое. В математическом анализе это описывается через [пределы](http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D0%B4%D0%B5%D0%BB_(%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)), и если подразумевать предел, то в качестве результата деления на `0` мы получаем "бесконечность", которая обозначается символом `∞` или, в JavaScript: `"Infinity"`. - -```js -//+ run -alert( 1 / 0 ); // Infinity -alert( 12345 / 0 ); // Infinity -``` - -**`Infinity` -- особенное численное значение, которое ведет себя в точности как математическая бесконечность `∞`.** -
        -
      • `Infinity` больше любого числа.
      • -
      • Добавление к бесконечности не меняет её.
      • -
      - -```js -//+ run -alert( Infinity > 1234567890 ); // true -alert( Infinity + 5 == Infinity ); // true -``` - -**Бесконечность можно присвоить и в явном виде: `var x = Infinity`.** - -Бывает и минус бесконечность `-Infinity`: - -```js -//+ run -alert( -1 / 0 ); // -Infinity -``` - -Бесконечность можно получить также, если сделать ну очень большое число, для которого количество разрядов в двоичном представлении не помещается в соответствующую часть стандартного 64-битного формата, например: - -```js -//+ run -alert( 1e500 ); // Infinity -``` - -## NaN - -Если математическая операция не может быть совершена, то возвращается специальное значение `NaN` (Not-A-Number). - -Например, деление `0/0` в математическом смысле неопределено, поэтому его результат `NaN`: - -```js -//+ run -alert( 0 / 0 ); // NaN -``` - -Значение `NaN` используется для обозначения математической ошибки и обладает следующими свойствами: - -
        -
      • Значение `NaN` -- единственное, в своем роде, которое *не равно ничему, включая себя*. - -Следующий код ничего не выведет: - -```js -//+ run -if (NaN == NaN) alert( "==" ); // Ни один вызов -if (NaN === NaN) alert( "===" ); // не сработает -``` - -
      • -
      • Значение `NaN` можно проверить специальной функцией `isNaN(n)`, которая преобразует аргумент к числу и возвращает `true`, если получилось `NaN`, и `false` -- для любого другого значения. - -```js -//+ run -var n = 0 / 0; - -alert( isNaN(n) ); // true -alert( isNaN("12") ); // false, строка преобразовалась к обычному числу 12 -``` - -[smart header="Забавный способ проверки на `NaN`"] -Отсюда вытекает забавный способ проверки значения на `NaN`: можно проверить значение на равенство самому себе, если не равно -- то `NaN`: - -```js -//+ run -var n = 0 / 0; - -if (n !== n) alert( 'n = NaN!' ); -``` - -Это работает, но для наглядности лучше использовать `isNaN(n)`. -[/smart] - -
      • -
      • Значение `NaN` "прилипчиво". Любая операция с `NaN` возвращает `NaN`. - -```js -//+ run -alert( NaN + 1 ); // NaN -``` - -
      • -
      - -Если аргумент `isNaN` -- не число, то он автоматически преобразуется к числу. - - -[smart header="Математические операции в JS безопасны"] -Никакие математические операции в JavaScript не могут привести к ошибке или "обрушить" программу. - -В худшем случае, результат будет `NaN`. -[/smart] - -## isFinite(n) - -Итак, в JavaScript есть обычные числа и три специальных числовых значения: `NaN`, `Infinity` и `-Infinity`. - -Тот факт, что они, хоть и особые, но -- числа, демонстрируется работой оператора `+`: - -```js -//+ run -var value = prompt("Введите Infinity", 'Infinity'); - -*!* -var number = +value; -*/!* - -alert( number ); // Infinity, плюс преобразовал строку "Infinity" к такому "числу" -``` - -Обычно если мы хотим от посетителя получить число, то `Infinity` или `NaN` нам не подходят. Для того, чтобы отличить "обычные" числа от таких специальных значений, существует функция `isFinite`. - -**Функция `isFinite(n)` преобразует аргумент к числу и возвращает `true`, если это не `NaN/Infinity/-Infinity`:** - -```js -//+ run -alert( isFinite(1) ); // true -alert( isFinite(Infinity) ); // false -alert( isFinite(NaN) ); // false -``` - -## Преобразование к числу - -Большинство арифметических операций и математических функций преобразуют значение в число автоматически. - -Для того, чтобы сделать это явно, обычно перед значением ставят унарный плюс `'+'`: - -```js -//+ run -var s = "12.34"; -alert( +s ); // 12.34 -``` - -При этом, если строка не является в точности числом, то результат будет `NaN`: - -```js -//+ run -alert( +"12test" ); // NaN -``` - -Единственное исключение -- пробельные символы в начале и в конце строки, которые игнорируются: - -```js -//+ run -alert( +" -12" ); // -12 -alert( +" \n34 \n" ); // 34, перевод строки \n является пробельным символом -alert( +"" ); // 0, пустая строка становится нулем -alert( +"1 2" ); // NaN, пробел посередине числа - ошибка -``` - -Аналогичным образом происходит преобразование и в других математических операторах и функциях: - -```js -//+ run -alert( '12.34' / "-2" ); // -6.17 -``` - -## Мягкое преобразование: parseInt и parseFloat - -В мире HTML/CSS многие значения не являются в точности числами. Например, метрики CSS: `10pt` или `-12px`. - -Оператор `'+'` для таких значений возвратит `NaN`: - -```js -//+ run -alert(+"12px") // NaN -``` - -Для удобного чтения таких значений существует функция `parseInt`: - -```js -//+ run -alert( parseInt('12px') ); // 12 -``` - -**Функция `parseInt` и ее аналог `parseFloat` преобразуют строку символ за символом, пока это возможно.** - -При возникновении ошибки возвращается число, которое получилось. Функция `parseInt` читает из строки целое число, а `parseFloat` -- дробное. - -```js -//+ run -alert(parseInt('12px')) // 12, ошибка на символе 'p' -alert(parseFloat('12.3.4')) // 12.3, ошибка на второй точке -``` - -Конечно, существуют ситуации, когда `parseInt/parseFloat` возвращают `NaN`. Это происходит при ошибке на первом же символе: - -```js -//+ run -alert( parseInt('a123') ); // NaN -``` - - -## Проверка на число - -Для проверки строки на число можно использовать функцию `isNaN(str)`. - -Она преобразует строку в число аналогично `+`, а затем вернёт `true`, если это `NaN`, т.е. если преобразование не удалось: - -```js -//+ run -var x = prompt("Введите значение", "-11.5"); - -if (isNaN(x)) { - alert( "Строка преобразовалась в NaN. Не число" ); -} else { - alert( "Число" ); -} -``` - -Однако, у такой проверки есть две особенности: - -
      1. Пустая строка и строка из пробельных символов преобразуются к `0`, поэтому считаются числами.
      2. -
      3. Если применить такую проверку не к строке, то могут быть сюрпризы, в частности `isNaN` посчитает числами значения `false, true, null`, так как они хотя и не числа, но преобразуются к ним.
      4. -
      - -```js -//+ run -alert( isNaN(null) ); // false - не NaN, т.е. "число" -alert( isNaN("\n \n") ); // false - не NaN, т.е. "число" -``` - -Если такое поведение допустимо, то `isNaN` -- приемлемый вариант. - -Если же нужна действительно точная проверка на число, которая не считает числом строку из пробелов, логические и специальные значения, а также отсекает `Infinity` -- используйте следующую функцию `isNumeric`: - -```js -function isNumeric(n) { - return !isNaN(parseFloat(n)) && isFinite(n); -} -``` - -Разберёмся, как она работает. Начнём справа. - -
        -
      • Функция `isFinite(n)` преобразует аргумент к числу и возвращает `true`, если это не `Infinity/-Infinity/NaN`. - -Таким образом, правая часть отсеет заведомо не-числа, но оставит такие значения как `true/false/null` и пустую строку `''`, т.к. они корректно преобразуются в числа. -
      • -
      • Для их проверки нужна левая часть. Вызов `parseFloat(true/false/null/'')` вернёт `NaN` для этих значений. - -Так устроена функция `parseFloat`: она преобразует аргумент к строке, т.е. `true/false/null` становятся `"true"/"false"/"null"`, а затем считывает из неё число, при этом пустая строка даёт `NaN`.
      • -
      - -В результате отсеивается всё, кроме строк-чисел и обычных чисел. - -## toString(система счисления) - -Как показано выше, числа можно записывать не только в 10-чной, но и в 16-ричной системе. Но бывает и противоположная задача: получить 16-ричное представление числа. Для этого используется метод `toString(основание системы)`, например: - -```js -//+ run -var n = 255; - -alert( n.toString(16) ); // ff -``` - -В частности, это используют для работы с цветовыми значениями в браузере, вида `#AABBCC`. - -Основание может быть любым от `2` до `36`. - -
        -
      • Основание `2` бывает полезно для отладки побитовых операций: - -```js -//+ run -var n = 4; -alert( n.toString(2) ); // 100 -``` - -
      • -
      • Основание `36` (по количеству букв в английском алфавите -- 26, вместе с цифрами, которых 10) используется для того, чтобы "кодировать" число в виде буквенно-цифровой строки. В этой системе счисления сначала используются цифры, а затем буквы от `a` до `z`: - -```js -//+ run -var n = 1234567890; -alert( n.toString(36) ); // kf12oi -``` - -При помощи такого кодирования можно "укоротить" длинный цифровой идентификатор, например чтобы выдать его в качестве URL. -
      • -
      - - - - -## Округление - -Одна из самых частых операций с числом -- округление. В JavaScript существуют целых 3 функции для этого. - -
      -
      `Math.floor`
      -
      Округляет вниз
      -
      `Math.ceil`
      -
      Округляет вверх
      -
      `Math.round`
      -
      Округляет до ближайшего целого
      -
      - -```js -//+ run no-beautify -alert( Math.floor(3.1) ); // 3 -alert( Math.ceil(3.1) ); // 4 -alert( Math.round(3.1) ); // 3 -``` - -[smart header="Округление битовыми операторами"] -[Битовые операторы](/bitwise-operators) делают любое число 32-битным целым, обрезая десятичную часть. - -В результате побитовая операция, которая не изменяет число, например, двойное битовое НЕ -- округляет его: - -```js -//+ run -alert( ~~12.3 ); // 12 -``` - -Любая побитовая операция такого рода подойдет, например XOR (исключающее ИЛИ, `"^"`) с нулем: - -```js -//+ run -alert( 12.3 ^ 0 ); // 12 -alert( 1.2 + 1.3 ^ 0 ); // 2, приоритет ^ меньше, чем + -``` - -Это удобно в первую очередь тем, что легко читается и не заставляет ставить дополнительные скобки как `Math.floor(...)`: - -```js -var x = a * b / c ^ 0; // читается как "a * b / c и округлить" -``` - -[/smart] - -### Округление до заданной точности - -Для округления до нужной цифры после запятой можно умножить и поделить на 10 с нужным количеством нулей. Например, округлим `3.456` до 2го знака после запятой: - -```js -//+ run -var n = 3.456; -alert( Math.round(n * 100) / 100 ); // 3.456 -> 345.6 -> 346 -> 3.46 -``` - -Таким образом можно округлять число и вверх и вниз. - -### num.toFixed(precision) - -Существует также специальный метод `num.toFixed(precision)`, который округляет число `num` до точности `precision` и возвращает результат *в виде строки*: - -```js -//+ run -var n = 12.34; -alert( n.toFixed(1) ); // "12.3" -``` - -Округление идёт до ближайшего значения, аналогично `Math.round`: - -```js -//+ run -var n = 12.36; -alert( n.toFixed(1) ); // "12.4" -``` - -Итоговая строка, при необходимости, дополняется нулями до нужной точности: - -```js -//+ run -var n = 12.34; -alert( n.toFixed(5) ); // "12.34000", добавлены нули до 5 знаков после запятой -``` - -Если нам нужно именно число, то мы можем получить его, применив `'+'` к результату `n.toFixed(..)`: - -```js -//+ run -var n = 12.34; -alert( +n.toFixed(5) ); // 12.34 -``` - -[warn header="Метод `toFixed` не эквивалентен `Math.round`!"] -Например, произведём округление до одного знака после запятой с использованием двух способов: `toFixed` и `Math.round` с умножением и делением: - -```js -//+ run -var price = 6.35; - -alert( price.toFixed(1) ); // 6.3 -alert( Math.round(price * 10) / 10 ); // 6.4 -``` - -Как видно, результат разный! Вариант округления через `Math.round` получился более корректным, так как по общепринятым правилам `5` округляется вверх. А `toFixed` может округлить его как вверх, так и вниз. Почему? Скоро узнаем! -[/warn] - - -## Неточные вычисления - -Запустите этот пример: - -```js -//+ run -alert( 0.1 + 0.2 == 0.3 ); -``` - -Запустили? Если нет -- все же сделайте это. - -Ок, вы запустили его. Он вывел `false`. Результат несколько странный, не так ли? Возможно, ошибка в браузере? Поменяйте браузер, запустите еще раз. - -Хорошо, теперь мы можем быть уверены: `0.1 + 0.2` это не `0.3`. Но тогда что же это? - -```js -//+ run -alert( 0.1 + 0.2 ); // 0.30000000000000004 -``` - -Как видите, произошла небольшая вычислительная ошибка, результат сложения `0.1 + 0.2` немного больше, чем `0.3`. - -```js -//+ run -alert( 0.1 + 0.2 > 0.3 ); // true -``` - -Всё дело в том, что в стандарте IEEE 754 на число выделяется ровно 8 байт(=64 бита), не больше и не меньше. - -Число `0.1 (одна десятая)` записывается просто в десятичном формате, а в двоичной системе счисления это бесконечная дробь ([перевод десятичной дроби в двоичную систему](http://www.klgtu.ru/students/literature/inf_asu/1760.html)). Также бесконечной дробью является `0.2 (=2/10)`. - -Двоичное значение бесконечных дробей хранится только до определенного знака, поэтому возникает неточность. Её даже можно увидеть: - -```js -//+ run -alert( 0.1.toFixed(20) ); // 0.10000000000000000555 -``` - -Когда мы складываем `0.1` и `0.2`, то две неточности складываются, получаем незначительную, но всё же ошибку в вычислениях. - -Конечно, это не означает, что точные вычисления для таких чисел невозможны. Они возможны. И даже необходимы. - -Например, есть два способа сложить `0.1` и `0.2`: -
        -
      1. Сделать их целыми, сложить, а потом поделить: - -```js -//+ run -alert( (0.1 * 10 + 0.2 * 10) / 10 ); // 0.3 -``` - -Это работает, т.к. числа `0.1*10 = 1` и `0.2*10 = 2` могут быть точно представлены в двоичной системе. -
      2. -
      3. Сложить, а затем округлить до разумного знака после запятой. Округления до 10-го знака обычно бывает достаточно, чтобы отсечь ошибку вычислений: - -```js -//+ run -var result = 0.1 + 0.2; -alert( +result.toFixed(10) ); // 0.3 -``` - -
      4. -
      - - - -[smart header="Забавный пример"] -Привет! Я -- число, растущее само по себе! - -```js -//+ run -alert( 9999999999999999 ); // выведет 10000000000000000 -``` - -Причина та же -- потеря точности. - -Из `64` бит, отведённых на число, сами цифры числа занимают до `52` бит, остальные `11` бит хранят позицию десятичной точки и один бит -- знак. Так что если `52` бит не хватает на цифры, то при записи пропадут младшие разряды. - -Интерпретатор не выдаст ошибку, но в результате получится "не совсем то число", что мы и видим в примере выше. Как говорится: "как смог, так записал". - -[/smart] - -Ради справедливости заметим, что в точности то же самое происходит в любом другом языке, где используется формат IEEE 754, включая Java, C, PHP, Ruby, Perl. - -## Другие математические методы - -JavaScript предоставляет базовые тригонометрические и некоторые другие функции для работы с числами. - -### Тригонометрия - -Встроенные функции для тригонометрических вычислений: - -
      -
      `Math.acos(x)`
      -
      Возвращает арккосинус `x` (в радианах)
      -
      `Math.asin(x)`
      -
      Возвращает арксинус `x` (в радианах)
      -
      `Math.atan(x)`
      -
      Возвращает арктангенс `x` (в радианах)
      -
      `Math.atan2(y, x)`
      -
      Возвращает угол до точки `(y, x)`. Описание функции: [Atan2](http://en.wikipedia.org/wiki/Atan2).
      -
      `Math.sin(x)`
      -
      Вычисляет синус `x` (в радианах)
      -
      `Math.cos(x)`
      -
      Вычисляет косинус `x` (в радианах)
      -
      `Math.tan(x)`
      -
      Возвращает тангенс `x` (в радианах)
      -
      - -### Функции общего назначения - -Разные полезные функции: -
      -
      `Math.sqrt(x)`
      -
      Возвращает квадратный корень из `x`.
      -
      `Math.log(x)`
      -
      Возвращает натуральный (по основанию e) логарифм `x`.
      -
      `Math.pow(x, exp)`
      -
      Возводит число в степень, возвращает xexp, например `Math.pow(2,3) = 8`. Работает в том числе с дробными и отрицательными степенями, например: `Math.pow(4, -1/2) = 0.5`.
      -
      `Math.abs(x)`
      -
      Возвращает абсолютное значение числа
      -
      `Math.exp(x)`
      -
      Возвращает ex, где e -- основание натуральных логарифмов.
      -
      `Math.max(a, b, c...)`
      -
      Возвращает наибольший из списка аргументов
      -
      `Math.min(a, b, c...)`
      -
      Возвращает наименьший из списка аргументов
      -
      `Math.random()`
      -
      Возвращает псевдо-случайное число в интервале [0,1) - то есть между 0(включительно) и 1(не включая). Генератор случайных чисел инициализуется текущим временем.
      -
      - -### Форматирование - -Для красивого вывода чисел в стандарте [ECMA 402](http://www.ecma-international.org/ecma-402/1.0/ECMA-402.pdf) есть метод `toLocaleString()`: - -```js -//+ run -var number = 123456789; - -alert( number.toLocaleString() ); // 123 456 789 -``` - -Его поддерживают все современные браузеры, кроме IE10- (для которых нужно подключить библиотеку [Intl.JS](https://github.com/andyearnshaw/Intl.js/)). Он также умеет форматировать валюту и проценты. Более подробно про устройство этого метода можно будет узнать в статье [](/intl), когда это вам понадобится. - -## Итого - -
        -
      • Числа могут быть записаны в шестнадцатиричной, восьмеричной системе, а также "научным" способом.
      • -
      • В JavaScript существует числовое значение бесконечность `Infinity`.
      • -
      • Ошибка вычислений дает `NaN`.
      • -
      • Арифметические и математические функции преобразуют строку в точности в число, игнорируя начальные и конечные пробелы.
      • -
      • Функции `parseInt/parseFloat` делают числа из строк, которые начинаются с числа.
      • -
      • Есть четыре способа округления: `Math.floor`, `Math.round`, `Math.ceil` и битовый оператор. Для округления до нужного знака используйте `+n.toFixed(p)` или трюк с умножением и делением на 10p.
      • -
      • Дробные числа дают ошибку вычислений. При необходимости ее можно отсечь округлением до нужного знака.
      • -
      • Случайные числа от `0` до `1` генерируются с помощью `Math.random()`, остальные -- преобразованием из них.
      • -
      - -Существуют и другие математические функции. Вы можете ознакомиться с ними в справочнике в разделах Number и Math. - - - - - - - - diff --git a/1-js/4-data-structures/3-string/1-ucfirst/_js.view/solution.js b/1-js/4-data-structures/3-string/1-ucfirst/_js.view/solution.js deleted file mode 100644 index 20e687a4..00000000 --- a/1-js/4-data-structures/3-string/1-ucfirst/_js.view/solution.js +++ /dev/null @@ -1,5 +0,0 @@ -function ucFirst(str) { - if (!str) return str; - - return str[0].toUpperCase() + str.slice(1); -} \ No newline at end of file diff --git a/1-js/4-data-structures/3-string/1-ucfirst/_js.view/test.js b/1-js/4-data-structures/3-string/1-ucfirst/_js.view/test.js deleted file mode 100644 index b935f642..00000000 --- a/1-js/4-data-structures/3-string/1-ucfirst/_js.view/test.js +++ /dev/null @@ -1,9 +0,0 @@ -describe("ucFirst", function() { - it('делает первый символ заглавным', function() { - assert.strictEqual(ucFirst("вася"), "Вася"); - }); - - it('для пустой строки возвращает пустую строку', function() { - assert.strictEqual(ucFirst(""), ""); - }); -}); \ No newline at end of file diff --git a/1-js/4-data-structures/3-string/1-ucfirst/solution.md b/1-js/4-data-structures/3-string/1-ucfirst/solution.md deleted file mode 100644 index e97aa8ec..00000000 --- a/1-js/4-data-structures/3-string/1-ucfirst/solution.md +++ /dev/null @@ -1,27 +0,0 @@ -Мы не можем просто заменить первый символ, т.к. строки в JavaScript неизменяемы. - -Но можно пересоздать строку на основе существующей, с заглавным первым символом: - -```js -var newStr = str[0].toUpperCase() + str.slice(1); -``` - -Однако, есть небольшая проблемка -- в случае, когда строка пуста, будет ошибка. - -Ведь `str[0] == undefined`, а у `undefined` нет метода `toUpperCase()`. - -Выхода два. Первый -- использовать `str.charAt(0)`, он всегда возвращает строку, для пустой строки -- пустую, но не `undefined`. Второй -- отдельно проверить на пустую строку, вот так: - -```js -//+ run -function ucFirst(str) { - // только пустая строка в логическом контексте даст false - if (!str) return str; - - return str[0].toUpperCase() + str.slice(1); -} - -alert( ucFirst("вася") ); -``` - -P.S. Возможны и более короткие решения, использующие методы для работы со строками, которые мы пройдём далее. \ No newline at end of file diff --git a/1-js/4-data-structures/3-string/1-ucfirst/task.md b/1-js/4-data-structures/3-string/1-ucfirst/task.md deleted file mode 100644 index 3c7e9965..00000000 --- a/1-js/4-data-structures/3-string/1-ucfirst/task.md +++ /dev/null @@ -1,12 +0,0 @@ -# Сделать первый символ заглавным - -[importance 5] - -Напишите функцию `ucFirst(str)`, которая возвращает строку `str` с заглавным первым символом, например: - -```js -ucFirst("вася") == "Вася"; -ucFirst("") == ""; // нет ошибок при пустой строке -``` - -P.S. В JavaScript нет встроенного метода для этого. Создайте функцию, используя `toUpperCase()` и `charAt()`. diff --git a/1-js/4-data-structures/3-string/2-check-spam/_js.view/solution.js b/1-js/4-data-structures/3-string/2-check-spam/_js.view/solution.js deleted file mode 100644 index abe6e87c..00000000 --- a/1-js/4-data-structures/3-string/2-check-spam/_js.view/solution.js +++ /dev/null @@ -1,5 +0,0 @@ -function checkSpam(str) { - var lowerStr = str.toLowerCase(); - - return !!(~lowerStr.indexOf('viagra') || ~lowerStr.indexOf('xxx')); -} \ No newline at end of file diff --git a/1-js/4-data-structures/3-string/2-check-spam/_js.view/test.js b/1-js/4-data-structures/3-string/2-check-spam/_js.view/test.js deleted file mode 100644 index 1564a6b3..00000000 --- a/1-js/4-data-structures/3-string/2-check-spam/_js.view/test.js +++ /dev/null @@ -1,13 +0,0 @@ -describe("checkSpam", function() { - it('считает спамом "buy ViAgRA now"', function() { - assert.isTrue(checkSpam('buy ViAgRA now')); - }); - - it('считает спамом "free xxxxx"', function() { - assert.isTrue(checkSpam('free xxxxx')); - }); - - it('не считает спамом "innocent rabbit"', function() { - assert.isFalse(checkSpam('innocent rabbit')); - }); -}); \ No newline at end of file diff --git a/1-js/4-data-structures/3-string/2-check-spam/solution.md b/1-js/4-data-structures/3-string/2-check-spam/solution.md deleted file mode 100644 index 9eecade3..00000000 --- a/1-js/4-data-structures/3-string/2-check-spam/solution.md +++ /dev/null @@ -1,17 +0,0 @@ -Метод `indexOf` ищет совпадение с учетом регистра. То есть, в строке `'xXx'` он не найдет `'XXX'`. - -Для проверки приведем к нижнему регистру и строку `str` а затем уже будем искать. - -```js -//+ run -function checkSpam(str) { - var lowerStr = str.toLowerCase(); - - return !!(~lowerStr.indexOf('viagra') || ~lowerStr.indexOf('xxx')); -} - -alert( checkSpam('buy ViAgRA now') ); -alert( checkSpam('free xxxxx') ); -alert( checkSpam("innocent rabbit") ); -``` - diff --git a/1-js/4-data-structures/3-string/2-check-spam/task.md b/1-js/4-data-structures/3-string/2-check-spam/task.md deleted file mode 100644 index 566a2d1e..00000000 --- a/1-js/4-data-structures/3-string/2-check-spam/task.md +++ /dev/null @@ -1,14 +0,0 @@ -# Проверьте спам - -[importance 5] - -Напишите функцию `checkSpam(str)`, которая возвращает `true`, если строка `str` содержит 'viagra' or 'XXX', а иначе `false`. - -Функция должна быть нечувствительна к регистру: - -```js -checkSpam('buy ViAgRA now') == true -checkSpam('free xxxxx') == true -checkSpam("innocent rabbit") == false -``` - diff --git a/1-js/4-data-structures/3-string/3-truncate/_js.view/solution.js b/1-js/4-data-structures/3-string/3-truncate/_js.view/solution.js deleted file mode 100644 index e37f1a3b..00000000 --- a/1-js/4-data-structures/3-string/3-truncate/_js.view/solution.js +++ /dev/null @@ -1,4 +0,0 @@ -function truncate(str, maxlength) { - return (str.length > maxlength) ? - str.slice(0, maxlength - 3) + '...' : str; -} \ No newline at end of file diff --git a/1-js/4-data-structures/3-string/3-truncate/_js.view/test.js b/1-js/4-data-structures/3-string/3-truncate/_js.view/test.js deleted file mode 100644 index c14666d6..00000000 --- a/1-js/4-data-structures/3-string/3-truncate/_js.view/test.js +++ /dev/null @@ -1,16 +0,0 @@ -describe("truncate", function() { - it("обрезает строку до указанной длины (включая троеточие)", function() { - assert.equal( - truncate("Вот, что мне хотелось бы сказать на эту тему:", 20), - "Вот, что мне хоте..." - ); - }); - - it("не меняет короткие строки", function() { - assert.equal( - truncate("Всем привет!", 20), - "Всем привет!" - ); - }); - -}); \ No newline at end of file diff --git a/1-js/4-data-structures/3-string/3-truncate/solution.md b/1-js/4-data-structures/3-string/3-truncate/solution.md deleted file mode 100644 index 113e68a2..00000000 --- a/1-js/4-data-structures/3-string/3-truncate/solution.md +++ /dev/null @@ -1,28 +0,0 @@ -Так как окончательная длина строки должна быть `maxlength`, то нужно её обрезать немного короче, чтобы дать место для троеточия. - -```js -//+ run -function truncate(str, maxlength) { - if (str.length > maxlength) { - return str.slice(0, maxlength - 3) + '...'; - // итоговая длина равна maxlength - } - - return str; -} - -alert( truncate("Вот, что мне хотелось бы сказать на эту тему:", 20) ); -alert( truncate("Всем привет!", 20) ); -``` - -Можно было бы написать этот код ещё короче: - -```js -//+ run -function truncate(str, maxlength) { - return (str.length > maxlength) ? - str.slice(0, maxlength - 3) + '...' : str; -} -``` - -P.S. Кстати, в кодироке Unicode существует специальный символ "троеточие": `…` (HTML: `…`), который можно использовать вместо трёх точек. Если его использовать, то можно отрезать только один символ. diff --git a/1-js/4-data-structures/3-string/3-truncate/task.md b/1-js/4-data-structures/3-string/3-truncate/task.md deleted file mode 100644 index 4904d5f8..00000000 --- a/1-js/4-data-structures/3-string/3-truncate/task.md +++ /dev/null @@ -1,17 +0,0 @@ -# Усечение строки - -[importance 5] - -Создайте функцию `truncate(str, maxlength)`, которая проверяет длину строки `str`, и если она превосходит `maxlength` -- заменяет конец `str` на `"..."`, так чтобы ее длина стала равна `maxlength`. - -Результатом функции должна быть (при необходимости) усечённая строка. - -Например: - -```js -truncate("Вот, что мне хотелось бы сказать на эту тему:", 20) = "Вот, что мне хоте..." - -truncate("Всем привет!", 20) = "Всем привет!" -``` - -Эта функция имеет применение в жизни. Она используется, чтобы усекать слишком длинные темы сообщений. diff --git a/1-js/4-data-structures/3-string/4-extract-currency/_js.view/solution.js b/1-js/4-data-structures/3-string/4-extract-currency/_js.view/solution.js deleted file mode 100644 index 828030db..00000000 --- a/1-js/4-data-structures/3-string/4-extract-currency/_js.view/solution.js +++ /dev/null @@ -1,3 +0,0 @@ -function extractCurrencyValue(str) { - return +str.slice(1); -} \ No newline at end of file diff --git a/1-js/4-data-structures/3-string/4-extract-currency/_js.view/test.js b/1-js/4-data-structures/3-string/4-extract-currency/_js.view/test.js deleted file mode 100644 index 45e0eb8c..00000000 --- a/1-js/4-data-structures/3-string/4-extract-currency/_js.view/test.js +++ /dev/null @@ -1,8 +0,0 @@ -describe("extractCurrencyValue", function() { - - it("выделяет из строки $120 число 120", function() { - assert.strictEqual(extractCurrencyValue('$120'), 120); - }); - - -}); \ No newline at end of file diff --git a/1-js/4-data-structures/3-string/4-extract-currency/solution.md b/1-js/4-data-structures/3-string/4-extract-currency/solution.md deleted file mode 100644 index d2c8c1a0..00000000 --- a/1-js/4-data-structures/3-string/4-extract-currency/solution.md +++ /dev/null @@ -1 +0,0 @@ -Возьмём часть строки после первого символа и приведём к числу: `+str.slice(1)`. \ No newline at end of file diff --git a/1-js/4-data-structures/3-string/4-extract-currency/task.md b/1-js/4-data-structures/3-string/4-extract-currency/task.md deleted file mode 100644 index ee4691d1..00000000 --- a/1-js/4-data-structures/3-string/4-extract-currency/task.md +++ /dev/null @@ -1,8 +0,0 @@ -# Выделить число - -[importance 4] - -Есть стоимость в виде строки: `"$120"`. То есть, первым идёт знак валюты, а затем -- число. - -Создайте функцию `extractCurrencyValue(str)`, которая будет из такой строки выделять число-значение, в данном случае 120. - diff --git a/1-js/4-data-structures/3-string/article.md b/1-js/4-data-structures/3-string/article.md deleted file mode 100644 index 5205e8fb..00000000 --- a/1-js/4-data-structures/3-string/article.md +++ /dev/null @@ -1,534 +0,0 @@ -# Строки - -В JavaScript любые текстовые данные являются строками. Не существует отдельного типа "символ", который есть в ряде других языков. - -Внутренним форматом строк, вне зависимости от кодировки страницы, является [Юникод (Unicode)](http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4). -[cut] -## Создание строк - -Строки создаются при помощи двойных или одинарных кавычек: - -```js -var text = "моя строка"; - -var anotherText = 'еще строка'; - -var str = "012345"; -``` - -В JavaScript нет разницы между двойными и одинарными кавычками. - -### Специальные символы - -Строки могут содержать специальные символы. Самый часто используемый из таких символов -- это "перевод строки". - -Он обозначается как `\n`, например: - -```js -//+ run -alert( 'Привет\nМир' ); // выведет "Мир" на новой строке -``` - -Есть и более редкие символы, вот их список: - - - - - - - - - - - - - - -
      Специальные символы
      СимволОписание
      \bBackspace
      \fForm feed
      \nNew line
      \rCarriage return
      \tTab
      \uNNNNСимвол в кодировке Юникод с шестнадцатеричным кодом `NNNN`. Например, `\u00A9` -- юникодное представление символа копирайт © -
      - -### Экранирование специальных символов - -Если строка в одинарных кавычках, то внутренние одинарные кавычки внутри должны быть *экранированы*, то есть снабжены обратным слешем `\'`, вот так: - -```js -var str = '*!*I\'m*/!* a JavaScript programmer'; -``` - -В двойных кавычках -- экранируются внутренние двойные: - -```js -//+ run -var str = "I'm a JavaScript \"programmer\" "; -alert( str ); // I'm a JavaScript "programmer" -``` - -Экранирование служит исключительно для правильного восприятия строки JavaScript. В памяти строка будет содержать сам символ без `'\'`. Вы можете увидеть это, запустив пример выше. - -Сам символ обратного слэша `'\'` является служебным, поэтому всегда экранируется, т.е пишется как `\\`: - -```js -//+ run -var str = ' символ \\ '; - -alert( str ); // символ \ -``` - -Заэкранировать можно любой символ. Если он не специальный, то ничего не произойдёт: - -```js -//+ run -alert( "\a" ); // a -// идентично alert( "a" ); -``` - -## Методы и свойства - -Здесь мы рассмотрим методы и свойства строк, с некоторыми из которых мы знакомились ранее, в главе [](/properties-and-methods). - - -### Длина length - -Одно из самых частых действий со строкой -- это получение ее длины: - -```js -//+ run -var str = "My\n"; // 3 символа. Третий - перевод строки - -alert( str.length ); // 3 -``` - -### Доступ к символам - -Чтобы получить символ, используйте вызов `charAt(позиция)`. Первый символ имеет позицию `0`: - -```js -//+ run -var str = "jQuery"; -alert( str.charAt(0) ); // "j" -``` - -В JavaScript **нет отдельного типа "символ"**, так что `charAt` возвращает строку, состоящую из выбранного символа. - -Также для доступа к символу можно также использовать квадратные скобки: - -```js -//+ run -var str = "Я - современный браузер!"; -alert( str[0] ); // "Я" -``` - -Разница между этим способом и `charAt` заключается в том, что если символа нет -- `charAt` выдает пустую строку, а скобки -- `undefined`: - -```js -//+ run -alert( "".charAt(0) ); // пустая строка -alert( "" [0] ); // undefined -``` - -Вообще же метод `charAt` существует по историческим причинам, ведь квадратные скобки -- проще и короче. - -[warn header="Вызов метода -- всегда со скобками"] - -Обратите внимание, `str.length` -- это *свойство* строки, а `str.charAt(pos)` -- *метод*, т.е. функция. - -Обращение к методу всегда идет со скобками, а к свойству -- без скобок. - -[/warn] - - -### Изменения строк - -Содержимое строки в JavaScript нельзя изменять. Нельзя взять символ посередине и заменить его. Как только строка создана -- она такая навсегда. - -Можно лишь создать целиком новую строку и присвоить в переменную вместо старой, например: - -```js -//+ run -var str = "строка"; - -str = str[3] + str[4] + str[5]; - -alert( str ); // ока -``` - -### Смена регистра - -Методы `toLowerCase()` и `toUpperCase()` меняют регистр строки на нижний/верхний: - -```js -//+ run -alert( "Интерфейс".toUpperCase() ); // ИНТЕРФЕЙС -``` - -Пример ниже получает первый символ и приводит его к нижнему регистру: - -```js -alert( "Интерфейс" [0].toLowerCase() ); // 'и' -``` - -### Поиск подстроки - -Для поиска подстроки есть метод indexOf(подстрока[, начальная_позиция]). - -Он возвращает позицию, на которой находится `подстрока` или `-1`, если ничего не найдено. Например: - -```js -//+ run -var str = "Widget with id"; - -alert( str.indexOf("Widget") ); // 0, т.к. "Widget" найден прямо в начале str -alert( str.indexOf("id") ); // 1, т.к. "id" найден, начиная с позиции 1 -alert( str.indexOf("widget") ); // -1, не найдено, так как поиск учитывает регистр -``` - -Необязательный второй аргумент позволяет искать, начиная с указанной позиции. Например, первый раз `"id"` появляется на позиции `1`. Чтобы найти его следующее появление -- запустим поиск с позиции `2`: - -```js -//+ run -var str = "Widget with id"; - -alert(str.indexOf("id", 2)) // 12, поиск начат с позиции 2 -``` - -Также существует аналогичный метод lastIndexOf, который ищет не с начала, а с конца строки. - -[smart] -Для красивого вызова `indexOf` применяется побитовый оператор НЕ `'~'`. - -Дело в том, что вызов `~n` эквивалентен выражению `-(n+1)`, например: - -```js -//+ run -alert( ~2 ); // -(2+1) = -3 -alert( ~1 ); // -(1+1) = -2 -alert( ~0 ); // -(0+1) = -1 -*!* -alert( ~-1 ); // -(-1+1) = 0 -*/!* -``` - -Как видно, `~n` -- ноль только в случае, когда `n == -1`. - -То есть, проверка `if ( ~str.indexOf(...) )` означает, что результат `indexOf` отличен от `-1`, т.е. совпадение есть. - -Вот так: - -```js -//+ run -var str = "Widget"; - -if (~str.indexOf("get")) { - alert( 'совпадение есть!' ); -} -``` - -Вообще, использовать возможности языка неочевидным образом не рекомендуется, поскольку ухудшает читаемость кода. - -Однако, в данном случае, все в порядке. Просто запомните: `'~'` читается как "не минус один", а `"if ~str.indexOf"` читается как `"если найдено"`. - -[/smart] - - -### Поиск всех вхождений - -Чтобы найти все вхождения подстроки, нужно запустить `indexOf` в цикле. Как только получаем очередную позицию -- начинаем следующий поиск со следующей. - -Пример такого цикла: - -```js -//+ run -var str = "Ослик Иа-Иа посмотрел на виадук"; // ищем в этой строке -var target = "Иа"; // цель поиска - -var pos = 0; -while (true) { - var foundPos = str.indexOf(target, pos); - if (foundPos == -1) break; - - alert( foundPos ); // нашли на этой позиции - pos = foundPos + 1; // продолжить поиск со следующей -} -``` - -Такой цикл начинает поиск с позиции `0`, затем найдя подстроку на позиции `foundPos`, следующий поиск продолжит с позиции `pos = foundPos+1`, и так далее, пока что-то находит. - -Впрочем, тот же алгоритм можно записать и короче: - -```js -//+ run -var str = "Ослик Иа-Иа посмотрел на виадук"; // ищем в этой строке -var target = "Иа"; // цель поиска - -*!* -var pos = -1; -while ((pos = str.indexOf(target, pos + 1)) != -1) { - alert( pos ); -} -*/!* -``` - -### Взятие подстроки: substr, substring, slice. - -В JavaScript существуют целых 3 (!) метода для взятия подстроки, с небольшими отличиями между ними. - -
      -
      `substring(start [, end])` -
      -Метод `substring(start, end)` возвращает подстроку с позиции `start` до, но не включая `end`. - -```js -//+ run -var str = "*!*s*/!*tringify"; -alert(str.substring(0,1)); // "s", символы с позиции 0 по 1 не включая 1. -``` - -Если аргумент `end` отсутствует, то идет до конца строки: - -```js -//+ run -var str = "st*!*ringify*/!*"; -alert(str.substring(2)); // ringify, символы с позиции 2 до конца -``` - -
      -
      `substr(start [, length])`
      -
      Первый аргумент имеет такой же смысл, как и в `substring`, а второй содержит не конечную позицию, а количество символов. - -```js -//+ run -var str = "st*!*ring*/!*ify"; -str = str.substr(2,4); // ring, со 2й позиции 4 символа -alert(str) -``` - -Если второго аргумента нет -- подразумевается "до конца строки".
      -
      `slice(start [, end])`
      -
      Возвращает часть строки от позиции `start` до, но не включая, позиции `end`. Смысл параметров -- такой же как в `substring`.
      -
      - -### Отрицательные аргументы - -Различие между `substring` и `slice` -- в том, как они работают с отрицательными и выходящими за границу строки аргументами: - -
      -
      `substring(start, end)`
      -
      Отрицательные аргументы интерпретируются как равные нулю. Слишком большие значения усекаются до длины строки: - -```js -//+ run -alert( "testme".substring(-2) ); // "testme", -2 становится 0 -``` - -Кроме того, если start > end, то аргументы меняются местами, т.е. возвращается участок строки *между* `start` и `end`: - -```js -//+ run -alert( "testme".substring(4, -1) ); // "test" -// -1 становится 0 -> получили substring(4, 0) -// 4 > 0, так что аргументы меняются местами -> substring(0, 4) = "test" -``` - -
      -
      `slice`
      -
      Отрицательные значения отсчитываются от конца строки: - -```js -//+ run -alert( "testme".slice(-2) ); // "me", от 2 позиции с конца -``` - - - -```js -//+ run -alert( "testme".slice(1, -1) ); // "estm", от 1 позиции до первой с конца. -``` - -Это гораздо более удобно, чем странная логика `substring`. -
      -
      - -Отрицательное значение первого параметра поддерживается в `substr` во всех браузерах, кроме IE8-. - -Если выбирать из этих трёх методов один, для использования в большинстве ситуаций -- то это будет `slice`: он и отрицательные аргументы поддерживает и работает наиболее очевидно. - -## Кодировка Юникод - -Как мы знаем, символы сравниваются в алфавитном порядке `'А' < 'Б' < 'В' < ... < 'Я'`. - -Но есть несколько странностей.. - -
        -
      1. Почему буква `'а'` маленькая больше буквы `'Я'` большой? - -```js -//+ run -alert( 'а' > 'Я' ); // true -``` - -
      2. -Буква `'ё'` находится в алфавите между `е` и `ж`: абвгде**ё**жз... Но почему тогда `'ё'` больше `'я'`? - -```js -//+ run -alert( 'ё' > 'я' ); // true -``` - -
      3. -
      - -Чтобы разобраться с этим, обратимся к внутреннему представлению строк в JavaScript. - -**Все строки имеют внутреннюю кодировку [Юникод](http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4).** - -Неважно, на каком языке написана страница, находится ли она в windows-1251 или utf-8. Внутри JavaScript-интерпретатора все строки приводятся к единому "юникодному" виду. Каждому символу соответствует свой код. - -Есть метод для получения символа по его коду: -
      -
      String.fromCharCode(code)
      -
      Возвращает символ по коду `code`: - -```js -//+ run -alert( String.fromCharCode(1072) ); // 'а' -``` - -
      -
      - -...И метод для получения цифрового кода из символа: - -
      -
      str.charCodeAt(pos)
      -
      Возвращает код символа на позиции `pos`. Отсчет позиции начинается с нуля. - -```js -//+ run -alert( "абрикос".charCodeAt(0) ); // 1072, код 'а' -``` - -
      -
      - -Теперь вернемся к примерам выше. Почему сравнения `'ё' > 'я'` и `'а' > 'Я'` дают такой странный результат? - -Дело в том, что **символы сравниваются не по алфавиту, а по коду**. У кого код больше -- тот и больше. В юникоде есть много разных символов. Кириллическим буквам соответствует только небольшая часть из них, подробнее -- [Кириллица в Юникоде](http://ru.wikipedia.org/wiki/%D0%9A%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D0%B0_%D0%B2_%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%D0%B5). - -Выведем отрезок символов юникода с кодами от `1034` до `1113`: - -```js -//+ run -var str = ''; -for (var i = 1034; i <= 1113; i++) { - str += String.fromCharCode(i); -} -alert( str ); -``` - -Результат: -
      -ЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяѐёђѓєѕіїјљ -
      - -Мы можем увидеть из этого отрезка две важных вещи: - -
        -
      1. **Строчные буквы идут после заглавных, поэтому они всегда больше.** - -В частности, `'а'(код 1072) > 'Я'(код 1071)`. - -То же самое происходит и в английском алфавите, там `'a' > 'Z'`. -
      2. -
      3. **Ряд букв, например `ё`, находятся вне основного алфавита.** - -В частности, маленькая буква `ё` имеет код, больший чем `я`, поэтому **`'ё'(код 1105) > 'я'(код 1103)`**. - -Кстати, большая буква `Ё` располагается в Unicode до `А`, поэтому **`'Ё'`(код 1025) < `'А'`(код 1040)**. Удивительно: есть буква меньше чем `А` :) -
      4. -
      - -**Буква `ё` не уникальна, точки над буквой используются и в других языках, приводя к тому же результату.** - -Например, при работе с немецкими названиями: - -```js -//+ run -alert( "ö" > "z" ); // true -``` - -[smart header="Юникод в HTML"] -Кстати, если мы знаем код символа в кодировке юникод, то можем добавить его в HTML, используя "числовую ссылку" (numeric character reference). - -Для этого нужно написать сначала `&#`, затем код, и завершить точкой с запятой `';'`. Например, символ `'а'` в виде числовой ссылки: `а`. - -Если код хотят дать в 16-ричной системе счисления, то начинают с `&#x`. - -В юникоде есть много забавных и полезных символов, например, символ ножниц: ✂ (`✂`), дроби: ½ (`½`) ¾ (`¾`) и другие. Их можно использовать вместо картинок в дизайне. -[/smart] - - -## Посимвольное сравнение - -Сравнение строк работает *лексикографически*, иначе говоря, посимвольно. - -Сравнение строк `s1` и `s2` обрабатывается по следующему алгоритму: - -
      1. Сравниваются первые символы: `s1[0]` и `s2[0]`. Если они разные, то сравниваем их и, в зависимости от результата их сравнения, возвратить `true` или `false`. Если же они одинаковые, то...
      2. -
      3. Сравниваются вторые символы `s1[1]` и `s2[1]`
      4. -
      5. Затем третьи `s1[2]` и `s2[2]` и так далее, пока символы не будут наконец разными, и тогда какой символ больше -- та строка и больше. Если же в какой-либо строке закончились символы, то считаем, что она меньше, а если закончились в обеих -- они равны.
      6. -
      - -Спецификация языка определяет этот алгоритм более детально. Если же говорить простыми словами, смысл алгоритма в точности соответствует порядку, по которому имена заносятся в орфографический словарь. - -```js -"Вася" > "Ваня" // true, т.к. начальные символы совпадают, а потом 'с' > 'н' -"Дома" > "До" // true, т.к. начало совпадает, но в 1й строке больше символов -``` - -[warn header="Числа в виде строк сравниваются как строки"] - -Бывает, что числа приходят в скрипт в виде строк, например как результат `prompt`. В этом случае результат их сравнения будет неверным: - -```js -//+ run -alert( "2" > "14" ); // true, так как это строки, и для первых символов верно "2" > "1" -``` - -Если хотя бы один аргумент -- не строка, то другой будет преобразован к числу: - -```js -//+ run -alert( 2 > "14" ); // false -``` - -[/warn] - -## Правильное сравнение - -Все современные браузеры, кроме IE10- (для которых нужно подключить библиотеку [Intl.JS](https://github.com/andyearnshaw/Intl.js/)) поддерживают стандарт [ECMA 402](http://www.ecma-international.org/ecma-402/1.0/ECMA-402.pdf), поддерживающий сравнение строк на разных языках, с учётом их правил. - -Способ использования: - -```js -//+ run -var str = "Ёлки"; - -alert( str.localeCompare("Яблони") ); // -1 -``` - -Метод `str1.localeCompare(str2)` возвращает `-1`, если `str1 < str2`, `1`, если `str1 > str2` и `0`, если они равны. - -Более подробно про устройство этого метода можно будет узнать в статье [](/intl), когда это вам понадобится. - -## Итого - -
        -
      • Строки в JavaScript имеют внутреннюю кодировку Юникод. При написании строки можно использовать специальные символы, например `\n` и вставлять юникодные символы по коду.
      • -
      • Мы познакомились со свойством `length` и методами `charAt`, `toLowerCase/toUpperCase`, `substring/substr/slice` (предпочтителен `slice`). Есть и другие методы, например [trim](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim) обрезает пробелы с начала и конца строки.
      • -
      • Строки сравниваются побуквенно. Поэтому если число получено в виде строки, то такие числа могут сравниваться некорректно, нужно преобразовать его к типу *number*.
      • -
      • При сравнении строк следует иметь в виду, что буквы сравниваются по их кодам. Поэтому большая буква меньше маленькой, а буква `ё` вообще вне основного алфавита.
      • -
      • Для правильного сравнения существует целый стандарт ECMA 402. Это не такое простое дело, много языков и много правил. Он поддерживается во всех современных браузерах, кроме IE10-, в которых нужна библиотека [](https://github.com/andyearnshaw/Intl.js/). Такое сравнение работает через вызов `str1.localeCompare(str2)`.
      • -
      - -Больше информации о методах для строк можно получить в справочнике: [http://javascript.ru/String](). \ No newline at end of file diff --git a/1-js/4-data-structures/4-object/1-hello-object/solution.md b/1-js/4-data-structures/4-object/1-hello-object/solution.md deleted file mode 100644 index 465bf1ad..00000000 --- a/1-js/4-data-structures/4-object/1-hello-object/solution.md +++ /dev/null @@ -1,10 +0,0 @@ - - -```js -var user = {}; -user.name = "Вася"; -user.surname = "Петров"; -user.name = "Сергей"; -delete user.name; -``` - diff --git a/1-js/4-data-structures/4-object/1-hello-object/task.md b/1-js/4-data-structures/4-object/1-hello-object/task.md deleted file mode 100644 index b0dfdaa3..00000000 --- a/1-js/4-data-structures/4-object/1-hello-object/task.md +++ /dev/null @@ -1,13 +0,0 @@ -# Первый объект - -[importance 3] - -Мини-задача на синтаксис объектов. Напишите код, по строке на каждое действие. -
        -
      1. Создайте пустой объект `user`.
      2. -
      3. Добавьте свойство `name` со значением `Вася`.
      4. -
      5. Добавьте свойство `surname` со значением `Петров`.
      6. -
      7. Поменяйте значение `name` на `Сергей`.
      8. -
      9. Удалите свойство `name` из объекта.
      10. -
      - diff --git a/1-js/4-data-structures/4-object/article.md b/1-js/4-data-structures/4-object/article.md deleted file mode 100644 index 862ebc46..00000000 --- a/1-js/4-data-structures/4-object/article.md +++ /dev/null @@ -1,339 +0,0 @@ -# Объекты как ассоциативные массивы - -Объекты в JavaScript сочетают в себе два важных функционала. - -Первый -- это ассоциативный массив: структура, пригодная для хранения любых данных. В этой главе мы рассмотрим использование объектов именно как массивов. - -Второй -- языковые возможности для объектно-ориентированного программирования. Эти возможности мы изучим в последующих разделах учебника. - -[cut] -## Ассоциативные массивы - -[Ассоциативный массив](http://ru.wikipedia.org/wiki/%D0%90%D1%81%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2) -- структура данных, в которой можно хранить любые данные в формате ключ-значение. - -Её можно легко представить как шкаф с подписанными ящиками. Все данные хранятся в ящичках. По имени можно легко найти ящик и взять то значение, которое в нём лежит. - - - -В отличие от реальных шкафов, в ассоциативный массив можно в любой момент добавить новые именованные "ящики" или удалить существующие. Далее мы увидим примеры, как это делается. - -Кстати, в других языках программирования такую структуру данных также называют *"словарь"* и *"хэш"*. - -## Создание объектов - -Пустой объект ("пустой шкаф") может быть создан одним из двух синтаксисов: - -```js -1. o = new Object(); -2. o = {}; // пустые фигурные скобки -``` - -Обычно все пользуются синтаксисом `(2)`, т.к. он короче. - -## Операции с объектом - -Объект может содержать в себе любые значения, которые называются *свойствами объекта*. Доступ к свойствам осуществляется по *имени свойства* (иногда говорят *"по ключу"*). - -Например, создадим объект `person` для хранения информации о человеке: - -```js -var person = {}; // пока пустой -``` - - - - -Основные операции с объектами -- это создание, получение и удаление свойств. - -Для обращения к свойствам используется запись "через точку", вида `объект.свойство`, например: - -```js -// при присвоении свойства в объекте автоматически создаётся "ящик" -// с именем "name" и в него записывается содержимое 'Вася' -person.name = 'Вася'; - -person.age = 25; // запишем ещё одно свойство: с именем 'age' и значением 25 -``` - - - -Значения хранятся "внутри" ящиков. Обратим внимание -- любые значения, любых типов: число, строка -- не важно. - -Чтобы прочитать их -- также обратимся через точку: -```js -alert( person.name + ': ' + person.age ); // "Вася: 25" -``` - -Удаление осуществляется оператором `delete`: - -```js -delete person.age; -``` - -Осталось только свойство `name`: - - - -Следующая операция: -
        -
      1. **Проверка существования свойства с определенным ключом.**
      2. -
      - -Для проверки существования свойства в объекте есть оператор `in`. - -Его синтаксис: `"prop" in obj`, причем имя свойства -- в виде строки, например: - -```js -if ("name" in person) { - alert( "Свойство name существует!" ); -} -``` - -Впрочем, чаще используется другой способ -- сравнение значения с `undefined`. - -Дело в том, что **в JavaScript можно обратиться к любому свойству объекта, даже если его нет**. Ошибки не будет. - -Но если свойство не существует, то вернется специальное значение `undefined`: - -```js -//+ run -var person = {}; - -alert( person.lalala ); // undefined, нет свойства с ключом lalala -``` - -Таким образом **мы можем легко проверить существование свойства -- получив его и сравнив с `undefined`**: - -```js -//+ run -var person = { - name: "Василий" -}; - -alert( person.lalala === undefined ); // true, свойства нет -alert( person.name === undefined ); // false, свойство есть. -``` - -[smart header="Разница между проверками `in` и `=== undefined`"] - -Есть два средства для проверки наличия свойства в объекте: первое -- оператор `in`, второе -- получить его и сравнить его с `undefined`. - -Они почти идентичны, но есть одна небольшая разница. - -Дело в том, что технически возможно, что *свойство есть и равно `undefined`*: - -```js -//+ untrusted refresh run -var obj = {}; -obj.test = undefined; // добавили свойство со значением undefined - -*!* -// проверим наличие свойств test и заведомо отсутствующего blabla -alert( obj.test === undefined ); // true -alert( obj.blabla === undefined ); // true -*/!* -``` - -...При этом, как видно из кода, при простом сравнении наличие такого свойства будет неотличимо от его отсутствия. - -Но оператор `in` гарантирует правильный результат: - -```js -//+ untrusted refresh run -var obj = {}; -obj.test = undefined; - -*!* -alert( "test" in obj ); // true -alert( "blabla" in obj ); // false -*/!* -``` - -Как правило, в коде мы не будем присваивать `undefined`, чтобы корректно работали обе проверки. А в качестве значения, обозначающего неизвестность и неопределенность, будем использовать `null`. -[/smart] - -### Доступ через квадратные скобки - -Существует альтернативный синтаксис работы со свойствами, использующий квадратные скобки `объект['свойство']`: - -```js -//+ run -var person = {}; - -person['name'] = 'Вася'; // то же что и person.name = 'Вася' -``` - -Записи `person['name']` и `person.name` идентичны, но квадратные скобки позволяют использовать в качестве имени свойства любую строку: - -```js -//+ run -var person = {}; - -person['любимый стиль музыки'] = 'Джаз'; // то же что и person.name = 'Вася' -``` - -Такое присвоение было бы невозможно "через точку", так интерпретатор после первого пробела подумает, что свойство закончилось, и далее выдаст ошибку: - -```js -//+ run -person.любимый стиль музыки = 'Джаз'; // ??? ошибка -``` - -В обоих случаях, **имя свойства обязано быть строкой**. Если использовано значение другого типа -- JavaScript приведет его к строке автоматически. - -### Доступ к свойству через переменную - -Квадратные скобки также позволяют обратиться к свойству, имя которого хранится в переменной: - -```js -//+ run -var person = { - age: 25 -}; -var key = 'age'; - -alert( person[key] ); // выведет person['age'] -``` - -Вообще, если имя свойства хранится в переменной (`var key = "age"`), то единственный способ к нему обратиться -- это квадратные скобки `person[key]`. - -Доступ через точку используется, если мы на этапе написания программы уже знаем название свойства. А если оно будет определено по ходу выполнения, например, введено посетителем и записано в переменную, то единственный выбор -- квадратные скобки. - -### Объявление со свойствами - -Объект можно заполнить значениями при создании, указав их в фигурных скобках: `{ ключ1: значение1, ключ2: значение2, ... }`. - -Такой синтаксис называется *литеральным* (англ. literal). - -Следующие два фрагмента кода создают одинаковый объект: - -```js -var menuSetup = { - width: 300, - height: 200, - title: "Menu" -}; - -// то же самое, что: - -var menuSetup = {}; -menuSetup.width = 300; -menuSetup.height = 200; -menuSetup.title = 'Menu'; -``` - -Названия свойств можно перечислять как в кавычках, так и без, если они удовлетворяют ограничениям для имён переменных. - -Например: - -```js -var menuSetup = { - width: 300, - 'height': 200, - "мама мыла раму": true -}; -``` - -В качестве значения можно тут же указать и другой объект: - -```js -var user = { - name: "Таня", - age: 25, -*!* - size: { - top: 90, - middle: 60, - bottom: 90 - } -*/!* -} - -alert(user.name) // "Таня" - -alert(user.size.top) // 90 -``` - -Здесь значением свойства `size` является объект `{top: 90, middle: 60, bottom: 90 }`. -## Компактное представление объектов - -[warn header="Hardcore coders only"] -Эта секция относится ко внутреннему устройству структуры данных. Она не обязательна к прочтению. -[/warn] - -Браузер использует специальное "компактное" представление объектов, чтобы сэкономить память в том случае, когда однотипных объектов много. - -Например, посмотрим на такой объект: - -```js -var user = { - name: "Vasya", - age: 25 -}; -``` - -Здесь содержится информация о свойстве `name` и его строковом значении, а также о свойстве `age` и его численном значении. Представим, что таких объектов много. - -Получится, что информация об именах свойств `name` и `age` дублируется в каждом объекте. Чтобы этого избежать, браузер применяет оптимизацию. - -**При создании множества объектов одного и того же вида (с одинаковыми полями) интерпретатор выносит описание полей в отдельную структуру. А сам объект остаётся в виде непрерывной области памяти с данными.** - -Например, есть много объектов с полями `name` и `age`: - -```js -//+ no-beautify -{name: "Вася", age: 25} -{name: "Петя", age: 22} -{name: "Маша", age: 19} -... -``` - -Для их эффективного хранения будет создана структура, которая описывает данный вид объектов. Выглядеть она будет примерно так: ``. А сами объекты будут представлены в памяти только данными: - -```js -//+ no-beautify -<структура: string name, number age> -Вася 25 -Петя 22 -Маша 19 -``` - -При добавлении нового объекта такой структуры достаточно хранить значения полей, но не их имена. Экономия памяти -- налицо. - -А что происходит, если к объекту добавляется новое свойство? Например, к одному из них добавили свойство `isAdmin`: - -```js -user.isAdmin = true; -``` - -В этом случае браузер смотрит, есть ли уже структура, под которую подходит такой объект. Если нет -- она создаётся и объект привязывается к ней. - -**Эта оптимизация является примером того, что далеко не всё то, что мы пишем, один-в-один переносится в память.** - -Современные интерпретаторы очень стараются оптимизировать как код, так и структуры данных. Детали применения и реализации этого способа хранения варьируются от браузера к браузеру. О том, как это сделано в Chrome можно узнать, например, из презентации [Know Your Engines](http://www.slideshare.net/newmovie/know-yourengines-velocity2011). Она была некоторое время назад, но с тех пор мало что изменилось. - - -## Итого - -Объекты -- это ассоциативные массивы с дополнительными возможностями: - -
        -
      • Доступ к элементам осуществляется: -
          -
        • Напрямую по ключу `obj.prop = 5`
        • -
        • Через переменную, в которой хранится ключ: - -```js -var key = "prop"; -obj[key] = 5 -``` - -
        • -
        -
      • Удаление ключей: `delete obj.name`.
      • -
      • Существование свойства может проверять оператор `in`: `if ("prop" in obj)`, как правило, работает и просто сравнение `if (obj.prop !== undefined)`.
      • -
      - - - - diff --git a/1-js/4-data-structures/4-object/object-person-1.png b/1-js/4-data-structures/4-object/object-person-1.png deleted file mode 100644 index 532330e0c44f91696e94f1ba9dd3f6772f8a28bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3070 zcmcJRc{~%28^?!exk>oSv2rFynIoxTEg}qaHD{D#&fM1+C0Ds3C31x%=bRHtG?|<+ z$2RxeWO5Ag^Sl1|{rP*ne!oAS>-9XJ=lSpbdg6_ZbU9dsSOEY4hu$5S=}GiCu{0pd ziO=ycYCj1Kex|xmKt-?c5&*!~s0Y(F3uai$;qu`d7Qs(WkO}iZJeeW2Ev>NrC-QP{ z*Io%nsgjunBJxF~g(0+2lX?n1RBt=cy9h&T&3!DsVLm!YgTu$zhC=h+q7rxHN zR3&qBDnh@6M`tM}Jp20`;GrW*jUDSY5-mMBJ!r6hM1b$LZ#lP?$#e%j985q~tYX}< zILae$TI=_Ten95)tZ`X#;!Xb&xx$VvDvxwTslavm>2FWpzy>=!igYyB}GECB)}IpbU9RzO-)?|48y7|=eQ z5VE=zs`{4FM&~#ZDT!$EZ3qcTP>SNAi8pN4bVf0EwP7N<-em6fTM1?bKGNVHp0DLx zh5Dg(N4?o$Y{~{jb{9P2OKTF*_U1 zX_9LZroVBPF5n%z8^B>s5c) zD(oz{L&J?CehuS{9}En>E)CD9Vl7BvZC^!3Q@(tQpV%1)-g_#!gF9QiQg++!0cj7F zif2g+N~GhThp{DI3my>6$nZSNRzK34bV|yb=OLwd&f;pOXBxLdcR`+|x11cLr}4+>2I4v@TzCH#7=kVEO~yns(rknk5jQNUB8DY#$WoCIC=O;R!z?geau;H@F!-Y zh-R95w7cR3mp5@-&!Tt^i>%b(Obgzq72~^WR(@}R({7PMlST61zhT>}R zN?G<~i8RS5ZglSgmsi7VC&^2};I36$j%%w`mx2P%Fj$7ytZ0Pc!b|Tnbk9^HV4)$*_DKrPtyNBOE>mR-$7Eek-q=&4FakPkD^F1tinI-1l~pqtXKNovMTE zqpx#=e7b<#42(g5#&C})Aa^6v=XobK80NDGKtaqJ#CU2Q;6oo}JfX^I3<1v{2Z+)D z*g)#FP60^_Q?zR4i&|5hfXrn1f2|;Lsf3sn9S%K}PmJ171kz$0~oO^!$5NWoEIK_W>!*OysNOIR1e%-!5iQ1R9Z0U<#r`fykjAa1rxgQ-K|=ikSH z+^3{mQvWIaf8?OnRCthSn5X zs=Mh9-$db9!FB|K1!8Uoaczo6?wkn7=gNI$)C#jJ!dnq|i=5%?TFX@FXo@-c?sQ}4w`hX}8pT???zVLETb`kWS;rOOW_gGqSZXt5{uYP>BK;@7xbe$%_x zYP5a`>KHky!N&@>fqqgp(l0dp?apz=Bx1Q(V>w|QxyLJRyPIo+unKR-{hAiHaF;FG z>6#BT2T^y9qPg8=MIn@CBS#VD3@R>+5Q++Vd06Qa7TcS<6d|d=3eVE^Be&o3hyFqP zZ+=~X%*gwzn#3VR)>VkM#L==h*n(sQR<1SN_6q&7CVlVMR~k zF5`v$>^?D)*Dc{uzbpofy*|- zXA{xoc$C#Mx!LczFIZ9hytG?(_{Rm=@J~XhG)u%8*W5h7IJGzmiv^Z~lr_^(=n!4} zF{m|cNNnr)9Nhw6g16_hXv*L z6StqM{X)OAgGA~Fe6UWfU@$eeP6?gq@EjIY3q4H=dbTdETggJ~DPRI#Nu*K>P?Dvo zNj4t9hO0ZAg6RRWE)drVr!42Mqn61k&O;1eR)6cRsq6&A|N9T#D!~-9G>T diff --git a/1-js/4-data-structures/4-object/object-person-1@2x.png b/1-js/4-data-structures/4-object/object-person-1@2x.png deleted file mode 100644 index 7904d95ce3b8d0a81ca43319b94d7f7f3192d640..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7309 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 pOSKP8lq;pF*dr7bRL!H>Girp$HFrf) zYBokIR_%~8j#w3fgxI6j`8R&Q7tiy3^Zh)ppJXcwBe1Z7FaQ7mn;0W)P8o2T*MetH zyAWeRI|VS<#s~qR^eZg^00Ju}$X{&3fh&b5jFg>R=fK;yO;VVK)ExxBa|tkB)cBhu zNi9i=)-EQgmT4R=c2U_5e&eN@uC)hRImNxC1812eI^`^mA;Sle#QPFw?n$6Uwh)9# zU;eNLXmCN*L~QmS_{xyFY1!t8MQ*|VfZoae$pW;&_YJJzDun!r@+gzy(_XN-ZWb^# zY5_GC3b`Xo1hIm}>IJB?jnV0MEBD}-G#+`vSnGR}r(fZV;5 ztIXKr_9HyrT?5x?|HL~#0Kgf?a&uAfXH4n@y3bERIt-?ktACj!<|6bY(J^#B2E$+> z;G%>SATiiuw_BG_Ob-o8Qc_NdcwUjF9fkkVJXBhMds5MM7RsybD?>ZQRmw7#2}^WP z^~q7q5PO@Vlng(JuD_7HIy5d|PC)-2$r8A09ZPyQ{M1adG9++Qc0V)Yn|(%JS1YOA z<>)$R#E!Tr%>O013UaY>?yc4x@s^8OB&)HgKUM{cwSE`_fdun2hAseY@AIMHfZsN) zsVcbcBzF-(WsHF-md{FF90LTt=rdYM2dJyW{iuwq*jJkrhd)ME@bih?zVr?X`a4aq z76+g$5JQXrS>i1+V(|Zw@h!j#zxb^fw=#)WrT{MI8o!}i?Mx9uufUB@rsPm%@(BQfC>t>%^i#)co&>M*Ao24ZvQ$U}{-_)8(sHBS^awe~Z+tyOO$ zv=#cehx&cy_hCn((hX(@HpN$4^2iii4OW1Q^L|yENiC488Qh9-UL-`jtY}C%y^$kiG*BJll$U9A*^EBo)IkS<*$0}A0Qnxzv&1o77 z-bxt_HpS2BXSZ^fu~U{*l>UL_(TGD~7W=Zla#5+Ldl#0_LgO4_EWNPS>&1bL$&psk;CYP?JUMeo@2u5K^V#Z~bT%u(mL3B>y{WpnL|v3W<& zTixP5A_Ur*w{~TVMuc?L%0tiFdYKnAx}?i$IayzkDZh8OqVNq|Xev%_kP)s0)d`!!< z)vQ+RT?f)lASjm>z!=m8ni+LpSBeLaZZbnc$nD^f?DW_tX_=N^SS7AL$2IS|KbFs_ zOvAQwyZNqEk)~0f1D|Wt^Em1B{lD+O diff --git a/1-js/4-data-structures/4-object/object-person-2@2x.png b/1-js/4-data-structures/4-object/object-person-2@2x.png deleted file mode 100644 index 73ab98e80bc06118ee090434e5c7a8d56df8cb8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5001 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 diff --git a/1-js/4-data-structures/4-object/object-person-empty.png b/1-js/4-data-structures/4-object/object-person-empty.png deleted file mode 100644 index 668f13bf721a407554add3d01d00de9db01cc9a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3731 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 diff --git a/1-js/4-data-structures/4-object/object-person-empty@2x.png b/1-js/4-data-structures/4-object/object-person-empty@2x.png deleted file mode 100644 index da71618c4a1560d0a47a879db131a229c91855f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8333 zcmeHNXHXMuv<5{*6i|xvqR0n`7>e{JC?ZM`5Rfhe2t7#X-HMbXqSBk7NDD+jK!MOA z3B8j*ARq<^2!Stj2q8D${c-=@nLGE-ojdc*yfeFVcJ}PM=RD_`bDrI#hvvqd9Kswd zEG(QR_wHCRkFzW+ta0q8nP-&qpDD}(E5yp!kfnN1bcKaQ(%9sV!J`OPO8(g_zQt^8 z+aF*Pxq#Jc*uYbf0|UI*e<$@yvAhdwombtp+_m1T7VT^jyuf?4PwfndKcBpzWp&xq zo#uJ}apaCsvFzSFtHIM-XFqlay><&+S}s_ruAompA7vYFIs}`H8yudVXm=FSoPF@N&}p!b8R+5x>8?9-}uz(jLCJ zE|kmou`bt|1JxF}6cbQDi$EK$&PeM8kZR(6T8oMgi8uUE^)p`&77ZCG4+_qoI;m2% zbN9#iP=@O4TCTNPWMp&QfUvQhhGK&sj-bRpfsp^UU(hoUKYfsFXLmnUNxFJh3lEqR z2Eo9@?TGRXK&3<=cq30NG}09a;|Ux9^hRp^{i@b@%j;Dy=L)+nIY=||QjuS#)v^TqnD#5E^3XKgi*T~Kz${q33IMm2) zXcLH$q8|4MLEsb!Xyn_hoVeyX@Fzdx+EQxc_=Zc^M@LlAJy4niyPs>F(;rHi%`t6Y zC~I}9CBzf5iTW`OXK`$Hw&uwl6fFAs>wehd!Xf{)F#Q;Of+?s!==WQiCcUNyFSvLN z*M-6IiSeO1H%9T5qBk=D;8|ylhhs{Yyjn*b^;hOHs@G!Yn}%KvzmS#tqR*FZD zsdszC!4DqhXZMF--ef%NxI<5q2MI3vGbUSgrnu1A@ks#CtG>kw2u@|mvm(CNu6SoF z)NZzjs1)5a>KnpA!oOv?MZu{vjI=8Td_jA_$~Ou>Tc)`@jIsa1tckC?r%er zmfVaxxiPTrR$*FE#O`9DB4kjnqhEhlZ5i#xeZ{7Hid}hG;Db9SOD48$r`?8an84TNmAKU>4o~h) zm(C};4XolFRw-6_)Ney|E?DWy=w1Vgs|IOTy6ism3_YlOy!@F%(@nq$(5KNR&Xehqs zPi19l?auqHz=(`cqWz5<6sKRSD)}R}A=A3itHFnREhswi2-N-Cn|#&2mW$NIUR8%l z5oyqRcsRF1)yv1$98l1Z#ju^Hj0MDivy8rp*t?f)j>AJM6mm585t}gA@$wq14I*E(B z+lGiIy;x`r{7WNI7lmuZpR1ek8x$)IsjP8bUcRb{IL>>KICXm@`7(cuDz~tJ@`nPM z^=iEazrC$fPdEA&YlnZAzehpv;2TZLqjvVO`2mji+c)ZL1m%ygGHa8Co8+)$;9-&b zJ+>z;g8m#LI}M;~$ha=Tg0I#f;G2al$fSax3mZzymPaK%? zVsrTHuZJpJ%^6yIo1dny6(@QmO6)IPC%;PLvHNJg68)j#$-*+0GPa);HD!}keQo#km)pD&e(^fIK1d3?;O6c z&Le(PZfHkngL~f@!&`&shO0kZ9t`W(kp|1v7vRW!^7`f&*CDL2phPvyG|)egZXUGw z<(+6rT{=8`Hd&=qXJwNVDguJ)&epsgK*4ZJF{L!#c#OsRFO`RTwI3=zS#I%@TzQ_ji7}+JP@ZR)Ng$3OV*BBtgp{C z10@nt+g^^{bR}+|Z$>sA)E%{YP-grDwDx{07^uA$^UL?4vnt74*U=ApWseEoXA3IR zWP5!uF@G&C1`FRj)F*93yO&!%wKa=3+q42b7RqhGnmB~2_V8QMCX16FnoTX}QgDP9 zs`@?P`qC!>4e8KQhZabqe}j#?=i`4+6+`R~ogTj^rZ;yNWSyk_h>V)B32aeY@K?b- z*q~30J{ibAaEV{9ji8`Hwd55-bW7%fqZpd};O>DQvfaHZiS^a1jj9-DdOAaXla@gR zdGN&TtGt(QX}pvkz3$vRKIL;dUTbl!3oL8IUy6UpN7Pt@9ta|pPWcIMRaw+$<)0P? z>p`-$X{|-Rqb>ah<$we3@UZv>{l7Vn9fs$-=zN`s5UOxyjq#X%R6qW4yoSsI<3m&w z^-M+ZI-r?G%SU{c=gbwjq=@^e4O@se^M51@cnixkgo2bs=A5#$eM15*fU%M?wN-ub zxU}V0QxR!Km#qoG{Q1uN zwo$AmFIdS z$AaN~$oKM2Axo;UE6_t$l2y>+mgNPW*b|E4vCy=l1hywStVRa+w$HXlY^&aVeS#-} z`oDDWi>_dx8kiTmb31w3`Vv5=tE3-hhx9wNe!4mlgf1(^9UHf(jpqxWux9{F3We8B zPFDP`SU64l!xDA3`KsFI)x8mOS#|@K#2mx!3nDKoypdQOSN&aA&G9tBOz{(nE>YjP zqH%)_gX&oo7`lx3X;sZa($6HA%?sfdgFeg`E)k;+s|D@WD(slLZEy#C^W-a(QqC;l z=(4t8!D#OYUrmzaPkd9JC1vu)TbPGc5PWY^S>+xlH$w-&5ApbGdX2!5D)V(VJ`PND z%&87LuX+cFP{KaM0-X+-30(nduVs^4`V4PCtHl1?!8``SieT99+ZPk4qgXX*6~89E zg=r47Q0}{5N+yQP?Hb;6zggCSyDS3M0Csg31o9~s{35`P2byV*Y>4WUiclrYWC!dv zqyItzRT&-m*l|950ixjGuKjOo~@f1 z!>UPeIOoxys~aLhQU-xj!dIB~O|rt=Shbvg`yMH^6(e}os*iBNO~>RjzVoF1jHs!r z$*7FLU#T)lpXY-j+R2fZ72evc9S&b>L!^8FvnUkT(({3%+*V{j;Avu2qyn41RG=6tP zQ;bOzArH;Q^3v3M-lNiCjRRwM^mfKNBg#QJ4MG-&wpz1l79zAq7UxMNIo?g=vG+Q9 z83+a9Q@3LSW-w2`S{)BxHw|{YY(HHN7rpqHiA-Bzo)2?z(XpK}k6nnZ$7W}(ZoSE4 zNtKzx|H|ODw$ZzqRUs__1yK#zSr-|=Uekx>V`_hYiOgyDdg34mIQe$0KB=Q6 zy`Wl95y0*t#Y%F$(B5|CEwon(bb*ESzg^w3tkWgSv6bSjvO^pBpH|llou5J>@&utH zXL}vuJ4=(VN*ruAZ8mVuh`|!M!m^x0Tgl<=g&*q2-#Ypg+*_LP5~Aci0iB*1|D34= zY4(I$f7r`%E``XgtG&iV{Zco51zpX^Ea+ui-bJyRCUgZ|SBl5f?RF(eHCr%AFN(D@oYcM#!)E5NGu`jR6UZe?&6go-NAZe%K?RV@&S6 zssDR|+LM;|vQ3eFy>uyi^{oiVwE3tiL3C|JFna#fG4=jDl+#bdfebxZr~)^)6m;(o z7PL<$351(j2YUska4pNXNQ`5f=i+@*^ko4@TY25i1#YNl@bAo zEU9k|+v;2Ezj(}FLUwAo)gw3E@E2l8c5ZhRJaB-B<;^6To)ZIz>-#KCaR8g9;JFIm zy<=zit|&c1ZLZpWAT_{tGvHEwY=>?#BNa7rn(rNxo8HZ5Bb#T67SnZGEG%T-B1%6E z3}lsR7uu;Ur1Q0joqu(y_Mz-(Vtls!^c>+5wJSZ1qc0v7yV+4ZhOT~B9rW>MncAW9 zz+O^~q8>8tGc7p>zpmHG30hx@ay(>2muYIyhjEQxRw>8~QVR_HUbRgdRll1JmF8ur{sk}&M+Bcp+CC}zf`##$b5G-s6(D-+ z<%^|fyJ^rND!{+*mmlu+ zj^lVZQwY-{J=-moBQ_VrbvYykGx^#j=7x!{jatRmCqNgMz$z-}LnypamC9no9p}4w zB08E2_D!lAJ!*ZHwW)vv{h-h>)ZYRs{6>46@odF0oYca^lx>+Z95U^}%Uf;v_f zwpoYLbg>0t9IPI@uj29f2a$z&tud*sT|W?NwT&dNp;*uX#H;PNq<2tOq~}5HhFVOl3dLU zIn!YUg`=bcOj4q;n3L^LeJgL`XZFVy=#>R?s=AK`tiQ_wpeq@X4jGykX0>iG@xNivo3%LpQ1!M4%E+jrZv`A zZ`M!im-K_u&S^U4XfGXvSJ``0Y#LEJk*$H#)%9YYqP|?m+QU^M~vIws`W}wtXJ3)9} z9FBj^uG;-9{OuM(M5zyR;FM=U+pSmfLh8`a*O+qCTN5b`an0q)t$g-$+g=ydu_H{4*VGmN}l za4zsW-X*hdvIJ1zhD7J2vkX!ZH%A}0ULG{cXhoah2Dw!zxl4GgV>KASM&k$+uB?z z*h^{wj|Lajxd$u~pvoyij+4o&@BJ)pjNlojl*%%AN8D?VPHe>tQNN>*B=US_mVmL(h#fKo0OHPwob`6jMm#l&2YN7RwKu%2G-{I|1X(igC$)Zi!52W~3QQ9isP-2Ll>$!d0!gmM8 zZzIjr@X?t~wdx;-e9L0pU!dZ={RpQr9|vj+LcZHOqE(Rgpy}R1Um=Qyz|B+;YSV`T z4+b!2QS{u)2myQl%UOHt*V8ctn_o#`FGpH{4~D+HCh&`xiz4U;tps)T@j#dAQ?t&k zpQXwQJ%#iZe(!MC2sDX)f|gqQs_R#-4os6NgnA0UYhI~C#SKq&&DU-d1}qo|iwVPb z&FB&&7Z)AwmH*>9eR~0rrmXg5k0M}N0(PV z))7lXv?{qOukVgVzN0%TqmdgNa4;#l*WGkZ;v6iKlS>X7LS2@DKS(e zxK+Z6S!b)aJUfR3ARkIvM)pO1{ddpQ^#zKfewJ@!-=w+c)OFaett)(n(-9fCJY!|N8j5~<3P<E~s$NeVh|y;aii(Jij7`DJ1|H<=p|8n)rw6BICT*Rx3{6u(QVt4{T~bt>|N z#(00i&rIjw9d!s7<+~o=`Vu+nvf6LNk!rs#)ibW>gn*24yX#LgriX`~A9xOA1cNlP zS#h=gClYgNWnXESFvr1rJxLxOmsvt9Yi^I-c<4binf^X(Z^ zUC2nNRvaktS-a(1+U3s_Bzo9oo1)rF{Qi)7w2C;{Zb`mkyXj1^y>0OWW18Q1&w66+ zbC9p;sS}bHG84qDRCjWL$m6|mXo|c;SNdGx#2D|fvDt(gh62BTf#sRoh2h&dU+C5H zf@MqEP12Y<$&iL7PVP7YskeE!$_J!kB=pHwuElS8Mi6I^Aj_KBCl=!4D>hb7=ag|^ jM2%#|S%J-V7_1F&wCG#(_a5f|1uP~;=69+MpFIB$L0Q-M diff --git a/1-js/4-data-structures/4-object/object.png b/1-js/4-data-structures/4-object/object.png deleted file mode 100644 index abda01bb9997107c2ba1ae042df8573fbc824de9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3543 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 R5gPyi002ovPDHLkV1nO!r2PN@ diff --git a/1-js/4-data-structures/4-object/object@2x.png b/1-js/4-data-structures/4-object/object@2x.png deleted file mode 100644 index bd2590bb4586b3ac32a7ab24ec8cc0dd73f0e4a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10261 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 7 - - alert( code + ": " + value ); // 7, 38, 1 во всех браузерах -} -``` - -## Итого - -
        -
      • Цикл по ключам: `for (key in obj)`.
      • -
      • Порядок перебора соответствует порядку объявления для нечисловых ключей, а числовые -- сортируются (в современных браузерах).
      • -
      • Если нужно, чтобы порядок перебора числовых ключей соответствовал их объявлению в объекте, то используют трюк: числовые ключи заменяют на похожие, но содержащие не только цифры. Например, добавляют в начало `+`, как описано в примере выше, а потом, в процессе обработки, преобразуют такие ключи в числа.
      • -
      - diff --git a/1-js/4-data-structures/6-object-reference/article.md b/1-js/4-data-structures/6-object-reference/article.md deleted file mode 100644 index 76d9b028..00000000 --- a/1-js/4-data-structures/6-object-reference/article.md +++ /dev/null @@ -1,157 +0,0 @@ -# Объекты: передача по ссылке - -Фундаментальным отличием объектов от примитивов, является их хранение и копирование "по ссылке". - -[cut] - -## Копирование по значению - -Обычные значения: строки, числа, булевы значения, `null/undefined` при присваивании переменных копируются целиком или, как говорят, *"по значению"*. - -```js -var message = "Привет"; -var phrase = message; -``` - -В результате такого копирования получились две полностью независимые переменные, в каждой из которых хранится значение `"Привет"`. - - - -## Копирование по ссылке - -С объектами -- всё не так. - -**В переменной, которой присвоен объект, хранится не сам объект, а "адрес его места в памяти", иными словами -- "ссылка" на него.** - -Вот как выглядит переменная, которой присвоен объект: - -```js -var user = { - name: "Вася" -}; -``` - - - -Внимание: объект -- вне переменной. В переменной -- лишь "адрес" (ссылка) для него. - -**При копировании переменной с объектом -- копируется эта ссылка, а объект по-прежнему остается в единственном экземпляре.** - -Например: - -```js -//+ no-beautify -var user = { name: "Вася" }; // в переменной - ссылка - -var admin = user; // скопировали ссылку -``` - -Получили две переменные, в которых находятся ссылки на один и тот же объект: - - - -**Так как объект всего один, то изменения через любую переменную видны в других переменных:** - -```js -//+ run -var user = { name: 'Вася' }; - -var admin = user; - -*!*admin.name*/!* = 'Петя'; // поменяли данные через admin - -alert(*!*user.name*/!*); // 'Петя', изменения видны в user -``` - -[smart header="Переменная с объектом как \"ключ\" к сейфу с данными"] -Ещё одна аналогия: переменная, в которую присвоен объект, на самом деле хранит не сами данные, а ключ к сейфу, где они хранятся. - -При копировании её, получается что мы сделали копию ключа, но сейф по-прежнему один. -[/smart] - -## Клонирование объектов - -Иногда, на практике -- очень редко, нужно скопировать объект целиком, создать именно полную независимую копию, "клон" объекта. - -Что ж, можно сделать и это. Для этого нужно пройти по объекту, достать данные и скопировать на уровне примитивов. - -Примерно так: - -```js -//+ run -var user = { - name: "Вася", - age: 30 -}; - -*!* -var clone = {}; // новый пустой объект - -// скопируем в него все свойства user -for (var key in user) { - clone[key] = user[key]; -} -*/!* - -// теперь clone - полностью независимая копия -clone.name = "Петя"; // поменяли данные в clone - -alert( user.name ); // по-прежнем "Вася" -``` - -В этом коде каждое свойство объекта `user` копируется в `clone`. Если предположить, что они примитивны, то каждое скопируется по значению и мы как раз получим полный клон. - -Если же свойства объектов, в свою очередь, могут хранить ссылки на другие объекты, то нужно обойти такие подобъекты и тоже склонировать их. Это называют "глубоким" клонированием. - -## Вывод в консоли - -Откройте консоль браузера (обычно [key F12]) и запустите следующий код: - -```js -//+ run -var time = { - year: 2345, - month: 11, - day: 10, - hour: 11, - minute: 12, - second: 13, - microsecond: 123456 -} - -console.log(time); // (*) -time.microsecond++; // (**) - -console.log(time); -time.microsecond++; - -console.log(time); -time.microsecond++; -``` - -Как видно, в нём некий объект выводится строкой `(*)`, затем он меняется в строке `(**)` и снова выводится, и так несколько раз. Пока ничего необычного, типичная ситуация -- скрипт делает какую-то работу с объектом и выводит в консоли то, как она продвигается. - -Необычное -- в другом! - -При раскрытии каждый объект будет выглядеть примерно так (скриншот из Chrome): - - - -**Судя по выводу, свойство `microsecond` всегда было равно `123459`... Или нет?** - -Если посмотреть на код выше то, очевидно, нет! Это свойство меняется, а консоль нас просто дурит. - -**При "раскрытии" свойств объекта в консоли -- браузер всегда выводит их текущие (на момент раскрытия) значения.** - -Так происходит именно потому, что вывод не делает "копию" текущего содержимого, а сохраняет лишь ссылку на объект. Запомните эту особенность консоли, в будущем, при отладке скриптов у вас не раз возникнет подобная ситуация. - - -## Итого - -
        -
      • Объект присваивается и копируется "по ссылке". То есть, в переменной хранится не сам объект а, условно говоря, адрес в памяти, где он находится.
      • -
      • Если переменная-объект скопирована или передана в функцию, то копируется именно эта ссылка, а объект остаётся один в памяти.
      • -
      - -Это -- одно из ключевых отличий объекта от примитива (числа, строки...), который при присвоении как раз копируется "по значению", то есть полностью. - diff --git a/1-js/4-data-structures/6-object-reference/object-reference-console.png b/1-js/4-data-structures/6-object-reference/object-reference-console.png deleted file mode 100644 index 9944a2df77a20e9958dfc40d7275f6f2d59b95f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14779 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 X@JS9ZQH9Wd$^)PInFangN#vbp diff --git a/1-js/4-data-structures/6-object-reference/object-reference-console@2x.png b/1-js/4-data-structures/6-object-reference/object-reference-console@2x.png deleted file mode 100644 index bfb0a3cfc077dd4ee1a8b3fa844649b4e4f67f33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33019 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 diff --git a/1-js/4-data-structures/6-object-reference/variable-contains-reference.png b/1-js/4-data-structures/6-object-reference/variable-contains-reference.png deleted file mode 100644 index 53d18fedaeac0e34d8241897f43fc13555860616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7856 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 diff --git a/1-js/4-data-structures/6-object-reference/variable-copy-reference.png b/1-js/4-data-structures/6-object-reference/variable-copy-reference.png deleted file mode 100644 index b6a502c3c1233a32dba4767f19ae300212555268..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11359 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 diff --git a/1-js/4-data-structures/6-object-reference/variable-copy-value@2x.png b/1-js/4-data-structures/6-object-reference/variable-copy-value@2x.png deleted file mode 100644 index 588762f531797295c2bb1c22113d22f67cc2a344..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39369 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 WC~su(`xIRv{-6+j%`)}JFaHOp)Hk{S diff --git a/1-js/4-data-structures/7-array/1-get-last-in-array/solution.md b/1-js/4-data-structures/7-array/1-get-last-in-array/solution.md deleted file mode 100644 index 729b5d48..00000000 --- a/1-js/4-data-structures/7-array/1-get-last-in-array/solution.md +++ /dev/null @@ -1,16 +0,0 @@ -Последний элемент имеет индекс на `1` меньший, чем длина массива. - -Например: - -```js -var fruits = ["Яблоко", "Груша", "Слива"]; -``` - -Длина массива этого массива `fruits.length` равна `3`. Здесь "Яблоко" имеет индекс `0`, "Груша" -- индекс `1`, "Слива" -- индекс `2`. - -То есть, для массива длины `goods`: - -```js -var lastItem = goods[goods.length - 1]; // получить последний элемент -``` - diff --git a/1-js/4-data-structures/7-array/1-get-last-in-array/task.md b/1-js/4-data-structures/7-array/1-get-last-in-array/task.md deleted file mode 100644 index b33ea3d9..00000000 --- a/1-js/4-data-structures/7-array/1-get-last-in-array/task.md +++ /dev/null @@ -1,9 +0,0 @@ -# Получить последний элемент массива - -[importance 5] - -Как получить последний элемент из произвольного массива? - -У нас есть массив `goods`. Сколько в нем элементов -- не знаем, но можем прочитать из `goods.length`. - -Напишите код для получения последнего элемента `goods`. \ No newline at end of file diff --git a/1-js/4-data-structures/7-array/10-maximal-subarray/_js.view/solution.js b/1-js/4-data-structures/7-array/10-maximal-subarray/_js.view/solution.js deleted file mode 100644 index 5835fb09..00000000 --- a/1-js/4-data-structures/7-array/10-maximal-subarray/_js.view/solution.js +++ /dev/null @@ -1,10 +0,0 @@ -function getMaxSubSum(arr) { - var maxSum = 0, - partialSum = 0; - for (var i = 0; i < arr.length; i++) { - partialSum += arr[i]; - maxSum = Math.max(maxSum, partialSum); - if (partialSum < 0) partialSum = 0; - } - return maxSum; -} \ No newline at end of file diff --git a/1-js/4-data-structures/7-array/10-maximal-subarray/_js.view/test.js b/1-js/4-data-structures/7-array/10-maximal-subarray/_js.view/test.js deleted file mode 100644 index 4fc8605e..00000000 --- a/1-js/4-data-structures/7-array/10-maximal-subarray/_js.view/test.js +++ /dev/null @@ -1,33 +0,0 @@ -describe("getMaxSubSum", function() { - it("максимальная подсумма [1, 2, 3] равна 6", function() { - assert.equal(getMaxSubSum([1, 2, 3]), 6); - }); - - it("максимальная подсумма [-1, 2, 3, -9] равна 5", function() { - assert.equal(getMaxSubSum([-1, 2, 3, -9]), 5); - }); - - it("максимальная подсумма [-1, 2, 3, -9, 11] равна 11", function() { - assert.equal(getMaxSubSum([-1, 2, 3, -9, 11]), 11); - }); - - it("максимальная подсумма [-2, -1, 1, 2] равна 3", function() { - assert.equal(getMaxSubSum([-2, -1, 1, 2]), 3); - }); - - it("максимальная подсумма [100, -9, 2, -3, 5] равна 100", function() { - assert.equal(getMaxSubSum([100, -9, 2, -3, 5]), 100); - }); - - it("максимальная подсумма [] равна 0", function() { - assert.equal(getMaxSubSum([]), 0); - }); - - it("максимальная подсумма [-1] равна 0", function() { - assert.equal(getMaxSubSum([-1]), 0); - }); - - it("максимальная подсумма [-1, -2] равна 0", function() { - assert.equal(getMaxSubSum([-1, -2]), 0); - }); -}); \ No newline at end of file diff --git a/1-js/4-data-structures/7-array/10-maximal-subarray/solution.md b/1-js/4-data-structures/7-array/10-maximal-subarray/solution.md deleted file mode 100644 index 355b5d0c..00000000 --- a/1-js/4-data-structures/7-array/10-maximal-subarray/solution.md +++ /dev/null @@ -1,101 +0,0 @@ -# Подсказка (медленное решение) -Можно просто посчитать для каждого элемента массива все суммы, которые с него начинаются. - -Например, для `[-1, 2, 3, -9, 11]`: - -```js -//+ no-beautify -// Начиная с -1: --1 --1 + 2 --1 + 2 + 3 --1 + 2 + 3 + (-9) --1 + 2 + 3 + (-9) + 11 - -// Начиная с 2: -2 -2 + 3 -2 + 3 + (-9) -2 + 3 + (-9) + 11 - -// Начиная с 3: -3 -3 + (-9) -3 + (-9) + 11 - -// Начиная с -9 --9 --9 + 11 - -// Начиная с -11 --11 -``` - -Сделайте вложенный цикл, который на внешнем уровне бегает по элементам массива, а на внутреннем -- формирует все суммы элементов, которые начинаются с текущей позиции. - -# Медленное решение - -Решение через вложенный цикл: - -```js -//+ run -function getMaxSubSum(arr) { - var maxSum = 0; // если совсем не брать элементов, то сумма 0 - - for (var i = 0; i < arr.length; i++) { - var sumFixedStart = 0; - for (var j = i; j < arr.length; j++) { - sumFixedStart += arr[j]; - maxSum = Math.max(maxSum, sumFixedStart); - } - } - - return maxSum; -} - -alert( getMaxSubSum([-1, 2, 3, -9]) ); // 5 -alert( getMaxSubSum([-1, 2, 3, -9, 11]) ); // 11 -alert( getMaxSubSum([-2, -1, 1, 2]) ); // 3 -alert( getMaxSubSum([1, 2, 3]) ); // 6 -alert( getMaxSubSum([100, -9, 2, -3, 5]) ); // 100 -``` - -Такое решение имеет [оценку сложности](http://ru.wikipedia.org/wiki/%C2%ABO%C2%BB_%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%BE%D0%B5_%D0%B8_%C2%ABo%C2%BB_%D0%BC%D0%B0%D0%BB%D0%BE%D0%B5) O(n2), то есть при увеличении массива в 2 раза алгоритм требует в 4 раза больше времени. На больших массивах (1000, 10000 и более элементов) такие алгоритмы могут приводить к серьёзным "тормозам". - -# Подсказка (быстрое решение) - -Будем идти по массиву и накапливать в некоторой переменной `s` текущую частичную сумму. Если в какой-то момент s окажется отрицательной, то мы просто присвоим `s=0`. Утверждается, что максимум из всех значений переменной s, случившихся за время работы, и будет ответом на задачу. - -**Докажем этот алгоритм.** - -В самом деле, рассмотрим первый момент времени, когда сумма `s` стала отрицательной. Это означает, что, стартовав с нулевой частичной суммы, мы в итоге пришли к отрицательной частичной сумме -- значит, и весь этот префикс массива, равно как и любой его суффикс имеют отрицательную сумму. - -Следовательно, от всего этого префикса массива в дальнейшем не может быть никакой пользы: он может дать только отрицательную прибавку к ответу. - -# Быстрое решение - -```js -//+ run -function getMaxSubSum(arr) { - var maxSum = 0, - partialSum = 0; - for (var i = 0; i < arr.length; i++) { - partialSum += arr[i]; - maxSum = Math.max(maxSum, partialSum); - if (partialSum < 0) partialSum = 0; - } - return maxSum; -} - - -alert( getMaxSubSum([-1, 2, 3, -9]) ); // 5 -alert( getMaxSubSum([-1, 2, 3, -9, 11]) ); // 11 -alert( getMaxSubSum([-2, -1, 1, 2]) ); // 3 -alert( getMaxSubSum([100, -9, 2, -3, 5]) ); // 100 -alert( getMaxSubSum([1, 2, 3]) ); // 6 -alert( getMaxSubSum([-1, -2, -3]) ); // 0 -``` - -Информацию об алгоритме вы также можете прочитать здесь: [](http://e-maxx.ru/algo/maximum_average_segment) и здесь: [Maximum subarray problem](http://en.wikipedia.org/wiki/Maximum_subarray_problem). - -Этот алгоритм требует ровно одного прохода по массиву, его сложность имеет оценку `O(n)`. \ No newline at end of file diff --git a/1-js/4-data-structures/7-array/10-maximal-subarray/task.md b/1-js/4-data-structures/7-array/10-maximal-subarray/task.md deleted file mode 100644 index 2381c0f6..00000000 --- a/1-js/4-data-structures/7-array/10-maximal-subarray/task.md +++ /dev/null @@ -1,28 +0,0 @@ -# Подмассив наибольшей суммы - -[importance 2] - -На входе массив чисел, например: `arr = [1, -2, 3, 4, -9, 6]`. - -Задача -- найти непрерывный подмассив `arr`, сумма элементов которого максимальна. - -Ваша функция должна возвращать только эту сумму. - -Например: - -```js -getMaxSubSum([-1, *!*2, 3*/!*, -9]) = 5 (сумма выделенных) -getMaxSubSum([*!*2, -1, 2, 3*/!*, -9]) = 6 -getMaxSubSum([-1, 2, 3, -9, *!*11*/!*]) = 11 -getMaxSubSum([-2, -1, *!*1, 2*/!*]) = 3 -getMaxSubSum([*!*100*/!*, -9, 2, -3, 5]) = 100 -getMaxSubSum([*!*1, 2, 3*/!*]) = 6 (неотрицательные - берем всех) -``` - -Если все элементы отрицательные, то не берём ни одного элемента и считаем сумму равной нулю: - -```js -getMaxSubSum([-1, -2, -3]) = 0 -``` - -Постарайтесь придумать решение, которое работает за O(n2), а лучше за O(n) операций. \ No newline at end of file diff --git a/1-js/4-data-structures/7-array/2-add-item-to-array/solution.md b/1-js/4-data-structures/7-array/2-add-item-to-array/solution.md deleted file mode 100644 index 9f72e68b..00000000 --- a/1-js/4-data-structures/7-array/2-add-item-to-array/solution.md +++ /dev/null @@ -1,6 +0,0 @@ -Текущий последний элемент имеет индекс `goods.length-1`. Значит, индексом нового элемента будет `goods.length`: - -```js -goods[goods.length] = 'Компьютер' -``` - diff --git a/1-js/4-data-structures/7-array/2-add-item-to-array/task.md b/1-js/4-data-structures/7-array/2-add-item-to-array/task.md deleted file mode 100644 index 6f0e6d16..00000000 --- a/1-js/4-data-structures/7-array/2-add-item-to-array/task.md +++ /dev/null @@ -1,7 +0,0 @@ -# Добавить новый элемент в массив - -[importance 5] - -Как добавить элемент в конец произвольного массива? - -У нас есть массив `goods`. Напишите код для добавления в его конец значения "Компьютер". diff --git a/1-js/4-data-structures/7-array/3-create-array/solution.md b/1-js/4-data-structures/7-array/3-create-array/solution.md deleted file mode 100644 index 7b518dbf..00000000 --- a/1-js/4-data-structures/7-array/3-create-array/solution.md +++ /dev/null @@ -1,11 +0,0 @@ - - -```js -//+ run -var styles = ["Джаз", "Блюз"]; -styles.push("Рок-н-Ролл"); -styles[styles.length - 2] = "Классика"; -alert( styles.shift() ); -styles.unshift("Рэп", "Регги "); -``` - diff --git a/1-js/4-data-structures/7-array/3-create-array/task.md b/1-js/4-data-structures/7-array/3-create-array/task.md deleted file mode 100644 index 0426c89c..00000000 --- a/1-js/4-data-structures/7-array/3-create-array/task.md +++ /dev/null @@ -1,24 +0,0 @@ -# Создание массива - -[importance 5] - -Задача из 5 шагов-строк: -
        -
      1. Создайте массив `styles` с элементами "Джаз", "Блюз".
      2. -
      3. Добавьте в конец значение "Рок-н-Ролл"
      4. -
      5. Замените предпоследнее значение с конца на "Классика". Код замены предпоследнего значения должен работать для массивов любой длины.
      6. -
      7. Удалите первое значение массива и выведите его `alert`.
      8. -
      9. Добавьте в начало значения "Рэп" и "Регги".
      10. -
      - -Массив в результате каждого шага: - -```js -//+ no-beautify -Джаз, Блюз -Джаз, Блюз, Рок-н-Ролл -Джаз, Классика, Рок-н-Ролл -Классика, Рок-н-Ролл -Рэп, Регги, Классика, Рок-н-Ролл -``` - diff --git a/1-js/4-data-structures/7-array/4-random-from-array/solution.md b/1-js/4-data-structures/7-array/4-random-from-array/solution.md deleted file mode 100644 index a121e5ab..00000000 --- a/1-js/4-data-structures/7-array/4-random-from-array/solution.md +++ /dev/null @@ -1,11 +0,0 @@ -Для вывода нужен случайный номер от `0` до `arr.length-1` включительно. - -```js -//+ run -var arr = ["Яблоко", "Апельсин", "Груша", "Лимон"]; - -var rand = Math.floor(Math.random() * arr.length); - -alert( arr[rand] ); -``` - diff --git a/1-js/4-data-structures/7-array/4-random-from-array/task.md b/1-js/4-data-structures/7-array/4-random-from-array/task.md deleted file mode 100644 index 6a74b033..00000000 --- a/1-js/4-data-structures/7-array/4-random-from-array/task.md +++ /dev/null @@ -1,16 +0,0 @@ -# Получить случайное значение из массива - -[importance 3] - -Напишите код для вывода `alert` случайного значения из массива: - -```js -var arr = ["Яблоко", "Апельсин", "Груша", "Лимон"]; -``` - -P.S. Код для генерации случайного целого от `min` to `max` включительно: - -```js -var rand = min + Math.floor(Math.random() * (max + 1 - min)); -``` - diff --git a/1-js/4-data-structures/7-array/5-calculator-for-input/solution.md b/1-js/4-data-structures/7-array/5-calculator-for-input/solution.md deleted file mode 100644 index 70176c1d..00000000 --- a/1-js/4-data-structures/7-array/5-calculator-for-input/solution.md +++ /dev/null @@ -1,23 +0,0 @@ -В решение ниже обратите внимание: мы не приводим `value` к числу сразу после `prompt`, так как если сделать `value = +value`, то после этого отличить пустую строку от нуля уже никак нельзя. А нам здесь нужно при пустой строке прекращать ввод, а при нуле -- продолжать. - -```js -//+ run demo -var numbers = []; - -while (true) { - - var value = prompt("Введите число", 0); - - if (value === "" || value === null || isNaN(value)) break; - - numbers.push(+value); -} - -var sum = 0; -for (var i = 0; i < numbers.length; i++) { - sum += numbers[i]; -} - -alert( sum ); -``` - diff --git a/1-js/4-data-structures/7-array/5-calculator-for-input/task.md b/1-js/4-data-structures/7-array/5-calculator-for-input/task.md deleted file mode 100644 index 6c3cfab5..00000000 --- a/1-js/4-data-structures/7-array/5-calculator-for-input/task.md +++ /dev/null @@ -1,13 +0,0 @@ -# Создайте калькулятор для введённых значений - -[importance 4] - -Напишите код, который: -
        -
      • Запрашивает по очереди значения при помощи `prompt` и сохраняет их в массиве.
      • -
      • Заканчивает ввод, как только посетитель введёт пустую строку, не число или нажмёт "Отмена".
      • -
      • При этом ноль `0` не должен заканчивать ввод, это разрешённое число.
      • -
      • Выводит сумму всех значений массива
      • -
      - -[demo /] \ No newline at end of file diff --git a/1-js/4-data-structures/7-array/6-item-value/solution.md b/1-js/4-data-structures/7-array/6-item-value/solution.md deleted file mode 100644 index 8d3c2ac1..00000000 --- a/1-js/4-data-structures/7-array/6-item-value/solution.md +++ /dev/null @@ -1,24 +0,0 @@ - - -```js -//+ run -var arr = [1, 2, 3]; - -var arr2 = arr; // (*) -arr2[0] = 5; - -alert( arr[0] ); -alert( arr2[0] ); -``` - -Код выведет `5` в обоих случаях, так как массив является объектом. В строке `(*)` в переменную `arr2` копируется ссылка на него, а сам объект в памяти по-прежнему один, в нём отражаются изменения, внесенные через `arr2` или `arr`. - -В частности, сравнение `arr2 == arr` даст `true`. - -Если нужно именно скопировать массив, то это можно сделать, например, так: - -```js -var arr2 = []; -for (var i = 0; i < arr.length; i++) arr2[i] = arr[i]; -``` - diff --git a/1-js/4-data-structures/7-array/6-item-value/task.md b/1-js/4-data-structures/7-array/6-item-value/task.md deleted file mode 100644 index e9a080b9..00000000 --- a/1-js/4-data-structures/7-array/6-item-value/task.md +++ /dev/null @@ -1,18 +0,0 @@ -# Чему равен элемент массива? - -[importance 3] - -Что выведет этот код? - -```js -var arr = [1, 2, 3]; - -var arr2 = arr; -arr2[0] = 5; - -*!* -alert( arr[0] ); -alert( arr2[0] ); -*/!* -``` - diff --git a/1-js/4-data-structures/7-array/7-array-find/_js.view/solution.js b/1-js/4-data-structures/7-array/7-array-find/_js.view/solution.js deleted file mode 100644 index c172ef0a..00000000 --- a/1-js/4-data-structures/7-array/7-array-find/_js.view/solution.js +++ /dev/null @@ -1,11 +0,0 @@ -function find(array, value) { - if (array.indexOf) { // если метод существует - return array.indexOf(value); - } - - for (var i = 0; i < array.length; i++) { - if (array[i] === value) return i; - } - - return -1; -} \ No newline at end of file diff --git a/1-js/4-data-structures/7-array/7-array-find/_js.view/test.js b/1-js/4-data-structures/7-array/7-array-find/_js.view/test.js deleted file mode 100644 index 86b958ba..00000000 --- a/1-js/4-data-structures/7-array/7-array-find/_js.view/test.js +++ /dev/null @@ -1,26 +0,0 @@ -describe("find", function() { - - describe("возвращает позицию, на которой найден элемент", function() { - it("в массиве [1,2,3] находит 1 на позиции 0", function() { - assert.equal(find([1, 2, 3], 1), 0); - }); - it("в массиве [1,2,3] находит 2 на позиции 1", function() { - assert.equal(find([1, 2, 3], 2), 1); - }); - it("в массиве [1,2,3] находит 3 на позиции 2", function() { - assert.equal(find([1, 2, 3], 3), 2); - }); - }); - - it("если элемент не найден, возвращает -1", function() { - assert.equal(find([1, 2, 3], 0), -1); - }); - - it("отличает false или null от 0", function() { - assert.equal(find([false, true, null], 0), -1); - }); - - it("отличает 1 от true", function() { - assert.equal(find([1, 2, 3], true), -1); - }); -}); \ No newline at end of file diff --git a/1-js/4-data-structures/7-array/7-array-find/solution.md b/1-js/4-data-structures/7-array/7-array-find/solution.md deleted file mode 100644 index 3c83019b..00000000 --- a/1-js/4-data-structures/7-array/7-array-find/solution.md +++ /dev/null @@ -1,61 +0,0 @@ -Возможное решение: - -```js -function find(array, value) { - - for (var i = 0; i < array.length; i++) { - if (array[i] == value) return i; - } - - return -1; -} -``` - -Однако, в нем ошибка, т.к. сравнение `==` не различает `0` и `false`. - -Поэтому лучше использовать `===`. Кроме того, в современном стандарте JavaScript существует встроенная функция
      Array#indexOf, которая работает именно таким образом. Имеет смысл ей воспользоваться, если браузер ее поддерживает. - -```js -//+ run -function find(array, value) { - if (array.indexOf) { // если метод существует - return array.indexOf(value); - } - - for (var i = 0; i < array.length; i++) { - if (array[i] === value) return i; - } - - return -1; -} - -var arr = ["a", -1, 2, "b"]; - -var index = find(arr, 2); - -alert( index ); -``` - -... Но еще лучшим вариантом было бы определить `find` по-разному в зависимости от поддержки браузером метода `indexOf`: - -```js -// создаем пустой массив и проверяем поддерживается ли indexOf -if ([].indexOf) { - - var find = function(array, value) { - return array.indexOf(value); - } - -} else { - var find = function(array, value) { - for (var i = 0; i < array.length; i++) { - if (array[i] === value) return i; - } - - return -1; - } - -} -``` - -Этот способ - лучше всего, т.к. не требует при каждом запуске `find` проверять поддержку `indexOf`. diff --git a/1-js/4-data-structures/7-array/7-array-find/task.md b/1-js/4-data-structures/7-array/7-array-find/task.md deleted file mode 100644 index f32038e4..00000000 --- a/1-js/4-data-structures/7-array/7-array-find/task.md +++ /dev/null @@ -1,18 +0,0 @@ -# Поиск в массиве - -[importance 3] - -Создайте функцию `find(arr, value)`, которая ищет в массиве `arr` значение `value` и возвращает его номер, если найдено, или `-1`, если не найдено. - -Например: - -```js -arr = ["test", 2, 1.5, false]; - -find(arr, "test"); // 0 -find(arr, 2); // 1 -find(arr, 1.5); // 2 - -find(arr, 0); // -1 -``` - diff --git a/1-js/4-data-structures/7-array/8-filter-range/_js.view/solution.js b/1-js/4-data-structures/7-array/8-filter-range/_js.view/solution.js deleted file mode 100644 index 58002f54..00000000 --- a/1-js/4-data-structures/7-array/8-filter-range/_js.view/solution.js +++ /dev/null @@ -1,11 +0,0 @@ -function filterRange(arr, a, b) { - var result = []; - - for (var i = 0; i < arr.length; i++) { - if (arr[i] >= a && arr[i] <= b) { - result.push(arr[i]); - } - } - - return result; -} \ No newline at end of file diff --git a/1-js/4-data-structures/7-array/8-filter-range/_js.view/test.js b/1-js/4-data-structures/7-array/8-filter-range/_js.view/test.js deleted file mode 100644 index 4cb4cbf6..00000000 --- a/1-js/4-data-structures/7-array/8-filter-range/_js.view/test.js +++ /dev/null @@ -1,15 +0,0 @@ -describe("filterRange", function() { - it("не меняет исходный массив", function() { - var arr = [5, 4, 3, 8, 0]; - - filterRange(arr, 0, 10); - assert.deepEqual(arr, [5, 4, 3, 8, 0]); - }); - - it("оставляет только значения указанного интервала", function() { - var arr = [5, 4, 3, 8, 0]; - - var result = filterRange(arr, 3, 5); - assert.deepEqual(result, [5, 4, 3]); - }); -}); \ No newline at end of file diff --git a/1-js/4-data-structures/7-array/8-filter-range/solution.md b/1-js/4-data-structures/7-array/8-filter-range/solution.md deleted file mode 100644 index 37421191..00000000 --- a/1-js/4-data-structures/7-array/8-filter-range/solution.md +++ /dev/null @@ -1,29 +0,0 @@ -# Алгоритм решения -
        -
      1. Создайте временный пустой массив `var results = []`.
      2. -
      3. Пройдите по элементам `arr` в цикле и заполните его.
      4. -
      5. Возвратите `results`.
      6. -
      - -# Решение - -```js -//+ run -function filterRange(arr, a, b) { - var result = []; - - for (var i = 0; i < arr.length; i++) { - if (arr[i] >= a && arr[i] <= b) { - result.push(arr[i]); - } - } - - return result; -} - -var arr = [5, 4, 3, 8, 0]; - -var filtered = filterRange(arr, 3, 5); -alert( filtered ); -``` - diff --git a/1-js/4-data-structures/7-array/8-filter-range/task.md b/1-js/4-data-structures/7-array/8-filter-range/task.md deleted file mode 100644 index 428d1a60..00000000 --- a/1-js/4-data-structures/7-array/8-filter-range/task.md +++ /dev/null @@ -1,17 +0,0 @@ -# Фильтр диапазона - -[importance 3] - -Создайте функцию `filterRange(arr, a, b)`, которая принимает массив чисел `arr` и возвращает новый массив, который содержит только числа из `arr` из диапазона от `a` до `b`. То есть, проверка имеет вид `a ≤ arr[i] ≤ b`. -Функция не должна менять `arr`. - -Пример работы: - -```js -var arr = [5, 4, 3, 8, 0]; - -var filtered = filterRange(arr, 3, 5); -// теперь filtered = [5, 4, 3] -// arr не изменился -``` - diff --git a/1-js/4-data-structures/7-array/9-eratosthenes-sieve/sieve.gif b/1-js/4-data-structures/7-array/9-eratosthenes-sieve/sieve.gif deleted file mode 100644 index d1960cefce9ed783675b6f3d7ed0a4b76f604d28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44506 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 -
    4. Создать список последовательных чисел от `2` до `n`: `2, 3, 4, ..., n`.
    5. -
    6. Пусть `p=2`, это первое простое число.
    7. -
    8. Зачеркнуть все последующие числа в списке с разницей в `p`, т.е. `2*p, 3*p, 4*p` и т.д. В случае `p=2` это будут `4,6,8...`.
    9. -
    10. Поменять значение `p` на первое не зачеркнутое число после `p`.
    11. -
    12. Повторить шаги 3-4 пока p2 < n.
    13. -
    14. Все оставшиеся не зачеркнутыми числа -- простые.
    15. -
    - -Посмотрите также [анимацию алгоритма](sieve.gif). - -Реализуйте "Решето Эратосфена" в JavaScript, используя массив. - -Найдите все простые числа до `100` и выведите их сумму. - - - diff --git a/1-js/4-data-structures/7-array/array-pop.png b/1-js/4-data-structures/7-array/array-pop.png deleted file mode 100644 index 6583cbe71014bde2c31d5cc1fc69d93e13ed2a2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12719 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 M3(E+V3F!I#FA+(pfdBvi diff --git a/1-js/4-data-structures/7-array/array-shift.png b/1-js/4-data-structures/7-array/array-shift.png deleted file mode 100644 index a02344467dcf93315c74f5844ffb611327d35f81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20798 zcmZ_0WmKF&weLq^B zUfuOnojSVrsg6)mkU~blM*sr@Lza;iR{;ZqPzJrvfr9}(qw5)@fL_3zRHQ_~s;3A~ zz`%sTWW+_(+`-SY5p^*a-~UceoJED0xJigBW6JlkZm+41jG57Od8u=^W+>s1B(_7z5fts&FAq5|Fwei&+(Ag^d}Vt3lQ|YAkX91Y_hV< z>AtE;ODR7^ls*wH{~=&=KvraB8K@ES_FJG#AUu{DD(`0#D2XiX=7B5zh9na?^TD zN^GdKpjp6ZLZDs|L*&KfoJL8S{rnB>Dskdud~=9SF(yp?ZxlD`=<0J|htGkt-VmzV zx#0Z;w=&;gR3O1g!Jz!XP{AOC!Qj{>Axw0L;3{kU_83vF;(^NhH7w0IYfw=9B4BqD z7z_Cdq&sO~$Av~r)d)77L*ht^%&Jm#vAquFp@uYKgQQaq{J{|5q)PMU7cEqvhGxoqL7MK*^t9&z15ZT*6L7-Qrp1L@NC!JM z%8p;87fXC%mzCQ$3kf=6sw0B_0tW`Ji3<7_v^p&Y+(I1aTW_t49GU<J<#Fga$bfPv;puYp04LHN9*}r1Ot;;a z#eXG`*L{=tONvY(%o?1=W}0)$rL}^();Fq*v=z(-BU!xR(<|Z=1G=9U;8fLowo4A| z?t1H-?>8Z6LjNsp`B35P;@c5Hxfi0E<~ceYY%Y|!%u)rb=&kQ`9_v}PoPwP)q=pmX z3L$gL0|>O8K^|x-&aY726-SfVu=Sg4pm|-SS3`(of`OFj(bW+&m`Zcy`3lvu227AG znPI>c%ZS&bcHgTBp?u_+edv6Ji5oS0FeJDg1(@fdjR3?Ay9sDTwwG_bc*ZSa4E zUwB>jxGw8te>^8UEYSJaL>FTbSUz%BeW>feD%A9`ePI_`i0|>QBE-n(2{8_^IYz%x ztVb_~ygn4H9?XusJ%@;6yv;!Pe9}FwPm zg^Ubm%IKuLpSI{%c$@@`NQX(ql&U20io1v=yQ-UcieHE=$0bX4?D)AkYx@l7bKMm& z2+|DUG-?0*%M4}DcB%@u4-WAK&4h{o=UsWkk@;&-?UX+^_-q zxUG`o5}Drfbv|3*S}E(XTTd%jQj{14YsNovjRZP_Io9yd1|WSed8i^OM?Ze!3Y15@Q$$WLdDgIuVEV zqHmpx;PUSqDp~?`bz^Q8O}Ku}D^@0zQVpbts8@6#qtjm`BK?j5Qn%wA#JnvEWjs~b z52A;&9KnUeCq6pY3m`1>aHHSOjbcLG@c1&>s)W}BK`sWf&(+;7c0Q5fkxI6!y0-NN zOFqBaHO+_KLeqTAIGVKZX)tD$Shxg4fUsh$SlHIu`ogn&sSdtGQ=S>tCY+~6FNAjv z8Q9B@-c9wFAD1Bq_^~M!z9)8vMqg6=gf4H+SPZ!6Y195j6%o*hKX%%^`z<>Q^e}Lq z^P`!d#5li(wZsc{0YdpG*Sk*vO4mi>dNO+C5o*)lDg&Ngr7i?ST-wjjj1+tdN%wMf z7q!Wy)F0K_sR_e8lEHP=CAl9JKr2svg}$p~Md5a02FZV{Q?KY#@dAe#FI3PUyEUBo z>iv&UpiR5E96Lk{iJ9yy(nk6HXe;WUas=42gg8s^)C+RBy$6Cw&bgfrkI@$WYQhJvyO zr)uP~Pr)E%mV}*5cdpWLm-?`ysc$9ZmYvSMlIQ_jm$sVyGr=$f(u}evZ}Y`@V+$~+ zt~qs)25%#GiB_gwB$SvDh3;1v!;NUc%jmq-x?aecrS{054C8C17NB`)2DqGO*uW-C@8JJ?2YJNFJ zAw-bCBMV0V)`TB;6VxcIyZ61G<_X~)uwTXLA2einmL0??08qyU280LOU9LNLG#@%XuD^6sb&>?eVH*8V6Y6( zF2d6KUill-bVilDVTu%+UQw^DqL0ieksOpebaseLXEg-iE~A3^I8QCAzql`_C@B0} zR!L_XUl!hGg?e~Z0Cd8mHaGw_1O?l)P>@fJUgTfyrfog=YN`KuPc6?SWI}iQstgIc z~gU0RV0ROQ097+wSJihCq4}ldaj=b)^}OM`rRcIv|xqLaxJY)v zm*MkR!CXI^^uq4~NfPw-PhPQm_^j5;OGc|jR&nL2ywEiQqOK&8)j54GWKQVsUGca| zZ|jjmjsLc8ubv5BG^7-=S05!hzh)|m_mvZrwkx31KI_wb3Lf_V5&REDipY|r(B61o zy(XVB886lGfhnm}cbVOCGMKjqDN&!C54Ld+rwvpJRPzvbyV5eYp=PFbJ=!H5_W+V= zjjBCy8*LJ1Nkm=d{t|a9NEO6YztQgIRnvvpUxmf4fN&f$*8Hdh)T&88{W@7}-1t74!MArSN~8%V`AXMAd) zGX)Cj3R5MHy(P@H`t}^ASS4G==5voPpt(=ePUE>H?*}A$MS*sz=^YgILZKiwBtXs$ z-vZ>^1Y&3-J9unXEMx-NF)k4ohs>TH+m3ITekq)da0kRnCBSz5q>zakT%LISno=QE zJ6=pqDQT@S4mSE&xNY7YjS%Y+rCh|7##??@9Cl5cmc@Y1rrHVN=Ul9P)Xw+!jAFfx zcQoPG3MZ2;5crrXv+dL9FmIVJ853RQ6ScvJvfzdSO1qraJo3yGW`%<*K24eG6lBVe zX(M)Dzt-nuVq?9kYrXH2SQ9g+dHoEUPig(S7boWzzHT76MaL(#NPXlg)3P4&kEL=J zQ>NU{DXS=?a=F@@D?+6zV^CG<>JoXW@e$ASTZQ%?J_x4ky=SXJqFG3s)bi}UJ&b%}iGiGOyF352(Y zHeb4@c8fg53mQ=XAqPR&lx^O>c%GT`P*>450y5FdZk~!$;MWcNWb13fV5QxCmZb*# zzP9@uT({5>MT0iu;LCqTn#<6o&-}yNFdFRMK-e{frW&a3WB2i{z2Rr(LiGGM zIkR40sKcAm5-^nRvqo@-5F>I_*l;CCK0wN5m*R+B=={fbo|g{BPkb7ZiPQDQe+gec zGm|P*2}oX)J8Fz@s71+!%Z{R;)6@dlO*{5F54k6j9ODmmj3)}p{C7lcDdj;9DqC>L zNgh-2=$&auj>|Af7_iMYJG6GfN0#KFt2?Oi}t>6 zy{fIpD+AZ<+Ex6U__lQJ*70==$9bEsKxR{%wMvLvm8dUzE|Fx;?PLD2VVSu1kRZ`h zfUwPHtSg4{JWN9jZcq8Fl)J0vhCT6>!&}5}rHS`(CY#~-nb=RRldzb^%pZQq{{sW^ zV8q24PiTM02#LMy`n*FpYun_bnd}8a*=WBE?oTA_u)yhU{lj(X57|;X*?uP1@A$d8 zkbk_}JjW70*z>-JJY@1SDlfelsN;^ph#-JF@_|1qcW>}-G-yd)n1)05_Ec?d!eZKl z^GJ^C;||AMQSs$YIF1*~J~d)=s8sPhJ5{I2ub43+2d$d-aqN#G#wMNO;-T@`N3Bck zO^VEtRm`}QQpJ+qJkN2u6K|f`;;Mg+y4l=svb?w{3y_gp9H}o6QvBumX*9jDEuPq| zP*iOFJ+Ih1Re17=O#d5~ZxGja*lV+QV19Ou>---@fY&~`wvAN`SWkM2Ry1*KcE?St z1noK~- z2Q^!+_Vt35+t|_AQxV(NF{{y>)4Qq33_@W@Vn==TKa<-9_)eDc-Q9PailK<>ZhFrY zD@~4#?4w)F?>^@(Pe!ZT@4pXI&=%Sok?$sW7-t&Ftv`!>i({u5sUz{v?2WD9N>Eu` zt>5e{Nj18&ZIPzjbM*eGe>Mst(xS!G~WJeK&rxp<&>e{^}T=W{sz8c=*bx2 zg|h3`Q?}*_hr(%&KZGUahp_%b)aEOKAVlHsKL?1P`rKG%hu1Ur_X` zMqS6A7+Qr$-ud|ic6>F6-~%u+Lrv(vOzDVlDKe%vvz8?UwAt?lK~!qPosj>r@khs{;18Refz0bG6s?EW~na=M5CEz4U zd^aHp1A6q`OU+1`MeCKs-Roe49Q-l04rj)Alye-=AkKc?8rhzax5Xm~(ooaWQAt^{ z2~))OZn_F8o9<~honHOUYJL5TCWbHSmv3rllQ1B^U8&RHyr(nR#$z>YC*RoIk<8p; zai$8+R*5)ijX{UcFpHtjM5TNrWTLuld1hXRHbl+wNr;j-#^Zj*41NB4*bDT zVXf)wg4whpqP~wm0WSM5vp&s^Jy8y?W)uBq;OH#TmdplS!i&U zWudNe*6wkNJA{zbqq-C2(cbPC`48=ctDCb%Jm*`&MKTah`wI7;v#LU6tDtJi*S- zh(nfKKUOWP8#u*Lln75eu)5-5TFnu$ScR-ekw@qVQsuAl)=1-FH9tA7Bcr=f&g4HD=@|du6#;;SI zM_K2vH7H|bf}oL7LyNHn=?G{OC__U1eQo7wp}n=e6EjY?jYtX z(5-*p`z{?hv2Ujo-n6$x&hRDaar{cY{i1iId%q};-4Z_*{h*xiU>)$*M)7fWssAhy zPO%2-%A43m&w3Xoh7*<$hx2y3-O}OeK6a-lznolnqe}$isgeEd81Go?zM@Y66qpuy zI%G+#?8JBDvEEY1Jo+Y4LJI4KnR7mV>P8FFxCI36*3+gdTI)yrYW%k89%%5chRFf& zw<)jjl-s~$J?c{Sqh}1gh%L`ND^{#lsxu&1Vl>%itymC4+lrE*-eZowVAiGdc{w5w zuU^>^Z2u8_!CeI?MZW*i|K?7|L3f^%2yw-pELC!QXS`DqX;cdyLen=hq25twx$PG&Vk7vJF71@p9@>Ap?Gl zu*Fu}->jKp(%mbGJT$0dBKwJ3rofMyGR=A7HqRpSZ zKNa<<3_=TeLhs~C@=K2{4$MT{7a1~t2@+f4Q08{uOMWzX#x&V{B6>abZE%`<=zxE~ zu`dzRhOVY#{Q)uhBPgEj8DG9wn^r zYwXH(i!Q<9i>OH2lTURz90}X~)Zh)cY1*D9#{cL$Ca!4+M3uXVVABhA<9;l$@uN56 zr~WRCPR42EY$|6@Z_+>l1)<{JG*cmLCJDqf^l-sDi8d8(+j|7{6|G zrZKb^joT?bz;7IzX*G13-R?1y__`g1mMvH_rouwQhoiptw3`u37C%Zu%P8vtT z1h)}@mJ>#6nQxQxs(*1Af!O%#AMSn}TJ#yxEJNlPK5&{p?pifPKKC@L3f^eBDe^au zh%+t2VGMh2KR6@o3mc^WJhLmJ5$hj-N(whvke#L9R`heQfD*tq&k(^J9RWMxUw1!q z3E+Va}(EeWCy72jyBV-_Y^~B->OcFvbY8XSmv*W{TA!qU|LH!VVfv# z0u_s6cb*Y7f zE>oh+$z`9n->->N*of12DXcMWT4d=oNsYUK;ky$nM4Xa_tIO98$Ejiu7*N@~Eix_Z zf&xluIOb+PCmr!wntnqMnSoRl{NBoPc@RQdvEzoP^2-8R8hu$e3Yq?orx)B!FWHzq z`-}(M29DT+;hJmFDxX8t@WX8pv^J|FHRg4QW_vS(cK1(#kTw)7jb7HW#BVhO#X>E|B)+`o{rQuMtP zu$9x48bH3jU1$Ra^nc?6Zx5p*P`(|%u5vatD*np}IpDvC-&(j)=$AJh8{0h9byW1l zJPrf?)^?FIW~mbm#$h11lT28-e*xi}_KgQopbs&P!Sr27-G`tLFV=T><4^TjyZxcod%P~==~JsG z_mDz&FFqDzH%)Ah2}yQCE+$aqm?Lp_)m57P^CL&%LG@jIJk{X03~coCL7eOA4N5{n z)KYrz8Ma{I>3^P!!k(IFpee)&E?LMYiRh6wrIlTnW+a|^1VP|^9k@;^xFe_4+bYa! z(t7e1vq(F7KXTeD%Jf}*y^FD0jY?IFqT6PsgY)y0c)0^VCD5z>ZF}+lv~=^t+|YG? z`&C;#UV3UC0j<9%z4Dc5H~w2nstzj65o71ZcP&iOs4@;ybN~XAk|}`l6W%oVzu-*} z*F!^r;3q{KafMHOol$r$Cvi}gbu6M=(e&DB%5qaqRWtqV0H?djTg#d@URhdeL9pI` z#ZZ10>aj9}ylKh8KhD@bu_5ocs3XT-)kI02f*N!a)uX_iMRC|Y{2UOUD*s)tBF=@i z0D)2a7wKh5?K$MV;>H{-RT;aX5Z*V0$?jWNbt_BLpn+Yir!`=yiF*V|ZKNeSr+>faHV?LxDOhcMr0fWc zqe4mLnYp#Xfk+83xB`L%uwwv`dAkP5<=xE>s$F9B&J>%!>jV~dLh65egl<%|EDiBx zl)ST7Rc;>U>BbYx^a0GsgHfdd`&ZR}Oape<%igTPn|4k&{mzB(UT^$?AR29DL99A! zsA6f4=4Cm;rU{5ls8pGhIr6aafq9IR)t=Hrbz*GGy86TMd5r;bmBMm*4rj}9hc3T$ z2t<&8>g>QA9tlXaYH|?$kyOcdS2uO5Fw`ocx9C?y34g6kTQuX1FX85~(z#w@RowSD67=a6n3gxt%`6TPKx-Cvof8P{c-Gm5n>=T1-m!Dmxxk%llr5+q1p?1Q6gBT zgEPc+T{a;NK?e4ik2VV7W_(}hq~yOUp1QtA=CTD>0Z})%`SR;Mb{EiuXu2k zaUojyK$uxYI@*8E4CAiORIn*hUSU07x5M5TNo!uc0!f|$t$86p4&&5GlO5--(zG13 zpxc0zP%04f!#3TqIIOMMu^TyHK1q)j`Wriy5xjDV*>Tb)Yn8q`QIm~4oC<1hxo5Ga zL?wX+1*-z+>4W40n+lC;4-T?t9N`f10AT_6RxuJQ8*!pdVjTRO+BWa1ICfDiCOj{o zp}_iKg0<5Y!Mz)z#_|{D2o<5_UiPB?Bt6@0_zj|L4Kw$r^B9wVv`Z;=vXmDcI4Ygx zm)7;Yv#%gdlIMg14%B(9vFu5WMk#9u4`gOc3XSCE8V}PltLF(ZN5j8+WJ|!)4~OFp1V%XKBGv3 zGmE|8k>cX^yvBv30ug`!+G#8Xx@Qpmv+IxX_zBhbt;)aru%eevY~+}E^ds=irwqi% zLUD^q?=fn_m=(aD01+r+@5@>XmI2_*

    &y9h+}mezsO#MuP;!{AMLo^g+J5?>)k0 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

    2{5 z0!|3%Gs$`d%KKOsF)QT~-zX8bpqiwRBr|yn+m%rkLc`=p{ZjI^iKV-;)^)Y8)RAC6 zF$SBZ#^bQd#J)BF@5#fa{XxBDYvrbpOP!5%ttsrl4YRo>H?k8aU;LE6fo>2Y!g`PihhJnhD!NRE!

    tF3_4Ahpj4*IL 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 t0XD4Ai|&I9^atHg|g{tr%S@;Lwi diff --git a/1-js/4-data-structures/7-array/array-speed@2x.png b/1-js/4-data-structures/7-array/array-speed@2x.png deleted file mode 100644 index 05f5c483e72838c25f1a3814c2596e65ee2848e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25069 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 diff --git a/1-js/4-data-structures/7-array/article.md b/1-js/4-data-structures/7-array/article.md deleted file mode 100644 index b7d4063a..00000000 --- a/1-js/4-data-structures/7-array/article.md +++ /dev/null @@ -1,462 +0,0 @@ -# Массивы c числовыми индексами - -*Массив* -- разновидность объекта, которая предназначена для хранения пронумерованных значений и предлагает дополнительные методы для удобного манипулирования такой коллекцией. - -Они обычно используются для хранения упорядоченных коллекций данных, например -- списка товаров на странице, студентов в группе и т.п. - -[cut] - -## Объявление - -Синтаксис для создания нового массива -- квадратные скобки со списком элементов внутри. - -Пустой массив: - -```js -var arr = []; -``` - -Массив `fruits` с тремя элементами: - -```js -var fruits = ["Яблоко", "Апельсин", "Слива"]; -``` - -**Элементы нумеруются, начиная с нуля.** - -Чтобы получить нужный элемент из массива -- указывается его номер в квадратных скобках: - -```js -//+ run -var fruits = ["Яблоко", "Апельсин", "Слива"]; - -alert( fruits[0] ); // Яблоко -alert( fruits[1] ); // Апельсин -alert( fruits[2] ); // Слива -``` - -Элемент можно всегда заменить: - -```js -fruits[2] = 'Груша'; // теперь ["Яблоко", "Апельсин", "Груша"] -``` - -...Или добавить: - -```js -fruits[3] = 'Лимон'; // теперь ["Яблоко", "Апельсин", "Груша", "Лимон"] -``` - -Общее число элементов, хранимых в массиве, содержится в его свойстве `length`: - -```js -//+ run -var fruits = ["Яблоко", "Апельсин", "Груша"]; - -alert( fruits.length ); // 3 -``` - -**Через `alert` можно вывести и массив целиком.** - -При этом его элементы будут перечислены через запятую: - -```js -//+ run -var fruits = ["Яблоко", "Апельсин", "Груша"]; - -alert( fruits ); // Яблоко,Апельсин,Груша -``` - -**В массиве может храниться любое число элементов любого типа.** - -В том числе, строки, числа, объекты, вот например: - -```js -//+ run no-beautify -// микс значений -var arr = [ 1, 'Имя', { name: 'Петя' }, true ]; - -// получить объект из массива и тут же -- его свойство -alert( arr[2].name ); // Петя -``` - -## Методы pop/push, shift/unshift - -Одно из применений массива -- это [очередь](http://ru.wikipedia.org/wiki/%D0%9E%D1%87%D0%B5%D1%80%D0%B5%D0%B4%D1%8C_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29). В классическом программировании так называют упорядоченную коллекцию элементов, такую что элементы добавляются в конец, а обрабатываются -- с начала. - - - -В реальной жизни эта структура данных встречается очень часто. Например, очередь сообщений, которые надо показать на экране. - -Очень близка к очереди еще одна структура данных: [стек](http://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B5%D0%BA). Это такая коллекция элементов, в которой новые элементы добавляются в конец и берутся с конца. - - - -Например, стеком является колода карт, в которую новые карты кладутся сверху, и берутся -- тоже сверху. - -Для того, чтобы реализовывать эти структуры данных, и просто для более удобной работы с началом и концом массива существуют специальные методы. - -### Конец массива - -
    -
    `pop`
    -
    Удаляет *последний* элемент из массива и возвращает его: - -```js -//+ run -var fruits = ["Яблоко", "Апельсин", "Груша"]; - -alert( fruits.pop() ); // удалили "Груша" - -alert( fruits ); // Яблоко, Апельсин -``` - -
    -
    `push`
    -
    Добавляет элемент *в конец* массива: - -```js -//+ run -var fruits = ["Яблоко", "Апельсин"]; - -fruits.push("Груша"); - -alert( fruits ); // Яблоко, Апельсин, Груша -``` - -Вызов `fruits.push(...)` равнозначен `fruits[fruits.length] = ...`. -
    -
    - -### Начало массива - -
    -
    `shift`
    -
    Удаляет из массива *первый* элемент и возвращает его: - -```js -var fruits = ["Яблоко", "Апельсин", "Груша"]; - -alert( fruits.shift() ); // удалили Яблоко - -alert( fruits ); // Апельсин, Груша -``` - -
    -
    `unshift`
    -
    Добавляет элемент *в начало* массива: - -```js -var fruits = ["Апельсин", "Груша"]; - -fruits.unshift('Яблоко'); - -alert( fruits ); // Яблоко, Апельсин, Груша -``` - -
    -
    - -Методы `push` и `unshift` могут добавлять сразу по несколько элементов: - -```js -//+ run -var fruits = ["Яблоко"]; - -fruits.push("Апельсин", "Персик"); -fruits.unshift("Ананас", "Лимон"); - -// результат: ["Ананас", "Лимон", "Яблоко", "Апельсин", "Персик"] -alert( fruits ); -``` - -## Внутреннее устройство массива - -Массив -- это объект, где в качестве ключей выбраны цифры, с дополнительными методами и свойством `length`. - -Так как это объект, то в функцию он передаётся по ссылке: - -```js -//+ run -function eat(arr) { - arr.pop(); -} - -var arr = ["нам", "не", "страшен", "серый", "волк"] - -alert( arr.length ); // 5 -eat(arr); -eat(arr); -alert( arr.length ); // 3, в функцию массив не скопирован, а передана ссылка -``` - -**Ещё одно следствие -- можно присваивать в массив любые свойства.** - -Например: - -```js -var fruits = []; // создать массив - -fruits[99999] = 5; // присвоить свойство с любым номером - -fruits.age = 25; // назначить свойство со строковым именем -``` - -.. Но массивы для того и придуманы в JavaScript, чтобы удобно работать именно *с упорядоченными, нумерованными данными*. Для этого в них существуют специальные методы и свойство `length`. - -Как правило, нет причин использовать массив как обычный объект, хотя технически это и возможно. - -[warn header="Вывод массива с \"дырами\""] -Если в массиве есть пропущенные индексы, то при выводе в большинстве браузеров появляются "лишние" запятые, например: - -```js -//+ run -var a = []; -a[0] = 0; -a[5] = 5; - -alert( a ); // 0,,,,,5 -``` - -Эти запятые появляются потому, что алгоритм вывода массива идёт от `0` до `arr.length` и выводит всё через запятую. Отсутствие значений даёт несколько запятых подряд. -[/warn] - -### Влияние на быстродействие - -Методы `push/pop` выполняются быстро, а `shift/unshift` -- медленно. - - - - -Чтобы понять, почему работать с концом массива -- быстрее, чем с его началом, разберём подробнее происходящее при операции: - -```js -fruits.shift(); // убрать 1 элемент с начала -``` - -При этом, так как все элементы находятся в своих ячейках, просто удалить элемент с номером `0` недостаточно. Нужно еще и переместить остальные элементы на их новые индексы. - -Операция `shift` должна выполнить целых три действия: -
      -
    1. Удалить нулевой элемент.
    2. -
    3. Переместить все свойства влево, с индекса `1` на `0`, с `2` на `1` и так далее.
    4. -
    5. Обновить свойство `length`.
    6. -
    - - - -**Чем больше элементов в массиве, тем дольше их перемещать, это много операций с памятью.** - -Аналогично работает `unshift`: чтобы добавить элемент в начало массива, нужно сначала перенести вправо, в увеличенные индексы, все существующие. - -А что же с `push/pop`? Им как раз перемещать ничего не надо. Для того, чтобы удалить элемент, метод `pop` очищает ячейку и укорачивает `length`. - -Действия при операции: - -```js -fruits.pop(); // убрать 1 элемент с конца -``` - - - -**Перемещать при `pop` не требуется, так как прочие элементы после этой операции остаются на тех же индексах.** - -Аналогично работает `push`. - - -## Перебор элементов - -Для перебора элементов обычно используется цикл: - -```js -//+ run -var arr = ["Яблоко", "Апельсин", "Груша"]; - -*!* -for (var i = 0; i < arr.length; i++) { - alert( arr[i] ); -} -*/!* -``` - -[warn header="Не используйте `for..in` для массивов"] -Так как массив является объектом, то возможен и вариант `for..in`: - -```js -//+ run -var arr = ["Яблоко", "Апельсин", "Груша"]; - -*!* -for (var key in arr) { -*/!* - alert( arr[key] ); // Яблоко, Апельсин, Груша -} -``` - -Недостатки этого способа: - -
      -
    1. Цикл `for..in` выведет *все свойства* объекта, а не только цифровые. - -В браузере, при работе с объектами страницы, встречаются коллекции элементов, которые по виду как массивы, но имеют дополнительные нецифровые свойства. При переборе таких "похожих на массив" коллекций через `for..in` эти свойства будут выведены, а они как раз не нужны. - -Бывают и библиотеки, которые предоставляют такие коллекции. Классический `for` надёжно выведет только цифровые свойства, что обычно и требуется. -
    2. -
    3. Цикл `for (var i=0; i -
    - -Если коротко: цикл `for(var i=0; i -
  • Не ставить массиву произвольные свойства, такие как `arr.test = 5`. То есть, работать именно как с массивом, а не как с объектом.
  • -
  • Заполнять массив непрерывно и по возрастающей. Как только браузер встречает необычное поведение массива, например устанавливается значение `arr[0]`, а потом сразу `arr[1000]`, то он начинает работать с ним, как с обычным объектом. Как правило, это влечёт преобразование его в хэш-таблицу.
  • - - - -Если следовать этим принципам, то массивы будут занимать меньше памяти и быстрее работать. - -## Итого - -Массивы существуют для работы с упорядоченным набором элементов. - -**Объявление:** - -```js -// предпочтительное -var arr = [элемент1, элемент2...]; - -// new Array -var arr = new Array(элемент1, элемент2...); -``` - -При этом `new Array(число)` создаёт массив заданной длины, *без элементов*. Чтобы избежать ошибок, предпочтителен первый синтаксис. - -**Свойство `length`** -- длина массива. Если точнее, то последний индекс массива плюс `1`. Если её уменьшить вручную, то массив укоротится. Если `length` больше реального количества элементов, то отсутствующие элементы равны `undefined`. - - -Массив можно использовать как очередь или стек. - -**Операции с концом массива:** -
      -
    • `arr.push(элемент1, элемент2...)` добавляет элементы в конец.
    • -
    • `var elem = arr.pop()` удаляет и возвращает последний элемент.
    • -
    - -**Операции с началом массива:** -
      -
    • `arr.unshift(элемент1, элемент2...)` добавляет элементы в начало.
    • -
    • `var elem = arr.shift()` удаляет и возвращает первый элемент.
    • -
    - -Эти операции перенумеровывают все элементы, поэтому работают медленно. - -В следующей главе мы рассмотрим другие методы для работы с массивами. - - - - diff --git a/1-js/4-data-structures/7-array/queue.png b/1-js/4-data-structures/7-array/queue.png deleted file mode 100644 index 8a90ef301cfa5ed13ba1aaeb4e0252832ed9d07d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4727 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 NQCHDYu2zJH{Rc>03t<2N diff --git a/1-js/4-data-structures/7-array/queue@2x.png b/1-js/4-data-structures/7-array/queue@2x.png deleted file mode 100644 index 2a1281d0cbc34089fbcff547a550298fa8f53a3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10247 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 p{l=&>PB150D()&Jr5 diff --git a/1-js/4-data-structures/7-array/stack.png b/1-js/4-data-structures/7-array/stack.png deleted file mode 100644 index 566da719ae3585b82011f61840ca9c5dad7a49ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9352 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

    <1sJ@p8IxY-l8J-RzK@-ng8f` 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

    knB?naJ zg$6U%i>HrN&Kr7v*6F4kYl%G3P3J&<*K>dfbUVHi99U>@A)SfiZds3orU0h7VKvGk z@zVzhokF`tWI+bTr*X4|=*<(|jxQJ1(uqK0v8inn)nlRY^FoWF@H;>w{|)=QnGjvG zt0H#{z(gyKK?r0H5P>E)!UYZ(iG_A_3Q*3Cb+y*SzPDxk=_n(gp5p)!XwUJsRrXvD z)12^>#L!u4@ взо -киборг, гробик -> бгикор -... -``` - -По такой последовательности будем делать массив уникальным. - -Для этого воспользуемся вспомогательным объектом, в который будем записывать слова по отсортированному ключу: - -```js -//+ run -function aclean(arr) { - // этот объект будем использовать для уникальности - var obj = {}; - - for (var i = 0; i < arr.length; i++) { - // разбить строку на буквы, отсортировать и слить обратно -*!* - var sorted = arr[i].toLowerCase().split('').sort().join(''); // (*) -*/!* - - obj[sorted] = arr[i]; // сохраняет только одно значение с таким ключом - } - - var result = []; - - // теперь в obj находится для каждого ключа ровно одно значение - for (var key in obj) result.push(obj[key]); - - return result; -} - -var arr = ["воз", "киборг", "корсет", "ЗОВ", "гробик", "костер", "сектор"]; - -alert( aclean(arr) ); -``` - -Приведение слова к сортированному по буквам виду осуществляется цепочкой вызовов в строке `(*)`. - -Для удобства комментирования разобьём её на несколько строк (JavaScript это позволяет): - -```js -var sorted = arr[i] // ЗОВ - .toLowerCase() // зов - .split('') // ['з','о','в'] - .sort() // ['в','з','о'] - .join(''); // взо -``` - -Получится, что два разных слова `'ЗОВ'` и `'воз'` получат одинаковую отсортированную форму `'взо'`. - -Следующая строка: - -```js -obj[sorted] = arr[i]; -``` - -В объект `obj` будет записано сначала первое из слов `obj['взо'] = "воз"`, а затем `obj['взо'] = 'ЗОВ'`. - -Обратите внимание, ключ -- отсортирован, а само слово -- в исходной форме, чтобы можно было потом получить его из объекта. - -Вторая запись по тому же ключу перезапишет первую, то есть в объекте останется ровно одно слово с таким набором букв. - diff --git a/1-js/4-data-structures/8-array-methods/10-filter-anagrams/task.md b/1-js/4-data-structures/8-array-methods/10-filter-anagrams/task.md deleted file mode 100644 index 9654d440..00000000 --- a/1-js/4-data-structures/8-array-methods/10-filter-anagrams/task.md +++ /dev/null @@ -1,27 +0,0 @@ -# Отфильтровать анаграммы - -[importance 3] - -*Анаграммы* -- слова, состоящие из одинакового количества одинаковых букв, но в разном порядке. -Например: - -``` -воз - зов -киборг - гробик -корсет - костер - сектор -``` - -Напишите функцию `aclean(arr)`, которая возвращает массив слов, очищенный от анаграмм. - -Например: - -```js -var arr = ["воз", "киборг", "корсет", "ЗОВ", "гробик", "костер", "сектор"]; - -alert( aclean(arr) ); // "воз,киборг,корсет" или "ЗОВ,гробик,сектор" -``` - -Из каждой группы анаграмм должно остаться только одно слово, не важно какое. - - - diff --git a/1-js/4-data-structures/8-array-methods/11-array-unique/_js.view/solution.js b/1-js/4-data-structures/8-array-methods/11-array-unique/_js.view/solution.js deleted file mode 100644 index b1b50cc5..00000000 --- a/1-js/4-data-structures/8-array-methods/11-array-unique/_js.view/solution.js +++ /dev/null @@ -1,10 +0,0 @@ -function unique(arr) { - var obj = {}; - - for (var i = 0; i < arr.length; i++) { - var str = arr[i]; - obj[str] = true; // запомнить строку в виде свойства объекта - } - - return Object.keys(obj); // или собрать ключи перебором для IE8- -} \ No newline at end of file diff --git a/1-js/4-data-structures/8-array-methods/11-array-unique/_js.view/test.js b/1-js/4-data-structures/8-array-methods/11-array-unique/_js.view/test.js deleted file mode 100644 index 771317bf..00000000 --- a/1-js/4-data-structures/8-array-methods/11-array-unique/_js.view/test.js +++ /dev/null @@ -1,15 +0,0 @@ -describe("unique", function() { - it("убирает неуникальные элементы из массива", function() { - var strings = ["кришна", "кришна", "харе", "харе", - "харе", "харе", "кришна", "кришна", "8-()" - ]; - - assert.deepEqual(unique(strings), ["кришна", "харе", "8-()"]); - }); - - it("не изменяет исходный массив", function() { - var strings = ["кришна", "кришна", "харе", "харе"]; - unique(strings); - assert.deepEqual(strings, ["кришна", "кришна", "харе", "харе"]); - }); -}); \ No newline at end of file diff --git a/1-js/4-data-structures/8-array-methods/11-array-unique/solution.md b/1-js/4-data-structures/8-array-methods/11-array-unique/solution.md deleted file mode 100644 index e49f17b2..00000000 --- a/1-js/4-data-structures/8-array-methods/11-array-unique/solution.md +++ /dev/null @@ -1,82 +0,0 @@ -# Решение перебором (медленное) - -Пройдём по массиву вложенным циклом. - -Для каждого элемента мы будем искать, был ли такой уже. Если был -- игнорировать: - -```js -//+ run -function unique(arr) { - var result = []; - - nextInput: - for (var i = 0; i < arr.length; i++) { - var str = arr[i]; // для каждого элемента - for (var j = 0; j < result.length; j++) { // ищем, был ли он уже? - if (result[j] == str) continue nextInput; // если да, то следующий - } - result.push(str); - } - - return result; -} - -var strings = ["кришна", "кришна", "харе", "харе", - "харе", "харе", "кришна", "кришна", "8-()" -]; - -alert( unique(strings) ); // кришна, харе, 8-() -``` - -Давайте посмотрим, насколько быстро он будет работать. - -Предположим, в массиве `100` элементов. Если все они одинаковые, то `result` будет состоять из одного элемента и вложенный цикл будет выполняться сразу. В этом случае всё хорошо. - -А если все, или почти все элементы разные? - -В этом случае для каждого элемента понадобится обойти весь текущий массив результатов, после чего -- добавить в этот массив. - -

      -
    1. Для первого элемента -- это обойдётся в `0` операций доступа к элементам `result` (он пока пустой).
    2. -
    3. Для второго элемента -- это обойдётся в `1` операцию доступа к элементам `result`.
    4. -
    5. Для третьего элемента -- это обойдётся в `2` операции доступа к элементам `result`.
    6. -
    7. ...Для n-го элемента -- это обойдётся в `n-1` операций доступа к элементам `result`.
    8. -
    - -Всего 0 + 1 + 2 + ... + n-1 = (n-1)*n/2 = n2/2 - n/2 (как сумма арифметической прогрессии), то есть количество операций растёт примерно как квадрат от `n`. - -Это очень быстрый рост. Для `100` элементов -- `4950` операций, для `1000` -- `499500` (по формуле выше). - -Поэтому такое решение подойдёт только для небольших массивов. Вместо вложенного `for` можно использовать и `arr.indexOf`, ситуация от этого не поменяется, так как `indexOf` тоже ищет перебором. - -# Решение с объектом (быстрое) - -Наилучшая техника для выбора уникальных строк -- использование вспомогательного объекта `obj`. Ведь название свойства в объекте, с одной стороны -- строка, а с другой -- всегда уникально. Повторная запись в свойство с тем же именем перезапишет его. - -Например, если `"харе"` попало в объект один раз (`obj["харе"] = true`), то второе такое же присваивание ничего не изменит. - -Решение ниже создаёт объект `obj = {}` и записывает в него все строки как имена свойств. А затем собирает свойства из объекта в массив через `for..in`. Дубликатов уже не будет. - -```js -//+ run -function unique(arr) { - var obj = {}; - - for (var i = 0; i < arr.length; i++) { - var str = arr[i]; -*!* - obj[str] = true; // запомнить строку в виде свойства объекта -*/!* - } - - return Object.keys(obj); // или собрать ключи перебором для IE8- -} - -var strings = ["кришна", "кришна", "харе", "харе", - "харе", "харе", "кришна", "кришна", "8-()" -]; - -alert( unique(strings) ); // кришна, харе, 8-() -``` - -Так что можно положить все значения как ключи в объект, а потом достать. \ No newline at end of file diff --git a/1-js/4-data-structures/8-array-methods/11-array-unique/task.md b/1-js/4-data-structures/8-array-methods/11-array-unique/task.md deleted file mode 100644 index 15a5e3af..00000000 --- a/1-js/4-data-structures/8-array-methods/11-array-unique/task.md +++ /dev/null @@ -1,22 +0,0 @@ -# Оставить уникальные элементы массива - -[importance 3] - -Пусть `arr` -- массив строк. - -Напишите функцию `unique(arr)`, которая возвращает массив, содержащий только уникальные элементы `arr`. - -Например: - -```js -function unique(arr) { - /* ваш код */ -} - -var strings = ["кришна", "кришна", "харе", "харе", - "харе", "харе", "кришна", "кришна", "8-()" -]; - -alert( unique(strings) ); // кришна, харе, 8-() -``` - diff --git a/1-js/4-data-structures/8-array-methods/2-camelcase/_js.view/solution.js b/1-js/4-data-structures/8-array-methods/2-camelcase/_js.view/solution.js deleted file mode 100644 index 6a150668..00000000 --- a/1-js/4-data-structures/8-array-methods/2-camelcase/_js.view/solution.js +++ /dev/null @@ -1,10 +0,0 @@ -function camelize(str) { - var arr = str.split('-'); - - for (var i = 1; i < arr.length; i++) { - // преобразовать: первый символ с большой буквы - arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].slice(1); - } - - return arr.join(''); -} \ No newline at end of file diff --git a/1-js/4-data-structures/8-array-methods/2-camelcase/_js.view/test.js b/1-js/4-data-structures/8-array-methods/2-camelcase/_js.view/test.js deleted file mode 100644 index 0546d816..00000000 --- a/1-js/4-data-structures/8-array-methods/2-camelcase/_js.view/test.js +++ /dev/null @@ -1,22 +0,0 @@ -describe("camelize", function() { - - it("оставляет пустую строку \"как есть\"", function() { - assert.equal(camelize(""), ""); - }); - - describe("делает заглавным первый символ после дефиса", function() { - - it("превращает background-color в backgroundColor", function() { - assert.equal(camelize("background-color"), "backgroundColor"); - }); - - it("превращает list-style-image в listStyleImage", function() { - assert.equal(camelize("list-style-image"), "listStyleImage"); - }); - - it("превращает -webkit-transition в WebkitTransition", function() { - assert.equal(camelize("-webkit-transition"), "WebkitTransition"); - }); - }); - -}); \ No newline at end of file diff --git a/1-js/4-data-structures/8-array-methods/2-camelcase/solution.md b/1-js/4-data-structures/8-array-methods/2-camelcase/solution.md deleted file mode 100644 index 4f97bbc5..00000000 --- a/1-js/4-data-structures/8-array-methods/2-camelcase/solution.md +++ /dev/null @@ -1,26 +0,0 @@ -# Идея - -Задача может быть решена несколькими способами. Один из них -- разбить строку по дефису `str.split('-')`, затем последовательно сконструировать новую. - -# Решение - -Разобьем строку в массив, а затем преобразуем его элементы и сольём обратно: - -```js -//+ run -function camelize(str) { - var arr = str.split('-'); - - for (var i = 1; i < arr.length; i++) { - // преобразовать: первый символ с большой буквы - arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].slice(1); - } - - return arr.join(''); -} - -alert( camelize("background-color") ); // backgroundColor -alert( camelize("list-style-image") ); // listStyleImage -alert( camelize("-webkit-transition") ); // WebkitTransition -``` - diff --git a/1-js/4-data-structures/8-array-methods/2-camelcase/task.md b/1-js/4-data-structures/8-array-methods/2-camelcase/task.md deleted file mode 100644 index dd2446d4..00000000 --- a/1-js/4-data-structures/8-array-methods/2-camelcase/task.md +++ /dev/null @@ -1,20 +0,0 @@ -# Перевести текст вида border-left-width в borderLeftWidth - -[importance 3] - -Напишите функцию `camelize(str)`, которая преобразует строки вида "my-short-string" в "myShortString". - -То есть, дефисы удаляются, а все слова после них получают заглавную букву. - -Например: - -```js -camelize("background-color") == 'backgroundColor'; -camelize("list-style-image") == 'listStyleImage'; -camelize("-webkit-transition") == 'WebkitTransition'; -``` - -Такая функция полезна при работе с CSS. - -P.S. Вам пригодятся методы строк `charAt`, `split` и `toUpperCase`. - diff --git a/1-js/4-data-structures/8-array-methods/3-remove-class/_js.view/solution.js b/1-js/4-data-structures/8-array-methods/3-remove-class/_js.view/solution.js deleted file mode 100644 index f5c9ab64..00000000 --- a/1-js/4-data-structures/8-array-methods/3-remove-class/_js.view/solution.js +++ /dev/null @@ -1,11 +0,0 @@ -function removeClass(obj, cls) { - var classes = obj.className.split(' '); - - for (i = 0; i < classes.length; i++) { - if (classes[i] == cls) { - classes.splice(i, 1); // удалить класс - i--; - } - } - obj.className = classes.join(' '); -} \ No newline at end of file diff --git a/1-js/4-data-structures/8-array-methods/3-remove-class/_js.view/test.js b/1-js/4-data-structures/8-array-methods/3-remove-class/_js.view/test.js deleted file mode 100644 index 809009a9..00000000 --- a/1-js/4-data-structures/8-array-methods/3-remove-class/_js.view/test.js +++ /dev/null @@ -1,43 +0,0 @@ -describe("removeClass", function() { - - it("ничего не делает, если класса нет", function() { - var obj = { - className: 'open menu' - }; - removeClass(obj, 'new'); - assert.deepEqual(obj, { - className: 'open menu' - }); - }); - - it("не меняет пустое свойство", function() { - var obj = { - className: '' - }; - removeClass(obj, 'new'); - assert.deepEqual(obj, { - className: "" - }); - }); - - it("удаляет класс, не оставляя лишних пробелов", function() { - var obj = { - className: 'open menu' - }; - removeClass(obj, 'open'); - assert.deepEqual(obj, { - className: "menu" - }); - }); - - it("если класс один и он удалён, то результат - пустая строка", function() { - var obj = { - className: "menu" - }; - removeClass(obj, 'menu'); - assert.deepEqual(obj, { - className: "" - }); - }); - -}); \ No newline at end of file diff --git a/1-js/4-data-structures/8-array-methods/3-remove-class/solution.md b/1-js/4-data-structures/8-array-methods/3-remove-class/solution.md deleted file mode 100644 index acade80b..00000000 --- a/1-js/4-data-structures/8-array-methods/3-remove-class/solution.md +++ /dev/null @@ -1,33 +0,0 @@ -Решение заключается в том, чтобы разбить `className` в массив классов, а затем пройтись по нему циклом. Если класс есть - удаляем его `splice`, заново объединяем массив в строку и присваиваем объекту. - -```js -//+ run -function removeClass(obj, cls) { - var classes = obj.className.split(' '); - - for (i = 0; i < classes.length; i++) { - if (classes[i] == cls) { - classes.splice(i, 1); // удалить класс -*!* - i--; // (*) -*/!* - } - } - obj.className = classes.join(' '); - -} - -var obj = { - className: 'open menu menu' -} - -removeClass(obj, 'blabla'); -removeClass(obj, 'menu') -alert(obj.className) // open -``` - -В примере выше есть тонкий момент. Элементы массива проверяются один за другим. При вызове `splice` удаляется текущий, `i-й` элемент, и те элементы, которые идут дальше, сдвигаются на его место. - -Таким образом, **на месте `i` оказывается новый, непроверенный элемент**. - -Чтобы это учесть, строчка `(*)` уменьшает `i`, чтобы следующая итерация цикла заново проверила элемент с номером `i`. Без нее функция будет работать с ошибками. diff --git a/1-js/4-data-structures/8-array-methods/3-remove-class/task.md b/1-js/4-data-structures/8-array-methods/3-remove-class/task.md deleted file mode 100644 index 8643ca06..00000000 --- a/1-js/4-data-structures/8-array-methods/3-remove-class/task.md +++ /dev/null @@ -1,30 +0,0 @@ -# Функция removeClass - -[importance 5] - -У объекта есть свойство `className`, которое хранит список "классов" - слов, разделенных пробелами: - -```js -var obj = { - className: 'open menu' -}; -``` - -Напишите функцию `removeClass(obj, cls)`, которая удаляет класс `cls`, если он есть: - -```js -removeClass(obj, 'open'); // obj.className='menu' -removeClass(obj, 'blabla'); // без изменений (нет такого класса) -``` - -P.S. Дополнительное усложнение. Функция должна корректно обрабатывать дублирование класса в строке: - -```js -obj = { - className: 'my menu menu' -}; -removeClass(obj, 'menu'); -alert( obj.className ); // 'my' -``` - -Лишних пробелов после функции образовываться не должно. \ No newline at end of file diff --git a/1-js/4-data-structures/8-array-methods/4-filter-in-place/_js.view/solution.js b/1-js/4-data-structures/8-array-methods/4-filter-in-place/_js.view/solution.js deleted file mode 100644 index 541e1e0c..00000000 --- a/1-js/4-data-structures/8-array-methods/4-filter-in-place/_js.view/solution.js +++ /dev/null @@ -1,10 +0,0 @@ -function filterRangeInPlace(arr, a, b) { - - for (var i = 0; i < arr.length; i++) { - var val = arr[i]; - if (val < a || val > b) { - arr.splice(i--, 1); - } - } - -} \ No newline at end of file diff --git a/1-js/4-data-structures/8-array-methods/4-filter-in-place/_js.view/test.js b/1-js/4-data-structures/8-array-methods/4-filter-in-place/_js.view/test.js deleted file mode 100644 index f8374db2..00000000 --- a/1-js/4-data-structures/8-array-methods/4-filter-in-place/_js.view/test.js +++ /dev/null @@ -1,9 +0,0 @@ -describe("filterRangeInPlace", function() { - - it("меняет массив, оставляя только значения из диапазона", function() { - var arr = [5, 3, 8, 1]; - filterRangeInPlace(arr, 1, 4); - assert.deepEqual(arr, [3, 1]); - }); - -}); \ No newline at end of file diff --git a/1-js/4-data-structures/8-array-methods/4-filter-in-place/solution.md b/1-js/4-data-structures/8-array-methods/4-filter-in-place/solution.md deleted file mode 100644 index 1815310b..00000000 --- a/1-js/4-data-structures/8-array-methods/4-filter-in-place/solution.md +++ /dev/null @@ -1,21 +0,0 @@ - - -```js -//+ run -function filterRangeInPlace(arr, a, b) { - - for (var i = 0; i < arr.length; i++) { - var val = arr[i]; - if (val < a || val > b) { - arr.splice(i--, 1); - } - } - -} - -var arr = [5, 3, 8, 1]; - -filterRangeInPlace(arr, 1, 4); -alert( arr ); // [3, 1] -``` - diff --git a/1-js/4-data-structures/8-array-methods/4-filter-in-place/task.md b/1-js/4-data-structures/8-array-methods/4-filter-in-place/task.md deleted file mode 100644 index bd826837..00000000 --- a/1-js/4-data-structures/8-array-methods/4-filter-in-place/task.md +++ /dev/null @@ -1,17 +0,0 @@ -# Фильтрация массива "на месте" - -[importance 4] - -Создайте функцию `filterRangeInPlace(arr, a, b)`, которая получает массив с числами `arr` и удаляет из него все числа вне диапазона `a..b`. -То есть, проверка имеет вид `a ≤ arr[i] ≤ b`. Функция должна менять сам массив и ничего не возвращать. - -Например: - -```js -arr = [5, 3, 8, 1]; - -filterRangeInPlace(arr, 1, 4); // удалены числа вне диапазона 1..4 - -alert( arr ); // массив изменился: остались [3, 1] -``` - diff --git a/1-js/4-data-structures/8-array-methods/5-sort-back/solution.md b/1-js/4-data-structures/8-array-methods/5-sort-back/solution.md deleted file mode 100644 index 62f68429..00000000 --- a/1-js/4-data-structures/8-array-methods/5-sort-back/solution.md +++ /dev/null @@ -1,15 +0,0 @@ - - -```js -//+ run -var arr = [5, 2, 1, -10, 8]; - -function compareReversed(a, b) { - return b - a; -} - -arr.sort(compareReversed); - -alert( arr ); -``` - diff --git a/1-js/4-data-structures/8-array-methods/5-sort-back/task.md b/1-js/4-data-structures/8-array-methods/5-sort-back/task.md deleted file mode 100644 index e2976326..00000000 --- a/1-js/4-data-structures/8-array-methods/5-sort-back/task.md +++ /dev/null @@ -1,14 +0,0 @@ -# Сортировать в обратном порядке - -[importance 5] - -Как отсортировать массив чисел в обратном порядке? - -```js -var arr = [5, 2, 1, -10, 8]; - -// отсортируйте? - -alert( arr ); // 8, 5, 2, 1, -10 -``` - diff --git a/1-js/4-data-structures/8-array-methods/6-copy-sort-array/solution.md b/1-js/4-data-structures/8-array-methods/6-copy-sort-array/solution.md deleted file mode 100644 index 4d1d8586..00000000 --- a/1-js/4-data-structures/8-array-methods/6-copy-sort-array/solution.md +++ /dev/null @@ -1,14 +0,0 @@ -Для копирования массива используем `slice()`, и тут же -- сортировку: - -```js -//+ run -var arr = ["HTML", "JavaScript", "CSS"]; - -*!* -var arrSorted = arr.slice().sort(); -*/!* - -alert( arrSorted ); -alert( arr ); -``` - diff --git a/1-js/4-data-structures/8-array-methods/6-copy-sort-array/task.md b/1-js/4-data-structures/8-array-methods/6-copy-sort-array/task.md deleted file mode 100644 index 374bbf5c..00000000 --- a/1-js/4-data-structures/8-array-methods/6-copy-sort-array/task.md +++ /dev/null @@ -1,18 +0,0 @@ -# Скопировать и отсортировать массив - -[importance 5] - -Есть массив строк `arr`. Создайте массив `arrSorted` -- из тех же элементов, но отсортированный. - -Исходный массив не должен меняться. - -```js -var arr = ["HTML", "JavaScript", "CSS"]; - -// ... ваш код ... - -alert( arrSorted ); // CSS, HTML, JavaScript -alert( arr ); // HTML, JavaScript, CSS (без изменений) -``` - -Постарайтесь сделать код как можно короче. \ No newline at end of file diff --git a/1-js/4-data-structures/8-array-methods/7-shuffle-array/solution.md b/1-js/4-data-structures/8-array-methods/7-shuffle-array/solution.md deleted file mode 100644 index 559a0cd6..00000000 --- a/1-js/4-data-structures/8-array-methods/7-shuffle-array/solution.md +++ /dev/null @@ -1,23 +0,0 @@ -# Подсказка - -Функция сортировки должна возвращать случайный результат сравнения. Используйте для этого [Math.random](http://javascript.ru/Math.random). - -# Решение - -Обычно `Math.random()` возвращает результат от `0` до `1`. Вычтем `0.5`, чтобы область значений стала `[-0.5 ... 0.5)`. - -```js -//+ run -var arr = [1, 2, 3, 4, 5]; - -*!* -function compareRandom(a, b) { - return Math.random() - 0.5; -} - -arr.sort(compareRandom); -*/!* - -alert( arr ); // элементы в случайном порядке, например [3,5,1,2,4] -``` - diff --git a/1-js/4-data-structures/8-array-methods/7-shuffle-array/task.md b/1-js/4-data-structures/8-array-methods/7-shuffle-array/task.md deleted file mode 100644 index 1dd4e46b..00000000 --- a/1-js/4-data-structures/8-array-methods/7-shuffle-array/task.md +++ /dev/null @@ -1,14 +0,0 @@ -# Случайный порядок в массиве - -[importance 3] - -Используйте функцию `sort` для того, чтобы "перетрясти" элементы массива в случайном порядке. - -```js -var arr = [1, 2, 3, 4, 5]; - -arr.sort(ваша функция); - -alert( arr ); // элементы в случайном порядке, например [3,5,1,2,4] -``` - diff --git a/1-js/4-data-structures/8-array-methods/8-sort-objects/solution.md b/1-js/4-data-structures/8-array-methods/8-sort-objects/solution.md deleted file mode 100644 index 21bf6d13..00000000 --- a/1-js/4-data-structures/8-array-methods/8-sort-objects/solution.md +++ /dev/null @@ -1,26 +0,0 @@ -Для сортировки объявим и передадим в `sort` анонимную функцию, которая сравнивает объекты по полю `age`: - -```js -//+ run no-beautify -*!* -// Наша функция сравнения -function compareAge(personA, personB) { - return personA.age - personB.age; -} -*/!* - -// проверка -var vasya = { name: "Вася", age: 23 }; -var masha = { name: "Маша", age: 18 }; -var vovochka = { name: "Вовочка", age: 6 }; - -var people = [ vasya , masha , vovochka ]; - -people.sort(compareAge); - -// вывести -for(var i = 0; i < people.length; i++) { - alert(people[i].name); // Вовочка Маша Вася -} -``` - diff --git a/1-js/4-data-structures/8-array-methods/8-sort-objects/task.md b/1-js/4-data-structures/8-array-methods/8-sort-objects/task.md deleted file mode 100644 index 5a3ae3ec..00000000 --- a/1-js/4-data-structures/8-array-methods/8-sort-objects/task.md +++ /dev/null @@ -1,23 +0,0 @@ -# Сортировка объектов - -[importance 5] - -Напишите код, который отсортирует массив объектов `people` по полю `age`. - -Например: - -```js -//+ no-beautify -var vasya = { name: "Вася", age: 23 }; -var masha = { name: "Маша", age: 18 }; -var vovochka = { name: "Вовочка", age: 6 }; - -var people = [ vasya , masha , vovochka ]; - -... ваш код ... - -// теперь people: [vovochka, masha, vasya] -alert(people[0].age) // 6 -``` - -Выведите список имён в массиве после сортировки. \ No newline at end of file diff --git a/1-js/4-data-structures/8-array-methods/9-output-single-linked-list/linked-list.png b/1-js/4-data-structures/8-array-methods/9-output-single-linked-list/linked-list.png deleted file mode 100644 index 5c1c884209bfe161bd1acc7bdb4979c3cfe8a0f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5368 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 OyjKcp@@29nAN~&xM6{Iv diff --git a/1-js/4-data-structures/8-array-methods/9-output-single-linked-list/solution.md b/1-js/4-data-structures/8-array-methods/9-output-single-linked-list/solution.md deleted file mode 100644 index 5182f748..00000000 --- a/1-js/4-data-structures/8-array-methods/9-output-single-linked-list/solution.md +++ /dev/null @@ -1,158 +0,0 @@ -# Вывод списка в цикле - -```js -//+ run -var list = { - value: 1, - next: { - value: 2, - next: { - value: 3, - next: { - value: 4, - next: null - } - } - } -}; - -function printList(list) { - var tmp = list; - - while (tmp) { - alert( tmp.value ); - tmp = tmp.next; - } - -} - -printList(list); -``` - -Обратите внимание, что для прохода по списку используется временная переменная `tmp`, а не `list`. Можно было бы и бегать по списку, используя входной параметр функции: - -```js -function printList(list) { - - while(*!*list*/!*) { - alert( list.value ); - list = list.next; - } - -} -``` - -...Но при этом мы в будущем не сможем расширить функцию и сделать со списком что-то ещё, ведь после окончания цикла начало списка уже нигде не хранится. - -Поэтому и используется временная переменная -- чтобы сделать код расширяемым, и, кстати, более понятным, ведь роль `tmp` -- исключительно обход списка, как `i` в цикле `for`. - -# Вывод списка с рекурсией - -Рекурсивный вариант `printList(list)` следует простой логике: вывести текущее значение `(1)`, а затем пропустить через себя следующее `(2)`: - -```js -//+ run -var list = { - value: 1, - next: { - value: 2, - next: { - value: 3, - next: { - value: 4, - next: null - } - } - } -}; - -function printList(list) { - - alert( list.value ); // (1) - - if (list.next) { - printList(list.next); // (2) - } - -} - -printList(list); -``` - -# Обратный вывод с рекурсией - -Обратный вывод -- почти то же самое, что прямой, просто сначала мы обрабатываем следующее значение, а потом -- текущее: - -```js -//+ run -var list = { - value: 1, - next: { - value: 2, - next: { - value: 3, - next: { - value: 4, - next: null - } - } - } -}; - -function printReverseList(list) { - - if (list.next) { - printReverseList(list.next); - } - - alert( list.value ); -} - -printReverseList(list); -``` - -# Обратный вывод без рекурсии - -```js -//+ run -var list = { - value: 1, - next: { - value: 2, - next: { - value: 3, - next: { - value: 4, - next: null - } - } - } -}; - - -function printReverseList(list) { - var arr = []; - var tmp = list; - - while (tmp) { - arr.push(tmp.value); - tmp = tmp.next; - } - - for (var i = arr.length - 1; i >= 0; i--) { - alert( arr[i] ); - } -} - -printReverseList(list); -``` - -**Обратный вывод без рекурсии быстрее.** - -По сути, рекурсивный вариант и нерекурсивный работают одинаково: они проходят список и запоминают его элементы, а потом выводят в обратном порядке. - -В случае с массивом это очевидно, а для рекурсии запоминание происходит в стеке (внутренней специальной структуре данных): когда вызывается вложенная функция, то интерпретатор сохраняет в стек текущие параметры. Вложенные вызовы заполняют стек, а потом он выводится в обратном порядке. - -При этом, при рекурсии в стеке сохраняется не только элемент списка, а другая вспомогательная информация, необходимая для возвращения из вложенного вызова. Поэтому тратится больше памяти. Все эти расходы отсутствуют во варианте без рекурсии, так как в массиве хранится именно то, что нужно. - -Преимущество рекурсии, с другой стороны -- более короткий и, зачастую, более простой код. \ No newline at end of file diff --git a/1-js/4-data-structures/8-array-methods/9-output-single-linked-list/task.md b/1-js/4-data-structures/8-array-methods/9-output-single-linked-list/task.md deleted file mode 100644 index bfb1523f..00000000 --- a/1-js/4-data-structures/8-array-methods/9-output-single-linked-list/task.md +++ /dev/null @@ -1,50 +0,0 @@ -# Вывести односвязный список - -[importance 5] - -[Односвязный список](http://ru.wikipedia.org/wiki/Связный_список) -- это структура данных, которая состоит из *элементов*, каждый из которых хранит ссылку на следующий. Последний элемент может не иметь ссылки, либо она равна `null`. - -Например, объект ниже задаёт односвязный список, в `next` хранится ссылка на следующий элемент: - -```js -var list = { - value: 1, - next: { - value: 2, - next: { - value: 3, - next: { - value: 4, - next: null - } - } - } -}; -``` - -Графическое представление этого списка: - - -Альтернативный способ создания: - -```js -//+ no-beautify -var list = { value: 1 }; -list.next = { value: 2 }; -list.next.next = { value: 3 }; -list.next.next.next = { value: 4 }; -``` - -Такая структура данных интересна тем, что можно очень быстро разбить список на части, объединить списки, удалить или добавить элемент в любое место, включая начало. При использовании массива такие действия требуют обширных перенумерований. - -Задачи: - -
      -
    1. Напишите функцию `printList(list)`, которая выводит элементы списка по очереди, при помощи цикла.
    2. -
    3. Напишите функцию `printList(list)` при помощи рекурсии.
    4. -
    5. Напишите функцию `printReverseList(list)`, которая выводит элементы списка в обратном порядке, при помощи рекурсии. -Для списка выше она должна выводить `4`,`3`,`2`,`1`
    6. -
    7. Сделайте вариант `printReverseList(list)`, использующий не рекурсию, а цикл.
    8. -
    - -Как лучше -- с рекурсией или без? \ No newline at end of file diff --git a/1-js/4-data-structures/8-array-methods/article.md b/1-js/4-data-structures/8-array-methods/article.md deleted file mode 100644 index 331738e6..00000000 --- a/1-js/4-data-structures/8-array-methods/article.md +++ /dev/null @@ -1,441 +0,0 @@ -# Массивы: методы - -В этой главе мы рассмотрим встроенные методы массивов JavaScript. -[cut] - -## Метод split - -Ситуация из реальной жизни. Мы пишем сервис отсылки сообщений и посетитель вводит имена тех, кому его отправить: `Маша, Петя, Марина, Василий...`. Но нам-то гораздо удобнее работать с массивом имен, чем с одной строкой. - -К счастью, есть метод `split(s)`, который позволяет превратить строку в массив, разбив ее по разделителю `s`. В примере ниже таким разделителем является строка из запятой и пробела. - -```js -//+ run -var names = 'Маша, Петя, Марина, Василий'; - -var arr = names.split(', '); - -for (var i = 0; i < arr.length; i++) { - alert( 'Вам сообщение ' + arr[i] ); -} -``` - -[smart header="Второй аргумент `split`"] -У метода `split` есть необязательный второй аргумент -- ограничение на количество элементов в массиве. Если их больше, чем указано -- остаток массива будет отброшен: - -```js -//+ run -alert( "a,b,c,d".split(',', *!*2*/!*) ); // a,b -``` - -[/smart] - -[smart header="Разбивка по буквам"] -Вызов `split` с пустой строкой разобьёт по буквам: - -```js -//+ run -var str = "тест"; - -alert( str.split('') ); // т,е,с,т -``` - -[/smart] - -## Метод join - -Вызов `arr.join(str)` делает в точности противоположное `split`. Он берет массив и склеивает его в строку, используя `str` как разделитель. - -Например: - -```js -//+ run -var arr = ['Маша', 'Петя', 'Марина', 'Василий']; - -var str = arr.join(';'); - -alert( str ); // Маша;Петя;Марина;Василий -``` - -[smart header="new Array + join = Повторение строки"] -Код для повторения строки `3` раза: - -```js -//+ run -alert( new Array(4).join("ля") ); // ляляля -``` - -Как видно, `new Array(4)` делает массив без элементов длины 4, который `join` объединяет в строку, вставляя *между его элементами* строку `"ля"`. - -В результате, так как элементы пусты, получается повторение строки. Такой вот небольшой трюк. -[/smart] - - -## Удаление из массива - -Так как массивы являются объектами, то для удаления ключа можно воспользоваться обычным `delete`: - -```js -//+ run -var arr = ["Я", "иду", "домой"]; - -delete arr[1]; // значение с индексом 1 удалено - -// теперь arr = ["Я", undefined, "домой"]; -alert( arr[1] ); // undefined -``` - -Да, элемент удален из массива, но не так, как нам этого хочется. Образовалась "дырка". - -Это потому, что оператор `delete` удаляет пару "ключ-значение". Это -- все, что он делает. Обычно же при удалении из массива мы хотим, чтобы оставшиеся элементы сдвинулись и заполнили образовавшийся промежуток. - -Поэтому для удаления используются специальные методы: из начала -- `shift`, с конца -- `pop`, а из середины -- `splice`, с которым мы сейчас познакомимся. - -## Метод splice - -Метод `splice` -- это универсальный раскладной нож для работы с массивами. Умеет все: удалять элементы, вставлять элементы, заменять элементы -- по очереди и одновременно. - -Его синтаксис: - -
    -
    `arr.splice(index[, deleteCount, elem1, ..., elemN])`
    -
    Удалить `deleteCount` элементов, начиная с номера `index`, а затем вставить `elem1, ..., elemN` на их место. Возвращает массив из удалённых элементов.
    -
    - -Этот метод проще всего понять, рассмотрев примеры. - -Начнём с удаления: - -```js -//+ run -var arr = ["Я", "изучаю", "JavaScript"]; - -*!* -arr.splice(1, 1); // начиная с позиции 1, удалить 1 элемент -*/!* - -alert( arr ); // осталось ["Я", "JavaScript"] -``` - -В следующем примере мы удалим 3 элемента и вставим другие на их место: - -```js -//+ run -var arr = [*!*"Я", "сейчас", "изучаю",*/!* "JavaScript"]; - -// удалить 3 первых элемента и добавить другие вместо них -arr.splice(0, 3, "Мы", "изучаем") - -alert( arr ) // теперь [*!*"Мы", "изучаем"*/!*, "JavaScript"] -``` - -Здесь видно, что `splice` возвращает массив из удаленных элементов: - -```js -//+ run -var arr = [*!*"Я", "сейчас",*/!* "изучаю", "JavaScript"]; - -// удалить 2 первых элемента -var removed = arr.splice(0, 2); - -alert( removed ); // "Я", "сейчас" <-- array of removed elements -``` - -Метод `splice` также может вставлять элементы без удаления, для этого достаточно установить `deleteCount` в `0`: - -```js -//+ run -var arr = ["Я", "изучаю", "JavaScript"]; - -// с позиции 2 -// удалить 0 -// вставить "сложный", "язык" -arr.splice(2, 0, "сложный", "язык"); - -alert( arr ); // "Я", "изучаю", "сложный", "язык", "JavaScript" -``` - -Допускается использование отрицательного номера позиции, которая в этом случае отсчитывается с конца: - -```js -//+ run -var arr = [1, 2, 5] - -// начиная с позиции индексом -1 (предпоследний элемент) -// удалить 0 элементов, -// затем вставить числа 3 и 4 -arr.splice(-1, 0, 3, 4); - -alert( arr ); // результат: 1,2,3,4,5 -``` - -## Метод slice - -Метод `slice(begin, end)` копирует участок массива от `begin` до `end`, не включая `end`. Исходный массив при этом не меняется. - -Например: - -```js -//+ run -var arr = ["Почему", "надо", "учить", "JavaScript"]; - -var arr2 = arr.slice(1, 3); // элементы 1, 2 (не включая 3) - -alert( arr2 ); // надо, учить -``` - -Аргументы ведут себя так же, как и в строковом `slice`: -
      -
    • Если не указать `end` -- копирование будет до конца массива: - -```js -//+ run -var arr = ["Почему", "надо", "учить", "JavaScript"]; - -alert( arr.slice(1) ); // взять все элементы, начиная с номера 1 -``` - -
    • -
    • Можно использовать отрицательные индексы, они отсчитываются с конца: - -```js -var arr2 = arr.slice(-2); // копировать от 2го элемента с конца и дальше -``` - -
    • -
    • Если вообще не указать аргументов -- скопируется весь массив: - -```js -var fullCopy = arr.slice(); -``` - -
    • -
    - -[smart header="Совсем как в строках"] -Синтаксис метода `slice` одинаков для строк и для массивов. Тем проще его запомнить. -[/smart] - -## Сортировка, метод sort(fn) - -Метод `sort()` сортирует массив *на месте*. Например: - -```js -//+ run -var arr = [ 1, 2, 15 ]; - -arr.sort(); - -alert( arr ); // *!*1, 15, 2*/!* -``` - -Не заметили ничего странного в этом примере? - -Порядок стал `1, 15, 2`, это точно не сортировка чисел. Почему? - -**Это произошло потому, что по умолчанию `sort` сортирует, преобразуя элементы к строке.** - -Поэтому и порядок у них строковый, ведь `"2" > "15"`. - -### Свой порядок сортировки - -Для указания своего порядка сортировки в метод `arr.sort(fn)` нужно передать функцию `fn` от двух элементов, которая умеет сравнивать их. - -Внутренний алгоритм функции сортировки умеет сортировать любые массивы -- апельсинов, яблок, пользователей, и тех и других и третьих -- чего угодно. Но для этого ему нужно знать, как их сравнивать. Эту роль и выполняет `fn`. - -Если эту функцию не указать, то элементы сортируются как строки. - -Например, укажем эту функцию явно, отсортируем элементы массива как числа: - -```js -//+ run -function compareNumeric(a, b) { - if (a > b) return 1; - if (a < b) return -1; -} - -var arr = [ 1, 2, 15 ]; - -*!* -arr.sort(compareNumeric); -*/!* - -alert(arr); // *!*1, 2, 15*/!* -``` - -Обратите внимание, мы передаём в `sort()` именно саму функцию `compareNumeric`, без вызова через скобки. Был бы ошибкой следующий код: - -```js -arr.sort( compareNumeric*!*()*/!* ); // не сработает -``` - -Как видно из примера выше, функция, передаваемая `sort`, должна иметь два аргумента. - -Алгоритм сортировки, встроенный в JavaScript, будет передавать ей для сравнения элементы массива. Она должна возвращать: - -
      -
    • Положительное значение, если `a > b`,
    • -
    • Отрицательное значение, если `a < b`,
    • -
    • Если равны -- можно `0`, но вообще -- не важно, что возвращать, их взаимный порядок не имеет значения.
    • -
    - - -[smart header="Алгоритм сортировки"] -В методе `sort`, внутри самого интерпретатора JavaScript, реализован универсальный алгоритм сортировки. Как правило, это ["\"быстрая сортировка\""](http://algolist.manual.ru/sort/quick_sort.php), дополнительно оптимизированная для небольших массивов. - -Он решает, какие пары элементов и когда сравнивать, чтобы отсортировать побыстрее. Мы даём ему функцию -- способ сравнения, дальше он вызывает её сам. - -Кстати, те значения, с которыми `sort` вызывает функцию сравнения, можно увидеть, если вставить в неё `alert`: - -```js -//+ run -[1, -2, 15, 2, 0, 8].sort(function(a, b) { - alert( a + " <> " + b ); -}); -``` - -[/smart] - -[smart header="Сравнение `compareNumeric` в одну строку"] -Функцию `compareNumeric` для сравнения элементов-чисел можно упростить до одной строчки. - -```js -function compareNumeric(a, b) { - return a - b; -} -``` - -Эта функция вполне подходит для `sort`, так как возвращает положительное число, если `a > b`, отрицательное, если наоборот, и `0`, если числа равны. -[/smart] - - -## reverse - -Метод [arr.reverse()](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reverse) меняет порядок элементов в массиве на обратный. - -```js -//+ run -var arr = [1, 2, 3]; -arr.reverse(); - -alert( arr ); // 3,2,1 -``` - -## concat - -Метод [arr.concat(value1, value2, ... valueN)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/concat) создаёт новый массив, в который копируются элементы из `arr`, а также `value1, value2, ... valueN`. - -Например: - -```js -//+ run -var arr = [1, 2]; -*!* -var newArr = arr.concat(3, 4); -*/!* - -alert( newArr ); // 1,2,3,4 -``` - -У `concat` есть одна забавная особенность. - -Если аргумент `concat` -- массив, то `concat` добавляет элементы из него. - -Например: - -```js -//+ run -var arr = [1, 2]; - -*!* -var newArr = arr.concat([3, 4], 5); // то же самое, что arr.concat(3,4,5) -*/!* - -alert( newArr ); // 1,2,3,4,5 -``` - -## indexOf/lastIndexOf - -Эти методы не поддерживаются в IE8-. Для их поддержки подключите библиотеку [ES5-shim](https://github.com/kriskowal/es5-shim). - - -Метод ["arr.indexOf(searchElement[, fromIndex])"](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf) возвращает номер элемента `searchElement` в массиве `arr` или `-1`, если его нет. - -Поиск начинается с номера `fromIndex`, если он указан. Если нет -- с начала массива. - -**Для поиска используется строгое сравнение `===`.** - -Например: - -```js -//+ run -var arr = [1, 0, false]; - -alert( arr.indexOf(0) ); // 1 -alert( arr.indexOf(false) ); // 2 -alert( arr.indexOf(null) ); // -1 -``` - -Как вы могли заметить, по синтаксису он полностью аналогичен методу [indexOf для строк](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/indexOf). - -Метод ["arr.lastIndexOf(searchElement[, fromIndex])"](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf) ищет справа-налево: с конца массива или с номера `fromIndex`, если он указан. - -[warn header="Методы `indexOf/lastIndexOf` осуществляют поиск перебором"] -Если нужно проверить, существует ли значение в массиве -- его нужно перебрать. Только так. Внутренняя реализация `indexOf/lastIndexOf` осуществляет полный перебор, аналогичный циклу `for` по массиву. Чем длиннее массив, тем дольше он будет работать. -[/warn] - -[smart header="Коллекция уникальных элементов"] -Рассмотрим задачу -- есть коллекция строк, и нужно быстро проверять: есть ли в ней какой-то элемент. Массив для этого не подходит из-за медленного `indexOf`. Но подходит объект! Доступ к свойству объекта осуществляется очень быстро, так что можно сделать все элементы ключами объекта и проверять, есть ли уже такой ключ. - -Например, организуем такую проверку для коллекции строк `"div"`, `"a"` и `"form"`: - -```js -var store = {}; // объект для коллекции - -var items = ["div", "a", "form"]; - -for (var i = 0; i < items.length; i++) { - var key = items[i]; // для каждого элемента создаём свойство - store[key] = true; // значение здесь не важно -} -``` - -Теперь для проверки, есть ли ключ `key`, достаточно выполнить `if (store[key])`. Если есть -- можно использовать значение, если нет -- добавить. - -Такое решение работает только со строками, но применимо к любым элементам, для которых можно вычислить строковый "уникальный ключ". -[/smart] - - - - -## Object.keys(obj) - -Ранее мы говорили о том, что свойства объекта можно перебрать в цикле `for..in`. - -Если мы хотим работать с ними в виде массива, то к нашим услугам -- замечательный метод [Object.keys(obj)](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/keys). Он поддерживается везде, кроме IE8-: - -```js -//+ run -var user = { - name: "Петя", - age: 30 -} - -var keys = Object.keys(user); - -alert( keys ); // name, age -``` - -## Итого - -Методы: -
      -
    • `push/pop`, `shift/unshift`, `splice` -- для добавления и удаления элементов.
    • -
    • `join/split` -- для преобразования строки в массив и обратно.
    • -
    • `sort` -- для сортировки массива. Если не передать функцию сравнения -- сортирует элементы как строки.
    • -
    • `reverse` -- меняет порядок элементов на обратный.
    • -
    • `concat` -- объединяет массивы.
    • -
    • `indexOf/lastIndexOf` -- возвращают позицию элемента в массиве (не поддерживается в IE8-).
    • -
    - -Изученных нами методов достаточно в 95% случаях, но существуют и другие. Для знакомства с ними рекомендуется заглянуть в справочник Array и [Array в Mozilla Developer Network](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array). \ No newline at end of file diff --git a/1-js/4-data-structures/9-array-iteration/1-rewrite-for-map/solution.md b/1-js/4-data-structures/9-array-iteration/1-rewrite-for-map/solution.md deleted file mode 100644 index 3b1d135e..00000000 --- a/1-js/4-data-structures/9-array-iteration/1-rewrite-for-map/solution.md +++ /dev/null @@ -1,15 +0,0 @@ - - -```js -//+ run -var arr = ["Есть", "жизнь", "на", "Марсе"]; - -*!* -var arrLength = arr.map(function(item) { - return item.length; -}); -*/!* - -alert( arrLength ); // 4,5,2,5 -``` - diff --git a/1-js/4-data-structures/9-array-iteration/1-rewrite-for-map/task.md b/1-js/4-data-structures/9-array-iteration/1-rewrite-for-map/task.md deleted file mode 100644 index db58c32f..00000000 --- a/1-js/4-data-structures/9-array-iteration/1-rewrite-for-map/task.md +++ /dev/null @@ -1,21 +0,0 @@ -# Перепишите цикл через map - -[importance 5] - -Код ниже получает из массива строк новый массив, содержащий их длины: - -```js -//+ run -var arr = ["Есть", "жизнь", "на", "Марсе"]; - -*!* -var arrLength = []; -for (var i = 0; i < arr.length; i++) { - arrLength[i] = arr[i].length; -} -*/!* - -alert( arrLength ); // 4,5,2,5 -``` - -Перепишите выделенный участок: уберите цикл, используйте вместо него метод `map`. \ No newline at end of file diff --git a/1-js/4-data-structures/9-array-iteration/2-partial-sums-array/_js.view/solution.js b/1-js/4-data-structures/9-array-iteration/2-partial-sums-array/_js.view/solution.js deleted file mode 100644 index c79d8e9e..00000000 --- a/1-js/4-data-structures/9-array-iteration/2-partial-sums-array/_js.view/solution.js +++ /dev/null @@ -1,12 +0,0 @@ -function getSums(arr) { - var result = []; - if (!arr.length) return result; - - var totalSum = arr.reduce(function(sum, item) { - result.push(sum); - return sum + item; - }); - result.push(totalSum); - - return result; -} \ No newline at end of file diff --git a/1-js/4-data-structures/9-array-iteration/2-partial-sums-array/_js.view/test.js b/1-js/4-data-structures/9-array-iteration/2-partial-sums-array/_js.view/test.js deleted file mode 100644 index 74a170a6..00000000 --- a/1-js/4-data-structures/9-array-iteration/2-partial-sums-array/_js.view/test.js +++ /dev/null @@ -1,18 +0,0 @@ -describe("getSums", function() { - - it("частичные суммы [1,2,3,4,5] равны [1,3,6,10,15]", function() { - assert.deepEqual(getSums([1, 2, 3, 4, 5]), [1, 3, 6, 10, 15]); - }); - - it("частичные суммы [-2,-1,0,1] равны [-2,-3,-3,-2]", function() { - assert.deepEqual(getSums([-2, -1, 0, 1]), [-2, -3, -3, -2]); - }); - - it("частичные суммы [] равны []", function() { - assert.deepEqual(getSums([]), []); - }); - - it("частичные суммы [1] равны [1]", function() { - assert.deepEqual(getSums([1]), [1]); - }); -}); \ No newline at end of file diff --git a/1-js/4-data-structures/9-array-iteration/2-partial-sums-array/solution.md b/1-js/4-data-structures/9-array-iteration/2-partial-sums-array/solution.md deleted file mode 100644 index 33a25c84..00000000 --- a/1-js/4-data-structures/9-array-iteration/2-partial-sums-array/solution.md +++ /dev/null @@ -1,47 +0,0 @@ -Метод `arr.reduce` подходит здесь идеально. Достаточно пройтись по массиву слева-направа, накапливая текущую сумму в переменной и, кроме того, добавляя её в результирующий массив. - -Неправильный вариант может выглядеть так: - -```js -//+ run -function getSums(arr) { - var result = []; - if (!arr.length) return result; - - arr.reduce(function(sum, item) { - result.push(sum); - return sum + item; - }); - - return result; -} - -alert(getSums([1,2,3,4,5])); // результат: *!*1,3,6,10*/!* -``` - -Перед тем, как читать дальше, посмотрите на него внимательно. Заметили, в чём ошибка? - -Если вы его запустите, то обнаружите, что результат не совсем тот. В получившемся массиве всего четыре элемента, отсутствует последняя сумма. - -Это из-за того, что последняя сумма является результатом метода `reduce`, он на ней заканчивает проход и далее функцию не вызывает, поэтому она оказывается не добавленной в `result`. - -Исправим это: - -```js -//+ run -function getSums(arr) { - var result = []; - - *!*var totalSum*/!* = arr.reduce(function(sum, item) { - result.push(sum); - return sum + item; - }); - *!*result.push(totalSum);*/!* - - return result; -} - -alert(getSums([1,2,3,4,5])); // *!*1,3,6,10,15*/!* -alert(getSums([-2,-1,0,1])); // *!*-2,-3,-3,-2*/!* -``` - diff --git a/1-js/4-data-structures/9-array-iteration/2-partial-sums-array/task.md b/1-js/4-data-structures/9-array-iteration/2-partial-sums-array/task.md deleted file mode 100644 index a5dffc9e..00000000 --- a/1-js/4-data-structures/9-array-iteration/2-partial-sums-array/task.md +++ /dev/null @@ -1,24 +0,0 @@ -# Массив частичных сумм - -[importance 2] - -На входе массив чисел, например: `arr = [1,2,3,4,5]`. - -Напишите функцию `getSums(arr)`, которая возвращает массив его частичных сумм. - -Иначе говоря, вызов `getSums(arr)` должен возвращать новый массив из такого же числа элементов, в котором на каждой позиции должна быть сумма элементов `arr` до этой позиции включительно. - -То есть: - -```js -//+ no-beautify -для arr = [ 1, 2, 3, 4, 5 ] -getSums( arr ) = [ 1, 1+2, 1+2+3, 1+2+3+4, 1+2+3+4+5 ] = [ 1, 3, 6, 10, 15 ] -``` - -Еще пример: `getSums([-2,-1,0,1]) = [-2,-3,-3,-2]`. - -
      -
    • Функция не должна модифицировать входной массив.
    • -
    • В решении используйте метод `arr.reduce`.
    • -
    diff --git a/1-js/4-data-structures/9-array-iteration/article.md b/1-js/4-data-structures/9-array-iteration/article.md deleted file mode 100644 index 52de853d..00000000 --- a/1-js/4-data-structures/9-array-iteration/article.md +++ /dev/null @@ -1,235 +0,0 @@ -# Массив: перебирающие методы - -Современный стандарт JavaScript предоставляет много методов для "умного" перебора массивов, которые есть в современных браузерах... - -...Ну а для их поддержки в IE8- просто подключите библиотеку [ES5-shim](https://github.com/kriskowal/es5-shim). -[cut] -## forEach - -Метод ["arr.forEach(callback[, thisArg])"](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach) используется для перебора массива. - -Он для каждого элемента массива вызывает функцию `callback`. - -Этой функции он передаёт три параметра `callback(item, i, arr)`: - -
      -
    • `item` -- очередной элемент массива.
    • -
    • `i` -- его номер.
    • -
    • `arr` -- массив, который перебирается.
    • -
    - -Например: - -```js -//+ run -var arr = ["Яблоко", "Апельсин", "Груша"]; - -arr.forEach(function(item, i, arr) { - alert( i + ": " + item + " (массив:" + arr + ")" ); -}); -``` - -Второй, необязательный аргумент `forEach` позволяет указать контекст `this` для `callback`. Мы обсудим его в деталях чуть позже, сейчас он нам не важен. - -Метод `forEach` ничего не возвращает, его используют только для перебора, как более "элегантный" вариант, чем обычный цикл `for`. - -## filter - -Метод ["arr.filter(callback[, thisArg])"](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter) используется для *фильтрации* массива через функцию. - -Он создаёт новый массив, в который войдут только те элементы `arr`, для которых вызов `callback(item, i, arr)` возвратит `true`. - -Например: - -```js -//+ run -var arr = [1, -1, 2, -2, 3]; - -*!* -var positiveArr = arr.filter(function(number) { - return number > 0; -}); -*/!* - -alert( positiveArr ); // 1,2,3 -``` - -## map - -Метод ["arr.map(callback[, thisArg])"](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/map) используется для *трансформации* массива. - -Он создаёт новый массив, который будет состоять из результатов вызова `callback(item, i, arr)` для каждого элемента `arr`. - -Например: - -```js -//+ run -var names = ['HTML', 'CSS', 'JavaScript']; - -*!* -var nameLengths = names.map(function(name) { - return name.length; -}); -*/!* - -// получили массив с длинами -alert( nameLengths ); // 4,3,10 -``` - -## every/some - -Эти методы используется для проверки массива. - -
      -
    • Метод ["arr.every(callback[, thisArg])"](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every) возвращает `true`, если вызов `callback` вернёт `true` для *каждого* элемента `arr`.
    • -
    • Метод ["arr.some(callback[, thisArg])"](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some) возвращает `true`, если вызов `callback` вернёт `true` для *какого-нибудь* элемента `arr`.
    • -
    - -```js -//+ run -var arr = [1, -1, 2, -2, 3]; - -function isPositive(number) { - return number > 0; -} - -*!* -alert( arr.every(isPositive) ); // false, не все положительные -alert( arr.some(isPositive) ); // true, есть хоть одно положительное -*/!* -``` - -## reduce/reduceRight - -Метод ["arr.reduce(callback[, initialValue])"](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduce) используется для последовательной обработки каждого элемента массива с сохранением промежуточного результата. - -Это один из самых сложных методов для работы с массивами. Но его стоит освоить, потому что временами с его помощью можно в несколько строк решить задачу, которая иначе потребовала бы в разы больше места и времени. - -Метод `reduce` используется для вычисления на основе массива какого-либо единого значения, иначе говорят "для свёртки массива". Чуть далее мы разберём пример для вычисления суммы. - -Он применяет функцию `callback` по очереди к каждому элементу массива слева направо, сохраняя при этом промежуточный результат. - -Аргументы функции `callback(previousValue, currentItem, index, arr)`: - -
      -
    • `previousValue` -- последний результат вызова функции, он же "промежуточный результат".
    • -
    • `currentItem` -- текущий элемент массива, элементы перебираются по очереди слева-направо.
    • -
    • `index` -- номер текущего элемента.
    • -
    • `arr` -- обрабатываемый массив.
    • -
    - -Кроме `callback`, методу можно передать "начальное значение" -- аргумент `initialValue`. Если он есть, то на первом вызове значение `previousValue` будет равно `initialValue`, а если у `reduce` нет второго аргумента, то оно равно первому элементу массива, а перебор начинается со второго. - -Проще всего понять работу метода `reduce` на примере. - -Например, в качестве "свёртки" мы хотим получить сумму всех элементов массива. - -Вот решение в одну строку: - -```js -//+ run -var arr = [1, 2, 3, 4, 5] - -// для каждого элемента массива запустить функцию, -// промежуточный результат передавать первым аргументом далее -var result = arr.reduce(function(sum, current) { - return sum + current; -}, 0); - -alert( result ); // 15 -``` - -Разберём, что в нём происходит. - -При первом запуске `sum` -- исходное значение, с которого начинаются вычисления, равно нулю (второй аргумент `reduce`). - -Сначала анонимная функция вызывается с этим начальным значением и первым элементом массива, результат запоминается и передаётся в следующий вызов, уже со вторым аргументом массива, затем новое значение участвует в вычислениях с третьим аргументом и так далее. - -Поток вычислений получается такой - - - -В виде таблицы где каждая строка -- вызов функции на очередном элементе массива: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    `sum``current`результат
    первый вызов`0``1``1`
    второй вызов`1``2``3`
    третий вызов`3``3``6`
    четвёртый вызов`6``4``10`
    пятый вызов`10``5``15`
    - -Как видно, результат предыдущего вызова передаётся в первый аргумент следующего. - -Кстати, полный набор аргументов функции для `reduce` включает в себя `function(sum, current, i, array)`, то есть номер текущего вызова `i` и весь массив `arr`, но здесь в них нет нужды. - -Посмотрим, что будет, если не указать `initialValue` в вызове `arr.reduce`: - -```js -//+ run -var arr = [1, 2, 3, 4, 5] - -// убрали 0 в конце -var result = arr.reduce(function(sum, current) { - return sum + current -}); - -alert( result ); // 15 -``` - -Результат -- точно такой же! Это потому, что при отсутствии `initialValue` в качестве первого значения берётся первый элемент массива, а перебор стартует со второго. - -Таблица вычислений будет такая же, за вычетом первой строки. - -**Метод [arr.reduceRight](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduceRight) работает аналогично, но идёт по массиву справа-налево:** - - - -## Итого - -Мы рассмотрели методы: -
      -
    • `forEach` -- для *перебора* массива.
    • -
    • `filter` -- для *фильтрации* массива.
    • -
    • `every/some` -- для *проверки* массива.
    • -
    • `map` -- для *трансформации* массива в массив.
    • -
    • `reduce/reduceRight` -- для *прохода по массиву с вычислением значения*.
    • -
    - -Во многих ситуациях их использование позволяет написать код короче и понятнее, чем обычный перебор через `for`. - \ No newline at end of file diff --git a/1-js/4-data-structures/9-array-iteration/reduce.png b/1-js/4-data-structures/9-array-iteration/reduce.png deleted file mode 100644 index ddc8d14060a9f1d6b533d66716828ac4b9b2ea6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10372 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 C1e44F diff --git a/1-js/4-data-structures/index.md b/1-js/4-data-structures/index.md deleted file mode 100644 index 774dee46..00000000 --- a/1-js/4-data-structures/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# Структуры данных - -Изучаем JavaScript: расширенное знакомство со встроенными типами данных, их особенностями. \ No newline at end of file diff --git a/1-js/5-functions-closures/1-global-object/1-window-and-variable/solution.md b/1-js/5-functions-closures/1-global-object/1-window-and-variable/solution.md deleted file mode 100644 index 4c3693d0..00000000 --- a/1-js/5-functions-closures/1-global-object/1-window-and-variable/solution.md +++ /dev/null @@ -1,24 +0,0 @@ -Ответ: `1`. - -```js -//+ run untrusted refresh -if ("a" in window) { - var a = 1; -} -alert( a ); -``` - -Посмотрим, почему. - -На стадии подготовки к выполнению, из `var a` создается `window.a`: - -```js -// window = {a:undefined} - -if ("a" in window) { // в if видно что window.a уже есть - var a = 1; // поэтому эта строка сработает -} -alert( a ); -``` - -В результате `a` становится `1`. \ No newline at end of file diff --git a/1-js/5-functions-closures/1-global-object/1-window-and-variable/task.md b/1-js/5-functions-closures/1-global-object/1-window-and-variable/task.md deleted file mode 100644 index d477b705..00000000 --- a/1-js/5-functions-closures/1-global-object/1-window-and-variable/task.md +++ /dev/null @@ -1,13 +0,0 @@ -# Window и переменная - -[importance 5] - -Каков будет результат кода? - -```js -if ("a" in window) { - var a = 1; -} -alert( a ); -``` - diff --git a/1-js/5-functions-closures/1-global-object/2-window-and-variable-2/solution.md b/1-js/5-functions-closures/1-global-object/2-window-and-variable-2/solution.md deleted file mode 100644 index d21c6d8d..00000000 --- a/1-js/5-functions-closures/1-global-object/2-window-and-variable-2/solution.md +++ /dev/null @@ -1,12 +0,0 @@ -Ответ: **ошибка**. - -Переменной `a` нет, так что условие `"a" in window` не выполнится. В результате на последней строчке - обращение к неопределенной переменной. - -```js -//+ run untrusted refresh -if ("a" in window) { - a = 1; -} -alert( a ); // <-- error! -``` - diff --git a/1-js/5-functions-closures/1-global-object/2-window-and-variable-2/task.md b/1-js/5-functions-closures/1-global-object/2-window-and-variable-2/task.md deleted file mode 100644 index 70eb2813..00000000 --- a/1-js/5-functions-closures/1-global-object/2-window-and-variable-2/task.md +++ /dev/null @@ -1,13 +0,0 @@ -# Window и переменная 2 - -[importance 5] - -Каков будет результат (перед `a` нет `var`)? - -```js -if ("a" in window) { - a = 1; -} -alert( a ); -``` - diff --git a/1-js/5-functions-closures/1-global-object/3-window-and-variable-3/solution.md b/1-js/5-functions-closures/1-global-object/3-window-and-variable-3/solution.md deleted file mode 100644 index 69bbd29b..00000000 --- a/1-js/5-functions-closures/1-global-object/3-window-and-variable-3/solution.md +++ /dev/null @@ -1,14 +0,0 @@ -Ответ: `1`. - -Переменная `a` создается до начала выполнения кода, так что условие `"a" in window` выполнится и сработает `a = 1`. - -```js -//+ run untrusted refresh -if ("a" in window) { - a = 1; -} -var a; - -alert( a ); // 1 -``` - diff --git a/1-js/5-functions-closures/1-global-object/3-window-and-variable-3/task.md b/1-js/5-functions-closures/1-global-object/3-window-and-variable-3/task.md deleted file mode 100644 index 42eabb2e..00000000 --- a/1-js/5-functions-closures/1-global-object/3-window-and-variable-3/task.md +++ /dev/null @@ -1,15 +0,0 @@ -# Window и переменная 3 - -[importance 5] - -Каков будет результат (перед `a` нет `var`, а ниже есть)? - -```js -if ("a" in window) { - a = 1; -} -var a; - -alert( a ); -``` - diff --git a/1-js/5-functions-closures/1-global-object/article.md b/1-js/5-functions-closures/1-global-object/article.md deleted file mode 100644 index b31d40dc..00000000 --- a/1-js/5-functions-closures/1-global-object/article.md +++ /dev/null @@ -1,233 +0,0 @@ -# Глобальный объект - -Механизм работы функций и переменных в JavaScript очень отличается от большинства языков. - -Чтобы его понять, мы в этой главе рассмотрим переменные и функции в глобальной области. А в следующей -- пойдём дальше. - -[cut] - -## Глобальный объект - -*Глобальными* называют переменные и функции, которые не находятся внутри какой-то функции. То есть, иными словами, если переменная или функция не находятся внутри конструкции `function`, то они -- "глобальные". - -**В JavaScript все глобальные переменные и функции являются свойствами специального объекта, который называется *"глобальный объект"* (`global object`).** - -В браузере этот объект явно доступен под именем `window`. Объект `window` одновременно является глобальным объектом и содержит ряд свойств и методов для работы с окном браузера, но нас здесь интересует только его роль как глобального объекта. - -В других окружениях, например Node.JS, глобальный объект может быть недоступен в явном виде, но суть происходящего от этого не изменяется, поэтому далее для обозначения глобального объекта мы будем использовать `"window"`. - -**Присваивая или читая глобальную переменную, мы, фактически, работаем со свойствами `window`.** - -Например: - -```js -//+ run untrusted refresh -var a = 5; // объявление var создаёт свойство window.a -alert( window.a ); // 5 -``` - -Создать переменную можно и явным присваиванием в `window`: - -```js -//+ run untrusted refresh -window.a = 5; -alert( a ); // 5 -``` - -## Порядок инициализации - -Выполнение скрипта происходит в две фазы: -
      -
    1. На первой фазе происходит инициализация, подготовка к запуску. - -Во время инициализации скрипт сканируется на предмет объявления функций вида [Function Declaration](/function-declaration-expression), а затем -- на предмет объявления переменных `var`. Каждое такое объявление добавляется в `window`. - -**Функции, объявленные как Function Declaration, создаются сразу работающими, а переменные -- равными `undefined`.** -
    2. -
    3. На второй фазе -- собственно, выполнение. - -Присваивание (`=`) значений переменных происходит, когда поток выполнения доходит до соответствующей строчки кода, до этого они `undefined`. -
    4. -
    - -В коде ниже указано содержание глобального объекта на момент инициализации и далее последовательно по коду: - -```js -// На момент инициализации, до выполнения кода: -// window = { f: function, a: undefined, g: undefined } - -var a = 5; -// window = { f: function, *!*a: 5*/!*, g: undefined } - -function f(arg) { /*...*/ } -// window = { f: function, a: 5, g: undefined } без изменений, f обработана ранее - -var g = function(arg) { /*...*/ }; -// window = { f: function, a: 5, g: *!*function*/!* } -``` - -Кстати, тот факт, что к началу выполнения кода переменные и функции *уже* содержатся в `window`, можно легко проверить, выведя их: - -```js -//+ run untrusted refresh - -alert("a" in window); // *!*true*/!*, т.к. есть свойство window.a -alert(a); // равно *!*undefined*/!*, присваивание будет выполнено далее -alert(f); // *!*function ...*/!*, готовая к выполнению функция -alert(g); // *!*undefined*/!*, т.к. это переменная, а не Function Declaration - -var a = 5; -function f() { /*...*/ } -var g = function() { /*...*/ }; -``` - -[smart header="Присвоение переменной без объявления"] -В старом стандарте JavaScript переменную можно было создать и без объявления `var`: - -```js -//+ run -a = 5; - -alert( a ); // 5 -``` - -Такое присвоение, как и `var a = 5`, создает свойство `window.a = 5`. Отличие от `var a = 5` -- в том, что переменная будет создана не на этапе входа в область видимости, а в момент присвоения. - -Сравните два кода ниже. - -Первый выведет `undefined`, так как переменная была добавлена в `window` на фазе инициализации: - -```js -//+ run untrusted refresh -*!* -alert( a ); // undefined -*/!* - -var a = 5; -``` - -Второй код выведет ошибку, так как переменной ещё не существует: - -```js -//+ run untrusted refresh -*!* -alert( a ); // error, a is not defined -*/!* - -a = 5; -``` -Это, конечно, для общего понимания, мы всегда объявляем переменные через `var`. -[/smart] - -[smart header="Конструкции `for, if...` не влияют на видимость переменных"] -Фигурные скобки, которые используются в `for, while, if`, в отличие от объявлений функции, имеют "декоративный" характер. - -В JavaScript нет разницы между объявлением вне блока: - -```js -*!*var*/!* i; -{ - i = 5; -} -``` - -...И внутри него: - -```js -i = 5; -{ - *!*var*/!* i; -} -``` - -**Также нет разницы между объявлением в цикле и вне его:** - -```js -//+ run untrusted refresh -for (*!*var*/!* i = 0; i < 5; i++) { } -``` - -Идентичный по функциональности код: - -```js -//+ run untrusted refresh -*!*var i;*/!* -for (i = 0; i < 5; i++) { } -``` - -В обоих случаях переменная будет создана до выполнения цикла, на стадии инициализации, и ее значение будет сохранено после окончания цикла. - -[/smart] - -[smart header="Не важно, где и сколько раз объявлена переменная"] - -Объявлений `var` может быть сколько угодно: - -```js -var i = 10; - -for (var i = 0; i < 20; i++) { - ... -} - -var i = 5; -``` - -**Все `var` будут обработаны один раз, на фазе инициализации.** - -На фазе исполнения объявления `var` будут проигнорированы: они уже были обработаны. Зато будут выполнены присваивания. -[/smart] - - -[warn header="Ошибки при работе с `window` в IE8-"] - -В старых IE есть две забавные ошибки при работе с переменными в `window`: - -
      -
    1. Переопределение переменной, у которой такое же имя, как и `id` элемента, приведет к ошибке: - -```html - -
      ...
      - -``` - -А если сделать через `var`, то всё будет хорошо. - -Это была реклама того, что надо везде ставить `var`. - -
    2. -
    3. Ошибка при рекурсии через функцию-свойство `window`. Следующий код "умрет" в IE8-: - -```html - - -``` - -Проблема здесь возникает из-за того, что функция напрямую присвоена в `window.recurse = ...`. Ее не будет при обычном объявлении функции. - -**Этот пример выдаст ошибку только в настоящем IE8!** Не IE9 в режиме эмуляции. Вообще, режим эмуляции позволяет отлавливать где-то 95% несовместимостей и проблем, а для оставшихся 5% вам нужен будет настоящий IE8 в виртуальной машине. -
    4. -
    -[/warn] - - -## Итого - -В результате инициализации, к началу выполнения кода: -
      -
    1. Функции, объявленные как `Function Declaration`, создаются полностью и готовы к использованию.
    2. -
    3. Переменные объявлены, но равны `undefined`. Присваивания выполнятся позже, когда выполнение дойдет до них.
    4. -
    - - diff --git a/1-js/5-functions-closures/2-closures/1-say-phrase-first/solution.md b/1-js/5-functions-closures/2-closures/1-say-phrase-first/solution.md deleted file mode 100644 index ab6567e4..00000000 --- a/1-js/5-functions-closures/2-closures/1-say-phrase-first/solution.md +++ /dev/null @@ -1,16 +0,0 @@ -Ошибки не будет, выведет `"Вася, undefined"`. - -```js -//+ run -*!* -say('Вася'); // Что выведет? Не будет ли ошибки? -*/!* - -var phrase = 'Привет'; - -function say(name) { - alert( name + ", " + phrase ); -} -``` - -Переменная как таковая существует, вот только на момент запуска функции она равна `undefined`. \ No newline at end of file diff --git a/1-js/5-functions-closures/2-closures/1-say-phrase-first/task.md b/1-js/5-functions-closures/2-closures/1-say-phrase-first/task.md deleted file mode 100644 index fe548c0c..00000000 --- a/1-js/5-functions-closures/2-closures/1-say-phrase-first/task.md +++ /dev/null @@ -1,18 +0,0 @@ -# Что выведет say в начале кода? - -[importance 5] - -Что будет, если вызов `sayHi('Вася');` стоит в самом-самом начале, в первой строке кода? - -```js -*!* -say('Вася'); // Что выведет? Не будет ли ошибки? -*/!* - -var phrase = 'Привет'; - -function say(name) { - alert( name + ", " + phrase ); -} -``` - diff --git a/1-js/5-functions-closures/2-closures/2-which-value-is-modified/solution.md b/1-js/5-functions-closures/2-closures/2-which-value-is-modified/solution.md deleted file mode 100644 index eed571f3..00000000 --- a/1-js/5-functions-closures/2-closures/2-which-value-is-modified/solution.md +++ /dev/null @@ -1,9 +0,0 @@ -**Результатом будет `true`**, т.к. `var` обработается и переменная будет создана до выполнения кода. - -Соответственно, присвоение `value=true` сработает на локальной переменной, и `alert` выведет `true`. - -**Внешняя переменная не изменится.** - -P.S. Если `var` нет, то в функции переменная не будет найдена. Интерпретатор обратится за ней в `window` и изменит её там. - -**Так что без `var` результат будет также `true`, но внешняя переменная изменится.** diff --git a/1-js/5-functions-closures/2-closures/2-which-value-is-modified/task.md b/1-js/5-functions-closures/2-closures/2-which-value-is-modified/task.md deleted file mode 100644 index b9f72a30..00000000 --- a/1-js/5-functions-closures/2-closures/2-which-value-is-modified/task.md +++ /dev/null @@ -1,25 +0,0 @@ -# В какую переменную будет присвоено значение? - -[importance 5] - -Каков будет результат выполнения этого кода? - -```js -var value = 0; - -function f() { - if (1) { - value = true; - } else { - var value = false; - } - - alert( value ); -} - -f(); -``` - -Изменится ли внешняя переменная `value` ? - -P.S. Какими будут ответы, если из строки `var value = false` убрать `var`? \ No newline at end of file diff --git a/1-js/5-functions-closures/2-closures/3-var-window/solution.md b/1-js/5-functions-closures/2-closures/3-var-window/solution.md deleted file mode 100644 index e1609417..00000000 --- a/1-js/5-functions-closures/2-closures/3-var-window/solution.md +++ /dev/null @@ -1,29 +0,0 @@ -Результатом будет `undefined`, затем `5`. - -```js -//+ run -function test() { - - alert( window ); - - var window = 5; - - alert( window ); -} - -test(); -``` - -Такой результат получился потому, что `window` -- это глобальная переменная, но ничто не мешает объявить такую же локальную. - -Директива `var window` обработается до начала выполнения кода функции и будет создана локальная переменная, т.е. свойство `LexicalEnvironment.window`: - -```js -LexicalEnvironment = { - window: undefined -} -``` - -Когда выполнение кода начнется и сработает `alert`, он выведет уже локальную переменную, которая на тот момент равна `undefined`. - -Затем сработает присваивание, и второй `alert` выведет уже `5`. \ No newline at end of file diff --git a/1-js/5-functions-closures/2-closures/3-var-window/task.md b/1-js/5-functions-closures/2-closures/3-var-window/task.md deleted file mode 100644 index 8c0e1c7d..00000000 --- a/1-js/5-functions-closures/2-closures/3-var-window/task.md +++ /dev/null @@ -1,19 +0,0 @@ -# var window - -[importance 5] - -Каков будет результат выполнения этого кода? Почему? - -```js -function test() { - - alert( window ); - - var window = 5; - - alert( window ); -} - -test(); -``` - diff --git a/1-js/5-functions-closures/2-closures/4-call-inplace/solution.md b/1-js/5-functions-closures/2-closures/4-call-inplace/solution.md deleted file mode 100644 index 4f08292e..00000000 --- a/1-js/5-functions-closures/2-closures/4-call-inplace/solution.md +++ /dev/null @@ -1,37 +0,0 @@ -Результат - **ошибка**. Попробуйте: - -```js -//+ run no-beautify -var a = 5 - -(function() { - alert(a) -})() -``` - -Дело в том, что после `var a = 5` нет точки с запятой. - -JavaScript воспринимает этот код как если бы перевода строки не было: - -```js -//+ run no-beautify -var a = 5(function() { - alert(a) -})() -``` - -То есть, он пытается вызвать *функцию* `5`, что и приводит к ошибке. - -Если точку с запятой поставить, все будет хорошо: - -```js -//+ run no-beautify -var a = 5; - -(function() { - alert(a) -})() -``` - -Это один из наиболее частых и опасных подводных камней, приводящих к ошибкам тех, кто *не* ставит точки с запятой. - diff --git a/1-js/5-functions-closures/2-closures/4-call-inplace/task.md b/1-js/5-functions-closures/2-closures/4-call-inplace/task.md deleted file mode 100644 index aa4c1b4a..00000000 --- a/1-js/5-functions-closures/2-closures/4-call-inplace/task.md +++ /dev/null @@ -1,17 +0,0 @@ -# Вызов "на месте" - -[importance 4] - -Каков будет результат выполнения кода? Почему? - -```js -//+ no-beautify -var a = 5 - -(function() { - alert(a) -})() -``` - -P.S. *Подумайте хорошо! Здесь все ошибаются!* -P.P.S. *Внимание, здесь подводный камень! Ок, вы предупреждены.* diff --git a/1-js/5-functions-closures/2-closures/5-access-outer-variable/solution.md b/1-js/5-functions-closures/2-closures/5-access-outer-variable/solution.md deleted file mode 100644 index 4e0a619e..00000000 --- a/1-js/5-functions-closures/2-closures/5-access-outer-variable/solution.md +++ /dev/null @@ -1,3 +0,0 @@ -Нет, нельзя. - -Локальная переменная полностью перекрывает внешнюю. diff --git a/1-js/5-functions-closures/2-closures/5-access-outer-variable/task.md b/1-js/5-functions-closures/2-closures/5-access-outer-variable/task.md deleted file mode 100644 index 13e61904..00000000 --- a/1-js/5-functions-closures/2-closures/5-access-outer-variable/task.md +++ /dev/null @@ -1,17 +0,0 @@ -# Перекрытие переменной - -[importance 4] - -Если во внутренней функции есть своя переменная с именем `currentCount` -- можно ли в ней получить `currentCount` из внешней функции? - -```js -function makeCounter() { - var currentCount = 1; - - return function() { - var currentCount; - // можно ли здесь вывести currentCount из внешней функции (равный 1)? - }; -} -``` - diff --git a/1-js/5-functions-closures/2-closures/6-counter-window-variable/solution.md b/1-js/5-functions-closures/2-closures/6-counter-window-variable/solution.md deleted file mode 100644 index b9b3771c..00000000 --- a/1-js/5-functions-closures/2-closures/6-counter-window-variable/solution.md +++ /dev/null @@ -1,30 +0,0 @@ -Выведут **1,2,3,4.** - -Здесь внутренняя функция будет искать -- и находить `currentCount` каждый раз в самом внешнем объекте переменных: глобальном объекте `window`. - -В результате все счётчики будут разделять единое, глобальное текущее значение. - -```js -//+ run -var currentCount = 1; - -function makeCounter() { - return function() { - return currentCount++; - }; -} - -var counter = makeCounter(); -var counter2 = makeCounter(); - -*!* -alert( counter() ); // ? -alert( counter() ); // ? -*/!* - -*!* -alert( counter2() ); // ? -alert( counter2() ); // ? -*/!* -``` - diff --git a/1-js/5-functions-closures/2-closures/6-counter-window-variable/task.md b/1-js/5-functions-closures/2-closures/6-counter-window-variable/task.md deleted file mode 100644 index 48068df9..00000000 --- a/1-js/5-functions-closures/2-closures/6-counter-window-variable/task.md +++ /dev/null @@ -1,29 +0,0 @@ -# Глобальный счётчик - -[importance 5] - -Что выведут эти вызовы, если переменная `currentCount` находится вне `makeCounter`? - -```js -var currentCount = 1; - -function makeCounter() { - return function() { - return currentCount++; - }; -} - -var counter = makeCounter(); -var counter2 = makeCounter(); - -*!* -alert( counter() ); // ? -alert( counter() ); // ? -*/!* - -*!* -alert( counter2() ); // ? -alert( counter2() ); // ? -*/!* -``` - diff --git a/1-js/5-functions-closures/2-closures/6@2x.png b/1-js/5-functions-closures/2-closures/6@2x.png deleted file mode 100755 index 7a276a33141bf1d14fb5f392d7ed1660484ed8d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23137 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 diff --git a/1-js/5-functions-closures/2-closures/article.md b/1-js/5-functions-closures/2-closures/article.md deleted file mode 100644 index d4301d75..00000000 --- a/1-js/5-functions-closures/2-closures/article.md +++ /dev/null @@ -1,411 +0,0 @@ -# Замыкания, функции изнутри - -В этой главе мы продолжим рассматривать, как работают переменные, и, как следствие, познакомимся с замыканиями. От глобального объекта мы переходим к работе внутри функций. -[cut] -## Лексическое окружение - -Все переменные внутри функции -- это свойства специального внутреннего объекта `LexicalEnvironment`, который создаётся при её запуске. - -Мы будем называть этот объект "лексическое окружение" или просто "объект переменных". - -При запуске функция создает объект `LexicalEnvironment`, записывает туда аргументы, функции и переменные. Процесс инициализации выполняется в том же порядке, что и для глобального объекта, который, вообще говоря, является частным случаем лексического окружения. - -В отличие от `window`, объект `LexicalEnvironment` является внутренним, он скрыт от прямого доступа. - -### Пример - -Посмотрим пример, чтобы лучше понимать, как это работает: - -```js -function sayHi(name) { - var phrase = "Привет, " + name; - alert( phrase ); -} - -sayHi('Вася'); -``` - -При вызове функции: -
      -
    1. До выполнения первой строчки её кода, на стадии инициализации, интерпретатор создает пустой объект `LexicalEnvironment` и заполняет его. - -В данном случае туда попадает аргумент `name` и единственная переменная `phrase`: - -```js -function sayHi(name) { -*!* - // LexicalEnvironment = { name: 'Вася', phrase: undefined } -*/!* - var phrase = "Привет, " + name; - alert( phrase ); -} - -sayHi('Вася'); -``` - -
    2. -
    3. Функция выполняется. - -Во время выполнения происходит присвоение локальной переменной `phrase`, то есть, другими словами, присвоение свойству `LexicalEnvironment.phrase` нового значения: - -```js -function sayHi(name) { - // LexicalEnvironment = { name: 'Вася', phrase: undefined } - var phrase = "Привет, " + name; - -*!* - // LexicalEnvironment = { name: 'Вася', phrase: 'Привет, Вася'} -*/!* - alert( phrase ); -} - -sayHi('Вася'); -``` - -
    4. -
    5. В конце выполнения функции объект с переменными обычно выбрасывается и память очищается. В примерах выше так и происходит. Через некоторое время мы рассмотрим более сложные ситуации, при которых объект с переменными сохраняется и после завершения функции.
    6. -
    - -[smart header="Тонкости спецификации"] -Если почитать спецификацию ECMA-262, то мы увидим, что речь идёт о двух объектах: `VariableEnvironment` и `LexicalEnvironment`. - -Но там же замечено, что в реализациях эти два объекта могут быть объединены. Так что мы избегаем лишних деталей и используем везде термин `LexicalEnvironment`, это достаточно точно позволяет описать происходящее. - -Более формальное описание находится в спецификации ECMA-262, секции 10.2-10.5 и 13. -[/smart] - - -## Доступ ко внешним переменным - -Из функции мы можем обратиться не только к локальной переменной, но и к внешней: - -```js -var userName = "Вася"; - -function sayHi() { - alert( userName ); // "Вася" -} -``` - -**Интерпретатор, при доступе к переменной, сначала пытается найти переменную в текущем `LexicalEnvironment`, а затем, если её нет -- ищет во внешнем объекте переменных. В данном случае им является `window`.** - -Такой порядок поиска возможен благодаря тому, что ссылка на внешний объект переменных хранится в специальном внутреннем свойстве функции, которое называется `[[Scope]]`. Это свойство закрыто от прямого доступа, но знание о нём очень важно для понимания того, как работает JavaScript. - -**При создании функция получает скрытое свойство `[[Scope]]`, которое ссылается на лексическое окружение, в котором она была создана.** - -В примере выше таким окружением является `window`, так что создаётся свойство: -```js -//+ no-beautify -sayHi.[[Scope]] = window -``` - -Это свойство никогда не меняется. Оно всюду следует за функцией, привязывая её, таким образом, к месту своего рождения. - -При запуске функции её объект переменных `LexicalEnvironment` получает ссылку на "внешнее лексическое окружение" со значением из `[[Scope]]`. - -Если переменная не найдена в функции -- она будет искаться снаружи. - -Именно благодаря этой механике в примере выше `alert(userName)` выводит внешнюю переменную. На уровне кода это выглядит как поиск во внешней области видимости, вне функции. - -Если обобщить: -
      -
    • Каждая функция при создании получает ссылку `[[Scope]]` на объект с переменными, в контексте которого была создана.
    • -
    • При запуске функции создаётся новый объект с переменными `LexicalEnvironment`. Он получает ссылку на внешний объект переменных из `[[Scope]]`.
    • -
    • При поиске переменных он осуществляется сначала в текущем объекте переменных, а потом -- по этой ссылке.
    • -
    - -Выглядит настолько просто, что непонятно -- зачем вообще говорить об этом `[[Scope]]`, об объектах переменных. Сказали бы: "Функция читает переменные снаружи" -- и всё. Но знание этих деталей позволит нам легко объяснить и понять более сложные ситуации, с которыми мы столкнёмся далее. - -## Всегда текущее значение - -Значение переменной из внешней области берётся всегда текущее. Оно может быть уже не то, что было на момент создания функции. - -Например, в коде ниже функция `sayHi` берёт `phrase` из внешней области: - -```js -//+ run no-beautify - -var phrase = 'Привет'; - -function say(name) { - alert(phrase + ', ' + name); -} - -*!* -say('Вася'); // Привет, Вася (*) -*/!* - -phrase = 'Пока'; - -*!* -say('Вася'); // Пока, Вася (**) -*/!* -``` - -На момент первого запуска `(*)`, переменная `phrase` имела значение `'Привет'`, а ко второму `(**)` изменила его на `'Пока'`. - -Это естественно, ведь для доступа к внешней переменной функция по ссылке `[[Scope]]` обращается во внешний объект переменных и берёт то значение, которое там есть на момент обращения. - -## Вложенные функции - -Внутри функции можно объявлять не только локальные переменные, но и другие функции. - -К примеру, вложенная функция может помочь лучше организовать код: - -```js -//+ run -function sayHiBye(firstName, lastName) { - - alert( "Привет, " + getFullName() ); - alert( "Пока, " + getFullName() ); - -*!* - function getFullName() { - return firstName + " " + lastName; - } -*/!* - -} - -sayHiBye("Вася", "Пупкин"); // Привет, Вася Пупкин ; Пока, Вася Пупкин -``` - -Здесь, для удобства, создана вспомогательная функция `getFullName()`. - -Вложенные функции получают `[[Scope]]` так же, как и глобальные. В нашем случае: - -```js -//+ no-beautify -getFullName.[[Scope]] = объект переменных текущего запуска sayHiBye -``` - -Благодаря этому `getFullName()` получает снаружи `firstName` и `lastName`. - -Заметим, что если переменная не найдена во внешнем объекте переменных, то она ищется в ещё более внешнем (через `[[Scope]]` внешней функции), то есть, такой пример тоже будет работать: - -```js -//+ run -var phrase = 'Привет'; - -function say() { - - function go() { - alert( phrase ); // найдёт переменную снаружи - } - - go(); -} -``` - -## Возврат функции - -Рассмотрим более "продвинутый" вариант, при котором внутри одной функции создаётся другая и возвращается в качестве результата. - -В разработке интерфейсов это совершенно стандартный приём, функция затем может назначаться как обработчик действий посетителя. - -Здесь мы будем создавать функцию-счётчик, которая считает свои вызовы и возвращает их текущее число. - -В примере ниже `makeCounter` создает такую функцию: - -```js -//+ run -function makeCounter() { -*!* - var currentCount = 1; -*/!* - - return function() { // (**) - return currentCount++; - }; -} - -var counter = makeCounter(); // (*) - -// каждый вызов увеличивает счётчик и возвращает результат -alert( counter() ); // 1 -alert( counter() ); // 2 -alert( counter() ); // 3 - -// создать другой счётчик, он будет независим от первого -var counter2 = makeCounter(); -alert( counter2() ); // 1 -``` - -Как видно, мы получили два независимых счётчика `counter` и `counter2`, каждый из которых незаметным снаружи образом сохраняет текущее количество вызовов. - -Где? Конечно, во внешней переменной `currentCount`, которая у каждого счётчика своя. - -Если подробнее описать происходящее: - -
      -
    1. В строке `(*)` запускается `makeCounter()`. При этом создаётся `LexicalEnvironment` для переменных текущего вызова. В функции есть одна переменная `var currentCount`, которая станет свойством этого объекта. Она изначально инициализуется в `undefined`, затем, в процессе выполнения, получит значение `1`: - -```js -function makeCounter() { -*!* - // LexicalEnvironment = { currentCount: undefined } -*/!* - - var currentCount = 1; - -*!* - // LexicalEnvironment = { currentCount: 1 } -*/!* - - return function() { // [[Scope]] -> LexicalEnvironment (**) - return currentCount++; - }; -} - -var counter = makeCounter(); // (*) -``` - -
    2. -
    3. В процессе выполнения `makeCounter()` создаёт функцию в строке `(**)`. При создании эта функция получает внутреннее свойство `[[Scope]]` со ссылкой на текущий `LexicalEnvironment`.
    4. -
    5. Далее вызов `makeCounter()` завершается и функция `(**)` возвращается и сохраняется во внешней переменной `counter` `(*)`.
    6. -
    - -На этом создание "счётчика" завершено. - -Итоговым значением, записанным в переменную `counter`, является функция: - -```js -function() { // [[Scope]] -> {currentCount: 1} - return currentCount++; -}; -``` - -Возвращённая из `makeCounter()` функция `counter` помнит (через `[[Scope]]`) о том, в каком окружении была создана. - -Это и используется для хранения текущего значения счётчика. - -Далее, когда-нибудь, функция `counter` будет вызвана. Мы не знаем, когда это произойдёт. Может быть, прямо сейчас, но, вообще говоря, совсем не факт. - -Эта функция состоит из одной строки: `return currentCount++`, ни переменных ни параметров в ней нет, поэтому её собственный объект переменных, для краткости назовём его `LE` -- будет пуст. - -Однако, у неё есть свойство `[[Scope]]`, которое указывает на внешнее окружение. Чтобы увеличить и вернуть `currentCount`, интерпретатор ищет в текущем объекте переменных `LE`, не находит, затем идёт во внешний объект, там находит, изменяет и возвращает новое значение: - -```js -//+ run -function makeCounter() { - var currentCount = 1; - - return function() { - return currentCount++; - }; -} - -var counter = makeCounter(); // [[Scope]] -> {currentCount: 1} - -alert( counter() ); // 1, [[Scope]] -> {currentCount: 1} -alert( counter() ); // 2, [[Scope]] -> {currentCount: 2} -alert( counter() ); // 3, [[Scope]] -> {currentCount: 3} -``` - -**Переменную во внешней области видимости можно не только читать, но и изменять.** - - -В примере выше было создано несколько счётчиков. Все они взаимно независимы: - -```js -var counter = makeCounter(); - -var counter2 = makeCounter(); - -alert( counter() ); // 1 -alert( counter() ); // 2 -alert( counter() ); // 3 - -alert( counter2() ); // 1, *!*счётчики независимы*/!* -``` - -Они независимы, потому что при каждом запуске `makeCounter` создаётся свой объект переменных `LexicalEnvironment`, со своим свойством `currentCount`, на который новый счётчик получит ссылку `[[Scope]]`. - - -## Свойства функции - -Функция в JavaScript является объектом, поэтому можно присваивать свойства прямо к ней, вот так: - -```js -//+ run -function f() {} - -f.test = 5; -alert( f.test ); -``` - -Свойства функции не стоит путать с переменными и параметрами. Они совершенно никак не связаны. Переменные доступны только внутри функции, они создаются в процессе её выполнения. Это -- использование функции "как функции". - -А свойство у функции -- доступно отовсюду и всегда. Это -- использование функции "как объекта". - -Если хочется привязать значение к функции, то можно им воспользоваться вместо внешних переменных. - -В качестве демонстрации, перепишем пример со счётчиком: - -```js -//+ run -function makeCounter() { -*!* - function counter() { - return counter.currentCount++; - }; - counter.currentCount = 1; -*/!* - - return counter; -} - -var counter = makeCounter(); -alert( counter() ); // 1 -alert( counter() ); // 2 -``` - -При запуске пример работает также. - -Принципиальная разница -- во внутренней механике и в том, что свойство функции, в отличие от переменной из замыкания -- общедоступно, к нему имеет доступ любой, у кого есть объект функции. - -Например, можно взять и поменять счётчик из внешнего кода: - -```js -var counter = makeCounter(); -alert( counter() ); // 1 - -*!* -counter.currentCount = 5; -*/!* - -alert( counter() ); // 5 -``` - -[smart header="Статические переменные"] -Иногда свойства, привязанные к функции, называют "статическими переменными". - -В некоторых языках программирования можно объявлять переменную, которая сохраняет значение между вызовами функции. В JavaScript ближайший аналог -- такое вот свойство функции. -[/smart] - - -## Итого: замыкания - -[Замыкание](http://en.wikipedia.org/wiki/Closure_(computer_science)) -- это функция вместе со всеми внешними переменными, которые ей доступны. - -Таково стандартное определение, которое есть в Wikipedia и большинстве серьёзных источников по программированию. То есть, замыкание -- это функция + внешние переменные. - -Тем не менее, в JavaScript есть небольшая терминологическая особенность. - -**Обычно, говоря "замыкание функции", подразумевают не саму эту функцию, а именно внешние переменные.** - -Иногда говорят "переменная берётся из замыкания". Это означает -- из внешнего объекта переменных. - - -[smart header="Что это такое -- \"понимать замыкания?\""] -Иногда говорят "Вася молодец, понимает замыкания!". Что это такое -- "понимать замыкания", какой смысл обычно вкладывают в эти слова? - -"Понимать замыкания" в JavaScript означает понимать следующие вещи: -
      -
    1. Все переменные и параметры функций являются свойствами объекта переменных `LexicalEnvironment`. Каждый запуск функции создает новый такой объект. На верхнем уровне им является "глобальный объект", в браузере -- `window`.
    2. -
    3. При создании функция получает системное свойство `[[Scope]]`, которое ссылается на `LexicalEnvironment`, в котором она была создана.
    4. -
    5. При вызове функции, куда бы её ни передали в коде -- она будет искать переменные сначала у себя, а затем во внешних `LexicalEnvironment` с места своего "рождения".
    6. -
    - -В следующих главах мы углубим это понимание дополнительными примерами, а также рассмотрим, что происходит с памятью. -[/smart] diff --git a/1-js/5-functions-closures/3-scope-new-function/article.md b/1-js/5-functions-closures/3-scope-new-function/article.md deleted file mode 100644 index 51cebe40..00000000 --- a/1-js/5-functions-closures/3-scope-new-function/article.md +++ /dev/null @@ -1,93 +0,0 @@ -# [[Scope]] для new Function - - -## Присвоение [[Scope]] для new Function [#scope-Function] - -Есть одно исключение из общего правила присвоения `[[Scope]]`, которое мы рассматривали в предыдущей главе. - -При создании функции с использованием `new Function`, её свойство `[[Scope]]` ссылается не на текущий `LexicalEnvironment`, а на `window`. - -## Пример - -Следующий пример демонстрирует как функция, созданная `new Function`, игнорирует внешнюю переменную `a` и выводит глобальную вместо неё: - -```js -//+ run untrusted refresh -var a = 1; - -function getFunc() { - var a = 2; - -*!* - var func = new Function('', 'alert(a)'); -*/!* - - return func; -} - -getFunc()(); // *!*1*/!*, из window -``` - -Сравним с обычным поведением: - -```js -//+ run untrusted refresh -var a = 1; - -function getFunc() { - var a = 2; - -*!* - var func = function() { alert(a); }; -*/!* - - return func; -} - -getFunc()(); // *!*2*/!*, из LexicalEnvironment функции getFunc -``` - - -## Почему так сделано? - -[warn header="Продвинутые знания"] -Содержимое этой секции содержит продвинутую информацию теоретического характера, которая прямо сейчас не обязательна для дальнейшего изучения JavaScript. -[/warn] - -Эта особенность `new Function`, хоть и выглядит странно, на самом деле весьма полезна. - -Представьте себе, что нам действительно нужно создать функцию из строки кода. Текст кода этой функции неизвестен на момент написания скрипта (иначе зачем `new Function`), но станет известен позже, например получен с сервера или из других источников данных. - -Предположим, что этому коду надо будет взаимодействовать с внешними переменными основного скрипта. - -Но проблема в том, что JavaScript при выкладывании на "боевой сервер" предварительно сжимается минификатором -- специальной программой, которая уменьшает размер кода, убирая из него лишние комментарии, пробелы, что очень важно -- переименовывает локальные переменные на более короткие. - -То есть, если внутри функции есть `var userName`, то минификатор заменит её на `var a` (или другую букву, чтобы не было конфликта), предполагая, что так как переменная видна только внутри функции, то этого всё равно никто не заметит, а код станет короче. И обычно проблем нет. - -...Но если бы `new Function` могла обращаться к внешним переменным, то при попытке доступа к `userName` в сжатом коде была бы ошибка, так как минификатор переименовал её. - -**Получается, что даже если бы мы захотели использовать локальные переменные в `new Function`, то после сжатия были бы проблемы, так как минификатор переименовывает локальные переменные.** - -Описанная особенность `new Function` просто-таки спасает нас от ошибок. - -Ну а если внутри функции, создаваемой через `new Function`, всё же нужно использовать какие-то данные -- без проблем, нужно всего лишь предусмотреть соответствующие параметры и передавать их явным образом, например так: - -```js -//+ run untrusted refresh no-beautify -*!* -var sum = new Function('a, b', ' return a + b; '); -*/!* - -var a = 1, b = 2; - -*!* -alert( sum(a, b) ); // 3 -*/!* -``` - -## Итого - -
      -
    • Функции, создаваемые через `new Function`, имеют значением `[[Scope]]` не внешний объект переменных, а `window`.
    • -
    • Следствие -- такие функции не могут использовать замыкание. Но это хорошо, так как бережёт от ошибок проектирования, да и при сжатии JavaScript проблем не будет. Если же внешние переменные реально нужны -- их можно передать в качестве параметров.
    • -
    diff --git a/1-js/5-functions-closures/4-closures-usage/1-closure-sum/solution.md b/1-js/5-functions-closures/4-closures-usage/1-closure-sum/solution.md deleted file mode 100644 index 2e28ae36..00000000 --- a/1-js/5-functions-closures/4-closures-usage/1-closure-sum/solution.md +++ /dev/null @@ -1,18 +0,0 @@ -Чтобы вторые скобки в вызове работали - первые должны возвращать функцию. - -Эта функция должна знать про `a` и уметь прибавлять `a` к `b`. Вот так: - -```js -//+ run -function sum(a) { - - return function(b) { - return a + b; // возьмет a из внешнего LexicalEnvironment - }; - -} - -alert( sum(1)(2) ); -alert( sum(5)(-1) ); -``` - diff --git a/1-js/5-functions-closures/4-closures-usage/1-closure-sum/task.md b/1-js/5-functions-closures/4-closures-usage/1-closure-sum/task.md deleted file mode 100644 index 5de93f5e..00000000 --- a/1-js/5-functions-closures/4-closures-usage/1-closure-sum/task.md +++ /dev/null @@ -1,13 +0,0 @@ -# Сумма через замыкание - -[importance 4] - -Напишите функцию `sum`, которая работает так: `sum(a)(b) = a+b`. - -Да, именно так, через двойные скобки (это не опечатка). Например: - -```js -sum(1)(2) = 3 -sum(5)(-1) = 4 -``` - diff --git a/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/_js.view/solution.js b/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/_js.view/solution.js deleted file mode 100644 index bda57778..00000000 --- a/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/_js.view/solution.js +++ /dev/null @@ -1,10 +0,0 @@ -function makeBuffer() { - var text = ''; - - return function(piece) { - if (arguments.length == 0) { // вызов без аргументов - return text; - } - text += piece; - }; -}; \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/_js.view/test.js b/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/_js.view/test.js deleted file mode 100644 index df3c04f9..00000000 --- a/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/_js.view/test.js +++ /dev/null @@ -1,21 +0,0 @@ -var buffer; -beforeEach(function() { - buffer = makeBuffer(); -}); - -it("возвращает пустую строку по умолчанию", function() { - assert.strictEqual(buffer(), ""); -}); - -it("добавляет аргументы в буффер", function() { - buffer('Замыкания'); - buffer(' Использовать'); - buffer(' Нужно!'); - assert.equal(buffer(), 'Замыкания Использовать Нужно!'); -}); - -it("приводит всё к строке", function() { - buffer(null); - buffer(false); - assert.equal(buffer(), "nullfalse"); -}); \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/solution.md b/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/solution.md deleted file mode 100644 index 5f946bfb..00000000 --- a/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/solution.md +++ /dev/null @@ -1,32 +0,0 @@ -Текущее значение текста удобно хранить в замыкании, в локальной переменной `makeBuffer`: - -```js -//+ run -function makeBuffer() { - var text = ''; - - return function(piece) { - if (arguments.length == 0) { // вызов без аргументов - return text; - } - text += piece; - }; -}; - -var buffer = makeBuffer(); - -// добавить значения к буферу -buffer('Замыкания'); -buffer(' Использовать'); -buffer(' Нужно!'); -alert( buffer() ); // 'Замыкания Использовать Нужно!' - -var buffer2 = makeBuffer(); -buffer2(0); -buffer2(1); -buffer2(0); - -alert( buffer2() ); // '010' -``` - -Начальное значение `text = ''` -- пустая строка. Поэтому операция `text += piece` прибавляет `piece` к строке, автоматически преобразуя его к строковому типу, как и требовалось в условии. diff --git a/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/task.md b/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/task.md deleted file mode 100644 index 9f28b7cd..00000000 --- a/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/task.md +++ /dev/null @@ -1,45 +0,0 @@ -# Функция - строковый буфер - -[importance 5] - -В некоторых языках программирования существует объект "строковый буфер", который аккумулирует внутри себя значения. Его функционал состоит из двух возможностей: -
      -
    1. Добавить значение в буфер.
    2. -
    3. Получить текущее содержимое.
    4. -
    - -**Задача -- реализовать строковый буфер на функциях в JavaScript, со следующим синтаксисом:** - -
      -
    • Создание объекта: `var buffer = makeBuffer();`.
    • -
    • Вызов `makeBuffer` должен возвращать такую функцию `buffer`, которая при вызове `buffer(value)` добавляет значение в некоторое внутреннее хранилище, а при вызове без аргументов `buffer()` -- возвращает его.
    • -
    - -Вот пример работы: - -```js -function makeBuffer() { /* ваш код */ } - -var buffer = makeBuffer(); - -// добавить значения к буферу -buffer('Замыкания'); -buffer(' Использовать'); -buffer(' Нужно!'); - -// получить текущее значение -alert( buffer() ); // Замыкания Использовать Нужно! -``` - -Буфер должен преобразовывать все данные к строковому типу: - -```js -var buffer = makeBuffer(); -buffer(0); -buffer(1); -buffer(0); - -alert( buffer() ); // '010' -``` - -Решение не должно использовать глобальные переменные. diff --git a/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/_js.view/solution.js b/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/_js.view/solution.js deleted file mode 100644 index b7fbc6f6..00000000 --- a/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/_js.view/solution.js +++ /dev/null @@ -1,16 +0,0 @@ -function makeBuffer() { - var text = ''; - - function buffer(piece) { - if (arguments.length == 0) { // вызов без аргументов - return text; - } - text += piece; - }; - - buffer.clear = function() { - text = ""; - } - - return buffer; -}; \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/_js.view/test.js b/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/_js.view/test.js deleted file mode 100644 index 0543cc90..00000000 --- a/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/_js.view/test.js +++ /dev/null @@ -1,30 +0,0 @@ -var buffer; - -beforeEach(function() { - buffer = makeBuffer(); -}); - -it("возвращает пустую строку по умолчанию", function() { - assert.strictEqual(buffer(), ""); -}); - -it("добавляет аргументы в буффер", function() { - buffer('Замыкания'); - buffer(' Использовать'); - buffer(' Нужно!'); - assert.equal(buffer(), 'Замыкания Использовать Нужно!'); -}); - -it("приводит всё к строке", function() { - buffer(null); - buffer(false); - assert.equal(buffer(), "nullfalse"); -}); - -it("очищает буфер вызовом clear", function() { - buffer("test"); - buffer.clear(); - buffer("первый"); - buffer("второй"); - assert.equal(buffer(), "первыйвторой"); -}); \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/solution.md b/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/solution.md deleted file mode 100644 index c4c45809..00000000 --- a/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/solution.md +++ /dev/null @@ -1,34 +0,0 @@ - - -```js -//+ run -function makeBuffer() { - var text = ''; - - function buffer(piece) { - if (arguments.length == 0) { // вызов без аргументов - return text; - } - text += piece; - }; - - buffer.clear = function() { - text = ""; - } - - return buffer; -}; - -var buffer = makeBuffer(); - -buffer("Тест"); -buffer(" тебя не съест "); -alert( buffer() ); // Тест тебя не съест - -*!* -buffer.clear(); -*/!* - -alert( buffer() ); // "" -``` - diff --git a/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/task.md b/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/task.md deleted file mode 100644 index 319af876..00000000 --- a/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/task.md +++ /dev/null @@ -1,24 +0,0 @@ -# Строковый буфер с очисткой - -[importance 5] - -Добавьте буферу из решения задачи [](/task/stringbuffer) метод `buffer.clear()`, который будет очищать текущее содержимое буфера: - -```js -function makeBuffer() { - ...ваш код... -} - -var buffer = makeBuffer(); - -buffer("Тест"); -buffer(" тебя не съест "); -alert( buffer() ); // Тест тебя не съест - -*!* -buffer.clear(); -*/!* - -alert( buffer() ); // "" -``` - diff --git a/1-js/5-functions-closures/4-closures-usage/4-sort-by-field/solution.md b/1-js/5-functions-closures/4-closures-usage/4-sort-by-field/solution.md deleted file mode 100644 index 43ded8f9..00000000 --- a/1-js/5-functions-closures/4-closures-usage/4-sort-by-field/solution.md +++ /dev/null @@ -1,37 +0,0 @@ - - -```js -//+ run -var users = [{ - name: "Вася", - surname: 'Иванов', - age: 20 -}, { - name: "Петя", - surname: 'Чапаев', - age: 25 -}, { - name: "Маша", - surname: 'Медведева', - age: 18 -}]; - -*!* -function byField(field) { - return function(a, b) { - return a[field] > b[field] ? 1 : -1; - } - } -*/!* - -users.sort(byField('name')); -users.forEach(function(user) { - alert( user.name ); -}); - -users.sort(byField('age')); -users.forEach(function(user) { - alert( user.name ); -}); -``` - diff --git a/1-js/5-functions-closures/4-closures-usage/4-sort-by-field/task.md b/1-js/5-functions-closures/4-closures-usage/4-sort-by-field/task.md deleted file mode 100644 index 36701c23..00000000 --- a/1-js/5-functions-closures/4-closures-usage/4-sort-by-field/task.md +++ /dev/null @@ -1,53 +0,0 @@ -# Сортировка - -[importance 5] - -У нас есть массив объектов: - -```js -var users = [{ - name: "Вася", - surname: 'Иванов', - age: 20 -}, { - name: "Петя", - surname: 'Чапаев', - age: 25 -}, { - name: "Маша", - surname: 'Медведева', - age: 18 -}]; -``` - -Обычно сортировка по нужному полю происходит так: - -```js -// по полю name (Вася, Маша, Петя) -users.sort(function(a, b) { - return a.name > b.name ? 1 : -1; -}); - -// по полю age (Маша, Вася, Петя) -users.sort(function(a, b) { - return a.age > b.age ? 1 : -1; -}); -``` - -Мы хотели бы упростить синтаксис до одной строки, вот так: - -```js -users.sort(byField('name')); -users.forEach(function(user) { - alert( user.name ); -}); // Вася, Маша, Петя - -users.sort(byField('age')); -users.forEach(function(user) { - alert( user.name ); -}); // Маша, Вася, Петя -``` - -То есть, вместо того, чтобы каждый раз писать в `sort` `function...` -- будем использовать `byField(...)` - -Напишите функцию `byField(field)`, которую можно использовать в `sort` для сравнения объектов по полю `field`, чтобы пример выше заработал. diff --git a/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/solution.js b/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/solution.js deleted file mode 100644 index 90cf2689..00000000 --- a/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/solution.js +++ /dev/null @@ -1,24 +0,0 @@ -function filter(arr, func) { - var result = []; - - for (var i = 0; i < arr.length; i++) { - var val = arr[i]; - if (func(val)) { - result.push(val); - } - } - - return result; -} - -function inArray(arr) { - return function(x) { - return arr.indexOf(x) != -1; - }; -} - -function inBetween(a, b) { - return function(x) { - return x >= a && x <= b; - }; -} \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/source.js b/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/source.js deleted file mode 100644 index e512f26c..00000000 --- a/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/source.js +++ /dev/null @@ -1,11 +0,0 @@ -function filter(arr, fuc) { - // ...ваш код... -} - -function inBetween(a, b) { - // ...ваш код... -} - -function inArray(arr) { - // ...ваш код... -} \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/test.js b/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/test.js deleted file mode 100644 index f03fb743..00000000 --- a/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/test.js +++ /dev/null @@ -1,58 +0,0 @@ -var arr; - -before(function() { - arr = [1, 2, 3, 4, 5, 6, 7]; -}); - -describe("inArray", function() { - var checkInArr; - - before(function() { - checkInArr = inArray(arr); - }); - - it("возвращает фильтр для значений в массиве", function() { - assert.isTrue(checkInArr(5)); - assert.isFalse(checkInArr(0)); - }); -}); - - -describe("inBetween", function() { - var checkBetween36; - - before(function() { - checkBetween36 = inBetween(3, 6); - }); - - it("возвращает фильтрa для значений в промежутке", function() { - assert.isTrue(checkBetween36(5)); - assert.isFalse(checkBetween36(0)); - }); -}); - - -describe("filter", function() { - - it("фильтрует через func", function() { - assert.deepEqual(filter(arr, function(a) { - return a % 2 == 0; - }), [2, 4, 6]); - }); - - it("не модифицирует исходный массив", function() { - filter(arr, function(a) { - return a % 2 == 0; - }); - assert.deepEqual(arr, [1, 2, 3, 4, 5, 6, 7]); - }); - - it("поддерживает фильтр inBetween", function() { - assert.deepEqual(filter(arr, inBetween(3, 6)), [3, 4, 5, 6]); - }); - - it("поддерживает фильтр inArray", function() { - assert.deepEqual(filter(arr, inArray([1, 2, 3])), [1, 2, 3]); - }); - -}); \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/solution.md b/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/solution.md deleted file mode 100644 index 114fdd5f..00000000 --- a/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/solution.md +++ /dev/null @@ -1,82 +0,0 @@ -# Функция фильтрации - -```js -//+ run -function filter(arr, func) { - var result = []; - - for (var i = 0; i < arr.length; i++) { - var val = arr[i]; - if (func(val)) { - result.push(val); - } - } - - return result; -} - -var arr = [1, 2, 3, 4, 5, 6, 7]; - -alert(filter(arr, function(a) { - return a % 2 == 0; -})); // 2, 4, 6 -``` - -# Фильтр inBetween - -```js -//+ run -function filter(arr, func) { - var result = []; - - for (var i = 0; i < arr.length; i++) { - var val = arr[i]; - if (func(val)) { - result.push(val); - } - } - - return result; -} - -*!* -function inBetween(a, b) { - return function(x) { - return x >= a && x <= b; - }; - } -*/!* - -var arr = [1, 2, 3, 4, 5, 6, 7]; -alert( filter(arr, inBetween(3, 6)) ); // 3,4,5,6 -``` - -# Фильтр inArray - -```js -//+ run -function filter(arr, func) { - var result = []; - - for (var i = 0; i < arr.length; i++) { - var val = arr[i]; - if (func(val)) { - result.push(val); - } - } - - return result; -} - -*!* -function inArray(arr) { - return function(x) { - return arr.indexOf(x) != -1; - }; - } -*/!* - -var arr = [1, 2, 3, 4, 5, 6, 7]; -alert( filter(arr, inArray([1, 2, 10])) ); // 1,2 -``` - diff --git a/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/task.md b/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/task.md deleted file mode 100644 index 7ee691b5..00000000 --- a/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/task.md +++ /dev/null @@ -1,29 +0,0 @@ -# Фильтрация через функцию - -[importance 5] - -
      -
    1. Создайте функцию `filter(arr, func)`, которая получает массив `arr` и возвращает новый, в который входят только те элементы `arr`, для которых `func` возвращает `true`.
    2. -
    3. Создайте набор "готовых фильтров": `inBetween(a,b)` -- "между a,b", `inArray([...])` -- "в массиве `[...]`". -Использование должно быть таким: -
        -
      • `filter(arr, inBetween(3,6))` -- выберет только числа от 3 до 6,
      • -
      • `filter(arr, inArray([1,2,3]))` -- выберет только элементы, совпадающие с одним из значений массива.
      • -
      -
    4. -
    -Пример, как это должно работать: - -```js -/* .. ваш код для filter, inBetween, inArray */ -var arr = [1, 2, 3, 4, 5, 6, 7]; - -alert(filter(arr, function(a) { - return a % 2 == 0 -})); // 2,4,6 - -alert( filter(arr, inBetween(3, 6)) ); // 3,4,5,6 - -alert( filter(arr, inArray([1, 2, 10])) ); // 1,2 -``` - diff --git a/1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/solution.js b/1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/solution.js deleted file mode 100644 index 2455c301..00000000 --- a/1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/solution.js +++ /dev/null @@ -1,19 +0,0 @@ -function makeArmy() { - - var shooters = []; - - for (var i = 0; i < 10; i++) { - - var shooter = (function(x) { - - return function() { - alert(x); - }; - - })(i); - - shooters.push(shooter); - } - - return shooters; -} \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/source.js b/1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/source.js deleted file mode 100644 index f9058674..00000000 --- a/1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/source.js +++ /dev/null @@ -1,13 +0,0 @@ -function makeArmy() { - - var shooters = []; - - for (var i = 0; i < 10; i++) { - var shooter = function() { // функция-стрелок - alert(i); // выводит свой номер - }; - shooters.push(shooter); - } - - return shooters; -} \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/test.js b/1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/test.js deleted file mode 100644 index fdfabf66..00000000 --- a/1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/test.js +++ /dev/null @@ -1,20 +0,0 @@ -var army; -before(function() { - army = makeArmy(); - window.alert = sinon.stub(window, "alert"); -}); - -it("army[0] выводит 0", function() { - army[0](); - assert(alert.calledWith(0)); -}); - - -it("army[5] функция выводит 5", function() { - army[5](); - assert(alert.calledWith(5)); -}); - -after(function() { - window.alert.restore(); -}); \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/6-make-army/solution.md b/1-js/5-functions-closures/4-closures-usage/6-make-army/solution.md deleted file mode 100644 index 5628e800..00000000 --- a/1-js/5-functions-closures/4-closures-usage/6-make-army/solution.md +++ /dev/null @@ -1,218 +0,0 @@ -# Что происходит в этом коде - -Функция `makeArmy` делает следующее: -
      -
    1. Создаёт пустой массив `shooter`: - -```js -var shooters = []; -``` - -
    2. -
    3. В цикле заполняет массив элементами через `shooter.push`. -При этом каждый элемент массива -- это функция, так что в итоге после цикла массив будет таким: - -```js -//+ no-beautify -shooters = [ - function () { alert(i); }, - function () { alert(i); }, - function () { alert(i); }, - function () { alert(i); }, - function () { alert(i); }, - function () { alert(i); }, - function () { alert(i); }, - function () { alert(i); }, - function () { alert(i); }, - function () { alert(i); } -]; -``` - -Этот массив возвращается из функции. -
    4. -
    5. Вызов `army[5]()` -- это получение элемента массива (им будет функция), и тут же -- её запуск.
    6. -
    - -# Почему ошибка - -Вначале разберемся, почему все стрелки выводят одно и то же значение. - -В функциях-стрелках `shooter` отсутствует переменная `i`. Когда такая функция вызывается, то `i` она берет из внешнего `LexicalEnvironment`. - -Чему же будет равно это значение `i`? - -К моменту вызова `army[0]()`, функция `makeArmy` уже закончила работу. Цикл завершился, последнее значение было `i=10`. - -В результате все функции `shooter` получают из внешнего лексического кружения это, одно и то же, последнее, значение `i=10`. - -Попробуйте исправить проблему самостоятельно. - -# Исправление (3 варианта) - -Есть несколько способов исправить ситуацию. - -
      -
    1. **Первый способ исправить код - это привязать значение непосредственно к функции-стрелку:** - -```js -//+ run -function makeArmy() { - - var shooters = []; - - for (var i = 0; i < 10; i++) { - -*!* - var shooter = function me() { - alert( me.i ); - }; - shooter.i = i; -*/!* - - shooters.push(shooter); - } - - return shooters; -} - -var army = makeArmy(); - -army[0](); // 0 -army[1](); // 1 -``` - -В этом случае каждая функция хранит в себе свой собственный номер. - -Кстати, обратите внимание на использование Named Function Expression, вот в этом участке: - -```js -... -var shooter = function me() { - alert( me.i ); -}; -... -``` - -Если убрать имя `me` и оставить обращение через `shooter`, то работать не будет: - -```js -for (var i = 0; i < 10; i++) { - var shooter = function() { -*!* - alert( shooter.i ); // вывести свой номер (не работает!) - // потому что откуда функция возьмёт переменную shooter? - // ..правильно, из внешнего объекта, а там она одна на всех -*/!* - }; - shooter.i = i; - shooters.push(shooter); -} -``` - -Вызов `alert(shooter.i)` при вызове будет искать переменную `shooter`, а эта переменная меняет значение по ходу цикла, и к моменту вызову она равна последней функции, созданной в цикле. - -Если использовать Named Function Expression, то имя жёстко привязывается к конкретной функции, и поэтому в коде выше `me.i` возвращает правильный `i`. - -
    2. -
    3. **Другое, более продвинутое решение -- использовать дополнительную функцию для того, чтобы "поймать" текущее значение `i`**: - -```js -//+ run -function makeArmy() { - - var shooters = []; - - for (var i = 0; i < 10; i++) { - -*!* - var shooter = (function(x) { - - return function() { - alert( x ); - }; - - })(i); -*/!* - - shooters.push(shooter); - } - - return shooters; -} - -var army = makeArmy(); - -army[0](); // 0 -army[1](); // 1 -``` - -Посмотрим выделенный фрагмент более внимательно, чтобы понять, что происходит: - -```js -var shooter = (function(x) { - return function() { - alert( x ); - }; -})(i); -``` - -Функция `shooter` создана как результат вызова промежуточного функционального выражения `function(x)`, которое объявляется -- и тут же выполняется, получая `x = i`. - -Так как `function(x)` тут же завершается, то значение `x` больше не меняется. Оно и будет использовано в возвращаемой функции-стрелке. - -Для красоты можно изменить название переменной `x` на `i`, суть происходящего при этом не изменится: - -```js -var shooter = (function(i) { - return function() { - alert( i ); - }; -})(i); -``` - -**Кстати, обратите внимание -- скобки вокруг `function(i)` не нужны**, можно и так: - -```js -var shooter = function(i) { // *!*без скобок вокруг function(i)*/!* - return function() { - alert( i ); - }; -}(i); -``` - -Скобки добавлены в код для лучшей читаемости, чтобы человек, который просматривает его, не подумал, что `var shooter = function`, а понял что это вызов "на месте", и присваивается его результат. -
    4. -
    5. **Еще один забавный способ - обернуть весь цикл во временную функцию**: - -```js -//+ run -function makeArmy() { - - var shooters = []; - -*!* - for (var i = 0; i < 10; i++)(function(i) { - - var shooter = function() { - alert( i ); - }; - - shooters.push(shooter); - - })(i); -*/!* - - return shooters; -} - -var army = makeArmy(); - -army[0](); // 0 -army[1](); // 1 -``` - -Вызов `(function(i) { ... })` обернут в скобки, чтобы интерпретатор понял, что это `Function Expression`. - -Плюс этого способа - в большей читаемости. Фактически, мы не меняем создание `shooter`, а просто обертываем итерацию в функцию. -
    6. -
    \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/6-make-army/task.md b/1-js/5-functions-closures/4-closures-usage/6-make-army/task.md deleted file mode 100644 index 15e0d2ae..00000000 --- a/1-js/5-functions-closures/4-closures-usage/6-make-army/task.md +++ /dev/null @@ -1,31 +0,0 @@ -# Армия функций - -[importance 5] - -Следующий код создает массив функций-стрелков `shooters`. По замыслу, каждый стрелок должен выводить свой номер: - -```js -//+ run -function makeArmy() { - - var shooters = []; - - for (var i = 0; i < 10; i++) { - var shooter = function() { // функция-стрелок - alert( i ); // выводит свой номер - }; - shooters.push(shooter); - } - - return shooters; -} - -var army = makeArmy(); - -army[0](); // стрелок выводит 10, а должен 0 -army[5](); // стрелок выводит 10... -// .. все стрелки выводят 10 вместо 0,1,2...9 -``` - -Почему все стрелки́ выводят одно и то же? Поправьте код, чтобы стрелки работали как задумано. Предложите несколько вариантов исправления. - diff --git a/1-js/5-functions-closures/4-closures-usage/article.md b/1-js/5-functions-closures/4-closures-usage/article.md deleted file mode 100644 index 0fa5da2c..00000000 --- a/1-js/5-functions-closures/4-closures-usage/article.md +++ /dev/null @@ -1,125 +0,0 @@ -# Локальные переменные для объекта - -Замыкания можно использовать сотнями способов. Иногда люди сами не замечают, что использовали замыкания -- настолько это просто и естественно. - -В этой главе мы рассмотрим дополнительные примеры использования замыканий и задачи на эту тему. - -[cut] - -## Счётчик-объект - -Ранее мы сделали счётчик. - -Напомню, как он выглядел: - -```js -//+ run -function makeCounter() { - var currentCount = 1; - - return function() { - return currentCount++; - }; -} - -var counter = makeCounter(); - -// каждый вызов возвращает результат, увеличивая счётчик -alert( counter() ); // 1 -alert( counter() ); // 2 -alert( counter() ); // 3 -``` - -Счётчик получился вполне рабочий, но вот только возможностей ему не хватает. Хорошо бы, чтобы можно было сбрасывать значение счётчика или начинать отсчёт с другого значения вместо `1` или... Да много чего можно захотеть от простого счётчика и, тем более, в более сложных проектах. - -**Чтобы добавить счётчику возможностей -- перейдём с функции на полноценный объект:** - -```js -//+ run -function makeCounter() { - var currentCount = 1; - - return { // возвратим объект вместо функции - getNext: function() { - return currentCount++; - }, - - set: function(value) { - currentCount = value; - }, - - reset: function() { - currentCount = 1; - } - }; -} - -var counter = makeCounter(); - -alert( counter.getNext() ); // 1 -alert( counter.getNext() ); // 2 - -counter.set(5); -alert( counter.getNext() ); // 5 -``` - -Теперь функция `makeCounter` возвращает не одну функцию, а объект с несколькими методами: - -
      -
    • `getNext()` -- получить следующее значение, то, что раньше делал вызов `counter()`.
    • -
    • `set(value)` -- поставить значение.
    • -
    • `reset()` -- обнулить счётчик.
    • -
    - -Все они получают ссылку `[[Scope]]` на текущий (внешний) объект переменных. Поэтому вызов любого из этих методов будет получать или модифицировать одно и то же внешнее значение `currentCount`. - -## Объект счётчика + функция - -Изначально, счётчик делался функцией во многом ради красивого вызова: `counter()`, который увеличивал значение и возвращал результат. - -К сожалению, при переходе на объект короткий вызов пропал, вместо него теперь `counter.getNext()`. Но он ведь был таким простым и удобным... - -Поэтому давайте вернём его! - -```js -//+ run -function makeCounter() { - var currentCount = 1; - -*!* - // возвращаемся к функции - function counter() { - return currentCount++; - } -*/!* - - // ...и добавляем ей методы! - counter.set = function(value) { - currentCount = value; - }; - - counter.reset = function() { - currentCount = 0; - }; - - return counter; -} - -var counter = makeCounter(); - -*!* -alert( counter() ); // 1 -alert( counter() ); // 2 - -counter.set(5); -alert( counter() ); // 5 -*/!* -``` - -Красиво, не правда ли? Получился полноценный объект, который можно вдобавок ещё и вызывать. - -Этот трюк часто используется при разработке JavaScript-библиотек. Например, популярная библиотека [jQuery](http://jquery.com) предоставляет глобальную переменную с именем [jQuery](http://api.jquery.com/jQuery/) (доступна также под коротким именем `$`), которая с одной стороны является функцией и может вызываться как `jQuery(...)`, а с другой -- у неё есть различные методы, например `jQuery.type(123)` возвращает тип аргумента. - -Далее вы найдёте различные задачи на понимание замыканий. Рекомендуется их сделать самостоятельно. - - diff --git a/1-js/5-functions-closures/5-closures-module/article.md b/1-js/5-functions-closures/5-closures-module/article.md deleted file mode 100644 index 384a86fb..00000000 --- a/1-js/5-functions-closures/5-closures-module/article.md +++ /dev/null @@ -1,322 +0,0 @@ -# Модули через замыкания - -Приём программирования "модуль" имеет громадное количество вариаций. Он немного похож на счётчик, который мы рассматривали ранее, использует аналогичный приём, но на уровне выше. - -Его цель -- скрыть внутренние детали реализации скрипта. В том числе: временные переменные, константы, вспомогательные мини-функции и т.п. - -## Зачем нужен модуль? - -Допустим, мы хотим разработать скрипт, который делает что-то полезное на странице. - -Умея работать со страницей, мы могли бы сделать много чего, но так как пока этого не было (скоро научимся), то пусть скрипт просто выводит сообщение: - -Файл `hello.js` - -```js -//+ run -// глобальная переменная нашего скрипта -var message = "Привет"; - -// функция для вывода этой переменной -function showMessage() { - alert( message ); -} - -// выводим сообщение -showMessage(); -``` - -У этого скрипта есть свои внутренние переменные и функции. - -В данном случае это `message` и `showMessage`. - -Предположим, что мы хотели бы распространять этот скрипт в виде библиотеки. Каждый, кто хочет, чтобы посетителям выдавалось "Привет" -- может просто подключить этот скрипт. Достаточно скачать и подключить, например, как внешний файл `hello.js` -- и готово. - -**Если подключить подобный скрипт к странице "как есть", то возможен конфликт с переменными, которые она использует.** - -То есть, при подключении к такой странице он её "сломает": - -```html - - - - - -``` - -[edit src="hello-conflict"/] - -Автор страницы ожидает, что библиотека `"hello.js"` просто отработает, без побочных эффектов. А она вместе с этим переопределила `message` в `"Привет"`. - -Если же убрать скрипт `hello.js`, то страница будет выводить правильное сообщение. - -Зная внутреннее устройство `hello.js` нам, конечно, понятно, что проблема возникла потому, что переменная `message` из скрипта `hello.js` перезаписала объявленную на странице. - -## Приём проектирования "Модуль" - -Чтобы проблемы не было, всего-то нужно, чтобы у скрипта была *своя собственная область видимости*, чтобы его переменные не попали на страницу. - -Для этого мы завернём всё его содержимое в функцию, которую тут же запустим. - -Файл `hello.js`, оформленный как модуль: - -```js -//+ run -(function() { - - // глобальная переменная нашего скрипта - var message = "Привет"; - - // функция для вывода этой переменной - function showMessage() { - alert( message ); - } - - // выводим сообщение - showMessage(); - -})(); -``` - -[edit src="hello-module"/] - -Этот скрипт при подключении к той же странице будет работать корректно. - -Будет выводиться "Привет", а затем "Пожалуйста, нажмите на кнопку". - - -### Зачем скобки вокруг функции? - -В примере выше объявление модуля выглядит так: - -```js -//+ run -(function() { - - alert( "объявляем локальные переменные, функции, работаем" ); - // ... - -}()); -``` - -В начале и в конце стоят скобки, так как иначе была бы ошибка. - -Вот, для сравнения, неверный вариант: - -```js -//+ run -function() { - // будет ошибка -}(); -``` - -Ошибка при его запуске произойдет потому, что браузер, видя ключевое слово `function` в основном потоке кода, попытается прочитать `Function Declaration`, а здесь имени нет. - -Впрочем, даже если имя поставить, то работать тоже не будет: - -```js -//+ run -function work() { - // ... -}(); // syntax error -``` - -**Дело в том, что "на месте" разрешено вызывать *только* `Function Expression`.** - -Общее правило таково: - -
      -
    • Если браузер видит `function` в основном потоке кода -- он считает, что это `Function Declaration`.
    • -
    • Если же `function` идёт в составе более сложного выражения, то он считает, что это `Function Expression`.
    • -
    - -Для этого и нужны скобки -- показать, что у нас `Function Expression`, который по правилам JavaScript можно вызвать "на месте". - -Можно показать это другим способом, например поставив перед функцией оператор: - -```js -//+ run no-beautify -+function() { - alert('Вызов на месте'); -}(); - -!function() { - alert('Так тоже будет работать'); -}(); -``` - -## Экспорт значения - -Приём "модуль" используется почти во всех современных библиотеках. - -Ведь что такое библиотека? Это полезные функции, ради которых её подключают, плюс временные переменные и вспомогательные функции, которые библиотека использует внутри себя. - -Посмотрим, к примеру, на библиотеку [Lodash](http://lodash.com/), хотя могли бы и [jQuery](http://jquery.com/), там почти то же самое. - -Если её подключить, то появится специальная переменная `lodash` (короткое имя `_`), которую можно использовать как функцию, и кроме того в неё записаны различные полезных свойства, например: - -
      -
    • `_.defaults(src, dst1, dst2...)` -- копирует в объект `src` те свойства из объектов `dst1`, `dst2` и других, которых там нет.
    • -
    • `_.cloneDeep(obj)` -- делает глубокое копирование объекта `obj`, создавая полностью независимый клон.
    • -
    • `_.size(obj)` -- возвращает количество свойств в объекте, полиморфная функция: можно передать массив или даже 1 значение.
    • -
    - - -Есть и много других функций, подробнее описанных в [документации](https://lodash.com/docs). - -Пример использования: - -```html - -

    Подключим библиотеку

    - - -

    Функция _.defaults() добавляет отсутствующие свойства.

    - -``` - - -Здесь нам не важно, какие, нас интересует именно как описана эта библиотека, как в ней применяется приём "модуль". - -Вот примерная выдержка из исходного файла: - -```js -//+ run no-beautify -;(function() { - -*!* - // lodash - основная функция для библиотеки -*/!* - function lodash(value) { - // ... - } - -*!* - // вспомогательная переменная -*/!* - var version = '2.4.1'; - // ... другие вспомогательные переменные и функции - -*!* - // код функции size, пока что доступен только внутри -*/!* - function size(collection) { - return Object.keys(collection).length; - } - -*!* - // присвоим в lodash size и другие функции, которые нужно вынести из модуля -*/!* - lodash.size = size - // lodash.defaults = ... - // lodash.cloneDeep = ... - -*!* - // "экспортировать" lodash наружу из модуля -*/!* - window._ = lodash; // в оригинальном коде здесь сложнее, но смысл тот же - -}()); -``` - -Внутри внешней функции: -
      -
    1. Происходит что угодно, объявляются свои локальные переменные, функции.
    2. -
    3. В `window` выносится то, что нужно снаружи.
    4. -
    - -Технически, мы могли бы вынести в `window` не только `lodash`, но и вообще все объекты и функции. На практике, как раз наоборот, всё прячут внутри модуля, глобальную область во избежание конфликтов хранят максимально чистой. - -[smart header="Зачем точка с запятой в начале?"] -В начале кода выше находится точка с запятой `;` -- это не опечатка, а особая "защита от дураков". - -Если получится, что несколько JS-файлы объединены в один (и, скорее всего, сжаты минификатором, но это не важно), и программист забыл поставить точку с запятой, то будет ошибка. - -Например, первый файл `a.js`: -```js -var a = 5 -``` - -Второй файл `lib.js`: -```js -//+ no-beautify -(function() { - // без точки с запятой в начале -})() -``` - -После объединения в один файл: - -```js -//+ run no-beautify -*!* -var a = 5 -*/!* - -// библиотека -(function() { - // ... -})(); -``` - -При запуске будет ошибка, потому что интерпретатор перед скобкой сам не вставит точку с запятой. Он просто поймёт код как `var a = 5(function ...)`, то есть пытается вызвать число `5` как функцию. - -Таковы правила языка, и поэтому рекомендуется явно ставить точку с запятой. В данном случае автор lodash ставит `;` перед функцией, чтобы предупредить эту ошибку. -[/smart] - - -## Экспорт через return - -Можно оформить модуль и чуть по-другому, например передать значение через `return`: - -```js -//+ no-beautify -var lodash = (function() { - - var version; - function assignDefaults() { ... } - - return { - defaults: function() { } - } - -})(); -``` - -Здесь, кстати, скобки вокруг внешней `function() { ... }` не обязательны, ведь функция и так объявлена внутри выражения присваивания, а значит -- является Function Expression. - -Тем не менее, лучше их ставить, для улучшения читаемости кода, чтобы было сразу видно, что это не простое присвоение функции. - -## Итого - -Модуль при помощи замыканий -- это оборачивание пакета функционала в единую внешнюю функцию, которая тут же выполняется. - -Все функции модуля будут иметь доступ к другим переменным и внутренним функциям этого же модуля через замыкание. - -Например, `defaults` из примера выше имеет доступ к `assignDefaults`. - -Но снаружи программист, использующий модуль, может обращаться напрямую только к тем, которые экспортированы. Благодаря этому будут скрыты внутренние аспекты реализации, которые нужны только разработчику модуля. - -Можно придумать и много других вариаций такого подхода. В конце концов, "модуль" -- это всего лишь функция-обёртка для скрытия переменных. - - diff --git a/1-js/5-functions-closures/5-closures-module/hello-conflict.view/hello.js b/1-js/5-functions-closures/5-closures-module/hello-conflict.view/hello.js deleted file mode 100755 index 56fa804b..00000000 --- a/1-js/5-functions-closures/5-closures-module/hello-conflict.view/hello.js +++ /dev/null @@ -1,10 +0,0 @@ -// глобальная переменная нашего скрипта -var message = "Привет"; - -// функция для вывода этой переменной -function showMessage() { - alert(message); -} - -// выводим сообщение -showMessage(); \ No newline at end of file diff --git a/1-js/5-functions-closures/5-closures-module/hello-conflict.view/index.html b/1-js/5-functions-closures/5-closures-module/hello-conflict.view/index.html deleted file mode 100755 index ab1ef1e2..00000000 --- a/1-js/5-functions-closures/5-closures-module/hello-conflict.view/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/5-functions-closures/5-closures-module/hello-module.view/hello.js b/1-js/5-functions-closures/5-closures-module/hello-module.view/hello.js deleted file mode 100755 index be40a230..00000000 --- a/1-js/5-functions-closures/5-closures-module/hello-module.view/hello.js +++ /dev/null @@ -1,14 +0,0 @@ -(function() { - - // глобальная переменная нашего скрипта - var message = "Привет"; - - // функция для вывода этой переменной - function showMessage() { - alert(message); - } - - // выводим сообщение - showMessage(); - -})(); \ No newline at end of file diff --git a/1-js/5-functions-closures/5-closures-module/hello-module.view/index.html b/1-js/5-functions-closures/5-closures-module/hello-module.view/index.html deleted file mode 100755 index ab1ef1e2..00000000 --- a/1-js/5-functions-closures/5-closures-module/hello-module.view/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/5-functions-closures/6-memory-management/article.md b/1-js/5-functions-closures/6-memory-management/article.md deleted file mode 100644 index 0a8c2b36..00000000 --- a/1-js/5-functions-closures/6-memory-management/article.md +++ /dev/null @@ -1,326 +0,0 @@ -# Управление памятью в JavaScript - -Управление памятью в JavaScript обычно происходит незаметно. Мы создаём примитивы, объекты, функции... Всё это занимает память. - -Что происходит с объектом, когда он становится "не нужен"? Возможно ли "переполнение" памяти? Для ответа на эти вопросы -- залезем "под капот" интерпретатора. - -[cut] -## Управление памятью в JavaScript - -Главной концепцией управления памятью в JavaScript является принцип *достижимости* (англ. reachability). - -
      -
    1. Определённое множество значений считается достижимым изначально, в частности: -
        -
      • Значения, ссылки на которые содержатся в стеке вызова, то есть -- все локальные переменные и параметры функций, которые в настоящий момент выполняются или находятся в ожидании окончания вложенного вызова.
      • -
      • Все глобальные переменные.
      • -
      - -Эти значения гарантированно хранятся в памяти. Мы будем называть их *корнями*. -
    2. -
    3. **Любое другое значение сохраняется в памяти лишь до тех пор, пока доступно из корня по ссылке или цепочке ссылок.**
    4. -
    - -Для очистки памяти от недостижимых значений в браузерах используется автоматический Сборщик мусора (англ. Garbage collection, GC), встроенный в интерпретатор, который наблюдает за объектами и время от времени удаляет недостижимые. - -Самая простая ситуация здесь с примитивами. При присвоении они копируются целиком, ссылок на них не создаётся, так что если в переменной была одна строка, а её заменили на другую, то предыдущую можно смело выбросить. - -Именно объекты требуют специального "сборщика мусора", который наблюдает за ссылками, так как на один объект может быть много ссылок из разных переменных и, при перезаписи одной из них, объект может быть всё ещё доступен из другой. - -Далее мы посмотрим ряд примеров, которые помогут в этом разобраться. - -### Достижимость и наличие ссылок - -Есть одно упрощение для работы с памятью: "значение остаётся в памяти, пока на него есть ссылка". - -Но такое упрощение будет верным лишь в одну сторону. - -
      -
    • **Верно -- в том плане, что если ссылок на значение нет, то память из-под него очищается.** - -Например, была создана ссылка в переменной, и эту переменную тут же перезаписали: - -```js -var user = { - name: "Вася" -}; -user = null; -``` - -Теперь объект `{ name: "Вася" }` более недоступен. Память будет освобождена. -
    • -
    • **Неверно -- в другую сторону: наличие ссылки не гарантирует, что значение останется в памяти.** - -Такая ситуация возникает с объектами, которые ссылаются друг на друга: - -```js -var vasya = {}; -var petya = {}; -vasya.friend = petya; -petya.friend = vasya; - -vasya = petya = null; -``` - -Несмотря на то, что на объекты `vasya`, `petya` ссылаются друг на друга через ссылку `friend`, то есть можно сказать, что на каждый из них есть ссылка, последняя строка делает эти объекты в совокупности недостижимыми. - -Поэтому они будут удалены из памяти. - -Здесь как раз и играет роль "достижимость" -- оба этих объекта становятся недостижимы из корней, в первую очередь, из глобальной области, стека. - -[Сборщик мусора](http://ru.wikipedia.org/wiki/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%BC%D1%83%D1%81%D0%BE%D1%80%D0%B0) отслеживает такие ситуации и очищает память. -
    • -
    - -## Алгоритм сборки мусора - -Сборщик мусора идёт от корня по ссылкам и запоминает все найденные объекты. По окончанию -- он смотрит, какие объекты в нём отсутствуют и удаляет их. - -Например, рассмотрим пример объекта "семья": - -```js -function marry(man, woman) { - woman.husband = man; - man.wife = woman; - - return { - father: man, - mother: woman - } -} - -var family = marry({ - name: "Василий" -}, { - name: "Мария" -}); -``` - -Функция `marry` принимает два объекта, даёт им ссылки друг на друга и возвращает третий, содержащий ссылки на оба. - -Получившийся объект `family` можно изобразить так: - - - -Здесь стрелочками показаны ссылки, а вот свойство `name` ссылкой не является, там хранится примитив, поэтому оно внутри самого объекта. - -Чтобы запустить сборщик мусора, удалим две ссылки: - -``` -delete family.father; -delete family.mother.husband; -``` - -Обратим внимание, удаление только одной из этих ссылок ни к чему бы не привело. Пока до объекта можно добраться из корня `window`, объект остаётся жив. - -А если две, то получается, что от бывшего `family.father` ссылки выходят, но в него -- ни одна не идёт: - - - -**Совершенно неважно, что из объекта выходят какие-то ссылки, они не влияют на достижимость этого объекта.** - -Бывший `family.father` стал недостижимым и будет удалён вместе со своми данными, которые также более недоступны из программы. - - - -А теперь -- рассмотрим более сложный случай. Что будет, если удалить главную ссылку `family`? - -Исходный объект -- тот же, что и в начале, а затем: - -```js -window.family = null; -``` - -Результат: - - - -Как видим, объекты в конструкции всё ещё связаны между собой. Однако, поиск от корня их не находит, они не достижимы, и значит сборщик мусора удалит их из памяти. - -[smart header="Оптимизации"] -Проблема описанного алгоритма -- в больших задержках. Если объектов много, то на поиск всех достижимых уйдёт довольно много времени. А ведь выполнение скрипта при этом должно быть остановлено, уже просканированные объекты не должны поменяться до окончания процесса. Получатся небольшие, но неприятные паузы-зависания в работе скрипта. - -Поэтому современные интерпретаторы применяют различные оптимизации. - -Самая частая -- это деление объектов на два вида "старые" и "новые". Для каждого типа выделяется своя область памяти. Каждый объект создаётся в "новой" области и, если прожил достаточно долго, мигрирует в старую. "Новая" область обычно небольшая. Она очищается часто. "Старая" -- редко. - -На практике получается эффективно, обычно большинство объектов создаются и умирают почти сразу, к примеру, служа локальными переменными функции: -```js -function showTime() { - alert( new Date() ); // этот объект будет создан и умрёт сразу -} -``` - -Если вы знаете низкоуровневые языки программирования, то более подробно об организации сборки мусора в V8 можно почитать, например, в статье [A tour of V8: Garbage Collection](http://jayconrod.com/posts/55/a-tour-of-v8-garbage-collection). - -[/smart] - -## Замыкания - -Объекты переменных, о которых шла речь ранее, в главе про замыкания, также подвержены сборке мусора. Они следуют тем же правилам, что и обычные объекты. - -Объект переменных внешней функции существует в памяти до тех пор, пока существует хоть одна внутренняя функция, ссылающаяся на него через свойство `[[Scope]]`. - -Например: - -
      -
    • Обычно объект переменных удаляется по завершении работы функции. Даже если в нём есть объявление внутренней функции: - -```js -function f() { - var value = 123; - - function g() {} // g видна только изнутри -} - -f(); -``` - -В коде выше `value` и `g` являются свойствами объекта переменных. Во время выполнения `f()` её объект переменных находится в текущем стеке выполнения, поэтому жив. По окончанию, он станет недостижимым и будет убран из памяти вместе с остальными локальными переменными. -
    • -
    • ...А вот в этом случае лексическое окружение, включая переменную `value`, будет сохранено: - -```js -function f() { - var value = 123; - - function g() {} - -*!* - return g; -*/!* -} - -var g = f(); // функция g будет жить и сохранит ссылку на объект переменных -``` - -В скрытом свойстве `g.[[Scope]]` находится ссылка на объект переменных, в котором была создана `g`. Поэтому этот объект переменных останется в памяти, а в нём -- и `value`. -
    • -
    • -Если `f()` будет вызываться много раз, а полученные функции будут сохраняться, например, складываться в массив, то будут сохраняться и объекты `LexicalEnvironment` с соответствующими значениями `value`: - -```js -function f() { - var value = Math.random(); - - return function() {}; -} - -// 3 функции, каждая ссылается на свой объект переменных, -// каждый со своим значением value -var arr = [f(), f(), f()]; -``` - -
    • -
    • Объект `LexicalEnvironment` живёт ровно до тех пор, пока на него существуют ссылки. В коде ниже после удаления ссылки на `g` умирает: - -```js -function f() { - var value = 123; - - function g() {} - - return g; -} - -var g = f(); // функция g жива -// а значит в памяти остается соответствующий объект переменных f() - -g = null; // ..а вот теперь память будет очищена -``` - -
    • -
    - -### Оптимизация в V8 и её последствия - -Современные JS-движки делают оптимизации замыканий по памяти. Они анализируют использование переменных и в случае, когда переменная из замыкания абсолютно точно не используется, удаляют её. - -В коде выше переменная `value` никак не используется. Поэтому она будет удалена из памяти. - -**Важный побочный эффект в V8 (Chrome, Opera) состоит в том, что удалённая переменная станет недоступна и при отладке!** - -Попробуйте запустить пример ниже с открытой консолью Chrome. Когда он остановится, в консоли наберите `alert(value)`. - -```js -//+ run -function f() { - var value = Math.random(); - - function g() { - debugger; // выполните в консоли alert( value ); Нет такой переменной! - } - - return g; -} - -var g = f(); -g(); -``` - -Как вы могли увидеть -- нет такой переменной! Недоступна она изнутри `g`. Интерпретатор решил, что она нам не понадобится и удалил. - -Это может привести к забавным казусам при отладке, вплоть до того что вместо этой переменной будет другая, внешняя: - -```js -//+ run -var value = "Сюрприз"; - -function f() { - var value = "самое близкое значение"; - - function g() { - debugger; // выполните в консоли alert( value ); Сюрприз! - } - - return g; -} - -var g = f(); -g(); -``` - -[warn header="Ещё увидимся"] -Об этой особенности важно знать. Если вы отлаживаете под Chrome/Opera, то наверняка рано или поздно с ней встретитесь! - -Это не глюк отладчика, а особенность работы V8, которая, возможно, будет когда-нибудь изменена. Вы всегда сможете проверить, не изменилось ли чего, запустив примеры на этой странице. -[/warn] - -## Влияние управления памятью на скорость - -На создание новых объектов и их удаление тратится время. Это важно иметь в виду в случае, когда важна производительность. - -В качестве примера рассмотрим рекурсию. При вложенных вызовах каждый раз создаётся новый объект с переменными и помещается в стек. Потом память из-под него нужно очистить. Поэтому рекурсивный код будет всегда медленнее использующего цикл, но насколько? - -Пример ниже тестирует сложение чисел до данного через рекурсию по сравнению с обычным циклом: - -```js -//+ run -function sumTo(n) { // обычный цикл 1+2+...+n - var result = 0; - for (var i = 1; i <= n; i++) { - result += i; - } - return result; -} - -function sumToRec(n) { // рекурсия sumToRec(n) = n+SumToRec(n-1) - return n == 1 ? 1 : n + sumToRec(n - 1); -} - -var timeLoop = performance.now(); -for (var i = 1; i < 1000; i++) sumTo(1000); // цикл -timeLoop = performance.now() - timeLoop; - -var timeRecursion = performance.now(); -for (var i = 1; i < 1000; i++) sumToRec(1000); // рекурсия -timeRecursion = performance.now() - timeRecursion; - -alert( "Разница в " + (timeRecursion / timeLoop) + " раз" ); -``` - -Различие в скорости на таком примере может составлять, в зависимости от интерпретатора, 2-10 раз. - -Вообще, этот пример -- не показателен. Ещё раз обращаю ваше внимание на то, что такие искусственные "микротесты" часто врут. Правильно их делать -- отдельная наука, которая выходит за рамки этой главы. Но и на практике ускорение в 2-10 раз оптимизацией по количеству объектов (и вообще, любых значений) -- отнюдь не миф, а вполне достижимо. - -В реальной жизни в большинстве ситуаций такая оптимизация несущественна, просто потому что "JavaScript и так достаточно быстр". Но она может быть эффективной для "узких мест" кода. diff --git a/1-js/5-functions-closures/6-memory-management/family-no-family.png b/1-js/5-functions-closures/6-memory-management/family-no-family.png deleted file mode 100644 index d2aeecb5f8112cba7669055cd52f712e601f35c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20338 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 diff --git a/1-js/5-functions-closures/6-memory-management/family-no-family@2x.png b/1-js/5-functions-closures/6-memory-management/family-no-family@2x.png deleted file mode 100644 index 004d951dc03331075fe70e9db38e7c1898203d03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46815 zcmeFZbySpH+czu-A|fCq(kR^m(juTVNaqlPAYIbZU?JTtA(0{Ppv=pA-C?BHTym3SNhLWs|&ReXVIeb6z)zj8}>*F4}xEP#v z4%Y>C_9EJMze3G<09zjcMkB`ydPZe+b}&Gh{_f&O19*vDB|Qa2!-|%U)5^1id$*Y% z;x|-xpIdthHdXgpMc?aTJuS<6Jb{8DpbMc>{>K?eI=QzGgKl8oX8bXLjhyFS{+_qh zMcdm$7A%}JX6fuvW?_NrwLM{dj5=os1cJ_@=bwyvrUr%! z;oQUYdPMe3E-6Ci&jMsQvx|t&UyyrTRVxWt>(vTq&&IAjW!-eB>$A|}{rCv8NLp_m$`l|}R`(mMnLGyHr3ep8J^k1XTF5BOf;LHK5VyLTxKk*4>1cBDQ#|7z|`pquY7 z2&_6U4+uLPybfPAEq$8ZK;;~~w|JygvF@|Hvayu|c05d2j88-w-=p>)mN*< z(XrOM4zY5?#=o1Y_r4&DDl0Az7E$E^J0nH~7vs%=ZE0{OYDUD#_v(PXr;m4w`I6Gy z!X2i04tfSDdn$$%>FKX>y@a}6I=v$T)_@Vtq;=_7N(Brf@+d{O;0JdHa$v6cwFOPgCs1>BfP5a#V?2FYv`)`|IIhJ|7ll zVj4lyg@vE`Eq7Ndz_zP*FFNt?6YD-4$%|F^(Ol_U%o)skuIpBKX&lkhU#!MaF_CpG z9D|9ur=ySJQj^_5q3Wd*>Ps(+uYA{~;LSxZJW`LFDdG0!#3&E2$h{la~ zdlX^$9iqn_@`eRRjJCkv9CnEYEn~QDCD23Mv0>vF!+dAL1~60jMuXU;zv? z(rg?89iH1*2)@5CqKh+X?z`WcdEU^p~S zwQ)i))9PR){a_C@<4boTm@;MQ++AI;wP_;kTMTtC!rz?#CAXlJ==+3k_qci~ZKB}r z7;=Lz`8W%?8ux+3GSjGQ%kvusFz(%cD4k7;9rEH@!tT8_oBD_sVU((zF+L=pUgCzl z9Q+E}Tpc(2lA9V8w2IXXyA_CJDoS8h5|Qu~c#m)48q;0;!#(uO9fDd`()Wqo<#637U=8 z0&9b;dy1+fC9_tG!CTwP@`V!+R1J1Hc@s1MX|GQ7a=f_)>teIQ$z5_&lGj|)&*qbt z$+llwb>sBpFe!Q?(u_4h`$$Q5&Zui(t1-bUOU|n+_h<^A8F_B)Ne zpgaSVKX?_^WBcA1?i($<&=NoN<{4$_lMvVgN^MHR6H+P&#iM04mzI?oy4Aj3!#zBj z{)6=ZB)7{?y3!&N_2?)`mQ`OkZ;1~4%cLC8%jxt0>CwCL=H(KON9E*GlnH1(IC)>| zBIDV9Q0ylb%t?{9LF4SdA{88zGk(?;{C45~-ib|}h*`1y#q^_o$uqk`XDF?0Q2p4_ zbK*D=Qu#_9ySdEyP{rzw4kF+%D?G;aa%0jSn^YamZ6bzMCSd2@Efx8H=Z_czdvg`lH`IQ2vH8eN;HV+8l#}!??3VUJ!=B=t0ua=fxO#^XtgHPbLqP@B z^1C4;{N$RJ1K#lt!qcWYn(-v(kMD5TTA(QHO!4EheTW+xj8cwr_Xyi#=1rW{94DxNcqa)=2-0vW}yyq z++^Dmn|x?xUt-~63YmZC%!vrPs+FtDwmnSveu+A)h;+rXsy9WJbJ;a4W#qi=#PaR~ zct!D>^j$$cyWBjq*=JT@d{9GbV6s?4h+Cm1k;?VDexr%B7^xVHL0E4r6@bFRTe6UP z-%Y~3G>zQ`-QMxQl?>Ax;qXNxh#=Uf75&VjtwOX6zw{huF^FYAwzdZj^_9I5C#3^PY@Ww+K2u3MSIZO&)SiI1Y+VV@ zc_Gdl8+u4rvqZAMsPtG!g=vP7ug_*k#j_RR zHOatr_DR%dmjNcA0v$O-cp5EuD9qPYjGTBPj?mu;0wB1jj1oW?{MH? z-_1#?ee>2kVj5G4;ViwCnU_tbbBRXBOXCn+XU93;6CP{BUcxSyi?5$cyx>>TQgvM5 zjZQwj``%q{54xEQg)go0i^gABbkkV={0y1M5o+jHCLkKe#pmrE8u%SS#Xp*oOnknj z&OooU_q(7H{&`Hmd@t<+7ZWfp_2JRo+;#-Sg*Py?x!In#$Le zUN6g4pG)!q9u=?(t5imz-DYOy6-pZwYFK-@OV0`1FlTT* zV~DUg8=Vs4|K-VRWISt%*w@&`cPS4ltezo@^Jh4rNjIM~*L|w~Zo=1o#WWCdh?w=b zpzBX;V;U+Ce6Jri2r&)Rx(MWjUNOk~ze~JY$1`ntB-0Ns@-51X)dNmb==V}dmI*rf z?NrAPppK4i7DfRU7uJ&md4~dFlb1Fpzn4h&qh5_5Em;j9GFh=fe~{GxYXQ>yN;?jt z&Cp2pfKme~mCmf7Tp%2ka?7sb{ zRO`>tL@<|O4D4JU?s_g+bQ8^2z8Jw{k?NdbIU+RDMq($88`y3|V62>Lu|8IfH~ttR3hPaomZU! z4{vh6-L8n8Lx7#%g^t4?hP-h{?_ObD!3lF%U*gwuA~_LjQ1{Rm&WVl&jum*$-W(6J zKZdMChU{Is1k|Q&&CR_~qZRU0lO`4ZLjs#ySWXvqw`9XGw3`kKf;s6&I)8IeaD!3`aG3k$xJt+*@?=*BvQZl@Lc2vzahv%Glt@{hYY{p}X!2wU~q^&+y z&b`@;i944(hSxd5b@Vh#jv6MJ#j3Rphq2xhTjzV-rk)j5CI%4QPxKkJLhhO5d;QcQ z->uu7tZ8s_QSz>mYdZzL$!1KCF zhmVCiEQm2$4hJo?tl6=+X!*3!$BvRbIEb$>v8WOA-H3ouei0KLo-A)EeRf!TQOjlx z1nkgslcqc>>#om8o;!(`qdIQAC|SSon5?S(Xdyeg+9%=Ue_4`DFX5{Ypfnt$gScX% z@*kRWJu0Q@f7f+0>ixmqPRP)7qS3SnBXCZB;wxoY<}*YbEO^;T_I&+5l^~)G%zAf_ zgKz-I3%^2SauJJDlqGW*TAgn)3?Hd}EAmN$UHQA$gXbex3Asagt^pEl?C^bfr1FyU z`pJ{YEHb>LR5*`EFEjG{3zoD7`t**Xhn!Q^o&|qh=plIL<|OI zq_gR68^q62aIIfDzHv&G7@L_TTTNS-{r&1k=3U8Pi>!0hX@frX6Xoads_=5i9%P=) z9psuoX*kaP*8dk}36ySKY;TqXxsU3<1$5aw8I(UW>pvNIg~!`?06NXkHi_zVmK5+r z48_U#G@jR9(YXB%u`Y)@fCfgB8N|wZIObi1>?j*fCcw?JExvk@qJ5TQ>lInQ_s@0L zx4i8Sl8=mQH^0>2zi5JO3ynk{VDR_eX9_d~ny)Hr5M#EJgyW!P6o2J0T%otSf9wAA zu0itUV$}NfLb+x6K{*B76Cvr|IbL#n)&%!)lZHF#dX|{Pjk?Y*7hHKFeujRheBgZm z1w1Yfs0edW1$xqp`yXA+1@woo*)7W)o@+bTTNoDT@j0hGGDIB>(K10w4vZ`_oU;R~ zR9g`9>yk2InXQ?RUK9?T1#ER-LES0>;DOp(NYDdIp}ND_b=YKE<3$(_)hsD1amY15 zz9YC-gyZ!JW2OIq;zneKisKrEXoo)^{;kUkP|-sY3D8Xa zst&A~*$8rh>2<-H5CiPW+;#Pg;DAn*Upj-(6)dj&eB53kn5D9}ZD@W?UMm3LItj4Q z;bvr^xkiyiocbfKFZa4J;j&})Y@~6@JBsz#VF7)Iv>0LGj$N%w;)6{AGui0&Uk-DY z9Y35(lAZf#@);`1LF4lwqtwiFK5HvN!MQ5UNHpr|**DZl*Vu z8*cWviR!qKy6E{)I(OW)JG%VI1ao4^cam;y!0rbII!t@bjUiK!wjvQqnehAdtxRiW zk#I?I$7SC&$@!y|0Vtk)mj7m0EE9@>=q{AHz!C!>K|%UK(jOOat`FZQY(Pv-H1TF? zrcsqevX^mBpFVxs$SQHP6hkTaIW4Z%28t2*Fp63(7RPqQshD%&bjh)f5kmRMsZeld z{q${9i#GE^-nI#uC3e7s<)ZI)!KoUlJB!j%>AYdn7K2_1ao*bA(_d5s+E)hJV6HGv zPs4L~2(L-)QfY?N#j0+2L}o@olEO30L6f|Fuc#)ZM3n|ZQP$h_v`Q}8)^n9RoeOjP zJrY~Z&)1$EOu|H-o}iMckApv-FonOa>@ESsEWs`Kv!3yby$shO^7Vwt-it{=oDF|H zauKzA@6l+}yGxpEh9pepUl$p-FZohj%L{&VY}OVg(lWML6wbCY-9r{4`Xwp|&y3nK zH5t-%Zg$#x(X_gWvZGBLk2{||EGwbR@T=$jTryzt(`yqXD4Z!-;1w*!uzf8CglIKR zo%Rh6gB8+bZ(!qg?}fyBJ-`dU+oc#X5oGEUA;LxzH0sSBK*%~))Dc3WR=WKyVY=rG-g@MAy0e2q6Rq#yP3KI0<`UEF z+?Qj1SA%00g4wuywcS7V7m#!@uLjmi*~Fh7zw7tpJD-p&ESt)dGG2%UOMpx66>X3= zqqS{t3^o>A@S(QrwcVL*a>r&^&E?YOZ1Rdal5hB;29AfA$TV}HQMvLrWvL42EHLc~ zK#c0v4OU6CH1cXFCGYuH^$&Kxs7US~jn-4+A3c2VLt?^UxM$$trBJg+XO8y8tMJ%I zY581f9ay$=YP%zXgr=TUE`S!EuDzgO!7jBwnwSvh-MNfo%qO~Q((M{&cc*LzDGuXjI5H-fOD0^-;s_uN{3TFrmT>9E*_G$z{Y%;Z~ zPAoN1%R9LtcpTzgj2I6^W)_or!}rrGwk6hPS6|=}^_20v1lMMz$UJ>TCsXYbU2c^QO|DkD?U&cTdcI0Tdi~N=L*Hx=A+4Ysq-n5mbCO7hB~ighK0ACCBwr3%XZFGL{kl0 zfy*@v7dEZiH4In#Qt#bJBZm@$EY3awOkx^sJMqXw%52^!`b0uKPjRh@e&01fGSv33 zZ0`Z;;FnVFBG??(Q{@B0>(9JHr6L2%>hm7SRT#!8FuQNF)6eZjJ$|hrrXzz)BG9H{@BZr1`fioy(@vq~?)A&= zUvKCQlN(kLj&l*ahx6K?0FQ2lOsPr*&mX4mYrc^9@}UN$fV5Io$?!TJCg*xfz)%ci z%*pRJte-dIo0tv2*ScX%{pzjTXh$W%lE3;l=akW;ANi%)KCZQ=ipJ(&oSP~+;+L0d zcu6nvS(W3KvUmpUszvUDe`d7vW}q?~SIx`z^nn3;XN?)$*EVkZ?Vo|fcjCW%N6WkP zHf0ZR|D<|N&;8kv9fEaxkmVOBX|#$-&)TC*Ze)#1O|93nE8S@V6qx4W24^^*0!c0( zURYSoUyXmjvdv#jJVWS|l4iwi)hUSGF$sL`CnwjS3&*cCT!wx4zzm+t%m(Ce7Y0bu z%y`0d!nHj(qNo+-d`q5Dv#7<5YR&m^O{M@&F7R3cgcvo4CKm?oOt#%Z`%Z>f%i-0+ zGt$(bFogc`9D5u`Nk#pKRN1zaCd5Ix*=UC&E{=6gVkC!?>DfbFSU~%sr>ySlo{sSo z9G*PV-7k@n8v?IAiLQg5KgoWnWcn~VTt9TYlm1!xl3OQD{Eyw9i?-VZ&9%reO6Xrt z@5x`rd{C?A9i53Js_5qD7xVp;1Ni%O?J!TG#5)-lm^bJd{oqX$il zI@f@WF_tiWWpC@8@ciS#T{i`%kTGh6HmE%Rc>Vo99~iy)&l`VQK8vA^@suWJo!fsm zqX(n=-@*Q&S?jGoPG&!T0v*6U3pq^_k6fcXx?B3upb6A+{U#N)1Je$IbE4@M~BEcHEWAd>kyFKlOrz<7Hx1Gmc4eC>GPIm*VkSuX|>gN~dfN5i6hWtN)?->E*2~ z;a9qLwvHgA=`vud!Sm>Wg30%{WOjR8e(v)e8MpL~;J});G}^+WxT*Y=)=#{6Pa)QW zChC1J(4yQ<@SC1w{xdlSajFR%OplcqyiAIf+kaJU!=Xomcbni(yr-wF7WD3xx$j66 zaO+Jr2rEe8t0g`h{E%3>Vl8PFb8q^G`BMcQGFXs%mN)(ZOs#-|TcDUtM7wKY*Mb$ZGON_x?R zWF5C#*Iv?^&1m#0+xJq%)ysJe?>d=7-4W%f{yf4~F)BW)DXT6X8v4Iy03L$((MxtHgi+MRNOmp_h+*6M`*)P*Qe2I*G=YB^6 zeGXHz9$3ham!_~;n_O*d=iYj)_h6Fr6cJsd}{s9 zDx@-6N_ytx__&I@aU}xx`&B4$xxiX(-rmRQ9$;3M{sB~0%GlJ;04DX3I^sCs+e-*n zSPeY zcigWed?E=ml7v@$KeR7!jz~TIWkmLAEy0KAU8{%dN4= zNKf7x$e>eAOmDa^<-t_6)bG%0=t*?YaoN>;#y-l^S$!7l>$UV1GP9)OXYmAN2_Gse zK7}s(P+wR(=ZLWv7qdqQI^&h-TV75`0x!D}l&MljtR4A2!WjzVmTB+FC0lae$R)3< z%7kgIg+)K3V>tObEjs#!${PG+qtiBpb6OH#VDX(>5_JQooBomHq~fwjse!-`#pHQp zDbJM5JMxQ@D4~)w>dnJ^(>17_e^=#NpyBR)*vb9ht@?aXzWFjS=3lB6FHt8_6@p!; z2fmT$ozIZ7Y~+7dsTsGdw)eNYHuvi|S{J}|-X^x_d{ReD&?O;?M*R|oAoTrir`xlX z%+S!hc-iXQx4W+dkdEQL*`*42wz3j`?7lbMAl^$~IG#jlsMjpDz9N(krO8kJipP-d z2~2zI3a`l?7VgCa04A~Id>7K2R!A4bV7#uIe1Yc&@1_Eqnq||U*VpB-zi3J9d%(O< z3IAw0u@JCEka;-%w$^5>X$tQD%{7hhir=7@+SAH5&F|5C`G-e_O+LOu-qwf1#7|)| zQ{Rq*3fE;8q;>}I?Ws}6JP(KLq84O-$|_aS51W2=Pkn+|cP6Cy0da?ez^?PCUvAM^ zk0f5B>T+JY5$l=JOkpA*(-qPdfnzfjw|NxMPiZEMJ<=c8hhwKvv!EGzZ}Xv=O{v-0 zLN7Qd;lpc~d9BKGK$P#nz(N^)O#HVA_9_ra{3KZeAnm%is;!Tt7Y6;9-G4KhFLI9T z$h@%ABIAMbA#XNP?{JLrSBH-w;^#+TViIG?L!#CQK8gO6N=Wj9RVTy4smZepPL>%x zRvM&i@u>Qz6eoSb1FHU4>&8%+h;MM6ThB-RfCSj2*?lH$Hy$BmKm2^VMU842{A50p z@uJHlUaHFZ?0)VEbzz@xWpEoN$NU%{Cs0t3#f$=DZ~WT8DOK|SY405P3pe=%x#W#+ zll?!z3;`Q#^TboVu9uNs&C`;DOOF?pbH#U*Lq2!YF)LmLo76e?FN_K5yhN!sz79ry zZu~2Ac zEG&zU+V;yqM`e6c%1siBmdcs}BG>Ke#Ka`pN&uO_EQjW>o>c<*u7F9w)!rUuV{l|+x*Lh49Q~CqGWe?;cSV1~_`0jSjG#sYt+Z7>`}*(kfB|bh>PNJ`uV;qt4CDFx zuho!PM@>^er}5*GGJoC4DnHel6u-;9m6Ty-%n59xt9J8)Xz?oS?r+WPXJk=e94R48 z#NtzlEFB3t1Wr(|l1b`!Aq^}x0$+qWIaSXS>K$?&yy-?e;7`MtpeUOCK=OF+8XPa#X>VoKEmZa z9SuJpK8f`|ER;JlrCGQ_w5jXuWNyriSm}xPZ}7A6UOB)rU3}ul2Z5ev^;m^|2N~<0 zj~zpVHT*l2&K{)Ko!xmx^1lD;t=(eVk~=kMmQEMmkmTG&G>+M!qt>R&?h|=9Jg_j3GYpso$;p_gB3n^IK7Qd)y#N|Yx3V{L_X^G*k z!sSyxM?@aAEN+_HMT5j63s76N9&P<>I~95}J4eSt324^XAh8dNYEVF|8yGI(>m()R zZ8KC|fW;I0lijjtoBgyi*Tp!yb9weXoA^Adrk8Wh2b`lgOU=W78M0!%-%7k$Wz`uR zI;~A)FXy|~U!=6${C@lUlV(|8feW_+wz0s|K{=!Hmc=+r!knPTtF+PIT|!-8UEX@b zz_(|cFDlMEiq^|l`PThJ1CJWI_J8+pKn5-8=W2zMJH*jG%smL&6FRh7!8i#3)oj+l zSHt>iqFw6ZZii_(vxJ5~-ZZIV0ID@$hjS&SjB9;$g+f&PZPs(=_#A((CaU#*BSGiG zgTwPXwR*MV;&zT1c$ujp?$VSNUz$XT;5EF!JMZ)90~%mswzW zccrm4`|%v2!o1!Tx8b>rpTC?6TV;+i-L@U;2tm6OJ@0uUy#jxtq&Rc=$+{xC{D zIMqJ+4|%2TfGPWpo~MRYgKm#5d|HZ3;DYK5-(JndffaUpd3I?)w-na>-6zC#AfgyY z@`)V!ICI#o$e_0vr6n!2>ipQNY%>L#_UzX{*q0AiiK`QHdv0&nM`he8itN}ToNZQM@6{S)SuLC z^R*bEHdEk!67l)NhSpLOf{J`9zv8zbRA&(q&bE2lTq19)$Ffu_KBU?X>Q`*&854Q6 zzR-TxBy4J>H9Th5SP0dvso>2Xt3U=0PBfK^^s=}4nM4nvHp*)?88D#}X*c`_klsOE z`qgWv^#jE>C0AEtlZyAADDBBZy49^FxNo(3^iBq0+_d=5OyS)+;sBrJ2>nQl`{{#} zAt%mE0$JU>T?|(r@=iFNpQSUih8L=h*VhAbx&2cUN@dTV^!&{0Xgp|UG2m8$Hm3C7 zg=RADN8TdNu$=r61-+q2uu!w!e%JQ5amugNurGd#t2FU1@$fSIHwz8dnsQXTqdZ}D z(fX10b}CVP6ATAazgOYH%4#adlG>f=yt=$sb2r`a4i)X+KqQc2_WhB>(BJ5KNMFAF zyfVr+bY;j99Bk}9tvHek{n#AUXIP7lebqJdFu&i3*;mc{I$J7@TEO=vAx2V+E5|Q1b zLA!DLokSI%?v3~jBR1jMYYLz>5{qyJLG86gQ7Mg1P_?BOuAf=qA+$TzBNilfm&WQ) z$Zvn*CVJ>N@bp$%FN}@DauN9c2)qbUAt^4&DOebd9PE1QIT(kCG-3rk^bPE80Hcgr z`XyqpkZyZS;~9EKLDH%O541PC-C2rhF^}khuRm(|(Az%tfY|c<)mru(J-@CoE9Z5g z;h(_505o|NGzH^!s0G{4X{BbEg0IzyBW~ zqaz{6wbZT}AvkQPVffP=sJBfWk98(sL;%n>*^ZAv|s(T)ai_%T{<4+Q*Xn|gqjt#77{rcRX#hxXf0bq zZ8>sq(Vnvk7m;K+xYpAC`=9GG|4hJ0iZyI@ro@tS;k6MBw^p)?K2ekUu|~GX3_1>a z+qoN&7xO?Rx0CgLdOb`zd8X3VJ)n1;Ur!43Uz~o0<45f0C&%2N@O<5wC#*~%eM4)+ z>Z}T|ypm4u68Mw_`Qzdht>}MM+3_>~3Rk-2F-)6-$HA`ywki(GxuZ=g63+bbe+YxN z0nc&#g2RkFV6-h`^euw6$Y2Z z69gxbq_}oEw?p59RR=}6&{n8^a1cEOiPuktty%-7k=C)xc3rCN!P+Oun>uq)H#tCn z?n^>R&RFx<>x!sxysl5&vc4}uj{UEeH(aLTjKX#9!H8tgq(61os%Zo?KB51Um1`=3fy9v{jBHAakKdY!9WW0sAB z+*Jp=hefit!PD>zIT@ltrLZ{Q$df=!njnV_)DKtoqp@PA zUE4jv@5%RsD!Xj)j%b~dMM2c$4<1=FhZuvtlbsv0n%90Fq*tP6iZrSn$u&3ohAH2T zN|xTGPet_rS-^T7^9a(@DRs8+OL>={d}XsphSPY53Ye345{c_R&lTH+V5x!$H|{mp zI|`)V*FUe6l`3DR*i9-;eMIrdWpF-s$=%2LqLEvoaR%zXX9s&8t?Y0)ugQguOX*@K z#e)fdbDP z9r(uHlV8-DK12C69bUCD!mT1Mj7(Fw8fGSX=Ru|dmIvQH$@A+0ueC%+4u*anT$;y4 zpAR=cxFo3j=S?tW0-YRcdD3y&%1(PrJ*6n2vvRTVsilC!j`h9vc_sb2 z?mKq=47*>%LPZf)J(g~6aLvCQa+@EyOXLcblE0e1{bpfhPikarzk1X4yWx?F=C1FJ zd?Ao@XO6tcpzG_}hnPDyKh$vSz&#SfSHlaFCnT=(NBTWxyLx>3mcb52$DjPFY#{6P zkBnA!MUwiQ1H>0o0@%S;8Jr?dMP-R7^%adn9F%O6g8434g%{E`%Y^1#Mpa~h% z@few?Yil6~oq;G2*;`m0CI`$rUHGVY+U3F7gj_|PD`*F}V(t`bJKz_`CB!|VGHJB6 zJXwJEA>8uwC&m z$e7{H>JgN&lRHLm(T=LwJ>!1%#%9>+OeEgxNh*^8r5b*2PqA;OWTz*qV2FjVssd$8 z;zP24fR+fcwyR*El=0DA_rVq-D^2Sbkk0R7!P4%EsExRhsHdIsiqqZ`Cy=X0d==2J zQ-%MqJ8B2D#p4~gS4g+4Wn!M7}QXoXhWu0SC%Rnuje>*=LD4wura8Q9LLdc~0kRGes& zrv5c8CVWIq@n+RAdA5;J4*pWi)~s88)HC60;aPX+3Vf1@*G(BRW_}fD=@i4*nOL3J!iR=niW07%fiNyb9edtrOzdn{1>V@=iOuhrNybJ3X6!P)E|tj@6^c4@Ver1<*cY9pMSEM*$j_Z=gO$xBbgF=BVN7hCJJl>cw>U}%tY;}7b8ILH) z;$vIO3x(ysg!q{y`!)UI;ZS@szZLhoorkzjQQf!JKapm|!;uu*-^VI+!b%PWb5|;3 z_&K?hZ(+8xQbu-l9n3mG->j>G(nYT-^=8avfY|HI{3oIAYZST>ZHJj`Qd{6aAqH3i~eQ+3`@sGZp6pC|gKlu>%-S!W+ zbvQ-(1b~e357!r5((m>cH6;NWAZ+Kdyk6wJ=?L&!Pp3o5#4%OM z(kOD9H`~ec?-%t}6ra%Q?GN|lU)UmXDMu1WxXbj!fQHlBo01UWwo%-f?gxoxoI8I? zNNA_4VOi`0b1z+{=FYYE?cVp(ctT(I`t0Jm(;7RRPY4i1FV|Ny$ zkMp$4kMKCU8fq+&p;Euq-Hf$2y&3ae>g^V$gJ$M=A$_!Y4~pA)UfN(mlotR5fegZzmb6$*^r!NK+X3o``_RaFxT= zGoVZ&N~FKBA}s&XL|?0RjB=pJQX)^0AZ~O^{7u;LM*Qu!z}`Y2`&{}q;UIg$pL<;$ z*pWD#p!te0P7g$P$q7punG7oJF{!u8pS$ zqS$P(qg@d_P#7}Bs?+t!T^+l3JBZiisrf_1Bsj4EMDkEIc_^Gw;KJcX3ncMi`t0*=lEfB{W{J6%PQa!t)N#@Cz2in$} zF{Rf8zbD#--FB0rlho1q102Hf+p{dU6td<2DaNnNVIl%3EctR-=FGky-}NA+0aSsbbO(FDV<4S!ufM5rG_ z>4E&at|WkZM1?wN#At!Ke;@!o+YPK2j5gUhbM+Lu(P7#iC?B0Pw{bq68wVKUo!pDu zrmV#CKHAbWw!BU!>0r}Yc1%8l(thl}d_(}A@HHx$Wr9l{0bLU89j?m7EgwqbS3#%o`VJJ zg~WH$jK%iRir$t?nyP+b?lFzh6+7C7l?|CDF-wz}gahLb4aSW!AV}CkkNky>tmgT! z=7{q}7_0Ml&QoMjn3TrI)(XL=a}H|Yj6t?PVGkx7FP*J~J;yc}!y8VYaMR=F{fVc6 zB|BSQ=M#dq+eU$x4+u)V)#0=(mD^-UFF&hd5S8NqmCC_gWGq6)_;%lWgsp$;> zO9@*=4x*BJ$)XO9Io$}fL;63oDIN4$!Tq`$5Lb_)%c*$CShG0h#MwTVUJVIVSzg?a z)pm+c=c9T3tjTL`TK6n7TX7FLKS;>8z=>OUt|(8qS+L4CJ_IpzC6MTCn7GiWdf(wm zNN}A1`|%9--7QXDFyh-F^{GxPU^qnV^Y5c~v^>Sf!fRapq;I2QRV!@BhRe})KKF`7T6%L(iy_F>Mbg{VF6n$ zhlO2NzoN22udK?>IMS*d6JP1iarj;x;7u9pQQoBpU{P5(h|cFv1{i=Kx+ym)c7Nfo zU&^ymNHT^`Fchf(xMz|fj4VR+$zsrK^aIMsm)QL#(}5rsKQ4koRbV0b1#SfQ^pBkVA(9-rr<3A)PqBok)i|j@0)Q!`IhBcy8nDYPxI-TFKE< zZqS`T8K3Lca(vu|c8CKQ5r-Yq_W~Eh+7nAwm+LCtDAHm|Ngmz%W_1|fJ2A@=Zz7}x z@RPNxohL2fG1U?fS2oV&mv3IVo5`qM%W$y@f@NNo4@#9rZ+rtRv+&y-E-6v3WhqZx znam+I?DRLM@=b%tV|!& z|CUscLzn*JhSmqklcwQ~*+ZD|WpY7g-ms$XNgS?^{(t5$$}Z5TbG%emuFXn3YgiU! z<|vov>_1#Qy+nnv4T?$}I9Eh@(TFl&bf9$gZJdjpK$oux4LZB>E4P8X{OamEc6HKn zP1RHSNuBOdZ(vnn;q;0BNP)SgH0o>s`ArrQAk^uBuE?9ZE4F;rjcrXONK|=!XV*p> zTgF$XnMdcaShwntgX6I79J8BhCV4T)GJ8{{;?oob@}5PZ@ck~Z(~clt?XTC_P)L2r z>jt?^swW@;>mnnsP$7`f#5?jf-fJXCy7!reS*l^zX{y0LomO0jaW$VpYqco0qlUJ3 zQ_%QR!~QGJfSYKkqMsXBGJq?*DY1L-)mT1(6m$YS)4;hh{v3v zp;2LIV*bf^{EK|ujst|yoZBtij0^uk;>5d&3Q`3x?Ny_dMVX^8@g#oEm=uqkyJG== zeq5u*IanSoV#@(K5YjO7-C|sFNv6e`u%iUU(NJ^knxM_n&!cIi#UN7MxtE59n9BHn zV=2K8?%5nVaq7mNKPUo@fy|0+ARf+u@ZM|n@lU=uoz&)uhNg~(qrIc8hvDhjIKXS` zzmmR>B5!fl+U@#|44hMNr8v28KLGX}c2v4b7NOJe*P#>4$4e6QFjVpSRi^2Q+ieBp z(^}{h4Ei@t=o`M~4-I=?=f3}0R<<_|HKESolER*Zd-Tk1%BEh1_n=#&g?89HB3H8W za!gr&_cK3U36eIwT7&biId0SP1>dU<@Gf~Q0RK@kJzc^jm~UjRWi_#^Td6p_{6=2_ zI#@F4lcDI5=dJkH1@s%(l|1)^HTXe+^07A2Zrov;nH0I@-2b&E4}uTPM~-}XP-zg?pj{JFcRX8e|xGe*tU-r@dIGHls?t#r|s z3OS^sl~K)mHPnAGC*?l66kxOe#p=K8!oW!u`YQH6#Z~_k5Hkk^@pJO~dl#Wg0&3WT zIrPuvZPj=4%l=INfizozC4s2>uTiA4Po>n3-O}*BIM@3?8WWe%It(s%_dtPinsawI zzut>k{HE=GmoouaN;v}%Br21N2(S|X6Gg>U^|3z>lZ2*`{9;9~arKl%5l-Vy{m;pz zF{bY#WzN=#VJ+D=%m!YlNvg1$sa{q2E~5;kZ&*$M!-ohEoiuP^W&o$VLB20#yUKQt z^9F`3Fl#}{VRW9)={0Zs32u6Lb)Q{StAfi??q7XMK?)aaM;~_+8#){J54PesU2R(Q z`r7$0r0v7A|CDYo1Zb=iL~J`Ueyeu%{8GI#sUT)zdayL4{o(VaqrQ#NfDIOZS`73@ z6)EN1VE&uZjCV7Chk{^ebLf6xZ+a2sj5{_z;XXV-)8OTDW~@Q@4|a0qanAa5+`P!( zP1ZnOz1gf3Iyg`e*kLBeVl1%jFUxLfK)z=lP zFb)+nKO3JmY)o0dLYDbY56NiAZp1IkkLH`FYW&HGM}1vh!y9(u)Q)ul#*nQ_>w`-K zO&+XX$y2?ggfs0uq$zcn-CxMT!JF7#fT+;DRh5-dCJC{7~ zA<@{0#C&luzGx`R-1Zt%0R{b217^p_RcThquQ~Z;c6Q0h${v{1R6{>aC_q}3BhS(k z(i%mecH9HZh^)$KQDgbMwUDB(aQ`eIy%6g`AoZ;oBd2Ke5%YMbn(s)FW4 zvcRi1p+X-r0Lz`hXx2yTX*@WS)&w@-O+@=5NVa#y;qJ3Nt@FReRNCGsZWE8H?6F4W@T6X<}o8E}#3C4j6ujf@t zyu^O;pS7?*RpuvnXwdb2JzQrpTssSnW`vfz6H+(OR^9J8u?>$KSf}5=9rC`) z4;k%JMk;S{FD*;cQrPC;%;O+5i}QKlX+y10I^DVA4Rc}$U%P*enxg#08#7C2M&Bq6 z%ygO>n9OEYK6M>&2x*wJ0ac_{*$j}DNi9#}S{YGR6fK{}%qyV+6D*LXMOjI+P#y;G zGnw6UY01}d?Kt_tyEDeV*xBu?+?~-6Fj&;7qpY-s1@8{@#S29$I4=51K5v&EuYHlw zrfK7Li1#+-SF7uTY0=+q4j^0FEM7Kpd~bYIJR=awam;9jm$4@|4ALIQW0$@EWQh@J z+Ui)%CRJpRfkpC}bp1T>g>i@stF8%U-Q~f5rJnm$zi)OKQ3)`@8UaERPJp|rJXDjN z%SUS2^;f56X@lP_+-cYT^qdJT!bdeZmHu38$X8Wr%;_urj^zf(tv_Rc0{3_=xRh!K}n8cqvr*vML>FAWD zwHjr4CRmxH8-gs7sj{jnHcHXXi-$}}N$$u9c{_A z-iraN_L29yjSU3=d3iB?B~xX&5=!W`LoPb1eGB?xUw0J zrR#DVES0!^lv#u)QLfkO&Q+Ij$?e_NhOUCb=i$7^S&22Tdt@g@g{K*#FZ+~RFCHf$ zqy7-o={p+fk8-PJ(w$^czbgsEnAc-v_s?|1=?v{wqJGZ>b0ay~JP22Ba7nOg%$ASJ z#5VQ6Z;U2D4`TdvTp<|>gm)~SaJMW22co(y+0u6|syaAeNRsOpJ} za@q(SKMF)@UDd&Sj*+U}Z2u0Qi%p5$;oz{6`$J#2HI$_vne{se7HORA@JIQ;dx1)Y z+o94f&HHv_Sx5H$nIDc>D4$gIstevPz_uG15aW*eYB7VYr{3&L$HoCYS1BZ-u9>^A zfuegKF1x3q`f4_nSa#QG3iWUdNz89x9^Tx-AGtC!9|0XqhsyDmhJqVY+#}bjvwO}Q zocz|^PLH&wf7WG>AL{Z(y3^K<_NY!4ALX~S+jJrZ-n#7F)`fO2>snhoE>oCPti?gb zUl#hyRlSu!02Pe*d$!|Fua(J_V-8Bu@V3L2-k$>AaoWRhdCnFpNwIIe1i_fzV93WA zf8VyogSoPds85?&v^CaM*N&!Rb z9X7LqvTMxunzoRMC^VH>z?1ImxnEaz`yjhjJ92fo-b?tc(o$E+9QWAoK~NN3dDxq? zj9r9|wWr#Rk1HRyKJuq_&C7_7TF0x+h1mw3)1F7{Zo5>}wZCErUseBu@UkcvmeZIA zhi9>clMas8kpY~3HFiJ^hNU8pcaNEn(gB~P!RD~dXEeE$bLCv+8~y9bv%TJ2-{<4) zsxIf?rzQVI9rRprMY@rZquW#8lePotWcyHw_t4W#A-AW?b?RVKmxs&g;(XeQvxNw} zGR>`*ey4fe=|nkp3Mwro;U#+z?ARjpm(y$ZYJ8v&d&fj3opJjyy2z2D*>v!@LZlY$ zGm#5M_A-XQfV1V{_t}y)m_F&g{%S3{+0`HeI1}VVr}4b^&^o)JKRw^|vymbxu8(O1 zkqa85;OH(&zqQ>_k8USVW}~LYxdqeTUz2y7SovH_P{cD7ZKtR^Y)4Vmhl~n?#Mb170H^cO zSV99#`U_wT+j#add6(=O@$|U{ee=+sn%*0&H|JKPXKPW6CI&0bjMx}(*a;1 zZ||fy9>P^wcUIAgQM*WKiu;yuK8&+J06XPNDO;bLa2(?ah!%YiolESWK|MxRF1NU)X3gdn6)014l&jC~34Ztprf*2Nnx!4KWF6d5 zUuZ{kzvma<-@`q6$2UA&2P+f1xFrdE+?(w?SvFrv%1I-hG2zO0TCcXqf4uP~lZ9@X z%(1(3Iq?^7ZjM01_oAY~>n6jE?pXBSfgA*#dRZg9vPQ}7U4hC##LW44xP<={Z zjymJUnw7sl?ge9VW3x=?e0aQTIMXG;8pYXZ<1(JyVZo4G+X2h4>yxHFc^ZbgT`EX- z6P~=-Zn085F?}s#seTyeL(f)@EmB;-bm_Q1;VOMCN2X!gdN(-mnJFd6CY|1L&hpqB z#4Lk7^A@vC`e^ zhY=YMk~C8W1XM%>&tT5!@pEA`D4c7fx#PRi8HsN-@~Nf#Sd+ycRVO;`oO8nsjtn8zm48_HMzgoRxo6i z49_rb%v6nX)n8wJp{N1|b(J;~&TDeNX)1-uOIA+wkAN3}LYlFeZS@Lg{aYxB;kQcu zj*rGJ?=ePa0}eX@F}N)6B~^=p08C6pISEJpU?}qSY<9)_$dsO9mrA4Ddhw5sg`snk z)8ydR;jHl4zO$R3k1U|ck0ROFWmh4M7IQfQ*86lAlEUKENDtQcTb!+%20!6IaAh7r zXSrXGLBT_F}VHvO0Dj^oKCk(^|P3sBtit zp09h2wbE{=_cOf`l?4ej$l9)})44G+?=9@6zPbN0dtA?3;n%Csed}ACXQ5Y@_O$O* z9bCQaU_Y%azRj2Zr8W4ic`vPHM$fA&e~V7P_meLMsK_f&CqGXtqQ~OT-C4wT>>SA! zg8oN39bKJF+z8srON5eS(XGq=)*hxF=o;Hk)x~#3v&9qn$Jzyba%kd@g>h+Pol}_` z{0X5j{KDxnf2zw0&)M@ZQUq!>HUTaSMvc*o+=%#h#fiD%VJ|x60cLQU^N$!UwpqP` z#0UP7XUrS+T#CoeZ7aGv7OOYeINBD!m^^`61c=rESL1sWU7{1>=?!+2)> zB0ni<7K#y5mxr6dhJ=)txd#2MF;-vXHUmBgI7GApOX$V2+gw{&^&5MH4yi6`yMD6R zYOnR`-Ila7Eql;mKfi0=yeD9e1&?~|-v^d{s%crAj^T$yA5iROz8^Vfg#P7P2Gz3$YLPPxMi1X_jdn;_kkZPZ$<{Wh25UB%J3BF*!o+Lv*Ky>5L3 z9WiYxw^!qKUVq=Di`~_`Z|3qz9Qwvl6evhcb2jiINL+_GeRcqL;6|xO*_gA&W>cPE zLcZdcq4>mH>#shu&#GSB)?b05_OzTx&vk5M(v8~5o}uSDj-q%v*W@e^Auy=p@{1XP z9OvEKUOU|^Y-8GyuN^}{63S3z$t%FNS=ojjYr4EDaSb|s-<0z+h7mz|aA`p#H`ngQ zTZ7xYkx;O^Wr@N{tr}})kP%GxdWV9v+?w-lF81KMw$79u$^>hs^sQd8MW@k)oNAFG zC7q6^oIG{;#j3(b^C_huW8!-F$}clFyI+YO0y zK7~bcw+fv^d@8r;u$&Y2>^n0N@84KwXofYCt#$@E6~W#G)cup+)v^hF)dx%pubJf| z4RnVv{DpMQTqhSvJ^t*cd}R_V$;psSI4mInT(BNS6LY5l71rjttzMQQ;x$D59ASK*EaBI|jre#|P*^VXS zLNS;d#Ns_`Xs^q|rkkhK^DX6({tXa7kuouggzF63pw^ zIeN^_GHHHhaf3J%8tG#$X>MU}`ci@4&*v|Z&ZqOw4o995-W(|iq-2Qm42BeT=h8(x{MI8ITi8?GA|C$wx-Lb=t z+aRuk`h9#SZn@6C`@{2Bqt)u^u>L~jw;j)t_uJ*;*hW<5@AuFcck0QdI^~l*<@kH3 zbS16ds_@=7;{#5`G)U`f0*W#>L#T_=H$}H*gW72vcl^Eu z*9CgvhMcVN28^i@4Dl#dX{VylwzvRzloxmZecZBw7{a2t`m?ssiGahiUne^HVCLuc zD~%+^o7xWF(pr^8KaR;u6X$G&_J@mG?>1Fs1G(=*+=|Kx zjd5eHTl}rN7oWu*hc1HMyTjj{|A+$&)m0Og*aZo&cMzO52FK3XR#w}oL7sudKs~Ew zUfNT(;_G<3ci?O4W#RRwwZ@I#aq_-_FpVOox5KIR)Yzj(vVke{hV?7`LCs`8^?p5# z;B>GjeRDCM`RkNjT4(Ev^F!6@5FD7jO)KB`PYhEQ1+%nf|A(}VtLp4F8%tt!j-L&(=4w&qbVfm)ZX;G+&rcLXF98=67!lhxCHHeTyf;QOon?J^`8XB2)?Vm*Ab* zINrvOj*`Gbsv#_#)2D$jJ%qaV8~R_`~HQqRO1`+1k!Y&(603v(n;bgQr3_RH&nlj2=@ zTd|^lG0s3aqzl0xRu^=iy(PsRUDnRi>`^FBV;&b2CSW~~NS$RtHK`HEnkyvGey??f z7i52DIAwb+nDse~v~bo8-ipg6_e4mJ>Z&BtS4A60KtHBcTvYDjLYBfy z@Vu0i)YsE%E}7?Z7pxJlHi(0iKrTf8Q=1<>Mve;)%98^Nu92~B9TC>cWpr5Of(2we zCkUrSM)qs{q}$!@G>4Q)>GrpqDIHI*ijmmAfP8?!U5IS1XMhpsF(%s2aEEE5dp(AD z5bDIF4q+{y&p-I0>q5SG%kb5@O1_+NNiG^FPY5r^Tt=BSDQtCTD5D#mo{TySMF4PVnAc ziysiUh9(G_EJRFq{Xp=~L?B*#Red7dJ#OYFD1f`&o#EMbSZ;uRh`ToE?WN+iHBr~M zl$pl_#bER87~#)CQ0y%~L(|&-p|%h{!5tCP@P1X;hu+!!TYsyyppB4^2ME**5bwP* zK_>zMv-=0+BH)S;nmd5rU?0!%BV*SlWn-LI-o%Z#6tt8SXulY9YhDqDyTAhh!(R#g z-Fx3i7Zx6}{;80+)aM*&K+d3;#65l2X-Uy>{53_Mb9fuC?!o!$)on;BfcfKsAI|2u zqjGGyAgLCDTyt7hFmz+J{TOtjmGc0C`Uz+?8~kdc^T|F?lE~1wP28ee=TVAKF+gbE zEB13arV*+={!o%@y_^>s&^F9hyvpM;iGm~aA3ObeLW4i56(gw4pcrJ-+{$UyBkVrJ zR0sYh;aIW%l|;D)i~tv&)E6rHPC_|&zzRj+8pE0`Mbf^oF3-bZbm!c>a|9n7;Q4L7 zmmS}i(pT%sP%`u1pKTt0!|fRRLkGrs>lwD3}? z(4p;=db?7AlNylffLjXi9$H-V9O=J`UHV2L;LBr)(8JvXWXh)Q0caeaFfNeNcQ?O% zXpm&U+Q`#QxrwP{$QXuQvMqqT{6ga6uRAdu7zkj@_u{zD9@(dT_yo*#aO4vm`{NdA zeEf#bAw}WM=l{cvPjGn(Ts?0J}I&2>ea#& zCZcY^6A%hMpj}74oaZ5SufzOS;{5GzdQ(Kwso>;_9YXmVPNp~0aGWD}fG{ZM0F=XP zzoPYJdf~6dwXOh>!x{$DZ6=Vm4O`h#%mR66klTinN*p;kjAAsSdV_1}B`XgCC_t)C zl6WoxcsqN0=gmPAWByW+jF_~Ulu%+W-ua)q|3~N^cHqND^N11`;~x<4CJCU-a3;tX z(gXI`ShPOqWY6S@zsK`qdto&Z3FoT60*OA6>tI>~KooJ}&vQGF?nE@Ho!wvL;<@eU zAgI7J6CiAW{AN15b}!4k2MiJ!2?U)uxVTe7^Tol#-1Jq43zv<}Gk0sV6aU|}mciU% z3gs+x1Vn@R9BXVt2J|1C9~&?%O>a)#xx%Uf0LJ_DED+!lO>WT+D#)@1aMn}1Q~pSY z64KqtUa_Y=9QSW_;mi&^WqX|VdH5b5T#+HU_k1N9jZT07%9jo3d)ium9v<`!zX$bC zaPUx-UbxuW;J^UoL&DR1pC@~rW~ZHEo>|9`EK*T`CA&vi%NZcWfMS`rFF^c?6aY0^ z;Dnwnj&u6AEW|N04TEb(knXTeArZ4!!(YB8Ym_@pWIo88%V=smR-PEHS0sW&CB*y= zRHuaTB^wCH$0rl$l1D#&Cpk24dh%D9+(s;m>9Rn3z{U{!?or6qd*0|RHLFEhawx!4 zE%PlXRdT;v7ifO-_}BLpga@yIgi6h}Q~s(;@{Gx>J9%w?*HuYFT54c?FgEM!P?l+x z!B#5A9y;+t_)uuxL9KZF4{1lDU|N6@pMA%^vhH!Mg+rMGi$H+Dga`Jr<9H>1DyS1V zi+Gx?8>P^kL;19c2);emp`!!rbui2Al$%V9 z1u4x~%$^gd1-&A+#F6e_ofA#JhBFw7-m<{b#@zv>PpNI!V*80v#nCqFjK+8h3u`BL zytzTn1(tH#(#o}fIHeJ;jlS34KHi`1$>QMi=KMtHdFTgbZu|c&w?D3p?QD*h8E<2) z8dw=A*6V?D8Yk^+ho>N8ZRt-r#eJN3RPS!F*k4*-CKj9w#Di1Yg6~bpDZ|p)dP=aV zt1zsxb*r~12*wf2ms>wPT->eD`(f_8Gd(z%uMEk5)0MHdoreSMfd9?frfkkDQ+Z`j zV1w*OsUg^K9G!IB5RO`#}!;FEL_}CQvMQ*P2 zaxQ8g5s{IR&x2c)+nfjCBJkjLAhZg89l)|4@Fftw`~+))!X$%U1Yvq|l6Ntoj+o4o74!XEQ1%)o zxr1nU-cixoX+O25MK8G&<9gD5AEGLhR}2SR*%eZq%AhX+>#Fp96yP?iSXhW~Fb!MpWhNSUBjo+p$M31684 zJ}lX7Buar!V-n;DcdIrR;9-(|jMv-a3aeX>_6GobsWPR=RHC?sod{O7P%pa35 zXz-;~JY2{bCOJZIH9C!3rmd?2AvXY*{Zas6+V^FbNq+g17i0jH%auWlaW0aJ7Ra5bE>Y5f|)yrq=%`3giF>#r)4}fT}~~b>PC|`gZoQ2?qt6 zcb8HT1fud2fM43|lJwx?p@Tn(@Wg1jnJ3bE4qgo(+m;J#MIsex(G`jVAjBJr%IHFW zG;mUgH?Ef#P&w00`JjdVYJ>%>FPk}aaEraolN0;1C%P+^>37+h2?TiQ60!IAfw^O) zA_zGhGo{2W-5hJmyY7iZWiO1D;TG1r)LQf25?UTY*u_KGlHldqLnr3ef=mH(84czR z+h_f>oV_UNh?`)or4t15Au8IaP}eWAdu?q}==GhsNwIkAmp6=aw(voN%$h;%vhvBw z*_pJ+je?yxq^u@E1jDTqr-|y`o)xbBOKYzfI4=;%w1SR4sRC=QbS7PS%V16}*J1T~ zRErF`bhlh6K==oYMh?>%D8mI`@*Tt?xSEwb(M*A=q^yWfp&aZ$5}Q7f3fnVZjSvKb z$aeyV>iw#DcE{ayztDbzATWW`O&a&(@lV?sPDnK#T`Xg|fG%??arJY@{+qPd?`?9; zM}fItC|qlb8TKhfre>wT7MTZIG#_5=JY5ew#o@ZzhBe?+Kc-FdB2`@*ZUWa1*I7^7 zSL}XQ;r2jiWc+q$5Gmtc{0`Gd%9X`!d$nC4m}W16NC+OslQwiT|a+vF|@qCe~$msmHw`+Pl8)|gpohv z(ov+2*uGnWFt7wg48xIBV{_|#VE_*ck}Ck118F1i2?#*hCpl+}gT>09r^#A`n$PYM zCkUwtdy; zGYn4mCxS-()-E{7GS$&cQK;W1o-P)PIK>}78z$&%@7ue(-}>btT#L0UvH2Z31Q={L z{XQifqE53^wrTko^d|{E!zjk&Mo`k9)F{MH6hbWe_V(ua{=%qU z=jdH|9EcBZk^_2{9gJZDEK3RSn?2we9o_EsmM;Bj$bk1S&E<#~GAhN+w4`N1*=()s zqNWjdx7%veKhi7riOACWEeZ9^cOYY$*0h- z%KuggHq>nH)W2zqq!zGzHaNVuEK*zPtR*(&Rf8`v2V`EQ=DpK!Aj-Z#mpy=&Gd)5Q68^~GWS^fQoK_ksP;;xr zeH=UOe%g4rL9dY_v_JyYT4m;V{I1q7BoYz^lXq@d#&LLusYp1Wh~8jJr0N-;-)=dU z-g+CJ0DfBTrPp$t!p>uAc%k>JPuul@yLx6@8C6CiBUX$e;#1AuDJ8+PhXW)ITeH?= z-oG!qK%~+{+_6=pV4c3mGoJNmprN(1FO0I5g*a*I=jzq7Nz_GPseN)ctz|#G7Pt45 zgYA4k`yfxw${Q7To!d=!H$eMxqSNN}Bk|vP6+$OKD!coeQlcXxSBAJm94)_=YJ5+4 z+2Bo%z5>ZR6uxJk9%+!T7>PJBjj9QW(TkWVJe_cqK21WL;=VAu*z<4=sqJ?VmN90bU%x&OByUzn3NXn23uxWXQOBNc020CWG?vHapdRHpO(6!MifwA zxaovpH|+IRj?F2i+iZu=gS6A+6&^2+nySZK1^W=t4aD@z>0^%tJ^MbeG8FNCJ{46?<`n8^o)x{q4?j}?!BI1O1 zNhboYD5;mfE3KKv=;F51JKoFz2?*5v5&(fZuH|neOi+!Vzq#7nDMQnoL(cin$Tu}p z2+^ZcB<@rLyF5(8rJMA-I@x8wA7g!R70ZM#4Waf{RuRXfuT!m2ZTtrgyjly~vNp!8 z>RyMe>~hGM$ItOyRR_1s)lxkV@;7;sm}s&RO3tC~p~xHFAs>w0RZ;bE(a5rV@F!t_ zMQ=m=2_cFYNLqFCYYvM#6s__Db>0F|ri4m18y}*^}k(%~9Z}eP~*SpQV2?xZ_A&H|u=;-m{JfBCi z*%KckQ*^S*`ob?3Cu}hN!Qro>fwpoCX0s&CRmzygs*7uU-@y#Qg%(tdBGxCGQkPoi zh|3glG@j;i;w87%8s;*gdwFruApTOw&^BR=LIcco)W$};s6fgS3_!o{=TY*v3vx#p zjRvYBMJAC~JsUUbbjrfqBt5O44J|=g;*OKW zdvE1*t6U2N#Rub2p37go@whgb?`=nZE{H2PGY)ssA)?)~D+0`*sp4#JY{wy0hQy#tPq#5xmhyomx9asV&<|qQs zn4G@6??Kdh1Z175w)moi7Kp-0(H)ypzK84*^NJ9VkOESH81|c>)R_M2PppY`3QPu$4Uh>2HJEkj4P{gaa zzem;6DkVd4RE(Y_Q%T;jb=5vp$@o-(@duZcBA@Drjp|Z1gP5A|deeS^$7gf#1zW6% z<`RBzYrB&)WhR5mV$n*~jhqH!uss30)%}D!< zn~xE%!1LbAKT@t@#FJik{F4GF2U>K;5cN`-%eqv`;ZtzMMvypE9gu=xR-Qe<~du^2*0$VnLI)1)`$D24XI_#cN{)58oM|^VE2`r@+2_ksgIMEv3i%K=@BExe z#T8L9?+k^@4G-=Ka{o?5aToeSiC;8MA)$SkUPJXIJ+{ideblYSKnD_2l{}(^vF?Yk zBYzl==Oh0={1!oun?&KqSK`W((*&UsiLf>dJ=1N@4t4YeMgRkx3{X%Q6lv}+Mwj_- zxf-1FfOnas@f?In`?tN3a)3Ya0lml2B;bAnQ4Z$eKMk%C+CO=NjiCSs;K={y@&N;= zGe-|E(*L^m4{gE&;@>~95w7}zVE)&I4c;Sj4Fo3pzwZJ5Rt^S2nbXF)7)JhYys0+c(tl%sN%bMU`Icub^lW+0$unZ31tMg!n07UM;?_z_OfYOBtV2q$d zMJWgp$!_l94H4xz`srvmAD^{OoOiQo?BKEHeX#(S5TZv0V#G+W@asPyP(MJoVM}#4 z+){*Gn}kG_Sx?^Ek3}6)SOEIl1DGIa1S|w5lkX^E!_LAIX>pv0{lvyy zu`rmtiY1V)n{w9+9Gl$8(uz|qd$yb3>R@G17sB> zAR8~{Gpj69#}`}JSov8s$!F3Z5h~fVCC0T%k@@%M4~QH9wLE0&=Y=p^IJr&Ejy3Dd zHJ{oeQ@I%g-LuDaN{j|J#U~LMDz37>;7u$*8D&L>YDl~B8rfdZz16?HM|Ah|Nn;0z z9W?^ZawYMlSV?Vg*hV0CinZEm+83DVG?||tNx-gz*ZH(#3|lh`iol=5sjjV9m+ct+ z>#`+taR+w1>v}6PHI_e-!!<4wYDQ|v&k7*21?W1}C`*m09vP0+YaoQ){De^X1;>#w zh)%c{F_1}aazN#j|2N-3@xP<7)h1n-1Oq~a2B@CTI~;6=UKGuNi=oB)RL*i0lJ!w- z4?CEjj66foOqm)Lv@k;Q1}H6lJl{xgMf^An)_TM-*arBy5p~q_vLWC#Oo;kI#7r6i zuP%f09reE(*jac$TBUY44X~Y$mAt1vxjnjSDr|6?)3Wd20W*D`t-MPXeqA^gZ%vtx zC+_m#L`F)IQ<0z-Two?B=l}v@_7xT2RT%9>bw@UzDt2)&Nz@l_O#a5`3j{t70vu1b zMw+^a4pZhRh-%Ng&5@+0a}o`C$M7+27bnQQ3tAw%N$&MMvhJhAfq>Y?=oWIcc~LtL zmhqvrbbi(hEu_uhB!Mn5j$kuSy1NmL!oh(Ei}YAHGeN#5;VmNhcznChf%y^P8bTxX znyPdH28(ntu~ybKb&`QK8L@rdZ0D2qzLk}*NhBYf=5};+SuHkxg`~u%G8ORhxAaxw z%((o<1NY0%@*KbV;^W>G4!!mtv1}Y^4zjXHTO5hUHIeDliMOl@3V+1L$CTaHxfH3n z)9oe?AwYzA?@Ep$RYcitgrNX>91ex;?6kH$R#iI7N!9>ck@H5Or>dw8b(V zFC2%{&acS-PQ4rN#vza|{CL~qv^QR5*kCu%X11S%Joxa=F8OOSXye3msQokgL9r!` zsV-Tm%aZ9}FW|tOW8?YFe15U^1QwyCR2{HjTVcPTPQ)2k?EB zNF=Vb*+x%4e5GT_985PYaWH1X^lwu*oV-FtCCfippK=CTt4#-nMj6Gt@hm+L4a2hU z@f#gk5b}|nZ`$9%Mk5ju?XwCAV1vFjgP%c}-Z*;;+}_^Z_3t*z1;lIRLB2R1ORUx` zHOA^A8WT|30PHPHxKC&S2Yt#S=J&a_*`3+@fo!QT@Ohb` znNcB%z4Gsu%ByA!J(b(k&K{W8ZLUhAtqg8BGM=8A@0+6BtB={@CSOSzgoGo(=Yi1bcB?)<*{P&sk1M6iZz%-bq-ybqgPDmWki3y!apVeA~Ln;l&bO z7FJxw(@UlB*0W7gQk{*zA)Q-Q$OJQxeM^lOs72Z_}*{TkII06~@hRag8--%du!y3m1K z?J9??uA$|5MU?eJD$|fft|Cp}`bb=KT!yZDJlR;DOI`+(0NSMxMb(mpLnCp58pEXwueJ_T#(*bI*skL{DwrK%rg3BFw4r>Itt3-eZAS7Y|m593z z8zr@1t_7T774hPz0($vF0seb_cC82WZvMxSvENbfT2B}xf1xiEc$hplXv0r0O0;cu z&5@|{3d4l=8zxgAM=8hJJ|z|M!eaRS?D+5IhiY~g5t6YV>%cFL%6P0(ZFzP2%=$v) ztYXP2u}J1vJ*^IY*7!QMu`F=KC{5p4>`1?2CPyhBDnDcYwC*|xjnic-_tUOd!!cM& zziRuF`!wJebSSGkhWnR#sMc{nFryKl$JYfPVwq%ySZ=qju!KVGJ_;#KnpC2!$f7{5 z5s-?Q%m8>VJprl+f}W_l_~)vCV~Yl3Q;av3rHXF1<31v3S}&4QLhU#gXxwst)9Rq2 zT)>yX#|IuU8IG4IBT@m?4wu2KA-`it8sz1k^YJd=m1$6ObATGrqlr--wzXFM5L6E#j?6UIYrj2!C@vuMty@{A;Uy=&?UA^5)!$5T30;b% zR?}^1iJ_({EfBLxZ&5?YN29chMdAfepiu#s->FGEKUd$qa+}|AOwM6 zNsEqeD3HLp=ZHK>{1t*>pC*nPw#-EJ_wFDdY$h#@jL+=fDis!>D@w~yFJcF;Ipuuf zvhrB68&KbJNnFZ%p_7tC=SRu{oRx<^RT7YeAjduDdToU04vs~~BhTH5Pq44UZ3 zn&r3FiG+Ut3-`Ey0d!^-;zoSwzHh6*gHCKKfZBjb;Q?_xwy&)8cwW=W9Vd`d2RW6V z{@i??{@}~9V{x=P(A#Illr3S-7xzw3`f#q4^j7QMv?@+o3GlchbUrc89vFa4e$drUn`e` zf5yBh5@23s%Welf;==<+Xg>l(L*d9JVR+nZz2)^LJlirQ|G{YnZ{>%Q#o23#>9H zlZkR{Fx?uGme-1=n}2^%Na~8&_w=#5NtYSydz7hzTAQo_=lUlQngD^Qn}}2o1c-$9 zo}&f>8o47h+6gADZw)i!!AS7&Ml*L^WEv8Vrf|9@w9H-F75%+TR8h^l50#N$q1Ur8 z%be1~;n~y2wKL}}NuBhfT@v`7R)N&xRKZ*|hd7v6#h}aw^=jLASCUXEQ+G;bfiea; zWu4)mw#nbZWRu%XjdBw_td*vKcQSdq+wl!@kyxvaL%h|uLE$FQ*7oGNlZ__zgV5q$ zNTZVZ*#wqCqbET4&x1<}o|DbXjfliOAEYiK@ov^)=^wZ7&9`RW>+aC_Lu!MqsC^s| zWZ7WckGs!zTSn-2R8d7@e8M}PE&DoDp~RcZmz?JenaqyOm0EUq^FzMSclB(9Bc{(` zO?C431;Z4mC_k&mo9D61l!*gl-J?AsNTyuD7m~C#5ju!sm7LyBtfL56EJhbeWlLqM z*Y)XXu%0tDHWAfR-2cyNIIfS^k9P^$Hz`ar^!-*cm_`qnCXMc*!cmIa3B$8A`zGGH z^_DxwU^`gsdmev7w*@GpikzL^F@+H!ae>C9yd6Z+abe6pl@Td#<5##_WURcBLh$6p za2lq0`GXD;(r_GOn!@QTRhqVy$Z=Wa!mMf%GQ;O`)zrqbb)>QEBlG8p1<{blYKGaD7UHwf2$}nZjwIjFLlyV#{r<>w)MVMa-U)f`YU>lF$ENT0V~mFdp}y7%THkzySDw zN%sg0*cb%)+2N^&n%u~n-8F+b%Rv{pfM$E__ME}w!YIrQZed4b*~G-Uz-^}#*^clVON zo&jF!|6mbc^=&}>0~GlG*FC`J^DKZS|6e@rquJeo|5Z%`NXqGfMN>G>tIkAt!_2GZ zs#`w`BX|AsoBpU-T{>v1FuI34^h{w&5Y8lk6%x;EEbh5Ve~0+TWX`VwxK3ul$gkAA z#~Gwv6n(V;!wo9m>p!;s&rkS(uk>CwKX>@Q z8+Z~tm5aeP=Q2!R1G`EEU@)%{kbYkuPP>46yl! zH(qW$f%3<)m931(;Tgt;qgsd#Pq-10g%L%)9IS}mlT?n>UY&~B2Qq(F*(3srJqN3enyJ`a+srA$Ma1*YoZ!4_gmIh5H!9-;@;q;M zy`Jxn8VvWoZv0K2Y!hR4uP^v8Kcl!7AVS(WN518IJP%e9I<($! zi9Zo@T5a)cOaVh}V$mwZTzn;8!>8?Wdjr)t2 zj7k8x#V{Ys-~5{TUjbaXayCz!i8m$f%GZnj%XYYBz34;uPBu$4$!uFPIgu5879k_? zvQIDCI-Wj4rrv#gCtaG$D65;aDRr-x5jYYTlh3^mhLEo8LsH(mhrGj}Be=7T8m|TE zN!bKP+-SyA&C{en*H-WM6K>1yjkXJ$#YIj#+IPD&*WwK+A}goKG*08UZihgE&$gp) z>ImtFU`dzda~CHuq>^fYER4op{RQ*b*0GEgQ&);9X2l5q?<{>Bv zgCxg)t<)2OWZ@`dr|M*-8MF=Xr7~er`A#5kt#HpM5UMMyXy=l8CaYoG#c40V${+`F z9DZzB|U-TC4uAKm;;S5LPIR6Z?NGixl8}>A-jYL0EhtJc$Nj^~yuT zLJ0p~d*A)mM7OmqO;M^yk&YtLL3-~!^xlNfk&g7<6j7=uz4y>Np%VmA>Ai$d1Pr}* z5&~cFIp;m+{SUq$-dsC#C2Mxptl6_?&t$LrzUO(MM(7%~z71$U7=Fmc%BGPk!lK`0 zXwHsb(tRH@{s5^sGsy%Mwnk(x3h*txW;&Egft0u@9?USd3vDqE3Ik~eT?%4PYZG59 zO@>hJIg^t#XooCKhZcC6Jmc8)>X>Qq)@x46nY8yx_;Uuo0{6FcHcgb8fYngNo+cYe z!J{6hNl@b>h~3CfLkx)HPLHq z%y@NLJoLlK)XPAz>FLfHQ@(=g5e$bInP0*866mlpGknHH1zd1a#d+7h&IZ1;b-77j z-W9G1_++*O4}lJ6w|78xn_t^!a{Dfy&-II)@2PIyejCE1(=vHxW*zT-0>N;A6I~#7 zJ|t}Va~--B6i%q$2HD$)+>#iXSb8Xn9c2}%26-2GV=HQ}KY#+L22CIcG_^DYRz0KE;(uBkAIA`^cABKY7L)CIWXT8*#myv7MjM53EBs4Rl zwSQ_PFQ@4IZHfSo6296YC1ZZWMzZnXjX401V5>fwhQtC=M@GHZmbzPhS~!u-I_sH- zTa8hF;x80aW?F~r1n$4nC?gCZexr;%#*MQ?Ww9Y87F&8biq9&Y7lKQ=U*vmxC7BMY zktYI`jV{WyI+^FeVI%1$2jVMIN#o=Pd`-}&_PomlqcaD^MVYw;Q3u;L24=N8x(FK_ z)8Atr`09Sw239a_krvb~ioHt0!Wg*ZG7&_zaLgafzd^>fu2Z>~W3jiM^+QGmtL>9^ z>Vfy!Y8Gq-@#GWIH%-;VHt*Lwdp(0$e8)kTVn#YCmAy6vI`6=(UEiIZ z^b9L-Dd%8^Ijb}4RV2L{iTPRTAijj8xt=RmyZZLxs4Yfl0y@iugK?@FF7#v$=R4sC zfb`sFTujxP{%yl_&5N{XXs$f;!F?5%&}+q0KHwDQU^V|Z56B3NG5QQ{2)>~Qs$aXFS_DwB(|7d?`*VLs01nb#tJ6+ChBLgRU&pEv$VJDd?uyp1^gS; z#uXd2v%!6vF&qx9ZR|n`0?B-gea`H!u)bMhM{PnC$M40%qLF`YzJp2V2_(m8CmI>v2Wewc{9Y@;Fmmxn!0{M-H4KoyKFm(YN6tDA+w zOox-7qmw&sRR!#4M!Ob+<>)EhFSfA&P2)lHd`*fj%~rA$?$yqp1V{ch-_OstCj05X zDVCiNB6}cRn*nB!Oqj~b%Fu+5mlF5G(a}twivHE*I8JRoyF$t5^GF-dTqSjYa}_{&Ql~)|?!x zsyk;AewX6^LSxn8jS|QUnKPV3&B6x!wf@MJ zS&w(Nk1}}i(W3z__Vrfk9Ce9{S9-EU=+6Yb&*L9RhR((&Z-(}wsmLZ;7j(8s=?ii3 zcxt3}Wh=J@$_Vk3GsfghMzPuOHiy#jY)HSB+Nz#gRgM-iMiJ_mKMTa*m)AO>4$y|_ z%@Q$5;xG$c;KQ@I^P<^q+N$%@{y1%BoV&2hSiUjR+-T6$j+{$^KURSn!&sR$H6OYl zv_PlWyyQ7~C?t{Y+w}PPvpuEZ*ImvAV^@q1HuXku&aD7N@ybP0;91?67pXnxqSSbs zzjEZ9N#*2*MZF5`#-pFPwCnwr^lm{#&XyOeWI91vJ%%=4K}g%}n6>#Fm)8`L!~xAA zQ-wRcCZ|WD4Jjues12{ZTqGwhw{U0%*Xv)!gOLH$QFfd)#VKVeu6-^FbIK!Ex<9wB zuVlgQX`Pu-N|_)z0k`q2=cLL5$DW(3a1RpiPg4cyg(LOXPdMVoXJ57rjs6M|vma>( za_6aPfNatst>X5^##5xT1>Q}|gXy~s>-v~)IcY*w&yNL)2|L}238Nnw)*ok!9<&8n zz5gmek}{wnPr;IExqjbn53h_u z`d!8|1!4-cBfkMagh!n0vTJn5uXj_UM|1L2i|ZLAF2dRDzHHRU43;t{^I(GYp@=Y0y+qe^o3fej`UVt%H(Qg^Gp0bl^ zuGyjFab^3ZPP9*0#9G58O^1N-Yh|;v!JEx)h7G9!k+8<3F9=BmBEo||wXUl}Z4_G# z>hW^lqxGizcU6w~!M3nKN)P9`FV~rZS!h zvORe(m30=adVl>g2|r--QytfiPsl7UA}Er&lMt`}tkLt^Ns@jKza!sfU1)5RC;TL7 z!}!EEzJa{)c<7~x>kX$dRu)$V-K4|(n-~XepCGbe$K*ZX8}+ur!o@tXrhRV{SCos$ z4}Y#@5+b;hhgqPH2STP?53KT3NON~@U2kEm)z(Rp4fK{V?7+3y3H_8r-JsVSsK}H@ zfS!iQ{gL>@SUb6Ap8*s_-iTyMHuJA-G{cr36erJop|M4ew|c(nnmLke0i2ip3S7X6 zami7H3b*x#)sq@8O9!WJ?mOz#z!Y0kHeerU&Z36ckVbU<{t}-4j_`6#&DvxEwW`IW zVykO_@>XNm^sj}_B z0a3?b`dYh&vq4fSM5^&rQ~EVG?8I}~8lso3ntlLLHm(fy*`Pr_eW@?!vw!^X%pIL8 zUg|My2yyfuYyRxR!`Qd#m6SxPadnmQK=}qN^u{;gVzb2VT}SK(SFjw{w`o6Q{ozOWn0nj24+chnNj1zx9GS0MF?i+}pg1iVp1q z5-3^gkBXe2F(%*j$3Ari4ijmi!kJEQem*|kIO?RuXN?)rVUw&G(P+F$7He<0o)H-I7mI_4aq`?O>!2 zV?V2g279?gg6r0wTq;cqMM~MbsB0i?mijK;Ezg?N zSEb@qqeonGXp({7!HIJj-d&?zZ!7|Mo9rh$3Y-fu$-HdNV2vKsKqqZwD06gr{&OkEKSiQcq9}oA z=rv~5oJ(-O292DiT6>CQbNth%95CKGY-f3!z91N0zy@+%N6~)AXpr9H4ZPwuAwH=# zJBN^?7uJNJ0Rhc)HAmZM6fF)1^VIb zSTc+Vj4PM=g zYYvM#f{(hhGYss|($RxlHjLjU=cK128-n8QlclKk`sQ*y)c}z}aLBnJ)lOxnf9}9i zYxROZ2dcoKlX=%VYn_?(9tTY4F>sBM+}qzJnj&P9YwD(e2Bqo1%ct`QxTR`o2DvR9 zwd>gW(VA`f;7`4w<}+n0Q0RFvO6)1Kxu|-Dy0M5IL}5m`|C5U6F&CL6P=Zs|G2tGf zc;0%;L>HP~IJ41^Vsb$x4Kk9_Q-h3y1uVTH;)2|<)_?5peIlqfqRD;8&@PQ&GBsJZ z9DN%I(d+i156tjM2jYPzxs~P~sBToDQ2zTn4bV4n0u4psr`=NzO4F~at!(&6bIxAL z$#5}NOFnVGZc!XeP2HVU6jyeCo4Wm zozQ{7KENijM1sQ~hzgsfJ{-y$`|{LsIj8v|cy|GB{8;~|j8SO!dEU79Rl}n4imasr z|Mg0p!CMJh-vIx5`8Qi7N*fbnGQDM<%RKz+>CDPJEH>(aO$ywOD5RI^*TLd*3l_@JC7#|tDfd7ax6a;AyaX7_lFC&s*h z0Vvx^HDP?}Cx@{@vv{(Z*3q-XF+=PZu~G&5KDwihk2%`z*fv{kL4~a}k6q{<&6MLr z#bNTVBp%1=cr^Fb0+J?cflsWRxhcmzpX5Nfymoo@M9O>D3el9DN&D9yua8G4mcGCj zw^G;M5+tF!k#zr6*2p<)M?~Xr4Ty_Xyf`P`8Roh#^*#l~l0BU9W<+tdRm}T4LMD0{ z{fGX@#_s2hwr^&432GiujNN9tD>tKDu=aq4&JygNn~MYo)DW6i5@SO}`+6u97VJbpeF$8q#%kSf#wEES z63L`H8ynbCgCR?$^h;Jo?F0&6P*JdFntd`1)2Z)js1Cpg^VcwtkwOEl;nq4 z_S886z0a@3`3zb{MfRk`F5o-HtNt{wJyrGAn4V3KL}eaZMaLWQ221P>Uw%*l^Vk`loQKWw&P) zuZ8{**XiwT33S*$z99#m1)LmiJpnHK;)?Kc%^!Jf&))F!w$Ivh8`5-RvADIN<1TJsM05qe*{P=mf6sp4Wqb3;iQWy*=kRig8~SxCK)g>;jRq;q^9*{O zKe-a~PT~`E1L+AoO02Yy%4XYAmwMs+WL$ZJ!sx0iV11q9t??+FehD-h^7)_~=>52wR4>)()w6*u zZRcoH;}wzlX1ixDi%vXTKAh$N+GM=jIRC~qh}-xGR*K)xfHdF?&AYkmIAyP_+jf)4 ztn$ z)KWPbLDyVxzX0xw_8>xI!ENe%)bgMH&mo=`A8;BzCm(P$pe8IAIb(MYVGmt${$R0J z-#5ITfxBU%MYGmsu|vtEB`q+)8)@q3TLS86lk=x@km^$E09_J3J&xW)vr<(tSGCPO z)F=8lpuKn-^ZLtat6VCw>&6q(7#qA>)u+^hJ)sh) z#zVIhch6++sSax)K)kK$gS0Q6?K3)E359gzR!g@vXqEW`DKlF$dQwfw!Uww7f3>Z}aJro(FgVo0E_O227#aCsvHHqNcxoJ$Yl z0B4GZO0bHh4xjtKufW4RzesNzBg|&_%^c1rTuH6a%u8 zE}Mxh-%<>?n;U_C3GjEA0OGAB`dB4k^TJv3S3pVFl0UbQc}onPG7$=e5#{o6REefo zb5@Kx>i#P5=TQ9KGvLt6bGA{{x*si_dfBj%SezIq$=!$B-7)ZvZkfb+znfYY>=$JU zdSd=kLipfu_WMRw}R)|aRRy&K7k8k(ya=c2>c{ujwUCr=$i)paLQ=<~hV7oDL8 z#UDTVsNaj(GV_$#)PK%UkCoW6)*kM)SIw_;sbNX&_*2;u!FXvIx}G)X^K;O!mbU8J z*RY;%tCu3T#CLAFSxob?CXY+^*N2Z;N=#yx#};K*BR(UKAi5mN33~xC?-FGZPa2sA zp~@?ttXQhD7X$+xhN%v?Z^iWmK(xxuM6PC>b0QYEijv98tMjj6^5=*UTSa{_@aKA_ z+_2q*le(ar()S$bDeA+=(h$8~!LL%z{@S`hr+Kz|&+|f5@)!E1s^3xH+SB$iw}CxX zBWu6Tf;Mh!=j#?aMn8zWtx>tnms;{>_ulhi^lmB3+*|BX;X@B4zpq7~)aiFJb+kK6rTZbi7@X{US#reX#`F&x_0C7-b6g_S8AMtS4U_r*Hdn`z0`5gw~U)#OhjZLy%8ZNhcz6Gye$X44lYPISqJ|6x?pTp$rC> z{GNI|aAPasl0tN3L#vF`6BJ*qQKgjYZ8L7pIcKceIKIlqEkLI)WYq7WbQT43T_WB& zk73Vo_ZLsm-zE~;Md_L}$dknNH6~Q)F0{?IjU>9%dwz|IpHJNgF+NwEXRi6-bi#6G zxXqUf=19e!ooBcwSA55+HN*rzNTldr&u)K=vM`>?Zr@wx2fl3!YcD#E0au6*!3fys z0(@wnpFKsA?u8x^46+c2z4F+TJ-4T*y=fQZLaKBzvfNvSl)nlzhhi-unW|MZ+YRQFbOV-W%naPx+jgv-F%QwucU{PJ z4~}Ih?#CJR@T&~mRPwqr0)s-MO1i`lqD3*b!g-$_(#6OR8W{?mL&(~Os&{1e#fOp3 z1LE>s+}yt7qJ!qe&Z5S#XHT)3Jd}moo=99@(`--kbOwZw6OabFc*0`90>1)2<@=!8 z<|4dk4~qCttYl2b^bg%hrn40@rH5hoMd523W5AN7HU8+wawyPH!3b;6i~jNA#cP&D zv5*!KEfTAK|JgorRLO+3rlg{aSrMFh0d(P5VPU@)nen_}iy zV2k~68AOz+;VYUDT??KvhUrtdNQo&;{g|I`xXSCFn(nx&s+{hsD(ZC$N9hb@Gd($J z3aVFpjmEk}M4|5&5l-x;z}>eDuT_VQq?~*zN5LKB*h}24)n?+wXDtbIAuA%=#5D_o zykQ$5{g#Nh(7CnvxEbFH!2!2}RP^+TD#`V7DCW5k#_gowHYpl~0s!1I^BfUWPN7ci z+SeNSR!FBs-j0EUk{0w>31WPtjm?WIV#)r=Y{ofN7y&nQ97(8w;XY|{ZkF}&E20=q zMqsj4;DY8ZD_o2HSj#Tn6yETf@z5I-mwZfn`lCCL%DBg<%${bhnH3C>QX8JT`f6mb zy6RYIgP4q$ENNzaym&&*etQwWBur`HU9mb4;4ROIA5%VTxIs6ldx+70u>9H&Waw#+8$9H)GTTgm7 zrhYHpJ5XN73mJY~Y#wyV=xot1{8aUthAa_9k&jm^S8)J%E|q|W8TfsFcL%9Nm-OzQ z{i0S7tb3`zB-xTjqm-R`pEm)a{BruaF`?lF#zs{{@_jo{_5GVgZBF!c>-RH;+=Ixz-EWh2T}h-LqW`i~(8E#O`|kY2y@DsY zy7vKJ(!PBF@XBj<7*vb;0MU9 zU7DG}3m4a(d0|1n@DW76n4C|K$_y5X_)~^@%VSBth|tihYE+y%ffk@ zMJCxYn6|aOR?acMcbZ@PBKTMRAZ9d%#n<37T8Zgic-}Mgb0gPxp7&bE&lrZI0o!#J zfFIux14LJP%%2ZOM6=p;Y4K#yk)wqR(Bw~7aZ=hlH#V3#)hhE0+AagcI6fX705u}`K%wj1Z_pBP znrIl&W;2f?F1qn?aT{;f-5-vxBv+PSCu|4u1T#v&nz?BUOfFTI00FZ5S`#D0{^>RM1wd8??4<% zVudN_4WrdvizM^}95mPMK7`#$^b!Td#>UaS1UN^hnFy#U$a*mTcvt=pVv1ku?sso` z^Nj9d)-wD@)pZh8cBUzOv03YC$!7hbTeF;b%T92JDsVsPp-+w9D8F zhT;xL2vG&qZ6IaLv0OuB;L+wjR?Dnl;-So#r9 z^_7g}IR74|d$_{HXwps?)*Un&T>zLf3RgjvH)40}&rCPEF|jYSy!|O#_Mhd=oC3AG zc-{UY{qA8?-Qk)p`~IIM`lo^Kmfh3O(Y!9lM5V5O zLj0el>%*z-{_n1y55Ii`PU$J zmDtz+ZA5>*M&BCr5g8Gq#nI3)|4%8UN4M*C6rTsie;Lth58vIxCzG;}A^l&@?^68T zT4nSjzi|Gy9ZiQsQ#rzLwEyGzZWG}MG<~f&M3|A{f7>yn?&xb+lHpGhE@*a@y(7+VNr3h|1+;_ycfSq&0l_gOsvN{(nic69d-``6C0P9VT_nq zkID$}@IR(sxVUVT_GajH|E}}~Z6V+&zN`K(lMS{;$#56fL2y^FDfHvNTuFy@<6}s% z@$FkY`s@0iy3t{II!2*ptI*Mq1JIdgXmMItV)xIF6AL$xBK#;sG?8yA?Xd1{et9iyc`yU?nt z%u0Sjg^Qc>?TyRC&Ne1ozfV>iRy+(27x&L}ALQb#pmWm5JF}u`tZDNp5HfQ+_2V{= zlk;I_iY%1Q6?I5eNtMN9e=lhu1x;b3_Q{e2r{8(36u9^>9Rb8#A4t-+QmG)rO68kF^gb29sQ2~9bN#U8Z@Zn7_(TkBhjnv?m+_oMYH zuuMe)(SdMApyFV|6T#;l-=s_`bGd*a&%A=7CUc$+yirGwR`7yx`SE-sr4u%K;DH9o z?GL6*AUG_vQ_x@}s*`@?Th_48S!YA5h#n}X#0}t(kdfe~jX+&XA?g3o{%m_Z$*Lc3 z6RzVzW-|P@QW*i>D-6jdwWBBG-Tkil^l4$=B$$INA@bDxfz{7$_RklUUO5R-vh52k z0ud3f6=kDrn3-Muyv#T9md9!85GO&A3^XY~jR{)|B=s+razQOh?nPR1AL-urgSV(^ z5q(HTYS#!?K8uU=2cI8rhg_SJP`CxTtqrCGG0zmK4hbi6YfO=Tk#4~`(<9RUB(r{q zE(FteH34c!R+=a!(}Sli`~`~YC^nDgs+&5k`1@)5jru$;5Dr*$5lt@Zm0Vd2O_GQR z(=W(81`r2~zNVlRB&JryjVj-R(dn%W9>^B!ZdZUh zBgq2Nv>2~jPJ|_Dk$b@ytsN^3F`I~0GS(B)eP#i8xiyP5`EGx3xa*V`8 ztD1Yj|MDOz=R0#Jo#}B#azA{K9+bN$h<6xR8syW)Wpi1dQ>?)iJ^tCaL|q8HmM?D9 z?rg&oiqa(-porFH9CC?DBsDOm@$K!)8FH{ODp!jD$=iTxJh#^8a$8|rGI#~H(R(8l zz_A!ZC7*!QTPIRM`6Nlcmz6{Z*9~r)x5&3W*hpXKfzmb4VS;bG$qhVnExf!aM;byPtq!OdFZ zJ&Y^cuXr`Ckd&(amA+QO|$X7Bd!gTq!0bO;z~I*pvkwf5xI7!_|;N0!zHh z$NPtWR!ChH1YYzehb(+*NzgyMF%JST{mnvyko#lIEFtCIXA5y3Zl8D?E67hw1|SlY zOE3|h{F%M&&RczwHYxU7`8Z*J{aokk#dNq{*8Ma{d|b*K>GU9!?G@O&lJa`ZrT4xb zM{_oZ(HC?8vkI!8{OZIwkbZXpA>77`!#K7TgnGHC2NGBlEZNp5;`nI1Ae`x8#=LP>DiT|@Tq%cqng%|fLo?wFlOJSmj8Lch2IfyPsz~Q$smrH-G_{I%~ zi=6W>Be$fAQUx@Xiz<{0WE5m>XjOa({a34(w4C-cR4@{fe!66G%b!P@05~7}M4Czk zNbrG?oYgxA!`KWi(_$Ba){ZbJA{Ve-_3JE zJgJ$Ch&atiP@K{B`eQEkr|d`P>urJI70tG2w9Z3(AL|)45E>Gi(n6g5{ytb0k`xi_ zhZKE2)JC3L`~}6_*KbCr+uv7^@m3vu?Q)fj-RdT;_T$)=$+VF9)8KNDaPz~RRzS26 zxbEttNUOKF&gbZMK08!(XhvIZk|PMO3?wBLS)^eG(r~dx5k${v_FPFt#|7nj#fAX= zuw4TZ^sZhi9NHq4bNTLg8C072TX=gg#!Vd#!z-##3e#sRSN)iHBhks`j%x%2i!CIq z8(}9nc64BM7Mxw55ggj0SW)%w$z{}j9Q;uUFrkfO#vE%P6KwcI)lq{({kpowVD#4J ztzI^;+}6=Kjf+B~<@>2ivDMpGC0Rb7oel9gi6|xUV_GbJi__yZ5#dYgT+$fn^?T!l zb`j*qfD<{Lar$u_xN2 z+P$qZ>b;pSG`8!xm+xkF5gda0Vzu<(GNspOs#1--V>d}aOuv1>JLWps*>>T)mPC72 zY2fV;iY>>riEYS`(dZ$NnJKi7A52Qq4;69e7N7H5L11hNr$2!$hV9zCe}I5RnX>%@ zi9G3bwhCZ@7u>#8pEs{QP^t)qXTdhjtdOxpyJFbr4$>L^^Kp)Pd3*0!oafsvu4w1} z!7o~9If1g`S$GIqVj_H_Wi@JI;x^%(N_~y1F~GK9fhAxIIye5X$-Vv@-v}lhYl|3X z>a#gC)lZgv!)!U|oiJSWb9{@VpM9suUX;c+5$Scd8taC`h;sym19;LDtPHYOWtb+V zShvdYL>}V7>A9x?FS$Ymi|B=)gak`x`H@r1T#jZVI2T;x-dCTeoB8+CzF*!()EzCG z@y%syHFw5VAI3jw+zawt{(zoC3JhAu6Z9t3je9VG49?Wkn@m~G6HXp1rU8kJz`^@8$N;+rCSe^Ir-#WoxSNW(5?572VQ(4L{b&po6dPOl#=r@oA4 z*ZM&lM#MOh2+5Ofk}NpLIw#L-!!>L-___C+QMe?_F3;Hxc}bz^Jsuq}1IQo;@y5cw zhk&~1q-+no|Ep}SFYd&DIAF$g*v(rpb&yDPQJ72(UF(xJ=sLPN_&yhs?YWNo+kAZ* zV?N_IC-E3LhARx5?eQopXwYG{UWF2d>pmOVv? z&;S~4VHtisj_LAi{2EL8lJisis%C>Hh#UXi9{11sCBCA$x=W*IsS?p`a!4?~0SqT! z;^u(t*Or^PM-Cme@mBtAsryARsNndc%T#FkZwH19u1`vWKwi0uOJVd!iWS9x4>n-{ zbe&7ijSCF)=sMb0N$r%?=62L3p{@s1+i^L!WXyOMd`Nwlil0rPMn4vgfZm4%CKYNm{KPF5;r$)THHow&xMBE zuwM$lZh7bP!);{aDK!N>%fe0dC z2!}PXI?*i`#bt%u%6l*Jq-;NR@r$@Tp5PyVia7;t`N!ie&&#i+hqiEU8)8@!Sf)QX z(?XM(MUB{9j`g|JbclQ?vt#`Bl3%A%_5X4`V`V*W9xeYu~=H`}Iy=fJ46X)^mjNFo#~U!>HI9CNOaEWE%+N zB9kpuqi>eV>4=|9U zb(6enKsrrP#y~vrH9LIm6FG5oFHmqPPr%H%^M0K2Ox6UbBIh^zyjMw;Xqf|k{oba` zn3a8Z#|qHO^gTUy>_W@Opn%!G#_yG-l(yf+qmQMEJ3%eSM?6((rnTgP&f>}nP1=W) zcB_6O`Z?H;@!B{z@X3{J{k<1AnD(z?{OiK`=}IC2N-R8;Yq=pcj>di$@sANgGX56# z^=P-KRbl1a3Xu)>%;eTzMenuF60mtbt#Sjl=yfdAat49dscY&acrXW>_DaG*sd=gM z`bUyq{L@>FAE`3tM*te%t+<|J6T)~s)R$#>m4=uK?2{B1!yIA+$Kvjm((E#R6}f#w|M$o}d08 z=Czx@FKlYDmH%>h1JVEaC-pOp>Nj{DBiNv~<7d)>kel@zC3b$>US@>#^>q>!b-NMm zWIB5Wn_r4C-f#wM$ZId%Aq5>oKjL{1yq;(q2w4i;s_m9J^gD#`LM+3S=rZOh_5^S{ zIXWmJS{+LT%f>z)`s?^JtNrf+q@RVE!D_o7E6jkBhl%WF!ippxquiSDhvA>S1ANtf zl8^Q+?qJ{aoKl*Tt)=8Ii(iE<-zZC3p|6oy6UD^-?!4-=487C9BB8Wc6$m=T3XPQM zZQLe91#e0`Vul6TAEu#A>@KW9dwYeJx=DmJ!M9TBNEM|CDR`$xyuvp{xLF@--Ax;jzctfUA{S@@1>xvj&FQRL|Lr zGTGDl<$5{&(o-Ni@uZ+k#!s8^Q_6T@b6x;RNx}v@E2mEdMWWh z@(}l{nwhgi!J!6Td>&*Cmah>=l|DUJ4V7@=8(DedXB$zH^nFWNull6tF>n7Iuf!q~ zL97*@q42NayEn3<*a!_+W0mY<+gU?_#T<_O^QDFIJbJA8G!U%PXqUGN}kRrKl~gtAV*|I`e2w z{??1utG6%G)ErwCbwI2wBX(t<#A0K`ZyhhVUrUK_=PdIhgUsgH-1fg-E$cNqV)l-z zbr?7Klf)+p9Bne-8M+>6P3Eu`QBm-Q0y^htdK&Q4pLSTp9CxMdg z#J*Nf?GTMHH@O9@NA@$`AU$`|rH~6E0!YBM_J$<@5%8gr*6_{F_bp0RS5``IWQ!4TuRzSjrxbPNtx5D=@d{8+k-M;JKb4S$KWJ^0FA>CY#`RDT)T(0iSZ(0`1|N8kNi} zgjXlV?V)~AzRKm6dv=xX(W zCMG8Ac)o*HF&E6AYX$Xddov3Q)(im`sX0G{>TOmP$xs#`%X7zs^f9rFR-hDjG|e0` zhm6p?BE#5zT~J2V0xusC{OsltxtU6fIBd%joK#1s#pVv<7Ze>i$>r0Xc8X9nzjL+K z6It1*U>x`s>QuIwYJ8PuqBB`lS{Fsjb3OCoi6zs%4ad$vHdafz6$*1hi-*D5*}svUREyjr|44q zZItrqY}kOId+|T$uy}bjw+?Jp2daiM5Y5$f;>|NF%m7GMyT? zATL3?DJ#h;5%i%?h*l#qyeq*gq312g$I*;F3$p<;!Esw%j=Xzgz_|WYPQEu9ltiXO zadV^6aLExnqV){k4wqa4h?|sG30rSi{zLI}vr$X|;ipRe4x%;?oW>^^3jw19JMP5v zDE18sT%CDfy&MVY_pf2V{3uiEP*8uj$;MytBS z?-^wv|K!3ew{-myNzl5ccsU}~a$P7%eHetU7X!cK%WlA(u4_FIRgY4~s8(lL+hCNk zGqTmQM*efgPP1w#xip_QltSjGk57Ui{iBB@wF;4V5Dvlc5-nu$nT@4&(B# z>0%bsra}O1mY!1s#25{Pk+$PBzM(9Hq?}hHFplt)`W#6Afc|w9wTGK(05#pzl%y*~ z2l$MQX6UXh#kA*VVj){N50xMMUip%I6|edF)cv_Yl6*be%A%zwYOV&))VwPp78N^B z8s|LsdQ6t<^EgdkL?$}yDw=s%ZHKI|><+yMKHHogzkVlvN-#Z)XN=#JCT`(je zGLm4_X6)LGw&Kcg4&c1W?%P;FR9*dyiN1a;LnWQr%@N4tT-ttW^WY8xw8{|X0e^u07~xd==TfN zuNRZs=hQ|`JGXAIo8!UjJHwU%r@tef)7d#jHJGAVwuMewxy+?=vqI>7AWXF}epA=s5(d(;_v;u6N1Cs4M>47{o@r~f&NM-wmTluHpF`ASMN9w_Vd@9xS z14Sf6*zTKSfJ#z>KwTca++kiL>`&6->wC0=&tde|=RyXR^PXpWHHaB#ZxD3ASFhR) zob|iNbZiFY+uS$77ljj#@-JPv7KaV=JoRT568XAVU%YQ8sDs&BsS?ym7cjch(J~YT z@nmi!n4*OlY4!2MMzfkfs7Om%W!eppM)3ob946CJ(3A9vxuMx8u3*>Mgo-JwFBh@h z7JCh&6G{bs6DkyrNcxz^E$7(cqYx|}O#pKKEBi&2LoyI7fRlb^80yG=b*y*Sv2s6- zH`DXJ!yLrexvuKE^RTQWfWW5{U#GjWI_IT)tO&2VG&7KGraV5dm#2)(Ex- zm0+&UImrjmgN=CX6##XmIta6mBmZ*W)K^W=2yN8W#>Bk%ua5Qan@_B6&-rn*u7MNHtPRWS}EZxqt8QV3SEXB)`HWI6uv@SZfUALa`;n)+Xm_K3Ru zpNx*Gy|zog%~qEjm9ygUS49isgf*xt-a`e~%$vNCY)%=h|6?=oKUi$QDJw9pV?gF0 z+bkc7#P-j@t$_cGe{(dlm!NCPs@sXD!l>u$KOnFFaH=2bLSvIVztHmTkVzRsBf`T- zJHa-i|E7&{l?1l?ycsK^!Qx6VTdtF1Ym}^w!WI^57Jm-!F}H*}TV?PH~?qFMS%ylk5=q4&clv)OFm_WbxxngBeqHAlX{3P7f+`tqxFp zsroUbW<4^w^eW+oJ-R2m`zXqvL}7~<|It@HPtI3vh1XP_9*XxePAWn2Kjk}5w(J2psNth&Cn?_AG&2N6Mk} z*Jex%b)xLX8k9fe+!OTG^F$0r{z@EynF%me@I#cMl8ld_%0z2%d>sP@#cm{IdL-Em#qcL4 z`Y;YR^2qZ(WNH{~3H(3FBaKq_1J!VlpEe+9d_8H`2fCAl%#5&Vl`mJGpw8SmX>ilRKl`!>)U zw>RBL6uuGC{F^4#bS}$IvS1Wgg7g)#sM>_c;WJ({F+mQby&nH-u4+&Mtk%tl6rP^{ zg#smSCctfb=5HJR8LtI({B<>QaTCcXQtoy=JzkiNkD>U|u4)m>Z#@Vm+Fa2GTdoVB zSYjEpPduK4*@||bD?i}p@%hdvQN0$5@|vTMd=iJk+yS!`(y&qgk?MtPc=ATVI!X|; z-H1N(i%wG68-C0sH@c&gq^;&|{2dZ@%)rWhOHf#5T^bT;weYDD{l8AO5n z$Ndk+HW=mfWvfgXeL6?H9_D~{L(KlZ*L1x`u7TH)T3PLDvj}N{);U%QK|$9-fDQUlesiSase2I27Hq9qcmT0q zg~wOaBKdyo$zQ%Cq>VS?7@=w?P25N4=E+3_H@7d*kSr^vi{|$oXj@zP+{GS6cWjwI zFt~(!_|qA~|3&9Rxf_!Zp4Fl^D?!*PwGq}+zF>Ch=hXux68 za-Qa9`6QH8I*S0a4?T?h&tVU%?*$U{KJiImd8GMss%mqf(bVZeRw{$&C)eun5hVG#ybY*z-kX1juc;tYf)PF&PxOYHfdFF!)Ue$j;P<#mDeZ z|2qBrBMvy^ft7HCb8+0ir#8J`7&lG5H$g;c4tuKJhAw)=cx1OEf83$$V-Kz^>VgT~ z1oWYQnTpt1MJRL1O`gRlbehhw=5A|s1AINP#F2U3jApxCGETai4CK305wgXEpqJW{IQIY26#^w$?{y^JI@ zNRZ*`$0KD-f^%pM3Ab1+c#)R))K^?Hz`vG6#?UrtQKE%-_J8c z>#YVm?h||j3{(cB=9}uw;i;>5B+1~>F zmjl6ucap-y_@=-KRXP#O7dT^qg(Z_(tCaBK z2;Cu9mixL#e@jss0#5j*Y|3|&s#rr|DBY(R0n+RXUpTX}&VtO$2k@EmfUh{%--K%m z!j0e7CFNno3PgfkUl`!vqB=e{&?)xngRUM-R>Z;rnJ{ZEKB+Uy1izLmA>40<)zIIK zcxw5_vhH%Pd?EdI)IKp^<@}uD6|E5waR4+OV{=Y^yg~ zaEf({c?03tXQ(0RyxRjfb8-yy5CdDsRYf^I9K$7^Z*`>~)%4w>w z+VU$R@R!Wa+$9vuVGvS-1Cs04DuKITGRUxY$Kxoa>(Gpa^UBz_n(S2;OXACU7Yd;@ z5T5#bf|SyVovRXU%!vQ}AXwAKB|?9hEb#SpV5nADXlGsDByuJp{1UGhrl031dUHwj zDilPCo1E+g?0XZW3|g4>gxK9&O?khF&$V{*R)Q_onoV;vVpMa!d0g%=;=q+ky@lH; zL(bL4$shZ^jmG7Qm6@2%yZU`-_hkHQZ6?=niaCNXmbeLI)}ACT)--wuj7ay^t`U7- z9wLLHGlse(J7QdYMhi$Mg%$|04dR8E%&CZm>rUKZwSzmWL9*-J2CSXe8I*lpsd$#7i>m z1UTY!{$O`q#=iQ+N2`~X8nsKqF-uefytRNha)@0%M4xoE0~bTx*{DA&1<-xdws5I` zn!;&o)0df%Nam$s7mZjis-P!!#bg!>#EA0ZCrDLr<`6#LLa3G*IGq{I8; z8#)aS#Jptl;w0wwz_KsaYUx}(JYJ;z_dMA}vp5C*r+WTSuf|yz!_3HRKLHF^PJ{;5 zd%w`r6je@@m3}%m6OnAc0N;BhngNIZ%ugOa3io5&mC#HV|9#7Yl9N`Js*^Ac|8L;| BtnB~* diff --git a/1-js/5-functions-closures/6-memory-management/family-no-father-2@2x.png b/1-js/5-functions-closures/6-memory-management/family-no-father-2@2x.png deleted file mode 100644 index de0506de78dd28ce6bf9d763aac678b58f55eea8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22996 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 HXcO@t&zSqt diff --git a/1-js/5-functions-closures/6-memory-management/family-no-father.png b/1-js/5-functions-closures/6-memory-management/family-no-father.png deleted file mode 100644 index 59391ec677e62d48668d4d10b44da880087f9841..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16531 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

    SygZ9yLl%f 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 HW5oXe!W+vt diff --git a/1-js/5-functions-closures/7-with/1-with-function/solution.md b/1-js/5-functions-closures/7-with/1-with-function/solution.md deleted file mode 100644 index d4a5284b..00000000 --- a/1-js/5-functions-closures/7-with/1-with-function/solution.md +++ /dev/null @@ -1,21 +0,0 @@ -Вторая (`2`), т.к. при обращении к любой переменной внутри `with` -- она ищется прежде всего в объекте. - -Соответственно, будет выведено `2`: - -```js -//+ run -function f() { - alert(1) -} - -var obj = { - f: function() { - alert(2) - } -}; - -with(obj) { - f(); -} -``` - diff --git a/1-js/5-functions-closures/7-with/1-with-function/task.md b/1-js/5-functions-closures/7-with/1-with-function/task.md deleted file mode 100644 index bdf540ec..00000000 --- a/1-js/5-functions-closures/7-with/1-with-function/task.md +++ /dev/null @@ -1,22 +0,0 @@ -# With + функция - -[importance 5] - -Какая из функций будет вызвана? - -```js -function f() { - alert(1) -} - -var obj = { - f: function() { - alert(2) - } -}; - -with(obj) { - f(); -} -``` - diff --git a/1-js/5-functions-closures/7-with/2-with-variables/solution.md b/1-js/5-functions-closures/7-with/2-with-variables/solution.md deleted file mode 100644 index 531c8a81..00000000 --- a/1-js/5-functions-closures/7-with/2-with-variables/solution.md +++ /dev/null @@ -1,22 +0,0 @@ -Выведет `3`. - -**Конструкция `with` не создаёт области видимости,** её создают только функции. Поэтому объявление `var b` внутри конструкции работает также, как если бы оно было вне её. - -Код в задаче эквивалентен такому: - -```js -//+ run -var a = 1; -*!* -var b; -*/!* - -var obj = { - b: 2 -} - -with(obj) { - alert( a + b ); -} -``` - diff --git a/1-js/5-functions-closures/7-with/2-with-variables/task.md b/1-js/5-functions-closures/7-with/2-with-variables/task.md deleted file mode 100644 index 13705a1d..00000000 --- a/1-js/5-functions-closures/7-with/2-with-variables/task.md +++ /dev/null @@ -1,19 +0,0 @@ -# With + переменные - -[importance 5] - -Что выведет этот код? - -```js -var a = 1; - -var obj = { - b: 2 -}; - -with(obj) { - var b; - alert( a + b ); -} -``` - diff --git a/1-js/5-functions-closures/7-with/article.md b/1-js/5-functions-closures/7-with/article.md deleted file mode 100644 index 9c6434ff..00000000 --- a/1-js/5-functions-closures/7-with/article.md +++ /dev/null @@ -1,190 +0,0 @@ -# Устаревшая конструкция "with" - -Конструкция `with` позволяет использовать в качестве области видимости для переменных произвольный объект. - -В современном JavaScript от этой конструкции отказались. С `use strict` она не работает, но её ещё можно найти в старом коде, так что стоит познакомиться с ней, чтобы если что -- понимать, о чём речь. - -[cut] -Синтаксис: - -```js -with(obj) { - ...код... -} -``` - -Любое обращение к переменной внутри `with` сначала ищет её среди свойств `obj`, а только потом -- вне `with`. - -## Пример - -В примере ниже переменная будет взята не из глобальной области, а из `obj`: - -```js -//+ run -var a = 5; - -var obj = { - a: 10 -}; - -*!* -with(obj) { - alert( a ); // 10, из obj - } -*/!* -``` - -Попробуем получить переменную, которой в `obj` нет: - -```js -//+ run -var b = 1; - -var obj = { - a: 10 -}; - -*!* -with(obj) { - alert( b ); // 1, из window - } -*/!* -``` - -Здесь интерпретатор сначала проверяет наличие `obj.b`, не находит и идет вне `with`. - -Особенно забавно выглядит применение вложенных `with`: - -```js -//+ run -var obj = { - weight: 10, - size: { - width: 5, - height: 7 - } -}; - -with(obj) { - with(size) { // size будет взят из obj -*!* - alert( width * height / weight ); // width,height из size, weight из obj -*/!* - } -} -``` - -Свойства из разных объектов используются как обычные переменные... Магия! Порядок поиска переменных в выделенном коде: `size => obj => window`. - - -## Изменения переменной - -При использовании `with`, как и во вложенных функциях -- переменная изменяется в той области, где была найдена. - -Например: - -```js -//+ run -var obj = { - a: 10 -} - -*!* -with(obj) { - a = 20; - } -*/!* -alert( obj.a ); // 20, переменная была изменена в объекте -``` - -## Почему отказались от with? - -Есть несколько причин. - -

      -
    1. В современном стандарте `JavaScript` отказались от `with`, потому что конструкция `with` подвержена ошибкам и непрозрачна. - -Проблемы возникают в том случае, когда в `with(obj)` присваивается переменная, которая по замыслу должна быть в свойствах `obj`, но ее там нет. - -Например: - -```js -//+ run -var obj = { - weight: 10 -}; - -with(obj) { - weight = 20; // (1) - size = 35; // (2) -} - -alert( obj.size ); -alert( window.size ); -``` - -В строке `(2)` присваивается свойство, отсутствующее в `obj`. В результате интерпретатор, не найдя его, создает новую глобальную переменную `window.size`. - -Такие ошибки редки, но очень сложны в отладке, особенно если `size` изменилась не в `window`, а где-нибудь во внешнем `LexicalEnvironment`. -
    2. -
    3. Еще одна причина -- алгоритмы сжатия JavaScript не любят `with`. Перед выкладкой на сервер JavaScript сжимают. Для этого есть много инструментов, например [Closure Compiler](http://code.google.com/intl/ru-RU/closure/compiler/) и [UglifyJS](https://github.com/mishoo/UglifyJS). Обычно они переименовывают локальные переменные в более короткие имена, но не свойства объектов. С конструкцией `with` до запуска кода непонятно -- откуда будет взята переменная. Поэтому выходит, что, на всякий случай (если это свойство), лучше её не переименовывать. Таким образом, качество сжатия кода страдает.
    4. -
    5. Ну и, наконец, производительность -- усложнение поиска переменной из-за `with` влечет дополнительные накладные расходы. - -Современные движки применяют много внутренних оптимизаций, ряд которых не могут быть применены к коду, в котором есть `with`. - -Вот, к примеру, запустите этот код в современном браузере. Производительность функции `fast` существенно отличается `slow` с пустым(!) `with`. И дело тут именно в `with`, т.к. наличие этой конструкции препятствует оптимизации. - -```js -//+ run -var i = 0; - -function fast() { - i++; -} - -function slow() { - with(i) {} - i++; -} - - -var time = performance.now(); -while (i < 1000000) fast(); -alert( "Без with: " + (performance.now() - time) ); - -var time = performance.now(); -i = 0; -while (i < 1000000) slow(); -alert( "С with: " + (performance.now() - time) ); -``` - -
    6. -
    - -### Замена with - -Вместо `with` рекомендуется использовать временную переменную, например: - -```js -/* вместо -with(elem.style) { - top = '10px'; - left = '20px'; -} -*/ - -var s = elem.style; - -s.top = '10px'; -s.left = '0'; -``` - -Это не так элегантно, но убирает лишний уровень вложенности и абсолютно точно понятно, что будет происходить и куда присвоятся свойства. - -## Итого - -
      -
    • Конструкция `with(obj) { ... }` использует `obj` как дополнительную область видимости. Все переменные, к которым идет обращение внутри блока, сначала ищутся в `obj`.
    • -
    • Конструкция `with` устарела и не рекомендуется по ряду причин. Избегайте её.
    • -
    - diff --git a/1-js/5-functions-closures/index.md b/1-js/5-functions-closures/index.md deleted file mode 100644 index faff5532..00000000 --- a/1-js/5-functions-closures/index.md +++ /dev/null @@ -1,5 +0,0 @@ -# Замыкания, область видимости - -Понимание "области видимости" и "замыканий" -- ключевое в изучении JavaScript, без них "каши не сваришь". - -В этом разделе мы более глубоко изучаем переменные и функции -- и замыкания в том числе. \ No newline at end of file diff --git a/1-js/6-objects-more/1-object-methods/1-call-array-this/solution.md b/1-js/6-objects-more/1-object-methods/1-call-array-this/solution.md deleted file mode 100644 index dad88eea..00000000 --- a/1-js/6-objects-more/1-object-methods/1-call-array-this/solution.md +++ /dev/null @@ -1,15 +0,0 @@ -Вызов `arr[2]()` -- это обращение к методу объекта `obj[method]()`, в роли `obj` выступает `arr`, а в роли метода: `2`. - -Поэтому, как это бывает при вызове функции как метода, функция `arr[2]` получит `this = arr` и выведет массив: - -```js -//+ run -var arr = ["a", "b"]; - -arr.push(function() { - alert( this ); -}) - -arr[2](); // "a","b",function -``` - diff --git a/1-js/6-objects-more/1-object-methods/1-call-array-this/task.md b/1-js/6-objects-more/1-object-methods/1-call-array-this/task.md deleted file mode 100644 index 6ab74bfc..00000000 --- a/1-js/6-objects-more/1-object-methods/1-call-array-this/task.md +++ /dev/null @@ -1,16 +0,0 @@ -# Вызов в контексте массива - -[importance 5] - -Каким будет результат? Почему? - -```js -var arr = ["a", "b"]; - -arr.push(function() { - alert( this ); -}) - -arr[2](); // ? -``` - diff --git a/1-js/6-objects-more/1-object-methods/2-check-syntax/solution.md b/1-js/6-objects-more/1-object-methods/2-check-syntax/solution.md deleted file mode 100644 index b030823d..00000000 --- a/1-js/6-objects-more/1-object-methods/2-check-syntax/solution.md +++ /dev/null @@ -1,27 +0,0 @@ -**Ошибка**! - -Попробуйте: - -```js -//+ run -var obj = { - go: function() { - alert(this) - } -} - -(obj.go)() // error! -``` - -Причем сообщение об ошибке в большинстве браузеров не даёт понять, что на самом деле не так. - -**Ошибка возникла из-за того, что после объявления `obj` пропущена точка с запятой.** - -JavaScript игнорирует перевод строки перед скобкой `(obj.go)()` и читает этот код как: - -```js -//+ no-beautify -var obj = { go:... }(obj.go)() -``` - -Интерпретатор попытается вычислить это выражение, которое обозначает вызов объекта `{ go: ... }` как функции с аргументом `(obj.go)`. При этом, естественно, возникнет ошибка. diff --git a/1-js/6-objects-more/1-object-methods/2-check-syntax/task.md b/1-js/6-objects-more/1-object-methods/2-check-syntax/task.md deleted file mode 100644 index 44a93141..00000000 --- a/1-js/6-objects-more/1-object-methods/2-check-syntax/task.md +++ /dev/null @@ -1,16 +0,0 @@ -# Проверка синтаксиса - -[importance 2] - -Каков будет результат этого кода? - -```js -//+ no-beautify -var obj = { - go: function() { alert(this) } -} - -(obj.go)() -``` - -P.S. Есть подвох :) \ No newline at end of file diff --git a/1-js/6-objects-more/1-object-methods/3-why-this/solution.md b/1-js/6-objects-more/1-object-methods/3-why-this/solution.md deleted file mode 100644 index 693d3944..00000000 --- a/1-js/6-objects-more/1-object-methods/3-why-this/solution.md +++ /dev/null @@ -1,32 +0,0 @@ -
      -
    1. Обычный вызов функции в контексте объекта.
    2. -
    3. То же самое, скобки ни на что не влияют.
    4. -
    5. Здесь не просто вызов `obj.method()`, а более сложный вызов вида `(выражение).method()`. Такой вызов работает, как если бы он был разбит на две строки: - -```js -//+ no-beautify -f = obj.go; // сначала вычислить выражение -f(); // потом вызвать то, что получилось -``` - -При этом `f()` выполняется как обычная функция, без передачи `this`. -
    6. -
    7. Здесь также слева от точки находится выражение, вызов аналогичен двум строкам.
    8. -
    - -В спецификации это объясняется при помощи специального внутреннего типа [Reference Type](http://es5.github.com/x8.html#x8.7). - -Если подробнее -- то `obj.go()` состоит из двух операций: -
      -
    1. Сначала получить свойство `obj.go`.
    2. -
    3. Потом вызвать его как функцию.
    4. -
    - -Но откуда на шаге 2 получить `this`? Как раз для этого операция получения свойства `obj.go` возвращает значение особого типа `Reference Type`, который в дополнение к свойству `go` содержит информацию об `obj`. Далее, на втором шаге, вызов его при помощи скобок `()` правильно устанавливает `this`. - -**Любые другие операции, кроме вызова, превращают `Reference Type` в обычный тип, в данном случае -- функцию `go` (так уж этот тип устроен).** - -Поэтому получается, что `(method = obj.go)` присваивает в переменную `method` функцию `go`, уже без всякой информации об объекте `obj`. - -Аналогичная ситуация и в случае `(4)`: оператор ИЛИ `||` делает из `Reference Type` обычную функцию. - diff --git a/1-js/6-objects-more/1-object-methods/3-why-this/task.md b/1-js/6-objects-more/1-object-methods/3-why-this/task.md deleted file mode 100644 index 486c3eb7..00000000 --- a/1-js/6-objects-more/1-object-methods/3-why-this/task.md +++ /dev/null @@ -1,26 +0,0 @@ -# Почему this присваивается именно так? - -[importance 3] - -Вызовы `(1)` и `(2)` в примере ниже работают не так, как `(3)` и `(4)`: - -```js -//+ run no-beautify -"use strict" - -var obj, f; - -obj = { - go: function() { alert(this); } -}; - -obj.go(); // (1) object - -(obj.go)(); // (2) object - -(method = obj.go)(); // (3) undefined - -(obj.go || obj.stop)(); // (4) undefined -``` - -В чём дело? Объясните логику работы `this`. diff --git a/1-js/6-objects-more/1-object-methods/4-object-property-this/solution.md b/1-js/6-objects-more/1-object-methods/4-object-property-this/solution.md deleted file mode 100644 index 82f562d9..00000000 --- a/1-js/6-objects-more/1-object-methods/4-object-property-this/solution.md +++ /dev/null @@ -1,22 +0,0 @@ -**Ответ: пустая строка.** - -```js -//+ run -var name = ""; - -var user = { - name: "Василий", - -*!* - export: this // (*) -*/!* -}; - -alert( user.export.name ); -``` - -Объявление объекта само по себе не влияет на `this`. Никаких функций, которые могли бы повлиять на контекст, здесь нет. - -Так как код находится вообще вне любых функций, то `this` в нём равен `window` (при `use strict` было бы `undefined`). - -Получается, что в строке `(*)` мы имеем `export: window`, так что далее `alert(user.export.name)` выводит свойство `window.name`, то есть глобальную переменную `name`, которая равна пустой строке. diff --git a/1-js/6-objects-more/1-object-methods/4-object-property-this/task.md b/1-js/6-objects-more/1-object-methods/4-object-property-this/task.md deleted file mode 100644 index 6b2ec0ac..00000000 --- a/1-js/6-objects-more/1-object-methods/4-object-property-this/task.md +++ /dev/null @@ -1,18 +0,0 @@ -# Значение this в объявлении объекта - -[importance 5] - -Что выведет `alert` в этом коде? Почему? - -```js -var name = ""; - -var user = { - name: "Василий", - - export: this -}; - -alert( user.export.name ); -``` - diff --git a/1-js/6-objects-more/1-object-methods/5-return-this/solution.md b/1-js/6-objects-more/1-object-methods/5-return-this/solution.md deleted file mode 100644 index b34977b4..00000000 --- a/1-js/6-objects-more/1-object-methods/5-return-this/solution.md +++ /dev/null @@ -1,5 +0,0 @@ -**Ответ: `Василий`.** - -Вызов `user.export()` использует `this`, который равен объекту до точки, то есть внутри `user.export()` строка `return this` возвращает объект `user`. - -В итоге выводится свойство `name` объекта `user`, равное `"Василий"`. diff --git a/1-js/6-objects-more/1-object-methods/5-return-this/task.md b/1-js/6-objects-more/1-object-methods/5-return-this/task.md deleted file mode 100644 index 03ebd8cb..00000000 --- a/1-js/6-objects-more/1-object-methods/5-return-this/task.md +++ /dev/null @@ -1,21 +0,0 @@ -# Возврат this - -[importance 5] - -Что выведет `alert` в этом коде? Почему? - -```js -var name = ""; - -var user = { - name: "Василий", - - export: function() { - return this; - } - -}; - -alert( user.export().name ); -``` - diff --git a/1-js/6-objects-more/1-object-methods/6-return-object-this/solution.md b/1-js/6-objects-more/1-object-methods/6-return-object-this/solution.md deleted file mode 100644 index 2df08422..00000000 --- a/1-js/6-objects-more/1-object-methods/6-return-object-this/solution.md +++ /dev/null @@ -1,26 +0,0 @@ -**Ответ: `Василий`.** - -Во время выполнения `user.export()` значение `this = user`. - -При создании объекта `{ value: this }`, в свойство `value` копируется ссылка на текущий контекст, то есть на `user`. - -Получается что `user.export().value == user`. - - -```js -//+ run -var name = ""; - -var user = { - name: "Василий", - - export: function() { - return { - value: this - }; - } - -}; - -alert( user.export().value == user ); // true -``` \ No newline at end of file diff --git a/1-js/6-objects-more/1-object-methods/6-return-object-this/task.md b/1-js/6-objects-more/1-object-methods/6-return-object-this/task.md deleted file mode 100644 index b78e6553..00000000 --- a/1-js/6-objects-more/1-object-methods/6-return-object-this/task.md +++ /dev/null @@ -1,23 +0,0 @@ -# Возврат объекта с this - -[importance 5] - -Что выведет `alert` в этом коде? Почему? - -```js -var name = ""; - -var user = { - name: "Василий", - - export: function() { - return { - value: this - }; - } - -}; - -alert( user.export().value.name ); -``` - diff --git a/1-js/6-objects-more/1-object-methods/7-calculator/_js.view/solution.js b/1-js/6-objects-more/1-object-methods/7-calculator/_js.view/solution.js deleted file mode 100644 index 5f276b9c..00000000 --- a/1-js/6-objects-more/1-object-methods/7-calculator/_js.view/solution.js +++ /dev/null @@ -1,14 +0,0 @@ -var calculator = { - sum: function() { - return this.a + this.b; - }, - - mul: function() { - return this.a * this.b; - }, - - read: function() { - this.a = +prompt('a?', 0); - this.b = +prompt('b?', 0); - } -} \ No newline at end of file diff --git a/1-js/6-objects-more/1-object-methods/7-calculator/_js.view/test.js b/1-js/6-objects-more/1-object-methods/7-calculator/_js.view/test.js deleted file mode 100644 index cd2c9b05..00000000 --- a/1-js/6-objects-more/1-object-methods/7-calculator/_js.view/test.js +++ /dev/null @@ -1,22 +0,0 @@ -sinon.stub(window, "prompt"); - -prompt.onCall(0).returns("2"); -prompt.onCall(1).returns("3"); - -describe("calculator", function() { - before(function() { - calculator.read(); - }); - - it("при вводе 2 и 3 сумма равна 5", function() { - assert.equal(calculator.sum(), 5); - }); - - it("при вводе 2 и 3 произведение равно 6", function() { - assert.equal(calculator.mul(), 6); - }); -}); - -after(function() { - prompt.restore(); -}); \ No newline at end of file diff --git a/1-js/6-objects-more/1-object-methods/7-calculator/solution.md b/1-js/6-objects-more/1-object-methods/7-calculator/solution.md deleted file mode 100644 index 1849cc94..00000000 --- a/1-js/6-objects-more/1-object-methods/7-calculator/solution.md +++ /dev/null @@ -1,24 +0,0 @@ - - -```js -//+ run demo -var calculator = { - sum: function() { - return this.a + this.b; - }, - - mul: function() { - return this.a * this.b; - }, - - read: function() { - this.a = +prompt('a?', 0); - this.b = +prompt('b?', 0); - } -} - -calculator.read(); -alert( calculator.sum() ); -alert( calculator.mul() ); -``` - diff --git a/1-js/6-objects-more/1-object-methods/7-calculator/task.md b/1-js/6-objects-more/1-object-methods/7-calculator/task.md deleted file mode 100644 index 5e5790fc..00000000 --- a/1-js/6-objects-more/1-object-methods/7-calculator/task.md +++ /dev/null @@ -1,22 +0,0 @@ -# Создайте калькулятор - -[importance 5] - -Создайте объект `calculator` с тремя методами: -
      -
    • `read()` запрашивает `prompt` два значения и сохраняет их как свойства объекта
    • -
    • `sum()` возвращает сумму этих двух значений
    • -
    • `mul()` возвращает произведение этих двух значений
    • -
    - -```js -var calculator = { - ...ваш код... -} - -calculator.read(); -alert( calculator.sum() ); -alert( calculator.mul() ); -``` - -[demo /] diff --git a/1-js/6-objects-more/1-object-methods/8-chain-calls/solution.md b/1-js/6-objects-more/1-object-methods/8-chain-calls/solution.md deleted file mode 100644 index 8d89b88e..00000000 --- a/1-js/6-objects-more/1-object-methods/8-chain-calls/solution.md +++ /dev/null @@ -1,23 +0,0 @@ -Решение состоит в том, чтобы каждый раз возвращать текущий объект. Это делается добавлением `return this` в конце каждого метода: - -```js -//+ run -var ladder = { - step: 0, - up: function() { - this.step++; - return this; - }, - down: function() { - this.step--; - return this; - }, - showStep: function() { - alert( this.step ); - return this; - } -} - -ladder.up().up().down().up().down().showStep(); // 1 -``` - diff --git a/1-js/6-objects-more/1-object-methods/8-chain-calls/task.md b/1-js/6-objects-more/1-object-methods/8-chain-calls/task.md deleted file mode 100644 index 73dc4e8e..00000000 --- a/1-js/6-objects-more/1-object-methods/8-chain-calls/task.md +++ /dev/null @@ -1,40 +0,0 @@ -# Цепочка вызовов - -[importance 2] - -Есть объект "лестница" ladder: - -```js -var ladder = { - step: 0, - up: function() { // вверх по лестнице - this.step++; - }, - down: function() { // вниз по лестнице - this.step--; - }, - showStep: function() { // вывести текущую ступеньку - alert( this.step ); - } -}; -``` - -Сейчас, если нужно последовательно вызвать несколько методов объекта, это можно сделать так: - -```js -ladder.up(); -ladder.up(); -ladder.down(); -ladder.showStep(); // 1 -``` - -Модифицируйте код методов объекта, чтобы вызовы можно было делать цепочкой, вот так: - -```js -ladder.up().up().down().up().down().showStep(); // 1 -``` - -Как видно, такая запись содержит "меньше букв" и может быть более наглядной. - -Такой подход называется "чейнинг" (chaining) и используется, например, во фреймворке jQuery. - diff --git a/1-js/6-objects-more/1-object-methods/article.md b/1-js/6-objects-more/1-object-methods/article.md deleted file mode 100644 index 4a70f595..00000000 --- a/1-js/6-objects-more/1-object-methods/article.md +++ /dev/null @@ -1,244 +0,0 @@ -# Методы объектов, this - -До этого мы говорили об объекте лишь как о хранилище значений. Теперь пойдём дальше и поговорим об объектах как о сущностях со своими функциями ("методами"). -[cut] - -## Методы у объектов - -При объявлении объекта можно указать свойство-функцию, например: - -```js -//+ run -var user = { - name: 'Василий', - -*!* - // метод -*/!* - sayHi: function() { - alert( 'Привет!' ); - } - -}; - -*!* -// Вызов -user.sayHi(); -*/!* -``` - -Свойства-функции называют "методами" объектов. Их можно добавлять и удалять в любой момент, в том числе и явным присваиванием: - -```js -//+ run -var user = { - name: 'Василий' -}; - -*!* -user.sayHi = function() { // присвоили метод после создания объекта - alert('Привет!'); -}; -*/!* - -// Вызов метода: -*!*user.sayHi();*/!* -``` - -## Доступ к объекту через this - -Для полноценной работы метод должен иметь доступ к данным объекта. В частности, вызов `user.sayHi()` может захотеть вывести имя пользователя. - -**Для доступа к текущему объекту из метода используется ключевое слово `this`**. - -Значением `this` является объект перед "точкой", в контексте которого вызван метод, например: - -```js -//+ run -var user = { - name: 'Василий', - - sayHi: function() { - alert( *!*this.name*/!* ); - } -}; - -user.sayHi(); // sayHi в контексте user -``` - -Здесь при выполнении функции `user.sayHi()` в `this` будет храниться ссылка на текущий объект `user`. - -Вместо `this` внутри `sayHi` можно было бы обратиться к объекту, используя переменную `user`: - -```js -... - sayHi: function() { - alert( *!*user.name*/!* ); - } -... -``` - -...Однако, такое решение нестабильно. Если мы решим скопировать объект в другую переменную, например `admin = user`, а в переменную `user` записать что-то другое -- обращение будет совсем не по адресу: - -```js -//+ run -var user = { - name: 'Василий', - - sayHi: function() { - alert( *!*user.name*/!* ); // приведёт к ошибке - } -}; - -var admin = user; -user = null; - -admin.sayHi(); // упс! внутри sayHi обращение по старому имени, ошибка! -``` - -Использование `this` гарантирует, что функция работает именно с тем объектом, в контексте которого вызвана. - -Через `this` метод может не только обратиться к любому свойству объекта, но и передать куда-то ссылку на сам объект целиком: - -```js -//+ run no-beautify -var user = { - name: 'Василий', - -*!* - sayHi: function() { - showName(this); // передать текущий объект в showName - } -*/!* -}; - -function showName(namedObj) { - alert( namedObj.name ); -} - -user.sayHi(); // Василий -``` - -## Подробнее про this - -Любая функция может иметь в себе `this`. Совершенно неважно, объявлена ли она в объекте или отдельно от него. - -Значение `this` называется *контекстом вызова* и будет определено в момент вызова функции. - -Например, такая функция, объявленная без объекта, вполне допустима: - -```js -function sayHi() { - alert( *!*this.firstName*/!* ); -} -``` - -Эта функция ещё не знает, каким будет `this`. Это выяснится при выполнении программы. - -**Если одну и ту же функцию запускать в контексте разных объектов, она будет получать разный `this`:** - -```js -//+ run no-beautify -var user = { firstName: "Вася" }; -var admin = { firstName: "Админ" }; - -function func() { - alert( this.firstName ); -} - -user.f = func; -admin.g = func; - -*!* -// this равен объекту перед точкой: -user.f(); // Вася -admin.g(); // Админ -admin['g'](); // Админ (не важно, доступ к объекту через точку или квадратные скобки) -*/!* -``` - -Итак, значение `this` не зависит от того, как функция была создана, оно определяется исключительно в момент вызова. - -## Значение this при вызове без контекста - -Если функция использует `this` -- это подразумевает работу с объектом. Но и прямой вызов `func()` технически возможен. - -Как правило, такая ситуация возникает при ошибке в разработке. - -При этом `this` получает значение `window`, глобального объекта: - -```js -//+ run -function func() { - alert( this ); // выведет [object Window] или [object global] -} - -func(); -``` - -Таково поведение в старом стандарте. - -А в режиме `use strict` вместо глобального объекта `this` будет `undefined`: - -```js -//+ run -function func() { - "use strict"; - alert( this ); // выведет undefined (кроме IE9-) -} - -func(); -``` - -Обычно если в функции используется `this`, то она, всё же, служит для вызова в контексте объекта, так что такая ситуация -- скорее исключение. - -## Ссылочный тип - -Контекст `this` никак не привязан к функции, даже если она создана в объявлении объекта. Чтобы `this` передался, нужно вызвать функцию именно через точку (или квадратные скобки). - -Любой более хитрый вызов приведёт к потере контекста, например: - -```js -//+ run no-beautify -var user = { - name: "Вася", - hi: function() { alert(this.name); }, - bye: function() { alert("Пока"); } -}; - -user.hi(); // Вася (простой вызов работает) - -*!* -// а теперь вызовем user.hi или user.bye в зависимости от имени -(user.name == "Вася" ? user.hi : user.bye)(); // undefined -*/!* -``` - -В последней строке примера метод получен в результате выполнения тернарного оператора и тут же вызван. Но `this` при этом теряется. - -Если хочется понять, почему, то причина кроется в деталях работы вызова `obj.method()`. - -Он ведь, на самом деле, состоит из двух независимых операций: точка `.` -- получение свойства и скобки `()` -- его вызов (предполагается, что это функция). - -Функция, как мы говорили раньше, сама по себе не запоминает контекст. Чтобы "донести его" до скобок, JavaScript применяет "финт ушами" -- точка возвращает не функцию, а значение специального "ссылочного" типа [Reference Type](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-reference-specification-type). - -Этот тип представляет собой связку "base-name-strict", где: -
      -
    • *base* -- как раз объект,
    • -
    • *name* -- имя свойства,
    • -
    • *strict* -- вспомогательный флаг для передачи `use strict`.
    • -
    - -То есть, ссылочный тип (Reference Type) -- это своеобразное "три-в-одном". Он существует исключительно для целей спецификации, мы его не видим, поскольку любой оператор тут же от него избавляется: - -
      -
    • Скобки `()` получают из `base` значение свойства `name` и вызывают в контексте base.
    • -
    • Другие операторы получают из `base` значение свойства `name` и используют, а остальные компоненты игнорируют.
    • -
    - -Поэтому любая операция над результатом операции получения свойства, кроме вызова, приводит к потере контекста. - -Аналогично работает и получение свойства через квадратные скобки `obj[method]`. - - - diff --git a/1-js/6-objects-more/2-object-conversion/1-array-equals-string/solution.md b/1-js/6-objects-more/2-object-conversion/1-array-equals-string/solution.md deleted file mode 100644 index b7a70199..00000000 --- a/1-js/6-objects-more/2-object-conversion/1-array-equals-string/solution.md +++ /dev/null @@ -1,15 +0,0 @@ -Если с одной стороны -- объект, а с другой -- нет, то сначала приводится объект. - -В данном случае сравнение означает численное приведение. У массивов нет `valueOf`, поэтому вызывается `toString`, который возвращает список элементов через запятую. - -В данном случае, элемент только один - он и возвращается. Так что `['x']` становится `'x'`. Получилось `'x' == 'x'`, верно. - -P.S. -По той же причине верны равенства: - -```js -//+ run -alert( ['x', 'y'] == 'x,y' ); // true -alert( [] == '' ); // true -``` - diff --git a/1-js/6-objects-more/2-object-conversion/1-array-equals-string/task.md b/1-js/6-objects-more/2-object-conversion/1-array-equals-string/task.md deleted file mode 100644 index 190bbeb4..00000000 --- a/1-js/6-objects-more/2-object-conversion/1-array-equals-string/task.md +++ /dev/null @@ -1,11 +0,0 @@ -# ['x'] == 'x' - -[importance 5] - -Почему результат `true` ? - -```js -//+ run -alert( ['x'] == 'x' ); -``` - diff --git a/1-js/6-objects-more/2-object-conversion/2-tostring-valueof/solution.md b/1-js/6-objects-more/2-object-conversion/2-tostring-valueof/solution.md deleted file mode 100644 index 9b2108d0..00000000 --- a/1-js/6-objects-more/2-object-conversion/2-tostring-valueof/solution.md +++ /dev/null @@ -1,10 +0,0 @@ -# Первый alert(foo) - -Возвращает строковое представление объекта, используя `toString`, т.е. `"foo"`. - -# Второй alert(foo + 1) -Оператор `'+'` преобразует объект к примитиву, используя `valueOf`, так что результат: `3`. - -# Третий alert(foo + '3') - -То же самое, что и предыдущий случай, объект превращается в примитив `2`. Затем происходит сложение `2 + '3'`. Оператор `'+'` при сложении чего-либо со строкой приводит и второй операнд к строке, а затем применяет конкатенацию, так что результат -- строка `"23"`. \ No newline at end of file diff --git a/1-js/6-objects-more/2-object-conversion/2-tostring-valueof/task.md b/1-js/6-objects-more/2-object-conversion/2-tostring-valueof/task.md deleted file mode 100644 index 86bd17cb..00000000 --- a/1-js/6-objects-more/2-object-conversion/2-tostring-valueof/task.md +++ /dev/null @@ -1,24 +0,0 @@ -# Преобразование - -[importance 5] - -Объявлен объект с `toString` и `valueOf`. - -Какими будут результаты `alert`? - -```js -var foo = { - toString: function() { - return 'foo'; - }, - valueOf: function() { - return 2; - } -}; - -alert( foo ); -alert( foo + 1 ); -alert( foo + "3" ); -``` - -Подумайте, прежде чем ответить. \ No newline at end of file diff --git a/1-js/6-objects-more/2-object-conversion/3-compare-empty-arrays/solution.md b/1-js/6-objects-more/2-object-conversion/3-compare-empty-arrays/solution.md deleted file mode 100644 index ef69d31c..00000000 --- a/1-js/6-objects-more/2-object-conversion/3-compare-empty-arrays/solution.md +++ /dev/null @@ -1,34 +0,0 @@ -# Ответ по первому равенству - -Два объекта равны только тогда, когда это один и тот же объект. - -В первом равенстве создаются два массива, это разные объекты, так что они неравны. - -# Ответ по второму равенству - -
      -
    1. Первым делом, обе части сравнения вычисляются. Справа находится `![]`. Логическое НЕ `'!'` преобразует аргумент к логическому типу. Массив является объектом, так что это `true`. Значит, правая часть становится `![] = !true = false`. Так что получили: - -```js -alert( [] == false ); -``` - -
    2. -
    3. Проверка равенства между объектом и примитивом вызывает численное преобразование объекта. - -У массива нет `valueOf`, сработает `toString` и преобразует массив в список элементов, то есть - в пустую строку: - -```js -alert( '' == false ); -``` - -
    4. -
    5. Сравнение различных типов вызывает численное преобразование слева и справа: - -```js -alert( 0 == 0 ); -``` - -Теперь результат очевиден. -
    6. -
    \ No newline at end of file diff --git a/1-js/6-objects-more/2-object-conversion/3-compare-empty-arrays/task.md b/1-js/6-objects-more/2-object-conversion/3-compare-empty-arrays/task.md deleted file mode 100644 index 6945834b..00000000 --- a/1-js/6-objects-more/2-object-conversion/3-compare-empty-arrays/task.md +++ /dev/null @@ -1,13 +0,0 @@ -# Почему [] == [] неверно, а [ ] == ![ ] верно? - -[importance 5] - -Почему первое равенство -- неверно, а второе -- верно? - -```js -//+ run -alert( [] == [] ); // false -alert( [] == ![] ); // true -``` - -Какие преобразования происходят при вычислении? \ No newline at end of file diff --git a/1-js/6-objects-more/2-object-conversion/4-object-types-conversion-questions/solution.md b/1-js/6-objects-more/2-object-conversion/4-object-types-conversion-questions/solution.md deleted file mode 100644 index 3d7c6689..00000000 --- a/1-js/6-objects-more/2-object-conversion/4-object-types-conversion-questions/solution.md +++ /dev/null @@ -1,35 +0,0 @@ - - -```js -//+ no-beautify -new Date(0) - 0 = 0 // (1) -new Array(1)[0] + "" = "undefined" // (2) -({})[0]
 = undefined // (3) -[1] + 1 = "11" // (4) -[1,2] + [3,4] = "1,23,4" // (5) -[] + null + 1 = "null1" // (6) -[[0]][0][0] = 0 // (7) -({} + {}) = "[object Object][object Object]" // (8) -``` - -
      -
    1. `new Date(0)` -- дата, созданная по миллисекундам и соответствующая 0мс от 1 января 1970 года 00:00:00 UTC. Оператор минус `-` преобразует дату обратно в число миллисекунд, то есть в `0`.
    2. -
    3. `new Array(num)` при вызове с единственным аргументом-числом создаёт массив данной длины, без элементов. Поэтому его нулевой элемент равен `undefined`, при сложении со строкой получается строка `"undefined"`.
    4. -
    5. Фигурные скобки -- это создание пустого объекта, у него нет свойства `'0'`. Так что значением будет `undefined`. -Обратите внимание на внешние, круглые скобки. Если их убрать и запустить `{}[0]` в отладочной консоли браузера -- будет `0`, т.к. скобки `{}` будут восприняты как пустой блок кода, после которого идёт массив.
    6. -
    7. Массив преобразуется в строку `"1"`. Оператор `"+"` при сложении со строкой приводит второй аргумент к строке -- значит будет `"1" + "1" = "11"`.
    8. -
    9. Массивы приводятся к строке и складываются.
    10. -
    11. Массив преобразуется в пустую строку `"" + null + 1`, оператор `"+"` видит, что слева строка и преобразует `null` к строке, получается `"null" + 1`, и в итоге `"null1"`.
    12. -
    13. `[[0]]` -- это вложенный массив `[0]` внутри внешнего `[ ]`. Затем мы берём от него нулевой элемент, и потом еще раз. - -Если это непонятно, то посмотрите на такой пример: - -```js -//+ no-beautify -alert( [1,[0],2][1] ); -``` - -Квадратные скобки после массива/объекта обозначают не другой массив, а взятие элемента. -
    14. -
    15. Каждый объект преобразуется к примитиву. У встроенных объектов `Object` нет подходящего `valueOf`, поэтому используется `toString`, так что складываются в итоге строковые представления объектов.
    16. -
    diff --git a/1-js/6-objects-more/2-object-conversion/4-object-types-conversion-questions/task.md b/1-js/6-objects-more/2-object-conversion/4-object-types-conversion-questions/task.md deleted file mode 100644 index 85f767a5..00000000 --- a/1-js/6-objects-more/2-object-conversion/4-object-types-conversion-questions/task.md +++ /dev/null @@ -1,18 +0,0 @@ -# Вопросник по преобразованиям, для объектов - -[importance 5] - -Подумайте, какой результат будет у выражений ниже. Когда закончите -- сверьтесь с решением. - -```js -//+ no-beautify -new Date(0) - 0 -new Array(1)[0] + "" -({})[0]
 -[1] + 1 -[1,2] + [3,4] -[] + null + 1 -[[0]][0][0] -({} + {}) -``` - diff --git a/1-js/6-objects-more/2-object-conversion/5-sum-many-brackets/solution.md b/1-js/6-objects-more/2-object-conversion/5-sum-many-brackets/solution.md deleted file mode 100644 index 4b36c185..00000000 --- a/1-js/6-objects-more/2-object-conversion/5-sum-many-brackets/solution.md +++ /dev/null @@ -1,61 +0,0 @@ -# Подсказка - -Чтобы `sum(1)`, а также `sum(1)(2)` можно было вызвать новыми скобками -- результатом `sum` должна быть функция. - -Но эта функция также должна уметь превращаться в число. Для этого нужно дать ей соответствующий `valueOf`. А если мы хотим, чтобы и в строковом контексте она вела себя так же -- то `toString`. - -# Решение - -Функция, которая возвращается `sum`, должна накапливать значение при каждом вызове. - -Удобнее всего хранить его в замыкании, в переменной `currentSum`. Каждый вызов прибавляет к ней очередное значение: - -```js -//+ run -function sum(a) { - - var currentSum = a; - - function f(b) { - currentSum += b; - return f; - } - - f.toString = function() { - return currentSum; - }; - - return f; -} - -alert( sum(1)(2) ); // 3 -alert( sum(5)(-1)(2) ); // 6 -alert( sum(6)(-1)(-2)(-3) ); // 0 -alert( sum(0)(1)(2)(3)(4)(5) ); // 15 -``` - -При внимательном взгляде на решение легко заметить, что функция `sum` срабатывает только один раз. Она возвращает функцию `f`. - -Затем, при каждом запуске функция `f` добавляет параметр к сумме `currentSum`, хранящейся в замыкании, и возвращает сама себя. - -**В последней строчке `f` нет рекурсивного вызова.** - -Вот так была бы рекурсия: - -```js -function f(b) { - currentSum += b; - return f(); // <-- подвызов -} -``` - -А в нашем случае, мы просто возвращаем саму функцию, ничего не вызывая. - -```js -function f(b) { - currentSum += b; - return f; // <-- не вызывает сама себя, а возвращает ссылку на себя -} -``` - -Эта `f` используется при следующем вызове, опять возвратит себя, и так сколько нужно раз. Затем, при использовании в строчном или численном контексте -- сработает `toString`, который вернет текущую сумму `currentSum`. \ No newline at end of file diff --git a/1-js/6-objects-more/2-object-conversion/5-sum-many-brackets/task.md b/1-js/6-objects-more/2-object-conversion/5-sum-many-brackets/task.md deleted file mode 100644 index b220c704..00000000 --- a/1-js/6-objects-more/2-object-conversion/5-sum-many-brackets/task.md +++ /dev/null @@ -1,17 +0,0 @@ -# Сумма произвольного количества скобок - -[importance 2] - -Напишите функцию `sum`, которая будет работать так: - -```js -sum(1)(2) == 3; // 1 + 2 -sum(1)(2)(3) == 6; // 1 + 2 + 3 -sum(5)(-1)(2) == 6 -sum(6)(-1)(-2)(-3) == 0 -sum(0)(1)(2)(3)(4)(5) == 15 -``` - -Количество скобок может быть любым. - -Пример такой функции для двух аргументов -- есть в решении задачи [](/task/closure-sum). \ No newline at end of file diff --git a/1-js/6-objects-more/2-object-conversion/article.md b/1-js/6-objects-more/2-object-conversion/article.md deleted file mode 100644 index e473266b..00000000 --- a/1-js/6-objects-more/2-object-conversion/article.md +++ /dev/null @@ -1,281 +0,0 @@ -# Преобразование объектов: toString и valueOf - -Ранее, в главе [](/types-conversion) мы рассматривали преобразование типов для примитивов. Теперь добавим в нашу картину мира объекты. - -Бывают операции, при которых объект должен быть преобразован в примитив. -[cut] -Например: - -
      -
    • Строковое преобразование -- если объект выводится через `alert(obj)`.
    • -
    • Численное преобразование -- при арифметических операциях, сравнении с примитивом.
    • -
    • Логическое преобразование -- при `if(obj)` и других логических операциях.
    • -
    - -Рассмотрим эти преобразования по очереди. - -## Логическое преобразование - -Проще всего -- с логическим преобразованием. - -**Любой объект в логическом контексте -- `true`, даже если это пустой массив `[]` или объект `{}`.** - -```js -//+ run -if ({} && []) { - alert( "Все объекты - true!" ); // alert сработает -} -``` - -## Строковое преобразование - -Строковое преобразование проще всего увидеть, если вывести объект при помощи `alert`: - -```js -//+ run -var user = { - firstName: 'Василий' -}; - -alert( user ); // [object Object] -``` - -Как видно, содержимое объекта не вывелось. Это потому, что стандартным строковым представлением пользовательского объекта является строка `"[object Object]"`. - -Такой вывод объекта не содержит интересной информации. Поэтому имеет смысл его поменять на что-то более полезное. - -**Если в объекте присутствует метод `toString`, который возвращает примитив, то он используется для преобразования.** - -```js -//+ run -var user = { - - firstName: 'Василий', - - *!*toString:*/!* function() { - return 'Пользователь ' + this.firstName; - } -}; - -alert( user ); // Пользователь Василий -``` - -[smart header="Результатом `toString` может быть любой примитив"] -Метод `toString` не обязан возвращать именно строку. - -Его результат может быть любого примитивного типа. Например, это может быть число, как в примере ниже: - -```js -//+ run -var obj = { - toString: function() { - return 123; - } -}; - -alert( obj ); // 123 -``` - -Поэтому мы и называем его здесь *"строковое преобразование"*, а не "преобразование к строке". -[/smart] - -Все объекты, включая встроенные, имеют свои реализации метода `toString`, например: - -```js -//+ run -alert( [1, 2] ); // toString для массивов выводит список элементов "1,2" -alert( new Date ); // toString для дат выводит дату в виде строки -alert( function() {} ); // toString для функции выводит её код -``` - -## Численное преобразование - -Для численного преобразования объекта используется метод `valueOf`, а если его нет -- то `toString`: - -```js -//+ run -var room = { - number: 777, - - valueOf: function() { return this.number; }, - toString: function() { return this.number; } -}; - -alert( +room ); // 777, *!*вызвался valueOf*/!* - -delete room.valueOf; // *!*valueOf удалён*/!* - -alert( +room ); // 777, *!*вызвался toString*/!* -``` - -Метод `valueOf` обязан возвращать примитивное значение, иначе его результат будет проигнорирован. При этом -- не обязательно числовое. - -[smart header="У большинства объектов нет `valueOf`"] -У большинства встроенных объектов такого `valueOf` нет, поэтому численное и строковое преобразования для них работают одинаково. - -Исключением является объект `Date`, который поддерживает оба типа преобразований: - -```js -//+ run -alert( new Date() ); // toString: Дата в виде читаемой строки -alert( +new Date() ); // valueOf: кол-во миллисекунд, прошедших с 01.01.1970 -``` - -[/smart] - -[smart header="Детали спецификации"] -Если посмотреть в стандарт, то в пункте [15.2.4.4](http://es5.github.com/x15.2.html#x15.2.4.4) говорится о том, что `valueOf` есть у любых объектов. Но он ничего не делает, просто возвращает сам объект (не-примитивное значение!), а потому игнорируется. -[/smart] - -## Две стадии преобразования - -Итак, объект преобразован в примитив при помощи `toString` или `valueOf`. - -Но на этом преобразования не обязательно заканчиваются. Вполне возможно, что в процессе вычислений этот примитив будет преобразован во что-то другое. - -Например, рассмотрим применение к объекту операции `==`: - -```js -//+ run -var obj = { - valueOf: function() { - return 1; - } -}; - -alert( obj == true ); // true -``` - -Объект `obj` был сначала преобразован в примитив, используя численное преобразование, получилось `1 == true`. - -Далее, так как значения всё ещё разных типов, применяются правила преобразования примитивов, результат: `true`. - -То же самое -- при сложении с объектом при помощи `+`: - -```js -//+ run -var obj = { - valueOf: function() { - return 1; - } -}; - -alert( obj + "test" ); // 1test -``` - -Или вот, для разности объектов: - -```js -//+ run -var a = { - valueOf: function() { - return "1"; - } -}; -var b = { - valueOf: function() { - return "2"; - } -}; - -alert( a + b ); // "12" -alert( a - b ); // "1" - "2" = -1 -``` - -[warn header="Исключение: `Date`"] -Объект `Date`, по историческим причинам, является исключением. - -Бинарный оператор плюс `+` обычно использует числовое преобразование и метод `valueOf`. Как мы уже знаем, если подходящего `valueOf` нет (а его нет у большинства объектов), то используется `toString`, так что в итоге преобразование происходит к строке. Но если есть `valueOf`, то используется `valueOf`. Выше в примере как раз `a + b` это демонстрируют. - -У объектов `Date` есть и `valueOf` -- возвращает количество миллисекунд, и `toString` -- возвращает строку с датой. - -...Но оператор `+` для `Date` использует именно `toString` (хотя должен бы `valueOf`). - -Это и есть исключение: - -```js -//+ run -// бинарный плюс для даты toString, для остальных объектов valueOf -alert( new Date + "" ); // "строка даты" -``` - -Других подобных исключений нет. -[/warn] - -[warn header="Как испугать Java-разработчика"] -В языке Java (это не JavaScript, другой язык, здесь приведён для примера) логические значения можно создавать, используя синтаксис `new Boolean(true/false)`, например `new Boolean(true)`. - -В JavaScript тоже есть подобная возможность, которая возвращает "объектную обёртку" для логического значения. - -Эта возможность давно существует лишь для совместимости, она и не используется на практике, поскольку приводит к странным результатам. Некоторые из них могут сильно удивить человека, не привыкшего к JavaScript, например: - -```js -//+ run -var value = new Boolean(false); -if (value) { - alert( true ); // сработает! -} -``` - -Почему запустился `alert`? Ведь в `if` находится `false`... Проверим: - -```js -//+ run -var value = new Boolean(false); - -*!* -alert( value ); // выводит false, все ок.. -*/!* - -if (value) { - alert( true ); // ..но тогда почему выполняется alert в if ?!? -} -``` - -Дело в том, что `new Boolean` -- это не примитивное значение, а объект. Поэтому в логическом контексте он преобразуется к `true`, в результате работает первый пример. - -А второй пример вызывает `alert`, который преобразует объект к строке, и он становится `"false"`. - -**В JavaScript вызовы `new Boolean/String/Number` не используются, а используются простые вызовы соответствующих функций, они преобразуют значение в примитив нужного типа, например `Boolean(val) === !!val`.** -[/warn] - -## Итого - -
      -
    • В логическом контексте объект -- всегда `true`.
    • -
    • При строковом преобразовании объекта используется его метод `toString`. Он должен возвращать примитивное значение, причём не обязательно именно строку. -
    • -
    • Для численного преобразования используется метод `valueOf`, который также может возвратить любое примитивное значение. У большинства объектов `valueOf` не работает (возвращает сам объект и потому игнорируется), при этом для численного преобразования используется `toString`.
    • -
    - -Полный алгоритм преобразований есть в спецификации EcmaScript, смотрите пункты [11.8.5](http://es5.github.com/x11.html#x11.8.5), [11.9.3](http://es5.github.com/x11.html#x11.9.3), а также [9.1](http://es5.github.com/x9.html#x9.1) и [9.3](http://es5.github.com/x9.html#x9.3). - - -Заметим, для полноты картины, что некоторые тесты знаний в интернет предлагают вопросы типа: -```js -//+ no-beautify -{}[0] // чему равно? -{} + {} // а так? -``` - -Если вы запустите эти выражения в консоли, то результат может показаться странным. Подвох здесь в том, что если фигурные скобки `{...}` идут не в выражении, а в основном потоке кода, то JavaScript считает, что это не объект, а "блок кода" (как `if`, `for`, но без оператора, просто группировка команд вместе, используется редко). - -Вот блок кода с командой: -```js -//+run -{ - alert("Блок") -} -``` - -А если команду изъять, то будет пустой блок `{}`, который ничего не делает. Два примера выше как раз содержат пустой блок в начале, который ничего не делает. Иначе говоря: -```js -//+ no-beautify -{}[0] // то же что и: [0] -{} + {} // то же что и: + {} -``` - -То есть, такие вопросы -- не на преобразование типов, а на понимание, что если `{ ... }` находится вне выражений, то это не объект, а блок. - - - diff --git a/1-js/6-objects-more/3-constructor-new/1-two-functions-one-object/solution.md b/1-js/6-objects-more/3-constructor-new/1-two-functions-one-object/solution.md deleted file mode 100644 index 5b27cec2..00000000 --- a/1-js/6-objects-more/3-constructor-new/1-two-functions-one-object/solution.md +++ /dev/null @@ -1,19 +0,0 @@ -Да, возможны. - -Они должны возвращать одинаковый объект. При этом если функция возвращает объект, то `this` не используется. - -Например, они могут вернуть один и тот же объект `obj`, определённый снаружи: - -```js -//+ run no-beautify -var obj = {}; - -function A() { return obj; } -function B() { return obj; } - -var a = new A; -var b = new B; - -alert( a == b ); // true -``` - diff --git a/1-js/6-objects-more/3-constructor-new/1-two-functions-one-object/task.md b/1-js/6-objects-more/3-constructor-new/1-two-functions-one-object/task.md deleted file mode 100644 index 72c4e8eb..00000000 --- a/1-js/6-objects-more/3-constructor-new/1-two-functions-one-object/task.md +++ /dev/null @@ -1,18 +0,0 @@ -# Две функции один объект - -[importance 2] - -Возможны ли такие функции `A` и `B` в примере ниже, что соответствующие объекты `a,b` равны (см. код ниже)? - -```js -//+ no-beautify -function A() { ... } -function B() { ... } - -var a = new A; -var b = new B; - -alert( a == b ); // true -``` - -Если да -- приведите пример кода с такими функциями. \ No newline at end of file diff --git a/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/_js.view/solution.js b/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/_js.view/solution.js deleted file mode 100644 index 3b51b2e6..00000000 --- a/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/_js.view/solution.js +++ /dev/null @@ -1,15 +0,0 @@ -function Calculator() { - - this.read = function() { - this.a = +prompt('a?', 0); - this.b = +prompt('b?', 0); - }; - - this.sum = function() { - return this.a + this.b; - }; - - this.mul = function() { - return this.a * this.b; - }; -} \ No newline at end of file diff --git a/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/_js.view/test.js b/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/_js.view/test.js deleted file mode 100644 index ef881c45..00000000 --- a/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/_js.view/test.js +++ /dev/null @@ -1,25 +0,0 @@ -sinon.stub(window, "prompt") - -prompt.onCall(0).returns("2"); -prompt.onCall(1).returns("3"); - -describe("calculator", function() { - var calculator; - before(function() { - calculator = new Calculator(); - calculator.read(); - }); - - it("при вводе 2 и 3 сумма равна 5", function() { - assert.equal(calculator.sum(), 5); - }); - - it("при вводе 2 и 3 произведение равно 6", function() { - assert.equal(calculator.mul(), 6); - }); - -}); - -after(function() { - prompt.restore(); -}); \ No newline at end of file diff --git a/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/solution.md b/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/solution.md deleted file mode 100644 index a78010d9..00000000 --- a/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/solution.md +++ /dev/null @@ -1,27 +0,0 @@ - - -```js -//+ run demo -function Calculator() { - - this.read = function() { - this.a = +prompt('a?', 0); - this.b = +prompt('b?', 0); - }; - - this.sum = function() { - return this.a + this.b; - }; - - this.mul = function() { - return this.a * this.b; - }; -} - -var calculator = new Calculator(); -calculator.read(); - -alert( "Сумма=" + calculator.sum() ); -alert( "Произведение=" + calculator.mul() ); -``` - diff --git a/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/task.md b/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/task.md deleted file mode 100644 index 31258cb7..00000000 --- a/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/task.md +++ /dev/null @@ -1,22 +0,0 @@ -# Создать Calculator при помощи конструктора - -[importance 5] - -Напишите *функцию-конструктор* `Calculator`, которая создает объект с тремя методами: -
      -
    • Метод `read()` запрашивает два значения при помощи `prompt` и запоминает их в свойствах объекта.
    • -
    • Метод `sum()` возвращает сумму запомненных свойств.
    • -
    • Метод `mul()` возвращает произведение запомненных свойств.
    • -
    - -Пример использования: - -```js -var calculator = new Calculator(); -calculator.read(); - -alert( "Сумма=" + calculator.sum() ); -alert( "Произведение=" + calculator.mul() ); -``` - -[demo /] diff --git a/1-js/6-objects-more/3-constructor-new/3-accumulator/_js.view/solution.js b/1-js/6-objects-more/3-constructor-new/3-accumulator/_js.view/solution.js deleted file mode 100644 index bd744597..00000000 --- a/1-js/6-objects-more/3-constructor-new/3-accumulator/_js.view/solution.js +++ /dev/null @@ -1,8 +0,0 @@ -function Accumulator(startingValue) { - this.value = startingValue; - - this.read = function() { - this.value += +prompt('Сколько добавлять будем?', 0); - }; - -} \ No newline at end of file diff --git a/1-js/6-objects-more/3-constructor-new/3-accumulator/_js.view/test.js b/1-js/6-objects-more/3-constructor-new/3-accumulator/_js.view/test.js deleted file mode 100644 index aa651b11..00000000 --- a/1-js/6-objects-more/3-constructor-new/3-accumulator/_js.view/test.js +++ /dev/null @@ -1,37 +0,0 @@ -describe("Accumulator(1)", function() { - var accumulator; - before(function() { - accumulator = new Accumulator(1); - }); - - beforeEach(function() { - sinon.stub(window, "prompt") - }); - - afterEach(function() { - prompt.restore(); - }); - - it("начальное значение 1", function() { - assert.equal(accumulator.value, 1); - }); - - it("после ввода 0 значение 1", function() { - prompt.returns("0"); - accumulator.read(); - assert.equal(accumulator.value, 1); - }); - - it("после ввода 1 значение 2", function() { - prompt.returns("1"); - accumulator.read(); - assert.equal(accumulator.value, 2); - }); - - it("после ввода 2 значение 4", function() { - prompt.returns("2"); - accumulator.read(); - assert.equal(accumulator.value, 4); - }); - -}); \ No newline at end of file diff --git a/1-js/6-objects-more/3-constructor-new/3-accumulator/solution.md b/1-js/6-objects-more/3-constructor-new/3-accumulator/solution.md deleted file mode 100644 index f5b2ba43..00000000 --- a/1-js/6-objects-more/3-constructor-new/3-accumulator/solution.md +++ /dev/null @@ -1,19 +0,0 @@ - - -```js -//+ run demo -function Accumulator(startingValue) { - this.value = startingValue; - - this.read = function() { - this.value += +prompt('Сколько добавлять будем?', 0); - }; - -} - -var accumulator = new Accumulator(1); -accumulator.read(); -accumulator.read(); -alert( accumulator.value ); -``` - diff --git a/1-js/6-objects-more/3-constructor-new/3-accumulator/task.md b/1-js/6-objects-more/3-constructor-new/3-accumulator/task.md deleted file mode 100644 index 7852e561..00000000 --- a/1-js/6-objects-more/3-constructor-new/3-accumulator/task.md +++ /dev/null @@ -1,24 +0,0 @@ -# Создать Accumulator при помощи конструктора - -[importance 5] - -Напишите *функцию-конструктор* `Accumulator(startingValue)`. -Объекты, которые она создает, должны хранить текущую сумму и прибавлять к ней то, что вводит посетитель. - -Более формально, объект должен: -
      -
    • Хранить текущее значение в своём свойстве `value`. Начальное значение свойства `value` ставится конструктором равным `startingValue`.
    • -
    • Метод `read()` вызывает `prompt`, принимает число и прибавляет его к свойству `value`.
    • -
    -Таким образом, свойство `value` является текущей суммой всего, что ввел посетитель при вызовах метода `read()`, с учетом начального значения `startingValue`. - -Ниже вы можете посмотреть работу кода: - -```js -var accumulator = new Accumulator(1); // начальное значение 1 -accumulator.read(); // прибавит ввод prompt к текущему значению -accumulator.read(); // прибавит ввод prompt к текущему значению -alert( accumulator.value ); // выведет текущее значение -``` - -[demo /] diff --git a/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/_js.view/solution.js b/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/_js.view/solution.js deleted file mode 100644 index 4bf9f22b..00000000 --- a/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/_js.view/solution.js +++ /dev/null @@ -1,29 +0,0 @@ -function Calculator() { - - var methods = { - "-": function(a, b) { - return a - b; - }, - "+": function(a, b) { - return a + b; - } - }; - - this.calculate = function(str) { - - var split = str.split(' '), - a = +split[0], - op = split[1], - b = +split[2] - - if (!methods[op] || isNaN(a) || isNaN(b)) { - return NaN; - } - - return methods[op](+a, +b); - } - - this.addMethod = function(name, func) { - methods[name] = func; - }; -} \ No newline at end of file diff --git a/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/_js.view/test.js b/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/_js.view/test.js deleted file mode 100644 index 2c6891a9..00000000 --- a/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/_js.view/test.js +++ /dev/null @@ -1,26 +0,0 @@ -var calculator; -before(function() { - calculator = new Calculator; -}); - -it("calculate(12 + 34) = 46", function() { - assert.equal(calculator.calculate("12 + 34"), 46); -}); - -it("calculate(34 - 12) = 22", function() { - assert.equal(calculator.calculate("34 - 12"), 22); -}); - -it("добавили умножение: calculate(2 * 3) = 6", function() { - calculator.addMethod("*", function(a, b) { - return a * b; - }); - assert.equal(calculator.calculate("2 * 3"), 6); -}); - -it("добавили возведение в степень: calculate(2 ** 3) = 8", function() { - calculator.addMethod("**", function(a, b) { - return Math.pow(a, b); - }); - assert.equal(calculator.calculate("2 ** 3"), 8); -}); \ No newline at end of file diff --git a/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/solution.md b/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/solution.md deleted file mode 100644 index 3e5f26e5..00000000 --- a/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/solution.md +++ /dev/null @@ -1,55 +0,0 @@ - - -```js -//+ run -function Calculator() { - - var methods = { - "-": function(a, b) { - return a - b; - }, - "+": function(a, b) { - return a + b; - } - }; - - this.calculate = function(str) { - - var split = str.split(' '), - a = +split[0], - op = split[1], - b = +split[2] - - if (!methods[op] || isNaN(a) || isNaN(b)) { - return NaN; - } - - return methods[op](+a, +b); - } - - this.addMethod = function(name, func) { - methods[name] = func; - }; -} - -var calc = new Calculator; - -calc.addMethod("*", function(a, b) { - return a * b; -}); -calc.addMethod("/", function(a, b) { - return a / b; -}); -calc.addMethod("**", function(a, b) { - return Math.pow(a, b); -}); - -var result = calc.calculate("2 ** 3"); -alert( result ); // 8 -``` - -
      -
    • Обратите внимание на хранение методов. Они просто добавляются к внутреннему объекту.
    • -
    • Все проверки и преобразование к числу производятся в методе `calculate`. В дальнейшем он может быть расширен для поддержки более сложных выражений.
    • -
    - diff --git a/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/task.md b/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/task.md deleted file mode 100644 index 244a932c..00000000 --- a/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/task.md +++ /dev/null @@ -1,47 +0,0 @@ -# Создайте калькулятор - -[importance 5] - -Напишите конструктор `Calculator`, который создаёт расширяемые объекты-калькуляторы. - -Эта задача состоит из двух частей, которые можно решать одна за другой. -
      -
    1. Первый шаг задачи: вызов `calculate(str)` принимает строку, например "1 + 2", с жёстко заданным форматом "ЧИСЛО операция ЧИСЛО" (по одному пробелу вокруг операции), и возвращает результат. Понимает плюс `+` и минус `-`. - -Пример использования: - -```js -var calc = new Calculator; - -alert( calc.calculate("3 + 7") ); // 10 -``` - -
    2. -
    3. Второй шаг -- добавить калькулятору метод `addMethod(name, func)`, который учит калькулятор новой операции. Он получает имя операции `name` и функцию от двух аргументов `func(a,b)`, которая должна её реализовывать. - -Например, добавим операции умножить `*`, поделить `/` и возвести в степень `**`: - -```js -var powerCalc = new Calculator; -powerCalc.addMethod("*", function(a, b) { - return a * b; -}); -powerCalc.addMethod("/", function(a, b) { - return a / b; -}); -powerCalc.addMethod("**", function(a, b) { - return Math.pow(a, b); -}); - -var result = powerCalc.calculate("2 ** 3"); -alert( result ); // 8 -``` - -
    4. -
    - -
      -
    • Поддержка скобок и сложных математических выражений в этой задаче не требуется.
    • -
    • Числа и операции могут состоять из нескольких символов. Между ними ровно один пробел.
    • -
    • Предусмотрите обработку ошибок. Какая она должна быть - решите сами.
    • -
    \ No newline at end of file diff --git a/1-js/6-objects-more/3-constructor-new/article.md b/1-js/6-objects-more/3-constructor-new/article.md deleted file mode 100644 index f4ce62cf..00000000 --- a/1-js/6-objects-more/3-constructor-new/article.md +++ /dev/null @@ -1,216 +0,0 @@ -# Создание объектов через "new" - -Обычный синтаксис `{...}` позволяет создать один объект. Но зачастую нужно создать много однотипных объектов. - -Для этого используют "функции-конструкторы", запуская их при помощи специального оператора `new`. - -[cut] -## Конструктор - -Конструктором становится любая функция, вызванная через `new`. - -Например: - -```js -function Animal(name) { - this.name = name; - this.canWalk = true; -} - -*!* -var animal = new Animal("ёжик"); -*/!* -``` - -Заметим, что, технически, любая функция может быть использована как конструктор. То есть, любую функцию можно вызвать при помощи `new`. Как-то особым образом указывать, что она -- конструктор -- не надо. - -Но, чтобы выделить функции, задуманные как конструкторы, их называют с большой буквы: `Animal`, а не `animal`. - -Детальнее -- функция, запущенная через `new`, делает следующее: - -
      -
    1. Создаётся новый пустой объект.
    2. -
    3. Ключевое слово `this` получает ссылку на этот объект.
    4. -
    5. Функция выполняется. Как правило, она модифицирует `this`, добавляет методы, свойства.
    6. -
    7. Возвращается `this`.
    8. -
    - - -В результате вызова `new Animal("ёжик");` получаем такой объект: - -```js -animal = { - name: "ёжик", - canWalk: true -} -``` - -Иными словами, при вызове `new Animal` происходит что-то в таком духе (первая и последняя строка -- это то, что делает интерпретатор): - -```js -function Animal(name) { -*!* - // this = {}; -*/!* - - // в this пишем свойства, методы - this.name = name; - this.canWalk = true; - -*!* - // return this; -*/!* -} -``` - -Теперь многократными вызовами `new Animal` с разными параметрами мы можем создать столько объектов, сколько нужно. Поэтому такую функцию и называют *конструктором* -- она предназначена для "конструирования" объектов. - -[smart header="new function() { ... }"] -Иногда функцию-конструктор объявляют и тут же используют, вот так: -```js -var animal = new function() { - this.name = "Васька"; - this.canWalk = true; -}; -``` -Так делают, когда хотят создать единственный объект данного типа. Примере выше с тем же успехом можно было бы переписать как: -```js -var animal = { - name: "Васька", - canWalk: true -} -``` -...Но обычный синтаксис `{...}` не подходит, когда при создании свойств объекта нужны более сложные вычисления. Их можно проделать в функции-конструкторе и записать результат в `this`. -[/smart] - -## Правила обработки return - -Как правило, конструкторы ничего не возвращают. Их задача -- записать всё, что нужно, в `this`, который автоматически станет результатом. - -Но если явный вызов `return` всё же есть, то применяется простое правило: -
      -
    • При вызове `return` с объектом, будет возвращён он, а не `this`.
    • -
    • При вызове `return` с примитивным значением, оно будет отброшено.
    • -
    - -Иными словами, вызов `return` с объектом вернёт объект, а с чем угодно, кроме объекта -- возвратит, как обычно, `this`. - -Например, возврат объекта: - -```js -//+ run no-beautify -function BigAnimal() { - - this.name = "Мышь"; - - return { name: "Годзилла" }; // <-- возвратим объект -} - -alert( new BigAnimal().name ); // Годзилла, получили объект вместо this -``` - -А вот пример с возвратом строки: - -```js -//+ run -function BigAnimal() { - - this.name = "Мышь"; - - return "Годзилла"; // <-- возвратим примитив -} - -alert( new BigAnimal().name ); // Мышь, получили this (а Годзилла пропал) -``` - -Эта особенность работы `new` прописана в стандарте, но используется она весьма редко. - -[smart header="Можно без скобок"] -Кстати, при вызове `new` без аргументов скобки можно не ставить: - -```js -var animal = new BigAnimal; // <-- без скобок -// то же самое что -var animal = new BigAnimal(); -``` - -Не сказать, что выбрасывание скобок -- "хороший стиль", но такой синтаксис допустим стандартом. -[/smart] - -## Создание методов в конструкторе - -Использование функций для создания объекта дает большую гибкость. Можно передавать конструктору параметры, определяющие как его создавать, и он будет "клепать" объекты заданным образом. - -Добавим в создаваемый объект ещё и метод. - -Например, `new User(name)` создает объект с заданным значением свойства `name` и методом `sayHi`: - -```js -//+ run -function User(name) { - this.name = name; - - this.sayHi = function() { - alert( "Моё имя: " + this.name ); - }; -} - -*!* -var ivan = new User("Иван"); - -ivan.sayHi(); // Моё имя: Иван -*/!* - -/* -ivan = { - name: "Иван", - sayHi: функция -} -*/ -``` - -## Локальные переменные - -В функции-конструкторе бывает удобно объявить вспомогательные локальные переменные и вложенные функции, которые будут видны только внутри: - -```js -//+ run -function User(firstName, lastName) { -*!* - // вспомогательная переменная - var phrase = "Привет"; - - // вспомогательная вложенная функция - function getFullName() { - return firstName + " " + lastName; - } -*/!* - - this.sayHi = function() { - alert( phrase + ", " + getFullName() ); // использование - }; -} - -var vasya = new User("Вася", "Петров"); -vasya.sayHi(); // Привет, Вася Петров -``` - -Мы уже говорили об этом подходе ранее, в главе [](/closures-usage). - -Те функции и данные, которые должны быть доступны для внешнего кода, мы пишем в `this` -- и к ним можно будет обращаться, как например `vasya.sayHi()`, а вспомогательные, которые нужны только внутри самого объекта, сохраняем в локальной области видимости. - -[] - -## Итого - -Объекты могут быть созданы при помощи функций-конструкторов: - -
      -
    • Любая функция может быть вызвана с `new`, при этом она получает новый пустой объект в качестве `this`, в который она добавляет свойства. Если функция не решит возвратить свой объект, то её результатом будет `this`.
    • -
    • Функции, которые предназначены для создания объектов, называются *конструкторами*. Их названия пишут с большой буквы, чтобы отличать от обычных.
    • -
    - - - - - diff --git a/1-js/6-objects-more/4-descriptors-getters-setters/1-replace-property-getter/solution.md b/1-js/6-objects-more/4-descriptors-getters-setters/1-replace-property-getter/solution.md deleted file mode 100644 index f00b3bc8..00000000 --- a/1-js/6-objects-more/4-descriptors-getters-setters/1-replace-property-getter/solution.md +++ /dev/null @@ -1,48 +0,0 @@ - -```js -//+ run -function User(fullName) { - this.fullName = fullName; - - Object.defineProperties(this, { - - firstName: { - - get: function() { - return this.fullName.split(' ')[0]; - }, - - set: function(newFirstName) { - this.fullName = newFirstName + ' ' + this.lastName; - } - - }, - - lastName: { - - get: function() { - return this.fullName.split(' ')[1]; - }, - - set: function(newLastName) { - this.fullName = this.firstName + ' ' + newLastName; - } - - } - - - }); -} - -var vasya = new User("Василий Попкин"); - -// чтение firstName/lastName -alert( vasya.firstName ); // Василий -alert( vasya.lastName ); // Попкин - -// запись в lastName -vasya.lastName = 'Сидоров'; - -alert( vasya.fullName ); // Василий Сидоров -``` - diff --git a/1-js/6-objects-more/4-descriptors-getters-setters/1-replace-property-getter/task.md b/1-js/6-objects-more/4-descriptors-getters-setters/1-replace-property-getter/task.md deleted file mode 100644 index 81152200..00000000 --- a/1-js/6-objects-more/4-descriptors-getters-setters/1-replace-property-getter/task.md +++ /dev/null @@ -1,32 +0,0 @@ -# Добавить get/set-свойства - -[importance 5] - -Вам попал в руки код объекта `User`, который хранит имя и фамилию в свойстве `this.fullName`: - -```js -function User(fullName) { - this.fullName = fullName; -} - -var vasya = new User("Василий Попкин"); -``` - -Имя и фамилия всегда разделяются пробелом. - -Сделайте, чтобы были доступны свойства `firstName` и `lastName`, причём не только на чтение, но и на запись, вот так: - -```js -var vasya = new User("Василий Попкин"); - -// чтение firstName/lastName -alert( vasya.firstName ); // Василий -alert( vasya.lastName ); // Попкин - -// запись в lastName -vasya.lastName = 'Сидоров'; - -alert( vasya.fullName ); // Василий Сидоров -``` - -Важно: в этой задаче `fullName` должно остаться свойством, а `firstName/lastName` -- реализованы через `get/set`. Лишнее дублирование здесь ни к чему. \ No newline at end of file diff --git a/1-js/6-objects-more/4-descriptors-getters-setters/article.md b/1-js/6-objects-more/4-descriptors-getters-setters/article.md deleted file mode 100644 index 551b1f1e..00000000 --- a/1-js/6-objects-more/4-descriptors-getters-setters/article.md +++ /dev/null @@ -1,403 +0,0 @@ -# Дескрипторы, геттеры и сеттеры свойств - -В этой главе мы рассмотрим возможности, которые позволяют очень гибко и мощно управлять всеми свойствами объекта, включая их аспекты -- изменяемость, видимость в цикле `for..in` и даже незаметно делать их функциями. - -Они поддерживаются всеми современными браузерами, но не IE8-. Впрочем, даже в IE8 их поддерживает, но только для DOM-объектов (используются при работе со страницей, это сейчас вне нашего рассмотрения). - -[cut] -## Дескрипторы в примерах - -Основной метод для управления свойствами -- [Object.defineProperty](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperty). - -Он позволяет объявить свойство объекта и, что самое главное, тонко настроить его особые аспекты, которые никак иначе не изменить. - -Синтаксис: - -```js -Object.defineProperty(obj, prop, descriptor) -``` - -Аргументы: -
    -
    `obj`
    -
    Объект, в котором объявляется свойство.
    -
    `prop`
    -
    Имя свойства, которое нужно объявить или модифицировать.
    -
    `descriptor`
    -
    Дескриптор -- объект, который описывает поведение свойства. - -В нём могут быть следующие поля: - -
      -
    • `value` -- значение свойства, по умолчанию `undefined`
    • -
    • `writable` -- значение свойства можно менять, если `true`. По умолчанию `false`.
    • -
    • `configurable` -- если `true`, то свойство можно удалять, а также менять его в дальнейшем при помощи новых вызовов `defineProperty`. По умолчанию `false`.
    • -
    • `enumerable` -- если `true`, то свойство будет участвовать в переборе `for..in`. По умолчанию `false`.
    • -
    • `get` -- функция, которая возвращает значение свойства. По умолчанию `undefined`.
    • -
    • `set` -- функция, которая записывает значение свойства. По умолчанию `undefined`.
    • -
    - -Чтобы избежать конфликта, запрещено одновременно указывать значение `value` и функции `get/set`. Либо значение, либо функции для его чтения-записи, одно из двух. Также запрещено и не имеет смысла указывать `writable` при наличии `get/set`-функций. - -Далее мы подробно разберём эти свойства на примерах. - -## Обычное свойство - -Обычное свойство добавить очень просто. - -Два таких вызова работают одинаково: - -```js -//+ no-beautify -var user = {}; - -// 1. простое присваивание -user.name = "Вася"; - -// 2. указание значения через дескриптор -Object.defineProperty(user, "name", { value: "Вася" }); -``` - -## Свойство-константа - -Для того, чтобы сделать свойство неизменяемым, добавим ему флаги `writable` и `configurable`: - -```js -//+ run -*!* -"use strict"; -*/!* - -var user = {}; - -Object.defineProperty(user, "name", { - value: "Вася", - writable: false, // запретить присвоение "user.name=" - configurable: false // запретить удаление "delete user.name" -}); - -// Теперь попытаемся изменить это свойство. - -// в strict mode присвоение "user.name=" вызовет ошибку -*!* -user.name = "Петя"; -*/!* -``` - -Заметим, что без `use strict` операция записи "молча" не сработает, а при `use strict` дополнительно генерируется ошибка. - -## Свойство, скрытое для for..in - -Встроенный метод `toString`, как и большинство встроенных методов, не участвует в цикле `for..in`. Это удобно, так как обычно такое свойство является "служебным". - -К сожалению, свойство `toString`, объявленное обычным способом, будет видно в цикле `for..in`, например: - -```js -//+ run no-beautify -var user = { - name: "Вася", - toString: function() { return this.name; } -}; - -*!* -for(var key in user) alert(key); // name, toString -*/!* -``` - -Мы бы хотели, чтобы поведение нашего метода `toString` было таким же, как и стандартного. - -`Object.defineProperty` может исключить `toString` из списка итерации, поставив ему флаг `enumerable: false`. По стандарту, у встроенного `toString` этот флаг уже стоит. - -```js -//+ run no-beautify -var user = { - name: "Вася", - toString: function() { return this.name; } -}; - -*!* -// помечаем toString как не подлежащий перебору в for..in -Object.defineProperty(user, "toString", {enumerable: false}); - -for(var key in user) alert(key); // name -*/!* -``` - -Обратим внимание, вызов `defineProperty` не перезаписал свойство, а просто модифицировал настройки у существующего `toString`. - -## Свойство-функция - -Дескриптор позволяет задать свойство, которое на самом деле работает как функция. Для этого в нём нужно указать эту функцию в `get`. - -Например, у объекта `user` есть обычные свойства: имя `firstName` и фамилия `surname`. - -Создадим свойство `fullName`, которое на самом деле является функцией: - -```js -//+ run -var user = { - firstName: "Вася", - surname: "Петров" -} - -Object.defineProperty(user, "fullName", { - *!*get*/!*: function() { - return this.firstName + ' ' + this.surname; - } -}); - -*!* -alert(user.fullName); // Вася Петров -*/!* -``` - -Обратим внимание, снаружи `fullName` -- это обычное свойство `user.fullName`. Но дескриптор указывает, что на самом деле его значение возвращается функцией. - -Также можно указать функцию, которая используется для записи значения, при помощи дескриптора `set`. - -Например, добавим возможность присвоения `user.fullName` к примеру выше: - -```js -//+ run -var user = { - firstName: "Вася", - surname: "Петров" -} - -Object.defineProperty(user, "fullName", { - - get: function() { - return this.firstName + ' ' + this.surname; - }, - -*!* - set: function(value) { - var split = value.split(' '); - this.firstName = split[0]; - this.surname = split[1]; - } -*/!* -}); - -*!* -user.fullName = "Петя Иванов"; -*/!* -alert( user.firstName ); // Петя -alert( user.surname ); // Иванов -``` - -## Указание get/set в литералах - -Если мы создаём объект при помощи синтаксиса `{ ... }`, то задать свойства-функции можно прямо в его определении. - -Для этого используется особый синтаксис: `get свойство` или `set свойство`. - -Например, ниже объявлен геттер-сеттер `fullName`: - -```js -//+ run -var user = { - firstName: "Вася", - surname: "Петров", - -*!* - get fullName() { -*/!* - return this.firstName + ' ' + this.surname; - }, - -*!* - set fullName(value) { -*/!* - var split = value.split(' '); - this.firstName = split[0]; - this.surname = split[1]; - } -}; - -*!* -alert( user.fullName ); // Вася Петров (из геттера) - -user.fullName = "Петя Иванов"; -alert( user.firstName ); // Петя (поставил сеттер) -alert( user.surname ); // Иванов (поставил сеттер) -*/!* -``` - -## Да здравствуют get/set! - -Казалось бы, зачем нам назначать get/set для свойства через всякие хитрые вызовы, когда можно сделать просто функции с самого начала? Например, `getFullName`, `setFullName`... - -Конечно, в ряде случаев свойства выглядят короче, такое решение просто может быть красивым. Но основной бонус -- это гибкость, возможность получить контроль над свойством в любой момент! - -Например, в начале разработки мы используем обычные свойства, например у `User` будет имя `name` и возраст `age`: - -```js -function User(name, age) { - this.name = name; - this.age = age; -} - -var pete = new User("Петя", 25); - -alert( pete.age ); // 25 -``` - -С обычными свойствами в коде меньше букв, они удобны, причины использовать функции пока нет. - -...Но рано или поздно могут произойти изменения. Например, в `User` может стать более целесообразно вместо возраста `age` хранить дату рождения `birthday`: - -```js -function User(name, birthday) { - this.name = name; - this.birthday = birthday; -} - -var pete = new User("Петя", new Date(1987, 6, 1)); -``` - -Что теперь делать со старым кодом, который выводит свойство `age`? - -Можно, конечно, найти все места и поправить их, но это долго, а иногда и невозможно, скажем, если вы взаимодействуете со сторонней библиотекой, код в которой -- чужой и влезать в него нежелательно. - -Добавление `get`-функции `age` позволяет обойти проблему легко и непринуждённо: - -```js -//+ run no-beautify -function User(name, birthday) { - this.name = name; - this.birthday = birthday; - -*!* - // age будет высчитывать возраст по birthday - Object.defineProperty(this, "age", { - get: function() { - var todayYear = new Date().getFullYear(); - return todayYear - this.birthday.getFullYear(); - } - }); -*/!* -} - -var pete = new User("Петя", new Date(1987, 6, 1)); - -alert( pete.birthday ); // и дата рождения доступна -alert( pete.age ); // и возраст -``` - -Заметим, что `pete.age` снаружи как было свойством, так и осталось. То есть, переписывать внешний код на вызов функции `pete.age()` не нужно. - -Таким образом, `defineProperty` позволяет нам начать с обычных свойств, а в будущем, при необходимости, можно в любой момент заменить их на функции, реализующие более сложную логику. - -## Другие методы работы со свойствами - -
    -
    [Object.defineProperties(obj, descriptors)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperties)
    -
    Позволяет объявить несколько свойств сразу: - -```js -//+ run -var user = {} - -Object.defineProperties(user, { -*!* - firstName: { -*/!* - value: "Петя" - }, - -*!* - surname: { -*/!* - value: "Иванов" - }, - -*!* - fullName: { -*/!* - get: function() { - return this.firstName + ' ' + this.surname; - } - } -}); - -alert( user.fullName ); // Петя Иванов -``` - -
    -
    [Object.keys(obj)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys), [Object.getOwnPropertyNames(obj)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames)
    -
    Возвращают массив -- список свойств объекта. - -`Object.keys` возвращает только `enumerable`-свойства. - -`Object.getOwnPropertyNames` -- возвращает все: - -```js -//+ run -var obj = { - a: 1, - b: 2, - internal: 3 -}; - -Object.defineProperty(obj, "internal", { - enumerable: false -}); - -*!* -alert( Object.keys(obj) ); // a,b -alert( Object.getOwnPropertyNames(obj) ); // a, internal, b -*/!* -``` - -
    -
    [Object.getOwnPropertyDescriptor(obj, prop)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor)
    -
    Возвращает дескриптор для свойства `obj[prop]`. - -Полученный дескриптор можно изменить и использовать `defineProperty` для сохранения изменений, например: - -```js -//+ run -var obj = { - test: 5 -}; -*!* -var descriptor = Object.getOwnPropertyDescriptor(obj, 'test'); -*/!* - -*!* -// заменим value на геттер, для этого... -*/!* -delete descriptor.value; // ..нужно убрать value/writable -delete descriptor.writable; -descriptor.get = function() { // и поставить get - alert( "Preved :)" ); -}; - -*!* -// поставим новое свойство вместо старого -*/!* - -// если не удалить - defineProperty объединит старый дескриптор с новым -delete obj.test; - -Object.defineProperty(obj, 'test', descriptor); - -obj.test; // Preved :) -``` - -
    -
    - -...И несколько методов, которые используются очень редко: -
    -
    [Object.preventExtensions(obj)](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/preventExtensions)
    -
    Запрещает добавление свойств в объект.
    -
    [Object.seal(obj)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/seal)
    -
    Запрещает добавление и удаление свойств, все текущие свойства делает `configurable: false`.
    -
    [Object.freeze(obj)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/freeze)
    -
    Запрещает добавление, удаление и изменение свойств, все текущие свойства делает `configurable: false, writable: false`.
    -
    [Object.isExtensible(obj)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/isExtensible), [Object.isSealed(obj)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/isSealed), [Object.isFrozen(obj)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/isFrozen)
    -
    Возвращают `true`, если на объекте были вызваны методы `Object.preventExtensions/seal/freeze`.
    -
    - diff --git a/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/_js.view/solution.js b/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/_js.view/solution.js deleted file mode 100644 index 03b48506..00000000 --- a/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/_js.view/solution.js +++ /dev/null @@ -1,11 +0,0 @@ -function Article() { - this.created = new Date; - - Article.count++; // увеличиваем счетчик при каждом вызове - Article.last = this.created; // и запоминаем дату -} -Article.count = 0; // начальное значение - -Article.showStats = function() { - alert('Всего: ' + this.count + ', Последняя: ' + this.last); -}; \ No newline at end of file diff --git a/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/_js.view/test.js b/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/_js.view/test.js deleted file mode 100644 index 7bf37039..00000000 --- a/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/_js.view/test.js +++ /dev/null @@ -1,28 +0,0 @@ -describe("Article.showStats", function() { - before(function() { - sinon.stub(window, "alert"); - this.clock = sinon.useFakeTimers(); - }); - - after(function() { - window.alert.restore(); - this.clock.restore(); - }); - - it("Выводит число статей и дату создания последней", function() { - new Article(); - this.clock.tick(100); - new Article(); - Article.showStats(); - - assert(alert.calledWith('Всего: 2, Последняя: ' + new Date())); - }); - - it("и ещё одна статья...", function() { - this.clock.tick(100); - new Article(); - Article.showStats(); - - assert(alert.calledWith('Всего: 3, Последняя: ' + new Date())); - }); -}); \ No newline at end of file diff --git a/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/solution.md b/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/solution.md deleted file mode 100644 index 45ce7d39..00000000 --- a/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/solution.md +++ /dev/null @@ -1,29 +0,0 @@ -Решение (как вариант): - -```js -//+ run -function Article() { - this.created = new Date; - -*!* - Article.count++; // увеличиваем счетчик при каждом вызове - Article.last = this.created; // и запоминаем дату -*/!* -} -Article.count = 0; // начальное значение -// (нельзя оставить undefined, т.к. Article.count++ будет NaN) - -Article.showStats = function() { - alert( 'Всего: ' + this.count + ', Последняя: ' + this.last ); -}; - -new Article(); -new Article(); - -Article.showStats(); // Всего: 2, Последняя: (дата) - -new Article(); - -Article.showStats(); // Всего: 3, Последняя: (дата) -``` - diff --git a/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/task.md b/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/task.md deleted file mode 100644 index 513ed072..00000000 --- a/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/task.md +++ /dev/null @@ -1,33 +0,0 @@ -# Счетчик объектов - -[importance 5] - -Добавить в конструктор `Article`: -
      -
    • Подсчёт общего количества созданных объектов.
    • -
    • Запоминание даты последнего созданного объекта.
    • -
    -Используйте для этого статические свойства. - -Пусть вызов `Article.showStats()` выводит то и другое. - -Использование: - -```js -function Article() { - this.created = new Date(); -*!* - // ... ваш код ... -*/!* -} - -new Article(); -new Article(); - -Article.showStats(); // Всего: 2, Последняя: (дата) - -new Article(); - -Article.showStats(); // Всего: 3, Последняя: (дата) -``` - diff --git a/1-js/6-objects-more/5-static-properties-and-methods/article.md b/1-js/6-objects-more/5-static-properties-and-methods/article.md deleted file mode 100644 index 3595a734..00000000 --- a/1-js/6-objects-more/5-static-properties-and-methods/article.md +++ /dev/null @@ -1,255 +0,0 @@ -# Статические и фабричные методы - -Методы и свойства, которые не привязаны к конкретному экземпляру объекта, называют "статическими". Их записывают прямо в саму функцию-конструктор. - -[cut] - -## Статические свойства - -В коде ниже используются статические свойства `Article.count` и `Article.DEFAULT_FORMAT`: - -```js -function Article() { - Article.count++; -} - -Article.count = 0; // статическое свойство-переменная -Article.DEFAULT_FORMAT = "html"; // статическое свойство-константа -``` - -Они хранят данные, специфичные не для одного объекта, а для всех статей целиком. - -Как правило, это чаще константы, такие как формат "по умолчанию" `Article.DEFAULT_FORMAT`. - -## Статические методы - -С примерами статических методов мы уже знакомы: это встроенные методы [String.fromCharCode](http://javascript.ru/String.fromCharCode), [Date.parse](http://javascript.ru/Date.parse). - -Создадим для `Article` статический метод `Article.showCount()`: - -```js -//+ run -function Article() { - Article.count++; - - //... -} -Article.count = 0; - -Article.showCount = function() { -*!* - alert( this.count ); // (1) -*/!* -} - -// использование -new Article(); -new Article(); -Article.showCount(); // (2) -``` - -Здесь `Article.count` -- статическое свойство, а `Article.showCount` -- статический метод. - -Обратим внимание на использование `this` в примере выше. Несмотря на то, что переменная и метод -- статические, он всё ещё полезен. В строке `(1)` он равен `Article`. - -## Пример: сравнение объектов - -Ещё один хороший способ применения -- сравнение объектов. - -Например, у нас есть объект `Journal` для журналов. Журналы можно сравнивать -- по толщине, по весу, по другим параметрам. - -Объявим "стандартную" функцию сравнения, которая будет сравнивать по дате издания. Эта функция сравнения, естественно, не привязана к конкретному журналу, но относится к журналам вообще. - -Поэтому зададим её как статический метод `Journal.compare`: - -```js -function Journal(date) { - this.date = date; - // ... -} - -// возвращает значение, большее 0, если A больше B, иначе меньшее 0 -Journal.compare = function(journalA, journalB) { - return journalA.date - journalB.date; -}; -``` - -В примере ниже эта функция используется для поиска самого раннего журнала из массива: - -```js -//+ run -function Journal(date) { - this.date = date; - - this.formatDate = function(date) { - return date.getDate() + '.' + (date.getMonth() + 1) + '.' + date.getFullYear(); - }; - - this.getTitle = function() { - return "Выпуск от " + this.formatDate(this.date); - }; - -} - -*!* -Journal.compare = function(journalA, journalB) { - return journalA.date - journalB.date; -}; -*/!* - -// использование: -var journals = [ - new Journal(new Date(2012, 1, 1)), - new Journal(new Date(2012, 0, 1)), - new Journal(new Date(2011, 11, 1)) -]; - -function findMin(journals) { - var min = 0; - for (var i = 0; i < journals.length; i++) { -*!* - // используем статический метод - if (Journal.compare(journals[min], journals[i]) > 0) min = i; -*/!* - } - return journals[min]; -} - -alert( findMin(journals).getTitle() ); -``` - -**Статический метод также можно использовать для функций, которые вообще не требуют наличия объекта.** - -Например, метод `formatDate(date)` можно сделать статическим. Он будет форматировать дату "как это принято в журналах", при этом его можно использовать в любом месте кода, не обязательно создавать журнал. - -Например: - -```js -//+ run -function Journal() { /*...*/ } - -Journal.formatDate = function(date) { - return date.getDate() + '.' + (date.getMonth()+1) + '.' + date.getFullYear(); -} - -// ни одного объекта Journal нет, просто форматируем дату -alert( *!*Journal.formatDate(new Date)*/!* ); -``` - -## Фабричные методы - -Рассмотрим ситуацию, когда объект нужно создавать различными способами. Например, это реализовано во встроенном объекте [Date](/datetime). Он по-разному обрабатывает аргументы разных типов: - -
      -
    • `new Date()` -- создаёт объект с текущей датой,
    • -
    • `new Date(milliseconds)` -- создаёт дату по количеству миллисекунд `milliseconds`,
    • -
    • `new Date(year, month, day ...)` -- создаёт дату по компонентам год, месяц, день...
    • -
    • `new Date(datestring)` -- читает дату из строки `datestring`
    • -
    - -**"Фабричный статический метод" -- удобная альтернатива такому конструктору. Так называется статический метод, который служит для создания новых объектов (поэтому и называется "фабричным").** - -Пример встроенного фабричного метода -- [String.fromCharCode(code)](http://javascript.ru/String.fromCharCode). Этот метод создает строку из кода символа: - -```js -//+ run -var str = String.fromCharCode(65); -alert( str ); // 'A' -``` - -Но строки -- слишком простой пример, посмотрим что-нибудь посложнее. - -Допустим, нам нужно создавать объекты `User`: анонимные `new User()` и с данными `new User({name: 'Вася', age: 25})`. - -Можно, конечно, создать полиморфную функцию-конструктор `User`: - -```js -//+ run -function User(userData) { - if (userData) { // если указаны данные -- одна ветка if - this.name = userData.name; - this.age = userData.age; - } else { // если не указаны -- другая - this.name = 'Аноним'; - } - - this.sayHi = function() { - alert(this.name) - }; - // ... -} - -// Использование - -var guest = new User(); -guest.sayHi(); // Аноним - -var knownUser = new User({ - name: 'Вася', - age: 25 -}); -knownUser.sayHi(); // Вася -``` - -Подход с использованием фабричных методов был бы другим. Вместо разбора параметров в конструкторе -- делаем два метода: `User.createAnonymous` и `User.createFromData`. - -Код: - -```js -//+ run -function User() { - this.sayHi = function() { - alert(this.name) - }; -} - -User.createAnonymous = function() { - var user = new User; - user.name = 'Аноним'; - return user; -} - -User.createFromData = function(userData) { - var user = new User; - user.name = userData.name; - user.age = userData.age; - return user; -} - -// Использование - -*!* -var guest = User.createAnonymous(); -guest.sayHi(); // Аноним - -var knownUser = User.createFromData({ - name: 'Вася', - age: 25 -}); -knownUser.sayHi(); // Вася -*/!* -``` - -Преимущества использования фабричных методов: - -[compare] -+Лучшая читаемость кода. Как конструктора -- вместо одной большой функции несколько маленьких, так и вызывающего кода -- явно видно, что именно создаётся. -+Лучший контроль ошибок, т.к. если в `createFromData` ничего не передали, то будет ошибка, а полиморфный конструктор создал бы анонимного посетителя. -+Удобная расширяемость. Например, нужно добавить создание администратора, без аргументов. Фабричный метод сделать легко: `User.createAdmin = function() { ... }`. А для полиморфного конструктора вызов без аргумента создаст анонима, так что нужно добавить параметр -- "тип посетителя" и усложнить этим код. -[/compare] - -**Поэтому полиморфные конструкторы лучше использовать там, где нужна именно полиморфность**, т.е. когда непонятно, какого типа аргумент передадут, и хочется в одном конструкторе охватить все варианты. - -А в остальных случаях отличная альтернатива -- фабричные методы. - -## Итого - -Статические свойства и методы объекта удобно применять в следующих случаях: - -
      -
    • Общие действия и подсчёты, имеющие отношения ко всем объектам данного типа. В примерах выше это подсчёт количества.
    • -
    • Методы, не привязанные к конкретному объекту, например сравнение.
    • -
    • Вспомогательные методы, которые полезны вне объекта, например для форматирования даты.
    • -
    • Фабричные методы.
    • -
    - diff --git a/1-js/6-objects-more/6-call-apply/1-rewrite-sum-arguments/solution.md b/1-js/6-objects-more/6-call-apply/1-rewrite-sum-arguments/solution.md deleted file mode 100644 index 9e5ca007..00000000 --- a/1-js/6-objects-more/6-call-apply/1-rewrite-sum-arguments/solution.md +++ /dev/null @@ -1,31 +0,0 @@ -# Первый вариант - -```js -//+ run -function sumArgs() { - // скопируем reduce из массива - arguments.reduce = [].reduce; - return arguments.reduce(function(a, b) { - return a + b; - }); -} - -alert( sumArgs(4, 5, 6) ); // 15 -``` - -# Второй вариант - -Метод `call` здесь вполне подойдёт, так как требуется вызвать `reduce` в контексте `arguments` с одним аргументом. - -```js -//+ run -function sumArgs() { - // запустим reduce из массива напрямую - return [].reduce.call(arguments, function(a, b) { - return a + b; - }); -} - -alert( sumArgs(4, 5, 6) ); // 15 -``` - diff --git a/1-js/6-objects-more/6-call-apply/1-rewrite-sum-arguments/task.md b/1-js/6-objects-more/6-call-apply/1-rewrite-sum-arguments/task.md deleted file mode 100644 index b03a9fc7..00000000 --- a/1-js/6-objects-more/6-call-apply/1-rewrite-sum-arguments/task.md +++ /dev/null @@ -1,30 +0,0 @@ -# Перепишите суммирование аргументов - -[importance 5] - -Есть функция `sum`, которая суммирует все элементы массива: - -```js -//+ run -function sum(arr) { - return arr.reduce(function(a, b) { - return a + b; - }); -} - -alert( sum([1, 2, 3]) ); // 6 (=1+2+3) -``` - -Создайте аналогичную функцию `sumArgs()`, которая будет суммировать все свои аргументы: - -```js -function sumArgs() { - /* ваш код */ -} - -alert( sumArgs(1, 2, 3) ); // 6, аргументы переданы через запятую, без массива -``` - -Для решения примените метод `reduce` к `arguments`, используя `call`, `apply` или одалживание метода. - -P.S. Функция `sum` вам не понадобится, она приведена в качестве примера использования `reduce` для похожей задачи. \ No newline at end of file diff --git a/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/_js.view/solution.js b/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/_js.view/solution.js deleted file mode 100644 index b49aeb62..00000000 --- a/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/_js.view/solution.js +++ /dev/null @@ -1,3 +0,0 @@ -function applyAll(func) { - return func.apply(this, [].slice.call(arguments, 1)); -} \ No newline at end of file diff --git a/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/_js.view/test.js b/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/_js.view/test.js deleted file mode 100644 index 871a19a7..00000000 --- a/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/_js.view/test.js +++ /dev/null @@ -1,15 +0,0 @@ -describe("applyAll", function() { - - it("применяет функцию ко всем аргументам, начиная со 2го", function() { - var min = applyAll(Math.min, 1, 2, 3); - assert.equal(min, 1); - }); - - it("при отсутствии аргументов просто вызывает функцию", function() { - var spy = sinon.spy(); - applyAll(spy); - assert(spy.calledOnce); - assert.equal(spy.firstCall.args.length, 0); - }); - -}); \ No newline at end of file diff --git a/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/solution.md b/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/solution.md deleted file mode 100644 index c8579b0a..00000000 --- a/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/solution.md +++ /dev/null @@ -1,28 +0,0 @@ - - -```js -//+ run -function sum() { - return [].reduce.call(arguments, function(a, b) { - return a + b; - }); -} - -function mul() { - return [].reduce.call(arguments, function(a, b) { - return a * b; - }); -} - -*!* -function applyAll(func) { - return func.apply(this, [].slice.call(arguments, 1)); - } -*/!* - -alert( applyAll(sum, 1, 2, 3) ); // 6 -alert( applyAll(mul, 2, 3, 4) ); // 24 -alert( applyAll(Math.max, 2, -2, 3) ); // 3 -alert( applyAll(Math.min, 2, -2, 3) ); // -2 -``` - diff --git a/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/task.md b/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/task.md deleted file mode 100644 index 95bd2413..00000000 --- a/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/task.md +++ /dev/null @@ -1,40 +0,0 @@ -# Примените функцию к аргументам - -[importance 5] - -Напишите функцию `applyAll(func, arg1, arg2...)`, которая получает функцию `func` и произвольное количество аргументов. - -Она должна вызвать `func(arg1, arg2...)`, то есть передать в `func` все аргументы, начиная со второго, и возвратить результат. - -Например: - -```js -// Применить Math.max к аргументам 2, -2, 3 -alert( applyAll(Math.max, 2, -2, 3) ); // 3 - -// Применить Math.min к аргументам 2, -2, 3 -alert( applyAll(Math.min, 2, -2, 3) ); // -2 -``` - -Область применения `applyAll`, конечно, шире, можно вызывать её и со своими функциями: - -```js -//+ run -function sum() { // суммирует аргументы: sum(1,2,3) = 6 - return [].reduce.call(arguments, function(a, b) { - return a + b; - }); -} - -function mul() { // перемножает аргументы: mul(2,3,4) = 24 - return [].reduce.call(arguments, function(a, b) { - return a * b; - }); -} - -*!* -alert( applyAll(sum, 1, 2, 3) ); // -> sum(1, 2, 3) = 6 -alert( applyAll(mul, 2, 3, 4) ); // -> mul(2, 3, 4) = 24 -*/!* -``` - diff --git a/1-js/6-objects-more/6-call-apply/article.md b/1-js/6-objects-more/6-call-apply/article.md deleted file mode 100644 index 08f9f386..00000000 --- a/1-js/6-objects-more/6-call-apply/article.md +++ /dev/null @@ -1,311 +0,0 @@ -# Явное указание this: "call", "apply" - -Итак, мы знаем, что `this` -- это текущий объект при вызове "через точку" и новый объект при конструировании через `new`. - -В этой главе наша цель получить окончательное и полное понимание `this` в JavaScript. Для этого не хватает всего одного элемента: способа явно указать `this` при помощи методов `call` и `apply`. - -[cut] - -## Метод call - -Синтаксис метода `call`: - -```js -func.call(context, arg1, arg2, ...) -``` - -При этом вызывается функция `func`, первый аргумент `call` становится её `this`, а остальные передаются "как есть". - -**Вызов `func.call(context, a, b...)` -- то же, что обычный вызов `func(a, b...)`, но с явно указанным `this(=context)`.** - -Например, у нас есть функция `showFullName`, которая работает с `this`: - -```js -function showFullName() { - alert( this.firstName + " " + this.lastName ); -} -``` - -Пока объекта нет, но это нормально, ведь JavaScript позволяет использовать `this` везде. Любая функция может в своём коде упомянуть `this`, каким будет это значение -- выяснится в момент запуска. - -Вызов `showFullName.call(user)` запустит функцию, установив `this = user`, вот так: - -```js -//+ run -function showFullName() { - alert( this.firstName + " " + this.lastName ); -} - -var user = { - firstName: "Василий", - lastName: "Петров" -}; - -*!* -// функция вызовется с this=user -showFullName.call(user) // "Василий Петров" -*/!* -``` - -После контекста в `call` можно передать аргументы для функции. Вот пример с более сложным вариантом `showFullName`, который конструирует ответ из указанных свойств объекта: - -```js -//+ run -var user = { - firstName: "Василий", - surname: "Петров", - patronym: "Иванович" -}; - -function showFullName(firstPart, lastPart) { - alert( this[firstPart] + " " + this[lastPart] ); -} - -*!* -// f.call(контекст, аргумент1, аргумент2, ...) -showFullName.call(user, 'firstName', 'surname') // "Василий Петров" -showFullName.call(user, 'firstName', 'patronym') // "Василий Иванович" -*/!* -``` - -## "Одалживание метода" - -При помощи `call` можно легко взять метод одного объекта, в том числе встроенного, и вызвать в контексте другого. - -Это называется "одалживание метода" (на англ. *method borrowing*). - -**Используем эту технику для упрощения манипуляций с `arguments`.** - -Как мы знаем, `arguments` не массив, а обычный объект, поэтому таких полезных методов как `push`, `pop`, `join` и других у него нет. Но иногда так хочется, чтобы были... - -Нет ничего проще! Давайте скопируем метод `join` из обычного массива: - -```js -//+ run -function printArgs() { - arguments.join = [].join; // одолжили метод (1) - - var argStr = arguments.join(':'); // (2) - - alert( argStr ); // сработает и выведет 1:2:3 -} - -printArgs(1, 2, 3); -``` - -
      -
    1. В строке `(1)` объявлен пустой массив `[]` и скопирован его метод `[].join`. Обратим внимание, мы не вызываем его, а просто копируем. Функция, в том числе встроенная -- обычное значение, мы можем скопировать любое свойство любого объекта, и `[].join` здесь не исключение.
    2. -
    3. В строке `(2)` запустили `join` в контексте `arguments`, как будто он всегда там был.
    4. - -[smart header="Почему вызов сработает?"] - -Здесь метод
      join массива скопирован и вызван в контексте `arguments`. Не произойдёт ли что-то плохое от того, что `arguments` -- не массив? Почему он, вообще, сработал? - -Ответ на эти вопросы простой. В соответствии [со спецификацией](http://es5.github.com/x15.4.html#x15.4.4.5), внутри `join` реализован примерно так: - -```js -function join(separator) { - if (!this.length) return ''; - - var str = this[0]; - - for (var i = 1; i < this.length; i++) { - str += separator + this[i]; - } - - return str; -} -``` - -Как видно, используется `this`, числовые индексы и свойство `length`. Если эти свойства есть, то все в порядке. А больше ничего и не нужно. - -В качестве `this` подойдёт даже обычный объект: - -```js -//+ run -var obj = { // обычный объект с числовыми индексами и length - 0: "А", - 1: "Б", - 2: "В", - length: 3 -}; - -*!* -obj.join = [].join; -alert( obj.join(';') ); // "A;Б;В" -*/!* -``` - -[/smart] - -...Однако, копирование метода из одного объекта в другой не всегда приемлемо! - -Представим на минуту, что вместо `arguments` у нас -- произвольный объект. У него тоже есть числовые индексы, `length` и мы хотим вызвать в его контексте метод `[].join`. То есть, ситуация похожа на `arguments`, но (!) вполне возможно, что у объекта есть *свой* метод `join`. - -Поэтому копировать `[].join`, как сделано выше, нельзя: если он перезапишет собственный `join` объекта, то будет страшный бардак и путаница. - -Безопасно вызвать метод нам поможет `call`: - -```js -//+ run -function printArgs() { - var join = [].join; // скопируем ссылку на функцию в переменную - -*!* - // вызовем join с this=arguments, - // этот вызов эквивалентен arguments.join(':') из примера выше - var argStr = join.call(arguments, ':'); -*/!* - - alert( argStr ); // сработает и выведет 1:2:3 -} - -printArgs(1, 2, 3); -``` - -Мы вызвали метод без копирования. Чисто, безопасно. - -## Ещё пример: [].slice.call(arguments) - -В JavaScript есть очень простой способ сделать из `arguments` настоящий массив. Для этого возьмём метод массива: slice. - -По стандарту вызов `arr.slice(start, end)` создаёт новый массив и копирует в него элементы массива `arr` от `start` до `end`. А если `start` и `end` не указаны, то копирует весь массив. - -Вызовем его в контексте `arguments`: - -```js -//+ run -function printArgs() { - // вызов arr.slice() скопирует все элементы из this в новый массив -*!* - var args = [].slice.call(arguments); -*/!* - alert( args.join(', ') ); // args - полноценный массив из аргументов -} - -printArgs('Привет', 'мой', 'мир'); // Привет, мой, мир -``` - -Как и в случае с `join`, такой вызов технически возможен потому, что `slice` для работы требует только нумерованные свойства и `length`. Всё это в `arguments` есть. - -## Метод apply - -Если нам неизвестно, с каким количеством аргументов понадобится вызвать функцию, можно использовать более мощный метод: `apply`. - -**Вызов функции при помощи `func.apply` работает аналогично `func.call`, но принимает массив аргументов вместо списка.** - -```js -func.call(context, arg1, arg2); -// идентичен вызову -func.apply(context, [arg1, arg2]); -``` - -В частности, эти две строчки cработают одинаково: - -```js -showFullName.call(user, 'firstName', 'surname'); - -showFullName.apply(user, ['firstName', 'surname']); -``` - -Преимущество `apply` перед `call` отчётливо видно, когда мы формируем массив аргументов динамически. - -Например, в JavaScript есть встроенная функция `Math.max(a, b, c...)`, которая возвращает максимальное значение из аргументов: - -```js -//+ run -alert( Math.max(1, 5, 2) ); // 5 -``` - -При помощи `apply` мы могли бы найти максимум в произвольном массиве, вот так: - -```js -//+ run -var arr = []; -arr.push(1); -arr.push(5); -arr.push(2); - -// получить максимум из элементов arr -alert( Math.max.apply(null, arr) ); // 5 -``` - -В примере выше мы передали аргументы через массив -- второй параметр `apply`... Но вы, наверное, заметили небольшую странность? В качестве контекста `this` был передан `null`. - -Строго говоря, полным эквивалентом вызову `Math.max(1,2,3)` был бы вызов `Math.max.apply(Math, [1,2,3])`. В обоих этих вызовах контекстом будет объект `Math`. - -Но в данном случае в качестве контекста можно передавать что угодно, поскольку в своей внутренней реализации метод `Math.max` не использует `this`. Действительно, зачем `this`, если нужно всего лишь выбрать максимальный из аргументов? Вот так, при помощи `apply` мы получили короткий и элегантный способ вычислить максимальное значение в массиве! - -[smart header="Вызов `call/apply` с `null` или `undefined`"] - -В современном стандарте `call/apply` передают `this` "как есть". А в старом, без `use strict`, при указании первого аргумента `null` или `undefined` в `call/apply`, функция получает `this = window`, например: - -Современный стандарт: -```js -//+ run -function f() { - "use strict"; -*!* - alert( this ); // null -*/!* -} - -f.call(null); -``` - -Без `use strict`: - -```js -//+ run -function f() { - alert( this ); // window -} - -f.call(null); -``` - -[/smart] - -## Итого про this - -Значение `this` устанавливается в зависимости от того, как вызвана функция: - -
      -
      При вызове функции как метода
      -
      - -```js -//+ no-beautify -obj.func(...) // this = obj -obj["func"](...) -``` - -
      -
      При обычном вызове
      -
      - -```js -func(...) // this = window (ES3) /undefined (ES5) -``` - -
      -
      В `new`
      -
      - -```js -new func() // this = {} (новый объект) -``` - -
      -
      Явное указание
      -
      - -```js -func.apply(context, args) // this = context (явная передача) -func.call(context, arg1, arg2, ...) -``` - -
      -
      - - diff --git a/1-js/6-objects-more/7-bind/1-cross-browser-bind/solution.md b/1-js/6-objects-more/7-bind/1-cross-browser-bind/solution.md deleted file mode 100644 index 28b52dcb..00000000 --- a/1-js/6-objects-more/7-bind/1-cross-browser-bind/solution.md +++ /dev/null @@ -1,8 +0,0 @@ - -Страшновато выглядит, да? Работает так (по строкам): -
        -
      1. Вызов `bind` сохраняет дополнительные аргументы `args` (они идут со 2го номера) в массив `bindArgs`.
      2. -
      3. ... и возвращает обертку `wrapper`.
      4. -
      5. Эта обёртка делает из `arguments` массив `args` и затем, используя метод [concat](http://javascript.ru/Array/concat), прибавляет их к аргументам `bindArgs` (карринг).
      6. -
      7. Затем передаёт вызов `func` с контекстом и общим массивом аргументов.
      8. -
      diff --git a/1-js/6-objects-more/7-bind/1-cross-browser-bind/task.md b/1-js/6-objects-more/7-bind/1-cross-browser-bind/task.md deleted file mode 100644 index ce481712..00000000 --- a/1-js/6-objects-more/7-bind/1-cross-browser-bind/task.md +++ /dev/null @@ -1,23 +0,0 @@ -# Кросс-браузерная эмуляция bind - -[importance 3] - -Если вы вдруг захотите копнуть поглубже -- аналог `bind` для IE8- и старых версий других браузеров будет выглядеть следующим образом: - -```js -//+ no-beautify -function bind(func, context /*, args*/) { - var bindArgs = [].slice.call(arguments, 2); // (1) - function wrapper() { // (2) - var args = [].slice.call(arguments); - var unshiftArgs = bindArgs.concat(args); // (3) - return func.apply(context, unshiftArgs); // (4) - } - return wrapper; -} -``` - -Использование -- вместо `mul.bind(null, 2)` вызывать `bind(mul, null, 2)`. - -Не факт, что он вам понадобится, но в качестве упражнение попробуйте разобраться, как это работает. - diff --git a/1-js/6-objects-more/7-bind/2-write-to-object-after-bind/solution.md b/1-js/6-objects-more/7-bind/2-write-to-object-after-bind/solution.md deleted file mode 100644 index ccd6ca0c..00000000 --- a/1-js/6-objects-more/7-bind/2-write-to-object-after-bind/solution.md +++ /dev/null @@ -1,22 +0,0 @@ -Ответ: `Hello`. - -```js -//+ run -function f() { - alert( this ); -} - -var user = { - g: f.bind("Hello") -} - -user.g(); -``` - -Так как вызов идёт в контексте объекта `user.g()`, то внутри функции `g` контекст `this = user`. - -Однако, функции `g` совершенно без разницы, какой `this` она получила. - -Её единственное предназначение -- это передать вызов в `f` вместе с аргументами и ранее указанным контекстом `"Hello"`, что она и делает. - -Эта задача демонстрирует, что изменить однажды привязанный контекст уже нельзя. \ No newline at end of file diff --git a/1-js/6-objects-more/7-bind/2-write-to-object-after-bind/task.md b/1-js/6-objects-more/7-bind/2-write-to-object-after-bind/task.md deleted file mode 100644 index a189eeb3..00000000 --- a/1-js/6-objects-more/7-bind/2-write-to-object-after-bind/task.md +++ /dev/null @@ -1,18 +0,0 @@ -# Запись в объект после bind - -[importance 5] - -Что выведет функция? - -```js -function f() { - alert( this ); -} - -var user = { - g: f.bind("Hello") -} - -user.g(); -``` - diff --git a/1-js/6-objects-more/7-bind/3-second-bind/solution.md b/1-js/6-objects-more/7-bind/3-second-bind/solution.md deleted file mode 100644 index 2a8b26d8..00000000 --- a/1-js/6-objects-more/7-bind/3-second-bind/solution.md +++ /dev/null @@ -1,58 +0,0 @@ -Ответ: `"Вася"`. - -```js -//+ run no-beautify -function f() { - alert(this.name); -} - -f = f.bind( {name: "Вася"} ).bind( {name: "Петя"} ); - -f(); // Вася -``` - -Первый вызов `f.bind(..Вася..)` возвращает "обёртку", которая устанавливает контекст для `f` и передаёт вызов `f`. - -Следующий вызов `bind` будет устанавливать контекст уже для этой обёртки. Это ни на что не повлияет. - -Чтобы это проще понять, используем наш собственный вариант `bind` вместо встроенного: - -```js -function bind(func, context) { - return function() { - return func.apply(context, arguments); - }; -} -``` - -Код станет таким: - -```js -//+ no-beautify -function f() { - alert(this.name); -} - -f = bind(f, {name: "Вася"} ); // (1) -f = bind(f, {name: "Петя"} ); // (2) - -f(); // Вася -``` - -Здесь видно, что первый вызов `bind`, в строке `(1)`, возвращает обёртку вокруг `f`, которая выглядит так (выделена): - -```js -function bind(func, context) { -*!* - return function() { - // здесь this не используется - return func.apply(context, arguments); - }; -*/!* -} -``` - -В этой обёртке нигде не используется `this`, контекст `context` берётся из замыкания. Посмотрите на код, там нигде нет `this`. - -Поэтому следующий `bind` в строке `(2)`, который выполняется уже над обёрткой и фиксирует в ней `this`, ни на что не влияет. Какая разница, что будет в качестве `this` в функции, которая этот `this` не использует? Контекст `context`, как видно в коде выше, она получает через замыкание из аргументов первого `bind`. - diff --git a/1-js/6-objects-more/7-bind/3-second-bind/task.md b/1-js/6-objects-more/7-bind/3-second-bind/task.md deleted file mode 100644 index 3b0f06b2..00000000 --- a/1-js/6-objects-more/7-bind/3-second-bind/task.md +++ /dev/null @@ -1,17 +0,0 @@ -# Повторный bind - -[importance 5] - -Что выведет этот код? - -```js -//+ no-beautify -function f() { - alert(this.name); -} - -f = f.bind( {name: "Вася"} ).bind( {name: "Петя" } ); - -f(); -``` - diff --git a/1-js/6-objects-more/7-bind/4-function-property-after-bind/solution.md b/1-js/6-objects-more/7-bind/4-function-property-after-bind/solution.md deleted file mode 100644 index a882a35e..00000000 --- a/1-js/6-objects-more/7-bind/4-function-property-after-bind/solution.md +++ /dev/null @@ -1,4 +0,0 @@ -Ответ: `undefined`. - -Результатом работы `bind` является функция-обёртка над `sayHi`. Эта функция -- самостоятельный объект, у неё уже нет свойства `test`. - diff --git a/1-js/6-objects-more/7-bind/4-function-property-after-bind/task.md b/1-js/6-objects-more/7-bind/4-function-property-after-bind/task.md deleted file mode 100644 index b182b4e5..00000000 --- a/1-js/6-objects-more/7-bind/4-function-property-after-bind/task.md +++ /dev/null @@ -1,22 +0,0 @@ -# Свойство функции после bind - -[importance 5] - -В свойство функции записано значение. Изменится ли оно после применения `bind`? Обоснуйте ответ. - -```js -function sayHi() { - alert( this.name ); -} -sayHi.test = 5; -alert( sayHi.test ); // 5 - -*!* -var bound = sayHi.bind({ - name: "Вася" -}); - -alert( bound.test ); // что выведет? почему? -*/!* -``` - diff --git a/1-js/6-objects-more/7-bind/5-question-use-bind/solution.md b/1-js/6-objects-more/7-bind/5-question-use-bind/solution.md deleted file mode 100644 index 7eb5963e..00000000 --- a/1-js/6-objects-more/7-bind/5-question-use-bind/solution.md +++ /dev/null @@ -1,110 +0,0 @@ -# Решение с bind - -Ошибка происходит потому, что `ask` получает только функцию, без объекта-контекста. - -Используем `bind`, чтобы передать в `ask` функцию с уже привязанным контекстом: - -```js -//+ run -"use strict"; - -function ask(question, answer, ok, fail) { - var result = prompt(question, ''); - if (result.toLowerCase() == answer.toLowerCase()) ok(); - else fail(); -} - -var user = { - login: 'Василий', - password: '12345', - - loginOk: function() { - alert( this.login + ' вошёл в сайт' ); - }, - - loginFail: function() { - alert( this.login + ': ошибка входа' ); - }, - - checkPassword: function() { -*!* - ask("Ваш пароль?", this.password, this.loginOk.bind(this), this.loginFail.bind(this)); -*/!* - } -}; - -var vasya = user; -user = null; -vasya.checkPassword(); -``` - -# Решение через замыкание - -Альтернативное решение -- сделать функции-обёртки над `user.loginOk/loginFail`: - -```js -//+ no-beautify -var user = { - ... - checkPassword: function() { -*!* - ask("Ваш пароль?", this.password, - function() { user.loginOk(); }, function() { user.loginFail(); }); -*/!* - } -} -``` - -...Но такой код использует переменную `user`, так что если объект переместить из неё, к примеру, так, то работать он не будет: - -```js -var vasya = user; // переместим user в vasya -user = null; -vasya.checkPassword(); // упс будет ошибка, ведь в коде объекта остался user -``` - -Для того, чтобы избежать проблем, можно использовать `this`. Внутри `checkPassword` он всегда будет равен текущему объекту, так что скопируем его в переменную, которую назовём `self`: - -```js -//+ run -"use strict"; - -function ask(question, answer, ok, fail) { - var result = prompt(question, ''); - if (result.toLowerCase() == answer.toLowerCase()) ok(); - else fail(); -} - -var user = { - login: 'Василий', - password: '12345', - - loginOk: function() { - alert( this.login + ' вошёл в сайт' ); - }, - - loginFail: function() { - alert( this.login + ': ошибка входа' ); - }, - - checkPassword: function() { -*!* - var self = this; - ask("Ваш пароль?", this.password, - function() { - self.loginOk(); - }, - function() { - self.loginFail(); - } - ); -*/!* - } -}; - -var vasya = user; -user = null; -vasya.checkPassword(); -``` - -Теперь всё работает. Анонимные функции достают правильный контекст из замыкания, где он сохранён в переменной `self`. \ No newline at end of file diff --git a/1-js/6-objects-more/7-bind/5-question-use-bind/task.md b/1-js/6-objects-more/7-bind/5-question-use-bind/task.md deleted file mode 100644 index a36bb858..00000000 --- a/1-js/6-objects-more/7-bind/5-question-use-bind/task.md +++ /dev/null @@ -1,50 +0,0 @@ -# Использование функции вопросов - -[importance 5] - -Вызов `user.checkPassword()` в коде ниже должен, при помощи `ask`, спрашивать пароль и вызывать `loginOk/loginFail` в зависимости от правильности ответа. - -Однако, его вызов приводит к ошибке. Почему? - -Исправьте выделенную строку, чтобы всё работало (других строк изменять не надо). - -```js -//+ run -"use strict"; - -function ask(question, answer, ok, fail) { - var result = prompt(question, ''); - if (result.toLowerCase() == answer.toLowerCase()) ok(); - else fail(); -} - -var user = { - login: 'Василий', - password: '12345', - - loginOk: function() { - alert( this.login + ' вошёл в сайт' ); - }, - - loginFail: function() { - alert( this.login + ': ошибка входа' ); - }, - - checkPassword: function() { -*!* - ask("Ваш пароль?", this.password, this.loginOk, this.loginFail); -*/!* - } -}; - -user.checkPassword(); -``` - -P.S. Ваше решение должно также срабатывать, если переменная `user` будет перезаписана, например вместо `user.checkPassword()` в конце будут строки: - -```js -var vasya = user; -user = null; -vasya.checkPassword(); -``` - diff --git a/1-js/6-objects-more/7-bind/6-ask-currying/solution.md b/1-js/6-objects-more/7-bind/6-ask-currying/solution.md deleted file mode 100644 index 86877551..00000000 --- a/1-js/6-objects-more/7-bind/6-ask-currying/solution.md +++ /dev/null @@ -1,73 +0,0 @@ -# Решение с bind - -Первое решение -- передать в `ask` функции с привязанным контекстом и аргументами. - -```js -//+ run -"use strict"; - -function ask(question, answer, ok, fail) { - var result = prompt(question, ''); - if (result.toLowerCase() == answer.toLowerCase()) ok(); - else fail(); -} - -var user = { - login: 'Василий', - password: '12345', - - loginDone: function(result) { - alert( this.login + (result ? ' вошёл в сайт' : ' ошибка входа') ); - }, - - checkPassword: function() { -*!* - ask("Ваш пароль?", this.password, this.loginDone.bind(this, true), this.loginDone.bind(this, false)); -*/!* - } -}; - -user.checkPassword(); -``` - -# Решение с локальной переменной - -Второе решение -- это скопировать `this` в локальную переменную (чтобы внешняя перезапись не повлияла): - -```js -//+ run -"use strict"; - -function ask(question, answer, ok, fail) { - var result = prompt(question, ''); - if (result.toLowerCase() == answer.toLowerCase()) ok(); - else fail(); -} - -var user = { - login: 'Василий', - password: '12345', - - loginDone: function(result) { - alert( this.login + (result ? ' вошёл в сайт' : ' ошибка входа') ); - }, - - checkPassword: function() { - var self = this; -*!* - ask("Ваш пароль?", this.password, - function() { - self.loginDone(true); - }, - function() { - self.loginDone(false); - } - ); -*/!* - } -}; - -user.checkPassword(); -``` - -Оба решения хороши, вариант с `bind` короче. \ No newline at end of file diff --git a/1-js/6-objects-more/7-bind/6-ask-currying/task.md b/1-js/6-objects-more/7-bind/6-ask-currying/task.md deleted file mode 100644 index 7b48e190..00000000 --- a/1-js/6-objects-more/7-bind/6-ask-currying/task.md +++ /dev/null @@ -1,57 +0,0 @@ -# Использование функции вопросов с каррингом - -[importance 5] - -Эта задача -- усложнённый вариант задачи [](/task/question-use-bind). В ней объект `user` изменён. - -Теперь заменим две функции `user.loginOk()` и `user.loginFail()` на единый метод: `user.loginDone(true/false)`, который нужно вызвать с `true` при верном ответе и `fail` -- при неверном. - -Код ниже делает это, соответствующий фрагмент выделен. - -**Сейчас он обладает важным недостатком: при записи в `user` другого значения объект перестанет корректно работать, вы увидите это, запустив пример ниже (будет ошибка).** - -Как бы вы написали правильно? - -**Исправьте выделенный фрагмент, чтобы код заработал.** - -```js -//+ run -"use strict"; - -function ask(question, answer, ok, fail) { - var result = prompt(question, ''); - if (result.toLowerCase() == answer.toLowerCase()) ok(); - else fail(); -} - -var user = { - login: 'Василий', - password: '12345', - - // метод для вызова из ask - loginDone: function(result) { - alert( this.login + (result ? ' вошёл в сайт' : ' ошибка входа') ); - }, - - checkPassword: function() { -*!* - ask("Ваш пароль?", this.password, - function() { - user.loginDone(true); - }, - function() { - user.loginDone(false); - } - ); -*/!* - } -}; - -var vasya = user; -user = null; -vasya.checkPassword(); -``` - -Изменения должны касаться только выделенного фрагмента. - -Если возможно, предложите два решения, одно -- с использованием `bind`, другое -- без него. Какое решение лучше? diff --git a/1-js/6-objects-more/7-bind/article.md b/1-js/6-objects-more/7-bind/article.md deleted file mode 100644 index a18a910e..00000000 --- a/1-js/6-objects-more/7-bind/article.md +++ /dev/null @@ -1,434 +0,0 @@ -# Привязка контекста и карринг: "bind" - -Функции в JavaScript никак не привязаны к своему контексту `this`, с одной стороны, здорово -- это позволяет быть максимально гибкими, одалживать методы и так далее. - -Но с другой стороны -- в некоторых случаях контекст может быть потерян. То есть мы вроде как вызываем метод объекта, а на самом деле он получает `this = undefined`. - -Такая ситуация является типичной для начинающих разработчиков, но бывает и у "зубров" тоже. Конечно, "зубры" при этом знают, что с ней делать. - -[cut] - -## Пример потери контекста - -В браузере есть встроенная функция `setTimeout(func, ms)`, которая вызывает выполение функции `func` через `ms` миллисекунд (=1/1000 секунды). - -Мы подробно остановимся на ней и её тонкостях позже, в главе [](/settimeout-setinterval), а пока просто посмотрим пример. - -Этот код выведет "Привет" через 1000мс, то есть 1 секунду: - -```js -//+ run -setTimeout(function() { - alert( "Привет" ); -}, 1000); -``` - -Попробуем сделать то же самое с методом объекта, следующий код должен выводить имя пользователя через 1 секунду: - -```js -//+ run -var user = { - firstName: "Вася", - sayHi: function() { - alert( this.firstName ); - } -}; - -*!* -setTimeout(user.sayHi, 1000); // undefined (не Вася!) -*/!* -``` - -При запуске кода выше через секунду выводится вовсе не `"Вася"`, а `undefined`! - -Это произошло потому, что в примере выше `setTimeout` получил функцию `user.sayHi`, но не её контекст. То есть, последняя строчка аналогична двум таким: - -```js -var f = user.sayHi; -setTimeout(f, 1000); // контекст user потеряли -``` - - -Ситуация довольно типична -- мы хотим передать метод объекта куда-то в другое место кода, откуда он потом может быть вызван. Как бы прикрепить к нему контекст, желательно, с минимумом плясок с бубном и при этом надёжно? - -Есть несколько способов решения, среди которых мы, в зависимости от ситуации, можем выбирать. - -## Решение 1: сделать обёртку - -Самый простой вариант решения -- это обернуть вызов в анонимную функцию: - -```js -//+ run -var user = { - firstName: "Вася", - sayHi: function() { - alert( this.firstName ); - } -}; - -*!* -setTimeout(function() { - user.sayHi(); // Вася -}, 1000); -*/!* -``` - -Теперь код работает, так как `user` достаётся из замыкания. - -Это решение также позволяет передать дополнительные аргументы: - - -```js -//+ run -var user = { - firstName: "Вася", - sayHi: function(who) { - alert( this.firstName + ": Привет, " + who ); - } -}; - -*!* -setTimeout(function() { - user.sayHi("Петя"); // Вася: Привет, Петя -}, 1000); -*/!* -``` - - -Но тут же появляется и уязвимое место в структуре кода! - -А что, если до срабатывания `setTimeout` (ведь есть целая секунда) в переменную `user` будет записано другое значение? К примеру, в другом месте кода будет присвоено `user=(другой пользователь)`... В этом случае вызов неожиданно будет совсем не тот! - -Хорошо бы гарантировать правильность контекста. - -## Решение 2: bind для привязки контекста - -Напишем вспомогательную функцию `bind(func, context)`, которая будет жёстко фиксировать контекст для `func`: - -```js -function bind(func, context) { - return function() { // (*) - return func.apply(context, arguments); - }; -} -``` - -Посмотрим, что она делает, как работает, на таком примере: - -```js -//+ run -function f() { - alert( this ); -} - -var g = bind(f, "Context"); -g(); // Context -``` - -То есть, `bind(f, "Context")` привязывает `"Context"` в качестве `this` для `f`. - -Посмотрим, за счёт чего это происходит. - -Результатом `bind(f, "Context")`, как видно из кода, будет анонимная функция `(*)`. - -Вот она отдельно: - -```js -function() { // (*) - return func.apply(context, arguments); -}; -``` - -Если подставить наши конкретные аргументы, то есть `f` и `"Context"`, то получится так: - -```js -function() { // (*) - return f.apply("Context", arguments); -}; -``` - -Эта функция запишется в переменную `g`. - -Далее, если вызвать `g`, то вызов будет передан в `f`, причём `f.apply("Context", arguments)` передаст в качестве контекста `"Context"`, который и будет выведен. - -Если вызвать `g` с аргументами, то также будет работать: - -```js -//+ run -function f(a, b) { - alert( this ); - alert( a + b ); -} - -var g = bind(f, "Context"); -g(1, 2); // Context, затем 3 -``` - -Аргументы, которые получила `g(...)`, передаются в `f` также благодаря методу `.apply`. - -**Иными словами, в результате вызова `bind(func, context)` мы получаем "функцию-обёртку", которая прозрачно передаёт вызов в `func`, с теми же аргументами, но фиксированным контекстом `context`.** - -Вернёмся к `user.sayHi`. Вариант с `bind`: - -```js -//+ run -function bind(func, context) { - return function() { - return func.apply(context, arguments); - }; -} - -var user = { - firstName: "Вася", - sayHi: function() { - alert( this.firstName ); - } -}; - -*!* -setTimeout(bind(user.sayHi, user), 1000); -*/!* -``` - -Теперь всё в порядке! - -Вызов `bind(user.sayHi, user)` возвращает такую функцию-обёртку, которая привязывает `user.sayHi` к контексту `user`. Она будет вызвана через 1000мс. - -Полученную обёртку можно вызвать и с аргументами -- они пойдут в `user.sayHi` без изменений, фиксирован лишь контекст. - -```js -//+ run -var user = { - firstName: "Вася", -*!* - sayHi: function(who) { // здесь у sayHi есть один аргумент -*/!* - alert( this.firstName + ": Привет, " + who ); - } -}; - -var sayHi = bind(user.sayHi, user); - -*!* -// контекст Вася, а аргумент передаётся "как есть" -sayHi("Петя"); // Вася: Привет, Петя -sayHi("Маша"); // Вася: Привет, Маша -*/!* -``` - -В примере выше продемонстрирована другая частая цель использования `bind` -- "привязать" функцию к контексту, чтобы в дальнейшем "не таскать за собой" объект, а просто вызывать `sayHi`. - -Результат `bind` можно передавать в любое место кода, вызывать как обычную функцию, он "помнит" свой контекст. - -## Решение 3: встроенный метод bind [#bind] - -В современном JavaScript (или при подключении библиотеки [es5-shim](https://github.com/kriskowal/es5-shim) для IE8-) у функций уже есть встроенный метод [bind](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind), который мы можем использовать. - -Он работает примерно так же, как `bind`, который описан выше. - -Изменения очень небольшие: - -```js -//+ run -function f(a, b) { - alert( this ); - alert( a + b ); -} - -*!* -// вместо -// var g = bind(f, "Context"); -var g = f.bind("Context"); -*/!* -g(1, 2); // Context, затем 3 -``` - -Синтаксис встроенного `bind`: - -```js -var wrapper = func.bind(context[, arg1, arg2...]) -``` - -
      -
      `func`
      -
      Произвольная функция
      -
      `context`
      -
      Контекст, который привязывается к `func`
      -
      `arg1`, `arg2`, ...
      -
      Если указаны аргументы `arg1, arg2...` -- они будут прибавлены к каждому вызову новой функции, причем встанут *перед* теми, которые указаны при вызове.
      -
      - -Результат вызова `func.bind(context)` аналогичен вызову `bind(func, context)`, описанному выше. То есть, `wrapper` -- это обёртка, фиксирующая контекст и передающая вызовы в `func`. Также можно указать аргументы, тогда и они будут фиксированы, но об этом чуть позже. - -Пример со встроенным методом `bind`: - -```js -//+ run -var user = { - firstName: "Вася", - sayHi: function() { - alert( this.firstName ); - } -}; - -*!* -// setTimeout( bind(user.sayHi, user), 1000 ); -setTimeout(user.sayHi.bind(user), 1000); // аналог через встроенный метод -*/!* -``` - -Получили простой и надёжный способ привязать контекст, причём даже встроенный в JavaScript. - -Далее мы будем использовать именно встроенный метод `bind`. - -[warn header="bind не похож на call/apply"] -Методы `bind` и `call/apply` близки по синтаксису, но есть важнейшее отличие. - -Методы `call/apply` вызывают функцию с заданным контекстом и аргументами. - -А `bind` не вызывает функцию. Он только возвращает "обёртку", которую мы можем вызвать позже, и которая передаст вызов в исходную функцию, с привязанным контекстом. -[/warn] - -[smart header="Привязать всё: `bindAll`"] -Если у объекта много методов и мы планируем их активно передавать, то можно привязать контекст для них всех в цикле: - -```js -for (var prop in user) { - if (typeof user[prop] == 'function') { - user[prop] = user[prop].bind(user); - } -} -``` - -В некоторых JS-фреймворках есть даже встроенные функции для этого, например [_.bindAll(obj)](http://lodash.com/docs#bindAll). -[/smart] - - -## Карринг - -До этого мы говорили о привязке контекста. Теперь пойдём на шаг дальше. Привязывать можно не только контекст, но и аргументы. Используется это реже, но бывает полезно. - -[Карринг](http://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D1%80%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5) (currying) или *каррирование* -- термин [функционального программирования](http://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5), который означает создание новой функции путём фиксирования аргументов существующей. - -Как было сказано выше, метод `func.bind(context, ...)` может создавать обёртку, которая фиксирует не только контекст, но и ряд аргументов функции. - -Например, есть функция умножения двух чисел `mul(a, b)`: - -```js -function mul(a, b) { - return a * b; -}; -``` - -При помощи `bind` создадим функцию `double`, удваивающую значения. Это будет вариант функции `mul` с фиксированным первым аргументом: - -```js -//+ run -*!* -// double умножает только на два -var double = mul.bind(null, 2); // контекст фиксируем null, он не используется -*/!* - -alert( double(3) ); // = mul(2, 3) = 6 -alert( double(4) ); // = mul(2, 4) = 8 -alert( double(5) ); // = mul(2, 5) = 10 -``` - -При вызове `double` будет передавать свои аргументы исходной функции `mul` после тех, которые указаны в `bind`, то есть в данном случае после зафиксированного первого аргумента `2`. - -**Говорят, что `double` является "частичной функцией" (partial function) от `mul`.** - -Другая частичная функция `triple` утраивает значения: - -```js -//+ run -*!* -var triple = mul.bind(null, 3); // контекст фиксируем null, он не используется -*/!* - -alert( triple(3) ); // = mul(3, 3) = 9 -alert( triple(4) ); // = mul(3, 4) = 12 -alert( triple(5) ); // = mul(3, 5) = 15 -``` - -При помощи `bind` мы можем получить из функции её "частный вариант" как самостоятельную функцию и дальше передать в `setTimeout` или сделать с ней что-то ещё. - -Наш выигрыш состоит в том, что эта самостоятельная функция, во-первых, имеет понятное имя (`double`, `triple`), а во-вторых, повторные вызовы позволяют не указывать каждый раз первый аргумент, он уже фиксирован благодаря `bind`. - -## Функция ask для задач - -В задачах этого раздела предполагается, что объявлена следующая "функция вопросов" `ask`: - -```js -function ask(question, answer, ok, fail) { - var result = prompt(question, ''); - if (result.toLowerCase() == answer.toLowerCase()) ok(); - else fail(); -} -``` - -Её назначение -- задать вопрос `question` и, если ответ совпадёт с `answer`, то запустить функцию `ok()`, а иначе -- функцию `fail()`. - -Несмотря на внешнюю простоту, функции такого вида активно используются в реальных проектах. Конечно, они будут сложнее, вместо `alert/prompt` -- вывод красивого JavaScript-диалога с рамочками, кнопочками и так далее, но это нам сейчас не нужно. - -Пример использования: - -```js -//+ run -*!* -ask("Выпустить птичку?", "да", fly, die); -*/!* - -function fly() { - alert( 'улетела :)' ); -} - -function die() { - alert( 'птичку жалко :(' ); -} -``` - -## Итого - -
        -
      • Функция сама по себе не запоминает контекст выполнения.
      • -
      • Чтобы гарантировать правильный контекст для вызова `obj.func()`, нужно использовать функцию-обёртку, задать её через анонимную функцию: -```js -setTimeout(function() { - obj.func(); -}) -``` -
      • -
      • ...Либо использовать `bind`: - -```js -setTimeout(obj.func.bind(obj)); -``` -
      • -
      • Вызов `bind` часто используют для привязки функции к контексту, чтобы затем присвоить её в обычную переменную и вызывать уже без явного указания объекта.
      • -
      • Вызов `bind` также позволяет фиксировать первые аргументы функции ("каррировать" её), и таким образом из общей функции получить её "частные" варианты -- чтобы использовать их многократно без повтора одних и тех же аргументов каждый раз.
      • -
      - -[head] - -[/head] diff --git a/1-js/6-objects-more/8-decorators/1-logging-decorator/_js.view/solution.js b/1-js/6-objects-more/8-decorators/1-logging-decorator/_js.view/solution.js deleted file mode 100644 index 1aa8f279..00000000 --- a/1-js/6-objects-more/8-decorators/1-logging-decorator/_js.view/solution.js +++ /dev/null @@ -1,9 +0,0 @@ -function makeLogging(f, log) { - - function wrapper(a) { - log.push(a); - return f.call(this, a); - } - - return wrapper; -} \ No newline at end of file diff --git a/1-js/6-objects-more/8-decorators/1-logging-decorator/_js.view/test.js b/1-js/6-objects-more/8-decorators/1-logging-decorator/_js.view/test.js deleted file mode 100644 index 2257ee89..00000000 --- a/1-js/6-objects-more/8-decorators/1-logging-decorator/_js.view/test.js +++ /dev/null @@ -1,50 +0,0 @@ -describe("makeLogging", function() { - it("записывает вызовы в массив log", function() { - var work = sinon.spy(); - - var log = []; - work = makeLogging(work, log); - assert.deepEqual(log, []); - - work(1); - assert.deepEqual(log, [1]); - - work(2); - assert.deepEqual(log, [1, 2]); - }); - - it("передаёт вызов функции, возвращает её результат", function() { - var log = []; - - function work(x) { - return x * 2; - } - - work = sinon.spy(work); - var spy = work; - work = makeLogging(work, log); - - assert.equal(work(1), 2); - assert(spy.calledWith(1)); - }); - - - it("сохраняет контекст вызова для методов объекта", function() { - var log = []; - - var calculator = { - double: function(x) { - return x * 2; - } - } - - calculator.double = sinon.spy(calculator.double); - var spy = calculator.double; - calculator.double = makeLogging(calculator.double, log); - - assert.equal(calculator.double(1), 2); - assert(spy.calledWith(1)); - assert(spy.calledOn(calculator)); - }); - -}); \ No newline at end of file diff --git a/1-js/6-objects-more/8-decorators/1-logging-decorator/solution.md b/1-js/6-objects-more/8-decorators/1-logging-decorator/solution.md deleted file mode 100644 index 103ff4e5..00000000 --- a/1-js/6-objects-more/8-decorators/1-logging-decorator/solution.md +++ /dev/null @@ -1,44 +0,0 @@ -Возвратим декоратор `wrapper` который будет записывать аргумент в `log` и передавать вызов в `f`: - -```js -//+ run -function work(a) { - /*...*/ // work - произвольная функция, один аргумент -} - -function makeLogging(f, log) { - -*!* - function wrapper(a) { - log.push(a); - return f.call(this, a); - } -*/!* - - return wrapper; -} - -var log = []; -work = makeLogging(work, log); - -work(1); // 1 -work(5); // 5 - -for (var i = 0; i < log.length; i++) { - alert( 'Лог:' + log[i] ); // "Лог:1", затем "Лог:5" -} -``` - -**Обратите внимание, вызов функции осуществляется как `f.call(this, a)`, а не просто `f(a)`.** - -Передача контекста необходима, чтобы декоратор корректно работал с методами объекта. Например: - -```js -user.method = makeLogging(user.method, log); -``` - -Теперь при вызове `user.method(...)` в декоратор будет передаваться контекст `this`, который надо передать исходной функции через `call/apply`. - - - - diff --git a/1-js/6-objects-more/8-decorators/1-logging-decorator/task.md b/1-js/6-objects-more/8-decorators/1-logging-decorator/task.md deleted file mode 100644 index e1efa4f8..00000000 --- a/1-js/6-objects-more/8-decorators/1-logging-decorator/task.md +++ /dev/null @@ -1,32 +0,0 @@ -# Логирующий декоратор (1 аргумент) - -[importance 5] - -Создайте декоратор `makeLogging(f, log)`, который берет функцию `f` и массив `log`. - -Он должен возвращать обёртку вокруг `f`, которая при каждом вызове записывает ("логирует") аргументы в `log`, а затем передает вызов в `f`. - -**В этой задаче можно считать, что у функции `f` ровно один аргумент.** - -Работать должно так: - -```js -function work(a) { - /* ... */ // work - произвольная функция, один аргумент -} - -function makeLogging(f, log) { /* ваш код */ } - -var log = []; -work = makeLogging(work, log); - -work(1); // 1, добавлено в log -work(5); // 5, добавлено в log - -for (var i = 0; i < log.length; i++) { -*!* - alert( 'Лог:' + log[i] ); // "Лог:1", затем "Лог:5" -*/!* -} -``` - diff --git a/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/_js.view/solution.js b/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/_js.view/solution.js deleted file mode 100644 index f7052f65..00000000 --- a/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/_js.view/solution.js +++ /dev/null @@ -1,9 +0,0 @@ -function makeLogging(f, log) { - - function wrapper() { - log.push([].slice.call(arguments)); - return f.apply(this, arguments); - } - - return wrapper; -} \ No newline at end of file diff --git a/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/_js.view/test.js b/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/_js.view/test.js deleted file mode 100644 index eb29c837..00000000 --- a/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/_js.view/test.js +++ /dev/null @@ -1,55 +0,0 @@ -describe("makeLogging", function() { - it("записывает вызовы в массив log", function() { - var work = sinon.spy(); - - var log = []; - work = makeLogging(work, log); - assert.deepEqual(log, []); - - work(1, 2); - assert.deepEqual(log, [ - [1, 2] - ]); - - work(3, 4); - assert.deepEqual(log, [ - [1, 2], - [3, 4] - ]); - }); - - it("передаёт вызов функции, возвращает её результат", function() { - var log = []; - - function sum(a, b) { - return a + b; - } - - sum = sinon.spy(sum); - var spy = sum; - sum = makeLogging(sum, log); - - assert.equal(sum(1, 2), 3); - assert(spy.calledWith(1, 2)); - }); - - - it("сохраняет контекст вызова для методов объекта", function() { - var log = []; - - var calculator = { - sum: function(a, b) { - return a + b; - } - } - - calculator.sum = sinon.spy(calculator.sum); - var spy = calculator.sum; - calculator.sum = makeLogging(calculator.sum, log); - - assert.equal(calculator.sum(1, 2), 3); - assert(spy.calledWith(1, 2)); - assert(spy.calledOn(calculator)); - }); - -}); \ No newline at end of file diff --git a/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/solution.md b/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/solution.md deleted file mode 100644 index dfc2b902..00000000 --- a/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/solution.md +++ /dev/null @@ -1,34 +0,0 @@ -Решение аналогично задаче [](/task/logging-decorator), разница в том, что в лог вместо одного аргумента идет весь объект `arguments`. - -Для передачи вызова с произвольным количеством аргументов используем `f.apply(this, arguments)`. - -```js -//+ run -function work(a, b) { - alert( a + b ); // work - произвольная функция -} - -function makeLogging(f, log) { - -*!* - function wrapper() { - log.push([].slice.call(arguments)); - return f.apply(this, arguments); - } -*/!* - - return wrapper; -} - -var log = []; -work = makeLogging(work, log); - -work(1, 2); // 3 -work(4, 5); // 9 - -for (var i = 0; i < log.length; i++) { - var args = log[i]; // массив из аргументов i-го вызова - alert( 'Лог:' + args.join() ); // "Лог:1,2", "Лог:4,5" -} -``` - diff --git a/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/task.md b/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/task.md deleted file mode 100644 index e5ab5b6b..00000000 --- a/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/task.md +++ /dev/null @@ -1,29 +0,0 @@ -# Логирующий декоратор (много аргументов) - -[importance 3] - -Создайте декоратор `makeLogging(func, log)`, для функции `func` возвращающий обёртку, которая при каждом вызове добавляет её аргументы в массив `log`. - -Условие аналогично задаче [](/task/logging-decorator), но допускается `func` с любым набором аргументов. - -Работать должно так: - -```js -function work(a, b) { - alert( a + b ); // work - произвольная функция -} - -function makeLogging(f, log) { /* ваш код */ } - -var log = []; -work = makeLogging(work, log); - -work(1, 2); // 3 -work(4, 5); // 9 - -for (var i = 0; i < log.length; i++) { - var args = log[i]; // массив из аргументов i-го вызова - alert( 'Лог:' + args.join() ); // "Лог:1,2", "Лог:4,5" -} -``` - diff --git a/1-js/6-objects-more/8-decorators/3-caching-decorator/_js.view/solution.js b/1-js/6-objects-more/8-decorators/3-caching-decorator/_js.view/solution.js deleted file mode 100644 index dc865601..00000000 --- a/1-js/6-objects-more/8-decorators/3-caching-decorator/_js.view/solution.js +++ /dev/null @@ -1,11 +0,0 @@ -function makeCaching(f) { - var cache = {}; - - return function(x) { - if (!(x in cache)) { - cache[x] = f.call(this, x); - } - return cache[x]; - }; - -} \ No newline at end of file diff --git a/1-js/6-objects-more/8-decorators/3-caching-decorator/_js.view/test.js b/1-js/6-objects-more/8-decorators/3-caching-decorator/_js.view/test.js deleted file mode 100644 index aed6f0fe..00000000 --- a/1-js/6-objects-more/8-decorators/3-caching-decorator/_js.view/test.js +++ /dev/null @@ -1,31 +0,0 @@ -describe("makeCaching", function() { - - it("запоминает предыдущее значение функции с таким аргументом", function() { - function f(x) { - return Math.random() * x; - } - - f = makeCaching(f); - - var a = f(1); - var b = f(1); - assert.equal(a, b); - - var anotherValue = f(2); - // почти наверняка другое значение - assert.notEqual(a, anotherValue); - }); - - it("сохраняет контекст вызова", function() { - var obj = { - spy: sinon.spy() - }; - - var spy = obj.spy; - obj.spy = makeCaching(obj.spy); - obj.spy(123); - assert(spy.calledWith(123)); - assert(spy.calledOn(obj)); - }); - -}); \ No newline at end of file diff --git a/1-js/6-objects-more/8-decorators/3-caching-decorator/solution.md b/1-js/6-objects-more/8-decorators/3-caching-decorator/solution.md deleted file mode 100644 index 9b413f92..00000000 --- a/1-js/6-objects-more/8-decorators/3-caching-decorator/solution.md +++ /dev/null @@ -1,34 +0,0 @@ -Запоминать результаты вызова функции будем в замыкании, в объекте `cache: { ключ:значение }`. - -```js -//+ run no-beautify -function f(x) { - return Math.random()*x; -} - -*!* -function makeCaching(f) { - var cache = {}; - - return function(x) { - if (!(x in cache)) { - cache[x] = f.call(this, x); - } - return cache[x]; - }; - -} -*/!* - -f = makeCaching(f); - -var a = f(1); -var b = f(1); -alert( a == b ); // true (значение закешировано) - -b = f(2); -alert( a == b ); // false, другой аргумент => другое значение -``` - -Обратите внимание: проверка на наличие уже подсчитанного значения выглядит так: `if (x in cache)`. Менее универсально можно проверить так: `if (cache[x])`, это если мы точно знаем, что `cache[x]` никогда не будет `false`, `0` и т.п. - diff --git a/1-js/6-objects-more/8-decorators/3-caching-decorator/task.md b/1-js/6-objects-more/8-decorators/3-caching-decorator/task.md deleted file mode 100644 index f0b3a78f..00000000 --- a/1-js/6-objects-more/8-decorators/3-caching-decorator/task.md +++ /dev/null @@ -1,34 +0,0 @@ -# Кеширующий декоратор - -[importance 5] - -Создайте декоратор `makeCaching(f)`, который берет функцию `f` и возвращает обертку, которая кеширует её результаты. - -**В этой задаче функция `f` имеет только один аргумент, и он является числом.** - -
        -
      1. При первом вызове обертки с определенным аргументом -- она вызывает `f` и запоминает значение.
      2. -
      3. При втором и последующих вызовах с тем же аргументом возвращается запомненное значение.
      4. -
      - -Должно работать так: - -```js -function f(x) { - return Math.random() * x; // random для удобства тестирования -} - -function makeCaching(f) { /* ваш код */ } - -f = makeCaching(f); - -var a, b; - -a = f(1); -b = f(1); -alert( a == b ); // true (значение закешировано) - -b = f(2); -alert( a == b ); // false, другой аргумент => другое значение -``` - diff --git a/1-js/6-objects-more/8-decorators/article.md b/1-js/6-objects-more/8-decorators/article.md deleted file mode 100644 index f089df90..00000000 --- a/1-js/6-objects-more/8-decorators/article.md +++ /dev/null @@ -1,232 +0,0 @@ -# Функции-обёртки, декораторы - -JavaScript предоставляет удивительно гибкие возможности по работе с функциями: их можно передавать, в них можно записывать данные как в объекты, у них есть свои встроенные методы... - -Конечно, этим нужно уметь пользоваться. В этой главе, чтобы более глубоко понимать работу с функциями, мы рассмотрим создание функций-обёрток или, иначе говоря, "декораторов". - -[cut] - -[Декоратор](http://en.wikipedia.org/wiki/Decorator_pattern) -- приём программирования, который позволяет взять существующую функцию и изменить/расширить ее поведение. - -*Декоратор* получает функцию и возвращает обертку, которая делает что-то своё "вокруг" вызова основной функции. - -## bind -- привязка контекста - -Один простой декоратор вы уже видели ранее -- это функция [bind](/bind): - -```js -function bind(func, context) { - return function() { - return func.apply(context, arguments); - }; -} -``` - -Вызов `bind(func, context)` возвращает обёртку, которая ставит `this` и передаёт основную работу функции `func`. - -## Декоратор-таймер - -Создадим более сложный декоратор, замеряющий время выполнения функции. - -Он будет называться `timingDecorator` и получать функцию вместе с "названием таймера", а возвращать -- функцию-обёртку, которая измеряет время и прибавляет его в специальный объект `timer` по свойству-названию. - -Использование: -```js -function f(x) {} // любая функция - -var timers = {}; // объект для таймеров - -// отдекорировали -f = timingDecorator(f, "myFunc"); - -// запускаем -f(1); -f(2); -f(3); // функция работает как раньше, но время подсчитывается - -alert( timers.myFunc ); // общее время выполнения всех вызовов f -``` - -При помощи декоратора `timingDecorator` мы сможем взять произвольную функцию и одним движением руки прикрутить к ней измеритель времени. - -Его реализация: - -```js -//+ run -var timers = {}; - -// прибавит время выполнения f к таймеру timers[timer] -function timingDecorator(f, timer) { - return function() { - var start = performance.now(); - - var result = f.apply(this, arguments); // (*) - - if (!timers[timer]) timers[timer] = 0; - timers[timer] += performance.now() - start; - - return result; - } -} - -// функция может быть произвольной, например такой: -function fibonacci(n) { - return (n > 2) ? fibonacci(n - 1) + fibonacci(n - 2) : 1; -} - -*!* -// использование: завернём fibonacci в декоратор -fibonacci = timingDecorator(fibonacci, "fibo"); -*/!* - -// неоднократные вызовы... -alert( fibonacci(10) ); // 55 -alert( fibonacci(20) ); // 6765 -// ... - -*!* -// в любой момент можно получить общее количество времени на вызовы -alert( timers.fibo + 'мс' ); -*/!* -``` - -Обратим внимание на строку `(*)` внутри декоратора, которая и осуществляет передачу вызова: - -```js -var result = f.apply(this, arguments); // (*) -``` - -Этот приём называется "форвардинг вызова" (от англ. forwarding): текущий контекст и аргументы через `apply` передаются в функцию `f`, так что изнутри `f` всё выглядит так, как была вызвана она напрямую, а не декоратор. - -## Декоратор для проверки типа - -В JavaScript, как правило, пренебрегают проверками типа. В функцию, которая должна получать число, может быть передана строка, булево значение или даже объект. - -Например: - -```js -//+ no-beautify -function sum(a, b) { - return a + b; -} - -// передадим в функцию для сложения чисел нечисловые значения -alert( sum(true, { name: "Вася", age: 35 }) ); // true[Object object] -``` - -Функция "как-то" отработала, но в реальной жизни передача в `sum` подобных значений, скорее всего, будет следствием программной ошибки. Всё-таки `sum` предназначена для суммирования чисел, а не объектов. - -Многие языки программирования позволяют прямо в объявлении функции указать, какие типы данных имеют параметры. И это удобно, поскольку повышает надёжность кода. - -В JavaScript же проверку типов приходится делать дополнительным кодом в начале функции, который во-первых обычно лень писать, а во-вторых он увеличивает общий объем текста, тем самым ухудшая читаемость. - -**Декораторы способны упростить рутинные, повторяющиеся задачи, вынести их из кода функции.** - -Например, создадим декоратор, который принимает функцию и массив, который описывает для какого аргумента какую проверку типа применять: - -```js -//+ run -// вспомогательная функция для проверки на число -function checkNumber(value) { - return typeof value == 'number'; -} - -// декоратор, проверяющий типы для f -// второй аргумент checks - массив с функциями для проверки -function typeCheck(f, checks) { - return function() { - for (var i = 0; i < arguments.length; i++) { - if (!checks[i](arguments[i])) { - alert( "Некорректный тип аргумента номер " + i ); - return; - } - } - return f.apply(this, arguments); - } -} - -function sum(a, b) { - return a + b; -} - -*!* -// обернём декоратор для проверки -sum = typeCheck(sum, [checkNumber, checkNumber]); // оба аргумента - числа -*/!* - -// пользуемся функцией как обычно -alert( sum(1, 2) ); // 3, все хорошо - -*!* -// а вот так - будет ошибка -sum(true, null); // некорректный аргумент номер 0 -sum(1, ["array", "in", "sum?!?"]); // некорректный аргумент номер 1 -*/!* -``` - -Конечно, этот декоратор можно ещё расширять, улучшать, дописывать проверки, но... Вы уже поняли принцип, не правда ли? - -**Один раз пишем декоратор и дальше просто применяем этот функционал везде, где нужно.** - -## Декоратор проверки доступа - -И наконец посмотрим ещё один, последний пример. - -Предположим, у нас есть функция `isAdmin()`, которая возвращает `true`, если у посетителя есть права администратора. - -Можно создать декоратор `checkPermissionDecorator`, который добавляет в любую функцию проверку прав: - -Например, создадим декоратор `checkPermissionDecorator(f)`. Он будет возвращать обертку, которая передает вызов `f` в том случае, если у посетителя достаточно прав: - -```js -function checkPermissionDecorator(f) { - return function() { - if (isAdmin()) { - return f.apply(this, arguments); - } - alert( 'Недостаточно прав' ); - } -} -``` - -Использование декоратора: - -```js -//+ no-beautify -function save() { ... } - -save = checkPermissionDecorator(save); -// Теперь вызов функции save() проверяет права -``` - -## Итого - -Декоратор -- это обёртка над функцией, которая модифицирует её поведение. При этом основную работу по-прежнему выполняет функция. - -**Декораторы можно не только повторно использовать, но и комбинировать!** - -Это кардинально повышает их выразительную силу. Декораторы можно рассматривать как своего рода "фичи" или возможности, которые можно "нацепить" на любую функцию. Можно один, а можно несколько. - -Скажем, используя декораторы, описанные выше, можно добавить к функции возможности по проверке типов данных, замеру времени и проверке доступа буквально одной строкой, не залезая при этом в её код, то есть (!) не увеличивая его сложность. - -Предлагаю вашему вниманию задачи, которые помогут выяснить, насколько вы разобрались в декораторах. Далее в учебнике мы ещё встретимся с ними. - - - -[head] - -[/head] \ No newline at end of file diff --git a/1-js/6-objects-more/index.md b/1-js/6-objects-more/index.md deleted file mode 100644 index 94f1be86..00000000 --- a/1-js/6-objects-more/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# Методы объектов и контекст вызова - -Начинаем изучать объектно-ориентированную разработку -- как работают объекты и функции, что такое контекст вызова и способы его передачи. \ No newline at end of file diff --git a/1-js/7-js-misc/1-class-instanceof/1-format-date-polymorphic/_js.view/solution.js b/1-js/7-js-misc/1-class-instanceof/1-format-date-polymorphic/_js.view/solution.js deleted file mode 100644 index 48113fa4..00000000 --- a/1-js/7-js-misc/1-class-instanceof/1-format-date-polymorphic/_js.view/solution.js +++ /dev/null @@ -1,32 +0,0 @@ -function formatDate(date) { - if (typeof date == 'number') { - // перевести секунды в миллисекунды и преобразовать к Date - date = new Date(date * 1000); - } else if (typeof date == 'string') { - // строка в стандартном формате автоматически будет разобрана в дату - date = new Date(date); - } else if (Array.isArray(date)) { - date = new Date(date[0], date[1], date[2]); - } - // преобразования для поддержки полиморфизма завершены, - // теперь мы работаем с датой (форматируем её) - - return date.toLocaleString("ru", {day: '2-digit', month: '2-digit', year: '2-digit'}); - - /* - // можно и вручную, если лень добавлят в старый IE поддержку локализации - var day = date.getDate(); - if (day < 10) day = '0' + day; - - var month = date.getMonth() + 1; - if (month < 10) month = '0' + month; - - // взять 2 последние цифры года - var year = date.getFullYear() % 100; - if (year < 10) year = '0' + year; - - var formattedDate = day + '.' + month + '.' + year; - - return formattedDate; - */ -} \ No newline at end of file diff --git a/1-js/7-js-misc/1-class-instanceof/1-format-date-polymorphic/_js.view/test.js b/1-js/7-js-misc/1-class-instanceof/1-format-date-polymorphic/_js.view/test.js deleted file mode 100644 index a458b62f..00000000 --- a/1-js/7-js-misc/1-class-instanceof/1-format-date-polymorphic/_js.view/test.js +++ /dev/null @@ -1,18 +0,0 @@ -describe("formatDate", function() { - it("читает дату вида гггг-мм-дд из строки", function() { - assert.equal(formatDate('2011-10-02'), "02.10.11"); - }); - - it("читает дату из числа 1234567890 (миллисекунды)", function() { - assert.equal(formatDate(1234567890), "14.02.09"); - }); - - it("читает дату из массива вида [гггг, м, д]", function() { - assert.equal(formatDate([2014, 0, 1]), "01.01.14"); - }); - - it("читает дату из объекта Date", function() { - assert.equal(formatDate(new Date(2014, 0, 1)), "01.01.14"); - }); - -}); \ No newline at end of file diff --git a/1-js/7-js-misc/1-class-instanceof/1-format-date-polymorphic/solution.md b/1-js/7-js-misc/1-class-instanceof/1-format-date-polymorphic/solution.md deleted file mode 100644 index 878033e9..00000000 --- a/1-js/7-js-misc/1-class-instanceof/1-format-date-polymorphic/solution.md +++ /dev/null @@ -1,15 +0,0 @@ -Для определения примитивного типа строка/число подойдет оператор [typeof](#type-typeof). - -Примеры его работы: - -```js -//+ run -alert( typeof 123 ); // "number" -alert( typeof "строка" ); // "string" -alert( typeof new Date() ); // "object" -alert( typeof [] ); // "object" -``` - -Оператор `typeof` не умеет различать разные типы объектов, они для него все на одно лицо: `"object"`. Поэтому он не сможет отличить `Date` от `Array`. - -Для отличия `Array` используем вызов `Array.isArray`. Если он неверен, значит у нас дата. \ No newline at end of file diff --git a/1-js/7-js-misc/1-class-instanceof/1-format-date-polymorphic/task.md b/1-js/7-js-misc/1-class-instanceof/1-format-date-polymorphic/task.md deleted file mode 100644 index 4d4176da..00000000 --- a/1-js/7-js-misc/1-class-instanceof/1-format-date-polymorphic/task.md +++ /dev/null @@ -1,26 +0,0 @@ -# Полиморфная функция formatDate - -[importance 5] - -Напишите функцию `formatDate(date)`, которая возвращает дату в формате `dd.mm.yy`. - -Ее первый аргумент должен содержать дату в одном из видов: -
        -
      1. Как объект `Date`.
      2. -
      3. Как строку, например `yyyy-mm-dd` или другую в стандартном формате даты.
      4. -
      5. Как число *секунд* с `01.01.1970`.
      6. -
      7. Как массив `[гггг, мм, дд]`, месяц начинается с нуля
      8. -
      -Для этого вам понадобится определить тип данных аргумента и, при необходимости, преобразовать входные данные в нужный формат. - -Пример работы: - -```js -function formatDate(date) { /* ваш код */ } - -alert( formatDate('2011-10-02') ); // 02.10.11 -alert( formatDate(1234567890) ); // 14.02.09 -alert( formatDate([2014, 0, 1]) ); // 01.01.14 -alert( formatDate(new Date(2014, 0, 1)) ); // 01.01.14 -``` - diff --git a/1-js/7-js-misc/1-class-instanceof/article.md b/1-js/7-js-misc/1-class-instanceof/article.md deleted file mode 100644 index 54b519b2..00000000 --- a/1-js/7-js-misc/1-class-instanceof/article.md +++ /dev/null @@ -1,252 +0,0 @@ -# Типы данных: [[Class]], instanceof и утки - -Время от времени бывает удобно создавать так называемые "полиморфные" функции, то есть такие, которые по-разному обрабатывают аргументы, в зависимости от их типа. Например, функция вывода может по-разному форматировать числа и даты. - -Для реализации такой возможности нужен способ определить тип переменной. - -## Оператор typeof - -Мы уже знакомы с простейшим способом -- оператором [typeof](#type-typeof). - -Оператор `typeof` надежно работает с примитивными типами, кроме `null`, а также с функциями. Он возвращает для них тип в виде строки: - -```js -//+ run no-beautify -alert( typeof 1 ); // 'number' -alert( typeof true ); // 'boolean' -alert( typeof "Текст" ); // 'string' -alert( typeof undefined ); // 'undefined' -alert( typeof null ); // 'object' (ошибка в языке) -alert( typeof alert ); // 'function' -``` - -...Но все объекты, включая массивы и даты для `typeof` -- на одно лицо, они имеют один тип `'object'`: - -```js -//+ run -alert( typeof {} ); // 'object' -alert( typeof [] ); // 'object' -alert( typeof new Date ); // 'object' -``` - -Поэтому различить их при помощи `typeof` нельзя, и в этом его основной недостаток. - -## Секретное свойство [[Class]] - -Для встроенных объектов есть одна "секретная" возможность узнать их тип, которая связана с методом `toString`. - -Во всех встроенных объектах есть специальное свойство `[[Class]]`, в котором хранится информация о его типе или конструкторе. - -Оно взято в квадратные скобки, так как это свойство -- внутреннее. Явно получить его нельзя, но можно прочитать его "в обход", воспользовавшись методом `toString` стандартного объекта `Object`. - -Его внутренняя реализация выводит `[[Class]]` в небольшом обрамлении, как `"[object значение]"`. - -Например: - -```js -//+ run -var toString = {}.toString; - -var arr = [1, 2]; -alert( toString.call(arr) ); // [object Array] - -var date = new Date; -alert( toString.call(date) ); // [object Date] - -var user = { name: "Вася" }; -alert( toString.call(user) ); // [object Object] -``` - -В первой строке мы взяли метод `toString`, принадлежащий именно стандартному объекту `{}`. Нам пришлось это сделать, так как у `Date` и `Array` -- свои собственные методы `toString`, которые работают иначе. - -Затем мы вызываем этот `toString` в контексте нужного объекта `obj`, и он возвращает его внутреннее, невидимое другими способами, свойство `[[Class]]`. - -**Для получения `[[Class]]` нужна именно внутренняя реализация `toString` стандартного объекта `Object`, другая не подойдёт.** - -К счастью, методы в JavaScript -- это всего лишь функции-свойства объекта, которые можно скопировать в переменную и применить на другом объекте через `call/apply`. Что мы и делаем для `{}.toString`. - -Метод также можно использовать с примитивами: - -```js -//+ run -alert( {}.toString.call(123) ); // [object Number] -alert( {}.toString.call("строка") ); // [object String] -``` - -[warn header="Вызов `{}.toString` в консоли может выдать ошибку"] -При тестировании кода в консоли вы можете обнаружить, что если ввести в командную строку `{}.toString.call(...)` -- будет ошибка. С другой стороны, вызов `alert( {}.toString... )` -- работает. - -Эта ошибка возникает потому, что фигурные скобки `{ }` в основном потоке кода интерпретируются как блок. Интерпретатор читает `{}.toString.call(...)` так: - -```js -//+ no-beautify -{ } // пустой блок кода -.toString.call(...) // а что это за точка в начале? не понимаю, ошибка! -``` - -Фигурные скобки считаются объектом, только если они находятся в контексте выражения. В частности, оборачивание в скобки `( {}.toString... )` тоже сработает нормально. -[/warn] - - -Для большего удобства можно сделать функцию `getClass`, которая будет возвращать только сам `[[Class]]`: - -```js -//+ run -function getClass(obj) { - return {}.toString.call(obj).slice(8, -1); -} - -alert( getClass(new Date) ); // Date -alert( getClass([1, 2, 3]) ); // Array -``` - -Заметим, что свойство `[[Class]]` есть и доступно для чтения указанным способом -- у всех *встроенных* объектов. Но его нет у объектов, которые создают *наши функции*. Точнее, оно есть, но равно всегда `"Object"`. - -Например: - -```js -//+ run -function User() {} - -var user = new User(); - -alert( {}.toString.call(user) ); // [object Object], не [object User] -``` - -Поэтому узнать тип таким образом можно только для встроенных объектов. - -## Метод Array.isArray() - -Для проверки на массивов есть специальный метод: `Array.isArray(arr)`. Он возвращает `true` только если `arr` -- массив: - -```js -//+ run -alert( Array.isArray([1,2,3]) ); // true -alert( Array.isArray("not array")); // false -``` - -Но этот метод -- единственный в своём роде. - -Других аналогичных, типа `Object.isObject`, `Date.isDate` -- нет. - - -## Оператор instanceof - -Оператор `instanceof` позволяет проверить, создан ли объект данной функцией, причём работает для любых функций -- как встроенных, так и наших. - -```js -//+ run -function User() {} - -var user = new User(); - -alert( user instanceof User ); // true -``` - -Таким образом, `instanceof`, в отличие от `[[Class]]` и `typeof` может помочь выяснить тип для новых объектов, созданных нашими конструкторами. - -Заметим, что оператор `instanceof` -- сложнее, чем кажется. Он учитывает наследование, которое мы пока не проходили, но скоро изучим, и затем вернёмся к `instanceof` в главе [](/instanceof). - - -## Утиная типизация - -Альтернативный подход к типу -- "утиная типизация", которая основана на одной известной пословице: *"If it looks like a duck, swims like a duck and quacks like a duck, then it probably is a duck (who cares what it really is)"*. - -В переводе: *"Если это выглядит как утка, плавает как утка и крякает как утка, то, вероятно, это утка (какая разница, что это на самом деле)"*. - -Смысл утиной типизации -- в проверке необходимых методов и свойств. - -Например, мы можем проверить, что объект -- массив, не вызывая `Array.isArray`, а просто уточнив наличие важного для нас метода, например `splice`: - -```js -//+ run -var something = [1, 2, 3]; - -if (something.splice) { - alert( 'Это утка! То есть, массив!' ); -} -``` - -Обратите внимание -- в `if` мы не вызываем метод `something.splice()`, а пробуем получить само свойство `something.splice`. Для массивов оно всегда есть и является функцией, т.е. даст в логическом контексте `true`. - -Проверить на дату можно, определив наличие метода `getTime`: - -```js -//+ run -var x = new Date(); - -if (x.getTime) { - alert( 'Дата!' ); - alert( x.getTime() ); // работаем с датой -} -``` - -С виду такая проверка хрупка, ее можно "сломать", передав похожий объект с тем же методом. - -Но как раз в этом и есть смысл утиной типизации: если объект похож на дату, у него есть методы даты, то будем работать с ним как с датой (какая разница, что это на самом деле). - -То есть, мы намеренно позволяем передать в код нечто менее конкретное, чем определённый тип, чтобы сделать его более универсальным. - -[smart header="Проверка интерфейса"] -Если говорить словами "классического программирования", то "duck typing" -- это проверка реализации объектом требуемого интерфейса. Если реализует -- ок, используем его. Если нет -- значит это что-то другое. -[/smart] - - -## Пример полиморфной функции - -Пример полиморфной функции -- `sayHi(who)`, которая будет говорить "Привет" своему аргументу, причём если передан массив -- то "Привет" каждому: - -```js -//+ run -function sayHi(who) { - - if (Array.isArray(who)) { - who.forEach(sayHi); - } else { - alert( 'Привет, ' + who ); - } -} - -// Вызов с примитивным аргументом -sayHi("Вася"); // Привет, Вася - -// Вызов с массивом -sayHi(["Саша", "Петя"]); // Привет, Саша... Петя - -// Вызов с вложенными массивами - тоже работает! -sayHi(["Саша", "Петя", ["Маша", "Юля"]]); // Привет Саша..Петя..Маша..Юля -``` - -Проверку на массив в этом примере можно заменить на "утиную" -- нам ведь нужен только метод `forEach`: - -```js -//+ run -function sayHi(who) { - - if (who.forEach) { // если есть forEach - who.forEach(sayHi); // предполагаем, что он ведёт себя "как надо" - } else { - alert( 'Привет, ' + who ); - } -} -``` - -## Итого - -Для написания полиморфных (это удобно!) функций нам нужна проверка типов. - -
        -
      • Для примитивов с ней отлично справляется оператор `typeof`. - -У него две особенности: -
          -
        1. Он считает `null` объектом, это внутренняя ошибка в языке.
        2. -
        3. Для функций он возвращает `function`, по стандарту функция не считается базовым типом, но на практике это удобно и полезно.
        4. -
        -
      • -
      • Для встроенных объектов мы можем получить тип из скрытого свойства `[[Class]]`, при помощи вызова `{}.toString.call(obj).slice(8, -1)`. Не работает для конструкторов, которые объявлены нами. -
      • -
      • Оператор `obj instanceof Func` проверяет, создан ли объект `obj` функцией `Func`, работает для любых конструкторов. Более подробно мы разберём его в главе [](/instanceof).
      • -
      • И, наконец, зачастую достаточно проверить не сам тип, а просто наличие нужных свойств или методов. Это называется "утиная типизация".
      • -
      - diff --git a/1-js/7-js-misc/2-json/1-serialize-object/solution.md b/1-js/7-js-misc/2-json/1-serialize-object/solution.md deleted file mode 100644 index 0893b44e..00000000 --- a/1-js/7-js-misc/2-json/1-serialize-object/solution.md +++ /dev/null @@ -1,12 +0,0 @@ - - -```js -var leader = { - name: "Василий Иванович", - age: 35 -}; - -var leaderStr = JSON.stringify(leader); -leader = JSON.parse(leaderStr); -``` - diff --git a/1-js/7-js-misc/2-json/1-serialize-object/task.md b/1-js/7-js-misc/2-json/1-serialize-object/task.md deleted file mode 100644 index cc46554d..00000000 --- a/1-js/7-js-misc/2-json/1-serialize-object/task.md +++ /dev/null @@ -1,14 +0,0 @@ -# Превратите объект в JSON - -[importance 3] - -Превратите объект `leader` из примера ниже в JSON: - -```js -var leader = { - name: "Василий Иванович", - age: 35 -}; -``` - -После этого прочитайте получившуюся строку обратно в объект. diff --git a/1-js/7-js-misc/2-json/2-serialize-object-circular/solution.md b/1-js/7-js-misc/2-json/2-serialize-object-circular/solution.md deleted file mode 100644 index 0ec62c2b..00000000 --- a/1-js/7-js-misc/2-json/2-serialize-object-circular/solution.md +++ /dev/null @@ -1,64 +0,0 @@ -# Ответ на первый вопрос - -Обычный вызов `JSON.stringify(team)` выдаст ошибку, так как объекты `leader` и `soldier` внутри структуры ссылаются друг на друга. - -Формат JSON не предусматривает средств для хранения ссылок. - -# Варианты решения - -Чтобы превращать такие структуры в JSON, обычно используются два подхода: - -
        -
      1. Добавить в `team` свой код `toJSON`: - -```js -team.toJSON = function() { - /* свой код, который может создавать копию объекта без круговых ссылок и передавать управление JSON.stringify */ -} -``` - -При этом, конечно, понадобится и своя функция чтения из JSON, которая будет восстанавливать объект, а затем дополнять его круговыми ссылками. -
      2. -
      3. Можно учесть возможную проблему в самой структуре, используя вместо ссылок `id`. Как правило, это несложно, ведь на сервере у данных тоже есть идентификаторы. - -Изменённая структура может выглядеть так: - -```js -var leader = { - id: 12, - name: "Василий Иванович" -}; - -var soldier = { - id: 51, - name: "Петька" -}; - -*!* -// поменяли прямую ссылку на ID -leader.soldierId = 51; -soldier.leaderId = 12; -*/!* - -var team = { - 12: leader, - 51: soldier -}; -``` - -..Но действительно ли это решение будет оптимальным? Использовать структуру стало сложнее, и вряд ли это изменение стоит делать лишь из-за JSON. Вот если есть другие преимущества, тогда можно подумать. -
      4. -
      - -Универсальный вариант подхода, описанного выше -- это использование особой реализации JSON, которая не входит в стандарт и поддерживает расширенный формат для поддержки ссылок. - -Она, к примеру, есть во фреймворке Dojo. - -При вызове `dojox.json.ref.toJson(team)` будет создано следующее строковое представление: - -```js -//+ no-beautify -[{"name":"Василий Иванович","soldier":{"name":"Петька","leader":{"$ref":"#0"}}},{"$ref":"#0.soldier"}] -``` - -Метод разбора такой строки -- также свой: `dojox.json.ref.fromJson`. \ No newline at end of file diff --git a/1-js/7-js-misc/2-json/2-serialize-object-circular/task.md b/1-js/7-js-misc/2-json/2-serialize-object-circular/task.md deleted file mode 100644 index 7aa131ef..00000000 --- a/1-js/7-js-misc/2-json/2-serialize-object-circular/task.md +++ /dev/null @@ -1,26 +0,0 @@ -# Превратите объекты со ссылками в JSON - -[importance 3] - -Превратите объект `team` из примера ниже в JSON: - -```js -var leader = { - name: "Василий Иванович" -}; - -var soldier = { - name: "Петька" -}; - -// эти объекты ссылаются друг на друга! -leader.soldier = soldier; -soldier.leader = leader; - -var team = [leader, soldier]; -``` - -
        -
      1. Может ли это сделать прямой вызов `JSON.stringify(team)`? Если нет, то почему?
      2. -
      3. Какой подход вы бы предложили для чтения и восстановления таких объектов?
      4. -
      \ No newline at end of file diff --git a/1-js/7-js-misc/2-json/article.md b/1-js/7-js-misc/2-json/article.md deleted file mode 100644 index ad99b881..00000000 --- a/1-js/7-js-misc/2-json/article.md +++ /dev/null @@ -1,366 +0,0 @@ -# Формат JSON, метод toJSON - -В этой главе мы рассмотрим работу с форматом [JSON](http://ru.wikipedia.org/wiki/JSON), который используется для представления объектов в виде строки. - -Это один из наиболее удобных форматов данных при взаимодействии с JavaScript. Если нужно с сервера взять объект с данными и передать на клиенте, то в качестве промежуточного формата -- для передачи по сети, почти всегда используют именно его. - -В современных браузерах есть замечательные методы, знание тонкостей которых делает операции с JSON простыми и комфортными. - -[cut] - -## Формат JSON - -Данные в формате JSON ([RFC 4627](http://tools.ietf.org/html/rfc4627)) представляют собой: -
        -
      • JavaScript-объекты `{ ... }` или
      • -
      • Массивы `[ ... ]` или
      • -
      • Значения одного из типов: -
          -
        • строки в двойных кавычках,
        • -
        • число,
        • -
        • логическое значение `true`/`false`,
        • -
        • `null`.
        • -
        -
      • -
      - -Почти все языки программирования имеют библиотеки для преобразования объектов в формат JSON. - -Основные методы для работы с JSON в JavaScript -- это: -
        -
      • `JSON.parse` -- читает объекты из строки в формате JSON.
      • -
      • `JSON.stringify` -- превращает объекты в строку в формате JSON, используется, когда нужно из JavaScript передать данные по сети.
      • -
      - -## Метод JSON.parse - -Вызов `JSON.parse(str)` превратит строку с данными в формате JSON в JavaScript-объект/массив/значение. - -Например: - -```js -//+ run -var numbers = "[0, 1, 2, 3]"; - -numbers = JSON.parse(numbers); - -alert( numbers[1] ); // 1 -``` - -Или так: - -```js -//+ run -var user = '{ "name": "Вася", "age": 35, "isAdmin": false, "friends": [0,1,2,3] }'; - -user = JSON.parse(user); - -alert( user.friends[1] ); // 1 -``` - -Данные могут быть сколь угодно сложными, объекты и массивы могут включать в себя другие объекты и массивы. Главное чтобы они соответствовали формату. - -[warn header="JSON-объекты ≠ JavaScript-объекты"] -Объекты в формате JSON похожи на обычные JavaScript-объекты, но отличаются от них более строгими требованиями к строкам -- они должны быть именно в двойных кавычках. - -В частности, первые два свойства объекта ниже -- некорректны: - -```js -{ - *!*name*/!*: "Вася", // ошибка: ключ name без кавычек! - "surname": *!*'Петров'*/!*,// ошибка: одинарные кавычки у значения 'Петров'! - "age": 35 // .. а тут всё в порядке. - "isAdmin": false // и тут тоже всё ок -} -``` - -Кроме того, в формате JSON не поддерживаются комментарии. Он предназначен только для передачи данных. - -Есть нестандартное расширение формата JSON, которое называется [JSON5](http://json5.org/) и как раз разрешает ключи без кавычек, комментарии и т.п, как в обычном JavaScript. На данном этапе, это отдельная библиотека. -[/warn] - -## Умный разбор: JSON.parse(str, reviver) - -Метод `JSON.parse` поддерживает и более сложные алгоритмы разбора. - -Например, мы получили с сервера объект с данными события `event`. - -Он выглядит так: - -```js -// title: название собятия, date: дата события -var str = '{"title":"Конференция","date":"2012-11-30T12:00:00.000Z"}'; -``` - -...И теперь нужно *восстановить* его, то есть превратить в JavaScript-объект. - -Попробуем вызвать для этого `JSON.parse`: - -```js -//+ run -var str = '{"title":"Конференция","date":"2014-11-30T12:00:00.000Z"}'; - -var event = JSON.parse(str); - -*!* -alert( event.date.getDate() ); // ошибка! -*/!* -``` - -...Увы, ошибка! - -Дело в том, что значением `event.date` является строка, а отнюдь не объект `Date`. Откуда методу `JSON.parse` знать, что нужно превратить строку именно в дату? - -**Для интеллектуального восстановления из строки у `JSON.parse(str, reviver)` есть второй параметр `reviver`, который является функцией `function(key, value)`.** - -Если она указана, то в процессе чтения объекта из строки `JSON.parse` передаёт ей по очереди все создаваемые пары ключ-значение и может возвратить либо преобразованное значение, либо `undefined`, если его нужно пропустить. - -В данном случае мы можем создать правило, что ключ `date` всегда означает дату: - -```js -//+ run -// дата в строке - в формате UTC -var str = '{"title":"Конференция","date":"2014-11-30T12:00:00.000Z"}'; - -*!* -var event = JSON.parse(str, function(key, value) { - if (key == 'date') return new Date(value); - return value; -}); -*/!* - -alert( event.date.getDate() ); // теперь сработает! -``` - -Кстати, эта возможность работает и для вложенных объектов тоже: - -```js -//+ run -var schedule = '{ \ - "events": [ \ - {"title":"Конференция","date":"2014-11-30T12:00:00.000Z"}, \ - {"title":"День рождения","date":"2015-04-18T12:00:00.000Z"} \ - ]\ -}'; - -schedule = JSON.parse(schedule, function(key, value) { - if (key == 'date') return new Date(value); - return value; -}); - -*!* -alert( schedule.events[1].date.getDate() ); // сработает! -*/!* -``` - -## Сериализация, метод JSON.stringify - -Метод `JSON.stringify(value, replacer, space)` преобразует ("сериализует") значение в JSON-строку. - -Пример использования: - -```js -//+ run -var event = { - title: "Конференция", - date: "сегодня" -}; - -var str = JSON.stringify(event); -alert( str ); // {"title":"Конференция","date":"сегодня"} - -// Обратное преобразование. -event = JSON.parse(str); -``` - -**При сериализации объекта вызывается его метод `toJSON`.** - -Если такого метода нет -- перечисляются его свойства, кроме функций. - -Посмотрим это в примере посложнее: - -```js -//+ run -var room = { - number: 23, - occupy: function() { - alert( this.number ); - } -}; - -event = { - title: "Конференция", - date: new Date(Date.UTC(2014, 0, 1)), - room: room -}; - -alert( JSON.stringify(event) ); -/* - { - "title":"Конференция", - "date":"2014-01-01T00:00:00.000Z", // (1) - "room": {"number":23} // (2) - } -*/ -``` - -Обратим внимание на два момента: -
        -
      1. Дата превратилась в строку. Это не случайно: у всех дат есть встроенный метод `toJSON`. Его результат в данном случае -- строка в таймзоне UTC.
      2. -
      3. У объекта `room` нет метода `toJSON`. Поэтому он сериализуется перечислением свойств. - -Мы, конечно, могли бы добавить такой метод, тогда в итог попал бы его результат: - -```js -//+ run -var room = { - number: 23, -*!* - toJSON: function() { - return this.number; - } -*/!* -}; - -alert( JSON.stringify(room) ); // 23 -``` - -
      4. -
      - -### Исключение свойств - -Попытаемся преобразовать в JSON объект, содержащий ссылку на DOM. - -Например: - -```js -//+ run -var user = { - name: "Вася", - age: 25, - window: window -}; - -*!* -alert( JSON.stringify(user) ); // ошибка! -// TypeError: Converting circular structure to JSON (текст из Chrome) -*/!* -``` - -Произошла ошибка! В чём же дело, неужели некоторые объекты запрещены? Как видно из текста ошибки -- дело совсем в другом. Глобальный объект `window` -- сложная структура с кучей встроенных свойств и круговыми ссылками, поэтому его преобразовать невозможно. Да и нужно ли? - -**Во втором параметре `JSON.stringify(value, replacer)` можно указать массив свойств, которые подлежат сериализации.** - -Например: - -```js -//+ run -var user = { - name: "Вася", - age: 25, - window: window -}; - -*!* -alert( JSON.stringify(user, ["name", "age"]) ); -// {"name":"Вася","age":25} -*/!* -``` - -Для более сложных ситуаций вторым параметром можно передать функцию `function(key, value)`, которая возвращает сериализованное `value` либо `undefined`, если его не нужно включать в результат: - -```js -//+ run -var user = { - name: "Вася", - age: 25, - window: window -}; - -*!* -var str = JSON.stringify(user, function(key, value) { - if (key == 'window') return undefined; - return value; -}); -*/!* - -alert( str ); // {"name":"Вася","age":25} -``` - -В примере выше функция пропустит свойство с названием `window`. Для остальных она просто возвращает значение, передавая его стандартному алгоритму. А могла бы и как-то обработать. - -[smart header="Функция `replacer` работает рекурсивно"] -То есть, если объект содержит вложенные объекты, массивы и т.п., то все они пройдут через `replacer`. -[/smart] - -### Красивое форматирование - -В методе `JSON.stringify(value, replacer, space)` есть ещё третий параметр `space`. - -Если он является числом -- то уровни вложенности в JSON оформляются указанным количеством пробелов, если строкой -- вставляется эта строка. - -Например: - -```js -//+ run -var user = { - name: "Вася", - age: 25, - roles: { - isAdmin: false, - isEditor: true - } -}; - -*!* -var str = JSON.stringify(user, "", 4); -*/!* - -alert( str ); -/* Результат -- красиво сериализованный объект: -{ - "name": "Вася", - "age": 25, - "roles": { - "isAdmin": false, - "isEditor": true - } -} -*/ -``` - -## Итого - -
        -
      • JSON -- формат для представления объектов (и не только) в виде строки.
      • -
      • Методы [JSON.parse](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse) и [JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) позволяют интеллектуально преобразовать объект в строку и обратно.
      • -
      - - - -[head] - -[/head] \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/1-output-numbers-100ms/solution.md b/1-js/7-js-misc/3-setTimeout-setInterval/1-output-numbers-100ms/solution.md deleted file mode 100644 index f6e7fbcd..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/1-output-numbers-100ms/solution.md +++ /dev/null @@ -1,17 +0,0 @@ - - -```js -//+ run -function printNumbersInterval() { - var i = 1; - var timerId = setInterval(function() { - console.log(i); - if (i == 20) clearInterval(timerId); - i++; - }, 100); -} - -// вызов -printNumbersInterval(); -``` - diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/1-output-numbers-100ms/task.md b/1-js/7-js-misc/3-setTimeout-setInterval/1-output-numbers-100ms/task.md deleted file mode 100644 index dc2364f4..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/1-output-numbers-100ms/task.md +++ /dev/null @@ -1,21 +0,0 @@ -# Вывод чисел каждые 100мс - -[importance 5] - -Напишите функцию `printNumbersInterval()`, которая последовательно выводит в консоль числа от 1 до 20, с интервалом между числами 100мс. То есть, весь вывод должен занимать 2000мс, в течение которых каждые 100мс в консоли появляется очередное число. - -Нажмите на кнопку, открыв консоль, для демонстрации: - - - - -P.S. Функция должна использовать `setInterval`. \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/2-output-numbers-100ms-settimeout/solution.md b/1-js/7-js-misc/3-setTimeout-setInterval/2-output-numbers-100ms-settimeout/solution.md deleted file mode 100644 index bc23dd04..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/2-output-numbers-100ms-settimeout/solution.md +++ /dev/null @@ -1,17 +0,0 @@ - - -```js -//+ run -function printNumbersTimeout20_100() { - var i = 1; - var timerId = setTimeout(function go() { - console.log(i); - if (i < 20) setTimeout(go, 100); - i++; - }, 100); -} - -// вызов -printNumbersTimeout20_100(); -``` - diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/2-output-numbers-100ms-settimeout/task.md b/1-js/7-js-misc/3-setTimeout-setInterval/2-output-numbers-100ms-settimeout/task.md deleted file mode 100644 index 8334753f..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/2-output-numbers-100ms-settimeout/task.md +++ /dev/null @@ -1,5 +0,0 @@ -# Вывод чисел каждые 100мс, через setTimeout - -[importance 5] - -Сделайте то же самое, что в задаче [](/task/output-numbers-100ms), но с использованием рекурсивного `setTimeout` вместо `setInterval`. \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/3-highlight-tactics/solution.md b/1-js/7-js-misc/3-setTimeout-setInterval/3-highlight-tactics/solution.md deleted file mode 100644 index 13c70041..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/3-highlight-tactics/solution.md +++ /dev/null @@ -1,5 +0,0 @@ -**Нужно выбрать вариант 2, который гарантирует браузеру свободное время между выполнениями `highlight`.** - -Первый вариант может загрузить процессор на 100%, если `highlight` занимает время, близкое к 10мс или, тем более, большее чем 10мс, т.к. таймер не учитывает время выполнения функции. - -Что интересно, в обоих случаях браузер не будет выводить предупреждение о том, что скрипт занимает много времени. Но от 100% загрузки процессора возможны притормаживания других операций. В общем, это совсем не то, что мы хотим, поэтому вариант 2. \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/3-highlight-tactics/task.md b/1-js/7-js-misc/3-setTimeout-setInterval/3-highlight-tactics/task.md deleted file mode 100644 index afe1d6fd..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/3-highlight-tactics/task.md +++ /dev/null @@ -1,34 +0,0 @@ -# Для подсветки setInterval или setTimeout? - -[importance 5] - -Стоит задача: реализовать подсветку синтаксиса в длинном коде при помощи JavaScript, для онлайн-редактора кода. Это требует сложных вычислений, особенно загружает процессор генерация дополнительных элементов страницы, визуально осуществляющих подсветку. - -Поэтому решаем обрабатывать не весь код сразу, что привело бы к зависанию скрипта, а разбить работу на части: подсвечивать по 20 строк раз в 10мс. - -Как мы знаем, есть два варианта реализации такой подсветки: - -
        -
      1. Через `setInterval`, с остановкой по окончании работы: - -```js -timer = setInterval(function() { - if (есть еще что подсветить) highlight(); - else clearInterval(timer); -}, 10); -``` - -
      2. -
      3. Через рекурсивный `setTimeout`: - -```js -setTimeout(function go() { - highlight(); - if (есть еще что подсветить) setTimeout(go, 10); -}, 10); -``` - -
      4. -
      - -Какой из них стоит использовать? Почему? \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/4-settimeout-result/solution.md b/1-js/7-js-misc/3-setTimeout-setInterval/4-settimeout-result/solution.md deleted file mode 100644 index ea95474b..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/4-settimeout-result/solution.md +++ /dev/null @@ -1,8 +0,0 @@ -Ответы: -
        -
      • `alert` выведет `100000000`.
      • -
      • **3**, срабатывание будет после окончания работы `hardWork`.
      • -
      - - -Так будет потому, что вызов планируется на `100мс` от времени вызова `setTimeout`, но функция выполняется больше, чем `100мс`, поэтому к моменту ее окончания время уже подошло и отложенный вызов выполняется тут же. \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/4-settimeout-result/task.md b/1-js/7-js-misc/3-setTimeout-setInterval/4-settimeout-result/task.md deleted file mode 100644 index 8c2de36d..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/4-settimeout-result/task.md +++ /dev/null @@ -1,31 +0,0 @@ -# Что выведет setTimeout? - -[importance 5] - -В коде ниже запланирован запуск `setTimeout`, а затем запущена тяжёлая функция `hardWork`, выполнение которой занимает более долгое время, чем интервал до срабатывания таймера. - -Когда сработает `setTimeout`? Выберите нужный вариант: -
        -
      1. До выполнения `hardWork`.
      2. -
      3. Во время выполнения `hardWork`.
      4. -
      5. Сразу же по окончании `hardWork`.
      6. -
      7. Через 100мс после окончания `hardWork`.
      8. -
      - -Что выведет `alert` в коде ниже? - -```js -setTimeout(function() { - alert( i ); -}, 100); - -var i; - -function hardWork() { - // время выполнения этого кода >100мс, сам код неважен - for (i = 0; i < 1e8; i++) hardWork[i % 2] = i; -} - -hardWork(); -``` - diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/5-setinterval-result/solution.md b/1-js/7-js-misc/3-setTimeout-setInterval/5-setinterval-result/solution.md deleted file mode 100644 index 1fe34f89..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/5-setinterval-result/solution.md +++ /dev/null @@ -1,37 +0,0 @@ -Вызов `alert(i)` в `setTimeout` введет `100000001`. - -Можете проверить это запуском: - -```js -//+ run -var timer = setInterval(function() { - i++; -}, 10); - -setTimeout(function() { - clearInterval(timer); -*!* - alert( i ); // (*) -*/!* -}, 50); - -var i; - -function f() { - // точное время выполнения не играет роли - // здесь оно заведомо больше 100мс - for (i = 0; i < 1e8; i++) f[i % 2] = i; -} - -f(); -``` - -Правильный вариант срабатывания: **3** (сразу же по окончании `f` один раз). - -Планирование `setInterval` будет вызывать функцию каждые `10мс` после текущего времени. Но так как интерпретатор занят долгой функцией, то до конца ее работы никакого вызова не происходит. - -За время выполнения `f` может пройти время, на которое запланированы несколько вызовов `setInterval`, но в этом случае остается только один, т.е. накопления вызовов не происходит. Такова логика работы `setInterval`. - -После окончания текущего скрипта интерпретатор обращается к очереди запланированных вызовов, видит в ней `setInterval` и выполняет. А затем тут же выполняется `setTimeout`, очередь которого тут же подошла. - -Итого, как раз и видим, что `setInterval` выполнился ровно 1 раз по окончании работы функции. Такое поведение кросс-браузерно. \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/5-setinterval-result/task.md b/1-js/7-js-misc/3-setTimeout-setInterval/5-setinterval-result/task.md deleted file mode 100644 index 84461c2d..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/5-setinterval-result/task.md +++ /dev/null @@ -1,44 +0,0 @@ -# Что выведет после setInterval? - -[importance 5] - -В коде ниже запускается `setInterval` каждые 10мс, и через 50мс запланирована его отмена. - -После этого запущена тяжёлая функция `f`, выполнение которой (мы точно знаем) потребует более 100мс. - -Сработает ли `setInterval`, как и когда? - -Варианты: -
        -
      1. Да, несколько раз, *в процессе* выполнения `f`.
      2. -
      3. Да, несколько раз, *сразу после* выполнения `f`.
      4. -
      5. Да, один раз, *сразу после* выполнения `f`.
      6. -
      7. Нет, не сработает.
      8. -
      9. Может быть по-разному, как повезёт.
      10. -
      - -Что выведет `alert` в строке `(*)`? - -```js -var i; -var timer = setInterval(function() { // планируем setInterval каждые 10мс - i++; -}, 10); - -setTimeout(function() { // через 50мс - отмена setInterval - clearInterval(timer); -*!* - alert( i ); // (*) -*/!* -}, 50); - -// и запускаем тяжёлую функцию -function f() { - // точное время выполнения не играет роли - // здесь оно заведомо больше 100мс - for (i = 0; i < 1e8; i++) f[i % 2] = i; -} - -f(); -``` - diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/6-who-runs-faster/solution.md b/1-js/7-js-misc/3-setTimeout-setInterval/6-who-runs-faster/solution.md deleted file mode 100644 index 9d8afe0d..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/6-who-runs-faster/solution.md +++ /dev/null @@ -1,55 +0,0 @@ -Задача -- с небольшим "нюансом". - -Есть браузеры, в которых на время работы JavaScript таймер "застывает", например таков IE. В них количество шагов будет почти одинаковым, +-1. - -В других браузерах (Chrome) первый бегун будет быстрее. - -Создадим реальные объекты `Runner` и запустим их для проверки: - -```js -//+ run -function Runner() { - this.steps = 0; - - this.step = function() { - this.doSomethingHeavy(); - this.steps++; - }; - - function fib(n) { - return n <= 1 ? n : fib(n - 1) + fib(n - 2); - } - - this.doSomethingHeavy = function() { - for (var i = 0; i < 25; i++) { - this[i] = fib(i); - } - }; - -} - -var runner1 = new Runner(); -var runner2 = new Runner(); - -// запускаем бегунов -var t1 = setInterval(function() { - runner1.step(); -}, 15); - -var t2 = setTimeout(function go() { - runner2.step(); - t2 = setTimeout(go, 15); -}, 15); - -// кто сделает больше шагов? -setTimeout(function() { - clearInterval(t1); - clearTimeout(t2); - alert( runner1.steps ); - alert( runner2.steps ); -}, 5000); -``` - -Если бы в шаге `step()` не было вызова `doSomethingHeavy()`, то есть он бы не требовал времени, то количество шагов было бы почти равным. - -Но так как у нас шаг, всё же, что-то делает, и функция `doSomethingHeavy()` специально написана таким образом, что она требует (небольшого) времени, то первый бегун успеет сделать больше шагов. Ведь в `setTimeout` пауза `15` мс будет *между* шагами, а `setInterval` шагает равномерно, каждые `15` мс. Получается чаще. \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/6-who-runs-faster/task.md b/1-js/7-js-misc/3-setTimeout-setInterval/6-who-runs-faster/task.md deleted file mode 100644 index 85d20a37..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/6-who-runs-faster/task.md +++ /dev/null @@ -1,35 +0,0 @@ -# Кто быстрее? - -[importance 5] - -Есть два бегуна: - -```js -var runner1 = new Runner(); -var runner2 = new Runner(); -``` - -У каждого есть метод `step()`, который делает шаг, увеличивая свойство `steps`. - -Конкретный код метода `step()` не имеет значения, важно лишь что шаг делается не мгновенно, он требует небольшого времени. - -Если запустить первого бегуна через `setInterval`, а второго -- через вложенный `setTimeout` -- какой сделает больше шагов за 5 секунд? - -```js -// первый? -setInterval(function() { - runner1.step(); -}, 15); - -// или второй? -setTimeout(function go() { - runner2.step(); - setTimeout(go, 15); -}, 15); - -setTimeout(function() { - alert( runner1.steps ); - alert( runner2.steps ); -}, 5000); -``` - diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/7-delay/_js.view/solution.js b/1-js/7-js-misc/3-setTimeout-setInterval/7-delay/_js.view/solution.js deleted file mode 100644 index 62271941..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/7-delay/_js.view/solution.js +++ /dev/null @@ -1,12 +0,0 @@ -function delay(f, ms) { - - return function() { - var savedThis = this; - var savedArgs = arguments; - - setTimeout(function() { - f.apply(savedThis, savedArgs); - }, ms); - }; - -} \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/7-delay/_js.view/test.js b/1-js/7-js-misc/3-setTimeout-setInterval/7-delay/_js.view/test.js deleted file mode 100644 index 964ccf60..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/7-delay/_js.view/test.js +++ /dev/null @@ -1,46 +0,0 @@ -describe("delay", function() { - before(function() { - this.clock = sinon.useFakeTimers(); - }); - - after(function() { - this.clock.restore(); - }); - - it("вызывает функцию через указанный таймаут", function() { - var start = Date.now(); - - function f(x) { - assert.equal(Date.now() - start, 1000); - } - f = sinon.spy(f); - - var f1000 = delay(f, 1000); - f1000("test"); - this.clock.tick(2000); - assert(f.calledOnce, 'calledOnce check fails'); - }); - - it("передаёт аргументы и контекст", function() { - var start = Date.now(); - var user = { - sayHi: function(phrase, who) { - assert.equal(this, user); - assert.equal(phrase, "Привет"); - assert.equal(who, "Вася"); - assert.equal(Date.now() - start, 1500); - } - }; - - user.sayHi = sinon.spy(user.sayHi); - - var spy = user.sayHi; - user.sayHi = delay(user.sayHi, 1500); - - user.sayHi("Привет", "Вася"); - - this.clock.tick(2000); - - assert(spy.calledOnce, 'проверка calledOnce не сработала'); - }); -}); \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/7-delay/solution.md b/1-js/7-js-misc/3-setTimeout-setInterval/7-delay/solution.md deleted file mode 100644 index 2044ff9b..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/7-delay/solution.md +++ /dev/null @@ -1,46 +0,0 @@ - - -```js -//+ run -function delay(f, ms) { - -*!* - return function() { - var savedThis = this; - var savedArgs = arguments; - - setTimeout(function() { - f.apply(savedThis, savedArgs); - }, ms); - }; -*/!* - -} - -function f(x) { - alert( x ); -} - -var f1000 = delay(f, 1000); -var f1500 = delay(f, 1500); - -f1000("тест"); // выведет "тест" через 1000 миллисекунд -f1500("тест2"); // выведет "тест2" через 1500 миллисекунд -``` - -Обратим внимание на то, как работает обёртка: - -```js -return function() { - var savedThis = this; - var savedArgs = arguments; - - setTimeout(function() { - f.apply(savedThis, savedArgs); - }, ms); -}; -``` - -Именно обёртка возвращается декоратором `delay` и будет вызвана. Чтобы передать аргумент и контекст функции, вызываемой через `ms` миллисекунд, они копируются в локальные переменные `savedThis` и `savedArgs`. - -Это один из самых простых, и в то же время удобных способов передать что-либо в функцию, вызываемую через `setTimeout`. \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/7-delay/task.md b/1-js/7-js-misc/3-setTimeout-setInterval/7-delay/task.md deleted file mode 100644 index f198d7b9..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/7-delay/task.md +++ /dev/null @@ -1,23 +0,0 @@ -# Функция-задержка - -[importance 5] - -Напишите функцию `delay(f, ms)`, которая возвращает обёртку вокруг `f`, задерживающую вызов на `ms` миллисекунд. - -Например: - -```js -function f(x) { - alert( x ); -} - -var f1000 = delay(f, 1000); -var f1500 = delay(f, 1500); - -f1000("тест"); // выведет "тест" через 1000 миллисекунд -f1500("тест2"); // выведет "тест2" через 1500 миллисекунд -``` - -Упрощённо можно сказать, что `delay` возвращает "задержанный на `ms`" вариант `f`. - -В примере выше у функции только один аргумент, но `delay` должна быть универсальной: передавать любое количество аргументов и контекст `this`. \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/_js.view/solution.js b/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/_js.view/solution.js deleted file mode 100644 index e52efb87..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/_js.view/solution.js +++ /dev/null @@ -1,19 +0,0 @@ -function debounce(f, ms) { - - var state = null; - - var COOLDOWN = 1; - - return function() { - if (state) return; - - f.apply(this, arguments); - - state = COOLDOWN; - - setTimeout(function() { - state = null - }, ms); - } - -} \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/_js.view/test.js b/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/_js.view/test.js deleted file mode 100644 index 860cd6dd..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/_js.view/test.js +++ /dev/null @@ -1,47 +0,0 @@ -describe("debounce", function() { - before(function() { - this.clock = sinon.useFakeTimers(); - }); - - after(function() { - this.clock.restore(); - }); - - it("вызывает функцию не чаще чем раз в ms миллисекунд", function() { - var log = ''; - - function f(a) { - log += a; - } - - f = debounce(f, 1000); - - f(1); // выполнится сразу же - f(2); // игнор - - setTimeout(function() { - f(3) - }, 100); // игнор (рановато) - setTimeout(function() { - f(4) - }, 1100); // выполнится (таймаут прошёл) - setTimeout(function() { - f(5) - }, 1500); // игнор - - this.clock.tick(5000); - assert.equal(log, "14"); - }); - - it("сохраняет контекст вызова", function() { - var obj = { - f: function() { - assert.equal(this, obj); - } - }; - - obj.f = debounce(obj.f, 1000); - obj.f("test"); - }); - -}); \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/solution.md b/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/solution.md deleted file mode 100644 index d5fc55e1..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/solution.md +++ /dev/null @@ -1,38 +0,0 @@ - - -```js -//+ run no-beautify -function debounce(f, ms) { - - var state = null; - - var COOLDOWN = 1; - - return function() { - if (state) return; - - f.apply(this, arguments); - - state = COOLDOWN; - - setTimeout(function() { state = null }, ms); - } - -} - -function f(x) { alert(x) } -var f = debounce(f, 1000); - -f(1); // 1, выполнится сразу же -f(2); // игнор - -setTimeout( function() { f(3) }, 100); // игнор (прошло только 100мс) -setTimeout( function() { f(4) }, 1100); // 4, выполнится -setTimeout( function() { f(5) }, 1500); // игнор -``` - -Вызов `debounce` возвращает функцию-обёртку. Все необходимые данные для неё хранятся в замыкании. - -При вызове ставится таймер и состояние `state` меняется на константу `COOLDOWN` ("в процессе охлаждения"). - -Последующие вызовы игнорируются, пока таймер не обнулит состояние. \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/task.md b/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/task.md deleted file mode 100644 index 31b9f540..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/task.md +++ /dev/null @@ -1,25 +0,0 @@ -# Вызов не чаще чем в N миллисекунд - -[importance 5] - -Напишите функцию `debounce(f, ms)`, которая возвращает обёртку, которая передаёт вызов `f` не чаще, чем раз в `ms` миллисекунд. - -"Лишние" вызовы игнорируются. Все аргументы и контекст -- передаются. - -Например: - -```js -//+ no-beautify -function f() { ... } - -var f = debounce(f, 1000); - -f(1); // выполнится сразу же -f(2); // игнор - -setTimeout( function() { f(3) }, 100); // игнор (прошло только 100мс) -setTimeout( function() { f(4) }, 1100); // выполнится -setTimeout( function() { f(5) }, 1500); // игнор -``` - -Упрощённо можно сказать, что `debounce` возвращает вариант `f`, срабатывающий не чаще чем раз в `ms` миллисекунд. \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/_js.view/solution.js b/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/_js.view/solution.js deleted file mode 100644 index a8011c6b..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/_js.view/solution.js +++ /dev/null @@ -1,29 +0,0 @@ -function throttle(func, ms) { - - var isThrottled = false, - savedArgs, - savedThis; - - function wrapper() { - - if (isThrottled) { - savedArgs = arguments; - savedThis = this; - return; - } - - func.apply(this, arguments); - - isThrottled = true; - - setTimeout(function() { - isThrottled = false; - if (savedArgs) { - wrapper.apply(savedThis, savedArgs); - savedArgs = savedThis = null; - } - }, ms); - } - - return wrapper; -} \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/_js.view/test.js b/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/_js.view/test.js deleted file mode 100644 index 1627e857..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/_js.view/test.js +++ /dev/null @@ -1,47 +0,0 @@ -describe("throttle(f, 1000)", function() { - var f1000; - var log = ""; - - function f(a) { - log += a; - } - - before(function() { - f1000 = throttle(f, 1000); - this.clock = sinon.useFakeTimers(); - }); - - it("первый вызов срабатывает тут же", function() { - f1000(1); // такой вызов должен сработать тут же - assert.equal(log, "1"); - }); - - it("тормозит второе срабатывание до 1000мс", function() { - f1000(2); // (тормозим, не прошло 1000мс) - f1000(3); // (тормозим, не прошло 1000мс) - // через 1000 мс запланирован вызов с последним аргументом - - assert.equal(log, "1"); // пока что сработал только первый вызов - - this.clock.tick(1000); // прошло 1000мс времени - assert.equal(log, "13"); // log==13, т.к. сработал вызов f1000(3) - }); - - it("тормозит третье срабатывание до 1000мс после второго", function() { - this.clock.tick(100); - f1000(4); // (тормозим, с последнего вызова прошло 100мс - менее 1000мс) - this.clock.tick(100); - f1000(5); // (тормозим, с последнего вызова прошло 200мс - менее 1000мс) - this.clock.tick(700); - f1000(6); // (тормозим, с последнего вызова прошло 900мс - менее 1000мс) - - this.clock.tick(100); // сработал вызов с 6 - - assert.equal(log, "136"); - }); - - after(function() { - this.clock.restore(); - }); - -}); \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/solution.md b/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/solution.md deleted file mode 100644 index 306f2977..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/solution.md +++ /dev/null @@ -1,42 +0,0 @@ - - -```js -function throttle(func, ms) { - - var isThrottled = false, - savedArgs, - savedThis; - - function wrapper() { - - if (isThrottled) { // (2) - savedArgs = arguments; - savedThis = this; - return; - } - - func.apply(this, arguments); // (1) - - isThrottled = true; - - setTimeout(function() { - isThrottled = false; // (3) - if (savedArgs) { - wrapper.apply(savedThis, savedArgs); - savedArgs = savedThis = null; - } - }, ms); - } - - return wrapper; -} -``` - -Шаги работы этой функции: -
        -
      1. Декоратор `throttle` возвращает функцию-обёртку `wrapper`, которая при первом вызове запускает `func` и переходит в состояние "паузы" (`isThrottled = true`).
      2. -
      3. В этом состоянии все новые вызовы запоминаются в замыкании через `savedArgs/savedThis`. Обратим внимание, что и контекст вызова и аргументы для нас одинаково важны и запоминаются одновременно. Только зная и то и другое, можно воспроизвести вызов правильно.
      4. -
      5. Далее, когда пройдёт таймаут `ms` миллисекунд -- пауза будет снята, а `wrapper` -- запущен с последними аргументами и контекстом (если во время паузы были вызовы).
      6. -
      - -Шаг `(3)` запускает именно не саму функцию, а снова `wrapper`, так как необходимо не только выполнить `func`, но и снова поставить выполнение на паузу. Получается последовательность "вызов - пауза.. вызов - пауза .. вызов - пауза ...", каждое выполнение в обязательном порядке сопровождается паузой после него. Это удобно описывается рекурсией. diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/task.md b/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/task.md deleted file mode 100644 index aaf5956b..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/task.md +++ /dev/null @@ -1,52 +0,0 @@ -# Тормозилка - -[importance 5] - -Напишите функцию `throttle(f, ms)` -- "тормозилку", которая возвращает обёртку, передающую вызов `f` не чаще, чем раз в `ms` миллисекунд. - -**У этой функции должно быть важное существенное отличие от `debounce`:** если игнорируемый вызов оказался последним, т.е. после него до окончания задержки ничего нет -- то он выполнится. - -Чтобы лучше понять, откуда взялось это требование, и как `throttle` должна работать -- разберём реальное применение, на которое и ориентирована эта задача. - -**Например, нужно обрабатывать передвижения мыши.** - -В JavaScript это делается функцией, которая будет запускаться при каждом микро-передвижении мыши и получать координаты курсора. По мере того, как мышь двигается, эта функция может запускаться очень часто, может быть 100 раз в секунду (каждые 10мс). - -**Функция обработки передвижения должна обновлять некую информацию на странице.** - -При этом обновление -- слишком "тяжёлый" процесс, чтобы делать его при каждом микро-передвижении. Имеет смысл делать его раз в 100мс, не чаще. - -Пусть функция, которая осуществляет это обновление по передвижению, называется `onmousemove`. - -Вызов `throttle(onmousemove, 100)`, по сути, предназначен для того, чтобы "притормаживать" обработку `onmousemove`. Технически, он должен возвращать обёртку, которая передаёт все вызовы `onmousemove`, но не чаще чем раз в 100мс. - -**При этом промежуточные движения можно игнорировать, но мышь в конце концов где-то остановится. И это последнее, итоговое положение мыши обязательно нужно обработать!** - -Визуально это даст следующую картину обработки перемещений мыши: -
        -
      1. Первое обновление произойдёт сразу (это важно, посетитель тут же видит реакцию на своё действие).
      2. -
      3. Дальше может быть много вызовов (микро-передвижений) с разными координатами, но пока не пройдёт 100мс -- ничего не будет.
      4. -
      5. По истечении 100мс -- опять обновление, с последними координатами. Промежуточные микро-передвижения игнорированы.
      6. -
      7. В конце концов мышь где-то остановится, обновление по окончании очередной паузы 100мс сработает с последними координатами.
      8. -
      - -Ещё раз заметим -- задача из реальной жизни, и в ней принципиально важно, что *последнее* передвижение обрабатывается. Пользователь должен увидеть, где остановил мышь. - -Пример использования: - -```js -var f = function(a) { - console.log(a) -}; - -// затормозить функцию до одного раза в 1000 мс -var f1000 = throttle(f, 1000); - -f1000(1); // выведет 1 -f1000(2); // (тормозим, не прошло 1000мс) -f1000(3); // (тормозим, не прошло 1000мс) - -// когда пройдёт 1000мс... -// выведет 3, промежуточное значение 2 игнорируется -``` - diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/article.md b/1-js/7-js-misc/3-setTimeout-setInterval/article.md deleted file mode 100644 index a85c0550..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/article.md +++ /dev/null @@ -1,326 +0,0 @@ -# setTimeout и setInterval - -Почти все реализации JavaScript имеют внутренний таймер-планировщик, который позволяет задавать вызов функции через заданный период времени. - -В частности, эта возможность поддерживается в браузерах и в сервере Node.JS. - -[cut] -## setTimeout - -Синтаксис: - -```js -var timerId = setTimeout(func / code, delay[, arg1, arg2...]) -``` - -Параметры: - -
      -
      `func/code`
      -
      Функция или строка кода для исполнения. -Строка поддерживается для совместимости, использовать её не рекомендуется.
      -
      `delay`
      -
      Задержка в милисекундах, 1000 милисекунд равны 1 секунде.
      -
      `arg1`, `arg2`...
      -
      Аргументы, которые нужно передать функции. Не поддерживаются в IE9-.
      -
      - -Исполнение функции произойдёт спустя время, указанное в параметре `delay`. - -Например, следующий код вызовет `func()` через одну секунду: - -```js -//+ run -function func() { - alert( 'Привет' ); -} - -*!* -setTimeout(func, 1000); -*/!* -``` - -С передачей аргументов (не сработает в IE9-): - -```js -//+ run -function func(phrase, who) { - alert( phrase + ', ' + who ); -} - -*!* -setTimeout(func, 1000, "Привет", "Вася"); // Привет, Вася -*/!* -``` - -Если первый аргумент является строкой, то интерпретатор создаёт анонимную функцию из этой строки. - -То есть такая запись тоже сработает: - -```js -//+ run no-beautify -setTimeout("alert('Привет')", 1000); -``` - -Однако, использование строк не рекомендуется, так как они могут вызвать проблемы при минимизации кода, и, вообще, сама возможность использовать строку сохраняется лишь для совместимости. - -Вместо них используйте анонимные функции, вот так: - -```js -//+ run no-beautify -setTimeout(function() { alert('Привет') }, 1000); -``` - -### Отмена исполнения clearTimeout - -Функция `setTimeout` возвращает числовой идентификатор таймера `timerId`, который можно использовать для отмены действия. - -Синтаксис: - -```js -var timerId = setTimeout(...); -clearTimeout(timerId); -``` - -В следующем примере мы ставим таймаут, а затем удаляем (передумали). В результате ничего не происходит. - -```js -//+ run no-beautify -var timerId = setTimeout(function() { alert(1) }, 1000); -alert(timerId); // число - идентификатор таймера - -clearTimeout(timerId); -alert(timerId); // всё ещё число, оно не обнуляется после отмены -``` - -Как видно из `alert`, в браузере идентификатор таймера является обычным числом. Другие JavaScript-окружения, например Node.JS, могут возвращать объект таймера, с дополнительными методами. - -**Такие разночтения вполне соответствуют стандарту просто потому, что в спецификации JavaScript про таймеры нет ни слова.** - -Таймеры -- это надстройка над JavaScript, которая описана в [секции Timers](http://www.w3.org/TR/html5/webappapis.html#timers) стандарта HTML5 для браузеров и в [документации к Node.JS](http://nodejs.org/docs/latest/api/timers.html) -- для сервера. - -## setInterval - -Метод `setInterval` имеет синтаксис, аналогичный `setTimeout`. - -```js -var timerId = setInterval(func / code, delay[, arg1, arg2...]) -``` - -Смысл аргументов -- тот же самый. Но, в отличие от `setTimeout`, он запускает выполнение функции не один раз, а регулярно повторяет её через указанный интервал времени. Остановить исполнение можно вызовом `clearInterval(timerId)`. - -Следующий пример при запуске станет выводить сообщение каждые две секунды, пока не пройдёт 5 секунд: - -```js -//+ run -// начать повторы с интервалом 2 сек -var timerId = setInterval(function() { - alert( "тик" ); -}, 2000); - -// через 5 сек остановить повторы -setTimeout(function() { - clearInterval(timerId); - alert( 'стоп' ); -}, 5000); -``` - -[smart header="Модальные окна замораживают время в Chrome/Opera/Safari"] -Что будет, если долго не жать `OK` на появившемся `alert`? Это зависит от браузера. - -В браузерах Chrome, Opera и Safari внутренний таймер "заморожен" во время показа `alert/confirm/prompt`. А вот в IE и Firefox внутренний таймер продолжит идти. - -Поэтому, если закрыть `alert` после небольшой паузы, то в Firefox/IE следующий `alert` будет показан сразу же (время подошло), а в Chrome/Opera/Safari -- только через 2 секунды после закрытия. -[/smart] - - -### Рекурсивный setTimeout - -Важная альтернатива `setInterval` -- рекурсивный `setTimeout`: - -```js -/** вместо: -var timerId = setInterval(function() { - alert( "тик" ); -}, 2000); -*/ - -var timerId = setTimeout(function tick() { - alert( "тик" ); -*!* - timerId = setTimeout(tick, 2000); -*/!* -}, 2000); -``` - -В коде выше следующее выполнение планируется сразу после окончания предыдущего. - -**Рекурсивный `setTimeout` -- более гибкий метод тайминга, чем `setInterval`, так как время до следующего выполнения можно запланировать по-разному, в зависимости от результатов текущего.** - -Например, у нас есть сервис, который в 5 секунд опрашивает сервер на предмет новых данных. В случае, если сервер перегружен, можно увеличивать интервал опроса до 10, 20, 60 секунд... А потом вернуть обратно, когда всё нормализуется. - -Если у нас регулярно проходят грузящие процессор задачи, то мы можем оценивать время, потраченное на их выполнение, и планировать следующий запуск раньше или позже. - -**Рекурсивный `setTimeout` гарантирует паузу между вызовами, `setInterval` -- нет.** - -Давайте сравним два кода. Первый использует `setInterval`: - -```js -var i = 1; -setInterval(function() { - func(i); -}, 100); -``` - -Второй использует рекурсивный `setTimeout`: - -```js -var i = 1; -setTimeout(function run() { - func(i); - setTimeout(run, 100); -}, 100); -``` - -При `setInterval` внутренний таймер будет срабатывать чётко каждые `100` мс и вызывать `func(i)`: - - - -Вы обратили внимание?... - -**Реальная пауза между вызовами `func` при `setInterval` меньше, чем указана в коде!** - -Это естественно, ведь время работы функции никак не учитывается, оно "съедает" часть интервала. - -Возможно и такое что `func` оказалась сложнее, чем мы рассчитывали и выполнялась дольше, чем 100мс. - -В этом случае интерпретатор будет ждать, пока функция завершится, затем проверит таймер и, если время вызова `setInterval` уже подошло (или прошло), то следующий вызов произойдёт *сразу же*. - -**Если функция и выполняется дольше, чем пауза `setInterval`, то вызовы будут происходить вообще без перерыва.** - -Исключением является IE, в котором таймер "застывает" во время выполнения JavaScript. - -А так будет выглядеть картинка с рекурсивным `setTimeout`: - - - -**При рекурсивном `setTimeout` задержка всегда фиксирована и равна 100мс.** - -Это происходит потому, что каждый новый запуск планируется только после окончания текущего. - -[smart header="Управление памятью"] -Сборщик мусора в JavaScript не чистит функции, назначенные в таймерах, пока таймеры актуальны. - -При передаче функции в `setInterval/setTimeout` создаётся внутренняя ссылка на неё, через которую браузер её будет запускать, и которая препятствует удалению из памяти, даже если функция анонимна. - -```js -// Функция будет жить в памяти, пока не сработал (или не был очищен) таймер -setTimeout(function() {}, 100); -``` - -
        -
      • Для `setTimeout` -- внутренняя ссылка исчезнет после исполнения функции.
      • -
      • Для `setInterval` -- ссылка исчезнет при очистке таймера.
      • -
      - -Так как функция также тянет за собой всё замыкание, то ставшие неактуальными, но не отменённые `setInterval` могут приводить к излишним тратам памяти. -[/smart] - - -## Минимальная задержка таймера - -У браузерного таймера есть минимальная возможная задержка. Она меняется от примерно нуля до 4мс в современных браузерах. В более старых она может быть больше и достигать 15мс. - -По [стандарту](http://www.w3.org/TR/html5/webappapis.html#timers), минимальная задержка составляет 4мс. Так что нет разницы между `setTimeout(..,1)` и `setTimeout(..,4)`. - -Посмотреть минимальное разрешение "вживую" можно на следующем примере. - -**В примере ниже каждая полоска удлиняется вызовом `setInterval` с указанной на ней задержкой -- от 0мс (сверху) до 20мс (внизу).** - -Позапускайте его в различных браузерах. Вы заметите, что несколько первых полосок анимируются с одинаковой скоростью. Это как раз потому, что слишком маленькие задержки таймер не различает. - -[iframe border="1" src="setinterval-anim" link edit] - -[warn] -В Internet Explorer, нулевая задержка `setInterval(.., 0)` не сработает. Это касается именно `setInterval`, т.е. `setTimeout(.., 0)` работает нормально. -[/warn] - -[smart header="Откуда взялись эти 4мс?"] -Почему минимальная задержка -- 4мс, а не 1мс? Зачем она вообще существует? - -Это -- "привет" от прошлого. Браузер Chrome как-то пытался убрать минимальную задержку в своих ранних версиях, но оказалось, что существуют сайты, которые используют `setTimeout(..,0)` рекурсивно, создавая тем самым "асинхронный цикл". И, если задержку совсем убрать, то будет 100% загрузка процессора, такой сайт "подвесит" браузер. - -Поэтому, чтобы не ломать существующие скрипты, решили сделать задержку. По возможности, небольшую. На время создания стандарта оптимальным числом показалось 4мс. -[/smart] - -## Реальная частота срабатывания - -В ряде ситуаций таймер будет срабатывать реже, чем обычно. Задержка между вызовами `setInterval(..., 4)` может быть не 4мс, а 30мс или даже 1000мс. - -
        -
      • Большинство браузеров (десктопных в первую очередь) продолжают выполнять `setTimeout/setInterval`, даже если вкладка неактивна. - -При этом ряд из них (Chrome, FF, IE10) снижают минимальную частоту таймера, до 1 раза в секунду. Получается, что в "фоновой" вкладке будет срабатывать таймер, но редко.
      • -
      • При работе от батареи, в ноутбуке -- браузеры тоже могут снижать частоту, чтобы реже выполнять код и экономить заряд батареи. Особенно этим известен IE. Снижение может достигать нескольких раз, в зависимости от настроек.
      • -
      • При слишком большой загрузке процессора JavaScript может не успевать обрабатывать таймеры вовремя. При этом некоторые запуски `setInterval` будут пропущены.
      • -
      - -**Вывод: на частоту 4мс стоит ориентироваться, но не стоит рассчитывать.** - -[online] -Посмотрим снижение частоты в действии на небольшом примере. - - -При клике на кнопку ниже запускается `setInterval(..., 90)`, который выводит список интервалов времени между 25 последними срабатываниями таймера. Запустите его. Перейдите на другую вкладку и вернитесь. - -
      - - - - - - -Если ваш браузер увеличивает таймаут при фоновом выполнении вкладки, то вы увидите увеличенные интервалы, помеченные красным. - -Кроме того, вы заметите, что таймер не является идеально точным ;) -[/online] - -## Разбивка долгих скриптов - -Нулевой или небольшой таймаут также используют, чтобы разорвать поток выполнения "тяжелых" скриптов. - -Например, скрипт для подсветки синтаксиса должен проанализировать код, создать много цветных элементов для подсветки и добавить их в документ -- на большом файле это займёт много времени, браузер может даже подвиснуть, что неприемлемо. - -Для того, чтобы этого избежать, сложная задача разбивается на части, выполнение каждой части запускается через мини-интервал после предыдущей, чтобы дать браузеру время. - -Например, осуществляется анализ и подсветка первых 100 строк, затем через 20 мс -- следующие 100 строк и так далее. При этом можно подстраиваться под CPU посетителя: замерять время на анализ 100 строк и, если процессор хороший, то в следующий раз обработать 200 строк, а если плохой -- то 50. В итоге подсветка будет работать с адекватной быстротой и без тормозов на любых текстах и компьютерах. - -## Итого - -
        -
      • Методы `setInterval(func, delay)` и `setTimeout(func, delay)` позволяют запускать `func` регулярно/один раз через `delay` миллисекунд.
      • -
      • Оба метода возвращают идентификатор таймера. Его используют для остановки выполнения вызовом `clearInterval/clearTimeout`.
      • -
      • В случаях, когда нужно гарантировать задержку между регулярными вызовами или гибко её менять, вместо `setInterval` используют рекурсивный `setTimeout`.
      • -
      • Минимальная задержка по стандарту составляет `4мс`. Браузеры соблюдают этот стандарт, но некоторые другие среды для выполнения JS, например Node.JS, могут предоставить и меньше задержки.
      • -
      • В реальности срабатывания таймера могут быть гораздо реже, чем назначено, например если процессор перегружен, вкладка находится в фоновом режиме, ноутбук работает от батареи или по какой-то иной причине.
      • - -Браузерных особенностей почти нет, разве что вызов `setInterval(..., 0)` с нулевой задержкой в IE недопустим, нужно указывать `setInterval(..., 1)`. - - - - - diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/setInterval-anim.view/index.html b/1-js/7-js-misc/3-setTimeout-setInterval/setInterval-anim.view/index.html deleted file mode 100755 index caa33217..00000000 --- a/1-js/7-js-misc/3-setTimeout-setInterval/setInterval-anim.view/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/setinterval-interval.png b/1-js/7-js-misc/3-setTimeout-setInterval/setinterval-interval.png deleted file mode 100644 index 0a815bdb3349156e208528dd2dbaf752ac83af7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8216 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 NC#Cc_|Kamj{{x@q%C!Ih diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/settimeout-interval.png b/1-js/7-js-misc/3-setTimeout-setInterval/settimeout-interval.png deleted file mode 100644 index b6909cc22c7bf69f18a494a8bd04a2874bb8ee45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8049 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 Z5UZ{IXM1T3_=k=rFQXz|A@x4+e*k`&OaTA@ diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/settimeout-interval@2x.png b/1-js/7-js-misc/3-setTimeout-setInterval/settimeout-interval@2x.png deleted file mode 100644 index 657ec0db52d8412a58f6051678f60a30828a0c40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20113 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 WtvqKQ_{JQD@?G^ig|{ER{67GMBhd8# diff --git a/1-js/7-js-misc/4-eval/1-eval-calculator/solution.md b/1-js/7-js-misc/4-eval/1-eval-calculator/solution.md deleted file mode 100644 index 0ad14328..00000000 --- a/1-js/7-js-misc/4-eval/1-eval-calculator/solution.md +++ /dev/null @@ -1,12 +0,0 @@ -Вычислить любое выражение нам поможет `eval`: - -```js -//+ demo run -var expr = prompt("Введите выражение?", '2*3+2'); - -alert( eval(expr) ); -``` - -При этом посетитель потенциально может делать все, что угодно. - -Чтобы ограничить выражения только математикой, вводимую строку нужно проверять при помощи [регулярных выражений](/regular-expressions-javascript) на наличие любых символов, кроме букв, пробелов и знаков пунктуации. diff --git a/1-js/7-js-misc/4-eval/1-eval-calculator/task.md b/1-js/7-js-misc/4-eval/1-eval-calculator/task.md deleted file mode 100644 index 771b005f..00000000 --- a/1-js/7-js-misc/4-eval/1-eval-calculator/task.md +++ /dev/null @@ -1,9 +0,0 @@ -# Eval-калькулятор - -[importance 4] - -Напишите интерфейс, который принимает математическое выражение (`prompt`) и возвращает его результат. - -Проверять выражение на корректность не требуется. - -[demo /] diff --git a/1-js/7-js-misc/4-eval/article.md b/1-js/7-js-misc/4-eval/article.md deleted file mode 100644 index 7f8ab9e2..00000000 --- a/1-js/7-js-misc/4-eval/article.md +++ /dev/null @@ -1,266 +0,0 @@ -# Запуск кода из строки: eval - -Функция `eval(code)` позволяет выполнить код, переданный ей в виде строки. - -Этот код будет выполнен в *текущей области видимости*. -[cut] - -## Использование eval - -В простейшем случае `eval` всего лишь выполняет код, например: - -```js -//+ run no-beautify -var a = 1; - -(function() { - - var a = 2; - -*!* - eval(' alert(a) '); // 2 -*/!* - -})() -``` - -Но он может не только выполнить код, но и вернуть результат. - -**Вызов `eval` возвращает последнее вычисленное выражение**: - -Например: - -```js -//+ run -alert( eval('1+1') ); // 2 -``` - -**При вызове `eval` имеет полный доступ к локальным переменным.** - -Это означает, что текущие переменные могут быть изменены или дополнены: - -```js -//+ untrusted refresh run -var x = 5; -eval(" alert( x ); x = 10"); // 5, доступ к старому значению -alert( x ); // 10, значение изменено внутри eval -``` - -[smart header="В строгом режиме `eval` имеет свою область видимости "] -В строгом режиме функционал `eval` чуть-чуть меняется. - -При `use strict` код внутри `eval` по-прежнему сможет читать и менять внешние переменные, однако переменные и функции, объявленные внутри `eval`, не попадут наружу. - -```js -//+ untrusted refresh run -"use strict"; - -*!* -eval("var a = 5; function f() { }"); -*/!* -alert( a ); // ошибка, переменная не определена -// функция f тоже не видна снаружи -``` - -Иными словами, в новом стандарте `eval` имеет свою область видимости, а к внешним переменным обращается через замыкание, аналогично тому, как работают обычные функции. -[/smart] - -## Неграмотное использование eval - -Начнём с того, что `eval` применяется очень редко. Действительно редко. Есть даже такое выражение "eval is evil" (eval -- зло). - -Причина проста: когда-то JavaScript был гораздо более слабым языком, чем сейчас, и некоторые вещи без `eval` было сделать невозможно. Но те времена давно прошли. И теперь найти тот случай, когда действительно надо выполнить код из строки -- это надо постараться. - -Но если вы действительно знаете, что это именно тот случай и вам необходим `eval` -- есть ряд вещей, которые нужно иметь в виду. - -Доступ к локальным переменным -- худшее, что можно сделать при `eval`. - -Дело в том, что локальные переменные могут быть легко переименованы: - -```js -function sayHi() { - var phrase = "Привет"; - eval(str); -} -``` - -Переменная `phrase` может быть переименована в `hello`, и если строка `str` обращается к ней -- будет ошибка. - -Современные средства сжатия JavaScript переименовывают локальные переменные автоматически. Это считается безопасным, так как локальная переменная видна лишь внутри функции и если в ней везде поменять `phrase` на `p`, то никто этого не заметит. - -До сжатия: - -```js -function sayHi() { - var phrase = "Привет"; - alert( phrase ); -} -``` - -После сжатия: - -```js -function sayHi() { - var a = "Привет"; - alert( a ); -} -``` - -На самом деле всё ещё проще -- в данном случае утилита сжатия автоматически уберёт переменную `a` и код станет таким: - -```js -function sayHi() { - alert( "Привет" ); -} -``` - -Итак, если где-то в функции есть `eval`, то его взаимодействие с локальными переменными будет нарушено с непредсказуемыми побочными эффектами. - -Некоторые инструменты сжатия предупреждают, когда видят `eval` или стараются вообще не сжимать такой код вместе с его внешними функциями, но всё это борьба с последствиями кривого кода. - -Как правило, `eval` не нужен, именно поэтому говорят, "eval is evil". - -## Запуск скрипта в глобальной области - -Ок, взаимодействовать с локальными переменными нельзя. - -Но допустим мы загрузили с сервера или вручную сгенерировали скрипт, который нужно выполнить. Желательно, в глобальной области, вне любых функций, чтобы он уж точно к локальным переменным отношения не имел. - -Здесь `eval` может пригодиться. Есть два трюка для выполнения кода в глобальной области: - -
          -
        1. Везде, кроме IE8-, достаточно вызвать `eval` не напрямую, а через `window.eval`. - -Вот так: - -```js -//+ run no-beautify -var a = 1; - -(function() { - - var a = 2; -*!* - window.eval(' alert(a) '); // 1, выполнено глобально везде, кроме IE8- -*/!* -})(); -``` - -
        2. -
        3. В IE8- можно применить нестандартную фунцию [execScript](http://msdn.microsoft.com/en-us/library/ie/ms536420%28v=vs.85%29.aspx). Она, как и `eval`, выполняет код, но всегда в глобальной области видимости и не возвращает значение.
        4. -
        - -Оба способа можно объединить в единой функции `globalEval(code)`, выполняющей код без доступа к локальным переменным: - -```js -//+ run no-beautify -*!* -function globalEval(code) { // объединим два способа в одну функцию - window.execScript ? execScript(code) : window.eval(code); -} -*/!* - -var a = 1; - -(function() { - - var a = 2; - - globalEval(' alert(a) '); // 1, во всех браузерах - -})(); -``` - -## Внешние данные через new Function - -Итак, у нас есть код, который, всё же, нужно выполнить динамически, через `eval`, но не просто скрипт -- а ему нужно передать какие-то значения. - -Как мы говорили ранее, считать их из локальных переменных нельзя: это подвержено ошибкам при переименовании переменных и сразу ломается при сжатии JavaScript. Да и вообще, неочевидно и криво. - -**К счастью, существует отличная альтернатива `eval`, которая позволяет корректно взаимодействовать c внешним кодом: `new Function`.** - -Вызов `new Function('a,b', '..тело..')` создает функцию с указанными аргументами `a,b` и телом. Как мы помним, доступа к текущему замыканию у такой функции не будет, но можно передать параметры и получить результат. - -Например: - -```js -//+ run -var a = 2, - b = 3; - -*!* -// вместо обращения к a,b через eval -// будем принимать их как аргументы динамически созданной функции -var mul = new Function('a, b', ' return a * b;'); -*/!* - -alert( mul(a, b) ); // 6 -``` - -## JSON и eval - -В браузерах IE7- не было методов `JSON.stringify` и `JSON.parse`, поэтому работа с JSON происходила через `eval`. - -Этот способ работы с JSON давно устарел, но его можно встретить кое-где в старом коде, так что для примера рассмотрим его. - -Вызов `eval(code)` выполняет код и, если это выражение, то возвращает его значение, поэтому можно в качестве кода передать JSON. - -Например: - -```js -//+ run -var str = '{ \ - "name": "Вася", \ - "age": 25 \ -}'; - -*!* -var user = eval('(' + str + ')'); -*/!* - -alert( user.name ); // Вася -``` - -Зачем здесь нужны скобки `eval( '(' + str + ')' )`, почему не просто `eval(str)`? - -...Всё дело в том, что в JavaScript с фигурной скобки `{` начинаются не только объекты, а в том числе и "блоки кода". Что имеется в виду в данном случае -- интерпретатор определяет по контексту. Если в основном потоке кода -- то блок, если в контексте выражения, то объект. - -Поэтому если передать в `eval` объект напрямую, то интерпретатор подумает, что это на самом деле блок кода, а там внутри какие-то двоеточия... - -Вот, для примера, `eval` без скобок, он выдаст ошибку: - -```js -//+ run -var user = eval('{ "name": "Вася", "age": 25 }'); -``` - -А если `eval` получает выражение в скобках `( ... )`, то интерпретатор точно знает, что это не блок кода, а объект: - -```js -//+ run -var user = eval('( { "name": "Вася", "age": 25 } )'); -alert( user.age ); // 25 -``` - -[warn header="Осторожно, злой JSON!"] -Если мы получаем JSON из недоверенного источника, например с чужого сервера, то разбор через `eval` может быть опасен. - -Например, чужой сервер может быть взломан (за свой-то код мы отвечаем, а за чужой -- нет) и вместо JSON вставлен злонамеренный JavaScript-код. - -**Поэтому рекомендуется, всё же, использовать `JSON.parse`.** - -При разборе через `JSON.parse` некорректный JSON просто приведёт к ошибке, а вот при разборе через `eval` этот код реально выполнится, он может вывести что-то на странице, перенаправить посетителя куда-то и т.п. -[/warn] - - -## Итого - -
          -
        • Функция `eval(str)` выполняет код и возвращает последнее вычисленное выражение. В современном JavaScript она используется редко.
        • -
        • Вызов `eval` может читать и менять локальные переменные. Это -- зло, которого нужно избегать.
        • -
        • Для выполнения скрипта в глобальной области используются трюк с `window.eval/execScript`. При этом локальные переменные не будут затронуты, так что такое выполнение безопасно и иногда, в редких архитектурах, может быть полезным.
        • -
        • Если нужно выполняемый код всё же должен взаимодействовать с локальными переменными -- используйте `new Function`. Создавайте функцию из строки и передавайте переменные ей, это надёжно и безопасно.
        • -
        - -Ещё примеры использования `eval` вы найдёте далее, в главе [](/json). - diff --git a/1-js/7-js-misc/5-exception/1-finally-or-code-after/solution.md b/1-js/7-js-misc/5-exception/1-finally-or-code-after/solution.md deleted file mode 100644 index 5befa284..00000000 --- a/1-js/7-js-misc/5-exception/1-finally-or-code-after/solution.md +++ /dev/null @@ -1,43 +0,0 @@ -Разница в поведении станет очевидной, если рассмотреть код внутри функции. - -Поведение будет различным, если управление каким-то образом выпрыгнет из `try..catch`. - -Например, `finally` сработает после `return`: - -```js -function f() { - try { - ... -*!* - return result; -*/!* - } catch (e) { - ... - } finally { - очистить ресурсы - } -} -``` - -Или же управление может выпрыгнуть из-за `throw`: - -```js -function f() { - try { - ... - - } catch (e) { - ... - if(не умею обрабатывать эту ошибку) { -*!* - throw e; -*/!* - } - - } finally { - очистить ресурсы - } -} -``` - -В этих случаях именно `finally` гарантирует выполнение кода до окончания работы `f`, просто код не будет вызван. \ No newline at end of file diff --git a/1-js/7-js-misc/5-exception/1-finally-or-code-after/task.md b/1-js/7-js-misc/5-exception/1-finally-or-code-after/task.md deleted file mode 100644 index 5c93daf5..00000000 --- a/1-js/7-js-misc/5-exception/1-finally-or-code-after/task.md +++ /dev/null @@ -1,43 +0,0 @@ -# Finally или просто код? - -[importance 5] - -Сравните два фрагмента кода. - -
          -
        1. Первый использует `finally` для выполнения кода по выходу из `try..catch`: - -```js -try { - начать работу - работать -} catch (e) { - обработать ошибку -} finally { -*!* - финализация: завершить работу -*/!* -} -``` - -
        2. -
        3. Второй фрагмент просто ставит очистку ресурсов за `try..catch`: - -```js -try { - начать работу -} catch (e) { - обработать ошибку -} - -*!* -финализация: завершить работу -*/!* -``` - -
        4. -
        - -Нужно, чтобы код финализации всегда выполнялся при выходе из блока `try..catch` и, таким образом, заканчивал начатую работу. Имеет ли здесь `finally` какое-то преимущество или оба фрагмента работают одинаково? - -Если имеет, то дайте пример когда код с `finally` работает верно, а без -- неверно. diff --git a/1-js/7-js-misc/5-exception/2-eval-calculator-errors/solution.md b/1-js/7-js-misc/5-exception/2-eval-calculator-errors/solution.md deleted file mode 100644 index a9cd06aa..00000000 --- a/1-js/7-js-misc/5-exception/2-eval-calculator-errors/solution.md +++ /dev/null @@ -1,36 +0,0 @@ -Вычислить любое выражение нам поможет `eval`: - -```js -//+ run -alert( eval("2+2") ); // 4 -``` - -Считываем выражение в цикле `while(true)`. Если при вычислении возникает ошибка -- ловим её в `try..catch`. - -Ошибкой считается, в том числе, получение `NaN` из `eval`, хотя при этом исключение не возникает. Можно бросить своё исключение в этом случае. - -Код решения: - -```js -//+ run demo -var expr, res; - -while (true) { - expr = prompt("Введите выражение?", '2-'); - if (expr == null) break; - - try { - res = eval(expr); - if (isNaN(res)) { - throw new Error("Результат неопределён"); - } - - break; - } catch (e) { - alert( "Ошибка: " + e.message + ", повторите ввод" ); - } -} - -alert( res ); -``` - diff --git a/1-js/7-js-misc/5-exception/2-eval-calculator-errors/task.md b/1-js/7-js-misc/5-exception/2-eval-calculator-errors/task.md deleted file mode 100644 index 73e5108f..00000000 --- a/1-js/7-js-misc/5-exception/2-eval-calculator-errors/task.md +++ /dev/null @@ -1,13 +0,0 @@ -# Eval-калькулятор с ошибками - -[importance 5] - -Напишите интерфейс, который принимает математическое выражение (в `prompt`) и результат его вычисления через `eval`. - -**При ошибке нужно выводить сообщение и просить переввести выражение**. - -Ошибкой считается не только некорректное выражение, такое как `2+`, но и выражение, возвращающее `NaN`, например `0/0`. - -[demo /] - - diff --git a/1-js/7-js-misc/5-exception/article.md b/1-js/7-js-misc/5-exception/article.md deleted file mode 100644 index 42b30917..00000000 --- a/1-js/7-js-misc/5-exception/article.md +++ /dev/null @@ -1,590 +0,0 @@ -# Перехват ошибок, "try..catch" - -Как бы мы хорошо ни программировали, в коде бывают ошибки. Или, как их иначе называют, "исключительные ситуации" (исключения). - -Обычно скрипт при ошибке, как говорят, "падает", с выводом ошибки в консоль. - -Но бывают случаи, когда нам хотелось бы как-то контролировать ситуацию, чтобы скрипт не просто "упал", а сделал что-то разумное. - -Для этого в JavaScript есть замечательная конструкция `try..catch`. - -[cut] - -## Конструкция try..catch - -Конструкция `try..catch` состоит из двух основных блоков: `try`, и затем `catch`: - -```js -try { - - // код ... - -} catch (err) { - - // обработка ошибки - -} -``` - -Работает она так: -
          -
        1. Выполняется код внутри блока `try`.
        2. -
        3. Если в нём ошибок нет, то блок `catch(err)` игнорируется, то есть выполнение доходит до конца `try` и потом прыгает через `catch`.
        4. -
        5. Если в нём возникнет ошибка, то выполнение `try` на ней прерывается, и управление прыгает в начало блока `catch(err)`. - -При этом переменная `err` (можно выбрать и другое название) будет содержать объект ошибки с подробной информацией о произошедшем.
        6. -
        - -**Таким образом, при ошибке в `try` скрипт не "падает", и мы получаем возможность обработать ошибку внутри `catch`.** - -Посмотрим это на примерах. - -
          -
        • Пример без ошибок: при запуске сработают `alert` `(1)` и `(2)`: - -```js -//+ run -try { - - alert('Начало блока try'); // *!*(1) <--*/!* - - // .. код без ошибок - - alert('Конец блока try'); // *!*(2) <--*/!* - -} catch(e) { - - alert('Блок catch не получит управление, так как нет ошибок'); // (3) - -} - -alert("Потом код продолжит выполнение..."); -``` - -
        • -
        • Пример с ошибкой: при запуске сработают `(1)` и `(3)`: - -```js -//+ run -try { - - alert('Начало блока try'); // *!*(1) <--*/!* - -*!* - lalala; // ошибка, переменная не определена! -*/!* - - alert('Конец блока try'); // (2) - -} catch(e) { - - alert('Ошибка ' + e.name + ":" + e.message + "\n" + e.stack); // *!*(3) <--*/!* - -} - -alert("Потом код продолжит выполнение..."); -``` - -
        • -
        - -[warn header="`try..catch` подразумевает, что код синтаксически верен"] -Если грубо нарушена структура кода, например не закрыта фигурная скобка или где-то стоит лишняя запятая, то никакой `try..catch` здесь не поможет. Такие ошибки называются *синтаксическими*, интерпретатор не может понять такой код. - -Здесь же мы рассматриваем ошибки *семантические*, то есть происходящие в корректном коде, в процессе выполнения. -[/warn] - - -[warn header="`try..catch` работает только в синхронном коде"] -Ошибку, которая произойдёт в коде, запланированном "на будущее", например, в `setTimeout`, `try..catch` не поймает: - -```js -//+ run -try { - setTimeout(function() { - throw new Error(); // вылетит в консоль - }, 1000); -} catch (e) { - alert( "не сработает" ); -} -``` - -На момент запуска функции, назначенной через `setTimeout`, этот код уже завершится, интерпретатор выйдет из блока `try..catch`. - -Чтобы поймать ошибку внутри функции из `setTimeout`, и `try..catch` должен быть в той же функции. -[/warn] - - -## Объект ошибки - -В примере выше мы видим объект ошибки. У него есть три основных свойства: -
        -
        `name`
        -
        Тип ошибки. Например, при обращении к несуществующей переменной: `"ReferenceError"`.
        -
        `message`
        -
        Текстовое сообщение о деталях ошибки.
        -
        `stack`
        -
        Везде, кроме IE8-, есть также свойство `stack`, которое содержит строку с информацией о последовательности вызовов, которая привела к ошибке.
        -
        - -В зависимости от браузера, у него могут быть и дополнительные свойства, см. Error в MDN и Error в MSDN. - -## Пример использования - -В JavaScript есть встроенный метод [JSON.parse(str)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse), который используется для чтения JavaScript-объектов (и не только) из строки. - -Обычно он используется для того, чтобы обрабатывать данные, полученные по сети, с сервера или из другого источника. - -Мы получаем их и вызываем метод `JSON.parse`, вот так: - -```js -//+ run -var data = '{"name":"Вася", "age": 30}'; // строка с данными, полученная с сервера - -var user = JSON.parse(data); // преобразовали строку в объект - -// теперь user -- это JS-объект с данными из строки -alert( user.name ); // Вася -alert( user.age ); // 30 -``` - -Более детально формат JSON разобран в главе [](/json). - -**В случае, если данные некорректны, `JSON.parse` генерирует ошибку, то есть скрипт "упадёт".** - -Устроит ли нас такое поведение? Конечно нет! - -Получается, что если вдруг что-то не так с данными, то посетитель никогда (если, конечно, не откроет консоль) об этом не узнает. - -А люди очень-очень не любят, когда что-то "просто падает", без всякого объявления об ошибке. - -**Бывают ситуации, когда без `try..catch` не обойтись, это -- одна из таких.** - -Используем `try..catch`, чтобы обработать некорректный ответ: - -```js -//+ run -var data = "Has Error"; // в данных ошибка - -try { - - var user = JSON.parse(data); // <-- ошибка при выполнении - alert( user.name ); // не сработает - -} catch (e) { - // ...выполнится catch - alert( "Извините, в данных ошибка, мы попробуем получить их ещё раз" ); - alert( e.name ); - alert( e.message ); -} -``` - -Здесь в `alert` только выводится сообщение, но область применения гораздо шире: можно повторять запрос, можно предлагать посетителю использовать альтернативный способ, можно отсылать информацию об ошибке на сервер... Свобода действий. - -## Генерация своих ошибок - -Представим на минуту, что данные являются корректным JSON... Но в этом объекте нет нужного свойства `name`: - -```js -//+ run -var data = '{ "age": 30 }'; // данные неполны - -try { - - var user = JSON.parse(data); // <-- выполнится без ошибок -*!* - alert( user.name ); // undefined -*/!* - -} catch (e) { - // не выполнится - alert( "Извините, в данных ошибка" ); -} -``` - -Вызов `JSON.parse` выполнится без ошибок, но ошибка в данных есть. И, так как свойство `name` обязательно должно быть, то для нас это такие же некорректные данные как и `"Has Error"`. - -Для того, чтобы унифицировать и объединить обработку ошибок парсинга и ошибок в структуре, мы воспользуемся оператором `throw`. - -### Оператор throw - -Оператор `throw` генерирует ошибку. - -Синтаксис: `throw <объект ошибки>`. - -Технически, в качестве объекта ошибки можно передать что угодно, это может быть даже не объект, а число или строка, но всё же лучше, чтобы это был объект, желательно -- совместимый со стандартным, то есть чтобы у него были как минимум свойства `name` и `message`. - -**В качестве конструктора ошибок можно использовать встроенный конструктор: `new Error(message)` или любой другой.** - -В JavaScript встроен ряд конструкторов для стандартных ошибок: `SyntaxError`, `ReferenceError`, `RangeError` и некоторые другие. Можно использовать и их, но только чтобы не было путаницы. - -В данном случае мы используем конструктор `new SyntaxError(message)`. Он создаёт ошибку того же типа, что и `JSON.parse`. - -```js -//+ run -var data = '{ "age": 30 }'; // данные неполны - -try { - - var user = JSON.parse(data); // <-- выполнится без ошибок - -*!* - if (!user.name) { - throw new SyntaxError("Данные некорректны"); - } -*/!* - - alert( user.name ); - -} catch (e) { - alert( "Извините, в данных ошибка" ); -} -``` - -Получилось, что блок `catch` -- единое место для обработки ошибок во всех случаях: когда ошибка выявляется при `JSON.parse` или позже. - -## Проброс исключения - -В коде выше мы предусмотрели обработку ошибок, которые возникают при некорректных данных. Но может ли быть так, что возникнет какая-то другая ошибка? - -Конечно, может! Код -- это вообще мешок с ошибками, бывает даже так что библиотеку выкладывают в открытый доступ, она там 10 лет лежит, её смотрят миллионы людей и на 11й год находятся опаснейшие ошибки. Такова жизнь, таковы люди. - -Блок `catch` в нашем примере предназначен для обработки ошибок, возникающих при некорректных данных. Если же в него попала какая-то другая ошибка, то вывод сообщения о "некорректных данных" будет дезинформацией посетителя. - -**Ошибку, о которой `catch` не знает, он не должен обрабатывать.** - -Такая техника называется *"проброс исключения"*: в `catch(e)` мы анализируем объект ошибки, и если он нам не подходит, то делаем `throw e`. - -При этом ошибка "выпадает" из `try..catch` наружу. Далее она может быть поймана либо внешним блоком `try..catch` (если есть), либо "повалит" скрипт. - -В примере ниже `catch` обрабатывает только ошибки `SyntaxError`, а остальные -- выбрасывает дальше: - -```js -//+ run -var data = '{ "name": "Вася", "age": 30 }'; // данные корректны - -try { - - var user = JSON.parse(data); - - if (!user.name) { - throw new SyntaxError("Ошибка в данных"); - } - -*!* - blabla(); // произошла непредусмотренная ошибка -*/!* - - alert( user.name ); - -} catch (e) { - -*!* - if (e.name == "SyntaxError") { - alert( "Извините, в данных ошибка" ); - } else { - throw e; - } -*/!* - -} -``` - -Заметим, что ошибка, которая возникла внутри блока `catch`, "выпадает" наружу, как если бы была в обычном коде. - -В следующем примере такие ошибки обрабатываются ещё одним, "более внешним" `try..catch`: - -```js -//+ run -function readData() { - var data = '{ "name": "Вася", "age": 30 }'; - - try { - // ... -*!* - blabla(); // ошибка! -*/!* - } catch (e) { - // ... -*!* - if (e.name != 'SyntaxError') { - throw e; // пробрасываем - } -*/!* - } -} - - -try { - readData(); -} catch (e) { -*!* - alert( "Поймал во внешнем catch: " + e ); // ловим -*/!* -} -``` - -В примере выше `try..catch` внутри `readData` умеет обрабатывать только `SyntaxError`, а внешний -- все ошибки. - -Без внешнего проброшенная ошибка "вывалилась" бы в консоль, с остановкой скрипта. - -## Оборачивание исключений - -И, для полноты картины -- последняя, самая продвинутая техника по работе с ошибками. Она, впрочем, является стандартной практикой во многих объектно-ориентированных языках. - -Цель функции `readData` в примере выше -- прочитать данные. При чтении могут возникать разные ошибки, не только `SyntaxError`, но и, возможно, к примеру, `URIError` (неправильное применение функций работы с URI), да и другие. - -Код, который вызвал `readData`, хотел бы иметь либо результат, либо информацию об ошибке. - -При этом очень важным является вопрос: обязан ли этот внешний код знать о всевозможных типах ошибок, которые могут возникать при чтении данных, и уметь перехватывать их? - -Обычно внешний код хотел бы работать "на уровень выше", и получать либо результат, либо "ошибку чтения данных", при этом какая именно ошибка произошла -- ему неважно. Ну, или, если будет важно, то хотелось бы иметь возможность это узнать, но обычно не требуется. - -Это важнейший общий подход к проектированию -- каждый участок функционала должен получать информацию на том уровне, который ему необходим. - -Мы его видим везде в грамотно построенном коде, но не всегда отдаём себе в этом отчёт. - -В данном случае, если при чтении данных происходит ошибка, то мы будем генерировать её в виде объекта `ReadError`, с соответствующим сообщением. А "исходную" ошибку -- на всякий случай тоже сохраним, присвоим в свойство `cause` (англ. -- причина). - -Выглядит это так: -```js -//+ run -function ReadError(message, cause) { - this.message = message; - this.cause = cause; - this.name = 'ReadError'; - this.stack = cause.stack; -} - -function readData() { - var data = '{ bad data }'; - - try { - // ... - JSON.parse(data); - // ... - } catch (e) { - // ... - if (e.name == 'URIError') { - throw new ReadError("Ошибка в URI", e); - } else if (e.name == 'SyntaxError') { -*!* - throw new ReadError("Синтаксическая ошибка в данных", e); -*/!* - } else { - throw e; // пробрасываем - } - } -} - - -try { - readData(); -} catch (e) { - if (e.name == 'ReadError') { - alert( e.message ); - alert( e.cause ); // оригинальная ошибка-причина - } else { - throw e; - } -} -``` - -Этот подход называют "оборачиванием" исключения, поскольку мы берём ошибки "более низкого уровня" и "заворачиваем" их в `ReadError`, которая соответствует текущей задаче. - -## Секция finally - -Конструкция `try..catch` может содержать ещё один блок: `finally`. - -Выглядит этот расширенный синтаксис так: - -```js -*!*try*/!* { - .. пробуем выполнить код .. -} *!*catch*/!*(e) { - .. перехватываем исключение .. -} *!*finally*/!* { - .. выполняем всегда .. -} -``` - -Секция `finally` не обязательна, но если она есть, то она выполняется всегда: -
          -
        • после блока `try`, если ошибок не было,
        • -
        • после `catch`, если они были.
        • -
        - -Попробуйте запустить такой код? - -```js -//+ run -try { - alert( 'try' ); - if (confirm('Сгенерировать ошибку?')) BAD_CODE(); -} catch (e) { - alert( 'catch' ); -} finally { - alert( 'finally' ); -} -``` - -У него два варианта работы: -
          -
        1. Если вы ответите на вопрос "Сгенерировать ошибку?" утвердительно, то `try -> catch -> finally`.
        2. -
        3. Если ответите отрицательно, то `try -> finally`. -
        - -**Секцию `finally` используют, чтобы завершить начатые операции при любом варианте развития событий.** - -Например, мы хотим подсчитать время на выполнение функции `sum(n)`, которая должна возвратить сумму чисел от `1` до `n` и работает рекурсивно: - -```js -//+ run -function sum(n) { - return n ? (n + sum(n - 1)) : 0; -} - -var n = +prompt('Введите n?', 100); - -var start = new Date(); - -try { - var result = sum(n); -} catch (e) { - result = 0; -*!* -} finally { - var diff = new Date() - start; -} -*/!* - -alert( result ? result : 'была ошибка' ); -alert( "Выполнение заняло " + diff ); -``` - -Здесь секция `finally` гарантирует, что время будет подсчитано в любых ситуациях -- при ошибке в `sum` или без неё. - -Вы можете проверить это, запустив код с указанием `n=100` -- будет без ошибки, `finally` выполнится после `try`, а затем с `n=100000` -- будет ошибка из-за слишком глубокой рекурсии, управление прыгнет в `finally` после `catch`. - -[smart header="`finally` и `return`"] - -Блок `finally` срабатывает при *любом* выходе из `try..catch`, в том числе и `return`. - -В примере ниже, из `try` происходит `return`, но `finally` получает управление до того, как контроль возвращается во внешний код. - -```js -//+ run -function func() { - - try { - // сразу вернуть значение - return 1; - - } catch (e) { - /* ... */ - } finally { -*!* - alert( 'finally' ); -*/!* - } -} - -alert( func() ); // сначала finally, потом 1 -``` - -Если внутри `try` были начаты какие-то процессы, которые нужно завершить по окончании работы, во в `finally` это обязательно будет сделано. - -Кстати, для таких случаев иногда используют `try..finally` вообще без `catch`: - -```js -//+ run -function func() { - try { - return 1; - } finally { - alert( 'Вызов завершён' ); - } -} - -alert( func() ); // сначала finally, потом 1 -``` - -В примере выше `try..finally` вообще не обрабатывает ошибки. Задача в другом -- выполнить код при любом выходе из `try` -- с ошибкой ли, без ошибок или через `return`. -[/smart] - - -## Последняя надежда: window.onerror - -Допустим, ошибка произошла вне блока `try..catch` или выпала из `try..catch` наружу, во внешний код. Скрипт упал. - -Можно ли как-то узнать о том, что произошло? Да, конечно. - -В браузере существует специальное свойство `window.onerror`, если в него записать функцию, то она выполнится и получит в аргументах сообщение ошибки, текущий URL и номер строки, откуда "выпала" ошибка. - -Необходимо лишь позаботиться, чтобы функция была назначена заранее. - -Например: - -```html - - -``` - -Как правило, роль `window.onerror` заключается в том, чтобы не оживить скрипт -- скорее всего, это уже невозможно, а в том, чтобы отослать сообщение об ошибке на сервер, где разработчики о ней узнают. - -Существуют даже специальные веб-сервисы, которые предоставляют скрипты для отлова и аналитики таких ошибок, например: [](https://errorception.com/) или [](http://www.muscula.com/). - - -## Итого - -Обработка ошибок -- большая и важная тема. - -В JavaScript для этого предусмотрены: - -
          -
        • Конструкция `try..catch..finally` -- она позволяет обработать произвольные ошибки в блоке кода. - -Это удобно в тех случаях, когда проще сделать действие и потом разбираться с результатом, чем долго и нудно проверять, не упадёт ли чего. - -Кроме того, иногда проверить просто невозможно, например `JSON.parse(str)` не позволяет "проверить" формат строки перед разбором. В этом случае блок `try..catch` необходим. - -Полный вид конструкции: - -```js -*!*try*/!* { - .. пробуем выполнить код .. -} *!*catch*/!*(e) { - .. перехватываем исключение .. -} *!*finally*/!* { - .. выполняем всегда .. -} -``` - -Возможны также варианты `try..catch` или `try..finally`.
        • -
        • Оператор `throw err` генерирует свою ошибку, в качестве `err` рекомендуется использовать объекты, совместимые с встроенным типом [Error](http://javascript.ru/Error), содержащие свойства `message` и `name`.
        • -
        - -Кроме того, мы рассмотрели некоторые важные приёмы: - -
          -
        • Проброс исключения -- `catch(err)` должен обрабатывать только те ошибки, которые мы рассчитываем в нём увидеть, остальные -- пробрасывать дальше через `throw err`. - -Определить, нужная ли это ошибка, можно, например, по свойству `name`.
        • -
        • Оборачивание исключений -- функция, в процессе работы которой возможны различные виды ошибок, может "обернуть их" в одну общую ошибку, специфичную для её задачи, и уже её пробросить дальше. Чтобы, при необходимости, можно было подробно определить, что произошло, исходную ошибку обычно присваивают в свойство этой, общей. Обычно это нужно для логирования.
        • -
        • В `window.onerror` можно присвоить функцию, которая выполнится при любой "выпавшей" из скрипта ошибке. Как правило, это используют в информационных целях, например отправляют информацию об ошибке на специальный сервис.
        • -
        - - diff --git a/1-js/7-js-misc/index.md b/1-js/7-js-misc/index.md deleted file mode 100644 index 091a171f..00000000 --- a/1-js/7-js-misc/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# Некоторые другие возможности - -Различные возможности JavaScript, которые достаточно важны, но не заслужили отдельного раздела. \ No newline at end of file diff --git a/1-js/8-oop/1-about-oop/article.md b/1-js/8-oop/1-about-oop/article.md deleted file mode 100644 index 9039a50c..00000000 --- a/1-js/8-oop/1-about-oop/article.md +++ /dev/null @@ -1,56 +0,0 @@ -# Введение - -На протяжении долгого времени в программировании применялся [процедурный подход](http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D0%B4%D1%83%D1%80%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5). При этом программа состоит из функций, вызывающих друг друга. - -Гораздо позже появилось [объектно-ориентированное программирование](http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5) (ООП), которое позволяет группировать функции и данные в единой сущности -- "объекте". - - -При объектно-ориентированной разработке мы описываем происходящее на уровне объектов, которые создаются, меняют свои свойства, взаимодействуют друг с другом и (в случае браузера) со страницей, в общем, живут. - -Например, "пользователь", "меню", "компонент интерфейса"... При объектно-ориентированном подходе каждый объект должен представлять собой интуитивно понятную сущность, у которой есть методы и данные. - -[warn header="ООП -- это не просто объекты"] -В JavaScript объекты часто используются просто как коллекции. - -Например, встроенный объект [Math](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Math) содержит функции (`Math.sin`, `Math.pow`, ...) и данные (константа `Math.PI`). - -При таком использовании объектов мы не можем сказать, что "применён объектно-ориентированный подход". В частности, никакую "единую сущность" `Math` из себя не представляет, это просто коллекция независимых функций с общим префиксом `Math`. -[/warn] - - -Мы уже работали в ООП-стиле, создавая объекты такого вида: - -```js -//+ run -function User(name) { - - this.sayHi = function() { - alert( "Привет, я " + name ); - }; - -} - -var vasya = new User("Вася"); // создали пользователя -vasya.sayHi(); // пользователь умеет говорить "Привет" -``` - -Здесь мы видим ярко выраженную сущность -- `User` (посетитель). Используя терминологию ООП, такие конструкторы часто называют *классами*, то есть можно сказать "класс `User`". - -[smart header="Класс в ООП"] -[Классом]("https://en.wikipedia.org/wiki/Class_(computer_programming)") в объектно-ориентированной разработке называют шаблон/программный код, предназначенный для создания объектов и методов. - -В JavaScript классы можно организовать по-разному. Говорят, что класс `User` написан в "функциональном" стиле. Далее мы также увидим "прототипный" стиль. -[/smart] - -ООП -- это наука о том, как делать правильную архитектуру. У неё есть свои принципы, например [SOLID](https://ru.wikipedia.org/wiki/SOLID_%28%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29). - -По приёмам объектно-ориентированной разработки пишут книги, к примеру: - - - -Здесь мы не имеем возможности углубиться в теорию ООП, поэтому чтение таких книг рекомендуется. Хотя основные принципы, как использовать ООП правильно, мы, всё же, затронем. \ No newline at end of file diff --git a/1-js/8-oop/2-internal-external-interface/1-add-method-property-coffeemachine/solution.md b/1-js/8-oop/2-internal-external-interface/1-add-method-property-coffeemachine/solution.md deleted file mode 100644 index 5c92acb6..00000000 --- a/1-js/8-oop/2-internal-external-interface/1-add-method-property-coffeemachine/solution.md +++ /dev/null @@ -1,42 +0,0 @@ -Кофеварка с новым методом: - -```js -//+ run -function CoffeeMachine(power) { - this.waterAmount = 0; - - var WATER_HEAT_CAPACITY = 4200; -*!* - var timerId; -*/!* - var self = this; - - function getBoilTime() { - return self.waterAmount * WATER_HEAT_CAPACITY * 80 / power; - } - - function onReady() { - alert( 'Кофе готово!' ); - } - - this.run = function() { -*!* - timerId = setTimeout(onReady, getBoilTime()); -*/!* - }; - -*!* - this.stop = function() { - clearTimeout(timerId) - }; -*/!* -} - - -var coffeeMachine = new CoffeeMachine(50000); -coffeeMachine.waterAmount = 200; - -coffeeMachine.run(); -coffeeMachine.stop(); // кофе приготовлен не будет -``` - diff --git a/1-js/8-oop/2-internal-external-interface/1-add-method-property-coffeemachine/task.md b/1-js/8-oop/2-internal-external-interface/1-add-method-property-coffeemachine/task.md deleted file mode 100644 index 62177288..00000000 --- a/1-js/8-oop/2-internal-external-interface/1-add-method-property-coffeemachine/task.md +++ /dev/null @@ -1,43 +0,0 @@ -# Добавить метод и свойство кофеварке - -[importance 5] - -Улучшите готовый код кофеварки, который дан ниже: добавьте в кофеварку *публичный* метод `stop()`, который будет останавливать кипячение (через `clearTimeout`). - -```js -//+ run -function CoffeeMachine(power) { - this.waterAmount = 0; - - var WATER_HEAT_CAPACITY = 4200; - - var self = this; - - function getBoilTime() { - return self.waterAmount * WATER_HEAT_CAPACITY * 80 / power; - } - - function onReady() { - alert( 'Кофе готово!' ); - } - - this.run = function() { - setTimeout(onReady, getBoilTime()); - }; - -} -``` - -Вот такой код должен ничего не выводить: - -```js -var coffeeMachine = new CoffeeMachine(50000); -coffeeMachine.waterAmount = 200; - -coffeeMachine.run(); -coffeeMachine.stop(); // кофе приготовлен не будет -``` - -P.S. Текущую температуру воды вычислять и хранить не требуется. - -P.P.S. При решении вам, скорее всего, понадобится добавить *приватное* свойство `timerId`, которое будет хранить текущий таймер. \ No newline at end of file diff --git a/1-js/8-oop/2-internal-external-interface/article.md b/1-js/8-oop/2-internal-external-interface/article.md deleted file mode 100644 index b4058737..00000000 --- a/1-js/8-oop/2-internal-external-interface/article.md +++ /dev/null @@ -1,338 +0,0 @@ -# Внутренний и внешний интерфейс - -Один из важнейших принципов ООП -- отделение внутреннего интерфейса от внешнего. - -Это -- обязательная практика в разработке чего угодно сложнее hello world. - -Чтобы это понять, отвлечемся от разработки и переведем взгляд на объекты реального мира. - -Как правило, устройства, с которыми мы имеем дело, весьма сложны. Но *разделение интерфейса на внешний и внутренний* позволяет использовать их без малейших проблем. -[cut] -## Пример из жизни - -Например, кофеварка. Простая снаружи: кнопка, индикатор, отверстия,... И, конечно, результат -- кофе :) - - - -Но внутри... (картинка из пособия по ремонту) - - - -Масса деталей. Но мы можем пользоваться ей, совершенно не зная об этом. - -Кофеварки -- довольно-таки надежны, не правда ли? Можно пользоваться годами, и только когда что-то пойдет не так -- придется нести к мастеру. - -Секрет надежности и простоты кофеварки -- в том, что все детали отлажены и *спрятаны* внутри. - -Если снять с кофеварки защитный кожух, то использование её будет более сложным (куда нажимать?) и опасным (током ударить может). - -Как мы увидим, объекты очень схожи с кофеварками. - -Только для того, чтобы прятать внутренние детали, используется не кожух, а специальные средства языка и соглашения. - -## Внутренний и внешний интерфейс - -В программировании мы будем разделять методы и свойства объекта на две группы: - -
          -
        • *Внутренний интерфейс* -- это свойства и методы, доступ к которым может быть осуществлен только из других методов объекта, их также называют "приватными" (есть и другие термины, встретим их далее).
        • - -
        • *Внешний интерфейс* -- это свойства и методы, доступные снаружи объекта, их называют "публичными".
        • -
        - -Если продолжить аналогию с кофеваркой -- то, что спрятано внутри кофеварки: трубка кипятильника, нагревательный элемент, тепловой предохранитель и так далее -- это её внутренний интерфейс. - -Внутренний интерфейс используется для обеспечения работоспособности объекта, его детали используют друг друга. Например, трубка кипятильника подключена к нагревательному элементу. - -Но снаружи кофеварка закрыта специальным кожухом, чтобы никто к ним не подобрался. Детали скрыты и недоступны. Виден лишь внешний интерфейс. - -Получив объект, всё, что нужно для пользования им -- это знать внешний интерфейс. О внутреннем же знать вообще не обязательно. - -Это были общие слова по теории программирования. - -Далее мы реализуем кофеварку на JavaScript с приватными и публичными свойствами. В кофеварке много деталей, мы конечно, не будем моделировать каждый винтик, а сосредоточимся на основных приёмах разработки. - -## Шаг 1: публичное и приватное свойство - -Конструктор кофеварок будет называться `CoffeeMachine`. - -```js -//+ run -function CoffeeMachine(power) { - this.waterAmount = 0; // количество воды в кофеварке - - alert( 'Создана кофеварка мощностью: ' + power + ' ватт' ); -} - -// создать кофеварку -var coffeeMachine = new CoffeeMachine(100); - -// залить воды -coffeeMachine.waterAmount = 200; -``` - -**Локальные переменные, включая параметры конструктора, можно считать приватными свойствами.** - -В примере выше это `power` -- мощность кофеварки, которая указывается при создании и далее будет использована для расчёта времени кипячения. - -К локальным переменным конструктора нельзя обратиться снаружи, но они доступны внутри самого конструктора. - -**Свойства, записанные в `this`, можно считать публичными.** - -Здесь свойство `waterAmount` записано в объект, а значит -- доступно для модификации снаружи. Можно доливать и выливать воду в любом количестве. - -[smart header="Вопрос терминологии"] -Далее мы будем называть `power` как "локальной переменной", так и "приватным свойством" объекта. - -Это, смотря, с какой стороны посмотреть. - -Термины "приватное свойство/метод", "публичное свойство/метод" относятся к общей теории ООП. А их конкретная реализация в языке программирования может быть различной. - -Здесь ООП-принцип "приватного свойства" реализован через локальные переменные, поэтому и "локальная переменная" и "приватное свойство" -- правильные термины, в зависимости от того, с какой точки зрения взглянуть -- кода или архитектуры ООП. -[/smart] - - -## Шаг 2: публичный и приватный методы - -Добавим публичный метод `run`, запускающий кофеварку, а также вспомогательные внутренние методы `getBoilTime` и `onReady`: - -```js -//+ run -function CoffeeMachine(power) { - - this.waterAmount = 0; - -*!* - // расчёт времени для кипячения - function getBoilTime() { - return 1000; // точная формула расчета будет позже - } - - // что делать по окончании процесса - function onReady() { - alert( 'Кофе готово!' ); - } - - this.run = function() { - // setTimeout - встроенная функция, - // она запустит onReady через getBoilTime() миллисекунд - setTimeout(onReady, getBoilTime()); - }; -*/!* -} - -var coffeeMachine = new CoffeeMachine(100); -coffeeMachine.waterAmount = 200; - -coffeeMachine.run(); -``` - -Приватные методы, такие как `onReady`, `getBoilTime` могут быть объявлены как вложенные функции. - -В результате естественным образом получается, что доступ к ним (через замыкание) имеют только другие функции, объявленные в том же конструкторе. - -## Шаг 3: константа - -Для расчёта времени на кипячение воды используется формула `c*m*ΔT / power`, где: -
          -
        • `c` -- коэффициент теплоёмкости воды, физическая константа равная `4200`.
        • -
        • `m` -- масса воды, которую нужно согреть.
        • -
        • `ΔT` -- температура, на которую нужно подогреть, будем считать, что изначально вода -- комнатной температуры 20°С, то есть до 100° нужно греть на `ΔT=80`.
        • -
        • `power` -- мощность.
        • -
        - -Используем её в более реалистичном варианте `getBoilTime()`, включающем использование приватных свойств и константу: - -```js -//+ run -"use strict" - -function CoffeeMachine(power) { - - this.waterAmount = 0; - -*!* - // физическая константа - удельная теплоёмкость воды для getBoilTime - var WATER_HEAT_CAPACITY = 4200; - - // расчёт времени для кипячения - function getBoilTime() { - return this.waterAmount * WATER_HEAT_CAPACITY * 80 / power; // ошибка! - } -*/!* - - // что делать по окончании процесса - function onReady() { - alert( 'Кофе готово!' ); - } - - this.run = function() { - setTimeout(onReady, getBoilTime()); - }; - -} - -var coffeeMachine = new CoffeeMachine(1000); -coffeeMachine.waterAmount = 200; - -coffeeMachine.run(); -``` - -Удельная теплоёмкость `WATER_HEAT_CAPACITY` выделена большими буквами, так как это константа. - -Внимание, при запуске кода выше в методе `getBoilTime` будет ошибка. Как вы думаете, почему? - -## Шаг 4: доступ к объекту из внутреннего метода - -Внутренний метод вызывается так: `getBoilTime()`. А чему при этом равен `this`?... Как вы наверняка помните, в современном стандарте он будет `undefined` (в старом -- `window`), из-за этого при чтении `this.waterAmount` возникнет ошибка! - -Её можно решить, если вызвать `getBoilTime` с явным указанием контекста: `getBoilTime.call(this)`: - -```js -//+ run -function CoffeeMachine(power) { - this.waterAmount = 0; - var WATER_HEAT_CAPACITY = 4200; - - function getBoilTime() { - return this.waterAmount * WATER_HEAT_CAPACITY * 80 / power; - } - - function onReady() { - alert( 'Кофе готово!' ); - } - - this.run = function() { -*!* - setTimeout(onReady, getBoilTime.call(this)); -*/!* - }; - -} - -// создаю кофеварку, мощностью 100000W чтобы кипятила быстро -var coffeeMachine = new CoffeeMachine(100000); -coffeeMachine.waterAmount = 200; - -coffeeMachine.run(); -``` - -Такой подход будет работать, но он не очень-то удобен. Ведь получается, что теперь везде, где мы хотим вызвать `getBoilTime`, нужно явно указывать контекст, т.е. писать `getBoilTime.call(this)`. - -К счастью существуют более элегантные решения. - -### Привязка через bind - -Можно при объявлении привязать `getBoilTime` к объекту через `bind`, тогда вопрос контекста отпадёт сам собой: - -```js -//+ run -function CoffeeMachine(power) { - this.waterAmount = 0; - - var WATER_HEAT_CAPACITY = 4200; - -*!* - var getBoilTime = function() { - return this.waterAmount * WATER_HEAT_CAPACITY * 80 / power; - }.bind(this); -*/!* - - function onReady() { - alert( 'Кофе готово!' ); - } - - this.run = function() { -*!* - setTimeout(onReady, getBoilTime()); -*/!* - }; - -} - -var coffeeMachine = new CoffeeMachine(100000); -coffeeMachine.waterAmount = 200; - -coffeeMachine.run(); -``` - -Это решение будет работать, теперь функцию можно просто вызывать без `call`. Но объявление функции стало менее красивым. - -### Сохранение this в замыкании - -Пожалуй, самый удобный и часто применяемый путь решения состоит в том, чтобы предварительно скопировать `this` во вспомогательную переменную и обращаться из внутренних функций уже к ней. - -Вот так: - -```js -//+ run -function CoffeeMachine(power) { - this.waterAmount = 0; - - var WATER_HEAT_CAPACITY = 4200; - -*!* - var self = this; - - function getBoilTime() { - return self.waterAmount * WATER_HEAT_CAPACITY * 80 / power; - } -*/!* - - function onReady() { - alert( 'Кофе готово!' ); - } - - this.run = function() { - setTimeout(onReady, getBoilTime()); - }; - -} - -var coffeeMachine = new CoffeeMachine(100000); -coffeeMachine.waterAmount = 200; - -coffeeMachine.run(); -``` - -Теперь `getBoilTime` получает `self` из замыкания. - -**Конечно, чтобы это работало, мы не должны изменять `self`, а все приватные методы, которые хотят иметь доступ к текущему объекту, должны использовать внутри себя `self` вместо `this`.** - -Вместо `self` можно использовать любое другое имя переменной, например `var me = this`. - -## Итого - -Итак, мы сделали кофеварку с публичными и приватными методами и заставили их корректно работать. - -В терминологии ООП отделение и защита внутреннего интерфейса называется [инкапсуляция](http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%BA%D0%B0%D0%BF%D1%81%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29). - -Кратко перечислим бонусы, которые она даёт: - -
        -
        Защита пользователей от выстрела себе в ногу
        -
        Представьте, команда разработчиков пользуется кофеваркой. Кофеварка создана фирмой "Лучшие Кофеварки" и, в общем, работает хорошо, но с неё сняли защитный кожух и, таким образом, внутренний интерфейс стал доступен. - -Все разработчики цивилизованны -- и пользуются кофеваркой как обычно. Но хитрый Вася решил, что он самый умный, и подкрутил кое-что внутри кофеварки, чтобы кофе заваривался покрепче. Вася не знал, что те изменения, которые он произвёл, приведут к тому, что кофеварка испортится через два дня. - -Виноват, разумеется, не только Вася, но и тот, кто снял защитный кожух с кофеварки, и тем самым позволил Васе проводить манипуляции. - -В программировании -- то же самое. Если пользователь объекта будет менять то, что не рассчитано на изменение снаружи -- последствия могут быть непредсказуемыми. -
        -
        Удобство в поддержке
        -
        Ситуация в программировании сложнее, чем с кофеваркой, т.к. кофеварку один раз купили и всё, а программа может улучшаться и дорабатываться. - -**При наличии чётко выделенного внешнего интерфейса, разработчик может свободно менять внутренние свойства и методы, без оглядки на коллег.** - -Гораздо легче разрабатывать, если знаешь, что ряд методов (все внутренние) можно переименовывать, менять их параметры, и вообще, переписать как угодно, так как внешний код к ним абсолютно точно не обращается. - -Ближайшая аналогия в реальной жизни -- это когда выходит "новая версия" кофеварки, которая работает гораздо лучше. Разработчик мог переделать всё внутри, но пользоваться ей по-прежнему просто, так как внешний интерфейс сохранён.
        -
        Управление сложностью
        -
        Люди обожают пользоваться вещами, которые просты с виду. А что внутри -- дело десятое. - -Программисты здесь не исключение. - -**Всегда удобно, когда детали реализации скрыты, и доступен простой, понятно документированный внешний интерфейс.** -
        -
        - diff --git a/1-js/8-oop/2-internal-external-interface/coffee-inside.jpg b/1-js/8-oop/2-internal-external-interface/coffee-inside.jpg deleted file mode 100755 index 60f84664d1e1b6f46b856d5a781389c59af5b1ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61294 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

        w8NAK#`P3A%P-%W>`U+6eEW(RnjWa@1=HU{m^b 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 -

      • С приватными свойствами имя `firstName` и фамилия `surname`.
      • -
      • С сеттерами для этих свойств.
      • -
      • С геттером `getFullName()`, который возвращает полное имя.
      • -
      - -Должен работать так: - -```js -function User() { - /* ваш код */ -} - -var user = new User(); -user.setFirstName("Петя"); -user.setSurname("Иванов"); - -alert( user.getFullName() ); // Петя Иванов -``` - diff --git a/1-js/8-oop/3-getters-setters/2-getter-power/solution.md b/1-js/8-oop/3-getters-setters/2-getter-power/solution.md deleted file mode 100644 index b82c109a..00000000 --- a/1-js/8-oop/3-getters-setters/2-getter-power/solution.md +++ /dev/null @@ -1,28 +0,0 @@ - - -```js -function CoffeeMachine(power, capacity) { - //... - this.setWaterAmount = function(amount) { - if (amount < 0) { - throw new Error("Значение должно быть положительным"); - } - if (amount > capacity) { - throw new Error("Нельзя залить воды больше, чем " + capacity); - } - - waterAmount = amount; - }; - - this.getWaterAmount = function() { - return waterAmount; - }; - -*!* - this.getPower = function() { - return power; - }; -*/!* -} -``` - diff --git a/1-js/8-oop/3-getters-setters/2-getter-power/task.md b/1-js/8-oop/3-getters-setters/2-getter-power/task.md deleted file mode 100644 index 7301c6f5..00000000 --- a/1-js/8-oop/3-getters-setters/2-getter-power/task.md +++ /dev/null @@ -1,32 +0,0 @@ -# Добавить геттер для power - -[importance 5] - -Добавьте кофеварке геттер для приватного свойства `power`, чтобы внешний код мог узнать мощность кофеварки. - -Исходный код: - -```js -function CoffeeMachine(power, capacity) { - //... - this.setWaterAmount = function(amount) { - if (amount < 0) { - throw new Error("Значение должно быть положительным"); - } - if (amount > capacity) { - throw new Error("Нельзя залить воды больше, чем " + capacity); - } - - waterAmount = amount; - }; - - this.getWaterAmount = function() { - return waterAmount; - }; - -} -``` - -Обратим внимание, что ситуация, когда у свойства `power` есть геттер, но нет сеттера -- вполне обычна. - -Здесь это означает, что мощность `power` можно указать лишь при создании кофеварки и в дальнейшем её можно прочитать, но нельзя изменить. \ No newline at end of file diff --git a/1-js/8-oop/3-getters-setters/3-add-public-coffeemachine/solution.md b/1-js/8-oop/3-getters-setters/3-add-public-coffeemachine/solution.md deleted file mode 100644 index 41aa318a..00000000 --- a/1-js/8-oop/3-getters-setters/3-add-public-coffeemachine/solution.md +++ /dev/null @@ -1,47 +0,0 @@ -В решении ниже `addWater` будет просто вызывать `setWaterAmount`. - -```js -//+ run -function CoffeeMachine(power, capacity) { - var waterAmount = 0; - - var WATER_HEAT_CAPACITY = 4200; - - function getTimeToBoil() { - return waterAmount * WATER_HEAT_CAPACITY * 80 / power; - } - - this.setWaterAmount = function(amount) { - if (amount < 0) { - throw new Error("Значение должно быть положительным"); - } - if (amount > capacity) { - throw new Error("Нельзя залить больше, чем " + capacity); - } - - waterAmount = amount; - }; - -*!* - this.addWater = function(amount) { - this.setWaterAmount(waterAmount + amount); - }; -*/!* - - function onReady() { - alert( 'Кофе готов!' ); - } - - this.run = function() { - setTimeout(onReady, getTimeToBoil()); - }; - -} - -var coffeeMachine = new CoffeeMachine(100000, 400); -coffeeMachine.addWater(200); -coffeeMachine.addWater(100); -coffeeMachine.addWater(300); // Нельзя залить больше.. -coffeeMachine.run(); -``` - diff --git a/1-js/8-oop/3-getters-setters/3-add-public-coffeemachine/task.md b/1-js/8-oop/3-getters-setters/3-add-public-coffeemachine/task.md deleted file mode 100644 index e123fed4..00000000 --- a/1-js/8-oop/3-getters-setters/3-add-public-coffeemachine/task.md +++ /dev/null @@ -1,52 +0,0 @@ -# Добавить публичный метод кофеварке - -[importance 5] - -Добавьте кофеварке публичный метод `addWater(amount)`, который будет добавлять воду. - -При этом, конечно же, должны происходить все необходимые проверки -- на положительность и превышение ёмкости. - -Исходный код: - -```js -function CoffeeMachine(power, capacity) { - var waterAmount = 0; - - var WATER_HEAT_CAPACITY = 4200; - - function getTimeToBoil() { - return waterAmount * WATER_HEAT_CAPACITY * 80 / power; - } - - this.setWaterAmount = function(amount) { - if (amount < 0) { - throw new Error("Значение должно быть положительным"); - } - if (amount > capacity) { - throw new Error("Нельзя залить больше, чем " + capacity); - } - - waterAmount = amount; - }; - - function onReady() { - alert( 'Кофе готов!' ); - } - - this.run = function() { - setTimeout(onReady, getTimeToBoil()); - }; - -} -``` - -Вот такой код должен приводить к ошибке: - -```js -var coffeeMachine = new CoffeeMachine(100000, 400); -coffeeMachine.addWater(200); -coffeeMachine.addWater(100); -coffeeMachine.addWater(300); // Нельзя залить больше, чем 400 -coffeeMachine.run(); -``` - diff --git a/1-js/8-oop/3-getters-setters/4-setter-onready/solution.md b/1-js/8-oop/3-getters-setters/4-setter-onready/solution.md deleted file mode 100644 index 2aca1b6f..00000000 --- a/1-js/8-oop/3-getters-setters/4-setter-onready/solution.md +++ /dev/null @@ -1,69 +0,0 @@ - - -```js -//+ run -function CoffeeMachine(power, capacity) { - var waterAmount = 0; - - var WATER_HEAT_CAPACITY = 4200; - - function getTimeToBoil() { - return waterAmount * WATER_HEAT_CAPACITY * 80 / power; - } - - this.setWaterAmount = function(amount) { - // ... проверки пропущены для краткости - waterAmount = amount; - }; - - this.getWaterAmount = function(amount) { - return waterAmount; - }; - - function onReady() { - alert( 'Кофе готов!' ); - } - -*!* - this.setOnReady = function(newOnReady) { - onReady = newOnReady; - }; -*/!* - - this.run = function() { -*!* - setTimeout(function() { - onReady(); - }, getTimeToBoil()); -*/!* - }; - -} - -var coffeeMachine = new CoffeeMachine(20000, 500); -coffeeMachine.setWaterAmount(150); - -coffeeMachine.run(); - -*!* -coffeeMachine.setOnReady(function() { - var amount = coffeeMachine.getWaterAmount(); - alert( 'Готов кофе: ' + amount + 'мл' ); // Готов кофе: 150 мл -}); -*/!* -``` - -Обратите внимание на два момента в решении: -
        -
      1. В сеттере `setOnReady` параметр называется `newOnReady`. Мы не можем назвать его `onReady`, так как тогда изнутри сеттера мы никак не доберёмся до внешнего (старого значения): - -```js -// нерабочий вариант -this.setOnReady = function(onReady) { - onReady = onReady; // ??? внешняя переменная onReady недоступна -}; -``` - -
      2. -
      3. Чтобы `setOnReady` можно было вызывать в любое время, в `setTimeout` передаётся не `onReady`, а анонимная функция `function() { onReady() }`, которая возьмёт текущий (установленный последним) `onReady` из замыкания.
      4. -
      \ No newline at end of file diff --git a/1-js/8-oop/3-getters-setters/4-setter-onready/task.md b/1-js/8-oop/3-getters-setters/4-setter-onready/task.md deleted file mode 100644 index 2e960697..00000000 --- a/1-js/8-oop/3-getters-setters/4-setter-onready/task.md +++ /dev/null @@ -1,59 +0,0 @@ -# Создать сеттер для onReady - -[importance 5] - -Обычно когда кофе готов, мы хотим что-то сделать, например выпить его. - -Сейчас при готовности срабатывает функция `onReady`, но она жёстко задана в коде: - -```js -function CoffeeMachine(power, capacity) { - var waterAmount = 0; - - var WATER_HEAT_CAPACITY = 4200; - - function getTimeToBoil() { - return waterAmount * WATER_HEAT_CAPACITY * 80 / power; - } - - this.setWaterAmount = function(amount) { - // ... проверки пропущены для краткости - waterAmount = amount; - }; - - this.getWaterAmount = function(amount) { - return waterAmount; - }; - -*!* - function onReady() { - alert( 'Кофе готов!' ); - } -*/!* - - this.run = function() { - setTimeout(onReady, getTimeToBoil()); - }; - -} -``` - -Создайте сеттер `setOnReady`, чтобы код снаружи мог назначить свой `onReady`, вот так: - -```js -var coffeeMachine = new CoffeeMachine(20000, 500); -coffeeMachine.setWaterAmount(150); - -*!* -coffeeMachine.setOnReady(function() { - var amount = coffeeMachine.getWaterAmount(); - alert( 'Готов кофе: ' + amount + 'мл' ); // Кофе готов: 150 мл -}); -*/!* - -coffeeMachine.run(); -``` - -P.S. Значение `onReady` по умолчанию должно быть таким же, как и раньше. - -P.P.S. Постарайтесь сделать так, чтобы `setOnReady` можно было вызвать не только до, но и *после* запуска кофеварки, то есть чтобы функцию `onReady` можно было изменить в любой момент до её срабатывания. \ No newline at end of file diff --git a/1-js/8-oop/3-getters-setters/5-coffeemachine-add-isrunning/solution.md b/1-js/8-oop/3-getters-setters/5-coffeemachine-add-isrunning/solution.md deleted file mode 100644 index 8f61ff53..00000000 --- a/1-js/8-oop/3-getters-setters/5-coffeemachine-add-isrunning/solution.md +++ /dev/null @@ -1,62 +0,0 @@ -Код решения модифицирует функцию `run` и добавляет приватный идентификатор таймера `timerId`, по наличию которого мы судим о состоянии кофеварки: - -```js -//+ run -function CoffeeMachine(power, capacity) { - var waterAmount = 0; - -*!* - var timerId; - - this.isRunning = function() { - return !!timerId; - }; -*/!* - - var WATER_HEAT_CAPACITY = 4200; - - function getTimeToBoil() { - return waterAmount * WATER_HEAT_CAPACITY * 80 / power; - } - - this.setWaterAmount = function(amount) { - // ... проверки пропущены для краткости - waterAmount = amount; - }; - - this.getWaterAmount = function(amount) { - return waterAmount; - }; - - function onReady() { - alert( 'Кофе готов!' ); - } - - this.setOnReady = function(newOnReady) { - onReady = newOnReady; - }; - - this.run = function() { -*!* - timerId = setTimeout(function() { - timerId = null; - onReady(); - }, getTimeToBoil()); - }; -*/!* - -} - -var coffeeMachine = new CoffeeMachine(20000, 500); -coffeeMachine.setWaterAmount(100); - -alert( 'До: ' + coffeeMachine.isRunning() ); // До: false - -coffeeMachine.run(); -alert( 'В процессе: ' + coffeeMachine.isRunning() ); // В процессе: true - -coffeeMachine.setOnReady(function() { - alert( "После: " + coffeeMachine.isRunning() ); // После: false -}); -``` - diff --git a/1-js/8-oop/3-getters-setters/5-coffeemachine-add-isrunning/task.md b/1-js/8-oop/3-getters-setters/5-coffeemachine-add-isrunning/task.md deleted file mode 100644 index 7d8ff96c..00000000 --- a/1-js/8-oop/3-getters-setters/5-coffeemachine-add-isrunning/task.md +++ /dev/null @@ -1,25 +0,0 @@ -# Добавить метод isRunning - -[importance 5] - -Из внешнего кода мы хотели бы иметь возможность понять -- запущена кофеварка или нет. - -Для этого добавьте кофеварке публичный метод `isRunning()`, который будет возвращать `true`, если она запущена и `false`, если нет. - -Нужно, чтобы такой код работал: - -```js -var coffeeMachine = new CoffeeMachine(20000, 500); -coffeeMachine.setWaterAmount(100); - -alert( 'До: ' + coffeeMachine.isRunning() ); // До: false - -coffeeMachine.run(); -alert( 'В процессе: ' + coffeeMachine.isRunning() ); // В процессе: true - -coffeeMachine.setOnReady(function() { - alert( "После: " + coffeeMachine.isRunning() ); // После: false -}); -``` - -Исходный код возьмите из решения [предыдущей задачи](/task/setter-onready). \ No newline at end of file diff --git a/1-js/8-oop/3-getters-setters/article.md b/1-js/8-oop/3-getters-setters/article.md deleted file mode 100644 index e97a6e1b..00000000 --- a/1-js/8-oop/3-getters-setters/article.md +++ /dev/null @@ -1,167 +0,0 @@ -# Геттеры и сеттеры - -Для *управляемого* доступа к состоянию объекта используют специальные функции, так называемые "геттеры" и "сеттеры". -[cut] - -## Геттер и сеттер для воды - -На текущий момент количество воды в кофеварке является публичным свойством `waterAmount`: - -```js -//+ run -function CoffeeMachine(power) { - // количество воды в кофеварке - this.waterAmount = 0; - - ... -} -``` - -Это немного опасно. Ведь в это свойство можно записать произвольное количество воды, хоть весь мировой океан. - -```js -// не помещается в кофеварку! -coffeeMachine.waterAmount = 1000000; -``` - -Это ещё ничего, гораздо хуже, что можно наоборот -- вылить больше, чем есть: - -```js -// и не волнует, было ли там столько воды вообще! -coffeeMachine.waterAmount -= 1000000; -``` - -Так происходит потому, что свойство полностью доступно снаружи. - -Чтобы не было таких казусов, нам нужно ограничить контроль над свойством со стороны внешнего кода. - -**Для лучшего контроля над свойством его делают приватным, а запись значения осуществляется через специальный метод, который называют *"сеттер"* (setter method).** - -Типичное название для сеттера -- `setСвойство`, например, в случае с кофеваркой таким сеттером будет метод `setWaterAmount`: - -```js -//+ run -function CoffeeMachine(power, capacity) { // capacity - ёмкость кофеварки - var waterAmount = 0; - - var WATER_HEAT_CAPACITY = 4200; - - function getTimeToBoil() { - return waterAmount * WATER_HEAT_CAPACITY * 80 / power; - } - -*!* - // "умная" установка свойства - this.setWaterAmount = function(amount) { - if (amount < 0) { - throw new Error("Значение должно быть положительным"); - } - if (amount > capacity) { - throw new Error("Нельзя залить воды больше, чем " + capacity); - } - - waterAmount = amount; - }; -*/!* - - function onReady() { - alert( 'Кофе готов!' ); - } - - this.run = function() { - setTimeout(onReady, getTimeToBoil()); - }; - -} - -var coffeeMachine = new CoffeeMachine(1000, 500); -coffeeMachine.setWaterAmount(600); // упс, ошибка! -``` - -Теперь `waterAmount` -- внутреннее свойство, его можно записать (через сеттер), но, увы, нельзя прочитать. - -**Для того, чтобы дать возможность внешнему коду узнать его значение, создадим специальную функцию -- "геттер" (getter method).** - -Геттеры обычно имеют название вида `getСвойство`, в данном случае `getWaterAmount`: - -```js -//+ run -function CoffeeMachine(power, capacity) { - //... - this.setWaterAmount = function(amount) { - if (amount < 0) { - throw new Error("Значение должно быть положительным"); - } - if (amount > capacity) { - throw new Error("Нельзя залить воды больше, чем " + capacity); - } - - waterAmount = amount; - }; - -*!* - this.getWaterAmount = function() { - return waterAmount; - }; -*/!* -} - -var coffeeMachine = new CoffeeMachine(1000, 500); -coffeeMachine.setWaterAmount(450); -alert( coffeeMachine.getWaterAmount() ); // 450 -``` - -## Единый геттер-сеттер - -Для большего удобства иногда делают единый метод, который называется так же, как свойство и отвечает *и за запись и за чтение*. - -При вызове без параметров такой метод возвращает свойство, а при передаче параметра -- назначает его. - -Выглядит это так: - -```js -//+ run -function CoffeeMachine(power, capacity) { - var waterAmount = 0; - -*!* - this.waterAmount = function(amount) { -*/!* - // вызов без параметра, значит режим геттера, возвращаем свойство - if (!arguments.length) return waterAmount; - - // иначе режим сеттера - if (amount < 0) { - throw new Error("Значение должно быть положительным"); - } - if (amount > capacity) { - throw new Error("Нельзя залить воды больше, чем " + capacity); - } - - waterAmount = amount; - }; - -} - -var coffeeMachine = new CoffeeMachine(1000, 500); - -// пример использования -*!* -coffeeMachine.waterAmount(450); -alert( coffeeMachine.waterAmount() ); // 450 -*/!* -``` - -Единый геттер-сеттер используется реже, чем две отдельные функции, но в некоторых JavaScript-библиотеках, например [jQuery](http://jquery.com) и [D3](http://d3js.org) подобный подход принят на уровне концепта. - -## Итого - -
        -
      • Для большего контроля над присвоением и чтением значения, вместо свойства делают "функцию-геттер" и "функцию-сеттер", геттер возвращает значение, сеттер -- устанавливает.
      • -
      • Если свойство предназначено только для чтения, то может быть только геттер, только для записи -- только сеттер.
      • -
      • В качестве альтернативы паре геттер/сеттер применяют единую функцию, которая без аргументов ведёт себя как геттер, а с аргументом -- как сеттер.
      • -
      - -Также можно организовать геттеры/сеттеры для свойства, не меняя структуры кода, через [дескрипторы свойств](/descriptors-getters-setters). - - diff --git a/1-js/8-oop/5-functional-inheritance/1-coffeemachine-fix-run/solution.md b/1-js/8-oop/5-functional-inheritance/1-coffeemachine-fix-run/solution.md deleted file mode 100644 index 9f35452d..00000000 --- a/1-js/8-oop/5-functional-inheritance/1-coffeemachine-fix-run/solution.md +++ /dev/null @@ -1,15 +0,0 @@ -Изменения в методе `run`: - -```js -this.run = function() { -*!* - if (!this._enabled) { - throw new Error("Кофеварка выключена"); - } -*/!* - - setTimeout(onReady, 1000); -}; -``` - - diff --git a/1-js/8-oop/5-functional-inheritance/1-coffeemachine-fix-run/solution.view/index.html b/1-js/8-oop/5-functional-inheritance/1-coffeemachine-fix-run/solution.view/index.html deleted file mode 100755 index 053c8198..00000000 --- a/1-js/8-oop/5-functional-inheritance/1-coffeemachine-fix-run/solution.view/index.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/8-oop/5-functional-inheritance/1-coffeemachine-fix-run/source.view/index.html b/1-js/8-oop/5-functional-inheritance/1-coffeemachine-fix-run/source.view/index.html deleted file mode 100755 index 6d287989..00000000 --- a/1-js/8-oop/5-functional-inheritance/1-coffeemachine-fix-run/source.view/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/8-oop/5-functional-inheritance/1-coffeemachine-fix-run/task.md b/1-js/8-oop/5-functional-inheritance/1-coffeemachine-fix-run/task.md deleted file mode 100644 index d90fce6a..00000000 --- a/1-js/8-oop/5-functional-inheritance/1-coffeemachine-fix-run/task.md +++ /dev/null @@ -1,21 +0,0 @@ -# Запускать только при включённой кофеварке - -[importance 5] - -В коде `CoffeeMachine` сделайте так, чтобы метод `run` выводил ошибку, если кофеварка выключена. - -В итоге должен работать такой код: - -```js -var coffeeMachine = new CoffeeMachine(10000); -coffeeMachine.run(); // ошибка, кофеварка выключена! -``` - -А вот так -- всё в порядке: - -```js -var coffeeMachine = new CoffeeMachine(10000); -coffeeMachine.enable(); -coffeeMachine.run(); // ...Кофе готов! -``` - diff --git a/1-js/8-oop/5-functional-inheritance/2-coffeemachine-disable-stop/solution.md b/1-js/8-oop/5-functional-inheritance/2-coffeemachine-disable-stop/solution.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-js/8-oop/5-functional-inheritance/2-coffeemachine-disable-stop/solution.view/index.html b/1-js/8-oop/5-functional-inheritance/2-coffeemachine-disable-stop/solution.view/index.html deleted file mode 100755 index 61ce8414..00000000 --- a/1-js/8-oop/5-functional-inheritance/2-coffeemachine-disable-stop/solution.view/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/8-oop/5-functional-inheritance/2-coffeemachine-disable-stop/task.md b/1-js/8-oop/5-functional-inheritance/2-coffeemachine-disable-stop/task.md deleted file mode 100644 index 298cd301..00000000 --- a/1-js/8-oop/5-functional-inheritance/2-coffeemachine-disable-stop/task.md +++ /dev/null @@ -1,16 +0,0 @@ -# Останавливать кофеварку при выключении - -[importance 5] - -Когда кофеварку выключают -- текущая варка кофе должна останавливаться. - -Например, следующий код кофе не сварит: - -```js -var coffeeMachine = new CoffeeMachine(10000); -coffeeMachine.enable(); -coffeeMachine.run(); -coffeeMachine.disable(); // остановит работу, ничего не выведет -``` - -Реализуйте это на основе решения [предыдущей задачи](/task/coffeemachine-fix-run). diff --git a/1-js/8-oop/5-functional-inheritance/3-inherit-fridge/solution.md b/1-js/8-oop/5-functional-inheritance/3-inherit-fridge/solution.md deleted file mode 100644 index 38957f28..00000000 --- a/1-js/8-oop/5-functional-inheritance/3-inherit-fridge/solution.md +++ /dev/null @@ -1,29 +0,0 @@ -Решение: - -```js -function Fridge(power) { - // унаследовать - Machine.apply(this, arguments); - - var food = []; // приватное свойство food - - this.addFood = function() { - if (!this._enabled) { - throw new Error("Холодильник выключен"); - } - if (food.length + arguments.length >= this._power / 100) { - throw new Error("Нельзя добавить, не хватает мощности"); - } - for (var i = 0; i < arguments.length; i++) { - food.push(arguments[i]); // добавить всё из arguments - } - }; - - this.getFood = function() { - // копируем еду в новый массив, чтобы манипуляции с ним не меняли food - return food.slice(); - }; - -} -``` - diff --git a/1-js/8-oop/5-functional-inheritance/3-inherit-fridge/task.md b/1-js/8-oop/5-functional-inheritance/3-inherit-fridge/task.md deleted file mode 100644 index 150bdb0f..00000000 --- a/1-js/8-oop/5-functional-inheritance/3-inherit-fridge/task.md +++ /dev/null @@ -1,67 +0,0 @@ -# Унаследуйте холодильник - -[importance 4] - -Создайте класс для холодильника `Fridge(power)`, наследующий от `Machine`, с приватным свойством `food` и методами `addFood(...)`, `getFood()`: -
        -
      • Приватное свойство `food` хранит массив еды.
      • -
      • Публичный метод `addFood(item)` добавляет в массив `food` новую еду, доступен вызов с несколькими аргументами `addFood(item1, item2...)` для добавления нескольких элементов сразу.
      • -
      • Если холодильник выключен, то добавить еду нельзя, будет ошибка.
      • -
      • Максимальное количество еды ограничено `power/100`, где `power` -- мощность холодильника, указывается в конструкторе. При попытке добавить больше -- будет ошибка
      • -
      • Публичный метод `getFood()` возвращает еду в виде массива, добавление или удаление элементов из которого не должно влиять на свойство `food` холодильника.
      • -
      - -Код для проверки: - -```js -var fridge = new Fridge(200); -fridge.addFood("котлета"); // ошибка, холодильник выключен -``` - -Ещё код для проверки: - -```js -// создать холодильник мощностью 500 (не более 5 еды) -var fridge = new Fridge(500); -fridge.enable(); -fridge.addFood("котлета"); -fridge.addFood("сок", "зелень"); -fridge.addFood("варенье", "пирог", "торт"); // ошибка, слишком много еды -``` - -Код использования холодильника без ошибок: - -```js -var fridge = new Fridge(500); -fridge.enable(); -fridge.addFood("котлета"); -fridge.addFood("сок", "варенье"); - -var fridgeFood = fridge.getFood(); -alert( fridgeFood ); // котлета, сок, варенье - -// добавление элементов не влияет на еду в холодильнике -fridgeFood.push("вилка", "ложка"); - -alert( fridge.getFood() ); // внутри по-прежнему: котлета, сок, варенье -``` - -Исходный код класса `Machine`, от которого нужно наследовать: - -```js -function Machine(power) { - this._power = power; - this._enabled = false; - - var self = this; - - this.enable = function() { - self._enabled = true; - }; - - this.disable = function() { - self._enabled = false; - }; -} -``` - diff --git a/1-js/8-oop/5-functional-inheritance/4-add-methods-fridge/solution.md b/1-js/8-oop/5-functional-inheritance/4-add-methods-fridge/solution.md deleted file mode 100644 index e7752658..00000000 --- a/1-js/8-oop/5-functional-inheritance/4-add-methods-fridge/solution.md +++ /dev/null @@ -1,89 +0,0 @@ - - -```js -//+ run -function Machine(power) { - this._power = power; - this._enabled = false; - - var self = this; - - this.enable = function() { - self._enabled = true; - }; - - this.disable = function() { - self._enabled = false; - }; -} - -function Fridge(power) { - // унаследовать - Machine.apply(this, arguments); - - var food = []; // приватное свойство food - - this.addFood = function() { - if (!this._enabled) { - throw new Error("Холодильник выключен"); - } - if (food.length + arguments.length >= this._power / 100) { - throw new Error("Нельзя добавить, не хватает мощности"); - } - for (var i = 0; i < arguments.length; i++) { - food.push(arguments[i]); // добавить всё из arguments - } - - }; - - this.getFood = function() { - // копируем еду в новый массив, чтобы манипуляции с ним не меняли food - return food.slice(); - }; - -*!* - this.filterFood = function(filter) { - return food.filter(filter); - }; - - this.removeFood = function(item) { - var idx = food.indexOf(item); - if (idx != -1) food.splice(idx, 1); - }; -*/!* -} - -var fridge = new Fridge(500); -fridge.enable(); -fridge.addFood({ - title: "котлета", - calories: 100 -}); -fridge.addFood({ - title: "сок", - calories: 30 -}); -fridge.addFood({ - title: "зелень", - calories: 10 -}); -fridge.addFood({ - title: "варенье", - calories: 150 -}); - -var dietItems = fridge.filterFood(function(item) { - return item.calories < 50; -}); - -fridge.removeFood("нет такой еды"); // без эффекта -alert( fridge.getFood().length ); // 4 - -dietItems.forEach(function(item) { - alert( item.title ); // сок, зелень - fridge.removeFood(item); -}); - -alert( fridge.getFood().length ); // 2 -``` - diff --git a/1-js/8-oop/5-functional-inheritance/4-add-methods-fridge/task.md b/1-js/8-oop/5-functional-inheritance/4-add-methods-fridge/task.md deleted file mode 100644 index 46a4db21..00000000 --- a/1-js/8-oop/5-functional-inheritance/4-add-methods-fridge/task.md +++ /dev/null @@ -1,48 +0,0 @@ -# Добавьте методы в холодильник - -[importance 5] - -Добавьте в холодильник методы: -
        -
      • Публичный метод `filterFood(func)`, который возвращает всю еду, для которой `func(item) == true`
      • -
      • Публичный метод `removeFood(item)`, который удаляет еду `item` из холодильника.
      • -
      - -Код для проверки: - -```js -var fridge = new Fridge(500); -fridge.enable(); -fridge.addFood({ - title: "котлета", - calories: 100 -}); -fridge.addFood({ - title: "сок", - calories: 30 -}); -fridge.addFood({ - title: "зелень", - calories: 10 -}); -fridge.addFood({ - title: "варенье", - calories: 150 -}); - -fridge.removeFood("нет такой еды"); // без эффекта -alert( fridge.getFood().length ); // 4 - -var dietItems = fridge.filterFood(function(item) { - return item.calories < 50; -}); - -dietItems.forEach(function(item) { - alert( item.title ); // сок, зелень - fridge.removeFood(item); -}); - -alert( fridge.getFood().length ); // 2 -``` - -В качестве исходного кода используйте решение [предыдущей задачи](/task/inherit-fridge). diff --git a/1-js/8-oop/5-functional-inheritance/5-override-disable/solution.md b/1-js/8-oop/5-functional-inheritance/5-override-disable/solution.md deleted file mode 100644 index ec5fbb18..00000000 --- a/1-js/8-oop/5-functional-inheritance/5-override-disable/solution.md +++ /dev/null @@ -1,68 +0,0 @@ - - -```js -//+ run -function Machine(power) { - this._power = power; - this._enabled = false; - - var self = this; - - this.enable = function() { - self._enabled = true; - }; - - this.disable = function() { - self._enabled = false; - }; -} - -function Fridge(power) { - Machine.apply(this, arguments); - - var food = []; // приватное свойство food - - this.addFood = function() { - if (!this._enabled) { - throw new Error("Холодильник выключен"); - } - if (food.length + arguments.length >= this._power / 100) { - throw new Error("Нельзя добавить, не хватает мощности"); - } - for (var i = 0; i < arguments.length; i++) { - food.push(arguments[i]); // добавить всё из arguments - } - - }; - - this.getFood = function() { - // копируем еду в новый массив, чтобы манипуляции с ним не меняли food - return food.slice(); - }; - - this.filterFood = function(filter) { - return food.filter(filter); - }; - - this.removeFood = function(item) { - var idx = food.indexOf(item); - if (idx != -1) food.splice(idx, 1); - }; - -*!* - var parentDisable = this.disable; - this.disable = function() { - if (food.length) { - throw new Error("Нельзя выключить: внутри еда"); - } - parentDisable(); - }; -*/!* -} - -var fridge = new Fridge(500); -fridge.enable(); -fridge.addFood("кус-кус"); -fridge.disable(); // ошибка, в холодильнике есть еда -``` - diff --git a/1-js/8-oop/5-functional-inheritance/5-override-disable/task.md b/1-js/8-oop/5-functional-inheritance/5-override-disable/task.md deleted file mode 100644 index 482ffaaa..00000000 --- a/1-js/8-oop/5-functional-inheritance/5-override-disable/task.md +++ /dev/null @@ -1,17 +0,0 @@ -# Переопределите disable - -[importance 5] - -Переопределите метод `disable` холодильника, чтобы при наличии в нём еды он выдавал ошибку. - - -Код для проверки: - -```js -var fridge = new Fridge(500); -fridge.enable(); -fridge.addFood("кус-кус"); -fridge.disable(); // ошибка, в холодильнике есть еда -``` - -В качестве исходного кода используйте решение [предыдущей задачи](/task/add-methods-fridge). diff --git a/1-js/8-oop/5-functional-inheritance/article.md b/1-js/8-oop/5-functional-inheritance/article.md deleted file mode 100644 index 3afd5a93..00000000 --- a/1-js/8-oop/5-functional-inheritance/article.md +++ /dev/null @@ -1,403 +0,0 @@ -# Функциональное наследование - -Наследование -- это создание новых "классов" на основе существующих. - -В JavaScript его можно реализовать несколькими путями, один из которых -- с использованием наложения конструкторов, мы рассмотрим в этой главе. -[cut] - -## Зачем наследование? - -Ранее мы обсуждали различные реализации кофеварки. Продолжим эту тему далее. - -Хватит ли нам только кофеварки для удобной жизни? Вряд ли... Скорее всего, ещё понадобятся как минимум холодильник, микроволновка, а возможно и другие *машины*. - -В реальной жизни у этих *машин* есть базовые правила пользования. Например, большая кнопка -- включение, шнур с розеткой нужно воткнуть в питание и т.п. - -Можно сказать, что "у всех машин есть общие свойства, а конкретные машины могут их дополнять". - -Именно поэтому, увидев новую технику, мы уже можем что-то с ней сделать, даже не читая инструкцию. - -Механизм наследования позволяет определить базовый класс `Машина`, в нём описать то, что свойственно всем машинам, а затем на его основе построить другие, более конкретные: `Кофеварка`, `Холодильник` и т.п. - -[smart header="В веб-разработке всё так же"] -В веб-разработке нам могут понадобиться классы `Меню`, `Табы`, `Диалог` и другие компоненты интерфейса. В них всех обычно есть что-то общее. - -Можно выделить такой общий функционал в класс `Компонент` и наследовать их от него, чтобы не дублировать код. -[/smart] - -## Наследование от Machine - -Базовый класс "машина" `Machine` будет реализовывать общего вида методы "включить" `enable()` и "выключить" `disable()`: - -```js -function Machine() { - var enabled = false; - - this.enable = function() { - enabled = true; - }; - - this.disable = function() { - enabled = false; - }; -} -``` - -Унаследуем от него кофеварку. При этом она получит эти методы автоматически: - -```js -function CoffeeMachine(power) { -*!* - Machine.call(this); // отнаследовать -*/!* - - var waterAmount = 0; - - this.setWaterAmount = function(amount) { - waterAmount = amount; - }; - -} - -var coffeeMachine = new CoffeeMachine(10000); - -*!* -coffeeMachine.enable(); -coffeeMachine.setWaterAmount(100); -coffeeMachine.disable(); -*/!* -``` - -Наследование реализовано вызовом `Machine.call(this)` в начале конструктора `CoffeeMachine`. - -Он вызывает функцию `Machine`, передавая ей в качестве контекста `this` текущий объект. `Machine`, в процессе выполнения, записывает в `this` различные полезные свойства и методы, в нашем случае `this.enable` и `this.disable`. - -Далее конструктор `CoffeeMachine` продолжает выполнение и может добавить свои свойства и методы. - -В результате мы получаем объект `coffeeMachine`, который включает в себя методы из `Machine` и `CoffeeMachine`. - -## Защищённые свойства - -В коде выше есть одна проблема. - -**Наследник не имеет доступа к приватным свойствам родителя.** - -Иначе говоря, если кофеварка захочет обратиться к `enabled`, то её ждёт разочарование: - -```js -//+ run -function Machine() { - var enabled = false; - - this.enable = function() { - enabled = true; - }; - - this.disable = function() { - enabled = false; - }; -} - -function CoffeeMachine(power) { - Machine.call(this); - - this.enable(); - -*!* - // ошибка, переменная не определена! - alert( enabled ); -*/!* -} - -var coffeeMachine = new CoffeeMachine(10000); -``` - -Это естественно, ведь `enabled` -- локальная переменная функции `Machine`. Она находится в другой области видимости. - -**Чтобы наследник имел доступ к свойству, оно должно быть записано в `this`.** - -При этом, чтобы обозначить, что свойство является внутренним, его имя начинают с подчёркивания `_`. - -```js -//+ run -function Machine() { -*!* - this._enabled = false; // вместо var enabled -*/!* - - this.enable = function() { - this._enabled = true; - }; - - this.disable = function() { - this._enabled = false; - }; -} - -function CoffeeMachine(power) { - Machine.call(this); - - this.enable(); - -*!* - alert( this._enabled ); // true -*/!* -} - -var coffeeMachine = new CoffeeMachine(10000); -``` - -Подчёркивание в начале свойства -- общепринятый знак, что свойство является внутренним, предназначенным лишь для доступа из самого объекта и его наследников. Такие свойства называют *защищёнными*. - -Технически, залезть в него из внешнего кода, конечно, возможно, но приличный программист так делать не будет. - -## Перенос свойства в защищённые - -У `CoffeeMachine` есть приватное свойство `power`. Сейчас мы его тоже сделаем защищённым и перенесём в `Machine`, поскольку "мощность" свойственна всем машинам, а не только кофеварке. - -```js -//+ run -function Machine(power) { -*!* - this._power = power; // (1) -*/!* - - this._enabled = false; - - this.enable = function() { - this._enabled = true; - }; - - this.disable = function() { - this._enabled = false; - }; -} - -function CoffeeMachine(power) { -*!* - Machine.apply(this, arguments); // (2) -*/!* - - alert( this._enabled ); // false - alert( this._power ); // 10000 -} - -var coffeeMachine = new CoffeeMachine(10000); -``` - -Теперь все машины `Machine` имеют мощность `power`. Обратим внимание, что мы из параметра конструктора сразу скопировали её в объект в строке `(1)`. Иначе она была бы недоступна из наследников. - -В строке `(2)` мы теперь вызываем не просто `Machine.call(this)`, а расширенный вариант: `Machine.apply(this, arguments)`, который вызывает `Machine` в текущем контексте вместе с передачей текущих аргументов. - -Можно было бы использовать и более простой вызов `Machine.call(this, power)`, но использование `apply` гарантирует передачу всех аргументов, вдруг их количество увеличится -- не надо будет переписывать. - -## Переопределение методов - -Итак, мы получили класс `CoffeeMachine`, который наследует от `Machine`. - -Аналогичным образом мы можем унаследовать от `Machine` холодильник `Fridge`, микроволновку `MicroOven` и другие классы, которые разделяют общий "машинный" функционал, то есть имеют мощность и их можно включать/выключать. - -Для этого достаточно вызвать `Machine` текущем контексте, а затем добавить свои методы. - -```js -// Fridge может добавить и свои аргументы, -// которые в Machine не будут использованы -function Fridge(power, temperature) { - Machine.apply(this, arguments); - - // ... -} -``` - -Бывает так, что реализация конкретного метода машины в наследнике имеет свои особенности. - -Можно, конечно, объявить в `CoffeeMachine` свой `enable`: - -```js -function CoffeeMachine(power, capacity) { - Machine.apply(this, arguments); - - // переопределить this.enable - this.enable = function() { - /* enable для кофеварки */ - }; -} -``` - -...Однако, как правило, мы хотим не заменить, а *расширить* метод родителя, добавить к нему что-то. Например, сделать так, чтобы при включении кофеварка тут же запускалась. - -Для этого метод родителя предварительно копируют в переменную, и затем вызывают внутри нового `enable` -- там, где считают нужным: - -```js -function CoffeeMachine(power) { - Machine.apply(this, arguments); - -*!* - var parentEnable = this.enable; // (1) - this.enable = function() { // (2) - parentEnable.call(this); // (3) - this.run(); // (4) - } -*/!* - - ... -} -``` - -**Общая схема переопределения метода (по строкам выделенного фрагмента кода):** - -
        -
      1. Копируем доставшийся от родителя метод `this.enable` в переменную, например `parentEnable`.
      2. -
      3. Заменяем `this.enable` на свою функцию...
      4. -
      5. ...Которая по-прежнему реализует старый функционал через вызов `parentEnable`.
      6. -
      7. ...И в дополнение к нему делает что-то своё, например запускает приготовление кофе.
      8. -
      - -Обратим внимание на строку `(3)`. - -В ней родительский метод вызывается так: `parentEnable.call(this)`. Если бы вызов был таким: `parentEnable()`, то ему бы не передался текущий `this` и возникла бы ошибка. - -Технически, можно сделать возможность вызывать его и как `parentEnable()`, но тогда надо гарантировать, что контекст будет правильным, например привязать его при помощи `bind` или при объявлении, в родителе, вообще не использовать `this`, а получать контекст через замыкание, вот так: - -```js -//+ run -function Machine(power) { - this._enabled = false; - -*!* - var self = this; -*/!* - - this.enable = function() { -*!* - // используем внешнюю переменную вместо this - self._enabled = true; -*/!* - }; - - this.disable = function() { - self._enabled = false; - }; - -} - -function CoffeeMachine(power) { - Machine.apply(this, arguments); - - var waterAmount = 0; - - this.setWaterAmount = function(amount) { - waterAmount = amount; - }; - -*!* - var parentEnable = this.enable; - this.enable = function() { - parentEnable(); // теперь можно вызывать как угодно, this не важен - this.run(); - } -*/!* - - function onReady() { - alert( 'Кофе готово!' ); - } - - this.run = function() { - setTimeout(onReady, 1000); - }; - -} - -var coffeeMachine = new CoffeeMachine(10000); -coffeeMachine.setWaterAmount(50); -coffeeMachine.enable(); -``` - -В коде выше родительский метод `parentEnable = this.enable` успешно продолжает работать даже при вызове без контекста. А всё потому, что использует `self` внутри. - -## Итого - -Организация наследования, которая описана в этой главе, называется "функциональным паттерном наследования". - -Её общая схема (кратко): - -
        -
      1. Объявляется конструктор родителя `Machine`. В нём могут быть приватные (private), публичные (public) и защищённые (protected) свойства: - -```js -function Machine(params) { - // локальные переменные и функции доступны только внутри Machine - var privateProperty; - - // публичные доступны снаружи - this.publicProperty = ...; - - // защищённые доступны внутри Machine и для потомков - // мы договариваемся не трогать их снаружи - this._protectedProperty = ... -} - -var machine = new Machine(...) -machine.public(); -``` - -
      2. -
      3. Для наследования конструктор потомка вызывает родителя в своём контексте через `apply`. После чего может добавить свои переменные и методы: - -```js -function CoffeeMachine(params) { - // универсальный вызов с передачей любых аргументов -*!* - Machine.apply(this, arguments); -*/!* - - this.coffeePublicProperty = ... -} - -var coffeeMachine = new CoffeeMachine(...); -coffeeMachine.publicProperty(); -coffeeMachine.coffeePublicProperty(); -``` - -
      4. -
      5. В `CoffeeMachine` свойства, полученные от родителя, можно перезаписать своими. Но обычно требуется не заменить, а расширить метод родителя. Для этого он предварительно копируется в переменную: - -```js -function CoffeeMachine(params) { - Machine.apply(this, arguments); - -*!* - var parentProtected = this._protectedProperty; - this._protectedProperty = function(args) { - parentProtected.apply(this, args); // (*) - // ... - }; -*/!* -} -``` - -Строку `(*)` можно упростить до `parentProtected(args)`, если метод родителя не использует `this`, а, например, привязан к `var self = this`: - -```js -function Machine(params) { - var self = this; - - this._protected = function() { - self.property = "value"; - }; -} -``` - -
      6. -
      - -Надо сказать, что способ наследования, описанный в этой главе, используется нечасто. - -В следующих главах мы будем изучать прототипный подход, который обладаем рядом преимуществ. - -Но знать и понимать его необходимо, поскольку во многих существующих библиотеках классы написаны в функциональном стиле, и расширять/наследовать от них можно только так. - - - - - diff --git a/1-js/8-oop/index.md b/1-js/8-oop/index.md deleted file mode 100644 index 292b2d77..00000000 --- a/1-js/8-oop/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# ООП в функциональном стиле - -Инкапсуляция и наследование в функциональном стиле, а также расширенные возможности объектов JavaScript. \ No newline at end of file diff --git a/1-js/9-prototypes/1-prototype/1-property-after-delete/solution.md b/1-js/9-prototypes/1-prototype/1-property-after-delete/solution.md deleted file mode 100644 index f6308c17..00000000 --- a/1-js/9-prototypes/1-prototype/1-property-after-delete/solution.md +++ /dev/null @@ -1,5 +0,0 @@ -
        -
      1. `true`, свойство взято из `rabbit`.
      2. -
      3. `null`, свойство взято из `animal`.
      4. -
      5. `undefined`, свойства больше нет.
      6. -
      \ No newline at end of file diff --git a/1-js/9-prototypes/1-prototype/1-property-after-delete/task.md b/1-js/9-prototypes/1-prototype/1-property-after-delete/task.md deleted file mode 100644 index 70b4e3ba..00000000 --- a/1-js/9-prototypes/1-prototype/1-property-after-delete/task.md +++ /dev/null @@ -1,28 +0,0 @@ -# Чему равно cвойство после delete? - -[importance 5] - -Какие значения будут выводиться в коде ниже? - -```js -var animal = { - jumps: null -}; -var rabbit = { - jumps: true -}; - -rabbit.__proto__ = animal; - -alert( rabbit.jumps ); // ? (1) - -delete rabbit.jumps; - -alert( rabbit.jumps ); // ? (2) - -delete animal.jumps; - -alert( rabbit.jumps ); // ? (3) -``` - -Итого три вопроса. \ No newline at end of file diff --git a/1-js/9-prototypes/1-prototype/2-proto-and-this/proto5.png b/1-js/9-prototypes/1-prototype/2-proto-and-this/proto5.png deleted file mode 100755 index 055a44476af85f4a0a99d796e9da49a5b60d58b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2059 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 ZMzjt#Ev&2S#Qp;S{OCak?s`Y_{sk|3TSfo? diff --git a/1-js/9-prototypes/1-prototype/2-proto-and-this/solution.md b/1-js/9-prototypes/1-prototype/2-proto-and-this/solution.md deleted file mode 100644 index 4206298f..00000000 --- a/1-js/9-prototypes/1-prototype/2-proto-and-this/solution.md +++ /dev/null @@ -1,18 +0,0 @@ -**Ответ: свойство будет записано в `rabbit`.** - -Если коротко -- то потому что `this` будет указывать на `rabbit`, а прототип при записи не используется. - -Если в деталях -- посмотрим как выполняется `rabbit.eat()`: -
        -
      1. Интерпретатор ищет `rabbit.eat`, чтобы его вызвать. Но свойство `eat` отсутствует в объекте `rabbit`, поэтому он идет по ссылке `rabbit.__proto__` и находит это свойство там. - -
      2. -
      3. Функция `eat` запускается. Контекст ставится равным объекту перед точкой, т.е. `this = rabbit`. - -Итак -- получается, что команда `this.full = true` устанавливает свойство `full` в самом объекте `rabbit`. Итог: - - -
      4. -
      - -Эта задача демонстрирует, что несмотря на то, в каком прототипе находится свойство, это никак не влияет на установку `this`, которая осуществляется по своим, независимым правилам. \ No newline at end of file diff --git a/1-js/9-prototypes/1-prototype/2-proto-and-this/task.md b/1-js/9-prototypes/1-prototype/2-proto-and-this/task.md deleted file mode 100644 index 346de8e1..00000000 --- a/1-js/9-prototypes/1-prototype/2-proto-and-this/task.md +++ /dev/null @@ -1,24 +0,0 @@ -# Прототип и this - -[importance 5] - -Сработает ли вызов `rabbit.eat()` ? - -Если да, то в какой именно объект он запишет свойство `full`: в `rabbit` или `animal`? - -```js -var animal = { - eat: function() { - this.full = true; - } -}; - -var rabbit = { - __proto__: animal -}; - -*!* -rabbit.eat(); -*/!* -``` - diff --git a/1-js/9-prototypes/1-prototype/3-search-algorithm/solution.md b/1-js/9-prototypes/1-prototype/3-search-algorithm/solution.md deleted file mode 100644 index 60ba9501..00000000 --- a/1-js/9-prototypes/1-prototype/3-search-algorithm/solution.md +++ /dev/null @@ -1,33 +0,0 @@ -
        -
      1. Расставим `__proto__`: - -```js -//+ run -var head = { - glasses: 1 -}; - -var table = { - pen: 3 -}; -table.__proto__ = head; - -var bed = { - sheet: 1, - pillow: 2 -}; -bed.__proto__ = table; - -var pockets = { - money: 2000 -}; -pockets.__proto__ = bed; - -alert( pockets.pen ); // 3 -alert( bed.glasses ); // 1 -alert( table.money ); // undefined -``` - -
      2. -
      3. **В современных браузерах, с точки зрения производительности, нет разницы, брать свойство из объекта или прототипа.** Они запоминают, где было найдено свойство и в следующий раз при запросе, к примеру, `pockets.glasses` начнут искать сразу в прототипе (`head`).
      4. -
      \ No newline at end of file diff --git a/1-js/9-prototypes/1-prototype/3-search-algorithm/task.md b/1-js/9-prototypes/1-prototype/3-search-algorithm/task.md deleted file mode 100644 index ab5f9f16..00000000 --- a/1-js/9-prototypes/1-prototype/3-search-algorithm/task.md +++ /dev/null @@ -1,32 +0,0 @@ -# Алгоритм для поиска - -[importance 5] - -Есть объекты: - -```js -var head = { - glasses: 1 -}; - -var table = { - pen: 3 -}; - -var bed = { - sheet: 1, - pillow: 2 -}; - -var pockets = { - money: 2000 -}; -``` - -Задание состоит из двух частей: -
        -
      1. Присвойте объектам ссылки `__proto__` так, чтобы любой поиск чего-либо шёл по алгоритму `pockets -> bed -> table -> head`. - -То есть `pockets.pen == 3`, `bed.glasses == 1`, но `table.money == undefined`.
      2. -
      3. После этого ответьте на вопрос, как быстрее искать `glasses`: обращением к `pockets.glasses` или `head.glasses`? Попробуйте протестировать.
      4. -
      diff --git a/1-js/9-prototypes/1-prototype/article.md b/1-js/9-prototypes/1-prototype/article.md deleted file mode 100644 index 3d83be6a..00000000 --- a/1-js/9-prototypes/1-prototype/article.md +++ /dev/null @@ -1,246 +0,0 @@ -# Прототип объекта - -Объекты в JavaScript можно организовать в цепочки так, чтобы свойство, не найденное в одном объекте, автоматически искалось бы в другом. - -Связующим звеном выступает специальное свойство `__proto__`. - -[cut] -## Прототип __proto__ - -Если один объект имеет специальную ссылку `__proto__` на другой объект, то при чтении свойства из него, если свойство отсутствует в самом объекте, оно ищется в объекте `__proto__`. - -Свойство `__proto__` доступно во всех браузерах, кроме IE10-, а в более старых IE оно, конечно же, тоже есть, но напрямую к нему не обратиться, требуются чуть более сложные способы, которые мы рассмотрим позднее. - -Пример кода (кроме IE10-): - -```js -//+ run -var animal = { - eats: true -}; -var rabbit = { - jumps: true -}; - -*!* -rabbit.__proto__ = animal; -*/!* - -// в rabbit можно найти оба свойства -alert( rabbit.jumps ); // true -alert( rabbit.eats ); // true -``` - -
        -
      1. Первый `alert` здесь работает очевидным образом -- он выводит свойство `jumps` объекта `rabbit`.
      2. -
      3. Второй `alert` хочет вывести `rabbit.eats`, ищет его в самом объекте `rabbit`, не находит -- и продолжает поиск в объекте `rabbit.__proto__`, то есть, в данном случае, в `animal`.
      4. -
      - -Иллюстрация происходящего при чтении `rabbit.eats` (поиск идет снизу вверх): - - - -**Объект, на который указывает ссылка `__proto__`, называется *"прототипом"*. В данном случае получилось, что `animal` является прототипом для `rabbit`.** - -**Также говорят, что объект `rabbit` *"прототипно наследует"* от `animal`.** - -Обратим внимание -- прототип используется исключительно при чтении. Запись значения, например, `rabbit.eats = value` или удаление `delete rabbit.eats` -- работает напрямую с объектом. - -В примере ниже мы записываем свойство в сам `rabbit`, после чего `alert` перестаёт брать его у прототипа, а берёт уже из самого объекта: - -```js -//+ run -var animal = { - eats: true -}; -var rabbit = { - jumps: true, - eats: false -}; - -rabbit.__proto__ = animal; - -*!* -alert( rabbit.eats ); // false, свойство взято из rabbit -*/!* -``` - -**Другими словами, прототип -- это "резервное хранилище свойств и методов" объекта, автоматически используемое при поиске.** - -У объекта, который является `__proto__`, может быть свой `__proto__`, у того -- свой, и так далее. При этом свойства будут искаться по цепочке. - -[smart header="Ссылка __proto__ в спецификации"] -Если вы будете читать спецификацию EcmaScript -- свойство `__proto__` обозначено в ней как `[[Prototype]]`. - -Двойные квадратные скобки здесь важны, чтобы не перепутать его с совсем другим свойством, которое называется `prototype`, и которое мы рассмотрим позже. -[/smart] - - -## Метод hasOwnProperty - -Обычный цикл `for..in` не делает различия между свойствами объекта и его прототипа. - -Он перебирает всё, например: - -```js -//+ run -var animal = { - eats: true -}; - -var rabbit = { - jumps: true, - __proto__: animal -}; - -*!* -for (var key in rabbit) { - alert( key + " = " + rabbit[key] ); // выводит и "eats" и "jumps" -} -*/!* -``` - -Иногда хочется посмотреть, что находится именно в самом объекте, а не в прототипе. - -**Вызов [obj.hasOwnProperty(prop)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/HasOwnProperty) возвращает `true`, если свойство `prop` принадлежит самому объекту `obj`, иначе `false`.** - -Например: - -```js -//+ run -var animal = { - eats: true -}; - -var rabbit = { - jumps: true, - __proto__: animal -}; - -*!* -alert( rabbit.hasOwnProperty('jumps') ); // true: jumps принадлежит rabbit - -alert( rabbit.hasOwnProperty('eats') ); // false: eats не принадлежит -*/!* -``` - -Для того, чтобы перебрать свойства самого объекта, достаточно профильтровать `key` через `hasOwnProperty`: - -```js -//+ run -var animal = { - eats: true -}; - -var rabbit = { - jumps: true, - __proto__: animal -}; - -for (var key in rabbit) { -*!* - if (!rabbit.hasOwnProperty(key)) continue; // пропустить "не свои" свойства -*/!* - alert( key + " = " + rabbit[key] ); // выводит только "jumps" -} -``` - -## Object.create(null) - -Зачастую объекты используют для хранения произвольных значений по ключу, как коллекцию: - -```js -var data = {}; -data.text = "Привет"; -data.age = 35; -// ... -``` - -При дальнейшем поиске в этой коллекции мы найдём не только `text` и `age`, но и встроенные функции: - -```js -//+ run -var data = {}; -alert(data.toString); // функция, хотя мы её туда не записывали -``` - -Это может быть неприятным сюрпризом и приводить к ошибкам, если названия свойств приходят от посетителя и могут быть произвольными. - -Чтобы этого избежать, мы можем исключать свойства, не принадлежащие самому объекту: -```js -//+ run -var data = {}; - -// выведет toString только если оно записано в сам объект -alert(data.hasOwnProperty('toString') ? data.toString : undefined); -``` - -Однако, есть путь и проще: -```js -//+ run -*!* -var data = Object.create(null); -*/!* -data.text = "Привет"; - -alert(data.text); // Привет -*!* -alert(data.toString); // undefined -*/!* -``` - -Объект, создаваемый при помощи `Object.create(null)` не имеет прототипа, а значит в нём нет лишних свойств. Для коллекции -- как раз то, что надо. - - -## Методы для работы с __proto__ - -В современных браузерах есть два дополнительных метода для работы с `__proto__`. Зачем они нужны, если есть `__proto__`? В общем-то, не очень нужны, но по историческим причинам тоже существуют. - -
      -
      Чтение: [Object.getPrototypeOf(obj)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/getPrototypeOf)
      -
      Возвращает `obj.__proto__` (кроме IE8-)
      -
      Запись: [Object.setPrototypeOf(obj, proto)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/setPrototypeOf)
      -
      Устанавливает `obj.__proto__ = proto` (кроме IE10-).
      -
      - -Кроме того, есть ещё один вспомогательный метод: -
      Создание объекта с прототипом: [Object.create(proto, descriptors)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/create)
      -
      Создаёт пустой объект с `__proto__`, равным первому аргументу (кроме IE8-), второй необязательный аргумент может содержать [дескрипторы свойств](/descriptors-getters-setters).
      -
    - - - -## Итого - - -
      -
    • В JavaScript есть встроенное "наследование" между объектами при помощи специального свойства `__proto__`.
    • -
    • При установке свойства `rabbit.__proto__ = animal` говорят, что объект `animal` будет "прототипом" `rabbit`.
    • -
    • При чтении свойства из объекта, если его в нём нет, оно ищется в `__proto__`. Прототип задействуется только при чтении свойства. Операции присвоения `obj.prop =` или удаления `delete obj.prop` совершаются всегда над самим объектом `obj`.
    • -
    - -Несколько прототипов одному объекту присвоить нельзя, но можно организовать объекты в цепочку, когда один объект ссылается на другой при помощи `__proto__`, тот ссылается на третий, и так далее. - -В современных браузерах есть методы для работы с прототипом: - -
      -
    • [Object.getPrototypeOf(obj)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/getPrototypeOf) (кроме IE8-)
    • -
    • [Object.setPrototypeOf(obj, proto)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/setPrototypeOf) (кроме IE10-)
    • -
    • [Object.create(proto, descriptors)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/create) (кроме IE8-)
    • -
    - -Возможно, вас смущает недостаточная поддержка `__proto__` в старых IE. Но это не страшно. В последующих главах мы рассмотрим дополнительные методы работы с `__proto__`, включая те, которые работают везде. - -Также мы рассмотрим, как свойство `__proto__` используется внутри самого языка JavaScript и как организовать классы с его помощью. - - - -[head] - -[/head] diff --git a/1-js/9-prototypes/1-prototype/proto-animal-rabbit.png b/1-js/9-prototypes/1-prototype/proto-animal-rabbit.png deleted file mode 100644 index 89b49b19222e4eea972c733ababbe840ee864de1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7966 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%0DcKwV;^ z;h^Tp3>aNBKc_yYh^Xn4LEEmoq}2bWR7H4FZ(Ctj@A+BRuTpXCDhd9TdQ$nll?Q*2 z2v}nj9|+Ot8_Hp&ngQ*f#B7%U=NRsQNK{=5?BnfCzrsa^hVr-)G$0eOQ}}O+93{pP)FpUsx?GO>pn19jF54}SR=j+6a*eM1GkSIF zE2h;f^5;>6BZ6vTw`z@kXk3M(!wTL8Qzy8D^{Z%-W;*_His`&H))sEboT9-q;v}Q| z^VWv7@818icJTROv5DFoN2p(u0}ph79BQcv29Om+qOAzCbsQ~ZFh8ge)oT{)_HO7i*wG4UR~X* zch!D&)ze*je?Qd`it-W&usE)_|n)A($+r|`KpIA|Dl;G0YM?)E$KtD`0DBGvE0 zKirqtn}V75_0DdQpgTw?~jX%fkYx(G<|QZAQW zizS!dfTO}IxRy6R{dLpw8A0ut20^p?HdL+%imOYIz2|j6o-hTdj^XWN@6Jx_q=2^_ z@_-iKz+!4Oans6m)!DF&v`!HNPx5>i?Obp|SNFQsG|OC+Jet3&#?|fbz^-`6inm@p zp#zRu1COY#zuK~OM9x+&?~vQj?|S2Ifb7?3~N55aPWp zZ)2Zp)wqSKM2axUR;+#A+znEbIbB`jk`}r7`bWGF#>@}f;^y9HJOSM6s3n63Ooic& zQoUH`!r0gVK?CROX&-ImY7qzpY_T2N)lZ9?&ri=KhUOZ&*Y6RRy!0~jU57RF80#OJ z3R5q2d}T*6v6u1<$4iAFgqL-T*D2Pi@V$;ahd&QFHk?s+0^70MK2C+-q&D|Tn$X^( zoNlKvh3~y_B|P|gni9cCEFC}tT1Ef#9W`_@XxV}g|%@S1^tJJc|Y*ZII~ zE~D~TWKW9>k*q&SQe&BmiJff`j1@SMZa_X&PO4OJ95)f%b9YU7lZ;{eT+mxf8;lGY z^!F9-9#LwD*Zj7Jdea(vBCQEn^JASwi;5_8j7Z6Faw| zyvOf2bW&V&_#`Ti;B>{eFHDF0g%qF3RJ%=Iv`U5W2pPf2JZ@WTx+vauzq+sytC++1 zVvtH|vp=qtIdL0YTv3bPh_oWlT}xf&4)KD>+oewr+(cBr>V`|m6n#yb@XXzf_cMoY zlG{!@*3}H_$Udx@YJ9vxF`3 z&a=s^K$j+NiZ&WGy4?-$FE|(nSfG=q<@MyFi`3t#GkN~!T|2?U?sL}fp}RLDEN&Oo z7cAmlYnd~_e27;w7*vh$>d3-MFV$gl&jz=pZoavnuDA)Fx3|H?MxyuQcxH$bSibMC zfpLCG(Vm7AoQn=s&xq>`$$Bv(c4K`PZ1J%_={QA7{p{Oz?VLZ;5#j(M>1 z?Q0rWv&IpxNT~Kc(Z!s!?$GN=W!cB9_#)9l!)RG@mr+HVO&6MoKl5(=6AOj=mwBA% z%+m@Y*$*wpZMtoY7Ji$B{jQwg!DqN~%}NiC5z9R+gJrD@_M_$4#+*I2y|`Cz2}T^O zL&`PT|J+gXzw+$pwgH>)Jl7}H%Qa@h`O-SQj6=28!sZ+(`X^9O4rWF5F2tewLj&IU zcJm|i^W7HuE!mFs?Oe$NP+a1sDn`)Q$O{9G_nquWx$!U)#BeyzFZza%A`@f`lvF%$i96~pKeEN&8>=VwEjHU6UKtmW z7?3T_Av|*W56lE*erz%)duIWLY9Ai*`Y#SriH3V@P^K)xFAoYNoCwj6Nk7Ajcso=M zmxeZMX3put2cpC#;Qd2hf5D;XBp20??wx-4wDZhOeb#+m_=tsd0Z%satgwNZngw_=bs^z z-epdYzmqgFBPUs1Jtux2Cq-X`!!KjG-$#U;#a+p&;X1V99CCT=|4t)V9QLYl=6=}d zZ;LIoZ~S4JRlc)^vB6{X5q-T-lJa53Nuu?hYm%st&}p6^#fWUN0P*52VN@)!a?2uWB2!?ZFL3kXgpKeQ zBWX4LoW8>mDy%RLf;nO2b2A2;I#kspB9X=up*`dG!su%4p?Ag3TFk3=)z9 zC6Oqdzj^!x1slwdN@LG`VQAL(pbYz6H_s$|pa!<>vD^{!UxCEv11sFA7RQyI^+CMEd%-8=Fk3t2pxUH*^z0 zQH|_2vTYM(1}rRKZcjRz>KCA*^W@%p-sJtMgMC!rt9UAr`4dblJS`ka;j!Z{ae^?^|>2J3z)}Df_-HPf45-Y3Lc+OGQg8Lzi88`;r zqA}h48pjpk>C@U^q6jxJ|7>WV6haqV`OXnEL^l~w?~Z5hyJc?_tUlaEzvb)`!$Yit zfu_1B*TtKY_==GUD?iK~@893`#9+4zd;ogq0`!`OkS|)Xb?Dk1qxKyHe3}yJ^|3l- z_m1rpk50K`O45<4W+yRpQfhbODwt; zNeI~uNC1cAFAWC!9bVd?h_mTDG!)jG0i8ZL%%cjg*w=&n@zlR#G&h#I=Z9)Wn0`}3 zO<$%dA#SMaj=>b4f%5@^QQ-@_NBGeQS691g}Qpi-;-uWBepJKhZ)F> zCx>#t(Ph5)$(iuX=-n9pTJu6cs4!fzq}>}RsA|)Z*QpbYd|LXbbPDqpYe72U^)jE2 z)TRAY0`L-yz6EB$=;-O^b-b{Q;)GYzH^>kWmMd__LqUUp5`jSc0zn1=69W0){(=%r zcDn%S^Bf)O2XGW^=zw^`nHk5G(z|PC$Ccq9oxpJ|+98D6n>QPRQo%ugQ-F*Q)r3Le zKtX6TfPQ}4+B^q>tswZqEBX#}-q`Jo0HPRQAB@eH@p2tqe21=~BVx}baQ)k0{0 zq)qGQ4*Rt4<%~p|K&)JlLDHpDKSl3mpvIcbU2Z}vJ2jF4- z3|6yAYKo0^Sr}~kqh0a)Uk+?gK+!fC2I|I0$U{>A`H;4PasdsIG8#6%-pTd8)@7Q3 zPBtn1==5Ee-$$l<$a4Ol-XSh~Ub(mO^uoVHjJp(tIaFg4$(G};bOSVWn6@3d_A*Q< zM-T@l`bt!CUJ)6v#%T%OTEYVZ4{Da$^H-DiSnsu1m=#hS;8hEV@2WH0}@qS}`DWx(Qp1aN2?{MZp zbrn1&xbU%h4>0G&Dzv6}DI%lcuuO#AV5s!&M>#a8dfeFCHVK>bpNzeTKTw%d8r#-nURu}qiO>5jp&;Lul34(RL@$UL;v zmxsf?DTGK8blFMe&u@I;9?H24`!t&_-EA=F(x2`{3TsX#A5`2vlksi{H)lX$SPSUz zM$tfNc=C%tnh9`S8}NSAk2mO>T738)2`1Vb9k7*}X@r#ae%_{`NJpHAi;U_f62JDU z5z0&^d+-P(Po zyfUYD@59)PLXbd^LQ9g>EI%%lE>8~UXv0^0Jn5GI6L1y8S=M&u-`h5%GlFoPDshjx zv0Mgo%{S%_yU}{o`?$$Dy-#gtEYzzdL6F6KhCZdRHMuYNYX91czo0t+Bb0Q+u!)R@ zq59)+BlG;7qNDZW$-i2&$M3R40uLi<|5`!*tQE9MP}94!33bl84z4M-vPbmL(_fM_|`cdeBSHH1mT^&L`^SXUZAW0I6)lu$3( zoJ=p;Tc^!-KRAR-FcpqaSxXKI(5o!**cw8t_BNL+fYCBX(WUA*&p2Log+p3Qs<1!H z+i`vOeNKodR`uQP3n#5W^AR6z#&TmffmL`v)F`+L8XSL5s)bbt5$tw@ zHRz#LCa9d@v1TZz`dVH&wXZ5#6ZoljwaEAMe$yhFt|U$8|8?^;n|!}cK(=YSd7)PX z=`zW|`?xW{*rv|IO=qTj7u;zlSg@FvX6JFeAkk8+SWTutkrRF9wGt06Km{=7&^%+Z zZZ>1v;iC9(J>TWhmOaRaN-W)E-Hk>CU%@PG$P)CwuJwr_|5bebVYT&8>tS{v7SiV` z0~S-MJ9+rUM9CUyRKu@PP$7f5Ec!ZLZS9(Y6^YGx966}i_56GA!BLdrHSKaAa%6H% zR)g!TJOTr5JELtqBYU25kcGp~u<-rfG%f~sgO(Y zz1Ht?eOK&wKQ(XnKU$Tu=Df&~zcVZQTG$E?HEGKXSuC|_nB3{~i!I2UuG?5lek+yZ z5?N3KohyAAVzmGC89Q%!{lS!zT2_ix8R~+BJRCe8crE~eqtX|MaaRQ*%i!qLuZ^>$#`rYOOARfpM98)y2G+sS7*m(==|k;TYq&c5oC)j5nsb;15+ zb)XyaVFJ;y1y@<_5w=9IOmW>zWofis2DRv-rrlRKk9PVp!OQJnSia}^H!A5!WA3h3 zSf2}Kt?8<+{@@9O7X7&7I(EXb2~y(dcjw{P>}k~tE5Hz9xqlcg8+`2>iiPT7VKQxq zWl+P7$w`laJgl|V3Kd_1F3oyF-|$~sYeBpOw@(~<%5ekGI`B@`Hq3T`)`0-Cq&-A4WVd93(U=IGdF-5S|6wMOTw{qXMYL^&VEPPR|Nx z)-(pE6_qP=jipY+-Mi3il}?T}rSM}ZjaCR5p|DBoKUm&&@aFdlpAo-mD9*gL^#uwysRp9tQ1-Qh$E713a!^|Jit zXmQ^Rtoe;}t=t5z+e|2+)eS>#dA=e+o5GYJOBZ!uKl8FAb$a6iz1{zT%-+0Ovi4Aa@H zG`8`&w?%aGA>q9V=?8W{s38O0ramHfE^-Ojibrx00phLbqA~&JqqX2KAIrM$d9qWq zRlA!ZkR|x9q$e-CgYns5wna29>-Y^uoQ{vIC-aR~`^%$i9@w_q_1=|Ljm0dCu>@_# zv)suE`eYZ2?TKM+sXy|SQe+N(DYd(JS<}7Kx{SmcD?Rop>nmTJm#2@<8f2wC%SulX zD5`iKM9CoOIdm+X9W2_M`?<NuHj#e3bh#a?Y?I)=) z>1i!dugCk9X1@FH7TwC9 zV`_Kat%pfMY({!yV7D4S6eDl1wAPr0GT`zqI1XQv`Tc;Xu`oqiAP4C3MLE~Nm59b> zKk?XIO8(RPbWKoHbrwZ)(CBH>SMD25#!5faZ?8qD|26(FnSML=@#e~FP}_dxcsVZE z=ee>3>gb%ec`d>S)VS&JL}jw z7R3mAexh-uOOMdWQ}DKOMcUob!3B`NXA8!~z|9JBE4vZPkWK-B*1+AC@8+ z$YkMX!~C@N>vhbfd$ozw8TLvL##DaGM2HW`$@BHPZNOXi7`d!g2(ZXuGP(~PPJo4` zm&#B5>2!|hci(?cxEvUhpc{G9@&^|%03RAr)!4ns z4kv}iw7+bXV0;q*16B zbbtCV@G4b>_@!Om-k+ZpG95M;-T=X+T6(=g*CdY7s-@_u9BTGrQO;a|5AV&Qj9Z~i zg%mS%n|wprcib#}&8IUft8Ax7XwieeFM-@&epY&-YWt#<#-^b+Ck$m-%c7U73eZcj zLJNEt^j1;&Wroe`EY!@^jmqE3RK2uKUS#Mijy8;jQzHj~rHIbg|O4Jn*JDH8?I)5pkp(fcc>EBm7 z?wI5$UP_jB$RsR;;|0Qgh8|wJm{VJg6#v z-%cGbS-}$-zf;mw7^gv3o1PB|M3=^}tGn-%2|m#FP8I;g>>^dRFVQ@Y)P)_7ALkqe zRHsZlgvP4wnb-AOvoxt1RH#O5R5uHfs&}&$cMu2geC4+p66Q+*v-mb*VA^WOMKw!C zG>ZfM%gGX<2-+6}%uW&{ISLmMmJJ5F84{QuYY$Kf6aM;z3rwN+LW98Mz`$w(fI03m zQ{*fZ(ce&D8r-&94$eIY4?y^UdJb?b+>sr-os^p%RM@NLR010?WZ2X||JE>OT_C>eV!ZzO29cQzVk5>$eN|dVcRYvk zF1ugI0PJr={5;y*-gjQ8Ns?aMAg@lQNzYL(Iqjtbnk|req>AH>@ zycj$H@?ZS`)UZQGNqL!sE^N@x-I}tw%oR8h^E@Ld*D1*ft0_^VJCU96dd{T4tKGC< z!fB+|Ana{{OOz}MW@*TaLnHYE4uO*foUh@-4V#jxWr6S1grqPY8d9-h>A(Do&9ZxqE4)rIC*+8Rvy7p(brA;JfrLe=Dt? zhOmQzuw&0v)Oe&wS=35I_>e8AfMerC7H1_F-6_fa0UG)F!^!WPZWedXMlZ_%!$XU! zLv1dYqNBEAMXI8v5A^H51vC^dNOLS0C(A0O!plv?7!)|cR>0~|iJ3UPILUDY%m;Zm zOl3u%Xz1uN8PuuJUo+r3Z^!nsOVwat)@c8Bxw+Ue%5xmTgj|jQ^suF1QP||W)YKE^ zdP>LWJReXK>_7%qjKt2TH3)cG>2QpK0!OU*%d2<_ zw7*3AFMEQ2_TZVFrnm84%U*En?U$TMEA4d9;GoRFj~n68FEX}Aq}lJtZevEmWp0W7 zn?jV6;mV_4@c2oR!{No>K8b0`N;~iINYJWcKo`|av?bs1Kg5xen3U@P9BBvSri+|{ z2jF08D8MVj$iPIcYy2vD_4?gLJYMd87~in;Z+*>&rT%#2ID*x)4`&JP2d<%N;6TlP z?ZLjpxe*_`PZ|EQ{JnJHltY1aAORNRU?gQ=mtU6K*WDnuxHlQl?RetRMTCi*F5Qn;}7Iwvqh_D@rdr#q13;Sr$4mZ4skzN`p^OtNQa)0vR zXF@bJz2DV<;74ZVS!pd)s+gP{-kJ3V1S+z5BTBr3tfO@(DDWF9j^Sad28K$rbg%~3 zBPj+vYeEhz_(D#GXcsBgx9`}tD|wd4_3O7MFG_>qdx!7yENl!#R}MS|;`hsh1Kc;U zgsN0WJW6WbTen|ag2H(B8vrrz$(1^Z3e8dyj?HuemumpL#%l;yR~Ps9&Ssg%EsPX?#78sMXSUoYI&^-4Z}OLA&KfK zn~E_`xAuvrq-@>wx-$c$3w%221puju_-?>>)Q4S4o>_-q=7J}BJ63J#KqjImB zHCaKSC`cD<&z$gjDhn-evTW=O=5hw{_S1VqLF+(6Z#WrCu=DTdQ+czd^nCC{Xa8jI zr9*m4z8r32ylqZ_5MUy1$epnG>dO*T|EM9ao7LSd#FoPJpvxz&HvMKXU#wFQYuuUw zi7L$u3~7l2K0qH7P?BV@mUD9etGtbMFq8eo=e_dL^Ufj~>SBF^wi8E5kpQ8Q24=}9 zct7_k4<|@caXyx3kIC=;Yz>O1a7Jo3U4&Xvz6kNhXvYl3THQOn% zx8wY931+`*hU}h1l$ig1w?}@)r#TCW72dc%cgEoLW$64&<}^#v#HcoeZY@)<{ZC_f zG^8$lqENDSZzdJy@vsh$i&yOMN6yHW^v5(qyHeh#g@3Yh*Bqw_eoT_y(Tg(`P)N1D zHqYW7O>f-$yXM_s}`Kn&>> z?o8LSNW@S4JE6>d(!jyfsa>eUdA!AfX-Hy+5sQWMTG+%V{LZjp-dcK#>ZKgszKi*v zyjFmL>k-kGsHn)ByxQ-3X@}`>1%3gkzq9u(UZ!g6$Z>2zYY4<B|bfL7KT|nSl|-gcd_d` zIpr}K&t??&xmi-~d^h3Xm%&tpu0W?+pl%`f5qrxv^w?lF=p3LFE(?7D7%mV^H0kDQ z4?g3ie#xn0MUzge`SXHV_6h z^fk-gwNi}wP^F)6QmSM2N*ZGh1D!1C8WruDP{Miq8JY`dXWEx~7Uy*;^_^tpxi4ww zZI?Ji`lPKKh0}K7tM8H(<6VzPAn^HyI4QV;v$%o3t{G4umG&NBhm?r#k}};bMK+X= zJJA~j{kdRFrCjaY?@w-=5|@gU$ZarS*$S~9E&XW^S0jwugroMPNk6|O3U+Zm zQdA;0GT`!(Z}i|632mgtVz@b!&u;YA#XK;MW1=hUQ0p7avGvLQq~qDBjV16DJ8RvX zlas9KC%s&jS#<@_tF%POoY%Tx>NPq81gw6+s;JwTXUjkHOmK>QhwqU4fqiCy4rcH< z%We7m_M7f({4^l4s{6-&D=f-Me2?+6M*RzQ40u|2FxI?2qMp))$kzN`{h7^@kiR+zrc-FQ@2T z%Q8lrpN|*`&9z|!W4<@Lhir>J3{+`H#z^ctWS~HRMnQk6dWcYWp4+P@hVgM(alh;D zS_H#%As0btjSN~U{|BHoEsd{vPDh6)=zx}83Sc9Ud(SE0ajh85S;folyXN{0!d&a?iv3(!BvAe^wT>_44ap$* zg~IO$)0qw}NB$Sv+qa2AGeR&6AraIY6_$-J48m2r!NME{h4S&_@$=>$fXzxz`$Z>I z3jbR)CrhIAwNV1|(Ov;i-E`jBSV&vm9sl6r(cW*mVNa2&*u0|A8~z@p6u2LKF8CpV zX)?1>nOv@lt9N*-;bj@{1)6KnSV~&_rWL4h84AZ<`R;cm*M*X!(d*H$A zM=-jn=Xo6qf9HcBts6PYDiAZa*lyFay}9J{xt6~f83|a7oA^2VT6S1IK?%7DMUC^3 ziA{J~=SV%0^ClWFiQyESCn9VJgMrZT?tEpzKd^_b#vk>|MkwDC+JWE@Qn~5!HIu?V zxMn*`*@8nXFpn3I+)S93qFCj}q?b4Bd2%n^GCqGGTu*1^bf8F#Y=H|*80I;K+kbeq zbCD0tJfD+u7Rzq!d_*(+W z85X;mOcTYj0<>>BEzfwDO}d2IS4Y5n*paEGKSxFgCltk$g4!ky07vxH5(z#56!Kit zGpgw??!|4@&?HJBtu~3Ae&`iflM!QKyM#uS-ukp2Ec*Gne`PeS!K#vxOln{NwgsHD z754+b4kZgywQ0c6QHKt-H7wBRIJHzsz3O`tf5s69^`w2cg1^y8&b?h=WI=N=KtG(~ z^M_1Lbg2!GpYiEO!%Ioi&=EZ1SZ{dr*(F5%utZR*as6G+9xbPH3jWnYQwujtMFnQVvMILQNNgG{Uq0hU&37v($|EZAL`?7KE0TCil zhOUHZo0>c-F^;2F~N@l8ePwN?}UWLNiM`BL{-Nn9F9d>+)s zfJ;cqU!s(LQq3F49nS&MAKiXq^u68w*Q8IHH$VnZ>W{4%!)E*b{t0sQ*=XClxe{A< z;{>z5t}aH5b6R~01OvZnl1MRpTu#Fdd6B6#m*{Yqz4sDwuwU8 zP&Z92#sd{=CfHjrj*8ciy=*1o_fL0-#9lXsII4+u90H=GlXcGunT_X%DX}dqtLKld z<_X0-|K?m{|4Gd8Kf}5+DULp~S?sy}>S%UQtp@2x7r2`0*&8J}vie*4 z+)|rl9}2C$ju|X>pr@qlNv;pEtG)L-2j9Z;bj6d#lLkyvQ;unCm=Egy1GN4`3POTz zwgW@7|1x;l+)4xEb_S9#%{N8(lUaFPTw;FAzE!MX*edGp)iZ>kvS8ctC1#M2)^s`KSI|^Q!nm}g znSCnvs8wJ6V2^{wd44YUen%TY-?pY(Vl;p>Xd|T1M{;c=zT2h zknjQG;kde0tO6{F-gV)f_up8 z!lgy|l`KoI>1Ew4p~rhhMUtXr!y+}DQK386^h5SHB6tXG6wm~x-S6CJl$*uHai6eT z0hH<&*pHiG%LI(t52sl6e7L_8sbId*?wWIx9hP*nuBZ&{PMzI287UZ86Zov?*dN$* zxwKdRO=F-qaCGozkjlqmKEe@$Yj!Z@*5|m)x|@^`HKLCc?6P&5M5=0%q$(PfHG>ay zLcw*G;!&dOzuW)TGg~aixb05!OGBQHhF5?D`B89mLm-tA@Zwx;+EY)HMNh^%?+sPn{xt3$2&x|9UaK+*F^oQr%NoRKq%6?*RVk1`U2=Ie79R)u)s|rWk|~U zphMXCA0TX#F}1Rcv#Zec~6xSavcC_w0(ScnpT z)P?@sZoTG3AAnWfOR-{Cz}CKv&^N3fR|rxmefh(9gjt zGzw%grz6ADEKSZ=IiFm}hk|b!CvZ0mt4$3L6MwQE&G(Bjyse~yvVA{i+z|a(YVQ(m zgbAib$)2o1#4K*12GZV!&8Dq2YOIN_TrQ2R=wu#YV>D4|DAULK4*e5Q1O|2nPi-7W z+V|%PPRe^28jmy(hbBLK&6A-gXl^T3`wGH2zj%)QO-J@REhq<60Ws4YmxOy*-Zq z&U<c+?+|#j&OhWC46KP81OFj24wUWc~-pj0Wf~Q z7lcYQ&q$-)-5UvRtmbI?zu$RMF4HZd9*Um;dQ zz_kv-NsDH$*sxSsybLlwF`PjG*=AR;t{*EtPCFj3g$5vi5PF~RfBk;@8T3t$Hv~^WW!S4MyZtWn z)FZKeh?i=#ZFX*yj^n7&;$yF^X2c7!78*KoRGKe|ljqoKQ#&If)lOJpMkcy7H>{-Jf>{Hbb-7BPr`%)YE5y*wbxoM;?J8WrjVb$Kd1~w zwle&?Kxj#;x>xLu`)1JT>HgT4R(a}ZRfBwWSm{R95@2ea&VSu4iG}S5IfhTae^N7b z-7ECHx|i1@=CKWbLf}9GqmBXg9@jEwVqSsu1ms5cN`ClKpPo_;mnD^*P2Gg5Y zhwfs#y9yb7bFBix&V*Q(VtNec4WcJSUoiO` z%AZ|{J89h<=9>^PznzyTVdE(H8M?RU`=uz!cSfYN}YYQCIMJ_b-~ zn1_W#=>UP)OaP(6a>v84Kts0p_OJ3D_#>DB1k@cU2o2#&d|QWr(Eg8l@DsTJPUsIl z(3StMuFD^6lvEy1b@wzb{ns2lSSlEuW=W+~%3}DyGixhOMEHgBZ(-PGK5V*z-PX|I zPWKLr1QBQEwbF;L85R|Fz}EX^pG@{rpE}*i#I&rkU=Du$3Kwdc)SVRP2RG21qiV}o z`R}x9v7U|nz$kC1fog{qZUOg|LcW$6gYwL@?pONL79;A@#5^6k5g>w5Q5d=_> zI1|dBOOcV%FO^lPb=E?fpt(644F_rs6kMYd2dj3ZG^1UGvsrYg84B^tTz_V$@ny~@ z6z$w%q2^=-40BwpN}}^VzPo;t^^;FXOnB2;4}&^&UiebiYjdFf-Vku~X>8xQM?KV% zs+)+%??R$%-dwK)E^cs&PEh`Pg|Six-|S$+Y%zbrvO+*h!x?kI?eSqkmmTTM5sGpfW1kw_HOa@TmBQQV=X} zu*Yo`Mw;uEC>cH_WL$(;7DE}6Yza3gw+CJ_MYrgtqWG053|CpalYCD z58WYGxW-`?7xw*Vz<5eE5h;OAM%eEjk+c(Q!#4hDS6I(K3sexg+YbmDD%gO>q!og3 zPUbtSiNSL~*^bv0?yavCL+>A-=QZA@lMa6Yd3XKiowhc;kIVHfR>?Kc4>NpEo8fYm z!MykT&W3-8@}$=@J>K??6A3f3DP9ESN<&hb6QL*D)3g2dN57TIAIA}-OQGNVpI7eS z9Z(h#(QQ|=KjJ82uGL%~H(Gip9a_;YcdCWaju^IPDaU&Q51f1EQF|@FHe$h(a_(WA z+IDII+gNeDh!y~!ZnUrvj@k5+8eBcMFAMHuKO++9}jEuT2CBGd9ZT+AN!1? zq7z!<_{7*9Uyn0AZ1`^i9uv!g`xb~*Z>&a3-LQmOFa2hMbH6CBJ$gB@SxH#AK5OJi zjfJK0?jtsUNH9s3=R4&W{nu~fOxEnLOY#a(i}}qET%*E3-B^r-UsZ-MZK|ILI$~2L z4Y^J+P01cx3iEn3Z{(;f_YL}c2IM8WQ~tfOC6wU6Lw1rlb%d}V%Eg*CYjXuVZZY{G z5$DtV9d0jPSdl}S3Q=x#Ue0D_Fd7lY>)UZWc2)8XvyoMfQ->L{t@)ba`6&1w`xY}+ zjcnGahw|&M169ts)zzBSQ>>PsFsp4><^h}$EyqL7Si>#d23N!_z6vHDe)}GJ{}Ux! zO#445*;sDkMNNq8k@A4^TVWNf+SPo{tQ;5csPshEM%Sw4DKhOpHub8!O%>GLrQ%RS zvT_8=-AwmsQxVV5jk;8s9A5#h-WtAKMXSLFp?kuDcXBSd_%L@bD{a?pFM1-7Bl`4H zvdUj=yCbK|2BSvF&Bt{oP-RWe1%q4EXqH@EJ6jSITg+F@ztiB)8CmC3QY2xU z7|LNE0~*hG7*e#-Je%?MDt%N_&>OhA{rp(uCpb=AFssQ*MimojzWk9K}v(uY+r(zF}Cs7*hTPp z9Pi=zzGZ@>sU(RSi9+5_nJ|43cHcMmPNhqb(T;+I0V7mP{%96$R=W#&EXy`xy%hU& zZX&YH@5rcD@G)nFCDocUAacBXe#>l$c5e_68I`uYc6db>6`n?GomFp!xKYBpA$IN7 z`r_e<4Fxo!Yir~PEKx7sD>KY4)CViJR^z@4)sZ1LO5a4Y_ON=RvFckVT(omD^{F5% z+1d~k@};iqSEfo0pjIjnFg83V`Mtqk*^^{7JDJ9}Gj*Wc>4eIwF_+3`@f8^LurP{U zn5e>@du#p}-xCiq{+0W7N8$smX!}M^IYHyymo~c`qw}`u?7vBEBw2gD^jv$)>LuId zC|@OlYS2}szJQ>&a;G=3F;cqSB+j?*X)+dt`!RT~RxGa9`C@udvi)7?Y$;jeZ$#FN z+`7=6(s+dKwtA2n%zs$d6aZP2s0dUTI=-;(k#lSLX#gdp9CPz@m8cJ$FvU>e53LzTy`m zr^WZpVdB~G6u7n3YM+c4$grJ-anz^pKwPpcRNtHK7F&^+z14|8axC1OmW9pns_Lzd z(O@slSm!(muN_;eVdFOJWx$w%d`IA;$K*B^Cc>US&04PX?yc{#1zt`h}QlC)I?<^PE1$}OI zCCHcS59jri<~zRi0H;jG7MiD+4U&~%>ZXLM=5{jsV(iofOPyr>Cr3&-|^2k9w{}vhUmNz5+RauQ2XhVHmd-Mb3?Un~kZkG~R*LHhf`PGw^6+ESvm9e_KVmM1 zrmP_ZN7S~%r8hcjjbmf0iaGzopA!E34}S{5`y+;l;*omZHYEx@uPEOgwM<4OZ-NBV zZzE(T0az|X`1FB|v7$?RcjEnu&15$x7hIKxO!DGIB6QAgg)}1BsTGNLWd%M~?CgjyP0VqXUMO7G+v>TqH2Q1{MQ+w%w&&;t ze+fQjW)1X@F+2VnHo8vW?2u|-&(w<5f|OuVdZ6z+UF)se zd8gp8?dmGDxk>rVYsbFQ`z?X_qe;n#$KaQMy}{u6(lAPq-DR#5%WW8FT5YOJMeRXf zQdtg9Vuu%qAVulKoqZbrr)XNAJH=zfsq2tPC}GMx<^??Yu&2LvGnp% z;z)b+`~4XI=m}yo0p1Vs;&Fw z@GCgK-!Nf;fKzfFgNS3Xhps88h^$JP+53CZ3B=PY=|)&mTzsCFra$=h2-u;pCtKl$ z%>+r)|FdNwUi%fEESR=>_MQF5ZD&dHANd>dGQ5q~q^Gk!`7-zExLDu*imv{nx0l}t zx)^3+C!5W@@=M5#ZAy_(7CQZj?6%q))$rBqi^R8tM|+;04lDmMHT+g_=n5uYudrvA zIL?|gK7Vih?qlrd_;S0HXC{~aaNf=9bkeb#VYY0d-wUqN8#bTHlzTpl>;AF2bkt8= z|IjZfneF!lCsnU#S=!r@8vC;7d6r9}>8yLb0jO*ot%mBznLv207iU&T0 z8!rAi`qF;&zL?E#6@wfD&Ky43f8@T}n%UantDMb0t$WO#yW|J=o7Av}%0EH^L#E|6 zNF=lU$~pPzrVI1L%X|FyetO>F#KE%Ca2cf#|IoIO5a?z&A}%^@!p&817{uzbI-6dV%t z(>#9Sh5I#~+YV`{?g@$8r{)^_`p})NKaP7ZH}KQ;oJ>>NNY9 zz59|a71#DuEw+r=))sQM-Y55k>sDr0_BIK$ok`x7S6tZ?dQP+uvAmS-r4z>zCQRZf#PtEhl>hZr>W9 ztIcSraN!guaP9Wa)LW~UHzfz_&9kpJ{Ni@7v_95#=W>^YM!#6g&-BX~{P9|HxH|i8 z`<5%lQ(l`_R0LV(P0})0)*`1-JYUSoyP@H?FmR7ZQ%YRN9+A$PJMyhNTK{ESxpMqX z{xo6rM&O>(#wfvp?V_G*rFfk{%VzC?Q;+ZL-7YvOTu=fH0!%#2*2~89&L6mJ_IJPF z76Fbe9>7k0)RPU4iyMJv1DDPIOJ>n!VbYxhoTwDD%(;-E@ZcY?Q@`WCgd=yOLpNxZ zrz@Ydi4@63ulN$O1-Sb4?tX5dW5A;ZX9x}^{F6VgAlxT0;d%oD5O})!xvX -
  • Первый вызов работает везде.
  • -
  • Второй вызов работает везде.
  • -
  • Третий вызов не будет работать в IE8-, там нет метода `getPrototypeOf`
  • -
  • Четвёртый вызов -- самый "несовместимый", он не будет работать в IE10-, ввиду отсутствия свойства `__proto__`.
  • - \ No newline at end of file diff --git a/1-js/9-prototypes/2-new-prototype/3-compare-calls/task.md b/1-js/9-prototypes/2-new-prototype/3-compare-calls/task.md deleted file mode 100644 index b3773dfa..00000000 --- a/1-js/9-prototypes/2-new-prototype/3-compare-calls/task.md +++ /dev/null @@ -1,27 +0,0 @@ -# Есть ли разница между вызовами? - -[importance 5] - -Создадим новый объект, вот такой: - -```js -function Rabbit(name) { - this.name = name; -} -Rabbit.prototype.sayHi = function() { - alert( this.name ); -} - -var rabbit = new Rabbit("Rabbit"); -``` - -Одинаково ли сработают эти вызовы? - -```js -rabbit.sayHi(); -Rabbit.prototype.sayHi(); -Object.getPrototypeOf(rabbit).sayHi(); -rabbit.__proto__.sayHi(); -``` - -Все ли они являются кросс-браузерными? Если нет -- в каких браузерах сработает каждый? \ No newline at end of file diff --git a/1-js/9-prototypes/2-new-prototype/4-new-object-same-constructor/solution.md b/1-js/9-prototypes/2-new-prototype/4-new-object-same-constructor/solution.md deleted file mode 100644 index eae8b524..00000000 --- a/1-js/9-prototypes/2-new-prototype/4-new-object-same-constructor/solution.md +++ /dev/null @@ -1,34 +0,0 @@ -Да, можем, но только если уверены, что кто-то позаботился о том, чтобы значение `constructor` было верным. - -В частности, без вмешательства в прототип код точно работает, например: - -```js -//+ run -function User(name) { - this.name = name; -} - -var obj = new User('Вася'); -var obj2 = new obj.constructor('Петя'); - -alert( obj2.name ); // Петя (сработало) -``` - -Сработало, так как `User.prototype.constructor == User`. - -Но если кто-то, к примеру, перезапишет `User.prototype` и забудет указать `constructor`, то такой фокус не пройдёт, например: - -```js -//+ run -function User(name) { - this.name = name; - } -*!* -User.prototype = {}; -*/!* - -var obj = new User('Вася'); -var obj2 = new obj.constructor('Петя'); - -alert( obj2.name ); // undefined -``` \ No newline at end of file diff --git a/1-js/9-prototypes/2-new-prototype/4-new-object-same-constructor/task.md b/1-js/9-prototypes/2-new-prototype/4-new-object-same-constructor/task.md deleted file mode 100644 index 99cb4e90..00000000 --- a/1-js/9-prototypes/2-new-prototype/4-new-object-same-constructor/task.md +++ /dev/null @@ -1,13 +0,0 @@ -# Создать объект тем же конструктором - -[importance 5] - -Пусть у нас есть произвольный объект `obj`, созданный каким-то конструктором, каким -- мы не знаем, но хотели бы создать новый объект с его помощью. - -Сможем ли мы сделать так? - -```js -var obj2 = new obj.constructor(); -``` - -Приведите пример конструкторов для `obj`, при которых такой код будет работать верно -- и неверно. diff --git a/1-js/9-prototypes/2-new-prototype/article.md b/1-js/9-prototypes/2-new-prototype/article.md deleted file mode 100644 index 70120f02..00000000 --- a/1-js/9-prototypes/2-new-prototype/article.md +++ /dev/null @@ -1,229 +0,0 @@ -# Свойство F.prototype и создание объектов через new - -До этого момента мы говорили о наследовании объектов, объявленных через `{...}`. - -Но в реальных проектах объекты обычно создаются функцией-конструктором через `new`. Посмотрим, как указать прототип в этом случае. -[cut] - -## Свойство F.prototype - -Самым очевидным решением является назначение `__proto__` в конструкторе. - -Например, если я хочу, чтобы у всех объектов, которые создаются `new Rabbit`, был прототип `animal`, я могу сделать так: - -```js -//+ run -var animal = { - eats: true -}; - -function Rabbit(name) { - this.name = name; -*!* - this.__proto__ = animal; -*/!* -} - -var rabbit = new Rabbit("Кроль"); - -alert( rabbit.eats ); // true, из прототипа -``` - -Недостаток этого подхода -- он не работает в IE10-. - -К счастью, в JavaScript с древнейших времён существует альтернативный, встроенный в язык и полностью кросс-браузерный способ. - -**Чтобы новым объектам автоматически ставить прототип, конструктору ставится свойство `prototype`.** - -**При создании объекта через `new`, в его прототип `__proto__` записывается ссылка из `prototype` функции-конструктора.** - -Например, код ниже полностью аналогичен предыдущему, но работает всегда и везде: - -```js -//+ run -var animal = { - eats: true -}; - -function Rabbit(name) { - this.name = name; -} - -*!* -Rabbit.prototype = animal; -*/!* - -var rabbit = new Rabbit("Кроль"); // rabbit.__proto__ == animal - -alert( rabbit.eats ); // true -``` - -Установка `Rabbit.prototype = animal` буквально говорит интерпретатору следующее: *"При создании объекта через `new Rabbit` запиши ему `__proto__ = animal`".* - -[smart header="Свойство `prototype` имеет смысл только у конструктора"] -Свойство с именем `prototype` можно указать на любом объекте, но особый смысл оно имеет, лишь если назначено функции-конструктору. - -Само по себе, без вызова оператора `new`, оно вообще ничего не делает, его единственное назначение -- указывать `__proto__` для новых объектов. -[/smart] - - - -[warn header="Значением `prototype` может быть только объект"] -Технически, в это свойство можно записать что угодно. - -Однако, при работе `new`, свойство `prototype` будет использовано лишь в том случае, если это объект. Примитивное значение, такое как число или строка, будет проигнорировано. -[/warn] - -## Свойство constructor - -У каждой функции по умолчанию уже есть свойство `prototype`. - -Оно содержит объект такого вида: - -```js -function Rabbit() {} - -Rabbit.prototype = { - constructor: Rabbit -}; -``` - -В коде выше я создал `Rabbit.prototype` вручную, но ровно такой же -- генерируется автоматически. - -Проверим: - -```js -//+ run -function Rabbit() {} - -// в Rabbit.prototype есть одно свойство: constructor -alert( Object.getOwnPropertyNames(Rabbit.prototype) ); // constructor - -// оно равно Rabbit -alert( Rabbit.prototype.constructor == Rabbit ); // true -``` - -Можно его использовать для создания объекта с тем же конструктором, что и данный: - -```js -//+ run -function Rabbit(name) { - this.name = name; - alert( name ); -} - -var rabbit = new Rabbit("Кроль"); - -var rabbit2 = new rabbit.constructor("Крольчиха"); -``` - -Эта возможность бывает полезна, когда, получив объект, мы не знаем в точности, какой у него был конструктор (например, сделан вне нашего кода), а нужно создать такой же. - -[warn header="Свойство `constructor` легко потерять"] -JavaScript никак не использует свойство `constructor`. То есть, оно создаётся автоматически, а что с ним происходит дальше -- это уже наша забота. В стандарте прописано только его создание. - -В частности, при перезаписи `Rabbit.prototype = { jumps: true }` свойства `constructor` больше не будет. - -Сам интерпретатор JavaScript его в служебных целях не требует, поэтому в работе объектов ничего не "сломается". Но если мы хотим, чтобы возможность получить конструктор, всё же, была, то можно при перезаписи гарантировать наличие `constructor` вручную: -```js -Rabbit.prototype = { - jumps: true, -*!* - constructor: Rabbit -*/!* -}; -``` - -Либо можно поступить аккуратно и добавить свойства к встроенному `prototype` без его замены: -```js -// сохранится встроенный constructor -Rabbit.prototype.jumps = true -``` -[/warn] - - -## Эмуляция Object.create для IE8- [#inherit] - -Как мы только что видели, с конструкторами всё просто, назначить прототип можно кросс-браузерно при помощи `F.prototype`. - -Теперь небольшое "лирическое отступление" в область совместимости. - -Прямые методы работы с прототипом осутствуют в старых IE, но один из них -- `Object.create(proto)` можно эмулировать, как раз при помощи `prototype`. И он будет работать везде, даже в самых устаревших браузерах. - -Кросс-браузерный аналог -- назовём его `inherit`, состоит буквально из нескольких строк: - -```js -function inherit(proto) { - function F() {} - F.prototype = proto; - var object = new F; - return object; -} -``` - -Результат вызова `inherit(animal)` идентичен `Object.create(animal)`. Она создаёт новый пустой объект с прототипом `animal`. - -Например: - -```js -//+ run -var animal = { - eats: true -}; - -var rabbit = inherit(animal); - -alert( rabbit.eats ); // true -``` - -Посмотрите внимательно на функцию `inherit` и вы, наверняка, сами поймёте, как она работает... - -Если где-то неясности, то её построчное описание: - -```js -//+ no-beautify -function inherit(proto) { - function F() {} // (1) - F.prototype = proto // (2) - var object = new F; // (3) - return object; // (4) -} -``` - -
      -
    1. Создана новая функция `F`. Она ничего не делает с `this`, так что если вызвать `new F`, то получим пустой объект.
    2. -
    3. Свойство `F.prototype` устанавливается в будущий прототип `proto`
    4. -
    5. Результатом вызова `new F` будет пустой объект с `__proto__` равным значению `F.prototype`.
    6. -
    7. Мы получили пустой объект с заданным прототипом, как и хотели. Возвратим его.
    8. -
    - -Для унификации можно запустить такой код, и метод `Object.create` станет кросс-браузерным: - -```js -if (!Object.create) Object.create = inherit; /* определение inherit - выше */ -``` - -В частности, аналогичным образом работает библиотека [es5-shim](https://github.com/es-shims/es5-shim), при подключении которой `Object.create` станет доступен для всех браузеров. - - -## Итого - -Для произвольной функции -- назовём её `Constructor`, верно следующее: - -
      -
    • Прототип `__proto__` новых объектов, создаваемых через `new Constructor`, можно задавать при помощи свойства `Constructor.prototype`.
    • -
    • Значением `Constructor.prototype` по умолчанию является объект с единственным свойством `constructor`, содержащим ссылку на `Constructor`. Его можно использовать, чтобы из самого объекта получить функцию, которая его создала. Однако, JavaScript никак не поддерживает корректность этого свойства, поэтому программист может его изменить или удалить.
    • -
    • Современный метод `Object.create(proto)` можно эмулировать при помощи `prototype`, если хочется, чтобы он работал в IE8-.
    • -
    - - - -[head] - -[/head] \ No newline at end of file diff --git a/1-js/9-prototypes/3-native-prototypes/1-defer-to-prototype/solution.md b/1-js/9-prototypes/3-native-prototypes/1-defer-to-prototype/solution.md deleted file mode 100644 index 46d09410..00000000 --- a/1-js/9-prototypes/3-native-prototypes/1-defer-to-prototype/solution.md +++ /dev/null @@ -1,15 +0,0 @@ - - -```js -//+ run -Function.prototype.defer = function(ms) { - setTimeout(this, ms); -} - -function f() { - alert( "привет" ); -} - -f.defer(1000); // выведет "привет" через 1 секунду -``` - diff --git a/1-js/9-prototypes/3-native-prototypes/1-defer-to-prototype/task.md b/1-js/9-prototypes/3-native-prototypes/1-defer-to-prototype/task.md deleted file mode 100644 index 000adcc5..00000000 --- a/1-js/9-prototypes/3-native-prototypes/1-defer-to-prototype/task.md +++ /dev/null @@ -1,16 +0,0 @@ -# Добавить функциям defer - -[importance 5] - -Добавьте всем функциям в прототип метод `defer(ms)`, который откладывает вызов функции на `ms` миллисекунд. - -После этого должен работать такой код: - -```js -function f() { - alert( "привет" ); -} - -f.defer(1000); // выведет "привет" через 1 секунду -``` - diff --git a/1-js/9-prototypes/3-native-prototypes/2-defer-to-prototype-extended/solution.md b/1-js/9-prototypes/3-native-prototypes/2-defer-to-prototype-extended/solution.md deleted file mode 100644 index 6c421265..00000000 --- a/1-js/9-prototypes/3-native-prototypes/2-defer-to-prototype-extended/solution.md +++ /dev/null @@ -1,23 +0,0 @@ - - -```js -//+ run -Function.prototype.defer = function(ms) { - var f = this; - return function() { - var args = arguments, - context = this; - setTimeout(function() { - f.apply(context, args); - }, ms); - } -} - -// проверка -function f(a, b) { - alert( a + b ); -} - -f.defer(1000)(1, 2); // выведет 3 через 1 секунду. -``` - diff --git a/1-js/9-prototypes/3-native-prototypes/2-defer-to-prototype-extended/task.md b/1-js/9-prototypes/3-native-prototypes/2-defer-to-prototype-extended/task.md deleted file mode 100644 index ddb3d4ba..00000000 --- a/1-js/9-prototypes/3-native-prototypes/2-defer-to-prototype-extended/task.md +++ /dev/null @@ -1,19 +0,0 @@ -# Добавить функциям defer с аргументами - -[importance 4] - -Добавьте всем функциям в прототип метод defer(ms), который возвращает обёртку, откладывающую вызов функции на ms миллисекунд. - -Например, должно работать так: - -```js -function f(a, b) { - alert( a + b ); -} - -f.defer(1000)(1, 2); // выведет 3 через 1 секунду. -``` - -То есть, должны корректно передаваться аргументы. - - diff --git a/1-js/9-prototypes/3-native-prototypes/article.md b/1-js/9-prototypes/3-native-prototypes/article.md deleted file mode 100644 index 1c8ce795..00000000 --- a/1-js/9-prototypes/3-native-prototypes/article.md +++ /dev/null @@ -1,328 +0,0 @@ -# Встроенные "классы" в JavaScript - -В JavaScript есть встроенные объекты: `Date`, `Array`, `Object` и другие. Они используют прототипы и демонстрируют организацию "псевдоклассов" на JavaScript, которую мы вполне можем применить и для себя. - -[cut] - -## Откуда методы у {} ? - -Начнём мы с того, что создадим пустой объект и выведем его. - -```js -//+ run -var obj = {}; -alert( obj ); // "[object Object]" ? -``` - -Где код, который генерирует строковое представление для `alert(obj)`? Объект-то ведь пустой. - -## Object.prototype - -...Конечно же, это сделал метод `toString`, который находится... Конечно, не в самом объекте (он пуст), а в его прототипе `obj.__proto__`, можно его даже вывести: - -```js -//+ run -alert( {}.__proto__.toString ); // function toString -``` - -Откуда новый объект `obj` получает такой `__proto__`? - -
      -
    1. Запись `obj = {}` является краткой формой `obj = new Object`, где `Object` -- встроенная функция-конструктор для объектов.
    2. -
    3. При выполнении `new Object`, создаваемому объекту ставится `__proto__` по `prototype` конструктора, который в данном случае равен встроенному `Object.prototype`.
    4. -
    5. В дальнейшем при обращении к `obj.toString()` -- функция будет взята из `Object.prototype`.
    6. -
    - - - -Это можно легко проверить: - -```js -//+ run -var obj = {}; - -// метод берётся из прототипа? -alert( obj.toString == Object.prototype.toString ); // true, да - -// проверим, правда ли что __proto__ это Object.prototype? -alert( obj.__proto__ == Object.prototype ); // true - -// А есть ли __proto__ у Object.prototype? -alert( obj.__proto__.__proto__ ); // null, нет -``` - -## Встроенные "классы" в JavaScript - -Точно такой же подход используется в массивах `Array`, функциях `Function` и других объектах. Встроенные методы для них находятся в `Array.prototype`, `Function.prototype` и т.п. - - - -Например, когда мы создаём массив, `[1, 2, 3]`, то это альтернативный вариант синтаксиса `new Array`, так что у массивов есть стандартный прототип `Array.prototype`. - -Но в нём есть методы лишь для массивов, а для общих методов всех объектов есть ссылка `Array.prototype.__proto__`, равная `Object.prototype`. - -Аналогично, для функций. - -Лишь для чисел (как и других примитивов) всё немного иначе, но об этом чуть далее. - -Объект `Object.prototype` -- вершина иерархии, единственный, у которого `__proto__` равно `null`. - -**Поэтому говорят, что "все объекты наследуют от `Object`", а если более точно, то от `Object.prototype`.** - -"Псевдоклассом" или, более коротко, "классом", называют функцию-конструктор вместе с её `prototype`. Такой способ объявления классов называют "прототипным стилем ООП". - -При наследовании часть методов переопределяется, например, у массива `Array` есть свой `toString`, который выводит элементы массива через запятую: - -```js -//+ run -var arr = [1, 2, 3] -alert( arr ); // 1,2,3 <-- результат Array.prototype.toString -``` - -Как мы видели раньше, у `Object.prototype` есть свой `toString`, но так как в `Array.prototype` он ищется первым, то берётся именно вариант для массивов: - - - - -[smart header="Вызов методов через `apply` из прототипа"] - -Ранее мы говорили о применении методов массивов к "псевдомассивам", например, можно использовать `[].join` для `arguments`: - -```js -//+ run -function showList() { -*!* - alert( [].join.call(arguments, " - ") ); -*/!* -} - -showList("Вася", "Паша", "Маша"); // Вася - Паша - Маша -``` - -Так как метод `join` находится в `Array.prototype`, то можно вызвать его оттуда напрямую, вот так: - -```js -//+ run -function showList() { -*!* - alert( Array.prototype.join.call(arguments, " - ") ); -*/!* -} - -showList("Вася", "Паша", "Маша"); // Вася - Паша - Маша -``` - -Это эффективнее, потому что не создаётся лишний объект массива `[]`, хотя, с другой стороны -- больше букв писать. -[/smart] - -## Примитивы - -Примитивы не являются объектами, но методы берут из соответствующих прототипов: `Number.prototype`, `Boolean.prototype`, `String.prototype`. - -По стандарту, если обратиться к свойству числа, строки или логического значения, то будет создан объект соответствующего типа, например `new String` для строки, `new Number` для чисел, `new Boolean` -- для логических выражений. - -Далее будет произведена операция со свойством или вызов метода по обычным правилам, с поиском в прототипе, а затем этот объект будет уничтожен. - -Именно так работает код ниже: - -```js -//+ run -var user = "Вася"; // создали строку (примитив) - -*!* -alert( user.toUpperCase() ); // ВАСЯ -// был создан временный объект new String -// вызван метод -// new String уничтожен, результат возвращён -*/!* -``` - -Можно даже попробовать записать в этот временный объект свойство: - -```js -//+ run -// попытаемся записать свойство в строку: -var user = "Вася"; -user.age = 30; - -*!* -alert( user.age ); // undefined -*/!* -``` - -Свойство `age` было записано во временный объект, который был тут же уничтожен, так что смысла в такой записи немного. - -[warn header="Конструкторы `String/Number/Boolean` -- только для внутреннего использования"] -Технически, можно создавать объекты для примитивов и вручную, например `new Number`. Но в ряде случаев получится откровенно бредовое поведение. Например: - -```js -//+ run -alert( typeof 1 ); // "number" - -alert( typeof new Number(1) ); // "object" ?!? -``` - -Или, ещё страннее: - -```js -//+ run -var zero = new Number(0); - -if (zero) { // объект - true, так что alert выполнится - alert( "число ноль -- true?!?" ); -} -``` - -Поэтому в явном виде `new String`, `new Number` и `new Boolean` никогда не вызываются. -[/warn] - -[warn header="Значения `null` и `undefined` не имеют свойств"] -Значения `null` и `undefined` стоят особняком. Вышесказанное к ним не относится. - -Для них нет соответствующих классов, в них нельзя записать свойство (будет ошибка), в общем, на конкурсе "самое примитивное значение" они точно разделили бы первое место. -[/warn] - - -## Изменение встроенных прототипов [#native-prototype-change] - -Встроенные прототипы можно изменять. В том числе -- добавлять свои методы. - -Мы можем написать метод для многократного повторения строки, и он тут же станет доступным для всех строк: - -```js -//+ run -String.prototype.repeat = function(times) { - return new Array(times + 1).join(this); -}; - -alert( "ля".repeat(3) ); // ляляля -``` - -Аналогично мы могли бы создать метод `Object.prototype.each(func)`, который будет применять `func` к каждому свойству: - -```js -//+ run -Object.prototype.each = function(f) { - for (var prop in this) { - var value = this[prop]; - f.call(value, prop, value); // вызовет f(prop, value), this=value - } -} - -// Попробуем! (внимание, пока что это работает неверно!) -var user = { - name: 'Вася', - age: 25 -}; - -user.each(function(prop, val) { - alert( prop ); // name -> age -> (!) each -}); -``` - -Обратите внимание -- пример выше работает не совсем корректно. Вместе со свойствами объекта `user` он выводит и наше свойство `each`. Технически, это правильно, так как цикл `for..in` перебирает свойства и в прототипе тоже, но не очень удобно. - -Конечно, это легко поправить добавлением проверки `hasOwnProperty`: - -```js -//+ run -Object.prototype.each = function(f) { - - for (var prop in this) { - -*!* - // пропускать свойства из прототипа - if (!this.hasOwnProperty(prop)) continue; -*/!* - - var value = this[prop]; - f.call(value, prop, value); - - } - -}; - -// Теперь все будет в порядке -var obj = { - name: 'Вася', - age: 25 -}; - -obj.each(function(prop, val) { - alert( prop ); // name -> age -}); -``` - -Здесь это сработало, теперь код работает верно. Но мы же не хотим добавлять `hasOwnProperty` в цикл по любому объекту! Поэтому либо не добавляйте свойства в `Object.prototype`, либо можно использовать [дескриптор свойства](/descriptors-getters-setters) и флаг `enumerable`. - -Это, конечно, не будет работать в IE8-: - -```js -//+ run -Object.prototype.each = function(f) { - - for (var prop in this) { - var value = this[prop]; - f.call(value, prop, value); - } - -}; - -*!* -// поправить объявление свойства, установив флаг enumerable: false -Object.defineProperty(Object.prototype, 'each', { - enumerable: false -}); -*/!* - -// Теперь все будет в порядке -var obj = { - name: 'Вася', - age: 25 -}; - -obj.each(function(prop, val) { - alert( prop ); // name -> age -}); -``` - -Есть несколько "за" и "против" модификации встроенных прототипов: - -[compare] -+Методы в прототипе автоматически доступны везде, их вызов прост и красив. --Новые свойства, добавленные в прототип из разных мест, могут конфликтовать между собой. Представьте, что вы подключили две библиотеки, которые добавили одно и то же свойство в прототип, но определили его по-разному. Конфликт неизбежен. --Изменения встроенных прототипов влияют глобально, на все-все скрипты, делать их не очень хорошо с архитектурной точки зрения. -[/compare] - -Как правило, минусы весомее, но есть одно исключение, когда изменения встроенных прототипов не только разрешены, но и приветствуются. - -**Допустимо изменение прототипа встроенных объектов, которое добавляет поддержку метода из современных стандартов в те браузеры, где её пока нет.** - -Например, добавим `Object.create(proto)` в старые браузеры: - -```js -if (!Object.create) { - - Object.create = function(proto) { - function F() {} - F.prototype = proto; - return new F; - }; - -} -``` - -Именно так работает библиотека [es5-shim](https://github.com/kriskowal/es5-shim), которая предоставляет многие функции современного JavaScript для старых браузеров. Они добавляются во встроенные объекты и их прототипы. - -## Итого - -
      -
    • Методы встроенных объектов хранятся в их прототипах.
    • -
    • Встроенные прототипы можно расширить или поменять.
    • -
    • Добавление методов в `Object.prototype`, если оно не сопровождается `Object.defineProperty` с установкой `enumerable` (IE9+), "сломает" циклы `for..in`, поэтому стараются в этот прототип методы не добавлять. - -Другие прототипы изменять менее опасно, но все же не рекомендуется во избежание конфликтов. - -Отдельно стоит изменение с целью добавления современных методов в старые браузеры, таких как Object.create, Object.keys, Function.prototype.bind и т.п. Это допустимо и как раз делается [es5-shim](https://github.com/kriskowal/es5-shim).
    • -
    - diff --git a/1-js/9-prototypes/3-native-prototypes/native-prototype-object.png b/1-js/9-prototypes/3-native-prototypes/native-prototype-object.png deleted file mode 100644 index 1353bd9c..00000000 --- a/1-js/9-prototypes/3-native-prototypes/native-prototype-object.png +++ /dev/null @@ -1 +0,0 @@ -native-prototype-objecttoString: function другие методы объектовObject.prototypeobj__proto____proto__null \ No newline at end of file diff --git a/1-js/9-prototypes/3-native-prototypes/native-prototypes-array-tostring.png b/1-js/9-prototypes/3-native-prototypes/native-prototypes-array-tostring.png deleted file mode 100644 index 0c6f18e586732a4340ef42b3241dc336b6c4b0ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19637 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�#Wxpig6I$c+CY%#?3h9 zJg3kjIh!&HN!R??@zSrJ_D^C&!;3#_G^r`}%iMgO7nO4jIBR zmh#=pwPr~|Me^xFz)+=N;l)u_ z(A(AKX4i%P-((%D+X!9P(ew6hB&#^p$sBt@Smk-l41Wre3sb3=CXy z0yT?MBT*MFZ|B?|n+Hpcy=g%;TDnw7kyoT_8ggxD4|vJdmgb|%#p;Qep1)>8!kS}9 zq}t48#glJ1Ha>Q2sI)sUvgsRj=y5o&GaSJBf29zywnnO2u)ohFmATXRxQ*e|lYOb* zy}D-3lWGZhdj-H&-iRT|YaVx@?H0_c)}1on@7C?KUSBh?-Z!w%Ibo-`kg)Q8NA}5L z{K0T288ycx~LVBm=#vYTyQ^$OGXWSg}P zmY8xvqDDL2YdX>~)rG@tF91#_=6ErqLD&_y;LmRS_v~8t_5U%0MB+vS8$0N5qhROI zc(nWwv#01G!d^dr}@wxJtnKaRGYhYsKYHau+@pTQ21 zThs$0@xf7@O<1b5RU0=9+UM^MKGvQoCMgz8pp3Ly8*Qd9$gd=i`wSPKI!o1M{fs)% z1C5#e4GiaBPug}FSNi83In{w(NSW%Hwa)*9>q7SFR7ay#!R5CIBClriNtzIHrU8kG$LwPOuqmSFfX4*RMm)-i?18xYf9rRV=Pl zK+4qvDzy8QNy&vli8N2ln3>0GyM9?nY=%2ztOx#e50FaN1es6ZF)49!2J;e_>TwBk zkKtO{vSHcFv^tNWLTj1WGWaVf?T-&(b)Sm|D!tZ9k=O%!UYb2=&+Kt5UvkzK6za_G zx=eR#fP6P3ST0T>Vh9X@JUE2((>My=W2pYdzgbQVz%Dq?4UQYfV_NSE1B+He!;t7P zV#Kh>p_HCkd@3e_BAY99=7#MLIq{tr3MqD=6#J3;-42vrHe&ut0av*D9e9zbNd#PrlCtOVTg79v; z4~LihHx2t{MpHuss>7m#`u5=gLfgqazo&gb?-EakXT=szj>BYs1D}D$(W0oI0B6T% z@&;A}#3@^-4xVzF7&%5D=28PLef-+dNq(?H=A%8$#a!slepop#$r%9a)1@=|3YW57hxl(b|d}k%by{XvV4?8`bSW6UoRu z_F~%D#l<>K#n^yJ1pZz1EmWuu;`@);zLa9J$!J{F@y5ch2RSibz5f5{2-KzcYe-q> z^I!^yNtU7llD|TL9~)E{^-(-w=oAtN@E;0XrhO%iwQ?6bAN&gWN6!xwvG@=86bS#? z0RIZZZDw%XdufP=pnw!f>=lw2IeB0P@X-HAjq1ENkm$d526kZ~>r?I9icyVpLTfHv z{0+0zb?g&}4wVbmY~ohHSN+yYV=#|S302U^Ggv^jTSOh@rIg2IB=bz-SrD}v z4a;R@|Iz-)$Lv)8z~YDD%Q|Xg4%r;14l%<+v+R7B&y2L&Te{Eqz>b-}&|l713OARF zbH4Q;`Az1JBK!-3h325!`38^PZ%1?4S5yqKai8GLAEv-ajFc)9Fil`or5kQcMp3tS z51OB~OIfL){iEXBE?>J6eN}i$Lb#TCWRktSU%xMKT6v42S&OXMi(z!JHoIy}b-V7F zD4v2lY1M#jniZYK!jqjXAz_jkm%Z?(c((zW-&8;3NDcU~j6h!jMsI16kc3mRl-&@g@w zYYT?$vg|+po$n`7o@%@thjS{ayax#+XIsE9fo37e5;HUUIOEXss@%Mc>Q|LT zz6Vz7H|+6q9xT}h2CMZqmXV$=l${yMDk7{9dH82Xj&>ZNIHiyHj(7aE`>+&_dEne! zc}(`z=*QGVI#ymbhNFW`>-G0+V@HhVSt}I7O+4|_UHGk?TGb7ptH`k`9lJ`O^y`6! zm1}harsHbs?-P#Bh}Hq7@3m`rXs~?*6k>6)E*PvWFVdB?DLAY3i8XXtRI-gK$8zT7 zLedroe!c$)?{p(%sV>Ug$Ubi~NhdQY%qMYn{#yd!B<-|q z(7a}^bC(p*+kR)!MTU{D(>(~H7(_z%WWX;cg@4Qv!j=h^Tqne@iZeSA~?FK&J zFiYhMQe-LuER5KOi&@?L;7#Y$TqgM4PsEPxLfa|~6vNYMKi}_7BbOf;{a4d>vD`s5c z2yM|O6Y@(H^sFP@nmDA(s^oMs2sM0&N(XV;G+hcxfWSUX@n7%bBupcPINQPO<_;0h9Z`y= zhJoSzA7aGFBT;Ur?8tniO`0!Z$C*O{T_81joh;(YMIj%P(esYXsmb#B=*%y8)F%A2@eY@$n4(BJn?4 zb9`tGBo`ykL%wB7z%cr-5x=gbL$C|(uugc&BuQ+)7wYh-FrfY_VG`_cbo>4(DSi9T zmG?s0%{1D~U;XJB{rdX*>JJ#nZ30`>XI?0AR^r`6z`e}+X{0CoKkHVC{ z8{eA9QfUIx(o)X0Ao?-Gw?wk1LNhW9J2~f-%YiL8H>g##y$&kPsjmUAlbndZLdr`N zTehX1?0Zl@KJ64y6>!af0gy!a#CLJt(Uy`-?^D-EF3XU--kk|%h+#QZDavnu zk2^xrP;Z3KT{P|mS`fTWw49eUq@-X+?&o{`LMXqCgYv-GXzyiBYWwFs&wXUEvd%rh zE@^~;&z-YL#EoGi`yi)9Kg~M0%=X1>&TF@ejc%kjqifHKZ4qkTcF_hbiH>Q(`hgVv z4PirvnibD-<@SPW7msWTji)SpYP|AiyVn9Km*ua&2@8_5x}25|JJI#q8Ih}ElglMS zPk*93(zOkJf3UL5rScaC2Eh@tA3fyQXFAk~gpC6kpTWkyCw{G^BEoU26?cD}&T)M| za8B|Q?eQO(1iyOt@q5=d#^2bIkEdIBr5lv!|AVi|-srDDOELLL2AO}@&g3#Zp4|2@ z#dLQOi@;D1?B2DW#26qVI4y)hAzVD$a*$EYE@279NpdRc_jdBk@ZYjUEdY;Zooq1H zZDd`-(yE?kNXKyxRNnEBW1t|t{Yv$n^LHiSxlcW`s(ZdRR70oEtnE{x_kLORud!<8 z{kl*TBtMiI^bbB=rZ3+lzpu~{;hkkP&M${YY#mm*0&&gvQ^?kzP_&uP%)r49GN(yXS*96xoJkyY%h;0dzNX|IGa^NfE59onSqfa83 z;T3XO4gT%d)i1uSFAy@jP{YfcfJgDw(el`fuoffFpVtv2yr1Fh4Z+iqE7R@Ok-~26 zQ)`yN0U^hcQ$Ih<@3YbHa8+J8?>ob7z8&}i2l>P2*8pj(*(&J@jkTudeZ~D*T9Jnz zH8Z*qp28QjGNx$GtT8=%x&$WX5y=ep7rN=D=CR4*mHvQnH*~yBmzJN*->)B@&w|M? zkY#=^sTox8kF}lDj(LsPPruE}>HHRZ2hKT?2ro$){hMx!-T}Owy>G7mUfl!zgDYFr zy?szALcrmrhORd(q2DHaZi(K#1iP4X1^Ra7A@U1+6sVo)8U6OhzS}QzqD1Fdvb`z6 zpUfV={^?Q`uL*>k1LSfa^gF!n?zl;Ah=0q$#s1oGK!P7N%}Mv;PqA3|vZtCGob7wX zu|D}l;=``dZR7qyX4k&Xc#O8Xk;}4+*Gt!9#8{Om7wsCK88-IHfuj2mI_Yo)pTEGE zg=gAcQwwV+f2pvrrJbRQQGn!P+RX7=N7EeRgD^D*3H_09N4pNCrx*ujZ@?^MGYZB` zuR!8GA?#KwcX|EN6~)=#N@5(~6O(~j@u98`AF%sG6au}PhNU|LDW{%x0?D{q<#k-s z3CTO#j?q35!7Ji10{X`dt;^ZwNJMLxE-P62YL4m#3Mshxz0&)?@Lv`YggIgCsl_*R zJr;+$*ed4nQ1<1adZbmgS?4TPvF%hte7+4XcDi4t=d@U-<`5=kFRbFdJUKIQlWiIM z@6;wIU#sMZBiQH;_=?`(@2;Pn+3qT%F;6)SSB}cc-P~jydE6Y6%;4&3rU{WTcH~V1 z353lx4EocHR;W{PiwZ6ZTa~7+Z8(0P8e8$za#sf2V}in_G=~V z>F?7oyFVMkgU)1R)UlH0X&1=n8pR>!UME+9EwIwO)mF%U0r1g?WrBy zKd9#~KYiMry}N5X5bjK|8K?R~|Fh%I^R!aDlK?Q^7Wr$*NYsSOCq|MMR2A~ylpFRc zh7S*p%rib)8go+_)lcUtm4<-vpqNV@^K*eUawaUiJLst@%ZWOrMcv;~BHqa?;l@D| zF2*`3L1ROnDwtdP{(MB;I7(AK=HwC|##jCUU8cf~h7JHDrN6U|Q&xm=NA8(G)If8k0AApt~v*5Dx z=AC3WGLklRxT+F0tjUX8O69L%(V@db$j|!|cjE=M8m41|5&;bYx|!X)kv$PTZD6@T zCBHNEWd;A~uetp*>mvDa0?TH6#L8AErSbyZfX2WOM}@r#Sh|dAXa2+CUfu|rwLA** z`|kYsq#PTjFD$8R_bb=+7ucOXp?JUg$?=m{^OBlY^U}MFOTNdiNZX955D{N(J1UL1 zlyUGRk+2hsYA0;FF$PU$ZQ=`>8o7HUv}QgkFPNK@Pn=9p0Vn^eb!Z(YOL#cMuyJw6 zXWQy@o!%yXndA2Rf=VmfI#0vlg>5*h*|Awbt84_uhvH^tp1upQ;DK)ejCT z8}jvKnf1Jt_pKT1BiosLRLIzFs8z9*9j&G9IWQ9n7%nZBV5N?kDg4?naJJ94M#>Qq zM+JQzd$KP6nTGqpV3Co?{-letQBC|3`aKBTg17ZG9O&eI96&NoR(Ir=qzH4U4Z#hAKD+m%jSm zc(Nhk=DJ%xB0N1^n=mar<;M+8VRQ;pIqNLsaF-cO7jw97M1fX#s{7n^(#H)x)4Z%@ z0T_DNMfohbE2sNBon$(+IC-X`QNZd22f9V?#c$w*va~E zh1QMT*CwwZi`W?Ly7Tk(uR2>h2pxzM(2RG_r>!%CJ;x6T$4ED`iQPB-nf{YtdpuQZ zrk97drKMZ#7ZK{5j&y~pj>|6ht@`oTMhX-x6?7-lPSe&_Oq>}_jZ-Owm`=6RKX^T|tF37s@0p;R@c+&HP>nt`9bMF@;- z_4y3Y^>@AdHw$)Yy~FBxANQ_rrnhJJ&0a%HS2wlGwXmmX_i5n^e|Jkq>zCwILr;6} zMCkbaNlf|D*S4wZG#{Y+1l?V8HefSBV?jB;Gesm!(`5~@+n04H@um`b{M)=B>v3!3 z!SU++p!IyJ{5h4A`{?$JoHDY z@yd)`=N3H=7p+7ql1j_mxv&of+)cbZi04l+sZm5jKEi10_6L?yON{NtRa?*jt$Md* zMGlMs=Jzj;7fa2zOqg0>okV1Y?j2p_uw3xFu1JUzqOi`&D5$=ydWq%PfR`rkzKrh0 z@94a7P0--TY|B*Ccq3oRjkdUi%HM&NzsoXwYHVJ+E5GK?q>RG#@i+6hWa$OG6|pgI zC-{4@WPDw@jn#aZV}J{|#b`9LigjAe_Gsp%+*f0U{#8bY8E|LHXBJMNydxSl`IP58 zvR=z`7gLl)zB~qu%U6`h!{banc`0J%HEl zraLq9xD1GUQrny9zEzM6w8C}ydS z$L`S%*R?Nx3##kf=^bN1@2qj&JwCADvWr(Mm$K?~YKvO5<1MoU6u#;*e~L0}%&f&* zy_hMCD$0sPR~O_s2(9Wc!(?>sr$(xhuN~_BsQp$?&rFb|%;9T$)AnJp2lL3~gm0|- zBJzB(;ZjioI_=YOEqdERg?dpy&Z1xH{k&f~+X%zEk~bcqcx4R!f21F}-50h6S=^jP zh*X9A%#*cXe!oe;7rjB3JL`2L%@NgM9cSUYi#FetyZ*Mt?yzOKgH5=GkChkP_U=>p zS40`QruRs!2SF(Z~+|R5l2fVOQ5+<4DbP$U1 z6HNm+*$28lqY}Th3(pqgm8JxNu^UtF^Q^ZKu@ryNmFk^CUSut7WP};`_fa@p$8XyT z=I2R8YgFt2wn;Zp>CgNQ_Y0lXB@;R(CMg|W*M{L5o6lAN&#`B7=4no2Kts!UBu%*B z>QA$~O3?=>l#PsDv+v8%b_%+Y-?xc(ZCtzKs8zRaGj~xcnSL)bBqJohS4jfhUVz@) z!bEIFB|P6J5~{nN^OhDXUv3F^E|ku5De?52l%Bxcbmnpvju@5HD$uNc$c+PIo>?OI z%`=RxHG(7`I>^>l>jT^HmxU#9c^g%IY~F+ySbjVq$(PCGJ_M7LVSV=?(9qV^F><*I zRt8cHA5DBz^vfG)UQoJLs-9!jbG<4jd8yak7Tq>j>dY*n{j$Z1L&X$ztS_x@oQM_9Y+aJrI3brXba5 zx-^n%sC9pr@>H;8uBD=q!aGD$4m{Y@bvcxb6?!;n8%iNwY`SSbyju6WdUWwg2)fg; zH*nrI4_AhSeYD?Oo9G-{TSKo;uQ@6vb7P4A$UE|e(?IH?)^fP0yp$%n6Z8Hq`xv=q z#S!bt=4ruLizZKmHBIRGHah`GD(!MGeBKeNF)Lu}T)|(Z7&QJ^n_NbAEx_0vcfz*S zZk2gI{=%qBJJS68ylx>CC^mZh3Z(rQEg4f9m-h5B$+J?>B~c zvF3@7@QpFqiP5Bl3Dax8-2>FFFILAYmG_KSiiTvVoA!*T#HKHHoW)g;wL&R@KN#v4 z1xR47;hjc$7>A;;J>+n2_uG`g2xJPKS<{rM$6p&C>&dS!jTb+kb^ z737Sz#199;M?qe_;9ic#Q~S(&SIF{jNt1Aidsg`bxtU)bi$2?QFl#}JRRabnuU zPT)1S)s9*uf!Q`otexSa=KX*r(RxPf>EG|Mf?Chmg3qo@i0ZTT^9l&@Unf~7Hc(0r zL+8I5CMyl&A3vhHSPi9O&m&9vViU=mBz)#7w&{6YwKi&!IZ-YrWg3}~k-UlfHFaoo z)IpWLD5>KfN535v1NvK6Ij#Gz)yqkmzIqA|kD9BrL1slD+&QDf?1k`a?=-Nx5DkV80L#L?+aRPFQ(-I>SWDe1R zxFj}1m%g=j0Brh2*!M1ZjQ765%2^A#Ae+-MNJHVX( z5a4+AT9$<$_i9smoP@*q||bvmUi6f{y;Z)>*cV$_|vVkj*0 z-m6xau4DAP9((sCDVWKco?H7EFG~v5L+8PPqxLEv-P%b5hy05Dh4*2U`G-^up$r1} z;s~?Pe!BSp3?hz>kz^E2CZ{gG^NTN=3flx1?vGdG#C7qtbpaCT5qHc(JbYkitW-ntS2sI-H&J1<0zHS4u724_U?Z4Wtq3yVp;HQq7cg19sOkDM*bV0V^b5#rXK4AHsYvuU@Yd}tygHgEzp zI4CnDG^VjtHhD58P$w9~L6ToN+Vy@AptO>ad{b_6qjmDFR=P|0SnA2_#+$^YDB%=x z7v(PDUs~JLy1@BkJS%P{TSIpq%WFHZr&PnTDQfV;Za+wa=)T-fS8slhyvTyb`t+Si z%GWy24csOvPaI*Dm4?(gn9 zZA;j8ho2^mm*0Eu_)$sZmQ(;?&4&8KIbX#pKUMY9Zu|i90yP0`OPz9orkx7W8heqDhXfh?p zunh^om%virLi9+yQa*WwiMBkt0+y4+`sskNGUHvOD;zGBkzsh>!LX}q$@W!$VluB( zBlDp^YHu92oBg;>BnmmZ(K_wEU)Ew1dYGaS-j-!o`nP9M;?Fv1__eH)?5E!ER=3~Ee1!D&c5$vZ_=gN9Sm?w;8D2|GtdkU;65fPtoO zW9_%zH;_7x;n6&sUK;Af@JtYQDvhMbF-?()YbBCqegMWj~-?G4|gpGt8vZ0@j;tOj6&kmoSLNYj?bqTTf_z z=H9#DGod9&9!MoQ&QiJ`SPyVl2F*u#PGxiF_FGiK-)40G#ljs(kW)xGbl>oz8#X15+!1qYpV~*qsfFH>~A#f+bY16O^SC#rqO{%UdL;qK4SoXng#2e?IO}fWi%VUT%$_vcBS?vfR{Ks zyq-RQ{UzxpHyww$^R{&c*ogDu)t*7#LF&WapU6~Ya0f}8vTK8^#~*p@gXDik^Oa{Z z`<6w?p5E<|)ZJU6zi^B8V3_W78@x8hOm1yt#Jt>#^}4&3q0FOQqJ zM#pQ(NU_$7&5OimZdGnz)wbI*^!tWJ78civBX6B&^Nr~`>ozm@AFYJI_~|HoSskGh zp%0W~NHYi&kL=P8j$@znm{jtZ1goE-@mLqYwb7O1 zypZR{MTc(|c-FQySZ4VVtPcHi}!oCs8 zUrScAwjs6DcN#j$IjA^e#^fL3rEf7O^iCf)=APq@FQc~xzrpTGG+|L_N-!^Ml=BIW?ip%XTR zhIZ;YQ7+3E*AH%~QrsVl_{Qb;*NoH+rx4TjNGXB!1rJbFuKqc1`l~_=^5HInYsr%? zSq^5A$&_SoLGQ#!)-^J@2=-nXyzQlPXnjl(DR71X1}D%GsM}67jIqrghKw!Xn;;?p ziIKmIn6!oQ1!mh}no;|<84{kNXB@QC9645dX(Sq!$V{J7hSzyFVEffr^Y|e-XM^(>mmg$%IStk*tD%(<+np@ zy$^Dkyo%=@s+|1p_W2|84K2H1bnQQ<^H~X*TQN__F^9)XUXipkUE5`{wI7QKF=3;JAxd+pkinw9{P}3U4-ta`05q?XL%`c&G$bk zeQ{$owc?Lgn>jVI`0}%O(;rsta-&gqhAGI?hKBF-3ZTQ!o253dd zj#Juw3f%N2lbcs>E}$JDH65#kZTk7wBkM++to&aKX#SuG$UZ82c9yfH?P&-uwgnO( ziGABcZqV{j+W2Dn0SwCKudeTIoGWx)Um~bv6Ri(&74VlCW|WaMc+}$cuYd=m`e-;y zm|{H(3Zt>d%}GhbV^x)<6K;H8vlYVeQ?16v34D0~o8x62k7~yoWw8RDfcS;`*j={G zqmMZb%+l4(L&m;`5Ae8iy715$&T>d0yndO4#o?l0L$o~p%)%Z`$M$)OAs_WDrfSPZ z=lR1oyV^Zc$<#4{!TYIp-v(`5h?<9?CWm3?>6@kCeEN% z@&r(%z<9+T?H^a*VR6oc7PLyu5PWr!-iqstR}BvS=*^P6 z{JB2n3N}GxImTUqQvT3;-eJ&v_Gnn7#Y;?13H%a+2*;`NP(qC3-DsEG%cy&sHVVD7 z3%k4_<-Z%aZlOs6PrqDa`&l|4`D)!NLkrvyFOey}6%yG8)LD19uBRqK2g4eElqQ&m zlIdvL{7bSom;a>vaQKD-PxGCT-YUnJFu0RKQf&aI*WSGuY-xf5Y&{G(DvY1M)?Bb> zeAaZK+8WIeBr$*hnUjebG^v~0gk_rhYb{i_%ymxZRkJtNUe{+*>HfQ~sNqrRCh!|R zt2HPpF#EKA=flc7#|aIa^7^Mf3pRYu^T3fKyW&P1fznz{q1{JyzvTPG$QWO3B6t5M zy{^N(uE*bvv6BT(|H}kKSWNB>8_1y`#J3 z!$XzE-=Xv)d%(^ANMXwHUf)5-9sUnHwK0w!IHS09`|MxVLE}cAgos27eU`gg2ZPEb z)5_@@rDUS5ucM@GUZI7>vu5uJ1@H~{TY1JjKx@CYmI=|pse<)A-1I3D9g8&n?*5j& zO^uL~{EY`L~4)Y|ps;L^|YJa);j;+~uS$ zY-F`2=glniz5^;(rmmeq39M9#FJqcbE*ebwg6l0?63JW;TegU+%z%xTr4uPq*;DZy z6@e=LM>i$PLrLYcgee=P^EF=+&w0Sq(s|W!>m=2KO#7G$^cq|&Vaw4lA+j(rX&Np> zS%cO98twmwPEiO)F{Z0Uf0gk-&EYMQR*H&-`REv$XMGJ25a%~YCfCZ5Pq8W2SiN2- zeP%lH`ElNPXur6d3n!$ia=7x9vf4`!8pY80AAg9AWBJ~R+TGd3zfs=0gqJ}Xjka{d4xy7)PT3u$-$wZh4#<&& zNq=e%;b36=P`W)KMI)b#w@RPad6J+^>|mOA0hLSWZ6H21Mto#H9ogQ;U-zZ;2g~x| zKF6k!1BO1-Aa^f7%AuQlil#=kv>nexjK4@1BE-w62FQ)C?h)i>aFflQOc3p1@~b|+ zCB&nbShd<&1@g_wrO1npju4myf3g33DIr z$yXma@q2H&Tqa0Vt3+gwbTGFISxg>dm>Fcsfx%ZUzU4;N_4~M~hSkgZ*L8ilbjQa& zrIia(V1vz{oofZl$Aewm(r=_TY^^!;LdQF7oRz*e@_G9-vI5kpaKhOrSK+LO8y&`7 zWWTXRnXcPbF;^XDOdQowt){W58;NKZtxlGlyOvf_0=T|3vhni_0D$`PI|x!=#8J!{ zQ&V4Uw}I`1G;#;Fo-v5RiOHn|Au+9?}Td zE~Qc%yLQI4CL{XM4F9aM>2AWT_WV}}s3?BI(hgR7fWJ4ZDiwZ_L$m9EFay3LpUonj z|Es;{4u-3XSJ<%fDXT<{zIwEX-uog5f+UEVL?_7VHKMG#t0jm<^d1qtMTss%iy9<) zSuHGrcUQhY-preM|GjzhX5P-u&fGbB&;6Zqe!blS?WA>CS@uRBwUjkYZ>5|7R@If8 zQB$LdOtL~A_L4+_^n);aX#zx*mtsx0+M;EvUAW|M!@qp5bqxk)F; zqLkF!KcT{DN_1Uy6PIGGVV@{m9}?_o6WBXS^GlksrzT}?P4L}y#a?CQ;(KE7oB0ePKma2<{Tn56XgBOC2NOS82!u*LYC> zKlFcTH_R)A9pL5UN8qEsr^~v)8O#txd!6L(@MRKQIQgV^zCG@E7C% z+ut@Yv~A?>hriSsmW(Go(}56mCnzy%w55^ZFj0m9v<)c(h3dj$CO}F%Z6HtSx&0w- zKm5jEAk!3JMDchI(DR=(FIzxLwV{*5#do5lPk`*pV8vgQ!R%49O~mQ88YVX%N#q|30zJ()gRtPYn_&_~!4y8sba3dutGxPcZ!QUxV@eoi*GKDoa7~xf&5`^;gUBS@c zvbtG^serpO*HlkLLqHakc?Hk)Go2#I0Y=#gP+~Y8_P&})!?QrH0v^%OuI@|`iO-oG zS2YyMz}Zpq74djH*S%|@oT^IPatRJtc|rAbJ+uy(7pVa}aep6ro03>-(&@Q65JcKHzNLBf*k-gNzv|KWY&yE7kgm^?aaDvB!G;HY$n@&(uvWwsRv~PKI z%pR?feZ?&>iyOZXd8o>*g?il*6Gayw>3o+en4MT*)QVKUkm@$fMN!v&0Ehj9)K3XDy07aj638zKyP;p_R}~BjG@q5 zRx#9>FhJe`wHH}1W%Zl&WO6c0e6}mWoViw(lbzQLRqAEoV#;v?uuA*R@~CW7 zs0@IHq}O;TNn`B9!aWK)+`?~`$+AfR6a4_Movz#}=RgIsqYZ2?rWC7Q$a-nB`l%V? zH*h1&7<=Tl+V!&BC($}n7PriJrgU@Hc6>0uce{fjN|ttD%k=T=MOmj0cV}zNh^c-0 z3|Uw)1R?Z%jc3#?Rq)rgxqIvNHThWXT26AKF`%_@yAGa?=^__mSCN$(|CpjnSK6~F zDluJo4_|^6QUn0bF7}+&WB{@NDwldj866e}!(Zc|M@~uaQ|0j>%3p2eBFQR6B6YxSoq*Jo>TIfWz$bCk{x#)66`6xeR8`mY>G`HxQdD+yQ2>}Pa+ z!8F5fCj?b6Ip}=DsC73^B9tQbQHBBm*0O0|FW4sdcSeoi{|~TZIWb{bK#jy z&hPhe6J6@5lJD&|<$6QgPyVoQmiNA^{-t+q`MJ`Bi{Ct|=J}a_??hVr&N5V`$Xoy0 zHJ3kBWbk+bP&fi_x;FxGDBLA#a0WY?zkG#`l`{S9r#uTiQ79MA^j}E~f=?g~QPecanTR!iNf}#%>a?mfS z+BeZ0v7h?$6ty~k{&@OEX-5h}A9Sg)^SGI}j?${!=Ua{TG{$!$wCf^}$lao8UGIIE z39}P%zUss8v2ZJ$%~mvRHJ4}tc99l@50D43>UFrjCTs7)X~yLf2d(`?O!QDE6tlas z;?RMyf5{#;T^s!-1$tBeQZ`l8x9mptNO7au<|UTn(#I#idEE3&vuAOF%VHTa1(W=V zSgt3%wFl2MB|k7tJ}WfN?w&=L51=M)>m*DJz=X@|?o7_nhh%<~n3~LV-0}XB>6LNx zDSF`I6UF*@ka3|qC-ITtl9&|z?I$TKoda7lW6yOt1vPya{-6tw>q6TsDR=D?nFb;u z;$RZ4kWSlfz@u3^tHEsZp=ls6u<5d9*<_V+A_+=)YYy3M?oxtZbc=06@T#)V;MmE?wnT3aozbcxBW$DsRud^?T6MO<@o-4_vf)- zKi~Yi&p=YV#(cNJ!K}xv?!#}R8Z7l?g72F;6N6V6;__DP;|cx%&t2)C?#Irp{(Gxm!`iy=XnX zXM%P#9>g6O#W1OH8<-YHdaL5YNAI7IsoDRt6FMk_3CtC0Y1eX=ut&T3wH{7@ydzLW z0V_5w39zFXYHQn1v`GE~pNR^_*V^ua=#i0e4v2e8!H=%zcTG$x&3{B7h88!fB7o9` z2t|`9#*AGGJ}?PmNWk9*cZOX)?bHk$cI zfX=YvQP0QE5|T&j((YCtL0;=m9d(6>^?S>6HGaBBh)@ zHN;!y`$1a*J_f@l{3;<~&aiv!wvuH6AbChAAA)55fQFdoFT(j=%b0juh>`!&nn`KW z@OZx?G0&*b@oVtw`GZd=!(Q#;DZl1;?}85z(^G=JHxuJvGBg3*j42blMLF8XWIAxF zpDhAUr@Mt;wOIn;WU@Y3Oq~$J2?Qg}-d^TB&`tHW?Twd`tPJdEig_?LwaA z`PcKv2M$=H%Ri&vMShDt;k0SaS{B+6#r&4nb=d}rj|6PCE1ul_e0DohiB4iv=CmYl z7W;U+hCRAeP4SxMb^)njI-Y0gBl~3QrE=eEHV}D!CbO8d$GcVcF?|b+XBOYH9p)V@Tl?29EFQa1t-3X zsST5F&Sj1dy`4tX+!wZVeNji{V6bUHw4bNxuvo>A|5>)`M-TaC_v=ukXxbdL=R8+NQEoi<;yxy+8OHg-DFd`?sV0Bi9 z*r#1=mZf&!!8X2m#Y5Q<2a7YzvjY7~-K*}oYEiSo-l(vofqO(Iwfqj$bceR*dMk3R zio037o41=qVr;y6)BFpZ*Ka3ad(o+#5#KY?It;QFbRHOnr+6m^9c*pqQT5<(^*VFh zm{+-n80+$Q(cLv^Gd*FX-NWP8&@{}cIh#)i2Lvp0?XL4{CSLqozW5uGdD-#wB7m|9 z31uMGQbH4F%r}Th?Tr5rUpxCSSy#HN>10lBu5iv}D?PCh*u4B&{vW0e=C!uq)KTXN zG5_F;jLZ*is>Z*d5)`nY1BR1v(M9AwHNrOc*Dpx^`>Jy2hsZD8Ny}~u-yjr<_#-UM)wYPU|zWXi?FLB-7JU~wrb25F)E%3LTH8zqRPz&{w9wFH` z>NOP#6RPIVr1Y`OG|D8m%La&Po;YZ8HtjvIq?P;bUNt55#5=v7Cr$4BX@`W9XURRR z6gSW!hJS@+Fyro?drS6`SWY;D2!T)4zrQh!W6YgB2eDB0Q>iE3^`)>qC5S8k>+F>y^tx^(Mg9 z{{OcB16u+d-T(HN1C3X}^#Rus04KO{_8)*;g`i57|6(ZP;z&4L;{&kkz9uf1hWo1` zenW80*d34g-=CR3|JxHFoOo=@43p?P2J?4Y_}8yi0UXDv774EG6ENxg0qKcdXe0eQ zhXv4N;4qo)ulWha0`l)aHxmeEU*{L8Bf4sWunX|{rB?(Jf440Fu$;e{Si1p6HUQXy z3h+)8A|e-HdYp3(u#IyoIv4(e)E0qz^Ap)D4rIWEf%5}cM12MnW_l z-@qhk>>?Wi)nD{!6H)w#dTVcn&Ui{Oi^C|`r+sNkn@Cw-%x7R&S)~my(8>ltmQPMV5 z0-Vo1=deWwe10WT`%T%Vv4%P^L%HOxq#! zqkgJ=WOrb~rZYY7t?`=ByTFwU%xfHO!cYIuQ58;;SDF3i98}Mtw|tQysSvufbCM@adbk zj>Hd$>Gnay`A$#gbF^!q)I+5VrouJjPPvF+Ei2dZmD;8~tQ1k4ksc=D>|mr|!({VI z0fYTJ$}7J)mXZ#|5apT_f_cOG_!Cmz>g3{Ps(`;le|0SrRGs!B+6vj@d`(T z9dp5FUf?-#+bp-HLCOWY{2Bxh4H9M<=>To!Hb;wmHA*9o z=xpQH9ybv$pss*G8>RegfUeQ?ATBZUg1NCwKg7a0IW- z+D;u+;l{C8zS#3j+rBwt4oM^W_O6GrQEpzp54-?-{4(7*lB;FV%JGiGM6G9^cBG)y zv-4Q5`Kn%sy|M~3;Ma-7X^xSP*rwv#g(_yM)nnNMHfrItP&ng@5_#qtN5^wwn}7f{ z@uJDdw(x7CK3SofP9JNfuA_3}GmWKm?pT5V6!OQX5Or|eO_c5wspIR3ZaqJbH6NYo zM!No}^go7ZQy6&e6H@IuTJ#ta{oBOwRK(b_042df?YcW zxRd$X7>tnPtGU>(E~221`I&(uULdq;`6{>7+XIsMsgP_yN_J3bYTxp{-L)G2pD6_a}!h%WsGA2q1LG=`tKFTW!% zV@!pr8;#!owpJgPj%nUh!#sTIRR)AdG&Yv-7l+is0RP=E5uo)11do>(PG@u_!QRDF z`q<84OC`6>`k%atq9zJ0QtZ`SmLVbnced?m{adxm3_W zid?_#yIv`uy<-InpQ+GqN?p3iJr+R+n=E$eAB``!7F$;ej-Nh4S|v1c^OW-$Y%{&! zqKIgBfZpelW9txwM5^Iam~)6k=6LDmWKE7{tFSSbC))mF$Uaa%ldpga`7}mv61k={ zwNmO=^@_Fn9|{E+vOk!}PHEK0AhrD|8ZYR)>DfVlP|B;$gJec7vVl8!Lcqny@4W>< zXFsI6i>Eyft-GsCCmIm9#Vlq8WDF+d;Lon7SMk)(=Dd+EIhsyyJu}MUjd3zE9Y_1h zRjyhtX5<_k7acD)PWPI|&w2Tn=!At2j3dd>C(Bw9qa)7rFKbJT6fSbmfq_#eiC?k( z!qx6n?nlGV`d2M7Gf-mUwSBfxwQqHv6%0P6H8FH|8yk5Qv0^v#Q?O|#Ja+E_|L2w5 z0>CtYx)?k%xRc#A(>g2{lvcv8UQ%Ob`cihgnXC{78nxr>XrD}VOu>Td#owy~FC@~r zrTfy8<^W2Wx$*hSsRJfg{xWOGcp_iF(FI{^x6GC6d71JjvAZ}QEvqhD^5?XF>V*)> z!}!PfS1Gk3hh=D`=yyOgblwh$beKkndX#0afE+hAjJJ1vYZ5T?@J&Kz=cl{j_tqn) zN++9a%{yn9SChLZEyd{@@>8+03|jT;8_#@|OxJgjVWM1*qE{^HxATcE4rfmex+hO% zJFg_Z9a!~#EHqPa8cU0=Ct;8}bD}n=g4S?1o#qel_X%Mj7MCSI4oxSCcB)ocewX+npvq zyfJqg=axmU`R&Cj_;BVNX-(eH864rOwYcL3DB+Ozpm0^BQ_x-dpX*sIH^X48KHl3{%HhZE=ubQ+pDSC9SH2Qt|hyX5q|rm`)n4iCK+I7dOR zMS=N|{x1UVFbIxh-nM1&QZ|kjk5CCNjg3(<=q6JS*CbW)qxKFeBz?csTim}cZ8=Qci=9eM9Ya#7 zjvY7z)kfsZtV0sN3{+S#EiTF%M5k1j2|nI8s_S6d+RZU?`O<}w8Wj&nc}X;u7 c5#4r4B&D{hv+xb8hX;H#)pS+Ml`TX60}_b^u>b%7 diff --git a/1-js/9-prototypes/3-native-prototypes/native-prototypes-classes.png b/1-js/9-prototypes/3-native-prototypes/native-prototypes-classes.png deleted file mode 100644 index 451f45481b78b5618e06ea19c99ac8fa4b205d1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47148 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 diff --git a/1-js/9-prototypes/3-native-prototypes/native-prototypes-classes@2x.png b/1-js/9-prototypes/3-native-prototypes/native-prototypes-classes@2x.png deleted file mode 100644 index 28783af23549b2168cb9593d3f4ae23c750a0961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103096 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 r11a8PjoQNyzVaK(^nOcl`|~}Txva?Co` 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 z

    =WxZQzDYpXmGCjFtB+Q4&>LY_J}S7XL2hT81SWda6Cw= ztXzOcw3-d!w!P-y%BgN4so0fm^?pyn&GasA#v)D@C4} zn)<6Z*1=6e&*sx$gObwS!@vcZa49h5Dun7}cd6aXtsEP=_0&(8$dLKBfYVAU zgK_`1PwYTd@WVEcx<`&?H)>u<_x>VDHUU?>J*YO08I>ftdd~^uqvXq<65pcwbeD+e zd+P0Od&`oP!v^wuym4JUBn=&J&ReV{0Zw_fm}a^YTP#V@+;Z+5NcmJJF$2#Iy;&`= zy&2>+h3h9f%2fe~JuEEzHZRYnSC4qN2Vv#)JXxa___p#=<9at(@+NQnWnLAN7c}YT zfyklPTq}zHu-xX(xceid>M>L$O_S$pPF9G~eO@!BGhuIO=SPTg;Yi7G%SpcfRr_)0 zeV6#~6B1^2U20o%y>pb+W(K$SJUX?Y>+#gy%A>5=^N)}TH`!+JU+zr&1NU+2_?ui7 zs4sIwmRCgdWTTEQC|$Y+=GFkGtA_deG@k{`Gv~C9ngSpCufl-&t(cX=r;;*AmgG40 zR#T$x>;00IqkiUP;GRv)pk1V2Edn|(C>p?{mEvZ4>D#6|w>Nb&k;jXa`#ARB{9U_) z-P0U&s`v2VK`YZ9Hmr*ycv$@gJ;x7G+|&*2T`?>*7hk92Plr1N=zRdw&bawXN(7VX z@d+hCW@nl|2m8#*V^4ge$MLfAqSBq(Tzd2#2a++ksqZ|F1q7)IJt37!J1KhJ5+6E5 zkD_XW1w5zYT|rID-Dn6DuMU}9i$j+mE`xn!`pnZx|1Zb_<=9*E9&{lr=nD${+D}f& zT&yRP#qnsl`N7D4MP7O+oOWz+!TgfQ=#XNwGpaz~DlLiKWAjr?qTcFa=ext|MW>2h zKacUxx8y<%aaNAzYnL~HKFl-Z0dJoCGa(z(g^EPx4hQ$Y=VP}I8&}1}`{@jLLBDZr}LjhFc?OX@puu^s$~3&Z6e4dYsXcMwpVDw%YMP2 z?!ETHu8@mBUc%b;E9PPaVRO$V<29$Oz8Uo4w8G|Fn7WnOsgbrD4iAq`p3GyP?r({Z zQ~GC5E>><%-Ba}4%l0cb(?C@#_0Vy+pYVx}HyDZeQeR_yW+d`*xKqMy3kK z6NpQ%T}S8yTQO8oZcnX)?v&wDS&?V)&`#{YH8tZbJytvBGdoVWvi`_ee)L7jsOFWVxMR4`xOgM_pJcb_dPz-2tMy*TF{w~CN2 zLhf(I0g++;B*=|>X9eDgmYO|3=`1!c=DSEBB9;gR+OItu!{5g91*{7?5WQUe?mh98 z1`bbaP)m{LVqEN)>%%-hj<#Yy$8w?VnjkY75hRyg*HhA)u1uhPJ>#+EIC1l=p@;n% z)@s{Fc*~_X*csyZ#R!}xDegh5WjZ`=z0@UKFyltjFe>GjQ;#LvAGa2y?x5HK0bxR zQvcy*^>lUkainP3-OX^c{<3Kk;0Fvb1?8yC|62K@h-`MKz{peCy3jsMiSF-+yg}u~ z^L|q5E5e$g*J+|Fu+vGWkV~PF0EbYM8DbC8eVl|pBYf&}tHCJHTx(&qM{kascO#XG zJkg=4s|7hv0j{z-_iz95GLw{AuYkM2q?nImb+3-!;R0doxs4Qek+?w5Ui*L19HB zsn+bhGZJwIL#8c*gV+E3kllA(O~urCkh8m+qtMwD5QTMh5BFK84bSK!e{q=aNCN<;2pK=fNyM zz0#1pQEymVPS)RL{7^~Io)^dfOffL~#1vB+SFo@7#p{PW^t&7Nn)bYxWLPM$^X>I9 zmIQWEYGn3Vef-D8w9`tYI3%;8S%zlEzezieexD1_sq#c1kLQ&r0Q$X@SY;dqhL7q7 z-;aQ;2#I(($o=awbS3+L)4&@vO!mip^2IB7<26gZqlQX-4XC)()*N#`%B z0En%^G7tB!Ua#~;l`w|ylE8X(z0}5EP9gCs>Wc#+&)cYH6@klC3w9BwyNehX0wFNi zxA`k0B$+QH6Sg8*P+4g3oV;Rt@R~*WA3(!j2_WHbq}O)PyI`qkxC!~tp{WxY80rTn*WVn#zP3w# z4-Ll$M}rk#6PC~p7&w{hMp&=cw3Lhn>h6sH|B({W0xBQ%T1DZS#%HEk76^y%nqBh3 zC)MXt%#e3n-YlO!DA-_HT8S?X?jd51Xx(`f+2siROQ{1{u;v7@U4?afoF5_Qe8w}o_|VDlsZ5cDG5`z;fNbOa zIibjXj(Us3i|#`HWmk}Gwq;y!UY@3KP1^CjzY0cFs}EQsaoufWFrn)asL{Cu-s;Fn zBba(fj2MWCG!eQFOSs@>UgB+Zx~S+T{-XIyTP&qaDlag4cDcE17MbLE;$L1&_7?8i zw(**?BXpkgp?|=YulDf6A+`mBnu9*uZT)QX+VE?@l#3q;ATxIcMr8^LFE(3v=eUy_ zlgC|R9yYs$jKoU5Y;x9e3ki%{x5d&9;!)GA82`sX(4p4CBCzbP{~cyl%xavoNE=QN zCwVoZBLu2_5d-}vqvOP@V0ADmiI|B6Bd55qr_qG7RreUqfsUfOTxg^ZHK9Ntflkdi zDYGwzgP_X8_y>Pzn0%F6UXb7Qp7oz#iwNP)U}819Xq{|2g@#)4DfhMtou_raWY(sq zUH5(F%u0NAZz#+AY*lpctm6i^+Qna)JoV1CTG>rR{**^Y)9k=m9H?;@s|`ebvSxxX z^C*m$e*~CFMOFzJwaYf{xP7}B(Jmc zT@pCETD(Y=ReZ_-&Ik0yUFseKUzTcC3UY;)7|WCffYu&sqH&)B{);d#tn`S7@lEWU z)!b0U*qZi0(fk~G+%bL9ln3JQi%}NX;6L;tKt?B79-2mMx-4H#bxu(dKOm7N_SbvM zdl>|>eC!0MnYfYk{@#wPtx1Na@6ZJM8j%Q=%J(=`xTXTlUYj?P#4uJ6R=$i2p0RK? z+L_CNzTHJQZG1|zOom9UDJXxDQkyfGuAey0nK)Mz{XZc| z82))D(o`c~QJQsaO zx_y;P8Y-N@8$&ae=X0yUtMUBu4<3WM9|qMwrPmc|OMJ!*do`i!5azE*W`MBYB0Y|1c923`zdStLdr+ywo+)oDu; zA@~QVP*94%BX2JH1u2RXiHh2*cX`Hsy#o|8$XJibN&mLIpYE$D^Qkm9#Yn?bGSs>0 zYLC<>PE9fU#CqW!`b977O@oBy1j>GGeNX8hfq$b$VErRBPt1(a@|DZ?bpOSu6n`a_ zw102#aNE7c^P&5TfOObIeJ9-fWKk!=wS?J!$Qb`W=GF1N3aP7_ z&X@*WN7K(2;0>~G<8hs_C_WQcHlKQGjv%f6oQZRwk<(dv{&Cn{(X(RX;azL2ehQy4 zlOjRgq?1)uUAjZb;w|x$mi>O;qoys%fBX;hF(FX>vskH!UmdpUE99=WMKynjb5 zuo1qi`_qe*&&wyKqiy6#=BCiO{CZDp&T|t1Ts1cqAI#)sv`~}9$C;Wi*)%)YWjKyT z$IEsiUJl7V)A&r@S+yKA`kAX^4Trjv5}S}s8|Ra+&~JFDTg z)$ooCTBd2#7hVIm&zm1Q0u1Vq*vyZAGG!d3me(dcPSo;`W9BpSSyz$%py*<+qRA@k zRF(m;eFb-+xcmn^5+P%Ni%h-{?T_qJdlP7giB^uP5{Xub|r&0YEIkdoxUorT- zl$r9)o=a{odfG~^7P#_A`(~qql~kxx#Ky-nQX%t&0ME_!eKiNjmjdLPf51A~5S$R{ zWf!2RDN^m1i*3Gk8mmg5yJm54+SL>IdBdVel|T!$}9m-r|3&gCDL! z7ulv!yq25E&R)OcKJUC|y*i5HC?@qPWjixg{d!_n2^6tV;4Yk0nhtelYz)3-`tQon zUmw^L6p7t#PXa-XUXob4Xe(ZCdKFrtTCMW4H0;A|JlQo$s*KgDkKT0$Y*3r>zyEN~ z8>mj$Z3h|Hxqdq->yBC}m+%G?^@p^bEpi$BYlp~iDvR(&Ppef%ZdY5RetrY0p7qQQ z`>|@*D}PtUtg`aafTY6u!_l9Dpfl6|1A+cGAO4%V{wECr$^K+K_}zMw&q%BP$Bh@l zsd&cA3fA{ky*~9l3DCeo&rT8T%`1PWP{4I2lXDJ=VT+JeAP{wiv5=^kkB9Wij=V-8 z(D{-G&Z3buQRW+_M3+CpKOX6zFslkfkn=y5$e@^dj3XKBKPKg%VM@H*E7A!iBm;#< zsfc7=r|9qBRiSA1e_0v~95(a-1qu7#{lC9L(c|LxL$B!i_wN$Wga0M-ze4*TSQ^I~ z;<&xxNk-7WHx -

  • Интерпретатор ищет свойство `found` в `speedy`. Но `speedy` -- пустой объект, т.к. `new Hamster` ничего не делает с `this`.
  • -
  • Интерпретатор идёт по ссылке `speedy.__proto__ (==Hamster.prototype)` и находят там метод `found`, запускает его.
  • -
  • Значение `this` устанавливается в объект перед точкой, т.е. в `speedy`.
  • -
  • Для выполнения `this.food.push()` нужно найти свойство `this.food`. Оно отсутствует в `speedy`, но есть в `speedy.__proto__`.
  • -
  • Значение `"яблоко"` добавляется в `speedy.__proto__.food`.
  • - - -**У всех хомяков общий живот!** Или, в терминах JavaScript, свойство `food` изменяется в прототипе, который является общим для всех объектов-хомяков. - -Заметим, что этой проблемы не было бы при простом присваивании: - -```js -this.food = something; -``` - -В этом случае значение записалось бы в сам объект, без поиска `found` в прототипе. - -**Проблема возникает только со свойствами-объектами в прототипе.** - -Исправьте её? - -# Исправление - -Для исправления проблемы нужно дать каждому хомяку свой живот. Это можно сделать, присвоив его в конструкторе. - -```js -//+ run -function Hamster() { -*!* - this.food = []; -*/!* -} - -Hamster.prototype.found = function(something) { - this.food.push(something); -}; - -speedy = new Hamster(); -lazy = new Hamster(); - -speedy.found("яблоко"); -speedy.found("орех"); - -alert(speedy.food.length) // 2 -alert(lazy.food.length) // 0(!) -``` - -Теперь всё в порядке. У каждого хомяка -- свой живот. \ No newline at end of file diff --git a/1-js/9-prototypes/4-classes/2-hamsters-with-proto/task.md b/1-js/9-prototypes/4-classes/2-hamsters-with-proto/task.md deleted file mode 100644 index 48aa3220..00000000 --- a/1-js/9-prototypes/4-classes/2-hamsters-with-proto/task.md +++ /dev/null @@ -1,33 +0,0 @@ -# Хомяки с __proto__ - -[importance 5] - -Вы -- руководитель команды, которая разрабатывает игру, хомяковую ферму. Один из программистов получил задание создать класс "хомяк" (англ - `"Hamster"`). - -Объекты-хомяки должны иметь массив `food` для хранения еды и метод `found`, который добавляет к нему. - -Ниже -- его решение. При создании двух хомяков, если поел один -- почему-то сытым становится и второй тоже. - -В чём дело? Как поправить? - -```js -//+ run -function Hamster() {} - -Hamster.prototype.food = []; // пустой "живот" - -Hamster.prototype.found = function(something) { - this.food.push(something); -}; - -// Создаём двух хомяков и кормим первого -var speedy = new Hamster(); -var lazy = new Hamster(); - -speedy.found("яблоко"); -speedy.found("орех"); - -alert( speedy.food.length ); // 2 -alert( lazy.food.length ); // 2 (!??) -``` - diff --git a/1-js/9-prototypes/4-classes/article.md b/1-js/9-prototypes/4-classes/article.md deleted file mode 100644 index 082c22f2..00000000 --- a/1-js/9-prototypes/4-classes/article.md +++ /dev/null @@ -1,128 +0,0 @@ -# Свои классы на прототипах - -Используем ту же структуру, что JavaScript использует внутри себя, для объявления своих классов. - -[cut] -## Обычный конструктор - -Вспомним, как мы объявляли классы ранее. - -Например, этот код задаёт класс `Animal` в функциональном стиле, без всяких прототипов: - -```js -//+ run -function Animal(name) { - this.speed = 0; - this.name = name; - - this.run = function(speed) { - this.speed += speed; - alert( this.name + ' бежит, скорость ' + this.speed ); - }; - - this.stop = function() { - this.speed = 0; - alert( this.name + ' стоит' ); - }; -}; - -var animal = new Animal('Зверь'); - -alert( animal.speed ); // 0, начальная скорость -animal.run(3); // Зверь бежит, скорость 3 -animal.run(10); // Зверь бежит, скорость 13 -animal.stop(); // Зверь стоит -``` - -## Класс через прототип - -А теперь создадим аналогичный класс, используя прототипы, наподобие того, как сделаны классы `Object`, `Date` и остальные. - -Чтобы объявить свой класс, нужно: - -
      -
    1. Объявить функцию-конструктор.
    2. -
    3. Записать методы и свойства, нужные всем объектам класса, в `prototype`.
    4. -
    - -Опишем класс `Animal`: - -```js -//+ run -// конструктор -function Animal(name) { - this.name = name; - this.speed = 0; -} - -// методы в прототипе -Animal.prototype.run = function(speed) { - this.speed += speed; - alert( this.name + ' бежит, скорость ' + this.speed ); -}; - -Animal.prototype.stop = function() { - this.speed = 0; - alert( this.name + ' стоит' ); -}; - -var animal = new Animal('Зверь'); - -alert( animal.speed ); // 0, свойство взято из прототипа -animal.run(5); // Зверь бежит, скорость 5 -animal.run(5); // Зверь бежит, скорость 10 -animal.stop(); // Зверь стоит -``` - -В объекте `animal` будут хранится свойства конкретного экземпляра: `name` и `speed`, а общие методы -- в прототипе. - -Совершенно такой же подход, как и для встроенных классов в JavaScript. - -## Сравнение - -Чем такое задание класса лучше и хуже функционального стиля? - -[compare] -+Функциональный стиль записывает в каждый объект и свойства и методы, а прототипный -- только свойства. Поэтому прототипный стиль -- быстрее и экономнее по памяти. --При создании методов через прототип, мы теряем возможность использовать локальные переменные как приватные свойства, у них больше нет общей области видимости с конструктором. -[/compare] - -Таким образом, прототипный стиль -- быстрее и экономнее, но немного менее удобен. - -К примеру, есть у нас приватное свойство `name` и метод `sayHi` в функциональном стиле ООП: - -```js -//+ run -function Animal(name) { - this.sayHi = function() { -*!* - alert( name ); -*/!* - }; -} - -var animal = new Animal("Зверь"); -animal.sayHi(); // Зверь -``` - -При задании методов в прототипе мы не сможем её так оставить, ведь методы находятся *вне* конструктора, у них нет общей области видимости, поэтому приходится записывать `name` в сам объект, обозначив его как защищённое: - -```js -//+ run -function Animal(name) { -*!* - this._name = name; -*/!* -} - -Animal.prototype.sayHi = function() { -*!* - alert( this._name ); -*/!* -} - -var animal = new Animal("Зверь"); -animal.sayHi(); // Зверь -``` - -Впрочем, недостаток этот -- довольно условный. Ведь при наследовании в функциональном стиле также пришлось бы писать `this._name`, чтобы потомок получил доступ к этому значению. diff --git a/1-js/9-prototypes/5-class-inheritance/1-inheritance-error-assign/solution.md b/1-js/9-prototypes/5-class-inheritance/1-inheritance-error-assign/solution.md deleted file mode 100644 index 8987b2d7..00000000 --- a/1-js/9-prototypes/5-class-inheritance/1-inheritance-error-assign/solution.md +++ /dev/null @@ -1,44 +0,0 @@ -Ошибка в строке: - -```js -Rabbit.prototype = Animal.prototype; -``` - -Эта ошибка приведёт к тому, что `Rabbit.prototype` и `Animal.prototype` -- один и тот же объект. В результате методы `Rabbit` будут помещены в него и, при совпадении, перезапишут методы `Animal`. - -Получится, что все животные прыгают, вот пример: - -```js -//+ run no-beautify -function Animal(name) { - this.name = name; -} - -Animal.prototype.walk = function() { - alert("ходит " + this.name); -}; - -function Rabbit(name) { - this.name = name; -} -*!* -Rabbit.prototype = Animal.prototype; -*/!* - -Rabbit.prototype.walk = function() { - alert("прыгает! и ходит: " + this.name); -}; - -*!* -var animal = new Animal("Хрюшка"); -animal.walk(); // прыгает! и ходит Хрюшка -*/!* -``` - -Правильный вариант этой строки: - -```js -Rabbit.prototype = Object.create(Animal.prototype); -``` - -Если так написать, то в `Rabbit.prototype` будет отдельный объект, который прототипно наследует от `Animal.prototype`, но может содержать и свои свойства, специфичные для кроликов. diff --git a/1-js/9-prototypes/5-class-inheritance/1-inheritance-error-assign/task.md b/1-js/9-prototypes/5-class-inheritance/1-inheritance-error-assign/task.md deleted file mode 100644 index ddb177e9..00000000 --- a/1-js/9-prototypes/5-class-inheritance/1-inheritance-error-assign/task.md +++ /dev/null @@ -1,25 +0,0 @@ -# Найдите ошибку в наследовании - -[importance 5] - -Найдите ошибку в прототипном наследовании. К чему она приведёт? - -```js -function Animal(name) { - this.name = name; -} - -Animal.prototype.walk = function() { - alert( "ходит " + this.name ); -}; - -function Rabbit(name) { - this.name = name; -} -Rabbit.prototype = Animal.prototype; - -Rabbit.prototype.walk = function() { - alert( "прыгает! и ходит: " + this.name ); -}; -``` - diff --git a/1-js/9-prototypes/5-class-inheritance/2-inheritance-error-constructor/solution.md b/1-js/9-prototypes/5-class-inheritance/2-inheritance-error-constructor/solution.md deleted file mode 100644 index 19384566..00000000 --- a/1-js/9-prototypes/5-class-inheritance/2-inheritance-error-constructor/solution.md +++ /dev/null @@ -1,18 +0,0 @@ -Ошибка -- в том, что метод `walk` присваивается в конструкторе `Animal` самому объекту вместо прототипа. - -Поэтому, если мы решим перезаписать этот метод своим, специфичным для кролика, то он не сработает: - -```js -// ... - -// записывается в прототип -Rabbit.prototype.walk = function() { - alert( "прыгает " + this.name ); -}; -``` - -Метод `this.walk` из `Animal` записывается в сам объект, и поэтому он всегда будет первым, игнорируя цепочку прототипов. - -Правильно было бы определять `walk` как `Animal.prototype.walk`. - -Тем более, что этот метод является общим для всех объектов, тратить память и время на запись его в каждый конструктор определённо ни к чему. \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/2-inheritance-error-constructor/task.md b/1-js/9-prototypes/5-class-inheritance/2-inheritance-error-constructor/task.md deleted file mode 100644 index b97447f5..00000000 --- a/1-js/9-prototypes/5-class-inheritance/2-inheritance-error-constructor/task.md +++ /dev/null @@ -1,30 +0,0 @@ -# В чём ошибка в наследовании - -[importance 5] - -Найдите ошибку в прототипном наследовании. К чему она приведёт? - -```js -//+ run -function Animal(name) { - this.name = name; - - this.walk = function() { - alert( "ходит " + this.name ); - }; - -} - -function Rabbit(name) { - Animal.apply(this, arguments); -} -Rabbit.prototype = Object.create(Animal.prototype); - -Rabbit.prototype.walk = function() { - alert( "прыгает " + this.name ); -}; - -var rabbit = new Rabbit("Кроль"); -rabbit.walk(); -``` - diff --git a/1-js/9-prototypes/5-class-inheritance/3-clock-class/clock.js b/1-js/9-prototypes/5-class-inheritance/3-clock-class/clock.js deleted file mode 100755 index 34fb026d..00000000 --- a/1-js/9-prototypes/5-class-inheritance/3-clock-class/clock.js +++ /dev/null @@ -1,32 +0,0 @@ -function Clock(options) { - this._template = options.template; -} - -Clock.prototype._render = function render() { - var date = new Date(); - - var hours = date.getHours(); - if (hours < 10) hours = '0' + hours; - - var min = date.getMinutes(); - if (min < 10) min = '0' + min; - - var sec = date.getSeconds(); - if (sec < 10) sec = '0' + sec; - - var output = this._template.replace('h', hours).replace('m', min).replace('s', sec); - - console.log(output); -}; - -Clock.prototype.stop = function() { - clearInterval(this._timer); -}; - -Clock.prototype.start = function() { - this._render(); - var self = this; - this._timer = setInterval(function() { - self._render(); - }, 1000); -}; \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/3-clock-class/solution.md b/1-js/9-prototypes/5-class-inheritance/3-clock-class/solution.md deleted file mode 100644 index d1c08b87..00000000 --- a/1-js/9-prototypes/5-class-inheritance/3-clock-class/solution.md +++ /dev/null @@ -1,7 +0,0 @@ - - -```js -//+ src="clock.js" -``` - -[edit src="solution"]Открыть полное решение[/edit] \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/3-clock-class/solution.view/clock.js b/1-js/9-prototypes/5-class-inheritance/3-clock-class/solution.view/clock.js deleted file mode 100755 index 34fb026d..00000000 --- a/1-js/9-prototypes/5-class-inheritance/3-clock-class/solution.view/clock.js +++ /dev/null @@ -1,32 +0,0 @@ -function Clock(options) { - this._template = options.template; -} - -Clock.prototype._render = function render() { - var date = new Date(); - - var hours = date.getHours(); - if (hours < 10) hours = '0' + hours; - - var min = date.getMinutes(); - if (min < 10) min = '0' + min; - - var sec = date.getSeconds(); - if (sec < 10) sec = '0' + sec; - - var output = this._template.replace('h', hours).replace('m', min).replace('s', sec); - - console.log(output); -}; - -Clock.prototype.stop = function() { - clearInterval(this._timer); -}; - -Clock.prototype.start = function() { - this._render(); - var self = this; - this._timer = setInterval(function() { - self._render(); - }, 1000); -}; \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/3-clock-class/solution.view/index.html b/1-js/9-prototypes/5-class-inheritance/3-clock-class/solution.view/index.html deleted file mode 100755 index ec1acda9..00000000 --- a/1-js/9-prototypes/5-class-inheritance/3-clock-class/solution.view/index.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Часики в консоли - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/3-clock-class/source.view/clock.js b/1-js/9-prototypes/5-class-inheritance/3-clock-class/source.view/clock.js deleted file mode 100755 index 87f457c6..00000000 --- a/1-js/9-prototypes/5-class-inheritance/3-clock-class/source.view/clock.js +++ /dev/null @@ -1,32 +0,0 @@ -function Clock(options) { - - var template = options.template; - var timer; - - function render() { - var date = new Date(); - - var hours = date.getHours(); - if (hours < 10) hours = '0' + hours; - - var min = date.getMinutes(); - if (min < 10) min = '0' + min; - - var sec = date.getSeconds(); - if (sec < 10) sec = '0' + sec; - - var output = template.replace('h', hours).replace('m', min).replace('s', sec); - - console.log(output); - } - - this.stop = function() { - clearInterval(timer); - }; - - this.start = function() { - render(); - timer = setInterval(render, 1000); - } - -} \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/3-clock-class/source.view/index.html b/1-js/9-prototypes/5-class-inheritance/3-clock-class/source.view/index.html deleted file mode 100755 index ec1acda9..00000000 --- a/1-js/9-prototypes/5-class-inheritance/3-clock-class/source.view/index.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Часики в консоли - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/3-clock-class/task.md b/1-js/9-prototypes/5-class-inheritance/3-clock-class/task.md deleted file mode 100644 index 59355fee..00000000 --- a/1-js/9-prototypes/5-class-inheritance/3-clock-class/task.md +++ /dev/null @@ -1,11 +0,0 @@ -# Класс "часы" - -[importance 5] - -Есть реализация часиков, оформленная в виде одной функции-конструктора. У неё есть приватные свойства `timer`, `template` и метод `render`. - -Задача: переписать часы на прототипах. Приватные свойства и методы сделать защищёнными. - - - -P.S. Часики тикают в браузерной консоли (надо открыть её, чтобы увидеть). \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/extended-clock.js b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/extended-clock.js deleted file mode 100755 index 3e0bf9bd..00000000 --- a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/extended-clock.js +++ /dev/null @@ -1,14 +0,0 @@ -function ExtendedClock(options) { - Clock.apply(this, arguments); - this._precision = +options.precision || 1000; -} - -ExtendedClock.prototype = Object.create(Clock.prototype); - -ExtendedClock.prototype.start = function() { - this._render(); - var self = this; - this._timer = setInterval(function() { - self._render(); - }, this._precision); -}; \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.md b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.md deleted file mode 100644 index f58d46d8..00000000 --- a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.md +++ /dev/null @@ -1,7 +0,0 @@ -Наследник: - -```js -//+ src="extended-clock.js" -``` - -[edit src="solution"]Открыть полное решение в редакторе[/edit] \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/clock.js b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/clock.js deleted file mode 100755 index 34fb026d..00000000 --- a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/clock.js +++ /dev/null @@ -1,32 +0,0 @@ -function Clock(options) { - this._template = options.template; -} - -Clock.prototype._render = function render() { - var date = new Date(); - - var hours = date.getHours(); - if (hours < 10) hours = '0' + hours; - - var min = date.getMinutes(); - if (min < 10) min = '0' + min; - - var sec = date.getSeconds(); - if (sec < 10) sec = '0' + sec; - - var output = this._template.replace('h', hours).replace('m', min).replace('s', sec); - - console.log(output); -}; - -Clock.prototype.stop = function() { - clearInterval(this._timer); -}; - -Clock.prototype.start = function() { - this._render(); - var self = this; - this._timer = setInterval(function() { - self._render(); - }, 1000); -}; \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/extended-clock.js b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/extended-clock.js deleted file mode 100755 index 3e0bf9bd..00000000 --- a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/extended-clock.js +++ /dev/null @@ -1,14 +0,0 @@ -function ExtendedClock(options) { - Clock.apply(this, arguments); - this._precision = +options.precision || 1000; -} - -ExtendedClock.prototype = Object.create(Clock.prototype); - -ExtendedClock.prototype.start = function() { - this._render(); - var self = this; - this._timer = setInterval(function() { - self._render(); - }, this._precision); -}; \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/index.html b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/index.html deleted file mode 100755 index c226468c..00000000 --- a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Часики в консоли - - - - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/clock.js b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/clock.js deleted file mode 100755 index 34fb026d..00000000 --- a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/clock.js +++ /dev/null @@ -1,32 +0,0 @@ -function Clock(options) { - this._template = options.template; -} - -Clock.prototype._render = function render() { - var date = new Date(); - - var hours = date.getHours(); - if (hours < 10) hours = '0' + hours; - - var min = date.getMinutes(); - if (min < 10) min = '0' + min; - - var sec = date.getSeconds(); - if (sec < 10) sec = '0' + sec; - - var output = this._template.replace('h', hours).replace('m', min).replace('s', sec); - - console.log(output); -}; - -Clock.prototype.stop = function() { - clearInterval(this._timer); -}; - -Clock.prototype.start = function() { - this._render(); - var self = this; - this._timer = setInterval(function() { - self._render(); - }, 1000); -}; \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/extended-clock.js b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/extended-clock.js deleted file mode 100755 index 3b3efe1e..00000000 --- a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/extended-clock.js +++ /dev/null @@ -1,13 +0,0 @@ -function extend(Child, Parent) { - Child.prototype = inherit(Parent.prototype); - Child.prototype.constructor = Child; - Child.parent = Parent.prototype; -} - -function inherit(proto) { - function F() {} - F.prototype = proto; - return new F; -} - -// ваш код \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/index.html b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/index.html deleted file mode 100755 index 4aac9ceb..00000000 --- a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - Часики в консоли - - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/task.md b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/task.md deleted file mode 100644 index 94bee22a..00000000 --- a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/task.md +++ /dev/null @@ -1,15 +0,0 @@ -# Класс "расширенные часы" - -[importance 5] - -Есть реализация часиков на прототипах. Создайте класс, расширяющий её, добавляющий поддержку параметра `precision`, который будет задавать частоту тика в `setInterval`. Значение по умолчанию: `1000`. - - - -
      -
    • Для этого класс `Clock` надо унаследовать. Пишите ваш новый код в файле `extended-clock.js`.
    • -
    • Исходный класс `Clock` менять нельзя.
    • -
    • Пусть конструктор потомка вызывает конструктор родителя. Это позволит избежать проблем при расширении `Clock` новыми опциями.
    • -
    - -P.S. Часики тикают в браузерной консоли (надо открыть её, чтобы увидеть). \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/solution.md b/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/solution.md deleted file mode 100644 index 9cb942f7..00000000 --- a/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/solution.md +++ /dev/null @@ -1,3 +0,0 @@ -[edit src="solution"]Открыть решение в редакторе[/edit] - -Обратите внимание: константы состояний перенесены в прототип, чтобы `AnimatingMenu` их тоже унаследовал. diff --git a/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/solution.view/index.html b/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/solution.view/index.html deleted file mode 100755 index 705919d8..00000000 --- a/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/solution.view/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/solution.view/menu.js b/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/solution.view/menu.js deleted file mode 100755 index 9a91f30e..00000000 --- a/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/solution.view/menu.js +++ /dev/null @@ -1,28 +0,0 @@ -function Menu(state) { - this._state = state || this.STATE_CLOSED; -}; - -Menu.prototype.STATE_OPEN = 1; -Menu.prototype.STATE_CLOSED = 0; - -Menu.prototype.open = function() { - this._state = this.STATE_OPEN; -}; - -Menu.prototype.close = function() { - this._state = this.STATE_CLOSED; -}; - -Menu.prototype._stateAsString = function() { - switch (this._state) { - case this.STATE_OPEN: - return 'открыто'; - - case this.STATE_CLOSED: - return 'закрыто'; - } -}; - -Menu.prototype.showState = function() { - alert(this._stateAsString()); -} \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/source.view/index.html b/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/source.view/index.html deleted file mode 100755 index 20de9758..00000000 --- a/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/source.view/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/source.view/menu.js b/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/source.view/menu.js deleted file mode 100755 index 996329ad..00000000 --- a/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/source.view/menu.js +++ /dev/null @@ -1,28 +0,0 @@ -function Menu(state) { - this._state = state || Menu.STATE_CLOSED; -}; - -Menu.STATE_OPEN = 1; -Menu.STATE_CLOSED = 0; - -Menu.prototype.open = function() { - this._state = Menu.STATE_OPEN; -}; - -Menu.prototype.close = function() { - this._state = Menu.STATE_CLOSED; -}; - -Menu.prototype._stateAsString = function() { - switch (this._state) { - case Menu.STATE_OPEN: - return 'открыто'; - - case Menu.STATE_CLOSED: - return 'закрыто'; - } -}; - -Menu.prototype.showState = function() { - alert(this._stateAsString()); -}; \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/task.md b/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/task.md deleted file mode 100644 index dd080260..00000000 --- a/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/task.md +++ /dev/null @@ -1,14 +0,0 @@ -# Меню с таймером для анимации - -[importance 5] - -Есть класс `Menu`. У него может быть два состояния: открыто `STATE_OPEN` и закрыто `STATE_CLOSED`. - -Создайте наследника `AnimatingMenu`, который добавляет третье состояние `STATE_ANIMATING`. -
      -
    • При вызове `open()` состояние меняется на `STATE_ANIMATING`, а через 1 секунду, по таймеру, открытие завершается вызовом `open()` родителя.
    • -
    • Вызов `close()` при необходимости отменяет таймер анимации (назначаемый в `open`) и передаёт вызов родительскому `close`.
    • -
    • Метод `showState` для нового состояния выводит `"анимация"`, для остальных -- полагается на родителя.
    • -
    - -[edit src="source"]Исходный документ, вместе с тестом[/edit] \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/6-constructor-inherited/solution.md b/1-js/9-prototypes/5-class-inheritance/6-constructor-inherited/solution.md deleted file mode 100644 index 4339ffe9..00000000 --- a/1-js/9-prototypes/5-class-inheritance/6-constructor-inherited/solution.md +++ /dev/null @@ -1,26 +0,0 @@ -**Нет, не распознает, выведет `false`.** - -Свойство `constructor` содержится в `prototype` функции по умолчанию, интерпретатор не поддерживает его корректность. Посмотрим, чему оно равно и откуда оно будет взято в данном случае. - -Порядок поиска свойства `rabbit.constructor`, по цепочке прототипов: -
      -
    1. `rabbit` -- это пустой объект, в нём нет.
    2. -
    3. `Rabbit.prototype` -- в него при помощи `Object.create` записан пустой объект, наследующий от `Animal.prototype`. Поэтому `constructor'а` в нём также нет.
    4. -
    5. `Animal.prototype` -- у функции `Animal` свойство `prototype` никто не менял. Поэтому оно содержит `Animal.prototype.constructor == Animal`.
    6. -
    - -```js -//+ run -function Animal() {} - -function Rabbit() {} -Rabbit.prototype = Object.create(Animal.prototype); - -var rabbit = new Rabbit(); - -*!* -alert( rabbit.constructor == Rabbit ); // false -alert( rabbit.constructor == Animal ); // true -*/!* -``` - diff --git a/1-js/9-prototypes/5-class-inheritance/6-constructor-inherited/task.md b/1-js/9-prototypes/5-class-inheritance/6-constructor-inherited/task.md deleted file mode 100644 index ea7fde62..00000000 --- a/1-js/9-prototypes/5-class-inheritance/6-constructor-inherited/task.md +++ /dev/null @@ -1,19 +0,0 @@ -# Что содержит constructor? - -[importance 5] - -В коде ниже создаётся простейшая иерархия классов: `Animal -> Rabbit`. - -Что содержит свойство `rabbit.constructor`? Распознает ли проверка в `alert` объект как `Rabbit`? - -```js -function Animal() {} - -function Rabbit() {} -Rabbit.prototype = Object.create(Animal.prototype); - -var rabbit = new Rabbit(); - -alert( rabbit.constructor == Rabbit ); // что выведет? -``` - diff --git a/1-js/9-prototypes/5-class-inheritance/article.md b/1-js/9-prototypes/5-class-inheritance/article.md deleted file mode 100644 index 3aa7012c..00000000 --- a/1-js/9-prototypes/5-class-inheritance/article.md +++ /dev/null @@ -1,358 +0,0 @@ -# Наследование классов в JavaScript - -Наследование на уровне объектов в JavaScript, как мы видели, реализуется через ссылку `__proto__`. - -Теперь поговорим о наследовании на уровне классов, то есть когда объекты, создаваемые, к примеру, через `new Admin`, должны иметь все методы, которые есть у объектов, создаваемых через `new User`, и ещё какие-то свои. - -[cut] - -## Наследование Array от Object - -Для реализации наследования в наших классах мы будем использовать тот же подход, который принят внутри JavaScript. - -Взглянем на него ещё раз на примере `Array`, который наследует от `Object`: - - - -
      -
    • Методы массивов `Array` хранятся в `Array.prototype`.
    • -
    • `Array.prototype` имеет прототипом `Object.prototype`.
    • -
    - -Поэтому когда экземпляры класса `Array` хотят получить метод массива -- они берут его из своего прототипа, например `Array.prototype.slice`. - -Если же нужен метод объекта, например, `hasOwnProperty`, то его в `Array.prototype` нет, и он берётся из `Object.prototype`. - -Отличный способ "потрогать это руками" -- запустить в консоли команду `console.dir([1,2,3])`. - -Вывод в Chrome будет примерно таким: - - - -Здесь отчётливо видно, что сами данные и `length` находятся в массиве, дальше в `__proto__` идут методы для массивов `concat`, то есть `Array.prototype`, а далее -- `Object.prototype`. - -[smart header="`console.dir` для доступа к свойствам"] -Обратите внимание, я использовал именно `console.dir`, а не `console.log`, поскольку `log` зачастую выводит объект в виде строки, без доступа к свойствам. -[/smart] - -## Наследование в наших классах - -Применим тот же подход для наших классов: объявим класс `Rabbit`, который будет наследовать от `Animal`. - -Вначале создадим два этих класса по отдельности, они пока что будут совершенно независимы. - -`Animal`: - -```js -function Animal(name) { - this.name = name; - this.speed = 0; -} - -Animal.prototype.run = function(speed) { - this.speed += speed; - alert( this.name + ' бежит, скорость ' + this.speed ); -}; - -Animal.prototype.stop = function() { - this.speed = 0; - alert( this.name + ' стоит' ); -}; -``` - -`Rabbit`: - -```js -function Rabbit(name) { - this.name = name; - this.speed = 0; -} - -Rabbit.prototype.jump = function() { - this.speed++; - alert( this.name + ' прыгает' ); -}; - -var rabbit = new Rabbit('Кроль'); -``` - -Для того, чтобы наследование работало, объект `rabbit = new Rabbit` должен использовать свойства и методы из своего прототипа `Rabbit.prototype`, а если их там нет, то -- свойства и метода родителя, которые хранятся в `Animal.prototype`. - -Если ещё короче -- порядок поиска свойств и методов должен быть таким: `rabbit -> Rabbit.prototype -> Animal.prototype`, по аналогии с тем, как это сделано для объектов и массивов. - -Для этого можно поставить ссылку `__proto__` с `Rabbit.prototype` на `Animal.prototype`. - -Можно сделать это так: -```js -Rabbit.prototype.__proto__ = Animal.prototype; -``` - -Однако, прямой доступ к `__proto__` не поддерживается в IE10-, поэтому для поддержки этих браузеров мы используем функцию `Object.create`. Она либо встроена либо легко эмулируется во всех браузерах. - -Класс `Animal` остаётся без изменений, а `Rabbit.prototype` мы будем создавать с нужным прототипом, используя `Object.create`: - -```js -//+ no-beautify -function Rabbit(name) { - this.name = name; - this.speed = 0; -} - -*!* -// задаём наследование -Rabbit.prototype = Object.create(Animal.prototype); -*/!* - -// и добавим свой метод (или методы...) -Rabbit.prototype.jump = function() { ... }; -``` - -Теперь выглядеть иерархия будет так: - - - -В `prototype` по умолчанию всегда находится свойство `constructor`, указывающее на функцию-конструктор. В частности, `Rabbit.prototype.constructor == Rabbit`. Если мы рассчитываем использовать это свойство, то при замене `prototype` через `Object.create` нужно его явно сохранить: - -```js -Rabbit.prototype = Object.create(Animal.prototype); -Rabbit.prototype.constructor = Rabbit; -``` - -## Полный код наследования - -Для наглядности -- вот итоговый код с двумя классами `Animal` и `Rabbit`: - -```js -// 1. Конструктор Animal -function Animal(name) { - this.name = name; - this.speed = 0; -} - -// 1.1. Методы -- в прототип - -Animal.prototype.stop = function() { - this.speed = 0; - alert( this.name + ' стоит' ); -} - -Animal.prototype.run = function(speed) { - this.speed += speed; - alert( this.name + ' бежит, скорость ' + this.speed ); -}; - - -// 2. Конструктор Rabbit -function Rabbit(name) { - this.name = name; - this.speed = 0; -} - -// 2.1. Наследование -Rabbit.prototype = Object.create(Animal.prototype); -Rabbit.prototype.constructor = Rabbit; - -// 2.2. Методы Rabbit -Rabbit.prototype.jump = function() { - this.speed++; - alert( this.name + ' прыгает, скорость ' + this.speed ); -} -``` - -Как видно, наследование задаётся всего одной строчкой, поставленной в правильном месте. - -Обратим внимание: `Rabbit.prototype = Object.create(proto)` присваивается сразу после объявления конструктора, иначе он перезатрёт уже записанные в прототип методы. - -[warn header="Неправильный вариант: `Rabbit.prototype = new Animal`"] - -В некоторых устаревших руководствах предлагают вместо `Object.create(Animal.prototype)` записывать в прототип `new Animal`, вот так: - -```js -// вместо Rabbit.prototype = Object.create(Animal.prototype) -Rabbit.prototype = new Animal(); -``` - - -Частично, он рабочий, поскольку иерархия прототипов будет такая же, ведь `new Animal` -- это объект с прототипом `Animal.prototype`, как и `Object.create(Animal.prototype)`. Они в этом плане идентичны. - -Но у этого подхода важный недостаток. Как правило мы не хотим создавать `Animal`, а хотим только унаследовать его методы! - -Более того, на практике создание объекта может требовать обязательных аргументов, влиять на страницу в браузере, делать запросы к серверу и что-то ещё, чего мы хотели бы избежать. Поэтому рекомендуется использовать вариант с `Object.create`. -[/warn] - -## Вызов конструктора родителя - -Посмотрим внимательно на конструкторы `Animal` и `Rabbit` из примеров выше: - -```js -function Animal(name) { - this.name = name; - this.speed = 0; -} - -function Rabbit(name) { - this.name = name; - this.speed = 0; -} -``` - -Как видно, объект `Rabbit` не добавляет никакой особенной логики при создании, которой не было в `Animal`. - -Чтобы упростить поддержку кода, имеет смысл не дублировать код конструктора `Animal`, а напрямую вызвать его: - -```js -function Rabbit(name) { - Animal.apply(this, arguments); -} -``` - -Такой вызов запустит функцию `Animal` в контексте текущего объекта, со всеми аргументами, она выполнится и запишет в `this` всё, что нужно. - -Здесь можно было бы использовать и `Animal.call(this, name)`, но `apply` надёжнее, так как работает с любым количеством аргументов. - -## Переопределение метода - -Итак, `Rabbit` наследует `Animal`. Теперь если какого-то метода нет в `Rabbit.prototype` -- он будет взят из `Animal.prototype`. - -В `Rabbit` может понадобиться задать какие-то методы, которые у родителя уже есть. Например, кролики бегают не так, как остальные животные, поэтому переопределим метод `run()`: - -```js -Rabbit.prototype.run = function(speed) { - this.speed++; - this.jump(); -}; -``` - -Вызов `rabbit.run()` теперь будет брать `run` из своего прототипа: - - - - -### Вызов метода родителя внутри своего - -Более частая ситуация -- когда мы хотим не просто заменить метод на свой, а взять метод родителя и расширить его. Скажем, кролик бежит так же, как и другие звери, но время от времени подпрыгивает. - -Для вызова метода родителя можно обратиться к нему напрямую, взяв из прототипа: - -```js -//+ run - Rabbit.prototype.run = function() { -*!* - // вызвать метод родителя, передав ему текущие аргументы - Animal.prototype.run.apply(this, arguments); -*/!* - this.jump(); - } -``` - -Обратите внимание на вызов через `apply` и явное указание контекста. - -Если вызвать просто `Animal.prototype.run()`, то в качестве `this` функция `run` получит `Animal.prototype`, а это неверно, нужен текущий объект. - - -## Итого - -
      -
    • Для наследования нужно, чтобы "склад методов потомка" (`Child.prototype`) наследовал от "склада метода родителей" (`Parent.prototype`). - -Это можно сделать при помощи `Object.create`: - -Код: - -```js -Rabbit.prototype = Object.create(Animal.prototype); -``` - -
    • -
    • Для того, чтобы наследник создавался так же, как и родитель, он вызывает конструктор родителя в своём контексте, используя `apply(this, arguments)`, вот так: - -```js -function Rabbit(...) { - Animal.apply(this, arguments); -} -``` - -
    • -
    • При переопределении метода родителя в потомке, к исходному методу можно обратиться, взяв его напрямую из прототипа: - -```js -Rabbit.prototype.run = function() { - var result = Animal.prototype.run.apply(this, ...); - // result -- результат вызова метода родителя -} -``` - -
    • -
    - -Структура наследования полностью: - -```js -//+ run -*!* -// --------- Класс-Родитель ------------ -*/!* -// Конструктор родителя пишет свойства конкретного объекта -function Animal(name) { - this.name = name; - this.speed = 0; -} - -// Методы хранятся в прототипе -Animal.prototype.run = function() { - alert(this.name + " бежит!") -} - -*!* -// --------- Класс-потомок ----------- -*/!* -// Конструктор потомка -function Rabbit(name) { - Animal.apply(this, arguments); -} - -// Унаследовать -*!* -Rabbit.prototype = Object.create(Animal.prototype); -*/!* - -// Желательно и constructor сохранить -Rabbit.prototype.constructor = Rabbit; - -// Методы потомка -Rabbit.prototype.run = function() { - // Вызов метода родителя внутри своего - Animal.prototype.run.apply(this); - alert( this.name + " подпрыгивает!" ); -}; - -// Готово, можно создавать объекты -var rabbit = new Rabbit('Кроль'); -rabbit.run(); -``` - -Такое наследование лучше функционального стиля, так как не дублирует методы в каждом объекте. - -Кроме того, есть ещё неявное, но очень важное архитектурное отличие. - -Зачастую вызов конструктора имеет какие-то побочные эффекты, например влияет на документ. Если конструктор родителя имеет какое-то поведение, которое нужно переопределить в потомке, то в функциональном стиле это невозможно. - -Иначе говоря, в функциональном стиле в процессе создания `Rabbit` нужно обязательно вызывать `Animal.apply(this, arguments)`, чтобы получить методы родителя -- и если этот `Animal.apply` кроме добавления методов говорит: "Му-у-у!", то это проблема: - -```js -function Animal() { - this.walk = function() { - alert('walk') - }; - alert( 'Му-у-у!' ); -} - -function Rabbit() { - Animal.apply(this, arguments); // как избавиться от мычания, но получить walk? -} -``` - -...Которой нет в прототипном подходе, потому что в процессе создания `new Rabbit` мы вовсе не обязаны вызывать конструктор родителя. Ведь методы находятся в прототипе. - -Поэтому прототипный подход стоит предпочитать функциональному как более быстрый и универсальный. А что касается красоты синтаксиса -- она сильно лучше в новом стандарте ES6, которым можно пользоваться уже сейчас, если взять транслятор [babeljs](https://babeljs.io/). - diff --git a/1-js/9-prototypes/5-class-inheritance/class-inheritance-array-object.png b/1-js/9-prototypes/5-class-inheritance/class-inheritance-array-object.png deleted file mode 100644 index 9bb33ca2af86dcada33a73aa7614e47aed05fe3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18701 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 diff --git a/1-js/9-prototypes/5-class-inheritance/class-inheritance-array-object@2x.png b/1-js/9-prototypes/5-class-inheritance/class-inheritance-array-object@2x.png deleted file mode 100644 index 975c24fce216cb0d5ae2655cca2732e1b91adec4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41798 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 augF%d07~6@1T8l(9}Sg<%EgLLL;eG^*ItnT diff --git a/1-js/9-prototypes/5-class-inheritance/class-inheritance-rabbit-animal.png b/1-js/9-prototypes/5-class-inheritance/class-inheritance-rabbit-animal.png deleted file mode 100644 index e1a75f0eb15bcde6f87a019d9653dcdfb7bef279..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20976 zcmbrmb8ux**spnF zt~#qutva>dwSUj^o=7DHNd#CNSO5TkAT1@P@^$?M0D#ayLw=3=j9qiTE+8%{k|KcG zX}n_qKnNf$CamTGa;^`fmooC2@9w_oo33x<&b=qlEu?lexX?XCdP}FuI#tCo!Nkk= zqALB;v@rjs{meQ}OUtJstJaMql#GVft%RJQtE8v568ts6=VVv+6$3+g#__a|K$i>u z?Ii1_dtS#zrYDF8co;~42e>V>Y)pS2RABVz$8M>@%SsD1N@yQvls2~m)$g^a8~^<2 zx9#l5*UfKHa`8O!D)Ty;2g3km)!Pn?rm?;s)=r(0@c{)E7;v0)mo8j9#E<@hl$gxG zt-zjj4PBUn=e< zYHOz~f5fQIM)DUU??SMg21*W3tE|teichE?H0FtoGy*|DssL%=i7}5B z`jU{OPw5)qM##A;d63R)Oqbd)>o)M(e?;sFb6D=N?pGFVHqHLIO(qeLX88|l{)6~k z$dYEvo1XSFpHc@hhuj~>C^*acB^5cpW;K-@PQ(D%fbq#PML1JyrM$^VXoJgPWN6gd z@Y*^(D#E+!+5r}8$*e7kQOz2{)z!}{`qC>(O@^Y%}_=+p+% zsw8lG%y%l*Zla`fEMl+dvsbo*QF$?HJTCFegJLeHI&cTxn4zRhh?wgAo(eQRxU(q4 zi_HEQ9fb^9J&|rZM2x<3>tp2UVES1^r@M|`c2HISIT{FJ57&M!%Uj)EbQ)b+Yb&qR z;c|_otu6a8GlDF87|YQT;=CE;?DA&Wx{T+(`aVngkBQ~MLKzzMd# z0AC08h@=nOcF;nB>ApnA^RH%Q)O37b^m~8;_m6CX6hNB)6bJ}fjyA$XX^nDiy-{b~ z`YF_|UT0H?&7y4PDx-=$P$r7rWgS7 z`PNwc^jvsGyPhJ83KDctzvdUx2-N-ktIG!{Qsz*-rY z(idkB+_0BN0FsFSrm7N=6;L7ar2eQqx_Qc(eA5KS?p!LKwB2ndh6c_69?MPk3q;H% zC0vBhgtZ>MShxfKCQT)U)e-w1iA%HJk_o__Y100 z&Lr90UBO+Aj&(AMzHHa$a6>zZw+oa(I?75ujE-$ZE<-1w2sH3iIO+)8()e6K3Hc%} zbh_J@i9c4u-spEw(;wr&Uziy1FV4r5{@A=YBVgX1YQ2!~mg`qDj@)@8LP?G+xS@;c zweju_FhZ~_{o#3mdj?FFb;IEK6CLXYbuMr9>yF@+DQ0s~o(_KpqPSwXdjaHc1(^zp7GY9Mk~AMI&38ZD}b@M30UORBX-QYQ?K-!=mUlG+B7 zO!W7??D`%>Xhlk9-gCkmyLOk@fvcTn;TU5QZ(Bp13_!Y{>D;<9mN&D#FKfG>J!)w-9}z=)%g!4tE+R7C-+FTs+DBgMa!z4I`^PkqLS3$-F&$!#-UbTs8%eu< zl7^O*;q?rUfG9!cO7yoJ02Kb<7gR6NwL`PEDq<6KtGPF%B9ihG{UcP6*<)JX7;f)gns3OZpcJP-Fw#iDQ;TSRKCGh_+fz2v4?D>`zmVw-{T3?h7 zGRUeN{I>1;=$SB!5q@AsENCg`ezS3%%&eS4xGLxLQGGETHk0@lM&M{G5Tb9Yt#pFot>lhC${)6D>Z5$xD>4GD1z!jsX`y*hyM#{oW(*U++ij|Elsp?f-dM0;5+o zk(iN+F}{A$i4z(tC9T}qPjI#mxB}j=j&zVp7s-h?i?c6g2?saWkjnD4ri1>Ws|9A{ z_D+fRYi8M~EbTKemufo#eMJ+|dHCYPV3W*SuqLqjWlv+`$ja8lGf z2SrpfOK*Q+U;>7KIx+vaF|L9p;f@QM@V}R!C(?XwcWk1EPUZc&5fef|!PI+<|F>A>gmJTQY zVQ5ll>_OAfKy)JcoKPI<2z9%`1C$WCEv_6xNaN}Y8ggx?u&UL6ZN0u+I8F56*KUkc z(}9<1weKw48PTlivYjezuTufxF>(%-BWNI1M2#mOsGb?rkw{|(Gwik$*(ok?A6D4%WzyZKb3 z!$U>wE>MqLrDz6(I52U~Xm^q0u!sjxV7{3TZM1*BGhXk4`&?x#YNeIf$L~t<8$Tte z_M8_%xCee&2kdFqI&!G@)IBuXT?9wo>0=zR)-An*FVQYxWrUa6K&iPl6EOHywGO;LA02TjWkqMpP0be#>T6hRvIy`LFL z-_lujnmtoUcS5K703ZwAY~t`4ariHbX{`di?7Noxtn;aknd)t?p->y63u)mkj>Byf zmszgg=N8giDHx~w-qIa{6W=7$5aYH66V@}F2f88Tr}Fd5Yr4dz5CA%**074rFRGfI zFHcJ`?!3Jn>{%(Q<6zj|uWJ}ql~neC&&lWlZ<_HJO?eH zZ#oWfTZ^hHV0c!GA84VO^rz{?(sVd0+nxc%i?Ge+Vdh}tZcXOWDy+3&;!nICBR&cf zZB{PtbqD{C{hf4>E@n_HkQjgjfHVNu4{Zd_^dGkc+tBqBEurO_pR-qF87QPiy3h;H z_Jgej{iP$&T9W-HFe^2$-MVIIq`LXwtpI+`=3%TAS^GS=$13a^mMPc>5(Qo40 zADNA)I8~I*93HA`pqcqV{fQUZ`>Ef1GzD-yurap=NC2(R%+Kr zuR^9o!*-A{{J@p*^iw$^I9YBjWp!~8_5=WCXfg0ec3|C`Vt#c!k6~P@rOVJBtqa1H z;k%GK{dG+3UF(+HwmxqVS|(m@&pm9%LdYOnm`Wgs9cE3tXqr%OOsz=26rMbtg9oOz z^ftZ<0o%j0hk0KGh8<76Cf@Z*<8;!RYvrE7kC2oO4G)pksV8A6+z@Sf`;|>SXf|Q# z@&4M>?K<>GzWbEIfO%|yH#*J!2Ip%Hk_8^!%+qh6@aH_|{@4c(^17kJrxbdGB-P3jB7P0GK`#5e{}d+=rS?=+3# zu~9ZXR}~~1r1z!RCMDP`-a2)ix-Mm zx*E1QO++|+fT$*A$I!ci5hX`-^)Lrh_*|C*$pdmw-hGSteEAv`xBDJoiT)!oBl&h= zm@dNHr=!(0_-<^xpz=y69@M$HN>deZIpP9f^M{jpj&DB$>%ii26mT4MIb$8sq>S|w z2BMuS5h~x*_DjK0GU2L+GW&n*whu?D=F7%>Qg>U<-=`#~ybteIh!BxFT^o552M^2J zEfYb26zu&WM8x$-ecK`2jO(?sfD%azf`pYx#3R|*hepZF#fT6?uK+`argFi@XsO9) zyc)_M36(tKuwP;4KDB7*v4rCM{;S0oQA+sCIFnMr_qim7#uC=Sx}+lXNWe+lq)oas zvX8-lZGGh;RaTYaUJ+b^6a<=iC`z#v%q6`xnk`Kq#kX(ApY@rA2&fuweYSX znt!^RF&91!rDDW)){(w~J1lG&9WoF`Rg$czdHwaFBgJ*sBO;7>pwmWy(e1)IMOXA$2JmC>8{?J^1JCmB8S1w~wFeRf(lRDR*bTBuSM0Tkn7r` zoEqyLhjLOnmFI-j`?e1V?^WYD>45EHG&JYbAyn}WPcO6}&_YIU8brUo65)(%4-?B< zVk2%tdvHTAeP!A2%rk5usXa2D!eyS)<-l&`2~W!1Bzzn!2+7d`dwq7)q^Dw*?v7}O7L#iquY2l8tLbCmth&Z zn3P{~?KGEJoAo=8|HC*P;ivN{o0=hT5RNSvjh93Y26W7KVLP z!MjqF8n|2I+B)-|<=>Wb9lnrTV5$H7>+Rx6Wk3*!hC22S{&40Ev8*$ zLxIoYdsLgwVz;++^L-?N6}^oKs0C5pcicaVw+lDq_&qSQk-Nc6bj}8-)h{EL%U=*& z?VE`i%;P49v1G)%Y&h@Q6^^KV573s(Ki$@}RZtbQz;m$W6a=+>-(m=|n%?cQ;*AJM zU?%e~SjT$aen3FYQN5zIF-=;QfqOo|7E(fi=>z+b`ZfTKbM)PcS!gUl8+^wp$y4FA}N9~%#(A` zF-UKI7;Q_h=A=ckA$kEeYG#GI3S_H?uoq>RsAm&!0?e=D0|Dj@*Cr(-NHv+_Wbt5- z00X$Krt}tB2YfE)b9(M&|DilVI?Y1fC23assnEbZ8}|OP@b0iZVzqw2C@|T1t4kwX zp{NctdnyD%o~-3Rmp0sj-w}nivvq#Xe_uOY{8+QyhEuK7@Ex zkKd5$VHHH5d6OG0sXy2Ct)DNFG=k4!d@`f`jXF|xSA~!fc$!f-*bU@gw>DI@W1y&d}b|PCPC8g;7 zg=;JQ9O(Uikf9iGDA_H~+5duGW#NpQTzmHEHk|ry0qfSq!#Aqz^q511Vvl*48wP6c z`1cL1oi<}`jm$6XkiiP54Fb>RtpHJa!RI!&K|BMA=Ip7z_Nx9$3e(}+&bg%Lq0hmC zrEbpzBh%2R)ux`vfT=iNewAnPn)vOwWW6DHz z-c=K1$jAVdl%wO&VKO&Q$<|Fc9~5erxw&F9X7z1E{rkHY#E9=?*EO zRDWW6IZFJ~`CxmU(z~E$58#MTehyFKp1{bF2DUG*9nC9E1{pj2?I~9L5pW0ED=>KH zef$gL$p8a!J-jJHvv0cYHb{uvp&9ea^p>tM-B=m>;{ev8LtkGi zi<7yty-N+B7noEs0=1^hLut_6M9E{5ZP9RzjNUP)D>$hu5FjSk$RcB=LaH9^oIz~& z#EnH-LyD}bLe-SRn~AOdt~*ph(>QPZBLl#O#wyv7{0zX#aVWHVPp_OVT9^cR#f=t1 z^+L&jIED=CyFOlhrd<|S@UeSyn^&R|Xb>z!P3LxZ8-gBv^$8wS4&(k|ZJ@_h(@8J# zcN9NIzfvOuyxT4|eOIw9Tpfa-t7d~7eruQ?&R%o5AY{s7^1h4u&?uxN#5g?iXJZz= zaH?yIv5I&<4*{RU*9rl)IHl0jY#S~Mk*!1&i@<(`o4#RT`nOa?t8y>jz(^abGm?-| zx6YH@j;o?2D&Vt1qi4hPKW9)mC!6b=?anhE??p=n_J2GXL!XKqDe+UbF+u zYu~qLIyUFVud}9Ku5ld^_;-|Ke@p)b^EN@0#o|>D|0|!ECNBlcLs?ogt+fIqk7&eQ9>0Ui zwwLY&ZnaygclOB;{I&n=RqDZj7T&xgcvb-!q$9ntzZGJRuH!0Kr~3@St;(m_G}2g_ z(O&!EL%{_6gT0hFs2P_KXaE#dOc2a}Ig8|4-BwgYwTHS)~j7 z)W$Y~*#j%}ycQD@)$|3IjS~Aw8$>weI1{2I8Qks)WpYwCE%Ab1htjhTFc(Roe`W+` z1D1v`rp8xcNqrcNjl|Lpd5&<6?4EA4bITdlHyA6#f57A|SJ?4YEFaVT)}c4p1tWaH zgI~K48M=VTt!rcOKF?U7tWlplkqz0+j_DW8r)+39E7V|?;u`R)UzFIhT7;X{qMJ4^ zxaP#^jfD2l7R84Rn&*6bM)>S^%y z=#}3gB0INjWf?{yL%ZLv}L-C*TDAtjybU z3J$y-h1L=U&_=SWIbul!gab5C2(VTnf%Rcuqi+>kOfdkYuQJNVRF6t(gzz<5QW`ME z0wMS+vK~f8loI_opct3Z?aNn7&`wwq{Tjf2{>T~uPd)qpXD0BUB7*;o+kVtgp}8|Z z)I6%dhWdDPknF!SNDhY>QP9`vV}8|RyOa4?;457L`B>K3!n1!_Umr=%$t;{vAc$v~O8;rUgk{l@bd84Os7j9g?$&|oo1*SNZ{nTF}|oWX5nq-$d? zw}$=msOunUpZ(5$el1RaS<3L@swWd6xVz*&axdXmxo6_w?~jdDl? z#0SVz!{pQ=?PGoj_nFf@7=t5&aukz6I6PbsA;We*$KyXMa|yzKeV83sk4+AQAv>FQ zkO$bn)k%lHw?+p{QNa)sRnth@ZMW)@JO27cVuUK=T$bL3{}y81mlbOH&Xg0|h7$?K z49dYmX}#WHE*OaHhp`+byiK(sgN8T=T@Sq?rbvRUq7km6hhM>%S3J~e_iqvrK$!yh z55^6SDo6(Q@P5@gGEdf*XXuck2fe_WRVsox?dTz6tiW;u>9gTMqvS~GJ-;`}=}=
    W2V3{n|->AP3DfLlxX=xWab11C?)QeiHah+WI_MoQ=zA+Wq*N(D?1rNP(bD^D>< zqvEu#=A_D8EG8o5Nxtsm$7gx+eu0v0=2@c8pYTeZ1Q;m5{u15S52LC3D#@n?x8QsF za|6E25u~Aum#^Qo^g9-NrU(rN21o@Ff%6c}zB?2I1?MI=O^zRQ=P(&Yf=HeB=6%9g5!fPlHbh~khjWoGO(vAk<7B^R?;b8vxNFpKM0k*X za97r0mLp7>KHgy(XerZ*S0&*T6n!+As_X_i4d~4>oA|71Dvji5OIDbMB))mc*xtW7 zkP(b=zGBGWyCzY34gtgq_?Fz`X(6KI5T%ji8o6HR&y3wyKM{e}QjpQu67Ia;e~1)J zlN=E6N9_z7PfTy7{E@U)FMCWNyq<8mrV_S~_nqT8;w&V**^K$55CTsHjp1WQf94kz zWv`q)EEG`&Aax;=#IpX&<}{0cjD$$5r&573@u+#y#%@@pu)^-TO$)+mSd6k$@{mFp z?dl+(wsV<9=KcV1eS^Ucg7R8zRQU0a}!+koO}QGRVACn4pYr2etdnk&nC z5hT!=EqYrVAM^7f12TSiswpk-h}#84S~zS_+u>56qMu?z-MrU<4|-fKb;pcs(R^uaO7@6XwHl>M~8hV@tACp94N_f zxzvdnLsvYlvD5&t1hH`nv3a(3wN~>?YGXLq zZntjbWo4NEaccyp84HgS_!+sg>Ysl&4<475R<6oZL(?NkSJswKL(`?^5tr)%PX<3e zFw;gC2wTaYl?j7RrXY;{0Ib@Tbg^!T1y-PgT!@qSQ@3mEgvYek@71`EZ=Aba60a6K z;(zC`VCr2ewM}WQeF{&V!kFLP*1%U>ZFhb1>4zS#NrJ|rHi~g{C^;JN7$mDY(&}ct zPg+cgMcmVxRvc^YYz?jju|<=cdQ{F)v1I>ZP0#F~abL07E?9&0 zN2lWi@AMB2R(m%V$Tw&s@`f;2#3AS_v#+W>1G06 z{WTiKq2Yoj?f4~N$QQF=F&R(ttJ>0oN=tv!cZm!2F3kVuLNIsG>s)W}(jFpI-wTw* zAH%v;AH+%!tK(_19=wOozjhdHwP&sAC{z3EOYHqZ0<{_sfu z%{=^(FNvw#&GO;C(O>DYY#qE9=OKxy z+B~|2=KW`p`fa%+q09!j=!d?0=m63I-n*Zx@+?z;<9KCSyK$|*T?Y{(*a+eVfR(fK{&MdO$KIb{$iy4-HUkoR6|^nW=V zH|8puTuj!+KE4NIg!Q|`^tjOI_d6HyU<=Z34oIMmwEMCy@i4oeQIS`S5t$c;$uP;C z1H`D~PXtNE|34aF3#d`GJF^!)fJpjlJ$q;U<%U3~XNJXt77=x~@rIL|6q zC5n2T3(rUui1bL`fE#)|d0H#0Lf~5cK)d0Y%`ll{#GLFt3JCyMW+-mjqf@UdkNroG z5B7Fu1&mr$*c<`{Rmi*WxOTCo| z#S`kev+TyVm5LvhMLj$h5tI8n2KL$<4U68CZjK*FTUQggw^z1`k+5a)rhW8daJAcJ z5v8{h**fFH%5CGc6i$sZwsrVBEO5TUQN(FO9{x})H)UCQBO^%H$}>kd+rOr$1a^vH zFiRlyDdQUQ<#5@ZR_8R8k+xEjqr6&ienKDAarc|FSG5fy2cUtUJW z@;((Vs5Cfbsq075ViCe@8guwvx%xXXs30l^4ZI&i8kDfLNh+VuKTbHvE6apPiCdYC zxBG>~Hydh{$`)&V{@Vd4CF)y*ocP8TQHr3dPxLz%1;lvMLHx0VMl&pSZe8(;1DKnm z%0@m84U91VnEuL|`3B{mTXTc^DFfrJvpT%Fni=DP0>+|X!RVlR)BT?oEi^1dGWNw%N1dIgH1Uv&Bp{8$(1v5@N2dvkDH11Xh$eOXwQ*xT zmUS8a!~T$L9>ZcNj=#bRAlo+MxLN+M^pB9OHT$|{WgT0baDZkTNMSE8hVRJbUr|k# zXqOuf2%Z%2qBMdA-ITizG+00Fv;XdH$ddgZ?gqt!szoVvxuKBjWvGqlSs3ADR(BVY zcO=_e6d`YS!D1y0;AmiteN-0+Mhed<;!Q#9WropuTI`nJc#8t^Esg)}yEE%Zw&~>O zk;Hv*76}ZB+We~oOQ$e?=;HTeo^%2P;`4%0)YgySK_s8h`J-GutxTZ2$AbXof;Tud zt;W5+N5cDER?qx%ADAzhLn!%3=lJ~}zspdK5UKoEZlt+Qr_-zmTm42+I5Sc|lH@tT z;a~0e9osWvYJT5sl+XU=Cj>y&)p79!V0p|3?8ph&2}-`GX0}c{N9sI%2oE7eIuB_W zTbv-pk=U{97#eoSSw0NptpIr3F5LFU7~z8ZHu%g@2N}6SxcV*PK5;^YN|TsEz!9lu znM?ys>XhKLl}JRUoJ?SE4!EP(ep!7fSW3%vA?Q36H9$n|EmKD7EUCaoI-7Cj+fhgg zQM=%uM>3lrj@5MliVEeB42G46$%IEtMR&c`9W^Y+c}L|G1#|+CZSx zFQKke^S7&)HG{*xTS>NL!wJvmVs`Y6EC)(5`-TtN!_FcO&%LVf!H%bqXif>&kF8n6 z)kOVWe1;GMIw5-{03L9J?q!lk=Uxp3K_p|Rf zzVkJArAE(PeYUU?SPI^V{bBF{JQEPtt>H6CWW$x0MXJt>Iel3s4(*rsh-WqDVfm9L z`~Cj0A_3}2KGfiqCfZA+62Q0sliZw{nE3a-|$mA%h&5>dOe_^l);o$Ywe`c^ZVe!d&CVO zG5Z7~>?!=duN3I2je#C#3VH5J{hHGE={^r$ySQI;r2FFvEc@!T?Yy=LR*-~T{CE)S z-4GE#NQ_g)E3akcuBHm*hCH}lLfFnBDn}c_9k6Io9;{rw1OI^vPGFYUF zV08vcZCg#VBW)y>uE2N)S2AdHZ020Ssc77!L&m_cLn-gljShbVv1QBg+e6gR$3uNv zZ4v}8PUx5Svd)-i6HC*hzjh6pk_CNnkNc9-!1JSy_7pRzv^?rZ>Yoh8cTxcy|2YDz z_tiWi7G>qeb8+y45=rv>2+7Aytqu!p;P##zZ1$m=u-=KvaB4K=gCvkK#1Rew5 zCz4BTt0JCAO{o|zf^6yaAat&u_v+|3QnBD!_!FMf&oj{R+IT^0m0~UTMefGlTDHTJ zVkR5UM?>EQSi>_uGrh%=mAPk66c%QHg){c>j37c_dKS56-a9oq+Vd0!A&Ur*=?Z_X#ci_ zPn&fHtIW3emJ6PRsh|(?;!H0kiL!?EeR;VubiF zQA4!2TYlP({@6iGhJGpu2#(tx8F}7q0@lOV294Ty?WnZ_9nR$Y9^s3}ziGhXF5Ucd zn)$>w&gr)XRhwxj4>-MyR6cLs=v)n<05u#v_?x*( zJKODh+C#;1kL%l7GbO{0m=rGD#OYI;qv^}@6FSV2N4y7>iPwM|$^E!BELG=o6^R^< zc<1U#4BdE?K!1}7Db>D9P1bd~m7&76$If*|a6Wj72nYEM_UA=$Rl`47-CUnHhP?<9 zH-y?eTtRT6ZvT{vpPRCK!OLQ870k!8u=1uy*&@*zky)gzDiwU$iceT+Xfi{YyM+HhVf3Th$V9ne zd-Yr>A1+XR{PfS{i$(dMCU4aOwRgon)~gqIYtpv)2{!pO( z`>SL?Z<@c%uc60K(*5BEmZAFD4xg$$kD~aE$0~;mv}zPYCBF7LS|Ep|`aZxtuJ=yl zNYw7y!SC5FeRqf&MjDj3n;V)y9!-!MSpyB9GBJn>EUYxft6}pwYS4sN``e*}KGR%D zK3CB?DeM4^)z zt8m44pp;6B(MJ=Xu9R2Qtg{lSb~xUSyal5;JK|mX++f${1q)O|H$lK)QY*2sNw1$G_u~9GkgT@tGJHH zkj4mGhKS0cz~{0E3?Q@|O%oiz>XxsO%~sun>I{Y|OEs5O-?9C(Oj;0aRSjIaD`~o= zD=$vSN`ieuqqFn#ima6U9^)#yn*+oS!xr70@zmX|Yk)hHs$RcQH2m=C9{&g7gResD zKeMUQ0XZAK&Dl2f-D+bUAo?dM#>z|(YK_vVZZ``K`X| zI}a7E{NHqv%EnbG->}jd*ldp+JNT{H+vR=W?#&{_;kcC%As4mz64^}1J*~#n-nftX zXB%nl8K-IpiQFtx{4{8`Q3rQc)=*zm*P&P1~cyC zuRLOY9d&)oiP9mrU7%G^5?27V?6O4GmbxwIN;28oi*#F`O6b6uf^+@jG}dOYeG+V@(o=hyQ(jKLJ+K7ad%6P z*is0ErY)1Ui5-BRT2VL#rMm1a9HQ*{!(L{(@{^aS30`xZh?}-mpGBgT{1?osyUT1n zKI}$zkkDBC@=fOH(wDbA6-(>Q?4Sc?6>(C(lVM)VP5O?%1gMSIMGw}s^v)y!mou<} zgyCRQ#Wo+_#&DeJaV>f#wSFawIEuWUT^R_VwnKWFcGLB@2Y6mw0%o;yG zEOv0hj@iD4ahEl;Rvn@Iu6pLUo?=MI^L84hSysBO2VZP=rCH55w8!GD^P9CtU@LM2 z&2xk87YI8YM~9N9e`L66v-c6$K}HVGyT_cicm`dWgk`<5D`YC>D^*jb!YsZ+ zqc40sD>^PMf4h@3SNWGj%@xWL(*SBr@+NSm%Tc;v9UMH1ZLN})keE6gsT~h*v!_jU zCeCarU)NosIyx_U*9M{znG-dx^|rzL;3gLrYJHb6-PPrsg}V^K0lkVE)tw>#&so{{ z)B{n8;1O1VoOC-7|K@ZCQa)b*zb?&;tW7DAI4tn}Z_^MXv2;UJO1zwA1!;=>d);=!|&r!{o2FVe# z!lcy}2PptFB&4+yLCA|yYi{of%N&Se}UMK9NJhnb%j3~#g5+Hh_@ z0Ya%w*316E-hMgRc2G#i=-H#hllGM2Cq#O|8ZV8x1AoEP9F0vQITrUt2Y;6vzPHn5 z*upQW?#Jc;stU4`q!_Gl!B%{~%wl=o9#f$|)`0fKE@tEC2fNpY(?raNPqrOU5|j=# z`22T&UH;X@p{yYhF(OEkAI$^NI8+cEEu{U3Anm(dv4XDR!97)*ejhKnh!<-pOzEix znhMa+*rGRH0ESwP>|T(iFvk2v&y)G{_aL2=tdJ#|0PYrpa?)9!A`Jui7^|eUx9(XE z{FNT)ZLzf%tu)AHg4P?7b|b*VGL~t`r89iYQDRCLv-1ipz57w+9Dn4=3&Cm_y?^ZG z>~1Ej`RZXeE1Z094b&aKjte@3d=xGm1&)8QF=o!(ki+ysEm6c}u@W-t=Ff@Pd3Ee| zq5fX>YS@ZnqU|El-7hK0$WA>bdg!58wBO5AQ__!RnS+NDvyq8?d#ovxMrPIXs#?@E z+d4lnq1kc|CG^kqbT_DaI2IQy=~X=ORl-n>znnr2P-2TvG62_}y_52JlzasHOIu<6 zr>)$A^{;-u{yQdJ`b%gHj>dc)okrgPjt`%HU(w^+Yd$dTikZ~tIxi%9O3)(H@c}E) zA04!v@>!D~kq-VpOSu1EgzZWTNR_qjFldSnu>24sHga)T+h!*f0TO?ptST-f4-N`& zfZJYtH2!Cz=4Cs!8}o(SY-=fj5xWGJDd#_q$WclLYLpl6D70|r zvc2*X`U?03*#dvx7rqS&9<{}c2*dzH`YlpQwx%}l!9@Z&KO0B|VGqNNIVB1x{-HLK zz!3eH8W@5pSjLWJvS5yL4Zx%79 zH_&j*res}`_t|sLkvcBFP%zl4vcL|O80gZ)i_G&Gv6blySOLhX?bZ$q=z9`8M}W4z--W>2?=2zJdll<>{LqrN*Sdx-zN2EPK~NM9#u1}Y$q64Dy-{-r z><&52!RoI{p~b~y%>FRj%ys7JvP?GInzPG1Q2G!AOQ{VH6$58FUg{Opa(O=i`c9J}fnKKR0(sT5w z%6pg6$EFE`HfuW5O2;Fl%2oNTZ^g<|!YN;GBvjMA`c{vy5=BhD^A1jRn3iV5emk>) z#DI(d`!FrYcaeSfa4iTBYxwVkG!ZIA(IVF0S<`;OZvRy~S58JBv2nh(r6ATwl6SrK%afBe)^;^JE|(A3JYg)PZ`ZxD)-zzTO0nC{PJVEH5MJ zv$U#^K!4#=qk`Qs#uO=Wf~1w+y|Q6z$zb|Xi6Rb=2&ZucN@dV}{!%2FvmRB>WQ8AK%YX4z)W27l)@AHmXIme;l4Rv&=w0^~#Mm44l5aX$#$p#+~y&+2*9pzhPxKj$u=D}Ik4nH2O zt$YdiR(t_dq+$g@g=kjl(M;fpZEc^2pn9XAZj3)I7SqWW%Wk{2PM*0e=4J_HB;oaj z@nm2uFH))CLD2Jc%g_P4l%k|;qEJ4H`aK7fc|G?&34e29e2@|F+Bz)1J;I-njHi26 z)fsHm7Bs)w(4>$vo;8I5F1~QfyshyWJopjf#`Gcqf95e|WqWB(`V74*$b#-dntC|* z#7->z8pfI`YLnbwg)||E=h?YYE@i&g%Uivye&ydct}^B7rH>IKcMq!K=IO9A4K8tk zA;R2G&uQdJ!Yz`ltc5|t)Ko(PCg0zz80cG>L0d@rd!+UlA(my{5`dU#-S-NsUA`Cm zWVm;|#nV6Ge=c{X#Lh3Ff7Umyig@v@Rqj&brpM(YVF`Drqkxb?!~id1(fF|xGtAKO zqut948nYVb0@o_l?O^7_`r^2vpQHSKmk$)JRn6$85|rZ)Wb0sFp@C=Dh#p_!zdIGFrAd7qP*Y7jP9I;tI^yJ^FS`{Hb0X^Mp^N?D0f5h{d9 z4J_^ebP7|EqU-=e)pcs%(H#Vf1i8MkoBAiC4!ghCUE$v33G&$>^cySmRZ0kP#zN*< zkNn*8-2A^LWuqHQ>2FbqY0XRQhg$8J$)CY$sg2N!zDp6VfBb^^LN{5hp(>)g4#Dfg z{b_c~5Z4cd2T{v*ls2o$G7P|eYf3a=;F&}!FVNf48@60L#PUDQqU4jJkn9;zTypYPg4%P% zs@q+{>o-H*0ll;o4Dk&S^$0e5e=~mRnho(MPX8M-GZ`~7*5I-qhfJQ6F{9v*aPU*HK%srH zxwEU2i90(2yyAadQFWPcIdWGdK~dcU!V#2TjHbsZ7Ia_xcGQ)WRwp!OdRh7GT?IcU z<*__WMnnn88FSi-`Z>)#&M}Rv7nS_fq>#&0W_%pf=JZMdfLbfHWX2`_iCkNep7cNxY z3`mUfEs*?k*W|7bux5$%KPsyf&pI%CD5P^vkcGjvH`Euj--Is9~JytXLox zw3E_z9B}6=_y7Q4-oO6>$jC&QET?_Ab3ejSokZK4azV3Bnwy0g`G?F@24V3Rmc|Tn zex{(wmk4QNuR%qyPvqNGZnST10cvoxd`Ks zpHRz+SwBkv-5rTkSY|K0um$nH+@MczP!bmkcw*+53${vf=ENR?dWq?n#58v&<4Oh@ zR0)TGnjWAMe@jOMn*1NAR~FWGv;4P*htaDdT%yFBNps3`Ub%wziWR{DC<|EQhbegl z6n(l+FWl$n-P~C|2_VXC{|HQTEgnq*L$oRjLw?!H6Pt;uQqwt`tzsk9e$pV~&eldE zmmLD4h*Vl0O__#`Y42V9lhvEJx6z%YchHy^{+MNnvzE8ZcNI;F@4-V^<_*71cDS2w+ce8jGnD>z*R{h&3CDqx zeYT_3TkY#Wkdu<@Zrr73y?R{I**EBV84|i)h;%Q6eufK=z!ti_x-f*oZT`kh0-oe! zL>b}bhup6oV8{x}3cwbfGlLq`FlAiP_uEKwjbae3l>~i~mKVWZJO8|ObAq%eVP6+c3M0Og# zHb%(6N`yG1A@K4MXuc_EHG4-k%(<^dI7Jt2r&T72XA%t{&>_8w}TmGFu&SBn3wk@I|K zgYV*aLX0S(RkfAcTPa1T*;c5%T54B~Dk}D@6|{HFHmTZ0&7k()T6+^C_9k|1;z^(T z`2(J}zgNE(=Q`K*{haeTG3nY3@wr92326Ku^ouodbzBk7l&NHODZK2!gU1sJK@0Mf z7GYfnnQO@MiEA*TU2bk4?_Sg8yYrmxELFX}+MS*wo9U5$718Z_-2L{L$wbS<=~{wZ z?nvDlocZ<0jUHYgK|Q^TE%hIMJ5~6gD=3hareYzfE6Ny-o+)(f+Kju%0>HL#TWNxK z3_bZ`*n7t#UO;As3b-L+0w&Ro6X~SY1FJrC}Wj@`fhJy z+7?C_iLrHBS`5(g9^rPq;%<6JF#Qvbp>L(bBP`GEg?I6mXx7xcTz%$|9Ug+k$&o!_ zzh6@Y;e*G<3hj13e|`+T1hD@FsRmNDl(%OZwfP(51>cG1D>Wuu>y56 zV~ZWeZYt=zug9K2rdZ~AspZI~$Czz|m7%TH+**k(LARqtUH-{*$sRs9OW*oZ3t{$9 zCDhEbRgF!*qwy4{mF+N>l5)_--F?Yi+gtHOh%ugA_P?0$s?9d-ad(FIB&N*&1wYI} z%ySdFU52{cTe|$h%*opzj`OlqqqV3tkL;X)YG)Jtx{G6b#+bh#lkuW~734J%UsM5f z7nvZX0~rohSxr&jdvvAC@m(<5Y4#Da!ToC=pz@?&1b5XM?Z#*d6b#*}>b#Ra@YUGa zTcG{d9ahr33#x6Ok8`vDSNco*OsxZ5{P8BH^>xXYG#i1q8bxkH;Klm|emJt|lj_0N zjhHj@9z*?K@rSMUx$MU!FX4??2FA+0womr0G)=Z`Tt+(UB7K^uj9(cF2FW!aTcy(d zAMdf**aL&#hg1@&S&AYqshPm`bJyARBCHMUPy+;NQd~|gLWNC|h)VAk7s$7?#fE;H zfD3aB6n%jfcdgDF{wxDn1v5aWUQWjOwTVt?$*#XD4B8+$1p**-=z0Y#hefrV;CCv` z;pGn*zTH$=3C*m6ml95n?5uq;BjWAz373sRH7)XF_PFw`IKZZX@WWMMGy1dP8ySpF z$i4&PnH;|Q0Qd@WiWr{0u+pJq+0DE(pw90%7;vhAp|Sj?_oyBx z)*1wXGT%6X0v@NAyID0Cl8et{e(7tp)c&I#HdQf0M5By*HIgu@< z#?O^ane()&$l^%JVViq36$s`+!d_IYD)u$`Oj6}j&kvjG1IiW$*%g+Y>Ux>&RK&@e zyzFs3`;zyHCWvM5_6#R|3UFq0n7JWWNqtJorVu3z&QP`FzOiOa_NZWxg%55t7* zcsHFaKPiwfFiKr}-;gTj5^-yJS|)xSO+BWkVm=+ z0DEu<5q4DlI@)oxpuO1F2*Wdmaz3F~f)YVpOR~$Aa z=r7ZWu3{ujBZqVQ8Dtc(OtTOAlx;lh83EqqxGQLkJ~Cgner8^y zMR{KMVZ21~RN&h?Y?D*1M4o&`nlUe}rTsZ9ZG=G9@wqf={L;#BVtoZ)zY)D6|D=V03nEBbY{jVP$7B1g@UPOH2 zTov+`|7PaK?xxg>5ar>#)y=WKvs`k5*SWXN4ox&qk>YTiMzSVAoL_*ykQuq2>`cBzxV4Whi@s%ZZ`klq=AJjl$=tqHa0X2* zh z{-{_c(6uD2ez+!ry!hNBzdYGDzzFw`C+uwM{T^{t@a{(+hXT!`(Zrmlk-nW{!lv)Z zQA6Vd=4rhp2|zWOgHq+VgOm6%LSJRJo=K#l`KkkTk?yP2eggh;L$N2&qwgQUsRE$X zW|^o8FDcCc9@}}HWxD|VVM8SrGUZ!^fp5Albnm!`*Qhy7a}j;gyX77)y89aF7a3Nn z&md=V<~aF~c<<`hjNgL|oU=B)ZPwI`=)(^)QwXeA$pldm@nc2@r{qw-B)5mgemgkY z8~yC`wc}wI^#mz8TRpbdV=k1%YC_7 z3&;GVk73n1Zo9}iU7xC~Yf(R#PoxI$G?&o?>fBTpKbCO{v*Q%Xa3`g0GsZ6qMlb_5 zg!Yyexkn614|gn8*G_u>IR%TJ*v{oDbS4F*s*){!M|#Qnanwa{2c=RwSIzzDSi}r% zUC)jfJ&~Vo37-KsXO=9E21`7JoDh9a|DdF!L=zmDH4z}?ef^oP+DSS$SY40Q`a7N_ z>R7npCvHTI8y4#JMV+q*$KPw(sw;e$|8;Mn)dIJh{9Ve0V1eU1Cq0WBv0Ix_!UcZ$ zlob0D)W}w<@ugz&o}_1kRE;pwWySuntgs(AxULo(eNe1nb!^Hh8lkLQM~9zdr|OqDX=g$zwU%Pe;96E zemz@!AO~iD%;TP_`X%*dSbxH+ms-b9?PL*3BuXk!y^UvODsms!RslQ#=S^l0PL8*@Z2r1 zh{dDvx4f6YIKPf+>b4+<6`_J;)5wKM3aha=Fc8~p&o?qL^38g&F_?yV$HINK5x@Ax zzZ^V^_-Cp=fx({k^N>!>6-#!Y&f{J=!U&I#glbga32duK<~FgNnBxww>6A~;QP5TW z)3kJ!RsG-;p>OE77~fQRq!sxf+n>+clW@{KjKtuDp4J%=zIttqN@{ ziRG<&fo`P3KZ6JSHDZ^^`O zJ$GaW@t#&9FJj+yi7e~^oBT>DFX{#VX2v z-`A!hqQb!_=S^DigDewJSMH~Fyua#S`Ml{myHfb{z5>ETvVPTl(d31$-_F8hkwkGP z8EF*rT+Z^|!1u}}EA`+-RmTY*YZ_>8tqij0*7`djV|q4Gsc{mPMBjf@G9l2LR^7ur z_LQfOaqN6|&@s#Nbg*9KegrLI+dK#YA%P9r;w~G^Ou80i=$*ufUW1rCQrmMeKw=v% z5SN@p>+~EtB;ubytgHV)&vlifiUzcm+!1PQH42pfH2l%Z*BM}V#kVP|-I{8c7w6)k zz8sQ+uo_SuM^wlHMZ_(KYpHdA^^SeDOKqgd+gE`yhAd^S<{N+%Naj z%sD5?UfJ2n$zEAA;YtcpNCT!ZY2nb;a8F3L+56F|OkGiS@^F2VjP*X$5GS0qrr73Y^uBM;jDst?_7VMsXadL`( zmU>bdFrStkQc($FSfl&W;1&GUSDM814p07)4;9hVTW7NY8e3g!^>$y9z{b|xT-`t^ z&f;Oa&S}4wYYi5G^c&5%x3N;1isnMA%d;HX=1aohBtqV$?Y=xU*Gmp<&cb9vAN#4k z3?I&RXM?c&B)awk0u=&kj*_ITGT?S3`+P%{mX(A;BAoOCr7}uQm(o&)T5^W-m5ImX zRqJ9{oLEo_5#4&Yz?Lqv@LR3M_!@bytEpB7uL2Dn!lV_fZsTI4&MqH-Z*ndZ&@|%9 zwop?!hA?ls)VQSZ1rcr*)Bh`OLTlu!y~}=?F+Lk%<6>x3-@vSDQK^2G1bKKa%;>6*raeT)X9zkGcFWuX=^yrX+M1KfJW1y~e z!K9$+@ixT|vV7`{i$u$a2wmgw@k!y|REIa95{-35c$GrJ(UQNVC$Ih7wv_x+S#!Du z(*B`*>3g?Hjvsqx_*xhVX3cjlkc1^=@~r7nawS<9r2h|UhZWqR%nvhfWy6$wm?o0n zzsX((uZ@14Euw)YQ?~N*8*7R)+<5#PTo1%9RjSsX_$1RfYvVaLBlt*wpv+Kv97isO zon2QuH?zp?6iT?h!`ubu8dFzYF{Zxoe_cZ1AAux8OQ*75OizV{N=lb79C()zUF=Um z-%6@(G%y$U-P3j$Kqlig_!oe~T$cGF(rx>q*n3-#b8e!kONmI4!bPj?a!R$>5*2a$s;u&^FGqbQa|12#{ZE51Zvo|aK$X8A#KoN?LZUFAl zRNU|B&hlNXYTv!m+2Tz3-+|W(G*t-|+;6FO0)(rvd@G}emECC@wX-&s(+uN2b=N_S zd&|e`)jRDQmg%<(b0+cq1cgb9H!@>|zyhMz@>PAjDz+hFbOK`!PbwmXBBo!ht%D0=P{|ebmbWP zOtb>~4}_)DvOk-2S{uKsKx_M{fn*o6U3>)b0UPV}m8zi{KdK&@$%Ha~w%*i4j9VM} zT|h$u&`KS0c5XeteG`kUcFtG}+!>u|qG?-G(G|QFpn2}XF52Pk?zsPGC{b*uml4Lyf#2hcx5`d8I+2< z8y$W0ZfhTy`Sok{kUXQwi%SfoUs`R#FQ2n2!}ol=$-*Tb>YiEX2zNMHsd$%U{kCoD z48qCgP1ElhAJ6Q&Kbl2sc?CW`CARQf7Z*xm?m2Z7yK|txd6}))GIdcHxW+8i@O$wm z=qUV=6Iv(Bep`2D>wj!TTyu5%#O2HVGb6Xe7HA$2v z`ZeMkh>$vCcU<_0pHbRD%(JO**&pD0t5`a@f+7zdosLuCANiUHuWxin4+AqYsMmO$ zSH5nCLc`6%LQZu1s<6Jshj2&1iDJ79oY)$yN7=ZgsDCw2;mq?p3OSZ%ZQlrS!|wmo zb~qJ=3J;d3(fD(RXtwEY5`uKYyLP3-lId;88g4>67@o0*y3*?B>w$QpWIY z$z@qtl(6|;Cw@D&!6t7N&{QpLp}=|2`5BGO`wvO$+X{~u7yPwavkjGW|M?aSF;^q@ z(f$jpFZ=BP?GoE8lS{?2!8v`pfOfm@i0PKS#4t0Xx1*&-5#7zm*&!1>%Cm4T75pYm z8*pc%B1d1mYBWpPwElu5DhoeVNxDc8JAJ_L4ToJ$_wFPIh1>1hWMlqxnvstqdGqfW zIm{xLjLVT?l$4^o<}BU>1(Rs$1YzCRIB6G(bHcH`L|AHSU)ejc^-KY`oN33rID>^? z!zHHzp@i{8SfKg! z)Y_2k0JvRNr!nNEPmYs`lTMs81P_ZAddU?)8^~$BGGk8da*126c z6SA7tkaV*);W6ujXK-;adRB5i%=tZDMEoq!Qp`ABjY%xe>)1R)+2BtaIiHMA&}z$D z8qVJ+QA#`(ctn)qKiGBh1BBn47QdSrB5++(qB)t2J`Ef!zWx@|FrXg!in!tBMY?lP zK_GVVvRnY2uR3)1(s7hx3m>}};nb*`aj#d4e$T8y^IJ&WIniM|rZ46sXI63b=tkq{ zDAsEz=4{VA(%o?V<@Pu=PK(U)zGES~$Je%IW%^r)y@O*_kZB+>`27rNMW=hCDCn+G zG>@%NE0sP)axLftDcUN(k}_#f-#;9O*nUiE_>0A%+(fJXDF=gosxJ)nw??+i*d&Q# zia_G5sU$PtuEe0@X{aWj^Z^&Dt<3II^tKe>jz9Y?1Bo|vNqN9wEi|01YpL(TT`3-| zQU8TPe}7O!r07hWD#utY?{VqbX%exsQidF8=a*v%N{cuAoMP!+Q`>O7CTrP+yw!AG zn$vcl#b1Q%1Y>1ikYySWCvS^Q|1sq2Cu;pC4=L`}((SgDx}4XIorahXu(QEWr;HKS8v z%W>l=L&w9k7kxeU=iNfk&b=+u9%k!ACBE1@B$7pKuw70hJ6clcT}WM{b6pkGemvB| zu3@(G+e##?lJ=Itv%Egx(&$wAaepoSlVF-YC1*^%*+yQao58IL?nN((sL*e{pY2h} zt}L!kbJa{`?vN?PFy>4^d?amAM#u+Z>vS=c;#48)k`QLQ56Tf zk%#jPg;yQp`D9m;zUo){1UvfIH5H!ix<@X8zXL=dQKoMRw4N2;6H`rh!zu?7mFq>s zZkLOAOf`$Hf33B>b_fKeaxNF{@qW|wm6M78j%P1ku(5iLK!(DG(5Ejqza|o(B2UDn zjhRCH_QGbbGDQ^s+nZ@<)v*kIeGalPDrkBcBXj-#y;RWxhsOgCJt9S?m9&@1!1MOPPiJt2**Jw3sd6)+nm>5X4n-7MhejC&?!PgJQD$r=}* zEbpxsH+N-TutZ0yhADm%Y7x#YhHudib+DX?J&TQ)Tqzkafh-4&3RGk!f7e7L?x{d2 zs}6zD8hfUv)X!U^2RJRz=o5HT zyi*U3;n-)rS23Htj8a8fb?_fA&|yY`xLqVau<2Ox$SHRj%Z!AC2-HXBq$y?fnR*tO ziPg17zG4@nb>C>uGvjeprbTrRPPe2x0L|>}M47b3-)`blu4HjRanapBbu_yGVLr1< zV_Ur#-=CzdTc3BevitfDk{BQCkHT7rD2RJyWeuPESHqsh*Y7ED&R~pW?jYrySHS&zm z0+V=YdZ&vQ2a@7}&35Wn8C}<>5w{_~M8v5AF1qb|M(@106p4u_{rb&AAkLVt%~&sv zR6Rmf2=QPvu1S`H$rc1uqe#yqpL-H^-9DRLXF3eE8!M9gTVDDDB{cjrN(*014Mmq} zl78Wk{s4v|@Jg0ewYWb=XL$x{B}ki2w<(=mlQtqw=l&bvo?ac-mJi&o{wRS={lLxM z*9nuM0*V|5mo=W=rog_jwN4&=3I2yTay@K}*x?h>-+&HXv~he6a-;3oq(n#kq>BJa zlr>M0GrVhU1@oJN;XUb$Jxg_F_nv)jtBy7EuVf;xaIJRTCC?t&gMzHaOU2%o29u?4 zrtw$%uQyLh%du5z`$cC!xGIcwG_@7}wMaWo)P5yUPB_-y#Vm2y#A(HIu1R@#(TSfTfgG+(u z>gK-*m?LxDp_3iHyxM>~KgH_Z`&$7^AC;gR?<05j*3R&~yTw9>>(HD0{f=K5@h-jN z^)wVfzq8+jOC$zLl(yu?Ef1@b8jCSCIQ%*UK-rVvY-qunSo624CuOOg&9HU~Xg z4>NTob0ruc#u>jdz= z1kRqHjki5Hx?A<}Gc-B`evsPer&9`sMpWQx&9yqA({d`jx49uqM#Wm&bo`t_``AgS zEtNA;j9W`*i{6Q>$I!jS$m2e6~%mFRrGVCz+qcdLTd1*CsE>86o1J!s*Ll%7h;oG{j{TOq(a-CBar2|J z-u$?>%S>Q_xcoF59>;gGhYg)B2sK(ncMs;II{u#3znQxf6`Tkry!{w> z7WF)8-ZuT>wMfRG4IaUMY5*wxZ?q+y-US5`x9-;WJZDUAkZ+M{-?Dy#d5WwO&yMh% zGZ&PNK|xdKNF1-FJDPk!^@Qn6)Z*CrET6pVTvywpI}3;;=4)1D4k7$VXP-=b(QK~y zof%x+V&~imQ@)9V?qLI;`S~^XCXEJ>IE248nefNuuvP8P{fZ-W8f{Bt@Wl!H&o+KD z4Pw+fc+u`{y_8=%fLn&1gEW!8>Afs>%$&S>Y}GA=@KB?TCx)sD^WF;|ws9CEDJ2%W zO18~H73>Op;kt@oiBq0^Ky5;II2p zBUYqN3dO_95Ik{)sgZaDnGVGOS9iSC2eEM0Fd&zge0 zfua0~zcG_X=~;fBE#Ob}+^2r|${%*AysDBI+knl7NFWDAoC6LcQbw=(uoG;Vd&oBePJMZ(sys4v6g zbX~`0epA;aIDjOD@%pQD4ywv9oNJgF`Mqhd6O3E4gfU-M`^Y(Q1 z+4MSvp=pgdqL)!`#QRtHmu{C)d_I*j{;#GsMfC$`C5rV-%fx&2?^?;5)1}t-#un;`!lI2^&WNI14q3bX~^m$(IYGIySO9ti7$;aS6LWc z*VT{9`+nr$b{lZi2y38BQ>v63 zOo%Y+zWJWwyYD|~-@4!b<^EGw;D}$}&OL{vDm-Z9s%8tZ1O#p7hFdp#$*3JDPsAf` z0is0Om$4yS|GxLS@tULNaNMA`9MOS`mN33=u$78FR;lSr+w5{#wi>yIP}gm2eNJ}< zpU~?w@CjY$bv2r2Gh1Kzr|#m#Co39XlBuv=_{cl+9lp5}N&o%m-zbO*nce2>NbT)4 z23furwn@G9uXGy?7d6jv5Le zsSvYICM$G7vYs8V?IpCP?WL$TEh{^=2mL@N?T(w;NKE2VH^3ST89a)|Nr8Y*3}IWj zj-$n`eTUx>&Gd>LUK_dX{$zN1DU-)D z>x{~uCYWI+bx|*z)jYr5uj}7twtZ{f%3dZQGgRc?kd0?|d_}I245EXdV6Gnb`evCt za_3E}RfU@67HhDc7kKy75RDK?w)p46Ovtk2S72xPt6HUp2V%3qes&IuMxKoz(;ah_ zS4)%)l{+i)y-Nw%*tfM;FVN6oNxFg`V=q3P3bJ2|-VEzkuc#DwM$}RUsF=pGW!mw3 zr^U=SSm$$nbOW|{jg*J#yepo;vKSn z_FObd1SaLk&NZ$fFeIDMkbdIlV%geQl;`^8RZy27CId!jyIHoyJ`nIqBj=9{KzA=x z{5c)LIlG@M>N`q4Hs)CC(*s$A=veIqb~QncU<3w(tT|~45jwJ5D}0vdukFVIKg@>3 zg=*5VleNGB?o;d68eY}R6*zt%!jy}VY$D0H;w>m$Biws?iPz!dS@A)a>3LxH*eo^` z?hT#Nq?VzP)}W^6tEj~na$Yu^BBQ`Sex&?!+XCNA@O zqXc2xijrR)LGu+pJZ7yh?uY>9EOA7)8ijwXKdT^0h@icaeV@1byX>k}(V%=*D}?|_LE>4HlfikZADv~#&mZPnQkRxI(mj0`T@^&R=P z*J9s~GN+1^vF7kkt+oNC39A-GC!>UaZ20D6tRsBNNN!S@8icXoARtK~VE!Gx2t)io zxbPRI?CE~tI`5HsLz?|6+WBA0Bo6RBbShBI_PJ*7R{Xt0AU?@-9#EB1fDe6y!B2mX z!moDur$fGjIr;!u!(M#g1@T`A2)J2BfBeucM;cT!3P$e#McjoBA+}A&68916 zA9ft5@6x&s|Jw~8N{Em?4I>hi|9Zy=(-YUS`M(`~_zLkUyrxf>=)W%O!u=q1{Qb{5 zxWq*=#AkGaaDV=Ha1d}Us9-Ar(Er&W*`$MHrszV4_WTco11Z?bhmZf+5bn_cL-3)5 zz4{NtrYP77BJ%&Z^+ydD!o$~3yZ-M-UBW%VU@JHT|Ji_mGywbHGWqi$G~|23KM)~n zh?|_^1B83fe&HbvhV)5Cc`H$*!0Nu_ih>(wCjuKfQZq=+$7ttl;Qs}%H^}l=gRfvz zrm)IM2R$uQIT_mQ+yQf*C{Nn${cz3ye(qgab-pX3F`j``+!3VCz2y)CkHMJ3ZMV8J z_S4Z=bN0Mu+-RaxWS)}R-{sHzLWTlG3j^GGB2By7Wq(+>M)LRmoSg!Onq3!F8g>Sv z@6pLcWAaCB31hQ}y&4oj(pdtquVC<-OkiZs5_KWBCwjM9#Cd4&_Uml*&ML>(>U!bN zlH+>^9lFXh-;1|CqggNU>{on1q;?Jwo}Obz#YYcTj2c<_meIeR!EjZ^j|vMFoeJ?e z;c4=IAMs!|IG;j$F56iD?eT0q{E?L8&{O@< z*)5YmhLtr!VYxcXxIvH>(h=-b+V`NNB$;aro3nA#m!c$;_tlG**3+m78FpV6CP^8R zQ==)I`Gr%{&{?o)UDZ#eA|?6TrH~et6a}>u#$TI_!c0uinY;w9M&XN+su7|<^PwfZ zBrxU;H`yRpjfJ(0gRH5b*fy23e_R&M(jRxv+#nwRvR@bv+cYNpQ*)AaYAxoT{ses8 zcF?Z}b=YLl;Tr3ok@jJBn3y};6fLXb)vMbbh|?oLCUI+5Qzt}~e9j@?8qQdxl99u` zSwwR7rIOv$>b+3%+U4a|cPBqvn{{l1R#YPwRWgcdiKYR0bVEw$s5HoX5xYAqH4#HY zIJ#u5K&-st$pa5P7u^nJMmO~iZYG^_1~%!>;j3mdS*cT;I$xd0oG*BCe|?rHj6M84 zC~D(4wjJGjON%tG9O0^j3qLRM-1^d0ZQ2X)bUSIpLOI_c?vi@iVi|;RnUc3O+D~soIE{5uP zJOi;?V`_z@F|ecVq|f~vg%{A+f+SCUw$}3wRzm2;6SUo-Nte*e2P7D)gRRDs~}*;1cuvTB{>wUk|nM< zO_=^wHf`%Y8N~OLFEaaGno&qYmY$won!IYkgZeYg?v?6gJFtdIjeo43Y+ZC3cK#<_ zzw>ki%GjepvH^q60176*435E=#r16lmo`7&d1JDu@%F^^=(kqXk1$YaJ*R#;9J=?? z>^8m58}3&4IzCn_z|%XT7UrLrr6c@{mnoNdHx|vVS0-kT=1t?{| z3_+Lm_e7&}%Vgmx-P29?xQpJyRLw?@P?)T>$FA{6qQ8yaHfUUZMxF|2_NA?sq;q?rLxl;?$Pca+6>*Gt6bQ~vS5X3E8I7TG*l5<O#zZH7YMuKTGcR5|h(yWtmzY|oRQU$zq$W`OB+7V=qfI;I z8~^5#tk6>!Jy^QU>EOFdNnHv?q`T(05%Nbfym00z$jNRXtu<{}*VQKBZ98s9?tZz{ z05Hbx<=Y%H9cB>$OnPu}2<`mKv(4?SNZ??gvU^U|WvnV8cNx>oH+%t>C>_*fsiC?0 zD01zn72gTm=P+}R7a{|#@-Nh1UgPg>>J^_A=G*p;#E%~=zi}zSVP~-v=CiiPdIQuTy3nc3IAkw zTy1;X*I*)JCmnfMo7k{9o7iOXFxE!L;JL^+6ms&ijvFbGAI1ow;2(T-ZQy_!N$CC+ zW?>zdR5mO5vhi`AYtR0$H{>{tOW$Bcu(nJ;VgnDA0NeUl$ZS6i1WSFIKi2jNtbUcK z{)3R-*V@JEJoE{YL}>zUb}S0!O(`cEG_1Wf4IxT9+a&)G+%Xd@054{nMl>PVd-J-B zJ7YQ;FGbXH9H3Ofo!`o#8X&iei!>isMa#VS8I<0sG<=3r!Mj|{_-tfZTP#km9<(9~ zlkv1yR6#UzoySAHf=t8rN4lTh?;}En^FyeajynOa40{4~12GZb14*RRnv2Kyc6=NC zm);#JhdFD*i9^166&IVgvaW{J`9SKkqg6SH`!P!wN?oAZvOzuVd2mX;(2U|;-r*YY z&xeZRR!hZ0mvi#eyOJz%w?Jnsy)JD6%xuk9g4--y23%bdB_a6PaMHv3zUyQD&f$XV zFnDT)OAR|x3_67{<;NHJUAIn9Cf$bo*FpqzOODkmb<_D1tS@p^rSXxRRT-*iza{@l zUTCPuTZBG+u__n8sb5spHJ}n3{3m;{sv5xK-wQh*W}ql_!KnZ!io9;;!e3wZMPslFjN4 zUR5h{PM}YfZebu;a0&7;-OncO70&HK%UyxKty)*wfS?pU`|O;pitP{oX%d02e6O+| zeM`WHNfIWHq{x|O1g=IG{zM^oc@7T}cwRCeQRyXOls35Yw`^?xN=|zY(c%Zsaf%ix zEhENaGVRsvd>tv_(%pNA3w-tA2L4BU%sys)Z^H)Owue7-vW| zv8FtgR%>294`LO_Y~bhe5yzDYXe!X#NRd$BbhWRvs+UenA&WKfZ=S>J86P2Ux?7<< zWyL9(+X`okw1&_oe+~OVpZ^SeHoJBsP$Ko}6S7#oGOp~g2YD~%HUp*JVlHN3vx=2YqH{FydZ$A}H2=`d#m_8^oLhOT z9H9gG)duTn&}%>(qzB`WGTk$kfRd`uZY+xDO*lmo_+1Ytf?gkk_?tA`*iy|kE$qOr zmmPB9nkoMkC;r~(NX$Jm?8S?jHM0iWsbdUTB7%BlbvG@)?*rNKH=%m?NZi0XlXfb$ z&K-_F(73ODb)Cz$WyWTmDpXmIFR{&_mFA+cgPyl_-`$Jxm{xb>18?c7Uukx_FYQB* ziQVoD^IysJ3>?WUTG?SaqOnYKM(Q2eegsx*d`?|6eTd&BI%OScXb!N`f25;2PoZTs zJra6YNdAe)){lD_sv}#-YS*130_&2vA!}|L41)|>${LsNLUxe+&`UZUxgRe42?MhZtGg(HmA}qDooyL3=GJ3c zvfV7s4s>fZnT&nAa~_IfeOp{5e!Ju;EtxQWyZ=_QNRp#?Fbv)(5d6nAauRw{AqS}C|cMIoSu7=Hf*2^40<906-jQ5%z{5*G^PjLaI%-y0#AA3)66N+hi- zB*IzTaze)A-KmXMM9GI`9lsXsmSVd)Ec$=!28rIgfcHITZKR)Ipt2y|2-Mg8V_)ei zZAJ+d;R7MJxpI3ubRGyVjVKTiYH9zd?)J+y`h1Qn&Xp!p=d49A&@dQDzQ}74{%$78 z8!ahUnfFuqms4ZCkq{>oSULU&29}$g|Mv=cMj4lMT zSSg0daO_$i3O@z;3;!W=*qP*FM51lh-bui7fcy~AbFNjsVnq{&*F8{Xcf2Wk=-(q3 zk#zKBLNQOhj>hO&u!*_#r54jiL5deXMLEDHld!;e z&)ag*z-j(;7$0#uGR%A4_z|2MzUIR5{>w6>e}Z!t$<@b6mwySJ5IDuW{3tOA`CihZ z51b0JZ;yu-|4a9t!I??8(3b$@_maZoR1hJBXzqgSgzt&tCdzw0C4%Mx{tf|y#{xDH z-Ey6G_%Fi*pq84~NMA}N;@2Rbju}rgY*gc>XK76KCI?`;5^%bLUdX+49i#0>^F*I% zAKlMdf0q2NoVDniUFbec`MmY~-P>3a+V&%q9n8@}6ij!^`H=yjys74;d?ncj`m;#$ zc;y!lmeb>6S-}Sz6;Epn5f8-d^Vul%dMk) zz7UD~3wM$!)qD!q?7gV5zrWqlye-#w)?J!5ijFAna6U=YfsqW7OLEQuf_Qvq$Y2Y_?G15fe zOP_<=iq`nu`jRM$KD?E>m#Y0!og;og{b1Bpea&Drc7}9$1lNH0786!_0nEfGV-_z_ zd}3-1XSzJPt4(|UcxS@3z#$gq)&*XR;9#elfUZ4fcu|B>A}z%z>QZGeBNSjUYWVs# ze$bY4%@cQR;#bnH`2MD#s%8|~R;a{hEx2m;j@)(4#M;k#?S6rNHW*UUapGi6wf(6@ z^Mf!2ymEh2rABUdpN{z}c-a&i1Gq_)oMEiy;xr?f!d{zq3qVc?a*pfiv);Yl8z?76 z8=x;84O+LS5rjJeL;BJ>f+wQdk4a&SiiDnKy>aB#G(`vZu5YJFuLA}zdOMcV;ZFj0 z+ls!4I_*B9bJ}-Y*K0sT>Vyj4)vQF;5O>D5r_%_eowXV&?|GU_J%MXGXN_3wD$qgE zR4Rf^OcNmX%=yHC!@G9Sv%Y^COS@j~z}6M>W@#N29COFoq;b_%OPX z*Bsipk9bc=wZ+O9Id8ST8J`KYIBK<{q;*`xyiTW+2V3^hIyA*IK#hq8 zXWap+QOaR9p?(jF8;NOcF%+wIi%F+}UQHc#96EY;DuKPmy0E{1ZoX?*M%h&#hQwl; zUWgR&`CIJGEPjo-?M$=m{Z*qQVyGqIuai8O4XIH{NWk&II{&Pf*m4z$=}OFL=$*4J zqajTByX{6LHz@Ypn9F80Rg|6efUM1-OL(c?w@^W|cf)cd zgQ!y}NqmQ*Jmy2e-OV37hp|SM0%nd2IBoa`=aT39 zGmhV`N4d<_k3L)q=W@c$rjybzFse?&x)ShMny224Jw%2|)Aw%}p|D8xHH{arX3`;v z#0U5W{Tw`iO7cvTjj&w0OW|dmw!Pa*z(;wi$$Q~bh$*biI``gN@c!sZ=1$`%r3->= z1MYJew3?jhd^^#&fw}>{eq$gam>L@i^t58%pSw??mZWKMQqz;d5@MwS0vnH!`Nc8y zh0@(hu$dY!_*U+WPTq=6Cwu(#rrn6R1%8S%M<6d7ih1kRQ9oUGhaw>X%J0>1@I(K0 zzm6}A^`5vdHJ%EwFg=cj*GsW+tp4b+aLnjWtDhWa2z}H^p0hpU0o^3k9zM^C<(UNj zd9uoIKWmrQ#46%lk5FU=aY`5dmTRgEOOA(;vMM0op-*1w6@BoD4C@1Zj}b%1(&7<2 zKffN;Fl*@Dg!1Pld#8ppCzr!^z%R$w(2>osWc5TR^y|J$K98#Z}hHslWcSjE?)*APc( zplh1NqfGns;PBB^i?zH|4%sv%CfB<>3zYoDi*YYw9u6|qT-TB&oLDoW?N2iE zOOazBH@n^qzsleB;;%>1Or0>pf6WS+C+or5^A3ud{Fs z&@Ldry(j7DTCl+4MI!Js1QOFdIR`Vh9xPD4`B_DhDXbK{O$KIp-?b3oVb$5FY~$cfVsMdDLbpqA5*3iP|p}yxU^&}QUlz^_-#~W3zT#Vzbv$dpQTJOe9;gG z?;eeJPg3@Caxu#;;a1CJgGJTy1B~o)#3S<4Ip-?qIQZSIO3M||m%DPyjPIys(a^9) zRuJxeV=}v$`jnPRchLasH1<=LPQq<-LK8mb*l{GeD$x4+S0)n@AIOi%^QoZ)0Lg57apt(!(ATpb#! z2>~5EJi~1Rw+TmD$12ED^n(jV7Lq8!U%&eVYj}T*x;jpN<+3bZbhB)2{VC~Qr&Q7t2*gg12nq=FUF7@2STz>$u-Y{-&Q@za6u_#u}8| zas_mMVZv73501*-N2>m=<7NTKie=I1)K40AVwzb2cw7#94=bgu?>hoIuXv%frrFFZ z(r&p|F3e>kt`O2yHF7kmoN#}EKTDn)owGe@akqa6e@8{t|6|=Mse*~UGS2TYifFDc z_j0c>PRHWM$~$q*is@IGSyK?)`C``Yz(evjdzRgtx#TI(=S*fRi-R{+=$a~LuLHMt zw$Y!4Fma}g#cf9{nZW%`JUC-s+vO~_Q&|e7xPO25xC4(nRC|tfpoh18 zG#1Nts_ay)JmzLep2=6zl)qKIJ{o|Aucd!IYoC3k#xcGD)KWW!eEcD-hgK>kwrx|# z%^jjf``Hg#onos7T7mQg5k7L$9#^o=aP5~$>g*My>oy_pt5qo116So!W9)^Lq7!EJ zTIn#i-eThZnIOp{!7ZX5Yn>}`hEAiogb-YIklh+!(9a(K39kFqek~wX(q8+1Ost)& zQsMFJC6!vkZlAJJ;`G5(gcX|Ma4=@g9X{9b2XN2UrPkFP*f@#FSzkxJL0QQ2sP%r($+U-kuj zObCPEuZ@R=KgmSg=`#_mQ@0p|yr#%uy+p<&j#aKf8yH>m0Y^>B-TpLnBGzH*{7S+9eGgn=Qbf;ag!DY6ZdwE5~eFjik8R0(edoF(cWQcPw>8i zXtG-NK5{C4YdN4B5V@4&_Wd)UNTh0V(z{a#XZvvIZo~a~s`d0igqpvxk#PsTjlw|6 z64*-n`P!{nvv!vM`=s8fB9S5}54cy+Z);U&x4k)jlIs_4$%m|qCpSzp!Z*8p%r!1& zx#2A>333~&PPM!ateYT^AM9}8kvY9|<>pTOA1=h1Kg`SF7JsL%{gY6_YJr|v+MW93 z7#*O0cTGj2Sng$j2#82OcCh-Jp?2YVEbp#lk+O7i`FC+4@@|Wt%SaaP5kH}|Q9spl z*RP+*fz|Go#OB0{510J)sjzSU!Y^b>vLSr|Upf9dn6M1iDV(3Dxi0e+o}nnLNpGy| zGEzpKS)VQY=a{YCGX(`Q|(35_-oBX~C zl+o=Rl|l-Cs?WUj=;%$Gp1(H8KOO%(#orN`MGn>i%_J$iC&lzpY zQs503b@Wrb>pJ!Da()=Bu@p*X+W=)9JSe2gl6X>J`U60Vt9wC)Sa?FmYp$mmp{5AN z;X=i?Yvv_g%|3gb9`ij#TRPc+ADa0iFDs-D4#e}5QoVG&duv$oLV*i?LAhuXUH71% zaK-9ql_7-E%1I;@4!VPc)h6AS(kObbAD&MqS|b=na5K=40~#& z0fDP$P?b-f`^08Gb3M@Siv2gf3BHRdKycB(>SYr10ay1_uJNZ3*7!Lq!$BpbfDKE` z%7|ZIvlddmrkK97E;ip_cBE2=pb{}ZId)izc8XEYsrye3q3M`d7E;W8Zsto z+pZsiIeY+wRwL$!>Sf@@!-970T+h#FbxB%{&5wv!f+#IAkG#*?PZxuwD;o?-)uN5W zhCMY&3x{JytKZde^P2|u#&wFUD>%&pQ>HADT9A#@{Xsgk{Vykf9*rnLG+r2fy3$~R zS`+PzE2AM~WoyP$U56x(fMk;ziVN9yCqEpSNRP~#m1N-jYcBvRcAZWQl18Pxz-PVy zF0x^ZdOcGIKbbZXP6ky!Ths$Og+J}A9x|_AwbQ3O&rMH4GfEy!9ZUbUqC_>%XbvIS z;lmj9o{=XULgLB>6-nxXg3ghS5C{e{$o~hvzqaT@-@sH5)rB*ujrnrUw$;};eI@Jz<^(>WGDwK7M z?#3t-{O#Wc_0H@NfEgiG4_fhD5o4G(LImX>8x{|iV@yl)5v3!+yt83A?`#+uyw`thSkgNiwtP8h^A7w+H=M@{ z(NMJ5#zV!YN$B_D5Ku@zAx5R~9Dt%T|1KNfkLzufLRkOz;pYU{)z(S&_xk??6#p;e zDvSq>mCp>ijje7RJe?jj<4vrr#{ab~nBR2O&5i&|aQpDV$F7L%Cf}P3C8^4|>Rkdc4Pyuqk+EmC=`ZQI&l97SmHBe);->mic#Rw%$#|73>Q*elT#T z8pUT7a+YJC^tFuM;X#iP#LIW1kl=|2PdW8V7gk1`+-`-UJ?dU-#1`v+qMekP0_lQ& z(9=!44vs~+*%~jNw5~ZZ@E^M@Eb+d2h?is+4~eVSG{3ZQ4dH0rcYwF+;C4~pr|hO@ zPncb|kgM+8GX%tc{{_BcZH?F%SxOi^uT;K3C6c4yh z|KmY{n4Rtr%_Ytr4Gg;f9DngHZ^B`|zC7a@ znbN5w^C!h zI}Tt5LyHElO$o5G8)U^-@BM1$^;~lm0mp#IaFV?uf{{!NLZ_c3KJ@4?#bav97&o2w?BhXjM?lu!a&B7C=$J7N#w z=o@ZA>q^(uQXv8B!G8Pzuc?qxPe-@FROFYkimt05FK|F^;zNepZ<7$l!D#AWTVpWX zs&Yy8$z5VjENjMIg*EPZgVVS-j6t5~jm?(85|H-DYfRke(pBJ_EJU<$t{YsBxw>_z zb5^nnw=KnS*+p3YO5VAEe_2(Fs(Ml)AXd$PB$0(zeh`Se)u_gv1P${n50TRJERT5u z=|7ArEl~-%Wb4ChJflj5I0ymO>Oq81D0#yk%~`-P8x^-qv18*clfd^7$poIvhirUF zF{LazeET~hQY6iB!DeSL&;`7ZGN@>(Ow;^}iFt3xItx9I>6!0;9qI5YZRi)I`M1Hu zOEG@mEMJp;0Y4*SoQ??e8c_1=L!h6}>hg0*GQl;v{Y9I;>FAa)Nh(mPrfYnJoBt6P zQ57LW($G{h@_C-xa9QteuAi*FA%n_Sq2;Hku3xOWq_Hx}!?f{B`0#U-X*rb?%1u*B zvSi#Zd4_HZ!g9g>hL=(4UIz&OWip84-A0MFm|@FOZ;F9^ffuWhj8;Uny4(vKVkKSu zIv{nU2%wv9-yzwOh7EA;e0DkhOpg$|Ov))fc2*(e%)h3`sB6XVFDP^D5BRcom;T9K z;KgStdbR(|^TZHegV0!4`AVnI?CkS-!k4z zuJi;%9io&O`d)3D<@*%fhbFReAEM=?ggyH#qiuO?pefCVJRA;VB$vX0q7ktd)%OK% z*IOSKZskbaUB{zEI}J7|t_%c%E^&OEop(B*9TSFS3fz0(AlYB#CPDC>6Jp?owRW95 zRYSq2!_|VKUrat84tCj|_}S8m`VUsZ-Jo;lcHRg`oBD`BvIR+!2nSuPpM}$O!Sdb@ zNEnln&^~=+#4bJL7wF3sv3zd_Ef0}oSyKJV;J6*y&9n>b9~ZKxPu6+i9ypf9cF1@J zKQMX=+7cfa27bf5lbXx0p%DWH;g02a4et2gGw)XExqfMD+LFujUChGlXY#HdySB!{ zD>P*cu6LuZHi1#B3|0ly$q8`;1z3)_{IAS(Rwl6>-v>XyHQdcsCY$Yl$cs~{@Vgf# z%VBS&+)=IW$kG)IX_I1sd*bj#eV zFEeupL5QPskD3aVRpWftlY8X|nf;Yv;TH75)l!iJbBlb5W76UI28uy?`up&HmUYKD zweBf|)0;yiy8d-l5Nfs?4$Ryi;4IT~q1i2xd^>ZFsb#<+NY@)?71}*AT}!5SjosTk z20VXe!)GC`a9V2WVV*KQdh*dNJg)7UHY+SP&HiB2HP(=|anfY4!J`sQe>{}4X^o7V zzBNrR$W4oX=>}Bugm~o@!ue>wn#UuBq8DSV9jYrP+Q8g8+uso8KY^*E*NG(cqTdH5 z!32ewg;Ni9aQ!QS&8XyKmm?B~oyE%KeU0Xd;?~bJxby=d>|SYTTpZZu*#|=^`b?b% z0^lI$egGe$t1!IqQNounfRF|fGeqhLAFzAE6o*JntmS@$YYqfcG&m~7!Nv=-93s^2 zP@^qs_-oyW7qFN$%L^w%2LQUZ0besQly1Jpzob)#FY~NEi#NY*TgHyoS-n!S^GGm{ zlh`O84LN#~M+&4@O>^R06=^9JB5zWG;&^j|zdro<)wzuqP-~nHTO#V;B^a)mPpYCL z7L%Xyn?-L(aBXiLSDxp;GmfB!b>@3-NC~|eoF%PWrrZRJ`B(Vdd8959-<=r|%e_?& zqZY8nB~wd6@W7Wq0lt0a{uD+q>^->Hm96D)6rs@m0Uh9s^ZJT zFK-!E%GZQGU-q}x9S23IX;;UZxlk@?;Pk!<$kodiaN)W6(okg1jbqjAt47&{PJ4XH z8*_%DJojnm<|LngbzMD1ZQF+ebI9)|@vX8G{r_aIh}NT^lp5F4Zg7pQ5Nt!Qs~i6?ZGkB0qreU-3de3${ps8F8{XRDRyJx3OFx?-g zMlmg>n%AVk@jkB-;460S<#+~DSK1BD z^KHe;P0k+&Fi1@Ae6Ai|4`1M=y`fgBC|So@eSWkK_O3QzS{ti=IFTvlMAn${XG9Fr z9*=qP%-}DBR6iw;QJ=7Gj7|v| zAwA#GK|L0O-SPG1fl|C^MD$69Y&B2f4e)xs)R^SlycuA+frfwcrjqdJH)x}+_E2c? zV`m_mcPqA}o+7ELpX91lBw>1^w$_JTP$~4R2;fU&Ff17-KoZX&6%N>}-&xFFb7qU~ zXcqN84c0bRKB~0qkiY-X>?sF#lobTUm%V@X0tE&dFZl#hZJ7{MmrMHI%%gtkI;qqU znbK>z^=RuQTo&k5s9a|L=kl^l5fvT;#G4fGo%0rfhPKE7>X0dYkO=;YV|gKsiEL4y zB)7!f-Cd_XH^>u}wl#K{l?zBN?_(9|Y)m8V;`cshlwUNDg)@OSe^!%}NpfiK>G2fn zQ~ju|VQv5qlT&)dcq!NKfgwiuAtrD*{Kv%5?sfJCy8zqGc=|`}YPkDWk z0LnPOFKf%K{TFEb1%yCES1(}ZU|?S%n+o6tI#+(-Kk_d=0*L|m^S`G^B?$ilY;8a+ zBVX0}o#Ok~*#8wuZFMb2UzEI5&I)?kVsGBx`cQ2j!WX1@tqvaJv=j7?7-9&+qiACpE zt?~Vt8cUMoTO7U4&3B_iJuN;VmJPw7;3DFPOIhh9SJhNl@BdcGE4l;I^KxH$jwo&u zl)es@9y}zT?i{~IkBw@+9{+~uc|LcN%qJSCx=;j*Kv&pF!DL}A#aLIN9#|d4>C?Ao z;Z4DFxHo*2yYEngfFA-$&86Iqeu;hbB}_Gy{&YWzpX4bx6^0PG}Q zO)D8D3l0ne1h^`AZ>p2_-S|Xouk{e}4I_b@zlZUSwEe1CK1){-_S;1#t zGZ{)x0Wq{9aoQpke@MQ?bHC6LHHwHIo?2fBgRdHdcC@{YwIA=0=x*;*eB%2j1)glm z*h%dfbSy6-e2EAcXV<$6EhW^ou^?6yLmlFMO1Trua>s@VlhXEI)Pv}{!#e!qETcoO zX}Wh)ccfQvth^^(<8oTJbt4`L9NY3hJB*k?cJR+$tpSClLRjbp5rHEygWi~O31cTU z=iW;-Q#}LxEjwX)0BBkG1P?x+Y?X7Hrw!*XAHv8w)$3cvxXh`81L|r*|IyQQw+umI z;|#vGm5BZn98tME^D#K73lG$jS%Hrtw5`9_bTH?OD^2P+h;A{6p7`F3g7EFfRIf#DR9 zxxm9TqT8RV>} z%-QvCk@#P%Z>xDC0uU09W$`MmR1OLgMO)o&#fi$pN|~P$9E*y|^>yQ!6E7Lh*b?K( zBTsGDqwDEWRaLqYTe-LSzytdb9X$#_sgmpH_UI(Q*DAqv+x+1*aWrSRDzT z{x{vQ%i8t%bV7)~DZyp>bonejisY)~$Kd;Pw~~~EkEV~hAIp;)T?nb-Zw|Wq0Iv1* zU9+E<^GtIkGtH|l*{K^eF->>>NZn@ikAyAX0NerylRlR%X*+Lg_G9e98QfU!2M;Q1 z_hUU{>9%7PrVFGRsV=A;^y<#XZ^ABY@~bVgS$!ydybFXD#kWZXaMsq@j)!Ablwr8A zUma4M9}nnS$7CMcs0FeGS`JmAf(fr6QKwmBZ=&ygSq}7EZ|gepV@-fCyitVl7RK%v zf6bI9bCT-LP%!k&PxDy+d|J+$0l#+IS}NB56~n%MA|C<2rOENTxV9SjmQ0dJ3l)Ta@wg;lzFzg(}%;Q zBT`jea)+OIER6P$>)wx)kbh>}GSofh>Ee^ndpnN(@LCE2fF~9WpDGUNCk^`X-hIZS zp+dw+%EIJIM^Lbb2{HV>If339_H-<_UYmx8(shaAxi*)6;$#Q&Vu}&1RBKYAbEMqR zwV}r7QSbbkJlb=s1mJ69@h{Ly`ZGn_R@_z1dG!^t%X*uApCn1_DzGJVV52u|*?8`w zw;6ZS&+o}~id-9w9kmSF)5?}7bDC2f`N{N&1;48CF;y198opd-;KTd-S4~7lxqAtCd6w+$L99k zb(0i(0KN*rg~0Cd!h{P~xAijG^>Q2 zBhiDz8TAoSaU?^i3(UOP`cM@lI2ZtoZr>Ma17H8Id~W1t#XQ8g`h!M+G<2A)VnPH` zVc<>zLh06m(R(@U1f3#NB}r=EQQuD8NFJeCTDi4!GeQ#-!hW!Qybtt!LRfrfTL-+S z((G14Sz;1UT{+h!&y1a0)14p3ZM86}hVXIaGW|#-|WX1z6T+fJa!3UkQIE+`7bg`%xNz zr`y`jdTDv9j*Q3BAgc{a`mzx9L^=PC`HA2SWkyoW2ue$tSxpNnCVM;$EET)EL;uD7 zR_)sV*IISKVV*8n*h=}p#6y#Q8w~3+wUJ>65xq$=*yku+R|LQ_bnQX%(L$eB@%c`L z6evGutm)?7?2zLb?bY5JpNJT*t;?%blDTe#j-Jqise_1y&vNGT#US?JEnxa^HreU< z+Mn28ptFyNz~X^#uh8^IO4de)A?RtiyH42I8!qa_WFatshw=2LmqpX(II<*23sK|B zoIc{s^o)-^DO%;{HCt`3U3Ba;a8u6X$l0>NWvJs1umUxzG&%d=f>tAo_!q0Np^hG= z{Y(8jyoUmN;1@XBrXU(=vFdNvksC%2YFQup=m(}F`08VQ(l6U|3e4xf_5Q50oizu2 zSGdZB1o*Hvu%pX3TBYXc=s}sI#e9|7nC#(|QtFwpf*yNL30J2w62+wUq*pupv}-uB zu^M2Rh0~li8xvY>^7}0*&Du9XfBAu2J2e|p%ySSz{)N3Tggmt{%CP2~HatWhzwQHj zIb`elguCP66=0e=Vl0yc@v3-6dsZ5n2cQod76MQBWos>;4V)ecIjb4XAK3~c^Cm5x zevz^*`4)(EK`$0#9ifKxGG|6d2y`1gH_3-P>&}Dtj9^6O;;_)agEwj9gF_MQLLH*7 z9#lK#SK^C;F15S-US7Wl+f1ZplpnnqL#zeS;|Tnu`cE~jL#oC?fxo+qi4SLa$&794 zb#e4c(FS}2VLW-P+xZ6YXfNu_!)=1sOH7_T_%4a6MC;WsXqgR=<6oR@?1ZGk%lBAS z?mivY$C)C>-Z~aa$1|zqZLWknC9v+Nqfl$rQGtXgJF|>90OZ#!*vNbJbY+GC1%+ZX zbglN2p$279FL0%-^~6BRfPzt_5=48uUuD?pwff8n^Igw80oXg9B#BJ@EG}MH4kJ0M zT&ncjNUh_?MRA|)G`n7_n!?Z`2hOCSKS_ZRqSOJM@v}jGJv8@dB6TlfcZn;TCX?oSk8nc zWR{!odR9bzbf0u`mWV{S*st?sG@E2g5pqI(ztIxv(D0eu8&z4OiX@(SY z6j3ZMBr$%VEO>#7AebU6yi7oe$?h5HQ66dN%Qpa2(w>YU*S>`8o4+Fg7#O}IxfoPUgU9(R$!&(pp@Vm8rWb<#+3~K(pTGO$b-9Eb zI{CwqF*6fR-oUwfL#FcbZHoS2n=@SFtMMDA1FF5}v^{sUF!%Y-@CoCbUD>S(?kCi} z7IW*V5A-J5OMNTKY5z=iONbbj2m{8cxM@Bo^h>F#PWY1&iEh2vZqT8_RdJ7CFDGU+_!o_zWU5f zu=F2#?^@ph=S8Qfaxf7)E6pO#*KIpnaoz0ZR)~ne_CSGTpCy5Zgr=`-L5}5wBXF4PZS@CJ4lzU(%rt& zAuu&yqtrp5^^R>n$(8kd>lvSLwH|M5yPhNCmcV@^ByW> zk>2%(0!t47^1@M_B}v$C^Z^^4nmsaHE7x5@)A`stg$CEEBoJQiicZ_o{Q25ddD~nq zg;;#9px)P!7xW-V`fRr3QcuX}MTF>?F{8z1kJ%jdR<7rDz_~CD`fih^7?+dgsw_{Fv6K-qOdF~48+ijq#;wE0dI$ww zULI;p+BHszy`n>uS1cV_q&n}?T;hnEy8g(&T;=B zM5B{sR9Eplcn4jo!GeSREzINH6G#zFSuF1Yc$jl!;y&R4JNkZ+nk*Ie`=lZsq(}_u9o1 z{gvJZ@v~ajvy-zS<7x`8W2{>k2B4vxx-K8F_ac`B8jnzR%c8-t>Km3W-6*OQJhXk@ zgeGb*S&j91(X8gl{r(<+o_3a~!f_KTMq2c*TjVD;BB&!!cRC1xpVLrz*vi@uZkK=; zL)-{gBZ#;ue%o*S1@E$pkfcKI!Ns$UfSNKXFZ}ry_K+`qr%&y;n1Mb!zKzROZmTmm;Y8G~-;TXs%CPx2Io@3Ke za^nr^5d-O@fUSj4(P-6I^v0EOm^C&hrGI1Tp_W+n4_cFh7$&FhUuu%A5>Z#AbGvJ@ zvXJ}Huvq(k&FVF2!4C>z_>%&?`^+e`3( zUWQK^T6Se6bC0DZ-x_tnD=FZ%$j6j4_+RZl( z_U2P43IWMi&G7XUDIV_V)@amcYM!g^0HJmE5Zo47@@pOs{8OpjVPtEy^S`pao`Yg~ zuhZ9iw-l#3S*`biofYteW22a$WhqEh9F!J)cL;FC|rkolctTWJ#fi z#;BWF1Qiw8-lNtdun4ZPET!)8vXL~5Liy zo>as!!xby&_ii!0HnaEVE>a?XTHodK3^1CJz>fRakFIJ(npC&g3**lx-K~AC(Tf}w z!?zOL#=-))iRSbUZ8;@9H#Pj@Pp@#g_^!#Yr|HozFPdTY(2aD#v@q_&7<%_2OvQPH z<8(VdP`^m}E{xpq@P=%7t|dO@F-od}{lv@U^7p9kyd}uph)>Q<^m;r!wLFOBU>!xd zwKfHFAVs9d?C!akIUOESh9+vOW>Q2XF~I2O0^-q142!L1heVQ zrtOlEK1((9{RuaW9YgOq|Zjs9Q`aKedO<_Ao((YdDo$p(e;vWaYEaQ$&~(?fyPxTRvNG1KA;D zN;t>pDckpGDn5mleM=wI{o+~OiTdmsC*LtMHqH3>-%xYC&w;=vmlH&A%xeMal?$pWvd6KUFS`ND z&F7Wji38tzGr$k2)_Hxf$Je(sY(IH>Sc74f zZ^7-e8EwS2W5?qmU9foy=?l|xx^)n)4;|x0U`JV3agY!Z{7Dh{5Gh;0(fMq1U@oa2 zSR?q(rAZGFvziX{?ju+Qk)tpj^5<5NgZR$JB%wJ07N$Z|Y9qC!`t`7Yj;@9#qZj1* zW?AI`jcixM$1^lKccS~1+(~3SZF~Z^Pr>lSf2Y+PQ4XVbJBx$?=x)Arn+@SG18SRfr<-W@Y~VN zVlZK7>^V`QAHo9P$_u*p1A)tZ&V4quYA?i`JTI>yfa!RkJPy);!~57=2U~cn*UN#& zI>RGo_r_Pteo=UWx_nmYsRO(Z8(#M3feB+)X|M-s&^YrPj3{+-EZ} zCNhhFNZ?I>_!-L)MUlhzRb~Kv`i^vVSBN0(I~Bts@`KsZ`YzWxC>7VW6=@fW2WHMc zXS(~K(W|Mhf}bm4Vng0SfaHp<=u*}SwX6xY6(j9iRkt?P58V+eU3Qpeee6=ksT7?j z?=b8?SulW&LZ1_df^&9+^5!4Fw}%R3l!fytFwd&%Dg=;>tSTDWIO(~)2AImNP)cDQ z`ZQ-Cu%{-DTuGVIa>G=65CR{?)pskO&#~9!O-Io!!7dccNIfzM%gtnv)nPyiehO=+t1rc;i^NfWG}Vr>i&+a#->I(5YcT z`V!dv1^x$T2Q&gF0+Aug{12TPD?E_UjxQ+If3mj7fn|xZ|2Lf)9zY84H`f2^Vt*9? zE9d;*bZWc+DWI^n|0&V87_bD_|4pan2axg&>%WdzAYd7&X0G?e*+2}6oa{HF5NeKS zNs{aQZ`|?pUIU@ubJsD%>mFRwF^da0I-jjAo%!rUM8wEX=q^gN9wm=5_K$ox+Qg@l zQEWDov}J?UN~Z&hwKu0YNJ+*%5ES?>emv=^{#h9F`dHM; z>)vz#5!9=4|4eB4BOX{_#LE&vIhS3$;%=abVj>|;`Z=ff7@hdj0W@6A-mYn+Oi*-> zzW%cf_hNww4?7eD%=#NhQ@w~j{ZVQ#pg9BhCV1UruA~E4JnqlV z!M$&06k*&E#!NrV3A<=Me_PzZK>p^QnFnThWIGVGA}}N*Vsl|Q7(O{h zay?Ol&2rQ%I}sn>30{IOd3T*07{%zQBBP%l1MW(<0>RwssAO9*@~Ghpgp%|MI#nHh3`~9{$WZZ*D)bm>XZCqCzFgm<&POE}AhY1>;a^wJc9Qp(`lG z$VB{Uq;VW0-W)tC))8`ap;HnW&t)szG(Ye;hs7~Z2cJeCvNo;KuUcM*kRe&EkNw>d zN|iss_+p`@n@eW1Fven%pK@whgaWPt+wJX2=P=2&=!{1zg}1;h zY|q_$QHwmR>a+PWT?9HU2BqLytQY+Wr2H0=6|9WLx^{}qIYxIvvW>%>4MU-CcIL!S zq(Xk?g^hm-VD^ImjWG6_giz4O$O`#?Gc##dvIDKaj4g63k&KhwE*z)s{RtW-a#Kor z+fp8|rm95Av<^MtXVh1Ccvxtw2XfIQP(Iv~bbOgvYYmiSeZ!sW;Z<-vY17JSMokGZ zDF1xZ8GMZCDM7m4l>eEAOXK39-C{S)a%4ao047GH&!FM0WDXs@Pzq|O>FtcJ zk|CziV_2;7FxmSEIn5o}H;KGK{$Q+VSxm9LT2PwSk__eP%jplKy!l0z1*ZJ=FjK#k3P6g|Nqfa*cCUif(vR)^)((QGK<>B}+ z#L$=ha_bQmBE619bbYD7S&{RsXn(V8*O#M7Dy=i_V`#lorPKA;;zWi0n#I`;8s&D@ zVe>i&p@M+!y@3FFSQL4wmVP_FLS2`YL-NW(d0m#>?^JOzojXpcof)rY8I5N~SPv!T zecan{z0E!TNAjk&HlJEeKL`=E?DwQ!N1!qt~z+-GLb*JLk+btuQ5Pfdy6OxD6e z_Mi6csL1)*js|7WChZ=ChHBP`+KFye=7m?i_NZ_ZuWU~Y#PSug-m%w{j*bpK`*7JG z4u6UGoXG#qgKNLqjrG+!jfywr4|YZyPn}xYRzcKB&rUQRHg#>i!`Blu z&?ZDMlV79#zy}kEOrNxmZdk#JJ*Gk+IAeQj+lR&pU^5`jUHDFh zV9`!d?=im$XOdE9?Ur6vm&Pd_rYi3H!FnaaIo@UN8=1{CoBb-i~tTj<|Ac8g={w>1lig@@d^}}dVS{-6uZU50B3htzn znXN=M>iO%xr}qGH%6>WPh7wr6hXjwS9VDelhc!77i!Tc&*0#V?~C84 zU`rPzk;pd*&gZ+%jHPi9as(+xII0)1KGxnG{lN{P@3dd-gthnSsN*YVG7zE>e!01= zy<7m4Klg)p5i5PR_Pe}xEo@sK3+$Pv%=AQL7d;qbsDC~u5$n`sQgeSQ93@wZP#F~( z*_mjsyc!kXfjEd@Y*-xy4Cf2O3|~DmWqfClA#eJl@tOkd=@WP5pwXF{zGSnEcAj-p zY*$%iGKRJ5{~fZP$`2Lr4@~g*)+Y*(%QAdK2+0H6w!i0*!QAvh?`AJ2D1gHF(BF&? zhj#isrd{_RScsaPtIJck8nZ8h7dZQqfRkvrAxl2*x(7nG*VzS^ik`=Wl z41+ScmIP%iAM^{(T$uJv1@3W$OvVswL=s3dSfBYyc8bm}fs-(%lWYeU`nODazn{|* zf>v;4Soa-^2X; z9d^QIND5V)BEO!!rn6uct6S;!BLzEHs6a5P$!3K=x>A>xJB1 zfQG&K^-M5bdvf@5$@_8WiSr~n6kGd#Z>OY6h1&BJ%EG_@C??>LeS;&<1vSa;7njii zJUSL{?mkp~DuJC&gRu&Jaz$HYr;SbMz8TSewr1q-l!FPrtni_q9_uNH>+fqjPKsf& z&qLk@;hxO6jhywdHKNMlEQ)1o?Pd>Y5Ay0UVZ_Hu>O}IpDCX9K-KIMLlZ!tQL2bWH z8utD98(v5r=Jma{Fh-q}EzxvFp~^b+2Ru5J&1vJET0r8pi^2f}vL6~a<;Js(r%)0k z%n{-y^}FGKT?9dkGaZ+?=p?-LvmLs($6@xylb`#hW;S9T)STJMW$D13{&S@HXf4%k zb9{ziyyI-l7C8bcZnrY?%B-yX6nBwOM_>k7w;%&9esm6& zzFXL=M2|F+IssR+0&P8Wx?b@ITdjQ)tH1 z)F_$7TjE6$W~Ol~p!NA=j$NMl_{Uw#Dm(OE5i-F>D^uyrWFru-=+efg?!7t-EeZei zUpUBmYY;2(xKJa4ZmkjHy4}v&WFhUSGK(?)+f!Ur;b{q%n>(dKR2mEk}HqaIzL#>ZV%?#r0XU;iYAabk+$IGI= zL@h*mbIW5Z?e6o^XVj3Qc-%7o@X6DDX1^X!ocxXpBiXqz zJ(N*-+twoHAa}=QL+Y5Kmk-yPVJh_W)HOb;omp#j8~plUrN(o=`l#*B*rEC~lR@XVvmQcs-WWgW+O+E#>vW@5aiKZdAx-#3GVyV@S#i6OvB3C*i{W{ zl6t_FxK+(u%qdOHibL7ltsC%L$$i6Uq5Pi{09-xF{jWr#!9~eVJq68eveW7}2L!9M zB+a!laW!wONDjb``#s|zTvnN{#_=HXRuIL^PGuUKC}^BFKanqIx|`8if&F1Q!! zGR|33NNB9{<0GVxQbOWsHD;zz&Q6=18}y!rI1DDUr9V19=QD5qM2WXY59x1apAF^F z4Y$FWL=*g;2Os3{ejW%S)&CYH9d?eBrcz0MGu&xQ&rW!5{(EJ;hIr=J9KL3v*Ki}> z)zAxzu@Pyc%=u!Ihj7C|(PUHwPcO7}nSU|&ebf5`C>6}nOdR&Mn-GN0DUCA}#RS)k zA1ce`UbG+ii9dz%WcdA4dv$eloEuaPLUO)iEF)r6`jo+9<2o8ObR(mc!;XlAw98L+ zy|Zp-ZvrdzlgUq%K%X#v`X!6suGgd`}q7}tN19qi+yj}I+4A;rP5n+e?G%5J~2o(TXhPX*$sCNuwdAKkQei3{Y=~lbxa%jg@lY8S_sv1`?bGI|Vm6c>?$2ZWQi4pOe z$@~x4XXA7DI~aHd9@``JahlrevjDJEcVsfCB%UoLN z`&x0@``-tp`^eg5mM^qyBm&Ab*V+on;7gGxarX6Q*-#rdVdam0e{cLCp;og zH^;N)KAlZa+#oueV~%o;QlqzCBP}&`=SCNq1CXm}?EDNP6ONRCaRNT^!m*cw$QZcN z&5Qu(@$AougQXJRABS^2t&uHHb8R|aUMv?(0G6_N6P=BClMmSfLGmhOERUZ3T(qu^ z5?p?7)1KW+9I5o%sR7xfilqyirsooZ2&5M$2Xfq`*al2%SLg1xs^7fkcKDG=Q50dpDL+JFQrlTEfMTC5B})&7)9dw{YLP0 z&_Pvd6iU?u#UXZ9LBHaj6EV0p2Jjis>nk9eGSpVa?(xnwt>z+BJ$ry!RFv8YFD)o3 z1A+Y-d2_FxAVTyPF2U#V#b?=Ra5&Hh3(5A`Ni$ROh5Y<`2sO;r`{*p*XktQ&;j?{- zIcB+(@fhiZc&pJbo69YTqQf`s6%gQ!mBH3lZp2Y2lq+SYqss>+`|Np;@tU#$aPuZf ztrc|+j~^%mK)^VD#$I{F&wJTxh8-edoWkQFKf6fy1U&m#AB!+=oF5Ds^Ea-OU_zkMuDe43}7C6aqG30pP1-#VwFs146>kPMlvwOH{6%KvLF zw>ANx{w+!*9nyDNgSagKcgB9O11dAdK1Z-l=sn=HBn1H~FsPuKFSoIEUBQ0ir~B0j z%&S2%MG$WIH_|5yN`f;ZEiMjSPTrA0R72sMGM*B~PcI94_XTb=-1$k`{j{6>AxifZ z79&|cDx%zu3R*PE#gt1Q}u=&(A;}K|yZef|h-zhY}z@)4e;978@g1 zWRySvZU6|R3CeGQIo&ZsH^ltks@p>Vd7eu%i4v%*-^a=-%X=*Q~ z&LjDn$4`SF2zi*g8#e9#j>xTt3hF~zT{oGe|Na^PuTKQa6`4t7#HapJ*hW4etTrsG>A(iRKCZ|$oFKgRg!&Udm@Zu0( z7D0?>Rt_Fw?;*@f5GPsR&w8vT8T$`;JSPq0PSkLFoh}PNnWq3y<|BO;C*UZ+fOA_w z0-W3FYVNXxt(kd6INwa1sG>mN|!DiZKu z(zSu@ICJpgEL?Es=bx=5>+4<4zyHj{6boPpQM-#L29zit#}h%wHx9|bEdTc02{53! z6y%|Q7z$rsJitJI)%M=o*KE;)KO_x7EfJs}{|pZwU_OB*u3?*3c?Kb^<>FR)7dyT@ zUvuz=0)*pJXzu_(=4*mj`d8Y}p7U~*LlS44 zQ}lmZ0s4CJzF&e0D?YwKRyLB>GQ$3sj^+le)DuHnw^&D@!bWK*1!=oH?7r|{E*uhY zkOYE-Ft2uB&#<=u5B^J%H-AkAliGN)9!rbIOeC$b54sPqr`%&GUjj4tq9#V6k45-X zjo9G6Qk#{3SnEfCHSGvlo!v0?y)3{0FxWc(VX%P!(m`Zb%2HyMnl?tgvrd;%n6p*6QbQ1~?JnwYni)I6;J3qY^`Jr@FGnN#W?eO?Gl)yAT&O`SwFvOcU*{-1?+#9_!)_>-Bb)+X3;>o}G75TPNZ+g%3{7uItJsv z=lP8c1jms0KPu8t5=AOnL`8Al(zE~GBYj>+vD$lwmcEo#VxR&6ajc06@+peP?#*Lw zvUtJ962P0HgIuM}CvSU>+LNcT#G#CEn(ot>df@+}-fs#;(V}e~E%^I9oLWZTC8GeM zL18iU4U&-w_~(kb`R`a9_!2ljq0o7P^5{pSF{Ar15PII+hA)Swt^qOPvd@}b$>Tw_aH=|h{x&E1L|D_*c>&yle0dcnce!+|0bnvjn*5@VVs;xg6W zhA6YF_h?0iLP2y=i<(=_KV!_T#&SjNHmPE^>WYpB&4y&| zgA}$h9QE#XKH>Ho{SkXzAe>Z0JE(GuHgL*_v-f3`<8~Qj!|;B)M3QK$7L{6e$}rY! z5mKy8kuqEB`4Pd|gFb2)cLxOcKgZ{*lR=c5 zj0qc#0|^WL=2)zVn|qMVl7cprvU?%O<-Q5A$DxTGu^W;4fPE+rS%@)=^!9Wtp_7SN zRJrHQ^KqWm;>X}9UyCShx7as?2w|6SnEw5@z!^b>(iPLz^YC`jvca2FoyRNXMJvmU z=_v1j>1e&frJ{PTX!Ct>7Kh^T8YbQO8(T`U1oeV;!i4!|^q#~C7Cb6lOz^Q9Zo_e9 z+@vf^DsL_u6l>%#vx#slGrXxZ2(Vvk|L>**v^*4|l*^$U(#eSoRtChlJR)-XKUj>& z;~dHSAb~VDvZ!8f8YY4eWjITMf}Py=YXvMEYQZrDB{#Z@@Qeh#^k@oMw}%V58QRd1 z^HC<*5*re;cUd=x*_e6(G-Da2uuVgv2=dXHkyAFSsn(NmE#Ft)z%|m?E=@F9A;^gb zsJeh7%FHk>#=ZlBP@1XD3unxd^nkYHu?<^6(TtXf46Svm#UzY&MC<}NJbL+Ed>ZRjRG=0EaIOLFeq zV~uhK_pMIZ1(y>;BTLD5DG?|lIC!YSv01ZQmpylRO0}RK3&JQ(hoV{I`P(Y`>fsPz_bmghy05tZHf4XIXzttc?$zc&|wonFBJ0^4|@g*sEFJ9Sjg$ zE_y3J%7)}DDa6B+*djijyIvos(QzBvU(g23RNCt}oBend;C+W5igF>%*5pCLxw7OV zFNvs_ouRmUMmUZdLMFWQCx*9}e?Sai4DRxgv=>*K(U>XjC?+~sQ;JpAE8f$;_N3Yc zH^atc^suibX0<+uK5tNGB0?!DS{VlCP@;^qsOP5%cPcv5S zyh`BIUzF!@e>DXI?i&Se&HQE5qPb&4;lhjM3p=RZzyM3f|XS!NRHzK(57232e0Agml$~WGHDJ1kef`j_tzgM0_ZSvs&eHwsyp#E=VOU$Yc8$4fBkBFbp`FUAIzJ& zGmNYm;}PeKc>dJ_caKD03==VHdibGLsxst_0G&ejLSH{rLt2PIS4Va?n+09kW0Eh6 z)sXq#&!}-ho70xUK_xE=`{v85fLO9w8(%brFk>zUqV4f=sS(39Tly;n3)p{hkbZyy zXDMX>N7c|x&P15DwkpvIcx6xY^=)pRzVsoSwQoyfHulX9z^&4y`wqca z|A6N1M7C(Il6a?6dAvEFod9yUzfA+<6{1oT_pyw>{`jO?|Jl%{&}Tk z+F;x$s>@yMO!b4l&bR>~Oio}GW2M}=X9E#ByiY^D7W~xi-T40~?<|Akc%C#ZOR~kx z%uE(DSdztHv22mW%*@PWjhI=o*kWd8W@cul(T)7u|K9G#M%;b5h>f_3`O-06-PzOK zRh4h%lO-lZKNd|L7-S&b)QJ!|d=NRA!1o=^c?Tx9B!N8-zg{{mEM-VC+vQ^t4$=Is zYx>uO`cbj^#C;r*2o6!u`-o>&I;S|pI~%=|(&aoNUiv%1A30Fk+^B~(rid0h6n#E` z!tBy;L`sD7@-0NvqP^#Qr*QB{l@;~29iSpzx-9TpKDvP>2e876LU-BFDx+8_VZrvm zmRE*S(Q5T9c3}th$82~QZ$U%N($%&4%dL-4Dk)g(sbz6v)}OyF?VLEsieqy$>VHsj z*>^9hAO#NguZLvf`R;JEarmPC^>midLG#l8Uz-X|9fie>4PjNZh#wD23^f(g&9B_= zwRyWJ_RV7nwox~n^j-7JWodtY3j&yC{y3HNXgkqMOOQ9+OodLKZ1LLSjg!=nzv%A# z>okFZL)SJD4w~=JIbU`5>V2O0|clFTo`Fls#PJCcmxp2m%EVYG_fm z$b?JefiTHYNcdfx71++SzypAG)5W582FG;^S;=!&p`34W3uEUnN~M)RyPl9zEHP z6ScqJ?Kc$Id}yzKo-5h+qmVD9pcp8_l0XRC2J_=CUCA%9CvBY(8m!5lBCz7zoqFdA z-A%Dz3{@2AiZKsGqMXt-xYa~pWLAV15FFCoUeb3qU9=NleCLC>KT`2 zh}Y=}yL0fYH6D%3A&mc|FL4gty_g}1r(_1vT~&H;FqTh1SFtbpN&4%OlUH#V;^mPC zI&Zt#`gnLVBFsbekn;(Wt0t~X&Z_gSa`?249+&?uOf$qdXAfMw(a;tHty>OWoKl`4uGtynWa_&?4u2+xl8tFD!AY42uE>)18}|{(`G6vP8q#-s;gHs@p3gWy+S{FTarI+f+BpGWJzNuj!XB({7T}f zaAt=qH=2zS|JV_{oyAVn<-P&D7+C$Q{ zD>C@eAI9DaaE}y8Mcb@-jUXb$Wq_j3p`=EQzfei+g0J)G*r})jQJY^$(M}6YiVU?y zqB!7aQAioSnzu#RVc#{`ZbU-`#zDuFf2MU$Oi#y`I1x^4lwy?}SZ~dQp^2g}Zbk}5 z{`PI^z)+Xc1;>WJ(Q16=mkMs!nu_Y$L> zilSg!@Iy?EUVaHOkEZ+ze{=k-a=4{tlySjs#<1Ji&@USFt3f-|5a70C(InLpXfXPz(eo-wvST$XmUzCM*l16M}-XRD+9fcDhQ9Pg>!<(~XFMcci5;PLr z()e@FT8bc}qBD`NA}k^z9<}-U7T8j`IiO4?0%R|c_xd7IgQdtY9N@px7+|*n&wkZp>3eUc;}=Cpiy)okhEGzvKe*? z0_`Xlaze;|U+r8V&z%1^abFiPzv^AuTn8WC;p322 z!^blGXwMm$r%c4oTkfgxuIfxBSv7!K``aI>igy^A9ETnc1k*y8o0gy`kiGz}6C37| zWYXz%U2^z*Qt3YDP*I)ZbVTb{Zo{~Y(2AN&@UPA-6{dk2FcIDkdBvZZZgO-2?{iWa5^BoH{^2bn1$i2B&syLVEDI=3{aS|lahrF#cwlTlh=&7j^ZK(?OLWbcd%;646 z6(~L4HBfEG#-$0b&cr20Cd{fBp!j;&MCKcdbmPk=C@i593cK|Xx&huYbgU3QUj-VVM&RI8QXj;860twQK`SmpDR}u!i4!^tH>2>@pCp43Q6C#!q+Ab^m5^h0B{S}HFoX20a-!d5NRMduoV{M={kq6** zq+M{=B=dYyso~04cN!{pHC=OVB5v{|aYHW{vE-;Gx48Cz0{bnbu@(Cz zo1;ooE!}18D+~#r!(Q~hY^ka4*Qx=INjbFrWI(RqZQ)oC@gb#I#b^yRQL2#pM?Zqo z+D^aEpw6Nt%ttypps2Wp!I+)IbY^q0MqF?08*t3)kX$6soMUm%$6lg%f z)d@zA1yl!I#oLDsL_Cc!z7a0Ypn7vYWbN>`~nj< z3^AKJbaPC2$Z__D47aJQ3A;h-A({ULJCc%!Vw?BqKO4_Ag-Lc0p+cfZ;)A4 z0R7J>p#Pbah9*Vmc(3I+?Wvj7(4X=RVR3Ab)xvd{bg6B%wo!gqkHanrU@WKE^m2a-m<+%l3K;PU8 z1*oUDD((6>bY>Ez%P_>*9uHoV?a|H!N`@K9U>^#UrU!U&7 zGMkHdozr?H$c<0hoHRldTP_dtemUu%K#QgtY%_P@&@# z3zc6MddHf;Hy010xRNQb6a>?o-y5kS~}Zz6l=^@x>emC{Z9tIsEAf(%Y)9h z(eS1qO_rjtC$qKvNVi(FnAOa%xQMB>x=w>j|6w~@_J9i~)pg5O_eW1)2hmc*^h(j+)U&|k< z%^cg~5a!!R=}p`r1MpYpRi>iCF5Ef-Z#zL*vTyvK{hu81?q3+ckwb^(E6xc}mWsyc zlBhSDq0G&!7;aho`~bct-vNBvcy(-LFgqx@tFS3EAyy34a>s*B4pS0B4I*KhS}~*+ zpxva4nF#n^bl>$2p}*fMhBQ!WCx>&X7OCAd@dF<6h1GjJEyt7F(?{l0b)2#!#%yki zT&Tp0f0!pj+ihtn309d_-IGE}F`J7G@FXv^=r-c?RxhbCcdmA30jamwxk-YK2%S(- z>=e{(SyN5)h-iFLj!UPQ#~CFpDsCmApBWE<$Bp~%((Fl`qU(xJni{B?=I{4L@qp|q zZZCXs#D+G!vcX9Kiqa`^3J6Q21s85belZ_YctwMbu9%3_v>WZ%;U$G-Ui+d3uX4;p61kO9k1hf>@7o%{FXBZPi_AzWC0`l!Jzbtt>E|;Cd%U zzv_?kk6VLi+3b|6__(ZpxM)|R1!B`FQhQdJ+pH0J5{`c*sMBsCv~xkuZcgNsWzshd z3-rz6jJh6%S}M~llEKyA)=KX~*x6tCO9s9&*Asd^VLUd8)lvCdQd+{qrh6?4BK4ES za{Y(Y{^F%v)f~L!dC!ZqU(3=*cxLc$NIRFDS%4LK*IL5$Tt;21SX*f1XQ!VcDmh!4 zkvQW_n};;P-%7eI*t(=sz_2c^d2RB!KTm%seu zwWl;VXxu-!$7B0s1|+jb^L~A59dG13i4AtnVvcUTw|rap*&nJeLh@ufJH@PKH`F}! z;8E?_6*qGzd7ls9hQ3eyWT}0*6*r=1AE07{mhv(cY`)#?iGOq?;3Xn_((~d!o4~0H z)ToxMNaP-=f-};cJuwE}>)sE4+>260VNU^$tIb2g-WX{vH=)0(u02DYTsV8(;Y?I?w}v7sy=Zlut3oBN;#1i7SQrB7IIL~ z2}oofTn17An)Gh2!=m>ET3>2sT_jPQ4~wmaPNGG}mOB--Y+AOPq79VxM!hZYUMp&& zZr4To!lpY12Sb!d$#XXMHba=!cwc^tkS^G|JeO~J>JzODwsPoET+OCd@GDw~)Nm zUrsp~wmT zP|IE|S@Ytu*@V(@g5QXSR>@(Y({7+kSNg%G*7iLR@$Ehx2V+UCevLiP{exh@0z0>9 z+ufWkVr>&e8w-LrYTCn;yE3&57lyHp;7vzYJYE@-L{izQ7(U;1BG=>|U9 zickk03|kQ?%BMWB+}Mo889I(CzUPI43kD7ERH+^8xTq;cEV{>5@S+v0XjE#2ldMS^ z{^z?!+&KZ6W4idtry;$`&9|~M_p6s$AUUG~;y$bK!%ZX%vdi#SYBpWBqltyB6Nc2- zbF!<1@c#%R1jProm2&-p51rtg^*>HP+KYouNWXgtKW>WMWD=p^d0Vbe_geL|Ae9tX zv-!PUd5s1xM(*$@8mP|l2S`Ha<{}raf|E7F^~_$T5te6Hta?f#Z7J1zwmlZ)oMk`+ z{bbZ%H>jM`zvFGOUypEGu^N{nunllRAdE{=ib>CT((Oj7E=77`iL2T-S@CB*YZ2Pk z0U-laZK#JFH=R2Qxj_aG&ncsU$%Szm^JTBnfwD!J%U8WKJzm3YCQN_$k_)gF47YkE zV?Vuh;>wch&vGyBA-tu2CA^_*O}^I?$}cmr)Qtj^Gv-ihiW&F9k~>~HM8XLObu2^M zFzt*gGQS9AM6QcMkvlLXN@M(9{=@z8wW+ufMlyZU7F!2{wQ?_hH?uT@=M@O2rKe~1 zf-a>>-dCar-ZiQpyI0s3L|0|XZEjZ6C5622I({-(#N7I{zH^WJG~%+gKSt2}jw769 z%dIQR&U&*HPD`PcnbJ+(1cuM4$3b8Iddd#4l{bukX z(-ha0Di+Fa3BXzuHx;-`Hf+!W>D&B)w;bwQ)-d1<78a_z`HNF_M zY!c?87O@((103rB?7$PQJo<+jl+?U(NMpMDDlGdv)`{neW1+8&+D;nqCmkWaHI@ePg*PK`T z_A9-nvOs4U0{f-vE9%MBaRzNHv|^hi=cp6Tf`MR41A0Kb*q$E4icNPf^#dD0?Lo?=RmoVAcGm=#me!B`2ZPdgZOUR=I@H8% z9mB=~oHr``Yf!G(1txfx^{wnT-cWA~Tc|=PI7tp_wlsHUcAT5?ZDw^b4Q=8khbMJW ztGQd7Cj)>)%;i#1iN6_B3N8Zn^m%c$%yUnt@k<)N>seQt=9#Z@f_K~NAXyNfzpo>9 z-e*;*l<@es*a~j#blw_3jeOAiH~6}4;CaQ$YaoiVM`??p$pWk78&6A zLWA!2dJ%A6SNlfjMYAo2#EI(Y2B$KR-jx%2=^TU?CNF-nY`4S`Ez+$et3!^qu(3}& zuj-NayMJPHFgf@>nsmvB{>OvuYdJ7_#{L}I)O^!vHdn9d!sqr2Y+n-%%kfku0X2@L z3dOu>w$}_goySNXzvP?n*1pbR*5akymHGGYjNMvnR=F}BD>8dUr~U)hD@y0q2XqZv zr3&0a2E-dGkO3LZ^}qe%4+=5h3N^El2o+&pjIdErwTWZGZcw>ZS#faqk2p;xlV~Mk zWJq@1WQA!C%_C@AVUVUbRLq1oEyu@wgxzHa5AjMDpH}C#F)4mHcqzT5i}UQmlqD2< zzZwh>o!3)SJu@WX=GCU(Q&g3vRuzz{JY5Fmr76|j3#zxyNq$$!0;KNQn8UN1t<(Hj z;&w{6l7xC~z?rTq&VxTYN%|$GbY#!Jtr-lr&va90d+*g~q&n}cvpG6Hf&3XH6=gyG zh$Jm)Xb~S&BlRazf7rGue1+Ht-aBoMbtmVVY^DzNG*dR_xygDO9&2?sHPN&0LblB4 z6*Eilz`M6(jR(SE$r~$wcMI6B^Y~n=KLXnV)o0r-|B9lVdxTrIIDV&=a99a$D8N26%tJP^#l(0Qbfv5lz1hC<6~^qKC{j(6Sp(85~PfbeIP z6@b~xpTa`8>*c1ul*cNVU~CJSuMzqb1&KeS6S3E!_`PG!;qTmLZ3V?INHWeMc2!QE z2-&bf$MJPBpKh}Dh+!d95`;<=$Y0D<5)+FEG8qh@Zl)gMu3cAtLFlwqIt}NQGoW~= z>-IzuQ0d`jP_8Yuo%GTyb67W6uP59pwR@iDi%*BI(yLgxP>y1=!t=jeO|LJkPuWj! z5|t$@rZSQYn-J_XT?obO^)FJ)x}w0U zFIF5&v^o8YZLp2xaWgHYdbr{{_QPXe7>igLRLT@!g%!5jO8v+)Y$ToX=l}^=LP9dU@|y=JmJA<5wbJnuidWHpB0=Rm*8#i3L5=PcLeZgCgRym9LEP1&Mr4^WJLnD>7oFGiNX*~zus_FIbBJ=hz%tbaS#R-kyf znwhsMZOeJuu74$XL5FP>rR6xRHDqBCw}TmvnW!4>el`y7`lIR@SL4;tT6l z5QBH_p45ePs$lJT#6E@M57m4jEA-HJh@<-4VjrVCv^2&a5O&t$!Ex)XQ9%qx$RAJhxR&W4cAop7x_Aq{ini7bPcyXU-KXFE3oxW>nb}R?iBht8%>!2uLe? zaAE%EPh=?4y9w2G65y!$Er2t8XPF5B=q(oq31qj2$X>i=(Lf`vq1c|6TmMV)hi&=M zC82InRG53dUylP8>$a%Z^ANVYnHX&jW2zu5W1z}672bTJhQ5Fee$@3iH!@coVU=!w z4;r7G9x;?ucv`NkW_KSqik^45naZ97VDfsP+ElGYA7kgHHnuG}EI@ylS#)|?Om`$u z1uXf#Vt{(>JIWTz`{3n?A$h`^x5ZkYOyiBDj0Ty!_F1`=M2gzv&*QCG)Fc zv!N&{@Nigh#(agfIY2dj){98W^*+RAQxfkUhtqhzg(9=`4D+O6P?77?1Gw*UD%gD~ z6IaWYpa;6HGvA1F-S5@B644Z?$Q}csh>`wr(Wn)ZN$`ykhaU(^Dk?OT{Me!DW3=dP zMn%fL(H2EIk~O=%IkX;WUO#PqJ7-W?Nr+@JYCb`JSNST3=<*-Piwhhb7uEvdhU@)L zM4KugOk#m&8Q)t--M9*0Zt-_Lv4=fQ1doBycj;uwN*Nc|sxEOu09=~JUctf!0;H8R zcwm2{vzzp5s)I>MQApUXmjpxqI!j|Lphi=0t*Z`;M3rx zZ@ddLOrl00O@z$;mmT6af9R~k`4l+ed{&&7vhawNZeb+{auSJw|`{3Z%80j z;phX5=)Y-X{2=w{Y*9#p0aE6jX?T5S8nP}+e@q1vg9h*=L|;{I@hPW^)iw%@XR$w? zPzcf_P?|I%s6!v+4_Z7gg+_flEJ0bpgO;-^vfmep+3cQj{qWFJS+FGFK*_yx@}Oj$ zAKrLhVE%?M%2GfQoa!pyH?DU%QRtWolw5RMj}nLcF5yiSzvnQ|jzR=NfP-wU@d6q8 zpPH5~nT75#@8qycCyX$%k~WeW*mQ0)jjj&9NhnF9f4BmBZ^niNx}edo35n%{-v*UU z5fWml%!grAJM9a<>f;8l^KldtZ3Ncq8CmweDZ758H>$VBJY?9%#W@msCL`z9`z(#zsEDt)T8d>5n!p|qj$Us6TzS~!T&Di z(gDQA@9LDX59Gmmw}NYl>_B|GZL&#c%HTu!p|97Q%?uHq+x03jo4U!8wO(gUAcux1 zn-u?)h@;;?CJ(MJ2C5Pw)vP;PEStcT7IR)zh&3aD*5#Q}#8*T9F1%07L9>OEGRGH& z0-McxcaD3Xpq+(2QM5LL^f|8kT~(!9jJ;*~#Bmb&q7YwurM`Rm(MO}xgvBwPpr!Wj zp_F{JE+Xei#GS_WcY{R!UQg#yIAik7>-PWvWUi$A==v{YG+Jyd9N06-CMFE;KT;P>m-~dX1=gH$^SBBS|QIo=8%_~UXaz}WLdhOLW=An|oOWUJ|dgmOhtihwYH)T7)nH*oY z((|L|3q%8|NYJK~OLpHXofh0aQ0PUf1v*u@J#U`a1wWcgPt3+Kb#rplpu}|F&xcP| zlwk6C&{p^K=fkUqdfe`rM|07l^aF=)ua}=Hv@7ozk8Ps$VGjp09o6ftwoiiSP+p4W zk1QyoL7Ir?KVn7{H+y6WAKhs5oCx6>9j`Enou*9Cvh8-2TERC8VY^X&=K`$AX|{YH zWl)cC@d^B9an-=F@n$(XosErMvcYRA&DbmC6j$}DSf$JZ-eSs>u&I@is*R{JGL=}b zmMqN?E2HWB#+OiTj76GaB952O!%NfDA~fz%ef(V8a#qxR%67sp?PcNxQ*1d<0zUoE zRO)@tC1FgG9Nu@p8sSLpq=55RyVX*w^R|atB8i#Q1$(Q z;K8xCJIg{HXQEVz9>0U4L5t&Wu*j zQ6e4Vs${i0KZ^?;Yo()=mwjpc(I3o>`0W$*ac5}3MyRP8j4ulFqer~!^%dc+vpENF zmQh!BK5u?l6ZSwdff$q?=A(vcaz!X<=o$(D95LITWdwjU=qpPLlt(cRAg22_7c7yj zU(6q~KUDE#l$f!-#z(i|3hJ69&2l$4ti zNE?_sv+0=#SM^4{eGcOqZK#A`DQcz}J%Pi@F>zC@_(@A zR>2RV=Txs8k+qy}W=r-rf|?=R?z84sEY@N-_1zhhE}b)Aw+gQkhPaZw^?xce zP~tCBZrT`q{5_-h5r zUY7O|gK|NHu8}tc?^DTxA5gZZ@9;IuUDe4bi7a()$Ag`zN!dJuBl)MQz1Lf8UJA6; z#8BS?w$5T`pDgOb|5XtH#}a`>C6VQaTrq5Z{>h0tF$VVz8GxmrCgND@xBA%b2=xq8 zaX zRA{zF(wIO*PN1RN-MFB|nlsVIUbAZzs(UY1l(!2T*#M)Hk$&eJ*@KZ$=5O3)fJ&Fm z!b(Dn=|Ph@C>rcz$ja-n%jstCni1oPn*f=>3V^#6tpRNL@K0(1f=cUQQ>*f?)Qnzg z;w+Wy=T#%pcLCpGx6#MiU_3w|yWIVn1g|;X92pE$?w~wFPpbrbe=zM3O?o$NOy2<2Q^WN@%;``e1i-{Q6A5of!T+`(hf%>~G^HG3DhNrrOkm^tUfc`s zz4{utWu>*d(?L!DbdX$Xtg5z+irdjeg?dpMj#y^XcW)0~de57V8mrEzYvS5^8TR6G zW(^L`t6iB-tehD=IaUWn_1en^q&?9a2K~H5+?m=+I*V@ef670mi4$PD3i)ilE%Rb6 z6cm4s%4}nDcQog$-~1Hc4?f^$57<=i>cEB$^FxED90SWS+Jci+{uN*%^O=$y8bD18 zP9g(?0wuh|{K;aVkF4X{Pr9g%75~;I$J3^|`rDQA{kr9)O6U3~ovM{(`|-!N>sL9u zHg~!9b7dPsKP|bE-hHXC`WnYIV|SmCO&1Gi2jG*Tp3zt+7N*miUi*ukE_f~)w?I*s z4&tcI4GxbG7^E1buda))Dzc*{fPwXRwS9fL!7A9;uQ2(9y=?WGdnL^yFd3Aef`ldF zuzRT*`OFKOOgb`1$pu40Wmuom6H>bNGkQuaeA$9C{K~j0w3^d09tD?I<8>jmq-Jy# z7jLlhR3r0H^+c^9W`$k=!~Rk8i>6At=>UGKkz&{+9>8j7=jcq!jJ(%aYWn+Q&3E~i z-ZR^eACSR5i2cOIhf$&^Rn$w*P7__>01Wj81{9*U#?s`gR;*&ov#z;_JPnWO4}b3s z#jzg`aU~9eWU*}8Lv>GRH$R>-BZ3J(ah)$=bc{+8*EQ!N^4=Nfh0!{Gcr6W~G&4d& zV5H_dTb+|Yw0?ETK*pcoW}eDqOIZZ&K8GU`EL898bgqt{zM7p5U40s!;6e+Gl93N< z>T|QZdS+mntu_I7-t2`~m$@b3BDo0ZFa#b&N5q|=!^!0tUE9sV!z_pKvSLHHtC^nXy_O0E5>MTmmnqKawczdYMM47UbdaMN+d~D zf?^3!J66tQS#)_$v9;jYaEMIM%Joh=mqDA_nI}X#J)k^qYOg@+ewVDYuLj;8^Py(Fw%k)z;b`JsB#RF2aP-vHtyNJd*sn%v!!yENR3Oi?zQ)aa>b& z!dgxY2L7f4UO;P5EM+W~AR$flKq3L8iN1kO7xL{d)U8e@&s28Sf z+JLLFKQ?($Ye}ViAHO(;@ZE^FHibn)EO|F<1b(L~I;39REo)&>rQn}U=2 zepy=r#3tFoVDMXRi&7LEC6>Rs?N58AC+(oj6;{T;$}mzk^XJyl(8lEyv?V(D9;XQHD=< z#F(lp;jmg@R>hm#b^r7+nT5A`qqbgcUz|Er<@d6_VkTWRf05Ad{ioRDQu|=)>hvOs zyb;y%AC+oo!!CIU2eo_?W7Wu}-X!Ir&hoWjK5*wFOrpie;vb{ThU-`tAO{O~ za_0k|&M}Qlt$w8}FB#nMVH>*`M66b{@>63OBpuj3DJ)?>6T3eV)=b&=B#m;oZM`LZ z*5*nn=>Oyb4NiQ~4qEhASDvaF%GG?BOrtk&YEW=yf2dPwcs*TnVUL8?ErewB;w%+H zm(;L}TMb{HEcR&@3Ij{dF}NBXmh#qDO|Hz*#!QXv0^<0oWCJjXqHt0%^egUuevjl3 zJ^=L6N8o~YKX&n&Wo6}p?lkDzN(Cl9<*o`^1oM4+!@ncMmb_(@QukRxu32lg{gs{w zGY1+H)cXqklz@R>bSC#at)(YlO9mt;m=qw0H-T^5#GB@YL@a~I)I!#|6WFImZXea9Td*-`A0w#{irw=3j zzAG^?0 zVq+OfXj4)`F?&e ze2|?eoa6_{@4rScf(*?yZ<)||Hyhg)5(q(e2pQ(4cRC0L`bd726D=41>G!_?9}b6) diff --git a/1-js/9-prototypes/5-class-inheritance/class-inheritance-rabbit-run-animal.png b/1-js/9-prototypes/5-class-inheritance/class-inheritance-rabbit-run-animal.png deleted file mode 100644 index 9582a7932985fe9bd30daf07d0da7e63ff516bcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23137 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 diff --git a/1-js/9-prototypes/5-class-inheritance/class-inheritance-rabbit-run-animal@2x.png b/1-js/9-prototypes/5-class-inheritance/class-inheritance-rabbit-run-animal@2x.png deleted file mode 100644 index 3316df5ae4e9840442404dc953953d92097ec7a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51989 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 diff --git a/1-js/9-prototypes/5-class-inheritance/console_dir_array.png b/1-js/9-prototypes/5-class-inheritance/console_dir_array.png deleted file mode 100755 index a58db646db054f081045904257e9524962bb0628..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17005 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 OHS*r)=UMx6c;?^BGc@G@ diff --git a/1-js/9-prototypes/6-instanceof/1-strange-instanceof/solution.md b/1-js/9-prototypes/6-instanceof/1-strange-instanceof/solution.md deleted file mode 100644 index 6bf55d43..00000000 --- a/1-js/9-prototypes/6-instanceof/1-strange-instanceof/solution.md +++ /dev/null @@ -1,7 +0,0 @@ -Да, это выглядит достаточно странно, поскольку объект `a` не создавался функцией `B`. - -Но методу `instanceof` на самом деле вообще не важна функция. Он смотрит на её `prototype` и сверяет его с цепочкой `__proto__` объекта. - -В данном случае `a.__proto__ == B.prototype`, поэтому `instanceof` возвращает `true`. - -По логике `instanceof` именно прототип задаёт "тип объекта", поэтому `instanceof` работает именно так. \ No newline at end of file diff --git a/1-js/9-prototypes/6-instanceof/1-strange-instanceof/task.md b/1-js/9-prototypes/6-instanceof/1-strange-instanceof/task.md deleted file mode 100644 index a3c73f74..00000000 --- a/1-js/9-prototypes/6-instanceof/1-strange-instanceof/task.md +++ /dev/null @@ -1,21 +0,0 @@ -# Странное поведение instanceof - -[importance 5] - -Почему `instanceof` в коде ниже возвращает `true`, ведь объект `a` явно создан не `B()`? - -```js -//+ run -function A() {} - -function B() {} - -A.prototype = B.prototype = {}; - -var a = new A(); - -*!* -alert( a instanceof B ); // true -*/!* -``` - diff --git a/1-js/9-prototypes/6-instanceof/2-instanceof-result/solution.md b/1-js/9-prototypes/6-instanceof/2-instanceof-result/solution.md deleted file mode 100644 index 646e3aa1..00000000 --- a/1-js/9-prototypes/6-instanceof/2-instanceof-result/solution.md +++ /dev/null @@ -1,18 +0,0 @@ -Да, распознает. - -Он проверяет наследование с учётом цепочки прототипов. - -```js -//+ run -function Animal() {} - -function Rabbit() {} -Rabbit.prototype = Object.create(Animal.prototype); - -var rabbit = new Rabbit(); - -alert( rabbit instanceof Rabbit ); // true -alert( rabbit instanceof Animal ); // true -alert( rabbit instanceof Object ); // true -``` - diff --git a/1-js/9-prototypes/6-instanceof/2-instanceof-result/task.md b/1-js/9-prototypes/6-instanceof/2-instanceof-result/task.md deleted file mode 100644 index 56c971e4..00000000 --- a/1-js/9-prototypes/6-instanceof/2-instanceof-result/task.md +++ /dev/null @@ -1,23 +0,0 @@ -# Что выведет instanceof? - -[importance 5] - -В коде ниже создаётся простейшая иерархия классов: `Animal -> Rabbit`. - -Что выведет [instanceof](/instanceof)? - -Распознает ли он `rabbit` как `Animal`, `Rabbit` и к тому же `Object`? - -```js -function Animal() {} - -function Rabbit() {} -Rabbit.prototype = Object.create(Animal.prototype); - -var rabbit = new Rabbit(); - -alert( rabbit instanceof Rabbit ); -alert( rabbit instanceof Animal ); -alert( rabbit instanceof Object ); -``` - diff --git a/1-js/9-prototypes/6-instanceof/article.md b/1-js/9-prototypes/6-instanceof/article.md deleted file mode 100644 index 174333cf..00000000 --- a/1-js/9-prototypes/6-instanceof/article.md +++ /dev/null @@ -1,91 +0,0 @@ -# Проверка класса: "instanceof" - -Оператор `instanceof` позволяет проверить, какому классу принадлежит объект, с учетом прототипного наследования. - -[cut] - -## Алгоритм работы instanceof [#ref-instanceof] - -Вызов `obj instanceof Constructor` возвращает `true`, если объект принадлежит классу `Constructor` или его родителям. - -Пример использования: - -```js -//+ run -function Rabbit() {} - -*!* -// создаём объект -*/!* -var rabbit = new Rabbit(); - -// проверяем -- этот объект создан Rabbit? -*!* -alert( rabbit instanceof Rabbit ); // true, верно -*/!* -``` - -Массив `arr` принадлежит классу `Array`, но также и является объектом `Object`. Это верно, так как массивы наследуют от объектов: - -```js -//+ run -var arr = []; -alert( arr instanceof Array ); // true -alert( arr instanceof Object ); // true -``` - -Как это часто бывает в JavaScript, здесь есть ряд тонкостей. В некоторых ситуациях, проверка может даже ошибаться! - -**Алгоритм проверки `obj instanceof Constructor`:** - -

      -
    1. Получить `obj.__proto__`
    2. -
    3. Сравнить `obj.__proto__` с `Constructor.prototype`
    4. -
    5. Если не совпадает, тогда заменить `obj` на `obj.__proto__` и повторить проверку на шаге 2 до тех пор, пока либо не найдется совпадение (результат `true`), либо цепочка прототипов не закончится (результат `false`).
    6. -
    - -В проверке `rabbit instanceof Rabbit` совпадение происходит на первом же шаге этого алгоритма, так как: `rabbit.__proto__ == Rabbit.prototype`. - -А если рассмотреть `arr instanceof Object`, то совпадение будет найдено на следующем шаге, так как `arr.__proto__.__proto__ == Object.prototype`. - -Забавно, что сама функция-констуктор не участвует в процессе проверки! Важна только цепочка прототипов для проверяемого объекта. - -Это может приводить к забавному результату и даже ошибкам в проверке при изменении `prototype`, например: - -```js -//+ run -// Создаём объект rabbit, как обычно -function Rabbit() {} -var rabbit = new Rabbit(); - -// изменили prototype... -Rabbit.prototype = {}; - -// ...instanceof перестал работать! -*!* -alert( rabbit instanceof Rabbit ); // false -*/!* -``` - -Стоит ли говорить, что это один из доводов для того, чтобы никогда не менять `prototype`? Так сказать, во избежание. - -[warn header="Не друзья: `instanceof` и фреймы"] - -Оператор `instanceof` не срабатывает, когда значение приходит из другого окна или фрейма. - -Например, массив, который создан в ифрейме и передан родительскому окну -- будет массивом *в том ифрейме*, но не в родительском окне. Проверка `instanceof Array` в родительском окне вернёт `false`. - -Вообще, у каждого окна и фрейма -- своя иерархия объектов и свой `window` . - -Как правило, эта проблема возникает со встроенными объектами, в этом случае используется проверка внутреннего свойства `[[Class]]`, которое подробнее описано в главе [](/class-instanceof). -[/warn] - - -## Итого - -
      -
    • Оператор `obj instanceof Func` проверяет тот факт, что `obj` является результатом вызова `new Func`. Он учитывает цепочку `__proto__`, поэтому наследование поддерживается.
    • -
    • Оператор `instanceof` не сможет проверить тип значения, если объект создан в одном окне/фрейме, а проверяется в другом. Это потому, что в каждом окне -- своя иерархия объектов. Для точной проверки типов встроенных объектов можно использовать свойство `[[Class]]`.
    • -
    - -Оператор `instanceof` особенно востребован в случаях, когда мы работаем с иерархиями классов. Это наилучший способ проверить принадлежность тому или иному классу с учётом наследования. diff --git a/1-js/9-prototypes/7-oop-errors/1-format-error/solution.md b/1-js/9-prototypes/7-oop-errors/1-format-error/solution.md deleted file mode 100644 index 1532bd3c..00000000 --- a/1-js/9-prototypes/7-oop-errors/1-format-error/solution.md +++ /dev/null @@ -1,28 +0,0 @@ -```js -//+ run -function FormatError(message) { - this.name = "FormatError"; - - this.message = message; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - this.stack = (new Error()).stack; - } - -} - -FormatError.prototype = Object.create(SyntaxError.prototype); -FormatError.prototype.constructor = FormatError; - -// Использование - -var err = new FormatError("ошибка форматирования"); - -alert( err.message ); // ошибка форматирования -alert( err.name ); // FormatError -alert( err.stack ); // стек на момент генерации ошибки - -alert( err instanceof SyntaxError ); // true -``` \ No newline at end of file diff --git a/1-js/9-prototypes/7-oop-errors/1-format-error/task.md b/1-js/9-prototypes/7-oop-errors/1-format-error/task.md deleted file mode 100644 index bd78ad35..00000000 --- a/1-js/9-prototypes/7-oop-errors/1-format-error/task.md +++ /dev/null @@ -1,17 +0,0 @@ -# Унаследуйте от SyntaxError - -[importance 5] - -Создайте ошибку `FormatError`, которая будет наследовать от встроенного класса `SyntaxError`. - -Синтаксис для её создания -- такой же, как обычно: - -```js -var err = new FormatError("ошибка форматирования"); - -alert( err.message ); // ошибка форматирования -alert( err.name ); // FormatError -alert( err.stack ); // стек на момент генерации ошибки - -alert( err instanceof SyntaxError ); // true -``` diff --git a/1-js/9-prototypes/7-oop-errors/article.md b/1-js/9-prototypes/7-oop-errors/article.md deleted file mode 100644 index 13fd9715..00000000 --- a/1-js/9-prototypes/7-oop-errors/article.md +++ /dev/null @@ -1,285 +0,0 @@ -# Свои ошибки, наследование от Error - -Когда мы работаем с внешними данными, возможны самые разные ошибки. - -Если приложение сложное, то ошибки естественным образом укладываются в иерархию, разобраться в которой помогает `instanceof`. - -## Свой объект ошибки - -Для примера создадим функцию `readUser(json)`, которая будет разбирать JSON с данными посетителя. Мы его получаем с сервера -- может, нашего, а может -- чужого, в общем -- желательно проверить на ошибки. А может, это даже и не JSON, а какие-то другие данные -- не важно, для наглядности поработаем с JSON. - -Пример `json` на входе в функцию: `{ "name": "Вася", "age": 30 }`. - -В процессе работы `readUser` возможны различные ошибки. Одна -- очевидно, `SyntaxError` -- если передан некорректный JSON. - -Но могут быть и другие, например `PropertyError` -- эта ошибка будет возникать, если в прочитанном объекте нет свойства `name` или `age`. - -Реализуем класс `PropertyError`: - -```js -function PropertyError(property) { - Error.call(this, property) ; - this.name = "PropertyError"; - - this.property = property; - this.message = "Ошибка в свойстве " + property; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, PropertyError); - } else { - this.stack = (new Error()).stack; - } - -} - -PropertyError.prototype = Object.create(Error.prototype); -``` - -В этом коде вы можете видеть ряд важных деталей, важных именно для ошибок: - -
    -
    `name` -- имя ошибки.
    -
    Должно совпадать с именем функции.
    -
    `message` -- сообщение об ошибке.
    -
    Несмотря на то, что `PropertyError` наследует от `Error` (последняя строка), конструктор у неё немного другой. Он принимает не сообщение об ошибке, а название свойства `property`, ну а сообщение генерируется из него. - -В результате в объекте ошибки есть как стандартное свойство `message`, так и более точное `property`. - -Это частая практика -- добавлять в объект ошибки свойства, которых нет в базовых объектах `Error`, более подробно описывающие ситуацию для данного класса ошибок.
    -
    `stack` -- стек вызовов, которые в итоге привели к ошибке.
    -
    У встроенных объектов `Error` это свойство есть автоматически, вот к примеру: -```js -//+ run -function f() { - alert( new Error().stack ); -} - -f(); // выведет список вложенных вызовов, с номерами строк, где они были сделаны -``` - -Если же объект ошибки делаем мы, то "по умолчанию" у него такого свойства у него не будет. Нам нужно как-то самим узнавать последовательность вложенных вызовов на текущий момент. Однако удобного способа сделать это в JavaScript нет, поэтому мы поступаем хитро и копируем его из нового объекта `new Error`, который генерируем тут же. - -В V8 (Chrome, Opera, Node.JS) есть нестандартное расширение [Error.captureStackTrace](https://code.google.com/p/v8-wiki/wiki/JavaScriptStackTraceApi), которое позволяет стек получать. - -Это делает строка из кода выше: -```js -Error.captureStackTrace(this, PropertyError); -``` - -Такой вызов записывает в объект `this` (текущий объект ошибки) стек вызовов, ну а второй аргумент -- вообще не обязателен, но если есть, то говорит, что при генерации стека нужно на этой функции остановиться. В результате в стеке будет информация о цепочке вложенных вызовов вплоть до вызова `PropertyError`. - -То есть, будет последовательность вызовов до генерации ошибки, но не включая код самого конструктора ошибки, который, как правило, не интересен. Такое поведение максимально соответствует встроенным ошибкам JavaScript. -
    -
    - -[smart header="Конструктор родителя здесь не обязателен"] -Обычно, когда мы наследуем, то вызываем конструктор родителя. В данном случае вызов выглядит как `Error.call(this, message)`. - -Строго говоря, этот вызов здесь не обязателен. Встроенный конструктор `Error` ничего полезного не делает, даже свойство `this.message` (не говоря уже об `name` и `stack`) не назначает. Единственный возможный смысл его вызова -- он ставит специальное внутреннее свойство `[[ErrorData]]`, которое выводится в `toString` и позволяет увидить, что это ошибка. Поэтому по стандарту вызывать конструктор `Error` при наследовании в таких случаях рекомендовано. -[/smart] - - -## instanceof + try..catch = ♡ - -Давайте теперь используем наш новый класс для `readUser`: - -```js -//+ run -*!* -// Объявление -*/!* -function PropertyError(property) { - this.name = "PropertyError"; - - this.property = property; - this.message = "Ошибка в свойстве " + property; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, PropertyError); - } else { - this.stack = (new Error()).stack; - } - -} - -PropertyError.prototype = Object.create(Error.prototype); - -*!* -// Генерация ошибки -*/!* -function readUser(data) { - - var user = JSON.parse(data); - - if (!user.age) { - throw new PropertyError("age"); - } - - if (!user.name) { - throw new PropertyError("name"); - } - - return user; -} - -*!* -// Запуск и try..catch -*/!* - -try { - var user = readUser('{ "age": 25 }'); -} catch (err) { - if (err instanceof PropertyError) { - if (err.property == 'name') { - // если в данном месте кода возможны анонимы, то всё нормально -*!* - alert( "Здравствуйте, Аноним!" ); -*/!* - } else { - alert( err.message ); // Ошибка в свойстве ... - } - } else if (err instanceof SyntaxError) { - alert( "Ошибка в синтаксисе данных: " + err.message ); - } else { - throw err; // неизвестная ошибка, не знаю что с ней делать - } -} -``` - -Всё работает -- и наша ошибка `PropertyError` и встроенная `SyntaxError` корректно генерируются, перехватываются, обрабатываются. - -Обратим внимание на проверку типа ошибки в `try..catch`. Оператор `instanceof` проверяет класс с учётом наследования. Это значит, что если мы в дальнейшем решим создать новый тип ошибки, наследующий от `PropertyError`, то проверка `err instanceof PropertyError` для класса-наследника тоже будет работать. Код получился расширяемым, это очень важно. - -## Дальнейшее наследование - -`PropertyError` -- это просто общего вида ошибка в свойстве. Создадим ошибку `PropertyRequiredError`, которая означает, что свойства нет. - -Эт подвид `PropertyError`, так что унаследуем он неё. Общий вид конструктора-наследника -- стандартный: - -```js -function PropertyRequiredError(property) { - // вызываем конструктор родителя и передаём текущие аргументы - PropertyError.apply(this, arguments); - ... -} -``` - -Достаточно ли в наследнике просто вызвать конструктор родителя? Увы, нет. - -Если так поступить, то свойство `this.name` будет некорректным, да и `Error.captureStackTrace` тоже получит неправильную функцию вторым параметром. - -Можно ли как-то поправить конструктор родителя, чтобы от него было проще наследовать? - -Для этого нужно убрать из него упоминания о конкретном классе `PropertyError`, чтобы сделать код универсальным. Частично -- это возможно. Как мы помним, существует свойство `constructor`, которое есть в `prototype` по умолчанию, и которое мы можем намеренно сохранить при наследовании. - -Исправим родителя `PropertyError` для более удобного наследования от него: - -```js -function PropertyError(property) { - this.name = "PropertyError"; - - this.property = property; - this.message = "Ошибка в свойстве " + property; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, *!*this.constructor*/!*); // (*) - } else { - this.stack = (new Error()).stack; - } - -} - -PropertyError.prototype = Object.create(Error.prototype); -*!* -PropertyError.prototype.constructor = PropertyError; -*/!* -``` - -В строке `(*)` вместо ссылки на `PropertyError` используем `constructor` чтобы получить именно конструктор для текущего объекта. В наследнике там будет `PropertyRequiredError`, как и задумано. - -Мы убрали одну жёсткую привязку к `PropertyError`, но со второй (`this.name`), увы, сложности. Оно должно содержать имя ошибки, то есть, имя её функции-конструктора. Его можно получить через `this.name = this.constructor.name`, но в IE11- это работать не будет. - -Если подерживать IE11-, то тут уж придётся в наследнике его записывать вручную. - -Полный код для наследника: - -```js -function PropertyRequiredError(property) { - PropertyError.apply(this, arguments); - this.name = 'PropertyRequiredError'; - this.message = 'Отсутствует свойство ' + property; -} - -PropertyRequiredError.prototype = Object.create(PropertyError.prototype); -PropertyRequiredError.prototype.constructor = PropertyRequiredError; - -var err = new PropertyRequiredError("age"); -// пройдёт проверку -alert( err instanceof PropertyError ); // true -``` - -Здесь заодно и `message` в наследнике было перезаписано на более точное. Если хочется избежать записи и перезаписи, то можно оформить его в виде геттера через `Object.defineProperty`. - -## Итого - -
      -
    • Чтобы наследовать от ошибок `Error`, нужно самостоятельно позаботиться о `name`, `message` и `stack`.
    • -
    • Благодаря тому, что `instanceof` поддерживает наследование, удобно организуются проверки на нужный тип. В иерархию ошибок можно в любой момент добавить новые классы, с понятным кодом и предсказуемым поведением.
    • -
    - -Чтобы создавать наследники от `Error` было проще, можно создать класс `CustomError`, записать в него универсальный код, наподобие `PropertyError` и далее наследовать уже от него: - -```js -*!* -// общего вида "наша" ошибка -*/!* -function CustomError(message) { - this.name = "CustomError"; - this.message = message; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - this.stack = (new Error()).stack; - } - -} - -CustomError.prototype = Object.create(Error.prototype); -CustomError.prototype.constructor = CustomError; - -*!* -// наследник -*/!* -function PropertyError(property) { - CustomError.call(this, "Отсутствует свойство " + property) - this.name = "PropertyError"; - - this.property = property; -} - -PropertyError.prototype = Object.create(CustomError.prototype); -PropertyError.prototype.constructor = PropertyError; - -*!* -// и ещё уровень -*/!* -function PropertyRequiredError(property) { - PropertyError.call(this, property); - this.name = 'PropertyRequiredError'; - this.message = 'Отсутствует свойство ' + property; -} - -PropertyRequiredError.prototype = Object.create(PropertyError.prototype); -PropertyRequiredError.prototype.constructor = PropertyRequiredError; - -*!* -// использование -*/!* -var err = new PropertyRequiredError("age"); -// пройдёт проверку -alert( err instanceof PropertyRequiredError ); // true -alert( err instanceof PropertyError ); // true -alert( err isntanceof CustomError ); // true -alert( err isntanceof Error ); // true -``` diff --git a/1-js/9-prototypes/8-mixins/article.md b/1-js/9-prototypes/8-mixins/article.md deleted file mode 100644 index a87d1bf3..00000000 --- a/1-js/9-prototypes/8-mixins/article.md +++ /dev/null @@ -1,170 +0,0 @@ -# Примеси - -В JavaScript невозможно унаследовать от двух и более объектов. Ссылка `__proto__` -- только одна. - -Но потребность такая существует -- к примеру, мы написали код, релизующий методы работы с шаблонизатором или методы по обмену событиями, и хочется легко и непринуждённо добавлять эти возможности к любому классу. - -Обычно это делают через примеси. - -Примесь (англ. mixin) -- класс или объект, реализующий какое-либо чётко выделенное поведение. Используется для уточнения поведения других классов, не предназначен для самостоятельного использования. - - - -## Пример примеси - -Самый простой вариант примеси -- это объект с полезными методами, которые мы просто копируем в нужный прототип. - -Например: - -```js -//+ run -*!* -// примесь -*/!* -var sayHiMixin = { - sayHi: function() { - alert("Привет " + this.name); - }, - sayBye: function() { - alert("Пока " + this.name); - } -}; - -*!* -// использование: -*/!* -function User(name) { - this.name = name; -} - -// передать методы примеси -for(var key in sayHiMixin) User.prototype[key] = sayHiMixin[key]; - -// User "умеет" sayHi -new User("Вася").sayHi(); // Привет Вася -``` - -Как видно из примера, методы примеси активно используют `this` и предназначены именно для запуска в контексте "объекта-носителя примеси". - -Если какие-то из методов примеси не нужны -- их можно перезаписать своими после копирования. - - -## Примесь для событий - -Теперь пример из реальной жизни. - -Важный аспект, который может понадобиться объектам -- это умение работать с событиями. - -То есть, чтобы объект мог специальным вызовом генерировать "уведомление о событии", а на эти уведомления другие объекты могли "подписываться", чтобы их получать. - -Например, объект "Пользователь" при входе на сайт может генерировать событие `"login"`, а другие объекты, например "Календарь" может такие уведомления получать и подгружать информацию о пользователе. - -Или объект "Меню" может при выборе пункта меню генерировать событие `"select"` с информацией о выбранном пункте меню, а другие объекты -- подписавшись на это событие, будут узнавать об этом. - -События -- это средство "поделиться информацией" с неопределённым кругом заинтересованных лиц. А там уже кому надо -- тот среагирует. - -Примесь `eventMixin`, реализующая события: - -```js -var eventMixin = { - - /** - * Подписка на событие - * Использование: - * menu.on('select', function(item) { ... } - */ - on: function(eventName, handler) { - if (!this._eventHandlers) this._eventHandlers = {}; - if (!this._eventHandlers[eventName]) { - this._eventHandlers[eventName] = []; - } - this._eventHandlers[eventName].push(handler); - }, - - /** - * Прекращение подписки - * menu.off('select', handler) - */ - off: function(eventName, handler) { - var handlers = this._eventHandlers && this._eventHandlers[eventName]; - if (!handlers) return; - for(var i=0; i -
  • `.on(имя события, функция)` -- назначает функцию к выполнению при наступлении события с данным именем. Такие функции хранятся в защищённом свойстве объекта `_eventHandlers`.
  • -
  • `.off(имя события, функция)` -- удаляет функцию из списка предназначенных к выполнению.
  • -
  • `.trigger(имя события, аргументы)` -- генерирует событие, при этом вызываются все назначенные на него функции, и им передаются аргументы.
  • - - -Использование: - -```js -// Класс Menu с примесью eventMixin -function Menu() { - // ... -} - -for(var key in eventMixin) { - Menu.prototype[key] = eventMixin[key]; -} - -// Генерирует событие select при выборе значения -Menu.prototype.choose = function(value) { -*!* - this.trigger("select", value); -*/!* -} - -// Создадим меню -var menu = new Menu(); - -// При наступлении события select вызвать эту функцию -*!* -menu.on("select", function(value) { - alert("Выбрано значение " + value); -}); -*/!* - -// Запускаем выбор (событие select вызовет обработчики) -menu.choose("123"); -``` - -...То есть, смысл событий -- обычно в том, что объект, в процессе своей деятельности, внутри себя (`this.trigger`) генерирует уведомления, на которые внешний код через `menu.on(...)` может быть подписан. И узнавать из них ценную информцию о происходящем, например -- что выбран некий пункт меню. - -Один раз написав методы `on/off/trigger` в примеси, мы затем можем использовать их во множестве прототипов. - -## Итого - -
      -
    • Примесь -- объект, содержащий методы и свойства для реализации конкретного функционала. -Возможны вариации этого приёма проектирования. Например, примесь может предусматривать конструктор, который должен запускаться в конструкторе объекта. Но как правило просто набора методов хватает.
    • -
    • Для добавления примеси в класс -- её просто "подмешивают" в прототип.
    • -
    • "Подмешать" можно сколько угодно примесей, но если имена методов в разных примесях совпадают, то возможны конфликты. Их уже разрешать -- разработчику. Например, можно заменить конфликтующий метод на свой, который будет решать несколько задач сразу. Конфликты при грамотно оформленных примесях возникают редко.
    - - diff --git a/1-js/9-prototypes/index.md b/1-js/9-prototypes/index.md deleted file mode 100644 index 3b67318e..00000000 --- a/1-js/9-prototypes/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# ООП в прототипном стиле - -В этом разделе мы изучим прототипы и классы на них -- де-факто стандарт объектно-ориентированной разработки в JavaScript. \ No newline at end of file diff --git a/1-js/index.md b/1-js/index.md deleted file mode 100644 index f3fadc3a..00000000 --- a/1-js/index.md +++ /dev/null @@ -1,5 +0,0 @@ -# Язык JavaScript - -Эта часть позволит вам изучить JavaScript с нуля или упорядочить и дополнить существующие знания. - -Мы будем использовать браузер в качестве окружения, но основное внимание будет уделяться именно самому языку JavaScript. \ No newline at end of file diff --git a/10-regular-expressions-javascript/1-regexp-introduction/article.md b/10-regular-expressions-javascript/1-regexp-introduction/article.md deleted file mode 100644 index 3fb0195a..00000000 --- a/10-regular-expressions-javascript/1-regexp-introduction/article.md +++ /dev/null @@ -1,104 +0,0 @@ -# Паттерны и флаги - -Регулярные выражения –- мощное средство поиска и замены в строке. - -В JavaScript регулярные выражения реализованы отдельным объектом `RegExp` и интегрированы в методы строк. -[cut] - -## Регэкспы - -Регулярное выражение (оно же "регэксп", "регулярка" или просто "рег"), состоит из *паттерна* (он же "шаблон") и необязательных *флагов*. - -Синтаксис создания регулярного выражения: - -```js -var regexp = new RegExp("шаблон", "флаги"); -``` - -Как правило, используют более короткую запись: шаблон внутри слешей `"/"`: - -```js -var regexp = /шаблон/; // без флагов -var regexp = /шаблон/gmi; // с флагами gmi (изучим их дальше) -``` - -Слэши `"/"` говорят JavaScript о том, что это регулярное выражение. Они играют здесь ту же роль, что и кавычки для обозначения строк. - -## Использование - -Основа регулярного выражения -- паттерн. Это строка, которую можно расширить специальными символами, которые делают поиск намного мощнее. - -В простейшем случае, если флагов и специальных символов нет, поиск по паттерну -- то же самое, что и обычный поиск подстроки: - -```js -//+ run -var str = "Я люблю JavaScript!"; // будем искать в этой строке - -var regexp = /лю/; -alert( str.search(regexp) ); // 2 -``` - -Сравните с обычным поиском: - -```js -//+ run -var str = "Я люблю JavaScript!"; - -var substr = "лю"; -alert( str.indexOf(substr) ); // 2 -``` - -Как видим, то же самое, разве что для регэкспа использован метод [search](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/search) -- он как раз работает с регулярными выражениями, а для подстроки -- [indexOf](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf). - -Но это соответствие лишь кажущееся. Очень скоро мы усложним регулярные выражения, и тогда увидим, что они гораздо мощнее. - -[smart header="Цветовые обозначения"] -Здесь и далее в тексте используется следующая цветовая схема: -
      -
    • регэксп (регулярное выражение) - красный
    • -
    • строка - синий
    • -
    • результат - зеленый
    • -
    -[/smart] - -## Флаги - -Регулярные выражения могут иметь флаги, которые влияют на поиск. - -В JavaScript их всего три: - -
    -
    `i`
    -
    Если этот флаг есть, то регэксп ищет независимо от регистра, то есть не различает между `А` и `а`.
    -
    `g`
    -
    Если этот флаг есть, то регэксп ищет все совпадения, иначе -- только первое.
    -
    `m`
    -
    Многострочный режим.
    -
    - -Самый простой для понимания из этих флагов -- безусловно, `i`. - -Пример его использования: - -```js -//+ run -var str = "Я люблю JavaScript!"; // будем искать в этой строке - -alert( str.search( *!*/ЛЮ/*/!* ) ); // -1 -alert( str.search( *!*/ЛЮ/i*/!* ) ); // 2 -``` - -
      -
    1. С регом /ЛЮ/ вызов вернул `-1`, что означает "не найдено" (как и в `indexOf`),
    2. -
    3. С регом /ЛЮ/i вызов нашёл совпадение на позиции 2, так как стоит флаг `i`, а значит "лю" тоже подходит.
    4. -
    - -Другие флаги мы рассмотрим в последующих главах. - -## Итого - -
      -
    • Регулярное выражение состоит из шаблона и необязательных флагов `g`, `i` и `m`.
    • -
    • Поиск по регулярному выражению без флагов и спец. символов, которые мы изучим далее -- это то же самое, что и обычный поиск подстроки в строке. Но флаги и спец. символы, как мы увидим далее, могут сделать его гораздо мощнее.
    • -
    • Метод строки `str.search(regexp)` возвращает индекс, на котором найдено совпадение.
    • -
    diff --git a/10-regular-expressions-javascript/10-regexp-ahchors/1-start-end/solution.md b/10-regular-expressions-javascript/10-regexp-ahchors/1-start-end/solution.md deleted file mode 100644 index e5118b47..00000000 --- a/10-regular-expressions-javascript/10-regexp-ahchors/1-start-end/solution.md +++ /dev/null @@ -1,6 +0,0 @@ - -Нам нужна строка, которая начинается -- и тут же кончается. То есть, пустая. - -Или, если быть ближе к механике регэкспов, то движок сначала будет искать в тексте начальную позицию ``pattern`^`, а как только найдёт её -- будет ожидать конечной ``pattern`$`. - -Заметим, что и ``pattern`^` и ``pattern`$` не требуют наличия символов. Это -- проверки. В пустой строке движок сначала проверит первую, а потом -- вторую -- и зафиксирует совпадение. \ No newline at end of file diff --git a/10-regular-expressions-javascript/10-regexp-ahchors/1-start-end/task.md b/10-regular-expressions-javascript/10-regexp-ahchors/1-start-end/task.md deleted file mode 100644 index f5df587e..00000000 --- a/10-regular-expressions-javascript/10-regexp-ahchors/1-start-end/task.md +++ /dev/null @@ -1,4 +0,0 @@ -# Регэксп ^$ - -Предложите строку, которая подойдёт под регулярное выражение ``pattern`^$`. - diff --git a/10-regular-expressions-javascript/10-regexp-ahchors/2-test-mac/solution.md b/10-regular-expressions-javascript/10-regexp-ahchors/2-test-mac/solution.md deleted file mode 100644 index 5a91a896..00000000 --- a/10-regular-expressions-javascript/10-regexp-ahchors/2-test-mac/solution.md +++ /dev/null @@ -1,21 +0,0 @@ -Двузначное шестнадцатиричное число -- это ``pattern`[0-9a-f]{2}` (с учётом флага ``pattern`/i`). - -Нам нужно одно такое число, и за ним ещё 5 с двоеточиями перед ними: ``pattern`[0-9a-f]{2}(:[0-9a-f]{2}){5}` - -И, наконец, совпадение должно начинаться в начале строки и заканчиваться -- в конце. То есть, строка целиком должна подходить под шаблон. Для этого обернём шаблон в ``pattern`^...$`. - -Итого, в действии: - - -```js -//+ run -var re = /^[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}$/i; - -alert( re.test('01:32:54:67:89:AB') ); // true - -alert( re.test('0132546789AB') ); // false (нет двоеточий) - -alert( re.test('01:32:54:67:89') ); // false (5 чисел, а не 6) - -alert( re.test('01:32:54:67:89:ZZ') ) // false (ZZ в конце) -``` diff --git a/10-regular-expressions-javascript/10-regexp-ahchors/2-test-mac/task.md b/10-regular-expressions-javascript/10-regexp-ahchors/2-test-mac/task.md deleted file mode 100644 index fecf7dd0..00000000 --- a/10-regular-expressions-javascript/10-regexp-ahchors/2-test-mac/task.md +++ /dev/null @@ -1,20 +0,0 @@ -# Проверьте MAC-адрес - -MAC-адрес сетевого интерфейса состоит из шести двузначиных шестандцатиричных чисел, разделённых двоеточием. - -Например: ``subject`'01:32:54:67:89:AB'`. - -Напишите регулярное выражение, которое по строке проверяет, является ли она корректным MAC-адресом. - -Использование: -```js -var re = ваш регэксп - -alert( re.test('01:32:54:67:89:AB') ); // true - -alert( re.test('0132546789AB') ); // false (нет двоеточий) - -alert( re.test('01:32:54:67:89') ); // false (5 чисел, а не 6) - -alert( re.test('01:32:54:67:89:ZZ') ) // false (ZZ в конце) -``` diff --git a/10-regular-expressions-javascript/10-regexp-ahchors/article.md b/10-regular-expressions-javascript/10-regexp-ahchors/article.md deleted file mode 100644 index 16abf01c..00000000 --- a/10-regular-expressions-javascript/10-regexp-ahchors/article.md +++ /dev/null @@ -1,68 +0,0 @@ -# Начало строки ^ и конец $ - -Знак каретки '^' и доллара '$' имеют в регулярном выражении особый смысл. Их называют "якорями" (anchor - англ.). -[cut] - -Каретка ^ совпадает в начале текста, а доллар $ -- в конце. - -**Якоря являются не символами, а проверками.** - -До этого мы говорили о регулярных выражениях, которые ищут один или несколько символов. Если совпадение есть -- эти символы включаются в результат. - -А якоря -- не такие. Когда поиск ходит до якоря -- он проверяет, есть ли соответствие, если есть -- продолжает идти по шаблону, не прибавляя ничего к результату. - -Каретку ^ обычно используют, чтобы указать, что регулярное выражение необходимо проверить именно с начала текста. - -Например, без каретки найдёт все числа: - -```js -//+ run -var str = '100500 попугаев съели 500100 бананов!'; -alert( str.match(/\d+/ig) ); // 100500, 500100 (нашло все числа) -``` - -А с кареткой -- только первое: - -```js -//+ run -var str = '100500 попугаев съели 500100 бананов!'; -alert( str.match(/^\d+/ig) ); // 100500 (только в начале строки)*!* -``` - -Знак доллара $ используют, чтобы указать, что паттерн должен заканчиваться в конце текста. - -Аналогичный пример с долларом для поиска числа в конце: - -```js -//+ run -var str = '100500 попугаев съели 500100'; -alert( str.match(/\d+$/ig) ); // 500100 -``` - -Оба якоря используют одновременно, если требуется, чтобы шаблон охватывал текст с начала и до конца. Обычно это требуется при валидации. - -Например, мы хотим проверить, что в переменной `num` хранится именно десятичная дробь. - -Ей соответствует регэксп \d+\.\d+. Но простой поиск найдёт дробь в любом тексте: - -```js -//+ run -var num = "ля-ля 12.34"; -alert( num.match(/\d+\.\d+/ig) ); // 12.34 -``` - -Наша же задача -- проверить, что `num` *целиком* соответствует паттерну \d+\.\d+. - -Для этого обернём шаблон в якоря ^...$: - -```js -//+ run -var num = "ля-ля 12.34"; -alert( num.match(/^\d+\.\d+$/ig) ); // null, не дробь - -var num = "12.34"; -alert( num.match(/^\d+\.\d+$/ig) ); // 12.34, дробь! -``` - -Теперь поиск ищет начало текста, за которым идёт число, затем точка, ещё число и конец текста. Это как раз то, что нужно. - diff --git a/10-regular-expressions-javascript/11-regexp-multiline-mode/article.md b/10-regular-expressions-javascript/11-regexp-multiline-mode/article.md deleted file mode 100644 index 918a85eb..00000000 --- a/10-regular-expressions-javascript/11-regexp-multiline-mode/article.md +++ /dev/null @@ -1,89 +0,0 @@ -# Многострочный режим, флаг "m" - -Многострочный режим включается, если у регэкспа есть флаг /m. -[cut] - -В этом случае изменяется поведение ^ и $. - -В многострочном режиме якоря означают не только начало/конец текста, но и начало/конец строки. - -## Начало строки ^ - -В примере ниже текст состоит из нескольких строк. Паттерн /^\d+/gm берёт число с начала каждой строки: - -```js -//+ run -var str = '1е место: Винни\n' + - '2е место: Пятачок\n' + - '33е место: Слонопотам'; - -*!* -alert( str.match(/^\d+/gm) ); // 1, 2, 33 -*/!* -``` - -Обратим внимание -- без флага /m было бы найдено только первое число: - -```js -//+ run -var str = '1е место: Винни\n' + - '2е место: Пятачок\n' + - '33е место: Слонопотам'; - -alert( str.match(/^\d+/g) ); // 1 -``` - -Это потому что в обычном режиме каретка ^ -- это только начало текста, а в многострочном -- начало любой строки. - -Движок регулярных выражений двигается по тексту, и как только видит начало строки, начинает искать там \d+. - -## Конец строки $ - -Символ доллара $ ведёт себя аналогично. - -Регулярное выражение [а-я]+$ в следующем примере находит последнее слово в каждой строке: - -```js -//+ run -var str = '1е место: Винни\n' + - '2е место: Пятачок\n' + - '33е место: Слонопотам'; - -alert( str.match(/[а-я]+$/gim) ); // Винни,Пятачок,Слонопотам -``` - -Без флага m якорь $ обозначал бы конец всего текста, и было бы найдено только последнее слово. - -[smart header="Якорь `$` против `\n`"] -Для того, чтобы найти конец строки, можно использовать не только `$`, но и символ `\n`. - -Но, в отличие от `$`, символ `\n` во-первых берёт символ в результат, а во-вторых -- не совпадает в конце текста (если, конечно, последний символ -- не конец строки). - -Посмотрим, что будет с примером выше, если вместо [а-я]+$ использовать [а-я]+\n: - -```js -//+ run -var str = '1е место: Винни\n' + - '2е место: Пятачок\n' + - '33е место: Слонопотам'; - -alert( str.match(/[а-я]+\n/gim) ); -/* -Винни -,Пятачок -*/ -``` - -Всего два результата: Винни\n (с символом перевода строки) и Пятачок\n. Последнее слово "Слонопотам" здесь не даёт совпадения, так как после него нет перевода строки. -[/smart] - -## Итого - -В мультистрочном режиме: -
      -
    • Символ `^` означает начало строки.
    • -
    • Символ `$` означает конец строки.
    • -
    - -Оба символа являются проверками, они не добавляют ничего к результату. Про них также говорят, что "они имеют нулевую длину". - diff --git a/10-regular-expressions-javascript/12-regexp-lookahead/article.md b/10-regular-expressions-javascript/12-regexp-lookahead/article.md deleted file mode 100644 index 2cd4438c..00000000 --- a/10-regular-expressions-javascript/12-regexp-lookahead/article.md +++ /dev/null @@ -1,4 +0,0 @@ -# Предпросмотр (неготово) - -Требуется добавить главу про предпросмотр lookahead. - diff --git a/10-regular-expressions-javascript/13-regexp-infinite-backtracking-problem/article.md b/10-regular-expressions-javascript/13-regexp-infinite-backtracking-problem/article.md deleted file mode 100644 index 582c1066..00000000 --- a/10-regular-expressions-javascript/13-regexp-infinite-backtracking-problem/article.md +++ /dev/null @@ -1,305 +0,0 @@ -# Чёрная дыра бэктрекинга - -Некоторые регулярные выражения, с виду являясь простыми, могут выполняться оооочень долго, и даже "подвешивать" интерпретатор JavaScript. - -Рано или поздно, с этим сталкивается любой разработчик, потому что нечаянно создать такое регулярное выражение -- легче лёгкого. - -Типична ситуация, когда регулярное выражение до поры до времени работает нормально, и вдруг на каком-то тексте как начнёт "подвешивать" интерпретатор и есть 100% процессора. - -Это может стать уязвимостью. Например, если JavaScript выполняется на сервере, то при разборе данных, присланных посетителем, он может зависнуть, если использует подобный регэксп. На клиенте тоже возможно подобное, при использовании регэкспа для подсветки синтаксиса. - -Такие уязвимости "убивали" почтовые сервера и системы обмена сообщениями и до появления JavaScript, и наверно будут "убивать" и после его исчезновения. Так что мы просто обязаны с ними разобраться. - -[cut] - -## Пример - -План изложения у нас будет таким: - -
      -
    1. Сначала посмотрим на проблему в реальной ситуации.
    2. -
    3. Потом упростим реальную ситуацию до "корней" и увидим, откуда она берётся.
    4. -
    - -Рассмотрим, например, поиск по HTML. - -Мы хотим найти теги с атрибутами, то есть совпадения вида <a href="..." class=doc ...>. - -Самый простой способ это сделать -- <[^>]*>. Но он же и не совсем корректный, так как тег может выглядеть так: <a test="<>" href="#">. То есть, внутри "закавыченного" атрибута может быть символ `>`. Простейший регэксп на нём остановится и найдёт <a test="<>. - -Соответствие: -``` -<[^>]*....> -
    -``` - -А нам нужен весь тег. - -Для того, чтобы правильно обрабатывать такие ситуации, нужно учесть их в регулярном выражении. Оно будет иметь вид <тег (ключ=значение)*>. - -Если перевести на язык регэкспов, то: <\w+(\s*\w+=(\w+|"[^"]*")\s*)*>: -
      -
    1. <\w+ -- начало тега
    2. -
    3. (\s*\w+=(\w+|"[^"]*")\s*)* -- произвольное количество пар вида `слово=значение`, где "значение" может быть также словом \w+, либо строкой в кавычках "[^"]*".
    4. -
    - - -Мы пока не учитываем все детали грамматики HTML, ведь строки возможны и в 'одинарных' кавычках, но на данный момент этого достаточно. Главное, что регулярное выражение получилось в меру простым и понятным. - - -Испытаем полученный регэксп в действии: - -```js -//+ run -var reg = /<\w+(\s*\w+=(\w+|"[^"]*")\s*)*>/g; - -var str='...
    ... ...'; - -alert( str.match(reg) ); // , -``` - -Отлично, всё работает! Нашло как длинный тег <a test="<>" href="#">, так и одинокий <b>. - -А теперь -- демонстрация проблемы. - -Если запустить пример ниже, то он может подвесить браузер: - -```js -//+ run -var reg = /<\w+(\s*\w+=(\w+|"[^"]*")\s*)*>/g; - -var str = "/g; - -var str = "(\d+)*$. - -В большинстве движков регэкспов, например в Chrome или IE, этот поиск выполняется очень долго (осторожно, может "подвесить" браузер): - -```js -//+ run -alert( '12345678901234567890123456789123456789z'.match(/(\d+)*$/) ); -``` - -В чём же дело, что не так с регэкспом? - -Внимательный читатель, посмотрев на него, наверняка удивится, ведь он "какой-то странный". Квантификатор * здесь выглядит лишним. - -Если хочется найти число, то с тем же успехом можно искать \d+$. - -Да, этот регэксп носит искусственный характер, но, разобравшись с ним, мы поймём и практический пример, данный выше. Причина их медленной работы одинакова. - -В целом, с регэкспом "всё так", синтаксис вполне допустимый. Проблема в том, как выполняется поиск по нему. - -Посмотрим, что происходит при поиске в строке 123456789z: - -
      -
    1. Первым делом, движок регэкспов пытается найти \d+. Плюс + является жадным по умолчанию, так что он хватает все цифры, какие может: - -``` -\d+....... -(123456789)z -``` -
    2. -
    3. Затем движок пытается применить звёздочку вокруг скобок (\d+)*, но больше цифр нет, так что звёздочка не даёт повторений. - -Затем в шаблоне идёт символ конца строки $, а в тексте -- символ z. - -``` - X -\d+........$ -(123456789)z -``` -Соответствия нет. -
    4. -
    5. Так как соответствие не найдено, то "жадный" плюс + отступает на один символ (бэктрекинг). - -Теперь `\d+` -- это все цифры, за исключением последней: -``` -\d+....... -(12345678)9z -``` -
    6. -
    7. После бэктрекинга, \d+ содержит всё число, кроме последней цифры. Движок снова пытается найти совпадение, уже с новой позиции (`9`). - -Звёздочка (\d+)* теперь может быть применена -- она даёт число 9: - -``` - -\d+.......\d+ -(12345678)(9)z -``` -Движок пытается найти `$`, но это ему не удаётся -- на его пути опять `z`: - -``` - X -\d+.......\d+ -(12345678)(9)z -``` - -Так как совпадения нет, то поисковой движок отступает назад ещё раз. -
    8. -
    9. Теперь первое число \d+ будет содержать 7 цифр, а остаток строки 89 становится вторым \d+: - - -``` - X -\d+......\d+ -(1234567)(89)z -``` - -Увы, всё ещё нет соответствия для $. - -Поисковой движок снова должен отступить назад. При этом последний жадный квантификатор отпускает символ. В данном случае это означает, что укорачивается второй \d+, до одного символа 8, и звёздочка забирает следующий 9. - - -``` - X -\d+......\d+\d+ -(1234567)(8)(9)z -``` -
    10. -
    11. ...И снова неудача. Второе и третье \d+ отступили по-максимуму, так что сокращается снова первое число, до 123456, а звёздочка берёт оставшееся: - -``` - X -\d+.......\d+ -(123456)(789)z -``` - -Снова нет совпадения. Процесс повторяется, последний жадный квантификатор + отпускает один символ (`9`): - -``` - X -\d+.....\d+ \d+ -(123456)(78)(9)z -``` -
    12. -
    13. -...И так далее. -
    14. -
    - -Получается, что движок регулярных выражений перебирает все комбинации из `123456789` и их подпоследовательности. А таких комбинаций очень много. - -На этом месте умный читатель может воскликнуть: "Во всём виноват бэктрекинг? Давайте включим ленивый режим -- и не будет никакого бэктрекинга!" - -Что ж, заменим \d+ на \d+? и посмотрим (аккуратно, может подвесить браузер): - -```js -//+ run -alert( '12345678901234567890123456789123456789z'.match(/(\d+?)*$/) ); -``` - -Не помогло! - -**Ленивые регулярные выражения делают то же самое, но в обратном порядке.** - -Просто подумайте о том, как будет в этом случае работать поисковой движок. - -Некоторые движки регулярных выражений содержат хитрые проверки и конечные автоматы, которые позволяют избежать бесконечного перебора или кардинально ускорить его, но все движки и не всегда. - -Возвращаясь к примеру выше -- при поиске <(\s*\w+=\w+\s*)*> в строке <a=b a=b a=b a=b происходит то же самое. - -Поиск успешно начинается, выбирается некая комбинация из \s*\w+=\w+\s*, которая, так как в конце нет `>`, оказывается не подходящей. Движок честно отступает, пробует другую комбинацию -- и так далее. - -## Что делать? - -Проблема -- в сверхмноговариантном переборе. - -Движок регулярных выражений перебирает кучу возможных вариантов скобок там, где это не нужно. - -Например, в регэкспе (\d+)*$ нам (людям) очевидно, что в (\d+) откатываться не нужно. От того, что вместо одного \d+ у нас два независимых \d+\d+, ничего не изменится. - -Без разницы: - -``` -\d+........ -(123456789)z - -\d+...\d+.... -(1234)(56789)z -``` - -Если вернуться к более реальному примеру <(\s*\w+=\w+\s*)*> то -cам алгоритм поиска, который у нас в голове, предусматривает, что мы "просто" ищем тег, а потом пары `атрибут=значение` (сколько получится). - -Никакого "отката" здесь не нужно. - -В современных регулярных выражениях для решения этой проблемы придумали "possessive" (сверхжадные? неоткатные? точный перевод пока не устоялся) квантификаторы, которые вообще не используют бэктрегинг. - -То есть, они даже проще, чем "жадные" -- берут максимальное количество символов и всё. Поиск продолжается дальше. При несовпадении никакого возврата не происходит. - -Это, c стороны уменьшает количество возможных результатов, но с другой стороны -- в ряде случаев очевидно, что возврат (уменьшение количество повторений квантификатора) результата не даст. А только потратит время, что как раз и доставляет проблемы. Как раз такие ситуации и описаны выше. - -Есть и другое средство -- "атомарные скобочные группы", которые запрещают перебор внутри скобок, по сути позволяя добиваться того же, что и сверхжадные квантификаторы, - -К сожалению, в JavaScript они не поддерживаются. - -Однако, можно получить подобный эффект при помощи предпросмотра. Подробное описание соответствия с учётом синтаксиса сверхжадных квантификаторов и атомарных групп есть в статьях [Regex: Emulate Atomic Grouping (and Possessive Quantifiers) with LookAhead](http://instanceof.me/post/52245507631/regex-emulate-atomic-grouping-with-lookahead) и [Mimicking Atomic Groups](http://blog.stevenlevithan.com/archives/mimic-atomic-groups), здесь же мы останемся в рамках синтаксиса JavaScript. - -Взятие максимального количества повторений `a+` без отката выглядит так: (?=(a+))\1. - -То есть, иными словами, предпросмотр ?= ищет максимальное количество повторений a+, доступных с текущей позиции. А затем они "берутся в результат" обратной ссылкой \1. Дальнейший поиск -- после найденных повторений. - -Откат в этой логике принципе не предусмотрен, поскольку предпросмотр "откатываться" не умеет. То есть, если предпросмотр нашёл 5 штук a+, и в результате поиск не удался, то он не будет откатываться на 4 повторения. Эта возможность в предпросмотре отсутствует, а в данном случае она как раз и не нужна. - -Исправим регэксп для поиска тега с атрибутами <\w+(\s*\w+=(\w+|"[^"]*")\s*)*>, описанный в начале главы. Используем предпросмотр, чтобы запретить откат на меньшее количество пар `атрибут=значение`: - -```js -//+ run -// регэксп для пары атрибут=значение -var attr = /(\s*\w+=(\w+|"[^"]*")\s*)/ - -// используем его внутри регэкспа для тега -var reg = new RegExp('<\\w+(?=(' + attr.source + '*))\\1>', 'g'); - -var good = '...
    ... ...'; - -var bad = ", -alert( bad.match(reg) ); // null (нет результатов, быстро) -``` - -Отлично, всё работает! Нашло как длинный тег <a test="<>" href="#">, так и одинокий <b>. - - - - - - - diff --git a/10-regular-expressions-javascript/13-regexp-infinite-backtracking-problem/bad_backtrack_greedy1.png b/10-regular-expressions-javascript/13-regexp-infinite-backtracking-problem/bad_backtrack_greedy1.png deleted file mode 100644 index 8f207c4d06a706af96c42287d48882cf83a5645e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2357 zcmV-53Ci|~P)P(WY+-|yez;^O}$B{-Zo_xty-n>_vMEvuVs#k-@CensWb zF{qeir_-mhq4Lg-NNBKHkJBzO$Igz@y;X)X=>- z>)AA|pMLq`A-S-a(8;-2tXQm|fvAuaChY`Q|3m&B4~u#H5o|(7iC~=i-8L7~|Xpk!JDl>zs^SyQw0CcIaB$dQU>g7czrVjQFfiZW-zNY79==-o000I2Nkl;HY=sD!rHF5t_&-!EAyD4V`gS%W@ct)W@d(eCi!ejvVE7ly|gdd z+wZ;0MLNOnqu=lMl>lfT8v_1QRvH(Yo5w5V=1B%{l9Gp~RBV@Uf8`I4^f+-ZJn>{n za;Wq;UU+&?5hyK@9%pEcBLY3#5P>1_czkE_iOY#o?t~(q@@l6%l}aVaCnafkdejIw zk|$d}Jg#8ZB&EjzCFN8Rws3S|W8pmZ><2$CUHbf8mmbpYOV>~tNF_^Cr6rZgIK?X6 z&@@jyJ@4CPi@tj2nR(}LwPC^oD&v*qU;`^aCja&13k!bu{+sTft$2UYBNw+jPt8Vp zc$W3<+qV^n0KE8|u5y@41{rhvE!)`E5yWxM7*95de(dy=!B`=@SRG zTrqKd*T%*HufHPiot?{oJ@)QgSJ!!)&d#T3}p`gJ3AbGLru zj=S-3Dg}c($zX#SO>GtZ+f)Ub_Bv>6|Ngg5oi=Ui!mIm_J^Xsw-${yy_+I`7YWrsT z)DEkv1=}7t;hG!nxO3)=88dIY?%Hz>JK`q!a4JZ$mG$XMuO2XR{DjLUJv@E(?CJMU zI^*O~K)UGsy0W5a6??OdJodD!Cf_@2)^dMvB9@>h%we# zJFSp5hS|Wh1ca8~uwdR4euQSlxE=+<&>)j;1xL^{cwUV7o)~tGEv?Y4AiuJ+IY!*6B=SA5O)zP)SPb(x8m4Qh z7_l?cobyLm<7ZO8c%0DrDF~Wc#FmObRLw7$MVS4jSfw?hcxl~?{ZMYV-x)E~J+X@!LQOVE6aUj+r zadehRx_e~U8)|r)GGzBZ10&VXN7sx(5sJhKL`N0)AhwI+*oCqkGfXXCBrFja4zh(F z6SG3KbZQDJa9q(iT>3ikC5mGJ(R&ex6s%(Lxu#Irf_mZLI9|d8WCy2ttiDH<^COiE zB#363ukF@x#9X8C#hkA;h9H3BNEX5-#}_F{SU6OYL%fEPN`WM&)R>=1^xO=HpdCp5 z09`9MCc-w?B=IGx3pKWw8oP}X=W?gn6f2aYUKk7kM--U+EfY}(Oh*jlCWV45F4ujTYXeSXYy=$lcBhwqFoKDI z5Q;dWAJA=u!p!;3#DUMqqHi7%rvOb@y2Gn#oV%_cLa_vv@D>Oz#MenIKi}fI!Z$oO zl^8||UANdbWJYb@zK)A{Em8DN0IIM5j*JbYb|$`*;Q;tb)&IGbZ74TQUiE@KL} zhTw59I*xhKQT-n8JXHF$*TcnUaebB|-lC2p3XECeUcm!Zbu!K5+qxAzHI0nXHR09} bJ!bX~{I$l4p1@;800000NkvXXu0mjf5J=fH diff --git a/10-regular-expressions-javascript/13-regexp-infinite-backtracking-problem/bad_backtrack_greedy11.png b/10-regular-expressions-javascript/13-regexp-infinite-backtracking-problem/bad_backtrack_greedy11.png deleted file mode 100644 index 713532aeabedbb9f44be5db8f094efbd2e1c32a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1119 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 diff --git a/10-regular-expressions-javascript/13-regexp-infinite-backtracking-problem/bad_backtrack_greedy3.png b/10-regular-expressions-javascript/13-regexp-infinite-backtracking-problem/bad_backtrack_greedy3.png deleted file mode 100644 index 8d0cd5221fb120c82386dbd4f79c771dc6a23875..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2505 zcmV;)2{!hLP)nAQBhI<%*_8hJpYA-{{R60{{R3bCIA10h5yXV+1dZUzyIdu|D&V-l$8H;bpQW6 zJpbnA^Yi}zfB^r$zyD)n|8#W!l$5ct|No<-|0N~=@hg0Me50eI&(F{M=_>!(*}wn* z&*#to?JV=p&unaLy1KfquCC(Z;_vtGK%hYX_$~i1F#q%O{~#dQ+1dH!C;8+i&_F=@ z@9&Fr5Q>V5?Ck9Q>?_d8yZ-Ge|L!a9?C4QJ5wV{i-OMNd^DY1BB7|}k|FNMn4& zaHyGG_xJb3y`}NpGV|Oa@$c;a@G1T6EAQ{`$iTDq-XNlq9Y8=p+;DKT0095>EnZF& z{O2e3+8h7!DgXW}?b|5#{2|Nk$SgBGu!9{=hhy`eAa z#|!h&5sGpUP^eIrmX<(Z0K~+^v!irdTU)4@UDC_C+Qu>Z`S-7(Z>5ns*wMk!%Dvpl zHk*b;`QaeYw=$TBWBTSM+0)7F)FPOKOZVU)-|ye>-!aR;oUNQ&{OKn!m@u4*M)u() zrISN#F>Obp^Z^!XlReekG-{?5Qq@LxT5#__gJi0zu&*A zo_p=<b{Vwj@DB|AI*~d4ejXm_; zA@bH5z_+NKh)DPL^qPY^!2|?YSXkM~Cvb3ZX=!Pvr>DlLBkAVhshDEOsyFi17|pmo z)V(RRp-tw}E%Wj2+sIYFx1_F^Pp6MPtD7C1iyF|pJ?qL7|K}q0^YPZXA*qZD#jR1t zrx_an0Jx@P=HuSMq#MYqEif=J{qQWmzrXb2C$Xg<=+-bN007_L-`U6~zO|p<&L_B~ zQoOO8>fS2OyG-)oD58oI+_?_>=qSjxX5-H-*TpWWm>c}+E2x_v|LZJKKoO069_r5; z!l_8&!xPD>7Os&B;k^y{)DZR25BAa#hjbNyZWZjv3Y2{kfa5iN000JrNklqKBaGNb%DQi=vb;Xs}b;Xro%-k_EGcz+YGcz+Y^LEl%(%o6M z>n{%IeP870{O-N`AN=^8m4~qme){j0P)Mqm`Y9hjk4~ zB1N$p@Oq6_bOs<#*THsHNFwfGv?SOWcwE;}v(AfyCu&D2ng|5SIu(!Ox-<|hjl_$C z$Bt4-0DqPRBAti_Bx(tqGK(H6i-RYcAZ%kXcUh&$aU~U{__1+^9e|^WJ>o!TWAFzWsPAf<@

    gs__Jps7tfww>XZo!Ig zN6mk0!Hl8Fy$(CK{Zm{=@MfMQHx0s%YK-U5tEVKFjr^ge<-Or;S2QFKKW_r?qg2`d z>~_e|hEX5Psc9KGrzY7jbjU^L_!E!K20Lw>S^;>t;r56ML3httvcRy(Q zr0Jtqjvl@8>1!wLbHLFTSl{&S(Y4aMFd)6G_8Elnj6d*_d*}Z2_n0wb{#icvy5siU zk0|u$;z)D;d*{Jiy(6aTR29Bacb#y}v%mbeb`vaXKYQx3z4z#rczWc~Y3|#rs;PRA z_5W#)z4F_if2~>b$Li$_=fBpU6)t|p`&&h*Tka^( zUU$KB>P8!8E~Z|*9rzN@nP-jj(s|>ZnNxj<=kyI2*^Yeo?rXDC3w?>Fo~|}WXJM)i z__N+PKrCPTk`L-L`CwKn#?v~>pLiHRWU+BTYhCMrMxWvV_1o}^jRWfP!U27{7*C%9 z=AFiy8-dTHPj`%Ymr6+D79=UeDM(UBxt3IRMa^)f7Un!8AV_Zri3ma@x^7g27a$6A z+YmzTHU$w8X%$_hSCAu$V_CE;EAEzZnRg}0oJxK)kj4{2P*%bSBG)1k6$Ps?X9Xg& zO@T-@MW77H5Fu(sl!+jyxUPt0=d?P;q9`(S&1j|$Rtc{k92FnjVDlsD_z^?U;A#*- zx-xVqA_h-J1o5dtUM>-`mj!Z4-HjcB8gZ_k1ur231Iqh6jA$7-< zZAEfc1X3n3na&{*ls!kD`4RZIQvFkIzU0JX9ZAi!t5aq)2!$9ZN3fjBspK4%q)s03Y;t?457G(-5l{|&pW)SA0s@%k4QWa9OrH255v?m$Lx}*z;!ejBI#+?xZmkPln zu<-GXrU|B1+nVgX&45ny?a~og08DytT#%yR`$1)H0UQVl4~8tpxbDT(qk{tQ2vzV^f zd4R^Or1Qe!k(s!ri6F%FhM70R*+62a(q_WBnkN&F;H~bQOif?(5Hj-s37o=dGkDna zI5Fqr8FH^&n^o!C46{Y306baXa1`NLZ?va0K??Mw!lnnLXAo}k0GjNQe~6f&=L6N{ zcMlQMfp#KoSZ}7-IoA|S2a23?U@!~`^Ae=aYv5itSwzm79$YstEJ>IU1o~pYbsT1T zOpy$Fe!~YL^MU4_o3yxvZ;QgLAR$*;WnzONFUzzT%9HF3c Td9GPkQg@yk-Jpath{{R60{{R3bCI4e%|4~u@+1dZUzyEY}|NlHZ|6^mLqyPV- zqvq!S|G&SKl>Y#L0Q2+z|K{fZB_;pa*?fF_|8#W!^YiTN?EkT`&(F{Q@GJlCEWiK& z|1dCYY;6A^Ap7Vj@9*#b^ex%h*|D+z|L!dR>@4x$D$nQ7@AvOOpg{WPDCyWK{p%~b zy1MrE_FG$9qobp*udn*~`1ao-^Uu%o;VSa+?EmN_P*70&@9+QkF8`F2ii(QF#Kisn z{`>p;rzNzNo+_0ED%D6hP zmo~GRHKLMdvzj}@x})L39n88x(zF-XwjSce8?c%}rIcX$`udZBO|+m%M$bAGRe0_V^9#UqIlxL5zE7>n1)cFk6yy475e5c=hHK0QxM|NIqb?3<>A^m zI5;36AUFU3ga822NJyLj0Oy~dFaQ9_uq>8>Nb2U|$+j}Us4AwCK=1AA-`di5XBWx4 zgu}X-|MM)Mk6P&E-|E>Z$hIcYz$B=ZK#rQ~y4UM3M<1b#x+#De&V%T|m0t8wYOWbrO3OLomwcot4kDXa`Uyxx zFPTG+ux#b;|4&nhie<)-aGLBa+57R(%OU?crYV<-_fow?><`4qF3l$-9A?Z*Wr4I= zfxT6kj2DXO(`Tf4KMLf+rMZ({uD2?EE>)HCBOOBzPrOP$W`!!28b15xmp^vx`tqxf zhWy8~Dc8$yEa}|@-%Dbytg!#rKm4<~qtACAf4b>)t~eyYKQ9&L_vc%;?fi4gZ@=&U zzT=Y*@8^nFst5ERP~A_@(bk`S{i}6JTgTtKclP<<;R}lv(V_LDn``P(qK4eNZQ;-D zdp304uxHH|Te@C+{g7gXG^z$?isMeXs!whAA9u8m=)I%8qph~_sppCnQbj-W;n-7K zTRXnpjv#GspV!tp^VMgH71HR6zSa2Q@Z)OR=JlSxc|`B|?MvF)YM#FlQ! zRR>nok3wGuAJ(<4cHz|a?rWy*TZ(w~<4I>oAAMN7JOE2TvG0W9ZNYLmyi(WAKEV@0nDDkm}H1bG`o5 z4}BhU;`oWvA9#G_s#Pl=y=(f!@i*RGbdc7st>c>RYwlmsw|QWFGsg`&`TT3=y!iBr z<;z#R^2nSkPe1R5LP0w6fGi=cedFz>jWt|#b>IFqcx}*>OK+e1>}$)GJ@L@ot1lTh zmMavbQW;r z$Xx1iNVbq}y(KjwuA#seq6YV)G$f#hVwZ+&gC7*4)Vn4KL3TmV*j-^svbRMgLsW;3 z6n|DF$*H6|EbGq0$&Zs7kO+W8ythDr1QJ&80)Q>lwkTQ^tTzD|B9bZsL^?43CIaA4 zQUK#i5?SYA$4V+`5dowisQ~&UO##pjl_E&Y3KAL6kQ70e2z3^yFUH>^f*}e}Y($DC zNwRG@41rIQf)Lo@6M?KD6`-YyNCiNVAeALSH7xlURgpk|ssV^11xer>`m(D_(K?-K zrceYCD^A#J&`zXa1VEtkpHvi0FD%Ki?zG{fPAx(;Iiz3$M4D|_G9P7YGXyI2?Y0sT zO^GCdl^!G!1ZjN9A&EeBkD+Y_m08f}N(%sFG8s=Ks=SEZp}GKPU8H~{vxOHSG2&3u zkWdd$y@pPw23hi=lB5R)dC`apjf1mH8|tdw@B(uj7|jfl3Q00RxrS67;V6nM<3VUI zNB|mCi?vC;R1=~0zKE{;jkl0N1t2*!cFuE z5D`(L)A$l5$qYYXMnx8|9UGE>3I#ruZk4lG0g72_}jdSA*6)fKGumMF^^*jVp9Lo7z71gyA^z>1JA(X@&!% zW(FzIjI^?3UIUH00093P)t-s|NsC0 zQBhG*|6^nS%*_8hJpYA-{{R60{{R3bCIA10h34k}qoe=7zyFk!|Jm99baem!JUstn zWB<&|v9bREfB^s5+4J-N|D&V-zrSp3Z2#~q|K{eSqoaI$eEH-i&(F`m008Xl?Emd7 z^Uu%!B_%+hK>zV6|K}n6=_~&*F#nX4y1KgmARy1@&+qr|;^N}}>@3hgK>ztJ`|t1n zv9Xqxmf6|auCA{A>nZcwApYzs_TC@=@hklN{lc&z@7*U;LlJah6WPcn+}F- zP51Zr#Kgq%)foQnE5D*0|L!a4<=pn!8qLPH#j$7V#SH!GE1`%GpoS3f&Jpy`5C8Wq z)x{>aqd?qnaR2`=@9*zGKtQwr08mg+ucVQjjT--SbUgVG0^76B!cGbZ$shD2k-qQKu9$2hc$+0!g$Fr@UYNnT3n1)Ti-@g!u z5Rb=?%EGbW%`@%L7|g`8-`mxrl3vHat>fR>`sO9-(IlOZYsIN6$i0>F;W3|yKD?nl z(zqzVq$k0)lcA4Bsg+Z*pBtn%zk}V&HQw3Dw3ZFK zpfdaCCds{#(X=A{k|NAb`yh5s+d##{=@7*-Rx~Kp1E9BBV?biY zqMeOp*Thbkff3lY5Q=vc{O2a*$QsMKdb^zq!2|@|y%NNw8emWpa$ytp(h!$^5N=%) z>&FX*1CcBX=(W9 zEArqf+r%iSmsE>+6;VMEl!Y7Y+bx)g9G#6Fp_Cr~{wo^*0O8F~CjbEL;VRk2IFWxB zzpo*Ob{pr_DF5^=n~EIP!$$w|Eif=J+{rt?zrX+fEZ^VXXVnmI000JANkl(E9sv_NpgpjWZ${*tjEG-83!#N0+t#*=wKBZ%q3_70K47Z{D(=wd7s6O-LX zQ|c6_L@bRrizS6clWz2A-0X{JwEMwr<5KG<-cVpPcB7ZtQA?siNEF2e^67E{b~$2p z!-YcKci8zx55@Du0%_J4*9Z$Zjh;_5R&g8`rG-Xgh4MNr55Z0I=4Sh`;ApJ9%pVIl zBUv=5Kh`NUvtC%S;@#)+a=oz_I^H0f6qn40!&p>|HYcMw@5~d=zW&Ege}Dh!E3@)Y z9D91Mmitmx88OiM8S~`RZ~Z#*-*G>G`Ob@1b~Ae3X+LMp+F|`_O)!rvd~M|~ZGZmw z`^s-WdG&OmIHg}%MMY&-JT@ee=;%x#2BQ>~xfj%=%2 z^~~E%LnhoksJyOi`qh^eXRB3|RSv5ab|)AfoiN_44SA}&>Wb@yVwLL3+8vtKZJ$1F zY?JvJ+1}oG&9y@D!l~G9`>m_0&TFiyx`lkI4mtJG%gyz^y$URS(;4;cl2xTOI{S^- za;wp!M~zOA&P_9pK5(MY z!_hEc9OdfoJ|y1*r#OoTpM3spvuB@q+yUDNJsb@S#!>#~howt$bKb+y?6npn8=GtY z{k5!mc~PR-vyb0ud38;$&U@Oq*?UqTLl-F;Vdu>`t3@pYP0OOu#N0 zU`64TRC`VGY$DbQq`c^uQ^_U?s9*+-q2LJ6Bn5}v6V1|q#^gPx56ZBV3^8|24WBxFyd_!v@)ge zA*TeoTZ;5k#9c9DE_ zFB=+}?=)rsnJ+9F6##ZObO8h~A@U9hDT)F$vhCR5Y6INd?Oj49EwN;2cVLca45kt? zgcu{f_c70D7^>8QWYZJKQelIbVMPj43v61n;Ko zP8Z4L1xQc6Y{SQQ!UCJp9dapms7H{_Pguh@C?c6k@r7VZW=Pd)6 zu#ZN3Tbh!*Y{Pap01uz9G=g)bQCX%4lWj_Hy-TY^vK$(F5|J-&f+_ZVaw%DdCSPG6 zNE(eKBSa_}(si)u31ut|$x$J$A$1M4Mgh$Vjavascript. При этом часть строки, соответствующая SCRIPT, выделена в отдельный элемент массива. - -Позже мы ещё вернёмся к скобочным выражениям, они особенно удобны для поиска с заменой. - -## str.match(reg) с флагом g - -При наличии флага `g`, вызов `match` возвращает обычный массив из всех совпадений. - -Никаких дополнительных свойств у массива в этом случае нет, скобки дополнительных элементов не порождают. - -Например: - -```js -//+ run -var str = "ОЙ-Ой-ой"; - -var result = str.match( *!*/ой/ig*/!* ); - -alert( result ); // ОЙ, Ой, ой -``` - -Пример со скобками: - -```js -//+ run -var str = "javascript - это такой язык"; - -var result = str.match( *!*/JAVA(SCRIPT)/gi*/!* ); - -alert( result[0] ); // javascript -alert( result.length ); // 1 -alert( result.index ); // undefined -``` - -Из последнего примера видно, что элемент в массиве ровно один, и свойства `index` также нет. Такова особенность глобального поиска при помощи `match` -- он просто возвращает все совпадения. - -Для расширенного глобального поиска, который позволит получить все позиции и, при желании, скобки, нужно использовать метод [RegExp#exec](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec), которые будет рассмотрен далее. - -[warn header="В случае, если совпадений не было, `match` возвращает `null`"] -Обратите внимание, это важно -- если `match` не нашёл совпадений, он возвращает не пустой массив, а именно `null`. - -Это важно иметь в виду, чтобы не попасть в такую ловушку: - -```js -//+ run -var str = "Ой-йой-йой"; - -// результат match не всегда массив! -alert(str.match(/лю/gi).length) // ошибка! нет свойства length у null -``` -[/warn] - -## str.split(reg|substr, limit) - -Разбивает строку в массив по разделителю -- регулярному выражению `regexp` или подстроке `substr`. - -Обычно мы используем метод `split` со строками, вот так: - -```js -//+ run -alert('12-34-56'.split('-')) // [12, 34, 56] -``` - -Можно передать в него и регулярное выражение, тогда он разобьёт строку по всем совпадениям. - -Тот же пример с регэкспом: - -```js -//+ run -alert('12-34-56'.split(/-/)) // [12, 34, 56] -``` - -## str.replace(reg, str|func) - -Швейцарский нож для работы со строками, поиска и замены любого уровня сложности. - -Его простейшее применение -- поиск и замена подстроки в строке, вот так: - -```js -//+ run -// заменить дефис на двоеточие -alert('12-34-56'.replace("-", ":")) // 12:34-56 -``` - -**При вызове со строкой замены `replace` всегда заменяет только первое совпадение.** - -Чтобы заменить *все* совпадения, нужно использовать для поиска не строку `"-"`, а регулярное выражение /-/g, причём обязательно с флагом `g`: - -```js -//+ run -// заменить дефис на двоеточие -alert( '12-34-56'.replace( *!*/-/g*/!*, ":" ) ) // 12:34:56 -``` - - -В строке для замены можно использовать специальные символы: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    СпецсимволыДействие в строке замены
    `$$`Вставляет `"$"`.
    `$&`Вставляет всё найденное совпадение.
    $`Вставляет часть строки до совпадения.
    - $' - Вставляет часть строки после совпадения.
    - $*n* - где `n` -- цифра или двузначное число, обозначает `n-ю` по счёту скобку, если считать слева-направо.
    - -Пример использования скобок и `$1`, `$2`: - -```js -//+ run -var str = "Василий Пупкин"; - -alert(str.replace(/(Василий) (Пупкин)/, '$2, $1')) // Пупкин, Василий -``` - -Ещё пример, с использованием `$&`: - -```js -//+ run -var str = "Василий Пупкин"; - -alert(str.replace(/Василий Пупкин/, 'Великий $&!')) // Великий Василий Пупкин! -``` - -**Для ситуаций, который требуют максимально "умной" замены, в качестве второго аргумента предусмотрена функция.** - -Она будет вызвана для каждого совпадения, и её результат будет вставлен как замена. - -Например: - -```js -//+ run -var i = 0; - -// заменить каждое вхождение "ой" на результат вызова функции -alert("ОЙ-Ой-ой".replace(/ой/gi, function() { - return ++i; -})); // 1-2-3 -``` - -В примере выше функция просто возвращала числа по очереди, но обычно она основывается на поисковых данных. - -Эта функция получает следующие аргументы: - -

      -
    1. `str` -- найденное совпадение,
    2. -
    3. `p1, p2, ..., pn` -- содержимое скобок (если есть),
    4. -
    5. `offset` -- позиция, на которой найдено совпадение,
    6. -
    7. `s` -- исходная строка.
    8. -
    - -Если скобок в регулярном выражении нет, то у функции всегда будет ровно 3 аргумента: `replacer(str, offset, s)`. - -Используем это, чтобы вывести полную информацию о совпадениях: - -```js -//+ run -// вывести и заменить все совпадения -function replacer(str, offset, s) { - alert( "Найдено: " + str + " на позиции: " + offset + " в строке: " + s ); - return str.toLowerCase(); -} - -var result = "ОЙ-Ой-ой".replace(/ой/gi, replacer); -alert( 'Результат: ' + result ); // Результат: ой-ой-ой -``` - -С двумя скобочными выражениями -- аргументов уже 5: - -```js -//+ run -function replacer(str, name, surname, offset, s) { - return surname + ", " + name; -} - -alert(str.replace(/(Василий) (Пупкин)/, replacer)) // Пупкин, Василий -``` - -Функция -- это самый мощный инструмент для замены, какой только может быть. Она владеет всей информацией о совпадении и имеет доступ к замыканию, поэтому может всё. - -## regexp.test(str) - -Теперь переходим к методам класса `RegExp`. - -Метод `test` проверяет, есть ли хоть одно совпадение в строке `str`. Возвращает `true/false`. - -Работает, по сути, так же, как и проверка `str.search(reg) != -1`, например: - -```js -//+ run -var str = "Люблю регэкспы я, но странною любовью"; - -// эти две проверки идентичны -alert( *!*/лю/i*/!*.test(str) ) // true -alert( str.search(*!*/лю/i*/!*) != -1 ) // true -``` - -Пример с отрицательным результатом: - -```js -//+ run -var str = "Ой, цветёт калина..."; - -alert( *!*/javascript/i*/!*.test(str) ) // false -alert( str.search(*!*/javascript/i*/!*) != -1 ) // false -``` - -## regexp.exec(str) - -Для поиска мы уже видели методы: -
      -
    • `search` -- ищет индекс
    • -
    • `match` -- если регэксп без флага `g` -- ищет совпадение с подрезультатами в скобках
    • -
    • `match` -- если регэксп с флагом `g` -- ищет все совпадения, но без скобочных групп.
    • -
    - -Метод `regexp.exec` дополняет их. Он позволяет искать и все совпадения и скобочные группы в них. - -Он ведёт себя по-разному, в зависимости от того, есть ли у регэкспа флаг `g`. - -
      -
    • Если флага `g` нет, то `regexp.exec(str)` ищет и возвращает первое совпадение, является полным аналогом вызова `str.match(reg)`.
    • -
    • Если флаг `g` есть, то вызов `regexp.exec` возвращает первое совпадение и *запоминает* его позицию в свойстве `regexp.lastIndex`. Последующий поиск он начнёт уже с этой позиции. Если совпадений не найдено, то сбрасывает `regexp.lastIndex` в ноль.
    • -
    - -Это используют для поиска всех совпадений в цикле: - -```js -//+ run -var str = 'Многое по JavaScript можно найти на сайте http://javascript.ru'; - -var regexp = /javascript/ig; - -alert( "Начальное значение lastIndex: " + regexp.lastIndex ); - -while (result = regexp.exec(str)) { - alert( 'Найдено: ' + result[0] + ' на позиции:' + result.index ); - alert( 'Свойство lastIndex: ' + regexp.lastIndex ); -} - -alert( 'Конечное значение lastIndex: ' + regexp.lastIndex ); -``` - -Здесь цикл продолжается до тех пор, пока `regexp.exec` не вернёт `null`, что означает "совпадений больше нет". - -Найденные результаты последовательно помещаются в `result`, причём находятся там в том же формате, что и `match` -- с учётом скобок, со свойствами `result.index` и `result.input`. - -[smart header="Поиск с нужной позиции"] -Можно заставить `regexp.exec` искать сразу с нужной позиции, если поставить `lastIndex` вручную: - -```js -//+ run -var str = 'Многое по JavaScript можно найти на сайте http://javascript.ru'; - -var regexp = /javascript/ig; -regexp.lastIndex = 40; - -alert( regexp.exec(str).index ); // 49, поиск начат с 40й позиции -``` -[/smart] - -## Итого, рецепты - -Методы становятся гораздо понятнее, если разбить их использование по задачам, которые нужны в реальной жизни. - -
    -
    Для поиска только одного совпадения:
    -
    -
      -
    • Найти позицию первого совпадения -- `str.search(reg)`.
    • -
    • Найти само совпадение -- `str.match(reg)`.
    • -
    • Проверить, есть ли хоть одно совпадение -- `regexp.test(str)` или `str.search(reg) != -1`.
    • -
    • Найти совпадение с нужной позиции -- `regexp.exec(str)`, начальную позицию поиска задать в `regexp.lastIndex`.
    • -
    -
    -
    Для поиска всех совпадений:
    -
    -
      -
    • Найти массив совпадений -- `str.match(reg)`, с флагом `g`.
    • -
    • Получить все совпадения, с подробной информацией о каждом -- `regexp.exec(str)` с флагом `g`, в цикле.
    • -
    -
    - -
    Для поиска-и-замены:
    -
    -
      -
    • Замена на другую строку или функцией -- `str.replace(reg, str|func)`
    • -
    -
    -
    Для разбивки строки на части:
    -
    -
      -
    • `str.split(str|reg)`
    • -
    -
    -
    - -Зная эти методы, мы уже можем использовать регулярные выражения. - -Конечно, для этого желательно хорошо понимать их синтаксис и возможности, так что переходим к ним дальше. diff --git a/10-regular-expressions-javascript/3-regexp-character-classes/1-find-time-hh-mm/solution.md b/10-regular-expressions-javascript/3-regexp-character-classes/1-find-time-hh-mm/solution.md deleted file mode 100644 index 1fd6b26a..00000000 --- a/10-regular-expressions-javascript/3-regexp-character-classes/1-find-time-hh-mm/solution.md +++ /dev/null @@ -1,8 +0,0 @@ - -Ответ: \d\d:\d\d. - -```js -//+ run -alert( "Завтрак в 09:00.".match( /\d\d:\d\d/ ) ); // 09:00 -``` - diff --git a/10-regular-expressions-javascript/3-regexp-character-classes/1-find-time-hh-mm/task.md b/10-regular-expressions-javascript/3-regexp-character-classes/1-find-time-hh-mm/task.md deleted file mode 100644 index f92b52a5..00000000 --- a/10-regular-expressions-javascript/3-regexp-character-classes/1-find-time-hh-mm/task.md +++ /dev/null @@ -1,8 +0,0 @@ -# Найдите время - -Время имеет формат `часы:минуты`. И часы и минуты состоят из двух цифр, например: `09:00`. - -Напишите регулярное выражение для поиска времени в строке: Завтрак в 09:00. - -P.S. В этой задаче выражению позволительно найти и некорректное время, например `25:99`. - diff --git a/10-regular-expressions-javascript/3-regexp-character-classes/article.md b/10-regular-expressions-javascript/3-regexp-character-classes/article.md deleted file mode 100644 index 26fd9277..00000000 --- a/10-regular-expressions-javascript/3-regexp-character-classes/article.md +++ /dev/null @@ -1,271 +0,0 @@ -# Классы и спецсимволы - -Рассмотрим практическую задачу -- есть телефонный номер `"+7(903)-123-45-67"`, и нам нужно найти в этой строке цифры. А остальные символы нас не интересуют. - -Для поиска символов определённого вида в регулярных выражениях предусмотрены "классы символов". - -[cut] - -Класс символов -- это специальное обозначение, под которое подходит любой символ из определённого набора. - -Например, есть класс "любая цифра". Он обозначается `\d`. Это обозначение вставляется в шаблон, и при поиске под него подходит любая цифра. - -То есть, регулярное выражение /\d/ ищет ровно одну цифру: - -```js -//+ run -var str = "+7(903)-123-45-67"; - -var reg = /\d/; - -// не глобальный регэксп, поэтому ищет только первую цифру -alert( str.match(reg) ); // 7 -``` - -...Ну а для поиска всех цифр достаточно добавить к регэкспу флаг `g`: - -```js -//+ run -var str = "+7(903)-123-45-67"; - -var reg = /\d/g; - -alert( str.match(reg) ); // массив всех совпадений: 7,9,0,3,1,2,3,4,5,6,7 -``` - -## Важнейшие классы: \d \s \w - -Это был класс для цифр. - -Конечно же, есть и другие. - -Наиболее часто используются: -
    -
    `\d` (от английского "digit" -- "цифра")
    -
    Цифра, символ от `0` до `9`.
    -
    `\s` (от английского "space" -- "пробел")
    -
    Пробельный символ, включая табы, переводы строки и т.п.
    -
    `\w` (от английского "word" -- "слово")
    -
    Символ "слова", а точнее -- буква латинского алфавита или цифра или подчёркивание `'_'`. Не-английские буквы не являются `\w`, то есть русская буква не подходит.
    -
    - -Например, \d\s\w обозначает цифру, за которой идёт пробельный символ, а затем символ слова. - -Регулярное выражение может содержать одновременно и обычные символы и классы. - -Например, CSS\d найдёт строку CSS, с любой цифрой после неё: - -```js -//+ run -var str = "Стандарт CSS4 - это здорово"; -var reg = /CSS\d/ - -alert( str.match(reg) ); // CSS4 -``` - -И много классов подряд: - -```js -//+ run -alert( "Я люблю HTML5!".match(/\s\w\w\w\w\d/) ); // 'HTML5' -``` - -Совпадение (каждому классу в регэкспе соответствует один символ результата): - - - -## Граница слова \b - -Граница слова \b -- это особый класс. - -Он интересен тем, что обозначает не символ, а границу между символами. - -Например, \bJava\b найдёт слово Java в строке Hello, Java!, но не в строке Hello, Javascript!. - - -```js -//+ run - -alert( "Hello, Java!".match(/\bJava\b/) ); // Java -alert( "Hello, Javascript!".match(/\bJava\b/) ); // null -``` - -Граница имеет "нулевую ширину" в том смысле, что обычно символам регулярного выражения соответствуют символы строки, но не в этом случае. - -Граница -- это проверка. - -При поиске движок регулярных выражений идёт по шаблону и одновременно по строке, пытаясь построить соответствие. Когда он видит \b, то проверяет, что текущая позиция в строке подходит под одно из условий: -
      -
    • Начало текста, если первый символ `\w`.
    • -
    • Конец текста, если последний символ `\w`.
    • -
    • Внутри текста, если с одной стороны `\w`, а с другой -- не `\w`.
    • -
    - -Например, в строке Hello, Java! под `\b` подходят следующие позиции: - - - -Как правило, `\b` используется, чтобы искать отдельно стоящее слово. Не на русском конечно, хотя подобную проверку, как мы увидим далее, можно легко сделать для любого языка. А вот на английском, как в примере выше или для чисел, которые являются частным случаем `\w` -- легко. - -Например, регэксп \b\d\d\b ищет отдельно двузначные числа. Иными словами, он требует, чтобы до и после \d\d был символ, отличный от `\w` (или начало/конец текста). - - -## Обратные классы - -Для каждого класса существует "обратный ему", представленный такой же, но заглавной буквой. - -"Обратный" -- означает, что ему соответствуют все остальные символы, например: - -
    -
    `\D`
    -
    Не-цифра, то есть любой символ кроме `\d`, например буква.
    -
    `\S`
    -
    Не-пробел, то есть любой символ кроме `\s`, например буква.
    -
    `\W`
    -
    Любой символ, кроме `\w`, то есть не латинница, не подчёркивание, не цифра. В частности, русские буквы принадлежат этому классу.
    -
    `\B`
    -
    Проверка, обратная `\b`.
    -
    - -В начале этой главы мы видели, как получить из телефона +7(903)-123-45-67 все цифры. - -Первый способ -- найти все цифры через `match(/\d/g)`. - -Обратные классы помогут реализовать альтернативный -- найти все НЕцифры и удалить их из строки: - -```js -//+ run -var str = "+7(903)-123-45-67"; - -alert( str.replace(/\D/g, "") ); // 79031234567 -``` - -## Пробелы -- обычные символы - -Заметим, что в регулярных выражениях пробел -- такой же символ, как и другие. - -Обычно мы не обращаем внимание на пробелы. Для нашего взгляда строки 1-5 и 1 - 5 почти идентичны. - -Однако, если регэксп не учитывает пробелов, то он не сработает. - -Попытаемся найти цифры, разделённые дефисом: - -```js -//+ run -alert( "1 - 5".match(/\d-\d/) ); // null, нет совпадений! -``` - -Поправим это, добавив в регэксп пробелы: - -```js -//+ run -alert( "1 - 5".match(/\d - \d/) ); // работает, пробелы вокруг дефиса -``` - -Конечно же, пробелы в регэкспе нужны лишь тогда, когда мы их ищем. Лишние пробелы (как и любые лишние символы) могут навредить: - -```js -//+ run -alert( "1-5".match(/\d - \d/) ); // null, так как в строке 1-5 нет пробелов -``` - -Короче говоря, в регулярном выражении все символы имеют значение. Даже (и тем более) -- пробелы. - -## Точка -- любой символ - -Особым классом символов является точка `"."`. - -В регулярном выражении, точка "." обозначает *любой символ*, кроме перевода строки: - -```js -//+ run -alert( "Z".match(/./) ); // найдено Z -``` - -Посередине регулярного выражения: - -```js -//+ run -var re = /CS.4/; - -alert( "CSS4".match(re) ); // найдено "CSS4" -alert( "CS-4".match(re) ); // найдено "CS-4" -alert( "CS 4".match(re) ); // найдено "CS 4" (пробел тоже символ) -``` - -Обратим внимание -- точка означает именно "произвольный символ". - -То есть какой-то символ на этом месте в строке должен быть: - -```js -//+ run -alert( "CS4".match(/CS.4/) ); // нет совпадений, так как для точки нет символа -``` - -## Экранирование специальных символов - -В регулярных выражениях есть и другие символы, имеющие особый смысл. - -Они используются, чтобы расширить возможности поиска. - -Вот их полный список: [ \ ^ $ . | ? * + ( ). - -Не пытайтесь запомнить его -- когда мы разберёмся с каждым из них по отдельности, он запомнится сам собой. - -**Чтобы использовать специальный символ в качестве обычного, он должен быть *экранирован*.** - -Или, другими словами, перед символом должен быть обратный слэш `'\'`. - -Например, нам нужно найти точку '.'. В регулярном выражении она означает "любой символ, кроме новой строки", поэтому чтобы найти именно сам символ "точка" -- её нужно экранировать: \.. - -```js -//+ run -alert( "Глава 5.1".match(/\d\.\d/) ); // 5.1 -``` - -Круглые скобки также являются специальными символами, так что для поиска именно скобки нужно использовать `\(`. Пример ниже ищет строку `"g()"`: - -```js -//+ run -alert( "function g()".match(/g\(\)/) ); // "g()" -``` - -Сам символ слэш `'/'`, хотя и не является специальными символом в регулярных выражениях, но открывает-закрывает регэксп в синтаксисе /...pattern.../, поэтому его тоже нужно экранировать. - -Так выглядит поиск слэша `'/'`: - -```js -//+ run -alert( "/".match(/\//) ); // '/' -``` - -Ну и, наконец, если нам нужно найти сам обратный слэш `\`, то его нужно просто задублировать. - -Так выглядит поиск обратного слэша `"\"`: - -```js -//+ run -alert( "1\2".match(/\\/) ); // '\' -``` - - -## Итого - -Мы рассмотрели классы для поиска типов символов: - -
      -
    • `\d` -- цифры.
    • -
    • `\D` -- не-цифры.
    • -
    • `\s` -- пробельные символы, переводы строки.
    • -
    • `\S` -- всё, кроме `\s`.
    • -
    • `\w` -- латинница, цифры, подчёркивание `'_'`.
    • -
    • `'.'` -- точка обозначает любой символ, кроме перевода строки.
    • -
    - -Если хочется поискать именно сочетание `"\d"` или символ "точка", то его экранируют обратным слэшем, вот так: \. - -Заметим, что регулярное выражение может также содержать перевод строки `\n`, табуляцию `\t` и прочие спецсимволы для строк. Конфликта с классами не происходит, так как для них зарезервированы другие буквы. - - - - diff --git a/10-regular-expressions-javascript/3-regexp-character-classes/hello-java-boundaries.png b/10-regular-expressions-javascript/3-regexp-character-classes/hello-java-boundaries.png deleted file mode 100644 index 3a47f13c14fa887e3e221e7da36a4d57720a42b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3614 zcmV+(4&m{MP)Px?*hxe|RCodH91T=dRrJ#BHK1(qUZ^icpl$4*1~fPmMW;Ra{v1x^33ooTglqD8m-qocuaDz;vTae3VZ3(Z(UENuWLlB2fE&Ex3n zelRiN)m;Hix+pO%(Q&nt1PGintTlG{vO`&1T3>?O#vW#*8W2t=K53+epn%jhQ$zUz zqpEL^p?8UqmINXN@aMM7N}eA5JA7q{kzRrzsQ4Anm-n-q!TGE*<5D(!Hx4azP~Y`m zZyqDcKT_zJyYEn%^>?FGKon>KRG^(#aC9mgn?^!>pH6(P-%cmK(Akx%$Xzf>TB|JH z8QeQafMz51%>?T7s-Uv6EBi6#k5)UK`0fhO!P0|r zQgeJF-B3RW01`YAF1y%&_CK$>OMchMp^3b`Ne|qts2nGQN`m}M+Q|`;v&6{lja{eH zHOX)MEv1N0LelbR;KN7Y!TnbFSy0)wr-yV+r9y7`JeBjuv^*rowIYEo6{+t+! zXoK^TuRGd9T{)f*rbIlV(>IA}xh6hYPV43qV!_Ela|N=+BZ;4!^rrgPEnDAX+gDNv zK;XuVCD1!zq4sQrM+RBda|h~Chv^K)}k}T0DQSR>Ok!JLowa4r?J)ES%`+F z#t7(46G_WssBgC)vg18dTn|2vpQ(8><;WB+ana*H-n%=iupHq>_)p6OAZH<$XGNwu za$nZ@qX_@vFlsKWID5v<>E`NT!*YqJ0l{cF-l?LL06kyFt3d&+e0YpYOj@Lt*59-w zJqZQ{`D~;lk^(bb3_i`GtLd5vXcFjAC4Sonlc}Qfc{pHx5>OzOORbN<%@)b5P0Od2 z^(dp=VGL^{C?zPJN+CPI_FHR^M;uO?zJaSMJ?e#u2HK3h(kNX3oA5!iEwZbZEd5Mi zSiReLuL z8vM&TYCf!1ab=N%hQ@*Gzik0P4vagWoB(1^=UaJT|De>EM-V*Jw`Di)Qpg3}Rz0{O zmlXq33!@LA@PmNKf@`fo5%E>_`SQd0*9!4(m*&?i&DU$7qx@yS4@(xADI{3?DY{S2J+$S(CX!c?>H$9u7jKm8(IiQ9dp zesS3sS?r`oek~kCG#NvO$Dy{7Rs_Pk5W8Gj|Jvp+@JYnZOR|lK7ngOrSGaRtk*KeI)!d{(GnH^p`5{tjApwa@ zY}}DsSpp2r5jc>%vjFbUjWuzj>It(t6X;iydxEQa`$(d3&8n9Qg5Zo&-3VrK>3so) z<0?7!&FWEl?agpMg@3bHENaQST(h8E-{8a182_>+0FJ5F;1fZY0y*&jFrYqURXKXA z!yLM+Q%=ue-ku2NE1lBK5o9!(Y?jZRPW(T?+tR5CC+%)a7aiIiK0JF@IY%!8;-?<~ z30%t;R&#k2R)i7sl%!`&k`R{t47~hua4%uByheTHM5Wb@KGH~D_gV(LF=r)t9phQs zcsX{|IC|1ba3SX$0Af&_HSIaL$=wtCpFLrLd%j{O$mhbr!WE9Y16OpnBNj-s3#UCp ziKOrIG2LD~)4C=TQO17+XXG5@<74Cc$^5LR#cVvc9ik8)Fo?yxM}Q_18HP4Pz2}4k zfQJB4HrdoVTx=9S&W;=Mn+*$%BR5`-V0VunSI_D-f6bCM>Smeo6d33)&y*;X*W?n3 z{?d*5WCh&YaQm>~)Y!N4*TG{`v{XD&1u|f@XW-GpmRu*nu(3IN+5GIb5Zyy48r0R! z{O|3>?4IT}JMJ3o?Sg9%O%di5iKMxeEb>vxCfIj_8vqeu#W%N*MSMKY;P9GG4jL=w ztoifVi=nq|H<0hit?gw**LzoF(@<% z)L(zkNGk)Ij(-rAy#MS44ciZFbVuzj*eFOxy{%r z_RWohr>b%IE{&v1@5f_;*_j&M_UZ~h4AK>@ z4x&r;`Af;xp@>j@2`k4!V9(PwAAZ*y5vcJCg~{BkS!J~ zE$c3pa!XT0QHSlZ&SSQZ9NCzVvLr5mIok!`=PKilpR3OANQG-axOuV)G=vNs0l+o8 zv+$!^GH(28{m|+XP+5AEHOd#Hr5>EtmO2#v) z714=CN8?us)Ay#Hd?j5|`3lff+Gu!oSnFKJ%MF6M3s0-$Fu{$qJTNW&)*XD?E47i* zF+h!)umlvHw%mmPFg4WF{sRxs@P+E8K+6#V_&Utr+K|vQK6jWE4r8dHmQ5=67JGQ_V;-=6W! za+!7fF?Do*^4;+f(Qtx7#qnvEnGWU5k3Zdr0mwgb_DP2m1ZESe`%Y7JZhLXB)#PRA zfVjde*8tyer^+m=Ep+k_c~~S8KZTXznxe?;kgdm_#;`kU^x6d1Hk&7p` z$^XQ-Q?ZM(ICi(PZ59&8giQ(20cC~Emyt7u=-+sB<%us`G)d6-F?Pd!9n?kPuT+KV zZS%Pl5D#oN2<_(%J|Vh=#GNkP1n&`+F}6#vVemi#t@G^?--5?%ZmliBw*+ySTV;2p zu=eb3FOFzm^2rZBEov<*Of}nQ1mjko_|hG=wx<`%x7gjO)s?N!SYr3oLUarA-;(sm zYHQ+~3~-&Vw7J}3yh8Zyaj$P^aTLe>0|y1wrGF0B$heU3n;*$w;^PjEf-rjrwIjWM zl<{-ce`bx3Vj8+5ub3jKYIb}PjPPunx7~gO9L2FLIP@IqDFtN3m{4ilJAntq?)?1P zk={Sb_&Mvpb;d`70>98kvpf3Ijwu!xgWg(T1o+~ZyeuUPcDL@S1d4KsjZd#r0(v>K zGyYp=eB?7tGKp_>p9@UaHR(OSH`iY-%=W7iSCcw(TR}sW^H{uYCkO zgAwY#&5VysB}p=gU3m~Rv2DFPK|A%V9oxF^85%5$TJ*C$!03JfP%xEcXZ k#nDrGU5%H!`U~;@|I<;avqnM8egFUf07*qoM6N<$g7dU1M*si- diff --git a/10-regular-expressions-javascript/3-regexp-character-classes/hello-java-boundaries@2x.png b/10-regular-expressions-javascript/3-regexp-character-classes/hello-java-boundaries@2x.png deleted file mode 100644 index e8f14d87adc476d2cc25c6615adfb32fadda8e78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6841 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 diff --git a/10-regular-expressions-javascript/3-regexp-character-classes/love-html5-classes.png b/10-regular-expressions-javascript/3-regexp-character-classes/love-html5-classes.png deleted file mode 100644 index 387fac9da647dae06f789e9ca6780872f981a5a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4722 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 Mlm*GuNSTHFKb?pBp#T5? diff --git a/10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/1-find-range-1/solution.md b/10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/1-find-range-1/solution.md deleted file mode 100644 index 6177c8e6..00000000 --- a/10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/1-find-range-1/solution.md +++ /dev/null @@ -1,18 +0,0 @@ -Ответы: **нет, да**. - -
      -
    • В строке Java он ничего не найдёт, так как исключающие квадратные скобки в `Java[^...]` означают "один символ, кроме указанных". А после "Java" -- конец строки, символов больше нет. - -```js -//+ run -alert( "Java".match(/Java[^script]/) ); // нет совпадений -``` -
    • -
    • Да, найдёт. Поскольку регэксп регистрозависим, то под `[^script]` вполне подходит символ `"S"`. - -```js -//+ run -alert( "JavaScript".match(/Java[^script]/) ); // "JavaS" -``` -
    • -
    diff --git a/10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/1-find-range-1/task.md b/10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/1-find-range-1/task.md deleted file mode 100644 index 6f0b0e37..00000000 --- a/10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/1-find-range-1/task.md +++ /dev/null @@ -1,5 +0,0 @@ -# Java[^script] - -Найдет ли регэксп /Java[^script]/ что-нибудь в строке Java? - -А в строке JavaScript? diff --git a/10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/2-find-time-2-formats/solution.md b/10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/2-find-time-2-formats/solution.md deleted file mode 100644 index 969966a2..00000000 --- a/10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/2-find-time-2-formats/solution.md +++ /dev/null @@ -1,9 +0,0 @@ -Ответ: \d\d[-:]\d\d. - -```js -//+ run -var re = /\d\d[-:]\d\d/g; -alert( "Завтрак в 09:00. Обед - в 21-30".match(re) ); -``` - -Обратим внимание, что дефис '-' не экранирован, поскольку в начале скобок он не может иметь специального смысла. diff --git a/10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md b/10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md deleted file mode 100644 index dd03af58..00000000 --- a/10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md +++ /dev/null @@ -1,11 +0,0 @@ -# Найдите время в одном из форматов - -Время может быть в формате `часы:минуты` или `часы-минуты`. И часы и минуты состоят из двух цифр, например `09:00`, `21-30`. - -Напишите регулярное выражение для поиска времени: - -```js -var re = /ваше выражение/; -alert( "Завтрак в 09:00. Обед - в 21-30".match(re) ); // 09:00, 21-30 -``` - diff --git a/10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/article.md b/10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/article.md deleted file mode 100644 index c8f2041f..00000000 --- a/10-regular-expressions-javascript/4-regexp-character-sets-and-ranges/article.md +++ /dev/null @@ -1,170 +0,0 @@ -# Наборы и диапазоны [...] - -Если в регулярном выражении несколько символов или символьных классов заключены в квадратные скобки `[…]`, то это означает "искать любой символ из указанных в `[…]`". - -[cut] - -## Набор - -Например, [еао] означает любой символ из этих трёх: `'а'`, `'е'`, или `'о'`. - -Такое обозначение называют *набором*. Наборы используются в регулярном выражении наравне с обычными символами: - -```js -//+ run -// найти [г или т], а затем "оп" -alert( "Гоп-стоп".match(/[гт]оп/gi) ); // "Гоп", "топ" -``` - -Обратим внимание: несмотря на то, что в наборе указано несколько символов, в совпадении должен присутствовать *ровно один* из них. - -Поэтому в примере ниже нет результатов: - -```js -//+ run -// найти "В", затем [у или а], затем "ля" -alert( "Вуаля".match(/В[уа]ля/) ); // совпадений нет -``` - -Поиск подразумевает: -
      -
    • В,
    • -
    • затем *одну* из букв набора [уа],
    • -
    • а затем ля
    • -
    - -Таким образом, совпадение было бы для строки Вуля или Валя. - -## Диапазоны - -Квадратные скобки могут также содержать *диапазоны символов*. - -Например, [a-z] -- произвольный символ от `a` до `z`, [0-5] -- цифра от `0` до `5`. - -В примере ниже мы будем искать `"x"`, после которого идёт два раза любая цифра или буква от A до F: - -```js -//+ run -// найдёт "xAF" -alert( "Exception 0xAF".match(/x[0-9A-F][0-9A-F]/g) ); -``` - -Обратим внимание, в слове Exception есть сочетание xce, но оно не подошло, потому что буквы в нём маленькие, а в диапазоне [0-9A-F] -- большие. - -Если хочется искать и его тоже, можно добавить в скобки диапазон `a-f`: [0-9A-Fa-f]. Или же просто указать у всего регулярного выражения флаг `i`. - -**Символьные классы -- всего лишь более короткие записи для диапазонов, в частности:** - -
      -
    • **\d** -- то же самое, что [0-9],
    • -
    • **\w** -- то же самое, что [a-zA-Z0-9_],
    • -
    • **\s** -- то же самое, что [\t\n\v\f\r ] плюс несколько юникодных пробельных символов.
    • -
    - -В квадратных скобках можно использовать и диапазоны и символьные классы -- вместе. - -Например, нам нужно найти все слова в тексте. Если они на английском -- это достаточно просто: - -```js -//+ run -var str = "The sun is rising!"; - -alert( str.match(/\w+/g) ); // The, sun, is, rising*!* -``` - -А если есть слова и на русском? - -```js -//+ run -var str = "Солнце встаёт!"; - -alert( str.match(/\w+/g) ); // null*!* -``` - -Ничего не найдено! Это можно понять, ведь \w -- это именно английская букво-цифра, как можно видеть из аналога [a-zA-Z0-9_]. - -Чтобы находило слово на русском -- нужно использовать диапазон, например /[а-я]/. - -А чтобы на обоих языках -- и то и другое вместе: - -```js -//+ run -var str = "Солнце (the sun) встаёт!"; - -alert( str.match(/[\wа-я]+/gi) ); // Солнце, the, sun, вста, т*!* -``` - -...Присмотритесь внимательно к предыдущему примеру! Вы видите странность? Оно не находит букву ё, более того -- считает её разрывом в слове. Причина -- в кодировке юникод, она подробно раскрыта в главе [](/string). - -Буква `ё` лежит в стороне от основной кириллицы и её следует добавить в диапазон дополнительно, вот так: - -```js -//+ run -var str = "Солнце (the sun) встаёт!"; - -alert( str.match(/[\wа-яё]+/gi) ); // Солнце, the, sun, встаёт*!* -``` - -Теперь всё в порядке. - -## Диапазоны "кроме" - -**Кроме обычных, существуют также *исключающие* диапазоны: [^…].** - -Квадратные скобки, начинающиеся со знака каретки: [^…] находят любой символ, *кроме указанных*. - -Например: - -
      -
    • [^аеуо] -- любой символ, кроме `'a'`, `'e'`, `'y'`, `'o'`.
    • -
    • [^0-9] -- любой символ, кроме цифры, то же что `\D`.
    • -
    • [^\s] -- любой не-пробельный символ, то же что `\S`.
    • -
    - -Пример ниже ищет любые символы, кроме букв, цифр и пробелов: - -```js -//+ run -alert( "alice15@gmail.com".match(/[^\d\sA-Z]/gi) ); // "@", "." -``` - -## Не нужно экранирование - -Обычно, если мы хотим искать именно точку, а не любой символ, или именно символ `\`, то мы используем экранирование: указываем `\.` или `\\`. - -В квадратных скобках большинство специальных символов можно использовать без экранирования, если конечно они не имеют какой-то особый смысл именно внутри квадратных скобок. - -То есть, "как есть", без экранирования можно использовать символы: -
      -
    • Точка '.'.
    • -
    • Плюс '+'.
    • -
    • Круглые скобки '( )'.
    • -
    • Дефис '-', если он находится в начале или конце квадратных скобок, то есть не выделяет диапазон.
    • -
    • Символ каретки '^', если не находится в начале квадратных скобок.
    • -
    • А также открывающая квадратная скобка '['.
    • -
    - -То есть, точка `"."` в квадратных скобках означает не "любой символ", а обычную точку. - -Регэксп [.,] ищет один из символов "точка" или "запятая". - -В примере ниже регэксп [-().^+] ищет один из символов `-().^`. Они не экранированы: - -```js -//+ run -// Без экранирования -var re = /[-().^+]/g; - -alert( "1 + 2 - 3".match(re) ); // найдёт +, - -``` - -...Впрочем, даже если вы решите "на всякий случай" заэкранировать эти символы, поставив перед ними обратный слэш `\` -- вреда не будет: - -```js -//+ run -// Всё заэкранировали -var re = /[\-\(\)\.\^\+]/g; - -alert( "1 + 2 - 3".match(re) ); // тоже работает: +, - -``` - diff --git a/10-regular-expressions-javascript/5-regexp-quantifiers/1-find-text-manydots/solution.md b/10-regular-expressions-javascript/5-regexp-quantifiers/1-find-text-manydots/solution.md deleted file mode 100644 index 5108d628..00000000 --- a/10-regular-expressions-javascript/5-regexp-quantifiers/1-find-text-manydots/solution.md +++ /dev/null @@ -1,11 +0,0 @@ - -Решение: - -```js -//+ run -var reg = /\.{3,}/g; -alert( "Привет!... Как дела?.....".match(reg) ); // ..., ..... -``` - -Заметим, что символ `.` является специальным, значит его надо экранировать, то есть вставлять как `\.`. - diff --git a/10-regular-expressions-javascript/5-regexp-quantifiers/1-find-text-manydots/task.md b/10-regular-expressions-javascript/5-regexp-quantifiers/1-find-text-manydots/task.md deleted file mode 100644 index 4e94ba20..00000000 --- a/10-regular-expressions-javascript/5-regexp-quantifiers/1-find-text-manydots/task.md +++ /dev/null @@ -1,13 +0,0 @@ -# Как найти многоточие... ? - -[importance 5] - -Напишите регулярное выражения для поиска многоточий: трёх или более точек подряд. - -Проверьте его: - -```js -var reg = /ваше выражение/g; -alert( "Привет!... Как дела?.....".match(reg) ); // ..., ..... -``` - diff --git a/10-regular-expressions-javascript/5-regexp-quantifiers/2-find-html-colors-6hex/solution.md b/10-regular-expressions-javascript/5-regexp-quantifiers/2-find-html-colors-6hex/solution.md deleted file mode 100644 index 09576d99..00000000 --- a/10-regular-expressions-javascript/5-regexp-quantifiers/2-find-html-colors-6hex/solution.md +++ /dev/null @@ -1,34 +0,0 @@ -Итак, нужно написать выражение для описания цвета, который начинается с "#", за которым следуют 6 шестнадцатеричных символов. - -Шестнадцатеричный символ можно описать с помощью [0-9a-fA-F]. Мы можем сократить выражение, используя не чувствительный к регистру шаблон [0-9a-f]. - -Для его шестикратного повторения мы будем использовать квантификатор {6}. - -В итоге, получаем выражение вида /#[a-f0-9]{6}/gi. - -```js -//+ run -var re = /#[a-f0-9]{6}/gi; - -var str = "color:#121212; background-color:#AA00ef bad-colors:f#fddee #fd2"; - -alert( str.match(re) ); // #121212,#AA00ef -``` - -Проблема этого выражения в том, что оно находит цвет и в более длинных последовательностях: - -```js -//+ run -alert( "#12345678".match( /#[a-f0-9]{6}/gi ) ) // #12345678 -``` - -Чтобы такого не было, можно добавить в конец `\b`: - -```js -//+ run -// цвет -alert( "#123456".match( /#[a-f0-9]{6}\b/gi ) ); // #123456 - -// не цвет -alert( "#12345678".match( /#[a-f0-9]{6}\b/gi ) ); // null -``` diff --git a/10-regular-expressions-javascript/5-regexp-quantifiers/2-find-html-colors-6hex/task.md b/10-regular-expressions-javascript/5-regexp-quantifiers/2-find-html-colors-6hex/task.md deleted file mode 100644 index ea2dbf18..00000000 --- a/10-regular-expressions-javascript/5-regexp-quantifiers/2-find-html-colors-6hex/task.md +++ /dev/null @@ -1,14 +0,0 @@ -# Регулярное выражение для цвета - -Напишите регулярное выражение для поиска HTML-цвета, заданного как `#ABCDEF`, то есть `#` и содержит затем 6 шестнадцатеричных символов. - -Пример использования: - -``` -var re = /*...ваше регулярное выражение...*/ - -var str = "color:#121212; background-color:#AA00ef bad-colors:f#fddee #fd2" - -alert( str.match(re) ) // #121212,#AA00ef -``` - diff --git a/10-regular-expressions-javascript/5-regexp-quantifiers/3-find-decimal-positive-numbers/solution.md b/10-regular-expressions-javascript/5-regexp-quantifiers/3-find-decimal-positive-numbers/solution.md deleted file mode 100644 index 41f71b50..00000000 --- a/10-regular-expressions-javascript/5-regexp-quantifiers/3-find-decimal-positive-numbers/solution.md +++ /dev/null @@ -1,18 +0,0 @@ - - -Целое число -- это \d+. - -Десятичная точка с дробной частью -- \.\d+. - -Она не обязательна, так что обернём её в скобки с квантификатором '?'. - -Итого, получилось регулярное выражение \d+(\.\d+)?: - -```js -//+ run -var re = /\d+(\.\d+)?/g - -var str = "1.5 0 12. 123.4."; - -alert( str.match(re) ); // 1.5, 0, 12, 123.4 -``` diff --git a/10-regular-expressions-javascript/5-regexp-quantifiers/3-find-decimal-positive-numbers/task.md b/10-regular-expressions-javascript/5-regexp-quantifiers/3-find-decimal-positive-numbers/task.md deleted file mode 100644 index 17e4d836..00000000 --- a/10-regular-expressions-javascript/5-regexp-quantifiers/3-find-decimal-positive-numbers/task.md +++ /dev/null @@ -1,13 +0,0 @@ -# Найдите положительные числа - -Создайте регэксп, который ищет все положительные числа, в том числе и с десятичной точкой. - -Пример использования: - -```js -var re = /* ваш регэксп */ - -var str = "1.5 0 12. 123.4."; - -alert( str.match(re) ); // 1.5, 0, 12, 123.4 -``` \ No newline at end of file diff --git a/10-regular-expressions-javascript/5-regexp-quantifiers/4-find-decimal-numbers/solution.md b/10-regular-expressions-javascript/5-regexp-quantifiers/4-find-decimal-numbers/solution.md deleted file mode 100644 index 2abd91c0..00000000 --- a/10-regular-expressions-javascript/5-regexp-quantifiers/4-find-decimal-numbers/solution.md +++ /dev/null @@ -1,13 +0,0 @@ -Целое число с необязательной дробной частью -- это \d+(\.\d+)?. - -К этому нужно добавить необязательный `-` в начале: - - -```js -//+ run -var re = /-?\d+(\.\d+)?/g - -var str = "-1.5 0 2 -123.4."; - -alert( str.match(re) ); // -1.5, 0, 2, -123.4 -``` diff --git a/10-regular-expressions-javascript/5-regexp-quantifiers/4-find-decimal-numbers/task.md b/10-regular-expressions-javascript/5-regexp-quantifiers/4-find-decimal-numbers/task.md deleted file mode 100644 index 5c5d4d09..00000000 --- a/10-regular-expressions-javascript/5-regexp-quantifiers/4-find-decimal-numbers/task.md +++ /dev/null @@ -1,13 +0,0 @@ -# Найдите десятичные числа - -Создайте регэксп, который ищет все числа, в том числе и с десятичной точкой, в том числе и отрицательные. - -Пример использования: - -```js -var re = /* ваш регэксп */ - -var str = "-1.5 0 2 -123.4."; - -alert( str.match(re) ); // -1.5, 0, 2, -123.4 -``` \ No newline at end of file diff --git a/10-regular-expressions-javascript/5-regexp-quantifiers/article.md b/10-regular-expressions-javascript/5-regexp-quantifiers/article.md deleted file mode 100644 index 17605289..00000000 --- a/10-regular-expressions-javascript/5-regexp-quantifiers/article.md +++ /dev/null @@ -1,168 +0,0 @@ -# Квантификаторы +, *, ? и {n} - -Рассмотрим ту же задачу, что и ранее -- взять телефон вида `+7(903)-123-45-67` и найти все числа в нём. Но теперь нас интересуют не цифры по отдельности, а именно числа, то есть результат вида `7, 903, 123, 45, 67`. - -Для поиска цифр по отдельности нам было достаточно класса `\d`. Но здесь нужно искать *числа* -- последовательности из 1 или более цифр. - -## Количество {n} - -Количество повторений символа можно указать с помощью числа в фигурных скобках: `{n}`. - -Такое указание называют *квантификатором* (от англ. quantifier). - -У него есть несколько подформ записи: - -
    -
    Точное количество: `{5}`
    -
    Регэксп \d{5} обозначает ровно 5 цифр, в точности как \d\d\d\d\d. - -Следующий пример находит пятизначное число. - -```js -//+ run -alert( "Мне 12345 лет".match(/\d{5}/) ); // "12345" -``` - -
    -
    Количество от-до: `{3,5}`
    -
    Для того, чтобы найти, например, числа размером от трёх до пяти знаков, нужно указать границы в фигурных скобках: \d{3,5} - -```js -//+ run -alert( "Мне не 12, а 1234 года".match(/\d{3,5}/) ); // "1234" -``` - -Последнее значение можно и не указывать. Тогда выражение \d{3,} найдет числа, длиной от трех цифр: - -```js -//+ run -alert( "Мне не 12, а 345678 лет".match(/\d{3,5}/) ); // "345678" -``` -
    -
    - -В случае с телефоном нам нужны числа -- одна или более цифр подряд. Этой задаче соответствует регулярное выражение \d{1,}: - -```js -//+ run -var str = "+7(903)-123-45-67"; - -alert( str.match(/\d{1,}/g) ); // 7,903,123,45,67 -``` - - -## Короткие обозначения - -Для самые часто востребованных квантификаторов есть специальные короткие обозначения. - -
    -
    `+`
    -
    Означает "один или более", то же что `{1,}`. - -Например, \d+ находит числа -- последовательности из 1 или более цифр: - -```js -//+ run -var str = "+7(903)-123-45-67"; - -alert( str.match(/\d+/g) ); // 7,903,123,45,67 -``` - -
    -
    `?`
    -
    Означает "ноль или один", то же что и `{0,1}`. По сути, делает символ необязательным. - -Например, регэксп ou?r найдёт o, после которого, возможно, следует u, а затем r. - -Этот регэксп найдёт or в слове color и our в colour: - -```js -//+ run -var str = "Можно писать color или colour (британский вариант)"; - -alert( str.match(/colou?r/g) ); // color, colour -``` - -
    -
    `*`
    -
    Означает "ноль или более", то же что `{0,}`. То есть, символ может повторяться много раз или вообще отсутствовать. - -Пример ниже находит цифру, после которой идёт один или более нулей: - -```js -//+ run -alert( "100 10 1".match(/\d0*/g) ); // 100, 10, 1 -``` - -Сравните это с `'+'` (один или более): - -```js -//+ run -alert( "100 10 1".match(/\d0+/g) ); // 100, 10 -``` - -
    -
    - -## Ещё примеры - -Эти квантификаторы принадлежат к числу самых важных "строительных блоков" для сложных регулярных выражений, поэтому мы рассмотрим ещё примеры. - -
    -
    Регэксп "десятичная дробь" (число с точкой внутри): \d+\.\d+
    -
    - -В действии: -```js -//+ run -alert( "0 1 12.345 7890".match(/\d+\.\d+/g) ); // 12.345 -``` - -
    -
    Регэксп "открывающий HTML-тег без атрибутов", такой как `` или `

    `: /<[a-z]+>/i

    -
    Пример: - -```js -//+ run -alert( " ... ".match(/<[a-z]+>/gi) ); // -``` - -Это регулярное выражение ищет символ '<', за которым идут одна или более букв английского алфавита, и затем '>'. -
    -
    Регэксп "открывающий HTML-тег без атрибутов" (лучше): /<[a-z][a-z0-9]*>/i
    -
    -Здесь регулярное выражение расширено: в соответствие со стандартом, HTML-тег может иметь символ на любой позиции, кроме первой, например `

    `. - -```js -//+ run -alert( "

    Привет!

    ".match(/<[a-z][a-z0-9]*>/gi) ); //

    -``` - -

    -
    Регэксп "открывающий или закрывающий HTML-тег без атрибутов": /<\/?[a-z][a-z0-9]*>/i
    -
    В предыдущий паттерн добавили необязательный слэш /? перед тегом. Его понадобилось заэкранировать, чтобы JavaScript не принял его за конец шаблона. - -```js -//+ run -alert( "

    Привет!

    ".match(/<\/?[a-z][a-z0-9]*>/gi) ); //

    ,

    -``` - -
    -
    - - -[smart header="Точнее -- значит сложнее"] -В этих примерах мы видим общее правило, которое повторяется из раза в раз: чем точнее регулярное выражение, тем оно длиннее и сложнее. - -Например, для HTML-тегов, скорее всего, подошло бы и более короткое регулярное выражение <\w+>. - -Так как класс `\w` означает "любая цифра или английская буква или `'_'`, то под такой регэксп подойдут и не теги, например <_>. Однако он гораздо проще, чем более точный регэксп <[a-z][a-z0-9]*>. - -Подойдёт ли нам <\w+> или нужно использовать именно <[a-z][a-z0-9]*>? - -В реальной жизни допустимы оба варианта. Ответ на подобные вопросы зависит от того, насколько реально важна точность и насколько сложно потом будет отфильтровать лишние совпадения (если появятся). -[/smart] - - - - diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/1-lazy-greedy/solution.md b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/1-lazy-greedy/solution.md deleted file mode 100644 index 083b3044..00000000 --- a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/1-lazy-greedy/solution.md +++ /dev/null @@ -1,6 +0,0 @@ - -Результат: `123 456`. - -Ленивый `\d+?` будет брать цифры до пробела, то есть `123`. После каждой цифры он будет останавливаться, проверять -- не пробел ли дальше? Если нет -- брать ещё цифру, в итоге возьмёт `123`. - -З в дело вступит `\d+`, который по-максимуму возьмёт дальнейшие цифры, то есть `456`. \ No newline at end of file diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/1-lazy-greedy/task.md b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/1-lazy-greedy/task.md deleted file mode 100644 index 7076396f..00000000 --- a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/1-lazy-greedy/task.md +++ /dev/null @@ -1,8 +0,0 @@ -# Совпадение для /d+? d+/ - -Что будет при таком поиске, когда сначало стоит ленивый, а потом жадный квантификаторы? - -```js -"123 456".match(/\d+? \d+/g) ); // какой результат? -``` - diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/2-difference-find-quote/solution.md b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/2-difference-find-quote/solution.md deleted file mode 100644 index b47d89b3..00000000 --- a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/2-difference-find-quote/solution.md +++ /dev/null @@ -1,16 +0,0 @@ -Они очень похожи и, да, *почти* одинаковы. Оба ищут от одной кавычки до другой. - -Различие здесь в символе точка '.'. Как мы помним, точка '.' обозначает *любой символ, кроме перевода строки*. - -А [^"] -- это *любой символ, кроме кавычки '"'. - -Получатся, что первый регэксп "[^"]*" найдёт закавыченные строки с `\n` внутри, а второй регэксп ".*?" -- нет. - -Вот пример: -```js -//+ run -alert( '"многострочный \n текст"'.match(/"[^"]*"/) ); // найдёт - -alert( '"многострочный \n текст"'.match(/".*?"/) ); // null (нет совпадений) -``` - diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/2-difference-find-quote/task.md b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/2-difference-find-quote/task.md deleted file mode 100644 index 5e9dcf17..00000000 --- a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/2-difference-find-quote/task.md +++ /dev/null @@ -1,5 +0,0 @@ -# Различие между "[^"]*" и ".*?" - -Регулярные выражения "[^"]*" и ".*?" -- при выполнении одинаковы? - -Иначе говоря, существует ли такая строка, на которой они дадут разные результаты? Если да -- дайте такую строку. diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/3-find-html-comments/solution.md b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/3-find-html-comments/solution.md deleted file mode 100644 index 17bf43eb..00000000 --- a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/3-find-html-comments/solution.md +++ /dev/null @@ -1,18 +0,0 @@ -Нужно найти начало комментария <!--, затем всё до конца -->. - -С первого взгляда кажется, что это сделает регулярное выражение <!--.*?--> -- квантификатор сделан ленивым, чтобы остановился, достигнув -->. - -Однако, точка в JavaScript -- любой символ, *кроме* конца строки. Поэтому такой регэксп не найдёт многострочный комментарий. - -Всё получится, если вместо точки использовать полностю "всеядный" [\s\S]. - -Итого: - -```js -//+ run -var re = //g; - -var str = '.. .. .. '; - -alert( str.match(re) ); // '', '' -``` \ No newline at end of file diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/3-find-html-comments/task.md b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/3-find-html-comments/task.md deleted file mode 100644 index af0b1b2a..00000000 --- a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/3-find-html-comments/task.md +++ /dev/null @@ -1,11 +0,0 @@ -# Найти HTML-комментарии - -Найдите все HTML-комментарии в тексте: - -```js -var re = ..ваш регэксп.. - -var str = '.. .. .. '; - -alert( str.match(re) ); // '', '' -``` diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md deleted file mode 100644 index 6a87a597..00000000 --- a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md +++ /dev/null @@ -1,38 +0,0 @@ -Начнём поиск с <, затем один или более произвольный символ, но до закрывающего "уголка": .+?>. - -Проверим, как работает этот регэксп: - -```js -//+ run -var re = /<.+?>/g; - -var str = '<>
    '; - -alert( str.match(re) ); // <> , , -``` - -Результат неверен! В качестве первого тега регэксп нашёл подстроку <> <a href="/">, но это явно не тег. - -Всё потому, что .+? -- это "любой символ (кроме `\n`), повторяющийся один и более раз до того, как оставшаяся часть шаблона совпадёт (ленивость)". - -Поэтому он находит первый `<`, затем есть "всё подряд" до следующего `>`. - -Первое совпадение получается как раз таким: - -``` -<.............> -<> -``` - -Правильным решением будет использовать <[^>]+>: - -```js -//+ run -var re = /<[^>]+>/g - -var str = '<> '; - -alert( str.match(re) ); // , , -``` - -Это же решение автоматически позволяет находится внутри тегу символу `\n`, который в класс точка `.` не входит. \ No newline at end of file diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md deleted file mode 100644 index 43935130..00000000 --- a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md +++ /dev/null @@ -1,18 +0,0 @@ -# Найти HTML-теги - -Создайте регулярное выражение для поиска всех (открывающихся и закрывающихся) HTML-тегов вместе с атрибутами. - -Пример использования: -```js -//+ run -var re = /* ваш регэксп */ - -var str = '<> '; - -alert( str.match(re) ); // '', '', '' -``` - -В этой задаче можно считать, что тег начинается с <, заканчивается > и может содержать внутри любые символы, кроме < и >. - -Но хотя бы один символ внутри тега должен быть: <> -- не тег. - diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/article.md b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/article.md deleted file mode 100644 index 09758bab..00000000 --- a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/article.md +++ /dev/null @@ -1,335 +0,0 @@ -# Жадные и ленивые квантификаторы - -Квантификаторы -- с виду очень простая, но на самом деле очень хитрая штука. - -Необходимо очень хорошо понимать, как именно происходит поиск, если конечно мы хотим искать что-либо сложнее чем /\d+/. - -[cut] - -Для примера рассмотрим задачу, которая часто возникает в типографике -- заменить в тексте кавычки вида `"..."` (их называют "английские кавычки") на "кавычки-ёлочки": `«...»`. - -Для этого нужно сначала найти все слова в таких кавычках. - -Соотверствующее регулярное выражение может выглядеть так: /".+"/g, то есть мы ищем кавычку, после которой один или более произвольный символ, и в конце опять кавычка. - -Однако, если попробовать применить его на практике, даже на таком простом случае... - -```js -//+ run -var reg = /".+"/g; - -var str = 'a "witch" and her "broom" is one'; - -alert( str.match(reg) ); // "witch" and her "broom" -``` - -...Мы увидим, что оно работает совсем не так, как задумано! - -Вместо того, чтобы найти два совпадения "witch" и "broom", оно находит одно: "witch" and her "broom". - -Это как раз тот случай, когда *жадность* -- причина всех зол. - -## Жадный поиск - -Чтобы найти совпадение, движок регулярных выражений обычно использует следующий алгоритм: - -
      -
    • Для каждой позиции в поисковой строке -
        -
      • Проверить совпадение на данной позиции -
        • Посимвольно, с учётом классов и квантификаторов сопоставив с ней регулярное выражение.
        -
      • -
      -
    • -
    - -Это общие слова, гораздо понятнее будет, если мы проследим, что именно он делает для регэкспа ".+". - -
      -
    1. Первый символ шаблона -- это кавычка ". - -Движок регулярных выражений пытается сопоставить её на 0й позиции в строке, но символ `a`, поэтому на 0й позиции соответствия явно нет. - -Далее он переходит 1ю, 2ю позицию в исходной строке и, наконец, обнаруживает кавычку на 3й позиции: - -
    2. -
    3. Кавычка найдена, далее движок проверяет, есть ли соответствие для остальной части паттерна. - -В данном случае следующий символ шаблона: . (точка). Она обозначает "любой символ", так что следующая буква строки 'w' вполне подходит: - -
    4. -
    5. Далее "любой символ" повторяется, так как стоит квантификатор .+. Движок регулярных выражений берёт один символ за другим, до тех пор, пока у него это получается. - -В данном случае это означает "до конца строки": - -
    6. -
    7. Итак, текст закончился, движок регулярных выражений больше не может найти "любой символ", он закончил повторения для .+ и переходит к следующему символу шаблона. - -Следующий символ шаблона -- это кавычка. Её тоже необходимо найти, чтобы соответствие было полным. А тут -- беда, ведь поисковый текст завершился! - -Движок регулярных выражений понимает, что, наверное, взял многовато .+ и начинает отступать обратно. - -Иными словами, он сокращает текущее совпадение на один символ: - - - -Это называется "фаза возврата" или "фаза бэктрекинга" (backtracking -- англ.). - -Теперь .+ соответствует почти вся оставшаяся строка, за исключением одного символа, и движок регулярных выражений ещё раз пытается подобрать соответствие для остатка шаблона, начиная с оставшейся части строки. - -Если бы последним символом строки была кавычка '"', то на этом бы всё и закончилось. Но последний символ 'e', так что совпадения нет.
    8. -
    9. ...Поэтому движок уменьшает число повторений .+ ещё на один символ: - - - -Кавычка '"' не совпадает с 'n'. Опять неудача.
    10. -
    11. Движок продолжает отступать, он уменьшает количество повторений точки '.' до тех пор, пока остаток паттерна, то есть в данном случае кавычка '"', не совпадёт: - - -
    12. -
    13. Совпадение получено. Дальнейший поиск по оставшейся части строки is one новых совпадений не даст.
    14. -
    - -Возможно, это не совсем то, что мы ожидали. - -**В жадном режиме (по умолчанию) регэксп повторяет квантификатор настолько много раз, насколько это возможно, чтобы найти соответствие.** - -То есть, любой символ .+ повторился максимальное количество раз, что и привело к такой длинной строке. - -А мы, наверное, хотели, чтобы каждая строка в кавычках была независимым совпадением? Для этого можно переключить квантификатор `+` в "ленивый" режим, о котором будет речь далее. - -## Ленивый режим - -Ленивый режим работы квантификаторов -- противоположность жадному, он означает "повторять минимальное количество раз". - -Его можно включить, если поставить знак вопроса '?' после квантификатора, так что он станет таким: *? или +? или даже ?? для '?'. - -Чтобы не возникло путаницы -- важно понимать: обычно `?` сам является квантификатором (ноль или один). Но если он стоит *после другого квантификатора (или даже после себя)*, то обретает другой смысл -- в этом случае он меняет режим его работы на ленивый. - -Регэксп /".+?"/g работает, как задумано -- находит отдельно witch и broom: - -```js -//+ run -var reg = /".+?"/g; - -var str = 'a "witch" and her "broom" is one'; - -alert( str.match(reg) ); // witch, broom -``` - -Чтобы в точности понять, как поменялась работа квантификатора, разберём поиск по шагам. - -
      -
    1. Первый шаг -- тот же, кавычка '"' найдена на 3й позиции: - -
    2. - -
    3. Второй шаг -- тот же, находим произвольный символ '.': - -
    4. - -
    5. А вот дальше -- так как стоит ленивый режим работы `+`, то движок не повторет точку (произвольный символ) ещё раз, а останавливается на достигнутом и пытается проверить, есть ли соответствие остальной части шаблона, то есть '"': - - -Если бы остальная часть шаблона на данной позиции совпала, то совпадение было бы найдено. Но в данном случе -- нет, символ `'i'` не равен '"'. -
    6. -
    7. Движок регулярных выражений увиличивает количество повторений точки на одно и пытается найти соответствие остатку шаблона ещё раз: - - -Опять неудача. Тогда поисковой движок увеличивает количество повторений ещё и ещё... -
    8. -
    9. Только на 5м шаге поисковой движок наконец находит соответствие для остатка паттерна: - - -
    10. -
    11. Так как поиск происходит с флагом `g`, то он продолжается с конца текущего совпадения, давая ещё один результат: - - -
    12. -
    - -В примере выше продемонстрирована работа ленивого режима для +?. Квантификаторы +? и ?? ведут себя аналогично -- "ленивый" движок увеличивает количество повторений только в том случае, если для остальной части шаблона на данной позиции нет соответствия. - -**Ленивость распространяется только на тот квантификатор, после которого стоит `?`.** - -Прочие квантификаторы остаются жадными. - -Например: - -```js -//+ run -alert( "123 456".match(/\d+ \d+?/g) ); // 123 4 -``` - -
      -
    1. Подшаблон \d+ пытается найти столько цифр, сколько возможно (работает жадно), так что он находит 123 и останавливается, поскольку символ пробела ' ' не подходит под \d.
    2. -
    3. Далее в шаблоне пробел, он совпадает.
    4. -
    5. Далее в шаблоне идёт \d+?. - -Квантификатор указан в ленивом режиме, поэтому он находит одну цифру 4 и пытается проверить, есть ли совпадение с остатком шаблона. - -Но после \d+? в шаблоне ничего нет. - -**Ленивый режим без необходимости лишний раз квантификатор не повторит.** - -Так как шаблон завершился, то искать дальше, в общем-то нечего. Получено совпадение 123 4.
    6. -
    7. Следующий поиск продолжится с `5`, но ничего не найдёт.
    8. -
    - -[smart header="Конечные автоматы и не только"] -Современные движки регулярных выражений могут иметь более хитрую реализацию внутренних алгоритмов, чтобы искать быстрее. - -Однако, чтобы понять, как работает регулярное выражение, и строить регулярные выражения самому, знание этих хитрых алгоритмов ни к чему. Они служат лишь внутренней оптимизации способа поиска, описанного выше. - -Кроме того, сложные регулярные выражения плохо поддаются всяким оптимизациям, так что поиск вполне может работать и в точности как здесь описано. -[/smart] - -## Альтернативный подход - -В данном конкретном случае, возможно искать строки в кавычках, оставаясь в жадном режиме, с использованием регулярного выражения "[^"]+": - -```js -//+ run -var reg = /"[^"]+"/g; - -var str = 'a "witch" and her "broom" is one'; - -alert( str.match(reg) ); // witch, broom -``` - -Регэксп "[^"]+" даст правильные результаты, поскольку ищет кавычку '"', за которой идут столько не-кавычек (исключающие квадратные скобки), сколько возможно. - -Так что вторая кавычка автоматически прекращает повторения [^"]+ и позволяет найти остаток шаблона ". - -**Эта логика ни в коей мере не заменяет ленивые квантификаторы!** - - -Она просто другая. И то и другое бывает полезно. - -Давайте посмотрим пример, когда нужен именно такой вариант, а ленивые квантификаторы не подойдут. - -Например, мы хотим найти в тексте ссылки вида `
    `, с любым содержанием `href`. - -Какое регулярное выражение для этого подойдёт? - -Первый вариант может выглядеть так: /<a href=".*" class="doc">/g. - -Проверим его: -```js -//+ run -var str = '......'; -var reg = //g; - -// Сработало! -alert( str.match(reg) ); // -``` - -А если в тексте несколько ссылок? - -```js -//+ run -var str = '...... ...'; -var reg = //g; - -// Упс! Сразу две ссылки! -alert( str.match(reg) ); // ... -``` - -На этот раз результат неверен. - -Жадный .* взял слишком много символов. - -Соответствие получилось таким: -``` - -... -``` - -Модифицируем шаблон -- добавим ленивость квантификатору .*?: - -```js -//+ run -var str = '...... ...'; -var reg = //g; - -// Сработало! -alert( str.match(reg) ); // , -``` - -Теперь всё верно, два результата: - -``` - -... -``` - -Почему теперь всё в порядке -- для внимательного читателя, после объяснений, данных выше в этой главе, должно быть полностью очевидно. - -Поэтому не будем останавливаться здесь на деталях, а попробуем ещё пример: - -```js -//+ run -var str = '......

    ...'; -var reg = //g; - -// Неправильное совпадение! -alert( str.match(reg) ); // ...

    -``` - -Совпадение -- не ссылка, а более длинный текст. - -Получилось следующее: -

      -
    1. Найдено совпадение <a href=".
    2. -
    3. Лениво ищем .*?, после каждого символа проверяя, есть ли совпадение остальной части шаблона. - -Подшаблон .*? будет брать символы до тех пор, пока не найдёт class="doc">. - -В данном случае этот поиск закончится уже за пределами ссылки, в теге `

      `, вообще не имеющем отношения к ``. -

    4. -
    5. Получившееся совпадение: - -``` - -...

      -``` -

    6. -
    - -Итак, ленивость нам не помогла. - -Необходимо как-то прекратить поиск .*, чтобы он не вышел за пределы кавычек. - -Для этого мы используем более точное указание, какие символы нам подходят, а какие нет. - -Правильный вариант: [^"]*. Этот шаблон будет брать все символы до ближайшей кавычки, как раз то, что требуется. - -Рабочий пример: - -```js -//+ run -var str1 = '......

    ...'; -var str2 = '...... ...'; -var reg = //g; - -// Работает! -alert( str1.match(reg) ); // null, совпадений нет, и это верно -alert( str2.match(reg) ); // , -``` - -## Итого - -Квантификаторы имеют два режима работы: -

    -
    Жадный
    -
    Режим по умолчанию -- движок регулярных выражений повторяет его по-максимуму. Когда повторять уже нельзя, например нет больше цифр для `\d+`, он продолжает поиск с оставшейся части текста. Если совпадение найти не удалось -- отступает обратно, уменьшая количество повторений.
    -
    Ленивый
    -
    При указании после квантификатора символа `?` он работает в ленивом режиме. То есть, он перед каждым повторением проверяет совпадение оставшейся части шаблона на текущей позиции.
    -
    - -Как мы видели в примере выше, ленивый режим -- не панацея от "слишком жадного" забора символов. Альтернатива -- более аккуратно настроенный "жадный", с исключением символов. Как мы увидим далее, можно исключать не только символы, но и целые подшаблоны. - - - - - diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy1.png b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy1.png deleted file mode 100644 index a4fc2c4f6cf270b34d36c0c43d0fe41bccdf5a94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8828 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 Ip4q(rAL?&3qyPW_ diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy2.png b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy2.png deleted file mode 100644 index b7b84c1b692a3811de5663c276815d3c8bbd9856..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8542 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 diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy4@2x.png b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy4@2x.png deleted file mode 100644 index fe514d4d528b01811fb5cb59699f348fc8a15206..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20053 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 diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy5.png b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy5.png deleted file mode 100644 index 43b01a9af0fb0b7f3591ec8b5083807c2d8d21c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10914 zcmcI~Wmg?bur`+9F2Oy)J-BOdcX#)VyX_DlxVr^5t|2%CcXxM(jRo7-OU^m(x_{u_ z`7krpU0qdE)ob-rQx&1C_yrY-5D5wj3ROm0LKO-My6ElQ6yg2b{X%*a@9hB%Q2inX zRW(k01O-K}FC!tU?gf38jp&CXd3#^(3tkNli$kX59^8VVuL-I{7#`j_9#+!o)wn}% z8Z3gbRSw1CHBj#AyZ`Xihijm1z)2gH3FXR2&Mgtg@Bu>%hGIzGvgPs4aN>`Cx_N?( zrSzf}nY5PHT=~w5#?A3DY5yPwG^GgKx8Dvjo6Gm2ofEzu#-?iY#0yF6a^4?dB!Uny zf|s$IAl;MC0uwh_??w@;rG0;Pp)M6Y(BJss;Zvx0+8fY$z_|?h;DUoFU zN+gGI|ERno__4nim6F5CutlZqQuCay^h8%0N$KBth18(4KL#n(vgvqJX#|f$RXfq8 zpMN9~&dlVsy=fGIdlC`xR+7PyPwynGw&~YM2MTY%j)jh&R!NV9* zq4Vbe3r)qH5t6-cf5-p%Ch~tg{C`D|v%)>S%;2VayhH~Kvan7hs8amZcONY>^1||9 zV06!PJ&u{E>RK%7@z)%Y87hpyfGj5;FWP}Owl^D{Td~NC+**Zn=s&zUOCk^Pjhuxe zBeY2W-=9^6=bI4j^LT-+)0bXTJFLQoNC}NH3LH2Wp5!`ZU1^@M3 z2}!U?A{aI5n{-xm{yWj9fScA0dw<4&9rlBDsWFpX7vI0)oxT5(udtm^P@|1=}TuuLBiMoG7v-t%k&#yvO`seLVRwa6P zJN}nWuo>iSjXXw_voK=71f|gs$FhT?WF(P6#NVwhkyneg>H03p*&y!TbTpqbT^leC^DuNRg&fQ-^^Xg>;b4|x;RA|i!^lu9vj5$yPjW#?34sr)r~hhKhKKo) zbPN?0g7wed4GKhzQ@vs_iu{lJSR^P(mBd&@`QJ!gut2NIzU;}>V*kS}LV^JIwBqSL zsF$3_->oNUE7qMr07Bx-WY|Y zz42fZqb5unsVcScWcK<8e{js@i`c>==l4Lg^=7_V?(;*ei(80Fcl%{FAFCoi>^gae z&yaQ;-|_LBYNK`eDmXgUY5ZDc2*Z0)VI;XZ6d8$G9dUP`HHK~M`f?3)-8MO;P3Ql4 z^D3gK~*G1Bmj(WwS zK*{YUIo|$|=0ap-rxr=Qz1xA5vx34|hf_ZlpbX9xa392GklRbjLH+3$ zr`~YNEelWU2Gh5Jl{Lh**8|0^7NeIbC&BlwfG4`znNV99?)THnzE0pNi%rz( z-8p-YJ~wcgYPr!iLGB%3eXDtgfT3C^q*j3m{0(v8D>X6}sKta{k;I2{;G~t3fndf{ z;ZR6zvx!=T_A$@sB|W#jDDJUdqb^7gOZa6q3$R7CF40nBZ{)=QE*USJ-&z%!>;gQdAUiWos+faq&=p=o| zirx1EY=)0J+riCCU)qN9UUPaKvArYCd)Qp&)|$U8%t={#>JP-z8@@IT_LBI!#um>h z78@wtGaj1DY)^nk1O)=w%|1D~W@gg#hQo2nrQ}T+a;Fvvc|9yJtea1pnTGJ&ni+&`;UZ8s$-r#g^azZ+skHDy-p_gl)%Dv|VP(XWq!a=5X zf}0S@2VnKFxk_`1mpdP%=L2odu&wt&b8u?Rc{#H{i`hV)MH!iQ4#)4anMtpa$Ng+= z!$cIwWfmCzeg^G~4bo)!-QeA`O8u6G%4ALRfJ+8ZaRhiw8~UkwNg#D{$6`>A{>Px3 zuFb5cib}*f&Sp-NqPRwu$2-4Gq*9Ga!pkyvZ16i<0psD^fk^pb#A5S@YI0dkHGQiaHlY)Vuny?rq-Pyl4`}^K%>=kD^bHthz zTa1zv0WR4SEA5Gd6UjO_tSYw5yP-mzTIFtcyeY=>c4DF*-Br`>msFzzd}x&uZ;o0y z0k@^6-$Fr$_khR;bth-2qP?4Rfq_2OdsfSnFh`#h-#>H5A1j37Ax#q$*u#R1^ZaP}6T@SbxvW;~ZoadP9LU(?ZjcnXyOWU*Fpf?~#@x^=x;o{q>uH)?R_B3?V%r}C(3A+UnoL(EQ1!I0Fpj&BXrZ3b%4uMv?w zC zWHto%SJt-55q=@|_@Xt^KRBo?Niigpu*2K>)vY}=y@1LQ#I;R0d^XPOm=guYz zkb(Nd7%WJVmpAR)CXiMpBMVyi39KohF^BDZZyYP`0_YT)t}}oWiE(M-PoCJ)?%P*| zr~YE3@-eSIRIN4WvmRPhY&f*anADy+sMek^8IS*kFgiu8LEKW7JjQcYyl?Dzxy)M( zplqrV$v?0V13Nm9O~AjBTvDe05!3;{EZH49mH|{p#32v=RFq^4>BR3~c9i1E`pp!A zJS)!fwKM%a`_)~Vgo-}$%rv$k^UN2US?4x9PGo3nuW2^A+%AR|=KK3EGH!MN%(OZd~;@0t+W z0D#ff(9HVoFk|uD?V}Z1%+Zvm9bZY6MdonqqHfozpVOJ6izBHcjNg0q znD8?qq!d5vrF&t9S!CP=!9L-nA~4{JRr07uZg1p2U161yN4!>yOJx6*fdU#KJtU?|i=NK-USG8Z z9FJOa1)y2Pdy5)u)U&*5r!+q8?dC31%WR9Hz_$Sy`nEOJ&EJ36+ZTN@GUgdvQ7EY< z^G*~EjKKatPb@L?{rQJh562O#y)QmS&e=v_;9171mKUylBs3x98Yi92L2q+f+Ccla zszynhr&?5cGL{q4sHyXCv>alj9#fS7qm5hd&5~|d1N;)v%w^2?NuI}VgJ6}=cd5wS z{e4STA2{I}e7g>5M*F+K`(rR8e0)Yc_R%MkrB%en1V2#0soo=r^{?}XKT=k9wz0C; z+LlbDusQ@=0KQIJS&|3LW6k|~<~0=b zQzy3H0Muzxpz%>{RW+cOsFXS zLsIa6kyM_n%YV2_2~L{sAuRe|c@n?L{*s~eeg9=QLYU-5yVzV@ArT@!D{!bMnG^vId+3z~Mo(Wr2H9Zst;e*^Du-R@t3FAhW3!Lka zqy+=b=J4`tD}(D9{GO4$H72_qT3<^gsF$Ke}~{k)`F zW-VYcW#Ou?DJZP;Tmu}Xs{Q+M4YJQ4cZE8AXqUY;li>LBGhWJ%l26lzl-aY5FL2oC zgCbEg%1(*4=PSuqlaB>%bHs{BPE31tPyI%4NfnU z5qG1j%H_GiRaMFyMv$H*S{dnK*>$`G2o*q`G;fHKE8>ZZ-LKKWqeSTbMf!P&*?r&w z<^Z~xH-h0-5Y*WC=rm`pBcvB=r9 zI%4C**F%Qzs(Y~nFJI6T2U4%D!0Y&!gJlmcRjSNQjq``dbFWhpI8PM%BZJLBY`G+% zI#xYySakAbS&@%qXo(x17yXvJoguKAF%FYceDb&ZyZ7Wx3dC6%2hNqY{BTj=w1t_9Nh3aYq3IcV|0)^^T+~`w!SXzM=!`G{1jw+MAzMXWjJ>Fbq&_SQCnS5 z7QKTg+ep7yW7~ug{wl%H!SKh7@G%#7eX+7_SIT|_LBmB%dNBFkaUWU#5j`7T2EW}t zsm)P3cWK0{p(#38qpp>V)#>|T$M6oVY$19_+2FEi9Q|A@nI)bXdTW9w>gM$tkcvz) zN6@XqVQQ}2;U|Wi`L{jYMxicv%9htP@%1=QTYdfAz2V6mGQ2vRh>b~0OC`oc9eQL! zfiQn9gLKx=rmi-t=Qhp$Ct~es*1F6L&C}g3SfPVNe*_%r>jJ zKe^9)=|B|--LY-rwC;)dQwq!T;=~uui=hu+f4j&U<~cADa@83?5(A@`%x& zAOCed3(Bv&9{*}`_-(p5SuD2+cGR_J{d^urPAWhOL$9$EK)iQ-)2Py*)@xr0GeF`6s2YUb4qqW1c#%7 zcBY8QlxaJAIbks}I&+5(y%s|hi*87sAkOn4O(zeCs@k;!vOX&uYN~y7x@DicnApni zb$a)hy=H6I`SaRI_3hWq&{5uK#llMxrltztQ)4anrx%a?+t`FaT@tbm2tb+e6PKWA zsQ(Vxf^iSW^zZCi8T6ESXDG34RZt8LCk8myQ~x!WORY{*N&C)1HFH$sKzV-YkF6n> z?*);bYSvl}tO64OU0$0fl^AJY&A}9=;r6=!P3ieu|MV6bcla3ZYm969QV?@?xIM3n zWufo#9Svb_`@vpxF0X0L@+Xqf$QUIfFQBJsvH;-Et+QI62oTgNzjpr7k?SH%CF0AB zywxydi;R~40_r>>){h4bXWy04#85X%Id;oWM1l}NPNB#6pVk6BZ zP!OGF)Nk)nd`#43V@aRm(aXY_k%1{5J&M+5(A{bFJt{YXl$7HB92Gw$Dg&PWb#H+} z3GZ3#c?H=yj{dI>0e5v56l^Mp1Tseqev3YBXWFyU0xPAjNd*Gcp8E|c-9m#9EioS@ zd|`fQ%V~dNm3Mv35w>HPOSZ=nKh;2eL(PXTC^BiC9*?!g+Up)EQOH&IuJXsl!o00p zi~+Z!uS=FeEl0;Oo|Ku3YJ2%grJ>&|*S@mOc;gY)ckTX>|8jH6x>+9DdFm|C$j)Up zgy%~Z##_R`pLE$rd()-yt0kZpll~?eBs|ZPJhau5HV`n%D?)M_C8TiV#Oq@mUKg^* zNLbidLBj8}CQU3t``o0O!v&255NftU zxko7>5VmolpH~vDSjT9>5YC>~D1ro4v>ge)`Z64LoaXHbPak=ZVyo`j`et)@&LJGs zls-$DN$nzW^bEl+7;l)^FxS)5IJLU#3vtxEn_pQ(dlLF-W4b-!tfto&@sU!EO)+8D zwZu!5lul24<)!;)i|cX;R;2*JuJJ6`+L3qW!TO&LypZJS(ikH^cHLPvEK=YifZW5J zxkB}z+Cv4yF=F-^FGYLqqb3{b1;^nZeg=DjHNAfIF{awGv+Geg^`())> ze-9wsZoYg-rF<*W=aD@5T>ex#i(5dH2t|8^IlK0N1;IOwCd$Gl?%5l!cml$(24{+k z?~zPm=;c?lwR4&8i+ZvKr)s;U`Q4TV?IK;HrvY{!#jQO|E~8Uxp>vt$zCS{uMNexz zf3?tlYS8tCwyeVRMbc1asNbug`cnTRI1EVr9u)lgda%dC{yjzXGM3pc zbQ5p)K5;rl0kJkvvQMHhsk!jv%ej)7`yCX- zu^t<1c071qiiS2C8&MG%Ezw;yv=fGi&)W>kg?Ax7C&(V6S7Zy{D$ZqUSt$jL^G|R& zi+N-;SSFYKoTm2Z`jvk<8>>NP&>+MioIPVC(6Ue!Czf~4-IY&XRB6Oj79PlY^HOg= z^ou`9Itk+cD~SwbsjYzzaF8Rs?E@jcnx1}_6BZuP{bU_z4TtxE;L6ak^a0usOs1~f z*sD+1nd(QWqA8mV?{09jxm0(<<|yax)I+Pu5^Jh4+Qwf@M7=v>Ka>&A_wvrdB#S-d zD9`&;kX8_F8ky}Y$wu2eMOmBlg13CeD%5?CQ9}(EZSawAl3^F?I4;_`QE0p?_4lMH z@X)B?Q+9i38rxYsz{?LmR$EEu)C)f{tA1OeQK$ZOqnmXlL^EyK&FiTrxxHC*#lA&; zJ3u;jR?d@p=R4(jK=e%Jybz~Tr~qL)Y_bG$GF%TagyMzma8?L_etze>xqcZc9P4LK z+d1Y9d2#8$NoqAV*P%7vG>^C!&=(-C9O&<_Z`zc_=d~IpdE&RBLqAj`{tc*Mw&;$x zRfdS^P#kGLJPZ|v-6C=8``Fal|CsVl|FB2Y|IPkNgvsseYYKl4H%Q2p87`?0$i9|{ zWu_$R9*R7hK9OTsO8bMZ9SCk=6JF-iw}E7;y*lGr1Tdiz!lT;gDtz%hSNhyj;rVRk znl+?U85y<|p~EgA4a&D|3>Uh=%MiYsMYm@27*iY#Vc+RTBQ_k9E(6b@pjt7e^BIs$ z^!e+(9LH0|V=^REn|x{A(z+yQ8g$=|zO#x!6ZE8n*>SHz_IiVg!t&KK70|?MGYa^rYcoI8o%SFn1EE|Sroz-BD?H1kzF5!|)#54|vK1$)Xd^d~ zogmhe68lpywXO#n&!Jf^!X{pU&9w7!Y@-J+^wCSlMR?{M*p^}@#9t;+fY8Q!y%U?H zSx@stP}&83R%7-Mz4gaCk{xh`*%HAca?I~Rlq6~tZU%aXdW_$39=~lmw&NCb@5%&to284{v_P?#3{@ztnuvB!HNBgv40IOSq?E>Y6c!NgFU6%^i*4vxX)UpSHtYqPc zO9uO0Z^Imh>autj-u>|d3~$c?zfLw-bJylkD<6wm-$}mTn{*dnXp5qN>Xh>CdC-Dz5vbR11K@BuXBf4d3u?X)c#`PnZ} zn#uaxA5R02fybrU={?KA9L!T15=}qVl@k_q&D7Kt%97dP)c{y(7?GiXOd=&ma)Wu& zo%B>on8opKlPqV_*qGOIMtal7BJeBH$J6#YQgfjv3Mcu zAYIh432ih5NB9Kr|O_&Uvt` zs%V>e?@z<9w)XXtgWl?%mfNkw*TtM}viIJvC=mXsAbqHT4jt38rA_#D#ptQR5m9B`Z6~wMvH`3` z?V)&n7*JjXWBTFrL3a5;DzqYx-Yu(53GNZ|18%2?0m;c(oGI~$!#B5gD>)M4y?b`V zO+#gVyxoLf;{B!`@$*6K5h1+9g?1#}zaaPy*?j`26-az{JPS{UhN(?ixhF!aM8k`% zzdu6pGc!=TAD!VGHjTK3+EE(v#Le7 zoMdvgO}V@@N`gvkNr%VJG3r!n9ymEIr84B=;fI^dS(sKXjx*|Xx!x(^xlA+7r{L0K zWcGU)!R~VcvOnNL&2#Er1H{dv8zoK29Of`=Fd2^qd;AdqM?5|L?^BEN2_=X?9~eF1 zQokn=1;r$HeL6|u&*I>_eqN|Po*;P!)n`_Fh@$4c)FPakmimzQZn0mZGn6C#x;WZOT=!Wzk!Pc4_X(NbQ+7s!iAQ z;t!{>u*8jA$=Vue38dYCzGR$aNB|R}{yZ zdh|>>(dd|PvdFvA%2>E!lo@C~NQPJVYC*-FRo_m8lVx3c8%Fe1a>rYz`xx|;EJoES z`G|_VA?{KRj`W2a{&Q$#)vzH)%KciN=okiW`eQnxxv?nwK{EK{`fJwAuV~2o!Pa3& z-*>-4%O+&*Q{uh5c|vkjvO?{SyNIZHA9x1MbicV91hO3mM$??-t_ls7wqpB?wV5vs z!v}5Mw4EV3bJNvDUtPS0Yh?9l0u9aF%Z;xdbvp*tBYs};@A7yS&oQQZ)4wBj#P}kd z+j7158^lNda$}G_Mf0m+&JK6w&m3$u-6j2kjrN6mCr{`xp^Yn=dArCPgv`9`+;zKyaSyS1}q=JwlcEEx3WY z+kqxd*Cd@J@2bVo@)H@+(O$7W$}{pDJ(r44Bs-B3u{5IElU=CMwr(+?gQjzxE79Gh zw>94jYL}2{p&5yGSw$I9=p^tt`e?hX>!r~MP;Wj7#j-q9*w46EXejpKF%#KVXx|-B zn}-|4c@Y^-DBsG0!#|WI-}}d_m=j&kEia4$1FQqA&!71nKwP|MQrJ-mwAqHpg}GBhIthC@hi8`TXxC?ZtPPZVGy z<-$DTETHvWu4nBxkUkYUoW;gOKbRFS%H7$cr{IjjiKjIgoyN`D=a)Rt~{F#H?c77lbm|R*wprn@EBbi-xX^vhWR^O$dC>huErD69LA1 zA*EFK#3gldX$86-VX4RgTWavJgUH}{yP!Jz!mvrU>xU0t+?1Le`Nc_p93Z_N{e~L9 z_CCvBm!h?pe{`@J6u-hET@Np1KnEzE!yKVF|ClZhR-?(0_Z|O{!^$B)IRpw=6BFq? z5<2@DJfN0f#CTCrN*A`^C`ol>P_UbUTNrfjI`oDM_3F7Kc>k5s*{o+_A^%XlrW zc~^0ve9OO8&npNY6C@kjf72UNZP9YMedj}^mYrJo^Eo0!u;(ah;cB=Q8CB)ni%2c{ zY{hf@i0$#(nF%{5$(Lc<7Z({-3E)H&>1Y3~YB(T*iYeQVULA1-zskV(j-&+0!l2F+ z`+J$|z*5PmE~om+8=s$S;-;a+bMs)Zq= zEGlM3))ZxP;cGix0d}hZQ;z3CVcl5B3JlM2;|+fTv+Hfk_IwJt^6_X98Sv)Rz47<` zH8cAy5pq^9N+q9jlPrV$$(hNCO_$TBIgUuZPcg*1M@0@u2ASUnw_IeGgHY@e z9mT`rM@aLGPLtD3bfdkL#!DSOKUkH|;yw_-=jANtI*|lCFMJ><(r+A@8;4r?nwyK= zf37~@&?qs%hx|W4(*x}Q diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy5@2x.png b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy5@2x.png deleted file mode 100644 index 353f69e25dbd989432aac1abc38c3eff3a705f9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19924 zcmeFZbx>Ph7%fUmp%jW0cXuo9?iQ>-@#608h2j)<2yVrTOOO_KcXtc!1iR^dZ|?iG zbKl=@-prjjlbp$%b3WPYTYG1HI|)|?NFyWSBf`MIAj`@~sKUU&%0SP%5a6M&O&+Xz z(6?94s?uUGm7|0QFfbx8vJ#@7JYF4VzVpG9Tzo0>He*YO)D5C|hk)Spjy{j!84KqW z)JCzp3DLzQ0<4>#lVM75IC4U{n7NT8`m!0p6}S2|F>66^O>Fl%`* z;54LO5nORD-0L5%63#Yh0efVX+N*2MsLkk&pc9h9y#DWT9P+E$5$8F|!3R~WfW_MC zP~%Fw?pX#T>%%WYJBKnEMi~f$@by0jkW|@mt+2{jfP2)H4&lQ_f7S5k55Ucu7_Lgl za~5*gQu{5k#yjew3m#V^Z)JiQw|ES-BxMgu{j!hCZE3W^wb`lz zF*&c4-~V;@Z;Z40z-_g3QXYwD9~Qn~Q zKrAw)dOM}40KKCLFM5yZ{826z%KHKhY#!ME6$$htAeH7zVn9Lv5AWKy;f!VOd?`%# zrq}M_EeqnE_%eNc1|d5VJ$eC1|B3$<+8Oow5B^#HI4O22wPVH-{Nk5EpObm6N;v zs25$zBgA-r4un^KIa@7Fs=MSPPuM6++Q}xmp6uITxU(p+vP-}qQ?0odNB&pb2>h?& zWOlmgm~nUq_wey5lw@!JdQzT(NMaD5{<=oEOJB28uAvsW zZRHnCFI*X^xFEv6TnyuQC7Po&5@&Gm&1vW`bJSGcPwPo9&+h;2a+p`L4$1Q5FDP7^ zVK6p7{vVY8C*}X=!~f4S5Qh9(*M^ef>Jy>J}LWBkH+Pb+5c9Dan7a7cNS=nzi4FsA@E=v;E;O;E6!5`xyKBYY^#w zZ-AbMi$Wo9l*sP%?yqtpg@O@R=9P#T+Fz)I3Fsz;fu&;|#B2VGN?)NtS?hfP3@I7H zU-b1=#0c$cKqBtWcin$D8|odrDoiZen}6J7MffEm_uWZ~S@drzfqDl^2P1><4@Je| zzWG8*CB;kecM-xsnFh-EFqCgz{f&Q__s}$a$Op#B{}UGs)Gi{-hrs{NE6{UFcxW2J zRYv=%{)r0)Y8MXXo#;OU^x+#c4c)Zn|C{vh!gSVwNw*NHmt#}r)HB27<>XQOmz%IW zJy%TTDyQ-$C*x5O(5FwD;Qw~{OzF!yGHe3;)#0Kfv1%;irgUvGaeQ-{U8;{``_ZB+ z?6mW!D|{rSU?%>CMIWV*C-~YkhTkWSeZLn1M$?5*)^fN3N2#p4||R; zVS2vC;z{_FoZ?t^!9hG!D&?A?OP(f5^^3@J|3EAN-66uQrzxXnQ$l5-OLOd*L!jk!bC8}1Do-X=~NW>gW6x`zx@tE8WZzeLH$3}pCwq+gM|nH|yE zz~Atm679+Mb8KBg3z<*z#t!oQO8!SxsgcO&T= zJ9egFGAQboDUg+*FsX{+%3wz2q4CJpYj@9w$FqGuj026Ikz@ab8A_g42~Lavk{@cg z;>>*UYP{Io=c|U~L9Ar&DXV74HlM;WB|gCwRu5w4vIXG(Wjc)Db!&moT(;0^;l~hd zwo*ilo;ke_ogyD*7^Hws^?utYk2>KYyGqdFsU!X$UTBE$5A+HaI^S`rusB{!Y9XiL8fuYVIlU}9}CmN3i zAD^>W5I}89 zK)Gkg@-ELonG$Hu2r&4{yNv~p5`fOrdIJ~!1c!~E`wwWoQ=-{#odjl+czKjFwi?Z*B>Bm9T@{GbcKh_xEY(SL#nq=ed)`GSD*kDDD(3hJ?6AUFRf zF3~@BDL=k>`!|n-89=FTv(YAw{hzo

    `2J;0FGa^=_6|&W~nHTuu!?o%g0!lL6vX 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 E00BPoRsaA1 diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy6.png b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_greedy6.png deleted file mode 100644 index 2ae63d20b0ba6e02bd31246deb1f9f3acf8a4f4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10410 zcmd6NWm6ta(>Ctz1PBn^gS)#s1a}Ya5KaOFcXxLFJ}pXQr$A2v(32M}+$V2Lb|uC@CSL1Oft@|M_kJ1NC`#S#59pe1JMCi3@?0kK-SK zfKVDsiU_K>fu5zqYOBn>cTTj`fcNAORg*PY(eu_RDUWnmXylkMe8iiYTvXhT(m7Jm zR*^1b)GsPO7rq~vx`rYy3?PEN>sfKa16NF^*;#ZvK z1?Pcl!i5IFti=^Z&<`RC1kF4L!bT3~(RjQR+%U!bKE=2`i9DHR6a!5FOacUE)y-=V zHNnK=I_(H3kff4u(2(A0$7#K}F2f6EnFOIg#X9QHr9uo!ssIf^nr}>qF=6k~9p&XK zpdrPN&W%IHG+8{#}cI{GGDwF0zjzqmnVfa zJ~gJ``}B~kTYN$v#Pu*7Bth~R-0D(?9Y~I;kTBwr0D*NA1~HRbS183x=FW*bCO^V~ z`wOm<*XQ`03botzAeiyaqsj*QoT|x8bEEwFIRd0d{1ZGZ3n^H_jH?A0LtcuTmt`+@ zM}~#OQOnAVuhfxE1!$5tsU0>-)VlIEr|>ahVMX2@Z-hvB=`;-WeWjk&8xz<;1VwG)AU+W!AQa2Cs2=O6U&`ryB8h&={2ekb~z=N!T( z;cXrG(0(nqdr}^T9zU(4ahha7I%y1}Pq@F5W9)@T&>!$WbFwVKisDL4{pkN$xoPw% z{zAad75?iKBA=4aXqKcPHva?gJMvS!X0!`K`iH25{I^uGCEKCzKV^KM;?O`RBiBE$ zMJbzYLqHy z+tVYy=2Rbtgnt129fl`IDM#V__tn!i0S!utn*e68lw_;_RB&HJZU`LWUjSLUut{$A zAhi8m_WOXq9Y|?@kxIf6_2+Z&hbE=%;QYyWtH>T@bdrsc>x=T=WGfI zA*eDKLPkcq+=ZQ&Z+1Zk8tziD+``47w|&Gfjq#2 zVZi8gr&)_-w@sLIa|?K-I(KFk0(kX>Zn1%YJuW>!DZnH_eE#1`{@W{Q;jk6$_DyD} z)Hny_UzAo6KNtEMVt$yr$lnZLLHo>yFOq@=OwoVWrz<$9ij=D`mC@J##PC0#5f)QY zNRs($Kkwzf#PCM|A<7+DHD2u3o%c$u+#7)T78n+9o%ve8&RA&qap6Yx0xhr3BwQE^OzjpZxYLyPsZ<5pH{Yw7u` za>LbSaK%DS^O&(lxnH}`W2^W3l5mD`(Mwm-cmQ=}jj_fCC{W6Uj`)~3e#Q8K)^18HAC|-9_uFralm#kh>El-cNK~w#(xed@VHy2@c zR^fq8y9>|?28U;=Xt@kfLrfFMRg#jjo-CxL!IMp{hI1xtbh_z%xGE}F-UZ6MHs-|a zWrFt2mwc32ak)CEG!6c6XSxH|%fd;Yziy`iFVEyWl?!k|kovaLT^$DX+6EEc0F)nJ zQav{=!W$_9`0!gFc{OrX;}WwAcsH^GX)(UA-QcJ1Ls55opvFLdtfksdt(gfdqY;bc zD8Z4i`3Lm7DgA~f;YNyP9A<^!J3_L>YJb!+UdhPds?ZtB%{6A~GYv3MCAveStczLK zFk5JpCop(5259*R(;PFXVd9ENbm4t9mT>exhR5Lu%NkOy$$seJUi9J};=x(-V(a;S zgZqudK|^5GQpk|U`SrUUPJi_&Hp@>)16_!|skg0H$HKL~I+|}e@xDb$MDlP!R-;>o znQw{QxOPUEQYO@S3^C6qs55Js#_4V|eh9ECP(U)^&msgKsA9hh64Dbzd8Txu z<}oq^Jb4pi;D>S+(5L{#(2l~DsCh(!lLk9Jq_b3ak#K3N9nge}dv1LHr_KW2uRIec zA$kOsd0#*!v73*xki9WB8=R7?RL%sKJgqa3QA^ZSHTG25adk+c0mXS&9c6-Ox%jEH zj$o7N&vLGXHpG{OYl5E15b`fRWM`WJ_u@8)P7!LjxFeRhvcDHM*I=n2*Qtfys7xXz z%8gm6`*^YZNx7JTqr?d6Ot2^{GQ{Wct2lRKYik(7;~fjv)T5#r(6@5_fCa85Ku^krHJx)l+5;4-#x#WkODdP);k0nn zqz6(7h>0~NiG%5V%hCwExcItcrm*UD@a%8*ZjA}qM*h?xBl?3zdxB?fRrP~o7{di% zLMxx=saT5QT}t2mG2dJO0UAiSj4u>w)gwX;Zn1f`ye`qwtZ~kQcFn7+TnAwxru@zN z?{9iYdf4nrIS2!^e(=Gqxpv+X|uueEhhjxWvRa%aR6sMP#u10O>Q%`I?Qc zwXF!kgF_QmO61iy%P?@m&!c2_oXIeU%XRK=mdPE_W0fsB~22Y7EOUc5C!H|#gCn%YEn)WXrJVOZcM>buFC9xv7 zx|G;KKJ;E5EKvm}wZAE$9~)*rx3MCkZmCOcsW-65ii}2kl8IRDV7nVD82-R#zoZE5 zG0ujSSQ)YTC$GyDmcU~EA0Z=jtY6x%NpE)Vq#+e9=7X7975ZWKGTmdU8kLbMHKjgO zB86FdL~Uh*1$4Y~NLX8C;hR~M(8VfM@-ZK5N*HTmx@CWBAgmo^NyEnIu$I%(S~&fV z?(k-P)ojCuyRfqjVPl%LR1C*!)@~$Wn&xUL3V>Of25Mya3p=-l0`xV+_YeblqtCeK z}J^MiID6vQ#~vDEasmCxNX z-uYx|D7qm0oP=AW#VZe?KCs_S8_^ywDAq{l!9cESC$|Dt-{(1n<8Rp`po7-Q2c);~ zKq^(F+i)L8dj4CSf0knXG9d9vM)bTg-2as$!KecHv%PQ_HUBF6(ZBWi{&Y_*$=^~l z1?TgemIVqha{qrk^jCS@<^qMri1&$nvb4(`q*CK!uv8<5hN|Ay0?X?1?t+GzM?h)3 zne5CA%3J8ua;(A`;jCjK^srb_Zsls9BgJaob>enHhD8P$_tA13r-VCjNY#*RNMfRV zQ4(P3iTRQPv3&z*s6V>T|CP@2Y)SE$lcmYy)tHeG6cT6Ly|>O8TKMjDbh|}kfwQMY z*rv|x#86kkT(dbM`j$|>8Z8ID%H};OECJ0lV!{yl=yg}<51}ZVk0NtZl0cHE|7QC zZ2a1HDC+DhAmd}Q5_oO5eA9Nb-oA69t zVD>FCf%B!yY}+V&EkXr{TJeB-X*OT<>c~$|a?9lK(JcR^q&yT`{?T*$7PVQ`7Li9c zKC`(B+Y%oEFN>ELma*ZrH`5}KB}Hm{J!UnfTXk4Hc}O8QGr=|9RjdGINy4D{dIsmr zQj;)+8rpWayx_DoxJNetNlX~%sE*5sKP$4*veOpcNsub`T!L<*RbL$u_NKa3*v6XFeE9(xX`PdVpxfQ9jg(--C%}<|*1t;NBAQV0cy7_)8p{ zwPZ2=uh}X`{Pw>frY5|3cB^1qQWq#T*>$}i%w=_ zbVWigKsbs|ai#H~y3{&)N3*?|C0{r&H3-jwQnrn6)~xC=NC&LvA?>!NS^QwJt0EH7 zI{PeIS0S^>a@0WUAx_^>9spR$ISdO;Y_2936n@}YuG1fP#;-YN8Ra@Dh?O7`>SJmC zFko)-f;ux#xP$&NIb4O!rI|Xkh)K8y9m(j2=J>Nd{vyJ!V_%;jJtN6%Jr^}8OvjO= zn3i?95@fN*B3{;E?h9J7iX^Nq&%I=lW@1HLU~Tau&(pxUO2H!OiLS$GPo=g_u@YQh z6s?4`L%anly^Z1-M`f;+hN8X5h<-9X7t!WKQF(uzs__&l0?l2& z>{fC-Z<{nK^Rg)#Fdw2E2O>Pu?@J)wcJtzztvTz-frcO1>uFPyt*VtbgMuNV-4A!}uF@L?yC=gbD}q zSg$eo8`64FGbV>``P{Ei)}zS?tAtBj_Ao}RbH9v-8ivM4+f2-)P43R`Ge4A8s1F>7 z?g+H2D}7H0+~bl$%HGOb6qFp4UkB&YdH-mUMbGL<{Qek=$PTf})|n8@te!K;+@^0W zS%V;d3w%1eX0BMXE!zR#4NQu#l1ei%e~TDz!ou)0pJE-p#i`A=ny>E_){=5rNvIbf z9LhiQ5NOQz+v1=G4kyxs7=TDqT=Es zaI$(M)sRQU^n8V(03sm~!ILA$ZMvuC!RzbCN*@^x98|bzc?ymI+m#kpX z9!~0urOT*(J)lMH6Lu2vLD;)SIRma~P0iX;;YI=j$#lg)KiZDrAJzIU|?aN8_$8QYkWkm$-Oq4=q$a}+w`JGH$xgW3COT45kbn8NxBHNlT8Pd6Fea<|DoKAEHUuF7qV$oXr#?$d@0?sa^O z2d^>An+cUi@u-+@SCv5+fj=I^eyV>5H!wCf+fS20o&st(%wUGjYZ^`K@h`G#C<&Ryh(o=8uy2medybWtHKDDLeCMcFM^DazvL!+j^PDWomxw z9vp^>zpU=pG$h{-ttKSgp;5`iS(z5;_&C$;*A6mDr>C3Ko$nit3Jr_q9fGNjhcy~T zC*cM$;^Ap&3dM0|@WV2~N9%BPdhVmQgj_O0n0OAn5g?;~GE+js}M9^+s1OHS96S zl+qMLQYwYS3POpU)k78PCw+U-l|n)2f-v<&x}JR8E<`%m^GGcdqvtmG!%Ky}WmHV3 zY?A|yLXk^!q~_m??yn8YL~fr@&o14j#<8*GSzr`U=a|)=C$9Lml?2~#Lx z`3@ruy#7{`1omj5a{RXEi(<}#(>K0XAjk?L$4Fnp-?ylZtIr}mIA~BR1a=)oF& zcY{GgEU&k8KxOdWXp$9WDiM6E&S>EwhebLhaqsNRt8D%U%3xd@BrbZq*O{G09&@SE zQJ-lv_$L8PSZy6m;6_}WRZ+?kt$8gjWb-y|EvO#7V%W#~n$PYM@;wJ7d6Tv~rfGQ> zG`z6_4Rddva)g*5D5_)C?a!$XfU1~y0CA2H-MgC>A=7Waw4~6mf-)I>zp>FXd4(E`T7pBw%Uk9aQ^2ctrGXH%ZdT4lKxX36MOOt8PDf}exf?E42Y7s zRCvS!z&@Y9KcDDhy*hTc)N}3;`lo7KJc2*^vnb{yVG_6ZGPkPr{%9slx@&~VrpOW%8=gsZ3>^4I zay_DdDFAr9S>lxZ>1n`gv9Ovy28dS&C=#TkHLo56;r&ppI72L^=S4hN^zp+UnoDci zWQkCak(N?aMMu~>J8>fZ^HbA4kKjvg07*14D4|Ir4xv%syC9Tv=meI7X9xwFX#T8) ze&SuE9{n2Dd9BI=Uzp+CHl>u9UFE z$JW_>wuygLSy~tYIuKe*pd-v2qgFzlX7>S9;#qg+J`_QuBXv+I7 zrpK?OuT>e%t7HqiE{+Eu6Vn1CzG_*kc81-`m~BZuo^;JJ`T)s{Rb^+Uy%^Gq zU*RfvY>~RPI{4wVzol~iNC~~+e~=w(9L~;jzEnJzZLV*{st53M|5>x*_tHzJc{E|b z)h+RdNTb=-^9v2ly{oONBAxC46B{o!g#Hjz>NYB=5kKPm5y&$YU7~lbq)1#Wp|Kx_ zs?8mYr{iH!<%=?m|M-+&D0pRhByB}WC|5EOylQnVS&EpmKJWOVP-^e8!4X0)pco2?&IPp_| zpE2|<^GdWAn9$5qwF4iQn3h!OG@-YiX_IlsjJa(XLb_RV;@ex%=ORFY|Dq+Ol8CrJ zN9YQx@9eHz%x#UWtbSTe4Phz1kqt&NulTHuM{>vNwErxYMmVa%79z!M5J|-T_Ua@^ z#Cs`PTlL+|+?L<1vTvw|8VkDg2UT(ulj-?wp{-J~cAEzdX;k#`bmNULo86q9bW>bL zQsd8uHzk}A+K}jbJpNZ^JI+OU6wHSaFTDv1PSZ6iDiq1hwxv@3M9r}-+9!dbb#-;! zY`!fNY^N~jX*shz{2^{w5@v;%@2j*Gm7_u+!qbW^Pa(3?Z;ieCk?TuHTq-+3thB^M zPEUpdaJER%!6Wq>49>uP1>CLTs!Rfd5;trrZJm1e(VR1Tw1=jOz7OiF_WT22jrst_ z{Kt%5AyB$XU4o?_Hd-c`G3Sod!xm$M=F4tv^ma5O=9+G?dry*X*l+yU)5@K z8$X%JFj19Qu|T?y?LH(qld zEfwh(tM$?gt;7sEzfP%O#qTDfGYJ>w{UQZHFV&&V&ND|i8sv9w#X-5?m{UpgnRT=p z38*j40t6eW&A)_w#9ETq@q+YdDV_N}F2WJwa|@Iup2S&XrRtRMCinef-iqq%fg;EeNY^OoVS$DV+krFV_yyS2OlN=~sosioK_Y*fT z6Zpnof4*Dk2FxR@C0GDVA(TfJ-9~sJ3{$Ne9^b=*O+6!I+$>!gZrYwMv?|8d^opkQ zrV6bZhA2HS&7^JvQj99Myl)0YN5XRAFxHXGUGA1Kr^*0au#AV)AA_~a=^}*}09^_^ z#EgXTb&i2$JGKlqFBlj5?xr3Ra}esB31G=h;W;bo9H$}gRkrPgVt$Hn#%lb@1y860 zVPSBX>cy9r?Q~Q!Gf-#KGZLph7-a&JIlMg@^q16x^0$v`*rW|;q6Uw z5T@z1k_G0;uDAXHd9RjkCS=9s()b2S8>q_5y*E^w+>(>Dx1XFBw?65)A_qIzaV-R2 zCzj?u&8yjwvz6m`@x9+9mJ%0*os-s?x7K8lAphco6eiJ`Q^wo? ztTD@K{Z1Zv{7Tr$`6+@54%=km+mey9?h zgoFT-Qfqj<@;Kau^EQ`^&h=cDMa=kVGyY%mx`_!XRm|>z8uQN!#B!x&6*e-Kbi0+m zCE$bxM}N@vrI#)Q!IfzD1-*PWdhBH#Zsz9d*O3^-VosZb5^GK+XGMRk2MDrjs)Lud%B@wf@H-C@)4n+H$~*)pA<@}i3XBKA z1ut97F(rnRk_&8cj1*=VKyam_*mIg)f3vhV3p?S36{8FQRm4FE%A0YICDraUmzi( z>y5!GeGs#&k+{1HYI-h&KT^VxJ?|6hX$_?caF;IN6+H(R{ZM(`&#xN~SY5T9ej`Yl z1L+;^H($E8n`>yclulf!A31RVIylxp<-f#G(A>q=1NtNmdxhi{{72?{%_K zuVA^r7KNS&@$j|Hm*PbwW;2FAtOg_|m#&PdfG2PU6p}FcYD301KYM$8OP+uFL=-9Y9 z?^qt0bIa2Tck30vQL^rVd}wNRRm0_$mz=b0u?S!#LT5s;Pco7U%lsRYn@(4l?fCJ& zMerjW$Prq>V;g-;zb05!MExp+CX6)KwjJTCHox#8pI^^(6y8+85yS|=yJ$}zRMxlr z%Aw{L-IqV(?~mzt$25iQH4QiS8L>Tu-ZJ=2YTpP!3^>AGx4l~O%v z^(>pUkT4Ac8@gKLDIi7d{IT&0Mo{!l!4(J!=0mVZ;Hy{Hbe zbalKM>YAV}Jb&^q#W8YcALQ>>*@I<2PW-Ykf@aEoRFQ@F6ugd|x_BO=qpIF4P9z)o z?xpcmv*~ctL45>eE}y7NJ9Lb$xRphD_}of@-)2+1Eurz__V*M4>BDmQXpzzK zkK?+q)7Sf|hJ3sH6KxJwJP5eplrF_lrkiwEZ~rJPJ!MIcn2K-il|6#c>crK(C5&5b z$$j!~>0dc9Ht9}H?0%^_-}fS^3$@o6LA04958zY$y34-H_8aoralk+Dw!?2dTj!zD zxh>nuiG>#qksF82c2~5+EGt^6TPZmgI=AE>lD)pLtIOD&iefNDUZP0L%+F7K7ri9E z$=H-6KP+q95v9nCA^(M>$l3_aWmrdg zyl?^t?tZdox%i2OAa@Ag53q@tTVP=bVN2)#K0-N|xF>u+nVIm&zqs<6wI1QSK;%Cu zneYVdB}|6U%YVOPAzU7J_63iu9&wp(vrqx4Q~m2W1^>klLQ9ms^ji<00B<`&yRXnl z0>Ix`bo(*cr#a1?MfNu8_uC84dR|SAb7GY#C$2`bLs0v#6Pl_xf;ZpZmrIX;TJ>wn zRs}l$i|{bgm8gpSc2nY8;n2Fah|`9&Wn+n_@~Y_Bh-U5&;ILV+k?DIhPd2u5p^agi z9{_l8(ea}}$O^d{v zkJ~+7MT{n*_#^gyYEV6oM|i!r{kkx3D6*@iavMa9{^YIKBPNE_X7}r$k^0xl*RVer zgX!%d1Ko7#*>93`#H6PrVA5{;w_T6xHZ_g|!*dJrTJn|YRkW9=Zd;11fTNhP1axB_ zA5@S03TE0bPe+NtG=UX)xncyZl+8|aoNmH0n)5}pH`zbeP8^d9#gp+;(tdKeaHr$P zzRna=5+6%99A4R^bCw}KGC1`&Z1sl2x#2;oUQVk*&bLbE9)6zjzE`l^J6pUgTwih- zcInrgW+i&CtjJo~4an8mt0Y6}$+PKxot9SJup@f=AlV$jr)1_IR!fGIXsjk<;irc>0iw7W*Sjg@%jC5MPRc;~Q1)pNa3U^F`u)}VH z10`0eaoTrZe6{TGxzuaFrQ)CHWWCeFrM$p?w zSPg^JgV%JspmdWsVoUy*sWOs$-DW3;+|$vKOh-1wUHCf6)$B4<%K-*m0z?a#Od#0Y z^M(Jpoz;l{QO^4!J;D})jLB%)j=DhioUn(`l$k;mwff6FUL#?~JS}&nbUVM%ze_$y z+U=H8LD$~5$`e~6--jgrD`Fa#y~#2o)Kl-0Pns0Z-N`Qav+RKdyVEZG=APC^QjvO} z?wsT|1<`4hHsNZr6WZ|GYTq6V1qX76k!m#s%)(~i*OMbt`_6!`d-T@;!e4BK1HUWl&84k+U?2l>pDfD9s`<5)U+GzHIb1&MtT_KZ}V1L zH#1E{@Zxq?*+`#)KveVJ(6qFvuT+Y58;G@AZjYG-VD;3B(g-7JEyhPPn+)-^j&8oI z@s*!gsXl2o{@i&>2^y3v-##YDb(?#Kl%fht8BXe{mrmT<8K37xF)y8#lD1B4$zz${ z{etgIXpS`@RvPzVaR+I^##IM96b|s(0gYbEcp+<9*51H|)(0dWS-5y|HYZXHPc?qI z%t+H&F~2pTnZv9K^HPv6+tc#X`?wPm8&=oRyHFuCH4#`5<4r_I+$fLGa)~`o$>ZcH zY&0j-s<=`e?n|ehl!6t6|I1zZjSW$Wd;_LQCvyB#OeK^hi}D{kh6pqogqjQp^B+ft zbW$HCOUd%Ps1K~*e=WMtp4$)Te=M)8E|kyqoPG!x`v165MRAo#ME|kC1pJ6USyNpY zkmL~mSX2sB1_b}>@j(fH_W1m$;ACL_&6lOr&GkRx7~)?R9F#If63Sl#Kgl@xf1E$t wf`3(hK>%%HQ1T^YxrHRlcFSzZDG4hQbdn>PqjlA=m)-n^3ppZCDL2mimRiB$uC zymeBN5PnlNfd_o^M(~Z4sE~^L+mkF5wnH?X4y5m@ zZel(RRaKGD5x;^X7&dE<;Y!@;2$nFCit7%qM1=%JQN&a}BXjM*NuUx1tq#kYwmquK z9Z0z;+!>orJH3Lgq}q-^>T}JOWrzBzy5lH1L~kJeIbg+p4Fz4jigR`$5lB)h35Q8<4rrO z-WN#lErQ>1z9Y#0qZ#-FR@{G|PP0#V;46{L>=MD+{-7> z1a=rIpak_hoRW$IDKqk$xBos4I0FP}CEpgp2WsyOapX&A>|ti*V0LyS+m4f}`2B!_ zARftq~QdJo2~ilF;=gonFGZ=g^2JVsOtmK z5%GfF{!!VT47t>(i#&RT3fUly$bOVxtJ@JF`XPF7S|Xi9?hUPE9L0x+f5a0Z7ek7Y zsG`QS==|z4iE4}*ef%A6@(B^f0fMtIf{u=g_J3(f3lS*jHXfIAAl_;cMKD=MF5r8?hNvE< zYCyDZOa$&YY-tpae_~CN8Y2EzX`<*00$x?DQh)SV;D6%e&%pVASN=csfFKRZFI2vI z=mlPKa!-O--+#s&vZOJ@+GHok=3rv@7@-A6${V{XPRT!G?tdaVppX2E+$x}4IXVrV z4Jq{>L=YsJhO9}ToDL!uz=W&`M29~NL;DkKzkf!=01J-VQA45pKR5jgPYi{?0Z3Ou zD*s27-vJZQLIw^WhDfMzFiidvLEw`xsJB#-wYkxpLjQrI|7mb59vtN@beLpte+kBf z%q8j%ZW2Jpy!{!`QPSa^ z^CMbYQDafY;Fdo*F(su_BrLZv6#I`4QKP=Ab9G*2re#~3wBbk1gHReD%S_slc-$r? zBxObu#*a@iS<)E=TI!W7Ld}pRO(CSJiJog$U_0^Vzv+$$Cz4HxNw$hK(NgrqTb;D2 zvya|sw->s3?fXD!D+i%D{I@bDa>5au#u`%^+>|K7 z>go0Y{|rUJEwos7Kd5lYKucLb`G<>_?V`To06c$xrr!-L@`wgf&6lItmkoSB8nD1Y zz$cfce@F3Orr|;4la*3@)g0l{Q;G^-jqjg~Ap?HPK&4!fq=pHSB?4lQi3iPCmnLv3 z&VBqOz>7{6@)qkqQ;c9dDsuRs!UJ)?s3?x{uMcd9k|wbx?_kUu2| zN>fSZ-_ByncWU+dN5q3--@~2}rD;wQ!T%?Mhz1~aPPqkkCC(RB;ii)$qGxA}I#oCP z69Je>IUmj5O??&Yg9QWy0@fIcIncKJ>LOohl>21fq5PK-K`@D$Yrb&t33uwg2UR#p z!T?>9h|iZqn2=i`zcp~i5uGDC@9Pfu#a1rcHmEZoS4&L%U(*y$z(pt`+w>f94D;-= zNV|#=+1`M|p)Q+k%yPwt7;w;vL(ChGC9*5vQ67`$n^aq$C0FcT)_Y@xsfge0fu7DY zTNGS-|0@HE5BhEj(i0*Wjg%x)XCkIw_P&U3h?49hSuq1}mG7FZg24&Z|9cOcg48kN z+xQ5wKQo=663TZ@y3z==G%j%>@}|YShQEMJkmw^AnF8}51^!s@udIdoH&RNYvoOQ{ ziSFM&LH+%!Z5VU4Rds+R-O1d1ybXjSgQ_;;QpP z>`?D^nUsnj4OM0uWC~3)Cm>rD6QGdM2EOBF*D?FKap)R*jhOv2cmDB$oJ#sEarpay z6c?T@tExHIBEi1B^gYrIecx;ItbheXO)Ru{R|~~ggP?lM*0rq|QpD%Bb`gkoka|mv zuNP?+^UC2n)Q=6;`|okwWZs+^@X!xWo+W0iKYW1SoU!6PJ!9Z%II>^-0Rg?!O~Y*< zncnXkIJ3L%x}Ikv0DVi)byS?ib2lVK%PI1!;%1jVw7a{hu8!E-Vt`nmxX;0R^Vf_G z??R6l9$>gSnf$X4LixWjFgtDQ8IfTEAlTZ$H|{Cn*qG*Rq~^IBrzstP_jE z;F0hyxQK~C;ib5Qgl?1NRRP<7&p*8hL7%}z4DXY@*kJAv}2X+}yA&m?cnE&|KWD06C^S-sY)$dz-QHD&mZjFr_; z%5MVBC5lZ)2U*kx&FBa|%Z8h0i6-Ik4ef>fKD}Wg+VjJ%rmG7WSk;9)x{qf?a+Y z>1k?=*)i<&1hXU`AB5pj6(XSL?mkJpH1X}RnNQ(?)+UUw;N+{@r5t*Huc+h3Wky|P zPAai}@`a7!YduWPMN#nfqvwhFHVw+@gCF4{XTR)ju$=jIqZ=b}$F3)rtrnrLt7p*B zm>Nyj5!ZouT>V&a_li6nLwccUc*3cG)oaoIZp(N}^^vQg{`#JV=t|zk(53mBws*tr zK@LMDkDy<7k?v|UU+B}Ca0@i7%}|<(RQw2^;nlsg2+jW^@)5mu8X~Ha9Uzod&JhloOu3m~O@R)e!(`5Q? zmk&?BP8yrCFtDSUH!iQM(@4lN3~JkQGF4`jejV(-#sh^ZaT#8m<1H}KkAsLaI*m+O zsu8+@N8m-Bl#(ojO_NO|ZVRSO;aj)CXK#%iAX96(b1?sO*) z==)5UDzMa2Xa9J+&FOVOxw^<$cyR3R1g>ag3R-%%gpFa8p7I9IxXf{QhdPNA6DcyK ze{$MDE&C(kfRtKv$Ax`IRuhsFwtD@R!SLkJ!DWaNmu1wbBT6|X#ej$gU(@;O2Td-+ zI-p$(ZTa0g$WF<4UDHL2fFIm6N%VGW`0<^!60085AeZNuDviWg{Cp^}h1wBxMHVwH z!@TdbYvQwQ=Lkx|=(1+|;6ue48!dsIpWq`D*cxMHcOwk}Lp5Gm#G`$>j$L9kSmV}) zPTC!hN3ROM#1n2$GumWlj0>L}$3DnuPI}BEA7=y@~DHnFb~ny`1Ml~#JYL%8shW}0M2qgI|DF6Eq^$q<8}zzmD*_XT^X+xH8f zVF4FeuNB9~iJPSZhFS&VrlA(<=U#>04{3-IAqs~cb>UH^K6P~39>w?}{kFT5)F<4R zIx4K!aNIv}aw)&23_&*8C{EJT@kGx|q7Ax{>U7!7bJ8tE2;Q=e+E{-tsJY~u7K-(_ z$vY1UaJJ6n$u*RoPA7PlzY|;SfrhtRP~gy&a|A3=x_<6pbXWIkwmJ~ZYn~Lo_C9RPupcCf_bOx=3`J=5(ljtUv))xMgEQ0Bt0Ha zf#=vEU-|3i&@6(8UrK|`QPEk^tJnO^N;J8ZnTA)vepI7EMb@+v{9trrP6hrPQu)T| z;Uj|eDCpfh~A4)vs{hl#7e01Ptn=IuUs9|S7B?OSB zPbwszyh@+RC+EjcKFCmKiEIa6m1xzicWt4_7+025krN+q+JZkq=hX)c)R`;HZp8Zt zmoVQv)u%~tyQG)z4;+(G3vz#hz+Rl`DR9Wv*J}kbL z4sB`bZI%Hq?NWS7dj zl{Yt>U!FOT&5ZHS-K6{`*Ebp!e<2@to_w&e`xXdkUHn^W^NcUfyx%*Akol7v=#v}D zkU%!X{tCZ>=gfg+vk!{`AaAIUh(Ro7jiCmGlzH1MSbqPln(R5B| z&eMibbnlEH6U;ssc*5DA(#;#0z48Obk%k`du-tgsj!g(d&RmkAOnt`mar@EGd2}5M z+v~1%WufPj`?&qC&m>cybY1+`FxQ=|)WE7;5HA3cy3<*}idYmjDr z-&?vN^kHi^&k#1OdQ8Iy<6)59vvN}gzufazpzxWAW6?|;EIDu1l zxA#i_ux+sJj`j!-;#c)=`L=>6=6C_-rhW>6vq5f{pHwX~Kwmjj^0gUH(J7;4ndSmS zTiU`S(b`S)%c!2s1WX9=Sv0)SXJEIe3m7)Ibl%RpSeVE6QTRRL20|UC z;jQ{qC+)mkD>^h=j~Jl?gg zA&neuf##1pHpR~PBF)!LISskj!Z=Osp4lt4M$d1Lu&z65eS>Z&f9r&O<5Zz<{A~2w zN>-2Pr|KzDEL|JcN*fc(=xGv9eMW>tV71q1Q{^mpV9O_J>3xEuMDF=HPW9m!oVW{v zhak1HsZj722_^XaBkpBvybGu=__O7Vy4C%*c-g=`XG5NN*)0Ogz;k-^7KCAF-%a-9W zLV$QH*{5F@yEln{?UO2kl2 ze9>7kJX=JgJ;QXna#87d5+avEU1*p`yON(VzDeCPW8kqZr)Q{5pYvjg!7%HVxqUS5 zo@sJ7$4?1b=;$^pG=a|1^b$E*l8|Pq&^0_s(4<9^Ww#R0PqAwEvU&8#nZt*>Cvq4lX#We}^CR{3t zuAaOTQv1gnO|nhD*R4d3kS#;u(a}5Z0($ZI@aY*#S9r_r`|R#I8@l%H`&BS;n_Z_a zKkVfjvP9bp*5F6|G$o49*W$uPA9dj+UY0V+JPw14>_~1-lGP95MxVX1y_3b_J>mO0 z<9tWWjL0r~jqA>|0NU2YGd+_%_&=r^O$o@WWb5xFZ;y}b$+IVIUEw#2bUpkWjJxkP1uC#7668CkTCfyZmPUi)(gkBfzPOi6HLG@f( zfC4L0u*QZU&{BUeWscN_{>NVzk}C%&x7Mmsc|%mnbG2r!-x?B4pAjUIc9TN}ejAAC z3h8F2-CXaXcRWw!>HAUj<)|sTaFz3VLF}EmZtjNAR*Mf0lJ!fnC2A2qef75_{HYv+ zac=D`POE})P)20TF{650#tm;kb_;u#{kh!%)0=0}T946IjP?cPC4RAi3is4ZRo&>b z90RA!o{Q|m<$+!+#C;&Smp{2I~K{yarH!5ur2^EA21x7bX}?8+3W zPy#<6N}TPF9Q#9;{fjmT5(d)-R1Lqd{-O;^!9=k1;g;CmUqrC*Z`uG|>m2?s+F%w; z8<4wPkU0G@;$L(~-f!9fj{Y8;vHdr%D`^RyDB|1P;@Sd zm_3ow?HI!Q%PuOg++bmN-@n+6_;j!v01SG@h=19I4wfsN2i5(Tno@FLHz;8-GDH7w zyO80)a{r(E|NrBDe>U{V@O|~IY|rC#tah!+n<}GlJ4+O}SMRQ)fN${p3<*~(b^}rU zn%PAJyf=f#sX5)5>pI6Rp2O93Iquz)*%!rzT}77!k;at{8hni$-zW%^lUq}$=k`9;b-$ATO4XcX+-l3Oz z6*)yZ1z5ymsxqPOGqfPH7?G=XI}Sh&(-FF`^XVO`?={Dwb`y+W%eCy75p{ERUg-be5w( zKl-Q`vZ)6-%=ytDge*%9$j*^mXm=;V>1R^pHO8_C!wc9^iw)dV8w;0H8x*fxsP`lj2XhO{P59k5QFq+{$?rdJ1vKZ7nfDG?bVx`n2L3KNg?+l*d2wZECr5DKZ^)m^!gHx}!-y^ckx8xlW z^aRg!<=oRky*!dZqA#f61}Or9Qe$BNf}N4qsZ?a^=b1y0@j5~z+;*GrK_8ylgfz{= z5e;sSnQEGb_}eUPTmJ9UB&|g|Ws?+isSYXiZLN(3Kc?@dy}xFmx; zLzxsw=Ev@3oE&oui$^nz%w`;}C+}Pv6Blj}lv>Xc+0U$#N=fq6(u&5tv+%V~c-lNi zW^7t}lsk|mC)%(Wo#POZC9T0;L~VaUWxE;HJo`i;Jq!9M0F=M(M{|+{W!;OIfnMu% zoi5Y36ouemN?>wNOYQsG-y)cHq8PD42MmJQ>3gb}4$RYpb`0ewxFaOlZF8n2#_+;8+xomKQR@jnN|`8W zaFUAe8<4)FL6=~BO*(QlrphYiH35WNvR=@L-Sa6EJA$58uj#Ih8P}wy=V=dW?Y&jS z+1stA$0`!BMq|(|aS|aGS)zK|F0M4!?jy>)m&TKOT0O57%Ew9_XPpWn`09KlPGwx_ zYFFlcJcPHWNPVWmk`{SSuYGmU0B8?CGmEhMaxcyFO586R913JzP5G04Nsmi zi*U4bUBJp*rnmCx&LZzlz0svjZq{#B+Y4`uN^1ow$*48UM`>cS$=m+II|~IE4R?|{ zNaRP;&X6WCPG~$nq;Fdt*pcpFDiUi zCI$#h9!DP+SZ8<5G%Clfzh!2psqqmp9@!@kZ=>5h#eK?99o%i89+A*pi17%M&mqv; zAbXYUl+qR9NyE?a_8y<=m9WFqp(ow_@V?D$0v&6OH?BL0RtL`&`lF<;mo50w`7VBk ztH7O}s@{%0(s+e3R^e(cdl*A$HHEo_9JJv&bPk)b!cpNdOmic2|* zzQ>c@db?WSw=M3IS5C*r`pBRKoha>yn~^f&H^ligCXl@RZuTzHOM4*8^9@L(yhi?3hQ^D+0{1bPr?EttG6d!1R=8n2Ei*di5GG(3ct)ePNI4t3X4f? z|E?_D@u90Wzw?r%cm7tKb*?4$OdpG;E?DkrD8QM1)M%mXa znb*_cBojL-08B8OJ@9WizUfr_~KjgYhQrn;fc?Afb5=I;_CJ;)K;UzUznn?t*LwJ+Z#Td`rUnewZ33d65|?jYXNE2?2N0tk@bp3LZio0V5- zKPKJxb#HAqox$*cV{*9oxOOX~O9(+N@nNFN)Az^fFjnL=O1 zJQqC$E<;~LE*A0XR1X6tFWa*S+fFM+Hhia;om5Fi69u0uttmQ?+|U5gAf*j6olT6x zEqW>UL>+blf0mfF(#GukJqFq^OBymR8o|JgUwdne7N(xF`0_o5KoAPAp^)kN6=a47 zEa&6vxd}&#l0X@vv$Q`tABS~cTw20D>Mk9kzR8U(4?ObNVmQ0ECY#YC6`wHxHZ*BZ z#ogC=*{>V8+W8E!zr_zZqgx??s2KesX0-yi>@uvMrCV+xqjg)x_dJlXy)h za`+Cx5;sG=a#KLhRBb#KW_<6sjNb~!a~-4fSNNGd+L?)y0&VsRzbxkY%ITt&jsspz z$zg~E#WK#&uJlUMak_HzCM5Rgau1We`>hdr++ye)Umg!ofnt(#L*60o3Opf@nI_v| z6m2>?OQ?Bm^Ld_a6|(G6fdfQ>$rUhWx_!fo;fhwnPq`uh@@MrMnQoxl zZ+;h7S9N5ekBmN>ve*JX!wn$f&hFYz3N`638&~urg=rp>N&(xUZ%OaehP!Vd?KftE>52I@KJSn zMN+18ie0R7Oae&fTRg!1ZdZ~ltMlfQouQE4-iNksx46F22diD|v?alSpR?+!3#-MM z{YEcWc&mfGUT)Ya%AY@pFg{g*u3@JUlk_U~>B)~t*4P)#ALc!di}5O{?v$f7bUCAv zm0k5t6Fh6~*iCgdY`LbeDT?rb2%L*e<1f0*1iY>K3$=V+=(5L&S(>P}J~J}3$*cg< z5iiQ?%UQkyfg$xx%#3^!FWV*3%k8jTudj^laJsgp>Pa!)5|ENO0&d!DXUD};X@!89 z*_N92u6=2L4I8ddGI^@Nna5k)rLf9zcG-77h9^&db20PHc49TH^%cb{x>S8wa zcGrvDv+LW5X#)XT)wWQle!54?WBfpksh>-bS7i|&kBw~cT88*zyVp>V0hifM^lQv% z8JSn>nSP`|=jA~cpPiINN8EZ9>QOS8e%f&TyQ~U&T)XzDR|JkPrDyncDIrfn=E}S?p-Oj)(=OSp2H<^6nkwMv{%g!Lu>aW8 z<@Oj*>O7tFSXjb;HB@=Vge<- zT2rna)?^DX{M%u{9d#l7hMh-vy7Fmr`JHxt8B(j2>_Rp+79E|H5gFenpTibLX122j zA4LPR1oV@tmWJUAKjwmO1j`N7)iZ$>4HG5RwuqC1+l&@n(o+ndkSh4m8FlWPH+OO8 zeHfc>9EXZIBsXTv))cK8w&G^;JM^d84OV}7VRg$j!;EL#Y-(_5SDLHZudMg;G1PlZ zwP@yes1FgQdGF>pNo8a-j!l1kub5b>O%kti4AnX6$k3GG!@p z5|`I^6X)ITkb0Q%sn_XT0bg{+K|SYfO|jm`l13Tv`d}X(DF>U<%T>T95J4nRwz0v+ zwdt4L$)chXb~cwM)%S3&k>6!4m&Ii^Y;NkKU2(sLbUHk;+iEV z@!f4ZXM`!mQIDA$qi1ZwA8sVr81Fa|yt4I{)V0}}i(U!1^Fg)H0wc2%U#u(T+pCRu z5Fwd2F_~U>qzGw}NbMT>XY|{<#p_4TlJQzME3}3mB$Ih?6M65iiyOvOz&VjyChJ#U z=Z<8|2v8kb8+l#KGJ{5fhY4BdMKe-EEvAymX3=0uG*g+^_MiYrWSqYK^7*mGdHU(n zZgOtKXwSUAASwg@p80;=D8a5EjHoybflgaJSQCb$b^dlK%26XgZkDFX?ymWp(nn>` z)EEW;pjtv=aD3Nkg?Am9y>cvS&Isl&#fGxZllp@q}5@EpVJ7=jh-jHPWvT^{u|Jj z?Mya2K2br7l!{3tKCWE~f#+D(1Sy5;V=RmJ!Ph%ExMuV$-s&dvP(~vSU+FevwuZHc z-akZ`tk`=ul^c&;n}pCJz)!+fX2N0lo#(S>xP7xb#hHLr*W$V`Wp9rb0FCIPHPWvE z;wI2m#yPU=OYSm0*H78l75rGe6<5gjKL2cb`cvV909((^0gGG~L;59bG0&`PsfpnT zN`^U1qSYO+VB%+6cYDZd`+Sv8y@yHPI_=O^#;iFB2Z6Q}Y+~|YC}Ji5wB3P5WzIsA z~HpQaj4e`eu&t?r}|5j|}ManQsB)(^KNY zzH~<|nS}L^&J-M|J_$|L2{VK{SqV55(NWTqs`8u0gPmr$E;a=0y%zZ%$awZPM+#*!OG)s4-X0?@V>9v9?Qq8ESVp6mp!Iba4A%rD9fF; zqlEAx57(rz%k1xqA;&CmFHfS%tJ7Manr>s?>&jmXCXVfS&bi9F0(@_4s#(zpPWnH- zp2n4Iv(N1#!>pN3e?DyS9Ix*A>Hc)MuQ!kQizcIgI}o<~mNcGcfWvtgZh@opgso^3 z%eSN{uQA}EGqUa-XV(ewTxiZwS(^S_**3Ms-epX8taPn$93>KB ztNlnNrXZW%*rK-`fZtJYQeS`(LqQ#cA62ymMZ7#~L@P{*=tC>3_4boQqJMDqkJ7G+ zos6ZF^}HsT56TsXEwY2x{LiVsB(LR`*(E04ot_{gx8dz?aOD*H0`I5rS$wT#hBUik z#%488s;ab@oJ5Dd^KK$k<^Wh{G<)PDo@eM{tiPLdU)1N2X6Og3y7ou-GXh60wCmuX znp}o#TO`u`1z)^@`&f`@GBvw9J{t<8=XaEnA?3f7(Z;`1>`#FDjKG`S;cTpwTthP7tQV5LRaVvnRl^%fDBTEWXbIg*iW_NhdDbDpvBTvJV z&2~=;>Xjh`)BZA;=$Bd1(_J5I;R^;0`0(oP(P5CYntGlbxBQgs%uMw87(eO~o`)?dcmeKPjdqe&|X2`8*zb~>|Ok%*YxGKhPd5^o!R!4Ymq6s z`fc8ux@OM%HtSGvrpuvASBGv^&xIjrRclGeW;Gs3j#nGx5i?smcg-!iO}-iW;%b!7 zf~;$5MEcj2CAkWcNxgVnR~_m+^j=PF)~0S%Vk*>AQxOtr?{D=KK~UEx^R88=Ux!0n zJHB%XL%yi-KVJf0;>W5~|PdVu)9%gsHMnqwKpl>;X-0mHpeQRVMA%~yBV(r`A zM9cP7`JZI(T#>vm>i>2tJ|<(K^L21|Ha69-hSsfbCD@BEI$l07c&{SLGJ zsoS@!6uxKAS+JcF_z(r%856;N+I(BQF5Rj3dpzo@ z$ibJ%TP1M`Fx7w#o{Rr4eox32KG0W#*0a46VY*?K=Uj?OI)Al@aScCK&8ym{;(o$1`&`svDiRv3K zq`63y-6r{E*x1N?;U6>7M@2-Act`U?AYL%qm?Y-;5scj zq`&Eejf$pd>><55Ecp<`ks~M~*SMEO$^mP8GxXH($s|?YsH93ylYOpzl1Ad4h-&0u ziHt1*N~QaUY3QSSitlQG%7vG%VmB^sL8Z06WwW)ekmkLKW^OEAR!@iVBHT*|_n0c> z`1uRT8##U`3sb3!;7~QjmGveQy0+cquv)3~g08iEa^(r=W~UjI2TdfDGRJ`ST zox9mN?hI7D{K;V)?NLt7Wntz;;APR%CGYUEDcb3sW?0O1=p~cnj+Ue?drmjs6E3~E*!H-ed*inr=^)g*m+EALV6*kz|N_+Az z2%~)xWZ5obXe_;ZHDL4svIEd;XHiiXj144w&Nd2%1dp@+BE8c@u^+3>RdU%0*4V)M}7Q`8F_@ zKFJzMLLGgh`#X=7)-kvX*N?{rjG>Qp(jCSKz@NxJ3GhS@DD@4S`lE~Fc=%zT7afEx zX{E1rfx2?8J_F|c+mXmfuyVi3MhO@SvA-1Ou6Mi540_0{`#okaA07giJ^Pp+Yzlo4 z`EsqgF8vuy2~T7)nk1i-^V6!qfvczHnqpPL%>u!P>I|hCjR~z1J!_yesiMf5E8oho zEQaUv5z68bumE?;?m};O`&x2qRnG<#TS^3P6L+|h<;e>o**e#0d4hj1K$I-rC~DH zmx|M-g!h{AaQHjhi@RY7hirq$*-mHYqbwO>}dpqQgGiY5j^oJGi z5ZkZ*oSJi!)z^4JUJEokn%g&h&3r&SxO9t1mphzw00T?54YV>Ls-PsL)s=WvtRR$t6PXkN;NNaW0Vl)W&= z-TTEOVaE-m!wJ-B@pcY&y*pYTxIQX$j7N#)4Pr_YL~TN7+79t6D-z|YRIpwsIdPUv z6g&OV8tS5>G+;Te{?fhBh>;Af^j!H-D!M}y7PpMwGtRVrp4vIw z!#1HN8a$`u!^OYCGBL!Qi52*paNVU*FBIK=qoHI&ld-@hgMZk-T2D<`GZkVumh%o} zTb$@DJGtgQG<%L~kf<e+}-L%7%oOi^A|8TatNa-kT3w#Iru0E9&_o^X5I_Ib<2Z(K*Fr5OdeWBRLfazT@$}W-C^J}ZD#Ot`4(7_~W8+h7## z^Ez^ILZj$3u<C(GmJ*U9KPIqv54Q5(}1kCAJ8J}$k z8);?nDPjROUl+?`Htfz@b8Ph481Tx=tg0)$E6v|OGvFl_G^O|XRxbz8cm=;K%_X0l zO@4d~YA9P=-qU^!Z$!wU^R{PHI~Wg zuu-4;&s{pqeeLeeO$KLSHJ0FCIj6z!uk5^6p}QFk z45aUyA^9%K5v+>1u#eoyKooXn6gx9+MrE{T%9!76m(R!2ydQ$L;h0S|Sn8xlqq!Mf z+1d5{%tyt$(M%FIl}?tDlNwW~ChQGY+;-?Kux|IfSB{JsqKs@abGq%TPLs0*CAmg;ynIvsP)YHxa^_vXK$?8(k+ctzP>3Z51xe^DT>(|a1k9omY2XDP+& z;U+U05xkgG@#YO|@9%d3a3xd|wWc+RB{wu&7GdVq^phi^@@6aVP51?PVl6haEJqD; zy>y|4oj&5LDb?j&cwtIp_uewqUhK+qs4pI0XUYnctn5DrpOq&-CIBJhYi-;+eAj=Z z86VRw$89|!Oy9kxbDO%D76-=Msi|#vm|wi!C{DhKxMrE?IJ>jqK88dY%5k{(oImq$ zR+4<0@wf?k)B}8I-!bb<%FeFsE?QcP?AndfoSSt|Z?hrlt8I>>F6)PlKY>)BP)I(u zeJ~$>Qo0=58I^IW!ym1$uVW{0X?w&kwQVy!%Eb0*=!Q<-Y!3}1ZF%b)$A(z7bT{Vv z7&olml~@j{;U<>Qy^V9)S7GJ%drghv;sO!^3Qh3%HTHR%TOE#X2(q3(vRCDq?lh=6 zMb)8Kx_{dW^|6P{XQ#+Nt8TR%kk?RGps3JpNsA3O8t$N0p9QSoTh&d|uXtE3=i!Am zUWO?jE9q`KH@4Q2H-K++o^ld}^=4O#*Zr4w{FUL#f*GLscS^?{&Zg)AZV zipvbmD%ZHUxg=Fm;F7EF0w8WWoCPV<)o|jJP~g%@mN+tvWBvJRBRh+m-R2Hc7ttlr zKv%3+QWyt9srFphND#^XLyn;Tl2cRgi+!ipk4=zewRdOR1l|CGWf#@+WKJcl0LotI zlh-LU)J)kR+_DInhAaYsqqKNt%?*!_eO9y#IBEg>Rm99BcJ!WSrG40Q->@2jXL>|0olLq781ox_rNL zd20Px_;w(zS)4461>cmzO}zdcl7Nwjy+Qs7t>>}E1VI+7SFPC&Ib}#QVM|gJkrs1- z9JT7!=;69arCv9>?2Aoi`Cjxzbk(5T{c-)5Cy6BydR4eqoE`1@$KZk zI6snO7N_|noN?TL!q4Tdei||zpSbXHP}D@#RCCzQ>ctm1^YHZ0Z@T7>swyn zFXURvk%5z{Uk5Fx`gUw~o%Aj|U5Ry0903?sW5hdx7zRt%O_(pSGJPJOzh-Az%)H*c zpxNathfj{_0QRez(4;8aThf0nVKsKvmICbEXGj$~ybi&o3TJ6@Nwv4{_1WbsfY~;* z*a972%ySE^GI||E@o9C#;h1&V%T@c=Yfkc)pxuXuD9eVcNmpw z?+SIu2C?i}2!@{fwpu_wXY*lt>BB&Gi?jUk=(!t-s;;92i|Y)+wf8sOL#cVM)g+_R z>;&pxavb(Bpst>E=h)dLOc%R#8v(P-e4za;wqq|k^{DPLt7ZaS%H?B=@*7YlI}Hgi z(?XNg!uSrYcuYGxh3^=@f8c^$-&0|VkyIXZv~3rSZ9n|r;}KebFD6B{RxdRiq+NIA zC*TCM@dR=-Me6V#*5&E~sF~)??0qGKmu$S&Fog{3y5gP zwWvYZFd%Ad=#AH5u{^) zLhBk)3tVApB3JwGO<5Z^_Ud!fGaYMyyPp;BT15!$*1n=g>&N$fAqo_}_%|9e9*-0uy=5W(N*{wleJlmN@M&;0ez9`S!~ zD2DpIp*TQT9P_V|+dxvVTu%A(zh2)G3-NnHu^=&NAdUJ&2Td*6H za%1Df{<7=W@5e_( zW$^#C?yne*AN*>S9Uo85I0XHdldNIBKvA==qR{?z9S`;1?;X2tt~N1U{2TC}l$g9| JmGGCq{{vB#WXu2n diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy3.png b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy3.png deleted file mode 100644 index af0482bbdf370a7212a33f8b112b9122ef0abc40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8670 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 I7dP_%Kev*5_5c6? diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy3@2x.png b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy3@2x.png deleted file mode 100644 index 7d5fd2c6409cadd432d37fca7bb7111f7f6495c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15188 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 diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy4.png b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy4.png deleted file mode 100644 index 920530bd0d2dab8bcc6942529ee29fe41326be67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8799 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

    g@fKqda(=kdY_Cp!?}8RPyD0lrVowruPqV6Z?UF zFfcEhceK$S^QD}!!`2OdS{L_~6&LBx)R3}5`?9~A@`4Sc`|dYqE*37mw|$ttTYHpu z4-di_*=eb#t-nNB@CV^dv{tVlY)?MPu+U^c|9WZemU=C~SlFWT#fMaxWpT)fcth6! z*suiCF_&20X67^E#1qUqJJ9?=a>#3#80)TEQL4Uu`%fjVZ?g-Si21MVKwNy^(G)!G zGljlEPEtR7Cv*OV&oH7syRmMO=IdzEM1a>@ITJX#)+~T#zq}Kqry8|}d#K^kzmK=W zfv0#s#JkOxjbWJN>IV$##)59TI7f8&o!&S)@((%=K_8K5z1*1js>$4>DJSh=@(7~$ zN-g5z7wp(aD{k?k*+V?mrkDHRT|@3N(s#cAwEr1N&O$QQmb$w@x*^>nm&lU4K-Cf4 zRUffpQF(7-)yYwztcu@JnE&=CT%j#a5Pn0%5acjUWQI3!D_^lj-3Z`8(tGQcJPAmz z*1dPBy+JjI_SksMD|LUSvG}yJvGxN#PPJc&IZ@ted}s*1xNn$_?T6fj3fT*bWMq1C)eIRio7UtXQ6{hGY3I7?NR5LqN5}{0pj; z)8aY9bFid)(4d%S)e#-+TRWKcezs_+LLJo<5Xlbwn4o0Q!~%Ftb!+R>E4^^TwFxqB zaq7va76oIkcvKo^)Yq*Yt*!oSU@*$+=9rCHB;shN+RprIa*)9Mn~)Vw2d>8%w@{o? z4cCtVqh%!!vCLy{Pjba$3V3D|a1sZaC)FGKb>0=H<5CaH3|bF0wj6VkG3m~S(TtXk z#!#I?O|VwyoED)@b?HeztnY0ia-LS>j^Dr>lU6fe0ciPFy_UrTPKX!@kIliGy#gUL z6#XPh0eEA|9=YIdFwYVvgruSHxmwp$82c3YlQF)@WcF3Yu;*zrnm6V-|FuyMcLA1L zbrm$Wx5E9hH92SP>?`7~y3p?y>!2+5S^V$BYbsfp8B|fsV&>4NGF%W{E<%0#vg~d8 zO@&yId{6W3tkbpk0S?zjns`-)kzLDPj_$RvuYLyevcTB`Gw7H++yI-Fbrs(Xs*cHVDSf`@Cr}$v1kiVw|E9nXYYaCvY-nEnmNx1+GQMF`g0nlR*)?PG%9THx8QYw(=y#~| z53>5LjKe_ov+-;huB4lPZts3=L8y&Tjv48)jX{2L(v;toGHm0u-b%f{dn3a1mH%{H}8+n(@+lIrB^T!r?yPSz57F|@BBN2G!ubL|Le8kgsbDOU{u z*bd9fwQalV3>ve{rC+#~TeNRZGg?Qb;5Al)X1EGxyr=$U#D1H7?zm}Rb;g;S#fctQ z=aWAhJ7UU<|A7iCX_&~L!!5HM` zbW-Or!)|ckwZcF)JIyNJx~SB^nI3Us6>nK|A5}r2Pfl~^fXB3P`!>Kp z0*!gS7Q(`~v^Rh7oPaV`^+H(F#cLV`s~y>XWHa%FG?WI)QEtuwB$~DMCQVISmtA!x zZlb+&^$v3SjvCwp%dU5kG#>4}gp^u^!;x43Ey#U-acn%pT`*Xlq*+DtZ zh=A9gjt`9uUHmfa00O0)Yl4N5{-iL3q)#oZ+bpWEPiad6XQRROtFGK=uBqn}8TGz5_Bb{%7irm}I)&o2o zGkSXTYnx>GwJE~uifyy>`HDJ3C& z)ZIQ1bd6%9f1=)m_pWE;FUK0HkhFI;jW|wn-OSNS|$rjiO(-ga&*3y+KyVJ{X;e7 zid>KjSV35GgZ}uA`NvE1_oUYJn2NbTqPcnL#LjU)+u*dPPj_G63#2bv4?6H)Y38JT zQ8RHi`vF?xln;1#WZtcwq2^X`1ip=XWr(&v*p=*eeLvYTt71_rV%P&GyO}}E$2~Ex z&u^%;pnKP7Y416+`fBMOy2h3R>)?~Y2p{5}Ull|z^<1sGZd);j2H`%xn{SdfqxX&h zswLHr_@251$?$axa0Um~?@5hF=m(vrvcaNEc$Q0LqfY`Ih9BZi91#V`H{wI`F*6A| zmUQmQ#%O`*oZ-?}umGjXBQ`Ei1Bk#Zhl$_PCwXAa{r)>#W*z<=>ECSNH882?Och*1Otp0zanRHldas|4}E9l1&yFbj%K`w)MK18=)~#QQJRkLmFXhj4oj zfv_MFmKp-?If#4ot;~Asw%~G8E7lh&r<>+%EKe*L53S|{NUM2<1s!VMl>qZCLbx9- zR>NkymOULu0m>viKL>wF7cT3L#TgKvH*!0jC&bBrKW>-}1_m=Pp=Yq6+up@eC?0XA zsD}fsW?ShU2Mt#U-NYx%vV##hvtc<{<)mg5dBd`2ax{zPcCqcDJg>9o8Qr04)dSNhV%v2B{-1*2?->dfPJO>s+i#tjt z?VrnWS&>K}o3(rGx(xxNj!o}HrTLy^U6V%iYsSU5m3puhG;|GeY?q0JH560_OyFZZTKK*++yvn+<%DwND*}k#9s1={$&jcs`_Q>MB z5OM2~mIiz_zsZB!XCZLfF|roa$eOGHi`c+(pMEJGev%s<8@Yu%b((q;-R6qrfXv{J zW?K1xFm={s*HF-eg}+CE{wE_F*`@T0y0q_+Dl3g=1@N${(Ye()=B0@Uf&Mj(hW9Hr zO^krC(Z}}<{W=8(H+kjCPrrev(ql&au`V{B2Mg?e8S{i??gHyyZZu*wk7OuCW?d-i zag!;&O*=T^s%pn zlGOzCybtdZjiJnZ4C$I4IXPwV*kX;zTrLd{31=rK4C>4nADS3};bWr}K=YvtQPFB| z9Z6rZzB-vIT8VK;f3wT22Np^#^I8HM91}Z>ot|IoV71No$xrV4O}vTmYba~}{=r@Y zNMWz&ih@puj_E*}bPx74Q}66#Y{DZx>)@fo9lzCC;WZR_{`-Bk){T&fFH+;Fa`yAH zEyobz-%r@)=7F}nJgaR&WBx{J7uF5#6C@M0sJmILq;4uL^e&!Qa1~zMh*D!WUwe6g zt6kl6qmwUVpp!Q_YPc2N6^hXoDj!lC){l+dxENhjK_n(F7R&s}Jt-@OvQ3PSi>#u( z*vOfAMiq@gUGWaBVWr;t5ms;~naS?_Nt)4Ft>Jme^IErOU2ecI7V;l9UxTtvqU11F zA80H_x)?q5+T65T^J9m(IPzJ5$zREtNP43jemzM~W8LVzo%0x_(K^!@3s1BvpmGpW zqIJee@c}Js3$|$^P5@iiZ)yL+=6pPzgKRT>iKumI+a70a=O{+|!@v5X$6&tS0*zv~ zOYY@+#ug;VNY;CAn8KJoQOD9~O{_3+ruYRvc}T}$*6$zGEV^oRG-dE%t}l?UUuW>c zI~`QJmb+t9;P8sp%SVFvqr^;bmU)XHGQ{eE1!@qI0I?xSr#N_eyWlg*0M~7>>rJ=32Doqb1F%Z5K z6Y(J%mY2_mi-!1y3IS6-!MEBY6_xsybnh1z444{7iK~qe7bodMMg7%}pVR0zc9#qV z#lR~`vaHj$i|y_lq!w!ZQ_e~*uX*^jH&&OXX?dUKaomC;F*GfR{UM_XISl2?F?{4k zrY1XuEu)Ga7}?nQzNCQVtzVH#)BXmiUW?*S4YhJ6j7xn#X23sPJ~gENQT6B4_YwIl zdx1#o@})dri_kN0Za4})5I7y`IcXf_Z(CqBh*Zgu6!08)Q*b2y@$(MT9k>Sf zfmUUHJ5NMZX_}5OC=Q+bjSq>nhxb%ZD#A3fEx3m?%BO>3*Wy4*#_n%Dhp)0#?iUSh zz2wVN36SnS!9SUDK#jkD>`(cix1C{{0FYm}_xvg|YOt*pOM&iCBHY`xl?_D;= zF}s`P`d`}I8Q1(iWxV{sZNbo;`q(4wZuIUFZ2tB7QJ9kMBV`wpIqYwZuZQiAVz;sO zZu4DH^iL|gxn+m-S%1vn$#xTY3f1+Rcf3)n*PH8Y9YdKD8}XCh?{)0@_)VMPCeJ-V zHXZdc0OM)9)Vgy|yGq-e-Vmp)TS`4^uv63H^MW9jW{n-_g=k!2`RRT>F!_0BIKRxr zK8OC(F`J9sIi5KgXd)*7>{fwVeWG)uqNhg%I__j<^)0LMvFx}S)r=h!?KY8M*YocB zmFCyLP>Y><58U|tU9khu=(Ro6BV{(EGanjO@!mPHeMi0OU6QOqGZ zKt$x1XWTnC$FfIhJ{Hc4QPu(ty!x0IA)P{O9!5PcETfmdci72I+S)}1zQ|tn-W5rZ z7wWj@)^rb!4jsDz;E7=gE&bG-JQUp>svwJ-T{$B?&8bt9${!Y5;|Be+EN@^`*I>Nf1w%O^LE;{1b({+L@IeY`5+gi(?oZtrjx zbBU62_8Ho_SfphGk?{^R^2l36akM;G(cwF z^cR^r=AxkE`tx*YZGQBomiD&HYgrU8UAN;}3Y*%xm#Hy3_0350<^*O^;em zrbIwNp_ zO!~#CWw(=zRg^mRMk|3!J^*s(ME#!pIZQzOZ!h(FvjT$CJIyryvQ3WI`wu2M0;}}E zZ<#K2=iXZXL~JP+T&R3}xmA2hm1uuznTegb>@`wgB$}GMNTPHu^~)>#H2K%6G?6}j z$+<{!t&yE*e53Lyz0^s5h4kbO(NlGZb|>oWgeHf_Xs3%wzPF^l)U^z|M8XAiW)D=o|}F8e*n{a BGsOS^ diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy5.png b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy5.png deleted file mode 100644 index 0a07eeaed8c2363e574e64d62f5e7d53a3eb5c83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9045 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 JR*QcO`d`AZ2(kbG diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy6.png b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy6.png deleted file mode 100644 index 67f0d27ac35265e683e663423913530ced1745f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9885 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 diff --git a/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy6@2x.png b/10-regular-expressions-javascript/6-regexp-greedy-and-lazy/witch_lazy6@2x.png deleted file mode 100644 index e7eb1aa0efa99dfdf64deaa32573cde896b151cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17631 zcmeIab#NR(vL`IE1-4kSEM|+@VrG^sW@ct)CX1PwnOU-!X~b-?#XKX{H{RWQ_jdpP z;^Hn|L`6@>M0I9WW>(fOv$HzlhnzSf0uBNM1O%d_goq*p1hfSBz8UT#_-X>Z9RU7; zbW#)-f~c9sJBEM|fRGdsRCb3v&xZHL5M6t(^fF~meBS*W=ARcHNK;VR6Bq@8Y$Kql ztc@C>CZG(&qU;FfkD>|N9jfq9`{A05xeQ%ML=+fKLS01!HI7*W1J}+nCS%(1te0$@ zaFKH{CIfJ~e|fr-zvj^jrM*;6v2A6h{v-F~DqbvAOb@Zq<2m z29;I-0_JZcl7g9)6NTp~kcETN7LtG`795ZJrKR_TiXi?A&k(sUrs6C4T+81h28;N@c=J| zO&ZjOguUQo6YeDI(e}t-+gE*J3Izj3V`bfQu5&4fP{# zmwqBnpA-CyBaS;8Hl(K_6Fmwuz0c*UP_6i0{f%Lbt3i6-( z;bC3{X$X>!|IiUc00g+>2mc_o5>kJ1o{|YgIAfRqd;DA}wJ96S@H$15wq!y(-A2d} zZ`^n-IOxCDh!zVL-Qa|i1Rf_;nqVZJ)nJl8j0j0GT5X%u@4@70>Z1x@X*PUmfzK$| z|Fm8)_`K}Mxu1d!1yW%BC|{F0&ZFj)K1l?xQ%3BLf1GPzz9g({`GM{5ly%IE0~G+a zS%EAx0dCAv>@Z{T1PF{G34oaPA(_8y<>9271bD?jK$#NzyN=Ux!gG>{fN2H`kmB5; zppfUMV6`=q@H*7!mT5%{U`{5s#=-m@!=wPjc@nlGDziu;n3_32eB)YB0Od~w=MAY2 zWh+3Ef34%C_q1nt2jM#2MS}eAvLS;3>jXZ23WeDbtXa_*R>MeAsD$5i$s%tycr_^E z>7hk|e+LSMD!`pAkdCPEPh@pSBXP}P0v`T%*0`p0!= zz~OzJRj)>X1jU@h-xZ#m7!^KGM`}=;y>_z8Lo~?vpH}w2uP8W>R_4=2%dBGbhU|86 z%zJS9#%mlYaPTnw;034H22c8;PUP=O^~Dj=f-wWaH16lO$gBUD{%#6b+-*}_WO)Cu zg#VJqFLSWv|4)CI|NrIV&uXhgVB9}~Zul&$tLxT$I}sU$Jbu=;=;6_Ad^kK3xVuYw ziAqv-ZtyWcAFk?rqcn4QDUQsov$pMFkT-bY@hrvdbbEDpnf!V3Om}(qhr@XUI;$f$ z4|sD)i~5zZk;5y}X&x`#+}QT8A|kZG$6d`;B!V(NjL&^|*WQN@BSd_qVtQ$7`w zF|yON^tqNxeWy`tsa(lZN>Q<8X7Yl7src=r&`avT)%_zR3p!(W;9Y4=>7Apx5^$VF zAwgsf0+ZX@^)Xnzp-KnoVY260M<=nf$IbfEAs5>X1ujG&lK0jq=V&_q89OW03!m!k zm^4=>hV?+@Q?6?en0~tVfN*e@yQFQH8F*iELY0u7ULC#dGSt7=AfP%*B=zdKm&{1X zdL$HTd%sR!<&D0LA>Ut7Y{$NeMUt`=TN!AW zK#^d7%Ewmetcs~?i7)&^+6mvEWKkuVNFW3Lpny$au&x4^Bm(^v=PLn%qO(+9yV1Rs zaYB`x=;|J83U`@V`eZa5AV9zn4MnBbr(Vi-+U za+P8i<~?2do>s|gFN_~09199QpJ;CKhqF}k(r+{cPRp6{l#L;`ZDib6dW{2C!Bfbp7Y z9$E1!swDp?NIe)=lfD&c_5rG?y zEVm{uK8)Cc)~&2eZJK#(a}T^>{=$Qyt-vPpEQ``BRaS15PS|gci1Tzp@yD1W`ejA? z`bG3WK*vNlD3>|7yMAtzZV+4c?~KY*nP-jsUvNnl#|$(J-{&SN2l4%2+$CMmP)hNb zOwr&^lq$qzDl)2HCwMXLUTvd!o(@ccbaJ`zV?()X6GwH4+N1 zfXJM>#T0W0e{nb@m<0evM9^crc{6C_4jXK8>>;7(U^c*97P&6P!oD1s z=RCDNru@1BBUOEBD4xsKpOSNOOa>pK#u1PFPKwL(1k&ozzq*~JCE~-8#G3Ebcl(;e zDkZbVVwuQKf1Wv{&}Z!pcXlGCz#}R+@RwJOHKqgdK3_n^$ILdj)7iSq@%-@$$Q;9TErl$Uf=dB|~qg+vL5h7xDz zVW{urkf2V0gTnvjf3sx}3(Uq>ni!z2Q6z#Ga8Ey?s#K!~=U<>wbD@Y?z( zlKmIhW(DKCl4)Hy*ngq-f9>Na2;l$oX9KnVtv3Xu61sn&@yS_;{r}$Y{{i~*QTzij z5a`-I{69v%vb;D7a_5WNdB)oIl1Um_0&QyNZkY5q5+S@=1Di9hGnZL?&akA57X#&1 zWAZR*C}~aqU6q+<;IE4=H5Jp2E{OPYg=E$yKg=mqF?)jDW6`$Y(>x>5Ha@~Sy zc&!}0fc7hmVW?wT_1(rt$RHF&teCbGw1li>pIOG7#(htT)x#+8jvYcu@Z~Ud6E@5A zAW^yT!$72|g6mr>g8>mE54JIWBh6e|h^5FQ1AAP`@ z?J(Q5d?=wQZLjSjczRLeQF~`ySHo$VyU7P9T7;RpV20WA(AaFhYv}f+tb}oXv?M2} zmpms_%h&5H^;K+Wp#QOD`8Ryl;LL#sefrn}@22Xj&RX8{3~$$-4e6f2c+QmND|_n5!F)wv z=j7~c^5?=haopxsX)+k)p#S2s} z0u2%!7jURYv}`$9%TK#hGh_HSH=RZk>A>CXc}DJ~r5fms3f=HyA&LJ6^#ax?=GMsO zowEgatQ1ju4|7%cOw7qu*^O5z<+5PjqfNY%dmhiQRX*RTYi77yPHgwuk$uJ$jM|#6 z>(r}az1L5Fj{Q~an9TXqTCeHBC>FDyYb5Wz58KLNj^0NEmrOB9z)1he}w%} zwFD@cas6Xx#`fU2;=54|0dJ_b(M~(0X8tuA_Dl+$Ww%u-{)olI;I$5Xs*_V^e=x;g zM-?szRmH1+9;gaX=k8xauXa1HpSLJP)yA2u?am`SG#2yGgVcaNKbI) zbgIx0RCIlAuRJPGHSe~H&5ou(Rv1dSy_G(%`f@7l3#2767mPI)WBuxG&Y>EC{J_h&Tkq7!A0$ocyZe%dv(`_`gdG|M#2 zi`7xmoi^HPw@JAKs3PGR^s~QlACVY*(;`9BVh#+ADxcN1Id|z1pZ;^%k>to$zlY2E zrwaKybui-Xh*^%SYMgIy-ZOxNPhkE197mE!+hH(wF41u*6bT&zCIy8CcEBj|;<{3h zNEpA74$%R#@v}a@r=oWL?qxJ%=nvftc|;e^^GUYq&hf1mokW4E9H^2I=^_dh&dHZ5 z?&hUCEzVX)m6g);>cj)y`9l6v3+J^pap5lsG^tKL7z)x%}8S}s1rmCLQ;ekFj{MAx7u}2b-d0*NGwY;sp$wLy{mZ* zEFU>l{mzs~q+px2;DcXIPi}53!P>1e%5-C$m&Gi-VFuN^t)qVH`iF_jpy{7OT46Pz zjjW+A<@`gdy4)jcqDy=&6f$)DE?emD3%Gv@Dj}NIX{-I$>ToqQos-yH2rW4aW&C*U zjhAu$S`K<~sM`GtyvVFi=@IN-QRIX7J`AqLJnuTv@(**b;%i^C%&!Hk)JPB*W@z3X z+rMx_6I9?@UgjYVV%_AK8?`QycGyj_o0mj}_`L0$6S|AeD3e6cHR@H>7nb^Lv%g#c zT_&SZv2d?%Bd1S4C~%HTEY_K@P75RBpoTI0yhO6|%9w7T1E#NLo6e&mquS-M$dEgF z{f(gf1$fX$OaD&NJj^#!8)?b6&Q-*AdCqKU+C%ghQ#Jpo-|(E+3M=}>cz~Ro9M*le zCt}=r0}Ht`D&g+QEUcA}wDt7Q?R5pT+kM1y{Je~hN=2?@ zQpoBLoY0;90SEUT-*oNGm&ap*5qrU+=tI5QhWVP+o95u+Ja8MGY}fjUFh){ir9Mxi zoR=Xl*-f>2`E`?g1oX9mM}`!-t=21>`6s$f>D;0D_U>*jJ0{BRoc*#v0i(PlZwAT z5||8^zCPl=gS$9)@M0v_%@H>I4|InQCgc3;7tX&kCAx+a5R~fT2^;+D5B^)@0+TuR z4`BUwrUJXD{((vE9!L@Yk=b$vlL0_NTm3uJfI(7-4^-DTcxeA2gFj$MSp@xY>A!OX z-$#Jcql&u+oMitYgIQvT50bE-tNw#2IO~W}^f&AH`QL_4lqU>^IR7K~{|f}~uQIYl zwuA8nUc*V3$^2Cfa{}Gz1w@rFuIKQtZEAw;q;yoOawU;5QoCUhsADZ9BZ) z==s$*8thB`z7c)hCY$92j$B($`F(d9rPxB7`;WCg+J%?Y%XqvP@79k7I1kSc$ftJ3bUPnz3}eXcB4`cqu% z#65<;>mGVsm?t&bzJ#~yfIf=~nbrC(LWuk$$P(&MHSPxfsOs(~!#9GE4Q++&v2Q+33@ArBc@3qSwA`hYNKU050yG)lJt;SsiQ~c zsp0okRB6@w>Fj0AY(#eSQU<9AiN}3D`rL3n+<{AYMd0V7FME(Fczj%&r0_lxPT39B z!#O%qQ8TwFQn}qNKT$+|3LZ}uW#gYcT)}q|ZX>yaQ4OY~l7wDz4Q}>%Cb=Wz| zZhE;NWfqG?)7?cs=0S0o<(GE96IVs&7={r!I{2@8E z6ly+dIn2>~L$5oYgMACl93Vi83eI#%x5sl>L>xI{0r?bmF@l0q7vlJw&lLB`Qo*?z z2|OQOllsg<6s44rMU|Dr<>zO#u`6y%tcUe5^FnrVLPN%gBOb_c-CYxEu=5In%kyP~ zBMXF&5P(YRvuRRkDqc!{x@Ic}JMErKkNI)(T>=?$Uz>_k$BHh?7Uq8P;Ro{5b z@wD8~sX2ae!$!sHZd&QYHld8B)+jS?`WA(+wdv@5zmKI^+^1B9!f3V{h1nqi3pdCP zxqy6~?RTBw>6F5K7qQ#SGc4D!=W{doHNltSZ8rYR@4bNQaWbt81p$r{F7J%Wey{@) z)3oX+ZVV9i)Mt#1L$RB;F(fHQoW4VbV*gQ++Lza4c`1QjT)L7Ap59J1sFFS%B_Jy! zQ8kI1?A(4S&dlgdxJdh`=0nlGzcmArim!2__?rE3xD;+GnPgS%erCw-p96lUO|h>x z%inoCiaK`6cavdvKr+zR#WR=LDIuyWG{Cr`DQ3?}LcNrP>5Gc*EHsZp`|(1uK|ByZ znY}vOS3^~`o+8>2&~!?FdnZVqdWzO*!JhQCo9{VhBlS|(w$0Ae=ELiKwh{HDeY46pb!|Y6$#Jgt>rna^GaJ`r@zHZb^l|#0jg}bPHb&E1 z+O>P=%3h1j3^&8e`uU7CSD~jvI8kU&7xs-E)tbj3pJ4sv$R@?InyMQpx!YC)n9w*q z^)fWNU9E7<2$Vf08~2PMh-|9ZPRidJuei{yW%0OMT%>6WAbd{Vk$-13VHEc>Q^|SS zuzJ$$9c%M-m?dnEb#1pwS+C2iI%~!@6@Ml@fh*c%SamyhaOHO_Yx6U)agmE$)SP)5 z9V?f_gl?FRDaGE9R~R8gYE&@UNM+M_qnz+;3>s}ZKDWyB<_8QH+2%!0UdZ#e=fAi= z;sfWd?Aw=nhS*>OC6QqZH2-Dh(+OLQ24i3@lsHwBWP@td0j1mHZa`QpM}6!C0~wDyWd1`>od%Oo zORRGyuTdig@8Pg2{aLXBqSqdW;xOsMbuuQJACqiyWs?&QUGDQC2Yv@)HS@|TCDXqC zDUj_68{>!fyM&4{y$`LJK!}6ao2``kUXO>u;s8MYJw2XDZS_q}G7{+-i2^&%>qgP~ zJo35DzVxL>b|oPp)A>aEWS8}F=pBBP?$h9I&2n{Ws0$W_HqU_)5cN-7Z9i)*aHaL) zw0B`yIU3m{WmL{GlEBkIXFHDc`-*VWI0t%Rp8id-xZ8!-4C+-YbzI*jK6*{oOzk*S9gd6S8xl{5=Wx1xFLH|w*mG=; zBG#2W9C|(mJ*g=!xnB3(ZXN23u7{s~|Y@)7@Y?GfxPf7NEmbX2A1axDJK)lu~M z%$ZIn09V(mYVBzGsHL*-B5^%Ohh@zS$yx0v74?8V?S_C-_S^?+nol9`JDvN*);dkl zpWLR@E;iF zDdk+;N-mSE^4eaWY_Zzq!pPGyxFka^j^9A>{ed`+i2xo;?!w9H4}E1Q8XU^hE!#A~ zr^TrR_`Ic#KYw`q871kKi{;^nH6G*oahQHla|KLXhxJW?Q}Q+Y!sBAGn1wwpFpm1k zY*BD$bD5y~Y~+{0Q!k?U>TN7J6dP&n)rJHFZn#ZycOeuR@-+4zrb;D_va=Jl!@l@{J^J_9UunMUPk4fsw zjZ%bJ--e`G1glof2_6qS*B(P>mTkFPVf>*MAO3>FThn=^z`aPwI-lW1LnUwWdd*nM z2Xyq<_-ewW1L8Qx!QXgQJ0mmM&h3=d#q-BDy74oG?F@1~7SDl9HBW5Gq$%z>XC*d+ z8y`yBfnT(pEHZaT@q%dx9vu_AFnY|r>yrwK@#>4JIMQBflw}m*=x#N~QJtJ7lbJ2= zC#7#!owU@9Cv>#Rk5``Ufe}rLz!!GA`!vyB_~XwFegK@%;(MmyoPL$z^fU#Fd5yu3 z&9c?WdVKL+iE#Dxzt$aI%?Lpb1G^K`k~pnTVXp4TnW^c>Q%0l=kmB#TZ6`4#Ct`E{ za!7FnsbNU`Oilo862hUKiK^&{X(;!3KT(>Vrg0{peI&(%;5|nt5*~imbH8ne^XG#@ z;3&>oYdXix@K63Jn)Ukoc>TQ!AlJ0_`*D2jHlvfxgy2`3N3hzgXr}ABVih-k?6e>~ zjhuO1Fl@ILntW`dd)y#vo&i{pZhvcB+5)6#Em0k_n*D5SMzfv}=jlea!v@tSE(i3@ z)hDQ7CGOqR_%5?QR=9}vJzBUVTOJ_+$Z?l?WeD~Z%;&4+zUR;u>F0N5QBUX3m|6v! zCaI8}!s3po&}VSc_d1U(9ru-P%jrJ28&jRzP_7NPyo7Pb-k5E0%CGfO{OQoj*#fy; zRrcoi90b3o-)LmAOvOi*ZmhEwpWd?jkjj@nd5n1V5+=`V`q<`eulr3@&0ApS3W|sQ zk$sOeZl9MIed&J0)#=;Qd76F$0^^Mob|sP>a?f^b=QVi5T4W(9kgT0m$!QiF_V+Ka z(Wfs`xlRA%@ue1UCgtZiR50Bl*#?X;|$lT zjW0GoiK#beItSS^RKLN-6gz>SvOrTYyi$sHN?%1ix zsqFj%KRekQcZ*gbh9$=o6xW>^T<>E>O4%e4Z18ExH0RD-~Glc z1$EnPJnHze+%-8_mzPU7?fZC`-1t)Q-`Q!TcFv1U7LUijnZtP>HuVT-Xp9+f&lNOu!us;_(3+H1@ z^LR$mhsl>yE-J@loLpwrm)=d_CSvF1-nc~AK;lp0e~~DW7#aZ7)fd?cc368nA2(e% zRQA|B9Q*EUCPf<2IUdbbBU1U^=SDBowsSDVX`6b1eQtb)%DLIvI<9&*hb&T()!*$p~!Aq2eJtcQWPLtwy02RH|{DM)kpbs;&r(tJ$p}J zlVJCgPh}(Io6`xc-Q#g6~eM4dpgAPxm%u7Mt;&hgL0_!ovbw`6Ypj}j} z;*xXWxoIcYxs@h7VsMkRSqgu8LRfrujt8J-Gc$=i<@NiGAnf4Tx=H(Zeaf8coAy9} zWA}HbtKXQ@uF-FnFk9xV=fxIoE1kIaCcCI)Bn-$L)-WR)eNE%IGT(>Um6sHt-z@0MMstNIPYHU|ZOxee* z_#_X;DWjs(kFmqPDR`Y$uer5%v#(@yUQ;Om)<+g?XW1U++y}N>i*YlfIjkHQ4UwJdoN_y@7YT#uMssSH@QSQ&RbSZ8V*xPFX9MdN|W&qbnu)NP07? zir>&BHw6z`UwoodSPbJ~?2w*GlKw(yVM4~s<}<$HQeFYh6HA?0#}!Orr!LvQKF0aQ6%vF=Y{KPjxpE6;D%tX5V}4eSS<#ta)|%V&P-P zYj`ZzJ$j=|(D9fvuu73IpK&wXh-LbA*SrxKlLX+h69Nc$^a>vO-zVZSxJn2v%F7!& z3a3~_3qE9t-VsDI*Qg+4ua>a*i?zx&cm^frWWCoPT&#v*W%Joyf5bm1BS)v;zq!dg z*p$zhHJp2?>lOQ2*1}S_+TW8+*6Et$VV8)lMR0p8(cEO^>ba+P{g9M`)et5;zJ>2Y znlOpXcdry@touTcm^|_8b<1s#q^s95LVB(B+{oog{a^rTd{!wY&CB-J;>9&`Z7o1N%>cZKdoQhR6uLbhS>VT+Sz#0gF|{nN3!& zd(jFxlyqi${i&@?p@~w5ZQAqr$`cqgA@(^ykg9W1;V^Bt{qGP~`cL>@BN``WndMT+ z4;PXu*+9#QVY=$`YT4|3GVk2R?nCpjepwX+eJdLAcM>D2cyPuq*@n~D=&57Lg~R5z zrM>s&#g-}Cq?`?FELI1J1GH{SR30xOGv?V;YB6cfS>J3J1u5vKbL5{_J(=yg%7eD9beY#j1}L9FX@%TMkeDU#qrs>uMY0Q zGGVvH(E3tMm+GxEFirV*_P?zkwLZNdSm&v_`goNY6iueh#)<(W+6u#_)%r0;2jQ*m zl1M|8Je@PYT2b(cSN@#n`?^}f9*P^S@XExVD={EnO;E?uxdex4IS}w9cwbC=7!eJ)eByxo;n9 zeLM~;%8~IlknOc+87-uE-{7(;zR*q9Nd3uIaADkRjmB;j`ezh#s$*y0*{$!-F^!8E z&KErtO}+z6-@6RW$>-rkH;Wl~wG(^8DQjnJKg&62^aa+fAbSW|4!n2~elbU&i_dXep^ z_c8L#v}CjDh-&*DbE*iTh{Dd9!rlLwER%T z)lIY7PbC)evXMC&$lv7GqnQ;J8c(c^iz~b6E5vH1uA^m#xU0S}T%45u5eby!&*UN; zv)TR@nqGNf@yTNLQ3P2;vbt7*_Q+WLq!js8iuL!L>d*RjK0K3+k_SAf{0SM$D7@C%7771%MEWXzok8e>xN;Lnp^wp2Tr ziqm5dOh=dGS+F(2CVWqi_(Rlm12&wdPW&^SeXg|tPOm904_i9~wop)yx5;|iXfm{Y zhe~_C{3`zJIV8u^a^+dW@pBK%z7($?qZ|oQiI3c{jy@uqKpfS?M@O>wc~y9XG~mdn zCx)_Rq5l-pTKZ90;|s5LDU0w8>9!qptY~Bj2q#tJEmw6wE9%%vGSYmunY4b&i<>PD zxZdSXa`2F}z3yO0at)AGbdAN9!ctY_f7!io?35THjZNg;cH}JWOz1lT4*M2t)23bG zU+j?oGBJBbgsLCl+sg1%$#1gy`JT?SBP$ms6swADC)IRq!}W<>+Xj8ztJ-UB%0zon zzSi`7rKPh}^lpU(0H{2O*(A&E>h;}AckC4L@O2&iJ)WMZ9=7GC5ixP!nG;+^bF=CW zyl`Iwopq{tCC(&8&d9~b`bJ)a3ig1`a*lt?uxHSv&Valxm;Brmto{(Yw0T2@c$aoJ zF$8J#|8Y@|4a4(>au1i;)c5AQ=BG|=Y^cpSim8BiAGGy0ExkTV0KT)Uy?ULeW&>%~ zgJrPG^(+j~-)~lAwT^e#=xoIPNUQP=vf197R{vUbt<`aHnyVN>&YF*IWt9tGm}i^J z(P@-Fr)QdUzNqnU3rtoSANR-|m5aJP-`)+>e6sN-(9pSqo^#d+xGd-_2;?JPJUSX| z$Ldb6zsWx4W9f84ED(x_QRcb%Ugsk^mO8sxZKJ&@N1?T5AGmBla<#mBtj8leJWEh} z!*$pYlkuFP{0b7UUG*G`+klmuE|K_pm zbjPuX%2$7PaROC%H0=${QkJc$KBLWq+&NLw6sI`8>G)})`Qm=FmoS-08O!b?L%S84 z=sk1BXOE&m!Jc`~X|=wrR%wD;<hB!G#igM`^^fcgdCV-(>$N4A5=x%hxbn?@& zo5|?@Z`hW_bJ3cC2Hx*u<_w&H1Tx*fcAzmyIiVM_XHLf{knI;ad%L-ElL^Wh|%(vzxn)?&;uUB?F z0c+z3i#epo@V3CwhbBgoG$bR+8eI#vp)Io^X?$UgAhlXa+Z)t!cV__X>B_fXrbX54 zn=6eDTwDT*yn}0I^L=Y>NAz_aU*zyr)Z5Qf&LE~qpT~<#c(iSlq5{7+61@YAPSxH3 z9mcc`k6&WzB`XShcnioEDPUX8)-kplpQibG)Y{K8N(iI%j()Ozcz+uz2ZBq-M56r5 zPd-+vG`q#w_M9KLLbGd@8FA^pM~~yn+jbLCn$B<&kO(mb`t#E16#K7)KM6pS?ppYL zwQ*5u76Rr{@+p%7Os)fJB!ixkMUwJCh~WHsKK z;WPCr$Pt^6_`tBYW0_eM%_+n_v3~edqdJ+J7eM#n2=ULOpU$)dKan~)!zS_kSyiO* zx9m%wr~43C7Q>f;2u(+9!&0sjFY$DDTtxQVS&jUKaVEOV*xNs0XHtn?HbCVh8PL$P zk-?_UoySFYjUOn9rr32C!NaDRVbZtF?U$?as$iQqE%MgCN+ZGp{MPMUt%7kb?s?FS(q##EE}(5qE*2)^~5 zTeX{~tETkXM;ZaieKXqk}!h7#F?WqVFZ2}UC-vp@`gO@42M^#W;%t8$hSKcLM80O5*zB%4G9C~^1{_}*A&r&VdvCYBVTlsae-ua`o#Oa|* zvE(wfUIP1X+q9U8Nx)!O{*UO42Alfa7As~_QcZJD3$8%`xd9OkW4atK?LFCk^{J=v zcTh+D;Ej4eganFUZozXrOXe5hCJ7!Md1`Yek-Y$X?wYm)NsYeCz$Y=yLiVR;+4$y( z$?4%mHAhnTO*W!V63kdyDV~hjU;E;^zKs>zCNS8F{;AqEz5Fx-ixi`mUP$JFXMc+lV5H zYH`>4NZ%kGgt?mm9Xb-<#hhh6-b_Om9)s zSi$hGTdHb$>;*DeWiYygcF({vGc9m`8PXM9I`>!mHwTu|*Gq1|8!!BJJZ2T!Y7TJ@ zUbRDvoe4#PpkI}(Mh4?)!kl=;pALxagLqmE0=HK<+z~al)j6v7w=k7XNAH?K=hE!` zk17j8(+ioWOWGU4CY$ty-}hfS7YL$ss0!a$&m-LyfS!kk$SNn@p*~*lX?3>h9QOLM z&4xdMP}n6;mEMPwt>;@0@Ar$gFK0-E2&YovO{ub3`|Tt*`|-;wbqKY6qyqE9SsaS< zfGDrMrSEs1EtbGP`*%-Jz3C}%((kROcF!tXt_^=yE$S}$eI8G3$PXTe8pBMI2#mda zO;QEuIY83<#Waf7qiBKRiD>RmdJM>Ns$;5W`yb1zNNm4bVIzyLi(rz;RVBKtWjfNN zzlfLadQ|={m(I=pF4k08Qc0RK!GuN(_S#xGwA>DW1D8xpY0QwU3zmJ`mB!Ko41o+( zyGw8S*NcRycDe9*P)d@-HK`6?sk2M9i$_Givysr)o^pU$P_l{3b}Z& zl&ED`@l2+}W4fraXne>IZ^^RKd#&5V;0Vj~#e(29ul`5xuA5JioxuqsWa1K{VJ)9; zZ(pikgU^9BkC?*JmgcQ$EcRWe{f`(;X|(6=3hoN)Pp{IabiLjjMw2`iHa*RY%|P@@ zTt1zbhq??pzwkFl^mDR|*(ITtUgrUG3sBHWM3R`srzk&(bk2hk27K1!21q`j6wz|5 z7B|xufA?oZoJzToEu7~EKbiIy>2mk3;RfpnFJB-p$g9=*LHGQ!YZ@{3l*$Jj3TJ;y zL;R+%pKCrn@8|tGab(w1ZaRUUee7Rl3D?KJ8HM%kqJDy0*;2m!nZKL(Pk>&t9_f@R z?cR=gCJrtOao9z4Ii-(C4&<}>5Q`aLaZi3+Hr+s0l7>t1qGRL0dCS{+M70;)Wd9BA zd^IJ-)qix_-f+Ur8(brPKGjTHd+Xp3)8isIz1yB4?Fof{&Fiw>a#j^GKkj4j+;7#M zN?`3_?OB)5o?IBhnW(%JEr#qtd&(kRSBj>=@IFshRQJ1%nJlNPx6t4|OA=gqsJxCQ zt*Gdr6BM`n`wJ|*?q#|YR+m)vr?Yizo8dhi&?uFNlV4aehP8w5%$ld6MNhYC3H1kkvtoI<4&XiQP}m|omD{@bWVX`o%X492tEuTX zzoeuj#~1VF(|*sRw9IatQzmO|n}cu*tD}<$jB@w8-7p_}7?LH5g6HLpWTRob3gSI> zx-GfUT_)qVeJkq3^B6>nu@pUbD?q(WSo2-5^qIE89^Q^4>rbu@lSDmk1BzzRm{ax_ zoGj-Z7n3DsTj%wKGNLK$>){2BiDC1sJzHYf@r`-Oblq3VS>$l_aJnuJ?D_mCGwlb~ z)!st#=xT(|I=bwh=gcJBGclZ=9)H3WHOJH{Xgq-Qi*gH^NR75#w8gNBnghVq7SPrq zL^z3l%XfQl(TR70lHUA{O{pp@Pq{M!xVFTzna*j4optp@7C4yJ)nTZxosmp;679I&`K)ti(?zP&5J6=c+o8e-0 z+VXhrZomHhqj7V%s@_?j6sw+)T)Ah{npQU!=JnRb>fWOup6J zH7Q_fZs4RYAOGx%$oAqZ94ht;eTYc$pzu%@Rp29Z8jl-VKpUU}qx!jJd+Sr%R2 zV?eQQuVD^wJX)vN1Lq9n;wT4dWz`x zms|Y}@dZTujkNpSk*-6;;(bk!ozCrS{NEN4Ru{KM0GQH7J zH(3&mky@98hhJ}IKUF?8l!GjsO@-h17N_x(GN<0On!zEx=mF^TlI@L0i|WOu)SbrRW5W);|^=p%D~Re z@iC->AEB12N<}B35=ZlT1R1U0Un47@BULM76zLNZo!YTuO?)gJwBHT(0O7h7eaGtM zmn2g$$@dhse!rJ3?lK8=VDEcna`WG7Nv5P)a+0ia9WGegKfP>I+gQgexW2n46O*SL zm-8Rl>2Djg+itk%bbN!qCxL)~iT?X70M|?AK2v$k+Qq{rMO4XB<%xs{(vEB{kGG1m zyZpK3kj+iX^aZF%MGG@Qww_Rfx?mj%Z4 z1OZ}8d|p}`)F=M@qu|2d4P0=cqw$qddl)^=wL8AY>iuG)i7bkOM$1}4ddv}3+7bHr zJuhsJ!vuGB`p&j%&L)WQDA$N^Hg1Y&SYF2-6;cn9Zs@MIm6IkZoz#jz=1s{3)??t{4Fd6Uy zfHm=5|E&ViXZ;ibUX7`fB%k*G zIi+wvDD%`^eq>@u@Ie4Wv|pbU4G+1C{<9vM=;|G^ZJ=K{T265o{KXOoNl`hG8X^6_ F{|`ChGh6@w diff --git a/10-regular-expressions-javascript/7-regexp-groups/1-find-webcolor-3-or-6/solution.md b/10-regular-expressions-javascript/7-regexp-groups/1-find-webcolor-3-or-6/solution.md deleted file mode 100644 index ece24fb8..00000000 --- a/10-regular-expressions-javascript/7-regexp-groups/1-find-webcolor-3-or-6/solution.md +++ /dev/null @@ -1,30 +0,0 @@ -Регулярное выражение для поиска 3-значного цвета вида `#abc`: /#[a-f0-9]{3}/i. - -Нужно добавить ещё три символа, причём нужны именно три, четыре или семь символов не нужны. Эти три символа либо есть, либо нет. - -Самый простой способ добавить -- просто дописать в конец регэкспа: /#[a-f0-9]{3}([a-f0-9]{3})?/i - -Можно поступить и хитрее: /#([a-f0-9]{3}){1,2}/i. - -Здесь регэксп [a-f0-9]{3} заключён в скобки, чтобы квантификатор {1,2} применялся целиком ко всей этой структуре. - -В действии: -```js -//+ run -var re = /#([a-f0-9]{3}){1,2}/gi; - -var str = "color: #3f3; background-color: #AA00ef; and: #abcd"; - -alert( str.match(re) ); // #3f3 #AA0ef #abc -``` - -В последнем выражении #abcd было найдено совпадение #abc. Чтобы этого не происходило, добавим в конец \b: - -```js -//+ run -var re = /#([a-f0-9]{3}){1,2}\b/gi; - -var str = "color: #3f3; background-color: #AA00ef; and: #abcd"; - -alert( str.match(re) ); // #3f3 #AA0ef -``` diff --git a/10-regular-expressions-javascript/7-regexp-groups/1-find-webcolor-3-or-6/task.md b/10-regular-expressions-javascript/7-regexp-groups/1-find-webcolor-3-or-6/task.md deleted file mode 100644 index 419c0476..00000000 --- a/10-regular-expressions-javascript/7-regexp-groups/1-find-webcolor-3-or-6/task.md +++ /dev/null @@ -1,14 +0,0 @@ -# Найдите цвет в формате #abc или #abcdef - -Напишите регулярное выражение, которое находит цвет в формате `#abc` или `#abcdef`. То есть, символ `#`, после которого идут 3 или 6 шестнадцатиричных символа. - -Пример использования: -```js -var re = /* ваш регэксп */ - -var str = "color: #3f3; background-color: #AA00ef; and: #abcd"; - -alert( str.match(re) ); // #3f3 #AA0ef -``` - -P.S. Значения из любого другого количества букв, кроме 3 и 6, такие как `#abcd`, не должны подходить под регэксп. \ No newline at end of file diff --git a/10-regular-expressions-javascript/7-regexp-groups/2-parse-expression/solution.md b/10-regular-expressions-javascript/7-regexp-groups/2-parse-expression/solution.md deleted file mode 100644 index 05fedcd8..00000000 --- a/10-regular-expressions-javascript/7-regexp-groups/2-parse-expression/solution.md +++ /dev/null @@ -1,53 +0,0 @@ -Регулярное выражение для числа, возможно, дробного и отрицательного: -?\d+(\.\d+)?. Мы уже разбирали его в предыдущих задачах. - -Оператор -- это [-+*/]. Заметим, что дефис - идёт в списке первым, так как на любой позиции, кроме первой и последней, он имеет специальный смысл внутри [...], и его понадобилось бы экранировать. - -Кроме того, когда мы оформим это в JavaScript-синтаксис /.../ -- понадобится заэкранировать слэш /. - -Нам нужно число, затем оператор, затем число, и необязательные пробелы между ними. - -Полное регулярное выражение будет таким: -?\d+(\.\d+)?\s*[-+*/]\s*-?\d+(\.\d+)?. - -Чтобы получить результат в виде массива, добавим скобки вокруг тех данных, которые нам интересны, то есть -- вокруг чисел и оператора: (-?\d+(\.\d+)?)\s*([-+*/])\s*(-?\d+(\.\d+)?). - -Посмотрим в действии: -```js -//+ run -var re = /(-?\d+(\.\d+)?)\s*([-+*\/])\s*(-?\d+(\.\d+)?)/; - -alert( "1.2 + 12".match(re) ); -``` - -Итоговый массив будет включать в себя компоненты: - -

    - -Нам из этого массива нужны только числа и оператор. А, скажем, дробная часть сама по себе -- не нужна. - -Уберём её из запоминания, добавив в начало скобки ?:, то есть: (?:\.\d+)?. - -Итого, решение: - -```js -//+ run -function parse(expr) { - var re = /(-?\d+(?:\.\d+)?)\s*([-+*\/])\s*(-?\d+(?:\.\d+)?)/; - - var result = expr.match(re); - - if (!result) return; - result.shift(); - - return result; -} - -alert( parse("-1.23 * 3.45") ); // -1.23, *, 3.45 -``` - diff --git a/10-regular-expressions-javascript/7-regexp-groups/2-parse-expression/task.md b/10-regular-expressions-javascript/7-regexp-groups/2-parse-expression/task.md deleted file mode 100644 index c48e5a0c..00000000 --- a/10-regular-expressions-javascript/7-regexp-groups/2-parse-expression/task.md +++ /dev/null @@ -1,20 +0,0 @@ -# Разобрать выражение - -Арифметическое выражение состоит из двух чисел и операции между ними, например: -
      -
    • `1 + 2`
    • -
    • `1.2 * 3.4`
    • -
    • `-3 / -6`
    • -
    • `-2 - 2`
    • -
    - -Список операций: `"+"`, `"-"`, `"*"` и `"/"`. - -Также могут присутсововать пробелы вокруг оператора и чисел. - -Напишите функцию, которая будет получать выражение и возвращать массив из трёх аргументов: -
      -
    1. Первое число.
    2. -
    3. Оператор.
    4. -
    5. Второе число.
    6. -
    diff --git a/10-regular-expressions-javascript/7-regexp-groups/article.md b/10-regular-expressions-javascript/7-regexp-groups/article.md deleted file mode 100644 index 515c6175..00000000 --- a/10-regular-expressions-javascript/7-regexp-groups/article.md +++ /dev/null @@ -1,150 +0,0 @@ -# Скобочные группы - -Часть шаблона может быть заключена в скобки (...). Такие выделенные части шаблона называют "скобочными выражениями" или "скобочными группами". - -У такого выделения есть два эффекта: -
      -
    1. Он позволяет выделить часть совпадения в отдельный элемент массива при поиске через [String#match](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/match) или [RegExp#exec](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec).
    2. -
    3. Если поставить квантификатор после скобки, то он применится *ко всей скобке*, а не всего лишь к одному символу.
    4. -
    - -[cut] - -## Пример - -В примере ниже, шаблон (go)+ находит один или более повторяющихся 'go': - -```js -//+ run -alert( 'Gogogo now!'.match(/(go)+/i ); // "Gogogo" -``` - -Без скобок, шаблон /go+/ означал бы g, после которого идёт одна или более o, например: goooo. А скобки "группируют" (go) вместе. - - -## Содержимое группы - -Скобки нумеруются слева направо. Поисковой движок запоминает содержимое каждой скобки и позволяет обращаться к нему -- в шаблоне и строке замены и, конечно же, в результатах. - -Например, найти HTML-тег можно шаблоном <.*?>. - -После поиска мы захотим что-то сделать с результатом. Для удобства заключим содержимое `<...>` в скобки: <(.*?)>. Тогда оно будет доступно отдельно. - -При поиске методом [String#match](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/match) в результирующем массиве будет сначала всё совпадение, а далее -- скобочные группы. В шаблоне <(.*?)> скобочная группа только одна: - -```js -//+ run -var str = '

    Привет, мир!

    '; -var reg = /<(.*?)>/; - -alert( str.match(reg) ); // массив:

    , h1 -``` - -Заметим, что метод [String#match](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/match) выдаёт скобочные группы только при поиске без флага `/.../g`. В примере выше он нашёл только первое совпадение <h1>, а закрывающий </h1> не нашёл, поскольку без флага `/.../g` ищется только первое совпадение. - -Для того, чтобы искать и с флагом `/.../g` и со скобочными группами, используется метод [RegExp#exec](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec): - -```js -//+ run -var str = '

    Привет, мир!

    '; -var reg = /<(.*?)>/g; - -var match; - -while ((match = reg.exec(str)) !== null) { - // сначала выведет первое совпадение:

    ,h1 - // затем выведет второе совпадение:

    ,/h1 - alert(match); -} -``` - -Теперь найдено оба совпадения <(.*?)>, каждое -- массив из полного совпадения и скобочных групп (одна в данном случае). - -## Вложенные группы -Скобки могут быть и вложенными. В этом случае нумерация также идёт слева направо. - -Например, при поиске тега в <span class="my"> нас может интересовать: - -
      -
    1. Содержимое тега целиком: `span class="my"`.
    2. -
    3. В отдельную переменную для удобства хотелось бы поместить тег: `span`.
    4. -
    5. Также может быть удобно отдельно выделить атрибуты `class="my"`.
    6. -
    - -Добавим скобки в регулярное выражение: - -```js -//+ run -var str = ''; - -reg = /<(([a-z]+)\s*([^>]*))>/; - -alert( str.match(reg) ); // , span, s -``` - -Вот так выглядят скобочные группы: - - - -На нулевом месте -- всегда совпадение полностью, далее -- группы. Нумерация всегда идёт слева направо, по открывающей скобке. - -В данном случае получилось, что группа 1 включает в себя содержимое групп 2 и 3. Это совершенно нормальная ситуация, которая возникает, когда нужно выделить что-то отдельное внутри большей группы. - -**Даже если скобочная группа необязательна и не входит в совпадение, соответствующий элемент массива существует (и равен `undefined`).** - -Например, рассмотрим регэксп a(z)?(c)?. Он ищет `"a"`, за которой не обязательно идёт буква `"z"`, за которой необязательно идёт буква `"c"`. - -Если напустить его на строку из одной буквы `"a"`, то результат будет таков: - -```js -//+ run -match = 'a'.match(/a(z)?(c)?/) - -alert( match.length ); // 3 -alert( match[0] ); // a -alert( match[1] ); // undefined -alert( match[2] ); // undefined -``` - -Массив получился длины `3`, но все скобочные группы -- `undefined`. - -А теперь более сложная ситуация, строка ack: - -```js -//+ run -match = 'ack'.match(/a(z)?(c)?/) - -alert( match.length ); // 3 -alert( match[0] ); // ac, всё совпадение -alert( match[1] ); // undefined, для (z)? ничего нет -alert( match[2] ); // c -``` - -Длина массива результатов по-прежнему `3`. Она постоянна. А вот для скобочной группы (z)? в ней ничего нет, поэтому результат: `["ac", undefined, "c"]`. - -## Исключение из запоминания через ?: - -Бывает так, что скобки нужны, чтобы квантификатор правильно применился, а вот запоминать её в массиве не нужно. - -Скобочную группу можно исключить из запоминаемых и нумеруемых, добавив в её начало ?:. - -Например, мы хотим найти (go)+, но содержимое скобок (`go`) в отдельный элемент массива выделять не хотим. - -Для этого нужно сразу после открывающей скобки поставить `?:`, то есть: (?:go)+. - -Например: - -```js -//+ run -var str = "Gogo John!"; -*!* -var reg = /(?:go)+ (\w+)/i; -*/!* - -var result = str.match(reg); - -alert( result.length ); // 2 -alert( result[1] ); // John -``` - -В примере выше массив результатов имеет длину `2` и содержит только полное совпадение и результат (\w+). Это удобно в тех случаях, когда содержимое скобок нас не интересует. diff --git a/10-regular-expressions-javascript/7-regexp-groups/regexp-nested-groups.png b/10-regular-expressions-javascript/7-regexp-groups/regexp-nested-groups.png deleted file mode 100644 index 9103ea28a519f3ee256d192daeee4210d80674e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12959 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 diff --git a/10-regular-expressions-javascript/7-regexp-groups/regexp-nested-groups@2x.png b/10-regular-expressions-javascript/7-regexp-groups/regexp-nested-groups@2x.png deleted file mode 100644 index 4f5ee487641d2fe54c8a98c1b1e0c158ab805cd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24479 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 diff --git a/10-regular-expressions-javascript/8-regexp-backreferences/1-find-matching-bbtags/solution.md b/10-regular-expressions-javascript/8-regexp-backreferences/1-find-matching-bbtags/solution.md deleted file mode 100644 index 234032d4..00000000 --- a/10-regular-expressions-javascript/8-regexp-backreferences/1-find-matching-bbtags/solution.md +++ /dev/null @@ -1,21 +0,0 @@ - -Открывающий тег -- это \[(b|url|quote)\]. - -Для того, чтобы найти всё до закрывающего -- используем ленивый поиск [\s\S]*? и обратную ссылку на открывающий тег. - -Итого, получится: \[(b|url|quote)\][\s\S]*?\[/\1\]. - -В действии: - -```js -//+ run -var re = /\[(b|url|quote)\][\s\S]*?\[\/\1\]/g; - -var str1 = "..[url]http://ya.ru[/url].."; -var str2 = "..[url][b]http://ya.ru[/b][/url].."; - -alert( str1.match(re) ); // [url]http://ya.ru[/url] -alert( str2.match(re) ); // [url][b]http://ya.ru[/b][/url] -``` - -Для закрывающего тега `[/1]` понадобилось дополнительно экранировать слеш: `\[\/1\]`. diff --git a/10-regular-expressions-javascript/8-regexp-backreferences/1-find-matching-bbtags/task.md b/10-regular-expressions-javascript/8-regexp-backreferences/1-find-matching-bbtags/task.md deleted file mode 100644 index 8596bed5..00000000 --- a/10-regular-expressions-javascript/8-regexp-backreferences/1-find-matching-bbtags/task.md +++ /dev/null @@ -1,41 +0,0 @@ -# Найдите пары тегов - -ББ-тег имеет вид `[имя]...[/имя]`, где имя -- слово, одно из: `b`, `url`, `quote`. - -Например: -``` -[b]текст[/b] -[url]http://ya.ru[/url] -``` - -ББ-теги могут быть вложенными, но сам в себя тег быть вложен не может, например: - -``` -Допустимо: -[url] [b]http://ya.ru[/b] [/url] -[quote] [b]текст[/b] [/quote] - -Нельзя: -[b][b]текст[/b][/b] -``` - -Создайте регулярное выражение для поиска ББ-тегов и их содержимого. - -Например: - -```js -var re = /* регулярка */ - -var str = "..[url]http://ya.ru[/url].."; -alert( str.match(re) ); // [url]http://ya.ru[/url] -``` - -Если теги вложены, то нужно искать самый внешний тег (при желании можно будет продолжить поиск в его содержимом): - -```js -var re = /* регулярка */ - -var str = "..[url][b]http://ya.ru[/b][/url].."; -alert( str.match(re) ); // [url][b]http://ya.ru[/b][/url] -``` - diff --git a/10-regular-expressions-javascript/8-regexp-backreferences/article.md b/10-regular-expressions-javascript/8-regexp-backreferences/article.md deleted file mode 100644 index 3814da12..00000000 --- a/10-regular-expressions-javascript/8-regexp-backreferences/article.md +++ /dev/null @@ -1,68 +0,0 @@ -# Обратные ссылки: \n и $n - -Скобочные группы можно не только получать в результате. - -Движок регулярных выражений запоминает их содержимое, и затем его можно использовать как в самом паттерне, так и в строке замены. - -[cut] - -## Группа в строке замены - -Ссылки в строке замены имеют вид `$n`, где `n` -- это номер скобочной группы. - -Вместо `$n` подставляется содержимое соответствующей скобки: - -```js -//+ run -var name = "Александр Пушкин"; - -name = name.replace(/([а-яё]+) ([а-яё]+)/i, *!*"$2, $1"*/!*); -alert( name ); // Пушкин, Александр -``` - -В примере выше вместо $2 подставляется второе найденное слово, а вместо $1 -- первое. - -## Группа в шаблоне - -Выше был пример использования содержимого групп в строке замены. Это удобно, когда нужно реорганизовать содержимое или создать новое с использованием старого. - -Но к скобочной группе можно также обратиться в самом поисковом шаблоне, ссылкой вида `\номер`. - -Чтобы было яснее, рассмотрим это на реальной задаче -- необходимо найти в тексте строку в кавычках. Причём кавычки могут быть одинарными '...' или двойными "..." -- и то и другое должно искаться корректно. - -Как такие строки искать? - -Можно в регэкспе предусмотреть произвольные кавычки: `['"](.*?)['"]`. Такой регэксп найдёт строки вида "...", '...', но он даст неверный ответ в случае, если одна кавычка ненароком оказалась внутри другой, как например в строке "She's the one!": - -```js -//+ run -str = "He said: \"She's the one!\"."; - -reg = /['"](.*?)['"]/g; - -// Результат не соответствует замыслу -alert( str.match(reg) ); // "She' -``` - -Как видно, регэксп нашёл открывающую кавычку ", затем текст, вплоть до новой кавычки ', которая закрывает соответствие. - -Для того, чтобы попросить регэксп искать закрывающую кавычку -- такую же, как открывающую, мы обернём её в скобочную группу и используем обратную ссылку на неё: - -```js -//+ run -str = "He said: \"She's the one!\"."; - -reg = /(['"])(.*?)\1/g; - -alert( str.match(reg) ); // "She's the one!" -``` - -Теперь работает верно! Движок регулярных выражений, найдя первое скобочное выражение -- кавычку (['"]), запоминает его и далее \1 означает "найти то же самое, что в первой скобочной группе". - -Обратим внимание на два нюанса: - -
      -
    • Чтобы использовать скобочную группу в строке замены -- нужно использовать ссылку вида `$1`, а в шаблоне -- обратный слэш: `\1`.
    • -
    • Чтобы в принципе иметь возможность обратиться к скобочной группе -- не важно откуда, она не должна быть исключена из запоминаемых при помощи `?:`. Скобочные группы вида `(?:...)` не участвуют в нумерации.
    • -
    - diff --git a/10-regular-expressions-javascript/9-regexp-alternation/1-find-programming-language/solution.md b/10-regular-expressions-javascript/9-regexp-alternation/1-find-programming-language/solution.md deleted file mode 100644 index 483f818e..00000000 --- a/10-regular-expressions-javascript/9-regexp-alternation/1-find-programming-language/solution.md +++ /dev/null @@ -1,36 +0,0 @@ -Сначала неправильный способ. - -Если перечислить языки один за другим через `|`, то получится совсем не то: - -```js -//+ run -var reg = /Java|JavaScript|PHP|C|C\+\+/g; - -var str = "Java, JavaScript, PHP, C, C++"; - -alert( str.match(reg) ); // Java,Java,PHP,C,C -``` - -Как видно, движок регулярных выражений ищет альтернации в порядке их перечисления. То есть, он сначала смотрит, есть ли Java, а если нет -- ищет JavaScript. - -Естественно, при этом JavaScript не будет найдено никогда. - -То же самое -- с языками C и C++. - -Есть два решения проблемы: - -
      -
    1. Поменять порядок, чтобы более длинное совпадение проверялось первым: JavaScript|Java|C\+\+|C|PHP.
    2. -
    3. Соединить длинный вариант с коротким: Java(Script)?|C(\+\+)?|PHP.
    4. -
    - -В действии: - -```js -//+ run -var reg = /Java(Script)?|C(\+\+)?|PHP/g; - -var str = "Java, JavaScript, PHP, C, C++"; - -alert( str.match(reg) ); // Java,JavaScript,PHP,C,C++ -``` diff --git a/10-regular-expressions-javascript/9-regexp-alternation/1-find-programming-language/task.md b/10-regular-expressions-javascript/9-regexp-alternation/1-find-programming-language/task.md deleted file mode 100644 index b93570f3..00000000 --- a/10-regular-expressions-javascript/9-regexp-alternation/1-find-programming-language/task.md +++ /dev/null @@ -1,6 +0,0 @@ -# Найдите языки программирования - -Существует много языков программирования, например Java, JavaScript, PHP, C, C++. - -Напишите регулярное выражение, которое найдёт их все в строке "Java JavaScript PHP C++ C" - diff --git a/10-regular-expressions-javascript/9-regexp-alternation/2-match-quoted-string/solution.md b/10-regular-expressions-javascript/9-regexp-alternation/2-match-quoted-string/solution.md deleted file mode 100644 index c959b6fa..00000000 --- a/10-regular-expressions-javascript/9-regexp-alternation/2-match-quoted-string/solution.md +++ /dev/null @@ -1,19 +0,0 @@ -Решение задачи: /"(\\.|[^"\\])*"/g. - -То есть: -
      -
    • Сначала ищем кавычку "
    • -
    • Затем, если далее слэш \\ (удвоение слэша -- техническое, для вставки в регэксп, на самом деле там один слэш), то после него также подойдёт любой символ (точка).
    • -
    • Если не слэш, то берём любой символ, кроме кавычек (которые будут означать конец строки) и слэша (чтобы предотвратить одинокие слэши, сам по себе единственный слэш не нужен, он должен экранировать какой-то символ) [^"\\]
    • -
    • ...И так жадно, до закрывающей кавычки.
    • -
    - -В действии: - -```js -//+ run -var re = /"(\\.|[^"\\])*"/g; -var str = '.. "test me" .. "Скажи \\"Привет\\"!" .. "\\r\\n\\\\" ..'; - -alert( str.match(re) ); // "test me","Скажи \"Привет\"!","\r\n\\" -``` \ No newline at end of file diff --git a/10-regular-expressions-javascript/9-regexp-alternation/2-match-quoted-string/task.md b/10-regular-expressions-javascript/9-regexp-alternation/2-match-quoted-string/task.md deleted file mode 100644 index 4db27891..00000000 --- a/10-regular-expressions-javascript/9-regexp-alternation/2-match-quoted-string/task.md +++ /dev/null @@ -1,26 +0,0 @@ -# Найдите строки в кавычках - -Найдите в тексте при помощи регэкспа строки в двойных кавычках "...". - -В строке поддерживается экранирование при помощи слеша -- примерно в таком же виде, как в обычных строках JavaScript. То есть, строка может содержать любые символы, экранированные слэшем, в частности: \", \n, и даже сам слэш в экранированном виде: \\. - -Здесь особо важно, что двойная кавычка после слэша не оканчивает строку, а считается её частью. В этом и состоит основная сложность задачи, которая без этого условия была бы элементарной. - -Пример совпадающих строк: -```js -.. *!*"test me"*/!* .. (обычная строка) -.. *!*"Скажи \"Привет\"!"*/!* ... (строка с кавычками внутри) -.. *!*"\r\n\\"*/!* .. (строка со спец. символами и слэшем внутри) -``` - -Заметим, что в JavaScript такие строки удобнее всего задавать в одинарных кавычках, и слеши придётся удвоить (в одинарных кавычках они являются экранирующими символами): - -Пример задания тестовой строки в JavaScript: -```js -//+ run -var str = ' .. "test me" .. "Скажи \\"Привет\\"!" .. "\\r\\n\\\\" .. '; - -// эта строка будет такой: -alert(str); // .. "test me" .. "Скажи \"Привет\"!" .. "\r\n\\" .. -``` - diff --git a/10-regular-expressions-javascript/9-regexp-alternation/3-match-exact-tag/solution.md b/10-regular-expressions-javascript/9-regexp-alternation/3-match-exact-tag/solution.md deleted file mode 100644 index 0a422af1..00000000 --- a/10-regular-expressions-javascript/9-regexp-alternation/3-match-exact-tag/solution.md +++ /dev/null @@ -1,18 +0,0 @@ - -Начало шаблона очевидно: ``pattern``, так как ``match`` удовлетворяет этому регэкспу. - -Нужно уточнить его. После ``match`|\s.*?>)`. - -В действии: - -```js -//+ run -var re = /|\s.*?>)/g; - -alert( " - - - - -
    - hh:mm:ss -
    - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/11-modifying-document/10-clock-setinterval/source.view/index.html b/2-ui/1-document/11-modifying-document/10-clock-setinterval/source.view/index.html deleted file mode 100644 index 9120728f..00000000 --- a/2-ui/1-document/11-modifying-document/10-clock-setinterval/source.view/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/11-modifying-document/10-clock-setinterval/task.md b/2-ui/1-document/11-modifying-document/10-clock-setinterval/task.md deleted file mode 100644 index e422846b..00000000 --- a/2-ui/1-document/11-modifying-document/10-clock-setinterval/task.md +++ /dev/null @@ -1,8 +0,0 @@ -# Часики с использованием "setInterval" - -[importance 4] - -Создайте цветные часики как в примере ниже: - -[iframe src="solution" height=100] - diff --git a/2-ui/1-document/11-modifying-document/2-remove-polyfill/solution.md b/2-ui/1-document/11-modifying-document/2-remove-polyfill/solution.md deleted file mode 100644 index bd99772f..00000000 --- a/2-ui/1-document/11-modifying-document/2-remove-polyfill/solution.md +++ /dev/null @@ -1,23 +0,0 @@ -Родителя `parentNode` можно получить из `elem`. - -Вот так выглядит решение: -```html -//+ run -
    Это
    -
    Все
    -
    Элементы DOM
    - - -``` \ No newline at end of file diff --git a/2-ui/1-document/11-modifying-document/2-remove-polyfill/task.md b/2-ui/1-document/11-modifying-document/2-remove-polyfill/task.md deleted file mode 100644 index a212fdc0..00000000 --- a/2-ui/1-document/11-modifying-document/2-remove-polyfill/task.md +++ /dev/null @@ -1,28 +0,0 @@ -# Удаление элементов - -[importance 5] - -Напишите полифилл для метода `remove` для старых браузеров. - -Вызов `elem.remove()`: -
      -
    • Если у `elem` нет родителя -- ничего не делает.
    • -
    • Если есть -- удаляет элемент из родителя.
    • -
    - -```html -
    Это
    -
    Все
    -
    Элементы DOM
    - - -``` - diff --git a/2-ui/1-document/11-modifying-document/3-insert-after/solution.md b/2-ui/1-document/11-modifying-document/3-insert-after/solution.md deleted file mode 100644 index 4436bdcb..00000000 --- a/2-ui/1-document/11-modifying-document/3-insert-after/solution.md +++ /dev/null @@ -1,29 +0,0 @@ -Для того, чтобы добавить элемент *после* `refElem`, мы можем, используя `insertBefore`, вставить его *перед* `refElem.nextSibling`. - -Но что если `nextSibling` нет? Это означает, что `refElem` является последним потомком своего родителя и можем использовать `appendChild`. - -Код: - -```js -function insertAfter(elem, refElem) { - var parent = refElem.parentNode; - var next = refElem.nextSibling; - if (next) { - return parent.insertBefore(elem, next); - } else { - return parent.appendChild(elem); - } -} -``` - -Но код может быть гораздо короче, если вспомнить, что `insertBefore` со вторым аргументом null работает как `appendChild`: - -```js -function insertAfter(elem, refElem) { - return refElem.parentNode.insertBefore(elem, refElem.nextSibling); -} -``` - -Если нет `nextSibling`, то второй аргумент `insertBefore` становится `null` и тогда `insertBefore(elem, null)` осуществит вставку в конец, как и требуется. - -В решении нет проверки на существование `refElem.parentNode`, поскольку вставка после элемента без родителя -- уже ошибка, пусть она возникнет в функции, это нормально. \ No newline at end of file diff --git a/2-ui/1-document/11-modifying-document/3-insert-after/task.md b/2-ui/1-document/11-modifying-document/3-insert-after/task.md deleted file mode 100644 index d5fa5329..00000000 --- a/2-ui/1-document/11-modifying-document/3-insert-after/task.md +++ /dev/null @@ -1,26 +0,0 @@ -# insertAfter - -[importance 5] - -Напишите функцию `insertAfter(elem, refElem)`, которая добавит `elem` после узла `refElem`. - -```html -
    Это
    -
    Элементы
    - - -``` - diff --git a/2-ui/1-document/11-modifying-document/4-remove-children/solution.md b/2-ui/1-document/11-modifying-document/4-remove-children/solution.md deleted file mode 100644 index 3ca743c4..00000000 --- a/2-ui/1-document/11-modifying-document/4-remove-children/solution.md +++ /dev/null @@ -1,54 +0,0 @@ -# Неправильное решение - -Для начала рассмотрим забавный пример того, как делать *не надо*: - -```js -function removeChildren(elem) { - for (var k = 0; k < elem.childNodes.length; k++) { - elem.removeChild(elem.childNodes[k]); - } -} -``` - -Если вы попробуете это на практике, то увидите, то это не сработает. - -Не сработает потому, что коллекция `childNodes` всегда начинается с индекса 0 и автоматически обновляется, когда первый потомок удален(т.е. тот, что был вторым, станет первым). А переменная `k` в цикле всё время увеличивается, поэтому такой цикл пропустит половину узлов. - -# Решение через DOM - -Правильное решение: - -```js -function removeChildren(elem) { - while (elem.lastChild) { - elem.removeChild(elem.lastChild); - } -} -``` - -# Альтернатива через innerHTML - -Можно и просто обнулить содержимое через `innerHTML`: - -```js -function removeChildren(elem) { - elem.innerHTML = ''; -} -``` - -Это не будет работать в IE8- для таблиц, так как на большинстве табличных элементов (кроме ячеек `TH/TD`) в старых IE запрещено менять `innerHTML`. - -Впрочем, можно завернуть `innerHTML` в `try/catch`: - -```js -function removeChildren(elem) { - try { - elem.innerHTML = ''; - } catch (e) { - while (elem.firstChild) { - elem.removeChild(elem.firstChild); - } - } -} -``` - diff --git a/2-ui/1-document/11-modifying-document/4-remove-children/task.md b/2-ui/1-document/11-modifying-document/4-remove-children/task.md deleted file mode 100644 index e6b7cb74..00000000 --- a/2-ui/1-document/11-modifying-document/4-remove-children/task.md +++ /dev/null @@ -1,29 +0,0 @@ -# removeChildren - -[importance 5] - -Напишите функцию `removeChildren`, которая удаляет всех потомков элемента. - -```html - - - - - - -
    ЭтоВсеЭлементы DOM
    - -
      -
    1. Вася
    2. -
    3. Петя
    4. -
    5. Маша
    6. -
    7. Даша
    8. -
    - - -``` diff --git a/2-ui/1-document/11-modifying-document/5-why-aaa/solution.md b/2-ui/1-document/11-modifying-document/5-why-aaa/solution.md deleted file mode 100644 index 452540b9..00000000 --- a/2-ui/1-document/11-modifying-document/5-why-aaa/solution.md +++ /dev/null @@ -1,5 +0,0 @@ -HTML в задаче некорректен. В этом всё дело. И вопрос легко решится, если открыть отладчик. - -В нём видно, что браузер поместил текст `aaa` *перед* таблицей. Поэтому он и остался в документе. - -Вообще, в стандарте HTML5 описано, как браузеру обрабатывать некорректный HTML, так что такое действие браузера является правильным. \ No newline at end of file diff --git a/2-ui/1-document/11-modifying-document/5-why-aaa/task.md b/2-ui/1-document/11-modifying-document/5-why-aaa/task.md deleted file mode 100644 index d0d6d4df..00000000 --- a/2-ui/1-document/11-modifying-document/5-why-aaa/task.md +++ /dev/null @@ -1,25 +0,0 @@ -# Почему остаётся "ааа" ? - -[importance 1] - -Запустите этот пример. Почему вызов `removeChild` не удалил текст `"aaa"`? - -```html - - - aaa - - - -
    Test
    - - -``` - diff --git a/2-ui/1-document/11-modifying-document/6-create-list/solution.md b/2-ui/1-document/11-modifying-document/6-create-list/solution.md deleted file mode 100644 index f3689eb4..00000000 --- a/2-ui/1-document/11-modifying-document/6-create-list/solution.md +++ /dev/null @@ -1,4 +0,0 @@ - -Делаем цикл, пока посетитель что-то вводит -- добавляет `
  • `. - -Содержимое в `
  • ` присваиваем через `document.createTextNode`, чтобы правильно работали <, > и т.д. diff --git a/2-ui/1-document/11-modifying-document/6-create-list/solution.view/index.html b/2-ui/1-document/11-modifying-document/6-create-list/solution.view/index.html deleted file mode 100755 index 254844e3..00000000 --- a/2-ui/1-document/11-modifying-document/6-create-list/solution.view/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - -

    Создание списка

    - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/11-modifying-document/6-create-list/task.md b/2-ui/1-document/11-modifying-document/6-create-list/task.md deleted file mode 100644 index f703837f..00000000 --- a/2-ui/1-document/11-modifying-document/6-create-list/task.md +++ /dev/null @@ -1,18 +0,0 @@ -# Создать список - -[importance 4] - -Напишите интерфейс для создания списка. - -Для каждого пункта: -
      -
    1. Запрашивайте содержимое пункта у пользователя с помощью `prompt`.
    2. -
    3. Создавайте пункт и добавляйте его к `UL`.
    4. -
    5. Процесс прерывается, когда пользователь нажимает ESC или вводит пустую строку.
    6. -
    - -**Все элементы должны создаваться динамически.** - -Если посетитель вводит теги -- пусть в списке они показываются как обычный текст. - -[demo src="solution"] diff --git a/2-ui/1-document/11-modifying-document/7-create-object-tree/build-tree-dom.view/index.html b/2-ui/1-document/11-modifying-document/7-create-object-tree/build-tree-dom.view/index.html deleted file mode 100755 index 50428719..00000000 --- a/2-ui/1-document/11-modifying-document/7-create-object-tree/build-tree-dom.view/index.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - -
    - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/11-modifying-document/7-create-object-tree/solution.md b/2-ui/1-document/11-modifying-document/7-create-object-tree/solution.md deleted file mode 100644 index ff334e70..00000000 --- a/2-ui/1-document/11-modifying-document/7-create-object-tree/solution.md +++ /dev/null @@ -1,6 +0,0 @@ -Решения через рекурсию. - -
      -
    1. [edit src="solution"]Через innerHTML[/edit].
    2. -
    3. [edit src="build-tree-dom"]Через DOM[/edit].
    4. -
    \ No newline at end of file diff --git a/2-ui/1-document/11-modifying-document/7-create-object-tree/solution.view/index.html b/2-ui/1-document/11-modifying-document/7-create-object-tree/solution.view/index.html deleted file mode 100755 index fc4cae62..00000000 --- a/2-ui/1-document/11-modifying-document/7-create-object-tree/solution.view/index.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - -
    - - - - - \ No newline at end of file diff --git a/2-ui/1-document/11-modifying-document/7-create-object-tree/source.view/index.html b/2-ui/1-document/11-modifying-document/7-create-object-tree/source.view/index.html deleted file mode 100755 index 9a64f587..00000000 --- a/2-ui/1-document/11-modifying-document/7-create-object-tree/source.view/index.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - -
    - - - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/11-modifying-document/7-create-object-tree/task.md b/2-ui/1-document/11-modifying-document/7-create-object-tree/task.md deleted file mode 100644 index 25eb80be..00000000 --- a/2-ui/1-document/11-modifying-document/7-create-object-tree/task.md +++ /dev/null @@ -1,50 +0,0 @@ -# Создайте дерево из объекта - -[importance 5] - -Напишите функцию, которая создаёт вложенный список `UL/LI` (дерево) из объекта. - -Например: - -```js -var data = { - "Рыбы": { - "Форель": {}, - "Щука": {} - }, - - "Деревья": { - "Хвойные": { - "Лиственница": {}, - "Ель": {} - }, - "Цветковые": { - "Берёза": {}, - "Тополь": {} - } - } -}; -``` - -Синтаксис: - -```js -var container = document.getElementById('container'); -*!* -createTree(container, data); // создаёт -*/!* -``` - -Результат (дерево): - -[iframe border=1 src="solution"] - -Выберите один из двух способов решения этой задачи: -
      -
    1. Создать строку, а затем присвоить через `container.innerHTML`.
    2. -
    3. Создавать узлы через методы DOM.
    4. -
    - -Если получится -- сделайте оба. - -P.S. Желательно, чтобы в дереве не было лишних элементов, в частности -- пустых `
      ` на нижнем уровне. \ No newline at end of file diff --git a/2-ui/1-document/11-modifying-document/8-tree-count/solution.md b/2-ui/1-document/11-modifying-document/8-tree-count/solution.md deleted file mode 100644 index 539da988..00000000 --- a/2-ui/1-document/11-modifying-document/8-tree-count/solution.md +++ /dev/null @@ -1,8 +0,0 @@ -# Подсказки - -
        -
      1. Получить количество вложенных узлов можно через `elem.getElementsByTagName('*').length`.
      2. -
      3. Текст в начале `
      4. ` доступен как `li.firstChild`, его содержимое -- `li.firstChild.data`.
      5. -
      - -# Решение \ No newline at end of file diff --git a/2-ui/1-document/11-modifying-document/8-tree-count/solution.view/index.html b/2-ui/1-document/11-modifying-document/8-tree-count/solution.view/index.html deleted file mode 100644 index 736bfa9f..00000000 --- a/2-ui/1-document/11-modifying-document/8-tree-count/solution.view/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - -
        -
      • Животные -
          -
        • Млекопитающие -
            -
          • Коровы
          • -
          • Ослы
          • -
          • Собаки
          • -
          • Тигры
          • -
          -
        • -
        • Другие -
            -
          • Змеи
          • -
          • Птицы
          • -
          • Ящерицы
          • -
          -
        • -
        -
      • -
      • Рыбы -
          -
        • Аквариумные -
            -
          • Гуппи
          • -
          • Скалярии
          • -
          - -
        • -
        • Морские -
            -
          • Морская форель
          • -
          -
        • -
        -
      • -
      - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/11-modifying-document/8-tree-count/source.view/index.html b/2-ui/1-document/11-modifying-document/8-tree-count/source.view/index.html deleted file mode 100644 index 2f45460c..00000000 --- a/2-ui/1-document/11-modifying-document/8-tree-count/source.view/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - -
        -
      • Животные -
          -
        • Млекопитающие -
            -
          • Коровы
          • -
          • Ослы
          • -
          • Собаки
          • -
          • Тигры
          • -
          -
        • -
        • Другие -
            -
          • Змеи
          • -
          • Птицы
          • -
          • Ящерицы
          • -
          -
        • -
        -
      • -
      • Рыбы -
          -
        • Аквариумные -
            -
          • Гуппи
          • -
          • Скалярии
          • -
          - -
        • -
        • Морские -
            -
          • Морская форель
          • -
          -
        • -
        -
      • -
      - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/11-modifying-document/8-tree-count/task.md b/2-ui/1-document/11-modifying-document/8-tree-count/task.md deleted file mode 100644 index ac6993b7..00000000 --- a/2-ui/1-document/11-modifying-document/8-tree-count/task.md +++ /dev/null @@ -1,10 +0,0 @@ -# Дерево - -[importance 5] - -Есть дерево [edit src="source"]в песочнице[/edit]. - -Напишите код, который добавит каждому элементу списка `
    • 3
    • 4
    • 5
    • "); -``` - diff --git a/2-ui/1-document/12-multi-insert/1-append-to-list/task.md b/2-ui/1-document/12-multi-insert/1-append-to-list/task.md deleted file mode 100644 index 88c334f6..00000000 --- a/2-ui/1-document/12-multi-insert/1-append-to-list/task.md +++ /dev/null @@ -1,15 +0,0 @@ -# Вставьте элементы в конец списка - -[importance 5] - -Напишите код для вставки текста `html` в конец списка `ul` с использованием метода `insertAdjacentHTML`. Такая вставка, в отличие от присвоения `innerHTML+=`, не будет перезаписывать текущее содержимое. - -Добавьте к списку ниже элементы `
    • 3
    • 4
    • 5
    • `: - -```html -
        -
      • 1
      • -
      • 2
      • -
      -``` - diff --git a/2-ui/1-document/12-multi-insert/2-sort-table-performance/solution.md b/2-ui/1-document/12-multi-insert/2-sort-table-performance/solution.md deleted file mode 100644 index bd110879..00000000 --- a/2-ui/1-document/12-multi-insert/2-sort-table-performance/solution.md +++ /dev/null @@ -1,11 +0,0 @@ -Для сортировки нам поможет функция `sort` массива. - -Общая идея лежит на поверхности: сделать массив из строк и отсортировать его. Тонкости кроются в деталях. - -В ифрейме ниже загружен документ, описывающий и реализующий разные алгоритмы. Обратите внимание: разница в производительности может достигать нескольких раз! - -[iframe height=800 border=1 src="solution" link edit] - -P.S. Создавать `DocumentFragment` здесь ни к чему. Можно вытащить из документа `TBODY` и иметь дело с ним в отрыве от DOM (алгоритм 4). - -P.P.S. Если нужно сделать много узлов, то обычно `innerHTML` работает быстрее, чем удаление и вставка элементов через DOM-вызовы. То есть, сгенерировать таблицу заново эффективнее. diff --git a/2-ui/1-document/12-multi-insert/2-sort-table-performance/solution.view/index.html b/2-ui/1-document/12-multi-insert/2-sort-table-performance/solution.view/index.html deleted file mode 100644 index 9f249c03..00000000 --- a/2-ui/1-document/12-multi-insert/2-sort-table-performance/solution.view/index.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - -
      - Алгоритм 1. -
        -
      1. Все TR удалить из таблицы, при этом собрав их в JavaScript-массив.
      2. -
      3. Отсортировать этот массив, используя свою функцию в sort(...) для сравнения TR
      4. -
      5. Добавить TR из массива в таблицу в нужном порядке
      6. -
      - -
      - -
      - Алгоритм 2. -
        -
      1. Скопировать TR в JavaScript-массив.
      2. -
      3. Отсортировать этот массив, используя свою функцию в sort(...) для сравнения TR
      4. -
      5. Добавить TR из массива в таблицу в нужном порядке. При добавлении каждый TR сам удалится с предыдущего места.
      6. -
      - -
      - - -
      - Алгоритм 3. -
        -
      1. Создать массив из объектов вида {elem: ссылка на TR, value: содержимое TR}.
      2. -
      3. Отсортировать массив по value. Функция сравнения во время сортировки теперь будет обращаться не к innerHTML, а к свойству объекта, это быстрее. Сортировка может потребовать многократных сравнений одного и того же элемента, - отсюда выигрыш.
      4. -
      5. Добавить TR в таблицу в нужном порядке (автоудалятся с предыдущего места).
      6. -
      - -
      - - -
      - Алгоритм 4. -
        -
      1. Выполнить алгоритм 3, но перед этим удалить таблицу из документа, а после - вставить обратно.
      2. -
      - -
      - -
      - Алгоритм 5. -
        -
      1. Замерить время генерации таблицы (создаётся строка и пишется в innerHTML).
      2. -
      - -
      - -
      - - - - - - -

      Содержимое документа для придания "реалистичности"

      - -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      -
      01234567890123456789012345678901234567890123456789
      - - - - - \ No newline at end of file diff --git a/2-ui/1-document/12-multi-insert/2-sort-table-performance/task.md b/2-ui/1-document/12-multi-insert/2-sort-table-performance/task.md deleted file mode 100644 index 600836e0..00000000 --- a/2-ui/1-document/12-multi-insert/2-sort-table-performance/task.md +++ /dev/null @@ -1,48 +0,0 @@ -# Отсортировать таблицу - -[importance 5] - -Есть таблица: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      ИмяФамилияОтчествоВозраст
      ВасяПетровАлександрович10
      ПетяИвановПетрович15
      ВладимирЛенинИльич9
      ............
      - -Строк в таблице много: может быть 20, 50, 100.. Есть и другие элементы в документе. - -Как бы вы предложили отсортировать содержимое таблицы по полю `Возраст`? Обдумайте алгоритм, реализуйте его. - -Как сделать, чтобы сортировка работала как можно быстрее? А если в таблице 10000 строк (бывает и такое)? - -P.S. Может ли здесь помочь `DocumentFragment`? - -P.P.S. Если предположить, что у нас заранее есть массив данных для таблицы в JavaScript -- что быстрее: отсортировать эту таблицу или сгенерировать новую? \ No newline at end of file diff --git a/2-ui/1-document/12-multi-insert/article.md b/2-ui/1-document/12-multi-insert/article.md deleted file mode 100644 index 80c7576e..00000000 --- a/2-ui/1-document/12-multi-insert/article.md +++ /dev/null @@ -1,362 +0,0 @@ -# Мультивставка: insertAdjacentHTML и DocumentFragment - -Обычные методы вставки работают с одним узлом. Но есть и способы вставлять множество узлов одновременно. -[cut] -## Оптимизация вставки в документ - -Рассмотрим задачу: сгенерировать список `UL/LI`. - -Есть две возможных последовательности: - -
        -
      1. Сначала вставить `UL` в документ, а потом добавить к нему `LI`: - -```js -var ul = document.createElement('ul'); -document.body.appendChild(ul); // сначала в документ -for (...) ul.appendChild(li); // потом узлы -``` - -
      2. -
      3. Полностью создать список "вне DOM", а потом -- вставить в документ: - -```js -//+ no-beautify -var ul = document.createElement('ul'); -for(...) ul.appendChild(li); // сначала вставить узлы -document.body.appendChild(ul); // затем в документ -``` - -
      4. -
      - -Как ни странно, между этими последовательностями есть разница. В большинстве браузеров, второй вариант -- быстрее. - -Почему же? Иногда говорят: "потому что браузер перерисовывает каждый раз при добавлении элемента". Это не так. Дело вовсе не в перерисовке. - -Браузер достаточно "умён", чтобы ничего не перерисовывать понапрасну. В большинстве случаев процессы перерисовки и сопутствующие вычисления будут отложены до окончания работы скрипта, и на тот момент уже совершенно без разницы, в какой последовательности были изменены узлы. - -**Тем не менее, при вставке узла происходят разные внутренние события и обновления внутренних структур данных, скрытые от наших глаз.** - -Что именно происходит -- зависит от конкретной, внутренней браузерной реализации DOM, но это отнимает время. Конечно, браузеры развиваются и стараются свести лишние действия к минимуму. - -[online] -### Бенчмарк [#insert-bench-tbody] - -Чтобы легко проверить текущее состояние дел -- вот два бенчмарка. - -Оба они создают таблицу 20x20, наполняя TBODY элементами TR/TD. - -При этом первый вставляет все в документ тут же, второй -- задерживает вставку TBODY в документ до конца процесса. - -Кликните, чтобы запустить. - - - -
      - -Код для тестов находится в файле [insert-bench.js](insert-bench.js). - -[/online] -## Добавление множества узлов - -Продолжим работать со вставкой узлов. - -Рассмотрим случай, когда в документе *уже есть* большой список `UL`. И тут понадобилось срочно добавить еще 20 элементов `LI`. - -Как это сделать? - -Если новые элементы пришли в виде строки, то можно попробовать добавить их так: - -```js -ul.innerHTML += "
    • 1
    • 2
    • ..."; -``` - -Но операцию `ul.innerHTML += "..."` можно по-другому переписать как `ul.innerHTML = ul.innerHTML + "..."`. Иначе говоря, она *не прибавляет, а заменяет* всё содержимое списка на дополненную строку. Это и нехорошо с точки зрения производительности, но и будут побочные эффекты. В частности, все внешние ресурсы (картинки) внутри перезаписываемого `innerHTML` будут загружены заново. Если в каких-то переменных были ссылки на элементы списка -- они станут неверны, так как содержимое полностью заменяется.В общем, так лучше не делать. - -А если нужно вставить в середину списка? Здесь `innerHTML` вообще не поможет. - -Можно, конечно, вставить строку во временный DOM-элемент и перенести оттуда элементы, но есть и гораздо лучший вариант: метод `insertAdjacentHTML`! - -## insertAdjacent* - -Метод [insertAdjacentHTML](https://developer.mozilla.org/en/DOM/element.insertAdjacentHTML) позволяет вставлять произвольный HTML в любое место документа, в том числе *и между узлами*! - -Он поддерживается всеми браузерами, кроме Firefox меньше версии 8, ну а там его можно эмулировать. - -Синтаксис: - -```js -elem.insertAdjacentHTML(where, html); -``` - -
      -
      `html`
      -
      Строка HTML, которую нужно вставить
      -
      `where`
      -
      Куда по отношению к `elem` вставлять строку. Всего четыре варианта: -
        -
      1. `beforeBegin` -- перед `elem`.
      2. -
      3. `afterBegin` -- внутрь `elem`, в самое начало.
      4. -
      5. `beforeEnd` -- внутрь `elem`, в конец.
      6. -
      7. `afterEnd` -- после `elem`.
      8. -
      -
      - - - -Например, вставим пропущенные элементы списка *перед* `
    • 5
    • `: - -```html - -
        -
      • 1
      • -
      • 2
      • -
      • 5
      • -
      - - -``` - -Единственный недостаток этого метода -- он не работает в Firefox до версии 8. Но его можно легко добавить, используя [полифилл insertAdjacentHTML для Firefox](insertAdjacentFF.js). - -У этого метода есть "близнецы-братья", которые поддерживаются везде, кроме Firefox, но в него они добавляются тем же полифиллом: - -
        -
      • [elem.insertAdjacentElement(where, newElem)](http://help.dottoro.com/ljbreokf.php) -- вставляет в произвольное место не строку HTML, а элемент `newElem`.
      • -
      • [elem.insertAdjacentText(where, text)](http://help.dottoro.com/ljrsluxu.php) -- создаёт текстовый узел из строки `text` и вставляет его в указанное место относительно `elem`.
      • -
      - -Синтаксис этих методов, за исключением последнего параметра, полностью совпадает с `insertAdjacentHTML`. Вместе они образуют "универсальный швейцарский нож" для вставки чего угодно куда угодно. - -## DocumentFragment - -[warn header="Важно для старых браузеров"] -Оптимизация, о которой здесь идёт речь, важна в первую очередь для старых браузеров, включая IE9-. В современных браузерах эффект от нее, как правило, небольшой, а иногда может быть и отрицательным. -[/warn] - -До этого мы говорили о вставке строки в DOM. А что делать в случае, когда надо в существующий `UL` вставить много *DOM-элементов*? - -Можно вставлять их один за другим, вызовом `insertBefore/appendChild`, но при этом получится много операций с большим живым документом. - -**Вставить пачку узлов единовременно поможет `DocumentFragment`. Это особенный *кросс-браузерный* DOM-объект, который похож на обычный DOM-узел, но им не является.** - -Синтаксис для его создания: - -```js -var fragment = document.createDocumentFragment(); -``` - -В него можно добавлять другие узлы. - -```js -fragment.appendChild(node); -``` - -Его можно клонировать: - -```js -fragment.cloneNode(true); // клонирование с подэлементами -``` - -**У `DocumentFragment` нет обычных свойств DOM-узлов, таких как `innerHTML`, `tagName` и т.п. Это не узел.** - -Его "Фишка" заключается в том, что когда `DocumentFragment` вставляется в DOM -- то он исчезает, а вместо него вставляются его дети. Это свойство является уникальной особенностью `DocumentFragment`. - -Например, если добавить в него много `LI`, и потом вызвать `ul.appendChild(fragment)`, то фрагмент растворится, и в DOM вставятся именно `LI`, причём в том же порядке, в котором были во фрагменте. - -Псевдокод: - -```js -// хотим вставить в список UL много LI - -// делаем вспомогательный DocumentFragment -var fragment = document.createDocumentFragment(); - -for (цикл по li) { - fragment.appendChild(list[i]); // вставить каждый LI в DocumentFragment -} - -ul.appendChild(fragment); // вместо фрагмента вставятся элементы списка -``` - -В современных браузерах эффект от такой оптимизации может быть различным, а на небольших документах иногда и отрицательным. - -Понять текущее положение вещей вы можете, запустив следующий [edit src="benchmark"]небольшой бенчмарк[/edit]. - -## append/prepend, before/after, replaceWith - -Сравнительно недавно в [стандарте](https://dom.spec.whatwg.org/) появились методы, которые позволяют вставить что угодно и куда угодно. - -Синтаксис: - -
        -
      • `node.append(...nodes)` -- вставляет `nodes` в конец `node`,
      • -
      • `node.prepend(...nodes)` -- вставляет `nodes` в начало `node`,
      • -
      • `node.after(...nodes)` -- вставляет `nodes` после узла `node`,
      • -
      • `node.before(...nodes)` -- вставляет `nodes` перед узлом `node`,
      • -
      • `node.replaceWith(...nodes)` -- вставляет `nodes` вместо `node`.
      • -
      - -Эти методы ничего не возвращают. - -Во всех этих методах `nodes` -- DOM-узлы или строки, в любом сочетании и количестве. Причём строки вставляются именно как текстовые узлы, в отличие от `insertAdjacentHTML`. - - -Пример (с полифиллом): -```html - - - - - - - - - - - - - - -``` - -## Итого - -
        -
      • Манипуляции, меняющие структуру DOM (вставка, удаление элементов), как правило, быстрее с отдельным маленьким узлом, чем с большим DOM, который находится в документе. - -Конкретная разница зависит от внутренней реализации DOM в браузере.
      • -
      • Семейство методов для вставки HTML/элемента/текста в произвольное место документа: -
          -
        • `elem.insertAdjacentHTML(where, html)`
        • -
        • `elem.insertAdjacentElement(where, node)`
        • -
        • `elem.insertAdjacentText(where, text)`
        • -
        - -Два последних метода не поддерживаются в Firefox, на момент написания текста, но есть небольшой полифилл [insertAdjacentFF.js](insertAdjacentFF.js), который добавляет их. Конечно, он нужен только для Firefox. -
      • -
      • `DocumentFragment` позволяет минимизировать количество вставок в большой живой DOM. Эта оптимизация особо эффективна в старых браузерах, в новых эффект от неё меньше или наоборот отрицательный. - -Элементы сначала вставляются в него, а потом -- он вставляется в DOM. При вставке `DocumentFragment` "растворяется", и вместо него вставляются содержащиеся в нём узлы. - -`DocumentFragment`, в отличие от `insertAdjacent*`, работает с коллекцией DOM-узлов. -
      • -
      • Современные методы, работают с любым количеством узлов и текста, желателен полифилл: -
          -
        • `append/prepend` -- вставка в конец/начало.
        • -
        • `before/after` -- вставка после/перед.
        • -
        • `replaceWith` -- замена.
        • -
        -
      • - -
      - - -[head] - - - -[/head] \ No newline at end of file diff --git a/2-ui/1-document/12-multi-insert/benchmark.view/bench.js b/2-ui/1-document/12-multi-insert/benchmark.view/bench.js deleted file mode 100644 index e06acecb..00000000 --- a/2-ui/1-document/12-multi-insert/benchmark.view/bench.js +++ /dev/null @@ -1,11 +0,0 @@ -function bench(test, times) { - var sum = 0; - for (var i = 0; i < times; i++) { - if (test.setup) test.setup(); - var t = new Date(); - test.work(); - sum += (new Date() - t); - if (test.tearDown) test.tearDown(); - } - return sum; -} \ No newline at end of file diff --git a/2-ui/1-document/12-multi-insert/benchmark.view/documentfragment-bench.js b/2-ui/1-document/12-multi-insert/benchmark.view/documentfragment-bench.js deleted file mode 100644 index 8e875cf1..00000000 --- a/2-ui/1-document/12-multi-insert/benchmark.view/documentfragment-bench.js +++ /dev/null @@ -1,45 +0,0 @@ -var DocumentFragmentTest = new function() { - var benchList = document.getElementById('bench-list'); - - var items = []; - for (var i = 0; i < 100; i++) { - var li = document.createElement('li'); - li.innerHTML = i; - items.push(li); - } - - this.insertPlain = new function() { - - this.setup = function() { - while (benchList.firstChild) { - benchList.removeChild(benchList.firstChild); - } - } - - this.work = function() { - for (var i = 0; i < items.length; i++) { - benchList.appendChild(items[i]); - } - } - - }; - - this.insertDocumentFragment = new function() { - - this.setup = function() { - // очистить всё - while (benchList.firstChild) { - benchList.removeChild(benchList.firstChild); - } - } - - this.work = function() { - var docFrag = document.createDocumentFragment(); - for (var i = 0; i < items.length; i++) { - docFrag.appendChild(items[i]); - } - benchList.appendChild(docFrag); - } - - }; -} \ No newline at end of file diff --git a/2-ui/1-document/12-multi-insert/benchmark.view/index.html b/2-ui/1-document/12-multi-insert/benchmark.view/index.html deleted file mode 100644 index 12fecd91..00000000 --- a/2-ui/1-document/12-multi-insert/benchmark.view/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - Вставляются 100 элементов LI в пустой UL. - - - - - -
        - - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/12-multi-insert/documentfragment-bench.js b/2-ui/1-document/12-multi-insert/documentfragment-bench.js deleted file mode 100755 index 8e875cf1..00000000 --- a/2-ui/1-document/12-multi-insert/documentfragment-bench.js +++ /dev/null @@ -1,45 +0,0 @@ -var DocumentFragmentTest = new function() { - var benchList = document.getElementById('bench-list'); - - var items = []; - for (var i = 0; i < 100; i++) { - var li = document.createElement('li'); - li.innerHTML = i; - items.push(li); - } - - this.insertPlain = new function() { - - this.setup = function() { - while (benchList.firstChild) { - benchList.removeChild(benchList.firstChild); - } - } - - this.work = function() { - for (var i = 0; i < items.length; i++) { - benchList.appendChild(items[i]); - } - } - - }; - - this.insertDocumentFragment = new function() { - - this.setup = function() { - // очистить всё - while (benchList.firstChild) { - benchList.removeChild(benchList.firstChild); - } - } - - this.work = function() { - var docFrag = document.createDocumentFragment(); - for (var i = 0; i < items.length; i++) { - docFrag.appendChild(items[i]); - } - benchList.appendChild(docFrag); - } - - }; -} \ No newline at end of file diff --git a/2-ui/1-document/12-multi-insert/insert-bench.js b/2-ui/1-document/12-multi-insert/insert-bench.js deleted file mode 100755 index 95a9c2a6..00000000 --- a/2-ui/1-document/12-multi-insert/insert-bench.js +++ /dev/null @@ -1,59 +0,0 @@ -/* 1. Вставляет TBODY в документ сразу. а затем элементы */ -var appendFirst = new function() { - var benchTable; - - this.setup = function() { - // очистить всё - benchTable = document.getElementById('bench-table') - while (benchTable.firstChild) { - benchTable.removeChild(benchTable.firstChild); - } - } - - this.work = function() { - // встаить TBODY и элементы - var tbody = document.createElement('TBODY'); - benchTable.appendChild(tbody); - - for (var i = 0; i < 20; i++) { - var tr = document.createElement('TR'); - tbody.appendChild(tr); - for (var j = 0; j < 20; j++) { - var td = document.createElement('td'); - td.appendChild(document.createTextNode('' + i.toString(20) + j.toString(20))); - tr.appendChild(td); - } - } - } - -} - -/* 2. Полностью делает TBODY, а затем вставляет в документ */ -var appendLast = new function() { - var benchTable; - - this.setup = function() { - // очистить всё - benchTable = document.getElementById('bench-table'); - while (benchTable.firstChild) { - benchTable.removeChild(benchTable.firstChild); - } - } - - this.work = function() { - var tbody = document.createElement('TBODY'); - - for (var i = 0; i < 20; i++) { - var tr = document.createElement('TR'); - tbody.appendChild(tr); - for (var j = 0; j < 20; j++) { - var td = document.createElement('td'); - tr.appendChild(td); - td.appendChild(document.createTextNode('' + i.toString(20) + j.toString(20))); - } - } - - benchTable.appendChild(tbody); - } - -} \ No newline at end of file diff --git a/2-ui/1-document/12-multi-insert/insertAdjacentFF.js b/2-ui/1-document/12-multi-insert/insertAdjacentFF.js deleted file mode 100644 index 5d619e44..00000000 --- a/2-ui/1-document/12-multi-insert/insertAdjacentFF.js +++ /dev/null @@ -1,35 +0,0 @@ -// http://learn.javascript.ru/files/tutorial/browser/dom/insertAdjacentFF.js -// Добавляет поддержку insertAdjacent* в Firefox - -if (typeof HTMLElement != "undefined" && !HTMLElement.prototype.insertAdjacentElement) { - HTMLElement.prototype.insertAdjacentElement = function(where, parsedNode) { - switch (where) { - case 'beforeBegin': - this.parentNode.insertBefore(parsedNode, this) - break; - case 'afterBegin': - this.insertBefore(parsedNode, this.firstChild); - break; - case 'beforeEnd': - this.appendChild(parsedNode); - break; - case 'afterEnd': - if (this.nextSibling) this.parentNode.insertBefore(parsedNode, this.nextSibling); - else this.parentNode.appendChild(parsedNode); - break; - } - } - - HTMLElement.prototype.insertAdjacentHTML = function(where, htmlStr) { - var r = this.ownerDocument.createRange(); - r.setStartBefore(this); - var parsedHTML = r.createContextualFragment(htmlStr); - this.insertAdjacentElement(where, parsedHTML) - } - - - HTMLElement.prototype.insertAdjacentText = function(where, txtStr) { - var parsedText = document.createTextNode(txtStr) - this.insertAdjacentElement(where, parsedText) - } -} \ No newline at end of file diff --git a/2-ui/1-document/12-multi-insert/insertAdjacentHTML.png b/2-ui/1-document/12-multi-insert/insertAdjacentHTML.png deleted file mode 100755 index e9ac590bc15db0cc7a6c1c02e28057b04a228dda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2309 zcmX|Ddpy(YAOEtfu(=eaBX^Qp9QP#Tr&Dtqau?PrBJ5D9k-I{Mic!dxNIEpEO~+iO z+)}ebZo^n}spbq>$8daqtJm-Rof`$^&;nL{TX={=En)JzTv{fFPKX0)~Z!2?T;0-?6HmdE3<*&vfCs!dT-134T{dV0F342cA>SS*vtBoIJjV=y!n zlkw^t1l4ydC z4vK{!4*+(lBAkwUU!PbC4oKu!%NeRw>Wue5kKVd(Ag2`f&fSzu13}VKhLIYIj#zeG zjUI(m>Uc&!yBNUfrV~<~WfG}+pSdcov|tiq?@^OL2M$r|ed3PJ&qAk!k2aNpkN5nY zoJNil&}5qkgT=uue?IFs&Uz$b;vE`-yh!t_5?Aj#6=V^eq3F36$enU5^vNp(yp3dh ztMGxSN5e9}a6CeP9ku&hv4*s7sk!o43~_H-pjhNh>tJr~K6zr3dY=O7v!R?qS?v1| z|A;dKy^;HOyfysI&{u!KMZ8T^c}XvGmwuC>bORc~f=`ME<=q#j_xE$M^`K~HRJ9oK zUR-&xJ|jJ{y~(wcOM1cBv@7Zwbgr$^&efaOS({u!$nB7quk~VW;WIzfAJ7$h>Z2Hx zKx342zjF8xHltjqM3yo=enZyw(v0tDyrPhnDXvbe8l+mXy?n}-iUNrlX&A&{*i1g$ zHi9@IHaF1Z@hb%|sDEMpNn5UFGqBveIY$?M!{r_X@@Su27qr5PXEj<>A<8r@U5 zi{;lS+VeQQv8NS0T``_sm`=NXUD3rif=-l)5)KrD5-RR=LYvZ})Rp^Cko`YEw1Zjx z|8QNYy{)ws77`NDo)qZVgWXbsK{GlFkgk2!x%>=Km-X!&$^9h;^Sw0(&!4Hg&nJ}L ziLFH^--vVUxp`Z-{YG;C!V0rS_q>T+wnx9`c8vKKGp2Qywe8~N1x&vhJS%y7;BOj( zhARu5!Y2Ci9!ll4oob)`!iM*%xxIe$3TV7`s0ev2 zcXmYyI6yMq*%oVNtjeb?6s#ubWhP$-QfZ7gEiD&O16ds@?K#b%-P3g*=JoJ0N0m)s zR&|lrt<-XtAe+?7n9aiguBu4ml|0awld~WXAT?p~8}ZpDT^GeAagKBqpJ@C(GrsHg z!3sj8W0?;Btcu0k&kIW%Pb^8RPyP4M4c)HpTf5HJsCUOssO(bLkY*#@UuTs!`n1%q%ZgN1Q$g02hGe+h zW~eguC1x5FDA1^mUYxEu`pQ&kn(EB>aukaiEom*p^a$o$UwwClF|W;=(J9f`-?4wS z8C@ed)xX zyd4~*p<7y^RI#p63LQwgP8AB>FGF+=u*k>uK*-C}5@$w_zHCiQ;q^Z=`j)R*{x&r9 zIDz24>lle$Z`sUn!{rpf424_aq8IXeFB&`-OD$9$^X6?x<%JbeXMeZsO-nNs-|DSQ z2tG#)FNkJ#(LW8VLY^P}uF`w$*;}&OZ2vP0tV+scGWNtabZZn__Wr|H(ng(t&2Tp2 zXhGoYsf|ZdbjbAX1w~qk%na~2!Y+>JFDrG^4hT?aiO@|>zFVEvUXIwgy!D{GMQF~7 z4`x-|Y!FSKZzT5eFgMCF{nAGDyFFziTzGD-4IV^oHbYGei%$&=jJo|{^>uW1$ju_8 z%LqDu!}BalXL>@9Q;r@OE+I=+@#olU4vlsSzcl|vDSdRzs%8(f3>bvmR`VVR>B*1w zwIjLCv@D%G3y@E19$CuzHgazLY;TyEy|R_ieK)z`KTI57&4nXX1E=h_bvaWE4B}gj;=RI{Azq(YhGK%+_CJ-AxC3k`yItGrF+DV+ zLxist-VmEjKNpsH?)^7WM1)=#)U|r-tDS^L5GHX6ch^oIOo}s$RJ!3A1O2HjQR*4+ z^N?`|%R3_YS8)C(KR={Jq)V`##6~xSE`NP8=5N}nQ9N%jVn;%OI;a5={$}6k2m?wrI`2|xct|4nskZ?Il8$>Jfocp| z+<5)kEu}%Tepp<(IvyZWUA#I4tNY0?Ov7N+IQ^Wqq&TJD&rq`qO;OMk8 - - 1 - - 3 - -``` - -**Нет никаких ограничений на содержимое `document.write`**. - -Строка просто пишется в HTML-документ без проверки структуры тегов, как будто она всегда там была. - -Например: - -```html - - - - - - Текст внутри TD. - - -
        -``` - -Также существует метод `document.writeln(str)` -- не менее древний, который добавляет после `str` символ перевода строки `"\n"`. - -## Только до конца загрузки - -Во время загрузки браузер читает документ и тут же строит из него DOM, по мере получения информации достраивая новые и новые узлы, и тут же отображая их. Этот процесс идет непрерывным потоком. Вы наверняка видели это, когда заходили на сайты в качестве посетителя -- браузер зачастую отображает неполный документ, добавляя его новыми узлами по мере их получения. - -**Методы `document.write` и `document.writeln` пишут напрямую в текст документа, до того как браузер построит из него DOM, поэтому они могут записать в документ все, что угодно, любые стили и незакрытые теги.** - -Браузер учтёт их при построении DOM, точно так же, как учитывает очередную порцию HTML-текста. - -Технически, вызвать `document.write` можно в любое время, однако, когда HTML загрузился, и браузер полностью построил DOM, документ становится *"закрытым"*. Попытка дописать что-то в закрытый документ открывает его заново. При этом все текущее содержимое удаляется. - -Текущая страница, скорее всего, уже загрузилась, поэтому если вы нажмёте на эту кнопку -- её содержимое удалится: - -[pre no-typography] - -[/pre] - -Из-за этой особенности `document.write` для загруженных документов не используют. - -[warn header="XHTML и `document.write`"] -В некоторых современных браузерах при получении страницы с заголовком `Content-Type: text/xml` или `Content-Type: text/xhtml+xml` включается "XML-режим" чтения документа. Метод `document.write` при этом не работает. - -Это лишь одна из причин, по которой XML-режим обычно не используют. -[/warn] - - -## Преимущества перед innerHTML - -Метод `document.write` -- динозавр, он существовал десятки миллионов лет назад. С тех пор, как появился и стал стандартным метод `innerHTML`, нужда в нём возникает редко, но некоторые преимущества, всё же, есть. - -
          -
        • Метод `document.write` работает быстрее, фактически это самый быстрый способ добавить на страницу текст, сгенерированный скриптом. - -Это естественно, ведь он не модифицирует существующий DOM, а пишет в текст страницы до его генерации.
        • -
        • Метод `document.write` вставляет любой текст на страницу "как есть", в то время как `innerHTML` может вписать лишь валидный HTML (при попытке подсунуть невалидный -- браузер скорректирует его).
        • -
        - -Эти преимущества являются скорее средством оптимизации, которое нужно использовать именно там, где подобная оптимизация нужна или уместна. - -Однако, `document.write` по своей природе уникален: он добавляет текст "в текущее место документа", без всяких хитроумных DOM. Поэтому он бывает просто-напросто удобен, из-за чего его нередко используют не по назначению. - -## Антипример: реклама - -Например, `document.write` используют для вставки рекламных скриптов и различных счетчиков, когда URL скрипта необходимо генерировать динамически, добавляя в него параметры из JavaScript, например: - -```html - -``` - -[smart] -Закрывающий тег </script> в строке разделён, чтобы браузер не увидел `` и не посчитал его концом скрипта. - -Также используют запись: - -```js -document.write('`: обратный слеш `\` обычно используется для вставки спецсимволов типа `\n`, а если такого спецсимвола нет, в данном случае `\/` не является спецсимволом, то будет проигнорирован. Так что получается такой альтернативный способ безопасно вставить строку ``. -[/smart] - -Сервер, получив запрос с такими параметрами, обрабатывает его и, учитывая переданную информацию, генерирует текст скрипта, в котором обычно есть какой-то другой `document.write`, рисующий на этом месте баннер. - -**Проблема здесь в том, что загрузка такого скрипта блокирует отрисовку всей страницы.** - -То есть, дело даже не в самом `document.write`, а в том, что в страницу вставляется сторонний скрипт, а браузер устроен так, что пока он его не загрузит и не выполнит -- он не будет дальше строить DOM и показывать документ. - -Представим на минуту, что сервер `ads.com`, с которого грузится скрипт, работает медленно или вообще завис -- зависнет и наша страница. - -Что делать? - -В современных браузерах у скриптов есть атрибуты `async` и `defer`, которые разрешают браузеру продолжать обработку страницы, но применить их здесь нельзя, так как рекламный скрипт захочет вызвать `document.write` именно на этом месте, и браузер не должен двигаться вперёд по документу. - -Альтернатива -- использовать другие техники вставки рекламы и счётчиков. Примеры вы можете увидеть в коде Google Analytics, Яндекс.Метрики и других. - -Если это невозможно -- применяют всякие хитрые оптимизации, например заменяют метод `document.write` своей функцией, и она уже разбирается со скриптами и баннерами. - -## Итого - -Метод `document.write` (или `writeln`) пишет текст прямо в HTML, как будто он там всегда был. - -
          -
        • Этот метод редко используется, так как работает только из скриптов, выполняемых в процессе загрузки страницы. - -Запуск после загрузки приведёт к очистке документа.
        • -
        • Метод `document.write` очень быстр. - -В отличие от установки `innerHTML` и DOM-методов, он не изменяет существующий документ, а работает на стадии текста, до того как DOM-структура сформирована.
        • -
        • Иногда `document.write` используют для добавления скриптов с динамическим URL. - -Рекомендуется избегать этого, так как браузер остановится на месте добавления скрипта и будет ждать его загрузки. Если скрипт будет тормозить, то и страница -- тоже. - -Поэтому желательно подключать внешние скрипты, используя вставку скрипта через DOM или `async/defer`. Современные системы рекламы и статистики так и делают. -
        • -
        diff --git a/2-ui/1-document/14-styles-and-classes/1-round-button-javascript/solution.md b/2-ui/1-document/14-styles-and-classes/1-round-button-javascript/solution.md deleted file mode 100644 index c78f0136..00000000 --- a/2-ui/1-document/14-styles-and-classes/1-round-button-javascript/solution.md +++ /dev/null @@ -1,43 +0,0 @@ -Есть два варианта. - -
          -
        1. Можно использовать свойство `elem.style.cssText` и присвоить стиль в текстовом виде. При этом все присвоенные ранее свойства `elem.style` будут удалены.
        2. -
        3. Можно назначить подсвойства `elem.style` одно за другим. Этот способ более безопасен, т.к. меняет только явно присваемые свойства.
        4. -
        - -Мы выберем второй путь. - -[edit src="solution"]Открыть решение[/edit] - -**Описание CSS-свойств:** - -```css -.button { - -moz-border-radius: 8px; - -webkit-border-radius: 8px; - border-radius: 8px; - border: 2px groove green; - display: block; - height: 30px; - line-height: 30px; - width: 100px; - text-decoration: none; - text-align: center; - color: red; - font-weight: bold; -} -``` - -
        -
        `*-border-radius`
        -
        Добавляет скругленные углы. Свойство присваивается в вариантах для Firefox `-moz-...`, Chrome/Safari `-webkit-...` и стандартное CSS3-свойство для тех, кто его поддерживает (Opera).
        -
        `display`
        -
        По умолчанию, у `A` это свойство имеет значение `display: inline`.
        -
        `height`, `line-height`
        -
        Устанавливает высоту и делает текст вертикально центрированным путем установки `line-height` в значение, равное высоте. Такой способ центрирования текста работает, если он состоит из одной строки.
        -
        `text-align`
        -
        Центрирует текст горизонтально.
        -
        `color`, `font-weight`
        -
        Делает текст красным и жирным.
        -
        - diff --git a/2-ui/1-document/14-styles-and-classes/1-round-button-javascript/solution.view/index.html b/2-ui/1-document/14-styles-and-classes/1-round-button-javascript/solution.view/index.html deleted file mode 100755 index bf487e59..00000000 --- a/2-ui/1-document/14-styles-and-classes/1-round-button-javascript/solution.view/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - -
        - Кнопка: - -
        - - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/14-styles-and-classes/1-round-button-javascript/source.view/index.html b/2-ui/1-document/14-styles-and-classes/1-round-button-javascript/source.view/index.html deleted file mode 100755 index 3492198b..00000000 --- a/2-ui/1-document/14-styles-and-classes/1-round-button-javascript/source.view/index.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - -
        - Кнопка: - -
        - - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/14-styles-and-classes/1-round-button-javascript/task.md b/2-ui/1-document/14-styles-and-classes/1-round-button-javascript/task.md deleted file mode 100644 index 78da0a79..00000000 --- a/2-ui/1-document/14-styles-and-classes/1-round-button-javascript/task.md +++ /dev/null @@ -1,33 +0,0 @@ -# Скругленая кнопка со стилями из JavaScript - -[importance 3] - -Создайте кнопку в виде элемента `` с заданным стилем, используя JavaScript. - -В примере ниже такая кнопка создана при помощи HTML/CSS. В вашем решении кнопка должна создаваться, настраиваться и добавляться в документ при помощи *только JavaScript*, без тегов ` - -Нажми меня -``` - -**Проверьте себя: вспомните, что означает каждое свойство. В чём состоит эффект его появления здесь?** - - diff --git a/2-ui/1-document/14-styles-and-classes/2-create-notification/solution.md b/2-ui/1-document/14-styles-and-classes/2-create-notification/solution.md deleted file mode 100644 index e69de29b..00000000 diff --git a/2-ui/1-document/14-styles-and-classes/2-create-notification/solution.view/index.css b/2-ui/1-document/14-styles-and-classes/2-create-notification/solution.view/index.css deleted file mode 100755 index b21a80be..00000000 --- a/2-ui/1-document/14-styles-and-classes/2-create-notification/solution.view/index.css +++ /dev/null @@ -1,14 +0,0 @@ -.notification { - position: fixed; - z-index: 1000; - padding: 5px; - border: 1px solid black; - font: normal 20px Georgia; - background: white; - text-align: center; -} - -.welcome { - background: red; - color: yellow; -} \ No newline at end of file diff --git a/2-ui/1-document/14-styles-and-classes/2-create-notification/solution.view/index.html b/2-ui/1-document/14-styles-and-classes/2-create-notification/solution.view/index.html deleted file mode 100755 index 07ba7a03..00000000 --- a/2-ui/1-document/14-styles-and-classes/2-create-notification/solution.view/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - -

        Уведомление

        - -

        - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolorum aspernatur quam ex eaque inventore quod voluptatem adipisci omnis nemo nulla fugit iste numquam ducimus cumque minima porro ea quidem maxime necessitatibus beatae labore soluta voluptatum - magnam consequatur sit laboriosam velit excepturi laborum sequi eos placeat et quia deleniti? Corrupti velit impedit autem et obcaecati fuga debitis nemo ratione iste veniam amet dicta hic ipsam unde cupiditate incidunt aut iure ipsum officiis soluta - temporibus. Tempore dicta ullam delectus numquam consectetur quisquam explicabo culpa excepturi placeat quo sequi molestias reprehenderit hic at nemo cumque voluptates quidem repellendus maiores unde earum molestiae ad. -

        - - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/14-styles-and-classes/2-create-notification/source.view/index.css b/2-ui/1-document/14-styles-and-classes/2-create-notification/source.view/index.css deleted file mode 100755 index b21a80be..00000000 --- a/2-ui/1-document/14-styles-and-classes/2-create-notification/source.view/index.css +++ /dev/null @@ -1,14 +0,0 @@ -.notification { - position: fixed; - z-index: 1000; - padding: 5px; - border: 1px solid black; - font: normal 20px Georgia; - background: white; - text-align: center; -} - -.welcome { - background: red; - color: yellow; -} \ No newline at end of file diff --git a/2-ui/1-document/14-styles-and-classes/2-create-notification/source.view/index.html b/2-ui/1-document/14-styles-and-classes/2-create-notification/source.view/index.html deleted file mode 100755 index dd184fce..00000000 --- a/2-ui/1-document/14-styles-and-classes/2-create-notification/source.view/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - -

        Уведомление

        - -

        - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolorum aspernatur quam ex eaque inventore quod voluptatem adipisci omnis nemo nulla fugit iste numquam ducimus cumque minima porro ea quidem maxime necessitatibus beatae labore soluta voluptatum - magnam consequatur sit laboriosam velit excepturi laborum sequi eos placeat et quia deleniti? Corrupti velit impedit autem et obcaecati fuga debitis nemo ratione iste veniam amet dicta hic ipsam unde cupiditate incidunt aut iure ipsum officiis soluta - temporibus. Tempore dicta ullam delectus numquam consectetur quisquam explicabo culpa excepturi placeat quo sequi molestias reprehenderit hic at nemo cumque voluptates quidem repellendus maiores unde earum molestiae ad. -

        - -

        В CSS есть готовый класс notification, который можно ставить уведомлению.

        - - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/14-styles-and-classes/2-create-notification/task.md b/2-ui/1-document/14-styles-and-classes/2-create-notification/task.md deleted file mode 100644 index bc89ddcc..00000000 --- a/2-ui/1-document/14-styles-and-classes/2-create-notification/task.md +++ /dev/null @@ -1,41 +0,0 @@ -# Создать уведомление - -[importance 5] - -Напишите функцию `showNotification(options)`, которая показывает уведомление, пропадающее через 1.5 сек. - -Описание функции: - -```js -/** - * Показывает уведомление, пропадающее через 1.5 сек - * - * @param options.top {number} вертикальный отступ, в px - * @param options.right {number} правый отступ, в px - * @param options.cssText {string} строка стиля - * @param options.className {string} CSS-класс - * @param options.html {string} HTML-текст для показа - */ -function showNotification(options) { - // ваш код -} -``` - -Пример использования: - -```js -// покажет элемент с текстом "Привет" и классом welcome справа-сверху окна -showNotification({ - top: 10, - right: 10, - html: "Привет", - className: "welcome" -}); -``` - -[demo src="solution"] - -Элемент уведомления должен иметь CSS-класс `notification`, к которому добавляется класс из `options.className`, если есть. Исходный документ содержит готовые стили. - - - diff --git a/2-ui/1-document/14-styles-and-classes/article.md b/2-ui/1-document/14-styles-and-classes/article.md deleted file mode 100644 index ad9b8893..00000000 --- a/2-ui/1-document/14-styles-and-classes/article.md +++ /dev/null @@ -1,319 +0,0 @@ -# Стили, getComputedStyle - -Эта глава -- о свойствах стиля, получении о них информации и изменении при помощи JavaScript. - -Перед прочтением убедитесь, что хорошо знакомы с [блочной моделью CSS](http://www.w3.org/TR/CSS2/box.html) и понимаете, что такое `padding`, `margin`, `border`. - -[cut] - -## Стили элемента: свойство style - -Объект `element.style` дает доступ к стилю элемента на чтение и запись. - -С его помощью можно изменять большинство CSS-свойств, например `element.style.width="100px"` работает так, как будто у элемента в атрибуте прописано `style="width:100px"`. - -[warn header="Единицы измерения обязательны в `style`"] -Об этом иногда забывают, но в `style` так же, как и в CSS, нужно указывать единицы измерения, например `px`. - -Ни в коем случае не просто `elem.style.width = 100` -- работать не будет. -[/warn] - -**Для свойств, названия которых состоят из нескольких слов, используется вотТакаяЗапись:** - -```js -//+ no-beautify -background-color => elem.style.backgroundColor -z-index => elem.style.zIndex -border-left-width => elem.style.borderLeftWidth -``` - -Пример использования `style`: - -```js -//+ run -document.body.style.backgroundColor = prompt('background color?', 'green'); -``` - -[warn header="`style.cssFloat` вместо `style.float`"] -Исключением является свойство `float`. В старом стандарте JavaScript слово `"float"` было зарезервировано и недоступно для использования в качестве свойства объекта. Поэтому используется не `elem.style.float`, а `elem.style.cssFloat`. -[/warn] - -[smart header="Свойства с префиксами"] -Специфические свойства браузеров, типа `-moz-border-radius`, `-webkit-border-radius`, записываются следующим способом: - -```js -button.style.MozBorderRadius = '5px'; -button.style.WebkitBorderRadius = '5px'; -``` - -То есть, каждый дефис даёт большую букву. -[/smart] - -**Чтобы сбросить поставленный стиль, присваивают в `style` пустую строку: `elem.style.width=""`.** - -При сбросе свойства `style` стиль будет взят из CSS. - -Например, для того, чтобы спрятать элемент, можно присвоить: `elem.style.display = "none"`. - -А вот чтобы показать его обратно -- не обязательно явно указывать другой `display`, наподобие `elem.style.display = "block"`. Можно просто снять поставленный стиль: `elem.style.display = ""`. - -```js -//+ run -// если запустить этот код, то "мигнёт" -document.body.style.display = "none"; - -setTimeout(function() { - document.body.style.display = ""; -}, 1000); -``` - -**Стиль в `style` находится в формате браузера, а не в том, в котором его присвоили.** - -Например: - -```html - - - - -``` - -Обратите внимание на то, как браузер "распаковал" свойство `style.margin`, предоставив для чтения `style.marginTop`. То же самое произойдет и для `border`, `background` и т.д. - - -[warn header="Свойство `style` мы используем лишь там, где не работают классы"] -В большинстве случаев внешний вид элементов задаётся классами. А JavaScript добавляет или удаляет их. Такой код красив и гибок, дизайн можно легко изменять. - -Свойство `style` нужно использовать лишь там, где классы не подходят, например если точное значение цвета/отступа/высоты вычисляется в JavaScript. -[/warn] - - -### Строка стилей style.cssText - -Свойство `style` является специальным объектом, ему нельзя присваивать строку. - -Запись `div.style="color:blue"` работать не будет. Но как же, всё-таки, поставить свойство стиля, если хочется задать его строкой? - -Можно попробовать использовать атрибут: `elem.setAttribute("style", ...)`, но самым правильным и, главное, кросс-браузерным (с учётом старых IE) решением такой задачи будет использование свойства `style.cssText`. - -**Свойство `style.cssText` позволяет поставить стиль целиком в виде строки.** - -Например: - -```html - -
        Button
        - - -``` - -Браузер разбирает строку `style.cssText` и применяет известные ему свойства. Неизвестные, наподобие `blabla`, большинство браузеров просто проигнорируют. - -**При установке `style.cssText` все предыдущие свойства `style` удаляются.** - -Итак, `style.cssText` осуществляет полную перезапись `style`. Если же нужно заменить какое-то конкретно свойство стиля, то обращаются именно к нему: `style.color`, `style.width` и т.п, чтобы не затереть что-то важное по ошибке. - -Свойство `style.cssText` используют, например, для новосозданных элементов, когда старых стилей точно нет. - -### Чтение стиля из style - -Записать в стиль очень просто. А как прочитать? - -Например, мы хотим узнать размер, отступы элемента, его цвет... Как это сделать? - -**Свойство `style` содержит лишь тот стиль, который указан в атрибуте элемента, без учёта каскада CSS.** - -Вот так `style` уже ничего не увидит: - -```html - - - - - - - Красный текст - - -``` - -## Полный стиль из getComputedStyle - -Итак, свойство `style` дает доступ только к той информации, которая хранится в `elem.style`. - -Он не скажет ничего об отступе, если он появился в результате наложения CSS или встроенных стилей браузера: - -А если мы хотим, например, сделать анимацию и плавно увеличивать `marginTop` от текущего значения? Как нам сделать это? Ведь для начала нам надо это текущее значение получить. - -**Для того, чтобы получить текущее используемое значение свойства, используется метод `window.getComputedStyle`, описанный в стандарте DOM Level 2.** - -Его синтаксис таков: - -```js -getComputedStyle(element[, pseudo]) -``` - -
        -
        element
        -
        Элемент, значения для которого нужно получить
        -
        pseudo
        -
        Указывается, если нужен стиль псевдо-элемента, например `"::before"`. Пустая строка или отсутствие аргумента означают сам элемент.
        -
        - -Поддерживается всеми браузерами, кроме IE8-. Следующий код будет работать во всех не-IE браузерах и в IE9+: - -```html - - - - - - - - -``` - -[smart header="Вычисленное (computed) и окончательное (resolved) значения"] -В CSS есть две концепции: -
          -
        1. *Вычисленное* (computed) значение -- это то, которое получено после применения всех правил CSS и CSS-наследования. Например, `width: auto` или `font-size: 125%`.
        2. -
        3. *Окончательное* ([resolved](http://dev.w3.org/csswg/cssom/#resolved-values)) значение -- непосредственно применяемое к элементу. При этом все размеры приводятся к пикселям, например `width: 212px` или `font-size: 16px`. В некоторых браузерах пиксели могут быть дробными.
        4. -
        -Когда-то `getComputedStyle` задумывалось для возврата вычисленного значения, но со временем оказалось, что окончательное гораздо удобнее. - -Поэтому сейчас в целом все значения возвращаются именно окончательные, кроме некоторых небольших глюков в браузерах, которые постепенно вычищаются. -[/smart] - -[warn header="`getComputedStyle` требует полное свойство!"] -Для правильного получения значения нужно указать точное свойство. Например: `paddingLeft`, `marginTop`, `borderLeftWidth`. - -**При обращении к сокращенному: `padding`, `margin`, `border` -- правильный результат не гарантируется.** - -Действительно, допустим свойства `paddingLeft/paddingTop` взяты из разных классов CSS. Браузер не обязан объединять их в одно свойство `padding`. Иногда, в простейших случаях, когда свойство задано сразу целиком, `getComputedStyle` сработает для сокращённого свойства, но не во всех браузерах. - -Например, некоторые браузеры (Chrome) выведут `10px` в документе ниже, а некоторые (Firefox) -- нет: - -```html - - - -``` - -[/warn] - - -[smart header="Стили посещенных ссылок -- тайна!"] -У посещенных ссылок может быть другой цвет, фон, чем у обычных. Это можно поставить в CSS с помощью псевдокласса `:visited`. - -Но `getComputedStyle` не дает доступ к этой информации, чтобы произвольная страница не могла определить, посещал ли пользователь ту или иную ссылку. - -Кроме того, большинство браузеров запрещают применять к `:visited` CSS-стили, которые могут изменить геометрию элемента, чтобы даже окольным путем нельзя было это понять. В целях безопасности. -[/smart] - -## currentStyle для IE8- - -В IE8- нет `getComputedStyle`, но у элементов есть свойство currentStyle, которое возвращает вычисленное (computed) значение: уже с учётом CSS-каскада, но не всегда в окончательном формате. - -Чтобы код работал и в старых и новых браузерах, обычно пишут кросс-браузерный код, наподобие такого: - -```js -function getStyle(elem) { - return window.getComputedStyle ? getComputedStyle(elem, "") : elem.currentStyle; -} -``` - -Если вы откроете такой документ в IE8-, то размеры будут в процентах, а в современных браузерах -- в пикселях. - -```html - - - - - - -``` - -[smart header="IE8-: перевод `pt,em,%` из `currentStyle` в пиксели"] -Эта информация -- дополнительная, она не обязательна для освоения. - -В IE для того, чтобы получить из процентов реальное значение в пикселях существует метод "runtimeStyle+pixel", [описанный Дином Эдвардсом](http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291). - -Он основан на свойствах `runtimeStyle` и `pixelLeft`, работающих только в IE. - -В [edit src="getiecomputedstyle"]песочнице[/edit] вы можете найти функцию `getIEComputedStyle(elem, prop)`, которая получает значение в пикселях для свойства `prop`, используя `elem.currentStyle` и метод Дина Эдвардса, и пример её применения. - -Если вам интересно, как он работает, ознакомьтесь со свойствами с runtimeStyle и pixelLeft в MSDN и раскройте код. - -Конечно, это актуально только для IE8- и полифиллов. -[/smart] - - -## Итого - -Все DOM-элементы предоставляют следующие свойства. - -
          -
        • Свойство `style` -- это объект, в котором CSS-свойства пишутся `вотТакВот`. Чтение и изменение его свойств -- это, по сути, работа с компонентами атрибута `style`.
        • -
        • `style.cssText` -- строка стилей для чтения или записи. Аналог полного атрибута `style`.
        • - -
        • Свойство `currentStyle`(IE8-) и метод `getComputedStyle` (IE9+, стандарт) позволяют получить реальное, применённое сейчас к элементу свойство стиля с учётом CSS-каскада и браузерных стилей по умолчанию. - -При этом `currentStyle` возвращает значение из CSS, до окончательных вычислений, а `getComputedStyle` -- окончательное, непосредственно применённое к элементу (как правило).
        • -
        - -Более полная информация о свойстве `style`, включающая другие, реже используемые методы работы с ним, доступна [в документации](https://developer.mozilla.org/en-US/docs/DOM/CSSStyleDeclaration). - diff --git a/2-ui/1-document/14-styles-and-classes/getiecomputedstyle.view/getiecomputedstyle.js b/2-ui/1-document/14-styles-and-classes/getiecomputedstyle.view/getiecomputedstyle.js deleted file mode 100644 index 12a7e04c..00000000 --- a/2-ui/1-document/14-styles-and-classes/getiecomputedstyle.view/getiecomputedstyle.js +++ /dev/null @@ -1,18 +0,0 @@ -function getIEComputedStyle(elem, prop) { - var value = elem.currentStyle[prop] || 0; - - // we use 'left' property as a place holder so backup values - var leftCopy = elem.style.left; - var runtimeLeftCopy = elem.runtimeStyle.left; - - // assign to runtimeStyle and get pixel value - elem.runtimeStyle.left = elem.currentStyle.left; - elem.style.left = (prop === "fontSize") ? "1em" : value; - value = elem.style.pixelLeft + "px"; - - // restore values for left - elem.style.left = leftCopy; - elem.runtimeStyle.left = runtimeLeftCopy; - - return value; -} \ No newline at end of file diff --git a/2-ui/1-document/14-styles-and-classes/getiecomputedstyle.view/index.html b/2-ui/1-document/14-styles-and-classes/getiecomputedstyle.view/index.html deleted file mode 100644 index a757f39f..00000000 --- a/2-ui/1-document/14-styles-and-classes/getiecomputedstyle.view/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - -
        Тестовый элемент с margin 1%
        - - - - - \ No newline at end of file diff --git a/2-ui/1-document/15-metrics/1-get-scroll-height-bottom/solution.md b/2-ui/1-document/15-metrics/1-get-scroll-height-bottom/solution.md deleted file mode 100644 index 4d84cf8f..00000000 --- a/2-ui/1-document/15-metrics/1-get-scroll-height-bottom/solution.md +++ /dev/null @@ -1 +0,0 @@ -Решение: `elem.scrollHeight - elem.scrollTop - elem.clientHeight`. \ No newline at end of file diff --git a/2-ui/1-document/15-metrics/1-get-scroll-height-bottom/task.md b/2-ui/1-document/15-metrics/1-get-scroll-height-bottom/task.md deleted file mode 100644 index d2684e18..00000000 --- a/2-ui/1-document/15-metrics/1-get-scroll-height-bottom/task.md +++ /dev/null @@ -1,9 +0,0 @@ -# Найти размер прокрутки снизу - -[importance 5] - -Свойство `elem.scrollTop` содержит размер прокрученной области при отсчете сверху. А как подсчитать размер прокрутки снизу? - -Напишите соответствующее выражение для произвольного элемента `elem`. - -Проверьте: если прокрутки нет вообще или элемент полностью прокручен -- оно должно давать ноль. \ No newline at end of file diff --git a/2-ui/1-document/15-metrics/2-scrollbar-width/solution.md b/2-ui/1-document/15-metrics/2-scrollbar-width/solution.md deleted file mode 100644 index 9cb7a82d..00000000 --- a/2-ui/1-document/15-metrics/2-scrollbar-width/solution.md +++ /dev/null @@ -1,23 +0,0 @@ -Создадим элемент с прокруткой, но без `border` и `padding`. Тогда разница между его полной шириной `offsetWidth` и внутренней `clientWidth` будет равна как раз прокрутке: - -```js -//+ run -// создадим элемент с прокруткой -var div = document.createElement('div'); - -div.style.overflowY = 'scroll'; -div.style.width = '50px'; -div.style.height = '50px'; - -// при display:none размеры нельзя узнать -// нужно, чтобы элемент был видим, -// visibility:hidden - можно, т.к. сохраняет геометрию -div.style.visibility = 'hidden'; - -document.body.appendChild(div); -var scrollWidth = div.offsetWidth - div.clientWidth; -document.body.removeChild(div); - -alert( scrollWidth ); -``` - diff --git a/2-ui/1-document/15-metrics/2-scrollbar-width/task.md b/2-ui/1-document/15-metrics/2-scrollbar-width/task.md deleted file mode 100644 index 77867ac8..00000000 --- a/2-ui/1-document/15-metrics/2-scrollbar-width/task.md +++ /dev/null @@ -1,7 +0,0 @@ -# Узнать ширину полосы прокрутки - -[importance 3] - -Напишите код, который возвращает ширину стандартной полосы прокрутки. Именно самой полосы, где ползунок. Обычно она равна `16px`, в редких и мобильных браузерах может колебаться от `14px` до `18px`, а кое-где даже равна `0px`. - -P.S. Ваш код должен работать на любом HTML-документе, независимо от его содержимого. \ No newline at end of file diff --git a/2-ui/1-document/15-metrics/3-div-placeholder/solution.md b/2-ui/1-document/15-metrics/3-div-placeholder/solution.md deleted file mode 100644 index aa685293..00000000 --- a/2-ui/1-document/15-metrics/3-div-placeholder/solution.md +++ /dev/null @@ -1,29 +0,0 @@ -Нам нужно создать `div` с такими же размерами и вставить его на место "переезжающего". - -Один из вариантов -- это просто клонировать элемент. - -Если делать это при помощи `div.cloneNode(true)`, то склонируется все содержимое, которого может быть много. Обычно нам это не нужно, поэтому можно использовать `div.cloneNode(false)` для клонирования элемента со стилями, и потом поправить его `width/height`. - -Можно и просто создать новый `div` и поставить ему нужные размеры. - -**Всё, кроме `margin`, можно получить из свойств DOM-элемента, а `margin` -- только через `getComputedStyle`.** - -Причём `margin` мы обязаны поставить, так как иначе наш элемент при вставке будет вести себя иначе, чем исходный. - -Код: - -```js -var div = document.getElementById('moving-div'); - -var placeHolder = document.createElement('div'); -placeHolder.style.height = div.offsetHeight + 'px'; -// можно и width, но в этом примере это не обязательно - -// IE || другой браузер -var computedStyle = div.currentStyle || getComputedStyle(div, ''); - -placeHolder.style.marginTop = computedStyle.marginTop; // (1) -placeHolder.style.marginBottom = computedStyle.marginBottom; -``` - -В строке `(1)` использование полного название свойства `"marginTop"` гарантирует, что полученное значение будет корректным. \ No newline at end of file diff --git a/2-ui/1-document/15-metrics/3-div-placeholder/solution.view/index.html b/2-ui/1-document/15-metrics/3-div-placeholder/solution.view/index.html deleted file mode 100755 index fd8f91f0..00000000 --- a/2-ui/1-document/15-metrics/3-div-placeholder/solution.view/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - Before Before Before - -
        - Text Text Text -
        Text Text Text -
        -
        - - After After After - - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/15-metrics/3-div-placeholder/source.view/index.html b/2-ui/1-document/15-metrics/3-div-placeholder/source.view/index.html deleted file mode 100755 index 69e3e504..00000000 --- a/2-ui/1-document/15-metrics/3-div-placeholder/source.view/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - Before Before Before - -
        - Text Text Text -
        Text Text Text -
        -
        - - After After After - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/15-metrics/3-div-placeholder/task.md b/2-ui/1-document/15-metrics/3-div-placeholder/task.md deleted file mode 100644 index 3fa0528f..00000000 --- a/2-ui/1-document/15-metrics/3-div-placeholder/task.md +++ /dev/null @@ -1,52 +0,0 @@ -# Подменить div на другой с таким же размером - -[importance 3] - -Посмотрим следующий случай из жизни. Был текст, который, в частности, содержал `div` с зелеными границами: - -```html - - - -Before Before Before - -
        -Text Text Text
        -Text Text Text
        -
        - -After After After -``` - -Программист Валера из вашей команды написал код, который позиционирует его абсолютно и смещает в правый верхний угол. Вот этот код: - -```js -var div = document.getElementById('moving-div'); -div.style.position = 'absolute'; -div.style.right = div.style.top = 0; -``` - -Побочным результатом явилось смещение текста, который раньше шел после `DIV`. Теперь он поднялся вверх: -[iframe height=90 src="source"] - -**Допишите код Валеры, сделав так, чтобы текст оставался на своем месте после того, как `DIV` будет смещен.** - -Сделайте это путем создания вспомогательного `DIV` с теми же `width`, `height`, `border`, `margin`, `padding`, что и у желтого `DIV`. - -Используйте только JavaScript, без CSS. - -Должно быть так (новому блоку задан фоновый цвет для демонстрации): - -[iframe height=140 src="solution"] - - - - - diff --git a/2-ui/1-document/15-metrics/4-put-ball-in-center/ball-half/index.html b/2-ui/1-document/15-metrics/4-put-ball-in-center/ball-half/index.html deleted file mode 100755 index 23b8d7b2..00000000 --- a/2-ui/1-document/15-metrics/4-put-ball-in-center/ball-half/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - -
        - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -
        - - - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/15-metrics/4-put-ball-in-center/field.png b/2-ui/1-document/15-metrics/4-put-ball-in-center/field.png deleted file mode 100755 index eea8c1715d2aa73997fb8dce955bf81470e3c36a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1693 zcmZ|QeN@u-9tZFbYLVc>nkaHDjhi>!nwpteiQRRRt0}37x_k(m*31o~))W!TO>vf@ zCYDbDK1?OerOu~WP?^h8TAVc-c1XRmX=1pbu}h@b=p9u1^W zC_zC%)Te{S zfX5T^3J_HVg@~%c!rH;i#6AS@9gL}j9?s;cVh>Y5!;;|$-WWz_x)YHMrj>+8it5Hrq+#o`;=;6?(Yp`oF% zvGJBIG<&(X;-Iaqt=$sZKXB}@M0J{@IxV2f41P32-L|oonr@O}Oz#6|G@9w@X{}Z} zGcz+gJFC;_78VwkmzP&oR`hzk!C+WlU-$Wjcoo2edBpcnSnB_@BN~>aGaFZmQ zHnq^CBSvD9xt!W?{L~xOsYr2aO7iCB@W!FY&-dVPXmXh3>woTYzL9ST6qY+i$F(KW zCZY7G7=J$ma{p7`bm{T=ft~8?9+!r%jgQU14ql8e30_!H%SO{AKtzL zS8BPG;l*@ub8zfvj*{4U6%1YD_+{2!tonJl#jE^>4?H+o4c$=#!~1l40eL^kj*+n( zDk8NyEjs?FFQ}8m$J)0ObNJhu$wG<8T*>ARJsA%0pVN5x4rI;Zn2+s*FBFtHoiSV$8dFd^$l7%uI_k`#`$Qcro&bdt!`7qMKSB- zbZh`N6-n*?GNwAJ6q$5vn#&Er-zCm}zWCS9tLpz({x+EE_!=qfn2%8;UECy-1-s^` zlkyZVQ4`$)-2{4bvi?BRK$bXUL)13z zEQn1U53>lLp}m%oA2*Uh@%!sGR9Zz`lNjYM#;{vIj0w(A9}$VXPmubs!aSNTb?i2; z-z|{ax}>_Q;d_*JO|I5F>)scA9-aG$pzfnxUd)Oe&=HzzNy#g6r5%ahH++*{;CE&& zu9BQsRL!@cAEcj)^UQE(%=iS)IDPo()%jy*YW>5GM@6Qe>@&2y!nl6gY80oPn{TJ6{3CvL7HVWd+nbHJ z^X$L_tYpG<*Co~W5nj8fcPXN|16rBNr=2XSft@Au7EV3d0{=&WEu?$V?9PbVOJc)kL zf1)Yy`-hxYo!c4|44%rcHa1fpoM1UrHZ~>EDKzItGvX5p)&|eoOxWeK1AjfXg0DNZ WdT0Dl@9{tXnIq&N-&_AVk@*MFp&!=( diff --git a/2-ui/1-document/15-metrics/4-put-ball-in-center/solution.md b/2-ui/1-document/15-metrics/4-put-ball-in-center/solution.md deleted file mode 100644 index 07ccdf60..00000000 --- a/2-ui/1-document/15-metrics/4-put-ball-in-center/solution.md +++ /dev/null @@ -1,51 +0,0 @@ -При абсолютном позиционировании мяча внутри поля его координаты `left/top` отсчитываются от **внутреннего** угла поля, например верхнего-левого: - - - -Метрики для внутренней зоны поля -- это `clientWidth/Height`. - -Центр - это `(clientWidth/2, clientHeight/2)`. - -Но если мы установим мячу такие значения `ball.style.left/top`, то в центре будет не сам мяч, а его левый верхний угол: - -```js -var ball = document.getElementById('ball'); -var field = document.getElementById('field'); - -ball.style.left = Math.round(field.clientWidth / 2) + 'px'; -ball.style.top = Math.round(field.clientHeight / 2) + 'px'; -``` - -[iframe hide="Нажмите, чтобы посмотреть текущий результат" height=180 src="ball-half"] - -Для того, чтобы центр мяча находился в центре поля, нам нужно сместить мяч на половину его ширины влево и на половину его высоты вверх. - -```js -var ball = document.getElementById('ball'); -var field = document.getElementById('field'); - -ball.style.left = Math.round(field.clientWidth / 2 - ball.offsetWidth / 2) + 'px'; -ball.style.top = Math.round(field.clientHeight / 2 - ball.offsetHeight / 2) + 'px'; -``` - -**Внимание, подводный камень!** - -Код выше стабильно работать не будет, потому что `IMG` идет без ширины/высоты: - -```html - -``` - -**Высота и ширина изображения неизвестны браузеру до тех пор, пока оно не загрузится, если размер не указан явно.** - -После первой загрузки изображение уже будет в кеше браузера, и его размеры будут известны. Но когда браузер впервые видит документ -- он ничего не знает о картинке, поэтому значение `ball.offsetWidth` равно `0`. Вычислить координаты невозможно. - -Чтобы это исправить, добавим `width/height` к картинке: - -```html - -``` - -Теперь браузер всегда знает ширину и высоту, так что все работает. Тот же эффект дало бы указание размеров в CSS. - -[edit src="solution"]Полный код решения[/edit] \ No newline at end of file diff --git a/2-ui/1-document/15-metrics/4-put-ball-in-center/solution.view/index.html b/2-ui/1-document/15-metrics/4-put-ball-in-center/solution.view/index.html deleted file mode 100755 index 47694b5a..00000000 --- a/2-ui/1-document/15-metrics/4-put-ball-in-center/solution.view/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - -
        - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -
        - - - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/15-metrics/4-put-ball-in-center/source.view/index.html b/2-ui/1-document/15-metrics/4-put-ball-in-center/source.view/index.html deleted file mode 100755 index 8b54beed..00000000 --- a/2-ui/1-document/15-metrics/4-put-ball-in-center/source.view/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - -
        - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -
        - - - - - \ No newline at end of file diff --git a/2-ui/1-document/15-metrics/4-put-ball-in-center/task.md b/2-ui/1-document/15-metrics/4-put-ball-in-center/task.md deleted file mode 100644 index 305acfb8..00000000 --- a/2-ui/1-document/15-metrics/4-put-ball-in-center/task.md +++ /dev/null @@ -1,19 +0,0 @@ -# Поместите мяч в центр поля - -[importance 5] - -Поместите мяч в центр поля. - -Исходный документ выглядит так: -[iframe src="source" edit link height=180] - -**Используйте JavaScript, чтобы поместить мяч в центр:** -[iframe src="solution" height=180] - -
          -
        • Менять CSS нельзя, мяч должен переносить в центр ваш скрипт, через установку нужных стилей элемента.
        • -
        • JavaScript-код должен работать при разных размерах мяча (`10`, `20`, `30` пикселей) без изменений.
        • -
        • JavaScript-код должен работать при различных размерах и местоположениях поля на странице без изменений. Также он не должен зависеть от ширины рамки поля `border`.
        • -
        - -P.S. Да, центрирование можно сделать при помощи чистого CSS, но задача именно на JavaScript. Далее будут другие темы и более сложные ситуации, когда JavaScript будет уже точно необходим, это -- своего рода "разминка". diff --git a/2-ui/1-document/15-metrics/5-expand-element/solution.md b/2-ui/1-document/15-metrics/5-expand-element/solution.md deleted file mode 100644 index a8b2e2ec..00000000 --- a/2-ui/1-document/15-metrics/5-expand-element/solution.md +++ /dev/null @@ -1,43 +0,0 @@ -# Решение через width: auto - -Вначале рассмотрим решение через "умную" установку CSS-свойства. - -Они могут быть разными. Самое простое выглядит так: - -```js -elem.style.width = 'auto'; -``` - -Такой способ работает, так как `
        ` по умолчанию распахивается на всю ширину. - -Конечно, такое решение не будет работать для элементов, которые сами по себе не растягиваются, например в случае со `` или при наличии `position: absolute`. - -Обратим внимание, такой вариант был бы неверен: -```js -elem.style.width = '100%'; -``` - -По умолчанию в CSS ширина `width` -- это то, что *внутри `padding`*, а проценты отсчитываются от ширины родителя. То есть, ставя ширину в `100%`, мы говорим: "внутренняя область должна занимать `100%` ширины родителя". А в элементе есть ещё `padding`, которые в итоге вылезут наружу. - -Можно бы поменять блочную модель, указав `box-sizing` через свойство `elem.style.boxSizing`, но такое изменение потенциально может затронуть много других свойств, поэтому нежелательно. - -# Точное вычисление - -Альтернатива -- вычислить ширину родителя через `clientWidth`. - -Доступную внутреннюю ширину родителя можно получить, вычитая из `clientWidth` размеры `paddingLeft/paddingRight`, и затем присвоить её элементу: - -```js -var bodyClientWidth = document.body.clientWidth; - -var style = getComputedStyle(elem); - -*!* -var bodyInnerWidth = bodyClientWidth - parseInt(style.paddingLeft) - parseInt(style.paddingRight); -*/!* - -elem.style.width = bodyInnerWidth + 'px'; -``` - -Такое решение будет работать всегда, вне зависимости от типа элемента. Конечно, при изменении размеров окна браузера ширина не адаптируется к новому размеру автоматически, как с `width:auto`. Это недостаток. Его, конечно, тоже можно обойти при помощи событий (изучим далее), но как общий рецепт -- если CSS может решить задачу -- лучше использовать CSS. - diff --git a/2-ui/1-document/15-metrics/5-expand-element/solution.view/index.html b/2-ui/1-document/15-metrics/5-expand-element/solution.view/index.html deleted file mode 100755 index 6c51d6ad..00000000 --- a/2-ui/1-document/15-metrics/5-expand-element/solution.view/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - -
        - текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст - текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст - текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст - текст текст -
        - - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/15-metrics/5-expand-element/source.view/index.html b/2-ui/1-document/15-metrics/5-expand-element/source.view/index.html deleted file mode 100755 index 4bfe7fee..00000000 --- a/2-ui/1-document/15-metrics/5-expand-element/source.view/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - -
        - текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст - текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст - текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст - текст текст -
        - - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/15-metrics/5-expand-element/task.md b/2-ui/1-document/15-metrics/5-expand-element/task.md deleted file mode 100644 index 88d72e2f..00000000 --- a/2-ui/1-document/15-metrics/5-expand-element/task.md +++ /dev/null @@ -1,15 +0,0 @@ -# Расширить элемент - -[importance 4] - -В `` есть элемент `
        ` с заданной шириной `width`. - -Задача -- написать код, который "распахнет" `
        ` по ширине на всю страницу. - -Исходный документ (`
        ` содержит текст и прокрутку): -[iframe height=220 src="source"] - -P.S. Пользоваться следует исключительно средствами JS, CSS в этой задаче менять нельзя. Также ваш код должен быть универсален и не ломаться, если цифры в CSS станут другими. - -P.P.S. При расширении элемент `
        ` не должен вылезти за границу ``. - diff --git a/2-ui/1-document/15-metrics/6-width-vs-clientwidth/solution.md b/2-ui/1-document/15-metrics/6-width-vs-clientwidth/solution.md deleted file mode 100644 index c1e83eff..00000000 --- a/2-ui/1-document/15-metrics/6-width-vs-clientwidth/solution.md +++ /dev/null @@ -1,11 +0,0 @@ -Отличия: - -
          -
        1. `getComputedStyle` не работает в IE8-.
        2. -
        3. `clientWidth` возвращает число, а `getComputedStyle(...).width` -- строку, на конце `px`.
        4. -
        5. `getComputedStyle` не всегда даст ширину, он может вернуть, к примеру, `"auto"` для инлайнового элемента.
        6. -
        7. `clientWidth` соответствует внутренней видимой области элемента, *включая `padding`, а CSS-ширина `width` при стандартном значении `box-sizing` соответствует зоне *внутри `padding`*.
        8. -
        9. Если есть полоса прокрутки, то некоторые браузеры включают её ширину в `width`, а некоторые -- нет. - -Свойство `clientWidth`, с другой стороны, полностью кросс-браузерно. Оно всегда обозначает размер *за вычетом прокрутки*, т.е. реально доступный для содержимого.
        10. -
        diff --git a/2-ui/1-document/15-metrics/6-width-vs-clientwidth/task.md b/2-ui/1-document/15-metrics/6-width-vs-clientwidth/task.md deleted file mode 100644 index 582a2473..00000000 --- a/2-ui/1-document/15-metrics/6-width-vs-clientwidth/task.md +++ /dev/null @@ -1,7 +0,0 @@ -# В чём отличие "width" и "clientWidth" ? - -[importance 5] - -В чём отличия между `getComputedStyle(elem).width` и `elem.clientWidth`? - -Укажите хотя бы три отличия, лучше -- больше. \ No newline at end of file diff --git a/2-ui/1-document/15-metrics/article.md b/2-ui/1-document/15-metrics/article.md deleted file mode 100644 index 39f78ae3..00000000 --- a/2-ui/1-document/15-metrics/article.md +++ /dev/null @@ -1,317 +0,0 @@ -# Размеры и прокрутка элементов - -Для того, чтобы показывать элементы на произвольных местах страницы, необходимо во-первых, знать CSS-позиционирование, а во-вторых -- уметь работать с "геометрией элементов" из JavaScript. - -В этой главе мы поговорим о размерах элементов DOM, способах их вычисления и *метриках* -- различных свойствах, которые содержат эту информацию. - -[cut] - -## Образец документа - -Мы будем использовать для примера вот такой элемент, у которого есть рамка (border), поля (padding), и прокрутка: - -```html - -
        - ...Текст... -
        - -``` - -У него нет отступов `margin`, в этой главе они не важны, так как метрики касаются именно размеров самого элемента, отступы в них не учитываются. - -Результат выглядит так: - - - -Вы можете открыть [edit src="metric"]этот документ в песочнице[/edit]. - -[smart header="Внимание, полоса прокрутки!"] -В иллюстрации выше намеренно продемонстрирован самый сложный и полный случай, когда у элемента есть ещё и полоса прокрутки. - -В этом случае полоса прокрутки "отодвигает" содержимое вместе с `padding` влево, отбирая у него место. - -Именно поэтому ширина содержимого обозначена как `content width` и равна `284px`, а не `300px`, как в CSS. - -Точное значение получено в предположении, что ширина полосы прокрутки равна `16px`, то есть после её вычитания на содержимое остаётся `300 - 16 = 284px`. Конечно, она сильно зависит от браузера, устройства, ОС. - -Мы должны в точности понимать, что происходит с размерами элемента при наличии полосы прокрутки, поэтому на картинке выше это отражено. -[/smart] - -[smart header="Поле `padding` заполнено текстом"] -Обычно поля `padding` изображают пустыми, но так как текста много, то он заполняет нижнее поле `padding-bottom` в примере выше. - -Во избежание путаницы заметим, что `padding` там, всё же, есть. Поля `padding` по CSS в элементе выше одинаковы со всех сторон. А такое заполнение -- нормальное поведение браузера. -[/smart] - -## Метрики - -У элементов существует ряд свойств, содержащих их внешние и внутренние размеры. Мы будем называть их "метриками". - -Метрики, в отличие от свойств CSS, содержат числа, всегда в пикселях и без единиц измерения на конце. - -Вот общая картина: - - - - -На картинке все они с трудом помещаются, но, как мы увидим далее, их значения просты и понятны. - -Будем исследовать их снаружи элемента и вовнутрь. - - -## offsetParent, offsetLeft/Top - -Ситуации, когда эти свойства нужны, можно перечислить по пальцам. Они возникают действительно редко. Как правило, эти свойства используют, потому что не знают средств правильной работы с координатами, о которых мы поговорим позже. - -Несмотря на то, что эти свойства нужны реже всего, они -- самые "внешние", поэтому начнём с них. - -**В `offsetParent` находится ссылка на родительский элемент в смысле отображения на странице.** - -Уточним, что имеется в виду. - -Когда браузер рисует страницу, то он высчитывает дерево расположения элементов, иначе говоря "дерево геометрии" или "дерево рендеринга", которое содержит всю информацию о размерах. - -При этом одни элементы естественным образом рисуются внутри других. Но, к примеру, если у элемента стоит `position:absolute`, то его расположение вычисляется уже не относительно непосредственного родителя `parentNode`, а относительно ближайшего позиционированного элемента (т.е. свойство `position` которого не равно `static`), или `BODY`, если такой отсутствует. - -Получается, что элемент имеет в дополнение к обычному родителю в DOM -- ещё одного "родителя по позиционированию", то есть относительно которого он рисуется. Этот элемент и будет в свойстве `offsetParent`. - -**Свойства `offsetLeft/Top` задают смещение относительно `offsetParent`.** - -В примере ниже внутренний `
        ` имеет DOM-родителя `
        `, но `offsetParent` у него `
        `, и сдвиги относительно его верхнего-левого угла будут в `offsetLeft/Top`: - -```html -
        - -
        ...
        - -
        -``` - - - -## offsetWidth/Height - -Теперь переходим к самому элементу. - -Эти два свойства -- самые простые. Они содержат "внешнюю" ширину/высоту элемента, то есть его полный размер, включая рамки `border`. - - - -Для нашего элемента: -
          -
        • `offsetWidth = 390` -- внешняя ширина блока, её можно получить сложением CSS-ширины (`300px`, но её часть на рисунке выше отнимает прокрутка, поэтому `284 + 16`), полей(`2*20px`) и рамок (`2*25px`).
        • -
        • `offsetHeight = 290` -- внешняя высота блока.
        • -
        - - -[smart header="Метрики для невидимых элементов равны нулю."] - -Координаты и размеры в JavaScript устанавливаются только для *видимых* элементов. - -Для элементов с `display:none` или находящихся вне документа дерево рендеринга не строится. Для них метрики равны нулю. Кстати, и `offsetParent` для таких элементов тоже `null`. - -**Это дает нам замечательный способ для проверки, виден ли элемент**: - -```js -function isHidden(elem) { - return !elem.offsetWidth && !elem.offsetHeight; -} -``` - -
          -
        • Работает, даже если родителю элемента установлено свойство `display:none`.
        • -
        • Работает для всех элементов, кроме `TR`, с которым возникают некоторые проблемы в разных браузерах. Обычно, проверяются не `TR`, поэтому всё ок.
        • -
        • Считает элемент видимым, даже если позиционирован за пределами экрана или имеет свойство `visibility:hidden`.
        • -
        • "Схлопнутый" элемент, например пустой `div` без высоты и ширины, будет считаться невидимым.
        • -
        -[/smart] - - - -## clientTop/Left - -Далее внутри элемента у нас рамки `border`. - -Для них есть свойства-метрики `clientTop` и `clientLeft`. - -В нашем примере: -
          -
        • `clientLeft = 25` -- ширина левой рамки
        • -
        • `clientTop = 25` -- ширина верхней рамки
        • -
        - - - -...Но на самом деле они -- вовсе не рамки, а отступ внутренней части элемента от внешней. - -В чём же разница? - -Она возникает тогда, когда документ располагается *справа налево* (операционная система на арабском языке или иврите). Полоса прокрутки в этом случае находится слева, и тогда свойство `clientLeft` включает в себя еще и ширину полосы прокрутки. - -Получится так: - - - - -## clientWidth/Height - -Эти свойства -- размер элемента внутри рамок `border`. - -Они включают в себя ширину содержимого `width` вместе с полями `padding`, но без прокрутки. - - - -На рисунке выше посмотрим вначале на `clientHeight`, её посчитать проще всего. Прокрутки нет, так что это в точности то, что внутри рамок: CSS-высота `200px` плюс верхнее и нижнее поля `padding` (по `20px`), итого `240px`. - -На рисунке нижний `padding` заполнен текстом, но это неважно: по правилам он всегда входит в `clientHeight`. - -Теперь `clientWidth` -- ширина содержимого здесь не равна CSS-ширине, её часть "съедает" полоса прокрутки. -Поэтому в `clientWidth` входит не CSS-ширина, а реальная ширина содержимого `284px` плюс левое и правое поля `padding` (по `20px`), итого `324px`. - - -**Если `padding` нет, то `clientWidth/Height` в точности равны размеру области содержимого, внутри рамок и полосы прокрутки.** - - - -Поэтому в тех случаях, когда мы точно знаем, что `padding` нет, их используют для определения внутренних размеров элемента. - -## scrollWidth/Height - -Эти свойства -- аналоги `clientWidth/clientHeight`, но с учетом прокрутки. - -Свойства `clientWidth/clientHeight` относятся только к видимой области элемента, а `scrollWidth/scrollHeight` добавляют к ней прокрученную (которую не видно) по горизонтали/вертикали. - - - -На рисунке выше: -
          -
        • `scrollHeight = 723` -- полная внутренняя высота, включая прокрученную область.
        • -
        • `scrollWidth = 324` -- полная внутренняя ширина, в данном случае прокрутки нет, поэтому она равна `clientWidth`.
        • -
        - -Эти свойства можно использовать, чтобы "распахнуть" элемент на всю ширину/высоту, таким кодом: - -```js -element.style.height = element.scrollHeight + 'px'; -``` - -[online] -[pre no-typography] -Нажмите на кнопку, чтобы распахнуть элемент: - -
        текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст
        - - -[/pre] -[/online] - -## scrollLeft/scrollTop - -Свойства `scrollLeft/scrollTop` -- ширина/высота невидимой, прокрученной в данный момент, части элемента слева и сверху. - -Следующее иллюстрация показывает значения `scrollHeight` и `scrollTop` для блока с вертикальной прокруткой. - - - -[smart header="`scrollLeft/scrollTop` можно изменять"] -В отличие от большинства свойств, которые доступны только для чтения, значения `scrollLeft/scrollTop` можно изменить, и браузер выполнит прокрутку элемента. - -[online] -При клике на следующий элемент будет выполняться код `elem.scrollTop += 10`. Поэтому он будет прокручиваться на `10px` вниз: - -
        Кликни
        Меня
        1
        2
        3
        4
        5
        6
        7
        8
        9
        -[/online] -[/smart] - - -## Не стоит брать width/height из CSS - -Мы рассмотрели метрики -- свойства, которые есть у DOM-элементов. Их обычно используют для получения их различных высот, ширин и прочих расстояний. - -Теперь несколько слов о том, как *не* надо делать. - -Как мы знаем, CSS-высоту и ширину можно установить с помощью `elem.style` и извлечь, используя `getComputedStyle`, которые в подробностях обсуждаются в главе [](/styles-and-classes). - -Получение ширины элемента может быть таким: - -```js -//+ run -var elem = document.body; - -alert( getComputedStyle(elem).width ); // вывести CSS-ширину для elem -``` - -Не лучше ли получать ширину так, вместо метрик? Вовсе нет! - -
          -
        1. Во-первых, CSS-свойства `width/height` зависят от другого свойства -- `box-sizing`, которое определяет, что такое, собственно, эти ширина и высота. Получается, что изменение `box-sizing`, к примеру, для более удобной вёрстки, сломает такой JavaScript.
        2. -
        3. Во-вторых, в CSS свойства `width/height` могут быть равны `auto`, например, для инлайн-элемента: - -```html - -Привет! - - -``` - -Конечно, с точки зрения CSS размер `auto` -- совершенно нормально, но нам-то в JavaScript нужен конкретный размер в пикселях, который мы могли бы использовать для вычислений. Получается, что в данном случае ширина `width` из CSS вообще бесполезна. -
        4. -
        - -Есть и ещё одна причина. - -Полоса прокрутки -- причина многих проблем и недопониманий. Как говорится, "дьявол кроется в деталях". Недопустимо, чтобы наш код работал на элементах без прокрутки и начинал "глючить" с ней. - -Как мы говорили ранее, при наличии вертикальной полосы прокрутки, в зависимости от браузера, устройства и операционной системы, она может сдвинуть содержимое. - -Получается, что реальная ширина содержимого меньше CSS-ширины. И это учитывают свойства `clientWidth/clientHeight`. - -...Но при этом некоторые браузеры также учитывают это в результате `getComputedStyle(elem).width`, то есть возвращают реальную внутреннюю ширину, а некоторые -- именно CSS-свойство. Эти кросс-браузерные отличия -- ещё один повод не использовать такой подход, а использовать свойства-метрики. - -[online] -Если ваш браузер показывает полосу прокрутки (например, под Windows почти все браузеры так делают), то вы можете протестировать это сами, нажав на кнопку в ифрейме ниже. - -[iframe src="cssWidthScroll" link border=1] - -У элемента с текстом в стилях указано `width:300px`. - -На момент написания этой главы при тестировании в Chrome под Windows `alert` выводил `283px`, а в Firefox -- `300px`. При этом оба браузера показывали прокрутку. Это из-за того, что Firefox возвращал именно CSS-ширину, а Chrome -- реальную ширину, за вычетом прокрутки. -[/online] - -Описанные разночтения касаются только чтения свойства `getComputedStyle(...).width` из JavaScript, визуальное отображение корректно в обоих случаях. - -## Итого - -У элементов есть следующие метрики: -
          -
        • `offsetParent` -- "родитель по дереву рендеринга" -- ближайшая ячейка таблицы, body для статического позиционирования или ближайший позиционированный элемент для других типов позиционирования.
        • -
        • `offsetLeft/offsetTop` -- позиция в пикселях левого верхнего угла блока, относительно его `offsetParent`.
        • -
        • `offsetWidth/offsetHeight` -- "внешняя" ширина/высота блока, включая рамки.
        • -
        • `clientLeft/clientTop` -- отступ области содержимого от левого-верхнего угла элемента. Если операционная система располагает вертикальную прокрутку справа, то равны ширинам левой/верхней рамки, если же слева (ОС на иврите, арабском), то `clientLeft` включает в себя прокрутку. -
        • -
        • `clientWidth/clientHeight` -- ширина/высота содержимого вместе с полями `padding`, но без полосы прокрутки.
        • -
        • `scrollWidth/scrollHeight` -- ширина/высота содержимого, включая прокручиваемую область. Включает в себя `padding` и не включает полосы прокрутки.
        • -
        • `scrollLeft/scrollTop` -- ширина/высота прокрученной части документа, считается от верхнего левого угла.
        • -
        - -Все свойства, доступны только для чтения, кроме `scrollLeft/scrollTop`. Изменение этих свойств заставляет браузер прокручивать элемент. - -В этой главе мы считали, что страница находится в режиме соответствия стандартам. В режиме совместимости -- некоторые старые браузеры требуют `document.body` вместо `documentElement`, в остальном всё так же. Конечно, по возможности, стоит использовать только режим соответствия стандарту. - diff --git a/2-ui/1-document/15-metrics/cssWidthScroll.view/index.html b/2-ui/1-document/15-metrics/cssWidthScroll.view/index.html deleted file mode 100755 index a29f8a3a..00000000 --- a/2-ui/1-document/15-metrics/cssWidthScroll.view/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - -
        - текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст - текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст - текст текст текст текст текст текст текст текст текст текст текст текст текст текст -
        - - - - У элемента стоит style="width:300px" -
        - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/15-metrics/metric-all.png b/2-ui/1-document/15-metrics/metric-all.png deleted file mode 100644 index fb7c3b7b678c8d8a40ca37123bab7bed2cd9cf69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142969 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

        - -## Свойства узлов - -
        -
        `node.nodeType`
        Тип узла: 1(элемент) / 3(текст) / другие.
        -
        `elem.tagName`
        Тег элемента.
        -
        `elem.innerHTML`
        HTML внутри элемента.
        -
        `elem.outerHTML`
        Весь HTML элемента, включая сам тег. На запись использовать с осторожностью, так как не модифицирует элемент, а вставляет новый вместо него.
        -
        `node.data` / `node.nodeValue`
        Содержимое узла любого типа, кроме элемента.
        -
        `node.textContent`
        Текстовое содержимое узла, для элементов содержит текст с вырезанными тегами (IE9+).
        -
        `elem.hidden`
        Если поставить `true`, то элемент будет скрыт (IE10+).
        -
        - -## Атрибуты - -
        -
        `elem.getAttribute(name)`, `elem.hasAttribute(name)`, `elem.setAttribute(name, value)`
        -
        Чтение атрибута, проверка наличия и запись.
        -
        `elem.dataset.*`
        Значения атрибутов вида `data-*` (IE10+).
        -
        - -## Ссылки - -
        -
        `document.documentElement`
        -
        Элемент ``
        -
        `document.body`
        -
        Элемент ``
        -
        `document.head`
        -
        Элемент `` (IE9+)
        -
        - -По всем узлам: -
          -
        • `parentNode`
        • -
        • `nextSibling` `previousSibling`
        • -
        • `childNodes` `firstChild` `lastChild`
        • -
        - -Только по элементам: - -
          -
        • `parentElement`
        • -
        • `nextElementSibling` `previousElementSibling`
        • -
        • `children`, `firstElementChild` `lastElementChild`
        • -
        - -Все они IE9+, кроме `children`, который работает в IE8-, но содержит не только элементы, но и комментарии (ошибка в браузере). - -Дополнительно у некоторых типов элементов могут быть и другие ссылки, свойства, коллекции для навигации, -например для таблиц: - -
        -
        `table.rows[N]`
        -
        строка `TR` номер `N`.
        -
        `tr.cells[N]`
        -
        ячейка `TH/TD` номер `N`.
        -
        `tr.sectionRowIndex`
        -
        номер строки в таблице в секции `THEAD/TBODY`.
        -
        `td.cellIndex`
        -
        номер ячейки в строке.
        -
        - -## Поиск - - -
        -
        `*.querySelector(css)`
        -
        По селектору, только первый элемент
        -
        `*.querySelectorAll(css)`
        -
        По селектору CSS3, в IE8 по CSS 2.1
        -
        `document.getElementById(id)`
        -
        По уникальному `id`
        -
        `document.getElementsByName(name)`
        -
        По атрибуту `name`, в IE9- работает только для элементов, где `name` предусмотрен стандартом.
        -
        `*.getElementsByTagName(tag)`
        -
        По тегу `tag`
        -
        `*.getElementsByClassName(class)`
        -
        По классу, IE9+, корректно работает с элементами, у которых несколько классов.
        -
        - -Вообще, обычно можно использовать только `querySelector/querySelectorAll`. Методы `getElement*` работают быстрее (за счёт более оптимальной внутренней реализации), но в 99% случаев это различие очень небольшое и роли не играет. - -Дополнительно есть методы: -
        -
        `elem.matches(css)`
        -
        Проверяет, подходит ли элемент под CSS-селектор.`elem.closest(css)` -
        Ищет ближайший элемент сверху по иерархии DOM, подходящий под CSS-селектор. Первым проверяется сам `elem`. Этот элемент возвращается.
        -
        `elemA.contains(elemB)`
        -
        Возвращает `true`, если `elemA` является предком (содержит) `elemB`.
        -
        `elemA.compareDocumentPosition(elemB)`
        -
        Возвращает битовую маску, которая включает в себя отношение вложенности между `elemA` и `elemB`, а также -- какой из элементов появляется в DOM первым.
        - -
        - - -## Изменение - -
          -
        • `parent.appendChild(newChild)`
        • -
        • `parent.removeChild(child)`
        • -
        • `parent.insertBefore(newChild, refNode)`
        • -
        • `parent.insertAdjacentHTML("beforeBegin|afterBegin|beforeEnd|afterEnd", html)`
        • -
        • `parent.insertAdjacentElement("beforeBegin|...|afterEnd", text)` (кроме FF)
        • -
        • `parent.insertAdjacentText("beforeBegin|...|afterEnd", text)` (кроме FF)
        • -
        • `document.write(...)`
        • -
        - -Скорее всего, понадобятся полифиллы для: - -
          -
        • `node.append(...nodes)`
        • -
        • `node.prepend(...nodes)`
        • -
        • `node.after(...nodes)`,
        • -
        • `node.before(...nodes)`
        • -
        • `node.replaceWith(...nodes)`
        • -
        - -## Классы и стили - -
        -
        `elem.className`
        -
        Атрибут `class` -
        `elem.classList.add(class) remove(class) toggle(class) contains(class)`
        -
        Управление классами, для IE9- есть [эмуляция](https://github.com/eligrey/classList.js/blob/master/classList.js).
        -
        `elem.style`
        -
        Стили в атрибуте `style` элемента
        -
        `getComputedStyle(elem, "")` -
        Стиль, с учётом всего каскада, вычисленный и применённый (только чтение)
        -
        - -## Размеры и прокрутка элемента - -
        -
        `clientLeft/Top`
        -
        Ширина левой/верхней рамки `border`
        -
        `clientWidth/Height`
        -
        Ширина/высота внутренней части элемента, включая содержимое и `padding`, не включая полосу прокрутки (если есть).
        -
        `scrollWidth/Height`
        -
        Ширина/высота внутренней части элемента, с учетом прокрутки.
        -
        `scrollLeft/Top`
        -
        Ширина/высота прокрученной области.
        -
        `offsetWidth/Height`
        -
        Полный размер элемента: ширина/высота, включая `border`.
        -
        - -## Размеры и прокрутка страницы - -
          -
        • ширина/высота видимой области: `document.documentElement.clientHeight`
        • -
        • прокрутка(чтение): `window.pageYOffset || document.documentElement.scrollTop`
        • -
        • прокрутка(изменение): -
            -
          • `window.scrollBy(x,y)`: на x,y относительно текущей позиции.
          • -
          • `window.scrollTo(pageX, pageY)`: на координаты в документе.
          • -
          • `elem.scrollIntoView(true/false)`: прокрутить, чтобы `elem` стал видимым и оказался вверху окна(`true`) или внизу(`false`)
          • -
          -
        • -
        - -## Координаты - -
          -
        • относительно окна: `elem.getBoundingClientRect()`
        • -
        • относительно документа: `elem.getBoundingClientRect()` + прокрутка страницы
        • -
        • получить элемент по координатам: `document.elementFromPoint(clientX, clientY)`
        • -
        - -Список намеренно сокращён, чтобы было проще найти то, что нужно. diff --git a/2-ui/1-document/2-dom-nodes/1-body-from-head/solution.md b/2-ui/1-document/2-dom-nodes/1-body-from-head/solution.md deleted file mode 100644 index 399d66bc..00000000 --- a/2-ui/1-document/2-dom-nodes/1-body-from-head/solution.md +++ /dev/null @@ -1,21 +0,0 @@ -Выведет `null`, так как на момент выполнения скрипта тег `` ещё не обработан браузером. - -Попробуйте в действии: - -```html - - - - - - - - - Привет, мир! - - - -``` - diff --git a/2-ui/1-document/2-dom-nodes/1-body-from-head/task.md b/2-ui/1-document/2-dom-nodes/1-body-from-head/task.md deleted file mode 100644 index ef89617c..00000000 --- a/2-ui/1-document/2-dom-nodes/1-body-from-head/task.md +++ /dev/null @@ -1,24 +0,0 @@ -# Что выведет этот alert? - -[importance 5] - -Что выведет `alert`? - -```html - - - -*!* - -*/!* - - - - Привет, мир! - - - -``` - diff --git a/2-ui/1-document/2-dom-nodes/article.md b/2-ui/1-document/2-dom-nodes/article.md deleted file mode 100644 index aed95c16..00000000 --- a/2-ui/1-document/2-dom-nodes/article.md +++ /dev/null @@ -1,269 +0,0 @@ -# Дерево DOM - -Основным инструментом работы и динамических изменений на странице является DOM (Document Object Model) -- объектная модель, используемая для XML/HTML-документов. - - -[cut] -Согласно DOM-модели, документ является иерархией, деревом. Каждый HTML-тег образует узел дерева с типом "элемент". Вложенные в него теги становятся дочерними узлами. Для представления текста создаются узлы с типом "текст". - -DOM -- это представление документа в виде дерева объектов, доступное для изменения через JavaScript. - -## Пример DOM - -Построим, для начала, дерево DOM для следующего документа. - -```html - - - - - О лосях - - - Правда о лосях - - -``` - -Его вид: - -
        - - -В этом дереве выделено два типа узлов. - -
          -
        1. Теги образуют *узлы-элементы* (element node). Естественным образом одни узлы вложены в другие. Структура дерева образована исключительно за счет них.
        2. -
        3. Текст внутри элементов образует *текстовые узлы* (text node), обозначенные как `#text`. Текстовый узел содержит исключительно строку текста и не может иметь потомков, то есть он всегда на самом нижнем уровне.
        4. -
        - -[online] -**На рисунке выше синие узлы-элементы можно кликать, при этом их дети будут скрываться-раскрываться.** -[/online] - -Обратите внимание на специальные символы в текстовых узлах: -
          -
        • перевод строки: `↵`
        • -
        • пробел: `␣`
        • -
        - -**Пробелы и переводы строки -- это тоже текст, полноправные символы, которые учитываются в DOM.** - -В частности, в примере выше тег `` содержит не только узлы-элементы `` и ``, но и `#text` (пробелы, переводы строки) между ними. - -Впрочем, как раз на самом верхнем уровне из этого правила есть исключения: пробелы до `` по стандарту игнорируются, а любое содержимое после `` не создаёт узла, браузер переносит его внутрь, в конец `body`. - -В остальных случаях всё честно -- если пробелы есть в документе, то они есть и в DOM, а если их убрать, то и в DOM их не будет, получится так: - -```html - - -О лосяхПравда о лосях -``` - -
        - - -## Автоисправление - -При чтении неверного HTML браузер автоматически корректирует его для показа и при построении DOM. - -В частности, всегда будет верхний тег ``. Даже если в тексте нет -- в DOM он будет, браузер создаст его самостоятельно. - -То же самое касается и тега ``. - -Например, если файл состоит из одного слова `"Привет"`, то браузер автоматически обернёт его в `` и ``. - -**При генерации DOM браузер самостоятельно обрабатывает ошибки в документе, закрывает теги и так далее.** - -Такой документ: - -```html - -

        Привет -

      • Мама -
      • и -
      • Папа -``` - -...Превратится вот во вполне респектабельный DOM, браузер сам закроет теги: - -
        - - -[warn header="Таблицы всегда содержат ``"] -Важный "особый случай" при работе с DOM -- таблицы. По стандарту DOM они обязаны иметь ``, однако в HTML их можно написать без него. В этом случае браузер добавляет `` самостоятельно. - -Например, для такого HTML: - -```html - - - -
        1
        -``` - -DOM-структура будет такой: -
        - - -Вы видите? Появился ``, как будто документ был таким: - -```html - - -*!* - -*/!* - -*!* - -*/!* -
        1
        -``` - -Важно знать об этом, иначе при работе с таблицами возможны сюрпризы. -[/warn] - - -## Другие типы узлов - -Дополним страницу новыми тегами и комментарием: - -```html - - - - - Правда о лосях -
          -
        1. Лось — животное хитрое
        2. -*!* - -*/!* -
        3. ...и коварное!
        4. -
        - - - -``` - -
        - - -**В этом примере тегов уже больше, и даже появился узел нового типа -- *комментарий*.** - -Казалось бы, зачем комментарий в DOM? На отображение-то он всё равно не влияет. Но так как он есть в HTML -- обязан присутствовать в DOM-дереве. - -**Всё, что есть в HTML, находится и в DOM.** - -Даже директива ``, которую мы ставим в начале HTML, тоже является DOM-узлом, и находится в дереве DOM непосредственно перед ``. На иллюстрациях выше этот факт скрыт, поскольку мы с этим узлом работать не будем, он никогда не нужен. - -Даже сам объект `document`, формально, является DOM-узлом, самым-самым корневым. - -Всего различают 12 типов узлов, но на практике мы работаем с четырьмя из них: -
          -
        1. Документ -- точка входа в DOM.
        2. -
        3. Элементы -- основные строительные блоки.
        4. -
        5. Текстовые узлы -- содержат, собственно, текст.
        6. -
        7. Комментарии -- иногда в них можно включить информацию, которая не будет показана, но доступна из JS.
        8. -
        - -## Возможности, которые дает DOM - -Зачем, кроме красивых рисунков, нужна иерархическая модель DOM? - -**DOM нужен для того, чтобы манипулировать страницей -- читать информацию из HTML, создавать и изменять элементы.** - -Узел `HTML` можно получить как `document.documentElement`, а `BODY` -- как `document.body`. - -Получив узел, мы можем что-то сделать с ним. - -Например, можно поменять цвет `BODY` и вернуть обратно: - -```js -//+ run -document.body.style.backgroundColor = 'red'; -alert( 'Поменяли цвет BODY' ); - -document.body.style.backgroundColor = ''; -alert( 'Сбросили цвет BODY' ); -``` - -DOM предоставляет возможность делать со страницей всё, что угодно. - -Позже мы более подробно рассмотрим различные свойства и методы DOM-узлов. - - -## Особенности IE8- - -IE8- не генерирует текстовые узлы, если они состоят только из пробелов. - - То есть, такие два документа дадут идентичный DOM: - -```html - - -О лосяхПравда о лосях -``` - -И такой: - -```html - - - - - О лосях - - - - Правда о лосях - - - -``` - -Эта, с позволения сказать, "оптимизация" не соответствует стандарту и IE9+ уже работает как нужно, то есть как описано ранее. - -Но, по большому счёту, для нас это отличие должно быть без разницы, ведь при работе с DOM/HTML мы в любом случае не должны быть завязаны на то, есть пробел между тегами или его нет. Мало ли, сегодня он есть, а завтра решили переформатировать HTML и его не стало. - -К счастью, свойства и методы DOM, которые мы пройдём далее, вполне позволяют писать код, который будет работать корректно во всех версиях браузеров. Так что знать об этом отличии надо, если вы хотите поддерживать старые IE, но проблем оно нам создавать не будет. - -## Итого - -
          -
        • DOM-модель -- это внутреннее представление HTML-страницы в виде дерева.
        • -
        • Все элементы страницы, включая теги, текст, комментарии, являются узлами DOM.
        • -
        • У элементов DOM есть свойства и методы, которые позволяют изменять их.
        • -
        • IE8- не генерирует пробельные узлы.
        • -
        - -Кстати, DOM-модель используется не только в JavaScript, это известный способ представления XML-документов. - -В следующих главах мы познакомимся с DOM более плотно. - -[libs] -d3 -domtree -[/libs] \ No newline at end of file diff --git a/2-ui/1-document/3-dom-console/1.png b/2-ui/1-document/3-dom-console/1.png deleted file mode 100644 index 6ba0e56d08dc91449dd4a7df1d227a94ee935fef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28286 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 z 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 XmDJe7a}jP(00000NkvXXu0mjfx?PA( diff --git a/2-ui/1-document/3-dom-console/2.png b/2-ui/1-document/3-dom-console/2.png deleted file mode 100644 index 260e183cbbe1e22822ba10866cc384007e857ffb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28260 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 diff --git a/2-ui/1-document/3-dom-console/2@2x.png b/2-ui/1-document/3-dom-console/2@2x.png deleted file mode 100755 index 4159c07b48ce76d1a68a4ed2777ee7b46bbffe00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44086 zcmcF~Ra9I})9&C7!3PV$oeb^}+}#N>xLdH`1b2cD?(XjH?ry<7I0=4uzxVrZ&VO|- z&a7E$c6E1EKULMcc1=x9n394d8Zsd=002OfmJ(9|0ARrY0CXiH%=^g7PO9nq2dufU zyf6Sz6NB<>2=`7yIjKmB04gVmkKb3mD9NdbzrDR(U0q#VT>Sq1`}+F&^78VH8gOuM z@CE?P&(EKqpO21?c64-XZEbCDZ}0Bzz6)7cSeTuiJv%$w-``(eUY?tqv$L~XTwGjR zTU%dWUtL|@+}zyQ*x1?GnVFe6Jw4sq+nbu2T3K1Ku&{V~dR|&uQc_ZSdwnf0FaPuB z@9pg^!0YYh<>l`Feqv&xr>FPm=$M(AIWI4-pr9ZO#(!vVu(h?dp`l@5U;v0xq7}Va zTwGjPSy^3Ojf;!>@bDlYAn-do?v)4c`3uSG&ibp9&Pq+mlMKVb%tT^hA_xTX@bHL< zi6;0;kRk~f85!2m(NR!PxCa1yeEmW~g6&) -po@3yY-t&fjS3+)LmE-qn%Zw+&s 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�^lfj5K!=o(m!=_3IS{}$Fjk_H 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

        bePlMU!9ps{>{{ry9pK^Cv&T)E)$( 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 l?qkG*Wb0A -

      • Выберите его во вкладке Elements.
      • -
      • ...Либо внизу вкладки Elements есть лупа, при нажатии на которую можно выбрать элемент кликом.
      • -
      • ...Либо, что обычно удобнее всего, просто кликните на нужном месте на странице правой кнопкой и выберите в меню "Проверить Элемент".
      • - - - - -Справа будет различная информация об элементе: -
        -
        Computed Style
        -
        Итоговые свойства CSS элемента, которые он приобрёл в результате применения всего каскада стилей, включая внешние CSS-файлы и атрибут `style`.
        -
        Style
        -
        Каскад стилей, применённый к элементу. Каждое стилевое правило отдельно, здесь же можно менять стили кликом.
        -
        Metrics
        -
        Размеры элемента.
        -
        ...
        -
        И еще некоторые реже используемые вкладки, которые станут понятны по мере изучения DOM.
        -
        - -[warn header="DOM в Elements не совсем соответствует реальному"] -Отображение DOM во вкладке Elements не совсем соответствует реальному. В частности, там не отображаются пробельные узлы. Это сделано для удобства просмотра. Но мы-то знаем, что они есть. - -С другой стороны, в Elements можно увидеть CSS-псевдоэлементы, такие как `::before`, `::after`. Это также сделано для удобства, в DOM их не существует. -[/warn] - - -## Выбранные элементы $0 $1... - -Зачастую бывает нужно выбрать элемент DOM и сделать с ним что-то на JavaScript. - -Находясь во вкладке Elements, откройте консоль нажатием Esc (или перейдите на вкладку Console). - -**Последний элемент, выбранный во вкладке Elements, доступен в консоли как `$0`, предыдущий -- `$1` и так далее.** - -Запустите на элементе команду, которая делает его красным: - -```js -$0.style.backgroundColor = 'red'; -``` - -В браузере это может выглядеть примерно так: - - - -Мы выделили элемент, применили к нему JavaScript в консоли, тут же увидели изменения в браузере. - -Есть и обратная дорожка. Любой элемент из JS-переменной можно посмотреть во вкладке Elements, для этого: - -
          -
        1. Выведите эту переменную в консоли, например при помощи `console.log`.
        2. -
        3. Кликните на выводе в консоли правой кнопкой мыши.
        4. -
        5. Выберите соответствующий пункт меню.
        6. -
        - - - -Таким образом, можно легко перемещаться из Elements в консоль и обратно. - -## Ещё методы консоли - -Для поиска элементов в консоли есть два специальных метода: -
          -
        • `$$("div.my")` -- ищет все элементы в DOM по данному CSS-селектору.
        • -
        • `$("div.my")` -- ищет первый элемент в DOM по данному CSS-селектору.
        • -
        - -Более полная документация по методам консоли доступна на страницах [Console API Reference для Chrome](https://developers.google.com/chrome-developer-tools/docs/console-api) и [Command Line API для Firebug](https://getfirebug.com/wiki/index.php/Command_Line_API), а также на [firebug.ru](http://firebug.ru). - -Другие браузеры реализуют похожий функционал, освоив Chrome/Firebug, вы легко с ними разберётесь. diff --git a/2-ui/1-document/3-dom-console/losi.html b/2-ui/1-document/3-dom-console/losi.html deleted file mode 100644 index 06f8da0d..00000000 --- a/2-ui/1-document/3-dom-console/losi.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - Правда о лосях -
          -
        1. Лось — животное хитрое
        2. - -
        3. ..И коварное!
        4. -
        - - - \ No newline at end of file diff --git a/2-ui/1-document/4-traversing-dom/1-dom-children/solution.md b/2-ui/1-document/4-traversing-dom/1-dom-children/solution.md deleted file mode 100644 index e620832e..00000000 --- a/2-ui/1-document/4-traversing-dom/1-dom-children/solution.md +++ /dev/null @@ -1,32 +0,0 @@ -# HEAD - -Два способа: - -```js -document.documentElement.children[0] -document.documentElement.firstChild -``` - -Второй способ работает, так как пробелы перед `` игнорируются. - -Также в современных браузерах доступен `document.head`. - -# UL - -Например, так: - -```js -document.body.children[1] -``` - -# LI - -Можно так: - -```js -document.body.children[1].children[1]; // LI -``` - -Может возникнуть проблема с комментарием в IE8-, так как он станет одним из `children`, в результате последний код станет работать некорректно. - -В последующих разделах учебника мы рассмотрим другие методы поиска по DOM, которые позволят эту проблему обойти. \ No newline at end of file diff --git a/2-ui/1-document/4-traversing-dom/1-dom-children/task.md b/2-ui/1-document/4-traversing-dom/1-dom-children/task.md deleted file mode 100644 index 21e85842..00000000 --- a/2-ui/1-document/4-traversing-dom/1-dom-children/task.md +++ /dev/null @@ -1,38 +0,0 @@ -# DOM children - -[importance 5] - -Для страницы: - -```html - - - - - - - - -
        Пользователи:
        -
          -
        • Маша
        • -
        • Вовочка
        • -
        - - - - - - - - -``` - -
          -
        • Напишите код, который получит элемент `HEAD`.
        • -
        • Напишите код, который получит `UL`.
        • -
        • Напишите код, который получит второй `LI`. Будет ли ваш код работать в IE8-, если комментарий переместить *между* элементами `LI`?
        • -
        - diff --git a/2-ui/1-document/4-traversing-dom/2-has-childnodes/solution.md b/2-ui/1-document/4-traversing-dom/2-has-childnodes/solution.md deleted file mode 100644 index 07ee2da5..00000000 --- a/2-ui/1-document/4-traversing-dom/2-has-childnodes/solution.md +++ /dev/null @@ -1,28 +0,0 @@ -Вначале нерабочие способы, которые могут прийти на ум: - -```js -//+ no-beautify -if (!elem) { .. } -``` - -Это не работает, так как `elem` всегда есть, и является объектом. Так что проверка `if (elem)` всегда верна, вне зависимости от того, есть ли у `elem` потомки. - -```js -//+ no-beautify -if (!elem.childNodes) { ... } -``` - -Тоже не работает, так как псевдо-массив `childNodes` всегда существует. Он может быть пуст или непуст, но он всегда является объектом, так что проверка `if (elem.childNodes)` всегда верна. - -Несколько рабочих способов: - -```js -//+ no-beautify -if (!elem.childNodes.length) { ... } - -if (!elem.firstChild) { ... } - -if (!elem.lastChild) { ... } -``` - -Также существует метод [hasChildNodes](https://developer.mozilla.org/en-US/docs/Web/API/Node.hasChildNodes), который позволяет вызовом `elem.hasChildNodes()` определить наличие детей. Он работает так же, как проверка `elem.childNodes.length != 0`. \ No newline at end of file diff --git a/2-ui/1-document/4-traversing-dom/2-has-childnodes/task.md b/2-ui/1-document/4-traversing-dom/2-has-childnodes/task.md deleted file mode 100644 index 7532f1fc..00000000 --- a/2-ui/1-document/4-traversing-dom/2-has-childnodes/task.md +++ /dev/null @@ -1,14 +0,0 @@ -# Проверка существования детей - -[importance 5] - -Придумайте самый короткий код для проверки, пуст ли элемент `elem`. - -"Пустой" -- значит нет дочерних узлов, даже текстовых. - -```js -//+ no-beautify -if (/*...ваш код проверки elem... */) { узел elem пуст } -``` - -Что написать в условии `if` ? \ No newline at end of file diff --git a/2-ui/1-document/4-traversing-dom/3-navigation-links-which-null/solution.md b/2-ui/1-document/4-traversing-dom/3-navigation-links-which-null/solution.md deleted file mode 100644 index ca09870b..00000000 --- a/2-ui/1-document/4-traversing-dom/3-navigation-links-which-null/solution.md +++ /dev/null @@ -1,10 +0,0 @@ -
          -
        1. Да, верно, с оговоркой. Элемент `elem.lastChild` последний, у него нет правого соседа. - -**Оговорка:** `elem.lastChild.nextSibling` выдаст ошибку если `elem` не имеет детей. -
        2. -
        3. Нет, неверно, это может быть текстовый узел. Значением `elem.children[0]` является первый узел-элемент, перед ним может быть текст. - -Аналогично предыдущему случаю, если у `elem` нет детей-элементов -- будет ошибка. -
        4. - diff --git a/2-ui/1-document/4-traversing-dom/3-navigation-links-which-null/task.md b/2-ui/1-document/4-traversing-dom/3-navigation-links-which-null/task.md deleted file mode 100644 index 993d7d8b..00000000 --- a/2-ui/1-document/4-traversing-dom/3-navigation-links-which-null/task.md +++ /dev/null @@ -1,9 +0,0 @@ -# Вопрос по навигационным ссылкам - -[importance 5] - -Если `elem` -- это произвольный узел DOM... - -Верно ли, что `elem.lastChild.nextSibling` всегда `null`? - -Верно ли, что `elem.children[0].previousSibling` всегда `null` ? \ No newline at end of file diff --git a/2-ui/1-document/4-traversing-dom/4-select-diagonal-cells/solution.md b/2-ui/1-document/4-traversing-dom/4-select-diagonal-cells/solution.md deleted file mode 100644 index 27da4a11..00000000 --- a/2-ui/1-document/4-traversing-dom/4-select-diagonal-cells/solution.md +++ /dev/null @@ -1 +0,0 @@ -Для удобства работы с таблицей используем специальные свойства `rows` и `cells`. \ No newline at end of file diff --git a/2-ui/1-document/4-traversing-dom/4-select-diagonal-cells/solution.view/index.html b/2-ui/1-document/4-traversing-dom/4-select-diagonal-cells/solution.view/index.html deleted file mode 100644 index fc03772e..00000000 --- a/2-ui/1-document/4-traversing-dom/4-select-diagonal-cells/solution.view/index.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          1:12:13:14:15:1
          1:22:23:24:25:2
          1:32:33:34:35:3
          1:42:43:44:45:4
          1:52:53:54:55:5
          - - - - \ No newline at end of file diff --git a/2-ui/1-document/4-traversing-dom/4-select-diagonal-cells/source.view/index.html b/2-ui/1-document/4-traversing-dom/4-select-diagonal-cells/source.view/index.html deleted file mode 100644 index d9b40920..00000000 --- a/2-ui/1-document/4-traversing-dom/4-select-diagonal-cells/source.view/index.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          1:12:13:14:15:1
          1:22:23:24:25:2
          1:32:33:34:35:3
          1:42:43:44:45:4
          1:52:53:54:55:5
          - - - - \ No newline at end of file diff --git a/2-ui/1-document/4-traversing-dom/4-select-diagonal-cells/task.md b/2-ui/1-document/4-traversing-dom/4-select-diagonal-cells/task.md deleted file mode 100644 index 92034c40..00000000 --- a/2-ui/1-document/4-traversing-dom/4-select-diagonal-cells/task.md +++ /dev/null @@ -1,17 +0,0 @@ -# Выделите ячейки по диагонали - -[importance 5] - -Напишите код, который выделит все ячейки в таблице по диагонали. - -Вам нужно будет получить из таблицы `table` все диагональные `td` и выделить их, используя код: - -```js -// в переменной td DOM-элемент для тега -td.style.backgroundColor = 'red'; -``` - -Должно получиться так: -[iframe src="solution" height=180] - - diff --git a/2-ui/1-document/4-traversing-dom/article.md b/2-ui/1-document/4-traversing-dom/article.md deleted file mode 100644 index 13ef881a..00000000 --- a/2-ui/1-document/4-traversing-dom/article.md +++ /dev/null @@ -1,433 +0,0 @@ -# Навигация по DOM-элементам - -DOM позволяет делать что угодно с HTML-элементом и его содержимым, но для этого нужно сначала нужный элемент получить. - -Доступ к DOM начинается с объекта `document`. Из него можно добраться до любых узлов. - -[cut] - -Так выглядят основные ссылки, по которым можно переходить между узлами DOM: - - - -Посмотрим на них повнимательнее. - -## Сверху documentElement и body - -Самые верхние элементы дерева доступны напрямую из `document`. - -
          -
          `` = `document.documentElement`
          -
          Первая точка входа -- `document.documentElement`. Это свойство ссылается на DOM-объект для тега ``.
          -
          `` = `document.body`
          -
          Вторая точка входа -- `document.body`, который соответствует тегу ``.
          -
          - -В современных браузерах (кроме IE8-) также есть `document.head` -- прямая ссылка на `` - -[warn header="Есть одна тонкость: `document.body` может быть равен `null`"] -Нельзя получить доступ к элементу, которого еще не существует в момент выполнения скрипта. - -В частности, если скрипт находится в ``, то в нём недоступен `document.body`. - -Поэтому в следующем примере первый `alert` выведет `null`: - -```html - - - - - - - - - - - - - - - -``` -[/warn] - -[smart header="В DOM активно используется `null`"] -В мире DOM в качестве значения, обозначающего "нет такого элемента" или "узел не найден", используется не `undefined`, а `null`. -[/smart] - - -## Дети: childNodes, firstChild, lastChild - -Здесь и далее мы будем использовать два принципиально разных термина. - -
            -
          • **Дочерние элементы (или дети)** -- элементы, которые лежат *непосредственно* внутри данного. Например, внутри `` обычно лежат `` и ``.
          • -
          • **Потомки** -- все элементы, которые лежат внутри данного, вместе с их детьми, детьми их детей и так далее. То есть, всё поддерево DOM.
          • -
          - -Псевдо-массив `childNodes` хранит все дочерние элементы, включая текстовые. - -Пример ниже последовательно выведет дочерние элементы `document.body`: - -```html - - - - - -
          Начало
          - -
            -
          • Информация
          • -
          - -
          Конец
          - - - ... - - - -``` - -Обратим внимание на маленькую деталь. Если запустить пример выше, то последним будет выведен элемент ` - ... - - - -``` - -Всегда верны равенства: - -```js -elem.firstElementChild === elem.children[0] -elem.lastElementChild === elem.children[elem.children.length - 1] -``` - - -[warn header="В IE8- поддерживается только `children`"] -Других навигационных свойств в этих браузерах нет. Впрочем, как мы увидим далее, можно легко сделать полифилл, и они, всё же, будут. -[/warn] - - -[warn header="В IE8- в `children` присутствуют узлы-комментарии"] -С точки зрения стандарта это ошибка, но IE8- также включает в `children` узлы, соответствующие HTML-комментариям. - -Это может привести к сюрпризам при использовании свойства `children`, поэтому HTML-комментарии либо убирают либо используют фреймворк, к примеру, jQuery, который даёт свои методы перебора и отфильтрует их. -[/warn] - -## Особые ссылки для таблиц [#dom-navigation-tables] - -У конкретных элементов DOM могут быть свои дополнительные ссылки для большего удобства навигации. - -Здесь мы рассмотрим таблицу, так как это важный частный случай и просто для примера. - -В списке ниже выделены наиболее полезные: - -
          -
          `TABLE`
          -
          -
            -
          • **`table.rows`** -- коллекция строк `TR` таблицы.
          • -
          • `table.caption/tHead/tFoot` -- ссылки на элементы таблицы `CAPTION`, `THEAD`, `TFOOT`.
          • -
          • `table.tBodies` -- коллекция элементов таблицы `TBODY`, по спецификации их может быть несколько.
          • -
          -
          `THEAD/TFOOT/TBODY`
          -
          -
            -
          • `tbody.rows` -- коллекция строк `TR` секции.
          • -
          -
          `TR`
          -
          -
            -
          • **`tr.cells`** -- коллекция ячеек `TD/TH`
          • -
          • **`tr.sectionRowIndex`** -- номер строки в текущей секции `THEAD/TBODY`
          • -
          • `tr.rowIndex` -- номер строки в таблице
          • -
          -
          -
          `TD/TH`
          -
          -
            -
          • **`td.cellIndex`** -- номер ячейки в строке
          • -
          -
          -
          - -Пример использования: - -```html - - - - - - - - -
          один два
          три четыре
          - - -``` - -Спецификация: [HTML5: tabular data](http://www.w3.org/TR/html5/tabular-data.html). - -Даже если эти свойства не нужны вам прямо сейчас, имейте их в виду на будущее, когда понадобится пройтись по таблице. - -Конечно же, таблицы -- не исключение. - -Аналогичные полезные свойства есть у HTML-форм, они позволяют из формы получить все её элементы, а из них -- в свою очередь, форму. Мы рассмотрим их позже. - -[online] -# Интерактивное путешествие - -Для того, чтобы убедиться, что вы разобрались с навигацией по DOM-ссылкам -- вашему вниманию предлагается интерактивное путешествие по DOM. - -Ниже вы найдёте документ (в ифрейме), и кнопки для перехода по нему. - -Изначальный элемент -- ``. Попробуйте по ссылкам найти "информацию". Или ещё чего-нибудь. - -Вы также можете открыть документ [в отдельном окне](travel/) и походить по нему в браузерной консоли разработчика, чтобы лучше понять разницу между показанным там DOM и реальным. - -Разметка: - -[html src="travel/index.html"/] - -Документ: - -[iframe samedomain id="travel-dom-iframe" src="travel" height=150] - -
          - -Навигация: -
            -
          • -
              -
            • -
            • Здесь стоите вы -
                -
              • -
              • -
              -
            • -
            • -
            -
          • -
          - -
          - - -
          - - -[/online] - -# Итого - -В DOM доступна навигация по соседним узлам через ссылки: -
            -
          • По любым узлам.
          • -
          • Только по элементам.
          • -
          - -Также некоторые виды элементов предоставляют дополнительные ссылки для большего удобства, например у таблиц есть свойства для доступа к строкам/ячейкам. - -[libs] -d3 -domtree -[/libs] -[head] - - -[/head] - diff --git a/2-ui/1-document/4-traversing-dom/dom-links-elements.png b/2-ui/1-document/4-traversing-dom/dom-links-elements.png deleted file mode 100644 index c1d1a0fe136ff20107837c31c91112b225dc8564..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34106 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 ar?0w-gV>w3*+`)8kCd3aXqB*j!2bc;xM|A( diff --git a/2-ui/1-document/4-traversing-dom/dom-links-elements@2x.png b/2-ui/1-document/4-traversing-dom/dom-links-elements@2x.png deleted file mode 100644 index 2f2b83131c6487462698949672a8ca707ac9e31b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71004 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 z 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

          hXF?F3CuIuGg{3?MOG7?% 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 diff --git a/2-ui/1-document/4-traversing-dom/dom-links.png b/2-ui/1-document/4-traversing-dom/dom-links.png deleted file mode 100644 index d7a3ec1a5e994364cad4e7fa06343e60ab45270a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32591 zcmeFZWmI0xv)~I41a~L61&847?(UZ0PH=Y*?(XivT@u{g-QC^i;m!Y?Ida$BJM(eY z{lH>1-MhPY@9M7VUsVw*FDnKQ^BD#N1O#3}Tv!nV1T+iyV+I8Q{EHAJSv2q$sJ)_? zAV}pH?jZ;WKZt~|fU*ndNd~mGvdVJTct&$A0~}WkR0vFy|4*&Tri8*+DWhcl-84Brz?^qBJ=+GCV@2tixmm*BoMf_Uk~YfAEK->8K0`9G=F#0G_*Dq$91A1Vjf1G_3F0~sqy{M54q?K{;YGzEW7m;Bx> z=Y4B=tTROsR+0}}q&|CS777*c!-|mPoOdUU9xTtpB>XWzw7a}RrXgs zJIf6xsD&-}Zt#=)_{4y`#8IZhoCf%y?2@g;u2ELhP)dehGn~g4(quUw&&ljl6-b(% zPt~_s(0hyMj4S)rRIW#(C#r~l(&wrdOTsszLr}ykNs39Kx4$}9IU~jR`q_vmAtv2m zf8$i|J3Y;`NukODCnt%KxxQ1dtY`3!*>#mv%`T@#)dtZcE3rR%!WAj!qh@KEDB+yr z4T1d5p?Mh@N-h^utM<|Ks#uKuc8#ZiZAyj7`R1p!u?Ed4SzYTGcAmVDQz?l)m3hn1 zR#lbJA}%LH`H;swo&aVfQ!VhW$GVD3fCVk`gkhe|njX4pzM)}aPoUcU^7(?NOJPZP z18idF!&vTX1G^G!r?^s6q68~~x+q`w1;_Y3RYKoGA99VR?JZin&tz}lJ7&pOlw zzVkQFLexY#92fG#uCeuQ^HRLGhA(bBLXMlwzZ5P98T1@pb_WV1SO9gfw;4}+zb}Qr zt~gff8F9H@m{MD|YEL6wgY(^;GfJu-MMutT+4SMavb@fZt2i%Rr8C^3K>$|aAT+J@ z)u3SZ$EfV>_S;BXE)=$yy>V6LOB|Pz8wT|SHIrU>+m|P7w}0a7GZ(3U3tG9B+mB?0 z;vrLsy7Mhxq1kfRm6v&}Fu{6#MrJ%}s%kYro+QE;VkXU}{HZgveJN~7fp$@^z0$`+ zQCr*S2}8NRd>#X^K<1Q+o;Ky3L7 z2vb%AkJmRI#q9EtsWB+%iGZY}x0ywqT*|7uo=B2Jqdf6;Vufg|RUsY{8s<#PbZLZk z&x?M4OrbElYaIs_X=~^d1_u0t#a-%q=Wj_v5SXZga6lcx9o88G!9yixXZbnQ$gE<^Yf<}p&=T~5;GPwOzT4&kW-QE_1A1Jw_qwYv` zAe1kfgay}ED^y~eAF8p4ygH^V7-+Wm=BtKjGChc`h9^ik@deuF+AOXcLUbM_J6c#$ zg|I;0c%M-JUXfxO7BW9vwBY-=?N5xdrq=e_B4=ztOyosY1q>tTOH%O3yG%Q=ZG89= z6EAs7vw(*$Ef&KE(Xv9=Rb*D9)NAp!i2>2LI;}`d>9lg`h;v46o32i$+Wdx85ru1# z;9R4nR#5u<*{euj+aZ=@in2)%Q9&V8)EHfk3sDB`%X)cr9%lEWvT(bQktD1xNAZb7 zwTKkAq92kTYB9}qejt$twDaGI)3Z6{=FgiUMbYz1*2j9%=SYgIr7Pv~ zA!fONW7PLpzEy&@%==YRS~dAHjcm$xhG605oYP|xQTpfYib(yWxh5N&UN;b6nG z@)Gc(^zxVX@e@OA@dfAH*&P{frJZ+AUwu?n_p4RQtYqw;>pNe}-@kx`^lEo6%xX?& zV?Qf$%rWzxnH{a4ls7$RQzsJW%sa}p$Jd(QlexUVZq^}_v!zq`1hv=3`D`e3D}9ZZ zp>sh)i$m7$!SobOe34bNVt(JhN6&eve>NyhEr1JE2MU1awXFwT{w++{g@T2DCs`hr zthmt#6+mX!mnYTfi#gyBNWZaZCIrdserU1IS#w34^ZQa^h75U9 zr(I_e6Jlt05kJ8NabT>sGJwMQkhfz*sV`1zZj?1@HTm)zDT{56zZJCJ1oo&dyK^HJ zeSOJJ3BKVWEelzzSb`|YPHA+s7Q)UIoD+_sPVnf+=2EBY=E=oM`LdUJ+$(V;xZJlFIZGn9Y z(*lJDeCS7?E+G++^l>4Ul?jcHBL6WVP**vIgQS z(iVjJ9|ehs4*G)^arTFhiSLKLtoYELa|{UIKK-LSbBICS_pjyQorfJ0pZj|fEs!+< z0RC)RWS%cACg1jBMT&NbkQoAe2^v)0$$}gV zdezhw@a#rJ%m#?GE(pR2Rp2|BQImXfYTyL83|7E0{DjrY@co8_WZL`D-_~!? zX-#_Ho5kPw+`Quv>f(a2*6nkCM*P{g$RPXEPkrDt=3wBKmbmyVEYsXpRQ~M1dEWw$ znv!vFJ0Bkv0GbSsvF5;kuVDdj=Zl>TL$G{;H*3l?_u&VJVwMG=OYD2}L4%qhiGKd` z>&=6Ay;qrkigcYBaSON>%+kP@=(gksfYYF42gY(rS!?G6U2$*(0PAK@K=ze}0l;%c z0{kJwWb%-q13;8+g~+<%XMMix-Q`)6aTzld&LR(r%foZjg&GWA`~;f&t48Re8_?& z@A_4&wt*u*1USAZ;6jTOal2S3>paCrHE(_Npe{HBkQ1%xkJO1M*ivTBa?LuJck_gT z@&_nP{M+D1ba>3V82P}tCnHgKnXOR1ta1{GSB2R=T|JnhA`1hh=$9Z!;%YevfZ?w! zF!KQ=Y;+ur`LD40paV8M{x7e6z&_nGf%!~;0tnB13>4%P{u7)(JR$S3IsY+AL7?h% z0LsfOcr3SX2Gx}*cZ?1D3;bh$T}&YP@MJl$&wNPQ3jY_ZrQWC_N7ZHt~0uu1C??9!1a-*ILaQ&x1c)<^pY1eEQ0gk`l zLY)|Bn4+K$fc?|h7x-}cI9M<2&_8>hzY7KUr4oy|XNm1iyu56R_=N)P}hNu#)w{=ODl`2Rhx*XLtc}y5?+co(kDFO7j z?RJc(p7b8^5+Z~=5|EgC3rIS9oJ$s;)8*Xp7Qftt$-yp$6+???dBz+E&)+_5|G_&E ze?Dm@*e5}OS_sXS&BLgBlGS38j|=Kpz3Rn3pqf#lUq-l?sAFJV3dhG~A6Q?0VkN;ukS zZNcvAG`tz!FM}<5cb*$r$XJc@;+_KRx6OkIOFKbIM7X0bnQwB6BX@bdhTItU1bj$2 zd~~lhuj)s7!fN1Ks3yvCGF&6TV-5kbev+;oSbYcXGgj@$#rpSq%3!)4i^(> z@4Grd$2vPWGpC6tXO|zd83r1mEBY?To=z5srG)t_7f}xH8yW5mr@y!-aD{#f7u66q zBHdr$aCuf+fE~U`F+*>N91~ATO(e7xxH;@enTkysa(q(v$_PH{!#Njcbb zluBzmUt0R;(0>LB!?4~KoH!*JpX4ItR#Z1sNWl;}YoPhF&ilV#j|@|wr#4>lm9cB? z<=x$zOD`%QjmW=9IReProiX>1R(h067Dh!her(rJuXD&xE>>u|vhc31*6wcr4{5<=QCuIxkGjHE#I0}>&C7u znHlQ7*UfYM(^NwW*jSNO-%4+=E0p6p}OPpIxcjU${uzjn0VeCc4mqZAg6+!MIEj`UM74zWSuME`Vrp4 z3o9QiTMgET4%c){jO}W07+U*RLm2Ym!;bT8Pwa-CFD2 zG9qM1XmWY3#%$U8J2d?$&O00VF{_KBVke#cG|{dwJG0dyDGucXJ&tZxbb3{l?F{)H zS04F#Gfyo^mp|FO=*(3t5T zY?e<*Yi;&H$r;Cpl5rp16rR8P%H@ZN&@^dv{~dJ6#(_Jty{IRsDr8}8czpBA{Aq3( z%Q*;R^O>ONKU{PNlpcGPFu_hW}>|I90UzQP{BjxV_)a=AlY<|OOE{Ge`iXj!*@;KKbZ(|)m&ZgMC2OI{2A z828#lU(7=K0RSqLd1i`}`7IG-DX^Nz4Nndyy}NuA`Nhnvay zFq3?ryFTd$sV8hk<5p|Y9^D#~)euQ_K7zCM%Wka#pXcjgw5I|=)I#U}H~9*t9myHQ z>2a@PS=^|&bptj`5ifie{U0C=dXbUuH~n3Z9CI(N2Wp;WX^GdiGhEwsldZMT!(!Yw zVaB4F<+j|yLeiNI*OAUeHmh}ZefN=?M)EurnicSaWmCj9+|FcO-nUNIVuEMI|!0wXA-_h+tq2;obG%cdv7qHS9gm7 zpK*=_Kf(D_*U8E3p-HnSacAcguP4XA9b2Fsc28E?8Z^SgYx(0{Fu)C?utzu6gpw)) zw&q;i^Aj05nW0mcOSVZ;)ylfB4i%2J32NGm%?Z}m+h)E~8_%%+U3oE|&B_8*!aMfT=3BRlo-Xqsc9h+d(Dh_Ek&34e zJ^`w!r%Tc-j22mh^wL`)FkCjtD*8@}6DZ|Xjm=DI2pKnb3-}zJl1zunc&eFLR%i3cg%`Ds{_o zuD<=DywIxA5B1$V#@%ERz*4yVQm)VM$#&#)vXmDBC1Aav|8c`Hd=0 zf>uiDOM7)TE9J|~8iHmR5P3wm+M|R-4(Og#ENrF?V#?l8f3Jk-1zsc$TaX00 z*zE1+Kh-}TL<%xx?Vv(Bvh^G2aC%j5n=4}33d=cMFaF}CBO56UWg?gwE3JPP^~B=v z#_s%Tqch{AtlezU$8YxF)qQeg4QEDXWFfbus*eP`JVPlD*!P?$gIDd_vtbG?O=PN5 z7!$aya=9Ax3nB2@ImN9IjRlKMyBR4YMst_^8*9-TIr0B$&XiNz=lW{OwP2P(J~ub)>iunqEM>%#tWuo_=l_- z-i})Kq04ju{#R#cUfVk%l!?D`Blc{9-mK8J*s&S!t>*4JQE0dhE;+^jisIu{?jo z7>>>@Pp-%lZeBFfwanaVu>TXd+%1vLO>Odkx>=Uu{W=<6*4#R?gv)H!j_6M4p=4@RWQc%by(W zD;pzqGhIb*PUqKU_qpJxQtA!YYz+6rv;`f>48krLJGdJ)Po@L)Jl`G$LA7y+OK69~ zCsjk@+2a<_z3&9&Wa(~A)1fKF(sN}iFj11y(VhDeqz5U|`#{|fSU8p5hm3FxPm0iF z+}*ny=nw#QSrt6Y3y^EQlN0Wk`X%i!mzQ9ny?}ZWqCI>P z<~Yp2lE-|xFPapSYEUk-Tx;53=Gz(~ww2QR979iwif&xX6vowB7=D0+?>VO&7(Q2n z$Zv_SCm&R|6H{Iy#;Qo~VsIh#li-x%=Tt|l3rq{q{Ah1Ii8-?{R+f@Eqd5t3*}fNX z3vy@t&Wp1Tojmh1qEn)VR<2d=XYR{oRkkio3vf#hw~_&PwHz4?uiCr!LPFPu;6tNn z6ZL@#rlfl~I*Ap6CdY0gNJoWIuI5d}EnXOJdTct$O(Ra-HLEr>2d90l@6cnqt}R2j zS~#61ahcupxDU5yDPDVaYa2~jbAg4gIq^vYv-oqCTRV4N{^%$-T%~lJ`_+zCYiQnl zS<5O{X!|HCKHtX5YUS*9Kf``-wpI53C(hR9y%zFV?_8irBJ{X#m{cWGLryP3NGg=^ zf*WU7g$_yZ?zTIk{@mgu<>{w9c7tD!%M|A3{%CJaxAfxoqDa6P4292g0P*K7o8e1( zd-zqVWq(its^s;V8aEjLW1q z^OF=j+XHFooq$~;YVYR-MRX}SL67Z`^}04~9U?*|s+S3(g`M{%b5y~Ta!Hx6?HJYH zvJG%8rZ=5zg}Q44s)f;U#YcTB0|vF?SF3E9E&57|xWdMs!x&U2#b^6ymes5;-$V6q z&JdElYV2i zJm!}YwPJG249z(do~6`--J!2RBS*=AFXE$JBPHR zGaf5bu*LgcU~RX3t@U$>%v~7gErO&0^(If5wHMydBKzAvY!-I&+vFL7>D|s+dbels`d^}cil5Ky)Kp+Z{YXiTgQAxRU=DETb`paU~cut%`H5Ce`UE`>_{A1r0 zFiD9yna=X~W1dn5r6gXtBp!^ZclHv!Xq06V&}%x?c=ltK`Y+rA)z;;DJ%!IaYsr|l ziC#|<^o$f4I`v7RyuRw1!h-G$oyHup<3&d@e7%v868Y(ex{>x*^}M8VvkID3Z6SNr zuH1Q*<`s0}-EU_8r7EeZ8mw~q_5%DW@pSeN5$pK4h@0QNc;dL(mncBbOzLo688|Xf zRFq9!Snn9ycgYdS6e%4a+BQgH)GZfEzwY}w7Bl|^#z__f^S2wzn5z?vk1SW$BKdCcrtoWy8HC^Z7i?Vw#i^>`yDmS%)3L&kK z68shOtO3#39QosYDOjUk&dk-XQ@2T;ul3(ziD2)WO9cnF!@wWb|9sw<`ex+8)G=Ny zDszH)Z(!&A&a?!_i%B^=&rk9SP?(15s?nNeug_9+@m!xxPTDJhxBCZtyzf1X3~h zU#vyg1?0BfF+NBiKnw(2GaQJiF@)gZK|e}9AYvfth++W2zktn@0Z14%;aHf#fi*zx zg$txwxX@648CQ1i2RUY#nLzqW#D0KpynC>toKoz(l~m$6Lbm{bn3IbH=r(g=&7Q#f zcVw5Hff~}K_hn|R6>9Zg^lVNv+hwyUNi$968zPb^><7cA4M$m6pn^U*4!ju0mPaPF zOn~rH;Lk=!1=5(GkdV?AtKg!D1g)`K*PPM69JOHPKz-+cbC)~DLH$)6@t1K^VKyMw z{+1@3p!%38dN+t@oyb3oyE+YaS)ZWGnDD{|xER+qF~LsD%>QECQLifUD6tM{XGmCx z;F`%Fs{?^BT8{`|WkrZez3ch!B>R8KxL@*S{(s2*A0T(nb}(T(UEksGcAktd(kB3a z7Yxv&Q44_T`O8@+UVzw@nNMi~>aWOsxF@Rr@2=f2sY}bEH1!aN`s%ia33G@9O%O{b z#P)ZWeUNCv2`6ZIt9gfCZS^Pve2w2NEb8G;TKE8G-H9|!eDLx(P*_0BjhGJouO-|9 z|2AIK8^gy9-vXb0ec{lMabLHwb>_4tbf7DR3UoM0p$6ami=X>m`^Nn<2Jk3I{}6UD zgn#+MfZh&v$iJeu_=EcvZ@gifrmQwImHl zzw5xKmEb%r=EFfp4OxntApvmR%*U9JD-|6!yje^ICC2{OW>l0E^TgmEh?}jg_1haF z-|K9x$Y+o22vd25BeKDSCeor-Gf_3iu%(x?;cLF!f3 zoE9h14vt={dcAoo!6-=~vetY4;N1f!daXi1f(Ady7b{YLeNz!i&9jyH{Nyx@Y5(?c z*f`N@OY8v}MTA)hw9#3Eu{|`4tq^!34%Msmjl+4o_7E;rdC!qtn)0h_2;KR?i7%X2 z^k=Cm);c&e#qH|UPYNWX*Xolx|Ew^fn|%3ccV&0VEFO@q(@w?R`k)NUj7~vKsSf5Oq!HLYUa z^u26o;=e*$Im`byXiNW}p>28(psy_|ams@zk8V&7#gM#Ee>H>Z#r>Y5?9};_WT)F~ zM|RVQDxs77^F5v-1!{`vZzpm+xgUyK-n&v`@$R;sdI-Mh@Ld zrG=Ic+FKu0<{Ey_nsaMcpXP0jsf|a}A{Xx_=pZ%^G3P3Lt$+HJV z*V{U&%EbrOwNa?rTGqY#&$^jp;PX!XcIi86O*?7RO87gi)ftE=^~|>Fzz+`ZJ6?vQ zvV8B(UznwZ?iD&)_HOa~N|$HkmRWhFrs&(5Z1?4sd0i7*n~;{YmU}ksP2XCa^GL74 zZW8PDI=*pQAU8)1X#d)ITsM`0=sl{e=y%n-Coh}g`qfaLameBCpsTmAM(eNM9=hbwbA%4f)T5{_UXk9c#{ zVx&NNUKwfOy?wqmnfFO*D46ag-+DBJ%|wKpfQv6>n5V-9ppQ`yLivt{am-~i`t!}= zc~a9g9iIU?WPH^{4j)#Asa}jfAxU2+5;p2>g7RtMwoZG0XqFwX+G9Qlv{Njr<$>!l z6t9k*QHG0h#6^}foH;VY?@I1cRn)u0jK9rO#-_eB%c2T&hGgI_wI9(86 z&a993aK0Rc5r?`URafnNSA9G$j(1HmTy4qY^krBgYYdlUs%nwg_Tjp5)?i*v-Ek|z ze*L9kpyaE)&V5XGE0F`MS<2C(o;P=4GOpzbxz_I?v1V1=o6E$iVF?DM)t;CNsx+!7 zEDLC~&vlVMPUfXRR9+Yd!RxCIJrO?OqdS!Xn&>w`5m=V)qZ3 z9Cw~e*vbO23pU#%ep6++#C>7bJ#V%zV&?@=WTL+wF?hc%jsnmI%sBu>&ephsxQJwD zxh_`;DqQ5epGR~PAz=S&To~Zr;=&|S9`yKNzp~>~9&uUURSz=#@j64f5cfmXZP|ha zhjVSowF-c-GfFP}q;BnUWhd(E?>~m3^DhQ%O|0xUR9adrq-T>MeirR-O!NL&AA;C% z6@9r=`ohGUgu1IJi&GA!GFr z>ABPOLTHi;>h_+A!-fc&Pp_3^@rcE7-y?NrI^>|d`Sm*o2bPWU8-FMLHy;1KI2!1zECE52oQj|T#+)+*Xc5~Yy4VRzMWcb53yJAJ zaLA?7dJUI^i0{x;NPHP}%8vTdV)m=~oRo67V;xrUrNZWokek>>d$SCvp(hn!Two#F zwkRs;vbnl)C-eOVJprJeU&7tKzNV$-SIQOVJ{-O%f|XF6 z%0mXMYN8G`W;dj2i}QX1v4{zBa_tZT-f!j)5=F~;O=LyI?icac$_?7*0%$wrnYW>X zd(B4y%(`G|B=w?7?yD1TN59m%<%TZa#t!|-qeUr{l>k~ht7S<5vx|1{d6U1~dv(?h z!yWazW9JXWprlLdbWXByMbmWHYkRWAlmwdEL0G-_+4Y1ur{kK7#&I<-W<8boO`>rL z6s+XOGNJCG-Ws{>v3~*t^Qo~MP0+A5l7A4Dkbb>;sgTvdZR{n&19B)^sPe$=N@srEM3u0uIF88NJY}i@wy8NTp0g++hz=ij<-JBv} z1aIr7@ttLu!dCc>Llj7BraQy2A=Ii`L{{(JMVe>3-SACeE87Cb5T$XP>k&pYJoGy$ zs%wt1u(`fBd;vrIrwcvgh{BLgZmB8iHJ4K9a+MtX>&C1un{lk9&z*T8(m<{-7Rk*5 zn?sVX-BzoLogbd$NXTdhr3BIB%<TqXNB!*MWP(~Gv+`p%MREnS~gc;80G>s#y*F;TM{z%^FXA@lLu%Z9>9qhFJr+70;SObYs^c4CuTvn zaDuXI(Vb_mVBU1#+(tcjCIO>JAut8{Pu$by%7K6?gP0;CU3pF2 z!96OGLyw2|E&Y{@~R8g#?d}&59530N`gGK5H;n8aLe>|Lc$$o>Pg+TA*bK*)4Z$*2-fwx4TY;+b3;*nx_-^YtrR&n7BV-PeDDTN`#ll`^#= z$XO*FK3IP`GLZGVcN^8A6BjTry`6k|LDFzPV1{!)mt%MBaF(Ha>%=%CWYfKx!?IP? zunoegIMgz9i->e&)pnhp_%WTBYi47!+F-eQS8R0Lu+@30AmrXW+d7##SBu8RF2xkO zhwxBZrSb@{fb_JnaiZ@TXM$JJ7F4(Z7i-W<;4#gmXfrfvms2&gZl2!9agBgdCr zU1|j0x7(qV>N`o-Q0>t%I`J^YEW!k)b}`!dFR*zR@Jpj2X?oFmKk1P`VeomNsvyND zq8WY{A>uYOmuxJpZOFZy8~W7xSLRdboikmx%XM6B;uJprCl`T-E3|9563Hb5q5$U1 zXj)cmw8~+l_vla8w^soD#Al9-L`B@M+o$*57tBXrBEz+hI3qfoI1O`^qqdi>!1uvg zI}k9+b^&JN6F0U(?mKbBy_DoehnC(*PtS&y=eoe45((ZSDXq){50~*Ifk!s_Thgf9 z_@=Df)~GVc<>_nVyTFr86X!}esjEA2%Auhfl3UJCd??2|vl=4SK`ry0v2pgWlpxw>p(B6r*~QLixF;(;_OzizytQiVBu( z2HqadRu2^fwOSvR0}HM(M-?NIZuvARPA2a~0@w;s;{0^by}BwF{fZ4%Nwbbp9`;H+k0XlIO;p7e`2AKK21j-eo;1c2 zOvzX&A4TNia_{tiLIt#WK1i{_e(Ks5zsTQmuToK^u}< zZ97b6rZwLU=jrW7*ucgSBx$Fdv)!8KaL$cQSJ6915MOG__4X50;EWxRLG-m95y#h9 zi@W7BP~T#u?4j*-8!TRzsW}$;zNdr;ZCFR@yZODUr)8t)het3*;)YQL-7ADHAtv*i z9_9=GD(I;0(^6w(d7HTD4{k*?l((_9Oc(Evg+-Q~-gH}{*Qhwu6a|c-pI2d?NT=Bi zIWBN0;MpJh*|Lgp!&zZ&L0$e5Pl{=@iTIn0ajSr^QhreiYBlR?n`>|4K( zb&PI%QEw1011U7oUl-3WHnkI%8GW_D@L4i`M)$POMazy0O}N&j=tx%wl-#dv`~HU; z{wA=@oY^?91tqbFMdLELoX?}At{gCDD-!h7E%@xj5&i%D?FG2@S>6df8qiZAVM~ zuvo#F#Ve}UMD{U(V^-fySRgRy$iN1;sPV}?lBn=YAOKY$ZDB!#?TSseU6Rpi3^nhw zAc=hlv56O@t|aMxNN26FV`l-mGZH*O`I8-s>!o1#1s-$hP|T_}UQ%4xNZl#oUKQtW zo)PZJ6d3Z`5yU8hPClutFG2F>DZ|p!CrD|={J2mn^u90lI1MOxGVf$cSGV*Je+n;o z1AA{NJ?s@#YxYa|X)3(qOyK7>7|mf61Vu?1xufh}CrYTI6LTnI)K?}le5lPC43AL< z+mE_V)hOz@EnC-CSo4*L6M~|w%HBKq+-Rmv9nf^cO~8#kiT99NORIHbD*QX}*|ZyT z1-omjlMV-E`d-9;KDKOEiH*q#y5Jl?vcxFRImV=5imlM6v>d7TKk66SpFWM7=CazCoX-t{Xj_;Hi{HRSlH5c!n)9(A?tz$~I zc<*9mD8Y7lQ@e1hwCTm`Hrg^Pu;#f*{LBOCK9pQ$LWpTK(4o;k#lqkJEH322*Z$qa9JD`H@a2@v9TR8U%yK?= zn1j#4W%)|(IQ3Olxre+!j&$KeoZL-p`XI1@ zfhIpPg9*$3lWhS4a0WVb##b->rvAmX;XYgg|EuZ^m1AQcC@LD%4b~D`DI!c@_C#-o`ws!9VeD z5RrhapWa2ovpY1pLM<#VS8h(vsJc5JrtVEbY5H_^i}-jowZOK20^G|IzD@F%n5gYn zU!|`oh3k6r%P|OWR=g!?<*XWx;qi#=uO((dJ@MpRt!eqB@^5SsfsE~MVp|*>dZJvM zEo}<*YLdkB-;ELoEOK(1%6RrwnyUX=Y23m!meR= z+k>u(-{RRuGbXp3I+6GcCTBEQOo|;pUIMvb`*tBo}% zv`%IxnakY%!9KRj zKSS<;!(c?}NgC7lUiZiF;G+2^O^pmkJ3J}*b8cs^by5ps4P(;bHu@eAJ&C)r10MnA zx-w;HVjzJ5Xh3=Ms=grOA)1L}`I7UKGV_E8RUdC8Yraf1jZ0rkaOW0s_s;F#q$K$> z|8=r}_;P}ybOW@H43o)VFu6H9T{hWy-kv9yE09BndzLU5LK}gM1WB z>A_*%n9RA~WE+n~VEe|b={^0tKztKPLFjSoNUcoER*{e<{1~`-SL3!6;+8-1|A5#9 z8km*=`zNSy3DK9US;GRCr@fLAru5yEuiY;b1oUIQ`OC+N-Y3g~kP?3qlki`2Z?#}C0RO@N3y(CRpvDR@<`TUzse_--hyUL_VN0KU>-K{l?#||Jd1}t5={UhNKmfGTAZtz*-!~?-p9#N_ z$F@s$=myv1wQS*!ni918=>lJn1h`1M>OxYdA^Zul%}Rezol55p-sU4)KIwo0{=))+ zd=!8wKIwdJu^yXE;eQ?t-V9>l6@V|9Dh{H{Zc0o+0Rb)zEgym}dHKle!TZ@N718#i zRut&Zo@N)IB$N;4pPEf0C{}4H!FKHpJAxwo*9rMwhXDcoH&OlnSo4kn8uY!`yUfZI zcvyZstceVIg5=`v)XwYE%pz@UjxknLD_ee29O6EkFw7V0Asp}IP)+YYp~Dr!Hve|N z>ljw_byiHsgToUE;M*Vy@-|pk5rMU^Y!2O4Z+-cvyeU3xh}pNcB*vz~b@!HM5_(bZ zOtQ0k<*1LdaQYdc^KQF(*{l?-`&DL`l~PtoMTQD8(1)M;3&^_p>W81dOm3qp&*ljM znySOT(gQ`$_32@Q5Ywpe_@*khDOTFLZd8wa+^M3p)XpBIOzOG7IwFraI&&bey4?At z8KDD}cZB=$+MG{0{*cMZaPm{>v%n{{toTX1C(q(m^#WXOgkFVAg_8*0Ei|EVm5#Gn z*R7(%enesLY~tqeg~8HmVOe8t^dvTps`dMO;au{|!fQg2mHh;fPbG?q_>;41mfX7|<&`37 zI1qkubdU%fP!Z9kBloDK1=*Du9KsLY9YzB`3q8_;d!SzL^#>RbNl5b!HGC|)?`XPs z1)$u;*19#`$u*Jm!4oW3jMBjA{uo2~ybYU}}g& z+SdO-|8)KCP*1#BV373j9V}79Sx@p!-$~^xBm?0@3siE}c*QX1F9@h)lo0;#x#YX} zqq~~}0&YKPGZe`lsg#v(I03sEZJ);JwRWg=fk0Vq`=Ab=h_|I_`HrI@br8JrY5yLR(?KS_3c!Eho8vysfmZERJxlH-?^_rg(W z=rojrf_M($7$^K&}=__sVhtruiU@S(=P?q4uUoc6=^P zy!WB_-@203qeP0<%WQ(U#L6xc8!jyz$Ex&Nym~|RLWTpWtCmC$z`V_yOtmX;i3MvI6ib@G` zP9<=+>5Z?Jdn?YE^2|T)ucAq5l;1W)jFmqJo&WgOxNUz{Bs(IA7UhVsP%>MNBz;wq zylD1Txt&xvqGd5r5vzz+aF36ZLekjS-$00lq--ZU_g*jPG#Fus6}A8Dh$lC9uU~T* zfj7L%1HZT$Q&Pn zncvg$ITLBoidxljDYAAVQF`KHvS~Gl@d6rL6A>78^mnGH8+V)7lEpB15~U?NWGcJf z?@Ytc{rh+2_~)$e50?p9Rmu8UZrj<-nvxZ4>#Txyj)7hHm<~Yq#M}6iQl9iNO@Aoc zqANnCmPYY#!tQnfqaB*A*sE=H_ZMm2has2EzMN1Tz9$w3yv7~E(jntI!@EKefuTI2 z45YPg4R)7c#B(e`;(Y1Oqv;|;v?ovthPke1O}{qz?Kk8a^G1nlU_?vBPY`GLI;y-b zEW!yaU%LwS1AfDY8Wy1MEcQN8L_FpU7#jdS=|EQE%s#uKbbdmIae|A#Ar55?zk;A$77@tS-Jh$r0d|Bylk>&0>Jw&-)`z+Gu zr<_s*5>Z%Z7aG1g%wSkVl37OHs#fPCy4Q~3+C03ME@82%5p=(ko8HR&YP=9Z6bYwdxsKCegs7d>Sgk=-?N$i*6f0&+^RquBW<@GbQPW z)lBi4!BX~2%hT*1U!C!_ok_!iT7iM&G@4Z>?BUQbN*owYD0oNApR|4zR(f580UGKX&46XNkPd-K<#XXh+?Y2rQ>4A;S-a$n-gd zp57Za)_eKlLNSy3ipuTnSwcC0`aXa0VcQyfHsOXy*kT*G(2w5*8*XB&p~d_aE48Lu ztC+8F**?d12kfY1@}nbx`z7nV3{WB@7k;1}b_(kIsUFb>xi!#_!$lEqeHv&00=NGT;d}H?q3$z2Ib2u8#CEUbbuon(0Jv~rUc)p zNG_E3W907&=l>0xhmS1Yv(GX+lw-a8{xU2LCjnfCawMOWD0F^cihCl|MSx$wI4`Cq z71&2E>;Fum{!H4nf31d0gvqLo1P-iGCk3Xo5@QU21K?4c-jwOD(Ct{nJ}gTX=nxQK z5E3a+K2igqVL*K~0hME8+vZA8&C48-Y%)S0cIU_cQcyPmC-dRQ18^HIoNqFYPHXc9 z{O1t~yWHz4ySR1KU?_o;JOT#uDP=+LfcQc{@3ga*V@8c%Gt&Ntd~aEx0krMG4+DOL zlM^K4#j`S(s$;DsQr6tZx_I~vYjhx=kie>mRR^IbR`z<>cec80}kx@B^nHvXufeN zf|0b+^k;5I`+t=7&cT&M-M46Lcha$K+qR94ZQJRfW4mLgW81cEJ2^?mxTnA0_g=kv zw{F#|dgrgR_gNcjuX)y(bF4Av=KiOA>@|>wMEU3U;sEn0V|WN{03}Ue#lY}M7#OS$ zFi+1;yphGwHA_y>fGLQ*-c?ig%|1q1q zmw&QGfz&)$V3&Xw0D6E?4x%)gWb6_X&?hJP#BMfY|RB1sgqCTZow%JR8 z2c;6t&b~mOxXaG=^l)6i9lHcfwdAe?v+3TmRhO?Evc)h;zZxDF%Tmv^2dTsS*-oYi z)YaAPS?bzdXNlxVmi#&jN| zI3DXuJ}V<0t?$IuM-!6O@AoDQQ=ttjUrxU!9Bzo;a~1ESnUZ|P z9xloWCFFkhT(pwM1mJ(nwy@By#LZ|@L%-21*bZNhGt*n#y+;{(-lT<{>z$21hvsHq z+UVpA?rm~V0&a@-aFH^9@zT4DQdF3-sh{jyQvChC~f9aW3( z>(;Bl2mpsd6VA)8o^qrV!xyR?uFhkkW7kNE~Gz*_~ zB7U(@CexfpNdy$ur#>thZ4Gp?Qz!n?wRTNt=jTaH;fC&&KogR@JlwaCr1JKCfdlh#N#mQ;xuZs$SoCFxnL*b5WThi~>fDvS1~ z?_3a2*5odpAz&g|0KfUiO8n{C^b!3IJqHw#Ed$hPslcVsZg~5BgSlL;mW}hxJ($-Q|q@C?k@BWEuOroPSy!oo`-hb&2a>9{+e?xdR z@Um<5IA)S>Wf6;-XV9Q_aC_oVIZ~Zldp?N!Pk_kx4c{!;p(?>ZU-0{CJD<>ki0F7b_DV;2)3F%7Uv?=5D+f7I^wcNWK(= zN(KlxAFn>LiOT;po~Y0~@PtUycOjw){A6dlD_{;e-3AO}4LAqRUH6nbJA?9&WDDTo zXW9)E*NOW2+$|cvKb-WQb$B)M#$>G>^^82BZtQqE&VM;1A zhwdB+j+Dxl(CGNdC~jRpM;$=ivku(dEMw%D>`t^Ir)j$X{T$}W5p3A~tfT)%B;@5l zT48+K5sx3Zhkyhf6UXA|iv^u(H3qa_=aG%OguS;QQzUBk2Hvj#N?SrkJTW2(o5K_8 zrK__!K~D&63K=R?Ml~p@hS-W!yKknpn@X!mtODiO;TBJS0;u_>?0cK8EOXAr)CgBKoh;7F$Yv2YIM_Sw% zI`p4CF^#AWPU|vZ+_P(jr~6)+-Io_r7>zz~GDOj-r=%?1a;Q<#^ z5ir+FpIoU!#c~>GJ{+m&9anW{^NEgz79JCz@ev_4xpEtOg@*dT9CZKHz*kY<}h6OT+qRsn&u) z;b@=LXG=B~qf9Ek9xL@fG7c6S8PCBrv`e8;>ayrGC*-e)(b6iO*Wt+*LcA53Vjn*I z!HrSd0bn_`Pp~5g?DsLjDj)y+WW|&O{rmC7`L8Mezt-5@4rw;z!g4HV^gOk!LSbe( z`xT;#mPN%>GB+`47%Gy2ZmZeoYpabTae+l!%(QX7e8#WyMHK=A67kNQaKMDKqp5|X z*vDa9U`0J0{-ed1t%k4%c5Rtxy$;Tw4qiFg?L z{!A-V#gs25!>>2?@}{{j6^+h~)P` zlTF7a`||U>QfokFXQRIl5e<*QC zI2p&K;C9WoP`ffJ+H#bsPWVN$lnhK`CUdqqAuPA3?bv$*oijPBEy-H6ih#}DNR7~$ zw$YrH>@P)Ng_+kZ1ULH0SHCk&Py%Qn4M=BqS*qg%4uoScX);}neo89k&SV*lw#6X- z)CJEo9cAq0a00estDe9Z1N#(KsQ%GI;_P%kAi0D{QpS`ojCjKOQhCXNiuc?8`XK<3 zSlzD7a3yNDTtr-`#W&Oj_;k`)kj)~=I+0l=ulcbYUps?YD3MD?7XzCR}@H{|0Y8ji!Kwn>4Cqa(i+JQca!O%kW^{ ztsf>S%``gL?CZmKC(Bdfh}Tdn5AA|{Wmj=W{li$N#_EKy+Gx+;uwq1|)2e-Mvw5(Z z+KYW*wFKS%!>rYZQxsM`{|~rwhfIZ1zL8a1ev1KuhYr3@-DyNRVC2c+pzd8&^sw;c zs|CBKy7SsG)4K*8<6x4;^wZlJEvFb^5Di$=fUbkv^>S#M>jC}9Q0>=cVb754w)&_Pf73;A8&P20Xzi>1pZvFL7H#~jOho$$UW$655Svf!@$#_5#+)Vc< z8>-j*nol(Ag;n!CP0djIaj+c%)IHEB}ez%t`5&JAS z$K(beZX!p+?QT|!)(?HV8h?pL9R9zT?p@`6qMsoJF_Y6O(*0?;QB7kRN|v>_ajK$& zfAhQ-I|`BtKO*<;R%1w;8T!IpNa;fLQBfy%;KR82qh3D&H^A4(j$}IU@*CewGT@^J z(DikpKmqzsgth^=W);r=OzGeU2cPNgdj6#XJ-i%rIW|ku(Xd4B<>{gkCowg;6Rd$l zN8FG??=T&~5XU=VzZq#saM7rdv$Ha{H{ww3=Hj6<7R8-9REPy#?^f7SJU-^Uhx1Nz zZV^SOm?lLYFh<)HcUyNrj5G9`-T4x!4Dn`q)mSkKy^S1W)gI?ckNd!fU9swU=4}ps zN5r@Jju6Rxr~c}LxGuD`P%|OgNnjBUjbpv$_OyXevb%OtRCg~mBW0SQ4uwBU<577s zqg?M0CE`}qx=L02xjdDx#W`F;`%Gk?T>U%<4A=EeBgg)E4ADrTFzxaMb*HqI7fKVa zKOh6-$CG)xL-L?V!V>R1((iYTp4fb=rVUmR*1O>-4L|1K&{@Zzlj) z!e~<&38kn!PlAoAY_M8P+$37)Qo@9jBvs5rF&foaPV5_dD3uo41miMUfVe0E(I5^T z7Q6-o1Vj=36;LAcY4OO#7f*8)m@#u=U)t$)f6UwP=Ds~SZCd?dsuN-51bS+!hb8xr z`C+&D@(uZE=UZ5xmlmp#Pl%7zoEC^>Ep%o|9JCfbIfj+Sx8<+17W0=@O2_JvzQI6` z_H=UjWafm;iNn*!L2n4jl#d&a`0!U0 zZ*zZ*Kv}YwH$@=P4kyra?8M&(#LWm6Zlw|K`K2b1J8^S8$3Yb4JNiT6p$_&cSg3SS zlNFGt!u86HX&@Jo_=3kiMt_HOG74`y)`2I}>Z-IB3`#)fi1J7WjYIQ`iJ1?_&Bo-C zoA5U@kmE{~p}e&e9&<6q9e&4C)2!Ki7nxC$zJvS8P6K~O9rg}6Q&j9wLIRrcb3Xo0 zW;g;SSaLqM$Gk;%w%g2@`t(FHx7%Qf&P*zJx% zvGvwuA+q-tKBoYceP+DZ$m;#|VYV^tRB5&w-=*fXnA|d*ipSJpK5DSgxim-23RX}a z;UL|Xk~(%21EBn6`1{kxi?c(XOfa!4wpr6q`=V1W^K%_4MytsY_c3c#1I%VAGWh-uYsF%oVWgBS{~idKRp&Vqa{Qdbotomu${B z_LitZLtZwl`eSX$G@#ftIJojA@6LZDb*`>sCF}Edo!g};!QrAXncyGZod=morxFTb zkjFyJ>kz5kM1jx5%aoxWF)eAaANQL5&GVL#XnOEe68wHi`+qjU)|W+0D$l45%g!gkHc>^EB+d4@C8HC{MCDJ16?UM z^6PJ$klma6hwQ8`S2Ie3?mZ};td0vrqdDgvU+dTmhGLBuwy-t%7QM?6m_>-7@6Ee; z6zaolSfJ4$5+J0ri!g>q3ybuD6C*H&5KLfID4>6Qb&LuRXiR`xSV1KcAhfw9_MmzK zz{Y{7mZATe!{Op{cMP;43J+&5REWo3g;J68F0MsUaaTy!MKiZHyXP-od7R^iK=gA zLyvSho zxP|!#_obcPE*|@B{MB=Da6j5(v|WbpeY&E6lHNE zcKv=_Ic6Z9x!Ukn%E{A(=< zFYPh~bsRZwMuFdBGSTroMyy9o-^a~u&S2xzFW!}_H2IVEH4j2Rlf}b2=3}T%nHF_# zV)(}<4G0=}od3C+!L%3A%e4ElN*$-P-xQ*)OWD(P zlx(Syj%=*48xb4W$Q~-R&O%(^L<2+g(?BAfAgj*ip1qQBy);xKZ*aGFA~-0~b8d71 zho)xKr^D7jgr2!|gW?(Q#9S!tc!`PfaM>gn8f?D!R9Nvu|LWHc+P06?94Pn(B^c{x zyJTgU=2~(Jn~+>>j~qyPdTC0`?xsWNu<M-y7sde)0EAIh}Kbq?(oFg-OX@+HvgoEE_k81K0m_KcwrkoVkv)T&Fst+ z8*K^#XeO{GF%W+6xds&eZ*vWGZBztmQ|9b|xn|jsfw`IdFQu`YBW^-2zNL8$S9K~i z{pAkQ-94w(CJqQZ=xG^)B@5r%!gR-ph$LbYlDN%WEU%x?c-~zY{GJaR9(IG4c1^=6 z{G>v##wG-gv@l7L0*^PDb~ ziO1ng2>s^3Tr2hP_8QcZR2TaDsy0%igS}d-m90xW&;p_T0XGdcpr?rcUDNe*(m@o> zA?GYj-PE|%aXT=e$r)E^-78(h@x#qJK z!ks@uMkak!H#cBOIPf(`~4hr&m( zYWC|F`BZGFONz!ODrx50v!0{z#)_zRjC4;Z0@42<~+IV@tn^y3Nm5=$c zbWK=zi-qh!L6BVuHyd1yL=e zc64d(S4_|Os_JF~sCUrGW5RKmlsv*i0Ipn{?Wic)u4=!yVBkP=k&FD&;eGN+|1JF#&bj=&BKJ*9XLE+MtEjwYu^iZ;iLmwJ>0B)HopEZjw*qI zX}zd{z{U3e2S%}i!o-2V88(FJ@;|tW6$FRUJ6;N=Y*+9X@SfN+V=&_t&eq`l6Yy2>s_X)9e`Hu8O*xqbS z{H*d61H8Zc+IYBBD4bR?4t=@2FfYMtrB0#Bo?1cK3h< zr~O%L<8my>_Fi7oQy@iI!1<=I!!2TTFbvp3iQ&s_=c{03RIyE_P%`jh`C{GUQgWFf zk$@uV^OHZJq}xdo==WFt0=b(NL47F>=n%Ke>oH)g3=qV(o~{<(8jxafrP1g>A*AcA zkIPkt80xn1op4AOU19j1@C8CB%J6HYC$Yn*LFn4%Sx#@Zlt`M-iu%c0Tp?-!R%i5o zDF6Bh1gt_tO8P0HCDR)&(S(_K@X5Ee?8U?{lJKL}sYjs-HW}!CtGiPqla7%TVxmzm zVk9G%dqVnG z&oIHT;rS?3Abzb+$W&>_=F2}MaR~1PDakbXOGg%4UH@~nHg%O0kC1`R6|4h-!8F?9 z3A#8O=)_?^^qS8757a&-Q`_me1$R;7Ey9(hf|!^OWOQM9aicJ0gG5Y>nI=KUJ5)H6 zaMUtnVBgA-(V62|VEA%5ZBeEQJ^ETsuJwX-UTo~EUA_Lzp%WHJZI0=j!b-de z<>;|mW_0k&jBs!}{&?r4UElHGSLps3u{N9PJqn9^VnbU>@szm?qCg;R8O-zWyH*vI z{-XQN&}~>X=tMn)t9oo15u&!|y(;{{wt>a6cur>W-->tK#HY$pR~K7FCm)-Mt6Onn zj`10m^Gdi9%j&6X*}9s3j{rl z16$ck<3uI?tj;%5$3QYT%|^y$RwnuN zb0r(0pQBYHihBHhdAt;P<>Wp*x`0}kNm%(x`K?0hF)G(R6#5x7Zyx%k7GVk*^gY4q z-iEa+k<09OmjUQ#kxFF>M4%({6i5VN-D}Q5^LM;i7!?|){(W?|24Bd!zN;y4@?!mFjC8+A z>32d3_%nD3E~Vi0<({;`ax9;Sis(;*r!RJ&IXbrjW+k0 zAAE|)pRAI(^L#w$Ihdmip3oB$h8$_Ah(8GH1dHOKR?t=tp~|f$w-$Hf3*6o z%YEKxbCQC${V_0DqA$4U2D8Iy*BI?c4kVw()4HaJFCPTwJ=((b#`Dz3gy4^8xztH- zU{-{clUCPXY295Nm#}Mp(I49RyC_QaB)Y>!7*_}uye1m2rbry;f!OWqi|<8zIWblj zs5)8Gk9%U}_wVoZy52d>KCQzv7($NV-mh+3(^srSCyL_3TCbwXOBgp*&U!C{^;}dh z(m}sHZ)3rjrcy*X`eD?oh)`9E} zmRCaCqP2f-cChb&7v(;CT=Pr=GT!w8702#O&5F5yB6yKS`xY!SAwUS;``eDR`;?F#$;UvUhe)H+MgLXb+55Jq$oXre=|Qxx&79&HAVgHa4R3 z+H7N>Z~DdNp^xbj`htJk*Tz>TU`a2l>!f-)5}U%l3C6HNx6t;8-Kg6Axv*)_3JExb%3*8^+E~iHBB$jB4*8b3X%{HpY1NPA|6;t7X zGB)DX>`0%Tdnmp7xcc?&#{se4i?fZJNi71;$-jlO zC|mU-jf~mzeJ4WCZZ%$;6vg5+Z7{_>_v^gQ2it^Z=INQ+^Tjm@f}9p$-n{{bZ;RrW z_1exKF@59*@tAGUt4h4+!^eHjhKG&^`(trU1}61SHQiBV!;OqNBspz2uZhJwgcD(K z5ZC2!rYr_NN*E4m7G8C{<6kSPbcnl zk9B8IL1)Ce{xE||TMv_A1!PybOZs>1LhT-N;^0&?9o(cBpa#Msp2+Uf2ACajx1*&g z>0n9|^pM~TXg>3V?%pT0lEm>H9y`h*vcV&{zR;>`i|oDi{1J1aPJG8G=ERV9^x|XBr4WliX&+e|!bO{}2iI;(R+U&!$Qnxi^~lmHB{HV6&ucZ_ zTNTuJ>2(`{nyDA_BuGc2Y>tgyr&CRX2l6)Zl7JPkNzBWs`bJInS2im_`%ipxGjTJMxl}dF`ITY zNNtD|EeiP|XXNeM%0o0ezJ%O^kasxQje>Je8+!$)KiYW4fs@vi9@#-XC?Xx%zAwGn zGXgvQ^9UJ-TCB`K>csId$C|U9BeY@7??q=Yl!>#|Whc#%6Fw|&toVvYdn*hcJ&Zk+ zuT|~?$ifhQ*ymCtFf3TCVoAQO+z@|*Ll13Q*X6w9j}U z+HEpKE@)#!ty*nyw;jbK?4e~273Bn_k`trotnm6~+dcZgq~fa!E;-@9!{)ZM9kcM! zOo#is_qC5B$oY*Cci^+xseY%8PykDmI=Q)wE+J4#WTnK}atL=5-rf(j@Eo2KSesO; zqA-w*WcSqT1l)o0pd=AKtug>OeHRAU&6}b*l}0i=a0%Z%m+rBwBUyhR95ogHm<$;Z z^rdI3o@`-`p*I!koy(_5fDwoWjUU(cfMWow#i(=q&^%I*g6C?`wD-@qs3`J;M7$?D zr^CL`rc;;0;7iIZsBIKFOQNUN3zG90Q~ z%%-zF%4V*lGCh3ea(xIk)gl61f#vLIl^P|m7e$dzjlN?uTrwurak?np zJ@2{k2zyd5&-m*|-HjHT~MSDEN^QMQzGqPjZJsc}JVieW7I7oH1$jpO;OYNj}%T2iq78$EdjnwtIXW;|d zwp19)-(^7PnUs(Mb;|7d6uI4W{K^YhNbcTue!m1I;JY(ioOPA~`d?25)!Q(?Agx>> z8h^LX!4E^8LxZiWisu6rv1Gx>VLMU9^Kt9=tpGVevO$$b2#8tuX+?NRI%u*zMbLQ^ zh8YF$pYtou7Ki1jN`iXf>!g7xidW1wsNA#V1>cd74Ei?$y zEJa)n7wKPggmK8A;{K2)!D5bH?oi-8DR%9U^iz0K<}?Bt0#l89`r?;^(th|c^l||| zo1Z+C{Cz7o_f_&22d4E0aG*dT0dv}Dj0wM%|g}?c-<2COY-AI zRb0DCN2K;#@wU9+FBqe_3MWJao&ho;yRa>>^f<)h6yCG$ItA6f($?z!=4&i4+W+C zDc>1-;SJ6ajk`>Kro?TtOMk!&{-&`u!xv&6_aOA8FwF_ntTU3NihnL9vL>;}w z7sw(hv$Le7w8WfNrBj#OVJ1xI))x71|d_YJmZ=S&wT4)zJ0SsFcCNYMKTNKHkxi7a4#HNc%N5tfQu5QxsXP^?|*yo0R0-0wLqzQEw#Tb#O8vyk3qb8YpO1g2<6`W@WEK z3lIf;1y>Vq%IwM?Pn)Xy+J3+?x=|5~Yz9>Vqtu zm>R5>e00VkB)7iTyQqBKd-ko0+2Dp)|CRz5oT5mL{(7`0ArMv&xNm%h z)7e(w--MVd@r5d7z||;-caj-yA3{R4Z$p*f@(M|r($%B1uS#&Nl(MsRSDp!?^<&4(4dB{_;=VgdjXPi zryxU51Ysh4Rb^EPSJKn{QcIphs(9rE_4jhrFbT8SfR*K(Ss-N$P0GjXvAbwdpX&~X z^&Ey1Q?~&h$9gm4hh=itOLgKqC(-tvZD`uEY#V%FXDvkF zWli!lPR~70N=f=;RmEu6pjM=z-RvCFl?kqQ4#0BRuHOo(!d?fw>K@m)8$8Wu*tNd9 z+4atgA6wl8sqdH^xirNxZShoSyU~9j+4_WFeuKq82KR3MHshsMcFxeEdSc}=H@uI2 z$XW8sV!idXtzPUD^ag=AAr1Z|Bjx0*#a(Cg=!XxV+ksgRvO5bFGC^e;D3NBlyxYR~ z8*S1?k?u$m5)tyCY|%{;O^VHnuh{@ZC6vC9P*SmHvit}!FijmsYeV;SW9%?Bt^pu$ zR41gzyi_^DfQ%s10xHAYC>4K8kE5^OTGf{uW2opIzD4(|9jeCuyGnrPUF9685OR@UdM43KyI+h$CiF}f*)kA^5%&Za-34LbU4pfd#h)g-{FBdBb2KIc)~{NkiG#xz|8hRviblv9KVQS^rV~i2XFh6hk76RYnq6*yer&C zgKh4wT2ShF|J8zdy^YcIFdsP+xw_YngJ6@n4Fd?agS!QA@skXuk*!`HxU@78SM^khsfzDi;tWL6t zJ7@x{i7J_E#gQ5zSKYl)s&6r;jb5%bW%d$#76ytF?6uOrMoJwoj6*)yMRyM{Is$}~ zZ8Q|TcSMRkrC(}m<9={^)Tt^fE9<&|i`&;c=V2{AHEqs~ni&EBIYn~h9Gr$OJ~2w0 zq_!bZ3Ok=;lkBP#o4C#bnDddvBjz3fmUG;tRc1yBt7Z+RS63V6m)&kg5sH+o`?@|O z3X-3)3|Qv2w`{5tSqthnkP-e4Y3J7Pa6(^RZw%H8#>U+(jmf^lUp10x#5H#;rtOh- z@+;M++mBfgl0ts25<=^pnY6M$@pU$~2%tV&a{(G_YV_J~=b zx$2#A4%2jxdsNhHU%#afM?r3N+A{7@Pm!iHf9bVcuP4PB&mu+M?Zl+dJ6S!~ogYd( zWUH3PPy3D8Z8kbCebD#my{r$OOK9ux_zuA=!hl-xAni`-FqRGU@!oEGO>gmDFc3C; z>-RbA!5kx^B}U%HH8fl7p3U}|Ej;T)e?D`5v;(O(ibhxdHaG`zopWKX@ldrA7Lh`Q z*6!>>0_a`-f!XFmiA3SwVvEH_E6GFBZ-D&MOp6%V^=WT3{4Y3T27HGU;29^f{%eCI zc8yx3Q`NqIezvSqUC?ks`XiflSCWn81n&6+F&UkI0vx* zjV1^p%qL(OUvmn4qoSOe)z4{#NIif&kWfH<0~c(i#n2RDo}K2kg7baZ(J12DtZLan zDT)?BO9v5CuG(a5ppJQg>z;#UQOyIYA9A+~1nl*{U2$XAtyQ6uUY0{cWosPl02W4vEVy{rgcd&*6+}oS>-8cjn+r3uH7pq@D@n5DygpVzwlqS zSzBXIjN`(-AcV^{yllO{3);?SRJ@K1#;Q2za@i_oHu-}Jhv+_Xgx$(V8=C3$kPFXR z{oR@kyo(BRk5wQI6E8=p0WIXDM8fVlM1_N~RL?<4T|gWrPWtW8LwW_twEa_KN2D=@ zn?O08*Kc9XN}u(EVVpQ2kfPNqBXj%*>dyOYVS}Kc9JtGnl4W^Z^rC zO*BZKz~#qAzG%SsHvjulbc#sm=Jz@p6;RanL?{VMAuxtw6c1kHI4g~$kI2#Vp zbLBV|3FiJ@e<)MzGoC#6WH;2Ow;>Z?Wr^V8w=?ei_$nndx=>HHv(`D{*Tb$^M%k%I ziNn0a8}1UEqC?Tu6OOUFqWe|1$Fp5x(H`TVGKQinYjQQI-PJ2#iLC!uUP^HzBjAUa z)pu2j^$8dj&HopbvF>Z>`q2N?-$MJ^MOGvSPzTd2>!B$UUJOIOQ%kBe7FZgq8qCWiIr1x9Tp&ipge zENM&O`eQ{?|Hmnoitaj)57YQ%Vb<+FpU@kN1lb)ch=(Nb53J7jmw$xVdxJhB!LLc{ zw%8vQ)(dQ!!5_Z&%8be8x9t~F=xL;!ju!dcda|15a}vpV+W8Sa83;Txf|Xf=60dXZ zdzr6pN6W|Mr`s~kF2{7pQbx{5(>8Zp3mqJo-RC5?GBNoRdE{>`Kein#@Vo){?}dWy z;*3n1^FJ%ys{&@0-q_E8iD<-|rzL>bhM!+7if$h8312{xqE#43Qk+hIgN-2D;w#HK zu0;3|u)(#)C_BZ9bCUiQpb_6v|D%)}q*|;aSpv$xWjZXYX_Je!MK=CpNLz4ub z3?^tEH%a4l>7Y90)3Usa=2{ut1_e2#f{=D>_Idk7xEnv5xm*JMw$Af$&F*R+J!bezojmd?c@IX1L)TRD{}0Js zY;&TojsVRw)B{qHpuACH7;iL*Kfrj*vmp z5P}$_I-6fU7h~0n_|<^;Z*KMVuM#5mgf<4M%AillDx|Qe)=(bdO-=ZAhe|TF$wK3_ z0pC<4SL(-wc9bw0i1c{c~1J%R2ZljW}E~kRl)|VjZ?Swn|tg#eC``0KfFEgb1+i)o!{Gk~28y*v diff --git a/2-ui/1-document/4-traversing-dom/dom-links@2x.png b/2-ui/1-document/4-traversing-dom/dom-links@2x.png deleted file mode 100644 index d800f76e094c20ee77db3031f36a211aa56c041c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70415 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%0AsOklW0=(3av3{pW=t!1l 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

          * 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 - - - - Документ - - -

          - -
            -
          • - Осторожно -
          • -
          • - -
          - - - - \ No newline at end of file diff --git a/2-ui/1-document/5-searching-elements-dom/1-find-elements/solution.md b/2-ui/1-document/5-searching-elements-dom/1-find-elements/solution.md deleted file mode 100644 index 210933da..00000000 --- a/2-ui/1-document/5-searching-elements-dom/1-find-elements/solution.md +++ /dev/null @@ -1,26 +0,0 @@ -Есть много вариантов решения, вот некоторые из них: - -```js -// 1 -document.getElementById('age-table').getElementsByTagName('label'); - -// 2 -document.getElementById('age-table').getElementsByTagName('td')[0]; -// в современных браузерах можно одним запросом: -var result = document.querySelector('#age-table td'); - -// 3 -document.getElementsByTagName('form')[1]; - -// 4 -document.querySelector('form[name="search"]'); - -// 5 -document.querySelector('form[name="search"] input') - -// 6 -document.getElementsByName("info[0]")[0]; - -// 7 -document.querySelector('form[name="search-person"] [name="info[0]"]'); -``` diff --git a/2-ui/1-document/5-searching-elements-dom/1-find-elements/table.html b/2-ui/1-document/5-searching-elements-dom/1-find-elements/table.html deleted file mode 100644 index 3484bc0c..00000000 --- a/2-ui/1-document/5-searching-elements-dom/1-find-elements/table.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - -
          - - -
          - -
          - -
          - Поиск по посетителям: - - - - - - - - - - - -
          Возраст: - - - -
          Дополнительно: - - - -
          - - -
          - - - \ No newline at end of file diff --git a/2-ui/1-document/5-searching-elements-dom/1-find-elements/task.md b/2-ui/1-document/5-searching-elements-dom/1-find-elements/task.md deleted file mode 100644 index fa959a95..00000000 --- a/2-ui/1-document/5-searching-elements-dom/1-find-elements/task.md +++ /dev/null @@ -1,20 +0,0 @@ -# Поиск элементов - -[importance 4] - -Ниже находится документ с таблицей и формой. - -Найдите (получите в переменную) в нём: - -
            -
          1. Все элементы `label` внутри таблицы. Должно быть 3 элемента.
          2. -
          3. Первую ячейку таблицы (со словом `"Возраст"`).
          4. -
          5. Вторую форму в документе.
          6. -
          7. Форму с именем `search`, без использования её позиции в документе.
          8. -
          9. Элемент `input` в форме с именем `search`. Если их несколько, то нужен первый.
          10. -
          11. Элемент с именем `info[0]`, без точного знания его позиции в документе.
          12. -
          13. Элемент с именем `info[0]`, внутри формы с именем `search-person`.
          14. -
          - -Используйте для этого консоль браузера, открыв страницу [table.html](table.html) в отдельном окне. - diff --git a/2-ui/1-document/5-searching-elements-dom/2-tree-info/solution.md b/2-ui/1-document/5-searching-elements-dom/2-tree-info/solution.md deleted file mode 100644 index 55b45737..00000000 --- a/2-ui/1-document/5-searching-elements-dom/2-tree-info/solution.md +++ /dev/null @@ -1,18 +0,0 @@ -Сделаем цикл по узлам `
        5. `: - -```js -var lis = document.getElementsByTagName('li'); - -for (i = 0; i < lis.length; i++) { - ... -} -``` - -В цикле для каждого `lis[i]` можно получить текст, используя свойство `firstChild`. Ведь первым в `
        6. ` является как раз текстовый узел, содержащий текст названия. - -Также можно получить количество потомков, используя `lis[i].getElementsByTagName('li')`. - -Напишите код с этой подсказкой. - -Если уж не выйдет -- тогда откройте решение. - diff --git a/2-ui/1-document/5-searching-elements-dom/2-tree-info/solution.view/index.html b/2-ui/1-document/5-searching-elements-dom/2-tree-info/solution.view/index.html deleted file mode 100644 index e9b5d644..00000000 --- a/2-ui/1-document/5-searching-elements-dom/2-tree-info/solution.view/index.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - -
            -
          • Животные -
              -
            • Млекопитающие -
                -
              • Коровы
              • -
              • Ослы
              • -
              • Собаки
              • -
              • Тигры
              • -
              -
            • -
            • Другие -
                -
              • Змеи
              • -
              • Птицы
              • -
              • Ящерицы
              • -
              -
            • -
            -
          • -
          • Рыбы -
              -
            • Аквариумные -
                -
              • Гуппи
              • -
              • Скалярии
              • -
              - -
            • -
            • Морские -
                -
              • Морская форель
              • -
              -
            • -
            -
          • -
          - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/5-searching-elements-dom/2-tree-info/source.view/index.html b/2-ui/1-document/5-searching-elements-dom/2-tree-info/source.view/index.html deleted file mode 100644 index 2f45460c..00000000 --- a/2-ui/1-document/5-searching-elements-dom/2-tree-info/source.view/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - -
            -
          • Животные -
              -
            • Млекопитающие -
                -
              • Коровы
              • -
              • Ослы
              • -
              • Собаки
              • -
              • Тигры
              • -
              -
            • -
            • Другие -
                -
              • Змеи
              • -
              • Птицы
              • -
              • Ящерицы
              • -
              -
            • -
            -
          • -
          • Рыбы -
              -
            • Аквариумные -
                -
              • Гуппи
              • -
              • Скалярии
              • -
              - -
            • -
            • Морские -
                -
              • Морская форель
              • -
              -
            • -
            -
          • -
          - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/5-searching-elements-dom/2-tree-info/task.md b/2-ui/1-document/5-searching-elements-dom/2-tree-info/task.md deleted file mode 100644 index 5ffd808d..00000000 --- a/2-ui/1-document/5-searching-elements-dom/2-tree-info/task.md +++ /dev/null @@ -1,14 +0,0 @@ -# Дерево - -[importance 5] - -Есть дерево из тегов `
      • ` количество вложенных в него элементов. Узлы нижнего уровня, без детей -- пропускайте. - -Результат: -[iframe border=1 src="solution"] diff --git a/2-ui/1-document/11-modifying-document/9-calendar-table/solution.md b/2-ui/1-document/11-modifying-document/9-calendar-table/solution.md deleted file mode 100644 index a4e1a7f3..00000000 --- a/2-ui/1-document/11-modifying-document/9-calendar-table/solution.md +++ /dev/null @@ -1,11 +0,0 @@ -Для решения задачи сгенерируем таблицу в виде строки: `"...
        "`, а затем присвоим в `innerHTML`. - -Алгоритм: -
          -
        1. Создать объект даты `d = new Date(year, month-1)`. Это первый день месяца `month` (с учетом того, что месяцы в JS начинаются от 0, а не от 1).
        2. -
        3. Ячейки первого ряда пустые от начала и до дня недели `d.getDay()`, с которого начинается месяц. Создадим их.
        4. -
        5. Увеличиваем день в `d` на единицу: `d.setDate(d.getDate()+1)`, и добавляем в календарь очередную ячейку, пока не достигли следующего месяца. При этом последний день недели означает вставку перевода строки "</tr><tr>".
        6. -
        7. При необходимости, если календарь окончился не на воскресенье - добавить пустые `TD` в таблицу, чтобы было все ровно.
        8. -
        - -[edit src="solution"]Открыть полное решение[/edit] diff --git a/2-ui/1-document/11-modifying-document/9-calendar-table/solution.view/index.html b/2-ui/1-document/11-modifying-document/9-calendar-table/solution.view/index.html deleted file mode 100644 index e0a7443c..00000000 --- a/2-ui/1-document/11-modifying-document/9-calendar-table/solution.view/index.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - -
        - - - - - - \ No newline at end of file diff --git a/2-ui/1-document/11-modifying-document/9-calendar-table/source.view/index.html b/2-ui/1-document/11-modifying-document/9-calendar-table/source.view/index.html deleted file mode 100644 index 2eedf93e..00000000 --- a/2-ui/1-document/11-modifying-document/9-calendar-table/source.view/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - -
        - - - - - \ No newline at end of file diff --git a/2-ui/1-document/11-modifying-document/9-calendar-table/task.md b/2-ui/1-document/11-modifying-document/9-calendar-table/task.md deleted file mode 100644 index 264fcf6c..00000000 --- a/2-ui/1-document/11-modifying-document/9-calendar-table/task.md +++ /dev/null @@ -1,19 +0,0 @@ -# Создать календарь в виде таблицы - -[importance 4] - -Напишите функцию, которая умеет генерировать календарь для заданной пары (месяц, год). - -Календарь должен быть таблицей, где каждый день -- это `TD`. У таблицы должен быть заголовок с названиями дней недели, каждый день -- `TH`. - -Синтаксис: `createCalendar(id, year, month)`. - -Такой вызов должен генерировать текст для календаря месяца `month` в году `year`, а затем помещать его внутрь элемента с указанным `id`. - -Например: `createCalendar("cal", 2012, 9)` сгенерирует в <div id='cal'></div> следующий календарь: - -[iframe height=210 src="solution"] - -P.S. Достаточно сгенерировать календарь, кликабельным его делать не нужно. - - diff --git a/2-ui/1-document/11-modifying-document/article.md b/2-ui/1-document/11-modifying-document/article.md deleted file mode 100644 index d1cf7a43..00000000 --- a/2-ui/1-document/11-modifying-document/article.md +++ /dev/null @@ -1,412 +0,0 @@ -# Добавление и удаление узлов - -Изменение DOM -- ключ к созданию "живых" страниц. - -В этой главе мы рассмотрим, как создавать новые элементы "на лету" и заполнять их данными. - -[cut] - -## Пример: показ сообщения - -В качестве примера рассмотрим добавление сообщения на страницу, чтобы оно было оформленно красивее чем обычный `alert`. - -HTML-код для сообщения: - -```html - - - -*!* -
        - Ура! Вы прочитали это важное сообщение. -
        -*/!* -``` - -## Создание элемента - -Для создания элементов используются следующие методы: - -
        -
        `document.createElement(tag)`
        -
        Создает новый элемент с указанным тегом: - -```js -var div = document.createElement('div'); -``` - -
        -
        `document.createTextNode(text)`
        -
        Создает новый *текстовый* узел с данным текстом: - -```js -var textElem = document.createTextNode('Тут был я'); -``` - -
        - -### Создание сообщения - -В нашем случае мы хотим сделать DOM-элемент `div`, дать ему классы и заполнить текстом: - -```js -var div = document.createElement('div'); -div.className = "alert alert-success"; -div.innerHTML = "Ура! Вы прочитали это важное сообщение."; -``` - -После этого кода у нас есть готовый DOM-элемент. Пока что он присвоен в переменную `div`, но не виден, так как никак не связан со страницей. - -## Добавление элемента: appendChild, insertBefore - -Чтобы DOM-узел был показан на странице, его необходимо вставить в `document`. - -Для этого первым делом нужно решить, куда мы будем его вставлять. Предположим, что мы решили, что вставлять будем в некий элемент `parentElem`, например `var parentElem = document.body`. - -Для вставки внутрь `parentElem` есть следующие методы: - -
        -
        `parentElem.appendChild(elem)`
        -
        Добавляет `elem` в конец дочерних элементов `parentElem`. - -Следующий пример добавляет новый элемент в конец `
          `: - -```html - -
            -
          1. 0
          2. -
          3. 1
          4. -
          5. 2
          6. -
          - - -``` - -
        -
        `parentElem.insertBefore(elem, nextSibling)`
        -
        Вставляет `elem` в коллекцию детей `parentElem`, перед элементом `nextSibling`. - -Следующий код вставляет новый элемент перед вторым `
      • `: - -```html - -
          -
        1. 0
        2. -
        3. 1
        4. -
        5. 2
        6. -
        - -``` - -Для вставки элемента в начало достаточно указать, что вставлять будем перед первым потомком: - -```js -list.insertBefore(newLi, list.firstChild); -``` - -У читателя, который посмотрит на этот код внимательно, наверняка возникнет вопрос: "А что, если `list` вообще пустой, в этом случае ведь `list.firstChild = null`, произойдёт ли вставка?" - -Ответ -- да, произойдёт. - -**Дело в том, что если вторым аргументом указать `null`, то `insertBefore` сработает как `appendChild`:** - -```js -parentElem.insertBefore(elem, null); -// то же, что и: -parentElem.appendChild(elem) -``` - -Так что `insertBefore` универсален. -
      • -
        - -[smart] -Все методы вставки возвращают вставленный узел. - -Например, `parentElem.appendChild(elem)` возвращает `elem`. -[/smart] - - -### Пример использования - -Добавим сообщение в конец ``: - -```html - - - - -

        Моя страница

        - - - -``` - -...А теперь -- в начало ``: - -```html - - - - -

        Моя страница

        - - - -``` - -## Клонирование узлов: cloneNode - -А как бы вставить второе похожее сообщение? - -Конечно, можно сделать функцию для генерации сообщений и поместить туда этот код, но в ряде случаев гораздо эффективнее -- *клонировать* существующий `div`, а потом изменить текст внутри. В частности, если элемент большой, то клонировать его будет гораздо быстрее, чем пересоздавать. - -Вызов `elem.cloneNode(true)` создаст "глубокую" копию элемента -- вместе с атрибутами, включая подэлементы. Если же вызвать с аргументом `false`, то копия будет сделана без дочерних элементов. Это нужно гораздо реже. - -Пример со вставкой копии сообщения: - -```html - - - - -

        Моя страница

        - - - -``` - -Обратите внимание на последнюю строку, которая вставляет `div2` после `div`: - -```js -div.parentNode.insertBefore(div2, div.nextSibling); -``` - -
          -
        1. Для вставки нам нужен будущий родитель. Мы, возможно, не знаем, где точно находится `div` (или не хотим зависеть от того, где он), но если нужно вставить рядом с `div`, то родителем определённо будет `div.parentNode`.
        2. -
        3. Мы хотели бы вставить *после* `div`, но метода `insertAfter` нет, есть только `insertBefore`, поэтому вставляем *перед* его правым соседом `div.nextSibling`.
        4. -
        - - -## Удаление узлов: removeChild - -Для удаления узла есть два метода: - -
        -
        `parentElem.removeChild(elem)`
        -
        Удаляет `elem` из списка детей `parentElem`.
        -
        `parentElem.replaceChild(newElem, elem)`
        -
        Среди детей `parentElem` удаляет `elem` и вставляет на его место `newElem`.
        -
        - -Оба этих метода возвращают удаленный узел, то есть `elem`. Если нужно, его можно вставить в другое место DOM тут же или в будущем. - -[smart] -Если вы хотите *переместить* элемент на новое место -- не нужно его удалять со старого. - -**Все методы вставки автоматически удаляют вставляемый элемент со старого места.** - -Конечно же, это очень удобно. - -Например, поменяем элементы местами: - -```html - -
        Первый
        -
        Второй
        - -``` - -[/smart] - - -[smart header="Метод `remove`"] - -В современном стандарте есть также метод [elem.remove()](https://dom.spec.whatwg.org/#dom-childnode-remove), который удаляет элемент напрямую, не требуя ссылки на родителя. Это зачастую удобнее, чем `removeChild`. - -Он поддерживается во всех современных браузерах, кроме IE11-. Впрочем, легко подключить или даже сделать полифилл. -[/smart] - -### Удаление сообщения - -Сделаем так, что через секунду сообщение пропадёт: - -```html - - - - -

        Сообщение пропадёт через секунду

        - - - -``` - -## Текстовые узлы для вставки текста - -При работе с сообщением мы использовали только узлы-элементы и `innerHTML`. - -Но и текстовые узлы тоже имеют интересную область применения! - -Если текст для сообщения нужно показать именно как текст, а не как HTML, то можно обернуть его в текстовый узел. - -Например: - -```html - - - - -``` - -В современных браузерах (кроме IE8-) в качестве альтернативы можно использовать присвоение `textContent`. - - -## Итого - -Методы для создания узлов: - -
          -
        • `document.createElement(tag)` -- создает элемент
        • -
        • `document.createTextNode(value)` -- создает текстовый узел
        • -
        • `elem.cloneNode(deep)` -- клонирует элемент, если `deep == true`, то со всеми потомками, если `false` -- без потомков.
        • -
        - -Вставка и удаление узлов: -
          -
        • `parent.appendChild(elem)`
        • -
        • `parent.insertBefore(elem, nextSibling)`
        • -
        • `parent.removeChild(elem)`
        • -
        • `parent.replaceChild(newElem, elem)`
        • -
        - -Все эти методы возвращают `elem`. - -Методы для изменения DOM также описаны в спецификации
        DOM Level 1. - - - - - - - diff --git a/2-ui/1-document/12-multi-insert/1-append-to-list/solution.md b/2-ui/1-document/12-multi-insert/1-append-to-list/solution.md deleted file mode 100644 index f8202293..00000000 --- a/2-ui/1-document/12-multi-insert/1-append-to-list/solution.md +++ /dev/null @@ -1,8 +0,0 @@ -Решение: - -```js -var ul = document.body.children[0]; - -ul.insertAdjacentHTML("beforeEnd", "