diff --git a/dotfiles/.vscode-oss/extensions/extensions.json b/dotfiles/.vscode-oss/extensions/extensions.json index 1f7ccf75..5b28bb67 100644 --- a/dotfiles/.vscode-oss/extensions/extensions.json +++ b/dotfiles/.vscode-oss/extensions/extensions.json @@ -1 +1 @@ -[{"identifier":{"id":"piousdeer.adwaita-theme","uuid":"93fbc635-4a9a-4ff1-88ba-bf017484c602"},"version":"1.1.0","location":{"$mid":1,"path":"/home/trude/.vscode-oss/extensions/piousdeer.adwaita-theme-1.1.0-universal","scheme":"file"},"relativeLocation":"piousdeer.adwaita-theme-1.1.0-universal","metadata":{"id":"93fbc635-4a9a-4ff1-88ba-bf017484c602","publisherId":"93befe42-7314-4d14-8724-19419a27ed64","publisherDisplayName":"piousdeer","targetPlatform":"universal","updated":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1714048423200,"pinned":false,"source":"gallery"}},{"identifier":{"id":"oderwat.indent-rainbow","uuid":"eaa2127d-cb69-4ab9-8505-a60c9ee5f28b"},"version":"8.3.1","location":{"$mid":1,"path":"/home/trude/.vscode-oss/extensions/oderwat.indent-rainbow-8.3.1-universal","scheme":"file"},"relativeLocation":"oderwat.indent-rainbow-8.3.1-universal","metadata":{"id":"eaa2127d-cb69-4ab9-8505-a60c9ee5f28b","publisherId":"ac064ae0-224d-4351-9aa4-45ef7bf3ed21","publisherDisplayName":"oderwat","targetPlatform":"universal","updated":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1714048433635,"pinned":false,"source":"gallery"}},{"identifier":{"id":"yandeu.five-server","uuid":"a18a6705-5a6a-4e14-a4a7-3efa6b7647d5"},"version":"0.3.1","location":{"$mid":1,"fsPath":"/home/trude/.vscode-oss/extensions/yandeu.five-server-0.3.1-universal","external":"file:///home/trude/.vscode-oss/extensions/yandeu.five-server-0.3.1-universal","path":"/home/trude/.vscode-oss/extensions/yandeu.five-server-0.3.1-universal","scheme":"file"},"relativeLocation":"yandeu.five-server-0.3.1-universal","metadata":{"id":"a18a6705-5a6a-4e14-a4a7-3efa6b7647d5","publisherId":"a342b7ab-2d58-4313-9c2d-f506bb2aa10c","publisherDisplayName":"yandeu","targetPlatform":"universal","updated":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1714049361078,"pinned":false,"source":"gallery"}}] \ No newline at end of file +[{"identifier":{"id":"piousdeer.adwaita-theme","uuid":"93fbc635-4a9a-4ff1-88ba-bf017484c602"},"version":"1.1.0","location":{"$mid":1,"path":"/home/trude/.vscode-oss/extensions/piousdeer.adwaita-theme-1.1.0-universal","scheme":"file"},"relativeLocation":"piousdeer.adwaita-theme-1.1.0-universal","metadata":{"id":"93fbc635-4a9a-4ff1-88ba-bf017484c602","publisherId":"93befe42-7314-4d14-8724-19419a27ed64","publisherDisplayName":"piousdeer","targetPlatform":"universal","updated":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1714048423200,"pinned":false,"source":"gallery"}},{"identifier":{"id":"oderwat.indent-rainbow","uuid":"eaa2127d-cb69-4ab9-8505-a60c9ee5f28b"},"version":"8.3.1","location":{"$mid":1,"path":"/home/trude/.vscode-oss/extensions/oderwat.indent-rainbow-8.3.1-universal","scheme":"file"},"relativeLocation":"oderwat.indent-rainbow-8.3.1-universal","metadata":{"id":"eaa2127d-cb69-4ab9-8505-a60c9ee5f28b","publisherId":"ac064ae0-224d-4351-9aa4-45ef7bf3ed21","publisherDisplayName":"oderwat","targetPlatform":"universal","updated":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1714048433635,"pinned":false,"source":"gallery"}},{"identifier":{"id":"yandeu.five-server","uuid":"a18a6705-5a6a-4e14-a4a7-3efa6b7647d5"},"version":"0.3.1","location":{"$mid":1,"path":"/home/trude/.vscode-oss/extensions/yandeu.five-server-0.3.1-universal","scheme":"file"},"relativeLocation":"yandeu.five-server-0.3.1-universal","metadata":{"id":"a18a6705-5a6a-4e14-a4a7-3efa6b7647d5","publisherId":"a342b7ab-2d58-4313-9c2d-f506bb2aa10c","publisherDisplayName":"yandeu","targetPlatform":"universal","updated":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1714049361078,"pinned":false,"source":"gallery"}},{"identifier":{"id":"rust-lang.rust-analyzer","uuid":"06574cb4-e5dc-4631-8174-a543a4533621"},"version":"0.3.1932","location":{"$mid":1,"path":"/home/trude/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64","scheme":"file"},"relativeLocation":"rust-lang.rust-analyzer-0.3.1932-linux-x64","metadata":{"id":"06574cb4-e5dc-4631-8174-a543a4533621","publisherId":"cb14a7a7-a188-40bd-a953-e0a20757c5dd","publisherDisplayName":"rust-lang","targetPlatform":"linux-x64","updated":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1714049437810,"pinned":false,"source":"gallery"}},{"identifier":{"id":"formulahendry.code-runner","uuid":"a6a0c5b2-d078-4bf5-a9ee-4e37054414b3"},"version":"0.12.2","location":{"$mid":1,"fsPath":"/home/trude/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal","external":"file:///home/trude/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal","path":"/home/trude/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal","scheme":"file"},"relativeLocation":"formulahendry.code-runner-0.12.2-universal","metadata":{"id":"a6a0c5b2-d078-4bf5-a9ee-4e37054414b3","publisherId":"38bbe3f0-5204-4170-845e-c2f966d979b8","publisherDisplayName":"formulahendry","targetPlatform":"universal","updated":false,"isPreReleaseVersion":false,"hasPreReleaseVersion":false,"installedTimestamp":1714049439694,"pinned":false,"source":"gallery"}}] \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/.github/ISSUE_TEMPLATE/bug_report.md b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..7beb6728 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,33 @@ +--- +name: Bug report +about: Create a report to help us improve +title: "[Bug]" +labels: '' +assignees: '' + +--- + + + + +- VS Code Version: +- OS Version: +- Code Runner Version: + +**Describe the bug** +Description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: + +1. +2. + +**Actual behavior** +Description of what happened actually. + +**Expected behavior** +Description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/.github/ISSUE_TEMPLATE/config.yml b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..ba3d031e --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: Question + url: https://stackoverflow.com/questions/tagged/vscode-code-runner + about: Please ask and answer questions here. diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/.github/ISSUE_TEMPLATE/feature_request.md b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..0021081e --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,17 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: "[Feature request]" +labels: '' +assignees: '' + +--- + + + + +**Is your feature request related to a problem? Please describe.** +Description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +Description of what you want to happen. diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/.github/workflows/main.yml b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/.github/workflows/main.yml new file mode 100644 index 00000000..9876bfb1 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/.github/workflows/main.yml @@ -0,0 +1,28 @@ +name: CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + + workflow_dispatch: + +jobs: + build: + strategy: + fail-fast: false + matrix: + os: [macos-latest, ubuntu-latest, windows-latest] + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Install Node.js + uses: actions/setup-node@v1 + with: + node-version: 16.x + - run: npm install + - run: npm run vscode:prepublish + - run: npm run tslint diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/.vsixmanifest b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/.vsixmanifest new file mode 100644 index 00000000..4c79f5b3 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/.vsixmanifest @@ -0,0 +1,46 @@ + + + + + Code Runner + Run C, C++, Java, JS, PHP, Python, Perl, Ruby, Go, Lua, Groovy, PowerShell, CMD, BASH, F#, C#, VBScript, TypeScript, CoffeeScript, Scala, Swift, Julia, Crystal, OCaml, R, AppleScript, Elixir, VB.NET, Clojure, Haxe, Obj-C, Rust, Racket, Scheme, AutoHotkey, AutoIt, Kotlin, Dart, Pascal, Haskell, Nim, D, Lisp, Kit, V, SCSS, Sass, CUDA, Less, Fortran, Ring, Standard ML, Zig, Mojo, Erlang, SPWN, Pkl, Gleam + javascript,php,python,perl,ruby,multi-root ready,keybindings,code-runner-output,c++,java,erlang,c#,haskell,powershell,rust,__sponsor_extension + Programming Languages,Other + Public + + + + + + + + + + + + + + + + + + + + + + + extension/LICENSE.txt + extension/images/logo.png + + + + + + + + + + + + + \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/BACKERS.md b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/BACKERS.md new file mode 100644 index 00000000..9055ab89 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/BACKERS.md @@ -0,0 +1,3 @@ +

Backers

+ +- Daniel Wotapka diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/CHANGELOG.md b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/CHANGELOG.md new file mode 100644 index 00000000..83a87565 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/CHANGELOG.md @@ -0,0 +1,336 @@ +### 0.12.2 (2024-04-05) +* Add support for Erlang +* Add support for SPWN +* Add support for Pkl +* Add support for Gleam + +### 0.12.1 (2023-10-08) +* Add support for Mojo language + +### 0.12.0 (2023-01-23) +* Add support for Zig language +* Use `runghc` to replace `runhaskell` for Haskell + +### 0.11.8 (2022-06-11) +* Add support for Standard ML +* Adopt extension sponsorship + +### 0.11.7 (2022-02-08) +* Update run/stop icons + +### 0.11.6 (2021-10-10) +* Add support for Ring + +### 0.11.5 (2021-07-10) +* [#776](https://github.com/formulahendry/vscode-code-runner/pull/776): Add stop button in editor title bar + +### 0.11.4 (2021-05-14) +* [#783](https://github.com/formulahendry/vscode-code-runner/issues/783): Not detect shell on Windows correctly in VS Code 1.56 + +### 0.11.3 (2021-03-11) +* Adopt 'run' menu in editor title + +### 0.11.2 (2021-01-05) +* Activate extension after VS Code starts up + +### 0.11.1 (2020-10-11) +* Add support for Fortran + +### 0.11.0 (2020-07-07) +* Integrate with new Python Interpreter Path API V2 of Python extension +* Add support for Less + +### 0.10.0 (2020-05-02) +* Integrate with new Python Interpreter Path API of Python extension + +### 0.9.17 (2020-03-11) +* Add support for CUDA + +### 0.9.16 (2020-02-20) +* Add support for SCSS and Sass + +### 0.9.15 (2019-11-21) +* Add support for [V Programming Language](https://vlang.io/) + +### 0.9.14 (2019-08-17) +* [#516](https://github.com/formulahendry/vscode-code-runner/pull/516): Update "Run" icon to match new icon style + +### 0.9.13 (2019-08-14) +* [#428](https://github.com/formulahendry/vscode-code-runner/pull/428): Use spawn to avoid stdout buffer exceeded + +### 0.9.12 (2019-08-02) +* Add support for Scheme using [CHICKEN Scheme](https://www.call-cc.org/) + +### 0.9.11 (2019-06-12) +* [#491](https://github.com/formulahendry/vscode-code-runner/issues/491): Fix terminal detection due to VS Code's change in 1.35 + +### 0.9.10 (2019-06-02) +* [#484](https://github.com/formulahendry/vscode-code-runner/pull/484): Fix Rust attributes considered as Shebang + +### 0.9.9 (2019-05-04) +* Fix tempCodeRunnerFile not being deleted +* Add option to hide "Run Code" from explorer context menu + +### 0.9.8 (2019-04-07) +* Add support for [Kit](https://www.kitlang.org/) + +### 0.9.7 (2019-01-29) +* Add config entry to set the executor per filename glob +* Support Maven project (pom.xml) +* Add [CODING](https://e.coding.net/?utm_source=hendry-code-runner&utm_medium=cpc&utm_campaign=hendry-code-runner) as our second sponsor + +### 0.9.6 (2019-01-16) +* Add support for Lisp + +### 0.9.5 (2018-10-29) +* We have our first sponsor now: [CodeStream](https://codestream.com/?utm_source=vscmarket&utm_medium=banner&utm_campaign=coderunner) + +### 0.9.4 (2018-08-03) +* [#70](https://github.com/formulahendry/vscode-code-runner/issues/70): Use `-u` flag for Python to force stdin, stdout and stderr to be totally unbuffered. + +### 0.9.3 (2018-03-19) +* [#273](https://github.com/formulahendry/vscode-code-runner/issues/273): Could not run file without extension + +### 0.9.2 (2018-03-13) +* Add $pythonPath customized parameter to respect `python.pythonPath` setting + +### 0.9.1 (2018-03-08) +* Add option to respect Shebang or not + +### 0.9.0 (2018-03-04) +* Add support for Shebang + +### 0.8.7 (2017-12-30) +* Add support for Perl 6 + +### 0.8.6 (2017-12-22) +* Fix kotlin script execution + +### 0.8.5 (2017-11-30) +* Add support for F# (.NET Core) + +### 0.8.4 (2017-11-17) +* [#207](https://github.com/formulahendry/vscode-code-runner/issues/207): Add option to hide "Run Code" from editor context menu + +### 0.8.3 (2017-11-04) +* Add support for C# (.NET Core) + +### 0.8.2 (2017-10-26) +* [#196](https://github.com/formulahendry/vscode-code-runner/issues/196): Fix 'run code' hotkey not working + +### 0.8.1 (2017-10-26) +* Distinguish whether it is running from file explorer + +### 0.8.0 (2017-10-25) +* [#88](https://github.com/formulahendry/vscode-code-runner/issues/88): Run file through context menu of file explorer + +### 0.7.4 (2017-10-20) +* [#191](https://github.com/formulahendry/vscode-code-runner/issues/191): Stop running code when VS Code is closed + +### 0.7.3 (2017-10-14) +* Add support for Multi Root Workspaces + +### 0.7.2 (2017-09-29) +* [#182](https://github.com/formulahendry/vscode-code-runner/issues/182): Add $driveLetter customized parameter + +### 0.7.1 (2017-08-24) +* [#98](https://github.com/formulahendry/vscode-code-runner/issues/98): Add .ts extension mapping for typescript + +### 0.7.0 (2017-08-20) +* [#164](https://github.com/formulahendry/vscode-code-runner/issues/164): Make temporary file name not random by default +* Support running code snippet in terminal + +### 0.6.33 (2017-08-10) +* [#149](https://github.com/formulahendry/vscode-code-runner/issues/149): Set custom terminal root path for Linux Shell on Windows + +### 0.6.32 (2017-08-05) +* [#146](https://github.com/formulahendry/vscode-code-runner/issues/146): Enable fileDirectoryAsCwd in Terminal + +### 0.6.31 (2017-08-03) +* Fix code running in PowerShell + +### 0.6.30 (2017-08-01) +* [#152](https://github.com/formulahendry/vscode-code-runner/issues/152): Clear previous output when running in terminal + +### 0.6.29 (2017-07-28) +* [#132](https://github.com/formulahendry/vscode-code-runner/issues/132): Refine 'Run Code' button + +### 0.6.28 (2017-07-22) +* [#106](https://github.com/formulahendry/vscode-code-runner/issues/106): [Continuous Fix for Bash on Windows] Handle multiple file path and case-insensitive bash path + +### 0.6.27 (2017-07-20) +* [#106](https://github.com/formulahendry/vscode-code-runner/issues/106): Handle file path for Bash on Windows + +### 0.6.26 (2017-07-13) +* [#140](https://github.com/formulahendry/vscode-code-runner/issues/140): Add support for Nim + +### 0.6.25 (2017-07-12) +* [#130](https://github.com/formulahendry/vscode-code-runner/issues/130): Add option to save all files before running + +### 0.6.24 (2017-06-22) +* Add support for Haskell + +### 0.6.23 (2017-06-21) +* [#131](https://github.com/formulahendry/vscode-code-runner/issues/131): Option to hide 'Run Code' button +* Refine 'Run Code' button + +### 0.6.22 (2017-06-20) +* [#128](https://github.com/formulahendry/vscode-code-runner/issues/128): Add 'Run Code' buuton in editor title menu + +### 0.6.21 (2017-06-18) +* Add support for D + +### 0.6.20 (2017-06-14) +* Resolve [GitHub issue#126](https://github.com/formulahendry/vscode-code-runner/issues/126): Add support for Free Pascal + +### 0.6.19 (2017-06-13) +* Add support for Dart + +### 0.6.18 (2017-06-02) +* Add support for Kotlin script (.kts) + +### 0.6.17 (2017-05-20) +* Resolve [GitHub issue#113](https://github.com/formulahendry/vscode-code-runner/issues/113): Add support for Kotlin + +### 0.6.16 (2017-04-15) +* Resolve [GitHub issue#102](https://github.com/formulahendry/vscode-code-runner/issues/102): Add config entry to set whether to ignore selection to always run entire file + +### 0.6.15 (2017-03-26) +* Add support for AutoIt + +### 0.6.14 (2017-03-12) +* Resolve [GitHub issue#93](https://github.com/formulahendry/vscode-code-runner/issues/93): Add config entry to set whether to preserve focus on code editor after code run is triggered + +### 0.6.13 (2017-03-05) +* Add support for AutoHotkey + +### 0.6.12 +* Add support for Racket + +### 0.6.11 +* Add support for Rust +* Set cwd as the directory of the code file if no folder has been opened + +### 0.6.10 +* Resolve [GitHub issue#77](https://github.com/formulahendry/vscode-code-runner/issues/77): Add support for Objective-C + +### 0.6.9 +* Change executor if the Integrated Terminal is PowerShell on Windows + +### 0.6.8 +* Add support for Haxe + +### 0.6.7 +* Resolve [GitHub issue#57](https://github.com/formulahendry/vscode-code-runner/issues/57): Add support for Clojure +* Fix output color due to changed VS Code 1.9 +* Improve output color for numeric + +### 0.6.6 +* Resolve [GitHub issue#54](https://github.com/formulahendry/vscode-code-runner/issues/54): Add support for VB.NET +* Resolve [GitHub issue#51](https://github.com/formulahendry/vscode-code-runner/issues/51): Add support for $workspaceRoot + +### 0.6.5 +* Resolve [GitHub issue#43](https://github.com/formulahendry/vscode-code-runner/issues/43): Add support for Elixir +* Upgrade applicationinsights npm since [telemetry data requires HTTPS](https://azure.microsoft.com/en-us/updates/application-insights-telemetry-data-now-requires-https-with-shutdown-of-http-data-collectors/) + +### 0.6.4 +* Resolve [GitHub issue#41](https://github.com/formulahendry/vscode-code-runner/issues/41): Fix running C/C++ in Windows + +### 0.6.3 +* Add support for AppleScript +* Add PayPal link in donation section + +### 0.6.2 +* Add support for R Language +* Add donation section in README.md + +### 0.6.1 +* Minor fix for running custom command when there is no active editor window + +### 0.6.0 +* Add support to run custom command + +### 0.5.1 +* Resolve [GitHub issue#21](https://github.com/formulahendry/vscode-code-runner/issues/21): Remove "Run Code" in Output Channel +* Add "Stop Code Run" in Output Channel +* Resolve [GitHub issue#32](https://github.com/formulahendry/vscode-code-runner/issues/32): Preserve focus of Text Editor after code is running +* Not add quote for $fileNameWithoutExt and $fileName +* Not add extra space for placeholders + +### 0.5.0 +* Add placeholders into configuration for compiled language +* Add support for C, C++, Java + +### 0.4.2 +* Add support for OCaml Script + +### 0.4.1 +* Avoid running code in Integrated Terminal when it is untitled file or code snippet + +### 0.4.0 +* Add support to run code in Integrated Terminal + +### 0.3.4 +* Resolve [GitHub issue#24](https://github.com/formulahendry/vscode-code-runner/issues/24): Add config entry to set whether to show extra execution message + +### 0.3.3 +* Add support to run by language from a suggestion list + +### 0.3.2 +* Add support for Swift, Julia, Crystal + +### 0.3.1 +* Update README.md about running TypeScript with ts-node + +### 0.3.0 +* Add support for TypeScript, CoffeeScript, Scala + +### 0.2.4 +* Resolve [GitHub issue#20](https://github.com/formulahendry/vscode-code-runner/issues/20): Add config entry to determine whether to use the directory of the file to be executed as the working directory + +### 0.2.3 +* Resolve [GitHub issue#18](https://github.com/formulahendry/vscode-code-runner/issues/18): Fix output highlight when execution time is greater than 10 seconds + +### 0.2.2 +* Resolve [GitHub issue#12](https://github.com/formulahendry/vscode-code-runner/issues/12): Add 'Run Code' entry to editor context menu + +### 0.2.1 +* Resolve [GitHub issue#8](https://github.com/formulahendry/vscode-code-runner/issues/8): Fix output highlight +* Resolve [GitHub issue#10](https://github.com/formulahendry/vscode-code-runner/issues/10): Add option to save the file before running +* Resolve [GitHub issue#11](https://github.com/formulahendry/vscode-code-runner/issues/11): Set the mapping of languageId to file extension +* Add Application Insights to track telemetry data to improve this extension + +### 0.2.0 +* Resolve [GitHub issue#6](https://github.com/formulahendry/vscode-code-runner/issues/6): Add config entry to set whether to clear previous output before each run +* Resolve [GitHub issue#7](https://github.com/formulahendry/vscode-code-runner/issues/7): Add colorizer for output and refine output +* Use the current file to run if there is no selection and it is not untitled +* If there is selection and the file is not untitled, create tmp file in the file folder to run the code sinnpet + +### 0.1.3 +* Resolve [GitHub issue#5](https://github.com/formulahendry/vscode-code-runner/issues/5): Put the temp code file in working directory instead of os temp folder + +### 0.1.2 +* Resolve [GitHub issue#5](https://github.com/formulahendry/vscode-code-runner/issues/5): Add support to set working directory + +### 0.1.1 +* Add support for VBScript +* Add config entry to set the executor per file extension + +### 0.1.0 +* Add support to set default language to run +* Add support to select language to run + +### 0.0.5 +* Add support for C# script + +### 0.0.4 +* Add support for F# script + +### 0.0.3 +* Add support for powershell, bat/cmd and bash/sh + +### 0.0.2 +* Add support for lua and groovy + +### 0.0.1 +* Initial Release diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/LICENSE.txt b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/LICENSE.txt new file mode 100644 index 00000000..57036ff6 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Jun Han + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/README.md b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/README.md new file mode 100644 index 00000000..2a4293b4 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/README.md @@ -0,0 +1,222 @@ +# Code Runner + +[![Join the chat at https://gitter.im/formulahendry/vscode-code-runner](https://badges.gitter.im/formulahendry/vscode-code-runner.svg)](https://gitter.im/formulahendry/vscode-code-runner?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) ![Downloads](https://img.shields.io/visual-studio-marketplace/d/formulahendry.code-runner) ![Rating](https://img.shields.io/visual-studio-marketplace/r/formulahendry.code-runner) [![Actions Status](https://github.com/formulahendry/vscode-code-runner/actions/workflows/main.yml/badge.svg)](https://github.com/formulahendry/vscode-code-runner/actions/workflows/main.yml) + +Run code snippet or code file for multiple languages: **C, C++, Java, JavaScript, PHP, Python, Perl, Perl 6, Ruby, Go, Lua, Groovy, PowerShell, BAT/CMD, BASH/SH, F# Script, F# (.NET Core), C# Script, C# (.NET Core), VBScript, TypeScript, CoffeeScript, Scala, Swift, Julia, Crystal, OCaml Script, R, AppleScript, Elixir, Visual Basic .NET, Clojure, Haxe, Objective-C, Rust, Racket, Scheme, AutoHotkey, AutoIt, Kotlin, Dart, Free Pascal, Haskell, Nim, D, Lisp, Kit, V, SCSS, Sass, CUDA, Less, Fortran, Ring, Standard ML, Zig, Mojo, Erlang, SPWN, Pkl, Gleam**, and custom command + +## Book for VS Code + +[《Visual Studio Code 权威指南》](https://union-click.jd.com/jdc?e=jdext-1261348777639735296-0&p=AyIGZRhbHQsWAVIaXxEyEgRdG1sRBxU3EUQDS10iXhBeGlcJDBkNXg9JHUlSSkkFSRwSBF0bWxEHFRgMXgdIMkRxFAUJD1RQZT0cBnwKDE4%2BaDpgB2ILWStbHAIQD1QaWxIBIgdUGlsRBxEEUxprJQIXNwd1g6O0yqLkB4%2B%2FjcePwitaJQIWD1cfWhwKGwVSG1wlAhoDZc31gdeauIyr%2FsOovNLYq46cqca50ytrJQEiXABPElAeEgRSG1kQCxQBUxxZHQQQA1YTXAkDIgdUGlscChECXRs1FGwSD1UbWRALFwRWK1slASJZOxoLRlUXU1NONU9QEkdXWRlJbBUDVB9TFgAVN1caWhcA):带你深入浅出 VS Code! + +![Book](https://github.com/formulahendry/vscode-code-runner/raw/HEAD/images/book.jpg) + +## WeChat Official Account + +VS Code 的热门文章、使用技巧、插件推荐、插件开发攻略等,请关注“**玩转VS Code**”公众号! + +![WeChat](https://github.com/formulahendry/vscode-code-runner/raw/HEAD/images/WeChatPublicAccount.jpg) + +## Donation + +If you like this extension, you could become a backer or sponsor via **[Patreon](https://www.patreon.com/junhan)**, donate via **[PayPal](https://www.paypal.me/junhanme)**, or scan below QR code to donate via **Alipay**. Any amount is welcome. It will encourage me to make this extension better and better! + +![Alipay](https://github.com/formulahendry/vscode-code-runner/raw/HEAD/images/alipay.png) + +## Features + +* Run code file of current active Text Editor +* Run code file through context menu of file explorer +* Run selected code snippet in Text Editor +* Run code per Shebang +* Run code per filename glob +* Run custom command +* Stop code running +* View output in Output Window +* Set default language to run +* Select language to run +* Support REPL by running code in Integrated Terminal + +## Usages + +* To run code: + * use shortcut `Ctrl+Alt+N` + * or press `F1` and then select/type `Run Code`, + * or right click the Text Editor and then click `Run Code` in editor context menu + * or click `Run Code` button in editor title menu + * or click `Run Code` button in context menu of file explorer +* To stop the running code: + * use shortcut `Ctrl+Alt+M` + * or press `F1` and then select/type `Stop Code Run` + * or click `Stop Code Run` button in editor title menu + * or right click the Output Channel and then click `Stop Code Run` in context menu + +![Usage](https://github.com/formulahendry/vscode-code-runner/raw/HEAD/images/usage.gif) + +* To select language to run, use shortcut `Ctrl+Alt+J`, or press `F1` and then select/type `Run By Language`, then type or select the language to run: e.g `php, javascript, bat, shellscript...` + +![Usage](https://github.com/formulahendry/vscode-code-runner/raw/HEAD/images/usageRunByLanguage.gif) + +* To run custom command, then use shortcut `Ctrl+Alt+K`, or press `F1` and then select/type `Run Custom Command` + +## Configuration + +Make sure the executor PATH of each language is set in the environment variable. +You could also add entry into `code-runner.executorMap` to set the executor PATH. +e.g. To set the executor PATH for ruby, php and html: +```json +{ + "code-runner.executorMap": { + "javascript": "node", + "php": "C:\\php\\php.exe", + "python": "python", + "perl": "perl", + "ruby": "C:\\Ruby23-x64\\bin\\ruby.exe", + "go": "go run", + "html": "\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\"", + "java": "cd $dir && javac $fileName && java $fileNameWithoutExt", + "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt" + } +} +``` +**Supported customized parameters** + * $workspaceRoot: The path of the folder opened in VS Code + * $dir: The directory of the code file being run + * $dirWithoutTrailingSlash: The directory of the code file being run without a trailing slash + * $fullFileName: The full name of the code file being run + * $fileName: The base name of the code file being run, that is the file without the directory + * $fileNameWithoutExt: The base name of the code file being run without its extension + * $driveLetter: The drive letter of the code file being run (Windows only) + * $pythonPath: The path of Python interpreter (set by `Python: Select Interpreter` command) + +**Please take care of the back slash and the space in file path of the executor** + * Back slash: please use `\\` + * If there ares spaces in file path, please use `\"` to surround your file path + +You could set the executor per filename [glob](https://en.wikipedia.org/wiki/Glob_(programming)): +```json +{ + "code-runner.executorMapByGlob": { + "pom.xml": "cd $dir && mvn clean package", + "*.test.js": "tap", + "*.js": "node" + } +} +``` + +Besides, you could set the default language to run: +```json +{ + "code-runner.defaultLanguage": "javascript" +} +``` +**For the default language:** It should be set with language id defined in [VS Code](https://github.com/Microsoft/vscode/tree/master/extensions). The languages you could set are `java, c, cpp, javascript, php, python, perl, ruby, go, lua, groovy, powershell, bat, shellscript, fsharp, csharp, vbscript, typescript, coffeescript, swift, r, clojure, haxe, objective-c, rust, racket, ahk, autoit, kotlin, dart, pascal, haskell, nim, d, lisp` + +Also, you could set the executor per file extension: +```json +{ + "code-runner.executorMapByFileExtension": { + ".vbs": "cscript //Nologo" + } +} +``` + +To set the custom command to run: +```json +{ + "code-runner.customCommand": "echo Hello" +} +``` + +To set the the working directory: +```json +{ + "code-runner.cwd": "path/to/working/directory" +} +``` + +To set whether to clear previous output before each run (default is false): +```json +{ + "code-runner.clearPreviousOutput": false +} +``` + +To set whether to save all files before running (default is false): +```json +{ + "code-runner.saveAllFilesBeforeRun": false +} +``` + +To set whether to save the current file before running (default is false): +```json +{ + "code-runner.saveFileBeforeRun": false +} +``` + +To set whether to show extra execution message like [Running] ... and [Done] ... (default is true): +```json +{ + "code-runner.showExecutionMessage": true +} +``` + +**[REPL support]** To set whether to run code in Integrated Terminal (only support to run whole file in Integrated Terminal, neither untitled file nor code snippet) (default is false): +```json +{ + "code-runner.runInTerminal": false +} +``` + +To set whether to preserve focus on code editor after code run is triggered (default is true, the code editor will keep focus; when it is false, Terminal or Output Channel will take focus): +```json +{ + "code-runner.preserveFocus": true +} +``` + +`code-runner.ignoreSelection`: Whether to ignore selection to always run entire file. (Default is **false**) + +`code-runner.showRunIconInEditorTitleMenu`: Whether to show 'Run Code' icon in editor title menu. (Default is **true**) + +`code-runner.showRunCommandInEditorContextMenu`: Whether to show 'Run Code' command in editor context menu. (Default is **true**) + +`code-runner.showRunCommandInExplorerContextMenu`: Whether to show 'Run Code' command in explorer context menu. (Default is **true**) + +`code-runner.showStopIconInEditorTitleMenu`: Whether to show 'Stop Code Run' icon in editor title menu when code is running. (Default is **true**) + +`code-runner.terminalRoot`: For Windows system, replaces the Windows style drive letter in the command with a Unix style root when using a custom shell as the terminal, like Bash or Cgywin. Example: Setting this to `/mnt/` will replace `C:\path` with `/mnt/c/path` (Default is **""**) + +`code-runner.temporaryFileName`: Temporary file name used in running selected code snippet. When it is set as empty, the file name will be random. (Default is **"tempCodeRunnerFile"**) + +`code-runner.respectShebang`: Whether to respect Shebang to run code. (Default is **true**) + +## About CWD Setting (current working directory) +1. By default, use the `code-runner.cwd` setting +2. If `code-runner.cwd` is not set and `code-runner.fileDirectoryAsCwd` is `true`, use the directory of the file to be executed +3. If `code-runner.cwd` is not set and `code-runner.fileDirectoryAsCwd` is `false`, use the path of root folder that is open in VS Code +4. If no folder is open, use the os temp folder + +## Note +* For Objective-C, it is only supported on macOS +* To run C# script, you need to install [scriptcs](http://scriptcs.net/) +* To run TypeScript, you need to install [ts-node](https://github.com/TypeStrong/ts-node) +* To run Clojure, you need to install [Leiningen](https://leiningen.org/) and [lein-exec](https://github.com/kumarshantanu/lein-exec) + +## Telemetry data +By default, telemetry data collection is turned on to understand user behavior to improve this extension. To disable it, update the settings.json as below: +```json +{ + "code-runner.enableAppInsights": false +} +``` + +## Change Log +See Change Log [here](https://github.com/formulahendry/vscode-code-runner/blob/HEAD/CHANGELOG.md) + +## Issues +Submit the [issues](https://github.com/formulahendry/vscode-code-runner/issues) if you find any bug or have any suggestion. + +## Contribution +Fork the [repo](https://github.com/formulahendry/vscode-code-runner) and submit pull requests. diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/images/WeChatPublicAccount.jpg b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/images/WeChatPublicAccount.jpg new file mode 100644 index 00000000..1766e978 Binary files /dev/null and b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/images/WeChatPublicAccount.jpg differ diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/images/alipay.png b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/images/alipay.png new file mode 100644 index 00000000..944c044f Binary files /dev/null and b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/images/alipay.png differ diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/images/book.jpg b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/images/book.jpg new file mode 100644 index 00000000..a6e13327 Binary files /dev/null and b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/images/book.jpg differ diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/images/logo.png b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/images/logo.png new file mode 100644 index 00000000..ae704286 Binary files /dev/null and b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/images/logo.png differ diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/images/usage.gif b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/images/usage.gif new file mode 100644 index 00000000..d6bac232 Binary files /dev/null and b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/images/usage.gif differ diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/images/usageRunByLanguage.gif b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/images/usageRunByLanguage.gif new file mode 100644 index 00000000..a476daa7 Binary files /dev/null and b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/images/usageRunByLanguage.gif differ diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/.npmignore b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/.npmignore new file mode 100644 index 00000000..bbd111ff --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/.npmignore @@ -0,0 +1,21 @@ +# Ignore built files +obj +*.tgz + +# Ignore Visual Studio files +*.suo +*.sln +*.njsproj +.vscode/ + +# Ignore test files +Tests + +# Don't publish source files that aren't needed in package +*.ts +*.js.map +*.d.ts +.travis.yml +.ntvs_analysis.dat + +Declarations \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/ClientRequestParser.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/ClientRequestParser.js new file mode 100644 index 00000000..d5f37b1c --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/ClientRequestParser.js @@ -0,0 +1,116 @@ +/// +"use strict"; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var url = require("url"); +var ContractsModule = require("../Library/Contracts"); +var Util = require("../Library/Util"); +var RequestResponseHeaders = require("../Library/RequestResponseHeaders"); +var RequestParser = require("./RequestParser"); +/** + * Helper class to read data from the requst/response objects and convert them into the telemetry contract + */ +var ClientRequestParser = (function (_super) { + __extends(ClientRequestParser, _super); + function ClientRequestParser(requestOptions, request) { + _super.call(this); + if (request && request.method && requestOptions) { + // The ClientRequest.method property isn't documented, but is always there. + this.method = request.method; + this.url = ClientRequestParser._getUrlFromRequestOptions(requestOptions, request); + this.startTime = +new Date(); + } + } + /** + * Called when the ClientRequest emits an error event. + */ + ClientRequestParser.prototype.onError = function (error, properties) { + this._setStatus(undefined, error, properties); + }; + /** + * Called when the ClientRequest emits a response event. + */ + ClientRequestParser.prototype.onResponse = function (response, properties) { + this._setStatus(response.statusCode, undefined, properties); + this.targetIKeyHash = + response.headers && response.headers[RequestResponseHeaders.targetInstrumentationKeyHeader]; + }; + /** + * Gets a dependency data contract object for a completed ClientRequest. + */ + ClientRequestParser.prototype.getDependencyData = function () { + var urlObject = url.parse(this.url); + urlObject.search = undefined; + urlObject.hash = undefined; + var dependencyName = this.method.toUpperCase() + " " + urlObject.pathname; + var remoteDependency = new ContractsModule.Contracts.RemoteDependencyData(); + remoteDependency.type = ContractsModule.Contracts.RemoteDependencyDataConstants.TYPE_HTTP; + if (this.targetIKeyHash) { + remoteDependency.type = "ApplicationInsights"; + remoteDependency.target = urlObject.hostname + " | " + this.targetIKeyHash; + } + else { + remoteDependency.type = ContractsModule.Contracts.RemoteDependencyDataConstants.TYPE_HTTP; + remoteDependency.target = urlObject.hostname; + } + remoteDependency.name = dependencyName; + remoteDependency.data = this.url; + remoteDependency.duration = Util.msToTimeSpan(this.duration); + remoteDependency.success = this._isSuccess(); + remoteDependency.resultCode = this.statusCode ? this.statusCode.toString() : null; + remoteDependency.properties = this.properties || {}; + var data = new ContractsModule.Contracts.Data(); + data.baseType = "Microsoft.ApplicationInsights.RemoteDependencyData"; + data.baseData = remoteDependency; + return data; + }; + /** + * Builds a URL from request options, using the same logic as http.request(). This is + * necessary because a ClientRequest object does not expose a url property. + */ + ClientRequestParser._getUrlFromRequestOptions = function (options, request) { + if (typeof options === 'string') { + options = url.parse(options); + } + else { + // Avoid modifying the original options object. + var originalOptions_1 = options; + options = {}; + if (originalOptions_1) { + Object.keys(originalOptions_1).forEach(function (key) { + options[key] = originalOptions_1[key]; + }); + } + } + // Oddly, url.format ignores path and only uses pathname and search, + // so create them from the path, if path was specified + if (options.path) { + var parsedQuery = url.parse(options.path); + options.pathname = parsedQuery.pathname; + options.search = parsedQuery.search; + } + // Simiarly, url.format ignores hostname and port if host is specified, + // even if host doesn't have the port, but http.request does not work + // this way. It will use the port if one is not specified in host, + // effectively treating host as hostname, but will use the port specified + // in host if it exists. + if (options.host && options.port) { + // Force a protocol so it will parse the host as the host, not path. + // It is discarded and not used, so it doesn't matter if it doesn't match + var parsedHost = url.parse("http://" + options.host); + if (!parsedHost.port && options.port) { + options.hostname = options.host; + delete options.host; + } + } + // Mix in default values used by http.request and others + options.protocol = options.protocol || request.agent.protocol; + options.hostname = options.hostname || 'localhost'; + return url.format(options); + }; + return ClientRequestParser; +}(RequestParser)); +module.exports = ClientRequestParser; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/ClientRequests.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/ClientRequests.js new file mode 100644 index 00000000..c38a8700 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/ClientRequests.js @@ -0,0 +1,100 @@ +/// +"use strict"; +var http = require("http"); +var https = require("https"); +var Logging = require("../Library/Logging"); +var Util = require("../Library/Util"); +var RequestResponseHeaders = require("../Library/RequestResponseHeaders"); +var ClientRequestParser = require("./ClientRequestParser"); +var AutoCollectClientRequests = (function () { + function AutoCollectClientRequests(client) { + if (!!AutoCollectClientRequests.INSTANCE) { + throw new Error("Client request tracking should be configured from the applicationInsights object"); + } + AutoCollectClientRequests.INSTANCE = this; + this._client = client; + } + AutoCollectClientRequests.prototype.enable = function (isEnabled) { + this._isEnabled = isEnabled; + if (this._isEnabled && !this._isInitialized) { + this._initialize(); + } + }; + AutoCollectClientRequests.prototype.isInitialized = function () { + return this._isInitialized; + }; + AutoCollectClientRequests.prototype._initialize = function () { + var _this = this; + this._isInitialized = true; + var originalRequest = http.request; + http.request = function (options) { + var requestArgs = []; + for (var _i = 1; _i < arguments.length; _i++) { + requestArgs[_i - 1] = arguments[_i]; + } + var request = originalRequest.call.apply(originalRequest, [http, options].concat(requestArgs)); + if (request && options && !options[AutoCollectClientRequests.disableCollectionRequestOption]) { + AutoCollectClientRequests.trackRequest(_this._client, options, request); + } + return request; + }; + // On node >= v0.11.12, https.request just calls http.request (with additional options). + // But on older versions, https.request needs to be patched also. + // The regex matches versions < 0.11.12 (avoiding a semver package dependency). + if (/^0\.([0-9]\.)|(10\.)|(11\.([0-9]|10|11)$)/.test(process.versions.node)) { + var originalHttpsRequest_1 = https.request; + https.request = function (options) { + var requestArgs = []; + for (var _i = 1; _i < arguments.length; _i++) { + requestArgs[_i - 1] = arguments[_i]; + } + var request = originalHttpsRequest_1.call.apply(originalHttpsRequest_1, [https, options].concat(requestArgs)); + if (request && options && !options[AutoCollectClientRequests.disableCollectionRequestOption]) { + AutoCollectClientRequests.trackRequest(_this._client, options, request); + } + return request; + }; + } + }; + /** + * Tracks an outgoing request. Because it may set headers this method must be called before + * writing content to or ending the request. + */ + AutoCollectClientRequests.trackRequest = function (client, requestOptions, request, properties) { + if (!requestOptions || !request || !client) { + Logging.info("AutoCollectClientRequests.trackRequest was called with invalid parameters: ", !requestOptions, !request, !client); + return; + } + var requestParser = new ClientRequestParser(requestOptions, request); + // Add the source ikey hash to the request headers, if a value was not already provided. + // The getHeader/setHeader methods aren't available on very old Node versions, and + // are not included in the v0.10 type declarations currently used. So check if the + // methods exist before invoking them. + if (client.config && client.config.instrumentationKeyHash && + Util.canIncludeCorrelationHeader(client, requestParser.getUrl()) && + request['getHeader'] && request['setHeader'] && + !request['getHeader'](RequestResponseHeaders.sourceInstrumentationKeyHeader)) { + request['setHeader'](RequestResponseHeaders.sourceInstrumentationKeyHeader, client.config.instrumentationKeyHash); + } + // Collect dependency telemetry about the request when it finishes. + if (request.on) { + request.on('response', function (response) { + requestParser.onResponse(response, properties); + var context = { "http.RequestOptions": requestOptions, "http.ClientRequest": request, "http.ClientResponse": response }; + client.track(requestParser.getDependencyData(), null, context); + }); + request.on('error', function (e) { + requestParser.onError(e, properties); + var context = { "http.RequestOptions": requestOptions, "http.ClientRequest": request, "Error": e }; + client.track(requestParser.getDependencyData(), null, context); + }); + } + }; + AutoCollectClientRequests.prototype.dispose = function () { + AutoCollectClientRequests.INSTANCE = null; + this._isInitialized = false; + }; + AutoCollectClientRequests.disableCollectionRequestOption = 'disableAppInsightsAutoCollection'; + return AutoCollectClientRequests; +}()); +module.exports = AutoCollectClientRequests; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/Console.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/Console.js new file mode 100644 index 00000000..1e3205fe --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/Console.js @@ -0,0 +1,22 @@ +"use strict"; +var AutoCollectConsole = (function () { + function AutoCollectConsole(client) { + if (!!AutoCollectConsole.INSTANCE) { + throw new Error("Console logging adapter tracking should be configured from the applicationInsights object"); + } + this._client = client; + AutoCollectConsole.INSTANCE = this; + } + AutoCollectConsole.prototype.enable = function (isEnabled) { + // todo: investigate feasibility/utility of this; does it make sense to have a logging adapter in node? + }; + AutoCollectConsole.prototype.isInitialized = function () { + return this._isInitialized; + }; + AutoCollectConsole.prototype.dispose = function () { + AutoCollectConsole.INSTANCE = null; + }; + AutoCollectConsole._methodNames = ["debug", "info", "log", "warn", "error"]; + return AutoCollectConsole; +}()); +module.exports = AutoCollectConsole; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/CorrelationContextManager.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/CorrelationContextManager.js new file mode 100644 index 00000000..a79bed69 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/CorrelationContextManager.js @@ -0,0 +1,191 @@ +"use strict"; +var Util = require("../Library/Util"); +var CorrelationContextManager = (function () { + function CorrelationContextManager() { + } + /** + * Provides the current Context. + * The context is the most recent one entered into for the current + * logical chain of execution, including across asynchronous calls. + */ + CorrelationContextManager.getCurrentContext = function () { + if (!CorrelationContextManager.enabled) { + return null; + } + return Zone.current.get("context"); + }; + /** + * A helper to generate objects conforming to the CorrelationContext interface + */ + CorrelationContextManager.generateContextObject = function (parentId, operationName, operationId) { + operationId = operationId || Util.newGuid(); + parentId = parentId || operationId; + if (this.enabled) { + return { + operation: { + name: operationName, + id: operationId, + parentId: parentId + }, + customProperties: {} + }; + } + return null; + }; + /** + * Runs a function inside a given Context. + * All logical children of the execution path that entered this Context + * will receive this Context object on calls to GetCurrentContext. + */ + CorrelationContextManager.runWithContext = function (context, fn) { + if (CorrelationContextManager.enabled) { + var newZone = Zone.current.fork({ + name: "AI-" + ((context && context.operation.parentId) || "Unknown"), + properties: { context: context } + }); + newZone.run(fn); + } + else { + fn(); + } + }; + /** + * Patches a callback to restore the correct Context when getCurrentContext + * is run within it. This is necessary if automatic correlation fails to work + * with user-included libraries. + * + * The supplied callback will be given the same context that was present for + * the call to wrapCallback. */ + CorrelationContextManager.wrapCallback = function (fn) { + if (CorrelationContextManager.enabled) { + return Zone.current.wrap(fn, "User-wrapped method"); + } + return fn; + }; + /** + * Enables the CorrelationContextManager. + */ + CorrelationContextManager.enable = function () { + if (!this.isNodeVersionCompatible()) { + this.enabled = false; + return; + } + // Load in Zone.js + require("zone.js"); + // Run patches for Zone.js + if (!this.hasEverEnabled) { + this.hasEverEnabled = true; + this.patchError(); + this.patchTimers(["setTimeout", "setInterval"]); + this.patchRedis(); + } + this.enabled = true; + }; + /** + * Disables the CorrelationContextManager. + */ + CorrelationContextManager.disable = function () { + this.enabled = false; + }; + /** + * Reports if the CorrelationContextManager is able to run in this environment + */ + CorrelationContextManager.isNodeVersionCompatible = function () { + // Unit tests warn of errors < 3.3 from timer patching. All versions before 4 were 0.x + var nodeVer = process.versions.node.split("."); + return parseInt(nodeVer[0]) > 3 || (parseInt(nodeVer[0]) > 2 && parseInt(nodeVer[1]) > 2); + }; + // Patch methods that manually go async that Zone doesn't catch + CorrelationContextManager.requireForPatch = function (module) { + var req = null; + try { + req = require(module); + } + catch (e) { + return null; + } + return req; + }; + // A good example of patching a third party library to respect context. + // send_command is always used in this library to send data out. + // By overwriting the function to capture the callback provided to it, + // and wrapping that callback, we ensure that consumers of this library + // will have context persisted. + CorrelationContextManager.patchRedis = function () { + var redis = this.requireForPatch("redis"); + if (redis && redis.RedisClient) { + var orig = redis.RedisClient.prototype.send_command; + redis.RedisClient.prototype.send_command = function () { + var args = Array.prototype.slice.call(arguments); + var lastArg = args[args.length - 1]; + if (typeof lastArg === "function") { + args[args.length - 1] = Zone.current.wrap(lastArg, "AI.CCM.patchRedis"); + } + else if (lastArg instanceof Array && typeof lastArg[lastArg.length - 1] === "function") { + // The last argument can be an array! + var lastIndexLastArg = lastArg[lastArg.length - 1]; + lastArg[lastArg.length - 1] = Zone.current.wrap(lastIndexLastArg, "AI.CCM.patchRedis"); + } + return orig.apply(this, args); + }; + } + }; + // Zone.js breaks concatenation of timer return values. + // This fixes that. + CorrelationContextManager.patchTimers = function (methodNames) { + methodNames.forEach(function (methodName) { + var orig = global[methodName]; + global[methodName] = function () { + var ret = orig.apply(this, arguments); + ret.toString = function () { + if (this.data && typeof this.data.handleId !== 'undefined') { + return this.data.handleId.toString(); + } + else { + return Object.prototype.toString.call(this); + } + }; + return ret; + }; + }); + }; + // Zone.js breaks deepEqual on error objects (by making internal properties enumerable). + // This fixes that by subclassing the error object and making all properties not enumerable + CorrelationContextManager.patchError = function () { + var orig = global.Error; + // New error handler + function AppInsightsAsyncCorrelatedErrorWrapper() { + if (!(this instanceof AppInsightsAsyncCorrelatedErrorWrapper)) { + return AppInsightsAsyncCorrelatedErrorWrapper.apply(Object.create(AppInsightsAsyncCorrelatedErrorWrapper.prototype), arguments); + } + orig.apply(this, arguments); + // getOwnPropertyNames should be a superset of Object.keys... + // This appears to not always be the case + var props = Object.getOwnPropertyNames(this).concat(Object.keys(this)); + // Zone.js will automatically create some hidden properties at read time. + // We need to proactively make those not enumerable as well as the currently visible properties + for (var i = 0; i < props.length; i++) { + var propertyName = props[i]; + var hiddenPropertyName = Zone['__symbol__'](propertyName); + Object.defineProperty(this, propertyName, { enumerable: false }); + Object.defineProperty(this, hiddenPropertyName, { enumerable: false, writable: true }); + } + return this; + } + // Inherit from the Zone.js error handler + AppInsightsAsyncCorrelatedErrorWrapper.prototype = orig.prototype; + // We need this loop to copy outer methods like Error.captureStackTrace + var props = Object.getOwnPropertyNames(orig); + for (var i = 0; i < props.length; i++) { + var propertyName = props[i]; + if (!AppInsightsAsyncCorrelatedErrorWrapper[propertyName]) { + Object.defineProperty(AppInsightsAsyncCorrelatedErrorWrapper, propertyName, Object.getOwnPropertyDescriptor(orig, propertyName)); + } + } + global.Error = AppInsightsAsyncCorrelatedErrorWrapper; + }; + CorrelationContextManager.enabled = false; + CorrelationContextManager.hasEverEnabled = false; + return CorrelationContextManager; +}()); +exports.CorrelationContextManager = CorrelationContextManager; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/Exceptions.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/Exceptions.js new file mode 100644 index 00000000..49eb5478 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/Exceptions.js @@ -0,0 +1,150 @@ +/// +"use strict"; +var ContractsModule = require("../Library/Contracts"); +var Util = require("../Library/Util"); +var AutoCollectExceptions = (function () { + function AutoCollectExceptions(client) { + if (!!AutoCollectExceptions.INSTANCE) { + throw new Error("Exception tracking should be configured from the applicationInsights object"); + } + AutoCollectExceptions.INSTANCE = this; + this._client = client; + } + AutoCollectExceptions.prototype.isInitialized = function () { + return this._isInitialized; + }; + AutoCollectExceptions.prototype.enable = function (isEnabled) { + var _this = this; + if (isEnabled) { + this._isInitialized = true; + var self = this; + if (!this._exceptionListenerHandle) { + var handle = function (reThrow, error) { + var data = AutoCollectExceptions.getExceptionData(error, false); + var envelope = _this._client.getEnvelope(data); + _this._client.channel.handleCrash(envelope); + if (reThrow) { + throw error; + } + }; + this._exceptionListenerHandle = handle.bind(this, true); + this._rejectionListenerHandle = handle.bind(this, false); + process.on("uncaughtException", this._exceptionListenerHandle); + process.on("unhandledRejection", this._rejectionListenerHandle); + } + } + else { + if (this._exceptionListenerHandle) { + process.removeListener("uncaughtException", this._exceptionListenerHandle); + process.removeListener("unhandledRejection", this._rejectionListenerHandle); + this._exceptionListenerHandle = undefined; + this._rejectionListenerHandle = undefined; + delete this._exceptionListenerHandle; + delete this._rejectionListenerHandle; + } + } + }; + /** + * Track an exception + * @param error the exception to track + * @param handledAt where this exception was handled (leave null for unhandled) + * @param properties additional properties + * @param measurements metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty. + */ + AutoCollectExceptions.getExceptionData = function (error, isHandled, properties, measurements) { + var exception = new ContractsModule.Contracts.ExceptionData(); + exception.properties = properties; + exception.severityLevel = ContractsModule.Contracts.SeverityLevel.Error; + exception.measurements = measurements; + exception.exceptions = []; + var stack = error["stack"]; + var exceptionDetails = new ContractsModule.Contracts.ExceptionDetails(); + exceptionDetails.message = error.message; + exceptionDetails.typeName = error.name; + exceptionDetails.parsedStack = this.parseStack(stack); + exceptionDetails.hasFullStack = Util.isArray(exceptionDetails.parsedStack) && exceptionDetails.parsedStack.length > 0; + exception.exceptions.push(exceptionDetails); + var data = new ContractsModule.Contracts.Data(); + data.baseType = "Microsoft.ApplicationInsights.ExceptionData"; + data.baseData = exception; + return data; + }; + AutoCollectExceptions.parseStack = function (stack) { + var parsedStack = undefined; + if (typeof stack === "string") { + var frames = stack.split("\n"); + parsedStack = []; + var level = 0; + var totalSizeInBytes = 0; + for (var i = 0; i <= frames.length; i++) { + var frame = frames[i]; + if (_StackFrame.regex.test(frame)) { + var parsedFrame = new _StackFrame(frames[i], level++); + totalSizeInBytes += parsedFrame.sizeInBytes; + parsedStack.push(parsedFrame); + } + } + // DP Constraint - exception parsed stack must be < 32KB + // remove frames from the middle to meet the threshold + var exceptionParsedStackThreshold = 32 * 1024; + if (totalSizeInBytes > exceptionParsedStackThreshold) { + var left = 0; + var right = parsedStack.length - 1; + var size = 0; + var acceptedLeft = left; + var acceptedRight = right; + while (left < right) { + // check size + var lSize = parsedStack[left].sizeInBytes; + var rSize = parsedStack[right].sizeInBytes; + size += lSize + rSize; + if (size > exceptionParsedStackThreshold) { + // remove extra frames from the middle + var howMany = acceptedRight - acceptedLeft + 1; + parsedStack.splice(acceptedLeft, howMany); + break; + } + // update pointers + acceptedLeft = left; + acceptedRight = right; + left++; + right--; + } + } + } + return parsedStack; + }; + AutoCollectExceptions.prototype.dispose = function () { + AutoCollectExceptions.INSTANCE = null; + this._isInitialized = false; + }; + AutoCollectExceptions.INSTANCE = null; + return AutoCollectExceptions; +}()); +var _StackFrame = (function () { + function _StackFrame(frame, level) { + this.sizeInBytes = 0; + this.level = level; + this.method = ""; + this.assembly = Util.trim(frame); + var matches = frame.match(_StackFrame.regex); + if (matches && matches.length >= 5) { + this.method = Util.trim(matches[2]) || this.method; + this.fileName = Util.trim(matches[4]) || ""; + this.line = parseInt(matches[5]) || 0; + } + this.sizeInBytes += this.method.length; + this.sizeInBytes += this.fileName.length; + this.sizeInBytes += this.assembly.length; + // todo: these might need to be removed depending on how the back-end settles on their size calculation + this.sizeInBytes += _StackFrame.baseSize; + this.sizeInBytes += this.level.toString().length; + this.sizeInBytes += this.line.toString().length; + } + // regex to match stack frames from ie/chrome/ff + // methodName=$2, fileName=$4, lineNo=$5, column=$6 + _StackFrame.regex = /^([\s]+at)?(.*?)(\@|\s\(|\s)([^\(\@\n]+):([0-9]+):([0-9]+)(\)?)$/; + _StackFrame.baseSize = 58; //'{"method":"","level":,"assembly":"","fileName":"","line":}'.length + return _StackFrame; +}()); +module.exports = AutoCollectExceptions; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/Performance.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/Performance.js new file mode 100644 index 00000000..02d1e356 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/Performance.js @@ -0,0 +1,231 @@ +/// +"use strict"; +var http = require("http"); +var os = require("os"); +var ContractsModule = require("../Library/Contracts"); +var Logging = require("../Library/Logging"); +var PerfCounterType; +(function (PerfCounterType) { + PerfCounterType[PerfCounterType["ProcessorTime"] = 0] = "ProcessorTime"; + PerfCounterType[PerfCounterType["AvailableMemory"] = 1] = "AvailableMemory"; + PerfCounterType[PerfCounterType["RequestsPerSec"] = 2] = "RequestsPerSec"; + PerfCounterType[PerfCounterType["PrivateBytes"] = 3] = "PrivateBytes"; + PerfCounterType[PerfCounterType["RequestExecutionTime"] = 4] = "RequestExecutionTime"; + PerfCounterType[PerfCounterType["PercentProcessorTime"] = 5] = "PercentProcessorTime"; +})(PerfCounterType || (PerfCounterType = {})); +var AutoCollectPerformance = (function () { + function AutoCollectPerformance(client) { + if (!!AutoCollectPerformance.INSTANCE) { + throw new Error("Performance tracking should be configured from the applicationInsights object"); + } + AutoCollectPerformance.INSTANCE = this; + this._isInitialized = false; + this._client = client; + } + AutoCollectPerformance.prototype.enable = function (isEnabled) { + var _this = this; + this._isEnabled = isEnabled; + if (this._isEnabled && !this._isInitialized) { + this._initialize(); + } + if (isEnabled) { + if (!this._handle) { + this._lastCpus = os.cpus(); + this._lastRequests = { + totalRequestCount: AutoCollectPerformance._totalRequestCount, + totalFailedRequestCount: AutoCollectPerformance._totalFailedRequestCount, + time: +new Date + }; + this._handle = setInterval(function () { return _this.trackPerformance(); }, 10000); + } + } + else { + if (this._handle) { + clearInterval(this._handle); + this._handle = undefined; + } + } + }; + AutoCollectPerformance.prototype.isInitialized = function () { + return this._isInitialized; + }; + AutoCollectPerformance.prototype._initialize = function () { + var _this = this; + this._isInitialized = true; + var originalServer = http.createServer; + http.createServer = function (onRequest) { + return originalServer(function (request, response) { + if (_this._isEnabled) { + AutoCollectPerformance.countRequest(request, response); + } + if (typeof onRequest === "function") { + onRequest(request, response); + } + }); + }; + }; + AutoCollectPerformance.countRequest = function (request, response) { + var _this = this; + var start = +new Date; + if (!request || !response) { + Logging.warn("AutoCollectPerformance.countRequest was called with invalid parameters: ", !!request, !!response); + return; + } + // response listeners + if (typeof response.once === "function") { + response.once("finish", function () { + var end = +new Date; + _this._lastRequestExecutionTime = end - start; + AutoCollectPerformance._totalRequestCount++; + if (response.statusCode >= 400) { + AutoCollectPerformance._totalFailedRequestCount++; + } + }); + } + }; + AutoCollectPerformance.prototype.trackPerformance = function () { + this._trackCpu(); + this._trackMemory(); + this._trackNetwork(); + }; + // this is necessary to accommodate some point-in-time UI quirks + AutoCollectPerformance.prototype._trackLegacyPerformance = function (counterType, value) { + var perfmetric = new ContractsModule.Contracts.PerformanceCounterData(); + // semantic descriptions of these can be found here: https://support.microsoft.com/en-us/kb/815159/ + switch (counterType) { + case PerfCounterType.ProcessorTime: + perfmetric.categoryName = "Process"; + perfmetric.counterName = "% Processor Time"; + break; + case PerfCounterType.AvailableMemory: + perfmetric.categoryName = "Memory"; + perfmetric.counterName = "Available Bytes"; + break; + case PerfCounterType.RequestsPerSec: + perfmetric.categoryName = "ASP.NET Applications"; + perfmetric.counterName = "Requests/Sec"; + break; + case PerfCounterType.PrivateBytes: + perfmetric.categoryName = "Process"; + perfmetric.counterName = "Private Bytes"; + break; + case PerfCounterType.RequestExecutionTime: + perfmetric.categoryName = "ASP.NET Applications"; + perfmetric.counterName = "Request Execution Time"; + break; + case PerfCounterType.PercentProcessorTime: + perfmetric.categoryName = "Processor"; + perfmetric.counterName = "% Processor Time"; + break; + } + perfmetric.count = 1; + perfmetric.kind = ContractsModule.Contracts.DataPointType.Aggregation; + perfmetric.max = value; + perfmetric.min = value; + perfmetric.stdDev = 0; + perfmetric.value = value; + var data = new ContractsModule.Contracts.Data(); + data.baseType = "Microsoft.ApplicationInsights.PerformanceCounterData"; + data.baseData = perfmetric; + this._client.track(data); + }; + AutoCollectPerformance.prototype._trackCpu = function () { + // this reports total ms spent in each category since the OS was booted, to calculate percent it is necessary + // to find the delta since the last measurement + var cpus = os.cpus(); + if (cpus && cpus.length && this._lastCpus && cpus.length === this._lastCpus.length) { + var totalUser = 0; + var totalSys = 0; + var totalNice = 0; + var totalIdle = 0; + var totalIrq = 0; + for (var i = 0; !!cpus && i < cpus.length; i++) { + var cpu = cpus[i]; + var lastCpu = this._lastCpus[i]; + var name = "% cpu(" + i + ") "; + var model = cpu.model; + var speed = cpu.speed; + var times = cpu.times; + var lastTimes = lastCpu.times; + // user cpu time (or) % CPU time spent in user space + var user = (times.user - lastTimes.user) || 0; + totalUser += user; + // system cpu time (or) % CPU time spent in kernel space + var sys = (times.sys - lastTimes.sys) || 0; + totalSys += sys; + // user nice cpu time (or) % CPU time spent on low priority processes + var nice = (times.nice - lastTimes.nice) || 0; + totalNice += nice; + // idle cpu time (or) % CPU time spent idle + var idle = (times.idle - lastTimes.idle) || 0; + totalIdle += idle; + // irq (or) % CPU time spent servicing/handling hardware interrupts + var irq = (times.irq - lastTimes.irq) || 0; + totalIrq += irq; + var total = (user + sys + nice + idle + irq) || 1; // don"t let this be 0 since it is a divisor + this._client.trackMetric(name + "user", user / total); + } + var combinedName = "% total cpu "; + var combinedTotal = (totalUser + totalSys + totalNice + totalIdle + totalIrq) || 1; + this._client.trackMetric(combinedName + "user", totalUser / combinedTotal); + this._client.trackMetric(combinedName + "sys", totalSys / combinedTotal); + this._client.trackMetric(combinedName + "nice", totalNice / combinedTotal); + this._client.trackMetric(combinedName + "idle", totalIdle / combinedTotal); + this._client.trackMetric(combinedName + "irq", totalIrq / combinedTotal); + // todo: remove this legacy counter once the UI updates (~june 2015) + this._trackLegacyPerformance(PerfCounterType.ProcessorTime, totalUser / combinedTotal); + this._trackLegacyPerformance(PerfCounterType.PercentProcessorTime, (combinedTotal - totalIdle) / combinedTotal); + } + this._lastCpus = cpus; + }; + AutoCollectPerformance.prototype._trackMemory = function () { + var totalMem = os.totalmem(); + var freeMem = os.freemem(); + var usedMem = totalMem - freeMem; + var percentUsedMem = usedMem / (totalMem || 1); + var percentAvailableMem = freeMem / (totalMem || 1); + this._client.trackMetric("Memory Used", usedMem); + this._client.trackMetric("Memory Free", freeMem); + this._client.trackMetric("Memory Total", totalMem); + this._client.trackMetric("% Memory Used", percentUsedMem); + this._client.trackMetric("% Memory Free", percentAvailableMem); + // todo: remove this legacy counter once the UI updates (~june 2015) + this._trackLegacyPerformance(PerfCounterType.AvailableMemory, freeMem); + this._trackLegacyPerformance(PerfCounterType.PrivateBytes, usedMem); + }; + AutoCollectPerformance.prototype._trackNetwork = function () { + // track total request counters + var lastRequests = this._lastRequests; + var requests = { + totalRequestCount: AutoCollectPerformance._totalRequestCount, + totalFailedRequestCount: AutoCollectPerformance._totalFailedRequestCount, + time: +new Date + }; + var intervalRequests = (requests.totalRequestCount - lastRequests.totalRequestCount) || 0; + var intervalFailedRequests = (requests.totalFailedRequestCount - lastRequests.totalFailedRequestCount) || 0; + var elapsedMs = requests.time - lastRequests.time; + var elapsedSeconds = elapsedMs / 1000; + if (elapsedMs > 0) { + var requestsPerSec = intervalRequests / elapsedSeconds; + var failedRequestsPerSec = intervalFailedRequests / elapsedSeconds; + this._client.trackMetric("Total Requests", requests.totalRequestCount); + this._client.trackMetric("Total Failed Requests", requests.totalFailedRequestCount); + this._client.trackMetric("Requests per Second", requestsPerSec); + this._client.trackMetric("Failed Requests per Second", failedRequestsPerSec); + this._client.trackMetric("Last Request Execution Time", AutoCollectPerformance._lastRequestExecutionTime); + // todo: remove this legacy counter once the UI updates (~june 2015) + this._trackLegacyPerformance(PerfCounterType.RequestsPerSec, requestsPerSec); + this._trackLegacyPerformance(PerfCounterType.RequestExecutionTime, AutoCollectPerformance._lastRequestExecutionTime); + } + this._lastRequests = requests; + }; + AutoCollectPerformance.prototype.dispose = function () { + AutoCollectPerformance.INSTANCE = null; + this._isInitialized = false; + }; + AutoCollectPerformance._totalRequestCount = 0; + AutoCollectPerformance._totalFailedRequestCount = 0; + AutoCollectPerformance._lastRequestExecutionTime = 0; + return AutoCollectPerformance; +}()); +module.exports = AutoCollectPerformance; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/RequestParser.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/RequestParser.js new file mode 100644 index 00000000..60d2a32d --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/RequestParser.js @@ -0,0 +1,45 @@ +"use strict"; +/** + * Base class for helpers that read data from HTTP requst/response objects and convert them + * into the telemetry contract objects. + */ +var RequestParser = (function () { + function RequestParser() { + } + /** + * Gets a url parsed out from request options + */ + RequestParser.prototype.getUrl = function () { + return this.url; + }; + RequestParser.prototype.RequestParser = function () { + this.startTime = +new Date(); + }; + RequestParser.prototype._setStatus = function (status, error, properties) { + var endTime = +new Date(); + this.duration = endTime - this.startTime; + this.statusCode = status; + if (error) { + if (!properties) { + properties = {}; + } + if (typeof error === "string") { + properties["error"] = error; + } + else if (error instanceof Error) { + properties["error"] = error.message; + } + else if (typeof error === "object") { + for (var key in error) { + properties[key] = error[key] && error[key].toString && error[key].toString(); + } + } + } + this.properties = properties; + }; + RequestParser.prototype._isSuccess = function () { + return (0 < this.statusCode) && (this.statusCode < 400); + }; + return RequestParser; +}()); +module.exports = RequestParser; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/ServerRequestParser.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/ServerRequestParser.js new file mode 100644 index 00000000..a8cb4160 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/ServerRequestParser.js @@ -0,0 +1,145 @@ +/// +"use strict"; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var url = require("url"); +var ContractsModule = require("../Library/Contracts"); +var Util = require("../Library/Util"); +var RequestResponseHeaders = require("../Library/RequestResponseHeaders"); +var RequestParser = require("./RequestParser"); +/** + * Helper class to read data from the requst/response objects and convert them into the telemetry contract + */ +var ServerRequestParser = (function (_super) { + __extends(ServerRequestParser, _super); + function ServerRequestParser(request, requestId) { + _super.call(this); + if (request) { + this.requestId = requestId || Util.newGuid(); + this.method = request.method; + this.url = this._getAbsoluteUrl(request); + this.startTime = +new Date(); + this.rawHeaders = request.headers || request.rawHeaders; + this.socketRemoteAddress = request.socket && request.socket.remoteAddress; + this.userAgent = request.headers && request.headers["user-agent"]; + this.sourceIKeyHash = + request.headers && request.headers[RequestResponseHeaders.sourceInstrumentationKeyHeader]; + this.parentId = + request.headers && request.headers[RequestResponseHeaders.parentIdHeader]; + this.operationId = + request.headers && request.headers[RequestResponseHeaders.rootIdHeader]; + if (request.connection) { + this.connectionRemoteAddress = request.connection.remoteAddress; + this.legacySocketRemoteAddress = request.connection["socket"] && request.connection["socket"].remoteAddress; + } + } + } + ServerRequestParser.prototype.onError = function (error, properties, ellapsedMilliseconds) { + this._setStatus(undefined, error, properties); + }; + ServerRequestParser.prototype.onResponse = function (response, properties, ellapsedMilliseconds) { + this._setStatus(response.statusCode, undefined, properties); + if (ellapsedMilliseconds) { + this.duration = ellapsedMilliseconds; + } + }; + ServerRequestParser.prototype.getRequestData = function () { + var requestData = new ContractsModule.Contracts.RequestData(); + requestData.id = this.requestId; + requestData.name = this.method + " " + url.parse(this.url).pathname; + requestData.url = this.url; + requestData.source = this.sourceIKeyHash; + requestData.duration = Util.msToTimeSpan(this.duration); + requestData.responseCode = this.statusCode ? this.statusCode.toString() : null; + requestData.success = this._isSuccess(); + requestData.properties = this.properties; + var data = new ContractsModule.Contracts.Data(); + data.baseType = "Microsoft.ApplicationInsights.RequestData"; + data.baseData = requestData; + return data; + }; + ServerRequestParser.prototype.getRequestTags = function (tags) { + // create a copy of the context for requests since client info will be used here + var newTags = {}; + for (var key in tags) { + newTags[key] = tags[key]; + } + // don't override tags if they are already set + newTags[ServerRequestParser.keys.locationIp] = tags[ServerRequestParser.keys.locationIp] || this._getIp(); + newTags[ServerRequestParser.keys.sessionId] = tags[ServerRequestParser.keys.sessionId] || this._getId("ai_session"); + newTags[ServerRequestParser.keys.userId] = tags[ServerRequestParser.keys.userId] || this._getId("ai_user"); + newTags[ServerRequestParser.keys.userAgent] = tags[ServerRequestParser.keys.userAgent] || this.userAgent; + newTags[ServerRequestParser.keys.operationName] = this.getOperationName(tags); + newTags[ServerRequestParser.keys.operationParentId] = this.getOperationParentId(tags); + newTags[ServerRequestParser.keys.operationId] = this.getOperationId(tags); + return newTags; + }; + ServerRequestParser.prototype.getOperationId = function (tags) { + return tags[ServerRequestParser.keys.operationId] || this.operationId; + }; + ServerRequestParser.prototype.getOperationParentId = function (tags) { + return tags[ServerRequestParser.keys.operationParentId] || this.parentId || this.getOperationId(tags); + }; + ServerRequestParser.prototype.getOperationName = function (tags) { + return tags[ServerRequestParser.keys.operationName] || this.method + " " + url.parse(this.url).pathname; + }; + ServerRequestParser.prototype.getRequestId = function () { + return this.requestId; + }; + ServerRequestParser.prototype._getAbsoluteUrl = function (request) { + if (!request.headers) { + return request.url; + } + var encrypted = request.connection ? request.connection.encrypted : null; + var requestUrl = url.parse(request.url); + var pathName = requestUrl.pathname; + var search = requestUrl.search; + var absoluteUrl = url.format({ + protocol: encrypted ? "https" : "http", + host: request.headers.host, + pathname: pathName, + search: search + }); + return absoluteUrl; + }; + ServerRequestParser.prototype._getIp = function () { + // regex to match ipv4 without port + // Note: including the port would cause the payload to be rejected by the data collector + var ipMatch = /[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/; + var check = function (str) { + var results = ipMatch.exec(str); + if (results) { + return results[0]; + } + }; + var ip = check(this.rawHeaders["x-forwarded-for"]) + || check(this.rawHeaders["x-client-ip"]) + || check(this.rawHeaders["x-real-ip"]) + || check(this.connectionRemoteAddress) + || check(this.socketRemoteAddress) + || check(this.legacySocketRemoteAddress); + // node v12 returns this if the address is "localhost" + if (!ip + && this.connectionRemoteAddress + && this.connectionRemoteAddress.substr + && this.connectionRemoteAddress.substr(0, 2) === "::") { + ip = "127.0.0.1"; + } + return ip; + }; + ServerRequestParser.prototype._getId = function (name) { + var cookie = (this.rawHeaders && this.rawHeaders["cookie"] && + typeof this.rawHeaders["cookie"] === 'string' && this.rawHeaders["cookie"]) || ""; + var value = ServerRequestParser.parseId(Util.getCookie(name, cookie)); + return value; + }; + ServerRequestParser.parseId = function (cookieValue) { + return cookieValue.substr(0, cookieValue.indexOf('|')); + }; + ServerRequestParser.keys = new ContractsModule.Contracts.ContextTagKeys(); + return ServerRequestParser; +}(RequestParser)); +module.exports = ServerRequestParser; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/ServerRequests.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/ServerRequests.js new file mode 100644 index 00000000..ad04eaa5 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/AutoCollection/ServerRequests.js @@ -0,0 +1,169 @@ +/// +"use strict"; +var http = require("http"); +var https = require("https"); +var Logging = require("../Library/Logging"); +var Util = require("../Library/Util"); +var RequestResponseHeaders = require("../Library/RequestResponseHeaders"); +var ServerRequestParser = require("./ServerRequestParser"); +var CorrelationContextManager_1 = require("./CorrelationContextManager"); +var AutoCollectServerRequests = (function () { + function AutoCollectServerRequests(client) { + if (!!AutoCollectServerRequests.INSTANCE) { + throw new Error("Server request tracking should be configured from the applicationInsights object"); + } + AutoCollectServerRequests.INSTANCE = this; + this._client = client; + } + AutoCollectServerRequests.prototype.enable = function (isEnabled) { + this._isEnabled = isEnabled; + // Autocorrelation requires automatic monitoring of incoming server requests + // Disabling autocollection but enabling autocorrelation will still enable + // request monitoring but will not produce request events + if ((this._isAutoCorrelating || this._isEnabled) && !this._isInitialized) { + this.useAutoCorrelation(this._isAutoCorrelating); + this._initialize(); + } + }; + AutoCollectServerRequests.prototype.useAutoCorrelation = function (isEnabled) { + if (isEnabled && !this._isAutoCorrelating) { + CorrelationContextManager_1.CorrelationContextManager.enable(); + } + else if (!isEnabled && this._isAutoCorrelating) { + CorrelationContextManager_1.CorrelationContextManager.disable(); + } + this._isAutoCorrelating = isEnabled; + }; + AutoCollectServerRequests.prototype.isInitialized = function () { + return this._isInitialized; + }; + AutoCollectServerRequests.prototype.isAutoCorrelating = function () { + return this._isAutoCorrelating; + }; + AutoCollectServerRequests.prototype._generateCorrelationContext = function (requestParser) { + if (!this._isAutoCorrelating) { + return; + } + return CorrelationContextManager_1.CorrelationContextManager.generateContextObject(requestParser.getRequestId(), requestParser.getOperationName(this._client.context.tags), requestParser.getOperationId(this._client.context.tags)); + }; + AutoCollectServerRequests.prototype._initialize = function () { + var _this = this; + this._isInitialized = true; + var originalHttpServer = http.createServer; + http.createServer = function (onRequest) { + // todo: get a pointer to the server so the IP address can be read from server.address + return originalHttpServer(function (request, response) { + // Set up correlation context + var requestParser = new ServerRequestParser(request); + var correlationContext = _this._generateCorrelationContext(requestParser); + CorrelationContextManager_1.CorrelationContextManager.runWithContext(correlationContext, function () { + if (_this._isEnabled) { + // Auto collect request + AutoCollectServerRequests.trackRequest(_this._client, request, response, null, requestParser); + } + if (typeof onRequest === "function") { + onRequest(request, response); + } + }); + }); + }; + var originalHttpsServer = https.createServer; + https.createServer = function (options, onRequest) { + return originalHttpsServer(options, function (request, response) { + // Set up correlation context + var requestParser = new ServerRequestParser(request); + var correlationContext = _this._generateCorrelationContext(requestParser); + CorrelationContextManager_1.CorrelationContextManager.runWithContext(correlationContext, function () { + if (_this._isEnabled) { + AutoCollectServerRequests.trackRequest(_this._client, request, response, null, requestParser); + } + if (typeof onRequest === "function") { + onRequest(request, response); + } + }); + }); + }; + }; + /** + * Tracks a request synchronously (doesn't wait for response 'finish' event) + */ + AutoCollectServerRequests.trackRequestSync = function (client, request, response, ellapsedMilliseconds, properties, error) { + if (!request || !response || !client) { + Logging.info("AutoCollectServerRequests.trackRequestSync was called with invalid parameters: ", !request, !response, !client); + return; + } + AutoCollectServerRequests.addResponseIKeyHeader(client, response); + // store data about the request + var correlationContext = CorrelationContextManager_1.CorrelationContextManager.getCurrentContext(); + var requestParser = new ServerRequestParser(request, (correlationContext && correlationContext.operation.parentId) || Util.newGuid()); + // Overwrite correlation context with request parser results + if (correlationContext) { + correlationContext.operation.id = requestParser.getOperationId(client.context.tags) || correlationContext.operation.id; + correlationContext.operation.name = requestParser.getOperationName(client.context.tags) || correlationContext.operation.name; + correlationContext.operation.parentId = requestParser.getRequestId() || correlationContext.operation.parentId; + } + AutoCollectServerRequests.endRequest(client, requestParser, request, response, ellapsedMilliseconds, properties, error); + }; + /** + * Tracks a request by listening to the response 'finish' event + */ + AutoCollectServerRequests.trackRequest = function (client, request, response, properties, _requestParser) { + if (!request || !response || !client) { + Logging.info("AutoCollectServerRequests.trackRequest was called with invalid parameters: ", !request, !response, !client); + return; + } + // store data about the request + var correlationContext = CorrelationContextManager_1.CorrelationContextManager.getCurrentContext(); + var requestParser = _requestParser || new ServerRequestParser(request, correlationContext && correlationContext.operation.parentId || Util.newGuid()); + if (Util.canIncludeCorrelationHeader(client, requestParser.getUrl())) { + AutoCollectServerRequests.addResponseIKeyHeader(client, response); + } + // Overwrite correlation context with request parser results (if not an automatic track. we've already precalculated the correlation context in that case) + if (correlationContext && !_requestParser) { + correlationContext.operation.id = requestParser.getOperationId(client.context.tags) || correlationContext.operation.id; + correlationContext.operation.name = requestParser.getOperationName(client.context.tags) || correlationContext.operation.name; + correlationContext.operation.parentId = requestParser.getOperationParentId(client.context.tags) || correlationContext.operation.parentId; + } + // response listeners + if (response.once) { + response.once("finish", function () { + AutoCollectServerRequests.endRequest(client, requestParser, request, response, null, properties, null); + }); + } + // track a failed request if an error is emitted + if (request.on) { + request.on("error", function (error) { + AutoCollectServerRequests.endRequest(client, requestParser, request, response, null, properties, error); + }); + } + }; + /** + * Add the target ikey hash to the response headers, if not already provided. + */ + AutoCollectServerRequests.addResponseIKeyHeader = function (client, response) { + if (client.config && client.config.instrumentationKeyHash && + response.getHeader && response.setHeader && + !response.getHeader(RequestResponseHeaders.targetInstrumentationKeyHeader) && + !response.headersSent) { + response.setHeader(RequestResponseHeaders.targetInstrumentationKeyHeader, client.config.instrumentationKeyHash); + } + }; + AutoCollectServerRequests.endRequest = function (client, requestParser, request, response, ellapsedMilliseconds, properties, error) { + if (error) { + requestParser.onError(error, properties, ellapsedMilliseconds); + } + else { + requestParser.onResponse(response, properties, ellapsedMilliseconds); + } + var context = { "http.ServerRequest": request, "http.ServerResponse": response }; + var data = requestParser.getRequestData(); + var tags = requestParser.getRequestTags(client.context.tags); + client.track(data, tags, context); + }; + AutoCollectServerRequests.prototype.dispose = function () { + AutoCollectServerRequests.INSTANCE = null; + this._isInitialized = false; + }; + return AutoCollectServerRequests; +}()); +module.exports = AutoCollectServerRequests; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Channel.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Channel.js new file mode 100644 index 00000000..254f4c60 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Channel.js @@ -0,0 +1,107 @@ +"use strict"; +var Logging = require("./Logging"); +var Channel = (function () { + function Channel(isDisabled, getBatchSize, getBatchIntervalMs, sender) { + this._buffer = []; + this._lastSend = 0; + this._isDisabled = isDisabled; + this._getBatchSize = getBatchSize; + this._getBatchIntervalMs = getBatchIntervalMs; + this._sender = sender; + } + /** + * Enable or disable offline mode + */ + Channel.prototype.setOfflineMode = function (value, resendInterval) { + this._sender.setOfflineMode(value, resendInterval); + }; + /** + * Add a telemetry item to the send buffer + */ + Channel.prototype.send = function (envelope) { + var _this = this; + // if master off switch is set, don't send any data + if (this._isDisabled()) { + // Do not send/save data + return; + } + // validate input + if (!envelope) { + Logging.warn("Cannot send null/undefined telemetry"); + return; + } + // check if the incoming payload is too large, truncate if necessary + var payload = this._stringify(envelope); + if (typeof payload !== "string") { + return; + } + // enqueue the payload + this._buffer.push(payload); + // flush if we would exceed the max-size limit by adding this item + if (this._buffer.length >= this._getBatchSize()) { + this.triggerSend(false); + return; + } + // ensure an invocation timeout is set if anything is in the buffer + if (!this._timeoutHandle && this._buffer.length > 0) { + this._timeoutHandle = setTimeout(function () { + _this._timeoutHandle = null; + _this.triggerSend(false); + }, this._getBatchIntervalMs()); + } + }; + Channel.prototype.handleCrash = function (envelope) { + if (envelope) { + var payload = this._stringify(envelope); + if (typeof payload === "string") { + this._buffer.push(payload); + this.triggerSend(true); + } + else { + Logging.warn("Could not send crash", envelope); + } + } + else { + Logging.warn("handleCrash was called with empty payload", envelope); + } + }; + /** + * Immediately send buffered data + */ + Channel.prototype.triggerSend = function (isNodeCrashing, callback) { + var bufferIsEmpty = this._buffer.length < 1; + if (!bufferIsEmpty) { + // compose an array of payloads + var batch = this._buffer.join("\n"); + // invoke send + if (isNodeCrashing) { + this._sender.saveOnCrash(batch); + if (typeof callback === "function") { + callback("data saved on crash"); + } + } + else { + this._sender.send(new Buffer(batch), callback); + } + } + // update lastSend time to enable throttling + this._lastSend = +new Date; + // clear buffer + this._buffer.length = 0; + clearTimeout(this._timeoutHandle); + this._timeoutHandle = null; + if (bufferIsEmpty && typeof callback === "function") { + callback("no data to send"); + } + }; + Channel.prototype._stringify = function (envelope) { + try { + return JSON.stringify(envelope); + } + catch (error) { + Logging.warn("Failed to serialize payload", error, envelope); + } + }; + return Channel; +}()); +module.exports = Channel; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Client.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Client.js new file mode 100644 index 00000000..995be3e2 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Client.js @@ -0,0 +1,253 @@ +/// +"use strict"; +var url = require("url"); +var Config = require("./Config"); +var Context = require("./Context"); +var ExceptionTracking = require("../AutoCollection/Exceptions"); +var ContractsModule = require("../Library/Contracts"); +var Channel = require("./Channel"); +var ServerRequestTracking = require("../AutoCollection/ServerRequests"); +var ClientRequestTracking = require("../AutoCollection/ClientRequests"); +var CorrelationContextManager_1 = require("../AutoCollection/CorrelationContextManager"); +var Sender = require("./Sender"); +var Util = require("./Util"); +var Logging = require("./Logging"); +var Client = (function () { + /** + * Constructs a new client of the client + * @param iKey the instrumentation key to use (read from environment variable if not specified) + */ + function Client(iKey) { + this._telemetryProcessors = []; + var config = new Config(iKey); + this.config = config; + this.context = new Context(); + this.commonProperties = {}; + var sender = new Sender(function () { return config.endpointUrl; }); + this.channel = new Channel(function () { return config.disableAppInsights; }, function () { return config.maxBatchSize; }, function () { return config.maxBatchIntervalMs; }, sender); + } + /** + * Log a user action or other occurrence. + * @param name A string to identify this event in the portal. + * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty. + * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty. + */ + Client.prototype.trackEvent = function (name, properties, measurements) { + var event = new ContractsModule.Contracts.EventData(); + event.name = name; + event.properties = properties; + event.measurements = measurements; + var data = new ContractsModule.Contracts.Data(); + data.baseType = "EventData"; + data.baseData = event; + this.track(data); + }; + /** + * Log a trace message + * @param message A string to identify this event in the portal. + * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty. + */ + Client.prototype.trackTrace = function (message, severityLevel, properties) { + var trace = new ContractsModule.Contracts.MessageData(); + trace.message = message; + trace.properties = properties; + if (!isNaN(severityLevel)) { + trace.severityLevel = severityLevel; + } + else { + trace.severityLevel = ContractsModule.Contracts.SeverityLevel.Information; + } + var data = new ContractsModule.Contracts.Data(); + data.baseType = "MessageData"; + data.baseData = trace; + this.track(data); + }; + /** + * Log an exception you have caught. + * @param exception An Error from a catch clause, or the string error message. + * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty. + * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty. + */ + Client.prototype.trackException = function (exception, properties, measurements) { + if (!Util.isError(exception)) { + exception = new Error(exception); + } + var data = ExceptionTracking.getExceptionData(exception, true, properties, measurements); + this.track(data); + }; + /** + * * Log a numeric value that is not associated with a specific event. Typically used to send regular reports of performance indicators. + * To send a single measurement, use just the first two parameters. If you take measurements very frequently, you can reduce the + * telemetry bandwidth by aggregating multiple measurements and sending the resulting average at intervals. + * + * @param name A string that identifies the metric. + * @param value The value of the metric + * @param count the number of samples used to get this value + * @param min the min sample for this set + * @param max the max sample for this set + * @param stdDev the standard deviation of the set + */ + Client.prototype.trackMetric = function (name, value, count, min, max, stdDev, properties) { + var metrics = new ContractsModule.Contracts.MetricData(); // todo: enable client-batching of these + metrics.metrics = []; + var metric = new ContractsModule.Contracts.DataPoint(); + metric.count = !isNaN(count) ? count : 1; + metric.kind = ContractsModule.Contracts.DataPointType.Aggregation; + metric.max = !isNaN(max) ? max : value; + metric.min = !isNaN(min) ? min : value; + metric.name = name; + metric.stdDev = !isNaN(stdDev) ? stdDev : 0; + metric.value = value; + metrics.metrics.push(metric); + metrics.properties = properties; + var data = new ContractsModule.Contracts.Data(); + data.baseType = "MetricData"; + data.baseData = metrics; + this.track(data); + }; + Client.prototype.trackRequestSync = function (request, response, ellapsedMilliseconds, properties, error) { + ServerRequestTracking.trackRequestSync(this, request, response, ellapsedMilliseconds, properties, error); + }; + Client.prototype.trackRequest = function (request, response, properties) { + ServerRequestTracking.trackRequest(this, request, response, properties); + }; + Client.prototype.trackDependencyRequest = function (requestOptions, request, properties) { + ClientRequestTracking.trackRequest(this, requestOptions, request, properties); + }; + Client.prototype.trackDependency = function (name, commandName, elapsedTimeMs, success, dependencyTypeName, properties, async, target) { + if (properties === void 0) { properties = {}; } + if (async === void 0) { async = false; } + if (target === void 0) { target = null; } + if (!target && commandName) { + target = url.parse(commandName).host; + } + var remoteDependency = new ContractsModule.Contracts.RemoteDependencyData(); + remoteDependency.name = name; + remoteDependency.data = commandName; + remoteDependency.target = target; + remoteDependency.duration = Util.msToTimeSpan(elapsedTimeMs); + remoteDependency.success = success; + remoteDependency.type = dependencyTypeName; + remoteDependency.properties = properties; + var data = new ContractsModule.Contracts.Data(); + data.baseType = "RemoteDependencyData"; + data.baseData = remoteDependency; + this.track(data); + }; + /** + * Immediately send all queued telemetry. + */ + Client.prototype.sendPendingData = function (callback) { + this.channel.triggerSend(false, callback); + }; + Client.prototype.getEnvelope = function (data, tagOverrides) { + if (data && data.baseData) { + data.baseData.ver = 2; + // if no properties are specified just add the common ones + if (!data.baseData.properties) { + data.baseData.properties = this.commonProperties; + } + else { + // otherwise, check each of the common ones + for (var name in this.commonProperties) { + // only override if the property `name` has not been set on this item + if (!data.baseData.properties[name]) { + data.baseData.properties[name] = this.commonProperties[name]; + } + } + } + } + // sanitize properties + data.baseData.properties = Util.validateStringMap(data.baseData.properties); + var iKey = this.config.instrumentationKey; + var envelope = new ContractsModule.Contracts.Envelope(); + envelope.data = data; + envelope.iKey = iKey; + // this is kind of a hack, but the envelope name is always the same as the data name sans the chars "data" + envelope.name = + "Microsoft.ApplicationInsights." + + iKey.replace(/-/g, "") + + "." + + data.baseType.substr(0, data.baseType.length - 4); + envelope.tags = this.getTags(tagOverrides); + envelope.time = (new Date()).toISOString(); + envelope.ver = 1; + return envelope; + }; + /** + * Generic track method for all telemetry types + * @param data the telemetry to send + * @param tagOverrides the context tags to use for this telemetry which overwrite default context values + */ + Client.prototype.track = function (data, tagOverrides, contextObjects) { + var envelope = this.getEnvelope(data, tagOverrides); + var accepted = this.runTelemetryProcessors(envelope, contextObjects); + if (accepted) { + this.channel.send(envelope); + } + }; + /** + * Adds telemetry processor to the collection. Telemetry processors will be called one by one + * before telemetry item is pushed for sending and in the order they were added. + * + * @param telemetryProcessor function, takes Envelope, and optional context object and returns boolean + */ + Client.prototype.addTelemetryProcessor = function (telemetryProcessor) { + this._telemetryProcessors.push(telemetryProcessor); + }; + /* + * Removes all telemetry processors + */ + Client.prototype.clearTelemetryProcessors = function () { + this._telemetryProcessors = []; + }; + Client.prototype.runTelemetryProcessors = function (envelope, contextObjects) { + var accepted = true; + var telemetryProcessorsCount = this._telemetryProcessors.length; + if (telemetryProcessorsCount === 0) { + return accepted; + } + contextObjects = contextObjects || {}; + contextObjects['correlationContext'] = CorrelationContextManager_1.CorrelationContextManager.getCurrentContext(); + for (var i = 0; i < telemetryProcessorsCount; ++i) { + try { + var processor = this._telemetryProcessors[i]; + if (processor) { + if (processor.apply(null, [envelope, contextObjects]) === false) { + accepted = false; + break; + } + } + } + catch (error) { + accepted = false; + Logging.warn("One of telemetry processors failed, telemetry item will not be sent.", error, envelope); + } + } + return accepted; + }; + Client.prototype.getTags = function (tagOverrides) { + var correlationContext = CorrelationContextManager_1.CorrelationContextManager.getCurrentContext(); + // Make a copy of context tags so we don't alter the actual object + // Also perform tag overriding + var newTags = {}; + for (var key in this.context.tags) { + newTags[key] = this.context.tags[key]; + } + for (var key in tagOverrides) { + newTags[key] = tagOverrides[key]; + } + if (!correlationContext) { + return newTags; + } + // Fill in internally-populated values if not already set + if (correlationContext) { + newTags[this.context.keys.operationId] = newTags[this.context.keys.operationId] || correlationContext.operation.id; + newTags[this.context.keys.operationName] = newTags[this.context.keys.operationName] || correlationContext.operation.name; + newTags[this.context.keys.operationParentId] = newTags[this.context.keys.operationParentId] || correlationContext.operation.parentId; + } + return newTags; + }; + return Client; +}()); +module.exports = Client; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Config.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Config.js new file mode 100644 index 00000000..5b6769ab --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Config.js @@ -0,0 +1,44 @@ +/// +"use strict"; +var crypto = require('crypto'); +var Config = (function () { + function Config(instrumentationKey) { + this.instrumentationKey = instrumentationKey || Config._getInstrumentationKey(); + this.instrumentationKeyHash = Config._getStringHashBase64(this.instrumentationKey); + this.endpointUrl = "https://dc.services.visualstudio.com/v2/track"; + this.sessionRenewalMs = 30 * 60 * 1000; + this.sessionExpirationMs = 24 * 60 * 60 * 1000; + this.maxBatchSize = 250; + this.maxBatchIntervalMs = 15000; + this.disableAppInsights = false; + this.correlationHeaderExcludedDomains = [ + "*.blob.core.windows.net", + "*.blob.core.chinacloudapi.cn", + "*.blob.core.cloudapi.de", + "*.blob.core.usgovcloudapi.net"]; + } + Config._getInstrumentationKey = function () { + // check for both the documented env variable and the azure-prefixed variable + var iKey = process.env[Config.ENV_iKey] + || process.env[Config.ENV_azurePrefix + Config.ENV_iKey] + || process.env[Config.legacy_ENV_iKey] + || process.env[Config.ENV_azurePrefix + Config.legacy_ENV_iKey]; + if (!iKey || iKey == "") { + throw new Error("Instrumentation key not found, pass the key in the config to this method or set the key in the environment variable APPINSIGHTS_INSTRUMENTATIONKEY before starting the server"); + } + return iKey; + }; + Config._getStringHashBase64 = function (value) { + var hash = crypto.createHash('sha256'); + hash.update(value); + var result = hash.digest('base64'); + return result; + }; + // Azure adds this prefix to all environment variables + Config.ENV_azurePrefix = "APPSETTING_"; + // This key is provided in the readme + Config.ENV_iKey = "APPINSIGHTS_INSTRUMENTATIONKEY"; + Config.legacy_ENV_iKey = "APPINSIGHTS_INSTRUMENTATION_KEY"; + return Config; +}()); +module.exports = Config; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Context.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Context.js new file mode 100644 index 00000000..6086bf16 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Context.js @@ -0,0 +1,62 @@ +/// +"use strict"; +var os = require("os"); +var ContractsModule = require("../Library/Contracts"); +var Logging = require("./Logging"); +var Context = (function () { + function Context(packageJsonPath) { + this.keys = new ContractsModule.Contracts.ContextTagKeys(); + this.tags = {}; + this._loadApplicationContext(); + this._loadDeviceContext(); + this._loadInternalContext(); + } + Context.prototype._loadApplicationContext = function (packageJsonPath) { + var version = "unknown"; + var description = undefined; + try { + // note: this should return the host package.json + var packageJson = require(packageJsonPath || "../../../package.json"); + if (packageJson) { + if (typeof packageJson.version === "string") { + version = packageJson.version; + } + if (typeof packageJson.description === "string") { + description = packageJson.description; + } + } + } + catch (exception) { + Logging.info("unable to read app version: ", exception); + } + this.tags[this.keys.applicationVersion] = version; + // TODO: consider sending it as a custom property + //if(description) { + // this.tags[this.keys.applicationBuild] = description; + //} + }; + Context.prototype._loadDeviceContext = function () { + this.tags[this.keys.deviceId] = ""; + this.tags[this.keys.cloudRoleInstance] = os && os.hostname(); + this.tags[this.keys.deviceOSVersion] = os && os.type() + " " + os && os.release(); + // not yet supported tags + this.tags["ai.device.osArchitecture"] = os && os.arch(); + this.tags["ai.device.osPlatform"] = os && os.platform(); + }; + Context.prototype._loadInternalContext = function () { + var version = "unknown"; + try { + // note: this should return the appInsights package.json + var packageJson = require("../package.json"); + if (packageJson && typeof packageJson.version === "string") { + version = packageJson.version; + } + } + catch (exception) { + Logging.info("unable to read SDK version: " + exception); + } + this.tags[this.keys.internalSdkVersion] = "node:" + version || "unknown"; + }; + return Context; +}()); +module.exports = Context; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Contracts.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Contracts.js new file mode 100644 index 00000000..0b473dab --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Contracts.js @@ -0,0 +1,225 @@ +// this file is manually constructed and many types and fields here are deprecated. +// Need to switch to use Declarations\Constracts\Generated instead +// This will be consistent with JavaScript SDK +"use strict"; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var Contracts; +(function (Contracts) { + (function (DataPointType) { + DataPointType[DataPointType["Measurement"] = 0] = "Measurement"; + DataPointType[DataPointType["Aggregation"] = 1] = "Aggregation"; + })(Contracts.DataPointType || (Contracts.DataPointType = {})); + var DataPointType = Contracts.DataPointType; + (function (SeverityLevel) { + SeverityLevel[SeverityLevel["Verbose"] = 0] = "Verbose"; + SeverityLevel[SeverityLevel["Information"] = 1] = "Information"; + SeverityLevel[SeverityLevel["Warning"] = 2] = "Warning"; + SeverityLevel[SeverityLevel["Error"] = 3] = "Error"; + SeverityLevel[SeverityLevel["Critical"] = 4] = "Critical"; + })(Contracts.SeverityLevel || (Contracts.SeverityLevel = {})); + var SeverityLevel = Contracts.SeverityLevel; + var ContextTagKeys = (function () { + function ContextTagKeys() { + this.applicationVersion = "ai.application.ver"; + this.deviceId = "ai.device.id"; + this.deviceLocale = "ai.device.locale"; + this.deviceModel = "ai.device.model"; + this.deviceOEMName = "ai.device.oemName"; + this.deviceOSVersion = "ai.device.osVersion"; + this.deviceType = "ai.device.type"; + this.locationIp = "ai.location.ip"; + this.operationId = "ai.operation.id"; + this.operationName = "ai.operation.name"; + this.operationParentId = "ai.operation.parentId"; + this.operationSyntheticSource = "ai.operation.syntheticSource"; + this.operationCorrelationVector = "ai.operation.correlationVector"; + this.sessionId = "ai.session.id"; + this.sessionIsFirst = "ai.session.isFirst"; + this.userAccountId = "ai.user.accountId"; + this.userAgent = "ai.user.userAgent"; + this.userId = "ai.user.id"; + this.userAuthUserId = "ai.user.authUserId"; + this.cloudRole = "ai.cloud.role"; + this.cloudRoleInstance = "ai.cloud.roleInstance"; + this.internalSdkVersion = "ai.internal.sdkVersion"; + this.internalAgentVersion = "ai.internal.agentVersion"; + this.internalNodeName = "ai.internal.nodeName"; + } + return ContextTagKeys; + }()); + Contracts.ContextTagKeys = ContextTagKeys; + var Domain = (function () { + function Domain() { + } + return Domain; + }()); + Contracts.Domain = Domain; + var Data = (function () { + function Data() { + } + return Data; + }()); + Contracts.Data = Data; + var Envelope = (function () { + function Envelope() { + this.ver = 1; + // the 'name' property must be initialized before 'tags' and/or 'data'. + this.name = ""; + // the 'time' property must be initialized before 'tags' and/or 'data'. + this.time = ""; + this.sampleRate = 100.0; + this.tags = {}; + } + return Envelope; + }()); + Contracts.Envelope = Envelope; + var EventData = (function (_super) { + __extends(EventData, _super); + function EventData() { + _super.call(this); + this.ver = 2; + this.properties = {}; + this.measurements = {}; + _super.call(this); + } + return EventData; + }(Contracts.Domain)); + Contracts.EventData = EventData; + var MessageData = (function (_super) { + __extends(MessageData, _super); + function MessageData() { + _super.call(this); + this.ver = 2; + this.properties = {}; + _super.call(this); + } + return MessageData; + }(Contracts.Domain)); + Contracts.MessageData = MessageData; + var ExceptionData = (function (_super) { + __extends(ExceptionData, _super); + function ExceptionData() { + _super.call(this); + this.ver = 2; + this.exceptions = []; + this.properties = {}; + this.measurements = {}; + } + return ExceptionData; + }(Contracts.Domain)); + Contracts.ExceptionData = ExceptionData; + var StackFrame = (function () { + function StackFrame() { + } + return StackFrame; + }()); + Contracts.StackFrame = StackFrame; + var ExceptionDetails = (function () { + function ExceptionDetails() { + this.hasFullStack = true; + this.parsedStack = []; + } + return ExceptionDetails; + }()); + Contracts.ExceptionDetails = ExceptionDetails; + var DataPoint = (function () { + function DataPoint() { + this.kind = Contracts.DataPointType.Measurement; + } + return DataPoint; + }()); + Contracts.DataPoint = DataPoint; + var MetricData = (function (_super) { + __extends(MetricData, _super); + function MetricData() { + _super.call(this); + this.ver = 2; + this.metrics = []; + this.properties = {}; + _super.call(this); + } + return MetricData; + }(Contracts.Domain)); + Contracts.MetricData = MetricData; + var PageViewData = (function (_super) { + __extends(PageViewData, _super); + function PageViewData() { + _super.call(this); + this.ver = 2; + this.properties = {}; + this.measurements = {}; + _super.call(this); + } + return PageViewData; + }(Contracts.EventData)); + Contracts.PageViewData = PageViewData; + var PageViewPerfData = (function (_super) { + __extends(PageViewPerfData, _super); + function PageViewPerfData() { + _super.call(this); + this.ver = 2; + this.properties = {}; + this.measurements = {}; + } + return PageViewPerfData; + }(Contracts.PageViewData)); + Contracts.PageViewPerfData = PageViewPerfData; + var RemoteDependencyDataConstants = (function () { + function RemoteDependencyDataConstants() { + } + RemoteDependencyDataConstants.TYPE_HTTP = "Http"; + return RemoteDependencyDataConstants; + }()); + Contracts.RemoteDependencyDataConstants = RemoteDependencyDataConstants; + var RemoteDependencyData = (function (_super) { + __extends(RemoteDependencyData, _super); + function RemoteDependencyData() { + _super.call(this); + this.ver = 2; + this.success = true; + this.properties = {}; + this.measurements = {}; + } + return RemoteDependencyData; + }(Contracts.Domain)); + Contracts.RemoteDependencyData = RemoteDependencyData; + var AjaxCallData = (function (_super) { + __extends(AjaxCallData, _super); + function AjaxCallData() { + _super.call(this); + this.ver = 2; + this.properties = {}; + this.measurements = {}; + _super.call(this); + } + return AjaxCallData; + }(Contracts.PageViewData)); + Contracts.AjaxCallData = AjaxCallData; + var RequestData = (function (_super) { + __extends(RequestData, _super); + function RequestData() { + _super.call(this); + this.ver = 2; + this.properties = {}; + this.measurements = {}; + } + return RequestData; + }(Contracts.Domain)); + Contracts.RequestData = RequestData; + var PerformanceCounterData = (function (_super) { + __extends(PerformanceCounterData, _super); + function PerformanceCounterData() { + _super.call(this); + this.ver = 2; + this.kind = DataPointType.Aggregation; + this.properties = {}; + _super.call(this); + } + return PerformanceCounterData; + }(Contracts.Domain)); + Contracts.PerformanceCounterData = PerformanceCounterData; +})(Contracts = exports.Contracts || (exports.Contracts = {})); diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Logging.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Logging.js new file mode 100644 index 00000000..b86eb9fa --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Logging.js @@ -0,0 +1,28 @@ +"use strict"; +var Logging = (function () { + function Logging() { + } + Logging.info = function (message) { + var optionalParams = []; + for (var _i = 1; _i < arguments.length; _i++) { + optionalParams[_i - 1] = arguments[_i]; + } + if (Logging.enableDebug) { + console.info(Logging.TAG + message, optionalParams); + } + }; + Logging.warn = function (message) { + var optionalParams = []; + for (var _i = 1; _i < arguments.length; _i++) { + optionalParams[_i - 1] = arguments[_i]; + } + if (!Logging.disableWarnings) { + console.warn(Logging.TAG + message, optionalParams); + } + }; + Logging.enableDebug = false; + Logging.disableWarnings = false; + Logging.TAG = "ApplicationInsights:"; + return Logging; +}()); +module.exports = Logging; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/RequestResponseHeaders.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/RequestResponseHeaders.js new file mode 100644 index 00000000..327201e8 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/RequestResponseHeaders.js @@ -0,0 +1,22 @@ +"use strict"; +module.exports = { + /** + * Source instrumentation header that is added by an application while making http + * requests and retrieved by the other application when processing incoming requests. + */ + sourceInstrumentationKeyHeader: "x-ms-request-source-ikey", + /** + * Target instrumentation header that is added to the response and retrieved by the + * calling application when processing incoming responses. + */ + targetInstrumentationKeyHeader: "x-ms-request-target-ikey", + /** + * Header containing the id of the immidiate caller + */ + parentIdHeader: "x-ms-request-id", + /** + * Header containing the correlation id that kept the same for every telemetry item + * accross transactions + */ + rootIdHeader: "x-ms-request-root-id" +}; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Sender.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Sender.js new file mode 100644 index 00000000..0dcb73e5 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Sender.js @@ -0,0 +1,218 @@ +/// +"use strict"; +var fs = require("fs"); +var http = require("http"); +var https = require("https"); +var os = require("os"); +var path = require("path"); +var url = require("url"); +var zlib = require("zlib"); +var Logging = require("./Logging"); +var AutoCollectClientRequests = require("../AutoCollection/ClientRequests"); +var Sender = (function () { + function Sender(getUrl, onSuccess, onError) { + this._getUrl = getUrl; + this._onSuccess = onSuccess; + this._onError = onError; + this._enableOfflineMode = false; + this._resendInterval = Sender.WAIT_BETWEEN_RESEND; + } + /** + * Enable or disable offline mode + */ + Sender.prototype.setOfflineMode = function (value, resendInterval) { + this._enableOfflineMode = value; + if (typeof resendInterval === 'number' && resendInterval >= 0) { + this._resendInterval = Math.floor(resendInterval); + } + }; + Sender.prototype.send = function (payload, callback) { + var _this = this; + var endpointUrl = this._getUrl(); + if (endpointUrl && endpointUrl.indexOf("//") === 0) { + // use https if the config did not specify a protocol + endpointUrl = "https:" + endpointUrl; + } + // todo: investigate specifying an agent here: https://nodejs.org/api/http.html#http_class_http_agent + var parsedUrl = url.parse(endpointUrl); + var options = { + host: parsedUrl.hostname, + port: parsedUrl.port, + path: parsedUrl.pathname, + method: "POST", + headers: { + "Content-Type": "application/x-json-stream" + } + }; + zlib.gzip(payload, function (err, buffer) { + var dataToSend = buffer; + if (err) { + Logging.warn(err); + dataToSend = payload; // something went wrong so send without gzip + options.headers["Content-Length"] = payload.length; + } + else { + options.headers["Content-Encoding"] = "gzip"; + options.headers["Content-Length"] = buffer.length; + } + Logging.info(Sender.TAG, options); + // Ensure this request is not captured by auto-collection. + options[AutoCollectClientRequests.disableCollectionRequestOption] = true; + var requestCallback = function (res) { + res.setEncoding("utf-8"); + //returns empty if the data is accepted + var responseString = ""; + res.on("data", function (data) { + responseString += data; + }); + res.on("end", function () { + Logging.info(Sender.TAG, responseString); + if (typeof _this._onSuccess === "function") { + _this._onSuccess(responseString); + } + if (typeof callback === "function") { + callback(responseString); + } + if (_this._enableOfflineMode) { + // try to send any cached events if the user is back online + if (res.statusCode === 200) { + setTimeout(function () { return _this._sendFirstFileOnDisk(); }, _this._resendInterval); + } + else if (res.statusCode === 206 || + res.statusCode === 429 || + res.statusCode === 439) { + _this._storeToDisk(payload); + } + } + }); + }; + var req = (parsedUrl.protocol == "https:") ? + https.request(options, requestCallback) : + http.request(options, requestCallback); + req.on("error", function (error) { + // todo: handle error codes better (group to recoverable/non-recoverable and persist) + Logging.warn(Sender.TAG, error); + _this._onErrorHelper(error); + if (typeof callback === "function") { + var errorMessage = "error sending telemetry"; + if (error && (typeof error.toString === "function")) { + errorMessage = error.toString(); + } + callback(errorMessage); + } + if (_this._enableOfflineMode) { + _this._storeToDisk(payload); + } + }); + req.write(dataToSend); + req.end(); + }); + }; + Sender.prototype.saveOnCrash = function (payload) { + this._storeToDiskSync(payload); + }; + Sender.prototype._confirmDirExists = function (direcotry, callback) { + fs.exists(direcotry, function (exists) { + if (!exists) { + fs.mkdir(direcotry, function (err) { + callback(err); + }); + } + else { + callback(null); + } + }); + }; + /** + * Stores the payload as a json file on disk in the temp direcotry + */ + Sender.prototype._storeToDisk = function (payload) { + var _this = this; + //ensure directory is created + var direcotry = path.join(os.tmpdir(), Sender.TEMPDIR); + this._confirmDirExists(direcotry, function (error) { + if (error) { + _this._onErrorHelper(error); + return; + } + //create file - file name for now is the timestamp, a better approach would be a UUID but that + //would require an external dependency + var fileName = new Date().getTime() + ".ai.json"; + var fileFullPath = path.join(direcotry, fileName); + Logging.info(Sender.TAG, "saving data to disk at: " + fileFullPath); + fs.writeFile(fileFullPath, payload, function (error) { return _this._onErrorHelper(error); }); + }); + }; + /** + * Stores the payload as a json file on disk using sync file operations + * this is used when storing data before crashes + */ + Sender.prototype._storeToDiskSync = function (payload) { + var direcotry = path.join(os.tmpdir(), Sender.TEMPDIR); + try { + if (!fs.existsSync(direcotry)) { + fs.mkdirSync(direcotry); + } + //create file - file name for now is the timestamp, a better approach would be a UUID but that + //would require an external dependency + var fileName = new Date().getTime() + ".ai.json"; + var fileFullPath = path.join(direcotry, fileName); + Logging.info(Sender.TAG, "saving data before crash to disk at: " + fileFullPath); + fs.writeFileSync(fileFullPath, payload); + } + catch (error) { + this._onErrorHelper(error); + } + }; + /** + * Check for temp telemetry files + * reads the first file if exist, deletes it and tries to send its load + */ + Sender.prototype._sendFirstFileOnDisk = function () { + var _this = this; + var tempDir = path.join(os.tmpdir(), Sender.TEMPDIR); + fs.exists(tempDir, function (exists) { + if (exists) { + fs.readdir(tempDir, function (error, files) { + if (!error) { + files = files.filter(function (f) { return path.basename(f).indexOf(".ai.json") > -1; }); + if (files.length > 0) { + var firstFile = files[0]; + var filePath = path.join(tempDir, firstFile); + fs.readFile(filePath, function (error, payload) { + if (!error) { + // delete the file first to prevent double sending + fs.unlink(filePath, function (error) { + if (!error) { + _this.send(payload); + } + else { + _this._onErrorHelper(error); + } + }); + } + else { + _this._onErrorHelper(error); + } + }); + } + } + else { + _this._onErrorHelper(error); + } + }); + } + }); + }; + Sender.prototype._onErrorHelper = function (error) { + if (typeof this._onError === "function") { + this._onError(error); + } + }; + Sender.TAG = "Sender"; + // the amount of time the SDK will wait between resending cached data, this buffer is to avoid any throtelling from the service side + Sender.WAIT_BETWEEN_RESEND = 60 * 1000; + Sender.TEMPDIR = "appInsights-node"; + return Sender; +}()); +module.exports = Sender; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Util.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Util.js new file mode 100644 index 00000000..221b998b --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Library/Util.js @@ -0,0 +1,166 @@ +"use strict"; +var url = require("url"); +var Logging = require("./Logging"); +var Util = (function () { + function Util() { + } + /** + * helper method to access userId and sessionId cookie + */ + Util.getCookie = function (name, cookie) { + var value = ""; + if (name && name.length && typeof cookie === "string") { + var cookieName = name + "="; + var cookies = cookie.split(";"); + for (var i = 0; i < cookies.length; i++) { + var cookie = cookies[i]; + cookie = Util.trim(cookie); + if (cookie && cookie.indexOf(cookieName) === 0) { + value = cookie.substring(cookieName.length, cookies[i].length); + break; + } + } + } + return value; + }; + /** + * helper method to trim strings (IE8 does not implement String.prototype.trim) + */ + Util.trim = function (str) { + if (typeof str === "string") { + return str.replace(/^\s+|\s+$/g, ""); + } + else { + return ""; + } + }; + /** + * Convert an array of int32 to Base64 (no '==' at the end). + * MSB first. + */ + Util.int32ArrayToBase64 = function (array) { + var toChar = function (v, i) { + return String.fromCharCode((v >> i) & 0xFF); + }; + var int32AsString = function (v) { + return toChar(v, 24) + toChar(v, 16) + toChar(v, 8) + toChar(v, 0); + }; + var x = array.map(int32AsString).join(""); + var s = new Buffer(x, "binary").toString("base64"); + return s.substr(0, s.indexOf("=")); + }; + /** + * generate a random 32bit number (-0x80000000..0x7FFFFFFF). + */ + Util.random32 = function () { + return (0x100000000 * Math.random()) | 0; + }; + /** + * generate GUID + */ + Util.newGuid = function () { + var hexValues = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"]; + // c.f. rfc4122 (UUID version 4 = xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx) + var oct = "", tmp; + for (var a = 0; a < 4; a++) { + tmp = Util.random32(); + oct += + hexValues[tmp & 0xF] + + hexValues[tmp >> 4 & 0xF] + + hexValues[tmp >> 8 & 0xF] + + hexValues[tmp >> 12 & 0xF] + + hexValues[tmp >> 16 & 0xF] + + hexValues[tmp >> 20 & 0xF] + + hexValues[tmp >> 24 & 0xF] + + hexValues[tmp >> 28 & 0xF]; + } + // "Set the two most significant bits (bits 6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively" + var clockSequenceHi = hexValues[8 + (Math.random() * 4) | 0]; + return oct.substr(0, 8) + "-" + oct.substr(9, 4) + "-4" + oct.substr(13, 3) + "-" + clockSequenceHi + oct.substr(16, 3) + "-" + oct.substr(19, 12); + }; + /** + * Check if an object is of type Array + */ + Util.isArray = function (obj) { + return Object.prototype.toString.call(obj) === "[object Array]"; + }; + /** + * Check if an object is of type Error + */ + Util.isError = function (obj) { + return obj instanceof Error; + }; + /** + * Check if an object is of type Date + */ + Util.isDate = function (obj) { + return Object.prototype.toString.call(obj) === "[object Date]"; + }; + /** + * Convert ms to c# time span format + */ + Util.msToTimeSpan = function (totalms) { + if (isNaN(totalms) || totalms < 0) { + totalms = 0; + } + var ms = "" + totalms % 1000; + var sec = "" + Math.floor(totalms / 1000) % 60; + var min = "" + Math.floor(totalms / (1000 * 60)) % 60; + var hour = "" + Math.floor(totalms / (1000 * 60 * 60)) % 24; + var days = Math.floor(totalms / (1000 * 60 * 60 * 24)); + ms = ms.length === 1 ? "00" + ms : ms.length === 2 ? "0" + ms : ms; + sec = sec.length < 2 ? "0" + sec : sec; + min = min.length < 2 ? "0" + min : min; + hour = hour.length < 2 ? "0" + hour : hour; + var daysText = days > 0 ? days + "." : ""; + return daysText + hour + ":" + min + ":" + sec + "." + ms; + }; + /** + * Validate that an object is of type { [key: string]: string } + */ + Util.validateStringMap = function (obj) { + var map; + if (typeof obj === "object") { + map = {}; + for (var field in obj) { + var property = obj[field]; + var propertyType = typeof property; + if (propertyType !== "string") { + if (property != null && typeof property.toString === "function") { + property = property.toString(); + } + else { + Logging.info("key: " + field + ", invalid property type: " + propertyType); + continue; + } + } + map[field] = property.trim(0, Util.MAX_PROPERTY_LENGTH); + } + } + else { + Logging.info("Invalid properties dropped from payload"); + } + return map; + }; + /** + * Checks if a request url is not on a excluded domain list + * and if it is safe to add correlation headers (x-ms-request-source-ikey, x-ms-request-target-ikey) + */ + Util.canIncludeCorrelationHeader = function (client, requestUrl) { + var excludedDomains = client && client.config && client.config.correlationHeaderExcludedDomains; + if (!excludedDomains || excludedDomains.length == 0 || !requestUrl) { + return true; + } + for (var i = 0; i < excludedDomains.length; i++) { + var regex = new RegExp(excludedDomains[i].replace(/\./g, "\.").replace(/\*/g, ".*")); + if (regex.test(url.parse(requestUrl).hostname)) { + return false; + } + } + return true; + }; + Util.MAX_PROPERTY_LENGTH = 1024; + Util.document = typeof document !== "undefined" ? document : {}; + return Util; +}()); +module.exports = Util; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/License.txt b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/License.txt new file mode 100644 index 00000000..07668a17 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/License.txt @@ -0,0 +1,8 @@ +The MIT License (MIT) +Copyright © Microsoft Corporation + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/README.md b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/README.md new file mode 100644 index 00000000..48100fe1 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/README.md @@ -0,0 +1,214 @@ +# Application Insights for Node.js + +[![NPM version](https://badge.fury.io/js/applicationinsights.svg)](http://badge.fury.io/js/applicationinsights) +[![Build Status](https://travis-ci.org/Microsoft/ApplicationInsights-node.js.svg?branch=master)](https://travis-ci.org/Microsoft/ApplicationInsights-node.js) + + + +This project provides a [Visual Studio Application Insights](https://azure.microsoft.com/documentation/articles/app-insights-overview/) SDK for [Node.js](https://nodejs.org/). The SDK sends telemetry about the performance and usage of your live Node.js application to the Application Insights service. There you can analyze charts of request rates, response times, failures and dependencies, and diagnose issues using powerful search and aggregation tools. + +The SDK provides automatic collection of incoming HTTP request rates and responses, performance counters (CPU, memory, RPS), and unhandled exceptions. In addition, you can add custom calls to track dependencies, metrics, or other events. + +In versions of Node.js > 4.0 (and io.js > 3.3) the SDK provides automatic correlation of dependencies to requests (off by default, see Customized Usage below to enable). + +## Requirements ## +**Install** +``` +npm install applicationinsights +``` + +### Get an instrumentation key + +[Create an Application Insights resource](https://azure.microsoft.com/documentation/articles/app-insights-create-new-resource/) where your telemetry will be displayed. This provides you with an instrumentation key that identifies the resource. (You can try the SDK without sending telemetry: set the instrumentation key to a non-empty string.) + + +## Usage ## + +This will enable request monitoring, unhandled exception tracking, and system performance monitoring (CPU/Memory/RPS). + +```javascript +import appInsights = require("applicationinsights"); +appInsights.setup("").start(); +``` + +>The instrumentation key can also be set in the environment variable APPINSIGHTS_INSTRUMENTATIONKEY. If this is done, no argument is required when calling `appInsights.setup()` or `appInsights.getClient()`. + + + +## Customized Usage ## + +### Enabling automatic correlation + +```javascript +import appInsights = require("applicationinsights"); +appInsights.setup("") + .setAutoDependencyCorrelation(true) + // no telemetry will be sent until .start() is called + .start(); +``` + +> Be sure to call `require("applicationinsights")` before your other imports. This allows the SDK to do patching necessary for tracking correlation state before other libraries use patched methods. If you encounter conflicts with other libraries doing similar patching, place this import below those libraries. + +### Disabling automatic collection + +```javascript +import appInsights = require("applicationinsights"); +appInsights.setup("") + .setAutoCollectRequests(false) + .setAutoCollectPerformance(false) + .setAutoCollectExceptions(false) + .setAutoCollectDependencies(false) + // no telemetry will be sent until .start() is called + .start(); +``` + +### Custom monitoring + +```javascript +import appInsights = require("applicationinsights"); +var client = appInsights.getClient(); + +client.trackEvent("custom event", {customProperty: "custom property value"}); +client.trackException(new Error("handled exceptions can be logged with this method")); +client.trackMetric("custom metric", 3); +client.trackTrace("trace message"); +``` + +### Telemetry Processor + +```javascript +public addTelemetryProcessor(telemetryProcessor: (envelope: ContractsModule.Contracts.Envelope, context: { http.RequestOptions, http.ClientRequest, http.ClientResponse, correlationContext }) => boolean) +``` + +Adds a telemetry processor to the collection. Telemetry processors will be called one by one, in the order they were added, before the telemetry item is pushed for sending. +If one of the telemetry processors returns false then the telemetry item will not be sent. +If one of the telemetry processors throws an error then the telemetry item will not be sent. + +All telemetry processors receive the envelope to modify before sending. They also receive a context object with relevant request information (if available) +as well as the request storage object returned by `appInsights.getCorrelationContext()` (if automatic dependency correlation is enabled). + +**Example** + +Add the below code before you send any telemetry, it will remove stack trace information from any Exception reported by the SDK. + +```javascript +appInsights.client.addTelemetryProcessor((envelope) => { + if (envelope.data.baseType === "Microsoft.ApplicationInsights.ExceptionData") { + var data = envelope.data.baseData; + if (data.exceptions && data.exceptions.length > 0) { + for(var i = 0; i < data.exceptions.length; i++) { + var exception = data.exceptions[i]; + exception.parsedStack = null; + exception.hasFullStack = false; + } + } + } + return true; +}); +``` + +[Learn more about the telemetry API](https://azure.microsoft.com/documentation/articles/app-insights-api-custom-events-metrics/). + +### Using multiple instrumentation keys + +```javascript +import appInsights = require("applicationinsights"); + +// configure auto-collection with one instrumentation key +appInsights.setup("").start(); + +// get a client for another instrumentation key +var otherClient = appInsights.getClient(""); +otherClient.trackEvent("custom event"); +``` + +## Examples + +### Tracking dependency + +```javascript +import appInsights = require("applicationinsights"); +var client = appInsights.getClient(); + +var startTime = Date.now(); +// execute dependency call +var endTime = Date.now(); + +var elapsedTime = endTime - startTime; +var success = true; +client.trackDependency("dependency name", "command name", elapsedTime, success); +``` + + + +### Manual request tracking of all "GET" requests + +```javascript +var http = require("http"); +var appInsights = require("applicationinsights"); +appInsights.setup("") + .setAutoCollectRequests(false) // disable auto-collection of requests for this example + .start(); + +// assign common properties to all telemetry sent from the default client +appInsights.client.commonProperties = { + environment: process.env.SOME_ENV_VARIABLE +}; + +// track a system startup event +appInsights.client.trackEvent("server start"); + +// create server +var port = process.env.port || 1337 +var server = http.createServer(function (req, res) { + // track all "GET" requests + if(req.method === "GET") { + appInsights.client.trackRequest(req, res); + } + + res.writeHead(200, { "Content-Type": "text/plain" }); + res.end("Hello World\n"); +}).listen(port); + +// track startup time of the server as a custom metric +var start = +new Date; +server.on("listening", () => { + var end = +new Date; + var duration = end - start; + appInsights.client.trackMetric("StartupTime", duration); +}); +``` + + +## Branches + +- [master](https://github.com/Microsoft/ApplicationInsights-node.js/tree/master) contains the *latest* published release located on [NPM](https://www.npmjs.com/package/applicationinsights). +- [develop](https://github.com/Microsoft/ApplicationInsights-node.js/tree/develop) contains the code for the *next* release. Please send all pull requests to this branch. + +## Links + +* Follow the latest Application Insights changes and announcements on [ApplicationInsights Announcements](https://github.com/Microsoft/ApplicationInsights-Announcements) +* [Application Insights Home](https://github.com/Microsoft/ApplicationInsights-Home). The main repository for documentation of overall SDK offerings for all platforms. +* [SDK Release Schedule](https://github.com/Microsoft/ApplicationInsights-Home/wiki/SDK-Release-Schedule) + +## Contributing + +**Development environment** + +* Install dev dependencies + + ``` + npm install + ``` +* (optional) Set an environment variable to your instrumentation key + + ``` + set APPINSIGHTS_INSTRUMENTATIONKEY= + ``` +* Run tests + + ``` + npm test + ``` + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/AvailabilityData.bond b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/AvailabilityData.bond new file mode 100644 index 00000000..417b1992 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/AvailabilityData.bond @@ -0,0 +1,47 @@ +import "Domain.bond" + +namespace AI + +[Description("Instances of AvailabilityData represent the result of executing an availability test.")] +struct AvailabilityData + : Domain +{ + [Description("Schema version")] + 10: required int32 ver = 2; + + [MaxStringLength("64")] + [Description("Identifier of a test run. Use it to correlate steps of test run and telemetry generated by the service.")] + [ActAsRequired("Renaming testRunId to id.")] + 21: required string id; + + [MaxStringLength("1024")] + [Description("Name of the test that these availability results represents.")] + [ActAsRequired("Renaming testName to name.")] + 41: required string name; + + [Description("Duration in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff")] + [CSType("TimeSpan")] + 50: required string duration; + + [ActAsRequired("Renaming result to success.")] + [Description("Success flag.")] + 61: required bool success; + + [MaxStringLength("1024")] + [Description("Name of the location where the test was run from.")] + 70: string runLocation; + + [MaxStringLength("8192")] + [Description("Diagnostic message for the result.")] + 80: string message; + + [Description("Collection of custom properties.")] + [MaxKeyLength("150")] + [MaxValueLength("8192")] + 100: map properties; + + [Description("Collection of custom measurements.")] + [MaxKeyLength("150")] + 200: map measurements; + +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/Base.bond b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/Base.bond new file mode 100644 index 00000000..192ebc85 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/Base.bond @@ -0,0 +1,11 @@ + +namespace AI + +[Description("Data struct to contain only C section with custom fields.")] +struct Base +{ + [Name("ItemTypeName")] + [Description("Name of item (B section) if any. If telemetry data is derived straight from this, this should be null.")] + 10: string baseType; + +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/ContextTagKeys.bond b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/ContextTagKeys.bond new file mode 100644 index 00000000..add74fab --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/ContextTagKeys.bond @@ -0,0 +1,105 @@ + +namespace AI + +[ContextContract("Emit")] +[PseudoType("JSMap")] +struct ContextTagKeys +{ + [Description("Application version. Information in the application context fields is always about the application that is sending the telemetry.")] + [MaxStringLength("1024")] + 10: string ApplicationVersion = "ai.application.ver"; + + [Description("Unique client device id. Computer name in most cases.")] + [MaxStringLength("1024")] + 100: string DeviceId = "ai.device.id"; + + [Description("Device locale using - pattern, following RFC 5646. Example 'en-US'.")] + [MaxStringLength("64")] + 115: string DeviceLocale = "ai.device.locale"; + + [Description("Model of the device the end user of the application is using. Used for client scenarios. If this field is empty then it is derived from the user agent.")] + [MaxStringLength("256")] + 120: string DeviceModel = "ai.device.model"; + + [Description("Client device OEM name taken from the browser.")] + [MaxStringLength("256")] + 130: string DeviceOEMName = "ai.device.oemName"; + + [Description("Operating system name and version of the device the end user of the application is using. If this field is empty then it is derived from the user agent. Example 'Windows 10 Pro 10.0.10586.0'")] + [MaxStringLength("256")] + 140: string DeviceOSVersion = "ai.device.osVersion"; + + [Description("The type of the device the end user of the application is using. Used primarily to distinguish JavaScript telemetry from server side telemetry. Examples: 'PC', 'Phone', 'Browser'. 'PC' is the default value.")] + [MaxStringLength("64")] + 160: string DeviceType = "ai.device.type"; + + [Description("The IP address of the client device. IPv4 and IPv6 is supported. Information in the location context fields is always about the end user. When telemetry is sent from a service, the location context is about the user that initiated the operation in the service.")] + [MaxStringLength("45")] + 200: string LocationIp = "ai.location.ip"; + + [Description("A unique identifier for the operation instance. The operation.id is created by either a request or a page view. All other telemetry sets this to the value for the containing request or page view. Operation.id is used for finding all the telemetry items for a specific operation instance.")] + [MaxStringLength("128")] + 300: string OperationId = "ai.operation.id"; + + [Description("The name (group) of the operation. The operation.name is created by either a request or a page view. All other telemetry items set this to the value for the containing request or page view. Operation.name is used for finding all the telemetry items for a group of operations (i.e. 'GET Home/Index').")] + [MaxStringLength("1024")] + 305: string OperationName = "ai.operation.name"; + + [Description("The unique identifier of the telemetry item's immediate parent.")] + [MaxStringLength("128")] + 310: string OperationParentId = "ai.operation.parentId"; + + [Description("Name of synthetic source. Some telemetry from the application may represent a synthetic traffic. It may be web crawler indexing the web site, site availability tests or traces from diagnostic libraries like Application Insights SDK itself.")] + [MaxStringLength("1024")] + 320: string OperationSyntheticSource = "ai.operation.syntheticSource"; + + [Description("The correlation vector is a light weight vector clock which can be used to identify and order related events across clients and services.")] + [MaxStringLength("64")] + 330: string OperationCorrelationVector = "ai.operation.correlationVector"; + + [Description("Session ID - the instance of the user's interaction with the app. Information in the session context fields is always about the end user. When telemetry is sent from a service, the session context is about the user that initiated the operation in the service.")] + [MaxStringLength("64")] + 400: string SessionId = "ai.session.id"; + + [Description("Boolean value indicating whether the session identified by ai.session.id is first for the user or not.")] + [MaxStringLength("5")] + [Question("Should it be marked as JSType-bool for breeze?")] + 405: string SessionIsFirst = "ai.session.isFirst"; + + [Description("In multi-tenant applications this is the account ID or name which the user is acting with. Examples may be subscription ID for Azure portal or blog name blogging platform.")] + [MaxStringLength("1024")] + 505: string UserAccountId = "ai.user.accountId"; + + [Description("The browser's user agent string as reported by the browser. This property will be used to extract informaiton regarding the customer's browser but will not be stored. Use custom properties to store the original user agent.")] + [MaxStringLength("2048")] + 510: string UserAgent = "ai.user.userAgent"; + + [Description("Anonymous user id. Represents the end user of the application. When telemetry is sent from a service, the user context is about the user that initiated the operation in the service.")] + [MaxStringLength("128")] + 515: string UserId = "ai.user.id"; + + [Description("Authenticated user id. The opposite of ai.user.id, this represents the user with a friendly name. Since it's PII information it is not collected by default by most SDKs.")] + [MaxStringLength("1024")] + 525: string UserAuthUserId = "ai.user.authUserId"; + + [Description("Name of the role the application is a part of. Maps directly to the role name in azure.")] + [MaxStringLength("256")] + 705: string CloudRole = "ai.cloud.role"; + + [Description("Name of the instance where the application is running. Computer name for on-premisis, instance name for Azure.")] + [MaxStringLength("256")] + 715: string CloudRoleInstance = "ai.cloud.roleInstance"; + + [Description("SDK version. See https://github.com/Microsoft/ApplicationInsights-Home/blob/master/SDK-AUTHORING.md#sdk-version-specification for information.")] + [MaxStringLength("64")] + 1000: string InternalSdkVersion = "ai.internal.sdkVersion"; + + [Description("Agent version. Used to indicate the version of StatusMonitor installed on the computer if it is used for data collection.")] + [MaxStringLength("64")] + 1001: string InternalAgentVersion = "ai.internal.agentVersion"; + + [Description("This is the node name used for billing purposes. Use it to override the standard detection of nodes.")] + [MaxStringLength("256")] + 1002: string InternalNodeName = "ai.internal.nodeName"; + +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/Data.bond b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/Data.bond new file mode 100644 index 00000000..94ae6f73 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/Data.bond @@ -0,0 +1,13 @@ +import "Base.bond" + +namespace AI + +[Description("Data struct to contain both B and C sections.")] +struct Data + : Base +{ + [Name("Item")] + [Description("Container for data item (B section).")] + 20: required TDomain baseData; + +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/DataPoint.bond b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/DataPoint.bond new file mode 100644 index 00000000..3eb70502 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/DataPoint.bond @@ -0,0 +1,30 @@ +import "DataPointType.bond" + +namespace AI + +[Description("Metric data single measurement.")] +struct DataPoint +{ + [Description("Name of the metric.")] + [MaxStringLength("1024")] + 10: required string name; + + [Description("Metric type.")] + 20: AI.DataPointType kind = Measurement; + + [Description("Metric calculated value.")] + 30: required double value; + + [Description("Metric weight of the aggregated metric. Should not be set for a measurement.")] + 40: nullable count; + + [Description("Minimum value of the aggregated metric. Should not be set for a measurement.")] + 50: nullable min; + + [Description("Maximum value of the aggregated metric. Should not be set for a measurement.")] + 60: nullable max; + + [Description("Standard deviation of the aggregated metric. Should not be set for a measurement.")] + 70: nullable stdDev; + +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/DataPointType.bond b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/DataPointType.bond new file mode 100644 index 00000000..8bb0c006 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/DataPointType.bond @@ -0,0 +1,8 @@ +namespace AI + +[Description("Type of the metric data measurement.")] +enum DataPointType +{ + Measurement, + Aggregation, +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/Domain.bond b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/Domain.bond new file mode 100644 index 00000000..a7d1c7ae --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/Domain.bond @@ -0,0 +1,7 @@ + +namespace AI + +[Description("The abstract common base of all domains.")] +struct Domain +{ +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/Envelope.bond b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/Envelope.bond new file mode 100644 index 00000000..dd744e36 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/Envelope.bond @@ -0,0 +1,49 @@ +import "Base.bond" + +namespace AI + +[Description("System variables for a telemetry item.")] +struct Envelope +{ + [Description("Envelope version. For internal use only. By assigning this the default, it will not be serialized within the payload unless changed to a value other than #1.")] + [Name("SchemaVersion")] + 10: int32 ver = 1; + + [Description("Type name of telemetry data item.")] + [Name("DataTypeName")] + [MaxStringLength("1024")] + 20: required string name; + + [Description("Event date time when telemetry item was created. This is the wall clock time on the client when the event was generated. There is no guarantee that the client's time is accurate. This field must be formatted in UTC ISO 8601 format, with a trailing 'Z' character, as described publicly on https://en.wikipedia.org/wiki/ISO_8601#UTC. Note: the number of decimal seconds digits provided are variable (and unspecified). Consumers should handle this, i.e. managed code consumers should not use format 'O' for parsing as it specifies a fixed length. Example: 2009-06-15T13:45:30.0000000Z.")] + [Name("DateTime")] + [CSType("DateTimeOffset")] + [JSType("Date")] + [HockeyAppMinDateOffsetFromNow("2592000000")] + [MinDateOffsetFromNow("172800000")] + [MaxDateOffsetFromNow("7200000")] + 30: required string time; + + [Name("SamplingRate")] + [Description("Sampling rate used in application. This telemetry item represents 1 / sampleRate actual telemetry items.")] + 40: double sampleRate = 100.0; + + [Description("Sequence field used to track absolute order of uploaded events.")] + [Name("SequenceNumber")] + [MaxStringLength("64")] + 50: string seq; + + [Description("The application's instrumentation key.")] + [Name("InstrumentationKey")] + [MaxStringLength("40")] + 60: string iKey; + + [Name("Tags")] + [TypeAlias("ContextTagKeys")] + [Description("Key/value collection of context properties. See ContextTagKeys for information on available properties.")] + 500: map tags; + + [Name("TelemetryData")] + [Description("Telemetry data item.")] + 999: Base data; + +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/EventData.bond b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/EventData.bond new file mode 100644 index 00000000..c0eb7e90 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/EventData.bond @@ -0,0 +1,26 @@ +import "Domain.bond" + +namespace AI + +[Description("Instances of Event represent structured event records that can be grouped and searched by their properties. Event data item also creates a metric of event count by name.")] +struct EventData + : Domain +{ + [Description("Schema version")] + 10: required int32 ver = 2; + + [MaxStringLength("512")] + [Description("Event name. Keep it low cardinality to allow proper grouping and useful metrics.")] + [Question("Why Custom Event name is shorter than Request name or dependency name?")] + 20: required string name; + + [Description("Collection of custom properties.")] + [MaxKeyLength("150")] + [MaxValueLength("8192")] + 100: map properties; + + [Description("Collection of custom measurements.")] + [MaxKeyLength("150")] + 200: map measurements; + +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/ExceptionData.bond b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/ExceptionData.bond new file mode 100644 index 00000000..bbebe5c0 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/ExceptionData.bond @@ -0,0 +1,33 @@ +import "Domain.bond" +import "ExceptionDetails.bond" +import "SeverityLevel.bond" + +namespace AI + +[Description("An instance of Exception represents a handled or unhandled exception that occurred during execution of the monitored application.")] +struct ExceptionData + : Domain +{ + [Description("Schema version")] + 10: required int32 ver = 2; + + [Description("Exception chain - list of inner exceptions.")] + 50: required vector exceptions; + + [Description("Severity level. Mostly used to indicate exception severity level when it is reported by logging library.")] + 60: nullable severityLevel; + + [Description("Identifier of where the exception was thrown in code. Used for exceptions grouping. Typically a combination of exception type and a function from the call stack.")] + [MaxStringLength("1024")] + 80: string problemId; + + [Description("Collection of custom properties.")] + [MaxKeyLength("150")] + [MaxValueLength("8192")] + 100: map properties; + + [Description("Collection of custom measurements.")] + [MaxKeyLength("150")] + 200: map measurements; + +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/ExceptionDetails.bond b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/ExceptionDetails.bond new file mode 100644 index 00000000..c3135b5c --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/ExceptionDetails.bond @@ -0,0 +1,32 @@ +import "StackFrame.bond" + +namespace AI + +[Description("Exception details of the exception in a chain.")] +struct ExceptionDetails +{ + [Description("In case exception is nested (outer exception contains inner one), the id and outerId properties are used to represent the nesting.")] + 10: int32 id; + + [Description("The value of outerId is a reference to an element in ExceptionDetails that represents the outer exception")] + 20: int32 outerId; + + [Description("Exception type name.")] + [MaxStringLength("1024")] + 30: required string typeName; + + [Description("Exception message.")] + [MaxStringLength("32768")] + 40: required string message; + + [Description("Indicates if full exception stack is provided in the exception. The stack may be trimmed, such as in the case of a StackOverflow exception.")] + 50: bool hasFullStack = true; + + [Description("Text describing the stack. Either stack or parsedStack should have a value.")] + [MaxStringLength("32768")] + 60: string stack; + + [Description("List of stack frames. Either stack or parsedStack should have a value.")] + 70: vector parsedStack; + +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/MessageData.bond b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/MessageData.bond new file mode 100644 index 00000000..51a4f1b6 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/MessageData.bond @@ -0,0 +1,25 @@ +import "Domain.bond" +import "SeverityLevel.bond" + +namespace AI + +[Description("Instances of Message represent printf-like trace statements that are text-searched. Log4Net, NLog and other text-based log file entries are translated into intances of this type. The message does not have measurements.")] +struct MessageData + : Domain +{ + [Description("Schema version")] + 10: required int32 ver = 2; + + [MaxStringLength("32768")] + [Description("Trace message")] + 20: required string message; + + [Description("Trace severity level.")] + 30: nullable severityLevel; + + [Description("Collection of custom properties.")] + [MaxKeyLength("150")] + [MaxValueLength("8192")] + 100: map properties; + +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/MetricData.bond b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/MetricData.bond new file mode 100644 index 00000000..8258be34 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/MetricData.bond @@ -0,0 +1,21 @@ +import "Domain.bond" +import "DataPoint.bond" + +namespace AI + +[Description("An instance of the Metric item is a list of measurements (single data points) and/or aggregations.")] +struct MetricData + : Domain +{ + [Description("Schema version")] + 10: required int32 ver = 2; + + [Description("List of metrics.")] + 20: required vector metrics; + + [Description("Collection of custom properties.")] + [MaxKeyLength("150")] + [MaxValueLength("8192")] + 100: map properties; + +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/PageViewData.bond b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/PageViewData.bond new file mode 100644 index 00000000..1d88b24c --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/PageViewData.bond @@ -0,0 +1,18 @@ +import "EventData.bond" + +namespace AI + +[Description("An instance of PageView represents a generic action on a page like a button click. It is also the base type for PageView.")] +[Alias("PageviewData;PageEventData")] +struct PageViewData + : EventData +{ + [MaxStringLength("2048")] + [Description("Request URL with all query string parameters")] + 10: string url; + + [CSType("TimeSpan")] + [Description("Request duration in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff. For a page view (PageViewData), this is the duration. For a page view with performance information (PageViewPerfData), this is the page load time.")] + 20: string duration; + +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/RemoteDependencyData.bond b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/RemoteDependencyData.bond new file mode 100644 index 00000000..5b55a850 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/RemoteDependencyData.bond @@ -0,0 +1,53 @@ +import "Domain.bond" + +namespace AI + +[Description("An instance of Remote Dependency represents an interaction of the monitored component with a remote component/service like SQL or an HTTP endpoint.")] +struct RemoteDependencyData + : Domain +{ + [Description("Schema version")] + 10: required int32 ver = 2; + + [MaxStringLength("1024")] + [Description("Name of the command initiated with this dependency call. Low cardinality value. Examples are stored procedure name and URL path template.")] + 20: required string name; + + [MaxStringLength("128")] + [Description("Identifier of a dependency call instance. Used for correlation with the request telemetry item corresponding to this dependency call.")] + 30: string id; + + [MaxStringLength("1024")] + [Description("Result code of a dependency call. Examples are SQL error code and HTTP status code.")] + 40: string resultCode; + + [CSType("TimeSpan")] + [Description("Request duration in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff.")] + [ActAsRequired("Renaming value to duration.")] + 61: required string duration; + + [Description("Indication of successfull or unsuccessfull call.")] + 120: nullable success = true; + + [MaxStringLength("8192")] + [Description("Command initiated by this dependency call. Examples are SQL statement and HTTP URL's with all query parameters.")] + 151: string data; + + [MaxStringLength("1024")] + [Description("Dependency type name. Very low cardinality value for logical grouping of dependencies and interpretation of other fields like commandName and resultCode. Examples are SQL, Azure table, and HTTP.")] + 162: string type; + + [MaxStringLength("1024")] + [Description("Target site of a dependency call. Examples are server name, host address.")] + 161: string target; + + [Description("Collection of custom properties.")] + [MaxKeyLength("150")] + [MaxValueLength("8192")] + 200: map properties; + + [Description("Collection of custom measurements.")] + [MaxKeyLength("150")] + 300: map measurements; + +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/RequestData.bond b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/RequestData.bond new file mode 100644 index 00000000..fdc2d1ae --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/RequestData.bond @@ -0,0 +1,48 @@ +import "Domain.bond" + +namespace AI + +[Description("An instance of Request represents completion of an external request to the application to do work and contains a summary of that request execution and the results.")] +struct RequestData + : Domain +{ + [Description("Schema version")] + 10: required int32 ver = 2; + + [MaxStringLength("128")] + [Description("Identifier of a request call instance. Used for correlation between request and other telemetry items.")] + 20: required string id; + + [CSType("TimeSpan")] + [Description("Request duration in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff.")] + 50: required string duration; + + [MaxStringLength("1024")] + [Description("Result of a request execution. HTTP status code for HTTP requests.")] + 60: required string responseCode; + + [Description("Indication of successfull or unsuccessfull call.")] + 70: required bool success; + + [MaxStringLength("1024")] + [Description("Source of the request. Examples are the instrumentation key of the caller or the ip address of the caller.")] + 29: string source; + + [MaxStringLength("1024")] + [Description("Name of the request. Represents code path taken to process request. Low cardinality value to allow better grouping of requests. For HTTP requests it represents the HTTP method and URL path template like 'GET /values/{id}'.")] + 30: string name; + + [MaxStringLength("2048")] + [Description("Request URL with all query string parameters.")] + 90: string url; + + [Description("Collection of custom properties.")] + [MaxKeyLength("150")] + [MaxValueLength("8192")] + 100: map properties; + + [Description("Collection of custom measurements.")] + [MaxKeyLength("150")] + 200: map measurements; + +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/SeverityLevel.bond b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/SeverityLevel.bond new file mode 100644 index 00000000..8d248f80 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/SeverityLevel.bond @@ -0,0 +1,11 @@ +namespace AI + +[Description("Defines the level of severity for the event.")] +enum SeverityLevel +{ + Verbose, + Information, + Warning, + Error, + Critical, +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/StackFrame.bond b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/StackFrame.bond new file mode 100644 index 00000000..227daf48 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/PublicSchema/StackFrame.bond @@ -0,0 +1,25 @@ + +namespace AI + +[Description("Stack frame information.")] +struct StackFrame +{ + [Description("Level in the call stack. For the long stacks SDK may not report every function in a call stack.")] + 10: required int32 level; + + [Description("Method name.")] + [MaxStringLength("1024")] + 20: required string method; + + [Description("Name of the assembly (dll, jar, etc.) containing this function.")] + [MaxStringLength("1024")] + 30: string assembly; + + [Description("File name or URL of the method implementation.")] + [MaxStringLength("1024")] + 50: string fileName; + + [Description("Line number of the code implementation.")] + 60: int32 line; + +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/generateSchema.ps1 b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/generateSchema.ps1 new file mode 100644 index 00000000..edbd23b5 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/Schema/generateSchema.ps1 @@ -0,0 +1,60 @@ +$generatorPath = "C:\src\mseng\AppInsights-Common" +$publicSchemaLocation = "https://raw.githubusercontent.com/Microsoft/ApplicationInsights-Home/master/EndpointSpecs/Schemas/Bond" + + +$currentDir = $scriptPath = split-path -parent $MyInvocation.MyCommand.Definition +#fix path +$generatorPath = "$generatorPath\..\bin\Debug\BondSchemaGenerator\BondSchemaGenerator" + + +##################################################################### +## PUBLIC SCHEMA +##################################################################### + +mkdir -Force $currentDir\PublicSchema + +del "$currentDir\PublicSchema\*.bond" + +$argumentList = "" + +# Download public schema from the github +@( +"AvailabilityData.bond", +"Base.bond", +"ContextTagKeys.bond", +"Data.bond", +"DataPoint.bond", +"DataPointType.bond", +"Domain.bond", +"Envelope.bond", +"EventData.bond", +"ExceptionData.bond", +"ExceptionDetails.bond", +"MessageData.bond", +"MetricData.bond", +"PageViewData.bond", +"RemoteDependencyData.bond", +"RequestData.bond", +"SeverityLevel.bond", +"StackFrame.bond" +) | ForEach-Object { + $fileName = $_ + $argumentList = "$argumentList -i $currentDir\PublicSchema\$fileName" + & Invoke-WebRequest -o "$currentDir\PublicSchema\$fileName" "$publicSchemaLocation/$fileName" +} + +$argumentList = "-v $argumentList -o $currentDir\PublicSchema\ -e TypeScriptLanguage -t TypeScriptLayout -n AI --flatten true" + +# Generate public schema using bond generator +$p1 = Start-Process "$generatorPath\BondSchemaGenerator.exe" -ArgumentList $argumentList -wait -NoNewWindow -PassThru +$p1.HasExited +$p1.ExitCode + +del "$currentDir\..\Declarations\Contracts\Generated\*.ts" + +dir "$currentDir\PublicSchema\Contracts\Generated\*.ts" | ForEach-Object { + $fileName = $_ + copy $fileName "$currentDir\..\Declarations\Contracts\Generated\" +} + +del "$currentDir\PublicSchema\Contracts\Generated\*.ts" \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/applicationinsights.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/applicationinsights.js new file mode 100644 index 00000000..04ebbe8d --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/applicationinsights.js @@ -0,0 +1,226 @@ +"use strict"; +var CorrelationContextManager = require("./AutoCollection/CorrelationContextManager"); // Keep this first +var AutoCollectConsole = require("./AutoCollection/Console"); +var AutoCollectExceptions = require("./AutoCollection/Exceptions"); +var AutoCollectPerformance = require("./AutoCollection/Performance"); +var AutoCollectClientRequests = require("./AutoCollection/ClientRequests"); +var AutoCollectServerRequests = require("./AutoCollection/ServerRequests"); +var Client = require("./Library/Client"); +var Logging = require("./Library/Logging"); +/** + * The singleton meta class for the default client of the client. This class is used to setup/start and configure + * the auto-collection behavior of the application insights module. + */ +var ApplicationInsights = (function () { + function ApplicationInsights() { + } + /** + * Initializes a client with the given instrumentation key, if this is not specified, the value will be + * read from the environment variable APPINSIGHTS_INSTRUMENTATIONKEY + * @returns {ApplicationInsights/Client} a new client + */ + ApplicationInsights.getClient = function (instrumentationKey) { + return new Client(instrumentationKey); + }; + /** + * Initializes the default client of the client and sets the default configuration + * @param instrumentationKey the instrumentation key to use. Optional, if this is not specified, the value will be + * read from the environment variable APPINSIGHTS_INSTRUMENTATIONKEY + * @returns {ApplicationInsights} this class + */ + ApplicationInsights.setup = function (instrumentationKey) { + if (!ApplicationInsights.client) { + ApplicationInsights.client = ApplicationInsights.getClient(instrumentationKey); + ApplicationInsights._console = new AutoCollectConsole(ApplicationInsights.client); + ApplicationInsights._exceptions = new AutoCollectExceptions(ApplicationInsights.client); + ApplicationInsights._performance = new AutoCollectPerformance(ApplicationInsights.client); + ApplicationInsights._serverRequests = new AutoCollectServerRequests(ApplicationInsights.client); + ApplicationInsights._clientRequests = new AutoCollectClientRequests(ApplicationInsights.client); + } + else { + Logging.info("The default client is already setup"); + } + if (ApplicationInsights.client && ApplicationInsights.client.channel) { + ApplicationInsights.client.channel.setOfflineMode(ApplicationInsights._isOfflineMode); + } + return ApplicationInsights; + }; + /** + * Starts automatic collection of telemetry. Prior to calling start no telemetry will be collected + * @returns {ApplicationInsights} this class + */ + ApplicationInsights.start = function () { + if (!!this.client) { + ApplicationInsights._isStarted = true; + ApplicationInsights._console.enable(ApplicationInsights._isConsole); + ApplicationInsights._exceptions.enable(ApplicationInsights._isExceptions); + ApplicationInsights._performance.enable(ApplicationInsights._isPerformance); + ApplicationInsights._serverRequests.useAutoCorrelation(ApplicationInsights._isCorrelating); + ApplicationInsights._serverRequests.enable(ApplicationInsights._isRequests); + ApplicationInsights._clientRequests.enable(ApplicationInsights._isDependencies); + } + else { + Logging.warn("Start cannot be called before setup"); + } + return ApplicationInsights; + }; + /** + * Returns an object that is shared across all code handling a given request. This can be used similarly to thread-local storage in other languages. + * Properties set on this object will be available to telemetry processors. + * + * Do not store sensitive information here. + * Custom properties set on this object can be exposed in a future SDK release via outgoing HTTP headers. + * This is to allow for correlating data cross-component. + * + * This method will return null if automatic dependency correlation is disabled. + * @returns A plain object for request storage or null if automatic dependency correlation is disabled. + */ + ApplicationInsights.getCorrelationContext = function () { + if (this._isCorrelating) { + return CorrelationContextManager.CorrelationContextManager.getCurrentContext(); + } + return null; + }; + /** + * Returns a function that will get the same correlation context within its function body as the code executing this function. + * Use this method if automatic dependency correlation is not propagating correctly to an asynchronous callback. + */ + ApplicationInsights.wrapWithCorrelationContext = function (fn) { + return CorrelationContextManager.CorrelationContextManager.wrapCallback(fn); + }; + /** + * Sets the state of console tracking (enabled by default) + * @param value if true console activity will be sent to Application Insights + * @returns {ApplicationInsights} this class + */ + ApplicationInsights.setAutoCollectConsole = function (value) { + ApplicationInsights._isConsole = value; + if (ApplicationInsights._isStarted) { + ApplicationInsights._console.enable(value); + } + return ApplicationInsights; + }; + /** + * Sets the state of exception tracking (enabled by default) + * @param value if true uncaught exceptions will be sent to Application Insights + * @returns {ApplicationInsights} this class + */ + ApplicationInsights.setAutoCollectExceptions = function (value) { + ApplicationInsights._isExceptions = value; + if (ApplicationInsights._isStarted) { + ApplicationInsights._exceptions.enable(value); + } + return ApplicationInsights; + }; + /** + * Sets the state of performance tracking (enabled by default) + * @param value if true performance counters will be collected every second and sent to Application Insights + * @returns {ApplicationInsights} this class + */ + ApplicationInsights.setAutoCollectPerformance = function (value) { + ApplicationInsights._isPerformance = value; + if (ApplicationInsights._isStarted) { + ApplicationInsights._performance.enable(value); + } + return ApplicationInsights; + }; + /** + * Sets the state of request tracking (enabled by default) + * @param value if true requests will be sent to Application Insights + * @returns {ApplicationInsights} this class + */ + ApplicationInsights.setAutoCollectRequests = function (value) { + ApplicationInsights._isRequests = value; + if (ApplicationInsights._isStarted) { + ApplicationInsights._serverRequests.enable(value); + } + return ApplicationInsights; + }; + /** + * Sets the state of dependency tracking (enabled by default) + * @param value if true dependencies will be sent to Application Insights + * @returns {ApplicationInsights} this class + */ + ApplicationInsights.setAutoCollectDependencies = function (value) { + ApplicationInsights._isDependencies = value; + if (ApplicationInsights._isStarted) { + ApplicationInsights._clientRequests.enable(value); + } + return ApplicationInsights; + }; + /** + * Sets the state of automatic dependency correlation (enabled by default) + * @param value if true dependencies will be correlated with requests + * @returns {ApplicationInsights} this class + */ + ApplicationInsights.setAutoDependencyCorrelation = function (value) { + ApplicationInsights._isCorrelating = value; + if (ApplicationInsights._isStarted) { + ApplicationInsights._serverRequests.useAutoCorrelation(value); + } + return ApplicationInsights; + }; + /** + * Enable or disable offline mode to cache events when client is offline (disabled by default) + * @param value if true events that occured while client is offline will be cached on disk + * @param resendInterval. The wait interval for resending cached events. + * @returns {ApplicationInsights} this class + */ + ApplicationInsights.setOfflineMode = function (value, resendInterval) { + ApplicationInsights._isOfflineMode = value; + if (ApplicationInsights.client && ApplicationInsights.client.channel) { + ApplicationInsights.client.channel.setOfflineMode(value, resendInterval); + } + return ApplicationInsights; + }; + /** + * Enables verbose debug logging + * @returns {ApplicationInsights} this class + */ + ApplicationInsights.enableVerboseLogging = function (enableWarningLogging) { + if (enableWarningLogging === void 0) { enableWarningLogging = true; } + Logging.enableDebug = true; + Logging.disableWarnings = !enableWarningLogging; + return ApplicationInsights; + }; + /** + * Disables verbose debug and warning logging + */ + ApplicationInsights.disableConsoleLogging = function () { + Logging.enableDebug = false; + Logging.disableWarnings = true; + return ApplicationInsights; + }; + /** + * Disposes the default client and all the auto collectors so they can be reinitialized with different configuration + */ + ApplicationInsights.dispose = function () { + ApplicationInsights.client = null; + ApplicationInsights._isStarted = false; + if (ApplicationInsights._console) { + ApplicationInsights._console.dispose(); + } + if (ApplicationInsights._exceptions) { + ApplicationInsights._exceptions.dispose(); + } + if (ApplicationInsights._performance) { + ApplicationInsights._performance.dispose(); + } + if (ApplicationInsights._serverRequests) { + ApplicationInsights._serverRequests.dispose(); + } + if (ApplicationInsights._clientRequests) { + ApplicationInsights._clientRequests.dispose(); + } + }; + ApplicationInsights._isConsole = true; + ApplicationInsights._isExceptions = true; + ApplicationInsights._isPerformance = true; + ApplicationInsights._isRequests = true; + ApplicationInsights._isDependencies = true; + ApplicationInsights._isOfflineMode = false; + ApplicationInsights._isCorrelating = false; + ApplicationInsights._isStarted = false; + return ApplicationInsights; +}()); +module.exports = ApplicationInsights; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/package.json b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/package.json new file mode 100644 index 00000000..571c081f --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/package.json @@ -0,0 +1,57 @@ +{ + "name": "applicationinsights", + "license": "MIT", + "bugs": "https://github.com/Microsoft/ApplicationInsights-node.js/issues", + "version": "0.19.0", + "description": "Microsoft Application Insights module for Node.JS", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/ApplicationInsights-node.js" + }, + "main": "applicationinsights", + "keywords": [ + "exception monitoring", + "request monitoring", + "performance monitoring", + "application insights", + "microsoft", + "azure" + ], + "contributors": [ + { + "name": "Application Insights Developer Support", + "email": "aidevsupport@microsoft.com" + }, + { + "name": "kszostak", + "email": "kszostak@microsoft.com" + }, + { + "name": "southwood", + "url": "https://github.com/southwood" + }, + { + "name": "bogdanbe", + "email": "bogdanbe@microsoft.com" + }, + { + "name": "lukim", + "email": "lukim@microsoft.com" + } + ], + "scripts": { + "prepublish": "tsc --module commonjs --declaration applicationinsights.ts", + "pretest": "find Tests -type f -name \"*.ts\" | xargs tsc --module commonjs", + "test": "./node_modules/mocha/bin/mocha ./Tests --recursive" + }, + "devDependencies": { + "mocha": "3.1.2", + "node-mocks-http": "1.2.3", + "sinon": "1.17.6", + "typescript": "2.0.10", + "typings": "2.0.0" + }, + "dependencies": { + "zone.js": "0.7.6" + } +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/tsconfig.json b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/tsconfig.json new file mode 100644 index 00000000..187f7e03 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "commonjs", + "sourceMap": true + } +} \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/typings.json b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/typings.json new file mode 100644 index 00000000..cce30970 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/typings.json @@ -0,0 +1,7 @@ +{ + "globalDependencies": { + "mocha": "registry:dt/mocha#2.2.5+20161028141524", + "node": "registry:dt/node#0.10.1+20161019125345", + "sinon": "registry:dt/sinon#1.16.0+20160924120326" + } +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/typings/globals/mocha/typings.json b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/typings/globals/mocha/typings.json new file mode 100644 index 00000000..160c4a35 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/typings/globals/mocha/typings.json @@ -0,0 +1,8 @@ +{ + "resolution": "main", + "tree": { + "src": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/7155ef2d2dced331b5e389363a4180957e76f95e/mocha/mocha.d.ts", + "raw": "registry:dt/mocha#2.2.5+20161028141524", + "typings": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/7155ef2d2dced331b5e389363a4180957e76f95e/mocha/mocha.d.ts" + } +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/typings/globals/node/typings.json b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/typings/globals/node/typings.json new file mode 100644 index 00000000..6de5acf1 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/typings/globals/node/typings.json @@ -0,0 +1,8 @@ +{ + "resolution": "main", + "tree": { + "src": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/988a48ab2cfff3243868d70d836332a118d9f060/node/node-0.10.d.ts", + "raw": "registry:dt/node#0.10.1+20161019125345", + "typings": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/988a48ab2cfff3243868d70d836332a118d9f060/node/node-0.10.d.ts" + } +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/typings/globals/sinon/typings.json b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/typings/globals/sinon/typings.json new file mode 100644 index 00000000..c48da655 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/applicationinsights/typings/globals/sinon/typings.json @@ -0,0 +1,8 @@ +{ + "resolution": "main", + "tree": { + "src": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/4bb4c29cad26ee049899b35da7d9502c3c73fde6/sinon/sinon.d.ts", + "raw": "registry:dt/sinon#1.16.0+20160924120326", + "typings": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/4bb4c29cad26ee049899b35da7d9502c3c73fde6/sinon/sinon.d.ts" + } +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/CHANGELOG.md b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/CHANGELOG.md new file mode 100644 index 00000000..36f798b0 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/CHANGELOG.md @@ -0,0 +1,184 @@ +# Release history + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +
+ Guiding Principles + +- Changelogs are for humans, not machines. +- There should be an entry for every single version. +- The same types of changes should be grouped. +- Versions and sections should be linkable. +- The latest version comes first. +- The release date of each versions is displayed. +- Mention whether you follow Semantic Versioning. + +
+ +
+ Types of changes + +Changelog entries are classified using the following labels _(from [keep-a-changelog](http://keepachangelog.com/)_): + +- `Added` for new features. +- `Changed` for changes in existing functionality. +- `Deprecated` for soon-to-be removed features. +- `Removed` for now removed features. +- `Fixed` for any bug fixes. +- `Security` in case of vulnerabilities. + +
+ +## [3.0.0] - 2018-04-08 + +v3.0 is a complete refactor, resulting in a faster, smaller codebase, with fewer deps, and a more accurate parser and compiler. + +**Breaking Changes** + +- The undocumented `.makeRe` method was removed + +**Non-breaking changes** + +- Caching was removed + +## [2.3.2] - 2018-04-08 + +- start refactoring +- cover sets +- better range handling + +## [2.3.1] - 2018-02-17 + +- Remove unnecessary escape in Regex. (#14) + +## [2.3.0] - 2017-10-19 + +- minor code reorganization +- optimize regex +- expose `maxLength` option + +## [2.2.1] - 2017-05-30 + +- don't condense when braces contain extglobs + +## [2.2.0] - 2017-05-28 + +- ensure word boundaries are preserved +- fixes edge case where extglob characters precede a brace pattern + +## [2.1.1] - 2017-04-27 + +- use snapdragon-node +- handle edge case +- optimizations, lint + +## [2.0.4] - 2017-04-11 + +- pass opts to compiler +- minor optimization in create method +- re-write parser handlers to remove negation regex + +## [2.0.3] - 2016-12-10 + +- use split-string +- clear queue at the end +- adds sequences example +- add unit tests + +## [2.0.2] - 2016-10-21 + +- fix comma handling in nested extglobs + +## [2.0.1] - 2016-10-20 + +- add comments +- more tests, ensure quotes are stripped + +## [2.0.0] - 2016-10-19 + +- don't expand braces inside character classes +- add quantifier pattern + +## [1.8.5] - 2016-05-21 + +- Refactor (#10) + +## [1.8.4] - 2016-04-20 + +- fixes https://github.com/jonschlinkert/micromatch/issues/66 + +## [1.8.0] - 2015-03-18 + +- adds exponent examples, tests +- fixes the first example in https://github.com/jonschlinkert/micromatch/issues/38 + +## [1.6.0] - 2015-01-30 + +- optimizations, `bash` mode: +- improve path escaping + +## [1.5.0] - 2015-01-28 + +- Merge pull request #5 from eush77/lib-files + +## [1.4.0] - 2015-01-24 + +- add extglob tests +- externalize exponent function +- better whitespace handling + +## [1.3.0] - 2015-01-24 + +- make regex patterns explicity + +## [1.1.0] - 2015-01-11 + +- don't create a match group with `makeRe` + +## [1.0.0] - 2014-12-23 + +- Merge commit '97b05f5544f8348736a8efaecf5c32bbe3e2ad6e' +- support empty brace syntax +- better bash coverage +- better support for regex strings + +## [0.1.4] - 2014-11-14 + +- improve recognition of bad args, recognize mismatched argument types +- support escaping +- remove pathname-expansion +- support whitespace in patterns + +## [0.1.0] + +- first commit + +[2.3.2]: https://github.com/micromatch/braces/compare/2.3.1...2.3.2 +[2.3.1]: https://github.com/micromatch/braces/compare/2.3.0...2.3.1 +[2.3.0]: https://github.com/micromatch/braces/compare/2.2.1...2.3.0 +[2.2.1]: https://github.com/micromatch/braces/compare/2.2.0...2.2.1 +[2.2.0]: https://github.com/micromatch/braces/compare/2.1.1...2.2.0 +[2.1.1]: https://github.com/micromatch/braces/compare/2.1.0...2.1.1 +[2.1.0]: https://github.com/micromatch/braces/compare/2.0.4...2.1.0 +[2.0.4]: https://github.com/micromatch/braces/compare/2.0.3...2.0.4 +[2.0.3]: https://github.com/micromatch/braces/compare/2.0.2...2.0.3 +[2.0.2]: https://github.com/micromatch/braces/compare/2.0.1...2.0.2 +[2.0.1]: https://github.com/micromatch/braces/compare/2.0.0...2.0.1 +[2.0.0]: https://github.com/micromatch/braces/compare/1.8.5...2.0.0 +[1.8.5]: https://github.com/micromatch/braces/compare/1.8.4...1.8.5 +[1.8.4]: https://github.com/micromatch/braces/compare/1.8.0...1.8.4 +[1.8.0]: https://github.com/micromatch/braces/compare/1.6.0...1.8.0 +[1.6.0]: https://github.com/micromatch/braces/compare/1.5.0...1.6.0 +[1.5.0]: https://github.com/micromatch/braces/compare/1.4.0...1.5.0 +[1.4.0]: https://github.com/micromatch/braces/compare/1.3.0...1.4.0 +[1.3.0]: https://github.com/micromatch/braces/compare/1.2.0...1.3.0 +[1.2.0]: https://github.com/micromatch/braces/compare/1.1.0...1.2.0 +[1.1.0]: https://github.com/micromatch/braces/compare/1.0.0...1.1.0 +[1.0.0]: https://github.com/micromatch/braces/compare/0.1.4...1.0.0 +[0.1.4]: https://github.com/micromatch/braces/compare/0.1.0...0.1.4 + +[Unreleased]: https://github.com/micromatch/braces/compare/0.1.0...HEAD +[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/LICENSE b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/LICENSE new file mode 100644 index 00000000..d32ab442 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2018, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/README.md b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/README.md new file mode 100644 index 00000000..cba2f600 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/README.md @@ -0,0 +1,593 @@ +# braces [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W8YFZ425KND68) [![NPM version](https://img.shields.io/npm/v/braces.svg?style=flat)](https://www.npmjs.com/package/braces) [![NPM monthly downloads](https://img.shields.io/npm/dm/braces.svg?style=flat)](https://npmjs.org/package/braces) [![NPM total downloads](https://img.shields.io/npm/dt/braces.svg?style=flat)](https://npmjs.org/package/braces) [![Linux Build Status](https://img.shields.io/travis/micromatch/braces.svg?style=flat&label=Travis)](https://travis-ci.org/micromatch/braces) + +> Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed. + +Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save braces +``` + +## v3.0.0 Released!! + +See the [changelog](CHANGELOG.md) for details. + +## Why use braces? + +Brace patterns make globs more powerful by adding the ability to match specific ranges and sequences of characters. + +* **Accurate** - complete support for the [Bash 4.3 Brace Expansion](www.gnu.org/software/bash/) specification (passes all of the Bash braces tests) +* **[fast and performant](#benchmarks)** - Starts fast, runs fast and [scales well](#performance) as patterns increase in complexity. +* **Organized code base** - The parser and compiler are easy to maintain and update when edge cases crop up. +* **Well-tested** - Thousands of test assertions, and passes all of the Bash, minimatch, and [brace-expansion](https://github.com/juliangruber/brace-expansion) unit tests (as of the date this was written). +* **Safer** - You shouldn't have to worry about users defining aggressive or malicious brace patterns that can break your application. Braces takes measures to prevent malicious regex that can be used for DDoS attacks (see [catastrophic backtracking](https://www.regular-expressions.info/catastrophic.html)). +* [Supports lists](#lists) - (aka "sets") `a/{b,c}/d` => `['a/b/d', 'a/c/d']` +* [Supports sequences](#sequences) - (aka "ranges") `{01..03}` => `['01', '02', '03']` +* [Supports steps](#steps) - (aka "increments") `{2..10..2}` => `['2', '4', '6', '8', '10']` +* [Supports escaping](#escaping) - To prevent evaluation of special characters. + +## Usage + +The main export is a function that takes one or more brace `patterns` and `options`. + +```js +const braces = require('braces'); +// braces(patterns[, options]); + +console.log(braces(['{01..05}', '{a..e}'])); +//=> ['(0[1-5])', '([a-e])'] + +console.log(braces(['{01..05}', '{a..e}'], { expand: true })); +//=> ['01', '02', '03', '04', '05', 'a', 'b', 'c', 'd', 'e'] +``` + +### Brace Expansion vs. Compilation + +By default, brace patterns are compiled into strings that are optimized for creating regular expressions and matching. + +**Compiled** + +```js +console.log(braces('a/{x,y,z}/b')); +//=> ['a/(x|y|z)/b'] +console.log(braces(['a/{01..20}/b', 'a/{1..5}/b'])); +//=> [ 'a/(0[1-9]|1[0-9]|20)/b', 'a/([1-5])/b' ] +``` + +**Expanded** + +Enable brace expansion by setting the `expand` option to true, or by using [braces.expand()](#expand) (returns an array similar to what you'd expect from Bash, or `echo {1..5}`, or [minimatch](https://github.com/isaacs/minimatch)): + +```js +console.log(braces('a/{x,y,z}/b', { expand: true })); +//=> ['a/x/b', 'a/y/b', 'a/z/b'] + +console.log(braces.expand('{01..10}')); +//=> ['01','02','03','04','05','06','07','08','09','10'] +``` + +### Lists + +Expand lists (like Bash "sets"): + +```js +console.log(braces('a/{foo,bar,baz}/*.js')); +//=> ['a/(foo|bar|baz)/*.js'] + +console.log(braces.expand('a/{foo,bar,baz}/*.js')); +//=> ['a/foo/*.js', 'a/bar/*.js', 'a/baz/*.js'] +``` + +### Sequences + +Expand ranges of characters (like Bash "sequences"): + +```js +console.log(braces.expand('{1..3}')); // ['1', '2', '3'] +console.log(braces.expand('a/{1..3}/b')); // ['a/1/b', 'a/2/b', 'a/3/b'] +console.log(braces('{a..c}', { expand: true })); // ['a', 'b', 'c'] +console.log(braces('foo/{a..c}', { expand: true })); // ['foo/a', 'foo/b', 'foo/c'] + +// supports zero-padded ranges +console.log(braces('a/{01..03}/b')); //=> ['a/(0[1-3])/b'] +console.log(braces('a/{001..300}/b')); //=> ['a/(0{2}[1-9]|0[1-9][0-9]|[12][0-9]{2}|300)/b'] +``` + +See [fill-range](https://github.com/jonschlinkert/fill-range) for all available range-expansion options. + +### Steppped ranges + +Steps, or increments, may be used with ranges: + +```js +console.log(braces.expand('{2..10..2}')); +//=> ['2', '4', '6', '8', '10'] + +console.log(braces('{2..10..2}')); +//=> ['(2|4|6|8|10)'] +``` + +When the [.optimize](#optimize) method is used, or [options.optimize](#optionsoptimize) is set to true, sequences are passed to [to-regex-range](https://github.com/jonschlinkert/to-regex-range) for expansion. + +### Nesting + +Brace patterns may be nested. The results of each expanded string are not sorted, and left to right order is preserved. + +**"Expanded" braces** + +```js +console.log(braces.expand('a{b,c,/{x,y}}/e')); +//=> ['ab/e', 'ac/e', 'a/x/e', 'a/y/e'] + +console.log(braces.expand('a/{x,{1..5},y}/c')); +//=> ['a/x/c', 'a/1/c', 'a/2/c', 'a/3/c', 'a/4/c', 'a/5/c', 'a/y/c'] +``` + +**"Optimized" braces** + +```js +console.log(braces('a{b,c,/{x,y}}/e')); +//=> ['a(b|c|/(x|y))/e'] + +console.log(braces('a/{x,{1..5},y}/c')); +//=> ['a/(x|([1-5])|y)/c'] +``` + +### Escaping + +**Escaping braces** + +A brace pattern will not be expanded or evaluted if _either the opening or closing brace is escaped_: + +```js +console.log(braces.expand('a\\{d,c,b}e')); +//=> ['a{d,c,b}e'] + +console.log(braces.expand('a{d,c,b\\}e')); +//=> ['a{d,c,b}e'] +``` + +**Escaping commas** + +Commas inside braces may also be escaped: + +```js +console.log(braces.expand('a{b\\,c}d')); +//=> ['a{b,c}d'] + +console.log(braces.expand('a{d\\,c,b}e')); +//=> ['ad,ce', 'abe'] +``` + +**Single items** + +Following bash conventions, a brace pattern is also not expanded when it contains a single character: + +```js +console.log(braces.expand('a{b}c')); +//=> ['a{b}c'] +``` + +## Options + +### options.maxLength + +**Type**: `Number` + +**Default**: `65,536` + +**Description**: Limit the length of the input string. Useful when the input string is generated or your application allows users to pass a string, et cetera. + +```js +console.log(braces('a/{b,c}/d', { maxLength: 3 })); //=> throws an error +``` + +### options.expand + +**Type**: `Boolean` + +**Default**: `undefined` + +**Description**: Generate an "expanded" brace pattern (alternatively you can use the `braces.expand()` method, which does the same thing). + +```js +console.log(braces('a/{b,c}/d', { expand: true })); +//=> [ 'a/b/d', 'a/c/d' ] +``` + +### options.nodupes + +**Type**: `Boolean` + +**Default**: `undefined` + +**Description**: Remove duplicates from the returned array. + +### options.rangeLimit + +**Type**: `Number` + +**Default**: `1000` + +**Description**: To prevent malicious patterns from being passed by users, an error is thrown when `braces.expand()` is used or `options.expand` is true and the generated range will exceed the `rangeLimit`. + +You can customize `options.rangeLimit` or set it to `Inifinity` to disable this altogether. + +**Examples** + +```js +// pattern exceeds the "rangeLimit", so it's optimized automatically +console.log(braces.expand('{1..1000}')); +//=> ['([1-9]|[1-9][0-9]{1,2}|1000)'] + +// pattern does not exceed "rangeLimit", so it's NOT optimized +console.log(braces.expand('{1..100}')); +//=> ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '100'] +``` + +### options.transform + +**Type**: `Function` + +**Default**: `undefined` + +**Description**: Customize range expansion. + +**Example: Transforming non-numeric values** + +```js +const alpha = braces.expand('x/{a..e}/y', { + transform(value, index) { + // When non-numeric values are passed, "value" is a character code. + return 'foo/' + String.fromCharCode(value) + '-' + index; + } +}); +console.log(alpha); +//=> [ 'x/foo/a-0/y', 'x/foo/b-1/y', 'x/foo/c-2/y', 'x/foo/d-3/y', 'x/foo/e-4/y' ] +``` + +**Example: Transforming numeric values** + +```js +const numeric = braces.expand('{1..5}', { + transform(value) { + // when numeric values are passed, "value" is a number + return 'foo/' + value * 2; + } +}); +console.log(numeric); +//=> [ 'foo/2', 'foo/4', 'foo/6', 'foo/8', 'foo/10' ] +``` + +### options.quantifiers + +**Type**: `Boolean` + +**Default**: `undefined` + +**Description**: In regular expressions, quanitifiers can be used to specify how many times a token can be repeated. For example, `a{1,3}` will match the letter `a` one to three times. + +Unfortunately, regex quantifiers happen to share the same syntax as [Bash lists](#lists) + +The `quantifiers` option tells braces to detect when [regex quantifiers](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#quantifiers) are defined in the given pattern, and not to try to expand them as lists. + +**Examples** + +```js +const braces = require('braces'); +console.log(braces('a/b{1,3}/{x,y,z}')); +//=> [ 'a/b(1|3)/(x|y|z)' ] +console.log(braces('a/b{1,3}/{x,y,z}', {quantifiers: true})); +//=> [ 'a/b{1,3}/(x|y|z)' ] +console.log(braces('a/b{1,3}/{x,y,z}', {quantifiers: true, expand: true})); +//=> [ 'a/b{1,3}/x', 'a/b{1,3}/y', 'a/b{1,3}/z' ] +``` + +### options.unescape + +**Type**: `Boolean` + +**Default**: `undefined` + +**Description**: Strip backslashes that were used for escaping from the result. + +## What is "brace expansion"? + +Brace expansion is a type of parameter expansion that was made popular by unix shells for generating lists of strings, as well as regex-like matching when used alongside wildcards (globs). + +In addition to "expansion", braces are also used for matching. In other words: + +* [brace expansion](#brace-expansion) is for generating new lists +* [brace matching](#brace-matching) is for filtering existing lists + +
+More about brace expansion (click to expand) + +There are two main types of brace expansion: + +1. **lists**: which are defined using comma-separated values inside curly braces: `{a,b,c}` +2. **sequences**: which are defined using a starting value and an ending value, separated by two dots: `a{1..3}b`. Optionally, a third argument may be passed to define a "step" or increment to use: `a{1..100..10}b`. These are also sometimes referred to as "ranges". + +Here are some example brace patterns to illustrate how they work: + +**Sets** + +``` +{a,b,c} => a b c +{a,b,c}{1,2} => a1 a2 b1 b2 c1 c2 +``` + +**Sequences** + +``` +{1..9} => 1 2 3 4 5 6 7 8 9 +{4..-4} => 4 3 2 1 0 -1 -2 -3 -4 +{1..20..3} => 1 4 7 10 13 16 19 +{a..j} => a b c d e f g h i j +{j..a} => j i h g f e d c b a +{a..z..3} => a d g j m p s v y +``` + +**Combination** + +Sets and sequences can be mixed together or used along with any other strings. + +``` +{a,b,c}{1..3} => a1 a2 a3 b1 b2 b3 c1 c2 c3 +foo/{a,b,c}/bar => foo/a/bar foo/b/bar foo/c/bar +``` + +The fact that braces can be "expanded" from relatively simple patterns makes them ideal for quickly generating test fixtures, file paths, and similar use cases. + +## Brace matching + +In addition to _expansion_, brace patterns are also useful for performing regular-expression-like matching. + +For example, the pattern `foo/{1..3}/bar` would match any of following strings: + +``` +foo/1/bar +foo/2/bar +foo/3/bar +``` + +But not: + +``` +baz/1/qux +baz/2/qux +baz/3/qux +``` + +Braces can also be combined with [glob patterns](https://github.com/jonschlinkert/micromatch) to perform more advanced wildcard matching. For example, the pattern `*/{1..3}/*` would match any of following strings: + +``` +foo/1/bar +foo/2/bar +foo/3/bar +baz/1/qux +baz/2/qux +baz/3/qux +``` + +## Brace matching pitfalls + +Although brace patterns offer a user-friendly way of matching ranges or sets of strings, there are also some major disadvantages and potential risks you should be aware of. + +### tldr + +**"brace bombs"** + +* brace expansion can eat up a huge amount of processing resources +* as brace patterns increase _linearly in size_, the system resources required to expand the pattern increase exponentially +* users can accidentally (or intentially) exhaust your system's resources resulting in the equivalent of a DoS attack (bonus: no programming knowledge is required!) + +For a more detailed explanation with examples, see the [geometric complexity](#geometric-complexity) section. + +### The solution + +Jump to the [performance section](#performance) to see how Braces solves this problem in comparison to other libraries. + +### Geometric complexity + +At minimum, brace patterns with sets limited to two elements have quadradic or `O(n^2)` complexity. But the complexity of the algorithm increases exponentially as the number of sets, _and elements per set_, increases, which is `O(n^c)`. + +For example, the following sets demonstrate quadratic (`O(n^2)`) complexity: + +``` +{1,2}{3,4} => (2X2) => 13 14 23 24 +{1,2}{3,4}{5,6} => (2X2X2) => 135 136 145 146 235 236 245 246 +``` + +But add an element to a set, and we get a n-fold Cartesian product with `O(n^c)` complexity: + +``` +{1,2,3}{4,5,6}{7,8,9} => (3X3X3) => 147 148 149 157 158 159 167 168 169 247 248 + 249 257 258 259 267 268 269 347 348 349 357 + 358 359 367 368 369 +``` + +Now, imagine how this complexity grows given that each element is a n-tuple: + +``` +{1..100}{1..100} => (100X100) => 10,000 elements (38.4 kB) +{1..100}{1..100}{1..100} => (100X100X100) => 1,000,000 elements (5.76 MB) +``` + +Although these examples are clearly contrived, they demonstrate how brace patterns can quickly grow out of control. + +**More information** + +Interested in learning more about brace expansion? + +* [linuxjournal/bash-brace-expansion](http://www.linuxjournal.com/content/bash-brace-expansion) +* [rosettacode/Brace_expansion](https://rosettacode.org/wiki/Brace_expansion) +* [cartesian product](https://en.wikipedia.org/wiki/Cartesian_product) + +
+ +## Performance + +Braces is not only screaming fast, it's also more accurate the other brace expansion libraries. + +### Better algorithms + +Fortunately there is a solution to the ["brace bomb" problem](#brace-matching-pitfalls): _don't expand brace patterns into an array when they're used for matching_. + +Instead, convert the pattern into an optimized regular expression. This is easier said than done, and braces is the only library that does this currently. + +**The proof is in the numbers** + +Minimatch gets exponentially slower as patterns increase in complexity, braces does not. The following results were generated using `braces()` and `minimatch.braceExpand()`, respectively. + +| **Pattern** | **braces** | **[minimatch][]** | +| --- | --- | --- | +| `{1..9007199254740991}`[^1] | `298 B` (5ms 459μs)| N/A (freezes) | +| `{1..1000000000000000}` | `41 B` (1ms 15μs) | N/A (freezes) | +| `{1..100000000000000}` | `40 B` (890μs) | N/A (freezes) | +| `{1..10000000000000}` | `39 B` (2ms 49μs) | N/A (freezes) | +| `{1..1000000000000}` | `38 B` (608μs) | N/A (freezes) | +| `{1..100000000000}` | `37 B` (397μs) | N/A (freezes) | +| `{1..10000000000}` | `35 B` (983μs) | N/A (freezes) | +| `{1..1000000000}` | `34 B` (798μs) | N/A (freezes) | +| `{1..100000000}` | `33 B` (733μs) | N/A (freezes) | +| `{1..10000000}` | `32 B` (5ms 632μs) | `78.89 MB` (16s 388ms 569μs) | +| `{1..1000000}` | `31 B` (1ms 381μs) | `6.89 MB` (1s 496ms 887μs) | +| `{1..100000}` | `30 B` (950μs) | `588.89 kB` (146ms 921μs) | +| `{1..10000}` | `29 B` (1ms 114μs) | `48.89 kB` (14ms 187μs) | +| `{1..1000}` | `28 B` (760μs) | `3.89 kB` (1ms 453μs) | +| `{1..100}` | `22 B` (345μs) | `291 B` (196μs) | +| `{1..10}` | `10 B` (533μs) | `20 B` (37μs) | +| `{1..3}` | `7 B` (190μs) | `5 B` (27μs) | + +### Faster algorithms + +When you need expansion, braces is still much faster. + +_(the following results were generated using `braces.expand()` and `minimatch.braceExpand()`, respectively)_ + +| **Pattern** | **braces** | **[minimatch][]** | +| --- | --- | --- | +| `{1..10000000}` | `78.89 MB` (2s 698ms 642μs) | `78.89 MB` (18s 601ms 974μs) | +| `{1..1000000}` | `6.89 MB` (458ms 576μs) | `6.89 MB` (1s 491ms 621μs) | +| `{1..100000}` | `588.89 kB` (20ms 728μs) | `588.89 kB` (156ms 919μs) | +| `{1..10000}` | `48.89 kB` (2ms 202μs) | `48.89 kB` (13ms 641μs) | +| `{1..1000}` | `3.89 kB` (1ms 796μs) | `3.89 kB` (1ms 958μs) | +| `{1..100}` | `291 B` (424μs) | `291 B` (211μs) | +| `{1..10}` | `20 B` (487μs) | `20 B` (72μs) | +| `{1..3}` | `5 B` (166μs) | `5 B` (27μs) | + +If you'd like to run these comparisons yourself, see [test/support/generate.js](test/support/generate.js). + +## Benchmarks + +### Running benchmarks + +Install dev dependencies: + +```bash +npm i -d && npm benchmark +``` + +### Latest results + +Braces is more accurate, without sacrificing performance. + +```bash +# range (expanded) + braces x 29,040 ops/sec ±3.69% (91 runs sampled)) + minimatch x 4,735 ops/sec ±1.28% (90 runs sampled) + +# range (optimized for regex) + braces x 382,878 ops/sec ±0.56% (94 runs sampled) + minimatch x 1,040 ops/sec ±0.44% (93 runs sampled) + +# nested ranges (expanded) + braces x 19,744 ops/sec ±2.27% (92 runs sampled)) + minimatch x 4,579 ops/sec ±0.50% (93 runs sampled) + +# nested ranges (optimized for regex) + braces x 246,019 ops/sec ±2.02% (93 runs sampled) + minimatch x 1,028 ops/sec ±0.39% (94 runs sampled) + +# set (expanded) + braces x 138,641 ops/sec ±0.53% (95 runs sampled) + minimatch x 219,582 ops/sec ±0.98% (94 runs sampled) + +# set (optimized for regex) + braces x 388,408 ops/sec ±0.41% (95 runs sampled) + minimatch x 44,724 ops/sec ±0.91% (89 runs sampled) + +# nested sets (expanded) + braces x 84,966 ops/sec ±0.48% (94 runs sampled) + minimatch x 140,720 ops/sec ±0.37% (95 runs sampled) + +# nested sets (optimized for regex) + braces x 263,340 ops/sec ±2.06% (92 runs sampled) + minimatch x 28,714 ops/sec ±0.40% (90 runs sampled) +``` + +## About + +
+Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +
+ +
+Running Tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +
+ +
+Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +
+ +### Contributors + +| **Commits** | **Contributor** | +| --- | --- | +| 197 | [jonschlinkert](https://github.com/jonschlinkert) | +| 4 | [doowb](https://github.com/doowb) | +| 1 | [es128](https://github.com/es128) | +| 1 | [eush77](https://github.com/eush77) | +| 1 | [hemanth](https://github.com/hemanth) | +| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | + +### Author + +**Jon Schlinkert** + +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) + +### License + +Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 08, 2019._ \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/index.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/index.js new file mode 100644 index 00000000..0eee0f56 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/index.js @@ -0,0 +1,170 @@ +'use strict'; + +const stringify = require('./lib/stringify'); +const compile = require('./lib/compile'); +const expand = require('./lib/expand'); +const parse = require('./lib/parse'); + +/** + * Expand the given pattern or create a regex-compatible string. + * + * ```js + * const braces = require('braces'); + * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)'] + * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c'] + * ``` + * @param {String} `str` + * @param {Object} `options` + * @return {String} + * @api public + */ + +const braces = (input, options = {}) => { + let output = []; + + if (Array.isArray(input)) { + for (let pattern of input) { + let result = braces.create(pattern, options); + if (Array.isArray(result)) { + output.push(...result); + } else { + output.push(result); + } + } + } else { + output = [].concat(braces.create(input, options)); + } + + if (options && options.expand === true && options.nodupes === true) { + output = [...new Set(output)]; + } + return output; +}; + +/** + * Parse the given `str` with the given `options`. + * + * ```js + * // braces.parse(pattern, [, options]); + * const ast = braces.parse('a/{b,c}/d'); + * console.log(ast); + * ``` + * @param {String} pattern Brace pattern to parse + * @param {Object} options + * @return {Object} Returns an AST + * @api public + */ + +braces.parse = (input, options = {}) => parse(input, options); + +/** + * Creates a braces string from an AST, or an AST node. + * + * ```js + * const braces = require('braces'); + * let ast = braces.parse('foo/{a,b}/bar'); + * console.log(stringify(ast.nodes[2])); //=> '{a,b}' + * ``` + * @param {String} `input` Brace pattern or AST. + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces.stringify = (input, options = {}) => { + if (typeof input === 'string') { + return stringify(braces.parse(input, options), options); + } + return stringify(input, options); +}; + +/** + * Compiles a brace pattern into a regex-compatible, optimized string. + * This method is called by the main [braces](#braces) function by default. + * + * ```js + * const braces = require('braces'); + * console.log(braces.compile('a/{b,c}/d')); + * //=> ['a/(b|c)/d'] + * ``` + * @param {String} `input` Brace pattern or AST. + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces.compile = (input, options = {}) => { + if (typeof input === 'string') { + input = braces.parse(input, options); + } + return compile(input, options); +}; + +/** + * Expands a brace pattern into an array. This method is called by the + * main [braces](#braces) function when `options.expand` is true. Before + * using this method it's recommended that you read the [performance notes](#performance)) + * and advantages of using [.compile](#compile) instead. + * + * ```js + * const braces = require('braces'); + * console.log(braces.expand('a/{b,c}/d')); + * //=> ['a/b/d', 'a/c/d']; + * ``` + * @param {String} `pattern` Brace pattern + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces.expand = (input, options = {}) => { + if (typeof input === 'string') { + input = braces.parse(input, options); + } + + let result = expand(input, options); + + // filter out empty strings if specified + if (options.noempty === true) { + result = result.filter(Boolean); + } + + // filter out duplicates if specified + if (options.nodupes === true) { + result = [...new Set(result)]; + } + + return result; +}; + +/** + * Processes a brace pattern and returns either an expanded array + * (if `options.expand` is true), a highly optimized regex-compatible string. + * This method is called by the main [braces](#braces) function. + * + * ```js + * const braces = require('braces'); + * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}')) + * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)' + * ``` + * @param {String} `pattern` Brace pattern + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces.create = (input, options = {}) => { + if (input === '' || input.length < 3) { + return [input]; + } + + return options.expand !== true + ? braces.compile(input, options) + : braces.expand(input, options); +}; + +/** + * Expose "braces" + */ + +module.exports = braces; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/lib/compile.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/lib/compile.js new file mode 100644 index 00000000..3e984a4b --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/lib/compile.js @@ -0,0 +1,57 @@ +'use strict'; + +const fill = require('fill-range'); +const utils = require('./utils'); + +const compile = (ast, options = {}) => { + let walk = (node, parent = {}) => { + let invalidBlock = utils.isInvalidBrace(parent); + let invalidNode = node.invalid === true && options.escapeInvalid === true; + let invalid = invalidBlock === true || invalidNode === true; + let prefix = options.escapeInvalid === true ? '\\' : ''; + let output = ''; + + if (node.isOpen === true) { + return prefix + node.value; + } + if (node.isClose === true) { + return prefix + node.value; + } + + if (node.type === 'open') { + return invalid ? (prefix + node.value) : '('; + } + + if (node.type === 'close') { + return invalid ? (prefix + node.value) : ')'; + } + + if (node.type === 'comma') { + return node.prev.type === 'comma' ? '' : (invalid ? node.value : '|'); + } + + if (node.value) { + return node.value; + } + + if (node.nodes && node.ranges > 0) { + let args = utils.reduce(node.nodes); + let range = fill(...args, { ...options, wrap: false, toRegex: true }); + + if (range.length !== 0) { + return args.length > 1 && range.length > 1 ? `(${range})` : range; + } + } + + if (node.nodes) { + for (let child of node.nodes) { + output += walk(child, node); + } + } + return output; + }; + + return walk(ast); +}; + +module.exports = compile; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/lib/constants.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/lib/constants.js new file mode 100644 index 00000000..a9379436 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/lib/constants.js @@ -0,0 +1,57 @@ +'use strict'; + +module.exports = { + MAX_LENGTH: 1024 * 64, + + // Digits + CHAR_0: '0', /* 0 */ + CHAR_9: '9', /* 9 */ + + // Alphabet chars. + CHAR_UPPERCASE_A: 'A', /* A */ + CHAR_LOWERCASE_A: 'a', /* a */ + CHAR_UPPERCASE_Z: 'Z', /* Z */ + CHAR_LOWERCASE_Z: 'z', /* z */ + + CHAR_LEFT_PARENTHESES: '(', /* ( */ + CHAR_RIGHT_PARENTHESES: ')', /* ) */ + + CHAR_ASTERISK: '*', /* * */ + + // Non-alphabetic chars. + CHAR_AMPERSAND: '&', /* & */ + CHAR_AT: '@', /* @ */ + CHAR_BACKSLASH: '\\', /* \ */ + CHAR_BACKTICK: '`', /* ` */ + CHAR_CARRIAGE_RETURN: '\r', /* \r */ + CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */ + CHAR_COLON: ':', /* : */ + CHAR_COMMA: ',', /* , */ + CHAR_DOLLAR: '$', /* . */ + CHAR_DOT: '.', /* . */ + CHAR_DOUBLE_QUOTE: '"', /* " */ + CHAR_EQUAL: '=', /* = */ + CHAR_EXCLAMATION_MARK: '!', /* ! */ + CHAR_FORM_FEED: '\f', /* \f */ + CHAR_FORWARD_SLASH: '/', /* / */ + CHAR_HASH: '#', /* # */ + CHAR_HYPHEN_MINUS: '-', /* - */ + CHAR_LEFT_ANGLE_BRACKET: '<', /* < */ + CHAR_LEFT_CURLY_BRACE: '{', /* { */ + CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */ + CHAR_LINE_FEED: '\n', /* \n */ + CHAR_NO_BREAK_SPACE: '\u00A0', /* \u00A0 */ + CHAR_PERCENT: '%', /* % */ + CHAR_PLUS: '+', /* + */ + CHAR_QUESTION_MARK: '?', /* ? */ + CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */ + CHAR_RIGHT_CURLY_BRACE: '}', /* } */ + CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */ + CHAR_SEMICOLON: ';', /* ; */ + CHAR_SINGLE_QUOTE: '\'', /* ' */ + CHAR_SPACE: ' ', /* */ + CHAR_TAB: '\t', /* \t */ + CHAR_UNDERSCORE: '_', /* _ */ + CHAR_VERTICAL_LINE: '|', /* | */ + CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\uFEFF' /* \uFEFF */ +}; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/lib/expand.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/lib/expand.js new file mode 100644 index 00000000..376c748a --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/lib/expand.js @@ -0,0 +1,113 @@ +'use strict'; + +const fill = require('fill-range'); +const stringify = require('./stringify'); +const utils = require('./utils'); + +const append = (queue = '', stash = '', enclose = false) => { + let result = []; + + queue = [].concat(queue); + stash = [].concat(stash); + + if (!stash.length) return queue; + if (!queue.length) { + return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash; + } + + for (let item of queue) { + if (Array.isArray(item)) { + for (let value of item) { + result.push(append(value, stash, enclose)); + } + } else { + for (let ele of stash) { + if (enclose === true && typeof ele === 'string') ele = `{${ele}}`; + result.push(Array.isArray(ele) ? append(item, ele, enclose) : (item + ele)); + } + } + } + return utils.flatten(result); +}; + +const expand = (ast, options = {}) => { + let rangeLimit = options.rangeLimit === void 0 ? 1000 : options.rangeLimit; + + let walk = (node, parent = {}) => { + node.queue = []; + + let p = parent; + let q = parent.queue; + + while (p.type !== 'brace' && p.type !== 'root' && p.parent) { + p = p.parent; + q = p.queue; + } + + if (node.invalid || node.dollar) { + q.push(append(q.pop(), stringify(node, options))); + return; + } + + if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) { + q.push(append(q.pop(), ['{}'])); + return; + } + + if (node.nodes && node.ranges > 0) { + let args = utils.reduce(node.nodes); + + if (utils.exceedsLimit(...args, options.step, rangeLimit)) { + throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.'); + } + + let range = fill(...args, options); + if (range.length === 0) { + range = stringify(node, options); + } + + q.push(append(q.pop(), range)); + node.nodes = []; + return; + } + + let enclose = utils.encloseBrace(node); + let queue = node.queue; + let block = node; + + while (block.type !== 'brace' && block.type !== 'root' && block.parent) { + block = block.parent; + queue = block.queue; + } + + for (let i = 0; i < node.nodes.length; i++) { + let child = node.nodes[i]; + + if (child.type === 'comma' && node.type === 'brace') { + if (i === 1) queue.push(''); + queue.push(''); + continue; + } + + if (child.type === 'close') { + q.push(append(q.pop(), queue, enclose)); + continue; + } + + if (child.value && child.type !== 'open') { + queue.push(append(queue.pop(), child.value)); + continue; + } + + if (child.nodes) { + walk(child, node); + } + } + + return queue; + }; + + return utils.flatten(walk(ast)); +}; + +module.exports = expand; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/lib/parse.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/lib/parse.js new file mode 100644 index 00000000..145ea264 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/lib/parse.js @@ -0,0 +1,333 @@ +'use strict'; + +const stringify = require('./stringify'); + +/** + * Constants + */ + +const { + MAX_LENGTH, + CHAR_BACKSLASH, /* \ */ + CHAR_BACKTICK, /* ` */ + CHAR_COMMA, /* , */ + CHAR_DOT, /* . */ + CHAR_LEFT_PARENTHESES, /* ( */ + CHAR_RIGHT_PARENTHESES, /* ) */ + CHAR_LEFT_CURLY_BRACE, /* { */ + CHAR_RIGHT_CURLY_BRACE, /* } */ + CHAR_LEFT_SQUARE_BRACKET, /* [ */ + CHAR_RIGHT_SQUARE_BRACKET, /* ] */ + CHAR_DOUBLE_QUOTE, /* " */ + CHAR_SINGLE_QUOTE, /* ' */ + CHAR_NO_BREAK_SPACE, + CHAR_ZERO_WIDTH_NOBREAK_SPACE +} = require('./constants'); + +/** + * parse + */ + +const parse = (input, options = {}) => { + if (typeof input !== 'string') { + throw new TypeError('Expected a string'); + } + + let opts = options || {}; + let max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + if (input.length > max) { + throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`); + } + + let ast = { type: 'root', input, nodes: [] }; + let stack = [ast]; + let block = ast; + let prev = ast; + let brackets = 0; + let length = input.length; + let index = 0; + let depth = 0; + let value; + let memo = {}; + + /** + * Helpers + */ + + const advance = () => input[index++]; + const push = node => { + if (node.type === 'text' && prev.type === 'dot') { + prev.type = 'text'; + } + + if (prev && prev.type === 'text' && node.type === 'text') { + prev.value += node.value; + return; + } + + block.nodes.push(node); + node.parent = block; + node.prev = prev; + prev = node; + return node; + }; + + push({ type: 'bos' }); + + while (index < length) { + block = stack[stack.length - 1]; + value = advance(); + + /** + * Invalid chars + */ + + if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) { + continue; + } + + /** + * Escaped chars + */ + + if (value === CHAR_BACKSLASH) { + push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() }); + continue; + } + + /** + * Right square bracket (literal): ']' + */ + + if (value === CHAR_RIGHT_SQUARE_BRACKET) { + push({ type: 'text', value: '\\' + value }); + continue; + } + + /** + * Left square bracket: '[' + */ + + if (value === CHAR_LEFT_SQUARE_BRACKET) { + brackets++; + + let closed = true; + let next; + + while (index < length && (next = advance())) { + value += next; + + if (next === CHAR_LEFT_SQUARE_BRACKET) { + brackets++; + continue; + } + + if (next === CHAR_BACKSLASH) { + value += advance(); + continue; + } + + if (next === CHAR_RIGHT_SQUARE_BRACKET) { + brackets--; + + if (brackets === 0) { + break; + } + } + } + + push({ type: 'text', value }); + continue; + } + + /** + * Parentheses + */ + + if (value === CHAR_LEFT_PARENTHESES) { + block = push({ type: 'paren', nodes: [] }); + stack.push(block); + push({ type: 'text', value }); + continue; + } + + if (value === CHAR_RIGHT_PARENTHESES) { + if (block.type !== 'paren') { + push({ type: 'text', value }); + continue; + } + block = stack.pop(); + push({ type: 'text', value }); + block = stack[stack.length - 1]; + continue; + } + + /** + * Quotes: '|"|` + */ + + if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) { + let open = value; + let next; + + if (options.keepQuotes !== true) { + value = ''; + } + + while (index < length && (next = advance())) { + if (next === CHAR_BACKSLASH) { + value += next + advance(); + continue; + } + + if (next === open) { + if (options.keepQuotes === true) value += next; + break; + } + + value += next; + } + + push({ type: 'text', value }); + continue; + } + + /** + * Left curly brace: '{' + */ + + if (value === CHAR_LEFT_CURLY_BRACE) { + depth++; + + let dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true; + let brace = { + type: 'brace', + open: true, + close: false, + dollar, + depth, + commas: 0, + ranges: 0, + nodes: [] + }; + + block = push(brace); + stack.push(block); + push({ type: 'open', value }); + continue; + } + + /** + * Right curly brace: '}' + */ + + if (value === CHAR_RIGHT_CURLY_BRACE) { + if (block.type !== 'brace') { + push({ type: 'text', value }); + continue; + } + + let type = 'close'; + block = stack.pop(); + block.close = true; + + push({ type, value }); + depth--; + + block = stack[stack.length - 1]; + continue; + } + + /** + * Comma: ',' + */ + + if (value === CHAR_COMMA && depth > 0) { + if (block.ranges > 0) { + block.ranges = 0; + let open = block.nodes.shift(); + block.nodes = [open, { type: 'text', value: stringify(block) }]; + } + + push({ type: 'comma', value }); + block.commas++; + continue; + } + + /** + * Dot: '.' + */ + + if (value === CHAR_DOT && depth > 0 && block.commas === 0) { + let siblings = block.nodes; + + if (depth === 0 || siblings.length === 0) { + push({ type: 'text', value }); + continue; + } + + if (prev.type === 'dot') { + block.range = []; + prev.value += value; + prev.type = 'range'; + + if (block.nodes.length !== 3 && block.nodes.length !== 5) { + block.invalid = true; + block.ranges = 0; + prev.type = 'text'; + continue; + } + + block.ranges++; + block.args = []; + continue; + } + + if (prev.type === 'range') { + siblings.pop(); + + let before = siblings[siblings.length - 1]; + before.value += prev.value + value; + prev = before; + block.ranges--; + continue; + } + + push({ type: 'dot', value }); + continue; + } + + /** + * Text + */ + + push({ type: 'text', value }); + } + + // Mark imbalanced braces and brackets as invalid + do { + block = stack.pop(); + + if (block.type !== 'root') { + block.nodes.forEach(node => { + if (!node.nodes) { + if (node.type === 'open') node.isOpen = true; + if (node.type === 'close') node.isClose = true; + if (!node.nodes) node.type = 'text'; + node.invalid = true; + } + }); + + // get the location of the block on parent.nodes (block's siblings) + let parent = stack[stack.length - 1]; + let index = parent.nodes.indexOf(block); + // replace the (invalid) block with it's nodes + parent.nodes.splice(index, 1, ...block.nodes); + } + } while (stack.length > 0); + + push({ type: 'eos' }); + return ast; +}; + +module.exports = parse; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/lib/stringify.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/lib/stringify.js new file mode 100644 index 00000000..414b7bcc --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/lib/stringify.js @@ -0,0 +1,32 @@ +'use strict'; + +const utils = require('./utils'); + +module.exports = (ast, options = {}) => { + let stringify = (node, parent = {}) => { + let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent); + let invalidNode = node.invalid === true && options.escapeInvalid === true; + let output = ''; + + if (node.value) { + if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) { + return '\\' + node.value; + } + return node.value; + } + + if (node.value) { + return node.value; + } + + if (node.nodes) { + for (let child of node.nodes) { + output += stringify(child); + } + } + return output; + }; + + return stringify(ast); +}; + diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/lib/utils.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/lib/utils.js new file mode 100644 index 00000000..e3551a67 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/lib/utils.js @@ -0,0 +1,112 @@ +'use strict'; + +exports.isInteger = num => { + if (typeof num === 'number') { + return Number.isInteger(num); + } + if (typeof num === 'string' && num.trim() !== '') { + return Number.isInteger(Number(num)); + } + return false; +}; + +/** + * Find a node of the given type + */ + +exports.find = (node, type) => node.nodes.find(node => node.type === type); + +/** + * Find a node of the given type + */ + +exports.exceedsLimit = (min, max, step = 1, limit) => { + if (limit === false) return false; + if (!exports.isInteger(min) || !exports.isInteger(max)) return false; + return ((Number(max) - Number(min)) / Number(step)) >= limit; +}; + +/** + * Escape the given node with '\\' before node.value + */ + +exports.escapeNode = (block, n = 0, type) => { + let node = block.nodes[n]; + if (!node) return; + + if ((type && node.type === type) || node.type === 'open' || node.type === 'close') { + if (node.escaped !== true) { + node.value = '\\' + node.value; + node.escaped = true; + } + } +}; + +/** + * Returns true if the given brace node should be enclosed in literal braces + */ + +exports.encloseBrace = node => { + if (node.type !== 'brace') return false; + if ((node.commas >> 0 + node.ranges >> 0) === 0) { + node.invalid = true; + return true; + } + return false; +}; + +/** + * Returns true if a brace node is invalid. + */ + +exports.isInvalidBrace = block => { + if (block.type !== 'brace') return false; + if (block.invalid === true || block.dollar) return true; + if ((block.commas >> 0 + block.ranges >> 0) === 0) { + block.invalid = true; + return true; + } + if (block.open !== true || block.close !== true) { + block.invalid = true; + return true; + } + return false; +}; + +/** + * Returns true if a node is an open or close node + */ + +exports.isOpenOrClose = node => { + if (node.type === 'open' || node.type === 'close') { + return true; + } + return node.open === true || node.close === true; +}; + +/** + * Reduce an array of text nodes. + */ + +exports.reduce = nodes => nodes.reduce((acc, node) => { + if (node.type === 'text') acc.push(node.value); + if (node.type === 'range') node.type = 'text'; + return acc; +}, []); + +/** + * Flatten an array + */ + +exports.flatten = (...args) => { + const result = []; + const flat = arr => { + for (let i = 0; i < arr.length; i++) { + let ele = arr[i]; + Array.isArray(ele) ? flat(ele, result) : ele !== void 0 && result.push(ele); + } + return result; + }; + flat(args); + return result; +}; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/package.json b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/package.json new file mode 100644 index 00000000..3f52e346 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/braces/package.json @@ -0,0 +1,77 @@ +{ + "name": "braces", + "description": "Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed.", + "version": "3.0.2", + "homepage": "https://github.com/micromatch/braces", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "contributors": [ + "Brian Woodward (https://twitter.com/doowb)", + "Elan Shanker (https://github.com/es128)", + "Eugene Sharygin (https://github.com/eush77)", + "hemanth.hm (http://h3manth.com)", + "Jon Schlinkert (http://twitter.com/jonschlinkert)" + ], + "repository": "micromatch/braces", + "bugs": { + "url": "https://github.com/micromatch/braces/issues" + }, + "license": "MIT", + "files": [ + "index.js", + "lib" + ], + "main": "index.js", + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "mocha", + "benchmark": "node benchmark" + }, + "dependencies": { + "fill-range": "^7.0.1" + }, + "devDependencies": { + "ansi-colors": "^3.2.4", + "bash-path": "^2.0.1", + "gulp-format-md": "^2.0.0", + "mocha": "^6.1.1" + }, + "keywords": [ + "alpha", + "alphabetical", + "bash", + "brace", + "braces", + "expand", + "expansion", + "filepath", + "fill", + "fs", + "glob", + "globbing", + "letter", + "match", + "matches", + "matching", + "number", + "numerical", + "path", + "range", + "ranges", + "sh" + ], + "verb": { + "toc": false, + "layout": "default", + "tasks": [ + "readme" + ], + "lint": { + "reflinks": true + }, + "plugins": [ + "gulp-format-md" + ] + } +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/fill-range/LICENSE b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/fill-range/LICENSE new file mode 100644 index 00000000..9af4a67d --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/fill-range/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-present, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/fill-range/README.md b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/fill-range/README.md new file mode 100644 index 00000000..8d756fe9 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/fill-range/README.md @@ -0,0 +1,237 @@ +# fill-range [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W8YFZ425KND68) [![NPM version](https://img.shields.io/npm/v/fill-range.svg?style=flat)](https://www.npmjs.com/package/fill-range) [![NPM monthly downloads](https://img.shields.io/npm/dm/fill-range.svg?style=flat)](https://npmjs.org/package/fill-range) [![NPM total downloads](https://img.shields.io/npm/dt/fill-range.svg?style=flat)](https://npmjs.org/package/fill-range) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/fill-range.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/fill-range) + +> Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex` + +Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save fill-range +``` + +## Usage + +Expands numbers and letters, optionally using a `step` as the last argument. _(Numbers may be defined as JavaScript numbers or strings)_. + +```js +const fill = require('fill-range'); +// fill(from, to[, step, options]); + +console.log(fill('1', '10')); //=> ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] +console.log(fill('1', '10', { toRegex: true })); //=> [1-9]|10 +``` + +**Params** + +* `from`: **{String|Number}** the number or letter to start with +* `to`: **{String|Number}** the number or letter to end with +* `step`: **{String|Number|Object|Function}** Optionally pass a [step](#optionsstep) to use. +* `options`: **{Object|Function}**: See all available [options](#options) + +## Examples + +By default, an array of values is returned. + +**Alphabetical ranges** + +```js +console.log(fill('a', 'e')); //=> ['a', 'b', 'c', 'd', 'e'] +console.log(fill('A', 'E')); //=> [ 'A', 'B', 'C', 'D', 'E' ] +``` + +**Numerical ranges** + +Numbers can be defined as actual numbers or strings. + +```js +console.log(fill(1, 5)); //=> [ 1, 2, 3, 4, 5 ] +console.log(fill('1', '5')); //=> [ 1, 2, 3, 4, 5 ] +``` + +**Negative ranges** + +Numbers can be defined as actual numbers or strings. + +```js +console.log(fill('-5', '-1')); //=> [ '-5', '-4', '-3', '-2', '-1' ] +console.log(fill('-5', '5')); //=> [ '-5', '-4', '-3', '-2', '-1', '0', '1', '2', '3', '4', '5' ] +``` + +**Steps (increments)** + +```js +// numerical ranges with increments +console.log(fill('0', '25', 4)); //=> [ '0', '4', '8', '12', '16', '20', '24' ] +console.log(fill('0', '25', 5)); //=> [ '0', '5', '10', '15', '20', '25' ] +console.log(fill('0', '25', 6)); //=> [ '0', '6', '12', '18', '24' ] + +// alphabetical ranges with increments +console.log(fill('a', 'z', 4)); //=> [ 'a', 'e', 'i', 'm', 'q', 'u', 'y' ] +console.log(fill('a', 'z', 5)); //=> [ 'a', 'f', 'k', 'p', 'u', 'z' ] +console.log(fill('a', 'z', 6)); //=> [ 'a', 'g', 'm', 's', 'y' ] +``` + +## Options + +### options.step + +**Type**: `number` (formatted as a string or number) + +**Default**: `undefined` + +**Description**: The increment to use for the range. Can be used with letters or numbers. + +**Example(s)** + +```js +// numbers +console.log(fill('1', '10', 2)); //=> [ '1', '3', '5', '7', '9' ] +console.log(fill('1', '10', 3)); //=> [ '1', '4', '7', '10' ] +console.log(fill('1', '10', 4)); //=> [ '1', '5', '9' ] + +// letters +console.log(fill('a', 'z', 5)); //=> [ 'a', 'f', 'k', 'p', 'u', 'z' ] +console.log(fill('a', 'z', 7)); //=> [ 'a', 'h', 'o', 'v' ] +console.log(fill('a', 'z', 9)); //=> [ 'a', 'j', 's' ] +``` + +### options.strictRanges + +**Type**: `boolean` + +**Default**: `false` + +**Description**: By default, `null` is returned when an invalid range is passed. Enable this option to throw a `RangeError` on invalid ranges. + +**Example(s)** + +The following are all invalid: + +```js +fill('1.1', '2'); // decimals not supported in ranges +fill('a', '2'); // incompatible range values +fill(1, 10, 'foo'); // invalid "step" argument +``` + +### options.stringify + +**Type**: `boolean` + +**Default**: `undefined` + +**Description**: Cast all returned values to strings. By default, integers are returned as numbers. + +**Example(s)** + +```js +console.log(fill(1, 5)); //=> [ 1, 2, 3, 4, 5 ] +console.log(fill(1, 5, { stringify: true })); //=> [ '1', '2', '3', '4', '5' ] +``` + +### options.toRegex + +**Type**: `boolean` + +**Default**: `undefined` + +**Description**: Create a regex-compatible source string, instead of expanding values to an array. + +**Example(s)** + +```js +// alphabetical range +console.log(fill('a', 'e', { toRegex: true })); //=> '[a-e]' +// alphabetical with step +console.log(fill('a', 'z', 3, { toRegex: true })); //=> 'a|d|g|j|m|p|s|v|y' +// numerical range +console.log(fill('1', '100', { toRegex: true })); //=> '[1-9]|[1-9][0-9]|100' +// numerical range with zero padding +console.log(fill('000001', '100000', { toRegex: true })); +//=> '0{5}[1-9]|0{4}[1-9][0-9]|0{3}[1-9][0-9]{2}|0{2}[1-9][0-9]{3}|0[1-9][0-9]{4}|100000' +``` + +### options.transform + +**Type**: `function` + +**Default**: `undefined` + +**Description**: Customize each value in the returned array (or [string](#optionstoRegex)). _(you can also pass this function as the last argument to `fill()`)_. + +**Example(s)** + +```js +// add zero padding +console.log(fill(1, 5, value => String(value).padStart(4, '0'))); +//=> ['0001', '0002', '0003', '0004', '0005'] +``` + +## About + +
+Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +
+ +
+Running Tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +
+ +
+Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +
+ +### Contributors + +| **Commits** | **Contributor** | +| --- | --- | +| 116 | [jonschlinkert](https://github.com/jonschlinkert) | +| 4 | [paulmillr](https://github.com/paulmillr) | +| 2 | [realityking](https://github.com/realityking) | +| 2 | [bluelovers](https://github.com/bluelovers) | +| 1 | [edorivai](https://github.com/edorivai) | +| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | + +### Author + +**Jon Schlinkert** + +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) + +Please consider supporting me on Patreon, or [start your own Patreon page](https://patreon.com/invite/bxpbvm)! + + + + + +### License + +Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 08, 2019._ \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/fill-range/index.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/fill-range/index.js new file mode 100644 index 00000000..97ce35a5 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/fill-range/index.js @@ -0,0 +1,249 @@ +/*! + * fill-range + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + */ + +'use strict'; + +const util = require('util'); +const toRegexRange = require('to-regex-range'); + +const isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); + +const transform = toNumber => { + return value => toNumber === true ? Number(value) : String(value); +}; + +const isValidValue = value => { + return typeof value === 'number' || (typeof value === 'string' && value !== ''); +}; + +const isNumber = num => Number.isInteger(+num); + +const zeros = input => { + let value = `${input}`; + let index = -1; + if (value[0] === '-') value = value.slice(1); + if (value === '0') return false; + while (value[++index] === '0'); + return index > 0; +}; + +const stringify = (start, end, options) => { + if (typeof start === 'string' || typeof end === 'string') { + return true; + } + return options.stringify === true; +}; + +const pad = (input, maxLength, toNumber) => { + if (maxLength > 0) { + let dash = input[0] === '-' ? '-' : ''; + if (dash) input = input.slice(1); + input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0')); + } + if (toNumber === false) { + return String(input); + } + return input; +}; + +const toMaxLen = (input, maxLength) => { + let negative = input[0] === '-' ? '-' : ''; + if (negative) { + input = input.slice(1); + maxLength--; + } + while (input.length < maxLength) input = '0' + input; + return negative ? ('-' + input) : input; +}; + +const toSequence = (parts, options) => { + parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); + parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); + + let prefix = options.capture ? '' : '?:'; + let positives = ''; + let negatives = ''; + let result; + + if (parts.positives.length) { + positives = parts.positives.join('|'); + } + + if (parts.negatives.length) { + negatives = `-(${prefix}${parts.negatives.join('|')})`; + } + + if (positives && negatives) { + result = `${positives}|${negatives}`; + } else { + result = positives || negatives; + } + + if (options.wrap) { + return `(${prefix}${result})`; + } + + return result; +}; + +const toRange = (a, b, isNumbers, options) => { + if (isNumbers) { + return toRegexRange(a, b, { wrap: false, ...options }); + } + + let start = String.fromCharCode(a); + if (a === b) return start; + + let stop = String.fromCharCode(b); + return `[${start}-${stop}]`; +}; + +const toRegex = (start, end, options) => { + if (Array.isArray(start)) { + let wrap = options.wrap === true; + let prefix = options.capture ? '' : '?:'; + return wrap ? `(${prefix}${start.join('|')})` : start.join('|'); + } + return toRegexRange(start, end, options); +}; + +const rangeError = (...args) => { + return new RangeError('Invalid range arguments: ' + util.inspect(...args)); +}; + +const invalidRange = (start, end, options) => { + if (options.strictRanges === true) throw rangeError([start, end]); + return []; +}; + +const invalidStep = (step, options) => { + if (options.strictRanges === true) { + throw new TypeError(`Expected step "${step}" to be a number`); + } + return []; +}; + +const fillNumbers = (start, end, step = 1, options = {}) => { + let a = Number(start); + let b = Number(end); + + if (!Number.isInteger(a) || !Number.isInteger(b)) { + if (options.strictRanges === true) throw rangeError([start, end]); + return []; + } + + // fix negative zero + if (a === 0) a = 0; + if (b === 0) b = 0; + + let descending = a > b; + let startString = String(start); + let endString = String(end); + let stepString = String(step); + step = Math.max(Math.abs(step), 1); + + let padded = zeros(startString) || zeros(endString) || zeros(stepString); + let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0; + let toNumber = padded === false && stringify(start, end, options) === false; + let format = options.transform || transform(toNumber); + + if (options.toRegex && step === 1) { + return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options); + } + + let parts = { negatives: [], positives: [] }; + let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num)); + let range = []; + let index = 0; + + while (descending ? a >= b : a <= b) { + if (options.toRegex === true && step > 1) { + push(a); + } else { + range.push(pad(format(a, index), maxLen, toNumber)); + } + a = descending ? a - step : a + step; + index++; + } + + if (options.toRegex === true) { + return step > 1 + ? toSequence(parts, options) + : toRegex(range, null, { wrap: false, ...options }); + } + + return range; +}; + +const fillLetters = (start, end, step = 1, options = {}) => { + if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) { + return invalidRange(start, end, options); + } + + + let format = options.transform || (val => String.fromCharCode(val)); + let a = `${start}`.charCodeAt(0); + let b = `${end}`.charCodeAt(0); + + let descending = a > b; + let min = Math.min(a, b); + let max = Math.max(a, b); + + if (options.toRegex && step === 1) { + return toRange(min, max, false, options); + } + + let range = []; + let index = 0; + + while (descending ? a >= b : a <= b) { + range.push(format(a, index)); + a = descending ? a - step : a + step; + index++; + } + + if (options.toRegex === true) { + return toRegex(range, null, { wrap: false, options }); + } + + return range; +}; + +const fill = (start, end, step, options = {}) => { + if (end == null && isValidValue(start)) { + return [start]; + } + + if (!isValidValue(start) || !isValidValue(end)) { + return invalidRange(start, end, options); + } + + if (typeof step === 'function') { + return fill(start, end, 1, { transform: step }); + } + + if (isObject(step)) { + return fill(start, end, 0, step); + } + + let opts = { ...options }; + if (opts.capture === true) opts.wrap = true; + step = step || opts.step || 1; + + if (!isNumber(step)) { + if (step != null && !isObject(step)) return invalidStep(step, opts); + return fill(start, end, 1, step); + } + + if (isNumber(start) && isNumber(end)) { + return fillNumbers(start, end, step, opts); + } + + return fillLetters(start, end, Math.max(Math.abs(step), 1), opts); +}; + +module.exports = fill; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/fill-range/package.json b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/fill-range/package.json new file mode 100644 index 00000000..07d30767 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/fill-range/package.json @@ -0,0 +1,69 @@ +{ + "name": "fill-range", + "description": "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`", + "version": "7.0.1", + "homepage": "https://github.com/jonschlinkert/fill-range", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "contributors": [ + "Edo Rivai (edo.rivai.nl)", + "Jon Schlinkert (http://twitter.com/jonschlinkert)", + "Paul Miller (paulmillr.com)", + "Rouven Weßling (www.rouvenwessling.de)", + "(https://github.com/wtgtybhertgeghgtwtg)" + ], + "repository": "jonschlinkert/fill-range", + "bugs": { + "url": "https://github.com/jonschlinkert/fill-range/issues" + }, + "license": "MIT", + "files": [ + "index.js" + ], + "main": "index.js", + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "mocha" + }, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "devDependencies": { + "gulp-format-md": "^2.0.0", + "mocha": "^6.1.1" + }, + "keywords": [ + "alpha", + "alphabetical", + "array", + "bash", + "brace", + "expand", + "expansion", + "fill", + "glob", + "match", + "matches", + "matching", + "number", + "numerical", + "range", + "ranges", + "regex", + "sh" + ], + "verb": { + "toc": false, + "layout": "default", + "tasks": [ + "readme" + ], + "plugins": [ + "gulp-format-md" + ], + "lint": { + "reflinks": true + } + } +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/is-number/LICENSE b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/is-number/LICENSE new file mode 100644 index 00000000..9af4a67d --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/is-number/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-present, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/is-number/README.md b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/is-number/README.md new file mode 100644 index 00000000..eb8149e8 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/is-number/README.md @@ -0,0 +1,187 @@ +# is-number [![NPM version](https://img.shields.io/npm/v/is-number.svg?style=flat)](https://www.npmjs.com/package/is-number) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-number.svg?style=flat)](https://npmjs.org/package/is-number) [![NPM total downloads](https://img.shields.io/npm/dt/is-number.svg?style=flat)](https://npmjs.org/package/is-number) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-number.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-number) + +> Returns true if the value is a finite number. + +Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save is-number +``` + +## Why is this needed? + +In JavaScript, it's not always as straightforward as it should be to reliably check if a value is a number. It's common for devs to use `+`, `-`, or `Number()` to cast a string value to a number (for example, when values are returned from user input, regex matches, parsers, etc). But there are many non-intuitive edge cases that yield unexpected results: + +```js +console.log(+[]); //=> 0 +console.log(+''); //=> 0 +console.log(+' '); //=> 0 +console.log(typeof NaN); //=> 'number' +``` + +This library offers a performant way to smooth out edge cases like these. + +## Usage + +```js +const isNumber = require('is-number'); +``` + +See the [tests](./test.js) for more examples. + +### true + +```js +isNumber(5e3); // true +isNumber(0xff); // true +isNumber(-1.1); // true +isNumber(0); // true +isNumber(1); // true +isNumber(1.1); // true +isNumber(10); // true +isNumber(10.10); // true +isNumber(100); // true +isNumber('-1.1'); // true +isNumber('0'); // true +isNumber('012'); // true +isNumber('0xff'); // true +isNumber('1'); // true +isNumber('1.1'); // true +isNumber('10'); // true +isNumber('10.10'); // true +isNumber('100'); // true +isNumber('5e3'); // true +isNumber(parseInt('012')); // true +isNumber(parseFloat('012')); // true +``` + +### False + +Everything else is false, as you would expect: + +```js +isNumber(Infinity); // false +isNumber(NaN); // false +isNumber(null); // false +isNumber(undefined); // false +isNumber(''); // false +isNumber(' '); // false +isNumber('foo'); // false +isNumber([1]); // false +isNumber([]); // false +isNumber(function () {}); // false +isNumber({}); // false +``` + +## Release history + +### 7.0.0 + +* Refactor. Now uses `.isFinite` if it exists. +* Performance is about the same as v6.0 when the value is a string or number. But it's now 3x-4x faster when the value is not a string or number. + +### 6.0.0 + +* Optimizations, thanks to @benaadams. + +### 5.0.0 + +**Breaking changes** + +* removed support for `instanceof Number` and `instanceof String` + +## Benchmarks + +As with all benchmarks, take these with a grain of salt. See the [benchmarks](./benchmark/index.js) for more detail. + +``` +# all +v7.0 x 413,222 ops/sec ±2.02% (86 runs sampled) +v6.0 x 111,061 ops/sec ±1.29% (85 runs sampled) +parseFloat x 317,596 ops/sec ±1.36% (86 runs sampled) +fastest is 'v7.0' + +# string +v7.0 x 3,054,496 ops/sec ±1.05% (89 runs sampled) +v6.0 x 2,957,781 ops/sec ±0.98% (88 runs sampled) +parseFloat x 3,071,060 ops/sec ±1.13% (88 runs sampled) +fastest is 'parseFloat,v7.0' + +# number +v7.0 x 3,146,895 ops/sec ±0.89% (89 runs sampled) +v6.0 x 3,214,038 ops/sec ±1.07% (89 runs sampled) +parseFloat x 3,077,588 ops/sec ±1.07% (87 runs sampled) +fastest is 'v6.0' +``` + +## About + +
+Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +
+ +
+Running Tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +
+ +
+Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +
+ +### Related projects + +You might also be interested in these projects: + +* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.") +* [is-primitive](https://www.npmjs.com/package/is-primitive): Returns `true` if the value is a primitive. | [homepage](https://github.com/jonschlinkert/is-primitive "Returns `true` if the value is a primitive. ") +* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") +* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.") + +### Contributors + +| **Commits** | **Contributor** | +| --- | --- | +| 49 | [jonschlinkert](https://github.com/jonschlinkert) | +| 5 | [charlike-old](https://github.com/charlike-old) | +| 1 | [benaadams](https://github.com/benaadams) | +| 1 | [realityking](https://github.com/realityking) | + +### Author + +**Jon Schlinkert** + +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) + +### License + +Copyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on June 15, 2018._ \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/is-number/index.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/is-number/index.js new file mode 100644 index 00000000..27f19b75 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/is-number/index.js @@ -0,0 +1,18 @@ +/*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + */ + +'use strict'; + +module.exports = function(num) { + if (typeof num === 'number') { + return num - num === 0; + } + if (typeof num === 'string' && num.trim() !== '') { + return Number.isFinite ? Number.isFinite(+num) : isFinite(+num); + } + return false; +}; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/is-number/package.json b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/is-number/package.json new file mode 100644 index 00000000..37150726 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/is-number/package.json @@ -0,0 +1,82 @@ +{ + "name": "is-number", + "description": "Returns true if a number or string value is a finite number. Useful for regex matches, parsing, user input, etc.", + "version": "7.0.0", + "homepage": "https://github.com/jonschlinkert/is-number", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "contributors": [ + "Jon Schlinkert (http://twitter.com/jonschlinkert)", + "Olsten Larck (https://i.am.charlike.online)", + "Rouven Weßling (www.rouvenwessling.de)" + ], + "repository": "jonschlinkert/is-number", + "bugs": { + "url": "https://github.com/jonschlinkert/is-number/issues" + }, + "license": "MIT", + "files": [ + "index.js" + ], + "main": "index.js", + "engines": { + "node": ">=0.12.0" + }, + "scripts": { + "test": "mocha" + }, + "devDependencies": { + "ansi": "^0.3.1", + "benchmark": "^2.1.4", + "gulp-format-md": "^1.0.0", + "mocha": "^3.5.3" + }, + "keywords": [ + "cast", + "check", + "coerce", + "coercion", + "finite", + "integer", + "is", + "isnan", + "is-nan", + "is-num", + "is-number", + "isnumber", + "isfinite", + "istype", + "kind", + "math", + "nan", + "num", + "number", + "numeric", + "parseFloat", + "parseInt", + "test", + "type", + "typeof", + "value" + ], + "verb": { + "toc": false, + "layout": "default", + "tasks": [ + "readme" + ], + "related": { + "list": [ + "is-plain-object", + "is-primitive", + "isobject", + "kind-of" + ] + }, + "plugins": [ + "gulp-format-md" + ], + "lint": { + "reflinks": true + } + } +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/micromatch/CHANGELOG.md b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/micromatch/CHANGELOG.md new file mode 100644 index 00000000..25fa58c5 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/micromatch/CHANGELOG.md @@ -0,0 +1,108 @@ +# Release history + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +
+ Guiding Principles + +- Changelogs are for humans, not machines. +- There should be an entry for every single version. +- The same types of changes should be grouped. +- Versions and sections should be linkable. +- The latest version comes first. +- The release date of each versions is displayed. +- Mention whether you follow Semantic Versioning. + +
+ +
+ Types of changes + +Changelog entries are classified using the following labels _(from [keep-a-changelog](http://keepachangelog.com/)_): + +- `Added` for new features. +- `Changed` for changes in existing functionality. +- `Deprecated` for soon-to-be removed features. +- `Removed` for now removed features. +- `Fixed` for any bug fixes. +- `Security` in case of vulnerabilities. + +
+ +## [4.0.0] - 2019-03-20 + +### Added + +- Adds support for `options.onMatch`. See the readme for details +- Adds support for `options.onIgnore`. See the readme for details +- Adds support for `options.onResult`. See the readme for details + + +### Breaking changes + +- Removed support for passing an array of brace patterns to `micromatch.braces()`. +- To strictly enforce closing brackets (for `{`, `[`, and `(`), you must now use `strictBrackets=true` instead of `strictErrors`. +- `cache` - caching and all related options and methods have been removed +- `options.unixify` was renamed to `options.windows` +- `options.nodupes` Was removed. Duplicates are always removed by default. You can override this with custom behavior by using the `onMatch`, `onResult` and `onIgnore` functions. +- `options.snapdragon` was removed, as snapdragon is no longer used. +- `options.sourcemap` was removed, as snapdragon is no longer used, which provided sourcemap support. + +## [3.0.0] - 2017-04-11 + +Complete overhaul, with 36,000+ new unit tests validated against actual output generated by Bash and minimatch. More specifically, 35,000+ of the tests: + + - micromatch results are directly compared to bash results + - in rare cases, when micromatch and bash disagree, micromatch's results are compared to minimatch's results + - micromatch is much more accurate than minimatch, so there were cases where I had to make assumptions. I'll try to document these. + +This refactor introduces a parser and compiler that are supersets of more granular parsers and compilers from other sub-modules. Each of these sub-modules has a singular responsibility and focuses on a certain type of matching that aligns with a specific part of the Bash "expansion" API. + +These sub-modules work like plugins to seamlessly create the micromatch parser/compiler, so that strings are parsed in one pass, an [AST is created](https://gist.github.com/jonschlinkert/099c8914f56529f75bc757cc9e5e8e2a), then a new string is generated by the compiler. + +Here are those sub-modules with links to related prs on those modules if you want to see how they contribute to this code: + +[nanomatch](https://github.com/jonschlinkert/nanomatch) (new library) - glob expansion (`*`, `**`, `?` and `[...]`)) +[braces](https://github.com/jonschlinkert/braces/pull/10) - brace expansion (`{1..10}`, `{a,b,c}`, etc) +[extglob](https://github.com/jonschlinkert/extglob/pull/5) - extended globs (`!(a|b)`, `@(!(foo|bar))`, etc) +[expand-brackets](https://github.com/jonschlinkert/expand-brackets/pull/5) - POSIX character classes `[[:alpha:][:digit:]]` + +**Added** + + - source map support (optionally created when using parse or compile - I have no idea what the use case is yet, but they come for free) (note that source maps are not generated for brace expansion at present, since the braces compiler uses a different strategy. I'll update if/when this changes). + - parser is exposed, so that implementors can customize or override specific micromatch parsers if necessary + - compiler is exposed, so that implementors can customize or override specific micromatch compilers if necessary + +**Fixed** + + - more accurate matching (passes 100% of Bash 4.3 of the brace expansion and extglob unit tests, as well as all Bash glob tests that are relevant to node.js usage, all minimatch tests, all brace-expansion tests, and also passes a couple of tests that bash fails) + - even safer - micromatch has always generated optimized patterns so it's not subject to DoS exploits like minimatch (completely different than the regex DoS issue, minimatch and multimatch are still openly exposed to being used for DoS attacks), but more safeguards were built into this refactor + +**Changed** + + - the public API of this library did not change in this version and should be safe to upgrade without changing implentor code. However, we have released this as a major version for the following reasons: + - out of an abundance of caution due to the large amount of code changed in this release + - we have improved parser accuracy to such a degree that some implementors using invalid globs have noted change in behavior. If this is the case for you, please check that you are using a valid glob expression before logging a bug with this library + +## [1.0.1] - 2016-12-12 + +**Added** + +- Support for windows path edge cases where backslashes are used in brackets or other unusual combinations. + +## [1.0.0] - 2016-12-12 + +Stable release. + +## [0.1.0] - 2016-10-08 + +First release. + + +[Unreleased]: https://github.com/jonschlinkert/micromatch/compare/0.1.0...HEAD +[0.2.0]: https://github.com/jonschlinkert/micromatch/compare/0.1.0...0.2.0 + +[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/micromatch/LICENSE b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/micromatch/LICENSE new file mode 100755 index 00000000..9af4a67d --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/micromatch/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-present, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/micromatch/README.md b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/micromatch/README.md new file mode 100644 index 00000000..e38f7ca2 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/micromatch/README.md @@ -0,0 +1,1000 @@ +# micromatch [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W8YFZ425KND68) [![NPM version](https://img.shields.io/npm/v/micromatch.svg?style=flat)](https://www.npmjs.com/package/micromatch) [![NPM monthly downloads](https://img.shields.io/npm/dm/micromatch.svg?style=flat)](https://npmjs.org/package/micromatch) [![NPM total downloads](https://img.shields.io/npm/dt/micromatch.svg?style=flat)](https://npmjs.org/package/micromatch) [![Linux Build Status](https://img.shields.io/travis/micromatch/micromatch.svg?style=flat&label=Travis)](https://travis-ci.org/micromatch/micromatch) + +> Glob matching for javascript/node.js. A replacement and faster alternative to minimatch and multimatch. + +Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. + +## Table of Contents + +
+Details + +- [Install](#install) +- [Quickstart](#quickstart) +- [Why use micromatch?](#why-use-micromatch) + * [Matching features](#matching-features) +- [Switching to micromatch](#switching-to-micromatch) + * [From minimatch](#from-minimatch) + * [From multimatch](#from-multimatch) +- [API](#api) +- [Options](#options) +- [Options Examples](#options-examples) + * [options.basename](#optionsbasename) + * [options.bash](#optionsbash) + * [options.expandRange](#optionsexpandrange) + * [options.format](#optionsformat) + * [options.ignore](#optionsignore) + * [options.matchBase](#optionsmatchbase) + * [options.noextglob](#optionsnoextglob) + * [options.nonegate](#optionsnonegate) + * [options.noglobstar](#optionsnoglobstar) + * [options.nonull](#optionsnonull) + * [options.nullglob](#optionsnullglob) + * [options.onIgnore](#optionsonignore) + * [options.onMatch](#optionsonmatch) + * [options.onResult](#optionsonresult) + * [options.posixSlashes](#optionsposixslashes) + * [options.unescape](#optionsunescape) +- [Extended globbing](#extended-globbing) + * [Extglobs](#extglobs) + * [Braces](#braces) + * [Regex character classes](#regex-character-classes) + * [Regex groups](#regex-groups) + * [POSIX bracket expressions](#posix-bracket-expressions) +- [Notes](#notes) + * [Bash 4.3 parity](#bash-43-parity) + * [Backslashes](#backslashes) +- [Benchmarks](#benchmarks) + * [Running benchmarks](#running-benchmarks) + * [Latest results](#latest-results) +- [Contributing](#contributing) +- [About](#about) + +
+ +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save micromatch +``` + +## Quickstart + +```js +const micromatch = require('micromatch'); +// micromatch(list, patterns[, options]); +``` + +The [main export](#micromatch) takes a list of strings and one or more glob patterns: + +```js +console.log(micromatch(['foo', 'bar', 'baz', 'qux'], ['f*', 'b*'])) //=> ['foo', 'bar', 'baz'] +console.log(micromatch(['foo', 'bar', 'baz', 'qux'], ['*', '!b*'])) //=> ['foo', 'qux'] +``` + +Use [.isMatch()](#ismatch) to for boolean matching: + +```js +console.log(micromatch.isMatch('foo', 'f*')) //=> true +console.log(micromatch.isMatch('foo', ['b*', 'f*'])) //=> true +``` + +[Switching](#switching-to-micromatch) from minimatch and multimatch is easy! + +
+ +## Why use micromatch? + +> micromatch is a [replacement](#switching-to-micromatch) for minimatch and multimatch + +* Supports all of the same matching features as [minimatch](https://github.com/isaacs/minimatch) and [multimatch](https://github.com/sindresorhus/multimatch) +* More complete support for the Bash 4.3 specification than minimatch and multimatch. Micromatch passes _all of the spec tests_ from bash, including some that bash still fails. +* **Fast & Performant** - Loads in about 5ms and performs [fast matches](#benchmarks). +* **Glob matching** - Using wildcards (`*` and `?`), globstars (`**`) for nested directories +* **[Advanced globbing](#advanced-globbing)** - Supports [extglobs](#extglobs), [braces](#braces), and [POSIX brackets](#posix-bracket-expressions), and support for escaping special characters with `\` or quotes. +* **Accurate** - Covers more scenarios [than minimatch](https://github.com/yarnpkg/yarn/pull/3339) +* **Well tested** - More than 5,000 [test assertions](./test) +* **Windows support** - More reliable windows support than minimatch and multimatch. +* **[Safe](https://github.com/micromatch/braces#braces-is-safe)** - Micromatch is not subject to DoS with brace patterns like minimatch and multimatch. + +### Matching features + +* Support for multiple glob patterns (no need for wrappers like multimatch) +* Wildcards (`**`, `*.js`) +* Negation (`'!a/*.js'`, `'*!(b).js']`) +* [extglobs](#extglobs) (`+(x|y)`, `!(a|b)`) +* [POSIX character classes](#posix-bracket-expressions) (`[[:alpha:][:digit:]]`) +* [brace expansion](https://github.com/micromatch/braces) (`foo/{1..5}.md`, `bar/{a,b,c}.js`) +* regex character classes (`foo-[1-5].js`) +* regex logical "or" (`foo/(abc|xyz).js`) + +You can mix and match these features to create whatever patterns you need! + +## Switching to micromatch + +_(There is one notable difference between micromatch and minimatch in regards to how backslashes are handled. See [the notes about backslashes](#backslashes) for more information.)_ + +### From minimatch + +Use [micromatch.isMatch()](#ismatch) instead of `minimatch()`: + +```js +console.log(micromatch.isMatch('foo', 'b*')); //=> false +``` + +Use [micromatch.match()](#match) instead of `minimatch.match()`: + +```js +console.log(micromatch.match(['foo', 'bar'], 'b*')); //=> 'bar' +``` + +### From multimatch + +Same signature: + +```js +console.log(micromatch(['foo', 'bar', 'baz'], ['f*', '*z'])); //=> ['foo', 'baz'] +``` + +## API + +**Params** + +* **{String|Array}**: list List of strings to match. +* **{String|Array}**: patterns One or more glob patterns to use for matching. +* **{Object}**: options See available [options](#options) +* `returns` **{Array}**: Returns an array of matches + +**Example** + +```js +const mm = require('micromatch'); +// mm(list, patterns[, options]); + +console.log(mm(['a.js', 'a.txt'], ['*.js'])); +//=> [ 'a.js' ] +``` + +### [.matcher](index.js#L98) + +Returns a matcher function from the given glob `pattern` and `options`. The returned function takes a string to match as its only argument and returns true if the string is a match. + +**Params** + +* `pattern` **{String}**: Glob pattern +* `options` **{Object}** +* `returns` **{Function}**: Returns a matcher function. + +**Example** + +```js +const mm = require('micromatch'); +// mm.matcher(pattern[, options]); + +const isMatch = mm.matcher('*.!(*a)'); +console.log(isMatch('a.a')); //=> false +console.log(isMatch('a.b')); //=> true +``` + +### [.isMatch](index.js#L117) + +Returns true if **any** of the given glob `patterns` match the specified `string`. + +**Params** + +* **{String}**: str The string to test. +* **{String|Array}**: patterns One or more glob patterns to use for matching. +* **{Object}**: See available [options](#options). +* `returns` **{Boolean}**: Returns true if any patterns match `str` + +**Example** + +```js +const mm = require('micromatch'); +// mm.isMatch(string, patterns[, options]); + +console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true +console.log(mm.isMatch('a.a', 'b.*')); //=> false +``` + +### [.not](index.js#L136) + +Returns a list of strings that _**do not match any**_ of the given `patterns`. + +**Params** + +* `list` **{Array}**: Array of strings to match. +* `patterns` **{String|Array}**: One or more glob pattern to use for matching. +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Array}**: Returns an array of strings that **do not match** the given patterns. + +**Example** + +```js +const mm = require('micromatch'); +// mm.not(list, patterns[, options]); + +console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a')); +//=> ['b.b', 'c.c'] +``` + +### [.contains](index.js#L176) + +Returns true if the given `string` contains the given pattern. Similar to [.isMatch](#isMatch) but the pattern can match any part of the string. + +**Params** + +* `str` **{String}**: The string to match. +* `patterns` **{String|Array}**: Glob pattern to use for matching. +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Boolean}**: Returns true if the patter matches any part of `str`. + +**Example** + +```js +var mm = require('micromatch'); +// mm.contains(string, pattern[, options]); + +console.log(mm.contains('aa/bb/cc', '*b')); +//=> true +console.log(mm.contains('aa/bb/cc', '*d')); +//=> false +``` + +### [.matchKeys](index.js#L218) + +Filter the keys of the given object with the given `glob` pattern and `options`. Does not attempt to match nested keys. If you need this feature, use [glob-object](https://github.com/jonschlinkert/glob-object) instead. + +**Params** + +* `object` **{Object}**: The object with keys to filter. +* `patterns` **{String|Array}**: One or more glob patterns to use for matching. +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Object}**: Returns an object with only keys that match the given patterns. + +**Example** + +```js +const mm = require('micromatch'); +// mm.matchKeys(object, patterns[, options]); + +const obj = { aa: 'a', ab: 'b', ac: 'c' }; +console.log(mm.matchKeys(obj, '*b')); +//=> { ab: 'b' } +``` + +### [.some](index.js#L247) + +Returns true if some of the strings in the given `list` match any of the given glob `patterns`. + +**Params** + +* `list` **{String|Array}**: The string or array of strings to test. Returns as soon as the first match is found. +* `patterns` **{String|Array}**: One or more glob patterns to use for matching. +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Boolean}**: Returns true if any patterns match `str` + +**Example** + +```js +const mm = require('micromatch'); +// mm.some(list, patterns[, options]); + +console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); +// true +console.log(mm.some(['foo.js'], ['*.js', '!foo.js'])); +// false +``` + +### [.every](index.js#L283) + +Returns true if every string in the given `list` matches any of the given glob `patterns`. + +**Params** + +* `list` **{String|Array}**: The string or array of strings to test. +* `patterns` **{String|Array}**: One or more glob patterns to use for matching. +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Boolean}**: Returns true if any patterns match `str` + +**Example** + +```js +const mm = require('micromatch'); +// mm.every(list, patterns[, options]); + +console.log(mm.every('foo.js', ['foo.js'])); +// true +console.log(mm.every(['foo.js', 'bar.js'], ['*.js'])); +// true +console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); +// false +console.log(mm.every(['foo.js'], ['*.js', '!foo.js'])); +// false +``` + +### [.all](index.js#L322) + +Returns true if **all** of the given `patterns` match the specified string. + +**Params** + +* `str` **{String|Array}**: The string to test. +* `patterns` **{String|Array}**: One or more glob patterns to use for matching. +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Boolean}**: Returns true if any patterns match `str` + +**Example** + +```js +const mm = require('micromatch'); +// mm.all(string, patterns[, options]); + +console.log(mm.all('foo.js', ['foo.js'])); +// true + +console.log(mm.all('foo.js', ['*.js', '!foo.js'])); +// false + +console.log(mm.all('foo.js', ['*.js', 'foo.js'])); +// true + +console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js'])); +// true +``` + +### [.capture](index.js#L349) + +Returns an array of matches captured by `pattern` in `string, or`null` if the pattern did not match. + +**Params** + +* `glob` **{String}**: Glob pattern to use for matching. +* `input` **{String}**: String to match +* `options` **{Object}**: See available [options](#options) for changing how matches are performed +* `returns` **{Boolean}**: Returns an array of captures if the input matches the glob pattern, otherwise `null`. + +**Example** + +```js +const mm = require('micromatch'); +// mm.capture(pattern, string[, options]); + +console.log(mm.capture('test/*.js', 'test/foo.js')); +//=> ['foo'] +console.log(mm.capture('test/*.js', 'foo/bar.css')); +//=> null +``` + +### [.makeRe](index.js#L375) + +Create a regular expression from the given glob `pattern`. + +**Params** + +* `pattern` **{String}**: A glob pattern to convert to regex. +* `options` **{Object}** +* `returns` **{RegExp}**: Returns a regex created from the given pattern. + +**Example** + +```js +const mm = require('micromatch'); +// mm.makeRe(pattern[, options]); + +console.log(mm.makeRe('*.js')); +//=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/ +``` + +### [.scan](index.js#L391) + +Scan a glob pattern to separate the pattern into segments. Used by the [split](#split) method. + +**Params** + +* `pattern` **{String}** +* `options` **{Object}** +* `returns` **{Object}**: Returns an object with + +**Example** + +```js +const mm = require('micromatch'); +const state = mm.scan(pattern[, options]); +``` + +### [.parse](index.js#L407) + +Parse a glob pattern to create the source string for a regular expression. + +**Params** + +* `glob` **{String}** +* `options` **{Object}** +* `returns` **{Object}**: Returns an object with useful properties and output to be used as regex source string. + +**Example** + +```js +const mm = require('micromatch'); +const state = mm(pattern[, options]); +``` + +### [.braces](index.js#L434) + +Process the given brace `pattern`. + +**Params** + +* `pattern` **{String}**: String with brace pattern to process. +* `options` **{Object}**: Any [options](#options) to change how expansion is performed. See the [braces](https://github.com/micromatch/braces) library for all available options. +* `returns` **{Array}** + +**Example** + +```js +const { braces } = require('micromatch'); +console.log(braces('foo/{a,b,c}/bar')); +//=> [ 'foo/(a|b|c)/bar' ] + +console.log(braces('foo/{a,b,c}/bar', { expand: true })); +//=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ] +``` + +## Options + +| **Option** | **Type** | **Default value** | **Description** | +| --- | --- | --- | --- | +| `basename` | `boolean` | `false` | If set, then patterns without slashes will be matched against the basename of the path if it contains slashes. For example, `a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. | +| `bash` | `boolean` | `false` | Follow bash matching rules more strictly - disallows backslashes as escape characters, and treats single stars as globstars (`**`). | +| `capture` | `boolean` | `undefined` | Return regex matches in supporting methods. | +| `contains` | `boolean` | `undefined` | Allows glob to match any part of the given string(s). | +| `cwd` | `string` | `process.cwd()` | Current working directory. Used by `picomatch.split()` | +| `debug` | `boolean` | `undefined` | Debug regular expressions when an error is thrown. | +| `dot` | `boolean` | `false` | Match dotfiles. Otherwise dotfiles are ignored unless a `.` is explicitly defined in the pattern. | +| `expandRange` | `function` | `undefined` | Custom function for expanding ranges in brace patterns, such as `{a..z}`. The function receives the range values as two arguments, and it must return a string to be used in the generated regex. It's recommended that returned strings be wrapped in parentheses. This option is overridden by the `expandBrace` option. | +| `failglob` | `boolean` | `false` | Similar to the `failglob` behavior in Bash, throws an error when no matches are found. Based on the bash option of the same name. | +| `fastpaths` | `boolean` | `true` | To speed up processing, full parsing is skipped for a handful common glob patterns. Disable this behavior by setting this option to `false`. | +| `flags` | `boolean` | `undefined` | Regex flags to use in the generated regex. If defined, the `nocase` option will be overridden. | +| [format](#optionsformat) | `function` | `undefined` | Custom function for formatting the returned string. This is useful for removing leading slashes, converting Windows paths to Posix paths, etc. | +| `ignore` | `array\|string` | `undefined` | One or more glob patterns for excluding strings that should not be matched from the result. | +| `keepQuotes` | `boolean` | `false` | Retain quotes in the generated regex, since quotes may also be used as an alternative to backslashes. | +| `literalBrackets` | `boolean` | `undefined` | When `true`, brackets in the glob pattern will be escaped so that only literal brackets will be matched. | +| `lookbehinds` | `boolean` | `true` | Support regex positive and negative lookbehinds. Note that you must be using Node 8.1.10 or higher to enable regex lookbehinds. | +| `matchBase` | `boolean` | `false` | Alias for `basename` | +| `maxLength` | `boolean` | `65536` | Limit the max length of the input string. An error is thrown if the input string is longer than this value. | +| `nobrace` | `boolean` | `false` | Disable brace matching, so that `{a,b}` and `{1..3}` would be treated as literal characters. | +| `nobracket` | `boolean` | `undefined` | Disable matching with regex brackets. | +| `nocase` | `boolean` | `false` | Perform case-insensitive matching. Equivalent to the regex `i` flag. Note that this option is ignored when the `flags` option is defined. | +| `nodupes` | `boolean` | `true` | Deprecated, use `nounique` instead. This option will be removed in a future major release. By default duplicates are removed. Disable uniquification by setting this option to false. | +| `noext` | `boolean` | `false` | Alias for `noextglob` | +| `noextglob` | `boolean` | `false` | Disable support for matching with [extglobs](#extglobs) (like `+(a\|b)`) | +| `noglobstar` | `boolean` | `false` | Disable support for matching nested directories with globstars (`**`) | +| `nonegate` | `boolean` | `false` | Disable support for negating with leading `!` | +| `noquantifiers` | `boolean` | `false` | Disable support for regex quantifiers (like `a{1,2}`) and treat them as brace patterns to be expanded. | +| [onIgnore](#optionsonIgnore) | `function` | `undefined` | Function to be called on ignored items. | +| [onMatch](#optionsonMatch) | `function` | `undefined` | Function to be called on matched items. | +| [onResult](#optionsonResult) | `function` | `undefined` | Function to be called on all items, regardless of whether or not they are matched or ignored. | +| `posix` | `boolean` | `false` | Support [POSIX character classes](#posix-bracket-expressions) ("posix brackets"). | +| `posixSlashes` | `boolean` | `undefined` | Convert all slashes in file paths to forward slashes. This does not convert slashes in the glob pattern itself | +| `prepend` | `boolean` | `undefined` | String to prepend to the generated regex used for matching. | +| `regex` | `boolean` | `false` | Use regular expression rules for `+` (instead of matching literal `+`), and for stars that follow closing parentheses or brackets (as in `)*` and `]*`). | +| `strictBrackets` | `boolean` | `undefined` | Throw an error if brackets, braces, or parens are imbalanced. | +| `strictSlashes` | `boolean` | `undefined` | When true, picomatch won't match trailing slashes with single stars. | +| `unescape` | `boolean` | `undefined` | Remove preceding backslashes from escaped glob characters before creating the regular expression to perform matches. | +| `unixify` | `boolean` | `undefined` | Alias for `posixSlashes`, for backwards compatitibility. | + +## Options Examples + +### options.basename + +Allow glob patterns without slashes to match a file path based on its basename. Same behavior as [minimatch](https://github.com/isaacs/minimatch) option `matchBase`. + +**Type**: `Boolean` + +**Default**: `false` + +**Example** + +```js +micromatch(['a/b.js', 'a/c.md'], '*.js'); +//=> [] + +micromatch(['a/b.js', 'a/c.md'], '*.js', { basename: true }); +//=> ['a/b.js'] +``` + +### options.bash + +Enabled by default, this option enforces bash-like behavior with stars immediately following a bracket expression. Bash bracket expressions are similar to regex character classes, but unlike regex, a star following a bracket expression **does not repeat the bracketed characters**. Instead, the star is treated the same as any other star. + +**Type**: `Boolean` + +**Default**: `true` + +**Example** + +```js +const files = ['abc', 'ajz']; +console.log(micromatch(files, '[a-c]*')); +//=> ['abc', 'ajz'] + +console.log(micromatch(files, '[a-c]*', { bash: false })); +``` + +### options.expandRange + +**Type**: `function` + +**Default**: `undefined` + +Custom function for expanding ranges in brace patterns. The [fill-range](https://github.com/jonschlinkert/fill-range) library is ideal for this purpose, or you can use custom code to do whatever you need. + +**Example** + +The following example shows how to create a glob that matches a numeric folder name between `01` and `25`, with leading zeros. + +```js +const fill = require('fill-range'); +const regex = micromatch.makeRe('foo/{01..25}/bar', { + expandRange(a, b) { + return `(${fill(a, b, { toRegex: true })})`; + } +}); + +console.log(regex) +//=> /^(?:foo\/((?:0[1-9]|1[0-9]|2[0-5]))\/bar)$/ + +console.log(regex.test('foo/00/bar')) // false +console.log(regex.test('foo/01/bar')) // true +console.log(regex.test('foo/10/bar')) // true +console.log(regex.test('foo/22/bar')) // true +console.log(regex.test('foo/25/bar')) // true +console.log(regex.test('foo/26/bar')) // false +``` + +### options.format + +**Type**: `function` + +**Default**: `undefined` + +Custom function for formatting strings before they're matched. + +**Example** + +```js +// strip leading './' from strings +const format = str => str.replace(/^\.\//, ''); +const isMatch = picomatch('foo/*.js', { format }); +console.log(isMatch('./foo/bar.js')) //=> true +``` + +### options.ignore + +String or array of glob patterns to match files to ignore. + +**Type**: `String|Array` + +**Default**: `undefined` + +```js +const isMatch = micromatch.matcher('*', { ignore: 'f*' }); +console.log(isMatch('foo')) //=> false +console.log(isMatch('bar')) //=> true +console.log(isMatch('baz')) //=> true +``` + +### options.matchBase + +Alias for [options.basename](#options-basename). + +### options.noextglob + +Disable extglob support, so that [extglobs](#extglobs) are regarded as literal characters. + +**Type**: `Boolean` + +**Default**: `undefined` + +**Examples** + +```js +console.log(micromatch(['a/z', 'a/b', 'a/!(z)'], 'a/!(z)')); +//=> ['a/b', 'a/!(z)'] + +console.log(micromatch(['a/z', 'a/b', 'a/!(z)'], 'a/!(z)', { noextglob: true })); +//=> ['a/!(z)'] (matches only as literal characters) +``` + +### options.nonegate + +Disallow negation (`!`) patterns, and treat leading `!` as a literal character to match. + +**Type**: `Boolean` + +**Default**: `undefined` + +### options.noglobstar + +Disable matching with globstars (`**`). + +**Type**: `Boolean` + +**Default**: `undefined` + +```js +micromatch(['a/b', 'a/b/c', 'a/b/c/d'], 'a/**'); +//=> ['a/b', 'a/b/c', 'a/b/c/d'] + +micromatch(['a/b', 'a/b/c', 'a/b/c/d'], 'a/**', {noglobstar: true}); +//=> ['a/b'] +``` + +### options.nonull + +Alias for [options.nullglob](#options-nullglob). + +### options.nullglob + +If `true`, when no matches are found the actual (arrayified) glob pattern is returned instead of an empty array. Same behavior as [minimatch](https://github.com/isaacs/minimatch) option `nonull`. + +**Type**: `Boolean` + +**Default**: `undefined` + +### options.onIgnore + +```js +const onIgnore = ({ glob, regex, input, output }) => { + console.log({ glob, regex, input, output }); + // { glob: '*', regex: /^(?:(?!\.)(?=.)[^\/]*?\/?)$/, input: 'foo', output: 'foo' } +}; + +const isMatch = micromatch.matcher('*', { onIgnore, ignore: 'f*' }); +isMatch('foo'); +isMatch('bar'); +isMatch('baz'); +``` + +### options.onMatch + +```js +const onMatch = ({ glob, regex, input, output }) => { + console.log({ input, output }); + // { input: 'some\\path', output: 'some/path' } + // { input: 'some\\path', output: 'some/path' } + // { input: 'some\\path', output: 'some/path' } +}; + +const isMatch = micromatch.matcher('**', { onMatch, posixSlashes: true }); +isMatch('some\\path'); +isMatch('some\\path'); +isMatch('some\\path'); +``` + +### options.onResult + +```js +const onResult = ({ glob, regex, input, output }) => { + console.log({ glob, regex, input, output }); +}; + +const isMatch = micromatch('*', { onResult, ignore: 'f*' }); +isMatch('foo'); +isMatch('bar'); +isMatch('baz'); +``` + +### options.posixSlashes + +Convert path separators on returned files to posix/unix-style forward slashes. Aliased as `unixify` for backwards compatibility. + +**Type**: `Boolean` + +**Default**: `true` on windows, `false` everywhere else. + +**Example** + +```js +console.log(micromatch.match(['a\\b\\c'], 'a/**')); +//=> ['a/b/c'] + +console.log(micromatch.match(['a\\b\\c'], { posixSlashes: false })); +//=> ['a\\b\\c'] +``` + +### options.unescape + +Remove backslashes from escaped glob characters before creating the regular expression to perform matches. + +**Type**: `Boolean` + +**Default**: `undefined` + +**Example** + +In this example we want to match a literal `*`: + +```js +console.log(micromatch.match(['abc', 'a\\*c'], 'a\\*c')); +//=> ['a\\*c'] + +console.log(micromatch.match(['abc', 'a\\*c'], 'a\\*c', { unescape: true })); +//=> ['a*c'] +``` + +
+
+ +## Extended globbing + +Micromatch supports the following extended globbing features. + +### Extglobs + +Extended globbing, as described by the bash man page: + +| **pattern** | **regex equivalent** | **description** | +| --- | --- | --- | +| `?(pattern)` | `(pattern)?` | Matches zero or one occurrence of the given patterns | +| `*(pattern)` | `(pattern)*` | Matches zero or more occurrences of the given patterns | +| `+(pattern)` | `(pattern)+` | Matches one or more occurrences of the given patterns | +| `@(pattern)` | `(pattern)` * | Matches one of the given patterns | +| `!(pattern)` | N/A (equivalent regex is much more complicated) | Matches anything except one of the given patterns | + +* Note that `@` isn't a regex character. + +### Braces + +Brace patterns can be used to match specific ranges or sets of characters. + +**Example** + +The pattern `{f,b}*/{1..3}/{b,q}*` would match any of following strings: + +``` +foo/1/bar +foo/2/bar +foo/3/bar +baz/1/qux +baz/2/qux +baz/3/qux +``` + +Visit [braces](https://github.com/micromatch/braces) to see the full range of features and options related to brace expansion, or to create brace matching or expansion related issues. + +### Regex character classes + +Given the list: `['a.js', 'b.js', 'c.js', 'd.js', 'E.js']`: + +* `[ac].js`: matches both `a` and `c`, returning `['a.js', 'c.js']` +* `[b-d].js`: matches from `b` to `d`, returning `['b.js', 'c.js', 'd.js']` +* `[b-d].js`: matches from `b` to `d`, returning `['b.js', 'c.js', 'd.js']` +* `a/[A-Z].js`: matches and uppercase letter, returning `['a/E.md']` + +Learn about [regex character classes](http://www.regular-expressions.info/charclass.html). + +### Regex groups + +Given `['a.js', 'b.js', 'c.js', 'd.js', 'E.js']`: + +* `(a|c).js`: would match either `a` or `c`, returning `['a.js', 'c.js']` +* `(b|d).js`: would match either `b` or `d`, returning `['b.js', 'd.js']` +* `(b|[A-Z]).js`: would match either `b` or an uppercase letter, returning `['b.js', 'E.js']` + +As with regex, parens can be nested, so patterns like `((a|b)|c)/b` will work. Although brace expansion might be friendlier to use, depending on preference. + +### POSIX bracket expressions + +POSIX brackets are intended to be more user-friendly than regex character classes. This of course is in the eye of the beholder. + +**Example** + +```js +console.log(micromatch.isMatch('a1', '[[:alpha:][:digit:]]')) //=> true +console.log(micromatch.isMatch('a1', '[[:alpha:][:alpha:]]')) //=> false +``` + +*** + +## Notes + +### Bash 4.3 parity + +Whenever possible matching behavior is based on behavior Bash 4.3, which is mostly consistent with minimatch. + +However, it's suprising how many edge cases and rabbit holes there are with glob matching, and since there is no real glob specification, and micromatch is more accurate than both Bash and minimatch, there are cases where best-guesses were made for behavior. In a few cases where Bash had no answers, we used wildmatch (used by git) as a fallback. + +### Backslashes + +There is an important, notable difference between minimatch and micromatch _in regards to how backslashes are handled_ in glob patterns. + +* Micromatch exclusively and explicitly reserves backslashes for escaping characters in a glob pattern, even on windows, which is consistent with bash behavior. _More importantly, unescaping globs can result in unsafe regular expressions_. +* Minimatch converts all backslashes to forward slashes, which means you can't use backslashes to escape any characters in your glob patterns. + +We made this decision for micromatch for a couple of reasons: + +* Consistency with bash conventions. +* Glob patterns are not filepaths. They are a type of [regular language](https://en.wikipedia.org/wiki/Regular_language) that is converted to a JavaScript regular expression. Thus, when forward slashes are defined in a glob pattern, the resulting regular expression will match windows or POSIX path separators just fine. + +**A note about joining paths to globs** + +Note that when you pass something like `path.join('foo', '*')` to micromatch, you are creating a filepath and expecting it to still work as a glob pattern. This causes problems on windows, since the `path.sep` is `\\`. + +In other words, since `\\` is reserved as an escape character in globs, on windows `path.join('foo', '*')` would result in `foo\\*`, which tells micromatch to match `*` as a literal character. This is the same behavior as bash. + +To solve this, you might be inspired to do something like `'foo\\*'.replace(/\\/g, '/')`, but this causes another, potentially much more serious, problem. + +## Benchmarks + +### Running benchmarks + +Install dependencies for running benchmarks: + +```sh +$ cd bench && npm install +``` + +Run the benchmarks: + +```sh +$ npm run bench +``` + +### Latest results + +As of April 10, 2019 (longer bars are better): + +```sh +# .makeRe star + micromatch x 1,724,735 ops/sec ±1.69% (87 runs sampled)) + minimatch x 649,565 ops/sec ±1.93% (91 runs sampled) + +# .makeRe star; dot=true + micromatch x 1,302,127 ops/sec ±1.43% (92 runs sampled) + minimatch x 556,242 ops/sec ±0.71% (86 runs sampled) + +# .makeRe globstar + micromatch x 1,393,992 ops/sec ±0.71% (89 runs sampled) + minimatch x 1,112,801 ops/sec ±2.02% (91 runs sampled) + +# .makeRe globstars + micromatch x 1,419,097 ops/sec ±0.34% (94 runs sampled) + minimatch x 541,207 ops/sec ±1.66% (93 runs sampled) + +# .makeRe with leading star + micromatch x 1,247,825 ops/sec ±0.97% (94 runs sampled) + minimatch x 489,660 ops/sec ±0.63% (94 runs sampled) + +# .makeRe - braces + micromatch x 206,301 ops/sec ±1.62% (81 runs sampled)) + minimatch x 115,986 ops/sec ±0.59% (94 runs sampled) + +# .makeRe braces - range (expanded) + micromatch x 27,782 ops/sec ±0.79% (88 runs sampled) + minimatch x 4,683 ops/sec ±1.20% (92 runs sampled) + +# .makeRe braces - range (compiled) + micromatch x 134,056 ops/sec ±2.73% (77 runs sampled)) + minimatch x 977 ops/sec ±0.85% (91 runs sampled)d) + +# .makeRe braces - nested ranges (expanded) + micromatch x 18,353 ops/sec ±0.95% (91 runs sampled) + minimatch x 4,514 ops/sec ±1.04% (93 runs sampled) + +# .makeRe braces - nested ranges (compiled) + micromatch x 38,916 ops/sec ±1.85% (82 runs sampled) + minimatch x 980 ops/sec ±0.54% (93 runs sampled)d) + +# .makeRe braces - set (compiled) + micromatch x 141,088 ops/sec ±1.70% (70 runs sampled)) + minimatch x 43,385 ops/sec ±0.87% (93 runs sampled) + +# .makeRe braces - nested sets (compiled) + micromatch x 87,272 ops/sec ±2.85% (71 runs sampled)) + minimatch x 25,327 ops/sec ±1.59% (86 runs sampled) +``` + +## Contributing + +All contributions are welcome! Please read [the contributing guide](.github/contributing.md) to get started. + +**Bug reports** + +Please create an issue if you encounter a bug or matching behavior that doesn't seem correct. If you find a matching-related issue, please: + +* [research existing issues first](../../issues) (open and closed) +* visit the [GNU Bash documentation](https://www.gnu.org/software/bash/manual/) to see how Bash deals with the pattern +* visit the [minimatch](https://github.com/isaacs/minimatch) documentation to cross-check expected behavior in node.js +* if all else fails, since there is no real specification for globs we will probably need to discuss expected behavior and decide how to resolve it. which means any detail you can provide to help with this discussion would be greatly appreciated. + +**Platform issues** + +It's important to us that micromatch work consistently on all platforms. If you encounter any platform-specific matching or path related issues, please let us know (pull requests are also greatly appreciated). + +## About + +
+Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards. + +
+ +
+Running Tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +
+ +
+Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +
+ +### Related projects + +You might also be interested in these projects: + +* [braces](https://www.npmjs.com/package/braces): Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support… [more](https://github.com/micromatch/braces) | [homepage](https://github.com/micromatch/braces "Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed.") +* [expand-brackets](https://www.npmjs.com/package/expand-brackets): Expand POSIX bracket expressions (character classes) in glob patterns. | [homepage](https://github.com/micromatch/expand-brackets "Expand POSIX bracket expressions (character classes) in glob patterns.") +* [extglob](https://www.npmjs.com/package/extglob): Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob… [more](https://github.com/micromatch/extglob) | [homepage](https://github.com/micromatch/extglob "Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob patterns.") +* [fill-range](https://www.npmjs.com/package/fill-range): Fill in a range of numbers or letters, optionally passing an increment or `step` to… [more](https://github.com/jonschlinkert/fill-range) | [homepage](https://github.com/jonschlinkert/fill-range "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`") +* [nanomatch](https://www.npmjs.com/package/nanomatch): Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash… [more](https://github.com/micromatch/nanomatch) | [homepage](https://github.com/micromatch/nanomatch "Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash 4.3 wildcard support only (no support for exglobs, posix brackets or braces)") + +### Contributors + +| **Commits** | **Contributor** | +| --- | --- | +| 475 | [jonschlinkert](https://github.com/jonschlinkert) | +| 12 | [es128](https://github.com/es128) | +| 8 | [doowb](https://github.com/doowb) | +| 3 | [paulmillr](https://github.com/paulmillr) | +| 2 | [TrySound](https://github.com/TrySound) | +| 2 | [MartinKolarik](https://github.com/MartinKolarik) | +| 2 | [Tvrqvoise](https://github.com/Tvrqvoise) | +| 2 | [tunnckoCore](https://github.com/tunnckoCore) | +| 1 | [amilajack](https://github.com/amilajack) | +| 1 | [mrmlnc](https://github.com/mrmlnc) | +| 1 | [devongovett](https://github.com/devongovett) | +| 1 | [DianeLooney](https://github.com/DianeLooney) | +| 1 | [UltCombo](https://github.com/UltCombo) | +| 1 | [tomByrer](https://github.com/tomByrer) | +| 1 | [fidian](https://github.com/fidian) | +| 1 | [simlu](https://github.com/simlu) | +| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | + +### Author + +**Jon Schlinkert** + +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) + +### License + +Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 10, 2019._ \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/micromatch/index.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/micromatch/index.js new file mode 100644 index 00000000..1d5b3d1c --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/micromatch/index.js @@ -0,0 +1,467 @@ +'use strict'; + +const util = require('util'); +const braces = require('braces'); +const picomatch = require('picomatch'); +const utils = require('picomatch/lib/utils'); +const isEmptyString = val => typeof val === 'string' && (val === '' || val === './'); + +/** + * Returns an array of strings that match one or more glob patterns. + * + * ```js + * const mm = require('micromatch'); + * // mm(list, patterns[, options]); + * + * console.log(mm(['a.js', 'a.txt'], ['*.js'])); + * //=> [ 'a.js' ] + * ``` + * @param {String|Array} list List of strings to match. + * @param {String|Array} patterns One or more glob patterns to use for matching. + * @param {Object} options See available [options](#options) + * @return {Array} Returns an array of matches + * @summary false + * @api public + */ + +const micromatch = (list, patterns, options) => { + patterns = [].concat(patterns); + list = [].concat(list); + + let omit = new Set(); + let keep = new Set(); + let items = new Set(); + let negatives = 0; + + let onResult = state => { + items.add(state.output); + if (options && options.onResult) { + options.onResult(state); + } + }; + + for (let i = 0; i < patterns.length; i++) { + let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true); + let negated = isMatch.state.negated || isMatch.state.negatedExtglob; + if (negated) negatives++; + + for (let item of list) { + let matched = isMatch(item, true); + + let match = negated ? !matched.isMatch : matched.isMatch; + if (!match) continue; + + if (negated) { + omit.add(matched.output); + } else { + omit.delete(matched.output); + keep.add(matched.output); + } + } + } + + let result = negatives === patterns.length ? [...items] : [...keep]; + let matches = result.filter(item => !omit.has(item)); + + if (options && matches.length === 0) { + if (options.failglob === true) { + throw new Error(`No matches found for "${patterns.join(', ')}"`); + } + + if (options.nonull === true || options.nullglob === true) { + return options.unescape ? patterns.map(p => p.replace(/\\/g, '')) : patterns; + } + } + + return matches; +}; + +/** + * Backwards compatibility + */ + +micromatch.match = micromatch; + +/** + * Returns a matcher function from the given glob `pattern` and `options`. + * The returned function takes a string to match as its only argument and returns + * true if the string is a match. + * + * ```js + * const mm = require('micromatch'); + * // mm.matcher(pattern[, options]); + * + * const isMatch = mm.matcher('*.!(*a)'); + * console.log(isMatch('a.a')); //=> false + * console.log(isMatch('a.b')); //=> true + * ``` + * @param {String} `pattern` Glob pattern + * @param {Object} `options` + * @return {Function} Returns a matcher function. + * @api public + */ + +micromatch.matcher = (pattern, options) => picomatch(pattern, options); + +/** + * Returns true if **any** of the given glob `patterns` match the specified `string`. + * + * ```js + * const mm = require('micromatch'); + * // mm.isMatch(string, patterns[, options]); + * + * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true + * console.log(mm.isMatch('a.a', 'b.*')); //=> false + * ``` + * @param {String} str The string to test. + * @param {String|Array} patterns One or more glob patterns to use for matching. + * @param {Object} [options] See available [options](#options). + * @return {Boolean} Returns true if any patterns match `str` + * @api public + */ + +micromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); + +/** + * Backwards compatibility + */ + +micromatch.any = micromatch.isMatch; + +/** + * Returns a list of strings that _**do not match any**_ of the given `patterns`. + * + * ```js + * const mm = require('micromatch'); + * // mm.not(list, patterns[, options]); + * + * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a')); + * //=> ['b.b', 'c.c'] + * ``` + * @param {Array} `list` Array of strings to match. + * @param {String|Array} `patterns` One or more glob pattern to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Array} Returns an array of strings that **do not match** the given patterns. + * @api public + */ + +micromatch.not = (list, patterns, options = {}) => { + patterns = [].concat(patterns).map(String); + let result = new Set(); + let items = []; + + let onResult = state => { + if (options.onResult) options.onResult(state); + items.push(state.output); + }; + + let matches = micromatch(list, patterns, { ...options, onResult }); + + for (let item of items) { + if (!matches.includes(item)) { + result.add(item); + } + } + return [...result]; +}; + +/** + * Returns true if the given `string` contains the given pattern. Similar + * to [.isMatch](#isMatch) but the pattern can match any part of the string. + * + * ```js + * var mm = require('micromatch'); + * // mm.contains(string, pattern[, options]); + * + * console.log(mm.contains('aa/bb/cc', '*b')); + * //=> true + * console.log(mm.contains('aa/bb/cc', '*d')); + * //=> false + * ``` + * @param {String} `str` The string to match. + * @param {String|Array} `patterns` Glob pattern to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if the patter matches any part of `str`. + * @api public + */ + +micromatch.contains = (str, pattern, options) => { + if (typeof str !== 'string') { + throw new TypeError(`Expected a string: "${util.inspect(str)}"`); + } + + if (Array.isArray(pattern)) { + return pattern.some(p => micromatch.contains(str, p, options)); + } + + if (typeof pattern === 'string') { + if (isEmptyString(str) || isEmptyString(pattern)) { + return false; + } + + if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) { + return true; + } + } + + return micromatch.isMatch(str, pattern, { ...options, contains: true }); +}; + +/** + * Filter the keys of the given object with the given `glob` pattern + * and `options`. Does not attempt to match nested keys. If you need this feature, + * use [glob-object][] instead. + * + * ```js + * const mm = require('micromatch'); + * // mm.matchKeys(object, patterns[, options]); + * + * const obj = { aa: 'a', ab: 'b', ac: 'c' }; + * console.log(mm.matchKeys(obj, '*b')); + * //=> { ab: 'b' } + * ``` + * @param {Object} `object` The object with keys to filter. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Object} Returns an object with only keys that match the given patterns. + * @api public + */ + +micromatch.matchKeys = (obj, patterns, options) => { + if (!utils.isObject(obj)) { + throw new TypeError('Expected the first argument to be an object'); + } + let keys = micromatch(Object.keys(obj), patterns, options); + let res = {}; + for (let key of keys) res[key] = obj[key]; + return res; +}; + +/** + * Returns true if some of the strings in the given `list` match any of the given glob `patterns`. + * + * ```js + * const mm = require('micromatch'); + * // mm.some(list, patterns[, options]); + * + * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); + * // true + * console.log(mm.some(['foo.js'], ['*.js', '!foo.js'])); + * // false + * ``` + * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if any patterns match `str` + * @api public + */ + +micromatch.some = (list, patterns, options) => { + let items = [].concat(list); + + for (let pattern of [].concat(patterns)) { + let isMatch = picomatch(String(pattern), options); + if (items.some(item => isMatch(item))) { + return true; + } + } + return false; +}; + +/** + * Returns true if every string in the given `list` matches + * any of the given glob `patterns`. + * + * ```js + * const mm = require('micromatch'); + * // mm.every(list, patterns[, options]); + * + * console.log(mm.every('foo.js', ['foo.js'])); + * // true + * console.log(mm.every(['foo.js', 'bar.js'], ['*.js'])); + * // true + * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); + * // false + * console.log(mm.every(['foo.js'], ['*.js', '!foo.js'])); + * // false + * ``` + * @param {String|Array} `list` The string or array of strings to test. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if any patterns match `str` + * @api public + */ + +micromatch.every = (list, patterns, options) => { + let items = [].concat(list); + + for (let pattern of [].concat(patterns)) { + let isMatch = picomatch(String(pattern), options); + if (!items.every(item => isMatch(item))) { + return false; + } + } + return true; +}; + +/** + * Returns true if **all** of the given `patterns` match + * the specified string. + * + * ```js + * const mm = require('micromatch'); + * // mm.all(string, patterns[, options]); + * + * console.log(mm.all('foo.js', ['foo.js'])); + * // true + * + * console.log(mm.all('foo.js', ['*.js', '!foo.js'])); + * // false + * + * console.log(mm.all('foo.js', ['*.js', 'foo.js'])); + * // true + * + * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js'])); + * // true + * ``` + * @param {String|Array} `str` The string to test. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if any patterns match `str` + * @api public + */ + +micromatch.all = (str, patterns, options) => { + if (typeof str !== 'string') { + throw new TypeError(`Expected a string: "${util.inspect(str)}"`); + } + + return [].concat(patterns).every(p => picomatch(p, options)(str)); +}; + +/** + * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match. + * + * ```js + * const mm = require('micromatch'); + * // mm.capture(pattern, string[, options]); + * + * console.log(mm.capture('test/*.js', 'test/foo.js')); + * //=> ['foo'] + * console.log(mm.capture('test/*.js', 'foo/bar.css')); + * //=> null + * ``` + * @param {String} `glob` Glob pattern to use for matching. + * @param {String} `input` String to match + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns an array of captures if the input matches the glob pattern, otherwise `null`. + * @api public + */ + +micromatch.capture = (glob, input, options) => { + let posix = utils.isWindows(options); + let regex = picomatch.makeRe(String(glob), { ...options, capture: true }); + let match = regex.exec(posix ? utils.toPosixSlashes(input) : input); + + if (match) { + return match.slice(1).map(v => v === void 0 ? '' : v); + } +}; + +/** + * Create a regular expression from the given glob `pattern`. + * + * ```js + * const mm = require('micromatch'); + * // mm.makeRe(pattern[, options]); + * + * console.log(mm.makeRe('*.js')); + * //=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/ + * ``` + * @param {String} `pattern` A glob pattern to convert to regex. + * @param {Object} `options` + * @return {RegExp} Returns a regex created from the given pattern. + * @api public + */ + +micromatch.makeRe = (...args) => picomatch.makeRe(...args); + +/** + * Scan a glob pattern to separate the pattern into segments. Used + * by the [split](#split) method. + * + * ```js + * const mm = require('micromatch'); + * const state = mm.scan(pattern[, options]); + * ``` + * @param {String} `pattern` + * @param {Object} `options` + * @return {Object} Returns an object with + * @api public + */ + +micromatch.scan = (...args) => picomatch.scan(...args); + +/** + * Parse a glob pattern to create the source string for a regular + * expression. + * + * ```js + * const mm = require('micromatch'); + * const state = mm(pattern[, options]); + * ``` + * @param {String} `glob` + * @param {Object} `options` + * @return {Object} Returns an object with useful properties and output to be used as regex source string. + * @api public + */ + +micromatch.parse = (patterns, options) => { + let res = []; + for (let pattern of [].concat(patterns || [])) { + for (let str of braces(String(pattern), options)) { + res.push(picomatch.parse(str, options)); + } + } + return res; +}; + +/** + * Process the given brace `pattern`. + * + * ```js + * const { braces } = require('micromatch'); + * console.log(braces('foo/{a,b,c}/bar')); + * //=> [ 'foo/(a|b|c)/bar' ] + * + * console.log(braces('foo/{a,b,c}/bar', { expand: true })); + * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ] + * ``` + * @param {String} `pattern` String with brace pattern to process. + * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options. + * @return {Array} + * @api public + */ + +micromatch.braces = (pattern, options) => { + if (typeof pattern !== 'string') throw new TypeError('Expected a string'); + if ((options && options.nobrace === true) || !/\{.*\}/.test(pattern)) { + return [pattern]; + } + return braces(pattern, options); +}; + +/** + * Expand braces + */ + +micromatch.braceExpand = (pattern, options) => { + if (typeof pattern !== 'string') throw new TypeError('Expected a string'); + return micromatch.braces(pattern, { ...options, expand: true }); +}; + +/** + * Expose micromatch + */ + +module.exports = micromatch; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/micromatch/package.json b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/micromatch/package.json new file mode 100644 index 00000000..b976f04b --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/micromatch/package.json @@ -0,0 +1,118 @@ +{ + "name": "micromatch", + "description": "Glob matching for javascript/node.js. A replacement and faster alternative to minimatch and multimatch.", + "version": "4.0.2", + "homepage": "https://github.com/micromatch/micromatch", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "contributors": [ + "(https://github.com/DianeLooney)", + "Amila Welihinda (amilajack.com)", + "Bogdan Chadkin (https://github.com/TrySound)", + "Brian Woodward (https://twitter.com/doowb)", + "Devon Govett (http://badassjs.com)", + "Elan Shanker (https://github.com/es128)", + "Fabrício Matté (https://ultcombo.js.org)", + "Jon Schlinkert (http://twitter.com/jonschlinkert)", + "Martin Kolárik (https://kolarik.sk)", + "Olsten Larck (https://i.am.charlike.online)", + "Paul Miller (paulmillr.com)", + "Tom Byrer (https://github.com/tomByrer)", + "Tyler Akins (http://rumkin.com)", + "Peter Bright (https://github.com/drpizza)" + ], + "repository": "micromatch/micromatch", + "bugs": { + "url": "https://github.com/micromatch/micromatch/issues" + }, + "license": "MIT", + "files": [ + "index.js" + ], + "main": "index.js", + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "mocha" + }, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "devDependencies": { + "fill-range": "^7.0.1", + "gulp-format-md": "^2.0.0", + "minimatch": "^3.0.4", + "mocha": "^5.2.0", + "time-require": "github:jonschlinkert/time-require" + }, + "keywords": [ + "bash", + "bracket", + "character-class", + "expand", + "expansion", + "expression", + "extglob", + "extglobs", + "file", + "files", + "filter", + "find", + "glob", + "globbing", + "globs", + "globstar", + "lookahead", + "lookaround", + "lookbehind", + "match", + "matcher", + "matches", + "matching", + "micromatch", + "minimatch", + "multimatch", + "negate", + "negation", + "path", + "pattern", + "patterns", + "posix", + "regex", + "regexp", + "regular", + "shell", + "star", + "wildcard" + ], + "verb": { + "toc": "collapsible", + "layout": "default", + "tasks": [ + "readme" + ], + "plugins": [ + "gulp-format-md" + ], + "lint": { + "reflinks": true + }, + "related": { + "list": [ + "braces", + "expand-brackets", + "extglob", + "fill-range", + "nanomatch" + ] + }, + "reflinks": [ + "extglob", + "fill-range", + "glob-object", + "minimatch", + "multimatch" + ] + } +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/CHANGELOG.md b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/CHANGELOG.md new file mode 100644 index 00000000..91ef4dcf --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/CHANGELOG.md @@ -0,0 +1,69 @@ +# Release history + +**All notable changes to this project will be documented in this file.** + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +
+ Guiding Principles + +- Changelogs are for humans, not machines. +- There should be an entry for every single version. +- The same types of changes should be grouped. +- Versions and sections should be linkable. +- The latest version comes first. +- The release date of each versions is displayed. +- Mention whether you follow Semantic Versioning. + +
+ +
+ Types of changes + +Changelog entries are classified using the following labels _(from [keep-a-changelog](http://keepachangelog.com/)_): + +- `Added` for new features. +- `Changed` for changes in existing functionality. +- `Deprecated` for soon-to-be removed features. +- `Removed` for now removed features. +- `Fixed` for any bug fixes. +- `Security` in case of vulnerabilities. + +
+ +## [2.0.4] - 2019-04-10 + +### Fixed + +- Readme link [fixed](https://github.com/micromatch/picomatch/pull/13/commits/a96ab3aa2b11b6861c23289964613d85563b05df) by @danez. +- `options.capture` now works as expected when fastpaths are enabled. See https://github.com/micromatch/picomatch/pull/12/commits/26aefd71f1cfaf95c37f1c1fcab68a693b037304. Thanks to @DrPizza. + +## [2.0.0] - 2019-04-10 + +### Added + +- Adds support for `options.onIgnore`. See the readme for details +- Adds support for `options.onResult`. See the readme for details + +### Breaking changes + +- The unixify option was renamed to `windows` +- caching and all related options and methods have been removed + +## [1.0.0] - 2018-11-05 + +- adds `.onMatch` option +- improvements to `.scan` method +- numerous improvements and optimizations for matching and parsing +- better windows path handling + +## 0.1.0 - 2017-04-13 + +First release. + + +[2.0.4]: https://github.com/jonschlinkert/micromatch/compare/2.0.0...2.0.4 +[2.0.0]: https://github.com/jonschlinkert/micromatch/compare/1.0.0...2.0.0 +[1.0.0]: https://github.com/jonschlinkert/micromatch/compare/0.1.0...1.0.0 +[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/LICENSE b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/LICENSE new file mode 100644 index 00000000..3608dca2 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017-present, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/README.md b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/README.md new file mode 100644 index 00000000..03ba961d --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/README.md @@ -0,0 +1,605 @@ +

Picomatch

+ +

+ +version + + +travis + + +downloads + +

+ +
+
+ +

+Blazing fast and accurate glob matcher written in JavaScript.
+No dependencies and full support for standard and extended Bash glob features, including braces, extglobs, POSIX brackets, and regular expressions. +

+ +
+
+ +## Why picomatch? + +* **Lightweight** - No dependencies +* **Minimal** - Tiny API surface. Main export is a function that takes a glob pattern and returns a matcher function. +* **Fast** - Loads in about 2ms (that's several times faster than a [single frame of a HD movie](http://www.endmemo.com/sconvert/framespersecondframespermillisecond.php) at 60fps) +* **Performant** - Use the returned matcher function to speed up repeat matching (like when watching files) +* **Accurate matching** - Using wildcards (`*` and `?`), globstars (`**`) for nested directories, [advanced globbing](#advanced-globbing) with extglobs, braces, and POSIX brackets, and support for escaping special characters with `\` or quotes. +* **Well tested** - Thousands of unit tests + +See the [library comparison](#library-comparisons) to other libraries. + +
+
+ +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save picomatch +``` + +
+ +## Usage + +The main export is a function that takes a glob pattern and an options object and returns a function for matching strings. + +```js +const pm = require('picomatch'); +const isMatch = pm('*.js'); + +console.log(isMatch('abcd')); //=> false +console.log(isMatch('a.js')); //=> true +console.log(isMatch('a.md')); //=> false +console.log(isMatch('a/b.js')); //=> false +``` + +
+ +## API + +### [picomatch](lib/picomatch.js#L30) + +Creates a matcher function from one or more glob patterns. The returned function takes a string to match as its first argument, and returns true if the string is a match. The returned matcher function also takes a boolean as the second argument that, when true, returns an object with additional information. + +**Params** + +* `globs` **{String|Array}**: One or more glob patterns. +* `options` **{Object=}** +* `returns` **{Function=}**: Returns a matcher function. + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch(glob[, options]); + +const isMatch = picomatch('*.!(*a)'); +console.log(isMatch('a.a')); //=> false +console.log(isMatch('a.b')); //=> true +``` + +### [.test](lib/picomatch.js#L109) + +Test `input` with the given `regex`. This is used by the main `picomatch()` function to test the input string. + +**Params** + +* `input` **{String}**: String to test. +* `regex` **{RegExp}** +* `returns` **{Object}**: Returns an object with matching info. + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch.test(input, regex[, options]); + +console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\/([^/]*?))$/)); +// { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' } +``` + +### [.matchBase](lib/picomatch.js#L153) + +Match the basename of a filepath. + +**Params** + +* `input` **{String}**: String to test. +* `glob` **{RegExp|String}**: Glob pattern or regex created by [.makeRe](#makeRe). +* `returns` **{Boolean}** + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch.matchBase(input, glob[, options]); +console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true +``` + +### [.isMatch](lib/picomatch.js#L175) + +Returns true if **any** of the given glob `patterns` match the specified `string`. + +**Params** + +* **{String|Array}**: str The string to test. +* **{String|Array}**: patterns One or more glob patterns to use for matching. +* **{Object}**: See available [options](#options). +* `returns` **{Boolean}**: Returns true if any patterns match `str` + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch.isMatch(string, patterns[, options]); + +console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true +console.log(picomatch.isMatch('a.a', 'b.*')); //=> false +``` + +### [.parse](lib/picomatch.js#L191) + +Parse a glob pattern to create the source string for a regular expression. + +**Params** + +* `glob` **{String}** +* `options` **{Object}** +* `returns` **{Object}**: Returns an object with useful properties and output to be used as a regex source string. + +**Example** + +```js +const picomatch = require('picomatch'); +const result = picomatch.parse(glob[, options]); +``` + +### [.scan](lib/picomatch.js#L215) + +Scan a glob pattern to separate the pattern into segments. + +**Params** + +* `input` **{String}**: Glob pattern to scan. +* `options` **{Object}** +* `returns` **{Object}**: Returns an object with + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch.scan(input[, options]); + +const result = picomatch.scan('!./foo/*.js'); +console.log(result); +// { prefix: '!./', +// input: '!./foo/*.js', +// base: 'foo', +// glob: '*.js', +// negated: true, +// isGlob: true } +``` + +### [.makeRe](lib/picomatch.js#L233) + +Create a regular expression from a glob pattern. + +**Params** + +* `input` **{String}**: A glob pattern to convert to regex. +* `options` **{Object}** +* `returns` **{RegExp}**: Returns a regex created from the given pattern. + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch.makeRe(input[, options]); + +console.log(picomatch.makeRe('*.js')); +//=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ +``` + +### [.toRegex](lib/picomatch.js#L294) + +Create a regular expression from the given regex source string. + +**Params** + +* `source` **{String}**: Regular expression source string. +* `options` **{Object}** +* `returns` **{RegExp}** + +**Example** + +```js +const picomatch = require('picomatch'); +// picomatch.toRegex(source[, options]); + +const { output } = picomatch.parse('*.js'); +console.log(picomatch.toRegex(output)); +//=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ +``` + +
+ +## Options + +| **Option** | **Type** | **Default value** | **Description** | +| --- | --- | --- | --- | +| `basename` | `boolean` | `false` | If set, then patterns without slashes will be matched against the basename of the path if it contains slashes. For example, `a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. | +| `bash` | `boolean` | `false` | Follow bash matching rules more strictly - disallows backslashes as escape characters, and treats single stars as globstars (`**`). | +| `capture` | `boolean` | `undefined` | Return regex matches in supporting methods. | +| `contains` | `boolean` | `undefined` | Allows glob to match any part of the given string(s). | +| `cwd` | `string` | `process.cwd()` | Current working directory. Used by `picomatch.split()` | +| `debug` | `boolean` | `undefined` | Debug regular expressions when an error is thrown. | +| `dot` | `boolean` | `false` | Enable dotfile matching. By default, dotfiles are ignored unless a `.` is explicitly defined in the pattern, or `options.dot` is true | +| `expandRange` | `function` | `undefined` | Custom function for expanding ranges in brace patterns, such as `{a..z}`. The function receives the range values as two arguments, and it must return a string to be used in the generated regex. It's recommended that returned strings be wrapped in parentheses. | +| `failglob` | `boolean` | `false` | Throws an error if no matches are found. Based on the bash option of the same name. | +| `fastpaths` | `boolean` | `true` | To speed up processing, full parsing is skipped for a handful common glob patterns. Disable this behavior by setting this option to `false`. | +| `flags` | `boolean` | `undefined` | Regex flags to use in the generated regex. If defined, the `nocase` option will be overridden. | +| [format](#optionsformat) | `function` | `undefined` | Custom function for formatting the returned string. This is useful for removing leading slashes, converting Windows paths to Posix paths, etc. | +| `ignore` | `array\|string` | `undefined` | One or more glob patterns for excluding strings that should not be matched from the result. | +| `keepQuotes` | `boolean` | `false` | Retain quotes in the generated regex, since quotes may also be used as an alternative to backslashes. | +| `literalBrackets` | `boolean` | `undefined` | When `true`, brackets in the glob pattern will be escaped so that only literal brackets will be matched. | +| `lookbehinds` | `boolean` | `true` | Support regex positive and negative lookbehinds. Note that you must be using Node 8.1.10 or higher to enable regex lookbehinds. | +| `matchBase` | `boolean` | `false` | Alias for `basename` | +| `maxLength` | `boolean` | `65536` | Limit the max length of the input string. An error is thrown if the input string is longer than this value. | +| `nobrace` | `boolean` | `false` | Disable brace matching, so that `{a,b}` and `{1..3}` would be treated as literal characters. | +| `nobracket` | `boolean` | `undefined` | Disable matching with regex brackets. | +| `nocase` | `boolean` | `false` | Make matching case-insensitive. Equivalent to the regex `i` flag. Note that this option is overridden by the `flags` option. | +| `nodupes` | `boolean` | `true` | Deprecated, use `nounique` instead. This option will be removed in a future major release. By default duplicates are removed. Disable uniquification by setting this option to false. | +| `noext` | `boolean` | `false` | Alias for `noextglob` | +| `noextglob` | `boolean` | `false` | Disable support for matching with extglobs (like `+(a\|b)`) | +| `noglobstar` | `boolean` | `false` | Disable support for matching nested directories with globstars (`**`) | +| `nonegate` | `boolean` | `false` | Disable support for negating with leading `!` | +| `noquantifiers` | `boolean` | `false` | Disable support for regex quantifiers (like `a{1,2}`) and treat them as brace patterns to be expanded. | +| [onIgnore](#optionsonIgnore) | `function` | `undefined` | Function to be called on ignored items. | +| [onMatch](#optionsonMatch) | `function` | `undefined` | Function to be called on matched items. | +| [onResult](#optionsonResult) | `function` | `undefined` | Function to be called on all items, regardless of whether or not they are matched or ignored. | +| `posix` | `boolean` | `false` | Support POSX character classes ("posix brackets"). | +| `posixSlashes` | `boolean` | `undefined` | Convert all slashes in file paths to forward slashes. This does not convert slashes in the glob pattern itself | +| `prepend` | `boolean` | `undefined` | String to prepend to the generated regex used for matching. | +| `regex` | `boolean` | `false` | Use regular expression rules for `+` (instead of matching literal `+`), and for stars that follow closing parentheses or brackets (as in `)*` and `]*`). | +| `strictBrackets` | `boolean` | `undefined` | Throw an error if brackets, braces, or parens are imbalanced. | +| `strictSlashes` | `boolean` | `undefined` | When true, picomatch won't match trailing slashes with single stars. | +| `unescape` | `boolean` | `undefined` | Remove backslashes preceding escaped characters in the glob pattern. By default, backslashes are retained. | +| `unixify` | `boolean` | `undefined` | Alias for `posixSlashes`, for backwards compatitibility. | + +
+ +## Options Examples + +### options.expandRange + +**Type**: `function` + +**Default**: `undefined` + +Custom function for expanding ranges in brace patterns. The [fill-range](https://github.com/jonschlinkert/fill-range) library is ideal for this purpose, or you can use custom code to do whatever you need. + +**Example** + +The following example shows how to create a glob that matches a folder + +```js +const fill = require('fill-range'); +const regex = pm.makeRe('foo/{01..25}/bar', { + expandRange(a, b) { + return `(${fill(a, b, { toRegex: true })})`; + } +}); + +console.log(regex); +//=> /^(?:foo\/((?:0[1-9]|1[0-9]|2[0-5]))\/bar)$/ + +console.log(regex.test('foo/00/bar')) // false +console.log(regex.test('foo/01/bar')) // true +console.log(regex.test('foo/10/bar')) // true +console.log(regex.test('foo/22/bar')) // true +console.log(regex.test('foo/25/bar')) // true +console.log(regex.test('foo/26/bar')) // false +``` + +### options.format + +**Type**: `function` + +**Default**: `undefined` + +Custom function for formatting strings before they're matched. + +**Example** + +```js +// strip leading './' from strings +const format = str => str.replace(/^\.\//, ''); +const isMatch = picomatch('foo/*.js', { format }); +console.log(isMatch('./foo/bar.js')); //=> true +``` + +### options.onMatch + +```js +const onMatch = ({ glob, regex, input, output }) => { + console.log({ glob, regex, input, output }); +}; + +const isMatch = picomatch('*', { onMatch }); +isMatch('foo'); +isMatch('bar'); +isMatch('baz'); +``` + +### options.onIgnore + +```js +const onIgnore = ({ glob, regex, input, output }) => { + console.log({ glob, regex, input, output }); +}; + +const isMatch = picomatch('*', { onIgnore, ignore: 'f*' }); +isMatch('foo'); +isMatch('bar'); +isMatch('baz'); +``` + +### options.onResult + +```js +const onResult = ({ glob, regex, input, output }) => { + console.log({ glob, regex, input, output }); +}; + +const isMatch = picomatch('*', { onResult, ignore: 'f*' }); +isMatch('foo'); +isMatch('bar'); +isMatch('baz'); +``` + +
+
+ +# Globbing features + +* [Basic globbing](#basic-globbing) (Wildcard matching) +* [Advanced globbing](#advanced-globbing) (extglobs, posix brackets, brace matching) + +## Basic globbing + +| **Character** | **Description** | +| --- | --- | +| `*` | Matches any character zero or more times, excluding path separators. Does _not match_ path separators or hidden files or directories ("dotfiles"), unless explicitly enabled by setting the `dot` option to `true`. | +| `**` | Matches any character zero or more times, including path separators. Note that `**` will only match path separators (`/`, and `\\` on Windows) when they are the only characters in a path segment. Thus, `foo**/bar` is equivalent to `foo*/bar`, and `foo/a**b/bar` is equivalent to `foo/a*b/bar`, and _more than two_ consecutive stars in a glob path segment are regarded as _a single star_. Thus, `foo/***/bar` is equivalent to `foo/*/bar`. | +| `?` | Matches any character excluding path separators one time. Does _not match_ path separators or leading dots. | +| `[abc]` | Matches any characters inside the brackets. For example, `[abc]` would match the characters `a`, `b` or `c`, and nothing else. | + +### Matching behavior vs. Bash + +Picomatch's matching features and expected results in unit tests are based on Bash's unit tests and the Bash 4.3 specification, with the following exceptions: + +* Bash will match `foo/bar/baz` with `*`. Picomatch only matches nested directories with `**`. +* Bash greedily matches with negated extglobs. For example, Bash 4.3 says that `!(foo)*` should match `foo` and `foobar`, since the trailing `*` bracktracks to match the preceding pattern. This is very memory-inefficient, and IMHO, also incorrect. Picomatch would return `false` for both `foo` and `foobar`. + +
+ +## Advanced globbing + +* [extglobs](#extglobs) +* [POSIX brackets](#posix-brackets) +* [Braces](#brace-expansion) + +### Extglobs + +| **Pattern** | **Description** | +| --- | --- | --- | +| `@(pattern)` | Match _only one_ consecutive occurrence of `pattern` | +| `*(pattern)` | Match _zero or more_ consecutive occurrences of `pattern` | +| `+(pattern)` | Match _one or more_ consecutive occurrences of `pattern` | +| `?(pattern)` | Match _zero or **one**_ consecutive occurrences of `pattern` | +| `!(pattern)` | Match _anything but_ `pattern` | + +**Examples** + +```js +const pm = require('picomatch'); + +// *(pattern) matches ZERO or more of "pattern" +console.log(pm.isMatch('a', 'a*(z)')); // true +console.log(pm.isMatch('az', 'a*(z)')); // true +console.log(pm.isMatch('azzz', 'a*(z)')); // true + +// +(pattern) matches ONE or more of "pattern" +console.log(pm.isMatch('a', 'a*(z)')); // true +console.log(pm.isMatch('az', 'a*(z)')); // true +console.log(pm.isMatch('azzz', 'a*(z)')); // true + +// supports multiple extglobs +console.log(pm.isMatch('foo.bar', '!(foo).!(bar)')); // false +console.log(pm.isMatch('foo.bar', '!(foo).!(bar)')); // false +console.log(pm.isMatch('foo.bar', '!(foo).!(bar)')); // false +console.log(pm.isMatch('foo.bar', '!(foo).!(bar)')); // true + +// supports nested extglobs +console.log(pm.isMatch('foo.bar', '!(!(foo)).!(!(bar))')); // true +``` + +### POSIX brackets + +POSIX classes are disabled by default. Enable this feature by setting the `posix` option to true. + +**Enable POSIX bracket support** + +```js +console.log(pm.makeRe('[[:word:]]+', { posix: true })); +//=> /^(?:(?=.)[A-Za-z0-9_]+\/?)$/ +``` + +**Supported POSIX classes** + +The following named POSIX bracket expressions are supported: + +* `[:alnum:]` - Alphanumeric characters, equ `[a-zA-Z0-9]` +* `[:alpha:]` - Alphabetical characters, equivalent to `[a-zA-Z]`. +* `[:ascii:]` - ASCII characters, equivalent to `[\\x00-\\x7F]`. +* `[:blank:]` - Space and tab characters, equivalent to `[ \\t]`. +* `[:cntrl:]` - Control characters, equivalent to `[\\x00-\\x1F\\x7F]`. +* `[:digit:]` - Numerical digits, equivalent to `[0-9]`. +* `[:graph:]` - Graph characters, equivalent to `[\\x21-\\x7E]`. +* `[:lower:]` - Lowercase letters, equivalent to `[a-z]`. +* `[:print:]` - Print characters, equivalent to `[\\x20-\\x7E ]`. +* `[:punct:]` - Punctuation and symbols, equivalent to `[\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~]`. +* `[:space:]` - Extended space characters, equivalent to `[ \\t\\r\\n\\v\\f]`. +* `[:upper:]` - Uppercase letters, equivalent to `[A-Z]`. +* `[:word:]` - Word characters (letters, numbers and underscores), equivalent to `[A-Za-z0-9_]`. +* `[:xdigit:]` - Hexadecimal digits, equivalent to `[A-Fa-f0-9]`. + +See the [Bash Reference Manual](https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html) for more information. + +## Braces + +Picomatch does not do brace expansion. For [brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html) and advanced matching with braces, use [micromatch](https://github.com/micromatch/micromatch) instead. Picomatch has very basic support for braces. + +## Matching special characters as literals + +If you wish to match the following special characters in a filepath, and you want to use these characters in your glob pattern, they must be escaped with backslashes or quotes: + +**Special Characters** + +Some characters that are used for matching in regular expressions are also regarded as valid file path characters on some platforms. + +To match any of the following characters as literals: `$^*+?()[] + +Examples: + +```js +console.log(pm.makeRe('foo/bar \\(1\\)')); +console.log(pm.makeRe('foo/bar \\(1\\)')); +``` + +
+
+ +## Library Comparisons + +The following table shows which features are supported by [minimatch](https://github.com/isaacs/minimatch), [micromatch](https://github.com/micromatch/micromatch), [picomatch](https://github.com/micromatch/picomatch), [nanomatch](https://github.com/micromatch/nanomatch), [extglob](https://github.com/micromatch/extglob), [braces](https://github.com/micromatch/braces), and [expand-brackets](https://github.com/micromatch/expand-brackets). + +| **Feature** | `minimatch` | `micromatch` | `picomatch` | `nanomatch` | `extglob` | `braces` | `expand-brackets` | +| --- | --- | --- | --- | --- | --- | --- | --- | +| Wildcard matching (`*?+`) | ✔ | ✔ | ✔ | ✔ | - | - | - | +| Advancing globbing | ✔ | ✔ | ✔ | - | - | - | - | +| Brace _matching_ | ✔ | ✔ | ✔ | - | - | ✔ | - | +| Brace _expansion_ | ✔ | ✔ | - | - | - | ✔ | - | +| Extglobs | partial | ✔ | ✔ | - | ✔ | - | - | +| Posix brackets | - | ✔ | ✔ | - | - | - | ✔ | +| Regular expression syntax | - | ✔ | ✔ | ✔ | ✔ | - | ✔ | +| File system operations | - | - | - | - | - | - | - | + +
+
+ +## Benchmarks + +Performance comparison of picomatch and minimatch. + +``` +# .makeRe star + picomatch x 1,993,050 ops/sec ±0.51% (91 runs sampled) + minimatch x 627,206 ops/sec ±1.96% (87 runs sampled)) + +# .makeRe star; dot=true + picomatch x 1,436,640 ops/sec ±0.62% (91 runs sampled) + minimatch x 525,876 ops/sec ±0.60% (88 runs sampled) + +# .makeRe globstar + picomatch x 1,592,742 ops/sec ±0.42% (90 runs sampled) + minimatch x 962,043 ops/sec ±1.76% (91 runs sampled)d) + +# .makeRe globstars + picomatch x 1,615,199 ops/sec ±0.35% (94 runs sampled) + minimatch x 477,179 ops/sec ±1.33% (91 runs sampled) + +# .makeRe with leading star + picomatch x 1,220,856 ops/sec ±0.40% (92 runs sampled) + minimatch x 453,564 ops/sec ±1.43% (94 runs sampled) + +# .makeRe - basic braces + picomatch x 392,067 ops/sec ±0.70% (90 runs sampled) + minimatch x 99,532 ops/sec ±2.03% (87 runs sampled)) +``` + +
+
+ +## Philosophies + +The goal of this library is to be blazing fast, without compromising on accuracy. + +**Accuracy** + +The number one of goal of this libary is accuracy. However, it's not unusual for different glob implementations to have different rules for matching behavior, even with simple wildcard matching. It gets increasingly more complicated when combinations of different features are combined, like when extglobs are combined with globstars, braces, slashes, and so on: `!(**/{a,b,*/c})`. + +Thus, given that there is no canonical glob specification to use as a single source of truth when differences of opinion arise regarding behavior, sometimes we have to implement our best judgement and rely on feedback from users to make improvements. + +**Performance** + +Although this library performs well in benchmarks, and in most cases it's faster than other popular libraries we benchmarked against, we will always choose accuracy over performance. It's not helpful to anyone if our library is faster at returning the wrong answer. + +
+
+ +## About + +
+Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards. + +
+ +
+Running Tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +
+ +
+Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +
+ +### Author + +**Jon Schlinkert** + +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) + +### License + +Copyright © 2017-present, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/index.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/index.js new file mode 100644 index 00000000..d2f2bc59 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/index.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('./lib/picomatch'); diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/lib/constants.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/lib/constants.js new file mode 100644 index 00000000..96618a35 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/lib/constants.js @@ -0,0 +1,179 @@ +'use strict'; + +const path = require('path'); +const WIN_SLASH = '\\\\/'; +const WIN_NO_SLASH = `[^${WIN_SLASH}]`; + +/** + * Posix glob regex + */ + +const DOT_LITERAL = '\\.'; +const PLUS_LITERAL = '\\+'; +const QMARK_LITERAL = '\\?'; +const SLASH_LITERAL = '\\/'; +const ONE_CHAR = '(?=.)'; +const QMARK = '[^/]'; +const END_ANCHOR = `(?:${SLASH_LITERAL}|$)`; +const START_ANCHOR = `(?:^|${SLASH_LITERAL})`; +const DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`; +const NO_DOT = `(?!${DOT_LITERAL})`; +const NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`; +const NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`; +const NO_DOTS_SLASH = `(?!${DOTS_SLASH})`; +const QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`; +const STAR = `${QMARK}*?`; + +const POSIX_CHARS = { + DOT_LITERAL, + PLUS_LITERAL, + QMARK_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + QMARK, + END_ANCHOR, + DOTS_SLASH, + NO_DOT, + NO_DOTS, + NO_DOT_SLASH, + NO_DOTS_SLASH, + QMARK_NO_DOT, + STAR, + START_ANCHOR +}; + +/** + * Windows glob regex + */ + +const WINDOWS_CHARS = { + ...POSIX_CHARS, + + SLASH_LITERAL: `[${WIN_SLASH}]`, + QMARK: WIN_NO_SLASH, + STAR: `${WIN_NO_SLASH}*?`, + DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`, + NO_DOT: `(?!${DOT_LITERAL})`, + NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, + NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`, + NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, + QMARK_NO_DOT: `[^.${WIN_SLASH}]`, + START_ANCHOR: `(?:^|[${WIN_SLASH}])`, + END_ANCHOR: `(?:[${WIN_SLASH}]|$)` +}; + +/** + * POSIX Bracket Regex + */ + +const POSIX_REGEX_SOURCE = { + alnum: 'a-zA-Z0-9', + alpha: 'a-zA-Z', + ascii: '\\x00-\\x7F', + blank: ' \\t', + cntrl: '\\x00-\\x1F\\x7F', + digit: '0-9', + graph: '\\x21-\\x7E', + lower: 'a-z', + print: '\\x20-\\x7E ', + punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~', + space: ' \\t\\r\\n\\v\\f', + upper: 'A-Z', + word: 'A-Za-z0-9_', + xdigit: 'A-Fa-f0-9' +}; + +module.exports = { + MAX_LENGTH: 1024 * 64, + POSIX_REGEX_SOURCE, + + // regular expressions + REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g, + REGEX_NON_SPECIAL_CHAR: /^[^@![\].,$*+?^{}()|\\/]+/, + REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/, + REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g, + REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g, + REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g, + + // Replace globs with equivalent patterns to reduce parsing time. + REPLACEMENTS: { + '***': '*', + '**/**': '**', + '**/**/**': '**' + }, + + // Digits + CHAR_0: 48, /* 0 */ + CHAR_9: 57, /* 9 */ + + // Alphabet chars. + CHAR_UPPERCASE_A: 65, /* A */ + CHAR_LOWERCASE_A: 97, /* a */ + CHAR_UPPERCASE_Z: 90, /* Z */ + CHAR_LOWERCASE_Z: 122, /* z */ + + CHAR_LEFT_PARENTHESES: 40, /* ( */ + CHAR_RIGHT_PARENTHESES: 41, /* ) */ + + CHAR_ASTERISK: 42, /* * */ + + // Non-alphabetic chars. + CHAR_AMPERSAND: 38, /* & */ + CHAR_AT: 64, /* @ */ + CHAR_BACKWARD_SLASH: 92, /* \ */ + CHAR_CARRIAGE_RETURN: 13, /* \r */ + CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */ + CHAR_COLON: 58, /* : */ + CHAR_COMMA: 44, /* , */ + CHAR_DOT: 46, /* . */ + CHAR_DOUBLE_QUOTE: 34, /* " */ + CHAR_EQUAL: 61, /* = */ + CHAR_EXCLAMATION_MARK: 33, /* ! */ + CHAR_FORM_FEED: 12, /* \f */ + CHAR_FORWARD_SLASH: 47, /* / */ + CHAR_GRAVE_ACCENT: 96, /* ` */ + CHAR_HASH: 35, /* # */ + CHAR_HYPHEN_MINUS: 45, /* - */ + CHAR_LEFT_ANGLE_BRACKET: 60, /* < */ + CHAR_LEFT_CURLY_BRACE: 123, /* { */ + CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */ + CHAR_LINE_FEED: 10, /* \n */ + CHAR_NO_BREAK_SPACE: 160, /* \u00A0 */ + CHAR_PERCENT: 37, /* % */ + CHAR_PLUS: 43, /* + */ + CHAR_QUESTION_MARK: 63, /* ? */ + CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */ + CHAR_RIGHT_CURLY_BRACE: 125, /* } */ + CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */ + CHAR_SEMICOLON: 59, /* ; */ + CHAR_SINGLE_QUOTE: 39, /* ' */ + CHAR_SPACE: 32, /* */ + CHAR_TAB: 9, /* \t */ + CHAR_UNDERSCORE: 95, /* _ */ + CHAR_VERTICAL_LINE: 124, /* | */ + CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \uFEFF */ + + SEP: path.sep, + + /** + * Create EXTGLOB_CHARS + */ + + extglobChars(chars) { + return { + '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` }, + '?': { type: 'qmark', open: '(?:', close: ')?' }, + '+': { type: 'plus', open: '(?:', close: ')+' }, + '*': { type: 'star', open: '(?:', close: ')*' }, + '@': { type: 'at', open: '(?:', close: ')' } + }; + }, + + /** + * Create GLOB_CHARS + */ + + globChars(win32) { + return win32 === true ? WINDOWS_CHARS : POSIX_CHARS; + } +}; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/lib/parse.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/lib/parse.js new file mode 100644 index 00000000..ccb41def --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/lib/parse.js @@ -0,0 +1,1011 @@ +'use strict'; + +const utils = require('./utils'); +const constants = require('./constants'); + +/** + * Constants + */ + +const { + MAX_LENGTH, + POSIX_REGEX_SOURCE, + REGEX_NON_SPECIAL_CHAR, + REGEX_SPECIAL_CHARS_BACKREF, + REPLACEMENTS +} = constants; + +/** + * Helpers + */ + +const expandRange = (args, options) => { + if (typeof options.expandRange === 'function') { + return options.expandRange(...args, options); + } + + args.sort(); + let value = `[${args.join('-')}]`; + + try { + /* eslint-disable no-new */ + new RegExp(value); + } catch (ex) { + return args.map(v => utils.escapeRegex(v)).join('..'); + } + + return value; +}; + +const negate = state => { + let count = 1; + + while (state.peek() === '!' && (state.peek(2) !== '(' || state.peek(3) === '?')) { + state.advance(); + state.start++; + count++; + } + + if (count % 2 === 0) { + return false; + } + + state.negated = true; + state.start++; + return true; +}; + +/** + * Create the message for a syntax error + */ + +const syntaxError = (type, char) => { + return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`; +}; + +/** + * Parse the given input string. + * @param {String} input + * @param {Object} options + * @return {Object} + */ + +const parse = (input, options) => { + if (typeof input !== 'string') { + throw new TypeError('Expected a string'); + } + + input = REPLACEMENTS[input] || input; + + let opts = { ...options }; + let max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + let len = input.length; + if (len > max) { + throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); + } + + let bos = { type: 'bos', value: '', output: opts.prepend || '' }; + let tokens = [bos]; + + let capture = opts.capture ? '' : '?:'; + let win32 = utils.isWindows(options); + + // create constants based on platform, for windows or posix + const PLATFORM_CHARS = constants.globChars(win32); + const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS); + + const { + DOT_LITERAL, + PLUS_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + DOTS_SLASH, + NO_DOT, + NO_DOT_SLASH, + NO_DOTS_SLASH, + QMARK, + QMARK_NO_DOT, + STAR, + START_ANCHOR + } = PLATFORM_CHARS; + + const globstar = (opts) => { + return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; + }; + + let nodot = opts.dot ? '' : NO_DOT; + let star = opts.bash === true ? globstar(opts) : STAR; + let qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT; + + if (opts.capture) { + star = `(${star})`; + } + + // minimatch options support + if (typeof opts.noext === 'boolean') { + opts.noextglob = opts.noext; + } + + let state = { + index: -1, + start: 0, + consumed: '', + output: '', + backtrack: false, + brackets: 0, + braces: 0, + parens: 0, + quotes: 0, + tokens + }; + + let extglobs = []; + let stack = []; + let prev = bos; + let value; + + /** + * Tokenizing helpers + */ + + const eos = () => state.index === len - 1; + const peek = state.peek = (n = 1) => input[state.index + n]; + const advance = state.advance = () => input[++state.index]; + const append = token => { + state.output += token.output != null ? token.output : token.value; + state.consumed += token.value || ''; + }; + + const increment = type => { + state[type]++; + stack.push(type); + }; + + const decrement = type => { + state[type]--; + stack.pop(); + }; + + /** + * Push tokens onto the tokens array. This helper speeds up + * tokenizing by 1) helping us avoid backtracking as much as possible, + * and 2) helping us avoid creating extra tokens when consecutive + * characters are plain text. This improves performance and simplifies + * lookbehinds. + */ + + const push = tok => { + if (prev.type === 'globstar') { + let isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace'); + let isExtglob = extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'); + if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) { + state.output = state.output.slice(0, -prev.output.length); + prev.type = 'star'; + prev.value = '*'; + prev.output = star; + state.output += prev.output; + } + } + + if (extglobs.length && tok.type !== 'paren' && !EXTGLOB_CHARS[tok.value]) { + extglobs[extglobs.length - 1].inner += tok.value; + } + + if (tok.value || tok.output) append(tok); + if (prev && prev.type === 'text' && tok.type === 'text') { + prev.value += tok.value; + return; + } + + tok.prev = prev; + tokens.push(tok); + prev = tok; + }; + + const extglobOpen = (type, value) => { + let token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' }; + + token.prev = prev; + token.parens = state.parens; + token.output = state.output; + let output = (opts.capture ? '(' : '') + token.open; + + push({ type, value, output: state.output ? '' : ONE_CHAR }); + push({ type: 'paren', extglob: true, value: advance(), output }); + increment('parens'); + extglobs.push(token); + }; + + const extglobClose = token => { + let output = token.close + (opts.capture ? ')' : ''); + + if (token.type === 'negate') { + let extglobStar = star; + + if (token.inner && token.inner.length > 1 && token.inner.includes('/')) { + extglobStar = globstar(opts); + } + + if (extglobStar !== star || eos() || /^\)+$/.test(input.slice(state.index + 1))) { + output = token.close = ')$))' + extglobStar; + } + + if (token.prev.type === 'bos' && eos()) { + state.negatedExtglob = true; + } + } + + push({ type: 'paren', extglob: true, value, output }); + decrement('parens'); + }; + + if (opts.fastpaths !== false && !/(^[*!]|[/{[()\]}"])/.test(input)) { + let backslashes = false; + + let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => { + if (first === '\\') { + backslashes = true; + return m; + } + + if (first === '?') { + if (esc) { + return esc + first + (rest ? QMARK.repeat(rest.length) : ''); + } + if (index === 0) { + return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : ''); + } + return QMARK.repeat(chars.length); + } + + if (first === '.') { + return DOT_LITERAL.repeat(chars.length); + } + + if (first === '*') { + if (esc) { + return esc + first + (rest ? star : ''); + } + return star; + } + return esc ? m : '\\' + m; + }); + + if (backslashes === true) { + if (opts.unescape === true) { + output = output.replace(/\\/g, ''); + } else { + output = output.replace(/\\+/g, m => { + return m.length % 2 === 0 ? '\\\\' : (m ? '\\' : ''); + }); + } + } + + state.output = output; + return state; + } + + /** + * Tokenize input until we reach end-of-string + */ + + while (!eos()) { + value = advance(); + + if (value === '\u0000') { + continue; + } + + /** + * Escaped characters + */ + + if (value === '\\') { + let next = peek(); + + if (next === '/' && opts.bash !== true) { + continue; + } + + if (next === '.' || next === ';') { + continue; + } + + if (!next) { + value += '\\'; + push({ type: 'text', value }); + continue; + } + + // collapse slashes to reduce potential for exploits + let match = /^\\+/.exec(input.slice(state.index + 1)); + let slashes = 0; + + if (match && match[0].length > 2) { + slashes = match[0].length; + state.index += slashes; + if (slashes % 2 !== 0) { + value += '\\'; + } + } + + if (opts.unescape === true) { + value = advance() || ''; + } else { + value += advance() || ''; + } + + if (state.brackets === 0) { + push({ type: 'text', value }); + continue; + } + } + + /** + * If we're inside a regex character class, continue + * until we reach the closing bracket. + */ + + if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) { + if (opts.posix !== false && value === ':') { + let inner = prev.value.slice(1); + if (inner.includes('[')) { + prev.posix = true; + + if (inner.includes(':')) { + let idx = prev.value.lastIndexOf('['); + let pre = prev.value.slice(0, idx); + let rest = prev.value.slice(idx + 2); + let posix = POSIX_REGEX_SOURCE[rest]; + if (posix) { + prev.value = pre + posix; + state.backtrack = true; + advance(); + + if (!bos.output && tokens.indexOf(prev) === 1) { + bos.output = ONE_CHAR; + } + continue; + } + } + } + } + + if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) { + value = '\\' + value; + } + + if (value === ']' && (prev.value === '[' || prev.value === '[^')) { + value = '\\' + value; + } + + if (opts.posix === true && value === '!' && prev.value === '[') { + value = '^'; + } + + prev.value += value; + append({ value }); + continue; + } + + /** + * If we're inside a quoted string, continue + * until we reach the closing double quote. + */ + + if (state.quotes === 1 && value !== '"') { + value = utils.escapeRegex(value); + prev.value += value; + append({ value }); + continue; + } + + /** + * Double quotes + */ + + if (value === '"') { + state.quotes = state.quotes === 1 ? 0 : 1; + if (opts.keepQuotes === true) { + push({ type: 'text', value }); + } + continue; + } + + /** + * Parentheses + */ + + if (value === '(') { + push({ type: 'paren', value }); + increment('parens'); + continue; + } + + if (value === ')') { + if (state.parens === 0 && opts.strictBrackets === true) { + throw new SyntaxError(syntaxError('opening', '(')); + } + + let extglob = extglobs[extglobs.length - 1]; + if (extglob && state.parens === extglob.parens + 1) { + extglobClose(extglobs.pop()); + continue; + } + + push({ type: 'paren', value, output: state.parens ? ')' : '\\)' }); + decrement('parens'); + continue; + } + + /** + * Brackets + */ + + if (value === '[') { + if (opts.nobracket === true || !input.slice(state.index + 1).includes(']')) { + if (opts.nobracket !== true && opts.strictBrackets === true) { + throw new SyntaxError(syntaxError('closing', ']')); + } + + value = '\\' + value; + } else { + increment('brackets'); + } + + push({ type: 'bracket', value }); + continue; + } + + if (value === ']') { + if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) { + push({ type: 'text', value, output: '\\' + value }); + continue; + } + + if (state.brackets === 0) { + if (opts.strictBrackets === true) { + throw new SyntaxError(syntaxError('opening', '[')); + } + + push({ type: 'text', value, output: '\\' + value }); + continue; + } + + decrement('brackets'); + + let prevValue = prev.value.slice(1); + if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) { + value = '/' + value; + } + + prev.value += value; + append({ value }); + + // when literal brackets are explicitly disabled + // assume we should match with a regex character class + if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) { + continue; + } + + let escaped = utils.escapeRegex(prev.value); + state.output = state.output.slice(0, -prev.value.length); + + // when literal brackets are explicitly enabled + // assume we should escape the brackets to match literal characters + if (opts.literalBrackets === true) { + state.output += escaped; + prev.value = escaped; + continue; + } + + // when the user specifies nothing, try to match both + prev.value = `(${capture}${escaped}|${prev.value})`; + state.output += prev.value; + continue; + } + + /** + * Braces + */ + + if (value === '{' && opts.nobrace !== true) { + push({ type: 'brace', value, output: '(' }); + increment('braces'); + continue; + } + + if (value === '}') { + if (opts.nobrace === true || state.braces === 0) { + push({ type: 'text', value, output: '\\' + value }); + continue; + } + + let output = ')'; + + if (state.dots === true) { + let arr = tokens.slice(); + let range = []; + + for (let i = arr.length - 1; i >= 0; i--) { + tokens.pop(); + if (arr[i].type === 'brace') { + break; + } + if (arr[i].type !== 'dots') { + range.unshift(arr[i].value); + } + } + + output = expandRange(range, opts); + state.backtrack = true; + } + + push({ type: 'brace', value, output }); + decrement('braces'); + continue; + } + + /** + * Pipes + */ + + if (value === '|') { + if (extglobs.length > 0) { + extglobs[extglobs.length - 1].conditions++; + } + push({ type: 'text', value }); + continue; + } + + /** + * Commas + */ + + if (value === ',') { + let output = value; + + if (state.braces > 0 && stack[stack.length - 1] === 'braces') { + output = '|'; + } + + push({ type: 'comma', value, output }); + continue; + } + + /** + * Slashes + */ + + if (value === '/') { + // if the beginning of the glob is "./", advance the start + // to the current index, and don't add the "./" characters + // to the state. This greatly simplifies lookbehinds when + // checking for BOS characters like "!" and "." (not "./") + if (prev.type === 'dot' && state.index === 1) { + state.start = state.index + 1; + state.consumed = ''; + state.output = ''; + tokens.pop(); + prev = bos; // reset "prev" to the first token + continue; + } + + push({ type: 'slash', value, output: SLASH_LITERAL }); + continue; + } + + /** + * Dots + */ + + if (value === '.') { + if (state.braces > 0 && prev.type === 'dot') { + if (prev.value === '.') prev.output = DOT_LITERAL; + prev.type = 'dots'; + prev.output += value; + prev.value += value; + state.dots = true; + continue; + } + + push({ type: 'dot', value, output: DOT_LITERAL }); + continue; + } + + /** + * Question marks + */ + + if (value === '?') { + if (prev && prev.type === 'paren') { + let next = peek(); + let output = value; + + if (next === '<' && !utils.supportsLookbehinds()) { + throw new Error('Node.js v10 or higher is required for regex lookbehinds'); + } + + if (prev.value === '(' && !/[!=<:]/.test(next) || (next === '<' && !/[!=]/.test(peek(2)))) { + output = '\\' + value; + } + + push({ type: 'text', value, output }); + continue; + } + + if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + extglobOpen('qmark', value); + continue; + } + + if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) { + push({ type: 'qmark', value, output: QMARK_NO_DOT }); + continue; + } + + push({ type: 'qmark', value, output: QMARK }); + continue; + } + + /** + * Exclamation + */ + + if (value === '!') { + if (opts.noextglob !== true && peek() === '(') { + if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) { + extglobOpen('negate', value); + continue; + } + } + + if (opts.nonegate !== true && state.index === 0) { + negate(state); + continue; + } + } + + /** + * Plus + */ + + if (value === '+') { + if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + extglobOpen('plus', value); + continue; + } + + if (prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) { + let output = prev.extglob === true ? '\\' + value : value; + push({ type: 'plus', value, output }); + continue; + } + + // use regex behavior inside parens + if (state.parens > 0 && opts.regex !== false) { + push({ type: 'plus', value }); + continue; + } + + push({ type: 'plus', value: PLUS_LITERAL }); + continue; + } + + /** + * Plain text + */ + + if (value === '@') { + if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + push({ type: 'at', value, output: '' }); + continue; + } + + push({ type: 'text', value }); + continue; + } + + /** + * Plain text + */ + + if (value !== '*') { + if (value === '$' || value === '^') { + value = '\\' + value; + } + + let match = REGEX_NON_SPECIAL_CHAR.exec(input.slice(state.index + 1)); + if (match) { + value += match[0]; + state.index += match[0].length; + } + + push({ type: 'text', value }); + continue; + } + + /** + * Stars + */ + + if (prev && (prev.type === 'globstar' || prev.star === true)) { + prev.type = 'star'; + prev.star = true; + prev.value += value; + prev.output = star; + state.backtrack = true; + state.consumed += value; + continue; + } + + if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + extglobOpen('star', value); + continue; + } + + if (prev.type === 'star') { + if (opts.noglobstar === true) { + state.consumed += value; + continue; + } + + let prior = prev.prev; + let before = prior.prev; + let isStart = prior.type === 'slash' || prior.type === 'bos'; + let afterStar = before && (before.type === 'star' || before.type === 'globstar'); + + if (opts.bash === true && (!isStart || (!eos() && peek() !== '/'))) { + push({ type: 'star', value, output: '' }); + continue; + } + + let isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace'); + let isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren'); + if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) { + push({ type: 'star', value, output: '' }); + continue; + } + + // strip consecutive `/**/` + while (input.slice(state.index + 1, state.index + 4) === '/**') { + let after = input[state.index + 4]; + if (after && after !== '/') { + break; + } + state.consumed += '/**'; + state.index += 3; + } + + if (prior.type === 'bos' && eos()) { + prev.type = 'globstar'; + prev.value += value; + prev.output = globstar(opts); + state.output = prev.output; + state.consumed += value; + continue; + } + + if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) { + state.output = state.output.slice(0, -(prior.output + prev.output).length); + prior.output = '(?:' + prior.output; + + prev.type = 'globstar'; + prev.output = globstar(opts) + '|$)'; + prev.value += value; + + state.output += prior.output + prev.output; + state.consumed += value; + continue; + } + + let next = peek(); + if (prior.type === 'slash' && prior.prev.type !== 'bos' && next === '/') { + let end = peek(2) !== void 0 ? '|$' : ''; + + state.output = state.output.slice(0, -(prior.output + prev.output).length); + prior.output = '(?:' + prior.output; + + prev.type = 'globstar'; + prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`; + prev.value += value; + + state.output += prior.output + prev.output; + state.consumed += value + advance(); + + push({ type: 'slash', value, output: '' }); + continue; + } + + if (prior.type === 'bos' && next === '/') { + prev.type = 'globstar'; + prev.value += value; + prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`; + state.output = prev.output; + state.consumed += value + advance(); + push({ type: 'slash', value, output: '' }); + continue; + } + + // remove single star from output + state.output = state.output.slice(0, -prev.output.length); + + // reset previous token to globstar + prev.type = 'globstar'; + prev.output = globstar(opts); + prev.value += value; + + // reset output with globstar + state.output += prev.output; + state.consumed += value; + continue; + } + + let token = { type: 'star', value, output: star }; + + if (opts.bash === true) { + token.output = '.*?'; + if (prev.type === 'bos' || prev.type === 'slash') { + token.output = nodot + token.output; + } + push(token); + continue; + } + + if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) { + token.output = value; + push(token); + continue; + } + + if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') { + if (prev.type === 'dot') { + state.output += NO_DOT_SLASH; + prev.output += NO_DOT_SLASH; + + } else if (opts.dot === true) { + state.output += NO_DOTS_SLASH; + prev.output += NO_DOTS_SLASH; + + } else { + state.output += nodot; + prev.output += nodot; + } + + if (peek() !== '*') { + state.output += ONE_CHAR; + prev.output += ONE_CHAR; + } + } + + push(token); + } + + while (state.brackets > 0) { + if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']')); + state.output = utils.escapeLast(state.output, '['); + decrement('brackets'); + } + + while (state.parens > 0) { + if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')')); + state.output = utils.escapeLast(state.output, '('); + decrement('parens'); + } + + while (state.braces > 0) { + if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}')); + state.output = utils.escapeLast(state.output, '{'); + decrement('braces'); + } + + if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) { + push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` }); + } + + // rebuild the output if we had to backtrack at any point + if (state.backtrack === true) { + state.output = ''; + + for (let token of state.tokens) { + state.output += token.output != null ? token.output : token.value; + + if (token.suffix) { + state.output += token.suffix; + } + } + } + + return state; +}; + +/** + * Fast paths for creating regular expressions for common glob patterns. + * This can significantly speed up processing and has very little downside + * impact when none of the fast paths match. + */ + +parse.fastpaths = (input, options) => { + let opts = { ...options }; + let max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + let len = input.length; + if (len > max) { + throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); + } + + input = REPLACEMENTS[input] || input; + let win32 = utils.isWindows(options); + + // create constants based on platform, for windows or posix + const { + DOT_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + DOTS_SLASH, + NO_DOT, + NO_DOTS, + NO_DOTS_SLASH, + STAR, + START_ANCHOR + } = constants.globChars(win32); + + let capture = opts.capture ? '' : '?:'; + let star = opts.bash === true ? '.*?' : STAR; + let nodot = opts.dot ? NO_DOTS : NO_DOT; + let slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT; + + if (opts.capture) { + star = `(${star})`; + } + + const globstar = (opts) => { + return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; + }; + + const create = str => { + switch (str) { + case '*': + return `${nodot}${ONE_CHAR}${star}`; + + case '.*': + return `${DOT_LITERAL}${ONE_CHAR}${star}`; + + case '*.*': + return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; + + case '*/*': + return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`; + + case '**': + return nodot + globstar(opts); + + case '**/*': + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`; + + case '**/*.*': + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; + + case '**/.*': + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`; + + default: { + let match = /^(.*?)\.(\w+)$/.exec(str); + if (!match) return; + + let source = create(match[1], options); + if (!source) return; + + return source + DOT_LITERAL + match[2]; + } + } + }; + + let output = create(input); + if (output && opts.strictSlashes !== true) { + output += `${SLASH_LITERAL}?`; + } + + return output; +}; + +module.exports = parse; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/lib/picomatch.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/lib/picomatch.js new file mode 100644 index 00000000..6a0affb4 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/lib/picomatch.js @@ -0,0 +1,315 @@ +'use strict'; + +const path = require('path'); +const scan = require('./scan'); +const parse = require('./parse'); +const utils = require('./utils'); + +/** + * Creates a matcher function from one or more glob patterns. The + * returned function takes a string to match as its first argument, + * and returns true if the string is a match. The returned matcher + * function also takes a boolean as the second argument that, when true, + * returns an object with additional information. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch(glob[, options]); + * + * const isMatch = picomatch('*.!(*a)'); + * console.log(isMatch('a.a')); //=> false + * console.log(isMatch('a.b')); //=> true + * ``` + * @name picomatch + * @param {String|Array} `globs` One or more glob patterns. + * @param {Object=} `options` + * @return {Function=} Returns a matcher function. + * @api public + */ + +const picomatch = (glob, options, returnState = false) => { + if (Array.isArray(glob)) { + let fns = glob.map(input => picomatch(input, options, returnState)); + return str => { + for (let isMatch of fns) { + let state = isMatch(str); + if (state) return state; + } + return false; + }; + } + + if (typeof glob !== 'string' || glob === '') { + throw new TypeError('Expected pattern to be a non-empty string'); + } + + let opts = options || {}; + let posix = utils.isWindows(options); + let regex = picomatch.makeRe(glob, options, false, true); + let state = regex.state; + delete regex.state; + + let isIgnored = () => false; + if (opts.ignore) { + let ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null }; + isIgnored = picomatch(opts.ignore, ignoreOpts, returnState); + } + + const matcher = (input, returnObject = false) => { + let { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix }); + let result = { glob, state, regex, posix, input, output, match, isMatch }; + + if (typeof opts.onResult === 'function') { + opts.onResult(result); + } + + if (isMatch === false) { + result.isMatch = false; + return returnObject ? result : false; + } + + if (isIgnored(input)) { + if (typeof opts.onIgnore === 'function') { + opts.onIgnore(result); + } + result.isMatch = false; + return returnObject ? result : false; + } + + if (typeof opts.onMatch === 'function') { + opts.onMatch(result); + } + return returnObject ? result : true; + }; + + if (returnState) { + matcher.state = state; + } + + return matcher; +}; + +/** + * Test `input` with the given `regex`. This is used by the main + * `picomatch()` function to test the input string. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.test(input, regex[, options]); + * + * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\/([^/]*?))$/)); + * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' } + * ``` + * @param {String} `input` String to test. + * @param {RegExp} `regex` + * @return {Object} Returns an object with matching info. + * @api public + */ + +picomatch.test = (input, regex, options, { glob, posix } = {}) => { + if (typeof input !== 'string') { + throw new TypeError('Expected input to be a string'); + } + + if (input === '') { + return { isMatch: false, output: '' }; + } + + let opts = options || {}; + let format = opts.format || (posix ? utils.toPosixSlashes : null); + let match = input === glob; + let output = (match && format) ? format(input) : input; + + if (match === false) { + output = format ? format(input) : input; + match = output === glob; + } + + if (match === false || opts.capture === true) { + if (opts.matchBase === true || opts.basename === true) { + match = picomatch.matchBase(input, regex, options, posix); + } else { + match = regex.exec(output); + } + } + + return { isMatch: !!match, match, output }; +}; + +/** + * Match the basename of a filepath. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.matchBase(input, glob[, options]); + * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true + * ``` + * @param {String} `input` String to test. + * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe). + * @return {Boolean} + * @api public + */ + +picomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => { + let regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options); + return regex.test(path.basename(input)); +}; + +/** + * Returns true if **any** of the given glob `patterns` match the specified `string`. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.isMatch(string, patterns[, options]); + * + * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true + * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false + * ``` + * @param {String|Array} str The string to test. + * @param {String|Array} patterns One or more glob patterns to use for matching. + * @param {Object} [options] See available [options](#options). + * @return {Boolean} Returns true if any patterns match `str` + * @api public + */ + +picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); + +/** + * Parse a glob pattern to create the source string for a regular + * expression. + * + * ```js + * const picomatch = require('picomatch'); + * const result = picomatch.parse(glob[, options]); + * ``` + * @param {String} `glob` + * @param {Object} `options` + * @return {Object} Returns an object with useful properties and output to be used as a regex source string. + * @api public + */ + +picomatch.parse = (glob, options) => parse(glob, options); + +/** + * Scan a glob pattern to separate the pattern into segments. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.scan(input[, options]); + * + * const result = picomatch.scan('!./foo/*.js'); + * console.log(result); + * // { prefix: '!./', + * // input: '!./foo/*.js', + * // base: 'foo', + * // glob: '*.js', + * // negated: true, + * // isGlob: true } + * ``` + * @param {String} `input` Glob pattern to scan. + * @param {Object} `options` + * @return {Object} Returns an object with + * @api public + */ + +picomatch.scan = (input, options) => scan(input, options); + +/** + * Create a regular expression from a glob pattern. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.makeRe(input[, options]); + * + * console.log(picomatch.makeRe('*.js')); + * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ + * ``` + * @param {String} `input` A glob pattern to convert to regex. + * @param {Object} `options` + * @return {RegExp} Returns a regex created from the given pattern. + * @api public + */ + +picomatch.makeRe = (input, options, returnOutput = false, returnState = false) => { + if (!input || typeof input !== 'string') { + throw new TypeError('Expected a non-empty string'); + } + + let opts = options || {}; + let prepend = opts.contains ? '' : '^'; + let append = opts.contains ? '' : '$'; + let state = { negated: false, fastpaths: true }; + let prefix = ''; + let output; + + if (input.startsWith('./')) { + input = input.slice(2); + prefix = state.prefix = './'; + } + + if (opts.fastpaths !== false && (input[0] === '.' || input[0] === '*')) { + output = parse.fastpaths(input, options); + } + + if (output === void 0) { + state = picomatch.parse(input, options); + state.prefix = prefix + (state.prefix || ''); + output = state.output; + } + + if (returnOutput === true) { + return output; + } + + let source = `${prepend}(?:${output})${append}`; + if (state && state.negated === true) { + source = `^(?!${source}).*$`; + } + + let regex = picomatch.toRegex(source, options); + if (returnState === true) { + regex.state = state; + } + + return regex; +}; + +/** + * Create a regular expression from the given regex source string. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.toRegex(source[, options]); + * + * const { output } = picomatch.parse('*.js'); + * console.log(picomatch.toRegex(output)); + * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ + * ``` + * @param {String} `source` Regular expression source string. + * @param {Object} `options` + * @return {RegExp} + * @api public + */ + +picomatch.toRegex = (source, options) => { + try { + let opts = options || {}; + return new RegExp(source, opts.flags || (opts.nocase ? 'i' : '')); + } catch (err) { + if (options && options.debug === true) throw err; + return /$^/; + } +}; + +/** + * Picomatch constants. + * @return {Object} + */ + +picomatch.constants = require('./constants'); + +/** + * Expose "picomatch" + */ + +module.exports = picomatch; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/lib/scan.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/lib/scan.js new file mode 100644 index 00000000..e2ba6bae --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/lib/scan.js @@ -0,0 +1,219 @@ +'use strict'; + +const utils = require('./utils'); + +const { + CHAR_ASTERISK, /* * */ + CHAR_AT, /* @ */ + CHAR_BACKWARD_SLASH, /* \ */ + CHAR_COMMA, /* , */ + CHAR_DOT, /* . */ + CHAR_EXCLAMATION_MARK, /* ! */ + CHAR_FORWARD_SLASH, /* / */ + CHAR_LEFT_CURLY_BRACE, /* { */ + CHAR_LEFT_PARENTHESES, /* ( */ + CHAR_LEFT_SQUARE_BRACKET, /* [ */ + CHAR_PLUS, /* + */ + CHAR_QUESTION_MARK, /* ? */ + CHAR_RIGHT_CURLY_BRACE, /* } */ + CHAR_RIGHT_PARENTHESES, /* ) */ + CHAR_RIGHT_SQUARE_BRACKET /* ] */ +} = require('./constants'); + +const isPathSeparator = code => { + return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; +}; + +/** + * Quickly scans a glob pattern and returns an object with a handful of + * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists), + * `glob` (the actual pattern), and `negated` (true if the path starts with `!`). + * + * ```js + * const pm = require('picomatch'); + * console.log(pm.scan('foo/bar/*.js')); + * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' } + * ``` + * @param {String} `str` + * @param {Object} `options` + * @return {Object} Returns an object with tokens and regex source string. + * @api public + */ + +module.exports = (input, options) => { + let opts = options || {}; + let length = input.length - 1; + let index = -1; + let start = 0; + let lastIndex = 0; + let isGlob = false; + let backslashes = false; + let negated = false; + let braces = 0; + let prev; + let code; + + let braceEscaped = false; + + let eos = () => index >= length; + let advance = () => { + prev = code; + return input.charCodeAt(++index); + }; + + while (index < length) { + code = advance(); + let next; + + if (code === CHAR_BACKWARD_SLASH) { + backslashes = true; + next = advance(); + + if (next === CHAR_LEFT_CURLY_BRACE) { + braceEscaped = true; + } + continue; + } + + if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) { + braces++; + + while (!eos() && (next = advance())) { + if (next === CHAR_BACKWARD_SLASH) { + backslashes = true; + next = advance(); + continue; + } + + if (next === CHAR_LEFT_CURLY_BRACE) { + braces++; + continue; + } + + if (!braceEscaped && next === CHAR_DOT && (next = advance()) === CHAR_DOT) { + isGlob = true; + break; + } + + if (!braceEscaped && next === CHAR_COMMA) { + isGlob = true; + break; + } + + if (next === CHAR_RIGHT_CURLY_BRACE) { + braces--; + if (braces === 0) { + braceEscaped = false; + break; + } + } + } + } + + if (code === CHAR_FORWARD_SLASH) { + if (prev === CHAR_DOT && index === (start + 1)) { + start += 2; + continue; + } + + lastIndex = index + 1; + continue; + } + + if (code === CHAR_ASTERISK) { + isGlob = true; + break; + } + + if (code === CHAR_ASTERISK || code === CHAR_QUESTION_MARK) { + isGlob = true; + break; + } + + if (code === CHAR_LEFT_SQUARE_BRACKET) { + while (!eos() && (next = advance())) { + if (next === CHAR_BACKWARD_SLASH) { + backslashes = true; + next = advance(); + continue; + } + + if (next === CHAR_RIGHT_SQUARE_BRACKET) { + isGlob = true; + break; + } + } + } + + let isExtglobChar = code === CHAR_PLUS + || code === CHAR_AT + || code === CHAR_EXCLAMATION_MARK; + + if (isExtglobChar && input.charCodeAt(index + 1) === CHAR_LEFT_PARENTHESES) { + isGlob = true; + break; + } + + if (code === CHAR_EXCLAMATION_MARK && index === start) { + negated = true; + start++; + continue; + } + + if (code === CHAR_LEFT_PARENTHESES) { + while (!eos() && (next = advance())) { + if (next === CHAR_BACKWARD_SLASH) { + backslashes = true; + next = advance(); + continue; + } + + if (next === CHAR_RIGHT_PARENTHESES) { + isGlob = true; + break; + } + } + } + + if (isGlob) { + break; + } + } + + let prefix = ''; + let orig = input; + let base = input; + let glob = ''; + + if (start > 0) { + prefix = input.slice(0, start); + input = input.slice(start); + lastIndex -= start; + } + + if (base && isGlob === true && lastIndex > 0) { + base = input.slice(0, lastIndex); + glob = input.slice(lastIndex); + } else if (isGlob === true) { + base = ''; + glob = input; + } else { + base = input; + } + + if (base && base !== '' && base !== '/' && base !== input) { + if (isPathSeparator(base.charCodeAt(base.length - 1))) { + base = base.slice(0, -1); + } + } + + if (opts.unescape === true) { + if (glob) glob = utils.removeBackslashes(glob); + + if (base && backslashes === true) { + base = utils.removeBackslashes(base); + } + } + + return { prefix, input: orig, base, glob, negated, isGlob }; +}; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/lib/utils.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/lib/utils.js new file mode 100644 index 00000000..e99ae268 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/lib/utils.js @@ -0,0 +1,43 @@ +'use strict'; + +const path = require('path'); +const win32 = process.platform === 'win32'; +const { + REGEX_SPECIAL_CHARS, + REGEX_SPECIAL_CHARS_GLOBAL, + REGEX_REMOVE_BACKSLASH +} = require('./constants'); + +exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); +exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str); +exports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str); +exports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1'); +exports.toPosixSlashes = str => str.replace(/\\/g, '/'); + +exports.removeBackslashes = str => { + return str.replace(REGEX_REMOVE_BACKSLASH, match => { + return match === '\\' ? '' : match; + }); +} + +exports.supportsLookbehinds = () => { + let segs = process.version.slice(1).split('.'); + if (segs.length === 3 && +segs[0] >= 9 || (+segs[0] === 8 && +segs[1] >= 10)) { + return true; + } + return false; +}; + +exports.isWindows = options => { + if (options && typeof options.windows === 'boolean') { + return options.windows; + } + return win32 === true || path.sep === '\\'; +}; + +exports.escapeLast = (input, char, lastIdx) => { + let idx = input.lastIndexOf(char, lastIdx); + if (idx === -1) return input; + if (input[idx - 1] === '\\') return exports.escapeLast(input, char, idx - 1); + return input.slice(0, idx) + '\\' + input.slice(idx); +}; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/package.json b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/package.json new file mode 100644 index 00000000..7ddd3e75 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/picomatch/package.json @@ -0,0 +1,65 @@ +{ + "name": "picomatch", + "description": "Blazing fast and accurate glob matcher written in JavaScript, with no dependencies and full support for standard and extended Bash glob features, including braces, extglobs, POSIX brackets, and regular expressions.", + "version": "2.0.7", + "homepage": "https://github.com/micromatch/picomatch", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "repository": "micromatch/picomatch", + "bugs": { + "url": "https://github.com/micromatch/picomatch/issues" + }, + "license": "MIT", + "files": [ + "index.js", + "lib" + ], + "main": "index.js", + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "mocha", + "cover": "nyc --reporter=text --reporter=html mocha" + }, + "devDependencies": { + "fill-range": "^7.0.1", + "gulp-format-md": "^2.0.0", + "mocha": "^6.0.2", + "nyc": "^13.3.0", + "time-require": "github:jonschlinkert/time-require" + }, + "keywords": [ + "glob", + "match", + "picomatch" + ], + "verb": { + "toc": false, + "layout": false, + "tasks": [ + "readme" + ], + "plugins": [ + "gulp-format-md" + ], + "lint": { + "reflinks": true + }, + "related": { + "list": [ + "micromatch", + "braces" + ] + }, + "reflinks": [ + "braces", + "expand-brackets", + "extglob", + "fill-range", + "micromatch", + "minimatch", + "nanomatch", + "picomatch" + ] + } +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/to-regex-range/LICENSE b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/to-regex-range/LICENSE new file mode 100644 index 00000000..7cccaf9e --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/to-regex-range/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015-present, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/to-regex-range/README.md b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/to-regex-range/README.md new file mode 100644 index 00000000..38887daf --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/to-regex-range/README.md @@ -0,0 +1,305 @@ +# to-regex-range [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W8YFZ425KND68) [![NPM version](https://img.shields.io/npm/v/to-regex-range.svg?style=flat)](https://www.npmjs.com/package/to-regex-range) [![NPM monthly downloads](https://img.shields.io/npm/dm/to-regex-range.svg?style=flat)](https://npmjs.org/package/to-regex-range) [![NPM total downloads](https://img.shields.io/npm/dt/to-regex-range.svg?style=flat)](https://npmjs.org/package/to-regex-range) [![Linux Build Status](https://img.shields.io/travis/micromatch/to-regex-range.svg?style=flat&label=Travis)](https://travis-ci.org/micromatch/to-regex-range) + +> Pass two numbers, get a regex-compatible source string for matching ranges. Validated against more than 2.78 million test assertions. + +Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save to-regex-range +``` + +
+What does this do? + +
+ +This libary generates the `source` string to be passed to `new RegExp()` for matching a range of numbers. + +**Example** + +```js +const toRegexRange = require('to-regex-range'); +const regex = new RegExp(toRegexRange('15', '95')); +``` + +A string is returned so that you can do whatever you need with it before passing it to `new RegExp()` (like adding `^` or `$` boundaries, defining flags, or combining it another string). + +
+ +
+ +
+Why use this library? + +
+ +### Convenience + +Creating regular expressions for matching numbers gets deceptively complicated pretty fast. + +For example, let's say you need a validation regex for matching part of a user-id, postal code, social security number, tax id, etc: + +* regex for matching `1` => `/1/` (easy enough) +* regex for matching `1` through `5` => `/[1-5]/` (not bad...) +* regex for matching `1` or `5` => `/(1|5)/` (still easy...) +* regex for matching `1` through `50` => `/([1-9]|[1-4][0-9]|50)/` (uh-oh...) +* regex for matching `1` through `55` => `/([1-9]|[1-4][0-9]|5[0-5])/` (no prob, I can do this...) +* regex for matching `1` through `555` => `/([1-9]|[1-9][0-9]|[1-4][0-9]{2}|5[0-4][0-9]|55[0-5])/` (maybe not...) +* regex for matching `0001` through `5555` => `/(0{3}[1-9]|0{2}[1-9][0-9]|0[1-9][0-9]{2}|[1-4][0-9]{3}|5[0-4][0-9]{2}|55[0-4][0-9]|555[0-5])/` (okay, I get the point!) + +The numbers are contrived, but they're also really basic. In the real world you might need to generate a regex on-the-fly for validation. + +**Learn more** + +If you're interested in learning more about [character classes](http://www.regular-expressions.info/charclass.html) and other regex features, I personally have always found [regular-expressions.info](http://www.regular-expressions.info/charclass.html) to be pretty useful. + +### Heavily tested + +As of April 07, 2019, this library runs [>1m test assertions](./test/test.js) against generated regex-ranges to provide brute-force verification that results are correct. + +Tests run in ~280ms on my MacBook Pro, 2.5 GHz Intel Core i7. + +### Optimized + +Generated regular expressions are optimized: + +* duplicate sequences and character classes are reduced using quantifiers +* smart enough to use `?` conditionals when number(s) or range(s) can be positive or negative +* uses fragment caching to avoid processing the same exact string more than once + +
+ +
+ +## Usage + +Add this library to your javascript application with the following line of code + +```js +const toRegexRange = require('to-regex-range'); +``` + +The main export is a function that takes two integers: the `min` value and `max` value (formatted as strings or numbers). + +```js +const source = toRegexRange('15', '95'); +//=> 1[5-9]|[2-8][0-9]|9[0-5] + +const regex = new RegExp(`^${source}$`); +console.log(regex.test('14')); //=> false +console.log(regex.test('50')); //=> true +console.log(regex.test('94')); //=> true +console.log(regex.test('96')); //=> false +``` + +## Options + +### options.capture + +**Type**: `boolean` + +**Deafault**: `undefined` + +Wrap the returned value in parentheses when there is more than one regex condition. Useful when you're dynamically generating ranges. + +```js +console.log(toRegexRange('-10', '10')); +//=> -[1-9]|-?10|[0-9] + +console.log(toRegexRange('-10', '10', { capture: true })); +//=> (-[1-9]|-?10|[0-9]) +``` + +### options.shorthand + +**Type**: `boolean` + +**Deafault**: `undefined` + +Use the regex shorthand for `[0-9]`: + +```js +console.log(toRegexRange('0', '999999')); +//=> [0-9]|[1-9][0-9]{1,5} + +console.log(toRegexRange('0', '999999', { shorthand: true })); +//=> \d|[1-9]\d{1,5} +``` + +### options.relaxZeros + +**Type**: `boolean` + +**Default**: `true` + +This option relaxes matching for leading zeros when when ranges are zero-padded. + +```js +const source = toRegexRange('-0010', '0010'); +const regex = new RegExp(`^${source}$`); +console.log(regex.test('-10')); //=> true +console.log(regex.test('-010')); //=> true +console.log(regex.test('-0010')); //=> true +console.log(regex.test('10')); //=> true +console.log(regex.test('010')); //=> true +console.log(regex.test('0010')); //=> true +``` + +When `relaxZeros` is false, matching is strict: + +```js +const source = toRegexRange('-0010', '0010', { relaxZeros: false }); +const regex = new RegExp(`^${source}$`); +console.log(regex.test('-10')); //=> false +console.log(regex.test('-010')); //=> false +console.log(regex.test('-0010')); //=> true +console.log(regex.test('10')); //=> false +console.log(regex.test('010')); //=> false +console.log(regex.test('0010')); //=> true +``` + +## Examples + +| **Range** | **Result** | **Compile time** | +| --- | --- | --- | +| `toRegexRange(-10, 10)` | `-[1-9]\|-?10\|[0-9]` | _132μs_ | +| `toRegexRange(-100, -10)` | `-1[0-9]\|-[2-9][0-9]\|-100` | _50μs_ | +| `toRegexRange(-100, 100)` | `-[1-9]\|-?[1-9][0-9]\|-?100\|[0-9]` | _42μs_ | +| `toRegexRange(001, 100)` | `0{0,2}[1-9]\|0?[1-9][0-9]\|100` | _109μs_ | +| `toRegexRange(001, 555)` | `0{0,2}[1-9]\|0?[1-9][0-9]\|[1-4][0-9]{2}\|5[0-4][0-9]\|55[0-5]` | _51μs_ | +| `toRegexRange(0010, 1000)` | `0{0,2}1[0-9]\|0{0,2}[2-9][0-9]\|0?[1-9][0-9]{2}\|1000` | _31μs_ | +| `toRegexRange(1, 50)` | `[1-9]\|[1-4][0-9]\|50` | _24μs_ | +| `toRegexRange(1, 55)` | `[1-9]\|[1-4][0-9]\|5[0-5]` | _23μs_ | +| `toRegexRange(1, 555)` | `[1-9]\|[1-9][0-9]\|[1-4][0-9]{2}\|5[0-4][0-9]\|55[0-5]` | _30μs_ | +| `toRegexRange(1, 5555)` | `[1-9]\|[1-9][0-9]{1,2}\|[1-4][0-9]{3}\|5[0-4][0-9]{2}\|55[0-4][0-9]\|555[0-5]` | _43μs_ | +| `toRegexRange(111, 555)` | `11[1-9]\|1[2-9][0-9]\|[2-4][0-9]{2}\|5[0-4][0-9]\|55[0-5]` | _38μs_ | +| `toRegexRange(29, 51)` | `29\|[34][0-9]\|5[01]` | _24μs_ | +| `toRegexRange(31, 877)` | `3[1-9]\|[4-9][0-9]\|[1-7][0-9]{2}\|8[0-6][0-9]\|87[0-7]` | _32μs_ | +| `toRegexRange(5, 5)` | `5` | _8μs_ | +| `toRegexRange(5, 6)` | `5\|6` | _11μs_ | +| `toRegexRange(1, 2)` | `1\|2` | _6μs_ | +| `toRegexRange(1, 5)` | `[1-5]` | _15μs_ | +| `toRegexRange(1, 10)` | `[1-9]\|10` | _22μs_ | +| `toRegexRange(1, 100)` | `[1-9]\|[1-9][0-9]\|100` | _25μs_ | +| `toRegexRange(1, 1000)` | `[1-9]\|[1-9][0-9]{1,2}\|1000` | _31μs_ | +| `toRegexRange(1, 10000)` | `[1-9]\|[1-9][0-9]{1,3}\|10000` | _34μs_ | +| `toRegexRange(1, 100000)` | `[1-9]\|[1-9][0-9]{1,4}\|100000` | _36μs_ | +| `toRegexRange(1, 1000000)` | `[1-9]\|[1-9][0-9]{1,5}\|1000000` | _42μs_ | +| `toRegexRange(1, 10000000)` | `[1-9]\|[1-9][0-9]{1,6}\|10000000` | _42μs_ | + +## Heads up! + +**Order of arguments** + +When the `min` is larger than the `max`, values will be flipped to create a valid range: + +```js +toRegexRange('51', '29'); +``` + +Is effectively flipped to: + +```js +toRegexRange('29', '51'); +//=> 29|[3-4][0-9]|5[0-1] +``` + +**Steps / increments** + +This library does not support steps (increments). A pr to add support would be welcome. + +## History + +### v2.0.0 - 2017-04-21 + +**New features** + +Adds support for zero-padding! + +### v1.0.0 + +**Optimizations** + +Repeating ranges are now grouped using quantifiers. rocessing time is roughly the same, but the generated regex is much smaller, which should result in faster matching. + +## Attribution + +Inspired by the python library [range-regex](https://github.com/dimka665/range-regex). + +## About + +
+Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +
+ +
+Running Tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +
+ +
+Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +
+ +### Related projects + +You might also be interested in these projects: + +* [expand-range](https://www.npmjs.com/package/expand-range): Fast, bash-like range expansion. Expand a range of numbers or letters, uppercase or lowercase. Used… [more](https://github.com/jonschlinkert/expand-range) | [homepage](https://github.com/jonschlinkert/expand-range "Fast, bash-like range expansion. Expand a range of numbers or letters, uppercase or lowercase. Used by micromatch.") +* [fill-range](https://www.npmjs.com/package/fill-range): Fill in a range of numbers or letters, optionally passing an increment or `step` to… [more](https://github.com/jonschlinkert/fill-range) | [homepage](https://github.com/jonschlinkert/fill-range "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`") +* [micromatch](https://www.npmjs.com/package/micromatch): Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | [homepage](https://github.com/micromatch/micromatch "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.") +* [repeat-element](https://www.npmjs.com/package/repeat-element): Create an array by repeating the given value n times. | [homepage](https://github.com/jonschlinkert/repeat-element "Create an array by repeating the given value n times.") +* [repeat-string](https://www.npmjs.com/package/repeat-string): Repeat the given string n times. Fastest implementation for repeating a string. | [homepage](https://github.com/jonschlinkert/repeat-string "Repeat the given string n times. Fastest implementation for repeating a string.") + +### Contributors + +| **Commits** | **Contributor** | +| --- | --- | +| 63 | [jonschlinkert](https://github.com/jonschlinkert) | +| 3 | [doowb](https://github.com/doowb) | +| 2 | [realityking](https://github.com/realityking) | + +### Author + +**Jon Schlinkert** + +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) + +Please consider supporting me on Patreon, or [start your own Patreon page](https://patreon.com/invite/bxpbvm)! + + + + + +### License + +Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 07, 2019._ \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/to-regex-range/index.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/to-regex-range/index.js new file mode 100644 index 00000000..77fbaced --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/to-regex-range/index.js @@ -0,0 +1,288 @@ +/*! + * to-regex-range + * + * Copyright (c) 2015-present, Jon Schlinkert. + * Released under the MIT License. + */ + +'use strict'; + +const isNumber = require('is-number'); + +const toRegexRange = (min, max, options) => { + if (isNumber(min) === false) { + throw new TypeError('toRegexRange: expected the first argument to be a number'); + } + + if (max === void 0 || min === max) { + return String(min); + } + + if (isNumber(max) === false) { + throw new TypeError('toRegexRange: expected the second argument to be a number.'); + } + + let opts = { relaxZeros: true, ...options }; + if (typeof opts.strictZeros === 'boolean') { + opts.relaxZeros = opts.strictZeros === false; + } + + let relax = String(opts.relaxZeros); + let shorthand = String(opts.shorthand); + let capture = String(opts.capture); + let wrap = String(opts.wrap); + let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap; + + if (toRegexRange.cache.hasOwnProperty(cacheKey)) { + return toRegexRange.cache[cacheKey].result; + } + + let a = Math.min(min, max); + let b = Math.max(min, max); + + if (Math.abs(a - b) === 1) { + let result = min + '|' + max; + if (opts.capture) { + return `(${result})`; + } + if (opts.wrap === false) { + return result; + } + return `(?:${result})`; + } + + let isPadded = hasPadding(min) || hasPadding(max); + let state = { min, max, a, b }; + let positives = []; + let negatives = []; + + if (isPadded) { + state.isPadded = isPadded; + state.maxLen = String(state.max).length; + } + + if (a < 0) { + let newMin = b < 0 ? Math.abs(b) : 1; + negatives = splitToPatterns(newMin, Math.abs(a), state, opts); + a = state.a = 0; + } + + if (b >= 0) { + positives = splitToPatterns(a, b, state, opts); + } + + state.negatives = negatives; + state.positives = positives; + state.result = collatePatterns(negatives, positives, opts); + + if (opts.capture === true) { + state.result = `(${state.result})`; + } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) { + state.result = `(?:${state.result})`; + } + + toRegexRange.cache[cacheKey] = state; + return state.result; +}; + +function collatePatterns(neg, pos, options) { + let onlyNegative = filterPatterns(neg, pos, '-', false, options) || []; + let onlyPositive = filterPatterns(pos, neg, '', false, options) || []; + let intersected = filterPatterns(neg, pos, '-?', true, options) || []; + let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive); + return subpatterns.join('|'); +} + +function splitToRanges(min, max) { + let nines = 1; + let zeros = 1; + + let stop = countNines(min, nines); + let stops = new Set([max]); + + while (min <= stop && stop <= max) { + stops.add(stop); + nines += 1; + stop = countNines(min, nines); + } + + stop = countZeros(max + 1, zeros) - 1; + + while (min < stop && stop <= max) { + stops.add(stop); + zeros += 1; + stop = countZeros(max + 1, zeros) - 1; + } + + stops = [...stops]; + stops.sort(compare); + return stops; +} + +/** + * Convert a range to a regex pattern + * @param {Number} `start` + * @param {Number} `stop` + * @return {String} + */ + +function rangeToPattern(start, stop, options) { + if (start === stop) { + return { pattern: start, count: [], digits: 0 }; + } + + let zipped = zip(start, stop); + let digits = zipped.length; + let pattern = ''; + let count = 0; + + for (let i = 0; i < digits; i++) { + let [startDigit, stopDigit] = zipped[i]; + + if (startDigit === stopDigit) { + pattern += startDigit; + + } else if (startDigit !== '0' || stopDigit !== '9') { + pattern += toCharacterClass(startDigit, stopDigit, options); + + } else { + count++; + } + } + + if (count) { + pattern += options.shorthand === true ? '\\d' : '[0-9]'; + } + + return { pattern, count: [count], digits }; +} + +function splitToPatterns(min, max, tok, options) { + let ranges = splitToRanges(min, max); + let tokens = []; + let start = min; + let prev; + + for (let i = 0; i < ranges.length; i++) { + let max = ranges[i]; + let obj = rangeToPattern(String(start), String(max), options); + let zeros = ''; + + if (!tok.isPadded && prev && prev.pattern === obj.pattern) { + if (prev.count.length > 1) { + prev.count.pop(); + } + + prev.count.push(obj.count[0]); + prev.string = prev.pattern + toQuantifier(prev.count); + start = max + 1; + continue; + } + + if (tok.isPadded) { + zeros = padZeros(max, tok, options); + } + + obj.string = zeros + obj.pattern + toQuantifier(obj.count); + tokens.push(obj); + start = max + 1; + prev = obj; + } + + return tokens; +} + +function filterPatterns(arr, comparison, prefix, intersection, options) { + let result = []; + + for (let ele of arr) { + let { string } = ele; + + // only push if _both_ are negative... + if (!intersection && !contains(comparison, 'string', string)) { + result.push(prefix + string); + } + + // or _both_ are positive + if (intersection && contains(comparison, 'string', string)) { + result.push(prefix + string); + } + } + return result; +} + +/** + * Zip strings + */ + +function zip(a, b) { + let arr = []; + for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]); + return arr; +} + +function compare(a, b) { + return a > b ? 1 : b > a ? -1 : 0; +} + +function contains(arr, key, val) { + return arr.some(ele => ele[key] === val); +} + +function countNines(min, len) { + return Number(String(min).slice(0, -len) + '9'.repeat(len)); +} + +function countZeros(integer, zeros) { + return integer - (integer % Math.pow(10, zeros)); +} + +function toQuantifier(digits) { + let [start = 0, stop = ''] = digits; + if (stop || start > 1) { + return `{${start + (stop ? ',' + stop : '')}}`; + } + return ''; +} + +function toCharacterClass(a, b, options) { + return `[${a}${(b - a === 1) ? '' : '-'}${b}]`; +} + +function hasPadding(str) { + return /^-?(0+)\d/.test(str); +} + +function padZeros(value, tok, options) { + if (!tok.isPadded) { + return value; + } + + let diff = Math.abs(tok.maxLen - String(value).length); + let relax = options.relaxZeros !== false; + + switch (diff) { + case 0: + return ''; + case 1: + return relax ? '0?' : '0'; + case 2: + return relax ? '0{0,2}' : '00'; + default: { + return relax ? `0{0,${diff}}` : `0{${diff}}`; + } + } +} + +/** + * Cache + */ + +toRegexRange.cache = {}; +toRegexRange.clearCache = () => (toRegexRange.cache = {}); + +/** + * Expose `toRegexRange` + */ + +module.exports = toRegexRange; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/to-regex-range/package.json b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/to-regex-range/package.json new file mode 100644 index 00000000..4ef194f3 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/to-regex-range/package.json @@ -0,0 +1,88 @@ +{ + "name": "to-regex-range", + "description": "Pass two numbers, get a regex-compatible source string for matching ranges. Validated against more than 2.78 million test assertions.", + "version": "5.0.1", + "homepage": "https://github.com/micromatch/to-regex-range", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "contributors": [ + "Jon Schlinkert (http://twitter.com/jonschlinkert)", + "Rouven Weßling (www.rouvenwessling.de)" + ], + "repository": "micromatch/to-regex-range", + "bugs": { + "url": "https://github.com/micromatch/to-regex-range/issues" + }, + "license": "MIT", + "files": [ + "index.js" + ], + "main": "index.js", + "engines": { + "node": ">=8.0" + }, + "scripts": { + "test": "mocha" + }, + "dependencies": { + "is-number": "^7.0.0" + }, + "devDependencies": { + "fill-range": "^6.0.0", + "gulp-format-md": "^2.0.0", + "mocha": "^6.0.2", + "text-table": "^0.2.0", + "time-diff": "^0.3.1" + }, + "keywords": [ + "bash", + "date", + "expand", + "expansion", + "expression", + "glob", + "match", + "match date", + "match number", + "match numbers", + "match year", + "matches", + "matching", + "number", + "numbers", + "numerical", + "range", + "ranges", + "regex", + "regexp", + "regular", + "regular expression", + "sequence" + ], + "verb": { + "layout": "default", + "toc": false, + "tasks": [ + "readme" + ], + "plugins": [ + "gulp-format-md" + ], + "lint": { + "reflinks": true + }, + "helpers": { + "examples": { + "displayName": "examples" + } + }, + "related": { + "list": [ + "expand-range", + "fill-range", + "micromatch", + "repeat-element", + "repeat-string" + ] + } + } +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/tree-kill/LICENSE b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/tree-kill/LICENSE new file mode 100644 index 00000000..aa86c2df --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/tree-kill/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Peter Krumins + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/tree-kill/README.md b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/tree-kill/README.md new file mode 100644 index 00000000..59a00ea1 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/tree-kill/README.md @@ -0,0 +1,89 @@ +Tree Kill +========= + +Kill all processes in the process tree, including the root process. + +Examples +======= + +Kill all the descendent processes of the process with pid `1`, including the process with pid `1` itself: +```js +var kill = require('tree-kill'); +kill(1); +``` + +Send a signal other than SIGTERM.: +```js +var kill = require('tree-kill'); +kill(1, 'SIGKILL'); +``` + +Run a callback when done killing the processes. Passes an error argument if there was an error. +```js +var kill = require('tree-kill'); +kill(1, 'SIGKILL', function(err) { + // Do things +}); +``` + +You can also install tree-kill globally and use it as a command: +```sh +tree-kill 1 # sends SIGTERM to process 1 and its descendents +tree-kill 1 SIGTERM # same +tree-kill 1 SIGKILL # sends KILL instead of TERMINATE +``` + +Methods +======= + +## require('tree-kill')(pid, [signal], [callback]); + +Sends signal `signal` to all children processes of the process with pid `pid`, including `pid`. Signal defaults to `SIGTERM`. + +For Linux, this uses `ps -o pid --no-headers --ppid PID` to find the parent pids of `PID`. + +For Darwin/OSX, this uses `pgrep -P PID` to find the parent pids of `PID`. + +For Windows, this uses `'taskkill /pid PID /T /F'` to kill the process tree. Note that on Windows, sending the different kinds of POSIX signals is not possible. + +Install +======= + +With [npm](https://npmjs.org) do: + +``` +npm install tree-kill +``` + +License +======= + +MIT + +Changelog +========= + + +## [1.2.2] - 2019-12-11 +### Changed +- security fix: sanitize `pid` parameter to fix arbitrary code execution vulnerability + +## [1.2.1] - 2018-11-05 +### Changed +- added missing LICENSE file +- updated TypeScript definitions + +## [1.2.0] - 2017-09-19 +### Added +- TypeScript definitions +### Changed +- `kill(pid, callback)` works. Before you had to use `kill(pid, signal, callback)` + +## [1.1.0] - 2016-05-13 +### Added +- A `tree-kill` CLI + +## [1.0.0] - 2015-09-17 +### Added +- optional callback +- Darwin support diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/tree-kill/cli.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/tree-kill/cli.js new file mode 100755 index 00000000..1acb8158 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/tree-kill/cli.js @@ -0,0 +1,14 @@ +#!/usr/bin/env node +kill = require('.') +try { + kill(process.argv[2], process.argv[3], function(err){ + if (err) { + console.log(err.message) + process.exit(1) + } + }) +} +catch (err) { + console.log(err.message) + process.exit(1) +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/tree-kill/index.d.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/tree-kill/index.d.ts new file mode 100644 index 00000000..e0b13022 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/tree-kill/index.d.ts @@ -0,0 +1,13 @@ +/** + * Kills process identified by `pid` and all its children + * + * @param pid + * @param signal 'SIGTERM' by default + * @param callback + */ +declare function treeKill(pid: number, callback?: (error?: Error) => void): void; +declare function treeKill(pid: number, signal?: string | number, callback?: (error?: Error) => void): void; + +declare namespace treeKill {} + +export = treeKill; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/tree-kill/index.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/tree-kill/index.js new file mode 100755 index 00000000..8df6a0fb --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/tree-kill/index.js @@ -0,0 +1,118 @@ +'use strict'; + +var childProcess = require('child_process'); +var spawn = childProcess.spawn; +var exec = childProcess.exec; + +module.exports = function (pid, signal, callback) { + if (typeof signal === 'function' && callback === undefined) { + callback = signal; + signal = undefined; + } + + pid = parseInt(pid); + if (Number.isNaN(pid)) { + if (callback) { + return callback(new Error("pid must be a number")); + } else { + throw new Error("pid must be a number"); + } + } + + var tree = {}; + var pidsToProcess = {}; + tree[pid] = []; + pidsToProcess[pid] = 1; + + switch (process.platform) { + case 'win32': + exec('taskkill /pid ' + pid + ' /T /F', callback); + break; + case 'darwin': + buildProcessTree(pid, tree, pidsToProcess, function (parentPid) { + return spawn('pgrep', ['-P', parentPid]); + }, function () { + killAll(tree, signal, callback); + }); + break; + // case 'sunos': + // buildProcessTreeSunOS(pid, tree, pidsToProcess, function () { + // killAll(tree, signal, callback); + // }); + // break; + default: // Linux + buildProcessTree(pid, tree, pidsToProcess, function (parentPid) { + return spawn('ps', ['-o', 'pid', '--no-headers', '--ppid', parentPid]); + }, function () { + killAll(tree, signal, callback); + }); + break; + } +}; + +function killAll (tree, signal, callback) { + var killed = {}; + try { + Object.keys(tree).forEach(function (pid) { + tree[pid].forEach(function (pidpid) { + if (!killed[pidpid]) { + killPid(pidpid, signal); + killed[pidpid] = 1; + } + }); + if (!killed[pid]) { + killPid(pid, signal); + killed[pid] = 1; + } + }); + } catch (err) { + if (callback) { + return callback(err); + } else { + throw err; + } + } + if (callback) { + return callback(); + } +} + +function killPid(pid, signal) { + try { + process.kill(parseInt(pid, 10), signal); + } + catch (err) { + if (err.code !== 'ESRCH') throw err; + } +} + +function buildProcessTree (parentPid, tree, pidsToProcess, spawnChildProcessesList, cb) { + var ps = spawnChildProcessesList(parentPid); + var allData = ''; + ps.stdout.on('data', function (data) { + var data = data.toString('ascii'); + allData += data; + }); + + var onClose = function (code) { + delete pidsToProcess[parentPid]; + + if (code != 0) { + // no more parent processes + if (Object.keys(pidsToProcess).length == 0) { + cb(); + } + return; + } + + allData.match(/\d+/g).forEach(function (pid) { + pid = parseInt(pid, 10); + tree[parentPid].push(pid); + tree[pid] = []; + pidsToProcess[pid] = 1; + buildProcessTree(pid, tree, pidsToProcess, spawnChildProcessesList, cb); + }); + }; + + ps.on('close', onClose); +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/tree-kill/package.json b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/tree-kill/package.json new file mode 100644 index 00000000..fa37804f --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/tree-kill/package.json @@ -0,0 +1,51 @@ +{ + "name": "tree-kill", + "version": "1.2.2", + "description": "kill trees of processes", + "main": "index.js", + "types": "index.d.ts", + "bin": { + "tree-kill": "cli.js" + }, + "scripts": { + "test": "mocha" + }, + "repository": { + "type": "git", + "url": "git://github.com/pkrumins/node-tree-kill.git" + }, + "homepage": "https://github.com/pkrumins/node-tree-kill", + "keywords": [ + "tree", + "trees", + "process", + "processes", + "kill", + "signal" + ], + "author": { + "name": "Peteris Krumins", + "email": "peteris.krumins@gmail.com", + "url": "http://www.catonmat.net" + }, + "contributors": [ + { + "name": "Todd Wolfson", + "email": "todd@twolfson.com", + "url": "http://twolfson.com/" + }, + { + "name": "William Hilton", + "email": "wmhilton@gmail.com", + "url": "http://wmhilton.com/" + }, + { + "name": "Fabrício Matté", + "url": "http://ultcombo.js.org/" + } + ], + "license": "MIT", + "devDependencies": { + "mocha": "^2.2.5" + } +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/CHANGELOG.md b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/CHANGELOG.md new file mode 100644 index 00000000..0dbbd364 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/CHANGELOG.md @@ -0,0 +1,760 @@ + +## [0.7.6](https://github.com/angular/zone.js/compare/v0.7.4...0.7.6) (2017-01-17) + + +### Bug Fixes + +* **doc:** typo in comment and reformat README.md ([#590](https://github.com/angular/zone.js/issues/590)) ([95ad315](https://github.com/angular/zone.js/commit/95ad315)) +* **ZoneAwareError:** Error should keep prototype chain and can be called without new ([82722c3](https://github.com/angular/zone.js/commit/82722c3)), closes [#546](https://github.com/angular/zone.js/issues/546) [#554](https://github.com/angular/zone.js/issues/554) [#555](https://github.com/angular/zone.js/issues/555) +* [#536](https://github.com/angular/zone.js/issues/536), add notification api patch ([#599](https://github.com/angular/zone.js/issues/599)) ([83dfa97](https://github.com/angular/zone.js/commit/83dfa97)) +* [#593](https://github.com/angular/zone.js/issues/593), only call removeAttribute when have the method ([#594](https://github.com/angular/zone.js/issues/594)) ([1401d60](https://github.com/angular/zone.js/commit/1401d60)) +* [#595](https://github.com/angular/zone.js/issues/595), refactor ZoneAwareError property copy ([#597](https://github.com/angular/zone.js/issues/597)) ([f7330de](https://github.com/angular/zone.js/commit/f7330de)) +* [#604](https://github.com/angular/zone.js/issues/604), sometimes setInterval test spec will fail on Android 4.4 ([#605](https://github.com/angular/zone.js/issues/605)) ([e3cd1f4](https://github.com/angular/zone.js/commit/e3cd1f4)) +* add missing test MutationObserver ([5c7bc01](https://github.com/angular/zone.js/commit/5c7bc01)) +* Promise.toString() to look like native function ([f854ce0](https://github.com/angular/zone.js/commit/f854ce0)) + + + + +## [0.7.5](https://github.com/angular/zone.js/compare/v0.7.4...0.7.5) (2017-01-12) + + +### Bug Fixes + +* patch fs methods as macrotask, add test cases of fs watcher ([#572](https://github.com/angular/zone.js/issues/572)) ([e1d3240](https://github.com/angular/zone.js/commit/e1d3240)) +* fix [#577](https://github.com/angular/zone.js/issues/577), canPatchViaPropertyDescriptor test should add configurable to XMLHttpRequest.prototype ([#578](https://github.com/angular/zone.js/issues/578)) ([c297752](https://github.com/angular/zone.js/commit/c297752)) +* fix [#551](https://github.com/angular/zone.js/issues/551), add toJSON to ZoneTask to prevent cyclic error ([#576](https://github.com/angular/zone.js/issues/576)) ([03d19f9](https://github.com/angular/zone.js/commit/03d19f9)) +* fix [#574](https://github.com/angular/zone.js/issues/574), captureStackTrace will have additional stackframe from Zone will break binding.js ([#575](https://github.com/angular/zone.js/issues/575)) ([41f5306](https://github.com/angular/zone.js/commit/41f5306)) +* fix [#569](https://github.com/angular/zone.js/issues/569), request will cause updateTaskCount failed if we call abort multipletimes ([#570](https://github.com/angular/zone.js/issues/570)) ([62f1449](https://github.com/angular/zone.js/commit/62f1449)) +* add web-api.ts to patch mediaQuery ([#571](https://github.com/angular/zone.js/issues/571)) ([e92f934](https://github.com/angular/zone.js/commit/e92f934)) +* fix [#584](https://github.com/angular/zone.js/issues/584), remove android 4.1~4.3, add no-ssl options to make android 4.4 pass test ([#586](https://github.com/angular/zone.js/issues/586)) ([7cd570e](https://github.com/angular/zone.js/commit/7cd570e)) +* Fix [#532](https://github.com/angular/zone.js/issues/532), Fix [#566](https://github.com/angular/zone.js/issues/566), add tslint in ci, add tslint/format/test/karma in precommit of git ([#565](https://github.com/angular/zone.js/issues/565)) ([fb8d51c](https://github.com/angular/zone.js/commit/fb8d51c)) +* docs(zone.ts): fix typo ([#583](https://github.com/angular/zone.js/issues/583)) ([ecbef87](https://github.com/angular/zone.js/commit/ecbef87)) +* add missing test MutationObserver ([5c7bc01](https://github.com/angular/zone.js/commit/5c7bc01)) +* Promise.toString() to look like native function ([f854ce0](https://github.com/angular/zone.js/commit/f854ce0)) +* **ZoneAwareError:** Error should keep prototype chain and can be called without new ([82722c3](https://github.com/angular/zone.js/commit/82722c3)), closes [#546](https://github.com/angular/zone.js/issues/546) [#554](https://github.com/angular/zone.js/issues/554) [#555](https://github.com/angular/zone.js/issues/555) + + + + +## [0.7.4](https://github.com/angular/zone.js/compare/v0.7.1...0.7.4) (2016-12-31) + + +### Bug Fixes + +* add better Type safety ([610649b](https://github.com/angular/zone.js/commit/610649b)) +* add missing test MutationObserver ([5c7bc01](https://github.com/angular/zone.js/commit/5c7bc01)) +* correct currentZone passed into delegate methods ([dc12d8e](https://github.com/angular/zone.js/commit/dc12d8e)), closes [#587](https://github.com/angular/zone.js/issues/587) [#539](https://github.com/angular/zone.js/issues/539) +* correct zone.min.js not including zone ([384f5ec](https://github.com/angular/zone.js/commit/384f5ec)) +* Correct ZoneAwareError prototype chain ([ba7858c](https://github.com/angular/zone.js/commit/ba7858c)), closes [#546](https://github.com/angular/zone.js/issues/546) [#547](https://github.com/angular/zone.js/issues/547) +* formatting issue. ([c70e9ec](https://github.com/angular/zone.js/commit/c70e9ec)) +* inline event handler issue ([20b5a5d](https://github.com/angular/zone.js/commit/20b5a5d)), closes [#525](https://github.com/angular/zone.js/issues/525) [#540](https://github.com/angular/zone.js/issues/540) +* parameterize `wrap` method on `Zone` ([#542](https://github.com/angular/zone.js/issues/542)) ([f522e1b](https://github.com/angular/zone.js/commit/f522e1b)) +* **closure:** avoid property renaming on globals ([af14646](https://github.com/angular/zone.js/commit/af14646)) +* Prevent adding listener for xhrhttprequest multiple times ([9509747](https://github.com/angular/zone.js/commit/9509747)), closes [#529](https://github.com/angular/zone.js/issues/529) [#527](https://github.com/angular/zone.js/issues/527) [#287](https://github.com/angular/zone.js/issues/287) [#530](https://github.com/angular/zone.js/issues/530) +* Promise.toString() to look like native function ([f854ce0](https://github.com/angular/zone.js/commit/f854ce0)) +* **closure:** Fix closure error suppression comment. ([#552](https://github.com/angular/zone.js/issues/552)) ([2643783](https://github.com/angular/zone.js/commit/2643783)) +* Run tests on both the build as well as the dist folder ([#514](https://github.com/angular/zone.js/issues/514)) ([c0604f5](https://github.com/angular/zone.js/commit/c0604f5)) +* support nw.js environment ([486010b](https://github.com/angular/zone.js/commit/486010b)), closes [#524](https://github.com/angular/zone.js/issues/524) + + +### Features + +* Patch captureStackTrace/prepareStackTrace to ZoneAwareError, patch process.nextTick, fix removeAllListeners bug ([#516](https://github.com/angular/zone.js/issues/516)) ([c36c0bc](https://github.com/angular/zone.js/commit/c36c0bc)), closes [#484](https://github.com/angular/zone.js/issues/484) [#491](https://github.com/angular/zone.js/issues/491) + + + + +## [0.7.1](https://github.com/angular/zone.js/compare/v0.7.0...v0.7.1) (2016-11-22) + + +### Bug Fixes + +* missing zone from the build file ([e961833](https://github.com/angular/zone.js/commit/e961833)) + + + + +# [0.7.0](https://github.com/angular/zone.js/compare/0.6.25...v0.7.0) (2016-11-22) + + +### Bug Fixes + +* **node:** crash when calling listeners() for event with no listeners ([431f6f0](https://github.com/angular/zone.js/commit/431f6f0)) +* support clearing the timeouts with numeric IDs ([fea6d68](https://github.com/angular/zone.js/commit/fea6d68)), closes [#461](https://github.com/angular/zone.js/issues/461) +* **promise:** include stack trace in an unhandlerd promise ([#463](https://github.com/angular/zone.js/issues/463)) ([737f8d8](https://github.com/angular/zone.js/commit/737f8d8)) +* **property-descriptor:** do not use document object in Safari web worker ([51f2e1f](https://github.com/angular/zone.js/commit/51f2e1f)) +* Add WebSocket to the NO_EVENT_TARGET list to be patched as well ([#493](https://github.com/angular/zone.js/issues/493)) ([d8c15eb](https://github.com/angular/zone.js/commit/d8c15eb)) +* fix wrong usage of == caught by closure compiler ([#510](https://github.com/angular/zone.js/issues/510)) ([d7d8eb5](https://github.com/angular/zone.js/commit/d7d8eb5)) +* fluent interface for EventEmitter ([#475](https://github.com/angular/zone.js/issues/475)) ([c5130a6](https://github.com/angular/zone.js/commit/c5130a6)) +* lint errors ([ed87c26](https://github.com/angular/zone.js/commit/ed87c26)) +* make fetch promise patching safe ([16be7f9](https://github.com/angular/zone.js/commit/16be7f9)), closes [#451](https://github.com/angular/zone.js/issues/451) +* Make the check for ZoneAwarePromise more stringent ([#495](https://github.com/angular/zone.js/issues/495)) ([c69df25](https://github.com/angular/zone.js/commit/c69df25)) +* run all timers in passage of time in a single fakeAsync's tick call ([a85db4c](https://github.com/angular/zone.js/commit/a85db4c)), closes [#454](https://github.com/angular/zone.js/issues/454) +* stop using class extends as it breaks rollup ([b52cf02](https://github.com/angular/zone.js/commit/b52cf02)) +* use strict equality in scheduleQueueDrain ([#504](https://github.com/angular/zone.js/issues/504)) ([4b4249c](https://github.com/angular/zone.js/commit/4b4249c)) + + +### Features + +* add mocha support ([41a9047](https://github.com/angular/zone.js/commit/41a9047)) +* **Error:** Rewrite Error stack frames to include zone ([e1c2a02](https://github.com/angular/zone.js/commit/e1c2a02)) + + + + +## [0.6.25](https://github.com/angular/zone.js/compare/0.6.24...0.6.25) (2016-09-20) + + +### Bug Fixes + +* **zonespecs:** revert unwrapping of zonespecs which actually require global ([#460](https://github.com/angular/zone.js/issues/460)) ([28a14f8](https://github.com/angular/zone.js/commit/28a14f8)) + + + + +## [0.6.24](https://github.com/angular/zone.js/compare/v0.6.23...0.6.24) (2016-09-19) + + +### Bug Fixes + +* **bundling:** switch to using umd bundles ([#457](https://github.com/angular/zone.js/issues/457)) ([8dd06e5](https://github.com/angular/zone.js/commit/8dd06e5)), closes [#456](https://github.com/angular/zone.js/issues/456) + + + + +## [0.6.23](https://github.com/angular/zone.js/compare/v0.6.22...v0.6.23) (2016-09-14) + + +### Bug Fixes + +* **fetch:** correct chrome not able to load about://blank ([3844435](https://github.com/angular/zone.js/commit/3844435)), closes [#444](https://github.com/angular/zone.js/issues/444) + + + + +## [0.6.22](https://github.com/angular/zone.js/compare/v0.6.21...v0.6.22) (2016-09-14) + + +### Bug Fixes + +* use fetch(about://blank) to prevent exception on MS Edge ([#442](https://github.com/angular/zone.js/issues/442)) ([8b81537](https://github.com/angular/zone.js/commit/8b81537)), closes [#436](https://github.com/angular/zone.js/issues/436) [#439](https://github.com/angular/zone.js/issues/439) + + +### Features + +* **node:** patch most fs methods ([#438](https://github.com/angular/zone.js/issues/438)) ([4c8a155](https://github.com/angular/zone.js/commit/4c8a155)) +* **node:** patch outgoing http requests to capture the zone ([#430](https://github.com/angular/zone.js/issues/430)) ([100b82b](https://github.com/angular/zone.js/commit/100b82b)) + + + + +## [0.6.21](https://github.com/angular/zone.js/compare/v0.6.20...v0.6.21) (2016-09-11) + + +### Bug Fixes + +* proper detection of global in WebWorker ([0a7a155](https://github.com/angular/zone.js/commit/0a7a155)) + + + + +## [0.6.20](https://github.com/angular/zone.js/compare/v0.6.19...v0.6.20) (2016-09-10) + + + + +## [0.6.19](https://github.com/angular/zone.js/compare/v0.6.17...v0.6.19) (2016-09-10) + + +### Bug Fixes + +* provide a more usefull error when configuring properties ([1fe4df0](https://github.com/angular/zone.js/commit/1fe4df0)) +* **jasmine:** propagate all arguments of it/describe/etc... ([a85fd68](https://github.com/angular/zone.js/commit/a85fd68)) +* **long-stack:** Safer writing of stack traces. ([6767ff5](https://github.com/angular/zone.js/commit/6767ff5)) +* **promise:** support more aggressive optimization. ([#431](https://github.com/angular/zone.js/issues/431)) ([26fc3da](https://github.com/angular/zone.js/commit/26fc3da)) +* **XHR:** Don't send sync XHR through ZONE ([6e2f13c](https://github.com/angular/zone.js/commit/6e2f13c)), closes [#377](https://github.com/angular/zone.js/issues/377) + + +### Features + +* assert that right ZoneAwarePromise is available ([#420](https://github.com/angular/zone.js/issues/420)) ([4c35e5b](https://github.com/angular/zone.js/commit/4c35e5b)) + + + + +## [0.6.17](https://github.com/angular/zone.js/compare/v0.6.15...v0.6.17) (2016-08-22) + + +### Bug Fixes + +* **browser:** use XMLHttpRequest.DONE constant on target instead of the global interface ([#395](https://github.com/angular/zone.js/issues/395)) ([3b4c20b](https://github.com/angular/zone.js/commit/3b4c20b)), closes [#394](https://github.com/angular/zone.js/issues/394) +* **jasmine:** spelling error of 'describe' in jasmine patch prevented application of sync zone ([d38ccde](https://github.com/angular/zone.js/commit/d38ccde)), closes [#412](https://github.com/angular/zone.js/issues/412) +* **patchProperty:** return null as the default value ([#413](https://github.com/angular/zone.js/issues/413)) ([396942b](https://github.com/angular/zone.js/commit/396942b)), closes [#319](https://github.com/angular/zone.js/issues/319) +* IE10/11 timeout issues. ([382182c](https://github.com/angular/zone.js/commit/382182c)) + + + + +## [0.6.15](https://github.com/angular/zone.js/compare/v0.6.14...v0.6.15) (2016-08-19) + + +### Bug Fixes + +* broken build. ([#406](https://github.com/angular/zone.js/issues/406)) ([5e3c207](https://github.com/angular/zone.js/commit/5e3c207)) +* **tasks:** do not drain the microtask queue early. ([ff88bb4](https://github.com/angular/zone.js/commit/ff88bb4)) +* **tasks:** do not drain the microtask queue early. ([d4a1436](https://github.com/angular/zone.js/commit/d4a1436)) + + + + +## [0.6.14](https://github.com/angular/zone.js/compare/v0.6.13...v0.6.14) (2016-08-17) + + +### Features + +* **jasmine:** patch jasmine to understand zones. ([3a054be](https://github.com/angular/zone.js/commit/3a054be)) +* **trackingZone:** Keep track of tasks to see outstanding tasks. ([4942b4a](https://github.com/angular/zone.js/commit/4942b4a)) + + + + +## [0.6.13](https://github.com/angular/zone.js/compare/v0.6.12...v0.6.13) (2016-08-15) + + +### Bug Fixes + +* **browser:** make Object.defineProperty patch safer ([#392](https://github.com/angular/zone.js/issues/392)) ([597c634](https://github.com/angular/zone.js/commit/597c634)), closes [#391](https://github.com/angular/zone.js/issues/391) +* **browser:** patch Window when EventTarget is missing. ([#368](https://github.com/angular/zone.js/issues/368)) ([fcef80d](https://github.com/angular/zone.js/commit/fcef80d)), closes [#367](https://github.com/angular/zone.js/issues/367) +* **browser:** patchTimer cancelAnimationFrame ([#353](https://github.com/angular/zone.js/issues/353)) ([bf77fbb](https://github.com/angular/zone.js/commit/bf77fbb)), closes [#326](https://github.com/angular/zone.js/issues/326) [Leaflet/Leaflet#4588](https://github.com/Leaflet/Leaflet/issues/4588) +* **browser:** should not throw with frozen prototypes ([#351](https://github.com/angular/zone.js/issues/351)) ([27ca2a9](https://github.com/angular/zone.js/commit/27ca2a9)) +* **build:** fix broken master due to setTimeout not returning a number on node ([d43b4b8](https://github.com/angular/zone.js/commit/d43b4b8)) +* **doc:** Fixed the home page example. ([#348](https://github.com/angular/zone.js/issues/348)) ([9a0aa4a](https://github.com/angular/zone.js/commit/9a0aa4a)) +* throw if trying to load zone more then once. ([6df5f93](https://github.com/angular/zone.js/commit/6df5f93)) +* **fakeAsync:** throw error on rejected promisees. ([fd1dfcc](https://github.com/angular/zone.js/commit/fd1dfcc)) +* **promise:** allow Promise subclassing ([dafad98](https://github.com/angular/zone.js/commit/dafad98)) +* **XHR.responseBlob:** don't access XHR.responseBlob on old android webkit ([#329](https://github.com/angular/zone.js/issues/329)) ([ed69756](https://github.com/angular/zone.js/commit/ed69756)) + + +### Features + +* return timeout Id in ZoneTask.toString (fixes [#341](https://github.com/angular/zone.js/issues/341)) ([80ae6a8](https://github.com/angular/zone.js/commit/80ae6a8)), closes [#375](https://github.com/angular/zone.js/issues/375) +* **jasmine:** Switch jasmine patch to use microtask and preserve zone. ([5f519de](https://github.com/angular/zone.js/commit/5f519de)) +* **ProxySpec:** create a ProxySpec which can proxy to other ZoneSpecs. ([2d02e39](https://github.com/angular/zone.js/commit/2d02e39)) +* **zone:** Add Zone.getZone api ([0621014](https://github.com/angular/zone.js/commit/0621014)) + + + + +## [0.6.12](https://github.com/angular/zone.js/compare/v0.6.11...v0.6.12) (2016-04-19) + + +### Bug Fixes + +* **property-descriptor:** do not fail for events without targets ([3a8deef](https://github.com/angular/zone.js/commit/3a8deef)) + + +### Features + +* Add a zone spec for fake async test zone. ([#330](https://github.com/angular/zone.js/issues/330)) ([34159b4](https://github.com/angular/zone.js/commit/34159b4)) + + + + +## [0.6.11](https://github.com/angular/zone.js/compare/v0.6.9...v0.6.11) (2016-04-14) + + +### Bug Fixes + +* Suppress closure compiler warnings about unknown 'process' variable. ([e125173](https://github.com/angular/zone.js/commit/e125173)), closes [#295](https://github.com/angular/zone.js/issues/295) +* **setTimeout:** fix for [#290](https://github.com/angular/zone.js/issues/290), allow clearTimeout to be called in setTimeout callback ([a6967ad](https://github.com/angular/zone.js/commit/a6967ad)), closes [#301](https://github.com/angular/zone.js/issues/301) +* **WebSocket patch:** fix WebSocket constants copy ([#299](https://github.com/angular/zone.js/issues/299)) ([5dc4339](https://github.com/angular/zone.js/commit/5dc4339)) +* **xhr:** XHR macrotasks allow abort after XHR has completed ([#311](https://github.com/angular/zone.js/issues/311)) ([c70f011](https://github.com/angular/zone.js/commit/c70f011)) +* **zone:** remove debugger statement ([#292](https://github.com/angular/zone.js/issues/292)) ([01cec16](https://github.com/angular/zone.js/commit/01cec16)) +* window undefined in node environments ([f8d5dc7](https://github.com/angular/zone.js/commit/f8d5dc7)), closes [#305](https://github.com/angular/zone.js/issues/305) + + +### Features + +* **zonespec:** add a spec for synchronous tests ([#294](https://github.com/angular/zone.js/issues/294)) ([55da3d8](https://github.com/angular/zone.js/commit/55da3d8)) +* node/node ([29fc5d2](https://github.com/angular/zone.js/commit/29fc5d2)) + + + + +## [0.6.9](https://github.com/angular/zone.js/compare/v0.6.5...v0.6.9) (2016-04-04) + + +### Bug Fixes + +* Allow calling clearTimeout from within the setTimeout callback ([a8ea55d](https://github.com/angular/zone.js/commit/a8ea55d)), closes [#302](https://github.com/angular/zone.js/issues/302) +* Canceling already run task should not double decrement task counter ([faa3485](https://github.com/angular/zone.js/commit/faa3485)), closes [#290](https://github.com/angular/zone.js/issues/290) +* **xhr:** don't throw on an xhr which is aborted before sending ([8827e1e](https://github.com/angular/zone.js/commit/8827e1e)) +* **zone:** remove debugger statement ([d7c116b](https://github.com/angular/zone.js/commit/d7c116b)) + + +### Features + +* **zonespec:** add a spec for synchronous tests ([0a6a434](https://github.com/angular/zone.js/commit/0a6a434)) +* treat XHRs as macrotasks ([fd39f97](https://github.com/angular/zone.js/commit/fd39f97)) + + + + +## [0.6.5](https://github.com/angular/zone.js/compare/v0.6.2...v0.6.5) (2016-03-21) + + +### Bug Fixes + +* disable safari 7 ([4a4d4f6](https://github.com/angular/zone.js/commit/4a4d4f6)) +* **browser/utils:** calling removeEventListener twice with the same args should not cause errors ([1787339](https://github.com/angular/zone.js/commit/1787339)), closes [#283](https://github.com/angular/zone.js/issues/283) [#284](https://github.com/angular/zone.js/issues/284) +* **patching:** call native cancel method ([5783663](https://github.com/angular/zone.js/commit/5783663)), closes [#278](https://github.com/angular/zone.js/issues/278) [#279](https://github.com/angular/zone.js/issues/279) +* **utils:** add the ability to prevent the default action of onEvent (onclick, onpaste,etc..) by returning false. ([99940c3](https://github.com/angular/zone.js/commit/99940c3)), closes [#236](https://github.com/angular/zone.js/issues/236) +* **WebSocket patch:** keep WebSocket constants ([f25b087](https://github.com/angular/zone.js/commit/f25b087)), closes [#267](https://github.com/angular/zone.js/issues/267) +* **zonespec:** Do not crash on error if last task had no data ([0dba019](https://github.com/angular/zone.js/commit/0dba019)), closes [#281](https://github.com/angular/zone.js/issues/281) + + +### Features + +* **indexdb:** Added property patches and event target methods as well as tests for Indexed DB ([84a251f](https://github.com/angular/zone.js/commit/84a251f)), closes [#204](https://github.com/angular/zone.js/issues/204) +* **zonespec:** add a spec for asynchronous tests ([aeeb05c](https://github.com/angular/zone.js/commit/aeeb05c)), closes [#275](https://github.com/angular/zone.js/issues/275) + + + + +## [0.6.2](https://github.com/angular/zone.js/compare/v0.6.1...v0.6.2) (2016-03-03) + + + + +## [0.6.1](https://github.com/angular/zone.js/compare/v0.6.0...v0.6.1) (2016-02-29) + + + + +# [0.6.0](https://github.com/angular/zone.js/compare/v0.5.15...v0.6.0) (2016-02-29) + + +### Chores + +* **everything:** Major Zone Rewrite/Reimplementation ([63d4552](https://github.com/angular/zone.js/commit/63d4552)) + + +### BREAKING CHANGES + +* everything: This is a brand new implementation which is not backwards compatible. + + + + +## [0.5.15](https://github.com/angular/zone.js/compare/v0.5.14...v0.5.15) (2016-02-17) + + +### Bug Fixes + +* **WebWorker:** Patch WebSockets and XMLHttpRequest in WebWorker ([45a6bc1](https://github.com/angular/zone.js/commit/45a6bc1)), closes [#249](https://github.com/angular/zone.js/issues/249) +* **WebWorker:** Patch WebSockets and XMLHttpRequest in WebWorker ([9041a3a](https://github.com/angular/zone.js/commit/9041a3a)), closes [#249](https://github.com/angular/zone.js/issues/249) + + + + +## [0.5.14](https://github.com/angular/zone.js/compare/v0.5.11...v0.5.14) (2016-02-11) + + + + +## [0.5.11](https://github.com/angular/zone.js/compare/v0.5.10...v0.5.11) (2016-01-27) + + +### Bug Fixes + +* correct incorrect example path in karma config ([b0a624d](https://github.com/angular/zone.js/commit/b0a624d)) +* correct test relaying on jasmine timeout ([4f7d6ae](https://github.com/angular/zone.js/commit/4f7d6ae)) +* **WebSocket:** don't patch EventTarget methods twice ([345e56c](https://github.com/angular/zone.js/commit/345e56c)), closes [#235](https://github.com/angular/zone.js/issues/235) + + +### Features + +* **wtf:** add wtf support to (set/clear)Timeout/Interval/Immediate ([6659fd5](https://github.com/angular/zone.js/commit/6659fd5)) + + + + +## [0.5.10](https://github.com/angular/zone.js/compare/v0.5.9...v0.5.10) (2015-12-11) + + +### Bug Fixes + +* **keys:** Do not use Symbol which are broken in Chrome 39.0.2171 (Dartium) ([c48301b](https://github.com/angular/zone.js/commit/c48301b)) +* **Promise:** Make sure we check for native Promise before es6-promise gets a chance to polyfill ([fa18d4c](https://github.com/angular/zone.js/commit/fa18d4c)) + + + + +## [0.5.9](https://github.com/angular/zone.js/compare/v0.5.8...v0.5.9) (2015-12-09) + + +### Bug Fixes + +* **keys:** do not declare functions inside blocks ([d44d699](https://github.com/angular/zone.js/commit/d44d699)), closes [#194](https://github.com/angular/zone.js/issues/194) +* **keys:** Symbol is being checked for type of function ([6714be6](https://github.com/angular/zone.js/commit/6714be6)) +* **mutation-observe:** output of typeof operator should be string ([19703e3](https://github.com/angular/zone.js/commit/19703e3)) +* **util:** origin addEventListener/removeEventListener should be called without eventListener ([26e7f51](https://github.com/angular/zone.js/commit/26e7f51)), closes [#198](https://github.com/angular/zone.js/issues/198) +* **utils:** should have no effect when called addEventListener/removeEventListener without eventListener. ([5bcc6ae](https://github.com/angular/zone.js/commit/5bcc6ae)) + + + + +## [0.5.8](https://github.com/angular/zone.js/compare/v0.5.7...v0.5.8) (2015-10-06) + + +### Bug Fixes + +* **addEventListener:** when called from the global scope ([a23d61a](https://github.com/angular/zone.js/commit/a23d61a)), closes [#190](https://github.com/angular/zone.js/issues/190) +* **EventTarget:** apply the patch even if `Window` is not defined ([32c6df9](https://github.com/angular/zone.js/commit/32c6df9)) + + + + +## [0.5.7](https://github.com/angular/zone.js/compare/v0.5.6...v0.5.7) (2015-09-29) + + +### Bug Fixes + +* **RequestAnimationFrame:** pass the timestamp to the callback ([79a37c0](https://github.com/angular/zone.js/commit/79a37c0)), closes [#187](https://github.com/angular/zone.js/issues/187) + + + + +## [0.5.6](https://github.com/angular/zone.js/compare/v0.5.5...v0.5.6) (2015-09-25) + + +### Bug Fixes + +* **Jasmine:** add support for jasmine 2 done.fail() ([1d4370b](https://github.com/angular/zone.js/commit/1d4370b)), closes [#180](https://github.com/angular/zone.js/issues/180) +* **utils:** fixes event target patch in web workers ([ad5c0c8](https://github.com/angular/zone.js/commit/ad5c0c8)) + + + + +## [0.5.5](https://github.com/angular/zone.js/compare/v0.5.4...v0.5.5) (2015-09-11) + + +### Bug Fixes + +* **lib/utils:** adds compliant handling of useCapturing param for EventTarget methods ([dd2e1bf](https://github.com/angular/zone.js/commit/dd2e1bf)) +* **lib/utils:** fixes incorrect behaviour when re-adding the same event listener fn ([1b804cf](https://github.com/angular/zone.js/commit/1b804cf)) +* **longStackTraceZone:** modifies stackFramesFilter to exclude zone.js frames ([50ce9f3](https://github.com/angular/zone.js/commit/50ce9f3)) + + +### Features + +* **lib/core:** add/removeEventListener hooks ([1897440](https://github.com/angular/zone.js/commit/1897440)) +* **lib/patch/file-reader:** zone-binds FileReader#onEventName listeners ([ce589b9](https://github.com/angular/zone.js/commit/ce589b9)), closes [#137](https://github.com/angular/zone.js/issues/137) + + + + +## [0.5.4](https://github.com/angular/zone.js/compare/v0.5.3...v0.5.4) (2015-08-31) + + +### Bug Fixes + +* js path in examples ([c7a2ed9](https://github.com/angular/zone.js/commit/c7a2ed9)) +* **zone:** fix conflict with Polymer elements ([77b4c0d](https://github.com/angular/zone.js/commit/77b4c0d)) + + +### Features + +* **patch:** support requestAnimationFrame time loops ([3d6dc08](https://github.com/angular/zone.js/commit/3d6dc08)) + + + + +## [0.5.3](https://github.com/angular/zone.js/compare/v0.5.2...v0.5.3) (2015-08-21) + + +### Bug Fixes + +* **addEventListener patch:** ignore FunctionWrapper for IE11 & Edge dev tools ([3b0ca3f](https://github.com/angular/zone.js/commit/3b0ca3f)) +* **utils:** event listener patches break when passed an object implementing EventListener ([af88ff8](https://github.com/angular/zone.js/commit/af88ff8)) +* **WebWorker:** Fix patching in WebWorker ([2cc59d8](https://github.com/angular/zone.js/commit/2cc59d8)) + + +### Features + +* **zone.js:** support Android browser ([93b5555](https://github.com/angular/zone.js/commit/93b5555)) + + + + +## [0.5.2](https://github.com/angular/zone.js/compare/v0.5.1...v0.5.2) (2015-07-01) + + +### Bug Fixes + +* **jasmine patch:** forward timeout ([2dde717](https://github.com/angular/zone.js/commit/2dde717)) +* **zone.bind:** throw an error if arg is not a function ([ee4262a](https://github.com/angular/zone.js/commit/ee4262a)) + + + + +## [0.5.1](https://github.com/angular/zone.js/compare/v0.5.0...v0.5.1) (2015-06-10) + + +### Bug Fixes + +* **PatchClass:** copy static properties ([b91f8fe](https://github.com/angular/zone.js/commit/b91f8fe)), closes [#127](https://github.com/angular/zone.js/issues/127) +* **register-element:** add check for callback being own property of opts ([8bce00e](https://github.com/angular/zone.js/commit/8bce00e)), closes [#52](https://github.com/angular/zone.js/issues/52) + + +### Features + +* **fetch:** patch the fetch API ([4d3d524](https://github.com/angular/zone.js/commit/4d3d524)), closes [#108](https://github.com/angular/zone.js/issues/108) +* **geolocation:** patch the API ([cd13da1](https://github.com/angular/zone.js/commit/cd13da1)), closes [#113](https://github.com/angular/zone.js/issues/113) +* **jasmine:** export the jasmine patch ([639d5e7](https://github.com/angular/zone.js/commit/639d5e7)) +* **test:** serve lib/ files instead of dist/ ([f835213](https://github.com/angular/zone.js/commit/f835213)) +* **zone.js:** support IE9+ ([554fae0](https://github.com/angular/zone.js/commit/554fae0)) + + + + +# [0.5.0](https://github.com/angular/zone.js/compare/v0.4.4...v0.5.0) (2015-05-08) + + +### Bug Fixes + +* always run jasmine's done callbacks for async tests in jasmine's zone ([b7f3d04](https://github.com/angular/zone.js/commit/b7f3d04)), closes [#91](https://github.com/angular/zone.js/issues/91) +* don't fork new zones for callbacks from the root zone ([531d0ec](https://github.com/angular/zone.js/commit/531d0ec)), closes [#92](https://github.com/angular/zone.js/issues/92) +* **MutationObserver:** executes hooks in the creation zone ([3122a48](https://github.com/angular/zone.js/commit/3122a48)) +* **test:** fix an ineffective assertion ([d85d2cf](https://github.com/angular/zone.js/commit/d85d2cf)) +* minor fixes ([18f5511](https://github.com/angular/zone.js/commit/18f5511)) + + +### Code Refactoring + +* split zone.js into CJS modules, add zone-microtask.js ([2e52900](https://github.com/angular/zone.js/commit/2e52900)) + + +### Features + +* **scheduling:** Prefer MutationObserver over Promise in FF ([038bdd9](https://github.com/angular/zone.js/commit/038bdd9)) +* **scheduling:** Support Promise.then() fallbacks to enqueue a microtask ([74eff1c](https://github.com/angular/zone.js/commit/74eff1c)) +* add isRootZone api ([bf925bf](https://github.com/angular/zone.js/commit/bf925bf)) +* make root zone id to be 1 ([605e213](https://github.com/angular/zone.js/commit/605e213)) + + +### BREAKING CHANGES + +* New child zones are now created only from a async task +that installed a custom zone. + +Previously even without a custom zone installed (e.g. +LongStacktracesZone), we would spawn new +child zones for all asynchronous events. This is undesirable and +generally not useful. + +It does not make sense for us to create new zones for callbacks from the +root zone since we care +only about callbacks from installed custom zones. This reduces the +overhead of zones. + +This primarily means that LongStackTraces zone won't be able to trace +events back to Zone.init(), +but instead the starting point will be the installation of the +LongStacktracesZone. In all practical +situations this should be sufficient. +* zone.js as well as *-zone.js files are moved from / to dist/ + + + + +## [0.4.4](https://github.com/angular/zone.js/compare/v0.4.3...v0.4.4) (2015-05-07) + + +### Bug Fixes + +* commonjs wrapper ([7b4fdde](https://github.com/angular/zone.js/commit/7b4fdde)), closes [#19](https://github.com/angular/zone.js/issues/19) +* fork the zone in first example (README) ([7b6e8ed](https://github.com/angular/zone.js/commit/7b6e8ed)) +* prevent aliasing original window reference ([63b42bd](https://github.com/angular/zone.js/commit/63b42bd)) +* use strcit mode for the zone.js code only ([16855e5](https://github.com/angular/zone.js/commit/16855e5)) +* **test:** use console.log rather than dump in tests ([490e6dd](https://github.com/angular/zone.js/commit/490e6dd)) +* **websockets:** patch websockets via descriptors ([d725f46](https://github.com/angular/zone.js/commit/d725f46)), closes [#81](https://github.com/angular/zone.js/issues/81) +* **websockets:** properly patch websockets in Safari 7.0 ([3ba6fa1](https://github.com/angular/zone.js/commit/3ba6fa1)), closes [#88](https://github.com/angular/zone.js/issues/88) +* **websockets:** properly patch websockets on Safari 7.1 ([1799a20](https://github.com/angular/zone.js/commit/1799a20)) + + +### Features + +* add websockets example ([edb17d2](https://github.com/angular/zone.js/commit/edb17d2)) +* log a warning if we suspect duplicate Zone install ([657f6fe](https://github.com/angular/zone.js/commit/657f6fe)) + + + + +## [0.4.3](https://github.com/angular/zone.js/compare/v0.4.2...v0.4.3) (2015-04-08) + + +### Bug Fixes + +* **zone:** keep argument[0] refs around. ([48573ff](https://github.com/angular/zone.js/commit/48573ff)) + + + + +## [0.4.2](https://github.com/angular/zone.js/compare/v0.4.1...v0.4.2) (2015-03-27) + + +### Bug Fixes + +* **zone.js:** don't make function declaration in block scope ([229fd8f](https://github.com/angular/zone.js/commit/229fd8f)), closes [#53](https://github.com/angular/zone.js/issues/53) [#54](https://github.com/angular/zone.js/issues/54) + + +### Features + +* **bindPromiseFn:** add bindPromiseFn method ([643f2ac](https://github.com/angular/zone.js/commit/643f2ac)), closes [#49](https://github.com/angular/zone.js/issues/49) +* **lstz:** allow getLongStacktrace to be called with zero args ([26a4dc2](https://github.com/angular/zone.js/commit/26a4dc2)), closes [#47](https://github.com/angular/zone.js/issues/47) +* **Zone:** add unique id to each zone ([fb338b6](https://github.com/angular/zone.js/commit/fb338b6)), closes [#45](https://github.com/angular/zone.js/issues/45) + + + + +## [0.4.1](https://github.com/angular/zone.js/compare/v0.4.0...v0.4.1) (2015-02-20) + + +### Bug Fixes + +* **patchViaPropertyDescriptor:** disable if properties are not configurable ([fb5e644](https://github.com/angular/zone.js/commit/fb5e644)), closes [#42](https://github.com/angular/zone.js/issues/42) + + + + +# [0.4.0](https://github.com/angular/zone.js/compare/v0.3.0...v0.4.0) (2015-02-04) + + +### Bug Fixes + +* **WebSocket:** patch WebSocket instance ([7b8e1e6](https://github.com/angular/zone.js/commit/7b8e1e6)) + + + + +# [0.3.0](https://github.com/angular/zone.js/compare/v0.2.4...v0.3.0) (2014-06-12) + + +### Bug Fixes + +* add events for webgl contexts ([4b6e411](https://github.com/angular/zone.js/commit/4b6e411)) +* bind prototype chain callback of custom element descriptor ([136e518](https://github.com/angular/zone.js/commit/136e518)) +* dequeue tasks from the zone that enqueued it ([f127fd4](https://github.com/angular/zone.js/commit/f127fd4)) +* do not reconfig property descriptors of prototypes ([e9dfbed](https://github.com/angular/zone.js/commit/e9dfbed)) +* patch property descriptors in Object.create ([7b7258b](https://github.com/angular/zone.js/commit/7b7258b)), closes [#24](https://github.com/angular/zone.js/issues/24) +* support mozRequestAnimationFrame ([886f67d](https://github.com/angular/zone.js/commit/886f67d)) +* wrap non-configurable custom element callbacks ([383b479](https://github.com/angular/zone.js/commit/383b479)), closes [#24](https://github.com/angular/zone.js/issues/24) +* wrap Object.defineProperties ([f587f17](https://github.com/angular/zone.js/commit/f587f17)), closes [#24](https://github.com/angular/zone.js/issues/24) + + + + +## [0.2.4](https://github.com/angular/zone.js/compare/v0.2.3...v0.2.4) (2014-05-23) + + + + +## [0.2.3](https://github.com/angular/zone.js/compare/v0.2.2...v0.2.3) (2014-05-23) + + +### Bug Fixes + +* remove dump ([45fb7ba](https://github.com/angular/zone.js/commit/45fb7ba)) + + + + +## [0.2.2](https://github.com/angular/zone.js/compare/v0.2.1...v0.2.2) (2014-05-22) + + +### Bug Fixes + +* correctly detect support for document.registerElement ([ab1d487](https://github.com/angular/zone.js/commit/ab1d487)) +* dont automagically dequeue on setInterval ([da99e15](https://github.com/angular/zone.js/commit/da99e15)) +* fork should deep clone objects ([21b47ae](https://github.com/angular/zone.js/commit/21b47ae)) +* support MutationObserver.disconnect ([ad711b8](https://github.com/angular/zone.js/commit/ad711b8)) + + +### Features + +* add stackFramesFilter to longStackTraceZone ([7133de0](https://github.com/angular/zone.js/commit/7133de0)) +* expose hooks for enqueuing and dequing tasks ([ba72f34](https://github.com/angular/zone.js/commit/ba72f34)) +* improve countingZone and example ([86328fb](https://github.com/angular/zone.js/commit/86328fb)) +* support document.registerElement ([d3c785a](https://github.com/angular/zone.js/commit/d3c785a)), closes [#18](https://github.com/angular/zone.js/issues/18) + + + + +## [0.2.1](https://github.com/angular/zone.js/compare/v0.2.0...v0.2.1) (2014-04-24) + + +### Bug Fixes + +* add support for WebKitMutationObserver ([d1a2c8e](https://github.com/angular/zone.js/commit/d1a2c8e)) +* preserve setters when wrapping XMLHttpRequest ([fb46688](https://github.com/angular/zone.js/commit/fb46688)), closes [#17](https://github.com/angular/zone.js/issues/17) + + + + +# [0.2.0](https://github.com/angular/zone.js/compare/v0.1.1...v0.2.0) (2014-04-17) + + +### Bug Fixes + +* patch all properties on the proto chain ([b6d76f0](https://github.com/angular/zone.js/commit/b6d76f0)) +* patch MutationObserver ([1c4e85e](https://github.com/angular/zone.js/commit/1c4e85e)) +* wrap XMLHttpRequest when we cant patch protos ([76de58e](https://github.com/angular/zone.js/commit/76de58e)) + + +### Features + +* add exceptZone ([b134391](https://github.com/angular/zone.js/commit/b134391)) + + + + +## [0.1.1](https://github.com/angular/zone.js/compare/v0.1.0...v0.1.1) (2014-03-31) + + +### Features + +* add commonjs support ([0fe349e](https://github.com/angular/zone.js/commit/0fe349e)) + + + + +# [0.1.0](https://github.com/angular/zone.js/compare/v0.0.0...v0.1.0) (2014-03-31) + + +### Bug Fixes + +* improve patching browsers with EventTarget ([7d3a8b1](https://github.com/angular/zone.js/commit/7d3a8b1)) +* improve stacktrace capture on Safari ([46a6fbc](https://github.com/angular/zone.js/commit/46a6fbc)) +* long stack trace test ([01ce3b3](https://github.com/angular/zone.js/commit/01ce3b3)) +* prevent calling addEventListener on non-functions ([7acebca](https://github.com/angular/zone.js/commit/7acebca)) +* throw if a zone does not define an onError hook ([81d5f49](https://github.com/angular/zone.js/commit/81d5f49)) +* throw if a zone does not define an onError hook ([3485c1b](https://github.com/angular/zone.js/commit/3485c1b)) + + +### Features + +* add decorator syntax ([c6202a1](https://github.com/angular/zone.js/commit/c6202a1)) +* add onZoneCreated hook ([f7badb6](https://github.com/angular/zone.js/commit/f7badb6)) +* patch onclick in Chrome and Safari ([7205295](https://github.com/angular/zone.js/commit/7205295)) +* refactor and test counting zone ([648a95d](https://github.com/angular/zone.js/commit/648a95d)) +* support Promise ([091f44e](https://github.com/angular/zone.js/commit/091f44e)) + + + + +# 0.0.0 (2013-09-18) + + + diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/LICENSE b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/LICENSE new file mode 100644 index 00000000..13a6fd78 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2016 Google, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/LICENSE.wrapped b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/LICENSE.wrapped new file mode 100644 index 00000000..1e4fabdb --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/LICENSE.wrapped @@ -0,0 +1,25 @@ +/** + @license +The MIT License + +Copyright (c) 2016 Google, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + */ diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/README.md b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/README.md new file mode 100644 index 00000000..3d121a8c --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/README.md @@ -0,0 +1,39 @@ +# Zone.js + +[![Build Status](https://travis-ci.org/angular/zone.js.png)](https://travis-ci.org/angular/zone.js) +[![CDNJS](https://img.shields.io/cdnjs/v/zone.js.svg)](https://cdnjs.com/libraries/zone.js) + +Implements _Zones_ for JavaScript, inspired by [Dart](https://www.dartlang.org/articles/zones/). + +> If you're using zone.js via unpkg please provide a query param `?main=browser` +`https://unpkg.com/zone.js?main=browser` +> If you're using the following library, make sure you import them first + +> * 'newrelic' as it patches global.Promise before zone,js does +> * 'async-listener' as it patches global.setTimeout, global.setInterval before zone,js does +> * 'continuation-local-storage' as it uses async-listener + +# NEW Zone.js POST-v0.6.0 + +See the new API [here](./dist/zone.js.d.ts). + +Read up on [Zone Primer](https://docs.google.com/document/d/1F5Ug0jcrm031vhSMJEOgp1l-Is-Vf0UCNDY-LsQtAIY). + +## What's a Zone? + +A Zone is an execution context that persists across async tasks. +You can think of it as [thread-local storage](http://en.wikipedia.org/wiki/Thread-local_storage) for JavaScript VMs. + +See this video from ng-conf 2014 for a detailed explanation: + +[![screenshot of the zone.js presentation and ng-conf 2014](/presentation.png)](//www.youtube.com/watch?v=3IqtmUscE_U) + +## See also +* [async-listener](https://github.com/othiym23/async-listener) - a similar library for node +* [Async stack traces in Chrome](http://www.html5rocks.com/en/tutorials/developertools/async-call-stack/) +* [strongloop/zone](https://github.com/strongloop/zone) +* [vizone](https://github.com/gilbox/vizone) - control flow visualizer that uses zone.js + + +## License +MIT diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/async-test.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/async-test.js new file mode 100644 index 00000000..2f1feaad --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/async-test.js @@ -0,0 +1,88 @@ +/** +* @license +* Copyright Google Inc. All Rights Reserved. +* +* Use of this source code is governed by an MIT-style license that can be +* found in the LICENSE file at https://angular.io/license +*/ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory() : + typeof define === 'function' && define.amd ? define(factory) : + (factory()); +}(this, (function () { 'use strict'; + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var AsyncTestZoneSpec = (function () { + function AsyncTestZoneSpec(finishCallback, failCallback, namePrefix) { + this._pendingMicroTasks = false; + this._pendingMacroTasks = false; + this._alreadyErrored = false; + this.runZone = Zone.current; + this._finishCallback = finishCallback; + this._failCallback = failCallback; + this.name = 'asyncTestZone for ' + namePrefix; + } + AsyncTestZoneSpec.prototype._finishCallbackIfDone = function () { + var _this = this; + if (!(this._pendingMicroTasks || this._pendingMacroTasks)) { + // We do this because we would like to catch unhandled rejected promises. + this.runZone.run(function () { + setTimeout(function () { + if (!_this._alreadyErrored && !(_this._pendingMicroTasks || _this._pendingMacroTasks)) { + _this._finishCallback(); + } + }, 0); + }); + } + }; + // Note - we need to use onInvoke at the moment to call finish when a test is + // fully synchronous. TODO(juliemr): remove this when the logic for + // onHasTask changes and it calls whenever the task queues are dirty. + AsyncTestZoneSpec.prototype.onInvoke = function (parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source) { + try { + return parentZoneDelegate.invoke(targetZone, delegate, applyThis, applyArgs, source); + } + finally { + this._finishCallbackIfDone(); + } + }; + AsyncTestZoneSpec.prototype.onHandleError = function (parentZoneDelegate, currentZone, targetZone, error) { + // Let the parent try to handle the error. + var result = parentZoneDelegate.handleError(targetZone, error); + if (result) { + this._failCallback(error); + this._alreadyErrored = true; + } + return false; + }; + AsyncTestZoneSpec.prototype.onScheduleTask = function (delegate, currentZone, targetZone, task) { + if (task.type == 'macroTask' && task.source == 'setInterval') { + this._failCallback('Cannot use setInterval from within an async zone test.'); + return; + } + return delegate.scheduleTask(targetZone, task); + }; + AsyncTestZoneSpec.prototype.onHasTask = function (delegate, current, target, hasTaskState) { + delegate.hasTask(target, hasTaskState); + if (hasTaskState.change == 'microTask') { + this._pendingMicroTasks = hasTaskState.microTask; + this._finishCallbackIfDone(); + } + else if (hasTaskState.change == 'macroTask') { + this._pendingMacroTasks = hasTaskState.macroTask; + this._finishCallbackIfDone(); + } + }; + return AsyncTestZoneSpec; +}()); +// Export the class so that new instances can be created with proper +// constructor params. +Zone['AsyncTestZoneSpec'] = AsyncTestZoneSpec; + +}))); diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/fake-async-test.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/fake-async-test.js new file mode 100644 index 00000000..7d0dd4d2 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/fake-async-test.js @@ -0,0 +1,256 @@ +/** +* @license +* Copyright Google Inc. All Rights Reserved. +* +* Use of this source code is governed by an MIT-style license that can be +* found in the LICENSE file at https://angular.io/license +*/ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory() : + typeof define === 'function' && define.amd ? define(factory) : + (factory()); +}(this, (function () { 'use strict'; + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +(function (global) { + var Scheduler = (function () { + function Scheduler() { + // Next scheduler id. + this.nextId = 0; + // Scheduler queue with the tuple of end time and callback function - sorted by end time. + this._schedulerQueue = []; + // Current simulated time in millis. + this._currentTime = 0; + } + Scheduler.prototype.scheduleFunction = function (cb, delay, args, id) { + if (args === void 0) { args = []; } + if (id === void 0) { id = -1; } + var currentId = id < 0 ? this.nextId++ : id; + var endTime = this._currentTime + delay; + // Insert so that scheduler queue remains sorted by end time. + var newEntry = { endTime: endTime, id: currentId, func: cb, args: args, delay: delay }; + var i = 0; + for (; i < this._schedulerQueue.length; i++) { + var currentEntry = this._schedulerQueue[i]; + if (newEntry.endTime < currentEntry.endTime) { + break; + } + } + this._schedulerQueue.splice(i, 0, newEntry); + return currentId; + }; + Scheduler.prototype.removeScheduledFunctionWithId = function (id) { + for (var i = 0; i < this._schedulerQueue.length; i++) { + if (this._schedulerQueue[i].id == id) { + this._schedulerQueue.splice(i, 1); + break; + } + } + }; + Scheduler.prototype.tick = function (millis) { + if (millis === void 0) { millis = 0; } + var finalTime = this._currentTime + millis; + while (this._schedulerQueue.length > 0) { + var current = this._schedulerQueue[0]; + if (finalTime < current.endTime) { + // Done processing the queue since it's sorted by endTime. + break; + } + else { + // Time to run scheduled function. Remove it from the head of queue. + var current_1 = this._schedulerQueue.shift(); + this._currentTime = current_1.endTime; + var retval = current_1.func.apply(global, current_1.args); + if (!retval) { + // Uncaught exception in the current scheduled function. Stop processing the queue. + break; + } + } + } + this._currentTime = finalTime; + }; + return Scheduler; + }()); + var FakeAsyncTestZoneSpec = (function () { + function FakeAsyncTestZoneSpec(namePrefix) { + this._scheduler = new Scheduler(); + this._microtasks = []; + this._lastError = null; + this._uncaughtPromiseErrors = Promise[Zone['__symbol__']('uncaughtPromiseErrors')]; + this.pendingPeriodicTimers = []; + this.pendingTimers = []; + this.properties = { 'FakeAsyncTestZoneSpec': this }; + this.name = 'fakeAsyncTestZone for ' + namePrefix; + } + FakeAsyncTestZoneSpec.assertInZone = function () { + if (Zone.current.get('FakeAsyncTestZoneSpec') == null) { + throw new Error('The code should be running in the fakeAsync zone to call this function'); + } + }; + FakeAsyncTestZoneSpec.prototype._fnAndFlush = function (fn, completers) { + var _this = this; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + fn.apply(global, args); + if (_this._lastError === null) { + if (completers.onSuccess != null) { + completers.onSuccess.apply(global); + } + // Flush microtasks only on success. + _this.flushMicrotasks(); + } + else { + if (completers.onError != null) { + completers.onError.apply(global); + } + } + // Return true if there were no errors, false otherwise. + return _this._lastError === null; + }; + }; + FakeAsyncTestZoneSpec._removeTimer = function (timers, id) { + var index = timers.indexOf(id); + if (index > -1) { + timers.splice(index, 1); + } + }; + FakeAsyncTestZoneSpec.prototype._dequeueTimer = function (id) { + var _this = this; + return function () { + FakeAsyncTestZoneSpec._removeTimer(_this.pendingTimers, id); + }; + }; + FakeAsyncTestZoneSpec.prototype._requeuePeriodicTimer = function (fn, interval, args, id) { + var _this = this; + return function () { + // Requeue the timer callback if it's not been canceled. + if (_this.pendingPeriodicTimers.indexOf(id) !== -1) { + _this._scheduler.scheduleFunction(fn, interval, args, id); + } + }; + }; + FakeAsyncTestZoneSpec.prototype._dequeuePeriodicTimer = function (id) { + var _this = this; + return function () { + FakeAsyncTestZoneSpec._removeTimer(_this.pendingPeriodicTimers, id); + }; + }; + FakeAsyncTestZoneSpec.prototype._setTimeout = function (fn, delay, args) { + var removeTimerFn = this._dequeueTimer(this._scheduler.nextId); + // Queue the callback and dequeue the timer on success and error. + var cb = this._fnAndFlush(fn, { onSuccess: removeTimerFn, onError: removeTimerFn }); + var id = this._scheduler.scheduleFunction(cb, delay, args); + this.pendingTimers.push(id); + return id; + }; + FakeAsyncTestZoneSpec.prototype._clearTimeout = function (id) { + FakeAsyncTestZoneSpec._removeTimer(this.pendingTimers, id); + this._scheduler.removeScheduledFunctionWithId(id); + }; + FakeAsyncTestZoneSpec.prototype._setInterval = function (fn, interval) { + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments[_i]; + } + var id = this._scheduler.nextId; + var completers = { onSuccess: null, onError: this._dequeuePeriodicTimer(id) }; + var cb = this._fnAndFlush(fn, completers); + // Use the callback created above to requeue on success. + completers.onSuccess = this._requeuePeriodicTimer(cb, interval, args, id); + // Queue the callback and dequeue the periodic timer only on error. + this._scheduler.scheduleFunction(cb, interval, args); + this.pendingPeriodicTimers.push(id); + return id; + }; + FakeAsyncTestZoneSpec.prototype._clearInterval = function (id) { + FakeAsyncTestZoneSpec._removeTimer(this.pendingPeriodicTimers, id); + this._scheduler.removeScheduledFunctionWithId(id); + }; + FakeAsyncTestZoneSpec.prototype._resetLastErrorAndThrow = function () { + var error = this._lastError || this._uncaughtPromiseErrors[0]; + this._uncaughtPromiseErrors.length = 0; + this._lastError = null; + throw error; + }; + FakeAsyncTestZoneSpec.prototype.tick = function (millis) { + if (millis === void 0) { millis = 0; } + FakeAsyncTestZoneSpec.assertInZone(); + this.flushMicrotasks(); + this._scheduler.tick(millis); + if (this._lastError !== null) { + this._resetLastErrorAndThrow(); + } + }; + FakeAsyncTestZoneSpec.prototype.flushMicrotasks = function () { + var _this = this; + FakeAsyncTestZoneSpec.assertInZone(); + var flushErrors = function () { + if (_this._lastError !== null || _this._uncaughtPromiseErrors.length) { + // If there is an error stop processing the microtask queue and rethrow the error. + _this._resetLastErrorAndThrow(); + } + }; + while (this._microtasks.length > 0) { + var microtask = this._microtasks.shift(); + microtask(); + } + flushErrors(); + }; + FakeAsyncTestZoneSpec.prototype.onScheduleTask = function (delegate, current, target, task) { + switch (task.type) { + case 'microTask': + this._microtasks.push(task.invoke); + break; + case 'macroTask': + switch (task.source) { + case 'setTimeout': + task.data['handleId'] = + this._setTimeout(task.invoke, task.data['delay'], task.data['args']); + break; + case 'setInterval': + task.data['handleId'] = + this._setInterval(task.invoke, task.data['delay'], task.data['args']); + break; + case 'XMLHttpRequest.send': + throw new Error('Cannot make XHRs from within a fake async test.'); + default: + task = delegate.scheduleTask(target, task); + } + break; + case 'eventTask': + task = delegate.scheduleTask(target, task); + break; + } + return task; + }; + FakeAsyncTestZoneSpec.prototype.onCancelTask = function (delegate, current, target, task) { + switch (task.source) { + case 'setTimeout': + return this._clearTimeout(task.data['handleId']); + case 'setInterval': + return this._clearInterval(task.data['handleId']); + default: + return delegate.cancelTask(target, task); + } + }; + FakeAsyncTestZoneSpec.prototype.onHandleError = function (parentZoneDelegate, currentZone, targetZone, error) { + this._lastError = error; + return false; // Don't propagate error to parent zone. + }; + return FakeAsyncTestZoneSpec; + }()); + // Export the class so that new instances can be created with proper + // constructor params. + Zone['FakeAsyncTestZoneSpec'] = FakeAsyncTestZoneSpec; +})(typeof window === 'object' && window || typeof self === 'object' && self || global); + +}))); diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/jasmine-patch.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/jasmine-patch.js new file mode 100644 index 00000000..d188c8cf --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/jasmine-patch.js @@ -0,0 +1,139 @@ +/** +* @license +* Copyright Google Inc. All Rights Reserved. +* +* Use of this source code is governed by an MIT-style license that can be +* found in the LICENSE file at https://angular.io/license +*/ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory() : + typeof define === 'function' && define.amd ? define(factory) : + (factory()); +}(this, (function () { 'use strict'; + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +(function () { + var __extends = function (d, b) { + for (var p in b) + if (b.hasOwnProperty(p)) + d[p] = b[p]; + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + // Patch jasmine's describe/it/beforeEach/afterEach functions so test code always runs + // in a testZone (ProxyZone). (See: angular/zone.js#91 & angular/angular#10503) + if (!Zone) + throw new Error('Missing: zone.js'); + if (typeof jasmine == 'undefined') + throw new Error('Missing: jasmine.js'); + if (jasmine['__zone_patch__']) + throw new Error('\'jasmine\' has already been patched with \'Zone\'.'); + jasmine['__zone_patch__'] = true; + var SyncTestZoneSpec = Zone['SyncTestZoneSpec']; + var ProxyZoneSpec = Zone['ProxyZoneSpec']; + if (!SyncTestZoneSpec) + throw new Error('Missing: SyncTestZoneSpec'); + if (!ProxyZoneSpec) + throw new Error('Missing: ProxyZoneSpec'); + var ambientZone = Zone.current; + // Create a synchronous-only zone in which to run `describe` blocks in order to raise an + // error if any asynchronous operations are attempted inside of a `describe` but outside of + // a `beforeEach` or `it`. + var syncZone = ambientZone.fork(new SyncTestZoneSpec('jasmine.describe')); + // This is the zone which will be used for running individual tests. + // It will be a proxy zone, so that the tests function can retroactively install + // different zones. + // Example: + // - In beforeEach() do childZone = Zone.current.fork(...); + // - In it() try to do fakeAsync(). The issue is that because the beforeEach forked the + // zone outside of fakeAsync it will be able to escope the fakeAsync rules. + // - Because ProxyZone is parent fo `childZone` fakeAsync can retroactively add + // fakeAsync behavior to the childZone. + var testProxyZone = null; + // Monkey patch all of the jasmine DSL so that each function runs in appropriate zone. + var jasmineEnv = jasmine.getEnv(); + ['describe', 'xdescribe', 'fdescribe'].forEach(function (methodName) { + var originalJasmineFn = jasmineEnv[methodName]; + jasmineEnv[methodName] = function (description, specDefinitions) { + return originalJasmineFn.call(this, description, wrapDescribeInZone(specDefinitions)); + }; + }); + ['it', 'xit', 'fit'].forEach(function (methodName) { + var originalJasmineFn = jasmineEnv[methodName]; + jasmineEnv[methodName] = function (description, specDefinitions, timeout) { + arguments[1] = wrapTestInZone(specDefinitions); + return originalJasmineFn.apply(this, arguments); + }; + }); + ['beforeEach', 'afterEach'].forEach(function (methodName) { + var originalJasmineFn = jasmineEnv[methodName]; + jasmineEnv[methodName] = function (specDefinitions, timeout) { + arguments[0] = wrapTestInZone(specDefinitions); + return originalJasmineFn.apply(this, arguments); + }; + }); + /** + * Gets a function wrapping the body of a Jasmine `describe` block to execute in a + * synchronous-only zone. + */ + function wrapDescribeInZone(describeBody) { + return function () { + return syncZone.run(describeBody, this, arguments); + }; + } + /** + * Gets a function wrapping the body of a Jasmine `it/beforeEach/afterEach` block to + * execute in a ProxyZone zone. + * This will run in `testProxyZone`. The `testProxyZone` will be reset by the `ZoneQueueRunner` + */ + function wrapTestInZone(testBody) { + // The `done` callback is only passed through if the function expects at least one argument. + // Note we have to make a function with correct number of arguments, otherwise jasmine will + // think that all functions are sync or async. + return (testBody.length == 0) ? function () { + return testProxyZone.run(testBody, this); + } : function (done) { + return testProxyZone.run(testBody, this, [done]); + }; + } + var QueueRunner = jasmine.QueueRunner; + jasmine.QueueRunner = (function (_super) { + __extends(ZoneQueueRunner, _super); + function ZoneQueueRunner(attrs) { + attrs.onComplete = (function (fn) { return function () { + // All functions are done, clear the test zone. + testProxyZone = null; + ambientZone.scheduleMicroTask('jasmine.onComplete', fn); + }; })(attrs.onComplete); + _super.call(this, attrs); + } + ZoneQueueRunner.prototype.execute = function () { + var _this = this; + if (Zone.current !== ambientZone) + throw new Error('Unexpected Zone: ' + Zone.current.name); + testProxyZone = ambientZone.fork(new ProxyZoneSpec()); + if (!Zone.currentTask) { + // if we are not running in a task then if someone would register a + // element.addEventListener and then calling element.click() the + // addEventListener callback would think that it is the top most task and would + // drain the microtask queue on element.click() which would be incorrect. + // For this reason we always force a task when running jasmine tests. + Zone.current.scheduleMicroTask('jasmine.execute().forceTask', function () { return QueueRunner.prototype.execute.call(_this); }); + } + else { + _super.prototype.execute.call(this); + } + }; + return ZoneQueueRunner; + }(QueueRunner)); +})(); + +}))); diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/jasmine-patch.min.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/jasmine-patch.min.js new file mode 100644 index 00000000..b4695a0d --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/jasmine-patch.min.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n():"function"==typeof define&&define.amd?define(n):n()}(this,function(){"use strict";!function(){function e(e){return function(){return c.run(e,this,arguments)}}function n(e){return 0==e.length?function(){return u.run(e,this)}:function(n){return u.run(e,this,[n])}}var r=function(e,n){function r(){this.constructor=e}for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t]);e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)};if(!Zone)throw new Error("Missing: zone.js");if("undefined"==typeof jasmine)throw new Error("Missing: jasmine.js");if(jasmine.__zone_patch__)throw new Error("'jasmine' has already been patched with 'Zone'.");jasmine.__zone_patch__=!0;var t=Zone.SyncTestZoneSpec,o=Zone.ProxyZoneSpec;if(!t)throw new Error("Missing: SyncTestZoneSpec");if(!o)throw new Error("Missing: ProxyZoneSpec");var i=Zone.current,c=i.fork(new t("jasmine.describe")),u=null,s=jasmine.getEnv();["describe","xdescribe","fdescribe"].forEach(function(n){var r=s[n];s[n]=function(n,t){return r.call(this,n,e(t))}}),["it","xit","fit"].forEach(function(e){var r=s[e];s[e]=function(e,t,o){return arguments[1]=n(t),r.apply(this,arguments)}}),["beforeEach","afterEach"].forEach(function(e){var r=s[e];s[e]=function(e,t){return arguments[0]=n(e),r.apply(this,arguments)}});var f=jasmine.QueueRunner;jasmine.QueueRunner=function(e){function n(n){n.onComplete=function(e){return function(){u=null,i.scheduleMicroTask("jasmine.onComplete",e)}}(n.onComplete),e.call(this,n)}return r(n,e),n.prototype.execute=function(){var n=this;if(Zone.current!==i)throw new Error("Unexpected Zone: "+Zone.current.name);u=i.fork(new o),Zone.currentTask?e.prototype.execute.call(this):Zone.current.scheduleMicroTask("jasmine.execute().forceTask",function(){return f.prototype.execute.call(n)})},n}(f)}()}); \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/long-stack-trace-zone.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/long-stack-trace-zone.js new file mode 100644 index 00000000..33c472a5 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/long-stack-trace-zone.js @@ -0,0 +1,157 @@ +/** +* @license +* Copyright Google Inc. All Rights Reserved. +* +* Use of this source code is governed by an MIT-style license that can be +* found in the LICENSE file at https://angular.io/license +*/ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory() : + typeof define === 'function' && define.amd ? define(factory) : + (factory()); +}(this, (function () { 'use strict'; + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var NEWLINE = '\n'; +var SEP = ' ------------- '; +var IGNORE_FRAMES = []; +var creationTrace = '__creationTrace__'; +var LongStackTrace = (function () { + function LongStackTrace() { + this.error = getStacktrace(); + this.timestamp = new Date(); + } + return LongStackTrace; +}()); +function getStacktraceWithUncaughtError() { + return new Error('STACKTRACE TRACKING'); +} +function getStacktraceWithCaughtError() { + try { + throw getStacktraceWithUncaughtError(); + } + catch (e) { + return e; + } +} +// Some implementations of exception handling don't create a stack trace if the exception +// isn't thrown, however it's faster not to actually throw the exception. +var error = getStacktraceWithUncaughtError(); +var coughtError = getStacktraceWithCaughtError(); +var getStacktrace = error.stack ? + getStacktraceWithUncaughtError : + (coughtError.stack ? getStacktraceWithCaughtError : getStacktraceWithUncaughtError); +function getFrames(error) { + return error.stack ? error.stack.split(NEWLINE) : []; +} +function addErrorStack(lines, error) { + var trace = getFrames(error); + for (var i = 0; i < trace.length; i++) { + var frame = trace[i]; + // Filter out the Frames which are part of stack capturing. + if (!(i < IGNORE_FRAMES.length && IGNORE_FRAMES[i] === frame)) { + lines.push(trace[i]); + } + } +} +function renderLongStackTrace(frames, stack) { + var longTrace = [stack]; + if (frames) { + var timestamp = new Date().getTime(); + for (var i = 0; i < frames.length; i++) { + var traceFrames = frames[i]; + var lastTime = traceFrames.timestamp; + longTrace.push(SEP + " Elapsed: " + (timestamp - lastTime.getTime()) + " ms; At: " + lastTime + " " + SEP); + addErrorStack(longTrace, traceFrames.error); + timestamp = lastTime.getTime(); + } + } + return longTrace.join(NEWLINE); +} +Zone['longStackTraceZoneSpec'] = { + name: 'long-stack-trace', + longStackTraceLimit: 10, + onScheduleTask: function (parentZoneDelegate, currentZone, targetZone, task) { + var currentTask = Zone.currentTask; + var trace = currentTask && currentTask.data && currentTask.data[creationTrace] || []; + trace = [new LongStackTrace()].concat(trace); + if (trace.length > this.longStackTraceLimit) { + trace.length = this.longStackTraceLimit; + } + if (!task.data) + task.data = {}; + task.data[creationTrace] = trace; + return parentZoneDelegate.scheduleTask(targetZone, task); + }, + onHandleError: function (parentZoneDelegate, currentZone, targetZone, error) { + var parentTask = Zone.currentTask || error.task; + if (error instanceof Error && parentTask) { + var stackSetSucceeded = null; + try { + var descriptor = Object.getOwnPropertyDescriptor(error, 'stack'); + if (descriptor && descriptor.configurable) { + var delegateGet_1 = descriptor.get; + var value_1 = descriptor.value; + descriptor = { + get: function () { + return renderLongStackTrace(parentTask.data && parentTask.data[creationTrace], delegateGet_1 ? delegateGet_1.apply(this) : value_1); + } + }; + Object.defineProperty(error, 'stack', descriptor); + stackSetSucceeded = true; + } + } + catch (e) { + } + var longStack = stackSetSucceeded ? + null : + renderLongStackTrace(parentTask.data && parentTask.data[creationTrace], error.stack); + if (!stackSetSucceeded) { + try { + stackSetSucceeded = error.stack = longStack; + } + catch (e) { + } + } + if (!stackSetSucceeded) { + try { + stackSetSucceeded = error.longStack = longStack; + } + catch (e) { + } + } + } + return parentZoneDelegate.handleError(targetZone, error); + } +}; +function captureStackTraces(stackTraces, count) { + if (count > 0) { + stackTraces.push(getFrames((new LongStackTrace()).error)); + captureStackTraces(stackTraces, count - 1); + } +} +function computeIgnoreFrames() { + var frames = []; + captureStackTraces(frames, 2); + var frames1 = frames[0]; + var frames2 = frames[1]; + for (var i = 0; i < frames1.length; i++) { + var frame1 = frames1[i]; + var frame2 = frames2[i]; + if (frame1 === frame2) { + IGNORE_FRAMES.push(frame1); + } + else { + break; + } + } +} +computeIgnoreFrames(); + +}))); diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/long-stack-trace-zone.min.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/long-stack-trace-zone.min.js new file mode 100644 index 00000000..db33700a --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/long-stack-trace-zone.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e():"function"==typeof define&&define.amd?define(e):e()}(this,function(){"use strict";function t(){return new Error("STACKTRACE TRACKING")}function e(){try{throw t()}catch(e){return e}}function n(t){return t.stack?t.stack.split(i):[]}function r(t,e){for(var r=n(e),a=0;a0&&(t.push(n((new l).error)),c(t,e-1))}function o(){var t=[];c(t,2);for(var e=t[0],n=t[1],r=0;rthis.longStackTraceLimit&&(c.length=this.longStackTraceLimit),r.data||(r.data={}),r.data[f]=c,t.scheduleTask(n,r)},onHandleError:function(t,e,n,r){var c=Zone.currentTask||r.task;if(r instanceof Error&&c){var o=null;try{var i=Object.getOwnPropertyDescriptor(r,"stack");if(i&&i.configurable){var u=i.get,s=i.value;i={get:function(){return a(c.data&&c.data[f],u?u.apply(this):s)}},Object.defineProperty(r,"stack",i),o=!0}}catch(l){}var h=o?null:a(c.data&&c.data[f],r.stack);if(!o)try{o=r.stack=h}catch(l){}if(!o)try{o=r.longStack=h}catch(l){}}return t.handleError(n,r)}},o()}); \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/mocha-patch.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/mocha-patch.js new file mode 100644 index 00000000..e3da97cd --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/mocha-patch.js @@ -0,0 +1,156 @@ +/** +* @license +* Copyright Google Inc. All Rights Reserved. +* +* Use of this source code is governed by an MIT-style license that can be +* found in the LICENSE file at https://angular.io/license +*/ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory() : + typeof define === 'function' && define.amd ? define(factory) : + (factory()); +}(this, (function () { 'use strict'; + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +(function (context) { + var Mocha = context.Mocha; + if (typeof Mocha === 'undefined') { + throw new Error('Missing Mocha.js'); + } + if (typeof Zone === 'undefined') { + throw new Error('Missing Zone.js'); + } + var ProxyZoneSpec = Zone['ProxyZoneSpec']; + var SyncTestZoneSpec = Zone['SyncTestZoneSpec']; + if (!ProxyZoneSpec) { + throw new Error('Missing ProxyZoneSpec'); + } + if (Mocha['__zone_patch__']) { + throw new Error('"Mocha" has already been patched with "Zone".'); + } + Mocha['__zone_patch__'] = true; + var rootZone = Zone.current; + var syncZone = rootZone.fork(new SyncTestZoneSpec('Mocha.describe')); + var testZone = null; + var suiteZone = rootZone.fork(new ProxyZoneSpec()); + var mochaOriginal = { + after: Mocha.after, + afterEach: Mocha.afterEach, + before: Mocha.before, + beforeEach: Mocha.beforeEach, + describe: Mocha.describe, + it: Mocha.it + }; + function modifyArguments(args, syncTest, asyncTest) { + var _loop_1 = function (i) { + var arg = args[i]; + if (typeof arg === 'function') { + // The `done` callback is only passed through if the function expects at + // least one argument. + // Note we have to make a function with correct number of arguments, + // otherwise mocha will + // think that all functions are sync or async. + args[i] = (arg.length === 0) ? syncTest(arg) : asyncTest(arg); + // Mocha uses toString to view the test body in the result list, make sure we return the + // correct function body + args[i].toString = function () { + return arg.toString(); + }; + } + }; + for (var i = 0; i < args.length; i++) { + _loop_1(i); + } + return args; + } + function wrapDescribeInZone(args) { + var syncTest = function (fn) { + return function () { + return syncZone.run(fn, this, arguments); + }; + }; + return modifyArguments(args, syncTest); + } + function wrapTestInZone(args) { + var asyncTest = function (fn) { + return function (done) { + return testZone.run(fn, this, [done]); + }; + }; + var syncTest = function (fn) { + return function () { + return testZone.run(fn, this); + }; + }; + return modifyArguments(args, syncTest, asyncTest); + } + function wrapSuiteInZone(args) { + var asyncTest = function (fn) { + return function (done) { + return suiteZone.run(fn, this, [done]); + }; + }; + var syncTest = function (fn) { + return function () { + return suiteZone.run(fn, this); + }; + }; + return modifyArguments(args, syncTest, asyncTest); + } + + context.describe = context.suite = Mocha.describe = function () { + return mochaOriginal.describe.apply(this, wrapDescribeInZone(arguments)); + }; + context.xdescribe = context.suite.skip = Mocha.describe.skip = function () { + return mochaOriginal.describe.skip.apply(this, wrapDescribeInZone(arguments)); + }; + context.describe.only = context.suite.only = Mocha.describe.only = function () { + return mochaOriginal.describe.only.apply(this, wrapDescribeInZone(arguments)); + }; + context.it = context.specify = context.test = Mocha.it = function () { + return mochaOriginal.it.apply(this, wrapTestInZone(arguments)); + }; + context.xit = context.xspecify = Mocha.it.skip = function () { + return mochaOriginal.it.skip.apply(this, wrapTestInZone(arguments)); + }; + context.it.only = context.test.only = Mocha.it.only = function () { + return mochaOriginal.it.only.apply(this, wrapTestInZone(arguments)); + }; + context.after = context.suiteTeardown = Mocha.after = function () { + return mochaOriginal.after.apply(this, wrapSuiteInZone(arguments)); + }; + context.afterEach = context.teardown = Mocha.afterEach = function () { + return mochaOriginal.afterEach.apply(this, wrapTestInZone(arguments)); + }; + context.before = context.suiteSetup = Mocha.before = function () { + return mochaOriginal.before.apply(this, wrapSuiteInZone(arguments)); + }; + context.beforeEach = context.setup = Mocha.beforeEach = function () { + return mochaOriginal.beforeEach.apply(this, wrapTestInZone(arguments)); + }; + (function (originalRunTest, originalRun) { + Mocha.Runner.prototype.runTest = function (fn) { + var _this = this; + Zone.current.scheduleMicroTask('mocha.forceTask', function () { + originalRunTest.call(_this, fn); + }); + }; + Mocha.Runner.prototype.run = function (fn) { + this.on('test', function (e) { + if (Zone.current !== rootZone) { + throw new Error('Unexpected zone: ' + Zone.current.name); + } + testZone = rootZone.fork(new ProxyZoneSpec()); + }); + return originalRun.call(this, fn); + }; + })(Mocha.Runner.prototype.runTest, Mocha.Runner.prototype.run); +})(window); + +}))); diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/mocha-patch.min.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/mocha-patch.min.js new file mode 100644 index 00000000..0b72e405 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/mocha-patch.min.js @@ -0,0 +1 @@ +!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e():"function"==typeof define&&define.amd?define(e):e()}(this,function(){"use strict";!function(n){function e(n,e,t){for(var r=function(r){var o=n[r];"function"==typeof o&&(n[r]=0===o.length?e(o):t(o),n[r].toString=function(){return o.toString()})},o=0;o'; + this._properties = zoneSpec && zoneSpec.properties || {}; + this._zoneDelegate = + new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec); + } + Zone.assertZonePatched = function () { + if (global.Promise !== ZoneAwarePromise) { + throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' + + 'has been overwritten.\n' + + 'Most likely cause is that a Promise polyfill has been loaded ' + + 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' + + 'If you must load one, do so before loading zone.js.)'); + } + }; + Object.defineProperty(Zone, "current", { + get: function () { + return _currentZoneFrame.zone; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(Zone, "currentTask", { + get: function () { + return _currentTask; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(Zone.prototype, "parent", { + get: function () { + return this._parent; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(Zone.prototype, "name", { + get: function () { + return this._name; + }, + enumerable: true, + configurable: true + }); + + Zone.prototype.get = function (key) { + var zone = this.getZoneWith(key); + if (zone) + return zone._properties[key]; + }; + Zone.prototype.getZoneWith = function (key) { + var current = this; + while (current) { + if (current._properties.hasOwnProperty(key)) { + return current; + } + current = current._parent; + } + return null; + }; + Zone.prototype.fork = function (zoneSpec) { + if (!zoneSpec) + throw new Error('ZoneSpec required!'); + return this._zoneDelegate.fork(this, zoneSpec); + }; + Zone.prototype.wrap = function (callback, source) { + if (typeof callback !== 'function') { + throw new Error('Expecting function got: ' + callback); + } + var _callback = this._zoneDelegate.intercept(this, callback, source); + var zone = this; + return function () { + return zone.runGuarded(_callback, this, arguments, source); + }; + }; + Zone.prototype.run = function (callback, applyThis, applyArgs, source) { + if (applyThis === void 0) { applyThis = null; } + if (applyArgs === void 0) { applyArgs = null; } + if (source === void 0) { source = null; } + _currentZoneFrame = new ZoneFrame(_currentZoneFrame, this); + try { + return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); + } + finally { + _currentZoneFrame = _currentZoneFrame.parent; + } + }; + Zone.prototype.runGuarded = function (callback, applyThis, applyArgs, source) { + if (applyThis === void 0) { applyThis = null; } + if (applyArgs === void 0) { applyArgs = null; } + if (source === void 0) { source = null; } + _currentZoneFrame = new ZoneFrame(_currentZoneFrame, this); + try { + try { + return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); + } + catch (error) { + if (this._zoneDelegate.handleError(this, error)) { + throw error; + } + } + } + finally { + _currentZoneFrame = _currentZoneFrame.parent; + } + }; + Zone.prototype.runTask = function (task, applyThis, applyArgs) { + task.runCount++; + if (task.zone != this) + throw new Error('A task can only be run in the zone which created it! (Creation: ' + task.zone.name + + '; Execution: ' + this.name + ')'); + var previousTask = _currentTask; + _currentTask = task; + _currentZoneFrame = new ZoneFrame(_currentZoneFrame, this); + try { + if (task.type == 'macroTask' && task.data && !task.data.isPeriodic) { + task.cancelFn = null; + } + try { + return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs); + } + catch (error) { + if (this._zoneDelegate.handleError(this, error)) { + throw error; + } + } + } + finally { + _currentZoneFrame = _currentZoneFrame.parent; + _currentTask = previousTask; + } + }; + Zone.prototype.scheduleMicroTask = function (source, callback, data, customSchedule) { + return this._zoneDelegate.scheduleTask(this, new ZoneTask('microTask', this, source, callback, data, customSchedule, null)); + }; + Zone.prototype.scheduleMacroTask = function (source, callback, data, customSchedule, customCancel) { + return this._zoneDelegate.scheduleTask(this, new ZoneTask('macroTask', this, source, callback, data, customSchedule, customCancel)); + }; + Zone.prototype.scheduleEventTask = function (source, callback, data, customSchedule, customCancel) { + return this._zoneDelegate.scheduleTask(this, new ZoneTask('eventTask', this, source, callback, data, customSchedule, customCancel)); + }; + Zone.prototype.cancelTask = function (task) { + var value = this._zoneDelegate.cancelTask(this, task); + task.runCount = -1; + task.cancelFn = null; + return value; + }; + return Zone; + }()); + Zone.__symbol__ = __symbol__; + + var ZoneDelegate = (function () { + function ZoneDelegate(zone, parentDelegate, zoneSpec) { + this._taskCounts = { microTask: 0, macroTask: 0, eventTask: 0 }; + this.zone = zone; + this._parentDelegate = parentDelegate; + this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS); + this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt); + this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone); + this._interceptZS = + zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS); + this._interceptDlgt = + zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt); + this._interceptCurrZone = + zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone); + this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS); + this._invokeDlgt = + zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt); + this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone); + this._handleErrorZS = + zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS); + this._handleErrorDlgt = + zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt); + this._handleErrorCurrZone = + zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone); + this._scheduleTaskZS = + zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS); + this._scheduleTaskDlgt = + zoneSpec && (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt); + this._scheduleTaskCurrZone = + zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone); + this._invokeTaskZS = + zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS); + this._invokeTaskDlgt = + zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt); + this._invokeTaskCurrZone = + zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone); + this._cancelTaskZS = + zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS); + this._cancelTaskDlgt = + zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt); + this._cancelTaskCurrZone = + zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone); + this._hasTaskZS = zoneSpec && (zoneSpec.onHasTask ? zoneSpec : parentDelegate._hasTaskZS); + this._hasTaskDlgt = + zoneSpec && (zoneSpec.onHasTask ? parentDelegate : parentDelegate._hasTaskDlgt); + this._hasTaskCurrZone = zoneSpec && (zoneSpec.onHasTask ? this.zone : parentDelegate.zone); + } + ZoneDelegate.prototype.fork = function (targetZone, zoneSpec) { + return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) : + new Zone(targetZone, zoneSpec); + }; + ZoneDelegate.prototype.intercept = function (targetZone, callback, source) { + return this._interceptZS ? + this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) : + callback; + }; + ZoneDelegate.prototype.invoke = function (targetZone, callback, applyThis, applyArgs, source) { + return this._invokeZS ? + this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) : + callback.apply(applyThis, applyArgs); + }; + ZoneDelegate.prototype.handleError = function (targetZone, error) { + return this._handleErrorZS ? + this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) : + true; + }; + ZoneDelegate.prototype.scheduleTask = function (targetZone, task) { + try { + if (this._scheduleTaskZS) { + return this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task); + } + else if (task.scheduleFn) { + task.scheduleFn(task); + } + else if (task.type == 'microTask') { + scheduleMicroTask(task); + } + else { + throw new Error('Task is missing scheduleFn.'); + } + return task; + } + finally { + if (targetZone == this.zone) { + this._updateTaskCount(task.type, 1); + } + } + }; + ZoneDelegate.prototype.invokeTask = function (targetZone, task, applyThis, applyArgs) { + try { + return this._invokeTaskZS ? + this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) : + task.callback.apply(applyThis, applyArgs); + } + finally { + if (targetZone == this.zone && (task.type != 'eventTask') && + !(task.data && task.data.isPeriodic)) { + this._updateTaskCount(task.type, -1); + } + } + }; + ZoneDelegate.prototype.cancelTask = function (targetZone, task) { + var value; + if (this._cancelTaskZS) { + value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task); + } + else if (!task.cancelFn) { + throw new Error('Task does not support cancellation, or is already canceled.'); + } + else { + value = task.cancelFn(task); + } + if (targetZone == this.zone) { + // this should not be in the finally block, because exceptions assume not canceled. + this._updateTaskCount(task.type, -1); + } + return value; + }; + ZoneDelegate.prototype.hasTask = function (targetZone, isEmpty) { + return this._hasTaskZS && + this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty); + }; + ZoneDelegate.prototype._updateTaskCount = function (type, count) { + var counts = this._taskCounts; + var prev = counts[type]; + var next = counts[type] = prev + count; + if (next < 0) { + throw new Error('More tasks executed then were scheduled.'); + } + if (prev == 0 || next == 0) { + var isEmpty = { + microTask: counts.microTask > 0, + macroTask: counts.macroTask > 0, + eventTask: counts.eventTask > 0, + change: type + }; + try { + this.hasTask(this.zone, isEmpty); + } + finally { + if (this._parentDelegate) { + this._parentDelegate._updateTaskCount(type, count); + } + } + } + }; + return ZoneDelegate; + }()); + var ZoneTask = (function () { + function ZoneTask(type, zone, source, callback, options, scheduleFn, cancelFn) { + this.runCount = 0; + this.type = type; + this.zone = zone; + this.source = source; + this.data = options; + this.scheduleFn = scheduleFn; + this.cancelFn = cancelFn; + this.callback = callback; + var self = this; + this.invoke = function () { + _numberOfNestedTaskFrames++; + try { + return zone.runTask(self, this, arguments); + } + finally { + if (_numberOfNestedTaskFrames == 1) { + drainMicroTaskQueue(); + } + _numberOfNestedTaskFrames--; + } + }; + } + ZoneTask.prototype.toString = function () { + if (this.data && typeof this.data.handleId !== 'undefined') { + return this.data.handleId; + } + else { + return Object.prototype.toString.call(this); + } + }; + // add toJSON method to prevent cyclic error when + // call JSON.stringify(zoneTask) + ZoneTask.prototype.toJSON = function () { + return { + type: this.type, + source: this.source, + data: this.data, + zone: this.zone.name, + invoke: this.invoke, + scheduleFn: this.scheduleFn, + cancelFn: this.cancelFn, + runCount: this.runCount, + callback: this.callback + }; + }; + return ZoneTask; + }()); + var ZoneFrame = (function () { + function ZoneFrame(parent, zone) { + this.parent = parent; + this.zone = zone; + } + return ZoneFrame; + }()); + function __symbol__(name) { + return '__zone_symbol__' + name; + } + + var symbolSetTimeout = __symbol__('setTimeout'); + var symbolPromise = __symbol__('Promise'); + var symbolThen = __symbol__('then'); + var _currentZoneFrame = new ZoneFrame(null, new Zone(null, null)); + var _currentTask = null; + var _microTaskQueue = []; + var _isDrainingMicrotaskQueue = false; + var _uncaughtPromiseErrors = []; + var _numberOfNestedTaskFrames = 0; + function scheduleQueueDrain() { + // if we are not running in any task, and there has not been anything scheduled + // we must bootstrap the initial task creation by manually scheduling the drain + if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) { + // We are not running in Task, so we need to kickstart the microtask queue. + if (global[symbolPromise]) { + global[symbolPromise].resolve(0)[symbolThen](drainMicroTaskQueue); + } + else { + global[symbolSetTimeout](drainMicroTaskQueue, 0); + } + } + } + function scheduleMicroTask(task) { + scheduleQueueDrain(); + _microTaskQueue.push(task); + } + function consoleError(e) { + var rejection = e && e.rejection; + if (rejection) { + console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined); + } + console.error(e); + } + function drainMicroTaskQueue() { + if (!_isDrainingMicrotaskQueue) { + _isDrainingMicrotaskQueue = true; + while (_microTaskQueue.length) { + var queue = _microTaskQueue; + _microTaskQueue = []; + for (var i = 0; i < queue.length; i++) { + var task = queue[i]; + try { + task.zone.runTask(task, null, null); + } + catch (e) { + consoleError(e); + } + } + } + while (_uncaughtPromiseErrors.length) { + var _loop_1 = function () { + var uncaughtPromiseError = _uncaughtPromiseErrors.shift(); + try { + uncaughtPromiseError.zone.runGuarded(function () { + throw uncaughtPromiseError; + }); + } + catch (e) { + consoleError(e); + } + }; + while (_uncaughtPromiseErrors.length) { + _loop_1(); + } + } + _isDrainingMicrotaskQueue = false; + } + } + function isThenable(value) { + return value && value.then; + } + function forwardResolution(value) { + return value; + } + function forwardRejection(rejection) { + return ZoneAwarePromise.reject(rejection); + } + var symbolState = __symbol__('state'); + var symbolValue = __symbol__('value'); + var source = 'Promise.then'; + var UNRESOLVED = null; + var RESOLVED = true; + var REJECTED = false; + var REJECTED_NO_CATCH = 0; + function makeResolver(promise, state) { + return function (v) { + resolvePromise(promise, state, v); + // Do not return value or you will break the Promise spec. + }; + } + function resolvePromise(promise, state, value) { + if (promise[symbolState] === UNRESOLVED) { + if (value instanceof ZoneAwarePromise && value.hasOwnProperty(symbolState) && + value.hasOwnProperty(symbolValue) && value[symbolState] !== UNRESOLVED) { + clearRejectedNoCatch(value); + resolvePromise(promise, value[symbolState], value[symbolValue]); + } + else if (isThenable(value)) { + value.then(makeResolver(promise, state), makeResolver(promise, false)); + } + else { + promise[symbolState] = state; + var queue = promise[symbolValue]; + promise[symbolValue] = value; + for (var i = 0; i < queue.length;) { + scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]); + } + if (queue.length == 0 && state == REJECTED) { + promise[symbolState] = REJECTED_NO_CATCH; + try { + throw new Error('Uncaught (in promise): ' + value + + (value && value.stack ? '\n' + value.stack : '')); + } + catch (e) { + var error_1 = e; + error_1.rejection = value; + error_1.promise = promise; + error_1.zone = Zone.current; + error_1.task = Zone.currentTask; + _uncaughtPromiseErrors.push(error_1); + scheduleQueueDrain(); + } + } + } + } + // Resolving an already resolved promise is a noop. + return promise; + } + function clearRejectedNoCatch(promise) { + if (promise[symbolState] === REJECTED_NO_CATCH) { + promise[symbolState] = REJECTED; + for (var i = 0; i < _uncaughtPromiseErrors.length; i++) { + if (promise === _uncaughtPromiseErrors[i].promise) { + _uncaughtPromiseErrors.splice(i, 1); + break; + } + } + } + } + function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) { + clearRejectedNoCatch(promise); + var delegate = promise[symbolState] ? onFulfilled || forwardResolution : onRejected || forwardRejection; + zone.scheduleMicroTask(source, function () { + try { + resolvePromise(chainPromise, true, zone.run(delegate, null, [promise[symbolValue]])); + } + catch (error) { + resolvePromise(chainPromise, false, error); + } + }); + } + var ZoneAwarePromise = (function () { + function ZoneAwarePromise(executor) { + var promise = this; + if (!(promise instanceof ZoneAwarePromise)) { + throw new Error('Must be an instanceof Promise.'); + } + promise[symbolState] = UNRESOLVED; + promise[symbolValue] = []; // queue; + try { + executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED)); + } + catch (e) { + resolvePromise(promise, false, e); + } + } + ZoneAwarePromise.toString = function () { + return 'function ZoneAwarePromise() { [native code] }'; + }; + ZoneAwarePromise.resolve = function (value) { + return resolvePromise(new this(null), RESOLVED, value); + }; + ZoneAwarePromise.reject = function (error) { + return resolvePromise(new this(null), REJECTED, error); + }; + ZoneAwarePromise.race = function (values) { + var resolve; + var reject; + var promise = new this(function (res, rej) { + _a = [res, rej], resolve = _a[0], reject = _a[1]; + var _a; + }); + function onResolve(value) { + promise && (promise = null || resolve(value)); + } + function onReject(error) { + promise && (promise = null || reject(error)); + } + for (var _i = 0, values_1 = values; _i < values_1.length; _i++) { + var value = values_1[_i]; + if (!isThenable(value)) { + value = this.resolve(value); + } + value.then(onResolve, onReject); + } + return promise; + }; + ZoneAwarePromise.all = function (values) { + var resolve; + var reject; + var promise = new this(function (res, rej) { + resolve = res; + reject = rej; + }); + var count = 0; + var resolvedValues = []; + for (var _i = 0, values_2 = values; _i < values_2.length; _i++) { + var value = values_2[_i]; + if (!isThenable(value)) { + value = this.resolve(value); + } + value.then((function (index) { return function (value) { + resolvedValues[index] = value; + count--; + if (!count) { + resolve(resolvedValues); + } + }; })(count), reject); + count++; + } + if (!count) + resolve(resolvedValues); + return promise; + }; + ZoneAwarePromise.prototype.then = function (onFulfilled, onRejected) { + var chainPromise = new this.constructor(null); + var zone = Zone.current; + if (this[symbolState] == UNRESOLVED) { + this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected); + } + else { + scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected); + } + return chainPromise; + }; + ZoneAwarePromise.prototype.catch = function (onRejected) { + return this.then(null, onRejected); + }; + return ZoneAwarePromise; + }()); + // Protect against aggressive optimizers dropping seemingly unused properties. + // E.g. Closure Compiler in advanced mode. + ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve; + ZoneAwarePromise['reject'] = ZoneAwarePromise.reject; + ZoneAwarePromise['race'] = ZoneAwarePromise.race; + ZoneAwarePromise['all'] = ZoneAwarePromise.all; + var NativePromise = global[__symbol__('Promise')] = global['Promise']; + global['Promise'] = ZoneAwarePromise; + function patchThen(NativePromise) { + var NativePromiseProtototype = NativePromise.prototype; + var NativePromiseThen = NativePromiseProtototype[__symbol__('then')] = + NativePromiseProtototype.then; + NativePromiseProtototype.then = function (onResolve, onReject) { + var nativePromise = this; + return new ZoneAwarePromise(function (resolve, reject) { + NativePromiseThen.call(nativePromise, resolve, reject); + }) + .then(onResolve, onReject); + }; + } + if (NativePromise) { + patchThen(NativePromise); + if (typeof global['fetch'] !== 'undefined') { + var fetchPromise = void 0; + try { + // In MS Edge this throws + fetchPromise = global['fetch'](); + } + catch (e) { + // In Chrome this throws instead. + fetchPromise = global['fetch']('about:blank'); + } + // ignore output to prevent error; + fetchPromise.then(function () { return null; }, function () { return null; }); + if (fetchPromise.constructor != NativePromise && + fetchPromise.constructor != ZoneAwarePromise) { + patchThen(fetchPromise.constructor); + } + } + } + // This is not part of public API, but it is usefull for tests, so we expose it. + Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors; + /* + * This code patches Error so that: + * - It ignores un-needed stack frames. + * - It Shows the associated Zone for reach frame. + */ + var FrameType; + (function (FrameType) { + /// Skip this frame when printing out stack + FrameType[FrameType["blackList"] = 0] = "blackList"; + /// This frame marks zone transition + FrameType[FrameType["transition"] = 1] = "transition"; + })(FrameType || (FrameType = {})); + var NativeError = global[__symbol__('Error')] = global.Error; + // Store the frames which should be removed from the stack frames + var blackListedStackFrames = {}; + // We must find the frame where Error was created, otherwise we assume we don't understand stack + var zoneAwareFrame; + global.Error = ZoneAwareError; + // How should the stack frames be parsed. + var frameParserStrategy = null; + var stackRewrite = 'stackRewrite'; + // fix #595, create property descriptor + // for error properties + var createProperty = function (props, key) { + // if property is already defined, skip it. + if (props[key]) { + return; + } + // define a local property + // in case error property is not settable + var name = __symbol__(key); + props[key] = { + configurable: true, + enumerable: true, + get: function () { + // if local property has no value + // use internal error's property value + if (!this[name]) { + var error_2 = this[__symbol__('error')]; + if (error_2) { + this[name] = error_2[key]; + } + } + return this[name]; + }, + set: function (value) { + // setter will set value to local property value + this[name] = value; + } + }; + }; + // fix #595, create property descriptor + // for error method properties + var createMethodProperty = function (props, key) { + if (props[key]) { + return; + } + props[key] = { + configurable: true, + enumerable: true, + writable: true, + value: function () { + var error = this[__symbol__('error')]; + var errorMethod = (error && error[key]) || this[key]; + if (errorMethod) { + return errorMethod.apply(error, arguments); + } + } + }; + }; + var createErrorProperties = function () { + var props = Object.create(null); + var error = new NativeError(); + var keys = Object.getOwnPropertyNames(error); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + // Avoid bugs when hasOwnProperty is shadowed + if (Object.prototype.hasOwnProperty.call(error, key)) { + createProperty(props, key); + } + } + var proto = NativeError.prototype; + if (proto) { + var pKeys = Object.getOwnPropertyNames(proto); + for (var i = 0; i < pKeys.length; i++) { + var key = pKeys[i]; + // skip constructor + if (key !== 'constructor' && key !== 'toString' && key !== 'toSource') { + createProperty(props, key); + } + } + } + // some other properties are not + // in NativeError + createProperty(props, 'originalStack'); + createProperty(props, 'zoneAwareStack'); + // define toString, toSource as method property + createMethodProperty(props, 'toString'); + createMethodProperty(props, 'toSource'); + return props; + }; + var errorProperties = createErrorProperties(); + // for derived Error class which extends ZoneAwareError + // we should not override the derived class's property + // so we create a new props object only copy the properties + // from errorProperties which not exist in derived Error's prototype + var getErrorPropertiesForPrototype = function (prototype) { + // if the prototype is ZoneAwareError.prototype + // we just return the prebuilt errorProperties. + if (prototype === ZoneAwareError.prototype) { + return errorProperties; + } + var newProps = Object.create(null); + var cKeys = Object.getOwnPropertyNames(errorProperties); + var keys = Object.getOwnPropertyNames(prototype); + cKeys.forEach(function (cKey) { + if (keys.filter(function (key) { + return key === cKey; + }) + .length === 0) { + newProps[cKey] = errorProperties[cKey]; + } + }); + return newProps; + }; + /** + * This is ZoneAwareError which processes the stack frame and cleans up extra frames as well as + * adds zone information to it. + */ + function ZoneAwareError() { + // make sure we have a valid this + // if this is undefined(call Error without new) or this is global + // or this is some other objects, we should force to create a + // valid ZoneAwareError by call Object.create() + if (!(this instanceof ZoneAwareError)) { + return ZoneAwareError.apply(Object.create(ZoneAwareError.prototype), arguments); + } + // Create an Error. + var error = NativeError.apply(this, arguments); + this[__symbol__('error')] = error; + // Save original stack trace + error.originalStack = error.stack; + // Process the stack trace and rewrite the frames. + if (ZoneAwareError[stackRewrite] && error.originalStack) { + var frames_1 = error.originalStack.split('\n'); + var zoneFrame = _currentZoneFrame; + var i = 0; + // Find the first frame + while (frames_1[i] !== zoneAwareFrame && i < frames_1.length) { + i++; + } + for (; i < frames_1.length && zoneFrame; i++) { + var frame = frames_1[i]; + if (frame.trim()) { + var frameType = blackListedStackFrames.hasOwnProperty(frame) && blackListedStackFrames[frame]; + if (frameType === FrameType.blackList) { + frames_1.splice(i, 1); + i--; + } + else if (frameType === FrameType.transition) { + if (zoneFrame.parent) { + // This is the special frame where zone changed. Print and process it accordingly + frames_1[i] += " [" + zoneFrame.parent.zone.name + " => " + zoneFrame.zone.name + "]"; + zoneFrame = zoneFrame.parent; + } + else { + zoneFrame = null; + } + } + else { + frames_1[i] += " [" + zoneFrame.zone.name + "]"; + } + } + } + error.stack = error.zoneAwareStack = frames_1.join('\n'); + } + // use defineProperties here instead of copy property value + // because of issue #595 which will break angular2. + Object.defineProperties(this, getErrorPropertiesForPrototype(Object.getPrototypeOf(this))); + return this; + } + // Copy the prototype so that instanceof operator works as expected + ZoneAwareError.prototype = NativeError.prototype; + ZoneAwareError[Zone.__symbol__('blacklistedStackFrames')] = blackListedStackFrames; + ZoneAwareError[stackRewrite] = false; + if (NativeError.hasOwnProperty('stackTraceLimit')) { + // Extend default stack limit as we will be removing few frames. + NativeError.stackTraceLimit = Math.max(NativeError.stackTraceLimit, 15); + // make sure that ZoneAwareError has the same property which forwards to NativeError. + Object.defineProperty(ZoneAwareError, 'stackTraceLimit', { + get: function () { + return NativeError.stackTraceLimit; + }, + set: function (value) { + return NativeError.stackTraceLimit = value; + } + }); + } + if (NativeError.hasOwnProperty('captureStackTrace')) { + Object.defineProperty(ZoneAwareError, 'captureStackTrace', { + // add named function here because we need to remove this + // stack frame when prepareStackTrace below + value: function zoneCaptureStackTrace(targetObject, constructorOpt) { + NativeError.captureStackTrace(targetObject, constructorOpt); + } + }); + } + Object.defineProperty(ZoneAwareError, 'prepareStackTrace', { + get: function () { + return NativeError.prepareStackTrace; + }, + set: function (value) { + if (!value || typeof value !== 'function') { + return NativeError.prepareStackTrace = value; + } + return NativeError.prepareStackTrace = function (error, structuredStackTrace) { + // remove additional stack information from ZoneAwareError.captureStackTrace + if (structuredStackTrace) { + for (var i = 0; i < structuredStackTrace.length; i++) { + var st = structuredStackTrace[i]; + // remove the first function which name is zoneCaptureStackTrace + if (st.getFunctionName() === 'zoneCaptureStackTrace') { + structuredStackTrace.splice(i, 1); + break; + } + } + } + return value.apply(this, [error, structuredStackTrace]); + }; + } + }); + // Now we need to populet the `blacklistedStackFrames` as well as find the + // run/runGuraded/runTask frames. This is done by creating a detect zone and then threading + // the execution through all of the above methods so that we can look at the stack trace and + // find the frames of interest. + var detectZone = Zone.current.fork({ + name: 'detect', + onInvoke: function (parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source) { + // Here only so that it will show up in the stack frame so that it can be black listed. + return parentZoneDelegate.invoke(targetZone, delegate, applyThis, applyArgs, source); + }, + onHandleError: function (parentZD, current, target, error) { + if (error.originalStack && Error === ZoneAwareError) { + var frames_2 = error.originalStack.split(/\n/); + var runFrame = false, runGuardedFrame = false, runTaskFrame = false; + while (frames_2.length) { + var frame = frames_2.shift(); + // On safari it is possible to have stack frame with no line number. + // This check makes sure that we don't filter frames on name only (must have + // linenumber) + if (/:\d+:\d+/.test(frame)) { + // Get rid of the path so that we don't accidintely find function name in path. + // In chrome the seperator is `(` and `@` in FF and safari + // Chrome: at Zone.run (zone.js:100) + // Chrome: at Zone.run (http://localhost:9876/base/build/lib/zone.js:100:24) + // FireFox: Zone.prototype.run@http://localhost:9876/base/build/lib/zone.js:101:24 + // Safari: run@http://localhost:9876/base/build/lib/zone.js:101:24 + var fnName = frame.split('(')[0].split('@')[0]; + var frameType = FrameType.transition; + if (fnName.indexOf('ZoneAwareError') !== -1) { + zoneAwareFrame = frame; + } + if (fnName.indexOf('runGuarded') !== -1) { + runGuardedFrame = true; + } + else if (fnName.indexOf('runTask') !== -1) { + runTaskFrame = true; + } + else if (fnName.indexOf('run') !== -1) { + runFrame = true; + } + else { + frameType = FrameType.blackList; + } + blackListedStackFrames[frame] = frameType; + // Once we find all of the frames we can stop looking. + if (runFrame && runGuardedFrame && runTaskFrame) { + ZoneAwareError[stackRewrite] = true; + break; + } + } + } + } + return false; + } + }); + // carefully constructor a stack frame which contains all of the frames of interest which + // need to be detected and blacklisted. + var detectRunFn = function () { + detectZone.run(function () { + detectZone.runGuarded(function () { + throw new Error('blacklistStackFrames'); + }); + }); + }; + // Cause the error to extract the stack frames. + detectZone.runTask(detectZone.scheduleMacroTask('detect', detectRunFn, null, function () { return null; }, null)); + return global['Zone'] = Zone; +})(typeof window === 'object' && window || typeof self === 'object' && self || global); + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * Suppress closure compiler errors about unknown 'Zone' variable + * @fileoverview + * @suppress {undefinedVars} + */ +var zoneSymbol = function (n) { return "__zone_symbol__" + n; }; +var _global$1 = typeof window === 'object' && window || typeof self === 'object' && self || global; +function bindArguments(args, source) { + for (var i = args.length - 1; i >= 0; i--) { + if (typeof args[i] === 'function') { + args[i] = Zone.current.wrap(args[i], source + '_' + i); + } + } + return args; +} + + +var isNode = (!('nw' in _global$1) && typeof process !== 'undefined' && + {}.toString.call(process) === '[object process]'); + + + + + +var EVENT_TASKS = zoneSymbol('eventTasks'); +// For EventTarget +var ADD_EVENT_LISTENER = 'addEventListener'; +var REMOVE_EVENT_LISTENER = 'removeEventListener'; +function findExistingRegisteredTask(target, handler, name, capture, remove) { + var eventTasks = target[EVENT_TASKS]; + if (eventTasks) { + for (var i = 0; i < eventTasks.length; i++) { + var eventTask = eventTasks[i]; + var data = eventTask.data; + var listener = data.handler; + if ((data.handler === handler || listener.listener === handler) && + data.useCapturing === capture && data.eventName === name) { + if (remove) { + eventTasks.splice(i, 1); + } + return eventTask; + } + } + } + return null; +} +function findAllExistingRegisteredTasks(target, name, capture, remove) { + var eventTasks = target[EVENT_TASKS]; + if (eventTasks) { + var result = []; + for (var i = eventTasks.length - 1; i >= 0; i--) { + var eventTask = eventTasks[i]; + var data = eventTask.data; + if (data.eventName === name && data.useCapturing === capture) { + result.push(eventTask); + if (remove) { + eventTasks.splice(i, 1); + } + } + } + return result; + } + return null; +} +function attachRegisteredEvent(target, eventTask, isPrepend) { + var eventTasks = target[EVENT_TASKS]; + if (!eventTasks) { + eventTasks = target[EVENT_TASKS] = []; + } + if (isPrepend) { + eventTasks.unshift(eventTask); + } + else { + eventTasks.push(eventTask); + } +} +var defaultListenerMetaCreator = function (self, args) { + return { + useCapturing: args[2], + eventName: args[0], + handler: args[1], + target: self || _global$1, + name: args[0], + invokeAddFunc: function (addFnSymbol, delegate) { + if (delegate && delegate.invoke) { + return this.target[addFnSymbol](this.eventName, delegate.invoke, this.useCapturing); + } + else { + return this.target[addFnSymbol](this.eventName, delegate, this.useCapturing); + } + }, + invokeRemoveFunc: function (removeFnSymbol, delegate) { + if (delegate && delegate.invoke) { + return this.target[removeFnSymbol](this.eventName, delegate.invoke, this.useCapturing); + } + else { + return this.target[removeFnSymbol](this.eventName, delegate, this.useCapturing); + } + } + }; +}; +function makeZoneAwareAddListener(addFnName, removeFnName, useCapturingParam, allowDuplicates, isPrepend, metaCreator) { + if (useCapturingParam === void 0) { useCapturingParam = true; } + if (allowDuplicates === void 0) { allowDuplicates = false; } + if (isPrepend === void 0) { isPrepend = false; } + if (metaCreator === void 0) { metaCreator = defaultListenerMetaCreator; } + var addFnSymbol = zoneSymbol(addFnName); + var removeFnSymbol = zoneSymbol(removeFnName); + var defaultUseCapturing = useCapturingParam ? false : undefined; + function scheduleEventListener(eventTask) { + var meta = eventTask.data; + attachRegisteredEvent(meta.target, eventTask, isPrepend); + return meta.invokeAddFunc(addFnSymbol, eventTask); + } + function cancelEventListener(eventTask) { + var meta = eventTask.data; + findExistingRegisteredTask(meta.target, eventTask.invoke, meta.eventName, meta.useCapturing, true); + return meta.invokeRemoveFunc(removeFnSymbol, eventTask); + } + return function zoneAwareAddListener(self, args) { + var data = metaCreator(self, args); + data.useCapturing = data.useCapturing || defaultUseCapturing; + // - Inside a Web Worker, `this` is undefined, the context is `global` + // - When `addEventListener` is called on the global context in strict mode, `this` is undefined + // see https://github.com/angular/zone.js/issues/190 + var delegate = null; + if (typeof data.handler == 'function') { + delegate = data.handler; + } + else if (data.handler && data.handler.handleEvent) { + delegate = function (event) { return data.handler.handleEvent(event); }; + } + var validZoneHandler = false; + try { + // In cross site contexts (such as WebDriver frameworks like Selenium), + // accessing the handler object here will cause an exception to be thrown which + // will fail tests prematurely. + validZoneHandler = data.handler && data.handler.toString() === '[object FunctionWrapper]'; + } + catch (e) { + // Returning nothing here is fine, because objects in a cross-site context are unusable + return; + } + // Ignore special listeners of IE11 & Edge dev tools, see + // https://github.com/angular/zone.js/issues/150 + if (!delegate || validZoneHandler) { + return data.invokeAddFunc(addFnSymbol, data.handler); + } + if (!allowDuplicates) { + var eventTask = findExistingRegisteredTask(data.target, data.handler, data.eventName, data.useCapturing, false); + if (eventTask) { + // we already registered, so this will have noop. + return data.invokeAddFunc(addFnSymbol, eventTask); + } + } + var zone = Zone.current; + var source = data.target.constructor['name'] + '.' + addFnName + ':' + data.eventName; + zone.scheduleEventTask(source, delegate, data, scheduleEventListener, cancelEventListener); + }; +} +function makeZoneAwareRemoveListener(fnName, useCapturingParam, metaCreator) { + if (useCapturingParam === void 0) { useCapturingParam = true; } + if (metaCreator === void 0) { metaCreator = defaultListenerMetaCreator; } + var symbol = zoneSymbol(fnName); + var defaultUseCapturing = useCapturingParam ? false : undefined; + return function zoneAwareRemoveListener(self, args) { + var data = metaCreator(self, args); + data.useCapturing = data.useCapturing || defaultUseCapturing; + // - Inside a Web Worker, `this` is undefined, the context is `global` + // - When `addEventListener` is called on the global context in strict mode, `this` is undefined + // see https://github.com/angular/zone.js/issues/190 + var eventTask = findExistingRegisteredTask(data.target, data.handler, data.eventName, data.useCapturing, true); + if (eventTask) { + eventTask.zone.cancelTask(eventTask); + } + else { + data.invokeRemoveFunc(symbol, data.handler); + } + }; +} +function makeZoneAwareRemoveAllListeners(fnName, useCapturingParam) { + if (useCapturingParam === void 0) { useCapturingParam = true; } + var symbol = zoneSymbol(fnName); + var defaultUseCapturing = useCapturingParam ? false : undefined; + return function zoneAwareRemoveAllListener(self, args) { + var target = self || _global$1; + if (args.length === 0) { + // remove all listeners without eventName + target[EVENT_TASKS] = []; + // we don't cancel Task either, because call native eventEmitter.removeAllListeners will + // will do remove listener(cancelTask) for us + target[symbol](); + return; + } + var eventName = args[0]; + var useCapturing = args[1] || defaultUseCapturing; + // call this function just remove the related eventTask from target[EVENT_TASKS] + findAllExistingRegisteredTasks(target, eventName, useCapturing, true); + // we don't need useCapturing here because useCapturing is just for DOM, and + // removeAllListeners should only be called by node eventEmitter + // and we don't cancel Task either, because call native eventEmitter.removeAllListeners will + // will do remove listener(cancelTask) for us + target[symbol](eventName); + }; +} +function makeZoneAwareListeners(fnName) { + var symbol = zoneSymbol(fnName); + return function zoneAwareEventListeners(self, args) { + var eventName = args[0]; + var target = self || _global$1; + if (!target[EVENT_TASKS]) { + return []; + } + return target[EVENT_TASKS] + .filter(function (task) { return task.data.eventName === eventName; }) + .map(function (task) { return task.data.handler; }); + }; +} +var zoneAwareAddEventListener = makeZoneAwareAddListener(ADD_EVENT_LISTENER, REMOVE_EVENT_LISTENER); +var zoneAwareRemoveEventListener = makeZoneAwareRemoveListener(REMOVE_EVENT_LISTENER); + +var originalInstanceKey = zoneSymbol('originalInstance'); +// wrap some native API on `window` + + +function createNamedFn(name, delegate) { + try { + return (Function('f', "return function " + name + "(){return f(this, arguments)}"))(delegate); + } + catch (e) { + // if we fail, we must be CSP, just return delegate. + return function () { + return delegate(this, arguments); + }; + } +} +function patchMethod(target, name, patchFn) { + var proto = target; + while (proto && Object.getOwnPropertyNames(proto).indexOf(name) === -1) { + proto = Object.getPrototypeOf(proto); + } + if (!proto && target[name]) { + // somehow we did not find it, but we can see it. This happens on IE for Window properties. + proto = target; + } + var delegateName = zoneSymbol(name); + var delegate; + if (proto && !(delegate = proto[delegateName])) { + delegate = proto[delegateName] = proto[name]; + proto[name] = createNamedFn(name, patchFn(delegate, delegateName, name)); + } + return delegate; +} +// TODO: support cancel task later if necessary +function patchMacroTask(obj, funcName, metaCreator) { + var setNative = null; + function scheduleTask(task) { + var data = task.data; + data.args[data.callbackIndex] = function () { + task.invoke.apply(this, arguments); + }; + setNative.apply(data.target, data.args); + return task; + } + setNative = patchMethod(obj, funcName, function (delegate) { return function (self, args) { + var meta = metaCreator(self, args); + if (meta.callbackIndex >= 0 && typeof args[meta.callbackIndex] === 'function') { + var task = Zone.current.scheduleMacroTask(meta.name, args[meta.callbackIndex], meta, scheduleTask, null); + return task; + } + else { + // cause an error by calling it directly. + return delegate.apply(self, args); + } + }; }); +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var callAndReturnFirstParam = function (fn) { + return function (self, args) { + fn(self, args); + return self; + }; +}; +// For EventEmitter +var EE_ADD_LISTENER = 'addListener'; +var EE_PREPEND_LISTENER = 'prependListener'; +var EE_REMOVE_LISTENER = 'removeListener'; +var EE_REMOVE_ALL_LISTENER = 'removeAllListeners'; +var EE_LISTENERS = 'listeners'; +var EE_ON = 'on'; +var zoneAwareAddListener$1 = callAndReturnFirstParam(makeZoneAwareAddListener(EE_ADD_LISTENER, EE_REMOVE_LISTENER, false, true, false)); +var zoneAwarePrependListener = callAndReturnFirstParam(makeZoneAwareAddListener(EE_PREPEND_LISTENER, EE_REMOVE_LISTENER, false, true, true)); +var zoneAwareRemoveListener$1 = callAndReturnFirstParam(makeZoneAwareRemoveListener(EE_REMOVE_LISTENER, false)); +var zoneAwareRemoveAllListeners = callAndReturnFirstParam(makeZoneAwareRemoveAllListeners(EE_REMOVE_ALL_LISTENER, false)); +var zoneAwareListeners = makeZoneAwareListeners(EE_LISTENERS); +function patchEventEmitterMethods(obj) { + if (obj && obj.addListener) { + patchMethod(obj, EE_ADD_LISTENER, function () { return zoneAwareAddListener$1; }); + patchMethod(obj, EE_PREPEND_LISTENER, function () { return zoneAwarePrependListener; }); + patchMethod(obj, EE_REMOVE_LISTENER, function () { return zoneAwareRemoveListener$1; }); + patchMethod(obj, EE_REMOVE_ALL_LISTENER, function () { return zoneAwareRemoveAllListeners; }); + patchMethod(obj, EE_LISTENERS, function () { return zoneAwareListeners; }); + obj[EE_ON] = obj[EE_ADD_LISTENER]; + return true; + } + else { + return false; + } +} +// EventEmitter +var events; +try { + events = require('events'); +} +catch (err) { +} +if (events && events.EventEmitter) { + patchEventEmitterMethods(events.EventEmitter.prototype); +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var fs; +try { + fs = require('fs'); +} +catch (err) { +} +// watch, watchFile, unwatchFile has been patched +// because EventEmitter has been patched +var TO_PATCH_MACROTASK_METHODS = [ + 'access', 'appendFile', 'chmod', 'chown', 'close', 'exists', 'fchmod', + 'fchown', 'fdatasync', 'fstat', 'fsync', 'ftruncate', 'futimes', 'lchmod', + 'lchown', 'link', 'lstat', 'mkdir', 'mkdtemp', 'open', 'read', + 'readdir', 'readFile', 'readlink', 'realpath', 'rename', 'rmdir', 'stat', + 'symlink', 'truncate', 'unlink', 'utimes', 'write', 'writeFile', +]; +if (fs) { + TO_PATCH_MACROTASK_METHODS.filter(function (name) { return !!fs[name] && typeof fs[name] === 'function'; }) + .forEach(function (name) { + patchMacroTask(fs, name, function (self, args) { + return { + name: 'fs.' + name, + args: args, + callbackIndex: args.length > 0 ? args.length - 1 : -1, + target: self + }; + }); + }); +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +function patchTimer(window, setName, cancelName, nameSuffix) { + var setNative = null; + var clearNative = null; + setName += nameSuffix; + cancelName += nameSuffix; + var tasksByHandleId = {}; + function scheduleTask(task) { + var data = task.data; + data.args[0] = function () { + task.invoke.apply(this, arguments); + delete tasksByHandleId[data.handleId]; + }; + data.handleId = setNative.apply(window, data.args); + tasksByHandleId[data.handleId] = task; + return task; + } + function clearTask(task) { + delete tasksByHandleId[task.data.handleId]; + return clearNative(task.data.handleId); + } + setNative = + patchMethod(window, setName, function (delegate) { return function (self, args) { + if (typeof args[0] === 'function') { + var zone = Zone.current; + var options = { + handleId: null, + isPeriodic: nameSuffix === 'Interval', + delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 : null, + args: args + }; + var task = zone.scheduleMacroTask(setName, args[0], options, scheduleTask, clearTask); + if (!task) { + return task; + } + // Node.js must additionally support the ref and unref functions. + var handle = task.data.handleId; + if (handle.ref && handle.unref) { + task.ref = handle.ref.bind(handle); + task.unref = handle.unref.bind(handle); + } + return task; + } + else { + // cause an error by calling it directly. + return delegate.apply(window, args); + } + }; }); + clearNative = + patchMethod(window, cancelName, function (delegate) { return function (self, args) { + var task = typeof args[0] === 'number' ? tasksByHandleId[args[0]] : args[0]; + if (task && typeof task.type === 'string') { + if (task.cancelFn && task.data.isPeriodic || task.runCount === 0) { + // Do not cancel already canceled functions + task.zone.cancelTask(task); + } + } + else { + // cause an error by calling it directly. + delegate.apply(window, args); + } + }; }); +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var set = 'set'; +var clear = 'clear'; +var _global = typeof window === 'object' && window || typeof self === 'object' && self || global; +// Timers +var timers = require('timers'); +patchTimer(timers, set, clear, 'Timeout'); +patchTimer(timers, set, clear, 'Interval'); +patchTimer(timers, set, clear, 'Immediate'); +var shouldPatchGlobalTimers = global.setTimeout !== timers.setTimeout; +if (shouldPatchGlobalTimers) { + patchTimer(_global, set, clear, 'Timeout'); + patchTimer(_global, set, clear, 'Interval'); + patchTimer(_global, set, clear, 'Immediate'); +} +patchNextTick(); +// Crypto +var crypto; +try { + crypto = require('crypto'); +} +catch (err) { +} +// TODO(gdi2290): implement a better way to patch these methods +if (crypto) { + var nativeRandomBytes_1 = crypto.randomBytes; + crypto.randomBytes = function randomBytesZone(size, callback) { + if (!callback) { + return nativeRandomBytes_1(size); + } + else { + var zone = Zone.current; + var source = crypto.constructor.name + '.randomBytes'; + return nativeRandomBytes_1(size, zone.wrap(callback, source)); + } + }.bind(crypto); + var nativePbkdf2_1 = crypto.pbkdf2; + crypto.pbkdf2 = function pbkdf2Zone() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var fn = args[args.length - 1]; + if (typeof fn === 'function') { + var zone = Zone.current; + var source = crypto.constructor.name + '.pbkdf2'; + args[args.length - 1] = zone.wrap(fn, source); + return nativePbkdf2_1.apply(void 0, args); + } + else { + return nativePbkdf2_1.apply(void 0, args); + } + }.bind(crypto); +} +// HTTP Client +var httpClient; +try { + httpClient = require('_http_client'); +} +catch (err) { +} +if (httpClient && httpClient.ClientRequest) { + var ClientRequest_1 = httpClient.ClientRequest.bind(httpClient); + httpClient.ClientRequest = function (options, callback) { + if (!callback) { + return new ClientRequest_1(options); + } + else { + var zone = Zone.current; + return new ClientRequest_1(options, zone.wrap(callback, 'http.ClientRequest')); + } + }; +} +function patchNextTick() { + var setNative = null; + function scheduleTask(task) { + var args = task.data; + args[0] = function () { + task.invoke.apply(this, arguments); + }; + setNative.apply(process, args); + return task; + } + setNative = + patchMethod(process, 'nextTick', function (delegate) { return function (self, args) { + if (typeof args[0] === 'function') { + var zone = Zone.current; + var task = zone.scheduleMicroTask('nextTick', args[0], args, scheduleTask); + return task; + } + else { + // cause an error by calling it directly. + return delegate.apply(process, args); + } + }; }); +} + +}))); diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/zone.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/zone.js new file mode 100644 index 00000000..a38f6e93 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/zone.js @@ -0,0 +1,1861 @@ +/** +* @license +* Copyright Google Inc. All Rights Reserved. +* +* Use of this source code is governed by an MIT-style license that can be +* found in the LICENSE file at https://angular.io/license +*/ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory() : + typeof define === 'function' && define.amd ? define(factory) : + (factory()); +}(this, (function () { 'use strict'; + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + + +var Zone$1 = (function (global) { + if (global['Zone']) { + throw new Error('Zone already loaded.'); + } + var Zone = (function () { + function Zone(parent, zoneSpec) { + this._properties = null; + this._parent = parent; + this._name = zoneSpec ? zoneSpec.name || 'unnamed' : ''; + this._properties = zoneSpec && zoneSpec.properties || {}; + this._zoneDelegate = + new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec); + } + Zone.assertZonePatched = function () { + if (global.Promise !== ZoneAwarePromise) { + throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' + + 'has been overwritten.\n' + + 'Most likely cause is that a Promise polyfill has been loaded ' + + 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' + + 'If you must load one, do so before loading zone.js.)'); + } + }; + Object.defineProperty(Zone, "current", { + get: function () { + return _currentZoneFrame.zone; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(Zone, "currentTask", { + get: function () { + return _currentTask; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(Zone.prototype, "parent", { + get: function () { + return this._parent; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(Zone.prototype, "name", { + get: function () { + return this._name; + }, + enumerable: true, + configurable: true + }); + + Zone.prototype.get = function (key) { + var zone = this.getZoneWith(key); + if (zone) + return zone._properties[key]; + }; + Zone.prototype.getZoneWith = function (key) { + var current = this; + while (current) { + if (current._properties.hasOwnProperty(key)) { + return current; + } + current = current._parent; + } + return null; + }; + Zone.prototype.fork = function (zoneSpec) { + if (!zoneSpec) + throw new Error('ZoneSpec required!'); + return this._zoneDelegate.fork(this, zoneSpec); + }; + Zone.prototype.wrap = function (callback, source) { + if (typeof callback !== 'function') { + throw new Error('Expecting function got: ' + callback); + } + var _callback = this._zoneDelegate.intercept(this, callback, source); + var zone = this; + return function () { + return zone.runGuarded(_callback, this, arguments, source); + }; + }; + Zone.prototype.run = function (callback, applyThis, applyArgs, source) { + if (applyThis === void 0) { applyThis = null; } + if (applyArgs === void 0) { applyArgs = null; } + if (source === void 0) { source = null; } + _currentZoneFrame = new ZoneFrame(_currentZoneFrame, this); + try { + return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); + } + finally { + _currentZoneFrame = _currentZoneFrame.parent; + } + }; + Zone.prototype.runGuarded = function (callback, applyThis, applyArgs, source) { + if (applyThis === void 0) { applyThis = null; } + if (applyArgs === void 0) { applyArgs = null; } + if (source === void 0) { source = null; } + _currentZoneFrame = new ZoneFrame(_currentZoneFrame, this); + try { + try { + return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); + } + catch (error) { + if (this._zoneDelegate.handleError(this, error)) { + throw error; + } + } + } + finally { + _currentZoneFrame = _currentZoneFrame.parent; + } + }; + Zone.prototype.runTask = function (task, applyThis, applyArgs) { + task.runCount++; + if (task.zone != this) + throw new Error('A task can only be run in the zone which created it! (Creation: ' + task.zone.name + + '; Execution: ' + this.name + ')'); + var previousTask = _currentTask; + _currentTask = task; + _currentZoneFrame = new ZoneFrame(_currentZoneFrame, this); + try { + if (task.type == 'macroTask' && task.data && !task.data.isPeriodic) { + task.cancelFn = null; + } + try { + return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs); + } + catch (error) { + if (this._zoneDelegate.handleError(this, error)) { + throw error; + } + } + } + finally { + _currentZoneFrame = _currentZoneFrame.parent; + _currentTask = previousTask; + } + }; + Zone.prototype.scheduleMicroTask = function (source, callback, data, customSchedule) { + return this._zoneDelegate.scheduleTask(this, new ZoneTask('microTask', this, source, callback, data, customSchedule, null)); + }; + Zone.prototype.scheduleMacroTask = function (source, callback, data, customSchedule, customCancel) { + return this._zoneDelegate.scheduleTask(this, new ZoneTask('macroTask', this, source, callback, data, customSchedule, customCancel)); + }; + Zone.prototype.scheduleEventTask = function (source, callback, data, customSchedule, customCancel) { + return this._zoneDelegate.scheduleTask(this, new ZoneTask('eventTask', this, source, callback, data, customSchedule, customCancel)); + }; + Zone.prototype.cancelTask = function (task) { + var value = this._zoneDelegate.cancelTask(this, task); + task.runCount = -1; + task.cancelFn = null; + return value; + }; + return Zone; + }()); + Zone.__symbol__ = __symbol__; + + var ZoneDelegate = (function () { + function ZoneDelegate(zone, parentDelegate, zoneSpec) { + this._taskCounts = { microTask: 0, macroTask: 0, eventTask: 0 }; + this.zone = zone; + this._parentDelegate = parentDelegate; + this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS); + this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt); + this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone); + this._interceptZS = + zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS); + this._interceptDlgt = + zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt); + this._interceptCurrZone = + zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone); + this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS); + this._invokeDlgt = + zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt); + this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone); + this._handleErrorZS = + zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS); + this._handleErrorDlgt = + zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt); + this._handleErrorCurrZone = + zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone); + this._scheduleTaskZS = + zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS); + this._scheduleTaskDlgt = + zoneSpec && (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt); + this._scheduleTaskCurrZone = + zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone); + this._invokeTaskZS = + zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS); + this._invokeTaskDlgt = + zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt); + this._invokeTaskCurrZone = + zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone); + this._cancelTaskZS = + zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS); + this._cancelTaskDlgt = + zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt); + this._cancelTaskCurrZone = + zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone); + this._hasTaskZS = zoneSpec && (zoneSpec.onHasTask ? zoneSpec : parentDelegate._hasTaskZS); + this._hasTaskDlgt = + zoneSpec && (zoneSpec.onHasTask ? parentDelegate : parentDelegate._hasTaskDlgt); + this._hasTaskCurrZone = zoneSpec && (zoneSpec.onHasTask ? this.zone : parentDelegate.zone); + } + ZoneDelegate.prototype.fork = function (targetZone, zoneSpec) { + return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) : + new Zone(targetZone, zoneSpec); + }; + ZoneDelegate.prototype.intercept = function (targetZone, callback, source) { + return this._interceptZS ? + this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) : + callback; + }; + ZoneDelegate.prototype.invoke = function (targetZone, callback, applyThis, applyArgs, source) { + return this._invokeZS ? + this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) : + callback.apply(applyThis, applyArgs); + }; + ZoneDelegate.prototype.handleError = function (targetZone, error) { + return this._handleErrorZS ? + this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) : + true; + }; + ZoneDelegate.prototype.scheduleTask = function (targetZone, task) { + try { + if (this._scheduleTaskZS) { + return this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task); + } + else if (task.scheduleFn) { + task.scheduleFn(task); + } + else if (task.type == 'microTask') { + scheduleMicroTask(task); + } + else { + throw new Error('Task is missing scheduleFn.'); + } + return task; + } + finally { + if (targetZone == this.zone) { + this._updateTaskCount(task.type, 1); + } + } + }; + ZoneDelegate.prototype.invokeTask = function (targetZone, task, applyThis, applyArgs) { + try { + return this._invokeTaskZS ? + this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) : + task.callback.apply(applyThis, applyArgs); + } + finally { + if (targetZone == this.zone && (task.type != 'eventTask') && + !(task.data && task.data.isPeriodic)) { + this._updateTaskCount(task.type, -1); + } + } + }; + ZoneDelegate.prototype.cancelTask = function (targetZone, task) { + var value; + if (this._cancelTaskZS) { + value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task); + } + else if (!task.cancelFn) { + throw new Error('Task does not support cancellation, or is already canceled.'); + } + else { + value = task.cancelFn(task); + } + if (targetZone == this.zone) { + // this should not be in the finally block, because exceptions assume not canceled. + this._updateTaskCount(task.type, -1); + } + return value; + }; + ZoneDelegate.prototype.hasTask = function (targetZone, isEmpty) { + return this._hasTaskZS && + this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty); + }; + ZoneDelegate.prototype._updateTaskCount = function (type, count) { + var counts = this._taskCounts; + var prev = counts[type]; + var next = counts[type] = prev + count; + if (next < 0) { + throw new Error('More tasks executed then were scheduled.'); + } + if (prev == 0 || next == 0) { + var isEmpty = { + microTask: counts.microTask > 0, + macroTask: counts.macroTask > 0, + eventTask: counts.eventTask > 0, + change: type + }; + try { + this.hasTask(this.zone, isEmpty); + } + finally { + if (this._parentDelegate) { + this._parentDelegate._updateTaskCount(type, count); + } + } + } + }; + return ZoneDelegate; + }()); + var ZoneTask = (function () { + function ZoneTask(type, zone, source, callback, options, scheduleFn, cancelFn) { + this.runCount = 0; + this.type = type; + this.zone = zone; + this.source = source; + this.data = options; + this.scheduleFn = scheduleFn; + this.cancelFn = cancelFn; + this.callback = callback; + var self = this; + this.invoke = function () { + _numberOfNestedTaskFrames++; + try { + return zone.runTask(self, this, arguments); + } + finally { + if (_numberOfNestedTaskFrames == 1) { + drainMicroTaskQueue(); + } + _numberOfNestedTaskFrames--; + } + }; + } + ZoneTask.prototype.toString = function () { + if (this.data && typeof this.data.handleId !== 'undefined') { + return this.data.handleId; + } + else { + return Object.prototype.toString.call(this); + } + }; + // add toJSON method to prevent cyclic error when + // call JSON.stringify(zoneTask) + ZoneTask.prototype.toJSON = function () { + return { + type: this.type, + source: this.source, + data: this.data, + zone: this.zone.name, + invoke: this.invoke, + scheduleFn: this.scheduleFn, + cancelFn: this.cancelFn, + runCount: this.runCount, + callback: this.callback + }; + }; + return ZoneTask; + }()); + var ZoneFrame = (function () { + function ZoneFrame(parent, zone) { + this.parent = parent; + this.zone = zone; + } + return ZoneFrame; + }()); + function __symbol__(name) { + return '__zone_symbol__' + name; + } + + var symbolSetTimeout = __symbol__('setTimeout'); + var symbolPromise = __symbol__('Promise'); + var symbolThen = __symbol__('then'); + var _currentZoneFrame = new ZoneFrame(null, new Zone(null, null)); + var _currentTask = null; + var _microTaskQueue = []; + var _isDrainingMicrotaskQueue = false; + var _uncaughtPromiseErrors = []; + var _numberOfNestedTaskFrames = 0; + function scheduleQueueDrain() { + // if we are not running in any task, and there has not been anything scheduled + // we must bootstrap the initial task creation by manually scheduling the drain + if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) { + // We are not running in Task, so we need to kickstart the microtask queue. + if (global[symbolPromise]) { + global[symbolPromise].resolve(0)[symbolThen](drainMicroTaskQueue); + } + else { + global[symbolSetTimeout](drainMicroTaskQueue, 0); + } + } + } + function scheduleMicroTask(task) { + scheduleQueueDrain(); + _microTaskQueue.push(task); + } + function consoleError(e) { + var rejection = e && e.rejection; + if (rejection) { + console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined); + } + console.error(e); + } + function drainMicroTaskQueue() { + if (!_isDrainingMicrotaskQueue) { + _isDrainingMicrotaskQueue = true; + while (_microTaskQueue.length) { + var queue = _microTaskQueue; + _microTaskQueue = []; + for (var i = 0; i < queue.length; i++) { + var task = queue[i]; + try { + task.zone.runTask(task, null, null); + } + catch (e) { + consoleError(e); + } + } + } + while (_uncaughtPromiseErrors.length) { + var _loop_1 = function () { + var uncaughtPromiseError = _uncaughtPromiseErrors.shift(); + try { + uncaughtPromiseError.zone.runGuarded(function () { + throw uncaughtPromiseError; + }); + } + catch (e) { + consoleError(e); + } + }; + while (_uncaughtPromiseErrors.length) { + _loop_1(); + } + } + _isDrainingMicrotaskQueue = false; + } + } + function isThenable(value) { + return value && value.then; + } + function forwardResolution(value) { + return value; + } + function forwardRejection(rejection) { + return ZoneAwarePromise.reject(rejection); + } + var symbolState = __symbol__('state'); + var symbolValue = __symbol__('value'); + var source = 'Promise.then'; + var UNRESOLVED = null; + var RESOLVED = true; + var REJECTED = false; + var REJECTED_NO_CATCH = 0; + function makeResolver(promise, state) { + return function (v) { + resolvePromise(promise, state, v); + // Do not return value or you will break the Promise spec. + }; + } + function resolvePromise(promise, state, value) { + if (promise[symbolState] === UNRESOLVED) { + if (value instanceof ZoneAwarePromise && value.hasOwnProperty(symbolState) && + value.hasOwnProperty(symbolValue) && value[symbolState] !== UNRESOLVED) { + clearRejectedNoCatch(value); + resolvePromise(promise, value[symbolState], value[symbolValue]); + } + else if (isThenable(value)) { + value.then(makeResolver(promise, state), makeResolver(promise, false)); + } + else { + promise[symbolState] = state; + var queue = promise[symbolValue]; + promise[symbolValue] = value; + for (var i = 0; i < queue.length;) { + scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]); + } + if (queue.length == 0 && state == REJECTED) { + promise[symbolState] = REJECTED_NO_CATCH; + try { + throw new Error('Uncaught (in promise): ' + value + + (value && value.stack ? '\n' + value.stack : '')); + } + catch (e) { + var error_1 = e; + error_1.rejection = value; + error_1.promise = promise; + error_1.zone = Zone.current; + error_1.task = Zone.currentTask; + _uncaughtPromiseErrors.push(error_1); + scheduleQueueDrain(); + } + } + } + } + // Resolving an already resolved promise is a noop. + return promise; + } + function clearRejectedNoCatch(promise) { + if (promise[symbolState] === REJECTED_NO_CATCH) { + promise[symbolState] = REJECTED; + for (var i = 0; i < _uncaughtPromiseErrors.length; i++) { + if (promise === _uncaughtPromiseErrors[i].promise) { + _uncaughtPromiseErrors.splice(i, 1); + break; + } + } + } + } + function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) { + clearRejectedNoCatch(promise); + var delegate = promise[symbolState] ? onFulfilled || forwardResolution : onRejected || forwardRejection; + zone.scheduleMicroTask(source, function () { + try { + resolvePromise(chainPromise, true, zone.run(delegate, null, [promise[symbolValue]])); + } + catch (error) { + resolvePromise(chainPromise, false, error); + } + }); + } + var ZoneAwarePromise = (function () { + function ZoneAwarePromise(executor) { + var promise = this; + if (!(promise instanceof ZoneAwarePromise)) { + throw new Error('Must be an instanceof Promise.'); + } + promise[symbolState] = UNRESOLVED; + promise[symbolValue] = []; // queue; + try { + executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED)); + } + catch (e) { + resolvePromise(promise, false, e); + } + } + ZoneAwarePromise.toString = function () { + return 'function ZoneAwarePromise() { [native code] }'; + }; + ZoneAwarePromise.resolve = function (value) { + return resolvePromise(new this(null), RESOLVED, value); + }; + ZoneAwarePromise.reject = function (error) { + return resolvePromise(new this(null), REJECTED, error); + }; + ZoneAwarePromise.race = function (values) { + var resolve; + var reject; + var promise = new this(function (res, rej) { + _a = [res, rej], resolve = _a[0], reject = _a[1]; + var _a; + }); + function onResolve(value) { + promise && (promise = null || resolve(value)); + } + function onReject(error) { + promise && (promise = null || reject(error)); + } + for (var _i = 0, values_1 = values; _i < values_1.length; _i++) { + var value = values_1[_i]; + if (!isThenable(value)) { + value = this.resolve(value); + } + value.then(onResolve, onReject); + } + return promise; + }; + ZoneAwarePromise.all = function (values) { + var resolve; + var reject; + var promise = new this(function (res, rej) { + resolve = res; + reject = rej; + }); + var count = 0; + var resolvedValues = []; + for (var _i = 0, values_2 = values; _i < values_2.length; _i++) { + var value = values_2[_i]; + if (!isThenable(value)) { + value = this.resolve(value); + } + value.then((function (index) { return function (value) { + resolvedValues[index] = value; + count--; + if (!count) { + resolve(resolvedValues); + } + }; })(count), reject); + count++; + } + if (!count) + resolve(resolvedValues); + return promise; + }; + ZoneAwarePromise.prototype.then = function (onFulfilled, onRejected) { + var chainPromise = new this.constructor(null); + var zone = Zone.current; + if (this[symbolState] == UNRESOLVED) { + this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected); + } + else { + scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected); + } + return chainPromise; + }; + ZoneAwarePromise.prototype.catch = function (onRejected) { + return this.then(null, onRejected); + }; + return ZoneAwarePromise; + }()); + // Protect against aggressive optimizers dropping seemingly unused properties. + // E.g. Closure Compiler in advanced mode. + ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve; + ZoneAwarePromise['reject'] = ZoneAwarePromise.reject; + ZoneAwarePromise['race'] = ZoneAwarePromise.race; + ZoneAwarePromise['all'] = ZoneAwarePromise.all; + var NativePromise = global[__symbol__('Promise')] = global['Promise']; + global['Promise'] = ZoneAwarePromise; + function patchThen(NativePromise) { + var NativePromiseProtototype = NativePromise.prototype; + var NativePromiseThen = NativePromiseProtototype[__symbol__('then')] = + NativePromiseProtototype.then; + NativePromiseProtototype.then = function (onResolve, onReject) { + var nativePromise = this; + return new ZoneAwarePromise(function (resolve, reject) { + NativePromiseThen.call(nativePromise, resolve, reject); + }) + .then(onResolve, onReject); + }; + } + if (NativePromise) { + patchThen(NativePromise); + if (typeof global['fetch'] !== 'undefined') { + var fetchPromise = void 0; + try { + // In MS Edge this throws + fetchPromise = global['fetch'](); + } + catch (e) { + // In Chrome this throws instead. + fetchPromise = global['fetch']('about:blank'); + } + // ignore output to prevent error; + fetchPromise.then(function () { return null; }, function () { return null; }); + if (fetchPromise.constructor != NativePromise && + fetchPromise.constructor != ZoneAwarePromise) { + patchThen(fetchPromise.constructor); + } + } + } + // This is not part of public API, but it is usefull for tests, so we expose it. + Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors; + /* + * This code patches Error so that: + * - It ignores un-needed stack frames. + * - It Shows the associated Zone for reach frame. + */ + var FrameType; + (function (FrameType) { + /// Skip this frame when printing out stack + FrameType[FrameType["blackList"] = 0] = "blackList"; + /// This frame marks zone transition + FrameType[FrameType["transition"] = 1] = "transition"; + })(FrameType || (FrameType = {})); + var NativeError = global[__symbol__('Error')] = global.Error; + // Store the frames which should be removed from the stack frames + var blackListedStackFrames = {}; + // We must find the frame where Error was created, otherwise we assume we don't understand stack + var zoneAwareFrame; + global.Error = ZoneAwareError; + // How should the stack frames be parsed. + var frameParserStrategy = null; + var stackRewrite = 'stackRewrite'; + // fix #595, create property descriptor + // for error properties + var createProperty = function (props, key) { + // if property is already defined, skip it. + if (props[key]) { + return; + } + // define a local property + // in case error property is not settable + var name = __symbol__(key); + props[key] = { + configurable: true, + enumerable: true, + get: function () { + // if local property has no value + // use internal error's property value + if (!this[name]) { + var error_2 = this[__symbol__('error')]; + if (error_2) { + this[name] = error_2[key]; + } + } + return this[name]; + }, + set: function (value) { + // setter will set value to local property value + this[name] = value; + } + }; + }; + // fix #595, create property descriptor + // for error method properties + var createMethodProperty = function (props, key) { + if (props[key]) { + return; + } + props[key] = { + configurable: true, + enumerable: true, + writable: true, + value: function () { + var error = this[__symbol__('error')]; + var errorMethod = (error && error[key]) || this[key]; + if (errorMethod) { + return errorMethod.apply(error, arguments); + } + } + }; + }; + var createErrorProperties = function () { + var props = Object.create(null); + var error = new NativeError(); + var keys = Object.getOwnPropertyNames(error); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + // Avoid bugs when hasOwnProperty is shadowed + if (Object.prototype.hasOwnProperty.call(error, key)) { + createProperty(props, key); + } + } + var proto = NativeError.prototype; + if (proto) { + var pKeys = Object.getOwnPropertyNames(proto); + for (var i = 0; i < pKeys.length; i++) { + var key = pKeys[i]; + // skip constructor + if (key !== 'constructor' && key !== 'toString' && key !== 'toSource') { + createProperty(props, key); + } + } + } + // some other properties are not + // in NativeError + createProperty(props, 'originalStack'); + createProperty(props, 'zoneAwareStack'); + // define toString, toSource as method property + createMethodProperty(props, 'toString'); + createMethodProperty(props, 'toSource'); + return props; + }; + var errorProperties = createErrorProperties(); + // for derived Error class which extends ZoneAwareError + // we should not override the derived class's property + // so we create a new props object only copy the properties + // from errorProperties which not exist in derived Error's prototype + var getErrorPropertiesForPrototype = function (prototype) { + // if the prototype is ZoneAwareError.prototype + // we just return the prebuilt errorProperties. + if (prototype === ZoneAwareError.prototype) { + return errorProperties; + } + var newProps = Object.create(null); + var cKeys = Object.getOwnPropertyNames(errorProperties); + var keys = Object.getOwnPropertyNames(prototype); + cKeys.forEach(function (cKey) { + if (keys.filter(function (key) { + return key === cKey; + }) + .length === 0) { + newProps[cKey] = errorProperties[cKey]; + } + }); + return newProps; + }; + /** + * This is ZoneAwareError which processes the stack frame and cleans up extra frames as well as + * adds zone information to it. + */ + function ZoneAwareError() { + // make sure we have a valid this + // if this is undefined(call Error without new) or this is global + // or this is some other objects, we should force to create a + // valid ZoneAwareError by call Object.create() + if (!(this instanceof ZoneAwareError)) { + return ZoneAwareError.apply(Object.create(ZoneAwareError.prototype), arguments); + } + // Create an Error. + var error = NativeError.apply(this, arguments); + this[__symbol__('error')] = error; + // Save original stack trace + error.originalStack = error.stack; + // Process the stack trace and rewrite the frames. + if (ZoneAwareError[stackRewrite] && error.originalStack) { + var frames_1 = error.originalStack.split('\n'); + var zoneFrame = _currentZoneFrame; + var i = 0; + // Find the first frame + while (frames_1[i] !== zoneAwareFrame && i < frames_1.length) { + i++; + } + for (; i < frames_1.length && zoneFrame; i++) { + var frame = frames_1[i]; + if (frame.trim()) { + var frameType = blackListedStackFrames.hasOwnProperty(frame) && blackListedStackFrames[frame]; + if (frameType === FrameType.blackList) { + frames_1.splice(i, 1); + i--; + } + else if (frameType === FrameType.transition) { + if (zoneFrame.parent) { + // This is the special frame where zone changed. Print and process it accordingly + frames_1[i] += " [" + zoneFrame.parent.zone.name + " => " + zoneFrame.zone.name + "]"; + zoneFrame = zoneFrame.parent; + } + else { + zoneFrame = null; + } + } + else { + frames_1[i] += " [" + zoneFrame.zone.name + "]"; + } + } + } + error.stack = error.zoneAwareStack = frames_1.join('\n'); + } + // use defineProperties here instead of copy property value + // because of issue #595 which will break angular2. + Object.defineProperties(this, getErrorPropertiesForPrototype(Object.getPrototypeOf(this))); + return this; + } + // Copy the prototype so that instanceof operator works as expected + ZoneAwareError.prototype = NativeError.prototype; + ZoneAwareError[Zone.__symbol__('blacklistedStackFrames')] = blackListedStackFrames; + ZoneAwareError[stackRewrite] = false; + if (NativeError.hasOwnProperty('stackTraceLimit')) { + // Extend default stack limit as we will be removing few frames. + NativeError.stackTraceLimit = Math.max(NativeError.stackTraceLimit, 15); + // make sure that ZoneAwareError has the same property which forwards to NativeError. + Object.defineProperty(ZoneAwareError, 'stackTraceLimit', { + get: function () { + return NativeError.stackTraceLimit; + }, + set: function (value) { + return NativeError.stackTraceLimit = value; + } + }); + } + if (NativeError.hasOwnProperty('captureStackTrace')) { + Object.defineProperty(ZoneAwareError, 'captureStackTrace', { + // add named function here because we need to remove this + // stack frame when prepareStackTrace below + value: function zoneCaptureStackTrace(targetObject, constructorOpt) { + NativeError.captureStackTrace(targetObject, constructorOpt); + } + }); + } + Object.defineProperty(ZoneAwareError, 'prepareStackTrace', { + get: function () { + return NativeError.prepareStackTrace; + }, + set: function (value) { + if (!value || typeof value !== 'function') { + return NativeError.prepareStackTrace = value; + } + return NativeError.prepareStackTrace = function (error, structuredStackTrace) { + // remove additional stack information from ZoneAwareError.captureStackTrace + if (structuredStackTrace) { + for (var i = 0; i < structuredStackTrace.length; i++) { + var st = structuredStackTrace[i]; + // remove the first function which name is zoneCaptureStackTrace + if (st.getFunctionName() === 'zoneCaptureStackTrace') { + structuredStackTrace.splice(i, 1); + break; + } + } + } + return value.apply(this, [error, structuredStackTrace]); + }; + } + }); + // Now we need to populet the `blacklistedStackFrames` as well as find the + // run/runGuraded/runTask frames. This is done by creating a detect zone and then threading + // the execution through all of the above methods so that we can look at the stack trace and + // find the frames of interest. + var detectZone = Zone.current.fork({ + name: 'detect', + onInvoke: function (parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source) { + // Here only so that it will show up in the stack frame so that it can be black listed. + return parentZoneDelegate.invoke(targetZone, delegate, applyThis, applyArgs, source); + }, + onHandleError: function (parentZD, current, target, error) { + if (error.originalStack && Error === ZoneAwareError) { + var frames_2 = error.originalStack.split(/\n/); + var runFrame = false, runGuardedFrame = false, runTaskFrame = false; + while (frames_2.length) { + var frame = frames_2.shift(); + // On safari it is possible to have stack frame with no line number. + // This check makes sure that we don't filter frames on name only (must have + // linenumber) + if (/:\d+:\d+/.test(frame)) { + // Get rid of the path so that we don't accidintely find function name in path. + // In chrome the seperator is `(` and `@` in FF and safari + // Chrome: at Zone.run (zone.js:100) + // Chrome: at Zone.run (http://localhost:9876/base/build/lib/zone.js:100:24) + // FireFox: Zone.prototype.run@http://localhost:9876/base/build/lib/zone.js:101:24 + // Safari: run@http://localhost:9876/base/build/lib/zone.js:101:24 + var fnName = frame.split('(')[0].split('@')[0]; + var frameType = FrameType.transition; + if (fnName.indexOf('ZoneAwareError') !== -1) { + zoneAwareFrame = frame; + } + if (fnName.indexOf('runGuarded') !== -1) { + runGuardedFrame = true; + } + else if (fnName.indexOf('runTask') !== -1) { + runTaskFrame = true; + } + else if (fnName.indexOf('run') !== -1) { + runFrame = true; + } + else { + frameType = FrameType.blackList; + } + blackListedStackFrames[frame] = frameType; + // Once we find all of the frames we can stop looking. + if (runFrame && runGuardedFrame && runTaskFrame) { + ZoneAwareError[stackRewrite] = true; + break; + } + } + } + } + return false; + } + }); + // carefully constructor a stack frame which contains all of the frames of interest which + // need to be detected and blacklisted. + var detectRunFn = function () { + detectZone.run(function () { + detectZone.runGuarded(function () { + throw new Error('blacklistStackFrames'); + }); + }); + }; + // Cause the error to extract the stack frames. + detectZone.runTask(detectZone.scheduleMacroTask('detect', detectRunFn, null, function () { return null; }, null)); + return global['Zone'] = Zone; +})(typeof window === 'object' && window || typeof self === 'object' && self || global); + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * Suppress closure compiler errors about unknown 'Zone' variable + * @fileoverview + * @suppress {undefinedVars} + */ +var zoneSymbol = function (n) { return "__zone_symbol__" + n; }; +var _global$1 = typeof window === 'object' && window || typeof self === 'object' && self || global; +function bindArguments(args, source) { + for (var i = args.length - 1; i >= 0; i--) { + if (typeof args[i] === 'function') { + args[i] = Zone.current.wrap(args[i], source + '_' + i); + } + } + return args; +} +function patchPrototype(prototype, fnNames) { + var source = prototype.constructor['name']; + var _loop_1 = function (i) { + var name_1 = fnNames[i]; + var delegate = prototype[name_1]; + if (delegate) { + prototype[name_1] = (function (delegate) { + return function () { + return delegate.apply(this, bindArguments(arguments, source + '.' + name_1)); + }; + })(delegate); + } + }; + for (var i = 0; i < fnNames.length; i++) { + _loop_1(i); + } +} +var isWebWorker = (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope); +var isNode = (!('nw' in _global$1) && typeof process !== 'undefined' && + {}.toString.call(process) === '[object process]'); +var isBrowser = !isNode && !isWebWorker && !!(typeof window !== 'undefined' && window['HTMLElement']); +function patchProperty(obj, prop) { + var desc = Object.getOwnPropertyDescriptor(obj, prop) || { enumerable: true, configurable: true }; + var originalDesc = Object.getOwnPropertyDescriptor(obj, 'original' + prop); + if (!originalDesc && desc.get) { + Object.defineProperty(obj, 'original' + prop, { enumerable: false, configurable: true, get: desc.get }); + } + // A property descriptor cannot have getter/setter and be writable + // deleting the writable and value properties avoids this error: + // + // TypeError: property descriptors must not specify a value or be writable when a + // getter or setter has been specified + delete desc.writable; + delete desc.value; + // substr(2) cuz 'onclick' -> 'click', etc + var eventName = prop.substr(2); + var _prop = '_' + prop; + desc.set = function (fn) { + if (this[_prop]) { + this.removeEventListener(eventName, this[_prop]); + } + if (typeof fn === 'function') { + var wrapFn = function (event) { + var result; + result = fn.apply(this, arguments); + if (result != undefined && !result) + event.preventDefault(); + }; + this[_prop] = wrapFn; + this.addEventListener(eventName, wrapFn, false); + } + else { + this[_prop] = null; + } + }; + // The getter would return undefined for unassigned properties but the default value of an + // unassigned property is null + desc.get = function () { + var r = this[_prop] || null; + // result will be null when use inline event attribute, + // such as + // because the onclick function is internal raw uncompiled handler + // the onclick will be evaluated when first time event was triggered or + // the property is accessed, https://github.com/angular/zone.js/issues/525 + // so we should use original native get to retrieve the handler + if (r === null) { + if (originalDesc && originalDesc.get) { + r = originalDesc.get.apply(this, arguments); + if (r) { + desc.set.apply(this, [r]); + if (typeof this['removeAttribute'] === 'function') { + this.removeAttribute(prop); + } + } + } + } + return this[_prop] || null; + }; + Object.defineProperty(obj, prop, desc); +} + +function patchOnProperties(obj, properties) { + var onProperties = []; + for (var prop in obj) { + if (prop.substr(0, 2) == 'on') { + onProperties.push(prop); + } + } + for (var j = 0; j < onProperties.length; j++) { + patchProperty(obj, onProperties[j]); + } + if (properties) { + for (var i = 0; i < properties.length; i++) { + patchProperty(obj, 'on' + properties[i]); + } + } +} + +var EVENT_TASKS = zoneSymbol('eventTasks'); +// For EventTarget +var ADD_EVENT_LISTENER = 'addEventListener'; +var REMOVE_EVENT_LISTENER = 'removeEventListener'; +function findExistingRegisteredTask(target, handler, name, capture, remove) { + var eventTasks = target[EVENT_TASKS]; + if (eventTasks) { + for (var i = 0; i < eventTasks.length; i++) { + var eventTask = eventTasks[i]; + var data = eventTask.data; + var listener = data.handler; + if ((data.handler === handler || listener.listener === handler) && + data.useCapturing === capture && data.eventName === name) { + if (remove) { + eventTasks.splice(i, 1); + } + return eventTask; + } + } + } + return null; +} +function findAllExistingRegisteredTasks(target, name, capture, remove) { + var eventTasks = target[EVENT_TASKS]; + if (eventTasks) { + var result = []; + for (var i = eventTasks.length - 1; i >= 0; i--) { + var eventTask = eventTasks[i]; + var data = eventTask.data; + if (data.eventName === name && data.useCapturing === capture) { + result.push(eventTask); + if (remove) { + eventTasks.splice(i, 1); + } + } + } + return result; + } + return null; +} +function attachRegisteredEvent(target, eventTask, isPrepend) { + var eventTasks = target[EVENT_TASKS]; + if (!eventTasks) { + eventTasks = target[EVENT_TASKS] = []; + } + if (isPrepend) { + eventTasks.unshift(eventTask); + } + else { + eventTasks.push(eventTask); + } +} +var defaultListenerMetaCreator = function (self, args) { + return { + useCapturing: args[2], + eventName: args[0], + handler: args[1], + target: self || _global$1, + name: args[0], + invokeAddFunc: function (addFnSymbol, delegate) { + if (delegate && delegate.invoke) { + return this.target[addFnSymbol](this.eventName, delegate.invoke, this.useCapturing); + } + else { + return this.target[addFnSymbol](this.eventName, delegate, this.useCapturing); + } + }, + invokeRemoveFunc: function (removeFnSymbol, delegate) { + if (delegate && delegate.invoke) { + return this.target[removeFnSymbol](this.eventName, delegate.invoke, this.useCapturing); + } + else { + return this.target[removeFnSymbol](this.eventName, delegate, this.useCapturing); + } + } + }; +}; +function makeZoneAwareAddListener(addFnName, removeFnName, useCapturingParam, allowDuplicates, isPrepend, metaCreator) { + if (useCapturingParam === void 0) { useCapturingParam = true; } + if (allowDuplicates === void 0) { allowDuplicates = false; } + if (isPrepend === void 0) { isPrepend = false; } + if (metaCreator === void 0) { metaCreator = defaultListenerMetaCreator; } + var addFnSymbol = zoneSymbol(addFnName); + var removeFnSymbol = zoneSymbol(removeFnName); + var defaultUseCapturing = useCapturingParam ? false : undefined; + function scheduleEventListener(eventTask) { + var meta = eventTask.data; + attachRegisteredEvent(meta.target, eventTask, isPrepend); + return meta.invokeAddFunc(addFnSymbol, eventTask); + } + function cancelEventListener(eventTask) { + var meta = eventTask.data; + findExistingRegisteredTask(meta.target, eventTask.invoke, meta.eventName, meta.useCapturing, true); + return meta.invokeRemoveFunc(removeFnSymbol, eventTask); + } + return function zoneAwareAddListener(self, args) { + var data = metaCreator(self, args); + data.useCapturing = data.useCapturing || defaultUseCapturing; + // - Inside a Web Worker, `this` is undefined, the context is `global` + // - When `addEventListener` is called on the global context in strict mode, `this` is undefined + // see https://github.com/angular/zone.js/issues/190 + var delegate = null; + if (typeof data.handler == 'function') { + delegate = data.handler; + } + else if (data.handler && data.handler.handleEvent) { + delegate = function (event) { return data.handler.handleEvent(event); }; + } + var validZoneHandler = false; + try { + // In cross site contexts (such as WebDriver frameworks like Selenium), + // accessing the handler object here will cause an exception to be thrown which + // will fail tests prematurely. + validZoneHandler = data.handler && data.handler.toString() === '[object FunctionWrapper]'; + } + catch (e) { + // Returning nothing here is fine, because objects in a cross-site context are unusable + return; + } + // Ignore special listeners of IE11 & Edge dev tools, see + // https://github.com/angular/zone.js/issues/150 + if (!delegate || validZoneHandler) { + return data.invokeAddFunc(addFnSymbol, data.handler); + } + if (!allowDuplicates) { + var eventTask = findExistingRegisteredTask(data.target, data.handler, data.eventName, data.useCapturing, false); + if (eventTask) { + // we already registered, so this will have noop. + return data.invokeAddFunc(addFnSymbol, eventTask); + } + } + var zone = Zone.current; + var source = data.target.constructor['name'] + '.' + addFnName + ':' + data.eventName; + zone.scheduleEventTask(source, delegate, data, scheduleEventListener, cancelEventListener); + }; +} +function makeZoneAwareRemoveListener(fnName, useCapturingParam, metaCreator) { + if (useCapturingParam === void 0) { useCapturingParam = true; } + if (metaCreator === void 0) { metaCreator = defaultListenerMetaCreator; } + var symbol = zoneSymbol(fnName); + var defaultUseCapturing = useCapturingParam ? false : undefined; + return function zoneAwareRemoveListener(self, args) { + var data = metaCreator(self, args); + data.useCapturing = data.useCapturing || defaultUseCapturing; + // - Inside a Web Worker, `this` is undefined, the context is `global` + // - When `addEventListener` is called on the global context in strict mode, `this` is undefined + // see https://github.com/angular/zone.js/issues/190 + var eventTask = findExistingRegisteredTask(data.target, data.handler, data.eventName, data.useCapturing, true); + if (eventTask) { + eventTask.zone.cancelTask(eventTask); + } + else { + data.invokeRemoveFunc(symbol, data.handler); + } + }; +} + + +var zoneAwareAddEventListener = makeZoneAwareAddListener(ADD_EVENT_LISTENER, REMOVE_EVENT_LISTENER); +var zoneAwareRemoveEventListener = makeZoneAwareRemoveListener(REMOVE_EVENT_LISTENER); +function patchEventTargetMethods(obj, addFnName, removeFnName, metaCreator) { + if (addFnName === void 0) { addFnName = ADD_EVENT_LISTENER; } + if (removeFnName === void 0) { removeFnName = REMOVE_EVENT_LISTENER; } + if (metaCreator === void 0) { metaCreator = defaultListenerMetaCreator; } + if (obj && obj[addFnName]) { + patchMethod(obj, addFnName, function () { return makeZoneAwareAddListener(addFnName, removeFnName, true, false, false, metaCreator); }); + patchMethod(obj, removeFnName, function () { return makeZoneAwareRemoveListener(removeFnName, true, metaCreator); }); + return true; + } + else { + return false; + } +} +var originalInstanceKey = zoneSymbol('originalInstance'); +// wrap some native API on `window` +function patchClass(className) { + var OriginalClass = _global$1[className]; + if (!OriginalClass) + return; + _global$1[className] = function () { + var a = bindArguments(arguments, className); + switch (a.length) { + case 0: + this[originalInstanceKey] = new OriginalClass(); + break; + case 1: + this[originalInstanceKey] = new OriginalClass(a[0]); + break; + case 2: + this[originalInstanceKey] = new OriginalClass(a[0], a[1]); + break; + case 3: + this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]); + break; + case 4: + this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]); + break; + default: + throw new Error('Arg list too long.'); + } + }; + var instance = new OriginalClass(function () { }); + var prop; + for (prop in instance) { + // https://bugs.webkit.org/show_bug.cgi?id=44721 + if (className === 'XMLHttpRequest' && prop === 'responseBlob') + continue; + (function (prop) { + if (typeof instance[prop] === 'function') { + _global$1[className].prototype[prop] = function () { + return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments); + }; + } + else { + Object.defineProperty(_global$1[className].prototype, prop, { + set: function (fn) { + if (typeof fn === 'function') { + this[originalInstanceKey][prop] = Zone.current.wrap(fn, className + '.' + prop); + } + else { + this[originalInstanceKey][prop] = fn; + } + }, + get: function () { + return this[originalInstanceKey][prop]; + } + }); + } + }(prop)); + } + for (prop in OriginalClass) { + if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) { + _global$1[className][prop] = OriginalClass[prop]; + } + } +} + +function createNamedFn(name, delegate) { + try { + return (Function('f', "return function " + name + "(){return f(this, arguments)}"))(delegate); + } + catch (e) { + // if we fail, we must be CSP, just return delegate. + return function () { + return delegate(this, arguments); + }; + } +} +function patchMethod(target, name, patchFn) { + var proto = target; + while (proto && Object.getOwnPropertyNames(proto).indexOf(name) === -1) { + proto = Object.getPrototypeOf(proto); + } + if (!proto && target[name]) { + // somehow we did not find it, but we can see it. This happens on IE for Window properties. + proto = target; + } + var delegateName = zoneSymbol(name); + var delegate; + if (proto && !(delegate = proto[delegateName])) { + delegate = proto[delegateName] = proto[name]; + proto[name] = createNamedFn(name, patchFn(delegate, delegateName, name)); + } + return delegate; +} +// TODO: support cancel task later if necessary + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +function patchTimer(window, setName, cancelName, nameSuffix) { + var setNative = null; + var clearNative = null; + setName += nameSuffix; + cancelName += nameSuffix; + var tasksByHandleId = {}; + function scheduleTask(task) { + var data = task.data; + data.args[0] = function () { + task.invoke.apply(this, arguments); + delete tasksByHandleId[data.handleId]; + }; + data.handleId = setNative.apply(window, data.args); + tasksByHandleId[data.handleId] = task; + return task; + } + function clearTask(task) { + delete tasksByHandleId[task.data.handleId]; + return clearNative(task.data.handleId); + } + setNative = + patchMethod(window, setName, function (delegate) { return function (self, args) { + if (typeof args[0] === 'function') { + var zone = Zone.current; + var options = { + handleId: null, + isPeriodic: nameSuffix === 'Interval', + delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 : null, + args: args + }; + var task = zone.scheduleMacroTask(setName, args[0], options, scheduleTask, clearTask); + if (!task) { + return task; + } + // Node.js must additionally support the ref and unref functions. + var handle = task.data.handleId; + if (handle.ref && handle.unref) { + task.ref = handle.ref.bind(handle); + task.unref = handle.unref.bind(handle); + } + return task; + } + else { + // cause an error by calling it directly. + return delegate.apply(window, args); + } + }; }); + clearNative = + patchMethod(window, cancelName, function (delegate) { return function (self, args) { + var task = typeof args[0] === 'number' ? tasksByHandleId[args[0]] : args[0]; + if (task && typeof task.type === 'string') { + if (task.cancelFn && task.data.isPeriodic || task.runCount === 0) { + // Do not cancel already canceled functions + task.zone.cancelTask(task); + } + } + else { + // cause an error by calling it directly. + delegate.apply(window, args); + } + }; }); +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/* + * This is necessary for Chrome and Chrome mobile, to enable + * things like redefining `createdCallback` on an element. + */ +var _defineProperty = Object[zoneSymbol('defineProperty')] = Object.defineProperty; +var _getOwnPropertyDescriptor = Object[zoneSymbol('getOwnPropertyDescriptor')] = + Object.getOwnPropertyDescriptor; +var _create = Object.create; +var unconfigurablesKey = zoneSymbol('unconfigurables'); +function propertyPatch() { + Object.defineProperty = function (obj, prop, desc) { + if (isUnconfigurable(obj, prop)) { + throw new TypeError('Cannot assign to read only property \'' + prop + '\' of ' + obj); + } + var originalConfigurableFlag = desc.configurable; + if (prop !== 'prototype') { + desc = rewriteDescriptor(obj, prop, desc); + } + return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag); + }; + Object.defineProperties = function (obj, props) { + Object.keys(props).forEach(function (prop) { + Object.defineProperty(obj, prop, props[prop]); + }); + return obj; + }; + Object.create = function (obj, proto) { + if (typeof proto === 'object' && !Object.isFrozen(proto)) { + Object.keys(proto).forEach(function (prop) { + proto[prop] = rewriteDescriptor(obj, prop, proto[prop]); + }); + } + return _create(obj, proto); + }; + Object.getOwnPropertyDescriptor = function (obj, prop) { + var desc = _getOwnPropertyDescriptor(obj, prop); + if (isUnconfigurable(obj, prop)) { + desc.configurable = false; + } + return desc; + }; +} + +function _redefineProperty(obj, prop, desc) { + var originalConfigurableFlag = desc.configurable; + desc = rewriteDescriptor(obj, prop, desc); + return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag); +} + +function isUnconfigurable(obj, prop) { + return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop]; +} +function rewriteDescriptor(obj, prop, desc) { + desc.configurable = true; + if (!desc.configurable) { + if (!obj[unconfigurablesKey]) { + _defineProperty(obj, unconfigurablesKey, { writable: true, value: {} }); + } + obj[unconfigurablesKey][prop] = true; + } + return desc; +} +function _tryDefineProperty(obj, prop, desc, originalConfigurableFlag) { + try { + return _defineProperty(obj, prop, desc); + } + catch (e) { + if (desc.configurable) { + // In case of errors, when the configurable flag was likely set by rewriteDescriptor(), let's + // retry with the original flag value + if (typeof originalConfigurableFlag == 'undefined') { + delete desc.configurable; + } + else { + desc.configurable = originalConfigurableFlag; + } + try { + return _defineProperty(obj, prop, desc); + } + catch (e) { + var descJson = null; + try { + descJson = JSON.stringify(desc); + } + catch (e) { + descJson = descJson.toString(); + } + console.log("Attempting to configure '" + prop + "' with descriptor '" + descJson + "' on object '" + obj + "' and got error, giving up: " + e); + } + } + else { + throw e; + } + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var WTF_ISSUE_555 = 'Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video'; +var NO_EVENT_TARGET = 'ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket' + .split(','); +var EVENT_TARGET = 'EventTarget'; +function eventTargetPatch(_global) { + var apis = []; + var isWtf = _global['wtf']; + if (isWtf) { + // Workaround for: https://github.com/google/tracing-framework/issues/555 + apis = WTF_ISSUE_555.split(',').map(function (v) { return 'HTML' + v + 'Element'; }).concat(NO_EVENT_TARGET); + } + else if (_global[EVENT_TARGET]) { + apis.push(EVENT_TARGET); + } + else { + // Note: EventTarget is not available in all browsers, + // if it's not available, we instead patch the APIs in the IDL that inherit from EventTarget + apis = NO_EVENT_TARGET; + } + for (var i = 0; i < apis.length; i++) { + var type = _global[apis[i]]; + patchEventTargetMethods(type && type.prototype); + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +// we have to patch the instance since the proto is non-configurable +function apply(_global) { + var WS = _global.WebSocket; + // On Safari window.EventTarget doesn't exist so need to patch WS add/removeEventListener + // On older Chrome, no need since EventTarget was already patched + if (!_global.EventTarget) { + patchEventTargetMethods(WS.prototype); + } + _global.WebSocket = function (a, b) { + var socket = arguments.length > 1 ? new WS(a, b) : new WS(a); + var proxySocket; + // Safari 7.0 has non-configurable own 'onmessage' and friends properties on the socket instance + var onmessageDesc = Object.getOwnPropertyDescriptor(socket, 'onmessage'); + if (onmessageDesc && onmessageDesc.configurable === false) { + proxySocket = Object.create(socket); + ['addEventListener', 'removeEventListener', 'send', 'close'].forEach(function (propName) { + proxySocket[propName] = function () { + return socket[propName].apply(socket, arguments); + }; + }); + } + else { + // we can patch the real socket + proxySocket = socket; + } + patchOnProperties(proxySocket, ['close', 'error', 'message', 'open']); + return proxySocket; + }; + for (var prop in WS) { + _global.WebSocket[prop] = WS[prop]; + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var eventNames = 'copy cut paste abort blur focus canplay canplaythrough change click contextmenu dblclick drag dragend dragenter dragleave dragover dragstart drop durationchange emptied ended input invalid keydown keypress keyup load loadeddata loadedmetadata loadstart message mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup pause play playing progress ratechange reset scroll seeked seeking select show stalled submit suspend timeupdate volumechange waiting mozfullscreenchange mozfullscreenerror mozpointerlockchange mozpointerlockerror error webglcontextrestored webglcontextlost webglcontextcreationerror' + .split(' '); +function propertyDescriptorPatch(_global) { + if (isNode) { + return; + } + var supportsWebSocket = typeof WebSocket !== 'undefined'; + if (canPatchViaPropertyDescriptor()) { + // for browsers that we can patch the descriptor: Chrome & Firefox + if (isBrowser) { + patchOnProperties(HTMLElement.prototype, eventNames); + } + patchOnProperties(XMLHttpRequest.prototype, null); + if (typeof IDBIndex !== 'undefined') { + patchOnProperties(IDBIndex.prototype, null); + patchOnProperties(IDBRequest.prototype, null); + patchOnProperties(IDBOpenDBRequest.prototype, null); + patchOnProperties(IDBDatabase.prototype, null); + patchOnProperties(IDBTransaction.prototype, null); + patchOnProperties(IDBCursor.prototype, null); + } + if (supportsWebSocket) { + patchOnProperties(WebSocket.prototype, null); + } + } + else { + // Safari, Android browsers (Jelly Bean) + patchViaCapturingAllTheEvents(); + patchClass('XMLHttpRequest'); + if (supportsWebSocket) { + apply(_global); + } + } +} +function canPatchViaPropertyDescriptor() { + if (isBrowser && !Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'onclick') && + typeof Element !== 'undefined') { + // WebKit https://bugs.webkit.org/show_bug.cgi?id=134364 + // IDL interface attributes are not configurable + var desc = Object.getOwnPropertyDescriptor(Element.prototype, 'onclick'); + if (desc && !desc.configurable) + return false; + } + var xhrDesc = Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype, 'onreadystatechange'); + // add enumerable and configurable here because in opera + // by default XMLHttpRequest.prototype.onreadystatechange is undefined + // without adding enumerable and configurable will cause onreadystatechange + // non-configurable + Object.defineProperty(XMLHttpRequest.prototype, 'onreadystatechange', { + enumerable: true, + configurable: true, + get: function () { + return true; + } + }); + var req = new XMLHttpRequest(); + var result = !!req.onreadystatechange; + // restore original desc + Object.defineProperty(XMLHttpRequest.prototype, 'onreadystatechange', xhrDesc || {}); + return result; +} + +var unboundKey = zoneSymbol('unbound'); +// Whenever any eventListener fires, we check the eventListener target and all parents +// for `onwhatever` properties and replace them with zone-bound functions +// - Chrome (for now) +function patchViaCapturingAllTheEvents() { + var _loop_1 = function (i) { + var property = eventNames[i]; + var onproperty = 'on' + property; + self.addEventListener(property, function (event) { + var elt = event.target, bound, source; + if (elt) { + source = elt.constructor['name'] + '.' + onproperty; + } + else { + source = 'unknown.' + onproperty; + } + while (elt) { + if (elt[onproperty] && !elt[onproperty][unboundKey]) { + bound = Zone.current.wrap(elt[onproperty], source); + bound[unboundKey] = elt[onproperty]; + elt[onproperty] = bound; + } + elt = elt.parentElement; + } + }, true); + }; + for (var i = 0; i < eventNames.length; i++) { + _loop_1(i); + } + +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +function registerElementPatch(_global) { + if (!isBrowser || !('registerElement' in _global.document)) { + return; + } + var _registerElement = document.registerElement; + var callbacks = ['createdCallback', 'attachedCallback', 'detachedCallback', 'attributeChangedCallback']; + document.registerElement = function (name, opts) { + if (opts && opts.prototype) { + callbacks.forEach(function (callback) { + var source = 'Document.registerElement::' + callback; + if (opts.prototype.hasOwnProperty(callback)) { + var descriptor = Object.getOwnPropertyDescriptor(opts.prototype, callback); + if (descriptor && descriptor.value) { + descriptor.value = Zone.current.wrap(descriptor.value, source); + _redefineProperty(opts.prototype, callback, descriptor); + } + else { + opts.prototype[callback] = Zone.current.wrap(opts.prototype[callback], source); + } + } + else if (opts.prototype[callback]) { + opts.prototype[callback] = Zone.current.wrap(opts.prototype[callback], source); + } + }); + } + return _registerElement.apply(document, [name, opts]); + }; +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var set = 'set'; +var clear = 'clear'; +var blockingMethods = ['alert', 'prompt', 'confirm']; +var _global = typeof window === 'object' && window || typeof self === 'object' && self || global; +patchTimer(_global, set, clear, 'Timeout'); +patchTimer(_global, set, clear, 'Interval'); +patchTimer(_global, set, clear, 'Immediate'); +patchTimer(_global, 'request', 'cancel', 'AnimationFrame'); +patchTimer(_global, 'mozRequest', 'mozCancel', 'AnimationFrame'); +patchTimer(_global, 'webkitRequest', 'webkitCancel', 'AnimationFrame'); +for (var i = 0; i < blockingMethods.length; i++) { + var name_1 = blockingMethods[i]; + patchMethod(_global, name_1, function (delegate, symbol, name) { + return function (s, args) { + return Zone.current.run(delegate, _global, args, name); + }; + }); +} +eventTargetPatch(_global); +propertyDescriptorPatch(_global); +patchClass('MutationObserver'); +patchClass('WebKitMutationObserver'); +patchClass('FileReader'); +propertyPatch(); +registerElementPatch(_global); +// Treat XMLHTTPRequest as a macrotask. +patchXHR(_global); +var XHR_TASK = zoneSymbol('xhrTask'); +var XHR_SYNC = zoneSymbol('xhrSync'); +var XHR_LISTENER = zoneSymbol('xhrListener'); +var XHR_SCHEDULED = zoneSymbol('xhrScheduled'); +function patchXHR(window) { + function findPendingTask(target) { + var pendingTask = target[XHR_TASK]; + return pendingTask; + } + function scheduleTask(task) { + self[XHR_SCHEDULED] = false; + var data = task.data; + // remove existing event listener + var listener = data.target[XHR_LISTENER]; + if (listener) { + data.target.removeEventListener('readystatechange', listener); + } + var newListener = data.target[XHR_LISTENER] = function () { + if (data.target.readyState === data.target.DONE) { + if (!data.aborted && self[XHR_SCHEDULED]) { + task.invoke(); + } + } + }; + data.target.addEventListener('readystatechange', newListener); + var storedTask = data.target[XHR_TASK]; + if (!storedTask) { + data.target[XHR_TASK] = task; + } + sendNative.apply(data.target, data.args); + self[XHR_SCHEDULED] = true; + return task; + } + function placeholderCallback() { } + function clearTask(task) { + var data = task.data; + // Note - ideally, we would call data.target.removeEventListener here, but it's too late + // to prevent it from firing. So instead, we store info for the event listener. + data.aborted = true; + return abortNative.apply(data.target, data.args); + } + var openNative = patchMethod(window.XMLHttpRequest.prototype, 'open', function () { return function (self, args) { + self[XHR_SYNC] = args[2] == false; + return openNative.apply(self, args); + }; }); + var sendNative = patchMethod(window.XMLHttpRequest.prototype, 'send', function () { return function (self, args) { + var zone = Zone.current; + if (self[XHR_SYNC]) { + // if the XHR is sync there is no task to schedule, just execute the code. + return sendNative.apply(self, args); + } + else { + var options = { target: self, isPeriodic: false, delay: null, args: args, aborted: false }; + return zone.scheduleMacroTask('XMLHttpRequest.send', placeholderCallback, options, scheduleTask, clearTask); + } + }; }); + var abortNative = patchMethod(window.XMLHttpRequest.prototype, 'abort', function (delegate) { return function (self, args) { + var task = findPendingTask(self); + if (task && typeof task.type == 'string') { + // If the XHR has already completed, do nothing. + // If the XHR has already been aborted, do nothing. + // Fix #569, call abort multiple times before done will cause + // macroTask task count be negative number + if (task.cancelFn == null || (task.data && task.data.aborted)) { + return; + } + task.zone.cancelTask(task); + } + // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no task + // to cancel. Do nothing. + }; }); +} +/// GEO_LOCATION +if (_global['navigator'] && _global['navigator'].geolocation) { + patchPrototype(_global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']); +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +}))); diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/zone.js.d.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/zone.js.d.ts new file mode 100644 index 00000000..c66bdaae --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/zone.js.d.ts @@ -0,0 +1,482 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * Zone is a mechanism for intercepting and keeping track of asynchronous work. + * + * A Zone is a global object which is configured with rules about how to intercept and keep track + * of the asynchronous callbacks. Zone has these responsibilities: + * + * 1. Intercept asynchronous task scheduling + * 2. Wrap callbacks for error-handling and zone tracking across async operations. + * 3. Provide a way to attach data to zones + * 4. Provide a context specific last frame error handling + * 5. (Intercept blocking methods) + * + * A zone by itself does not do anything, instead it relies on some other code to route existing + * platform API through it. (The zone library ships with code which monkey patches all of the + * browsers's asynchronous API and redirects them through the zone for interception.) + * + * In its simplest form a zone allows one to intercept the scheduling and calling of asynchronous + * operations, and execute additional code before as well as after the asynchronous task. The rules + * of interception are configured using [ZoneConfig]. There can be many different zone instances in + * a system, but only one zone is active at any given time which can be retrieved using + * [Zone#current]. + * + * + * + * ## Callback Wrapping + * + * An important aspect of the zones is that they should persist across asynchronous operations. To + * achieve this, when a future work is scheduled through async API, it is necessary to capture, and + * subsequently restore the current zone. For example if a code is running in zone `b` and it + * invokes `setTimeout` to scheduleTask work later, the `setTimeout` method needs to 1) capture the + * current zone and 2) wrap the `wrapCallback` in code which will restore the current zone `b` once + * the wrapCallback executes. In this way the rules which govern the current code are preserved in + * all future asynchronous tasks. There could be a different zone `c` which has different rules and + * is associated with different asynchronous tasks. As these tasks are processed, each asynchronous + * wrapCallback correctly restores the correct zone, as well as preserves the zone for future + * asynchronous callbacks. + * + * Example: Suppose a browser page consist of application code as well as third-party + * advertisement code. (These two code bases are independent, developed by different mutually + * unaware developers.) The application code may be interested in doing global error handling and + * so it configures the `app` zone to send all of the errors to the server for analysis, and then + * executes the application in the `app` zone. The advertising code is interested in the same + * error processing but it needs to send the errors to a different third-party. So it creates the + * `ads` zone with a different error handler. Now both advertising as well as application code + * create many asynchronous operations, but the [Zone] will ensure that all of the asynchronous + * operations created from the application code will execute in `app` zone with its error + * handler and all of the advertisement code will execute in the `ads` zone with its error handler. + * This will not only work for the async operations created directly, but also for all subsequent + * asynchronous operations. + * + * If you think of chain of asynchronous operations as a thread of execution (bit of a stretch) + * then [Zone#current] will act as a thread local variable. + * + * + * + * ## Asynchronous operation scheduling + * + * In addition to wrapping the callbacks to restore the zone, all operations which cause a + * scheduling of work for later are routed through the current zone which is allowed to intercept + * them by adding work before or after the wrapCallback as well as using different means of + * achieving the request. (Useful for unit testing, or tracking of requests). In some instances + * such as `setTimeout` the wrapping of the wrapCallback and scheduling is done in the same + * wrapCallback, but there are other examples such as `Promises` where the `then` wrapCallback is + * wrapped, but the execution of `then` in triggered by `Promise` scheduling `resolve` work. + * + * Fundamentally there are three kinds of tasks which can be scheduled: + * + * 1. [MicroTask] used for doing work right after the current task. This is non-cancelable which is + * guaranteed to run exactly once and immediately. + * 2. [MacroTask] used for doing work later. Such as `setTimeout`. This is typically cancelable + * which is guaranteed to execute at least once after some well understood delay. + * 3. [EventTask] used for listening on some future event. This may execute zero or more times, with + * an unknown delay. + * + * Each asynchronous API is modeled and routed through one of these APIs. + * + * + * ### [MicroTask] + * + * [MicroTask]s represent work which will be done in current VM turn as soon as possible, before VM + * yielding. + * + * + * ### [TimerTask] + * + * [TimerTask]s represent work which will be done after some delay. (Sometimes the delay is + * approximate such as on next available animation frame). Typically these methods include: + * `setTimeout`, `setImmediate`, `setInterval`, `requestAnimationFrame`, and all browser specif + * variants. + * + * + * ### [EventTask] + * + * [EventTask]s represent a request to create a listener on an event. Unlike the other task + * events may never be executed, but typically execute more than once. There is no queue of + * events, rather their callbacks are unpredictable both in order and time. + * + * + * ## Global Error Handling + * + * + * ## Composability + * + * Zones can be composed together through [Zone.fork()]. A child zone may create its own set of + * rules. A child zone is expected to either: + * + * 1. Delegate the interception to a parent zone, and optionally add before and after wrapCallback + * hook.s + * 2) Or process the request itself without delegation. + * + * Composability allows zones to keep their concerns clean. For example a top most zone may chose + * to handle error handling, while child zones may chose to do user action tracking. + * + * + * ## Root Zone + * + * At the start the browser will run in a special root zone, which is configure to behave exactly + * like the platform, making any existing code which is not-zone aware behave as expected. All + * zones are children of the root zone. + * + */ +interface Zone { + /** + * + * @returns {Zone} The parent Zone. + */ + parent: Zone; + /** + * @returns {string} The Zone name (useful for debugging) + */ + name: string; + /** + * Returns a value associated with the `key`. + * + * If the current zone does not have a key, the request is delegated to the parent zone. Use + * [ZoneSpec.properties] to configure the set of properties associated with the current zone. + * + * @param key The key to retrieve. + * @returns {any} The value for the key, or `undefined` if not found. + */ + get(key: string): any; + /** + * Returns a Zone which defines a `key`. + * + * Recursively search the parent Zone until a Zone which has a property `key` is found. + * + * @param key The key to use for identification of the returned zone. + * @returns {Zone} The Zone which defines the `key`, `null` if not found. + */ + getZoneWith(key: string): Zone; + /** + * Used to create a child zone. + * + * @param zoneSpec A set of rules which the child zone should follow. + * @returns {Zone} A new child zone. + */ + fork(zoneSpec: ZoneSpec): Zone; + /** + * Wraps a callback function in a new function which will properly restore the current zone upon + * invocation. + * + * The wrapped function will properly forward `this` as well as `arguments` to the `callback`. + * + * Before the function is wrapped the zone can intercept the `callback` by declaring + * [ZoneSpec.onIntercept]. + * + * @param callback the function which will be wrapped in the zone. + * @param source A unique debug location of the API being wrapped. + * @returns {function(): *} A function which will invoke the `callback` through [Zone.runGuarded]. + */ + wrap(callback: F, source: string): F; + /** + * Invokes a function in a given zone. + * + * The invocation of `callback` can be intercepted be declaring [ZoneSpec.onInvoke]. + * + * @param callback The function to invoke. + * @param applyThis + * @param applyArgs + * @param source A unique debug location of the API being invoked. + * @returns {any} Value from the `callback` function. + */ + run(callback: Function, applyThis?: any, applyArgs?: any[], source?: string): T; + /** + * Invokes a function in a given zone and catches any exceptions. + * + * Any exceptions thrown will be forwarded to [Zone.HandleError]. + * + * The invocation of `callback` can be intercepted be declaring [ZoneSpec.onInvoke]. The + * handling of exceptions can intercepted by declaring [ZoneSpec.handleError]. + * + * @param callback The function to invoke. + * @param applyThis + * @param applyArgs + * @param source A unique debug location of the API being invoked. + * @returns {any} Value from the `callback` function. + */ + runGuarded(callback: Function, applyThis?: any, applyArgs?: any[], source?: string): T; + /** + * Execute the Task by restoring the [Zone.currentTask] in the Task's zone. + * + * @param callback + * @param applyThis + * @param applyArgs + * @returns {*} + */ + runTask(task: Task, applyThis?: any, applyArgs?: any): any; + scheduleMicroTask(source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void): MicroTask; + scheduleMacroTask(source: string, callback: Function, data: TaskData, customSchedule: (task: Task) => void, customCancel: (task: Task) => void): MacroTask; + scheduleEventTask(source: string, callback: Function, data: TaskData, customSchedule: (task: Task) => void, customCancel: (task: Task) => void): EventTask; + /** + * Allows the zone to intercept canceling of scheduled Task. + * + * The interception is configured using [ZoneSpec.onCancelTask]. The default canceler invokes + * the [Task.cancelFn]. + * + * @param task + * @returns {any} + */ + cancelTask(task: Task): any; +} +interface ZoneType { + /** + * @returns {Zone} Returns the current [Zone]. Returns the current zone. The only way to change + * the current zone is by invoking a run() method, which will update the current zone for the + * duration of the run method callback. + */ + current: Zone; + /** + * @returns {Task} The task associated with the current execution. + */ + currentTask: Task; + /** + * Verify that Zone has been correctly patched. Specifically that Promise is zone aware. + */ + assertZonePatched(): any; +} +/** + * Provides a way to configure the interception of zone events. + * + * Only the `name` property is required (all other are optional). + */ +interface ZoneSpec { + /** + * The name of the zone. Usefull when debugging Zones. + */ + name: string; + /** + * A set of properties to be associated with Zone. Use [Zone.get] to retrive them. + */ + properties?: { + [key: string]: any; + }; + /** + * Allows the interception of zone forking. + * + * When the zone is being forked, the request is forwarded to this method for interception. + * + * @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation. + * @param currentZone The current [Zone] where the current interceptor has beed declared. + * @param targetZone The [Zone] which originally received the request. + * @param zoneSpec The argument passed into the `fork` method. + */ + onFork?: (parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, zoneSpec: ZoneSpec) => Zone; + /** + * Allows interception of the wrapping of the callback. + * + * @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation. + * @param currentZone The current [Zone] where the current interceptor has beed declared. + * @param targetZone The [Zone] which originally received the request. + * @param delegate The argument passed into the `warp` method. + * @param source The argument passed into the `warp` method. + */ + onIntercept?: (parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, delegate: Function, source: string) => Function; + /** + * Allows interception of the callback invocation. + * + * @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation. + * @param currentZone The current [Zone] where the current interceptor has beed declared. + * @param targetZone The [Zone] which originally received the request. + * @param delegate The argument passed into the `run` method. + * @param applyThis The argument passed into the `run` method. + * @param applyArgs The argument passed into the `run` method. + * @param source The argument passed into the `run` method. + */ + onInvoke?: (parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, delegate: Function, applyThis: any, applyArgs: any[], source: string) => any; + /** + * Allows interception of the error handling. + * + * @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation. + * @param currentZone The current [Zone] where the current interceptor has beed declared. + * @param targetZone The [Zone] which originally received the request. + * @param error The argument passed into the `handleError` method. + */ + onHandleError?: (parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, error: any) => boolean; + /** + * Allows interception of task scheduling. + * + * @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation. + * @param currentZone The current [Zone] where the current interceptor has beed declared. + * @param targetZone The [Zone] which originally received the request. + * @param task The argument passed into the `scheduleTask` method. + */ + onScheduleTask?: (parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, task: Task) => Task; + onInvokeTask?: (parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, task: Task, applyThis: any, applyArgs: any) => any; + /** + * Allows interception of task cancelation. + * + * @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation. + * @param currentZone The current [Zone] where the current interceptor has beed declared. + * @param targetZone The [Zone] which originally received the request. + * @param task The argument passed into the `cancelTask` method. + */ + onCancelTask?: (parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, task: Task) => any; + /** + * Notifies of changes to the task queue empty status. + * + * @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation. + * @param currentZone The current [Zone] where the current interceptor has beed declared. + * @param targetZone The [Zone] which originally received the request. + * @param isEmpty + */ + onHasTask?: (delegate: ZoneDelegate, current: Zone, target: Zone, hasTaskState: HasTaskState) => void; +} +/** + * A delegate when intercepting zone operations. + * + * A ZoneDelegate is needed because a child zone can't simply invoke a method on a parent zone. For + * example a child zone wrap can't just call parent zone wrap. Doing so would create a callback + * which is bound to the parent zone. What we are interested is intercepting the callback before it + * is bound to any zone. Furthermore, we also need to pass the targetZone (zone which received the + * original request) to the delegate. + * + * The ZoneDelegate methods mirror those of Zone with an addition of extra targetZone argument in + * the method signature. (The original Zone which received the request.) Some methods are renamed + * to prevent confusion, because they have slightly different semantics and arguments. + * + * - `wrap` => `intercept`: The `wrap` method delegates to `intercept`. The `wrap` method returns + * a callback which will run in a given zone, where as intercept allows wrapping the callback + * so that additional code can be run before and after, but does not associated the callback + * with the zone. + * - `run` => `invoke`: The `run` method delegates to `invoke` to perform the actual execution of + * the callback. The `run` method switches to new zone; saves and restores the `Zone.current`; + * and optionally performs error handling. The invoke is not responsible for error handling, + * or zone management. + * + * Not every method is usually overwritten in the child zone, for this reason the ZoneDelegate + * stores the closest zone which overwrites this behavior along with the closest ZoneSpec. + * + * NOTE: We have tried to make this API analogous to Event bubbling with target and current + * properties. + * + * Note: The ZoneDelegate treats ZoneSpec as class. This allows the ZoneSpec to use its `this` to + * store internal state. + */ +interface ZoneDelegate { + zone: Zone; + fork(targetZone: Zone, zoneSpec: ZoneSpec): Zone; + intercept(targetZone: Zone, callback: Function, source: string): Function; + invoke(targetZone: Zone, callback: Function, applyThis: any, applyArgs: any[], source: string): any; + handleError(targetZone: Zone, error: any): boolean; + scheduleTask(targetZone: Zone, task: Task): Task; + invokeTask(targetZone: Zone, task: Task, applyThis: any, applyArgs: any): any; + cancelTask(targetZone: Zone, task: Task): any; + hasTask(targetZone: Zone, isEmpty: HasTaskState): void; +} +declare type HasTaskState = { + microTask: boolean; + macroTask: boolean; + eventTask: boolean; + change: TaskType; +}; +/** + * Task type: `microTask`, `macroTask`, `eventTask`. + */ +declare type TaskType = string; +/** + */ +interface TaskData { + /** + * A periodic [MacroTask] is such which get automatically rescheduled after it is executed. + */ + isPeriodic?: boolean; + /** + * Delay in milliseconds when the Task will run. + */ + delay?: number; + /** + * identifier returned by the native setTimeout. + */ + handleId?: number; +} +/** + * Represents work which is executed with a clean stack. + * + * Tasks are used in Zones to mark work which is performed on clean stack frame. There are three + * kinds of task. [MicroTask], [MacroTask], and [EventTask]. + * + * A JS VM can be modeled as a [MicroTask] queue, [MacroTask] queue, and [EventTask] set. + * + * - [MicroTask] queue represents a set of tasks which are executing right after the current stack + * frame becomes clean and before a VM yield. All [MicroTask]s execute in order of insertion + * before VM yield and the next [MacroTask] is executed. + * - [MacroTask] queue represents a set of tasks which are executed one at a time after each VM + * yield. The queue is order by time, and insertions can happen in any location. + * - [EventTask] is a set of tasks which can at any time be inserted to the end of the [MacroTask] + * queue. This happens when the event fires. + * + */ +interface Task { + /** + * Task type: `microTask`, `macroTask`, `eventTask`. + */ + type: TaskType; + /** + * Debug string representing the API which requested the scheduling of the task. + */ + source: string; + /** + * The Function to be used by the VM on entering the [Task]. This function will delegate to + * [Zone.runTask] and delegate to `callback`. + */ + invoke: Function; + /** + * Function which needs to be executed by the Task after the [Zone.currentTask] has been set to + * the current task. + */ + callback: Function; + /** + * Task specific options associated with the current task. This is passed to the `scheduleFn`. + */ + data: TaskData; + /** + * Represents the default work which needs to be done to schedule the Task by the VM. + * + * A zone may chose to intercept this function and perform its own scheduling. + */ + scheduleFn: (task: Task) => void; + /** + * Represents the default work which needs to be done to un-schedule the Task from the VM. Not all + * Tasks are cancelable, and therefore this method is optional. + * + * A zone may chose to intercept this function and perform its own scheduling. + */ + cancelFn: (task: Task) => void; + /** + * @type {Zone} The zone which will be used to invoke the `callback`. The Zone is captured + * at the time of Task creation. + */ + zone: Zone; + /** + * Number of times the task has been executed, or -1 if canceled. + */ + runCount: number; +} +interface MicroTask extends Task { +} +interface MacroTask extends Task { +} +interface EventTask extends Task { +} +/** + * Extend the Error with additional fields for rewritten stack frames + */ +interface Error { + /** + * Stack trace where extra frames have been removed and zone names added. + */ + zoneAwareStack?: string; + /** + * Original stack trace with no modiffications + */ + originalStack?: string; +} +declare const Zone: ZoneType; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/zone.min.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/zone.min.js new file mode 100644 index 00000000..3c69b38f --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/dist/zone.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t():"function"==typeof define&&define.amd?define(t):t()}(this,function(){"use strict";function e(e,t){for(var n=e.length-1;n>=0;n--)"function"==typeof e[n]&&(e[n]=Zone.current.wrap(e[n],t+"_"+n));return e}function t(t,n){for(var r=t.constructor.name,o=function(o){var a=n[o],i=t[a];i&&(t[a]=function(t){return function(){return t.apply(this,e(arguments,r+"."+a))}}(i))},a=0;a1?new t(e,n):new t(e),i=Object.getOwnPropertyDescriptor(a,"onmessage");return i&&i.configurable===!1?(o=Object.create(a),["addEventListener","removeEventListener","send","close"].forEach(function(e){o[e]=function(){return a[e].apply(a,arguments)}})):o=a,r(o,["close","error","message","open"]),o};for(var n in t)e.WebSocket[n]=t[n]}function m(e){if(!P){var t="undefined"!=typeof WebSocket;T()?(j&&r(HTMLElement.prototype,B),r(XMLHttpRequest.prototype,null),"undefined"!=typeof IDBIndex&&(r(IDBIndex.prototype,null),r(IDBRequest.prototype,null),r(IDBOpenDBRequest.prototype,null),r(IDBDatabase.prototype,null),r(IDBTransaction.prototype,null),r(IDBCursor.prototype,null)),t&&r(WebSocket.prototype,null)):(w(),u("XMLHttpRequest"),t&&b(e))}}function T(){if(j&&!Object.getOwnPropertyDescriptor(HTMLElement.prototype,"onclick")&&"undefined"!=typeof Element){var e=Object.getOwnPropertyDescriptor(Element.prototype,"onclick");if(e&&!e.configurable)return!1}var t=Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype,"onreadystatechange");Object.defineProperty(XMLHttpRequest.prototype,"onreadystatechange",{enumerable:!0,configurable:!0,get:function(){return!0}});var n=new XMLHttpRequest,r=!!n.onreadystatechange;return Object.defineProperty(XMLHttpRequest.prototype,"onreadystatechange",t||{}),r}function w(){for(var e=function(e){var t=B[e],n="on"+t;self.addEventListener(t,function(e){var t,r,o=e.target;for(r=o?o.constructor.name+"."+n:"unknown."+n;o;)o[n]&&!o[n][N]&&(t=Zone.current.wrap(o[n],r),t[N]=o[n],o[n]=t),o=o.parentElement},!0)},t=0;t "+r.zone.name+"]",r=r.parent):r=null:n[o]+=" ["+r.zone.name+"]"}}e.stack=e.zoneAwareStack=n.join("\n")}return Object.defineProperties(this,K(Object.getPrototypeOf(this))),this}if(e.Zone)throw new Error("Zone already loaded.");var v=function(){function t(e,t){this._properties=null,this._parent=e,this._name=t?t.name||"unnamed":"",this._properties=t&&t.properties||{},this._zoneDelegate=new k(this,this._parent&&this._parent._zoneDelegate,t)}return t.assertZonePatched=function(){if(e.Promise!==F)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")},Object.defineProperty(t,"current",{get:function(){return w.zone},enumerable:!0,configurable:!0}),Object.defineProperty(t,"currentTask",{get:function(){return _},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0}),t.prototype.get=function(e){var t=this.getZoneWith(e);if(t)return t._properties[e]},t.prototype.getZoneWith=function(e){for(var t=this;t;){if(t._properties.hasOwnProperty(e))return t;t=t._parent}return null},t.prototype.fork=function(e){if(!e)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,e)},t.prototype.wrap=function(e,t){if("function"!=typeof e)throw new Error("Expecting function got: "+e);var n=this._zoneDelegate.intercept(this,e,t),r=this;return function(){return r.runGuarded(n,this,arguments,t)}},t.prototype.run=function(e,t,n,r){void 0===t&&(t=null),void 0===n&&(n=null),void 0===r&&(r=null),w=new y(w,this);try{return this._zoneDelegate.invoke(this,e,t,n,r)}finally{w=w.parent}},t.prototype.runGuarded=function(e,t,n,r){void 0===t&&(t=null),void 0===n&&(n=null),void 0===r&&(r=null),w=new y(w,this);try{try{return this._zoneDelegate.invoke(this,e,t,n,r)}catch(o){if(this._zoneDelegate.handleError(this,o))throw o}}finally{w=w.parent}},t.prototype.runTask=function(e,t,n){if(e.runCount++,e.zone!=this)throw new Error("A task can only be run in the zone which created it! (Creation: "+e.zone.name+"; Execution: "+this.name+")");var r=_;_=e,w=new y(w,this);try{"macroTask"==e.type&&e.data&&!e.data.isPeriodic&&(e.cancelFn=null);try{return this._zoneDelegate.invokeTask(this,e,t,n)}catch(o){if(this._zoneDelegate.handleError(this,o))throw o}}finally{w=w.parent,_=r}},t.prototype.scheduleMicroTask=function(e,t,n,r){return this._zoneDelegate.scheduleTask(this,new g("microTask",this,e,t,n,r,null))},t.prototype.scheduleMacroTask=function(e,t,n,r,o){return this._zoneDelegate.scheduleTask(this,new g("macroTask",this,e,t,n,r,o))},t.prototype.scheduleEventTask=function(e,t,n,r,o){return this._zoneDelegate.scheduleTask(this,new g("eventTask",this,e,t,n,r,o))},t.prototype.cancelTask=function(e){var t=this._zoneDelegate.cancelTask(this,e);return e.runCount=-1,e.cancelFn=null,t},t}();v.__symbol__=t;var k=function(){function e(e,t,n){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=e,this._parentDelegate=t,this._forkZS=n&&(n&&n.onFork?n:t._forkZS),this._forkDlgt=n&&(n.onFork?t:t._forkDlgt),this._forkCurrZone=n&&(n.onFork?this.zone:t.zone),this._interceptZS=n&&(n.onIntercept?n:t._interceptZS),this._interceptDlgt=n&&(n.onIntercept?t:t._interceptDlgt),this._interceptCurrZone=n&&(n.onIntercept?this.zone:t.zone),this._invokeZS=n&&(n.onInvoke?n:t._invokeZS),this._invokeDlgt=n&&(n.onInvoke?t:t._invokeDlgt),this._invokeCurrZone=n&&(n.onInvoke?this.zone:t.zone),this._handleErrorZS=n&&(n.onHandleError?n:t._handleErrorZS),this._handleErrorDlgt=n&&(n.onHandleError?t:t._handleErrorDlgt),this._handleErrorCurrZone=n&&(n.onHandleError?this.zone:t.zone),this._scheduleTaskZS=n&&(n.onScheduleTask?n:t._scheduleTaskZS),this._scheduleTaskDlgt=n&&(n.onScheduleTask?t:t._scheduleTaskDlgt),this._scheduleTaskCurrZone=n&&(n.onScheduleTask?this.zone:t.zone),this._invokeTaskZS=n&&(n.onInvokeTask?n:t._invokeTaskZS),this._invokeTaskDlgt=n&&(n.onInvokeTask?t:t._invokeTaskDlgt),this._invokeTaskCurrZone=n&&(n.onInvokeTask?this.zone:t.zone),this._cancelTaskZS=n&&(n.onCancelTask?n:t._cancelTaskZS),this._cancelTaskDlgt=n&&(n.onCancelTask?t:t._cancelTaskDlgt),this._cancelTaskCurrZone=n&&(n.onCancelTask?this.zone:t.zone),this._hasTaskZS=n&&(n.onHasTask?n:t._hasTaskZS),this._hasTaskDlgt=n&&(n.onHasTask?t:t._hasTaskDlgt),this._hasTaskCurrZone=n&&(n.onHasTask?this.zone:t.zone)}return e.prototype.fork=function(e,t){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,e,t):new v(e,t)},e.prototype.intercept=function(e,t,n){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,e,t,n):t},e.prototype.invoke=function(e,t,n,r,o){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,e,t,n,r,o):t.apply(n,r)},e.prototype.handleError=function(e,t){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,e,t)},e.prototype.scheduleTask=function(e,t){try{if(this._scheduleTaskZS)return this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,e,t);if(t.scheduleFn)t.scheduleFn(t);else{if("microTask"!=t.type)throw new Error("Task is missing scheduleFn.");r(t)}return t}finally{e==this.zone&&this._updateTaskCount(t.type,1)}},e.prototype.invokeTask=function(e,t,n,r){try{return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,e,t,n,r):t.callback.apply(n,r)}finally{e!=this.zone||"eventTask"==t.type||t.data&&t.data.isPeriodic||this._updateTaskCount(t.type,-1)}},e.prototype.cancelTask=function(e,t){var n;if(this._cancelTaskZS)n=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,e,t);else{if(!t.cancelFn)throw new Error("Task does not support cancellation, or is already canceled.");n=t.cancelFn(t)}return e==this.zone&&this._updateTaskCount(t.type,-1),n},e.prototype.hasTask=function(e,t){return this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,e,t)},e.prototype._updateTaskCount=function(e,t){var n=this._taskCounts,r=n[e],o=n[e]=r+t;if(o<0)throw new Error("More tasks executed then were scheduled.");if(0==r||0==o){var a={microTask:n.microTask>0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:e};try{this.hasTask(this.zone,a)}finally{this._parentDelegate&&this._parentDelegate._updateTaskCount(e,t)}}},e}(),g=function(){function e(e,t,n,r,o,i,s){this.runCount=0,this.type=e,this.zone=t,this.source=n,this.data=o,this.scheduleFn=i,this.cancelFn=s,this.callback=r;var c=this;this.invoke=function(){D++;try{return t.runTask(c,this,arguments)}finally{1==D&&a(),D--}}}return e.prototype.toString=function(){return this.data&&"undefined"!=typeof this.data.handleId?this.data.handleId:Object.prototype.toString.call(this)},e.prototype.toJSON=function(){return{type:this.type,source:this.source,data:this.data,zone:this.zone.name,invoke:this.invoke,scheduleFn:this.scheduleFn,cancelFn:this.cancelFn,runCount:this.runCount,callback:this.callback}},e}(),y=function(){function e(e,t){this.parent=e,this.zone=t}return e}(),b=t("setTimeout"),m=t("Promise"),T=t("then"),w=new y(null,new v(null,null)),_=null,S=[],O=!1,E=[],D=0,P=t("state"),j=t("value"),Z="Promise.then",z=null,C=!0,I=!1,L=0,F=function(){function e(t){var n=this;if(!(n instanceof e))throw new Error("Must be an instanceof Promise.");n[P]=z,n[j]=[];try{t&&t(u(n,C),u(n,I))}catch(r){l(n,!1,r)}}return e.toString=function(){return"function ZoneAwarePromise() { [native code] }"},e.resolve=function(e){return l(new this(null),C,e)},e.reject=function(e){return l(new this(null),I,e)},e.race=function(e){function t(e){a&&(a=r(e))}function n(e){a&&(a=o(e))}for(var r,o,a=new this(function(e,t){n=[e,t],r=n[0],o=n[1];var n}),s=0,c=e;s { + return function(s: any, args: any[]) { + return Zone.current.run(delegate, _global, args, name); + }; + }); +} + +eventTargetPatch(_global); +propertyDescriptorPatch(_global); +patchClass('MutationObserver'); +patchClass('WebKitMutationObserver'); +patchClass('FileReader'); +propertyPatch(); +registerElementPatch(_global); + +// Treat XMLHTTPRequest as a macrotask. +patchXHR(_global); + +const XHR_TASK = zoneSymbol('xhrTask'); +const XHR_SYNC = zoneSymbol('xhrSync'); +const XHR_LISTENER = zoneSymbol('xhrListener'); +const XHR_SCHEDULED = zoneSymbol('xhrScheduled'); + +interface XHROptions extends TaskData { + target: any; + args: any[]; + aborted: boolean; +} + +function patchXHR(window: any) { + function findPendingTask(target: any) { + const pendingTask: Task = target[XHR_TASK]; + return pendingTask; + } + + function scheduleTask(task: Task) { + self[XHR_SCHEDULED] = false; + const data = task.data; + // remove existing event listener + const listener = data.target[XHR_LISTENER]; + if (listener) { + data.target.removeEventListener('readystatechange', listener); + } + const newListener = data.target[XHR_LISTENER] = () => { + if (data.target.readyState === data.target.DONE) { + if (!data.aborted && self[XHR_SCHEDULED]) { + task.invoke(); + } + } + }; + data.target.addEventListener('readystatechange', newListener); + + const storedTask: Task = data.target[XHR_TASK]; + if (!storedTask) { + data.target[XHR_TASK] = task; + } + sendNative.apply(data.target, data.args); + self[XHR_SCHEDULED] = true; + return task; + } + + function placeholderCallback() {} + + function clearTask(task: Task) { + const data = task.data; + // Note - ideally, we would call data.target.removeEventListener here, but it's too late + // to prevent it from firing. So instead, we store info for the event listener. + data.aborted = true; + return abortNative.apply(data.target, data.args); + } + + const openNative = + patchMethod(window.XMLHttpRequest.prototype, 'open', () => function(self: any, args: any[]) { + self[XHR_SYNC] = args[2] == false; + return openNative.apply(self, args); + }); + + const sendNative = + patchMethod(window.XMLHttpRequest.prototype, 'send', () => function(self: any, args: any[]) { + const zone = Zone.current; + if (self[XHR_SYNC]) { + // if the XHR is sync there is no task to schedule, just execute the code. + return sendNative.apply(self, args); + } else { + const options: XHROptions = + {target: self, isPeriodic: false, delay: null, args: args, aborted: false}; + return zone.scheduleMacroTask( + 'XMLHttpRequest.send', placeholderCallback, options, scheduleTask, clearTask); + } + }); + + const abortNative = patchMethod( + window.XMLHttpRequest.prototype, 'abort', + (delegate: Function) => function(self: any, args: any[]) { + const task: Task = findPendingTask(self); + if (task && typeof task.type == 'string') { + // If the XHR has already completed, do nothing. + // If the XHR has already been aborted, do nothing. + // Fix #569, call abort multiple times before done will cause + // macroTask task count be negative number + if (task.cancelFn == null || (task.data && (task.data).aborted)) { + return; + } + task.zone.cancelTask(task); + } + // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no task + // to cancel. Do nothing. + }); +} + +/// GEO_LOCATION +if (_global['navigator'] && _global['navigator'].geolocation) { + patchPrototype(_global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']); +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/define-property.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/define-property.ts new file mode 100644 index 00000000..49761ded --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/define-property.ts @@ -0,0 +1,107 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +import {zoneSymbol} from '../common/utils'; +/* + * This is necessary for Chrome and Chrome mobile, to enable + * things like redefining `createdCallback` on an element. + */ + +const _defineProperty = Object[zoneSymbol('defineProperty')] = Object.defineProperty; +const _getOwnPropertyDescriptor = Object[zoneSymbol('getOwnPropertyDescriptor')] = + Object.getOwnPropertyDescriptor; +const _create = Object.create; +const unconfigurablesKey = zoneSymbol('unconfigurables'); + +export function propertyPatch() { + Object.defineProperty = function(obj, prop, desc) { + if (isUnconfigurable(obj, prop)) { + throw new TypeError('Cannot assign to read only property \'' + prop + '\' of ' + obj); + } + const originalConfigurableFlag = desc.configurable; + if (prop !== 'prototype') { + desc = rewriteDescriptor(obj, prop, desc); + } + return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag); + }; + + Object.defineProperties = function(obj, props) { + Object.keys(props).forEach(function(prop) { + Object.defineProperty(obj, prop, props[prop]); + }); + return obj; + }; + + Object.create = function(obj, proto) { + if (typeof proto === 'object' && !Object.isFrozen(proto)) { + Object.keys(proto).forEach(function(prop) { + proto[prop] = rewriteDescriptor(obj, prop, proto[prop]); + }); + } + return _create(obj, proto); + }; + + Object.getOwnPropertyDescriptor = function(obj, prop) { + const desc = _getOwnPropertyDescriptor(obj, prop); + if (isUnconfigurable(obj, prop)) { + desc.configurable = false; + } + return desc; + }; +}; + +export function _redefineProperty(obj, prop, desc) { + const originalConfigurableFlag = desc.configurable; + desc = rewriteDescriptor(obj, prop, desc); + return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag); +}; + +function isUnconfigurable(obj, prop) { + return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop]; +} + +function rewriteDescriptor(obj, prop, desc) { + desc.configurable = true; + if (!desc.configurable) { + if (!obj[unconfigurablesKey]) { + _defineProperty(obj, unconfigurablesKey, {writable: true, value: {}}); + } + obj[unconfigurablesKey][prop] = true; + } + return desc; +} + +function _tryDefineProperty(obj, prop, desc, originalConfigurableFlag) { + try { + return _defineProperty(obj, prop, desc); + } catch (e) { + if (desc.configurable) { + // In case of errors, when the configurable flag was likely set by rewriteDescriptor(), let's + // retry with the original flag value + if (typeof originalConfigurableFlag == 'undefined') { + delete desc.configurable; + } else { + desc.configurable = originalConfigurableFlag; + } + try { + return _defineProperty(obj, prop, desc); + } catch (e) { + let descJson: string = null; + try { + descJson = JSON.stringify(desc); + } catch (e) { + descJson = descJson.toString(); + } + console.log(`Attempting to configure '${prop}' with descriptor '${descJson + }' on object '${obj}' and got error, giving up: ${e}`); + } + } else { + throw e; + } + } +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/event-target.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/event-target.ts new file mode 100644 index 00000000..1927c0e4 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/event-target.ts @@ -0,0 +1,36 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +import {patchEventTargetMethods} from '../common/utils'; + +const WTF_ISSUE_555 = + 'Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video'; +const NO_EVENT_TARGET = + 'ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket' + .split(','); +const EVENT_TARGET = 'EventTarget'; + +export function eventTargetPatch(_global) { + let apis = []; + const isWtf = _global['wtf']; + if (isWtf) { + // Workaround for: https://github.com/google/tracing-framework/issues/555 + apis = WTF_ISSUE_555.split(',').map((v) => 'HTML' + v + 'Element').concat(NO_EVENT_TARGET); + } else if (_global[EVENT_TARGET]) { + apis.push(EVENT_TARGET); + } else { + // Note: EventTarget is not available in all browsers, + // if it's not available, we instead patch the APIs in the IDL that inherit from EventTarget + apis = NO_EVENT_TARGET; + } + + for (let i = 0; i < apis.length; i++) { + const type = _global[apis[i]]; + patchEventTargetMethods(type && type.prototype); + } +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/property-descriptor.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/property-descriptor.ts new file mode 100644 index 00000000..dfd8ac95 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/property-descriptor.ts @@ -0,0 +1,105 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +import {isBrowser, isNode, patchClass, patchOnProperties, zoneSymbol} from '../common/utils'; + +import * as webSocketPatch from './websocket'; + +const eventNames = + 'copy cut paste abort blur focus canplay canplaythrough change click contextmenu dblclick drag dragend dragenter dragleave dragover dragstart drop durationchange emptied ended input invalid keydown keypress keyup load loadeddata loadedmetadata loadstart message mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup pause play playing progress ratechange reset scroll seeked seeking select show stalled submit suspend timeupdate volumechange waiting mozfullscreenchange mozfullscreenerror mozpointerlockchange mozpointerlockerror error webglcontextrestored webglcontextlost webglcontextcreationerror' + .split(' '); + +export function propertyDescriptorPatch(_global) { + if (isNode) { + return; + } + + const supportsWebSocket = typeof WebSocket !== 'undefined'; + if (canPatchViaPropertyDescriptor()) { + // for browsers that we can patch the descriptor: Chrome & Firefox + if (isBrowser) { + patchOnProperties(HTMLElement.prototype, eventNames); + } + patchOnProperties(XMLHttpRequest.prototype, null); + if (typeof IDBIndex !== 'undefined') { + patchOnProperties(IDBIndex.prototype, null); + patchOnProperties(IDBRequest.prototype, null); + patchOnProperties(IDBOpenDBRequest.prototype, null); + patchOnProperties(IDBDatabase.prototype, null); + patchOnProperties(IDBTransaction.prototype, null); + patchOnProperties(IDBCursor.prototype, null); + } + if (supportsWebSocket) { + patchOnProperties(WebSocket.prototype, null); + } + } else { + // Safari, Android browsers (Jelly Bean) + patchViaCapturingAllTheEvents(); + patchClass('XMLHttpRequest'); + if (supportsWebSocket) { + webSocketPatch.apply(_global); + } + } +} + +function canPatchViaPropertyDescriptor() { + if (isBrowser && !Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'onclick') && + typeof Element !== 'undefined') { + // WebKit https://bugs.webkit.org/show_bug.cgi?id=134364 + // IDL interface attributes are not configurable + const desc = Object.getOwnPropertyDescriptor(Element.prototype, 'onclick'); + if (desc && !desc.configurable) return false; + } + + const xhrDesc = Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype, 'onreadystatechange'); + + // add enumerable and configurable here because in opera + // by default XMLHttpRequest.prototype.onreadystatechange is undefined + // without adding enumerable and configurable will cause onreadystatechange + // non-configurable + Object.defineProperty(XMLHttpRequest.prototype, 'onreadystatechange', { + enumerable: true, + configurable: true, + get: function() { + return true; + } + }); + const req = new XMLHttpRequest(); + const result = !!req.onreadystatechange; + // restore original desc + Object.defineProperty(XMLHttpRequest.prototype, 'onreadystatechange', xhrDesc || {}); + return result; +}; + +const unboundKey = zoneSymbol('unbound'); + +// Whenever any eventListener fires, we check the eventListener target and all parents +// for `onwhatever` properties and replace them with zone-bound functions +// - Chrome (for now) +function patchViaCapturingAllTheEvents() { + for (let i = 0; i < eventNames.length; i++) { + const property = eventNames[i]; + const onproperty = 'on' + property; + self.addEventListener(property, function(event) { + let elt = event.target, bound, source; + if (elt) { + source = elt.constructor['name'] + '.' + onproperty; + } else { + source = 'unknown.' + onproperty; + } + while (elt) { + if (elt[onproperty] && !elt[onproperty][unboundKey]) { + bound = Zone.current.wrap(elt[onproperty], source); + bound[unboundKey] = elt[onproperty]; + elt[onproperty] = bound; + } + elt = elt.parentElement; + } + }, true); + }; +}; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/register-element.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/register-element.ts new file mode 100644 index 00000000..abd85f50 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/register-element.ts @@ -0,0 +1,42 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +import {isBrowser} from '../common/utils'; + +import {_redefineProperty} from './define-property'; + +export function registerElementPatch(_global: any) { + if (!isBrowser || !('registerElement' in (_global).document)) { + return; + } + + const _registerElement = (document).registerElement; + const callbacks = + ['createdCallback', 'attachedCallback', 'detachedCallback', 'attributeChangedCallback']; + + (document).registerElement = function(name, opts) { + if (opts && opts.prototype) { + callbacks.forEach(function(callback) { + const source = 'Document.registerElement::' + callback; + if (opts.prototype.hasOwnProperty(callback)) { + const descriptor = Object.getOwnPropertyDescriptor(opts.prototype, callback); + if (descriptor && descriptor.value) { + descriptor.value = Zone.current.wrap(descriptor.value, source); + _redefineProperty(opts.prototype, callback, descriptor); + } else { + opts.prototype[callback] = Zone.current.wrap(opts.prototype[callback], source); + } + } else if (opts.prototype[callback]) { + opts.prototype[callback] = Zone.current.wrap(opts.prototype[callback], source); + } + }); + } + + return _registerElement.apply(document, [name, opts]); + }; +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/rollup-main.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/rollup-main.ts new file mode 100644 index 00000000..2eb7d99a --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/rollup-main.ts @@ -0,0 +1,11 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + + +import '../zone'; +import './browser'; \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/webapis-media-query.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/webapis-media-query.ts new file mode 100644 index 00000000..ef7ab100 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/webapis-media-query.ts @@ -0,0 +1,45 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +import {NestedEventListenerOrEventListenerObject, patchEventTargetMethods} from '../common/utils'; + +((_global: any) => { + // patch MediaQuery + patchMediaQuery(_global); + + function patchMediaQuery(_global: any) { + if (!_global['MediaQueryList']) { + return; + } + patchEventTargetMethods( + _global['MediaQueryList'].prototype, 'addListener', 'removeListener', (self, args) => { + return { + useCapturing: false, + eventName: 'mediaQuery', + handler: args[0], + target: self || _global, + name: 'mediaQuery', + invokeAddFunc: function( + addFnSymbol: any, delegate: Task|NestedEventListenerOrEventListenerObject) { + if (delegate && (delegate).invoke) { + return this.target[addFnSymbol]((delegate).invoke); + } else { + return this.target[addFnSymbol](delegate); + } + }, + invokeRemoveFunc: function( + removeFnSymbol: any, delegate: Task|NestedEventListenerOrEventListenerObject) { + if (delegate && (delegate).invoke) { + return this.target[removeFnSymbol]((delegate).invoke); + } else { + return this.target[removeFnSymbol](delegate); + } + } + }; + }); + } +})(typeof window === 'object' && window || typeof self === 'object' && self || global); \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/webapis-notification.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/webapis-notification.ts new file mode 100644 index 00000000..f7120da9 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/webapis-notification.ts @@ -0,0 +1,22 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +import {patchOnProperties} from '../common/utils'; + +((_global: any) => { + // patch Notification + patchNotification(_global); + + function patchNotification(_global: any) { + const Notification = _global['Notification']; + if (!Notification || !Notification.prototype) { + return; + } + + patchOnProperties(Notification.prototype, null); + } +})(typeof window === 'object' && window || typeof self === 'object' && self || global); diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/websocket.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/websocket.ts new file mode 100644 index 00000000..fe465ee0 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/browser/websocket.ts @@ -0,0 +1,44 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +import {patchEventTargetMethods, patchOnProperties} from '../common/utils'; + +// we have to patch the instance since the proto is non-configurable +export function apply(_global: any) { + const WS = (_global).WebSocket; + // On Safari window.EventTarget doesn't exist so need to patch WS add/removeEventListener + // On older Chrome, no need since EventTarget was already patched + if (!(_global).EventTarget) { + patchEventTargetMethods(WS.prototype); + } + (_global).WebSocket = function(a, b) { + const socket = arguments.length > 1 ? new WS(a, b) : new WS(a); + let proxySocket; + + // Safari 7.0 has non-configurable own 'onmessage' and friends properties on the socket instance + const onmessageDesc = Object.getOwnPropertyDescriptor(socket, 'onmessage'); + if (onmessageDesc && onmessageDesc.configurable === false) { + proxySocket = Object.create(socket); + ['addEventListener', 'removeEventListener', 'send', 'close'].forEach(function(propName) { + proxySocket[propName] = function() { + return socket[propName].apply(socket, arguments); + }; + }); + } else { + // we can patch the real socket + proxySocket = socket; + } + + patchOnProperties(proxySocket, ['close', 'error', 'message', 'open']); + + return proxySocket; + }; + for (const prop in WS) { + _global.WebSocket[prop] = WS[prop]; + } +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/common/timers.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/common/timers.ts new file mode 100644 index 00000000..3226854d --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/common/timers.ts @@ -0,0 +1,80 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +import {patchMethod} from './utils'; + +interface TimerOptions extends TaskData { + handleId: number; + args: any[]; +} + +export function patchTimer(window: any, setName: string, cancelName: string, nameSuffix: string) { + let setNative = null; + let clearNative = null; + setName += nameSuffix; + cancelName += nameSuffix; + + const tasksByHandleId: {[id: number]: Task} = {}; + + function scheduleTask(task: Task) { + const data = task.data; + data.args[0] = function() { + task.invoke.apply(this, arguments); + delete tasksByHandleId[data.handleId]; + }; + data.handleId = setNative.apply(window, data.args); + tasksByHandleId[data.handleId] = task; + return task; + } + + function clearTask(task: Task) { + delete tasksByHandleId[(task.data).handleId]; + return clearNative((task.data).handleId); + } + + setNative = + patchMethod(window, setName, (delegate: Function) => function(self: any, args: any[]) { + if (typeof args[0] === 'function') { + const zone = Zone.current; + const options: TimerOptions = { + handleId: null, + isPeriodic: nameSuffix === 'Interval', + delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 : null, + args: args + }; + const task = zone.scheduleMacroTask(setName, args[0], options, scheduleTask, clearTask); + if (!task) { + return task; + } + // Node.js must additionally support the ref and unref functions. + const handle = (task.data).handleId; + if ((handle).ref && (handle).unref) { + (task).ref = (handle).ref.bind(handle); + (task).unref = (handle).unref.bind(handle); + } + return task; + } else { + // cause an error by calling it directly. + return delegate.apply(window, args); + } + }); + + clearNative = + patchMethod(window, cancelName, (delegate: Function) => function(self: any, args: any[]) { + const task: Task = typeof args[0] === 'number' ? tasksByHandleId[args[0]] : args[0]; + if (task && typeof task.type === 'string') { + if (task.cancelFn && task.data.isPeriodic || task.runCount === 0) { + // Do not cancel already canceled functions + task.zone.cancelTask(task); + } + } else { + // cause an error by calling it directly. + delegate.apply(window, args); + } + }); +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/common/utils.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/common/utils.ts new file mode 100644 index 00000000..ed084a1a --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/common/utils.ts @@ -0,0 +1,518 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * Suppress closure compiler errors about unknown 'Zone' variable + * @fileoverview + * @suppress {undefinedVars} + */ + +// Hack since TypeScript isn't compiling this for a worker. +declare const WorkerGlobalScope; +export const zoneSymbol: (name: string) => string = (n) => `__zone_symbol__${n}`; +const _global = typeof window === 'object' && window || typeof self === 'object' && self || global; + +export function bindArguments(args: any[], source: string): any[] { + for (let i = args.length - 1; i >= 0; i--) { + if (typeof args[i] === 'function') { + args[i] = Zone.current.wrap(args[i], source + '_' + i); + } + } + return args; +} + +export function patchPrototype(prototype, fnNames) { + const source = prototype.constructor['name']; + for (let i = 0; i < fnNames.length; i++) { + const name = fnNames[i]; + const delegate = prototype[name]; + if (delegate) { + prototype[name] = ((delegate: Function) => { + return function() { + return delegate.apply(this, bindArguments(arguments, source + '.' + name)); + }; + })(delegate); + } + } +} + +export const isWebWorker: boolean = + (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope); + +export const isNode: boolean = + (!('nw' in _global) && typeof process !== 'undefined' && + {}.toString.call(process) === '[object process]'); + +export const isBrowser: boolean = + !isNode && !isWebWorker && !!(typeof window !== 'undefined' && window['HTMLElement']); + + +export function patchProperty(obj, prop) { + const desc = Object.getOwnPropertyDescriptor(obj, prop) || {enumerable: true, configurable: true}; + + const originalDesc = Object.getOwnPropertyDescriptor(obj, 'original' + prop); + if (!originalDesc && desc.get) { + Object.defineProperty( + obj, 'original' + prop, {enumerable: false, configurable: true, get: desc.get}); + } + + // A property descriptor cannot have getter/setter and be writable + // deleting the writable and value properties avoids this error: + // + // TypeError: property descriptors must not specify a value or be writable when a + // getter or setter has been specified + delete desc.writable; + delete desc.value; + + // substr(2) cuz 'onclick' -> 'click', etc + const eventName = prop.substr(2); + const _prop = '_' + prop; + + desc.set = function(fn) { + if (this[_prop]) { + this.removeEventListener(eventName, this[_prop]); + } + + if (typeof fn === 'function') { + const wrapFn = function(event) { + let result; + result = fn.apply(this, arguments); + + if (result != undefined && !result) event.preventDefault(); + }; + + this[_prop] = wrapFn; + this.addEventListener(eventName, wrapFn, false); + } else { + this[_prop] = null; + } + }; + + // The getter would return undefined for unassigned properties but the default value of an + // unassigned property is null + desc.get = function() { + let r = this[_prop] || null; + // result will be null when use inline event attribute, + // such as + // because the onclick function is internal raw uncompiled handler + // the onclick will be evaluated when first time event was triggered or + // the property is accessed, https://github.com/angular/zone.js/issues/525 + // so we should use original native get to retrieve the handler + if (r === null) { + if (originalDesc && originalDesc.get) { + r = originalDesc.get.apply(this, arguments); + if (r) { + desc.set.apply(this, [r]); + if (typeof this['removeAttribute'] === 'function') { + this.removeAttribute(prop); + } + } + } + } + return this[_prop] || null; + }; + + Object.defineProperty(obj, prop, desc); +}; + +export function patchOnProperties(obj: any, properties: string[]) { + const onProperties = []; + for (const prop in obj) { + if (prop.substr(0, 2) == 'on') { + onProperties.push(prop); + } + } + for (let j = 0; j < onProperties.length; j++) { + patchProperty(obj, onProperties[j]); + } + if (properties) { + for (let i = 0; i < properties.length; i++) { + patchProperty(obj, 'on' + properties[i]); + } + } +}; + +const EVENT_TASKS = zoneSymbol('eventTasks'); + +// For EventTarget +const ADD_EVENT_LISTENER = 'addEventListener'; +const REMOVE_EVENT_LISTENER = 'removeEventListener'; + +export interface NestedEventListener { listener?: EventListenerOrEventListenerObject; } + +export declare type NestedEventListenerOrEventListenerObject = + NestedEventListener | EventListener | EventListenerObject; + +export interface ListenerTaskMeta extends TaskData { + useCapturing: boolean; + eventName: string; + handler: NestedEventListenerOrEventListenerObject; + target: any; + name: string; + invokeAddFunc: (addFnSymbol: any, delegate: Task|NestedEventListenerOrEventListenerObject) => any; + invokeRemoveFunc: + (removeFnSymbol: any, delegate: Task|NestedEventListenerOrEventListenerObject) => any; +} + +function findExistingRegisteredTask( + target: any, handler: any, name: string, capture: boolean, remove: boolean): Task { + const eventTasks: Task[] = target[EVENT_TASKS]; + if (eventTasks) { + for (let i = 0; i < eventTasks.length; i++) { + const eventTask = eventTasks[i]; + const data = eventTask.data; + const listener = data.handler; + if ((data.handler === handler || listener.listener === handler) && + data.useCapturing === capture && data.eventName === name) { + if (remove) { + eventTasks.splice(i, 1); + } + return eventTask; + } + } + } + return null; +} + +function findAllExistingRegisteredTasks( + target: any, name: string, capture: boolean, remove: boolean): Task[] { + const eventTasks: Task[] = target[EVENT_TASKS]; + if (eventTasks) { + const result = []; + for (let i = eventTasks.length - 1; i >= 0; i--) { + const eventTask = eventTasks[i]; + const data = eventTask.data; + if (data.eventName === name && data.useCapturing === capture) { + result.push(eventTask); + if (remove) { + eventTasks.splice(i, 1); + } + } + } + return result; + } + return null; +} + +function attachRegisteredEvent(target: any, eventTask: Task, isPrepend: boolean): void { + let eventTasks: Task[] = target[EVENT_TASKS]; + if (!eventTasks) { + eventTasks = target[EVENT_TASKS] = []; + } + if (isPrepend) { + eventTasks.unshift(eventTask); + } else { + eventTasks.push(eventTask); + } +} + +const defaultListenerMetaCreator = (self: any, args: any[]) => { + return { + useCapturing: args[2], + eventName: args[0], + handler: args[1], + target: self || _global, + name: args[0], + invokeAddFunc: function( + addFnSymbol: any, delegate: Task|NestedEventListenerOrEventListenerObject) { + if (delegate && (delegate).invoke) { + return this.target[addFnSymbol](this.eventName, (delegate).invoke, this.useCapturing); + } else { + return this.target[addFnSymbol](this.eventName, delegate, this.useCapturing); + } + }, + invokeRemoveFunc: function( + removeFnSymbol: any, delegate: Task|NestedEventListenerOrEventListenerObject) { + if (delegate && (delegate).invoke) { + return this.target[removeFnSymbol]( + this.eventName, (delegate).invoke, this.useCapturing); + } else { + return this.target[removeFnSymbol](this.eventName, delegate, this.useCapturing); + } + } + }; +}; + +export function makeZoneAwareAddListener( + addFnName: string, removeFnName: string, useCapturingParam: boolean = true, + allowDuplicates: boolean = false, isPrepend: boolean = false, + metaCreator: (self: any, args: any[]) => ListenerTaskMeta = defaultListenerMetaCreator) { + const addFnSymbol = zoneSymbol(addFnName); + const removeFnSymbol = zoneSymbol(removeFnName); + const defaultUseCapturing = useCapturingParam ? false : undefined; + + function scheduleEventListener(eventTask: Task): any { + const meta = eventTask.data; + attachRegisteredEvent(meta.target, eventTask, isPrepend); + return meta.invokeAddFunc(addFnSymbol, eventTask); + } + + function cancelEventListener(eventTask: Task): void { + const meta = eventTask.data; + findExistingRegisteredTask( + meta.target, eventTask.invoke, meta.eventName, meta.useCapturing, true); + return meta.invokeRemoveFunc(removeFnSymbol, eventTask); + } + + return function zoneAwareAddListener(self: any, args: any[]) { + const data: ListenerTaskMeta = metaCreator(self, args); + + data.useCapturing = data.useCapturing || defaultUseCapturing; + // - Inside a Web Worker, `this` is undefined, the context is `global` + // - When `addEventListener` is called on the global context in strict mode, `this` is undefined + // see https://github.com/angular/zone.js/issues/190 + let delegate: EventListener = null; + if (typeof data.handler == 'function') { + delegate = data.handler; + } else if (data.handler && (data.handler).handleEvent) { + delegate = (event) => (data.handler).handleEvent(event); + } + let validZoneHandler = false; + try { + // In cross site contexts (such as WebDriver frameworks like Selenium), + // accessing the handler object here will cause an exception to be thrown which + // will fail tests prematurely. + validZoneHandler = data.handler && data.handler.toString() === '[object FunctionWrapper]'; + } catch (e) { + // Returning nothing here is fine, because objects in a cross-site context are unusable + return; + } + // Ignore special listeners of IE11 & Edge dev tools, see + // https://github.com/angular/zone.js/issues/150 + if (!delegate || validZoneHandler) { + return data.invokeAddFunc(addFnSymbol, data.handler); + } + + if (!allowDuplicates) { + const eventTask: Task = findExistingRegisteredTask( + data.target, data.handler, data.eventName, data.useCapturing, false); + if (eventTask) { + // we already registered, so this will have noop. + return data.invokeAddFunc(addFnSymbol, eventTask); + } + } + + const zone: Zone = Zone.current; + const source = data.target.constructor['name'] + '.' + addFnName + ':' + data.eventName; + + zone.scheduleEventTask(source, delegate, data, scheduleEventListener, cancelEventListener); + }; +} + +export function makeZoneAwareRemoveListener( + fnName: string, useCapturingParam: boolean = true, + metaCreator: (self: any, args: any[]) => ListenerTaskMeta = defaultListenerMetaCreator) { + const symbol = zoneSymbol(fnName); + const defaultUseCapturing = useCapturingParam ? false : undefined; + + return function zoneAwareRemoveListener(self: any, args: any[]) { + const data = metaCreator(self, args); + data.useCapturing = data.useCapturing || defaultUseCapturing; + // - Inside a Web Worker, `this` is undefined, the context is `global` + // - When `addEventListener` is called on the global context in strict mode, `this` is undefined + // see https://github.com/angular/zone.js/issues/190 + const eventTask = findExistingRegisteredTask( + data.target, data.handler, data.eventName, data.useCapturing, true); + if (eventTask) { + eventTask.zone.cancelTask(eventTask); + } else { + data.invokeRemoveFunc(symbol, data.handler); + } + }; +} + +export function makeZoneAwareRemoveAllListeners(fnName: string, useCapturingParam: boolean = true) { + const symbol = zoneSymbol(fnName); + const defaultUseCapturing = useCapturingParam ? false : undefined; + + return function zoneAwareRemoveAllListener(self: any, args: any[]) { + const target = self || _global; + if (args.length === 0) { + // remove all listeners without eventName + target[EVENT_TASKS] = []; + // we don't cancel Task either, because call native eventEmitter.removeAllListeners will + // will do remove listener(cancelTask) for us + target[symbol](); + return; + } + const eventName = args[0]; + const useCapturing = args[1] || defaultUseCapturing; + // call this function just remove the related eventTask from target[EVENT_TASKS] + findAllExistingRegisteredTasks(target, eventName, useCapturing, true); + // we don't need useCapturing here because useCapturing is just for DOM, and + // removeAllListeners should only be called by node eventEmitter + // and we don't cancel Task either, because call native eventEmitter.removeAllListeners will + // will do remove listener(cancelTask) for us + target[symbol](eventName); + }; +} + +export function makeZoneAwareListeners(fnName: string) { + const symbol = zoneSymbol(fnName); + + return function zoneAwareEventListeners(self: any, args: any[]) { + const eventName: string = args[0]; + const target = self || _global; + if (!target[EVENT_TASKS]) { + return []; + } + return target[EVENT_TASKS] + .filter(task => task.data.eventName === eventName) + .map(task => task.data.handler); + }; +} + +const zoneAwareAddEventListener = + makeZoneAwareAddListener(ADD_EVENT_LISTENER, REMOVE_EVENT_LISTENER); +const zoneAwareRemoveEventListener = makeZoneAwareRemoveListener(REMOVE_EVENT_LISTENER); + +export function patchEventTargetMethods( + obj: any, addFnName: string = ADD_EVENT_LISTENER, removeFnName: string = REMOVE_EVENT_LISTENER, + metaCreator: (self: any, args: any[]) => ListenerTaskMeta = + defaultListenerMetaCreator): boolean { + if (obj && obj[addFnName]) { + patchMethod( + obj, addFnName, + () => makeZoneAwareAddListener(addFnName, removeFnName, true, false, false, metaCreator)); + patchMethod( + obj, removeFnName, () => makeZoneAwareRemoveListener(removeFnName, true, metaCreator)); + return true; + } else { + return false; + } +} + +const originalInstanceKey = zoneSymbol('originalInstance'); + +// wrap some native API on `window` +export function patchClass(className) { + const OriginalClass = _global[className]; + if (!OriginalClass) return; + + _global[className] = function() { + const a = bindArguments(arguments, className); + switch (a.length) { + case 0: + this[originalInstanceKey] = new OriginalClass(); + break; + case 1: + this[originalInstanceKey] = new OriginalClass(a[0]); + break; + case 2: + this[originalInstanceKey] = new OriginalClass(a[0], a[1]); + break; + case 3: + this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]); + break; + case 4: + this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]); + break; + default: + throw new Error('Arg list too long.'); + } + }; + + const instance = new OriginalClass(function() {}); + + let prop; + for (prop in instance) { + // https://bugs.webkit.org/show_bug.cgi?id=44721 + if (className === 'XMLHttpRequest' && prop === 'responseBlob') continue; + (function(prop) { + if (typeof instance[prop] === 'function') { + _global[className].prototype[prop] = function() { + return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments); + }; + } else { + Object.defineProperty(_global[className].prototype, prop, { + set: function(fn) { + if (typeof fn === 'function') { + this[originalInstanceKey][prop] = Zone.current.wrap(fn, className + '.' + prop); + } else { + this[originalInstanceKey][prop] = fn; + } + }, + get: function() { + return this[originalInstanceKey][prop]; + } + }); + } + }(prop)); + } + + for (prop in OriginalClass) { + if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) { + _global[className][prop] = OriginalClass[prop]; + } + } +}; + +export function createNamedFn(name: string, delegate: (self: any, args: any[]) => any): Function { + try { + return (Function('f', `return function ${name}(){return f(this, arguments)}`))(delegate); + } catch (e) { + // if we fail, we must be CSP, just return delegate. + return function() { + return delegate(this, arguments); + }; + } +} + +export function patchMethod( + target: any, name: string, + patchFn: (delegate: Function, delegateName: string, name: string) => (self: any, args: any[]) => + any): Function { + let proto = target; + while (proto && Object.getOwnPropertyNames(proto).indexOf(name) === -1) { + proto = Object.getPrototypeOf(proto); + } + if (!proto && target[name]) { + // somehow we did not find it, but we can see it. This happens on IE for Window properties. + proto = target; + } + const delegateName = zoneSymbol(name); + let delegate: Function; + if (proto && !(delegate = proto[delegateName])) { + delegate = proto[delegateName] = proto[name]; + proto[name] = createNamedFn(name, patchFn(delegate, delegateName, name)); + } + return delegate; +} + +export interface MacroTaskMeta extends TaskData { + name: string; + target: any; + callbackIndex: number; + args: any[]; +} + +// TODO: support cancel task later if necessary +export function patchMacroTask( + obj: any, funcName: string, metaCreator: (self: any, args: any[]) => MacroTaskMeta) { + let setNative = null; + + function scheduleTask(task: Task) { + const data = task.data; + data.args[data.callbackIndex] = function() { + task.invoke.apply(this, arguments); + }; + setNative.apply(data.target, data.args); + return task; + } + + setNative = patchMethod(obj, funcName, (delegate: Function) => function(self: any, args: any[]) { + const meta = metaCreator(self, args); + if (meta.callbackIndex >= 0 && typeof args[meta.callbackIndex] === 'function') { + const task = Zone.current.scheduleMacroTask( + meta.name, args[meta.callbackIndex], meta, scheduleTask, null); + return task; + } else { + // cause an error by calling it directly. + return delegate.apply(self, args); + } + }); +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/jasmine/jasmine.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/jasmine/jasmine.ts new file mode 100644 index 00000000..7e5183b1 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/jasmine/jasmine.ts @@ -0,0 +1,140 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +'use strict'; +(() => { + const __extends = function(d, b) { + for (const p in b) + if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + // Patch jasmine's describe/it/beforeEach/afterEach functions so test code always runs + // in a testZone (ProxyZone). (See: angular/zone.js#91 & angular/angular#10503) + if (!Zone) throw new Error('Missing: zone.js'); + if (typeof jasmine == 'undefined') throw new Error('Missing: jasmine.js'); + if (jasmine['__zone_patch__']) + throw new Error('\'jasmine\' has already been patched with \'Zone\'.'); + jasmine['__zone_patch__'] = true; + + const SyncTestZoneSpec: {new (name: string): ZoneSpec} = Zone['SyncTestZoneSpec']; + const ProxyZoneSpec: {new (): ZoneSpec} = Zone['ProxyZoneSpec']; + if (!SyncTestZoneSpec) throw new Error('Missing: SyncTestZoneSpec'); + if (!ProxyZoneSpec) throw new Error('Missing: ProxyZoneSpec'); + + const ambientZone = Zone.current; + // Create a synchronous-only zone in which to run `describe` blocks in order to raise an + // error if any asynchronous operations are attempted inside of a `describe` but outside of + // a `beforeEach` or `it`. + const syncZone = ambientZone.fork(new SyncTestZoneSpec('jasmine.describe')); + + // This is the zone which will be used for running individual tests. + // It will be a proxy zone, so that the tests function can retroactively install + // different zones. + // Example: + // - In beforeEach() do childZone = Zone.current.fork(...); + // - In it() try to do fakeAsync(). The issue is that because the beforeEach forked the + // zone outside of fakeAsync it will be able to escope the fakeAsync rules. + // - Because ProxyZone is parent fo `childZone` fakeAsync can retroactively add + // fakeAsync behavior to the childZone. + let testProxyZone: Zone = null; + + // Monkey patch all of the jasmine DSL so that each function runs in appropriate zone. + const jasmineEnv = jasmine.getEnv(); + ['describe', 'xdescribe', 'fdescribe'].forEach((methodName) => { + let originalJasmineFn: Function = jasmineEnv[methodName]; + jasmineEnv[methodName] = function(description: string, specDefinitions: Function) { + return originalJasmineFn.call(this, description, wrapDescribeInZone(specDefinitions)); + }; + }); + ['it', 'xit', 'fit'].forEach((methodName) => { + let originalJasmineFn: Function = jasmineEnv[methodName]; + jasmineEnv[methodName] = function( + description: string, specDefinitions: Function, timeout: number) { + arguments[1] = wrapTestInZone(specDefinitions); + return originalJasmineFn.apply(this, arguments); + }; + }); + ['beforeEach', 'afterEach'].forEach((methodName) => { + let originalJasmineFn: Function = jasmineEnv[methodName]; + jasmineEnv[methodName] = function(specDefinitions: Function, timeout: number) { + arguments[0] = wrapTestInZone(specDefinitions); + return originalJasmineFn.apply(this, arguments); + }; + }); + + /** + * Gets a function wrapping the body of a Jasmine `describe` block to execute in a + * synchronous-only zone. + */ + function wrapDescribeInZone(describeBody: Function): Function { + return function() { + return syncZone.run(describeBody, this, arguments as any as any[]); + }; + } + + /** + * Gets a function wrapping the body of a Jasmine `it/beforeEach/afterEach` block to + * execute in a ProxyZone zone. + * This will run in `testProxyZone`. The `testProxyZone` will be reset by the `ZoneQueueRunner` + */ + function wrapTestInZone(testBody: Function): Function { + // The `done` callback is only passed through if the function expects at least one argument. + // Note we have to make a function with correct number of arguments, otherwise jasmine will + // think that all functions are sync or async. + return (testBody.length == 0) ? function() { + return testProxyZone.run(testBody, this); + } : function(done) { + return testProxyZone.run(testBody, this, [done]); + }; + } + interface QueueRunner { + execute(): void; + } + interface QueueRunnerAttrs { + queueableFns: {fn: Function}[]; + onComplete: () => void; + clearStack: (fn) => void; + onException: (error) => void; + catchException: () => boolean; + userContext: any; + timeout: {setTimeout: Function, clearTimeout: Function}; + fail: () => void; + } + + const QueueRunner = (jasmine as any).QueueRunner as {new (attrs: QueueRunnerAttrs): QueueRunner}; + (jasmine as any).QueueRunner = (function(_super) { + __extends(ZoneQueueRunner, _super); + function ZoneQueueRunner(attrs) { + attrs.onComplete = ((fn) => () => { + // All functions are done, clear the test zone. + testProxyZone = null; + ambientZone.scheduleMicroTask('jasmine.onComplete', fn); + })(attrs.onComplete); + _super.call(this, attrs); + } + ZoneQueueRunner.prototype.execute = function() { + if (Zone.current !== ambientZone) throw new Error('Unexpected Zone: ' + Zone.current.name); + testProxyZone = ambientZone.fork(new ProxyZoneSpec()); + if (!Zone.currentTask) { + // if we are not running in a task then if someone would register a + // element.addEventListener and then calling element.click() the + // addEventListener callback would think that it is the top most task and would + // drain the microtask queue on element.click() which would be incorrect. + // For this reason we always force a task when running jasmine tests. + Zone.current.scheduleMicroTask( + 'jasmine.execute().forceTask', () => QueueRunner.prototype.execute.call(this)); + } else { + _super.prototype.execute.call(this); + } + }; + return ZoneQueueRunner; + }(QueueRunner)); +})(); diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/mocha/mocha.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/mocha/mocha.ts new file mode 100644 index 00000000..768b5ecf --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/mocha/mocha.ts @@ -0,0 +1,173 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +'use strict'; + +((context: any) => { + const Mocha = context.Mocha; + + if (typeof Mocha === 'undefined') { + throw new Error('Missing Mocha.js'); + } + + if (typeof Zone === 'undefined') { + throw new Error('Missing Zone.js'); + } + + const ProxyZoneSpec = Zone['ProxyZoneSpec']; + const SyncTestZoneSpec = Zone['SyncTestZoneSpec']; + + if (!ProxyZoneSpec) { + throw new Error('Missing ProxyZoneSpec'); + } + + if (Mocha['__zone_patch__']) { + throw new Error('"Mocha" has already been patched with "Zone".'); + } + + Mocha['__zone_patch__'] = true; + + const rootZone = Zone.current; + const syncZone = rootZone.fork(new SyncTestZoneSpec('Mocha.describe')); + let testZone = null; + const suiteZone = rootZone.fork(new ProxyZoneSpec()); + + const mochaOriginal = { + after: Mocha.after, + afterEach: Mocha.afterEach, + before: Mocha.before, + beforeEach: Mocha.beforeEach, + describe: Mocha.describe, + it: Mocha.it + }; + + function modifyArguments(args: IArguments, syncTest: Function, asyncTest?: Function): any[] { + for (let i = 0; i < args.length; i++) { + let arg = args[i]; + if (typeof arg === 'function') { + // The `done` callback is only passed through if the function expects at + // least one argument. + // Note we have to make a function with correct number of arguments, + // otherwise mocha will + // think that all functions are sync or async. + args[i] = (arg.length === 0) ? syncTest(arg) : asyncTest(arg); + // Mocha uses toString to view the test body in the result list, make sure we return the + // correct function body + args[i].toString = function() { + return arg.toString(); + }; + } + } + + return args as any; + } + + function wrapDescribeInZone(args: IArguments): any[] { + const syncTest: any = function(fn) { + return function() { + return syncZone.run(fn, this, arguments as any as any[]); + }; + }; + + return modifyArguments(args, syncTest); + } + + function wrapTestInZone(args: IArguments): any[] { + const asyncTest = function(fn) { + return function(done) { + return testZone.run(fn, this, [done]); + }; + }; + + const syncTest: any = function(fn) { + return function() { + return testZone.run(fn, this); + }; + }; + + return modifyArguments(args, syncTest, asyncTest); + } + + function wrapSuiteInZone(args: IArguments): any[] { + const asyncTest = function(fn) { + return function(done) { + return suiteZone.run(fn, this, [done]); + }; + }; + + const syncTest: any = function(fn) { + return function() { + return suiteZone.run(fn, this); + }; + }; + + return modifyArguments(args, syncTest, asyncTest); + }; + + context.describe = context.suite = Mocha.describe = function() { + return mochaOriginal.describe.apply(this, wrapDescribeInZone(arguments)); + }; + + context.xdescribe = context.suite.skip = Mocha.describe.skip = function() { + return mochaOriginal.describe.skip.apply(this, wrapDescribeInZone(arguments)); + }; + + context.describe.only = context.suite.only = Mocha.describe.only = function() { + return mochaOriginal.describe.only.apply(this, wrapDescribeInZone(arguments)); + }; + + context.it = context.specify = context.test = Mocha.it = function() { + return mochaOriginal.it.apply(this, wrapTestInZone(arguments)); + }; + + context.xit = context.xspecify = Mocha.it.skip = function() { + return mochaOriginal.it.skip.apply(this, wrapTestInZone(arguments)); + }; + + context.it.only = context.test.only = Mocha.it.only = function() { + return mochaOriginal.it.only.apply(this, wrapTestInZone(arguments)); + }; + + context.after = context.suiteTeardown = Mocha.after = function() { + return mochaOriginal.after.apply(this, wrapSuiteInZone(arguments)); + }; + + context.afterEach = context.teardown = Mocha.afterEach = function() { + return mochaOriginal.afterEach.apply(this, wrapTestInZone(arguments)); + }; + + context.before = context.suiteSetup = Mocha.before = function() { + return mochaOriginal.before.apply(this, wrapSuiteInZone(arguments)); + }; + + context.beforeEach = context.setup = Mocha.beforeEach = function() { + return mochaOriginal.beforeEach.apply(this, wrapTestInZone(arguments)); + }; + + ((originalRunTest, originalRun) => { + Mocha.Runner.prototype.runTest = function(fn) { + Zone.current.scheduleMicroTask('mocha.forceTask', () => { + originalRunTest.call(this, fn); + }); + }; + + Mocha.Runner.prototype.run = function(fn) { + this.on('test', (e) => { + if (Zone.current !== rootZone) { + throw new Error('Unexpected zone: ' + Zone.current.name); + } + testZone = rootZone.fork(new ProxyZoneSpec()); + }); + + return originalRun.call(this, fn); + }; + + + })(Mocha.Runner.prototype.runTest, Mocha.Runner.prototype.run); + +})(window); \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/node/events.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/node/events.ts new file mode 100644 index 00000000..fcb471ec --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/node/events.ts @@ -0,0 +1,59 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +import {makeZoneAwareAddListener, makeZoneAwareListeners, makeZoneAwareRemoveAllListeners, makeZoneAwareRemoveListener, patchMethod} from '../common/utils'; + +const callAndReturnFirstParam = (fn: (self: any, args: any[]) => any) => { + return (self: any, args: any[]) => { + fn(self, args); + return self; + }; +}; + +// For EventEmitter +const EE_ADD_LISTENER = 'addListener'; +const EE_PREPEND_LISTENER = 'prependListener'; +const EE_REMOVE_LISTENER = 'removeListener'; +const EE_REMOVE_ALL_LISTENER = 'removeAllListeners'; +const EE_LISTENERS = 'listeners'; +const EE_ON = 'on'; + +const zoneAwareAddListener = callAndReturnFirstParam( + makeZoneAwareAddListener(EE_ADD_LISTENER, EE_REMOVE_LISTENER, false, true, false)); +const zoneAwarePrependListener = callAndReturnFirstParam( + makeZoneAwareAddListener(EE_PREPEND_LISTENER, EE_REMOVE_LISTENER, false, true, true)); +const zoneAwareRemoveListener = + callAndReturnFirstParam(makeZoneAwareRemoveListener(EE_REMOVE_LISTENER, false)); +const zoneAwareRemoveAllListeners = + callAndReturnFirstParam(makeZoneAwareRemoveAllListeners(EE_REMOVE_ALL_LISTENER, false)); +const zoneAwareListeners = makeZoneAwareListeners(EE_LISTENERS); + +export function patchEventEmitterMethods(obj: any): boolean { + if (obj && obj.addListener) { + patchMethod(obj, EE_ADD_LISTENER, () => zoneAwareAddListener); + patchMethod(obj, EE_PREPEND_LISTENER, () => zoneAwarePrependListener); + patchMethod(obj, EE_REMOVE_LISTENER, () => zoneAwareRemoveListener); + patchMethod(obj, EE_REMOVE_ALL_LISTENER, () => zoneAwareRemoveAllListeners); + patchMethod(obj, EE_LISTENERS, () => zoneAwareListeners); + obj[EE_ON] = obj[EE_ADD_LISTENER]; + return true; + } else { + return false; + } +} + +// EventEmitter +let events; +try { + events = require('events'); +} catch (err) { +} + +if (events && events.EventEmitter) { + patchEventEmitterMethods(events.EventEmitter.prototype); +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/node/fs.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/node/fs.ts new file mode 100644 index 00000000..51b9ae52 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/node/fs.ts @@ -0,0 +1,39 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +import {patchMacroTask} from '../common/utils'; + +let fs; +try { + fs = require('fs'); +} catch (err) { +} + +// watch, watchFile, unwatchFile has been patched +// because EventEmitter has been patched +const TO_PATCH_MACROTASK_METHODS = [ + 'access', 'appendFile', 'chmod', 'chown', 'close', 'exists', 'fchmod', + 'fchown', 'fdatasync', 'fstat', 'fsync', 'ftruncate', 'futimes', 'lchmod', + 'lchown', 'link', 'lstat', 'mkdir', 'mkdtemp', 'open', 'read', + 'readdir', 'readFile', 'readlink', 'realpath', 'rename', 'rmdir', 'stat', + 'symlink', 'truncate', 'unlink', 'utimes', 'write', 'writeFile', +]; + +if (fs) { + TO_PATCH_MACROTASK_METHODS.filter(name => !!fs[name] && typeof fs[name] === 'function') + .forEach(name => { + patchMacroTask(fs, name, (self: any, args: any[]) => { + return { + name: 'fs.' + name, + args: args, + callbackIndex: args.length > 0 ? args.length - 1 : -1, + target: self + }; + }); + }); +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/node/node.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/node/node.ts new file mode 100644 index 00000000..4394ffec --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/node/node.ts @@ -0,0 +1,112 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +import '../zone'; +import './events'; +import './fs'; + +import {patchTimer} from '../common/timers'; +import {patchMethod} from '../common/utils'; + +const set = 'set'; +const clear = 'clear'; +const _global = typeof window === 'object' && window || typeof self === 'object' && self || global; + +// Timers +const timers = require('timers'); +patchTimer(timers, set, clear, 'Timeout'); +patchTimer(timers, set, clear, 'Interval'); +patchTimer(timers, set, clear, 'Immediate'); + +const shouldPatchGlobalTimers = global.setTimeout !== timers.setTimeout; + +if (shouldPatchGlobalTimers) { + patchTimer(_global, set, clear, 'Timeout'); + patchTimer(_global, set, clear, 'Interval'); + patchTimer(_global, set, clear, 'Immediate'); +} + +patchNextTick(); + +// Crypto +let crypto; +try { + crypto = require('crypto'); +} catch (err) { +} + +// TODO(gdi2290): implement a better way to patch these methods +if (crypto) { + let nativeRandomBytes = crypto.randomBytes; + crypto.randomBytes = function randomBytesZone(size: number, callback?: Function) { + if (!callback) { + return nativeRandomBytes(size); + } else { + let zone = Zone.current; + const source = crypto.constructor.name + '.randomBytes'; + return nativeRandomBytes(size, zone.wrap(callback, source)); + } + }.bind(crypto); + + let nativePbkdf2 = crypto.pbkdf2; + crypto.pbkdf2 = function pbkdf2Zone(...args: any[]) { + let fn = args[args.length - 1]; + if (typeof fn === 'function') { + let zone = Zone.current; + const source = crypto.constructor.name + '.pbkdf2'; + args[args.length - 1] = zone.wrap(fn, source); + return nativePbkdf2(...args); + } else { + return nativePbkdf2(...args); + } + }.bind(crypto); +} + +// HTTP Client +let httpClient; +try { + httpClient = require('_http_client'); +} catch (err) { +} + +if (httpClient && httpClient.ClientRequest) { + let ClientRequest = httpClient.ClientRequest.bind(httpClient); + httpClient.ClientRequest = function(options: any, callback?: Function) { + if (!callback) { + return new ClientRequest(options); + } else { + let zone = Zone.current; + return new ClientRequest(options, zone.wrap(callback, 'http.ClientRequest')); + } + }; +} + +function patchNextTick() { + let setNative = null; + + function scheduleTask(task: Task) { + const args = task.data; + args[0] = function() { + task.invoke.apply(this, arguments); + }; + setNative.apply(process, args); + return task; + } + + setNative = + patchMethod(process, 'nextTick', (delegate: Function) => function(self: any, args: any[]) { + if (typeof args[0] === 'function') { + const zone = Zone.current; + const task = zone.scheduleMicroTask('nextTick', args[0], args, scheduleTask); + return task; + } else { + // cause an error by calling it directly. + return delegate.apply(process, args); + } + }); +} \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/async-test.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/async-test.ts new file mode 100644 index 00000000..fdeb56a9 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/async-test.ts @@ -0,0 +1,87 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +class AsyncTestZoneSpec implements ZoneSpec { + _finishCallback: Function; + _failCallback: Function; + _pendingMicroTasks: boolean = false; + _pendingMacroTasks: boolean = false; + _alreadyErrored: boolean = false; + runZone = Zone.current; + + constructor(finishCallback: Function, failCallback: Function, namePrefix: string) { + this._finishCallback = finishCallback; + this._failCallback = failCallback; + this.name = 'asyncTestZone for ' + namePrefix; + } + + _finishCallbackIfDone() { + if (!(this._pendingMicroTasks || this._pendingMacroTasks)) { + // We do this because we would like to catch unhandled rejected promises. + this.runZone.run(() => { + setTimeout(() => { + if (!this._alreadyErrored && !(this._pendingMicroTasks || this._pendingMacroTasks)) { + this._finishCallback(); + } + }, 0); + }); + } + } + + // ZoneSpec implementation below. + + name: string; + + // Note - we need to use onInvoke at the moment to call finish when a test is + // fully synchronous. TODO(juliemr): remove this when the logic for + // onHasTask changes and it calls whenever the task queues are dirty. + onInvoke( + parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, delegate: Function, + applyThis: any, applyArgs: any[], source: string): any { + try { + return parentZoneDelegate.invoke(targetZone, delegate, applyThis, applyArgs, source); + } finally { + this._finishCallbackIfDone(); + } + } + + onHandleError(parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, error: any): + boolean { + // Let the parent try to handle the error. + const result = parentZoneDelegate.handleError(targetZone, error); + if (result) { + this._failCallback(error); + this._alreadyErrored = true; + } + return false; + } + + onScheduleTask(delegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, task: Task): Task { + if (task.type == 'macroTask' && task.source == 'setInterval') { + this._failCallback('Cannot use setInterval from within an async zone test.'); + return; + } + + return delegate.scheduleTask(targetZone, task); + } + + onHasTask(delegate: ZoneDelegate, current: Zone, target: Zone, hasTaskState: HasTaskState) { + delegate.hasTask(target, hasTaskState); + if (hasTaskState.change == 'microTask') { + this._pendingMicroTasks = hasTaskState.microTask; + this._finishCallbackIfDone(); + } else if (hasTaskState.change == 'macroTask') { + this._pendingMacroTasks = hasTaskState.macroTask; + this._finishCallbackIfDone(); + } + } +} + +// Export the class so that new instances can be created with proper +// constructor params. +Zone['AsyncTestZoneSpec'] = AsyncTestZoneSpec; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/fake-async-test.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/fake-async-test.ts new file mode 100644 index 00000000..fb9912e7 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/fake-async-test.ts @@ -0,0 +1,268 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +(function(global: any) { + interface ScheduledFunction { + endTime: number; + id: number; + func: Function; + args: any[]; + delay: number; + } + + class Scheduler { + // Next scheduler id. + public nextId: number = 0; + + // Scheduler queue with the tuple of end time and callback function - sorted by end time. + private _schedulerQueue: ScheduledFunction[] = []; + // Current simulated time in millis. + private _currentTime: number = 0; + + constructor() {} + + scheduleFunction(cb: Function, delay: number, args: any[] = [], id: number = -1): number { + let currentId: number = id < 0 ? this.nextId++ : id; + let endTime = this._currentTime + delay; + + // Insert so that scheduler queue remains sorted by end time. + let newEntry: + ScheduledFunction = {endTime: endTime, id: currentId, func: cb, args: args, delay: delay}; + let i = 0; + for (; i < this._schedulerQueue.length; i++) { + let currentEntry = this._schedulerQueue[i]; + if (newEntry.endTime < currentEntry.endTime) { + break; + } + } + this._schedulerQueue.splice(i, 0, newEntry); + return currentId; + } + + removeScheduledFunctionWithId(id: number): void { + for (let i = 0; i < this._schedulerQueue.length; i++) { + if (this._schedulerQueue[i].id == id) { + this._schedulerQueue.splice(i, 1); + break; + } + } + } + + tick(millis: number = 0): void { + let finalTime = this._currentTime + millis; + while (this._schedulerQueue.length > 0) { + let current = this._schedulerQueue[0]; + if (finalTime < current.endTime) { + // Done processing the queue since it's sorted by endTime. + break; + } else { + // Time to run scheduled function. Remove it from the head of queue. + let current = this._schedulerQueue.shift(); + this._currentTime = current.endTime; + let retval = current.func.apply(global, current.args); + if (!retval) { + // Uncaught exception in the current scheduled function. Stop processing the queue. + break; + } + } + } + this._currentTime = finalTime; + } + } + + class FakeAsyncTestZoneSpec implements ZoneSpec { + static assertInZone(): void { + if (Zone.current.get('FakeAsyncTestZoneSpec') == null) { + throw new Error('The code should be running in the fakeAsync zone to call this function'); + } + } + + private _scheduler: Scheduler = new Scheduler(); + private _microtasks: Function[] = []; + private _lastError: Error = null; + private _uncaughtPromiseErrors: {rejection: any}[] = + Promise[Zone['__symbol__']('uncaughtPromiseErrors')]; + + pendingPeriodicTimers: number[] = []; + pendingTimers: number[] = []; + + constructor(namePrefix: string) { + this.name = 'fakeAsyncTestZone for ' + namePrefix; + } + + private _fnAndFlush(fn: Function, completers: {onSuccess?: Function, onError?: Function}): + Function { + return (...args): boolean => { + fn.apply(global, args); + + if (this._lastError === null) { // Success + if (completers.onSuccess != null) { + completers.onSuccess.apply(global); + } + // Flush microtasks only on success. + this.flushMicrotasks(); + } else { // Failure + if (completers.onError != null) { + completers.onError.apply(global); + } + } + // Return true if there were no errors, false otherwise. + return this._lastError === null; + }; + } + + private static _removeTimer(timers: number[], id: number): void { + let index = timers.indexOf(id); + if (index > -1) { + timers.splice(index, 1); + } + } + + private _dequeueTimer(id: number): Function { + return () => { + FakeAsyncTestZoneSpec._removeTimer(this.pendingTimers, id); + }; + } + + private _requeuePeriodicTimer(fn: Function, interval: number, args: any[], id: number): + Function { + return () => { + // Requeue the timer callback if it's not been canceled. + if (this.pendingPeriodicTimers.indexOf(id) !== -1) { + this._scheduler.scheduleFunction(fn, interval, args, id); + } + }; + } + + private _dequeuePeriodicTimer(id: number): Function { + return () => { + FakeAsyncTestZoneSpec._removeTimer(this.pendingPeriodicTimers, id); + }; + } + + private _setTimeout(fn: Function, delay: number, args: any[]): number { + let removeTimerFn = this._dequeueTimer(this._scheduler.nextId); + // Queue the callback and dequeue the timer on success and error. + let cb = this._fnAndFlush(fn, {onSuccess: removeTimerFn, onError: removeTimerFn}); + let id = this._scheduler.scheduleFunction(cb, delay, args); + this.pendingTimers.push(id); + return id; + } + + private _clearTimeout(id: number): void { + FakeAsyncTestZoneSpec._removeTimer(this.pendingTimers, id); + this._scheduler.removeScheduledFunctionWithId(id); + } + + private _setInterval(fn: Function, interval: number, ...args): number { + let id = this._scheduler.nextId; + let completers = {onSuccess: null, onError: this._dequeuePeriodicTimer(id)}; + let cb = this._fnAndFlush(fn, completers); + + // Use the callback created above to requeue on success. + completers.onSuccess = this._requeuePeriodicTimer(cb, interval, args, id); + + // Queue the callback and dequeue the periodic timer only on error. + this._scheduler.scheduleFunction(cb, interval, args); + this.pendingPeriodicTimers.push(id); + return id; + } + + private _clearInterval(id: number): void { + FakeAsyncTestZoneSpec._removeTimer(this.pendingPeriodicTimers, id); + this._scheduler.removeScheduledFunctionWithId(id); + } + + private _resetLastErrorAndThrow(): void { + let error = this._lastError || this._uncaughtPromiseErrors[0]; + this._uncaughtPromiseErrors.length = 0; + this._lastError = null; + throw error; + } + + tick(millis: number = 0): void { + FakeAsyncTestZoneSpec.assertInZone(); + this.flushMicrotasks(); + this._scheduler.tick(millis); + if (this._lastError !== null) { + this._resetLastErrorAndThrow(); + } + } + + flushMicrotasks(): void { + FakeAsyncTestZoneSpec.assertInZone(); + const flushErrors = () => { + if (this._lastError !== null || this._uncaughtPromiseErrors.length) { + // If there is an error stop processing the microtask queue and rethrow the error. + this._resetLastErrorAndThrow(); + } + }; + while (this._microtasks.length > 0) { + let microtask = this._microtasks.shift(); + microtask(); + } + flushErrors(); + } + + // ZoneSpec implementation below. + + name: string; + + properties: {[key: string]: any} = {'FakeAsyncTestZoneSpec': this}; + + onScheduleTask(delegate: ZoneDelegate, current: Zone, target: Zone, task: Task): Task { + switch (task.type) { + case 'microTask': + this._microtasks.push(task.invoke); + break; + case 'macroTask': + switch (task.source) { + case 'setTimeout': + task.data['handleId'] = + this._setTimeout(task.invoke, task.data['delay'], task.data['args']); + break; + case 'setInterval': + task.data['handleId'] = + this._setInterval(task.invoke, task.data['delay'], task.data['args']); + break; + case 'XMLHttpRequest.send': + throw new Error('Cannot make XHRs from within a fake async test.'); + default: + task = delegate.scheduleTask(target, task); + } + break; + case 'eventTask': + task = delegate.scheduleTask(target, task); + break; + } + return task; + } + + onCancelTask(delegate: ZoneDelegate, current: Zone, target: Zone, task: Task): any { + switch (task.source) { + case 'setTimeout': + return this._clearTimeout(task.data['handleId']); + case 'setInterval': + return this._clearInterval(task.data['handleId']); + default: + return delegate.cancelTask(target, task); + } + } + + onHandleError( + parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, + error: any): boolean { + this._lastError = error; + return false; // Don't propagate error to parent zone. + } + } + + // Export the class so that new instances can be created with proper + // constructor params. + Zone['FakeAsyncTestZoneSpec'] = FakeAsyncTestZoneSpec; +})(typeof window === 'object' && window || typeof self === 'object' && self || global); diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/long-stack-trace.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/long-stack-trace.ts new file mode 100644 index 00000000..d17d547f --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/long-stack-trace.ts @@ -0,0 +1,154 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +const NEWLINE = '\n'; +const SEP = ' ------------- '; +const IGNORE_FRAMES = []; +const creationTrace = '__creationTrace__'; + +class LongStackTrace { + error: Error = getStacktrace(); + timestamp: Date = new Date(); +} + +function getStacktraceWithUncaughtError(): Error { + return new Error('STACKTRACE TRACKING'); +} + +function getStacktraceWithCaughtError(): Error { + try { + throw getStacktraceWithUncaughtError(); + } catch (e) { + return e; + } +} + +// Some implementations of exception handling don't create a stack trace if the exception +// isn't thrown, however it's faster not to actually throw the exception. +const error = getStacktraceWithUncaughtError(); +const coughtError = getStacktraceWithCaughtError(); +const getStacktrace = error.stack ? + getStacktraceWithUncaughtError : + (coughtError.stack ? getStacktraceWithCaughtError : getStacktraceWithUncaughtError); + +function getFrames(error: Error): string[] { + return error.stack ? error.stack.split(NEWLINE) : []; +} + +function addErrorStack(lines: string[], error: Error): void { + let trace: string[] = getFrames(error); + for (let i = 0; i < trace.length; i++) { + const frame = trace[i]; + // Filter out the Frames which are part of stack capturing. + if (!(i < IGNORE_FRAMES.length && IGNORE_FRAMES[i] === frame)) { + lines.push(trace[i]); + } + } +} + +function renderLongStackTrace(frames: LongStackTrace[], stack: string): string { + const longTrace: string[] = [stack]; + + if (frames) { + let timestamp = new Date().getTime(); + for (let i = 0; i < frames.length; i++) { + const traceFrames: LongStackTrace = frames[i]; + const lastTime = traceFrames.timestamp; + longTrace.push( + `${SEP} Elapsed: ${timestamp - lastTime.getTime()} ms; At: ${lastTime} ${SEP}`); + addErrorStack(longTrace, traceFrames.error); + + timestamp = lastTime.getTime(); + } + } + + return longTrace.join(NEWLINE); +} + +Zone['longStackTraceZoneSpec'] = { + name: 'long-stack-trace', + longStackTraceLimit: 10, // Max number of task to keep the stack trace for. + + onScheduleTask: function( + parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, task: Task): any { + const currentTask = Zone.currentTask; + let trace = currentTask && currentTask.data && currentTask.data[creationTrace] || []; + trace = [new LongStackTrace()].concat(trace); + if (trace.length > this.longStackTraceLimit) { + trace.length = this.longStackTraceLimit; + } + if (!task.data) task.data = {}; + task.data[creationTrace] = trace; + return parentZoneDelegate.scheduleTask(targetZone, task); + }, + + onHandleError: function( + parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, error: any): any { + const parentTask = Zone.currentTask || error.task; + if (error instanceof Error && parentTask) { + let stackSetSucceeded: string|boolean = null; + try { + let descriptor = Object.getOwnPropertyDescriptor(error, 'stack'); + if (descriptor && descriptor.configurable) { + const delegateGet = descriptor.get; + const value = descriptor.value; + descriptor = { + get: function() { + return renderLongStackTrace( + parentTask.data && parentTask.data[creationTrace], + delegateGet ? delegateGet.apply(this) : value); + } + }; + Object.defineProperty(error, 'stack', descriptor); + stackSetSucceeded = true; + } + } catch (e) { + } + const longStack: string = stackSetSucceeded ? + null : + renderLongStackTrace(parentTask.data && parentTask.data[creationTrace], error.stack); + if (!stackSetSucceeded) { + try { + stackSetSucceeded = error.stack = longStack; + } catch (e) { + } + } + if (!stackSetSucceeded) { + try { + stackSetSucceeded = (error as any).longStack = longStack; + } catch (e) { + } + } + } + return parentZoneDelegate.handleError(targetZone, error); + } +}; + +function captureStackTraces(stackTraces: string[][], count: number): void { + if (count > 0) { + stackTraces.push(getFrames((new LongStackTrace()).error)); + captureStackTraces(stackTraces, count - 1); + } +} + +function computeIgnoreFrames() { + const frames: string[][] = []; + captureStackTraces(frames, 2); + const frames1 = frames[0]; + const frames2 = frames[1]; + for (let i = 0; i < frames1.length; i++) { + const frame1 = frames1[i]; + const frame2 = frames2[i]; + if (frame1 === frame2) { + IGNORE_FRAMES.push(frame1); + } else { + break; + } + } +} +computeIgnoreFrames(); diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/proxy.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/proxy.ts new file mode 100644 index 00000000..18200fec --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/proxy.ts @@ -0,0 +1,139 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +class ProxyZoneSpec implements ZoneSpec { + name: string = 'ProxyZone'; + + private _delegateSpec: ZoneSpec; + + properties: {[k: string]: any} = {'ProxyZoneSpec': this}; + propertyKeys: string[] = null; + + static get(): ProxyZoneSpec { + return Zone.current.get('ProxyZoneSpec'); + } + + static isLoaded(): boolean { + return ProxyZoneSpec.get() instanceof ProxyZoneSpec; + } + + static assertPresent(): ProxyZoneSpec { + if (!this.isLoaded()) { + throw new Error(`Expected to be running in 'ProxyZone', but it was not found.`); + } + return ProxyZoneSpec.get(); + } + + constructor(private defaultSpecDelegate: ZoneSpec = null) { + this.setDelegate(defaultSpecDelegate); + } + + + setDelegate(delegateSpec: ZoneSpec) { + this._delegateSpec = delegateSpec; + this.propertyKeys && this.propertyKeys.forEach((key) => delete this.properties[key]); + this.propertyKeys = null; + if (delegateSpec && delegateSpec.properties) { + this.propertyKeys = Object.keys(delegateSpec.properties); + this.propertyKeys.forEach((k) => this.properties[k] = delegateSpec.properties[k]); + } + } + + getDelegate() { + return this._delegateSpec; + } + + + resetDelegate() { + this.setDelegate(this.defaultSpecDelegate); + } + + + onFork(parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, zoneSpec: ZoneSpec): + Zone { + if (this._delegateSpec && this._delegateSpec.onFork) { + return this._delegateSpec.onFork(parentZoneDelegate, currentZone, targetZone, zoneSpec); + } else { + return parentZoneDelegate.fork(targetZone, zoneSpec); + } + } + + + onIntercept( + parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, delegate: Function, + source: string): Function { + if (this._delegateSpec && this._delegateSpec.onIntercept) { + return this._delegateSpec.onIntercept( + parentZoneDelegate, currentZone, targetZone, delegate, source); + } else { + return parentZoneDelegate.intercept(targetZone, delegate, source); + } + } + + + onInvoke( + parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, delegate: Function, + applyThis: any, applyArgs: any[], source: string): any { + if (this._delegateSpec && this._delegateSpec.onInvoke) { + return this._delegateSpec.onInvoke( + parentZoneDelegate, currentZone, targetZone, delegate, applyThis, applyArgs, source); + } else { + return parentZoneDelegate.invoke(targetZone, delegate, applyThis, applyArgs, source); + } + } + + onHandleError(parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, error: any): + boolean { + if (this._delegateSpec && this._delegateSpec.onHandleError) { + return this._delegateSpec.onHandleError(parentZoneDelegate, currentZone, targetZone, error); + } else { + return parentZoneDelegate.handleError(targetZone, error); + } + } + + onScheduleTask(parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, task: Task): + Task { + if (this._delegateSpec && this._delegateSpec.onScheduleTask) { + return this._delegateSpec.onScheduleTask(parentZoneDelegate, currentZone, targetZone, task); + } else { + return parentZoneDelegate.scheduleTask(targetZone, task); + } + } + + onInvokeTask( + parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, task: Task, + applyThis: any, applyArgs: any): any { + if (this._delegateSpec && this._delegateSpec.onFork) { + return this._delegateSpec.onInvokeTask( + parentZoneDelegate, currentZone, targetZone, task, applyThis, applyArgs); + } else { + return parentZoneDelegate.invokeTask(targetZone, task, applyThis, applyArgs); + } + } + + onCancelTask(parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, task: Task): + any { + if (this._delegateSpec && this._delegateSpec.onCancelTask) { + return this._delegateSpec.onCancelTask(parentZoneDelegate, currentZone, targetZone, task); + } else { + return parentZoneDelegate.cancelTask(targetZone, task); + } + } + + onHasTask(delegate: ZoneDelegate, current: Zone, target: Zone, hasTaskState: HasTaskState): void { + if (this._delegateSpec && this._delegateSpec.onHasTask) { + this._delegateSpec.onHasTask(delegate, current, target, hasTaskState); + } else { + delegate.hasTask(target, hasTaskState); + } + } +} + +// Export the class so that new instances can be created with proper +// constructor params. +Zone['ProxyZoneSpec'] = ProxyZoneSpec; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/sync-test.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/sync-test.ts new file mode 100644 index 00000000..f0f44b84 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/sync-test.ts @@ -0,0 +1,35 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +class SyncTestZoneSpec implements ZoneSpec { + runZone = Zone.current; + + constructor(namePrefix: string) { + this.name = 'syncTestZone for ' + namePrefix; + } + + // ZoneSpec implementation below. + + name: string; + + onScheduleTask(delegate: ZoneDelegate, current: Zone, target: Zone, task: Task): Task { + switch (task.type) { + case 'microTask': + case 'macroTask': + throw new Error(`Cannot call ${task.source} from within a sync test.`); + case 'eventTask': + task = delegate.scheduleTask(target, task); + break; + } + return task; + } +} + +// Export the class so that new instances can be created with proper +// constructor params. +Zone['SyncTestZoneSpec'] = SyncTestZoneSpec; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/task-tracking.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/task-tracking.ts new file mode 100644 index 00000000..36ea191f --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/task-tracking.ts @@ -0,0 +1,82 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +/** + * A `TaskTrackingZoneSpec` allows one to track all outstanding Tasks. + * + * This is useful in tests. For example to see which tasks are preventing a test from completing + * or an automated way of releasing all of the event listeners at the end of the test. + */ +class TaskTrackingZoneSpec implements ZoneSpec { + name = 'TaskTrackingZone'; + microTasks: Task[] = []; + macroTasks: Task[] = []; + eventTasks: Task[] = []; + properties: {[key: string]: any} = {'TaskTrackingZone': this}; + + static get() { + return Zone.current.get('TaskTrackingZone'); + } + + private getTasksFor(type: string): Task[] { + switch (type) { + case 'microTask': + return this.microTasks; + case 'macroTask': + return this.macroTasks; + case 'eventTask': + return this.eventTasks; + } + throw new Error('Unknown task format: ' + type); + } + + onScheduleTask(parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, task: Task): + Task { + task['creationLocation'] = new Error(`Task '${task.type}' from '${task.source}'.`); + const tasks = this.getTasksFor(task.type); + tasks.push(task); + return parentZoneDelegate.scheduleTask(targetZone, task); + } + + onCancelTask(parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, task: Task): + any { + const tasks = this.getTasksFor(task.type); + for (let i = 0; i < tasks.length; i++) { + if (tasks[i] == task) { + tasks.splice(i, 1); + break; + } + } + return parentZoneDelegate.cancelTask(targetZone, task); + } + + onInvokeTask( + parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, task: Task, + applyThis: any, applyArgs: any): any { + if (task.type === 'eventTask') + return parentZoneDelegate.invokeTask(targetZone, task, applyThis, applyArgs); + const tasks = this.getTasksFor(task.type); + for (let i = 0; i < tasks.length; i++) { + if (tasks[i] == task) { + tasks.splice(i, 1); + break; + } + } + return parentZoneDelegate.invokeTask(targetZone, task, applyThis, applyArgs); + } + + clearEvents() { + while (this.eventTasks.length) { + Zone.current.cancelTask(this.eventTasks[0]); + } + } +} + +// Export the class so that new instances can be created with proper +// constructor params. +Zone['TaskTrackingZoneSpec'] = TaskTrackingZoneSpec; diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/wtf.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/wtf.ts new file mode 100644 index 00000000..c38d1362 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone-spec/wtf.ts @@ -0,0 +1,158 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +(function(global) { + interface Wtf { + trace: WtfTrace; + } + interface WtfScope {} + ; + interface WtfRange {} + ; + interface WtfTrace { + events: WtfEvents; + leaveScope(scope: WtfScope, returnValue?: any): void; + beginTimeRange(rangeType: string, action: string): WtfRange; + endTimeRange(range: WtfRange): void; + } + interface WtfEvents { + createScope(signature: string, flags?: any): WtfScopeFn; + createInstance(signature: string, flags?: any): WtfEventFn; + } + + type WtfScopeFn = (...args: any[]) => WtfScope; + type WtfEventFn = (...args: any[]) => any; + + // Detect and setup WTF. + let wtfTrace: WtfTrace = null; + let wtfEvents: WtfEvents = null; + const wtfEnabled: boolean = (function(): boolean { + const wtf: Wtf = global['wtf']; + if (wtf) { + wtfTrace = wtf.trace; + if (wtfTrace) { + wtfEvents = wtfTrace.events; + return true; + } + } + return false; + })(); + + class WtfZoneSpec implements ZoneSpec { + name: string = 'WTF'; + + static forkInstance = + wtfEnabled && wtfEvents.createInstance('Zone:fork(ascii zone, ascii newZone)'); + static scheduleInstance: {[key: string]: WtfEventFn} = {}; + static cancelInstance: {[key: string]: WtfEventFn} = {}; + static invokeScope: {[key: string]: WtfEventFn} = {}; + static invokeTaskScope: {[key: string]: WtfEventFn} = {}; + + onFork( + parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, + zoneSpec: ZoneSpec): Zone { + const retValue = parentZoneDelegate.fork(targetZone, zoneSpec); + WtfZoneSpec.forkInstance(zonePathName(targetZone), retValue.name); + return retValue; + } + + onInvoke( + parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, delegate: Function, + applyThis: any, applyArgs: any[], source: string): any { + let scope = WtfZoneSpec.invokeScope[source]; + if (!scope) { + scope = WtfZoneSpec.invokeScope[source] = + wtfEvents.createScope(`Zone:invoke:${source}(ascii zone)`); + } + return wtfTrace.leaveScope( + scope(zonePathName(targetZone)), + parentZoneDelegate.invoke(targetZone, delegate, applyThis, applyArgs, source)); + } + + + onHandleError( + parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, + error: any): boolean { + return parentZoneDelegate.handleError(targetZone, error); + } + + onScheduleTask( + parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, task: Task): any { + const key = task.type + ':' + task.source; + let instance = WtfZoneSpec.scheduleInstance[key]; + if (!instance) { + instance = WtfZoneSpec.scheduleInstance[key] = + wtfEvents.createInstance(`Zone:schedule:${key}(ascii zone, any data)`); + } + const retValue = parentZoneDelegate.scheduleTask(targetZone, task); + instance(zonePathName(targetZone), shallowObj(task.data, 2)); + return retValue; + } + + + onInvokeTask( + parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, task: Task, + applyThis: any, applyArgs: any[]): any { + const source = task.source; + let scope = WtfZoneSpec.invokeTaskScope[source]; + if (!scope) { + scope = WtfZoneSpec.invokeTaskScope[source] = + wtfEvents.createScope(`Zone:invokeTask:${source}(ascii zone)`); + } + return wtfTrace.leaveScope( + scope(zonePathName(targetZone)), + parentZoneDelegate.invokeTask(targetZone, task, applyThis, applyArgs)); + } + + onCancelTask(parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, task: Task): + any { + const key = task.source; + let instance = WtfZoneSpec.cancelInstance[key]; + if (!instance) { + instance = WtfZoneSpec.cancelInstance[key] = + wtfEvents.createInstance(`Zone:cancel:${key}(ascii zone, any options)`); + } + const retValue = parentZoneDelegate.cancelTask(targetZone, task); + instance(zonePathName(targetZone), shallowObj(task.data, 2)); + return retValue; + }; + } + + function shallowObj(obj: any, depth: number): any { + if (!depth) return null; + const out = {}; + for (const key in obj) { + if (obj.hasOwnProperty(key)) { + let value = obj[key]; + switch (typeof value) { + case 'object': + const name = value && value.constructor && (value.constructor).name; + value = name == (Object).name ? shallowObj(value, depth - 1) : name; + break; + case 'function': + value = value.name || undefined; + break; + } + out[key] = value; + } + } + return out; + } + + function zonePathName(zone: Zone) { + let name: string = zone.name; + zone = zone.parent; + while (zone != null) { + name = zone.name + '::' + name; + zone = zone.parent; + } + return name; + } + + Zone['wtfZoneSpec'] = !wtfEnabled ? null : new WtfZoneSpec(); +})(typeof window === 'object' && window || typeof self === 'object' && self || global); diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone.ts b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone.ts new file mode 100644 index 00000000..9938cc0e --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/lib/zone.ts @@ -0,0 +1,1627 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +/* + * Suppress closure compiler errors about unknown 'global' variable + * @fileoverview + * @suppress {undefinedVars} + */ + +/** + * Zone is a mechanism for intercepting and keeping track of asynchronous work. + * + * A Zone is a global object which is configured with rules about how to intercept and keep track + * of the asynchronous callbacks. Zone has these responsibilities: + * + * 1. Intercept asynchronous task scheduling + * 2. Wrap callbacks for error-handling and zone tracking across async operations. + * 3. Provide a way to attach data to zones + * 4. Provide a context specific last frame error handling + * 5. (Intercept blocking methods) + * + * A zone by itself does not do anything, instead it relies on some other code to route existing + * platform API through it. (The zone library ships with code which monkey patches all of the + * browsers's asynchronous API and redirects them through the zone for interception.) + * + * In its simplest form a zone allows one to intercept the scheduling and calling of asynchronous + * operations, and execute additional code before as well as after the asynchronous task. The rules + * of interception are configured using [ZoneConfig]. There can be many different zone instances in + * a system, but only one zone is active at any given time which can be retrieved using + * [Zone#current]. + * + * + * + * ## Callback Wrapping + * + * An important aspect of the zones is that they should persist across asynchronous operations. To + * achieve this, when a future work is scheduled through async API, it is necessary to capture, and + * subsequently restore the current zone. For example if a code is running in zone `b` and it + * invokes `setTimeout` to scheduleTask work later, the `setTimeout` method needs to 1) capture the + * current zone and 2) wrap the `wrapCallback` in code which will restore the current zone `b` once + * the wrapCallback executes. In this way the rules which govern the current code are preserved in + * all future asynchronous tasks. There could be a different zone `c` which has different rules and + * is associated with different asynchronous tasks. As these tasks are processed, each asynchronous + * wrapCallback correctly restores the correct zone, as well as preserves the zone for future + * asynchronous callbacks. + * + * Example: Suppose a browser page consist of application code as well as third-party + * advertisement code. (These two code bases are independent, developed by different mutually + * unaware developers.) The application code may be interested in doing global error handling and + * so it configures the `app` zone to send all of the errors to the server for analysis, and then + * executes the application in the `app` zone. The advertising code is interested in the same + * error processing but it needs to send the errors to a different third-party. So it creates the + * `ads` zone with a different error handler. Now both advertising as well as application code + * create many asynchronous operations, but the [Zone] will ensure that all of the asynchronous + * operations created from the application code will execute in `app` zone with its error + * handler and all of the advertisement code will execute in the `ads` zone with its error handler. + * This will not only work for the async operations created directly, but also for all subsequent + * asynchronous operations. + * + * If you think of chain of asynchronous operations as a thread of execution (bit of a stretch) + * then [Zone#current] will act as a thread local variable. + * + * + * + * ## Asynchronous operation scheduling + * + * In addition to wrapping the callbacks to restore the zone, all operations which cause a + * scheduling of work for later are routed through the current zone which is allowed to intercept + * them by adding work before or after the wrapCallback as well as using different means of + * achieving the request. (Useful for unit testing, or tracking of requests). In some instances + * such as `setTimeout` the wrapping of the wrapCallback and scheduling is done in the same + * wrapCallback, but there are other examples such as `Promises` where the `then` wrapCallback is + * wrapped, but the execution of `then` in triggered by `Promise` scheduling `resolve` work. + * + * Fundamentally there are three kinds of tasks which can be scheduled: + * + * 1. [MicroTask] used for doing work right after the current task. This is non-cancelable which is + * guaranteed to run exactly once and immediately. + * 2. [MacroTask] used for doing work later. Such as `setTimeout`. This is typically cancelable + * which is guaranteed to execute at least once after some well understood delay. + * 3. [EventTask] used for listening on some future event. This may execute zero or more times, with + * an unknown delay. + * + * Each asynchronous API is modeled and routed through one of these APIs. + * + * + * ### [MicroTask] + * + * [MicroTask]s represent work which will be done in current VM turn as soon as possible, before VM + * yielding. + * + * + * ### [TimerTask] + * + * [TimerTask]s represent work which will be done after some delay. (Sometimes the delay is + * approximate such as on next available animation frame). Typically these methods include: + * `setTimeout`, `setImmediate`, `setInterval`, `requestAnimationFrame`, and all browser specif + * variants. + * + * + * ### [EventTask] + * + * [EventTask]s represent a request to create a listener on an event. Unlike the other task + * events may never be executed, but typically execute more than once. There is no queue of + * events, rather their callbacks are unpredictable both in order and time. + * + * + * ## Global Error Handling + * + * + * ## Composability + * + * Zones can be composed together through [Zone.fork()]. A child zone may create its own set of + * rules. A child zone is expected to either: + * + * 1. Delegate the interception to a parent zone, and optionally add before and after wrapCallback + * hook.s + * 2) Or process the request itself without delegation. + * + * Composability allows zones to keep their concerns clean. For example a top most zone may chose + * to handle error handling, while child zones may chose to do user action tracking. + * + * + * ## Root Zone + * + * At the start the browser will run in a special root zone, which is configure to behave exactly + * like the platform, making any existing code which is not-zone aware behave as expected. All + * zones are children of the root zone. + * + */ +interface Zone { + /** + * + * @returns {Zone} The parent Zone. + */ + parent: Zone; + /** + * @returns {string} The Zone name (useful for debugging) + */ + name: string; + + /** + * Returns a value associated with the `key`. + * + * If the current zone does not have a key, the request is delegated to the parent zone. Use + * [ZoneSpec.properties] to configure the set of properties associated with the current zone. + * + * @param key The key to retrieve. + * @returns {any} The value for the key, or `undefined` if not found. + */ + get(key: string): any; + /** + * Returns a Zone which defines a `key`. + * + * Recursively search the parent Zone until a Zone which has a property `key` is found. + * + * @param key The key to use for identification of the returned zone. + * @returns {Zone} The Zone which defines the `key`, `null` if not found. + */ + getZoneWith(key: string): Zone; + /** + * Used to create a child zone. + * + * @param zoneSpec A set of rules which the child zone should follow. + * @returns {Zone} A new child zone. + */ + fork(zoneSpec: ZoneSpec): Zone; + /** + * Wraps a callback function in a new function which will properly restore the current zone upon + * invocation. + * + * The wrapped function will properly forward `this` as well as `arguments` to the `callback`. + * + * Before the function is wrapped the zone can intercept the `callback` by declaring + * [ZoneSpec.onIntercept]. + * + * @param callback the function which will be wrapped in the zone. + * @param source A unique debug location of the API being wrapped. + * @returns {function(): *} A function which will invoke the `callback` through [Zone.runGuarded]. + */ + wrap(callback: F, source: string): F; + /** + * Invokes a function in a given zone. + * + * The invocation of `callback` can be intercepted be declaring [ZoneSpec.onInvoke]. + * + * @param callback The function to invoke. + * @param applyThis + * @param applyArgs + * @param source A unique debug location of the API being invoked. + * @returns {any} Value from the `callback` function. + */ + run(callback: Function, applyThis?: any, applyArgs?: any[], source?: string): T; + /** + * Invokes a function in a given zone and catches any exceptions. + * + * Any exceptions thrown will be forwarded to [Zone.HandleError]. + * + * The invocation of `callback` can be intercepted be declaring [ZoneSpec.onInvoke]. The + * handling of exceptions can intercepted by declaring [ZoneSpec.handleError]. + * + * @param callback The function to invoke. + * @param applyThis + * @param applyArgs + * @param source A unique debug location of the API being invoked. + * @returns {any} Value from the `callback` function. + */ + runGuarded(callback: Function, applyThis?: any, applyArgs?: any[], source?: string): T; + /** + * Execute the Task by restoring the [Zone.currentTask] in the Task's zone. + * + * @param callback + * @param applyThis + * @param applyArgs + * @returns {*} + */ + runTask(task: Task, applyThis?: any, applyArgs?: any): any; + scheduleMicroTask( + source: string, callback: Function, data?: TaskData, + customSchedule?: (task: Task) => void): MicroTask; + scheduleMacroTask( + source: string, callback: Function, data: TaskData, customSchedule: (task: Task) => void, + customCancel: (task: Task) => void): MacroTask; + scheduleEventTask( + source: string, callback: Function, data: TaskData, customSchedule: (task: Task) => void, + customCancel: (task: Task) => void): EventTask; + /** + * Allows the zone to intercept canceling of scheduled Task. + * + * The interception is configured using [ZoneSpec.onCancelTask]. The default canceler invokes + * the [Task.cancelFn]. + * + * @param task + * @returns {any} + */ + cancelTask(task: Task): any; +} + +interface ZoneType { + /** + * @returns {Zone} Returns the current [Zone]. Returns the current zone. The only way to change + * the current zone is by invoking a run() method, which will update the current zone for the + * duration of the run method callback. + */ + current: Zone; + /** + * @returns {Task} The task associated with the current execution. + */ + currentTask: Task; + + /** + * Verify that Zone has been correctly patched. Specifically that Promise is zone aware. + */ + assertZonePatched(); +} + +/** + * Provides a way to configure the interception of zone events. + * + * Only the `name` property is required (all other are optional). + */ +interface ZoneSpec { + /** + * The name of the zone. Usefull when debugging Zones. + */ + name: string; + + /** + * A set of properties to be associated with Zone. Use [Zone.get] to retrive them. + */ + properties?: {[key: string]: any}; + + /** + * Allows the interception of zone forking. + * + * When the zone is being forked, the request is forwarded to this method for interception. + * + * @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation. + * @param currentZone The current [Zone] where the current interceptor has beed declared. + * @param targetZone The [Zone] which originally received the request. + * @param zoneSpec The argument passed into the `fork` method. + */ + onFork?: + (parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, + zoneSpec: ZoneSpec) => Zone; + + /** + * Allows interception of the wrapping of the callback. + * + * @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation. + * @param currentZone The current [Zone] where the current interceptor has beed declared. + * @param targetZone The [Zone] which originally received the request. + * @param delegate The argument passed into the `warp` method. + * @param source The argument passed into the `warp` method. + */ + onIntercept?: + (parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, delegate: Function, + source: string) => Function; + + /** + * Allows interception of the callback invocation. + * + * @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation. + * @param currentZone The current [Zone] where the current interceptor has beed declared. + * @param targetZone The [Zone] which originally received the request. + * @param delegate The argument passed into the `run` method. + * @param applyThis The argument passed into the `run` method. + * @param applyArgs The argument passed into the `run` method. + * @param source The argument passed into the `run` method. + */ + onInvoke?: + (parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, delegate: Function, + applyThis: any, applyArgs: any[], source: string) => any; + + /** + * Allows interception of the error handling. + * + * @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation. + * @param currentZone The current [Zone] where the current interceptor has beed declared. + * @param targetZone The [Zone] which originally received the request. + * @param error The argument passed into the `handleError` method. + */ + onHandleError?: + (parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, + error: any) => boolean; + + /** + * Allows interception of task scheduling. + * + * @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation. + * @param currentZone The current [Zone] where the current interceptor has beed declared. + * @param targetZone The [Zone] which originally received the request. + * @param task The argument passed into the `scheduleTask` method. + */ + onScheduleTask?: + (parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, task: Task) => Task; + + onInvokeTask?: + (parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, task: Task, + applyThis: any, applyArgs: any) => any; + + /** + * Allows interception of task cancelation. + * + * @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation. + * @param currentZone The current [Zone] where the current interceptor has beed declared. + * @param targetZone The [Zone] which originally received the request. + * @param task The argument passed into the `cancelTask` method. + */ + onCancelTask?: + (parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, task: Task) => any; + + /** + * Notifies of changes to the task queue empty status. + * + * @param parentZoneDelegate Delegate which performs the parent [ZoneSpec] operation. + * @param currentZone The current [Zone] where the current interceptor has beed declared. + * @param targetZone The [Zone] which originally received the request. + * @param isEmpty + */ + onHasTask?: + (delegate: ZoneDelegate, current: Zone, target: Zone, hasTaskState: HasTaskState) => void; +} +; + +/** + * A delegate when intercepting zone operations. + * + * A ZoneDelegate is needed because a child zone can't simply invoke a method on a parent zone. For + * example a child zone wrap can't just call parent zone wrap. Doing so would create a callback + * which is bound to the parent zone. What we are interested is intercepting the callback before it + * is bound to any zone. Furthermore, we also need to pass the targetZone (zone which received the + * original request) to the delegate. + * + * The ZoneDelegate methods mirror those of Zone with an addition of extra targetZone argument in + * the method signature. (The original Zone which received the request.) Some methods are renamed + * to prevent confusion, because they have slightly different semantics and arguments. + * + * - `wrap` => `intercept`: The `wrap` method delegates to `intercept`. The `wrap` method returns + * a callback which will run in a given zone, where as intercept allows wrapping the callback + * so that additional code can be run before and after, but does not associated the callback + * with the zone. + * - `run` => `invoke`: The `run` method delegates to `invoke` to perform the actual execution of + * the callback. The `run` method switches to new zone; saves and restores the `Zone.current`; + * and optionally performs error handling. The invoke is not responsible for error handling, + * or zone management. + * + * Not every method is usually overwritten in the child zone, for this reason the ZoneDelegate + * stores the closest zone which overwrites this behavior along with the closest ZoneSpec. + * + * NOTE: We have tried to make this API analogous to Event bubbling with target and current + * properties. + * + * Note: The ZoneDelegate treats ZoneSpec as class. This allows the ZoneSpec to use its `this` to + * store internal state. + */ +interface ZoneDelegate { + zone: Zone; + fork(targetZone: Zone, zoneSpec: ZoneSpec): Zone; + intercept(targetZone: Zone, callback: Function, source: string): Function; + invoke(targetZone: Zone, callback: Function, applyThis: any, applyArgs: any[], source: string): + any; + handleError(targetZone: Zone, error: any): boolean; + scheduleTask(targetZone: Zone, task: Task): Task; + invokeTask(targetZone: Zone, task: Task, applyThis: any, applyArgs: any): any; + cancelTask(targetZone: Zone, task: Task): any; + hasTask(targetZone: Zone, isEmpty: HasTaskState): void; +} + +type HasTaskState = { + microTask: boolean; macroTask: boolean; eventTask: boolean; change: TaskType; +}; + +/** + * Task type: `microTask`, `macroTask`, `eventTask`. + */ +type TaskType = string; /* TS v1.8 => "microTask" | "macroTask" | "eventTask" */ +; + +/** + */ +interface TaskData { + /** + * A periodic [MacroTask] is such which get automatically rescheduled after it is executed. + */ + isPeriodic?: boolean; + + /** + * Delay in milliseconds when the Task will run. + */ + delay?: number; + + /** + * identifier returned by the native setTimeout. + */ + handleId?: number; +} + +/** + * Represents work which is executed with a clean stack. + * + * Tasks are used in Zones to mark work which is performed on clean stack frame. There are three + * kinds of task. [MicroTask], [MacroTask], and [EventTask]. + * + * A JS VM can be modeled as a [MicroTask] queue, [MacroTask] queue, and [EventTask] set. + * + * - [MicroTask] queue represents a set of tasks which are executing right after the current stack + * frame becomes clean and before a VM yield. All [MicroTask]s execute in order of insertion + * before VM yield and the next [MacroTask] is executed. + * - [MacroTask] queue represents a set of tasks which are executed one at a time after each VM + * yield. The queue is order by time, and insertions can happen in any location. + * - [EventTask] is a set of tasks which can at any time be inserted to the end of the [MacroTask] + * queue. This happens when the event fires. + * + */ +interface Task { + /** + * Task type: `microTask`, `macroTask`, `eventTask`. + */ + type: TaskType; + + /** + * Debug string representing the API which requested the scheduling of the task. + */ + source: string; + + /** + * The Function to be used by the VM on entering the [Task]. This function will delegate to + * [Zone.runTask] and delegate to `callback`. + */ + invoke: Function; + + /** + * Function which needs to be executed by the Task after the [Zone.currentTask] has been set to + * the current task. + */ + callback: Function; + + /** + * Task specific options associated with the current task. This is passed to the `scheduleFn`. + */ + data: TaskData; + + /** + * Represents the default work which needs to be done to schedule the Task by the VM. + * + * A zone may chose to intercept this function and perform its own scheduling. + */ + scheduleFn: (task: Task) => void; + + /** + * Represents the default work which needs to be done to un-schedule the Task from the VM. Not all + * Tasks are cancelable, and therefore this method is optional. + * + * A zone may chose to intercept this function and perform its own scheduling. + */ + cancelFn: (task: Task) => void; + + /** + * @type {Zone} The zone which will be used to invoke the `callback`. The Zone is captured + * at the time of Task creation. + */ + zone: Zone; + + /** + * Number of times the task has been executed, or -1 if canceled. + */ + runCount: number; +} + +interface MicroTask extends Task { + /* TS v1.8 => type: 'microTask'; */ +} + +interface MacroTask extends Task { + /* TS v1.8 => type: 'macroTask'; */ +} + +interface EventTask extends Task { + /* TS v1.8 => type: 'eventTask'; */ +} + +/** + * Extend the Error with additional fields for rewritten stack frames + */ +interface Error { + /** + * Stack trace where extra frames have been removed and zone names added. + */ + zoneAwareStack?: string; + + /** + * Original stack trace with no modiffications + */ + originalStack?: string; +} + +/** @internal */ +type AmbientZone = Zone; +/** @internal */ +type AmbientZoneDelegate = ZoneDelegate; + +const Zone: ZoneType = (function(global: any) { + if (global['Zone']) { + throw new Error('Zone already loaded.'); + } + + class Zone implements AmbientZone { + static __symbol__: (name: string) => string = __symbol__; + + static assertZonePatched() { + if (global.Promise !== ZoneAwarePromise) { + throw new Error( + 'Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' + + 'has been overwritten.\n' + + 'Most likely cause is that a Promise polyfill has been loaded ' + + 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' + + 'If you must load one, do so before loading zone.js.)'); + } + } + + + static get current(): AmbientZone { + return _currentZoneFrame.zone; + }; + static get currentTask(): Task { + return _currentTask; + }; + + public get parent(): AmbientZone { + return this._parent; + }; + public get name(): string { + return this._name; + }; + + + private _parent: Zone; + private _name: string; + private _properties: {[key: string]: any} = null; + private _zoneDelegate: ZoneDelegate; + + constructor(parent: Zone, zoneSpec: ZoneSpec) { + this._parent = parent; + this._name = zoneSpec ? zoneSpec.name || 'unnamed' : ''; + this._properties = zoneSpec && zoneSpec.properties || {}; + this._zoneDelegate = + new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec); + } + + public get(key: string): any { + const zone: Zone = this.getZoneWith(key) as Zone; + if (zone) return zone._properties[key]; + } + + public getZoneWith(key: string): AmbientZone { + let current: Zone = this; + while (current) { + if (current._properties.hasOwnProperty(key)) { + return current; + } + current = current._parent; + } + return null; + } + + public fork(zoneSpec: ZoneSpec): AmbientZone { + if (!zoneSpec) throw new Error('ZoneSpec required!'); + return this._zoneDelegate.fork(this, zoneSpec); + } + + public wrap(callback: T, source: string): T { + if (typeof callback !== 'function') { + throw new Error('Expecting function got: ' + callback); + } + const _callback = this._zoneDelegate.intercept(this, callback, source); + const zone: Zone = this; + return function() { + return zone.runGuarded(_callback, this, arguments, source); + } as any as T; + } + + public run(callback: Function, applyThis?: any, applyArgs?: any[], source?: string): any; + public run( + callback: (...args: any[]) => T, applyThis: any = null, applyArgs: any[] = null, + source: string = null): T { + _currentZoneFrame = new ZoneFrame(_currentZoneFrame, this); + try { + return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); + } finally { + _currentZoneFrame = _currentZoneFrame.parent; + } + } + + public runGuarded(callback: Function, applyThis?: any, applyArgs?: any[], source?: string): any; + public runGuarded( + callback: (...args: any[]) => T, applyThis: any = null, applyArgs: any[] = null, + source: string = null) { + _currentZoneFrame = new ZoneFrame(_currentZoneFrame, this); + try { + try { + return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); + } catch (error) { + if (this._zoneDelegate.handleError(this, error)) { + throw error; + } + } + } finally { + _currentZoneFrame = _currentZoneFrame.parent; + } + } + + + runTask(task: Task, applyThis?: any, applyArgs?: any): any { + task.runCount++; + if (task.zone != this) + throw new Error( + 'A task can only be run in the zone which created it! (Creation: ' + task.zone.name + + '; Execution: ' + this.name + ')'); + const previousTask = _currentTask; + _currentTask = task; + _currentZoneFrame = new ZoneFrame(_currentZoneFrame, this); + try { + if (task.type == 'macroTask' && task.data && !task.data.isPeriodic) { + task.cancelFn = null; + } + try { + return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs); + } catch (error) { + if (this._zoneDelegate.handleError(this, error)) { + throw error; + } + } + } finally { + _currentZoneFrame = _currentZoneFrame.parent; + _currentTask = previousTask; + } + } + + + scheduleMicroTask( + source: string, callback: Function, data?: TaskData, + customSchedule?: (task: Task) => void): MicroTask { + return this._zoneDelegate.scheduleTask( + this, new ZoneTask('microTask', this, source, callback, data, customSchedule, null)); + } + + scheduleMacroTask( + source: string, callback: Function, data: TaskData, customSchedule: (task: Task) => void, + customCancel: (task: Task) => void): MacroTask { + return this._zoneDelegate.scheduleTask( + this, + new ZoneTask('macroTask', this, source, callback, data, customSchedule, customCancel)); + } + + scheduleEventTask( + source: string, callback: Function, data: TaskData, customSchedule: (task: Task) => void, + customCancel: (task: Task) => void): EventTask { + return this._zoneDelegate.scheduleTask( + this, + new ZoneTask('eventTask', this, source, callback, data, customSchedule, customCancel)); + } + + cancelTask(task: Task): any { + const value = this._zoneDelegate.cancelTask(this, task); + task.runCount = -1; + task.cancelFn = null; + return value; + } + }; + + class ZoneDelegate implements AmbientZoneDelegate { + public zone: Zone; + + private _taskCounts: {microTask: number, + macroTask: number, + eventTask: number} = {microTask: 0, macroTask: 0, eventTask: 0}; + + private _parentDelegate: ZoneDelegate; + + private _forkDlgt: ZoneDelegate; + private _forkZS: ZoneSpec; + private _forkCurrZone: Zone; + + private _interceptDlgt: ZoneDelegate; + private _interceptZS: ZoneSpec; + private _interceptCurrZone: Zone; + + private _invokeDlgt: ZoneDelegate; + private _invokeZS: ZoneSpec; + private _invokeCurrZone: Zone; + + private _handleErrorDlgt: ZoneDelegate; + private _handleErrorZS: ZoneSpec; + private _handleErrorCurrZone: Zone; + + private _scheduleTaskDlgt: ZoneDelegate; + private _scheduleTaskZS: ZoneSpec; + private _scheduleTaskCurrZone: Zone; + + private _invokeTaskDlgt: ZoneDelegate; + private _invokeTaskZS: ZoneSpec; + private _invokeTaskCurrZone: Zone; + + private _cancelTaskDlgt: ZoneDelegate; + private _cancelTaskZS: ZoneSpec; + private _cancelTaskCurrZone: Zone; + + private _hasTaskDlgt: ZoneDelegate; + private _hasTaskZS: ZoneSpec; + private _hasTaskCurrZone: Zone; + + constructor(zone: Zone, parentDelegate: ZoneDelegate, zoneSpec: ZoneSpec) { + this.zone = zone; + this._parentDelegate = parentDelegate; + + this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS); + this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt); + this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone); + + this._interceptZS = + zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS); + this._interceptDlgt = + zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt); + this._interceptCurrZone = + zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone); + + this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS); + this._invokeDlgt = + zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt); + this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone); + + this._handleErrorZS = + zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS); + this._handleErrorDlgt = + zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt); + this._handleErrorCurrZone = + zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone); + + this._scheduleTaskZS = + zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS); + this._scheduleTaskDlgt = + zoneSpec && (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt); + this._scheduleTaskCurrZone = + zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone); + + this._invokeTaskZS = + zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS); + this._invokeTaskDlgt = + zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt); + this._invokeTaskCurrZone = + zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone); + + this._cancelTaskZS = + zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS); + this._cancelTaskDlgt = + zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt); + this._cancelTaskCurrZone = + zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone); + + this._hasTaskZS = zoneSpec && (zoneSpec.onHasTask ? zoneSpec : parentDelegate._hasTaskZS); + this._hasTaskDlgt = + zoneSpec && (zoneSpec.onHasTask ? parentDelegate : parentDelegate._hasTaskDlgt); + this._hasTaskCurrZone = zoneSpec && (zoneSpec.onHasTask ? this.zone : parentDelegate.zone); + } + + fork(targetZone: Zone, zoneSpec: ZoneSpec): AmbientZone { + return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) : + new Zone(targetZone, zoneSpec); + } + + intercept(targetZone: Zone, callback: Function, source: string): Function { + return this._interceptZS ? + this._interceptZS.onIntercept( + this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) : + callback; + } + + invoke(targetZone: Zone, callback: Function, applyThis: any, applyArgs: any[], source: string): + any { + return this._invokeZS ? + this._invokeZS.onInvoke( + this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, + source) : + callback.apply(applyThis, applyArgs); + } + + handleError(targetZone: Zone, error: any): boolean { + return this._handleErrorZS ? + this._handleErrorZS.onHandleError( + this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) : + true; + } + + scheduleTask(targetZone: Zone, task: Task): Task { + try { + if (this._scheduleTaskZS) { + return this._scheduleTaskZS.onScheduleTask( + this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task); + } else if (task.scheduleFn) { + task.scheduleFn(task); + } else if (task.type == 'microTask') { + scheduleMicroTask(task); + } else { + throw new Error('Task is missing scheduleFn.'); + } + return task; + } finally { + if (targetZone == this.zone) { + this._updateTaskCount(task.type, 1); + } + } + } + + invokeTask(targetZone: Zone, task: Task, applyThis: any, applyArgs: any): any { + try { + return this._invokeTaskZS ? + this._invokeTaskZS.onInvokeTask( + this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, + applyArgs) : + task.callback.apply(applyThis, applyArgs); + } finally { + if (targetZone == this.zone && (task.type != 'eventTask') && + !(task.data && task.data.isPeriodic)) { + this._updateTaskCount(task.type, -1); + } + } + } + + cancelTask(targetZone: Zone, task: Task): any { + let value; + if (this._cancelTaskZS) { + value = this._cancelTaskZS.onCancelTask( + this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task); + } else if (!task.cancelFn) { + throw new Error('Task does not support cancellation, or is already canceled.'); + } else { + value = task.cancelFn(task); + } + if (targetZone == this.zone) { + // this should not be in the finally block, because exceptions assume not canceled. + this._updateTaskCount(task.type, -1); + } + return value; + } + + hasTask(targetZone: Zone, isEmpty: HasTaskState) { + return this._hasTaskZS && + this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty); + } + + private _updateTaskCount(type: TaskType, count: number) { + const counts = this._taskCounts; + const prev = counts[type]; + const next = counts[type] = prev + count; + if (next < 0) { + throw new Error('More tasks executed then were scheduled.'); + } + if (prev == 0 || next == 0) { + const isEmpty: HasTaskState = { + microTask: counts.microTask > 0, + macroTask: counts.macroTask > 0, + eventTask: counts.eventTask > 0, + change: type + }; + try { + this.hasTask(this.zone, isEmpty); + } finally { + if (this._parentDelegate) { + this._parentDelegate._updateTaskCount(type, count); + } + } + } + } + } + + + class ZoneTask implements Task { + public type: TaskType; + public source: string; + public invoke: Function; + public callback: Function; + public data: TaskData; + public scheduleFn: (task: Task) => void; + public cancelFn: (task: Task) => void; + public zone: Zone; + public runCount: number = 0; + + constructor( + type: TaskType, zone: Zone, source: string, callback: Function, options: TaskData, + scheduleFn: (task: Task) => void, cancelFn: (task: Task) => void) { + this.type = type; + this.zone = zone; + this.source = source; + this.data = options; + this.scheduleFn = scheduleFn; + this.cancelFn = cancelFn; + this.callback = callback; + const self = this; + this.invoke = function() { + _numberOfNestedTaskFrames++; + try { + return zone.runTask(self, this, arguments); + } finally { + if (_numberOfNestedTaskFrames == 1) { + drainMicroTaskQueue(); + } + _numberOfNestedTaskFrames--; + } + }; + } + + public toString() { + if (this.data && typeof this.data.handleId !== 'undefined') { + return this.data.handleId; + } else { + return Object.prototype.toString.call(this); + } + } + + // add toJSON method to prevent cyclic error when + // call JSON.stringify(zoneTask) + public toJSON() { + return { + type: this.type, + source: this.source, + data: this.data, + zone: this.zone.name, + invoke: this.invoke, + scheduleFn: this.scheduleFn, + cancelFn: this.cancelFn, + runCount: this.runCount, + callback: this.callback + }; + } + } + + interface UncaughtPromiseError extends Error { + zone: AmbientZone; + task: Task; + promise: ZoneAwarePromise; + rejection: any; + } + + class ZoneFrame { + public parent: ZoneFrame; + public zone: Zone; + constructor(parent: ZoneFrame, zone: Zone) { + this.parent = parent; + this.zone = zone; + } + } + + function __symbol__(name: string) { + return '__zone_symbol__' + name; + }; + const symbolSetTimeout = __symbol__('setTimeout'); + const symbolPromise = __symbol__('Promise'); + const symbolThen = __symbol__('then'); + + let _currentZoneFrame = new ZoneFrame(null, new Zone(null, null)); + let _currentTask: Task = null; + let _microTaskQueue: Task[] = []; + let _isDrainingMicrotaskQueue: boolean = false; + const _uncaughtPromiseErrors: UncaughtPromiseError[] = []; + let _numberOfNestedTaskFrames = 0; + + function scheduleQueueDrain() { + // if we are not running in any task, and there has not been anything scheduled + // we must bootstrap the initial task creation by manually scheduling the drain + if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) { + // We are not running in Task, so we need to kickstart the microtask queue. + if (global[symbolPromise]) { + global[symbolPromise].resolve(0)[symbolThen](drainMicroTaskQueue); + } else { + global[symbolSetTimeout](drainMicroTaskQueue, 0); + } + } + } + + function scheduleMicroTask(task: MicroTask) { + scheduleQueueDrain(); + _microTaskQueue.push(task); + } + + function consoleError(e: any) { + const rejection = e && e.rejection; + if (rejection) { + console.error( + 'Unhandled Promise rejection:', + rejection instanceof Error ? rejection.message : rejection, '; Zone:', + (e.zone).name, '; Task:', e.task && (e.task).source, '; Value:', rejection, + rejection instanceof Error ? rejection.stack : undefined); + } + console.error(e); + } + + function drainMicroTaskQueue() { + if (!_isDrainingMicrotaskQueue) { + _isDrainingMicrotaskQueue = true; + while (_microTaskQueue.length) { + const queue = _microTaskQueue; + _microTaskQueue = []; + for (let i = 0; i < queue.length; i++) { + const task = queue[i]; + try { + task.zone.runTask(task, null, null); + } catch (e) { + consoleError(e); + } + } + } + while (_uncaughtPromiseErrors.length) { + while (_uncaughtPromiseErrors.length) { + const uncaughtPromiseError: UncaughtPromiseError = _uncaughtPromiseErrors.shift(); + try { + uncaughtPromiseError.zone.runGuarded(() => { + throw uncaughtPromiseError; + }); + } catch (e) { + consoleError(e); + } + } + } + _isDrainingMicrotaskQueue = false; + } + } + + + function isThenable(value: any): boolean { + return value && value.then; + } + + function forwardResolution(value: any): any { + return value; + } + + function forwardRejection(rejection: any): any { + return ZoneAwarePromise.reject(rejection); + } + + const symbolState: string = __symbol__('state'); + const symbolValue: string = __symbol__('value'); + const source: string = 'Promise.then'; + const UNRESOLVED = null; + const RESOLVED = true; + const REJECTED = false; + const REJECTED_NO_CATCH = 0; + + function makeResolver(promise: ZoneAwarePromise, state: boolean): (value: any) => void { + return (v) => { + resolvePromise(promise, state, v); + // Do not return value or you will break the Promise spec. + }; + } + + function resolvePromise( + promise: ZoneAwarePromise, state: boolean, value: any): ZoneAwarePromise { + if (promise[symbolState] === UNRESOLVED) { + if (value instanceof ZoneAwarePromise && value.hasOwnProperty(symbolState) && + value.hasOwnProperty(symbolValue) && value[symbolState] !== UNRESOLVED) { + clearRejectedNoCatch(>value); + resolvePromise(promise, value[symbolState], value[symbolValue]); + } else if (isThenable(value)) { + value.then(makeResolver(promise, state), makeResolver(promise, false)); + } else { + promise[symbolState] = state; + const queue = promise[symbolValue]; + promise[symbolValue] = value; + + for (let i = 0; i < queue.length;) { + scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]); + } + if (queue.length == 0 && state == REJECTED) { + promise[symbolState] = REJECTED_NO_CATCH; + try { + throw new Error( + 'Uncaught (in promise): ' + value + + (value && value.stack ? '\n' + value.stack : '')); + } catch (e) { + const error: UncaughtPromiseError = e; + error.rejection = value; + error.promise = promise; + error.zone = Zone.current; + error.task = Zone.currentTask; + _uncaughtPromiseErrors.push(error); + scheduleQueueDrain(); + } + } + } + } + // Resolving an already resolved promise is a noop. + return promise; + } + + function clearRejectedNoCatch(promise: ZoneAwarePromise): void { + if (promise[symbolState] === REJECTED_NO_CATCH) { + promise[symbolState] = REJECTED; + for (let i = 0; i < _uncaughtPromiseErrors.length; i++) { + if (promise === _uncaughtPromiseErrors[i].promise) { + _uncaughtPromiseErrors.splice(i, 1); + break; + } + } + } + } + + + function scheduleResolveOrReject( + promise: ZoneAwarePromise, zone: AmbientZone, chainPromise: ZoneAwarePromise, + onFulfilled?: (value: R) => U, onRejected?: (error: any) => U): void { + clearRejectedNoCatch(promise); + const delegate = + promise[symbolState] ? onFulfilled || forwardResolution : onRejected || forwardRejection; + zone.scheduleMicroTask(source, () => { + try { + resolvePromise(chainPromise, true, zone.run(delegate, null, [promise[symbolValue]])); + } catch (error) { + resolvePromise(chainPromise, false, error); + } + }); + } + + class ZoneAwarePromise implements Promise { + static toString() { + return 'function ZoneAwarePromise() { [native code] }'; + } + + static resolve(value: R): Promise { + return resolvePromise(>new this(null), RESOLVED, value); + } + + static reject(error: U): Promise { + return resolvePromise(>new this(null), REJECTED, error); + } + + static race(values: PromiseLike[]): Promise { + let resolve: (v: any) => void; + let reject: (v: any) => void; + let promise: any = new this((res, rej) => { + [resolve, reject] = [res, rej]; + }); + function onResolve(value) { + promise && (promise = null || resolve(value)); + } + function onReject(error) { + promise && (promise = null || reject(error)); + } + + for (let value of values) { + if (!isThenable(value)) { + value = this.resolve(value); + } + value.then(onResolve, onReject); + } + return promise; + } + + static all(values): Promise { + let resolve: (v: any) => void; + let reject: (v: any) => void; + let promise = new this((res, rej) => { + resolve = res; + reject = rej; + }); + let count = 0; + const resolvedValues = []; + for (let value of values) { + if (!isThenable(value)) { + value = this.resolve(value); + } + value.then( + ((index) => (value) => { + resolvedValues[index] = value; + count--; + if (!count) { + resolve(resolvedValues); + } + })(count), + reject); + count++; + } + if (!count) resolve(resolvedValues); + return promise; + } + + constructor( + executor: + (resolve: (value?: R|PromiseLike) => void, reject: (error?: any) => void) => void) { + const promise: ZoneAwarePromise = this; + if (!(promise instanceof ZoneAwarePromise)) { + throw new Error('Must be an instanceof Promise.'); + } + promise[symbolState] = UNRESOLVED; + promise[symbolValue] = []; // queue; + try { + executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED)); + } catch (e) { + resolvePromise(promise, false, e); + } + } + + then( + onFulfilled?: (value: R) => U | PromiseLike, + onRejected?: (error: any) => U | PromiseLike): Promise { + const chainPromise: Promise = new (this.constructor as typeof ZoneAwarePromise)(null); + const zone = Zone.current; + if (this[symbolState] == UNRESOLVED) { + (this[symbolValue]).push(zone, chainPromise, onFulfilled, onRejected); + } else { + scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected); + } + return chainPromise; + } + + catch(onRejected?: (error: any) => U | PromiseLike): Promise { + return this.then(null, onRejected); + } + } + // Protect against aggressive optimizers dropping seemingly unused properties. + // E.g. Closure Compiler in advanced mode. + ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve; + ZoneAwarePromise['reject'] = ZoneAwarePromise.reject; + ZoneAwarePromise['race'] = ZoneAwarePromise.race; + ZoneAwarePromise['all'] = ZoneAwarePromise.all; + + const NativePromise = global[__symbol__('Promise')] = global['Promise']; + global['Promise'] = ZoneAwarePromise; + function patchThen(NativePromise) { + const NativePromiseProtototype = NativePromise.prototype; + const NativePromiseThen = NativePromiseProtototype[__symbol__('then')] = + NativePromiseProtototype.then; + NativePromiseProtototype.then = function(onResolve, onReject) { + const nativePromise = this; + return new ZoneAwarePromise((resolve, reject) => { + NativePromiseThen.call(nativePromise, resolve, reject); + }) + .then(onResolve, onReject); + }; + } + + if (NativePromise) { + patchThen(NativePromise); + if (typeof global['fetch'] !== 'undefined') { + let fetchPromise: Promise; + try { + // In MS Edge this throws + fetchPromise = global['fetch'](); + } catch (e) { + // In Chrome this throws instead. + fetchPromise = global['fetch']('about:blank'); + } + // ignore output to prevent error; + fetchPromise.then(() => null, () => null); + if (fetchPromise.constructor != NativePromise && + fetchPromise.constructor != ZoneAwarePromise) { + patchThen(fetchPromise.constructor); + } + } + } + + // This is not part of public API, but it is usefull for tests, so we expose it. + Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors; + + /* + * This code patches Error so that: + * - It ignores un-needed stack frames. + * - It Shows the associated Zone for reach frame. + */ + + enum FrameType { + /// Skip this frame when printing out stack + blackList, + /// This frame marks zone transition + transition + } + + const NativeError = global[__symbol__('Error')] = global.Error; + // Store the frames which should be removed from the stack frames + const blackListedStackFrames: {[frame: string]: FrameType} = {}; + // We must find the frame where Error was created, otherwise we assume we don't understand stack + let zoneAwareFrame: string; + global.Error = ZoneAwareError; + // How should the stack frames be parsed. + let frameParserStrategy = null; + const stackRewrite = 'stackRewrite'; + + // fix #595, create property descriptor + // for error properties + const createProperty = function(props, key) { + // if property is already defined, skip it. + if (props[key]) { + return; + } + // define a local property + // in case error property is not settable + const name = __symbol__(key); + props[key] = { + configurable: true, + enumerable: true, + get: function() { + // if local property has no value + // use internal error's property value + if (!this[name]) { + const error = this[__symbol__('error')]; + if (error) { + this[name] = error[key]; + } + } + return this[name]; + }, + set: function(value) { + // setter will set value to local property value + this[name] = value; + } + }; + }; + + // fix #595, create property descriptor + // for error method properties + const createMethodProperty = function(props, key) { + if (props[key]) { + return; + } + props[key] = { + configurable: true, + enumerable: true, + writable: true, + value: function() { + const error = this[__symbol__('error')]; + let errorMethod = (error && error[key]) || this[key]; + if (errorMethod) { + return errorMethod.apply(error, arguments); + } + } + }; + }; + + const createErrorProperties = function() { + const props = Object.create(null); + + const error = new NativeError(); + let keys = Object.getOwnPropertyNames(error); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + // Avoid bugs when hasOwnProperty is shadowed + if (Object.prototype.hasOwnProperty.call(error, key)) { + createProperty(props, key); + } + } + + const proto = NativeError.prototype; + if (proto) { + let pKeys = Object.getOwnPropertyNames(proto); + for (let i = 0; i < pKeys.length; i++) { + const key = pKeys[i]; + // skip constructor + if (key !== 'constructor' && key !== 'toString' && key !== 'toSource') { + createProperty(props, key); + } + } + } + + // some other properties are not + // in NativeError + createProperty(props, 'originalStack'); + createProperty(props, 'zoneAwareStack'); + + // define toString, toSource as method property + createMethodProperty(props, 'toString'); + createMethodProperty(props, 'toSource'); + return props; + }; + + const errorProperties = createErrorProperties(); + + // for derived Error class which extends ZoneAwareError + // we should not override the derived class's property + // so we create a new props object only copy the properties + // from errorProperties which not exist in derived Error's prototype + const getErrorPropertiesForPrototype = function(prototype) { + // if the prototype is ZoneAwareError.prototype + // we just return the prebuilt errorProperties. + if (prototype === ZoneAwareError.prototype) { + return errorProperties; + } + const newProps = Object.create(null); + const cKeys = Object.getOwnPropertyNames(errorProperties); + const keys = Object.getOwnPropertyNames(prototype); + cKeys.forEach(cKey => { + if (keys.filter(key => { + return key === cKey; + }) + .length === 0) { + newProps[cKey] = errorProperties[cKey]; + } + }); + + return newProps; + }; + + /** + * This is ZoneAwareError which processes the stack frame and cleans up extra frames as well as + * adds zone information to it. + */ + function ZoneAwareError() { + // make sure we have a valid this + // if this is undefined(call Error without new) or this is global + // or this is some other objects, we should force to create a + // valid ZoneAwareError by call Object.create() + if (!(this instanceof ZoneAwareError)) { + return ZoneAwareError.apply(Object.create(ZoneAwareError.prototype), arguments); + } + // Create an Error. + let error: Error = NativeError.apply(this, arguments); + this[__symbol__('error')] = error; + + // Save original stack trace + error.originalStack = error.stack; + + // Process the stack trace and rewrite the frames. + if (ZoneAwareError[stackRewrite] && error.originalStack) { + let frames: string[] = error.originalStack.split('\n'); + let zoneFrame = _currentZoneFrame; + let i = 0; + // Find the first frame + while (frames[i] !== zoneAwareFrame && i < frames.length) { + i++; + } + for (; i < frames.length && zoneFrame; i++) { + let frame = frames[i]; + if (frame.trim()) { + let frameType = + blackListedStackFrames.hasOwnProperty(frame) && blackListedStackFrames[frame]; + if (frameType === FrameType.blackList) { + frames.splice(i, 1); + i--; + } else if (frameType === FrameType.transition) { + if (zoneFrame.parent) { + // This is the special frame where zone changed. Print and process it accordingly + frames[i] += ` [${zoneFrame.parent.zone.name} => ${zoneFrame.zone.name}]`; + zoneFrame = zoneFrame.parent; + } else { + zoneFrame = null; + } + } else { + frames[i] += ` [${zoneFrame.zone.name}]`; + } + } + } + error.stack = error.zoneAwareStack = frames.join('\n'); + } + // use defineProperties here instead of copy property value + // because of issue #595 which will break angular2. + Object.defineProperties(this, getErrorPropertiesForPrototype(Object.getPrototypeOf(this))); + return this; + } + + // Copy the prototype so that instanceof operator works as expected + ZoneAwareError.prototype = NativeError.prototype; + ZoneAwareError[Zone.__symbol__('blacklistedStackFrames')] = blackListedStackFrames; + ZoneAwareError[stackRewrite] = false; + + if (NativeError.hasOwnProperty('stackTraceLimit')) { + // Extend default stack limit as we will be removing few frames. + NativeError.stackTraceLimit = Math.max(NativeError.stackTraceLimit, 15); + + // make sure that ZoneAwareError has the same property which forwards to NativeError. + Object.defineProperty(ZoneAwareError, 'stackTraceLimit', { + get: function() { + return NativeError.stackTraceLimit; + }, + set: function(value) { + return NativeError.stackTraceLimit = value; + } + }); + } + + if (NativeError.hasOwnProperty('captureStackTrace')) { + Object.defineProperty(ZoneAwareError, 'captureStackTrace', { + // add named function here because we need to remove this + // stack frame when prepareStackTrace below + value: function zoneCaptureStackTrace(targetObject: Object, constructorOpt?: Function) { + NativeError.captureStackTrace(targetObject, constructorOpt); + } + }); + } + + Object.defineProperty(ZoneAwareError, 'prepareStackTrace', { + get: function() { + return NativeError.prepareStackTrace; + }, + set: function(value) { + if (!value || typeof value !== 'function') { + return NativeError.prepareStackTrace = value; + } + return NativeError.prepareStackTrace = function(error, structuredStackTrace) { + // remove additional stack information from ZoneAwareError.captureStackTrace + if (structuredStackTrace) { + for (let i = 0; i < structuredStackTrace.length; i++) { + const st = structuredStackTrace[i]; + // remove the first function which name is zoneCaptureStackTrace + if (st.getFunctionName() === 'zoneCaptureStackTrace') { + structuredStackTrace.splice(i, 1); + break; + } + } + } + return value.apply(this, [error, structuredStackTrace]); + }; + } + }); + + // Now we need to populet the `blacklistedStackFrames` as well as find the + // run/runGuraded/runTask frames. This is done by creating a detect zone and then threading + // the execution through all of the above methods so that we can look at the stack trace and + // find the frames of interest. + let detectZone: Zone = Zone.current.fork({ + name: 'detect', + onInvoke: function( + parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, delegate: Function, + applyThis: any, applyArgs: any[], source: string): any { + // Here only so that it will show up in the stack frame so that it can be black listed. + return parentZoneDelegate.invoke(targetZone, delegate, applyThis, applyArgs, source); + }, + onHandleError: function(parentZD: ZoneDelegate, current: Zone, target: Zone, error: any): + boolean { + if (error.originalStack && Error === ZoneAwareError) { + let frames = error.originalStack.split(/\n/); + let runFrame = false, runGuardedFrame = false, runTaskFrame = false; + while (frames.length) { + let frame = frames.shift(); + // On safari it is possible to have stack frame with no line number. + // This check makes sure that we don't filter frames on name only (must have + // linenumber) + if (/:\d+:\d+/.test(frame)) { + // Get rid of the path so that we don't accidintely find function name in path. + // In chrome the seperator is `(` and `@` in FF and safari + // Chrome: at Zone.run (zone.js:100) + // Chrome: at Zone.run (http://localhost:9876/base/build/lib/zone.js:100:24) + // FireFox: Zone.prototype.run@http://localhost:9876/base/build/lib/zone.js:101:24 + // Safari: run@http://localhost:9876/base/build/lib/zone.js:101:24 + let fnName: string = frame.split('(')[0].split('@')[0]; + let frameType = FrameType.transition; + if (fnName.indexOf('ZoneAwareError') !== -1) { + zoneAwareFrame = frame; + } + if (fnName.indexOf('runGuarded') !== -1) { + runGuardedFrame = true; + } else if (fnName.indexOf('runTask') !== -1) { + runTaskFrame = true; + } else if (fnName.indexOf('run') !== -1) { + runFrame = true; + } else { + frameType = FrameType.blackList; + } + blackListedStackFrames[frame] = frameType; + // Once we find all of the frames we can stop looking. + if (runFrame && runGuardedFrame && runTaskFrame) { + ZoneAwareError[stackRewrite] = true; + break; + } + } + } + } + return false; + } + }) as Zone; + // carefully constructor a stack frame which contains all of the frames of interest which + // need to be detected and blacklisted. + let detectRunFn = () => { + detectZone.run(() => { + detectZone.runGuarded(() => { + throw new Error('blacklistStackFrames'); + }); + }); + }; + // Cause the error to extract the stack frames. + detectZone.runTask(detectZone.scheduleMacroTask('detect', detectRunFn, null, () => null, null)); + + return global['Zone'] = Zone; +})(typeof window === 'object' && window || typeof self === 'object' && self || global); diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/package.json b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/package.json new file mode 100644 index 00000000..80f36938 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/node_modules/zone.js/package.json @@ -0,0 +1,84 @@ +{ + "name": "zone.js", + "version": "0.7.6", + "description": "Zones for JavaScript", + "main": "dist/zone-node.js", + "browser": "dist/zone.js", + "typings": "dist/zone.js.d.ts", + "files": [ + "lib", + "dist" + ], + "directories": { + "lib": "lib", + "test": "test" + }, + "scripts": { + "changelog": "gulp changelog", + "ci": "npm run lint && npm run format && npm run test:single && npm run test-node", + "format": "gulp format:enforce", + "karma-jasmine": "karma start karma-build-jasmine.conf.js", + "karma-jasmine:single": "karma start karma-build-jasmine.conf.js --single-run", + "karma-jasmine:autoclose": "npm run karma-jasmine:single && npm run ws-client", + "lint": "gulp lint", + "prepublish": "tsc && gulp build", + "ws-client": "node ./test/ws-client.js", + "ws-server": "node ./test/ws-server.js", + "tsc": "tsc", + "tsc:w": "tsc -w", + "test": "npm run tsc && concurrently \"npm run tsc:w\" \"npm run ws-server\" \"npm run karma-jasmine\"", + "test:single": "npm run tsc && concurrently \"npm run ws-server\" \"npm run karma-jasmine:autoclose\"", + "test-dist": "concurrently \"npm run tsc:w\" \"npm run ws-server\" \"karma start karma-dist-jasmine.conf.js\"", + "test-node": "gulp test/node", + "test-mocha": "npm run tsc && concurrently \"npm run tsc:w\" \"npm run ws-server\" \"karma start karma-build-mocha.conf.js\"", + "serve": "python -m SimpleHTTPServer 8000" + }, + "repository": { + "type": "git", + "url": "git://github.com/angular/zone.js.git" + }, + "author": "Brian Ford", + "license": "MIT", + "bugs": { + "url": "https://github.com/angular/zone.js/issues" + }, + "dependencies": {}, + "devDependencies": { + "@types/jasmine": "^2.2.33", + "@types/node": "^6.0.38", + "@types/systemjs": "^0.19.30", + "clang-format": "^1.0.46", + "concurrently": "^2.2.0", + "conventional-changelog": "^1.1.0", + "es6-promise": "^3.0.2", + "gulp": "^3.8.11", + "gulp-clang-format": "^1.0.23", + "gulp-conventional-changelog": "^1.1.0", + "gulp-rename": "^1.2.2", + "gulp-rollup": "^2.3.0", + "gulp-tsc": "^1.1.4", + "gulp-tslint": "^7.0.1", + "gulp-uglify": "^1.2.0", + "gulp-util": "^3.0.7", + "jasmine": "^2.4.1", + "jasmine-core": "^2.2.0", + "karma": "^0.13.14", + "karma-chrome-launcher": "^0.2.1", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.6", + "karma-mocha": "^1.2.0", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "karma-sourcemap-loader": "^0.3.6", + "mocha": "^3.1.2", + "nodejs-websocket": "^1.2.0", + "pump": "^1.0.1", + "systemjs": "^0.19.37", + "ts-loader": "^0.6.0", + "tslint": "^4.1.1", + "tslint-eslint-rules": "^3.1.0", + "typescript": "^2.0.2", + "vrsource-tslint-rules": "^4.0.0", + "whatwg-fetch": "^2.0.1" + } +} diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/out/src/appInsightsClient.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/out/src/appInsightsClient.js new file mode 100644 index 00000000..b94db1a1 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/out/src/appInsightsClient.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const appInsights = require("applicationinsights"); +const vscode = require("vscode"); +class AppInsightsClient { + constructor() { + this._client = appInsights.getClient("a25ddf11-20fc-45c6-96ae-524f47754f28"); + const config = vscode.workspace.getConfiguration("code-runner"); + this._enableAppInsights = config.get("enableAppInsights"); + } + sendEvent(eventName, properties) { + if (this._enableAppInsights) { + this._client.trackEvent(eventName === "" ? "bat" : eventName, properties); + } + } +} +exports.AppInsightsClient = AppInsightsClient; +//# sourceMappingURL=appInsightsClient.js.map \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/out/src/codeManager.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/out/src/codeManager.js new file mode 100644 index 00000000..1cc854cf --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/out/src/codeManager.js @@ -0,0 +1,466 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const fs = require("fs"); +const micromatch = require("micromatch"); +const os = require("os"); +const path_1 = require("path"); +const vscode = require("vscode"); +const appInsightsClient_1 = require("./appInsightsClient"); +const constants_1 = require("./constants"); +const utility_1 = require("./utility"); +const TmpDir = os.tmpdir(); +class CodeManager { + constructor() { + this._TERMINAL_DEFAULT_SHELL_WINDOWS = null; + this._outputChannel = vscode.window.createOutputChannel("Code"); + this._terminal = null; + this._appInsightsClient = new appInsightsClient_1.AppInsightsClient(); + } + onDidCloseTerminal() { + this._terminal = null; + } + run(languageId = null, fileUri = null) { + return __awaiter(this, void 0, void 0, function* () { + if (this._isRunning) { + vscode.window.showInformationMessage("Code is already running!"); + return; + } + this._runFromExplorer = this.checkIsRunFromExplorer(fileUri); + if (this._runFromExplorer) { + this._document = yield vscode.workspace.openTextDocument(fileUri); + } + else { + const editor = vscode.window.activeTextEditor; + if (editor) { + this._document = editor.document; + } + else { + vscode.window.showInformationMessage("No code found or selected."); + return; + } + } + this.initialize(); + const fileExtension = path_1.extname(this._document.fileName); + const executor = this.getExecutor(languageId, fileExtension); + // undefined or null + if (executor == null) { + vscode.window.showInformationMessage("Code language not supported or defined."); + return; + } + this.getCodeFileAndExecute(fileExtension, executor); + }); + } + runCustomCommand() { + if (this._isRunning) { + vscode.window.showInformationMessage("Code is already running!"); + return; + } + this._runFromExplorer = false; + const editor = vscode.window.activeTextEditor; + if (editor) { + this._document = editor.document; + } + this.initialize(); + const executor = this._config.get("customCommand"); + if (this._document) { + const fileExtension = path_1.extname(this._document.fileName); + this.getCodeFileAndExecute(fileExtension, executor, false); + } + else { + this.executeCommand(executor, false); + } + } + runByLanguage() { + this._appInsightsClient.sendEvent("runByLanguage"); + const config = this.getConfiguration("code-runner"); + const executorMap = config.get("executorMap"); + vscode.window.showQuickPick(Object.keys(executorMap), { placeHolder: "Type or select language to run" }).then((languageId) => { + if (languageId !== undefined) { + this.run(languageId); + } + }); + } + stop() { + this._appInsightsClient.sendEvent("stop"); + this.stopRunning(); + } + dispose() { + this.stopRunning(); + } + checkIsRunFromExplorer(fileUri) { + const editor = vscode.window.activeTextEditor; + if (!fileUri || !fileUri.fsPath) { + return false; + } + if (!editor) { + return true; + } + if (fileUri.fsPath === editor.document.uri.fsPath) { + return false; + } + return true; + } + stopRunning() { + if (this._isRunning) { + this._isRunning = false; + vscode.commands.executeCommand("setContext", "code-runner.codeRunning", false); + const kill = require("tree-kill"); + kill(this._process.pid); + } + } + initialize() { + this._config = this.getConfiguration("code-runner"); + this._cwd = this._config.get("cwd"); + if (this._cwd) { + return; + } + this._workspaceFolder = this.getWorkspaceFolder(); + if ((this._config.get("fileDirectoryAsCwd") || !this._workspaceFolder) + && this._document && !this._document.isUntitled) { + this._cwd = path_1.dirname(this._document.fileName); + } + else { + this._cwd = this._workspaceFolder; + } + if (this._cwd) { + return; + } + this._cwd = TmpDir; + } + getConfiguration(section) { + return utility_1.Utility.getConfiguration(section, this._document); + } + getWorkspaceFolder() { + if (vscode.workspace.workspaceFolders) { + if (this._document) { + const workspaceFolder = vscode.workspace.getWorkspaceFolder(this._document.uri); + if (workspaceFolder) { + return workspaceFolder.uri.fsPath; + } + } + return vscode.workspace.workspaceFolders[0].uri.fsPath; + } + else { + return undefined; + } + } + getCodeFileAndExecute(fileExtension, executor, appendFile = true) { + let selection; + const activeTextEditor = vscode.window.activeTextEditor; + if (activeTextEditor) { + selection = activeTextEditor.selection; + } + const ignoreSelection = this._config.get("ignoreSelection"); + if ((this._runFromExplorer || !selection || selection.isEmpty || ignoreSelection) && !this._document.isUntitled) { + this._isTmpFile = false; + this._codeFile = this._document.fileName; + if (this._config.get("saveAllFilesBeforeRun")) { + return vscode.workspace.saveAll().then(() => { + this.executeCommand(executor, appendFile); + }); + } + if (this._config.get("saveFileBeforeRun")) { + return this._document.save().then(() => { + this.executeCommand(executor, appendFile); + }); + } + } + else { + let text = (this._runFromExplorer || !selection || selection.isEmpty || ignoreSelection) ? + this._document.getText() : this._document.getText(selection); + if (this._languageId === "php") { + text = text.trim(); + if (!text.startsWith(" { + cmd = cmd.replace(placeholder.regex, placeholder.replaceValue); + }); + } + return (cmd !== executor ? cmd : executor + (appendFile ? " " + this.quoteFileName(this._codeFile) : "")); + }); + } + changeExecutorFromCmdToPs(executor) { + if (executor.includes(" && ") && this.isPowershellOnWindows()) { + let replacement = "; if ($?) {"; + executor = executor.replace("&&", replacement); + replacement = "} " + replacement; + executor = executor.replace(/&&/g, replacement); + executor = executor.replace(/\$dir\$fileNameWithoutExt/g, ".\\$fileNameWithoutExt"); + return executor + " }"; + } + return executor; + } + isPowershellOnWindows() { + if (os.platform() === "win32") { + const defaultProfile = vscode.workspace.getConfiguration("terminal").get("integrated.defaultProfile.windows"); + if (defaultProfile) { + if (defaultProfile.toLowerCase().includes("powershell")) { + return true; + } + else if (defaultProfile === "Command Prompt") { + return false; + } + } + const windowsShell = vscode.env.shell; + return (windowsShell && windowsShell.toLowerCase().includes("powershell")); + } + return false; + } + changeFilePathForBashOnWindows(command) { + if (os.platform() === "win32") { + const windowsShell = vscode.env.shell; + const terminalRoot = this._config.get("terminalRoot"); + if (windowsShell && terminalRoot) { + command = command + .replace(/([A-Za-z]):\\/g, (match, p1) => `${terminalRoot}${p1.toLowerCase()}/`) + .replace(/\\/g, "/"); + } + else if (windowsShell && windowsShell.toLowerCase().indexOf("bash") > -1 && windowsShell.toLowerCase().indexOf("windows") > -1) { + command = command.replace(/([A-Za-z]):\\/g, this.replacer).replace(/\\/g, "/"); + } + } + return command; + } + replacer(match, p1) { + return `/mnt/${p1.toLowerCase()}/`; + } + executeCommandInTerminal(executor, appendFile = true) { + return __awaiter(this, void 0, void 0, function* () { + let isNewTerminal = false; + if (this._terminal === null) { + this._terminal = vscode.window.createTerminal("Code"); + isNewTerminal = true; + } + this._terminal.show(this._config.get("preserveFocus")); + this.sendRunEvent(executor, true); + executor = this.changeExecutorFromCmdToPs(executor); + let command = yield this.getFinalCommandToRunCodeFile(executor, appendFile); + command = this.changeFilePathForBashOnWindows(command); + if (this._config.get("clearPreviousOutput") && !isNewTerminal) { + yield vscode.commands.executeCommand("workbench.action.terminal.clear"); + } + if (this._config.get("fileDirectoryAsCwd")) { + const cwd = this.changeFilePathForBashOnWindows(this._cwd); + this._terminal.sendText(`cd "${cwd}"`); + } + this._terminal.sendText(command); + }); + } + executeCommandInOutputChannel(executor, appendFile = true) { + return __awaiter(this, void 0, void 0, function* () { + this._isRunning = true; + vscode.commands.executeCommand("setContext", "code-runner.codeRunning", true); + const clearPreviousOutput = this._config.get("clearPreviousOutput"); + if (clearPreviousOutput) { + this._outputChannel.clear(); + } + const showExecutionMessage = this._config.get("showExecutionMessage"); + this._outputChannel.show(this._config.get("preserveFocus")); + const spawn = require("child_process").spawn; + const command = yield this.getFinalCommandToRunCodeFile(executor, appendFile); + if (showExecutionMessage) { + this._outputChannel.appendLine("[Running] " + command); + } + this.sendRunEvent(executor, false); + const startTime = new Date(); + this._process = spawn(command, [], { cwd: this._cwd, shell: true }); + this._process.stdout.on("data", (data) => { + this._outputChannel.append(data.toString()); + }); + this._process.stderr.on("data", (data) => { + this._outputChannel.append(data.toString()); + }); + this._process.on("close", (code) => { + this._isRunning = false; + vscode.commands.executeCommand("setContext", "code-runner.codeRunning", false); + const endTime = new Date(); + const elapsedTime = (endTime.getTime() - startTime.getTime()) / 1000; + this._outputChannel.appendLine(""); + if (showExecutionMessage) { + this._outputChannel.appendLine("[Done] exited with code=" + code + " in " + elapsedTime + " seconds"); + this._outputChannel.appendLine(""); + } + if (this._isTmpFile) { + fs.unlinkSync(this._codeFile); + } + }); + }); + } + sendRunEvent(executor, runFromTerminal) { + const properties = { + runFromTerminal: runFromTerminal.toString(), + runFromExplorer: this._runFromExplorer.toString(), + isTmpFile: this._isTmpFile.toString(), + }; + this._appInsightsClient.sendEvent(executor, properties); + } +} +exports.CodeManager = CodeManager; +//# sourceMappingURL=codeManager.js.map \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/out/src/constants.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/out/src/constants.js new file mode 100644 index 00000000..fd9ba69d --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/out/src/constants.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +class Constants { +} +exports.Constants = Constants; +Constants.python = "python"; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/out/src/extension.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/out/src/extension.js new file mode 100644 index 00000000..5ad440bd --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/out/src/extension.js @@ -0,0 +1,32 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const vscode = require("vscode"); +const codeManager_1 = require("./codeManager"); +function activate(context) { + const codeManager = new codeManager_1.CodeManager(); + vscode.window.onDidCloseTerminal(() => { + codeManager.onDidCloseTerminal(); + }); + const run = vscode.commands.registerCommand("code-runner.run", (fileUri) => { + codeManager.run(null, fileUri); + }); + const runCustomCommand = vscode.commands.registerCommand("code-runner.runCustomCommand", () => { + codeManager.runCustomCommand(); + }); + const runByLanguage = vscode.commands.registerCommand("code-runner.runByLanguage", () => { + codeManager.runByLanguage(); + }); + const stop = vscode.commands.registerCommand("code-runner.stop", () => { + codeManager.stop(); + }); + context.subscriptions.push(run); + context.subscriptions.push(runCustomCommand); + context.subscriptions.push(runByLanguage); + context.subscriptions.push(stop); + context.subscriptions.push(codeManager); +} +exports.activate = activate; +function deactivate() { +} +exports.deactivate = deactivate; +//# sourceMappingURL=extension.js.map \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/out/src/utility.js b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/out/src/utility.js new file mode 100644 index 00000000..d630123b --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/out/src/utility.js @@ -0,0 +1,52 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const vscode = require("vscode"); +const constants_1 = require("./constants"); +class Utility { + static getPythonPath(document) { + var _a, _b; + return __awaiter(this, void 0, void 0, function* () { + try { + const extension = vscode.extensions.getExtension("ms-python.python"); + if (!extension) { + return constants_1.Constants.python; + } + const usingNewInterpreterStorage = (_b = (_a = extension.packageJSON) === null || _a === void 0 ? void 0 : _a.featureFlags) === null || _b === void 0 ? void 0 : _b.usingNewInterpreterStorage; + if (usingNewInterpreterStorage) { + if (!extension.isActive) { + yield extension.activate(); + } + const execCommand = extension.exports.settings.getExecutionDetails ? + extension.exports.settings.getExecutionDetails(document === null || document === void 0 ? void 0 : document.uri).execCommand : + extension.exports.settings.getExecutionCommand(document === null || document === void 0 ? void 0 : document.uri); + return execCommand ? execCommand.join(" ") : constants_1.Constants.python; + } + else { + return this.getConfiguration("python", document).get("pythonPath"); + } + } + catch (error) { + return constants_1.Constants.python; + } + }); + } + static getConfiguration(section, document) { + if (document) { + return vscode.workspace.getConfiguration(section, document.uri); + } + else { + return vscode.workspace.getConfiguration(section); + } + } +} +exports.Utility = Utility; +//# sourceMappingURL=utility.js.map \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/package.json b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/package.json new file mode 100644 index 00000000..02507bcb --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/package.json @@ -0,0 +1,412 @@ +{ + "name": "code-runner", + "displayName": "Code Runner", + "description": "Run C, C++, Java, JS, PHP, Python, Perl, Ruby, Go, Lua, Groovy, PowerShell, CMD, BASH, F#, C#, VBScript, TypeScript, CoffeeScript, Scala, Swift, Julia, Crystal, OCaml, R, AppleScript, Elixir, VB.NET, Clojure, Haxe, Obj-C, Rust, Racket, Scheme, AutoHotkey, AutoIt, Kotlin, Dart, Pascal, Haskell, Nim, D, Lisp, Kit, V, SCSS, Sass, CUDA, Less, Fortran, Ring, Standard ML, Zig, Mojo, Erlang, SPWN, Pkl, Gleam", + "version": "0.12.2", + "featureFlags": { + "usingNewPythonInterpreterPathApi": true, + "usingNewPythonInterpreterPathApiV2": true + }, + "publisher": "formulahendry", + "icon": "images/logo.png", + "engines": { + "vscode": "^1.56.0" + }, + "categories": [ + "Programming Languages", + "Other" + ], + "keywords": [ + "javascript", + "php", + "python", + "perl", + "ruby", + "multi-root ready" + ], + "bugs": { + "url": "https://github.com/formulahendry/vscode-code-runner/issues", + "email": "formulahendry@gmail.com" + }, + "homepage": "https://github.com/formulahendry/vscode-code-runner/blob/master/README.md", + "repository": { + "type": "git", + "url": "https://github.com/formulahendry/vscode-code-runner.git" + }, + "sponsor": { + "url": "https://www.patreon.com/junhan" + }, + "activationEvents": [ + "onCommand:code-runner.run", + "onCommand:code-runner.runCustomCommand", + "onCommand:code-runner.runByLanguage", + "onStartupFinished" + ], + "main": "./out/src/extension", + "contributes": { + "commands": [ + { + "command": "code-runner.run", + "title": "Run Code", + "icon": "$(play)" + }, + { + "command": "code-runner.runCustomCommand", + "title": "Run Custom Command" + }, + { + "command": "code-runner.runByLanguage", + "title": "Run By Language" + }, + { + "command": "code-runner.stop", + "title": "Stop Code Run", + "icon": "$(debug-stop)" + } + ], + "keybindings": [ + { + "command": "code-runner.run", + "key": "ctrl+alt+n" + }, + { + "command": "code-runner.runCustomCommand", + "key": "ctrl+alt+k" + }, + { + "command": "code-runner.runByLanguage", + "key": "ctrl+alt+j" + }, + { + "command": "code-runner.stop", + "key": "ctrl+alt+m" + } + ], + "menus": { + "editor/context": [ + { + "when": "!inOutput && config.code-runner.showRunCommandInEditorContextMenu", + "command": "code-runner.run", + "group": "navigation" + }, + { + "when": "inOutput && !config.code-runner.runInTerminal", + "command": "code-runner.stop", + "group": "stop-code-run" + } + ], + "editor/title/run": [ + { + "when": "config.code-runner.showRunIconInEditorTitleMenu", + "command": "code-runner.run", + "group": "navigation" + } + ], + "editor/title": [ + { + "when": "config.code-runner.showStopIconInEditorTitleMenu && code-runner.codeRunning", + "command": "code-runner.stop", + "group": "navigation" + } + ], + "explorer/context": [ + { + "when": "!explorerResourceIsFolder && config.code-runner.showRunCommandInExplorerContextMenu", + "command": "code-runner.run", + "group": "navigation" + } + ] + }, + "configuration": { + "type": "object", + "title": "Run Code configuration", + "properties": { + "code-runner.executorMapByGlob": { + "type": "object", + "default": { + "pom.xml": "cd $dir && mvn clean package" + }, + "description": "Set the executor by glob.", + "scope": "resource" + }, + "code-runner.executorMap": { + "type": "object", + "default": { + "javascript": "node", + "java": "cd $dir && javac $fileName && java $fileNameWithoutExt", + "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", + "zig": "zig run", + "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", + "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", + "php": "php", + "python": "python -u", + "perl": "perl", + "perl6": "perl6", + "ruby": "ruby", + "go": "go run", + "lua": "lua", + "groovy": "groovy", + "powershell": "powershell -ExecutionPolicy ByPass -File", + "bat": "cmd /c", + "shellscript": "bash", + "fsharp": "fsi", + "csharp": "scriptcs", + "vbscript": "cscript //Nologo", + "typescript": "ts-node", + "coffeescript": "coffee", + "scala": "scala", + "swift": "swift", + "julia": "julia", + "crystal": "crystal", + "ocaml": "ocaml", + "r": "Rscript", + "applescript": "osascript", + "clojure": "lein exec", + "haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt", + "rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt", + "racket": "racket", + "scheme": "csi -script", + "ahk": "autohotkey", + "autoit": "autoit3", + "dart": "dart", + "pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt", + "d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt", + "haskell": "runghc", + "nim": "nim compile --verbosity:0 --hints:off --run", + "lisp": "sbcl --script", + "kit": "kitc --run", + "v": "v run", + "sass": "sass --style expanded", + "scss": "scss --style expanded", + "less": "cd $dir && lessc $fileName $fileNameWithoutExt.css", + "FortranFreeForm": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", + "fortran-modern": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", + "fortran_fixed-form": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", + "fortran": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", + "sml": "cd $dir && sml $fileName", + "mojo": "mojo run", + "erlang": "escript", + "spwn": "spwn build", + "pkl": "cd $dir && pkl eval -f yaml $fileName -o $fileNameWithoutExt.yaml", + "gleam": "gleam run -m $fileNameWithoutExt" + }, + "description": "Set the executor of each language.", + "scope": "resource" + }, + "code-runner.executorMapByFileExtension": { + "type": "object", + "default": { + ".vb": "cd $dir && vbc /nologo $fileName && $dir$fileNameWithoutExt", + ".vbs": "cscript //Nologo", + ".scala": "scala", + ".jl": "julia", + ".cr": "crystal", + ".ml": "ocaml", + ".zig": "zig run", + ".exs": "elixir", + ".hx": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt", + ".rkt": "racket", + ".scm": "csi -script", + ".ahk": "autohotkey", + ".au3": "autoit3", + ".kt": "cd $dir && kotlinc $fileName -include-runtime -d $fileNameWithoutExt.jar && java -jar $fileNameWithoutExt.jar", + ".kts": "kotlinc -script", + ".dart": "dart", + ".pas": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt", + ".pp": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt", + ".d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt", + ".hs": "runhaskell", + ".nim": "nim compile --verbosity:0 --hints:off --run", + ".csproj": "dotnet run --project", + ".fsproj": "dotnet run --project", + ".lisp": "sbcl --script", + ".kit": "kitc --run", + ".v": "v run", + ".vsh": "v run", + ".sass": "sass --style expanded", + ".cu": "cd $dir && nvcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", + ".ring": "ring", + ".sml": "cd $dir && sml $fileName", + ".mojo": "mojo run", + ".erl": "escript", + ".spwn": "spwn build", + ".pkl": "cd $dir && pkl eval -f yaml $fileName -o $fileNameWithoutExt.yaml", + ".gleam": "gleam run -m $fileNameWithoutExt" + }, + "description": "Set the executor of each file extension.", + "scope": "resource" + }, + "code-runner.customCommand": { + "type": "string", + "default": "echo Hello", + "description": "Set the custom command to run.", + "scope": "resource" + }, + "code-runner.languageIdToFileExtensionMap": { + "type": "object", + "default": { + "bat": ".bat", + "powershell": ".ps1", + "typescript": ".ts" + }, + "description": "Set the mapping of languageId to file extension.", + "scope": "resource" + }, + "code-runner.defaultLanguage": { + "type": "string", + "default": "", + "description": "Set the default language to run.", + "scope": "resource" + }, + "code-runner.cwd": { + "type": "string", + "default": "", + "description": "Set the working directory.", + "scope": "resource" + }, + "code-runner.fileDirectoryAsCwd": { + "type": "boolean", + "default": false, + "description": "Whether to use the directory of the file to be executed as the working directory.", + "scope": "resource" + }, + "code-runner.clearPreviousOutput": { + "type": "boolean", + "default": false, + "description": "Whether to clear previous output before each run.", + "scope": "resource" + }, + "code-runner.saveAllFilesBeforeRun": { + "type": "boolean", + "default": false, + "description": "Whether to save all files before running.", + "scope": "resource" + }, + "code-runner.saveFileBeforeRun": { + "type": "boolean", + "default": false, + "description": "Whether to save the current file before running.", + "scope": "resource" + }, + "code-runner.enableAppInsights": { + "type": "boolean", + "default": true, + "description": "Whether to enable AppInsights to track user telemetry data.", + "scope": "resource" + }, + "code-runner.showExecutionMessage": { + "type": "boolean", + "default": true, + "description": "Whether to show extra execution message like [Running] ... and [Done] ...", + "scope": "resource" + }, + "code-runner.runInTerminal": { + "type": "boolean", + "default": false, + "description": "Whether to run code in Integrated Terminal.", + "scope": "resource" + }, + "code-runner.terminalRoot": { + "type": "string", + "default": "", + "description": "For Windows system, replaces the Windows style drive letter in the command with a Unix style root when using a custom shell as the terminal, like Bash or Cgywin. Example: Setting this to '/mnt/' will replace 'C:\\path' with '/mnt/c/path'", + "scope": "resource" + }, + "code-runner.preserveFocus": { + "type": "boolean", + "default": true, + "description": "Whether to preserve focus on code editor after code run is triggered.", + "scope": "resource" + }, + "code-runner.ignoreSelection": { + "type": "boolean", + "default": false, + "description": "Whether to ignore selection to always run entire file.", + "scope": "resource" + }, + "code-runner.showRunIconInEditorTitleMenu": { + "type": "boolean", + "default": true, + "description": "Whether to show 'Run Code' icon in editor title menu.", + "scope": "resource" + }, + "code-runner.showStopIconInEditorTitleMenu": { + "type": "boolean", + "default": true, + "description": "Whether to show 'Stop code run' icon in the editor title menu when code is running.", + "scope": "resource" + }, + "code-runner.showRunCommandInEditorContextMenu": { + "type": "boolean", + "default": true, + "description": "Whether to show 'Run Code' command in editor context menu.", + "scope": "resource" + }, + "code-runner.showRunCommandInExplorerContextMenu": { + "type": "boolean", + "default": true, + "description": "Whether to show 'Run Code' command in explorer context menu.", + "scope": "resource" + }, + "code-runner.temporaryFileName": { + "type": "string", + "default": "tempCodeRunnerFile", + "description": "Temporary file name used in running selected code snippet. When it is set as empty, the file name will be random.", + "scope": "resource" + }, + "code-runner.respectShebang": { + "type": "boolean", + "default": true, + "description": "Whether to respect Shebang to run code.", + "scope": "resource" + } + } + }, + "languages": [ + { + "id": "code-runner-output", + "mimetypes": [ + "text/x-code-output" + ] + } + ], + "grammars": [ + { + "language": "code-runner-output", + "scopeName": "code-runner.output", + "path": "./syntaxes/code-runner-output.tmLanguage" + } + ] + }, + "scripts": { + "vscode:prepublish": "tsc -p ./", + "compile": "tsc -watch -p ./", + "tslint": "tslint -t verbose src/**/*.ts" + }, + "dependencies": { + "applicationinsights": "^0.19.0", + "micromatch": "^4.0.2", + "tree-kill": "^1.2.2" + }, + "devDependencies": { + "@types/micromatch": "^3.1.0", + "@types/mocha": "^2.2.32", + "@types/node": "^6.0.40", + "@types/vscode": "^1.56.0", + "mocha": "^6.1.4", + "tslint": "^5.5.0", + "typescript": "^3.8.3" + }, + "__metadata": { + "id": "a6a0c5b2-d078-4bf5-a9ee-4e37054414b3", + "publisherId": "38bbe3f0-5204-4170-845e-c2f966d979b8", + "publisherDisplayName": "formulahendry", + "targetPlatform": "universal", + "updated": false, + "isPreReleaseVersion": false, + "hasPreReleaseVersion": false, + "installedTimestamp": 1714049439694, + "pinned": false, + "source": "gallery" + } +} \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/syntaxes/code-runner-output.tmLanguage b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/syntaxes/code-runner-output.tmLanguage new file mode 100644 index 00000000..38b1ae7c --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/syntaxes/code-runner-output.tmLanguage @@ -0,0 +1,76 @@ + + + + + scopeName + code-runner.output + name + code-runner-output + patterns + + + captures + + 1 + + name + token.info-token + + 2 + + name + string + + + match + (\[Running\])(.*) + name + code-runner.running + + + captures + + 1 + + name + token.info-token + + 2 + + name + string + + 3 + + name + token.debug-token + + 4 + + name + token.error-token + + 5 + + name + string + + 6 + + name + constant.numeric + + 7 + + name + string + + + match + (\[Done\])(.+)(?:(code=0)|(code=\d+))([^\d]+)(\d+(?:\.\d+)?)([^\d]+) + name + code-runner.done + + + + \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/tslint.json b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/tslint.json new file mode 100644 index 00000000..c74d79a3 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/formulahendry.code-runner-0.12.2-universal/tslint.json @@ -0,0 +1,18 @@ +{ + "extends": "tslint:recommended", + "rules": { + "variable-name": [ + true, + "ban-keywords", + "check-format", + "allow-pascal-case", + "allow-leading-underscore" + ], + "max-line-length": [ + true, + 150 + ], + "no-empty": false, + "object-literal-sort-keys": false + } +} \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/.vsixmanifest b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/.vsixmanifest new file mode 100644 index 00000000..da5c4ae5 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/.vsixmanifest @@ -0,0 +1,45 @@ + + + + + rust-analyzer + Rust language support for Visual Studio Code + rust,keybindings,json,ra_syntax_tree,__ext_rast,Rust,rs,__ext_rs + Formatters,Programming Languages + Public + + + + + + + + + + + + + + + + + + + + + + + extension/LICENSE.txt + extension/icon.png + + + + + + + + + + + + \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/LICENSE.txt b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/LICENSE.txt new file mode 100644 index 00000000..d32e7fe8 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/LICENSE.txt @@ -0,0 +1,230 @@ +This software is licensed under either of the Apache License, Version +2.0, or the MIT License. See below for their text. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +MIT License + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/README.md b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/README.md new file mode 100644 index 00000000..36ab9818 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/README.md @@ -0,0 +1,52 @@ +# rust-analyzer + +This extension provides support for the [Rust programming language](https://www.rust-lang.org/). +It is recommended over and replaces `rust-lang.rust`. + +## Features + +- [code completion] with [imports insertion] +- go to [definition], [implementation], [type definition] +- [find all references], [workspace symbol search], [symbol renaming] +- [types and documentation on hover] +- [inlay hints] for types and parameter names +- [semantic syntax highlighting] +- a lot of [assists (code actions)] +- apply suggestions from errors +- ... and many more, check out the [manual] to see them all + +[code completion]: https://rust-analyzer.github.io/manual.html#magic-completions +[imports insertion]: https://rust-analyzer.github.io/manual.html#completion-with-autoimport +[definition]: https://rust-analyzer.github.io/manual.html#go-to-definition +[implementation]: https://rust-analyzer.github.io/manual.html#go-to-implementation +[type definition]: https://rust-analyzer.github.io/manual.html#go-to-type-definition +[find all references]: https://rust-analyzer.github.io/manual.html#find-all-references +[workspace symbol search]: https://rust-analyzer.github.io/manual.html#workspace-symbol +[symbol renaming]: https://rust-analyzer.github.io/manual.html#rename +[types and documentation on hover]: https://rust-analyzer.github.io/manual.html#hover +[inlay hints]: https://rust-analyzer.github.io/manual.html#inlay-hints +[semantic syntax highlighting]: https://rust-analyzer.github.io/manual.html#semantic-syntax-highlighting +[assists (code actions)]: https://rust-analyzer.github.io/manual.html#assists-code-actions +[manual]: https://rust-analyzer.github.io/manual.html + +## Quick start + +1. Install [rustup]. +2. Install the [rust-analyzer extension]. + +[rustup]: https://rustup.rs +[rust-analyzer extension]: https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer + +## Configuration + +This extension provides configurations through VSCode's configuration settings. All configurations are under `rust-analyzer.*`. + +See [the manual](https://rust-analyzer.github.io/manual.html#vs-code-2) for more information on VSCode specific configurations. + +## Communication + +For usage and troubleshooting requests, please use the ["IDEs and Editors" category of the Rust forum](https://users.rust-lang.org/c/ide/14). + +## Documentation + +See [rust-analyzer.github.io](https://rust-analyzer.github.io/) for more information. diff --git a/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/icon.png b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/icon.png new file mode 100644 index 00000000..072090c6 Binary files /dev/null and b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/icon.png differ diff --git a/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/language-configuration.json b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/language-configuration.json new file mode 100644 index 00000000..6619d0c8 --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/language-configuration.json @@ -0,0 +1,46 @@ +{ + "comments": { + "lineComment": "//", + "blockComment": ["/*", "*/"] + }, + "brackets": [ + ["{", "}"], + ["[", "]"], + ["(", ")"] + ], + "colorizedBracketPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"] + ], + "autoClosingPairs": [ + { "open": "{", "close": "}" }, + { "open": "[", "close": "]" }, + { "open": "(", "close": ")" }, + { "open": "\"", "close": "\"", "notIn": ["string"] }, + { "open": "/*", "close": " */", "notIn": ["string"] }, + { "open": "`", "close": "`", "notIn": ["string"] }, + { "open": "```", "close": "```", "notIn": ["string"] } + ], + "autoCloseBefore": ";:.,=}])> \n\t", + "surroundingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["<", ">"], + ["\"", "\""], + ["'", "'"], + ["`", "`"], + ["```", "```"] + ], + "indentationRules": { + "increaseIndentPattern": "^.*\\{[^}\"']*$|^.*\\([^\\)\"']*$", + "decreaseIndentPattern": "^\\s*(\\s*\\/[*].*[*]\\/\\s*)*[})]" + }, + "folding": { + "markers": { + "start": "^\\s*// region:\\b", + "end": "^\\s*// endregion\\b" + } + } +} diff --git a/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/node_modules/d3-graphviz/build/d3-graphviz.min.js b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/node_modules/d3-graphviz/build/d3-graphviz.min.js new file mode 100644 index 00000000..7dfd7aff --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/node_modules/d3-graphviz/build/d3-graphviz.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("d3-selection"),require("d3-dispatch"),require("d3-transition"),require("d3-timer"),require("d3-interpolate"),require("d3-zoom"),require("d3-format"),require("d3-path")):"function"==typeof define&&define.amd?define(["exports","d3-selection","d3-dispatch","d3-transition","d3-timer","d3-interpolate","d3-zoom","d3-format","d3-path"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["d3-graphviz"]={},t.d3,t.d3,t.d3,t.d3,t.d3,t.d3,t.d3,t.d3)}(this,(function(t,e,r,n,o,i,a,s,u){"use strict";function c(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,n.get?n:{enumerable:!0,get:function(){return t[r]}})}})),e.default=t,Object.freeze(e)}var l=c(e);function h(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function f(t){return function(t){if(Array.isArray(t))return d(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return d(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return d(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r1&&void 0!==arguments[1]?arguments[1]:0,r=l.select(this);t.tag;var n=t.attributes,o=r.node().attributes;if(o)for(var i=0;it.length)&&(r=t.length);var n=new X(r-e);return n.set(t.subarray(e,r)),n},F=function(t,e,r,n){if(X.prototype.fill)return X.prototype.fill.call(t,e,r,n);for((null==r||r<0)&&(r=0),(null==n||n>t.length)&&(n=t.length);rt.length)&&(n=t.length);r2046MB)","invalid block type","FSE accuracy too high","match distance too far back","unexpected EOF"],H=function(t,e,r){var n=new Error(e||z[t]);if(n.code=t,Error.captureStackTrace&&Error.captureStackTrace(n,H),!r)throw n;return n},k=function(t,e,r){for(var n=0,o=0;n>5&1,a=o>>2&1,s=3&o,u=o>>6;8&o&&H(0);var c=6-i,l=3==s?4:s,h=k(t,c,l),f=u?1<>3);p=v+(v>>3)*(7&t[5])}p>2145386496&&H(1);var m=new X((1==e?d||p:e?0:p)+12);return m[0]=1,m[4]=4,m[8]=8,{b:c+f,y:0,l:0,d:h,w:e&&1!=e?e:m.subarray(12),e:p,o:new O(m.buffer,0,3),u:d,c:a,m:Math.min(131072,p)}}if(25481893==(n>>4|t[3]<<20))return 8+(((r=t)[4]|r[5]<<8|r[6]<<16|r[7]<<24)>>>0);H(0)},Y=function(t){for(var e=0;1<r&&H(3);for(var i=1<0;){var y=Y(a+1),g=n>>3,E=(1<>(7&n)&E,_=(1<_&&(B-=D)),f[++s]=--B,-1==B?(a+=B,m[--l]=s):a-=B,!B)do{var M=n>>3;u=(t[M]|t[M+1]<<8)>>(7&n)&3,n+=2,s+=u}while(3==u)}(s>255||a)&&H(0);for(var L=0,x=(i>>1)+(i>>3)+3,G=i-1,O=0;O<=s;++O){var N=f[O];if(N<1)d[O]=-N;else for(c=0;c=l)}}for(L&&H(0),c=0;c>3,{b:o,s:m,n:w,t:p}]},R=Q(new X([81,16,99,140,49,198,24,99,12,33,196,24,99,102,102,134,70,146,4]),0,6)[1],U=Q(new X([33,20,196,24,99,140,33,132,16,66,8,33,132,16,66,8,33,68,68,68,68,68,68,68,68,36,9]),0,6)[1],V=Q(new X([32,132,16,66,102,70,68,68,68,68,36,73,2]),0,5)[1],j=function(t,e){for(var r=t.length,n=new O(r),o=0;os&&h>3;u=(u<>(7&l))&a,e[++h]=r.s[u],l-=c=r.n[u]}l==s&&h+1==o||H(0)},$=function(t,e,r){var n=6,o=e.length+3>>2,i=o<<1,a=o+i;J(t.subarray(n,n+=t[0]|t[1]<<8),e.subarray(0,o),r),J(t.subarray(n,n+=t[2]|t[3]<<8),e.subarray(o,i),r),J(t.subarray(n,n+=t[4]|t[5]<<8),e.subarray(i,a),r),J(t.subarray(n),e.subarray(a),r)},A=function(t,e,r){var n,o=e.b,i=t[o],a=i>>1&3;e.l=1&i;var s=i>>3|t[o+1]<<5|t[o+2]<<13,u=(o+=3)+s;if(1==a){if(o>=t.length)return;return e.b=o+1,r?(F(r,t[o],e.y,e.y+=s),r):F(new X(s),t[o])}if(!(u>t.length)){if(0==a)return e.b=u,r?(r.set(t.subarray(o,u),e.y),e.y+=s,r):N(t,o,u);if(2==a){var c=t[o],l=3&c,h=c>>2&3,f=c>>4,d=0,p=0;l<2?1&h?f|=t[++o]<<4|(2&h&&t[++o]<<12):f=c>>3:(p=h,h<2?(f|=(63&t[++o])<<4,d=t[o]>>6|t[++o]<<2):2==h?(f|=t[++o]<<4|(3&t[++o])<<12,d=t[o]>>2|t[++o]<<6):(f|=t[++o]<<4|(63&t[++o])<<12,d=t[o]>>6|t[++o]<<2|t[++o]<<10)),++o;var v=r?r.subarray(e.y,e.y+e.m):new X(e.m),m=v.length-f;if(0==l)v.set(t.subarray(o,o+=f),m);else if(1==l)F(v,t[o++],m);else{var w=e.h;if(2==l){var y=function(t,e){var r=0,n=-1,o=new X(292),i=t[e],a=o.subarray(0,256),s=o.subarray(256,268),u=new P(o.buffer,268);if(i<128){var c=Q(t,e+1,6),l=c[0],h=c[1],f=l<<3,d=t[e+=i];d||H(0);for(var p=0,v=0,m=h.b,w=m,y=(++e<<3)-8+Y(d);!((y-=m)>3;if(p+=(t[g]|t[g+1]<<8)>>(7&y)&(1<>3]|t[g+1]<<8)>>(7&y)&(1<255&&H(0)}else{for(n=i-127;r>4,a[r+1]=15&E}++e}var B=0;for(r=0;r11&&H(0),B+=M&&1<0;--r){var I=u[r];F(G,r,I,u[r-1]=I+s[r]*(1<<_-r))}for(u[0]!=D&&H(0),r=0;r127&&(g=g-128<<8|t[o++]);var E=t[o++];3&E&&H(0);for(var B=[U,V,R],_=2;_>-1;--_){var D=E>>2+(_<<1)&3;if(1==D){var b=new X([0,0,t[o++]]);B[_]={s:b.subarray(2,3),n:b.subarray(0,1),t:new P(b.buffer,0,1),b:0}}else 2==D?(o=(n=Q(t,o,9-(1&_)))[0],B[_]=n[1]):3==D&&(e.t||H(0),B[_]=e.t[_])}var M=e.t=B,L=M[0],x=M[1],G=M[2],I=t[u-1];I||H(0);var K=(u<<3)-8+Y(I)-G.b,O=K>>3,C=0,z=(t[O]|t[O+1]<<8)>>(7&K)&(1<>3]|t[O+1]<<8)>>(7&K)&(1<>3]|t[O+1]<<8)>>(7&K)&(1<>3]|t[O+1]<<8|t[O+2]<<16|t[O+3]<<24)>>>(7&K)&ot-1);O=(K-=S[tt])>>3;var at=Z[tt]+((t[O]|t[O+1]<<8|t[O+2]<<16)>>(7&K)&(1<>3;var st=T[j]+((t[O]|t[O+1]<<8|t[O+2]<<16)>>(7&K)&(1<>3,z=G.t[z]+((t[O]|t[O+1]<<8)>>(7&K)&(1<>3,W=L.t[W]+((t[O]|t[O+1]<<8)>>(7&K)&(1<>3,k=x.t[k]+((t[O]|t[O+1]<<8)>>(7&K)&(1<3)e.o[2]=e.o[1],e.o[1]=e.o[0],e.o[0]=it-=3;else{var ut=it-(0!=st);ut?(it=3==ut?e.o[0]-1:e.o[ut],ut>1&&(e.o[2]=e.o[1]),e.o[1]=e.o[0],e.o[0]=it):it=e.o[0]}for(_=0;_at&&(lt=at),_=0;_{throw e},u=n.print||console.log.bind(console),c=n.printErr||console.warn.bind(console);Object.assign(n,i),i=null,n.arguments&&n.arguments,n.thisProgram&&(a=n.thisProgram),n.quit&&(s=n.quit),n.wasmBinary&&(o=n.wasmBinary);var l,h=n.noExitRuntime||!0;"object"!=typeof WebAssembly&&H("no native wasm support detected");var f=!1;function d(t,e){t||H(e)}var p,v,m,w,y,g,E,B="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function _(t,e,r){for(var n=e+r,o=e;t[o]&&!(o>=n);)++o;if(o-e>16&&t.buffer&&B)return B.decode(t.subarray(e,o));for(var i="";e>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function D(t,e){return t?_(m,t,e):""}function b(t,e,r,n){if(!(n>0))return 0;for(var o=r,i=r+n-1,a=0;a=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&t.charCodeAt(++a)),s<=127){if(r>=i)break;e[r++]=s}else if(s<=2047){if(r+1>=i)break;e[r++]=192|s>>6,e[r++]=128|63&s}else if(s<=65535){if(r+2>=i)break;e[r++]=224|s>>12,e[r++]=128|s>>6&63,e[r++]=128|63&s}else{if(r+3>=i)break;e[r++]=240|s>>18,e[r++]=128|s>>12&63,e[r++]=128|s>>6&63,e[r++]=128|63&s}}return e[r]=0,r-o}function M(t){for(var e=0,r=0;r=55296&&n<=57343?(e+=4,++r):e+=3}return e}function L(t){p=t,n.HEAP8=v=new Int8Array(t),n.HEAP16=w=new Int16Array(t),n.HEAP32=y=new Int32Array(t),n.HEAPU8=m=new Uint8Array(t),n.HEAPU16=new Uint16Array(t),n.HEAPU32=g=new Uint32Array(t),n.HEAPF32=new Float32Array(t),n.HEAPF64=E=new Float64Array(t)}n.INITIAL_MEMORY;var x,G,I,X,P=[],K=[],O=[],N=0,F=null;function C(t){N++,n.monitorRunDependencies&&n.monitorRunDependencies(N)}function z(t){if(N--,n.monitorRunDependencies&&n.monitorRunDependencies(N),0==N&&F){var e=F;F=null,e()}}function H(t){n.onAbort&&n.onAbort(t),c(t="Aborted("+t+")"),f=!0,t+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(t);throw r(e),e}function k(t){return t.startsWith("data:application/octet-stream;base64,")}k(x="graphvizlib.wasm")||(G=x,x=n.locateFile?n.locateFile(G,""):""+G);var W={175664:(t,e)=>{var r=D(t),n=D(e);Z.createPath("/",U.dirname(r)),Z.writeFile(U.join("/",r),n)}};function Y(t){this.name="ExitStatus",this.message="Program terminated with exit("+t+")",this.status=t}function Q(t){for(;t.length>0;)t.shift()(n)}function R(t){this.excPtr=t,this.ptr=t-24,this.set_type=function(t){g[this.ptr+4>>2]=t},this.get_type=function(){return g[this.ptr+4>>2]},this.set_destructor=function(t){g[this.ptr+8>>2]=t},this.get_destructor=function(){return g[this.ptr+8>>2]},this.set_refcount=function(t){y[this.ptr>>2]=t},this.set_caught=function(t){t=t?1:0,v[this.ptr+12>>0]=t},this.get_caught=function(){return 0!=v[this.ptr+12>>0]},this.set_rethrown=function(t){t=t?1:0,v[this.ptr+13>>0]=t},this.get_rethrown=function(){return 0!=v[this.ptr+13>>0]},this.init=function(t,e){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(e),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var t=y[this.ptr>>2];y[this.ptr>>2]=t+1},this.release_ref=function(){var t=y[this.ptr>>2];return y[this.ptr>>2]=t-1,1===t},this.set_adjusted_ptr=function(t){g[this.ptr+16>>2]=t},this.get_adjusted_ptr=function(){return g[this.ptr+16>>2]},this.get_exception_ptr=function(){if(yt(this.get_type()))return g[this.excPtr>>2];var t=this.get_adjusted_ptr();return 0!==t?t:this.excPtr}}var U={isAbs:t=>"/"===t.charAt(0),splitPath:t=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(t).slice(1),normalizeArray:(t,e)=>{for(var r=0,n=t.length-1;n>=0;n--){var o=t[n];"."===o?t.splice(n,1):".."===o?(t.splice(n,1),r++):r&&(t.splice(n,1),r--)}if(e)for(;r;r--)t.unshift("..");return t},normalize:t=>{var e=U.isAbs(t),r="/"===t.substr(-1);return(t=U.normalizeArray(t.split("/").filter((t=>!!t)),!e).join("/"))||e||(t="."),t&&r&&(t+="/"),(e?"/":"")+t},dirname:t=>{var e=U.splitPath(t),r=e[0],n=e[1];return r||n?(n&&(n=n.substr(0,n.length-1)),r+n):"."},basename:t=>{if("/"===t)return"/";var e=(t=(t=U.normalize(t)).replace(/\/$/,"")).lastIndexOf("/");return-1===e?t:t.substr(e+1)},join:function(){var t=Array.prototype.slice.call(arguments);return U.normalize(t.join("/"))},join2:(t,e)=>U.normalize(t+"/"+e)},V={resolve:function(){for(var t="",e=!1,r=arguments.length-1;r>=-1&&!e;r--){var n=r>=0?arguments[r]:Z.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";t=n+"/"+t,e=U.isAbs(n)}return(e?"/":"")+(t=U.normalizeArray(t.split("/").filter((t=>!!t)),!e).join("/"))||"."},relative:(t,e)=>{function r(t){for(var e=0;e=0&&""===t[r];r--);return e>r?[]:t.slice(e,r-e+1)}t=V.resolve(t).substr(1),e=V.resolve(e).substr(1);for(var n=r(t.split("/")),o=r(e.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s0?r:M(t)+1,o=new Array(n),i=b(t,o,0,o.length);return e&&(o.length=i),o}var q={ttys:[],init:function(){},shutdown:function(){},register:function(t,e){q.ttys[t]={input:[],output:[],ops:e},Z.registerDevice(t,q.stream_ops)},stream_ops:{open:function(t){var e=q.ttys[t.node.rdev];if(!e)throw new Z.ErrnoError(43);t.tty=e,t.seekable=!1},close:function(t){t.tty.ops.fsync(t.tty)},fsync:function(t){t.tty.ops.fsync(t.tty)},read:function(t,e,r,n,o){if(!t.tty||!t.tty.ops.get_char)throw new Z.ErrnoError(60);for(var i=0,a=0;a0&&(u(_(t.output,0)),t.output=[])}},default_tty1_ops:{put_char:function(t,e){null===e||10===e?(c(_(t.output,0)),t.output=[]):0!=e&&t.output.push(e)},fsync:function(t){t.output&&t.output.length>0&&(c(_(t.output,0)),t.output=[])}}};function T(t){t=function(t,e){return 65536*Math.ceil(t/65536)}(t);var e=wt(65536,t);return e?function(t,e){return m.fill(0,t,t+e),t}(e,t):0}var S={ops_table:null,mount:function(t){return S.createNode(null,"/",16895,0)},createNode:function(t,e,r,n){if(Z.isBlkdev(r)||Z.isFIFO(r))throw new Z.ErrnoError(63);S.ops_table||(S.ops_table={dir:{node:{getattr:S.node_ops.getattr,setattr:S.node_ops.setattr,lookup:S.node_ops.lookup,mknod:S.node_ops.mknod,rename:S.node_ops.rename,unlink:S.node_ops.unlink,rmdir:S.node_ops.rmdir,readdir:S.node_ops.readdir,symlink:S.node_ops.symlink},stream:{llseek:S.stream_ops.llseek}},file:{node:{getattr:S.node_ops.getattr,setattr:S.node_ops.setattr},stream:{llseek:S.stream_ops.llseek,read:S.stream_ops.read,write:S.stream_ops.write,allocate:S.stream_ops.allocate,mmap:S.stream_ops.mmap,msync:S.stream_ops.msync}},link:{node:{getattr:S.node_ops.getattr,setattr:S.node_ops.setattr,readlink:S.node_ops.readlink},stream:{}},chrdev:{node:{getattr:S.node_ops.getattr,setattr:S.node_ops.setattr},stream:Z.chrdev_stream_ops}});var o=Z.createNode(t,e,r,n);return Z.isDir(o.mode)?(o.node_ops=S.ops_table.dir.node,o.stream_ops=S.ops_table.dir.stream,o.contents={}):Z.isFile(o.mode)?(o.node_ops=S.ops_table.file.node,o.stream_ops=S.ops_table.file.stream,o.usedBytes=0,o.contents=null):Z.isLink(o.mode)?(o.node_ops=S.ops_table.link.node,o.stream_ops=S.ops_table.link.stream):Z.isChrdev(o.mode)&&(o.node_ops=S.ops_table.chrdev.node,o.stream_ops=S.ops_table.chrdev.stream),o.timestamp=Date.now(),t&&(t.contents[e]=o,t.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(t){return t.contents?t.contents.subarray?t.contents.subarray(0,t.usedBytes):new Uint8Array(t.contents):new Uint8Array(0)},expandFileStorage:function(t,e){var r=t.contents?t.contents.length:0;if(!(r>=e)){e=Math.max(e,r*(r<1048576?2:1.125)>>>0),0!=r&&(e=Math.max(e,256));var n=t.contents;t.contents=new Uint8Array(e),t.usedBytes>0&&t.contents.set(n.subarray(0,t.usedBytes),0)}},resizeFileStorage:function(t,e){if(t.usedBytes!=e)if(0==e)t.contents=null,t.usedBytes=0;else{var r=t.contents;t.contents=new Uint8Array(e),r&&t.contents.set(r.subarray(0,Math.min(e,t.usedBytes))),t.usedBytes=e}},node_ops:{getattr:function(t){var e={};return e.dev=Z.isChrdev(t.mode)?t.id:1,e.ino=t.id,e.mode=t.mode,e.nlink=1,e.uid=0,e.gid=0,e.rdev=t.rdev,Z.isDir(t.mode)?e.size=4096:Z.isFile(t.mode)?e.size=t.usedBytes:Z.isLink(t.mode)?e.size=t.link.length:e.size=0,e.atime=new Date(t.timestamp),e.mtime=new Date(t.timestamp),e.ctime=new Date(t.timestamp),e.blksize=4096,e.blocks=Math.ceil(e.size/e.blksize),e},setattr:function(t,e){void 0!==e.mode&&(t.mode=e.mode),void 0!==e.timestamp&&(t.timestamp=e.timestamp),void 0!==e.size&&S.resizeFileStorage(t,e.size)},lookup:function(t,e){throw Z.genericErrors[44]},mknod:function(t,e,r,n){return S.createNode(t,e,r,n)},rename:function(t,e,r){if(Z.isDir(t.mode)){var n;try{n=Z.lookupNode(e,r)}catch(t){}if(n)for(var o in n.contents)throw new Z.ErrnoError(55)}delete t.parent.contents[t.name],t.parent.timestamp=Date.now(),t.name=r,e.contents[r]=t,e.timestamp=t.parent.timestamp,t.parent=e},unlink:function(t,e){delete t.contents[e],t.timestamp=Date.now()},rmdir:function(t,e){var r=Z.lookupNode(t,e);for(var n in r.contents)throw new Z.ErrnoError(55);delete t.contents[e],t.timestamp=Date.now()},readdir:function(t){var e=[".",".."];for(var r in t.contents)t.contents.hasOwnProperty(r)&&e.push(r);return e},symlink:function(t,e,r){var n=S.createNode(t,e,41471,0);return n.link=r,n},readlink:function(t){if(!Z.isLink(t.mode))throw new Z.ErrnoError(28);return t.link}},stream_ops:{read:function(t,e,r,n,o){var i=t.node.contents;if(o>=t.node.usedBytes)return 0;var a=Math.min(t.node.usedBytes-o,n);if(a>8&&i.subarray)e.set(i.subarray(o,o+a),r);else for(var s=0;s0||r+e{if(!(t=V.resolve(t)))return{path:"",node:null};if((e=Object.assign({follow_mount:!0,recurse_count:0},e)).recurse_count>8)throw new Z.ErrnoError(32);for(var r=t.split("/").filter((t=>!!t)),n=Z.root,o="/",i=0;i40)throw new Z.ErrnoError(32)}}return{path:o,node:n}},getPath:t=>{for(var e;;){if(Z.isRoot(t)){var r=t.mount.mountpoint;return e?"/"!==r[r.length-1]?r+"/"+e:r+e:r}e=e?t.name+"/"+e:t.name,t=t.parent}},hashName:(t,e)=>{for(var r=0,n=0;n>>0)%Z.nameTable.length},hashAddNode:t=>{var e=Z.hashName(t.parent.id,t.name);t.name_next=Z.nameTable[e],Z.nameTable[e]=t},hashRemoveNode:t=>{var e=Z.hashName(t.parent.id,t.name);if(Z.nameTable[e]===t)Z.nameTable[e]=t.name_next;else for(var r=Z.nameTable[e];r;){if(r.name_next===t){r.name_next=t.name_next;break}r=r.name_next}},lookupNode:(t,e)=>{var r=Z.mayLookup(t);if(r)throw new Z.ErrnoError(r,t);for(var n=Z.hashName(t.id,e),o=Z.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===t.id&&i===e)return o}return Z.lookup(t,e)},createNode:(t,e,r,n)=>{var o=new Z.FSNode(t,e,r,n);return Z.hashAddNode(o),o},destroyNode:t=>{Z.hashRemoveNode(t)},isRoot:t=>t===t.parent,isMountpoint:t=>!!t.mounted,isFile:t=>32768==(61440&t),isDir:t=>16384==(61440&t),isLink:t=>40960==(61440&t),isChrdev:t=>8192==(61440&t),isBlkdev:t=>24576==(61440&t),isFIFO:t=>4096==(61440&t),isSocket:t=>49152==(49152&t),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:t=>{var e=Z.flagModes[t];if(void 0===e)throw new Error("Unknown file open mode: "+t);return e},flagsToPermissionString:t=>{var e=["r","w","rw"][3&t];return 512&t&&(e+="w"),e},nodePermissions:(t,e)=>Z.ignorePermissions||(!e.includes("r")||292&t.mode)&&(!e.includes("w")||146&t.mode)&&(!e.includes("x")||73&t.mode)?0:2,mayLookup:t=>Z.nodePermissions(t,"x")||(t.node_ops.lookup?0:2),mayCreate:(t,e)=>{try{return Z.lookupNode(t,e),20}catch(t){}return Z.nodePermissions(t,"wx")},mayDelete:(t,e,r)=>{var n;try{n=Z.lookupNode(t,e)}catch(t){return t.errno}var o=Z.nodePermissions(t,"wx");if(o)return o;if(r){if(!Z.isDir(n.mode))return 54;if(Z.isRoot(n)||Z.getPath(n)===Z.cwd())return 10}else if(Z.isDir(n.mode))return 31;return 0},mayOpen:(t,e)=>t?Z.isLink(t.mode)?32:Z.isDir(t.mode)&&("r"!==Z.flagsToPermissionString(e)||512&e)?31:Z.nodePermissions(t,Z.flagsToPermissionString(e)):44,MAX_OPEN_FDS:4096,nextfd:(t=0,e=Z.MAX_OPEN_FDS)=>{for(var r=t;r<=e;r++)if(!Z.streams[r])return r;throw new Z.ErrnoError(33)},getStream:t=>Z.streams[t],createStream:(t,e,r)=>{Z.FSStream||(Z.FSStream=function(){this.shared={}},Z.FSStream.prototype={},Object.defineProperties(Z.FSStream.prototype,{object:{get:function(){return this.node},set:function(t){this.node=t}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(t){this.shared.flags=t}},position:{get:function(){return this.shared.position},set:function(t){this.shared.position=t}}})),t=Object.assign(new Z.FSStream,t);var n=Z.nextfd(e,r);return t.fd=n,Z.streams[n]=t,t},closeStream:t=>{Z.streams[t]=null},chrdev_stream_ops:{open:t=>{var e=Z.getDevice(t.node.rdev);t.stream_ops=e.stream_ops,t.stream_ops.open&&t.stream_ops.open(t)},llseek:()=>{throw new Z.ErrnoError(70)}},major:t=>t>>8,minor:t=>255&t,makedev:(t,e)=>t<<8|e,registerDevice:(t,e)=>{Z.devices[t]={stream_ops:e}},getDevice:t=>Z.devices[t],getMounts:t=>{for(var e=[],r=[t];r.length;){var n=r.pop();e.push(n),r.push.apply(r,n.mounts)}return e},syncfs:(t,e)=>{"function"==typeof t&&(e=t,t=!1),Z.syncFSRequests++,Z.syncFSRequests>1&&c("warning: "+Z.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=Z.getMounts(Z.root.mount),n=0;function o(t){return Z.syncFSRequests--,e(t)}function i(t){if(t)return i.errored?void 0:(i.errored=!0,o(t));++n>=r.length&&o(null)}r.forEach((e=>{if(!e.type.syncfs)return i(null);e.type.syncfs(e,t,i)}))},mount:(t,e,r)=>{var n,o="/"===r,i=!r;if(o&&Z.root)throw new Z.ErrnoError(10);if(!o&&!i){var a=Z.lookupPath(r,{follow_mount:!1});if(r=a.path,n=a.node,Z.isMountpoint(n))throw new Z.ErrnoError(10);if(!Z.isDir(n.mode))throw new Z.ErrnoError(54)}var s={type:t,opts:e,mountpoint:r,mounts:[]},u=t.mount(s);return u.mount=s,s.root=u,o?Z.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:t=>{var e=Z.lookupPath(t,{follow_mount:!1});if(!Z.isMountpoint(e.node))throw new Z.ErrnoError(28);var r=e.node,n=r.mounted,o=Z.getMounts(n);Object.keys(Z.nameTable).forEach((t=>{for(var e=Z.nameTable[t];e;){var r=e.name_next;o.includes(e.mount)&&Z.destroyNode(e),e=r}})),r.mounted=null;var i=r.mount.mounts.indexOf(n);r.mount.mounts.splice(i,1)},lookup:(t,e)=>t.node_ops.lookup(t,e),mknod:(t,e,r)=>{var n=Z.lookupPath(t,{parent:!0}).node,o=U.basename(t);if(!o||"."===o||".."===o)throw new Z.ErrnoError(28);var i=Z.mayCreate(n,o);if(i)throw new Z.ErrnoError(i);if(!n.node_ops.mknod)throw new Z.ErrnoError(63);return n.node_ops.mknod(n,o,e,r)},create:(t,e)=>(e=void 0!==e?e:438,e&=4095,e|=32768,Z.mknod(t,e,0)),mkdir:(t,e)=>(e=void 0!==e?e:511,e&=1023,e|=16384,Z.mknod(t,e,0)),mkdirTree:(t,e)=>{for(var r=t.split("/"),n="",o=0;o(void 0===r&&(r=e,e=438),e|=8192,Z.mknod(t,e,r)),symlink:(t,e)=>{if(!V.resolve(t))throw new Z.ErrnoError(44);var r=Z.lookupPath(e,{parent:!0}).node;if(!r)throw new Z.ErrnoError(44);var n=U.basename(e),o=Z.mayCreate(r,n);if(o)throw new Z.ErrnoError(o);if(!r.node_ops.symlink)throw new Z.ErrnoError(63);return r.node_ops.symlink(r,n,t)},rename:(t,e)=>{var r,n,o=U.dirname(t),i=U.dirname(e),a=U.basename(t),s=U.basename(e);if(r=Z.lookupPath(t,{parent:!0}).node,n=Z.lookupPath(e,{parent:!0}).node,!r||!n)throw new Z.ErrnoError(44);if(r.mount!==n.mount)throw new Z.ErrnoError(75);var u,c=Z.lookupNode(r,a),l=V.relative(t,i);if("."!==l.charAt(0))throw new Z.ErrnoError(28);if("."!==(l=V.relative(e,o)).charAt(0))throw new Z.ErrnoError(55);try{u=Z.lookupNode(n,s)}catch(t){}if(c!==u){var h=Z.isDir(c.mode),f=Z.mayDelete(r,a,h);if(f)throw new Z.ErrnoError(f);if(f=u?Z.mayDelete(n,s,h):Z.mayCreate(n,s))throw new Z.ErrnoError(f);if(!r.node_ops.rename)throw new Z.ErrnoError(63);if(Z.isMountpoint(c)||u&&Z.isMountpoint(u))throw new Z.ErrnoError(10);if(n!==r&&(f=Z.nodePermissions(r,"w")))throw new Z.ErrnoError(f);Z.hashRemoveNode(c);try{r.node_ops.rename(c,n,s)}catch(t){throw t}finally{Z.hashAddNode(c)}}},rmdir:t=>{var e=Z.lookupPath(t,{parent:!0}).node,r=U.basename(t),n=Z.lookupNode(e,r),o=Z.mayDelete(e,r,!0);if(o)throw new Z.ErrnoError(o);if(!e.node_ops.rmdir)throw new Z.ErrnoError(63);if(Z.isMountpoint(n))throw new Z.ErrnoError(10);e.node_ops.rmdir(e,r),Z.destroyNode(n)},readdir:t=>{var e=Z.lookupPath(t,{follow:!0}).node;if(!e.node_ops.readdir)throw new Z.ErrnoError(54);return e.node_ops.readdir(e)},unlink:t=>{var e=Z.lookupPath(t,{parent:!0}).node;if(!e)throw new Z.ErrnoError(44);var r=U.basename(t),n=Z.lookupNode(e,r),o=Z.mayDelete(e,r,!1);if(o)throw new Z.ErrnoError(o);if(!e.node_ops.unlink)throw new Z.ErrnoError(63);if(Z.isMountpoint(n))throw new Z.ErrnoError(10);e.node_ops.unlink(e,r),Z.destroyNode(n)},readlink:t=>{var e=Z.lookupPath(t).node;if(!e)throw new Z.ErrnoError(44);if(!e.node_ops.readlink)throw new Z.ErrnoError(28);return V.resolve(Z.getPath(e.parent),e.node_ops.readlink(e))},stat:(t,e)=>{var r=Z.lookupPath(t,{follow:!e}).node;if(!r)throw new Z.ErrnoError(44);if(!r.node_ops.getattr)throw new Z.ErrnoError(63);return r.node_ops.getattr(r)},lstat:t=>Z.stat(t,!0),chmod:(t,e,r)=>{var n;if(!(n="string"==typeof t?Z.lookupPath(t,{follow:!r}).node:t).node_ops.setattr)throw new Z.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&e|-4096&n.mode,timestamp:Date.now()})},lchmod:(t,e)=>{Z.chmod(t,e,!0)},fchmod:(t,e)=>{var r=Z.getStream(t);if(!r)throw new Z.ErrnoError(8);Z.chmod(r.node,e)},chown:(t,e,r,n)=>{var o;if(!(o="string"==typeof t?Z.lookupPath(t,{follow:!n}).node:t).node_ops.setattr)throw new Z.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:(t,e,r)=>{Z.chown(t,e,r,!0)},fchown:(t,e,r)=>{var n=Z.getStream(t);if(!n)throw new Z.ErrnoError(8);Z.chown(n.node,e,r)},truncate:(t,e)=>{if(e<0)throw new Z.ErrnoError(28);var r;if(!(r="string"==typeof t?Z.lookupPath(t,{follow:!0}).node:t).node_ops.setattr)throw new Z.ErrnoError(63);if(Z.isDir(r.mode))throw new Z.ErrnoError(31);if(!Z.isFile(r.mode))throw new Z.ErrnoError(28);var n=Z.nodePermissions(r,"w");if(n)throw new Z.ErrnoError(n);r.node_ops.setattr(r,{size:e,timestamp:Date.now()})},ftruncate:(t,e)=>{var r=Z.getStream(t);if(!r)throw new Z.ErrnoError(8);if(0==(2097155&r.flags))throw new Z.ErrnoError(28);Z.truncate(r.node,e)},utime:(t,e,r)=>{var n=Z.lookupPath(t,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(e,r)})},open:(t,e,r)=>{if(""===t)throw new Z.ErrnoError(44);var o;if(r=void 0===r?438:r,r=64&(e="string"==typeof e?Z.modeStringToFlags(e):e)?4095&r|32768:0,"object"==typeof t)o=t;else{t=U.normalize(t);try{o=Z.lookupPath(t,{follow:!(131072&e)}).node}catch(t){}}var i=!1;if(64&e)if(o){if(128&e)throw new Z.ErrnoError(20)}else o=Z.mknod(t,r,0),i=!0;if(!o)throw new Z.ErrnoError(44);if(Z.isChrdev(o.mode)&&(e&=-513),65536&e&&!Z.isDir(o.mode))throw new Z.ErrnoError(54);if(!i){var a=Z.mayOpen(o,e);if(a)throw new Z.ErrnoError(a)}512&e&&!i&&Z.truncate(o,0),e&=-131713;var s=Z.createStream({node:o,path:Z.getPath(o),flags:e,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1});return s.stream_ops.open&&s.stream_ops.open(s),!n.logReadFiles||1&e||(Z.readFiles||(Z.readFiles={}),t in Z.readFiles||(Z.readFiles[t]=1)),s},close:t=>{if(Z.isClosed(t))throw new Z.ErrnoError(8);t.getdents&&(t.getdents=null);try{t.stream_ops.close&&t.stream_ops.close(t)}catch(t){throw t}finally{Z.closeStream(t.fd)}t.fd=null},isClosed:t=>null===t.fd,llseek:(t,e,r)=>{if(Z.isClosed(t))throw new Z.ErrnoError(8);if(!t.seekable||!t.stream_ops.llseek)throw new Z.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Z.ErrnoError(28);return t.position=t.stream_ops.llseek(t,e,r),t.ungotten=[],t.position},read:(t,e,r,n,o)=>{if(n<0||o<0)throw new Z.ErrnoError(28);if(Z.isClosed(t))throw new Z.ErrnoError(8);if(1==(2097155&t.flags))throw new Z.ErrnoError(8);if(Z.isDir(t.node.mode))throw new Z.ErrnoError(31);if(!t.stream_ops.read)throw new Z.ErrnoError(28);var i=void 0!==o;if(i){if(!t.seekable)throw new Z.ErrnoError(70)}else o=t.position;var a=t.stream_ops.read(t,e,r,n,o);return i||(t.position+=a),a},write:(t,e,r,n,o,i)=>{if(n<0||o<0)throw new Z.ErrnoError(28);if(Z.isClosed(t))throw new Z.ErrnoError(8);if(0==(2097155&t.flags))throw new Z.ErrnoError(8);if(Z.isDir(t.node.mode))throw new Z.ErrnoError(31);if(!t.stream_ops.write)throw new Z.ErrnoError(28);t.seekable&&1024&t.flags&&Z.llseek(t,0,2);var a=void 0!==o;if(a){if(!t.seekable)throw new Z.ErrnoError(70)}else o=t.position;var s=t.stream_ops.write(t,e,r,n,o,i);return a||(t.position+=s),s},allocate:(t,e,r)=>{if(Z.isClosed(t))throw new Z.ErrnoError(8);if(e<0||r<=0)throw new Z.ErrnoError(28);if(0==(2097155&t.flags))throw new Z.ErrnoError(8);if(!Z.isFile(t.node.mode)&&!Z.isDir(t.node.mode))throw new Z.ErrnoError(43);if(!t.stream_ops.allocate)throw new Z.ErrnoError(138);t.stream_ops.allocate(t,e,r)},mmap:(t,e,r,n,o)=>{if(0!=(2&n)&&0==(2&o)&&2!=(2097155&t.flags))throw new Z.ErrnoError(2);if(1==(2097155&t.flags))throw new Z.ErrnoError(2);if(!t.stream_ops.mmap)throw new Z.ErrnoError(43);return t.stream_ops.mmap(t,e,r,n,o)},msync:(t,e,r,n,o)=>t.stream_ops.msync?t.stream_ops.msync(t,e,r,n,o):0,munmap:t=>0,ioctl:(t,e,r)=>{if(!t.stream_ops.ioctl)throw new Z.ErrnoError(59);return t.stream_ops.ioctl(t,e,r)},readFile:(t,e={})=>{if(e.flags=e.flags||0,e.encoding=e.encoding||"binary","utf8"!==e.encoding&&"binary"!==e.encoding)throw new Error('Invalid encoding type "'+e.encoding+'"');var r,n=Z.open(t,e.flags),o=Z.stat(t).size,i=new Uint8Array(o);return Z.read(n,i,0,o,0),"utf8"===e.encoding?r=_(i,0):"binary"===e.encoding&&(r=i),Z.close(n),r},writeFile:(t,e,r={})=>{r.flags=r.flags||577;var n=Z.open(t,r.flags,r.mode);if("string"==typeof e){var o=new Uint8Array(M(e)+1),i=b(e,o,0,o.length);Z.write(n,o,0,i,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(e))throw new Error("Unsupported data type");Z.write(n,e,0,e.byteLength,void 0,r.canOwn)}Z.close(n)},cwd:()=>Z.currentPath,chdir:t=>{var e=Z.lookupPath(t,{follow:!0});if(null===e.node)throw new Z.ErrnoError(44);if(!Z.isDir(e.node.mode))throw new Z.ErrnoError(54);var r=Z.nodePermissions(e.node,"x");if(r)throw new Z.ErrnoError(r);Z.currentPath=e.path},createDefaultDirectories:()=>{Z.mkdir("/tmp"),Z.mkdir("/home"),Z.mkdir("/home/web_user")},createDefaultDevices:()=>{Z.mkdir("/dev"),Z.registerDevice(Z.makedev(1,3),{read:()=>0,write:(t,e,r,n,o)=>n}),Z.mkdev("/dev/null",Z.makedev(1,3)),q.register(Z.makedev(5,0),q.default_tty_ops),q.register(Z.makedev(6,0),q.default_tty1_ops),Z.mkdev("/dev/tty",Z.makedev(5,0)),Z.mkdev("/dev/tty1",Z.makedev(6,0));var t=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var t=new Uint8Array(1);return()=>(crypto.getRandomValues(t),t[0])}return()=>H("randomDevice")}();Z.createDevice("/dev","random",t),Z.createDevice("/dev","urandom",t),Z.mkdir("/dev/shm"),Z.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{Z.mkdir("/proc");var t=Z.mkdir("/proc/self");Z.mkdir("/proc/self/fd"),Z.mount({mount:()=>{var e=Z.createNode(t,"fd",16895,73);return e.node_ops={lookup:(t,e)=>{var r=+e,n=Z.getStream(r);if(!n)throw new Z.ErrnoError(8);var o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>n.path}};return o.parent=o,o}},e}},{},"/proc/self/fd")},createStandardStreams:()=>{n.stdin?Z.createDevice("/dev","stdin",n.stdin):Z.symlink("/dev/tty","/dev/stdin"),n.stdout?Z.createDevice("/dev","stdout",null,n.stdout):Z.symlink("/dev/tty","/dev/stdout"),n.stderr?Z.createDevice("/dev","stderr",null,n.stderr):Z.symlink("/dev/tty1","/dev/stderr"),Z.open("/dev/stdin",0),Z.open("/dev/stdout",1),Z.open("/dev/stderr",1)},ensureErrnoError:()=>{Z.ErrnoError||(Z.ErrnoError=function(t,e){this.node=e,this.setErrno=function(t){this.errno=t},this.setErrno(t),this.message="FS error"},Z.ErrnoError.prototype=new Error,Z.ErrnoError.prototype.constructor=Z.ErrnoError,[44].forEach((t=>{Z.genericErrors[t]=new Z.ErrnoError(t),Z.genericErrors[t].stack=""})))},staticInit:()=>{Z.ensureErrnoError(),Z.nameTable=new Array(4096),Z.mount(S,{},"/"),Z.createDefaultDirectories(),Z.createDefaultDevices(),Z.createSpecialDirectories(),Z.filesystems={MEMFS:S}},init:(t,e,r)=>{Z.init.initialized=!0,Z.ensureErrnoError(),n.stdin=t||n.stdin,n.stdout=e||n.stdout,n.stderr=r||n.stderr,Z.createStandardStreams()},quit:()=>{Z.init.initialized=!1;for(var t=0;t{var r=0;return t&&(r|=365),e&&(r|=146),r},findObject:(t,e)=>{var r=Z.analyzePath(t,e);return r.exists?r.object:null},analyzePath:(t,e)=>{try{t=(n=Z.lookupPath(t,{follow:!e})).path}catch(t){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=Z.lookupPath(t,{parent:!0});r.parentExists=!0,r.parentPath=n.path,r.parentObject=n.node,r.name=U.basename(t),n=Z.lookupPath(t,{follow:!e}),r.exists=!0,r.path=n.path,r.object=n.node,r.name=n.node.name,r.isRoot="/"===n.path}catch(t){r.error=t.errno}return r},createPath:(t,e,r,n)=>{t="string"==typeof t?t:Z.getPath(t);for(var o=e.split("/").reverse();o.length;){var i=o.pop();if(i){var a=U.join2(t,i);try{Z.mkdir(a)}catch(t){}t=a}}return a},createFile:(t,e,r,n,o)=>{var i=U.join2("string"==typeof t?t:Z.getPath(t),e),a=Z.getMode(n,o);return Z.create(i,a)},createDataFile:(t,e,r,n,o,i)=>{var a=e;t&&(t="string"==typeof t?t:Z.getPath(t),a=e?U.join2(t,e):t);var s=Z.getMode(n,o),u=Z.create(a,s);if(r){if("string"==typeof r){for(var c=new Array(r.length),l=0,h=r.length;l{var o=U.join2("string"==typeof t?t:Z.getPath(t),e),i=Z.getMode(!!r,!!n);Z.createDevice.major||(Z.createDevice.major=64);var a=Z.makedev(Z.createDevice.major++,0);return Z.registerDevice(a,{open:t=>{t.seekable=!1},close:t=>{n&&n.buffer&&n.buffer.length&&n(10)},read:(t,e,n,o,i)=>{for(var a=0,s=0;s{for(var a=0;a{if(t.isDevice||t.isFolder||t.link||t.contents)return!0;throw"undefined"!=typeof XMLHttpRequest?new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."):new Error("Cannot load without read() or XMLHttpRequest.")},createLazyFile:(t,e,r,n,o)=>{if("undefined"!=typeof XMLHttpRequest)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var i={isDevice:!1,url:r},a=Z.createFile(t,e,i,n,o);i.contents?a.contents=i.contents:i.url&&(a.contents=null,a.url=i.url),Object.defineProperties(a,{usedBytes:{get:function(){return this.contents.length}}});var s={};function u(t,e,r,n,o){var i=t.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(i.slice)for(var s=0;s{var e=a.stream_ops[t];s[t]=function(){return Z.forceLoadFile(a),e.apply(null,arguments)}})),s.read=(t,e,r,n,o)=>(Z.forceLoadFile(a),u(t,e,r,n,o)),s.mmap=(t,e,r,n,o)=>{Z.forceLoadFile(a);var i=T(e);if(!i)throw new Z.ErrnoError(48);return u(t,v,i,e,r),{ptr:i,allocated:!0}},a.stream_ops=s,a},createPreloadedFile:(t,e,r,n,o,i,a,s,u,c)=>{var l=e?V.resolve(U.join2(t,e)):t;function h(r){function h(r){c&&c(),s||Z.createDataFile(t,e,r,n,o,u),i&&i(),z()}Browser.handledByPreloadPlugin(r,l,h,(()=>{a&&a(),z()}))||h(r)}C(),"string"==typeof r?function(t,e,r,n){var o="al "+t;(void 0)(t,(e=>{d(e,'Loading data file "'+t+'" failed (no arrayBuffer).'),(t=>{h(t)})(new Uint8Array(e)),o&&z()}),(e=>{if(!r)throw'Loading data file "'+t+'" failed.';r()})),o&&C()}(r,0,a):h(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(t,e,r)=>{e=e||(()=>{}),r=r||(()=>{});var n=Z.indexedDB();try{var o=n.open(Z.DB_NAME(),Z.DB_VERSION)}catch(t){return r(t)}o.onupgradeneeded=()=>{u("creating db"),o.result.createObjectStore(Z.DB_STORE_NAME)},o.onsuccess=()=>{var n=o.result.transaction([Z.DB_STORE_NAME],"readwrite"),i=n.objectStore(Z.DB_STORE_NAME),a=0,s=0,u=t.length;function c(){0==s?e():r()}t.forEach((t=>{var e=i.put(Z.analyzePath(t).object.contents,t);e.onsuccess=()=>{++a+s==u&&c()},e.onerror=()=>{s++,a+s==u&&c()}})),n.onerror=r},o.onerror=r},loadFilesFromDB:(t,e,r)=>{e=e||(()=>{}),r=r||(()=>{});var n=Z.indexedDB();try{var o=n.open(Z.DB_NAME(),Z.DB_VERSION)}catch(t){return r(t)}o.onupgradeneeded=r,o.onsuccess=()=>{var n=o.result;try{var i=n.transaction([Z.DB_STORE_NAME],"readonly")}catch(t){return void r(t)}var a=i.objectStore(Z.DB_STORE_NAME),s=0,u=0,c=t.length;function l(){0==u?e():r()}t.forEach((t=>{var e=a.get(t);e.onsuccess=()=>{Z.analyzePath(t).exists&&Z.unlink(t),Z.createDataFile(U.dirname(t),U.basename(t),e.result,!0,!0,!0),++s+u==c&&l()},e.onerror=()=>{u++,s+u==c&&l()}})),i.onerror=r},o.onerror=r}},J={DEFAULT_POLLMASK:5,calculateAt:function(t,e,r){if(U.isAbs(e))return e;var n;if(n=-100===t?Z.cwd():J.getStreamFromFD(t).path,0==e.length){if(!r)throw new Z.ErrnoError(44);return n}return U.join2(n,e)},doStat:function(t,e,r){try{var n=t(e)}catch(t){if(t&&t.node&&U.normalize(e)!==U.normalize(Z.getPath(t.node)))return-54;throw t}y[r>>2]=n.dev,y[r+8>>2]=n.ino,y[r+12>>2]=n.mode,g[r+16>>2]=n.nlink,y[r+20>>2]=n.uid,y[r+24>>2]=n.gid,y[r+28>>2]=n.rdev,X=[n.size>>>0,(I=n.size,+Math.abs(I)>=1?I>0?(0|Math.min(+Math.floor(I/4294967296),4294967295))>>>0:~~+Math.ceil((I-+(~~I>>>0))/4294967296)>>>0:0)],y[r+40>>2]=X[0],y[r+44>>2]=X[1],y[r+48>>2]=4096,y[r+52>>2]=n.blocks;var o=n.atime.getTime(),i=n.mtime.getTime(),a=n.ctime.getTime();return X=[Math.floor(o/1e3)>>>0,(I=Math.floor(o/1e3),+Math.abs(I)>=1?I>0?(0|Math.min(+Math.floor(I/4294967296),4294967295))>>>0:~~+Math.ceil((I-+(~~I>>>0))/4294967296)>>>0:0)],y[r+56>>2]=X[0],y[r+60>>2]=X[1],g[r+64>>2]=o%1e3*1e3,X=[Math.floor(i/1e3)>>>0,(I=Math.floor(i/1e3),+Math.abs(I)>=1?I>0?(0|Math.min(+Math.floor(I/4294967296),4294967295))>>>0:~~+Math.ceil((I-+(~~I>>>0))/4294967296)>>>0:0)],y[r+72>>2]=X[0],y[r+76>>2]=X[1],g[r+80>>2]=i%1e3*1e3,X=[Math.floor(a/1e3)>>>0,(I=Math.floor(a/1e3),+Math.abs(I)>=1?I>0?(0|Math.min(+Math.floor(I/4294967296),4294967295))>>>0:~~+Math.ceil((I-+(~~I>>>0))/4294967296)>>>0:0)],y[r+88>>2]=X[0],y[r+92>>2]=X[1],g[r+96>>2]=a%1e3*1e3,X=[n.ino>>>0,(I=n.ino,+Math.abs(I)>=1?I>0?(0|Math.min(+Math.floor(I/4294967296),4294967295))>>>0:~~+Math.ceil((I-+(~~I>>>0))/4294967296)>>>0:0)],y[r+104>>2]=X[0],y[r+108>>2]=X[1],0},doMsync:function(t,e,r,n,o){if(!Z.isFile(e.node.mode))throw new Z.ErrnoError(43);if(2&n)return 0;var i=m.slice(t,t+r);Z.msync(e,i,o,r,n)},varargs:void 0,get:function(){return J.varargs+=4,y[J.varargs-4>>2]},getStr:function(t){return D(t)},getStreamFromFD:function(t){var e=Z.getStream(t);if(!e)throw new Z.ErrnoError(8);return e}},$=[];function A(t){try{return l.grow(t-p.byteLength+65535>>>16),L(l.buffer),1}catch(t){}}var tt={};function et(){if(!et.strings){var t={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:a||"./this.program"};for(var e in tt)void 0===tt[e]?delete t[e]:t[e]=tt[e];var r=[];for(var e in t)r.push(e+"="+t[e]);et.strings=r}return et.strings}function rt(t){return t%4==0&&(t%100!=0||t%400==0)}var nt=[31,29,31,30,31,30,31,31,30,31,30,31],ot=[31,28,31,30,31,30,31,31,30,31,30,31];var it=function(t,e,r,n){t||(t=this),this.parent=t,this.mount=t.mount,this.mounted=null,this.id=Z.nextInode++,this.name=e,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=n};Object.defineProperties(it.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(t){t?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(t){t?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return Z.isDir(this.mode)}},isDevice:{get:function(){return Z.isChrdev(this.mode)}}}),Z.FSNode=it,Z.staticInit();var at={b:function(t,e,r){throw new R(t).init(e,r),t},l:function(t,e,r,n){try{if(e=J.getStr(e),e=J.calculateAt(t,e),-8&r)return-28;var o=Z.lookupPath(e,{follow:!0}).node;if(!o)return-44;var i="";return 4&r&&(i+="r"),2&r&&(i+="w"),1&r&&(i+="x"),i&&Z.nodePermissions(o,i)?-2:0}catch(t){if(void 0===Z||!(t instanceof Z.ErrnoError))throw t;return-t.errno}},i:function(t,e,r){J.varargs=r;try{var n=J.getStreamFromFD(t);switch(e){case 0:return(o=J.get())<0?-28:Z.createStream(n,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=J.get();return n.flags|=o,0;case 5:return o=J.get(),w[o+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return 28,y[mt()>>2]=28,-1}}catch(t){if(void 0===Z||!(t instanceof Z.ErrnoError))throw t;return-t.errno}},w:function(t,e){try{var r=J.getStreamFromFD(t);return J.doStat(Z.stat,r.path,e)}catch(t){if(void 0===Z||!(t instanceof Z.ErrnoError))throw t;return-t.errno}},x:function(t,e,r){J.varargs=r;try{var n=J.getStreamFromFD(t);switch(e){case 21509:case 21505:case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:case 21523:case 21524:return n.tty?0:-59;case 21519:if(!n.tty)return-59;var o=J.get();return y[o>>2]=0,0;case 21520:return n.tty?-28:-59;case 21531:return o=J.get(),Z.ioctl(n,e,o);default:return-28}}catch(t){if(void 0===Z||!(t instanceof Z.ErrnoError))throw t;return-t.errno}},u:function(t,e,r,n){try{e=J.getStr(e);var o=256&n,i=4096&n;return n&=-6401,e=J.calculateAt(t,e,i),J.doStat(o?Z.lstat:Z.stat,e,r)}catch(t){if(void 0===Z||!(t instanceof Z.ErrnoError))throw t;return-t.errno}},d:function(t,e,r,n){J.varargs=n;try{e=J.getStr(e),e=J.calculateAt(t,e);var o=n?J.get():0;return Z.open(e,r,o).fd}catch(t){if(void 0===Z||!(t instanceof Z.ErrnoError))throw t;return-t.errno}},v:function(t,e){try{return t=J.getStr(t),J.doStat(Z.stat,t,e)}catch(t){if(void 0===Z||!(t instanceof Z.ErrnoError))throw t;return-t.errno}},p:function(t,e,r){try{return e=J.getStr(e),e=J.calculateAt(t,e),0===r?Z.unlink(e):512===r?Z.rmdir(e):H("Invalid flags passed to unlinkat"),0}catch(t){if(void 0===Z||!(t instanceof Z.ErrnoError))throw t;return-t.errno}},j:function(){return!0},q:function(t,e,r,n,o,i,a){try{var s=J.getStreamFromFD(n),u=Z.mmap(s,t,o,e,r),c=u.ptr;return y[i>>2]=u.allocated,g[a>>2]=c,0}catch(t){if(void 0===Z||!(t instanceof Z.ErrnoError))throw t;return-t.errno}},r:function(t,e,r,n,o,i){try{var a=J.getStreamFromFD(o);2&r&&J.doMsync(t,a,e,n,i),Z.munmap(a)}catch(t){if(void 0===Z||!(t instanceof Z.ErrnoError))throw t;return-t.errno}},a:function(){H("")},y:function(t,e,r){return function(t,e,r){var n=function(t,e){var r;for($.length=0,e>>=2;r=m[t++];)e+=105!=r&e,$.push(105==r?y[e]:E[e++>>1]),++e;return $}(e,r);return W[t].apply(null,n)}(t,e,r)},e:function(){return Date.now()},k:function(t,e,r){m.copyWithin(t,e,e+r)},o:function(t){var e,r=m.length,n=2147483648;if((t>>>=0)>n)return!1;for(var o=1;o<=4;o*=2){var i=r*(1+.2/o);if(i=Math.min(i,t+100663296),A(Math.min(n,(e=Math.max(t,i))+(65536-e%65536)%65536)))return!0}return!1},s:function(t,e){var r=0;return et().forEach((function(n,o){var i=e+r;g[t+4*o>>2]=i,function(t,e,r){for(var n=0;n>0]=t.charCodeAt(n);v[e>>0]=0}(n,i),r+=n.length+1})),0},t:function(t,e){var r=et();g[t>>2]=r.length;var n=0;return r.forEach((function(t){n+=t.length+1})),g[e>>2]=n,0},f:function(t,e){!function(t){h||(n.onExit&&n.onExit(t),f=!0),s(t,new Y(t))}(t)},c:function(t){try{var e=J.getStreamFromFD(t);return Z.close(e),0}catch(t){if(void 0===Z||!(t instanceof Z.ErrnoError))throw t;return t.errno}},g:function(t,e,r,n){try{var o=function(t,e,r,n){for(var o=0,i=0;i>2],s=g[e+4>>2];e+=8;var u=Z.read(t,v,a,s,undefined);if(u<0)return-1;if(o+=u,u>2]=o,0}catch(t){if(void 0===Z||!(t instanceof Z.ErrnoError))throw t;return t.errno}},m:function(t,e,r,n,o){try{var i=(u=r)+2097152>>>0<4194305-!!(s=e)?(s>>>0)+4294967296*u:NaN;if(isNaN(i))return 61;var a=J.getStreamFromFD(t);return Z.llseek(a,i,n),X=[a.position>>>0,(I=a.position,+Math.abs(I)>=1?I>0?(0|Math.min(+Math.floor(I/4294967296),4294967295))>>>0:~~+Math.ceil((I-+(~~I>>>0))/4294967296)>>>0:0)],y[o>>2]=X[0],y[o+4>>2]=X[1],a.getdents&&0===i&&0===n&&(a.getdents=null),0}catch(t){if(void 0===Z||!(t instanceof Z.ErrnoError))throw t;return t.errno}var s,u},h:function(t,e,r,n){try{var o=function(t,e,r,n){for(var o=0,i=0;i>2],s=g[e+4>>2];e+=8;var u=Z.write(t,v,a,s,undefined);if(u<0)return-1;o+=u}return o}(J.getStreamFromFD(t),e,r);return g[n>>2]=o,0}catch(t){if(void 0===Z||!(t instanceof Z.ErrnoError))throw t;return t.errno}},n:function(t,e,r,n,o){return function(t,e,r,n){var o=y[n+40>>2],i={tm_sec:y[n>>2],tm_min:y[n+4>>2],tm_hour:y[n+8>>2],tm_mday:y[n+12>>2],tm_mon:y[n+16>>2],tm_year:y[n+20>>2],tm_wday:y[n+24>>2],tm_yday:y[n+28>>2],tm_isdst:y[n+32>>2],tm_gmtoff:y[n+36>>2],tm_zone:o?D(o):""},a=D(r),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)a=a.replace(new RegExp(u,"g"),s[u]);var c=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],l=["January","February","March","April","May","June","July","August","September","October","November","December"];function h(t,e,r){for(var n="number"==typeof t?t.toString():t||"";n.length0?1:0}var n;return 0===(n=r(t.getFullYear()-e.getFullYear()))&&0===(n=r(t.getMonth()-e.getMonth()))&&(n=r(t.getDate()-e.getDate())),n}function p(t){switch(t.getDay()){case 0:return new Date(t.getFullYear()-1,11,29);case 1:return t;case 2:return new Date(t.getFullYear(),0,3);case 3:return new Date(t.getFullYear(),0,2);case 4:return new Date(t.getFullYear(),0,1);case 5:return new Date(t.getFullYear()-1,11,31);case 6:return new Date(t.getFullYear()-1,11,30)}}function m(t){var e=function(t,e){for(var r=new Date(t.getTime());e>0;){var n=rt(r.getFullYear()),o=r.getMonth(),i=(n?nt:ot)[o];if(!(e>i-r.getDate()))return r.setDate(r.getDate()+e),r;e-=i-r.getDate()+1,r.setDate(1),o<11?r.setMonth(o+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1))}return r}(new Date(t.tm_year+1900,0,1),t.tm_yday),r=new Date(e.getFullYear(),0,4),n=new Date(e.getFullYear()+1,0,4),o=p(r),i=p(n);return d(o,e)<=0?d(i,e)<=0?e.getFullYear()+1:e.getFullYear():e.getFullYear()-1}var w={"%a":function(t){return c[t.tm_wday].substring(0,3)},"%A":function(t){return c[t.tm_wday]},"%b":function(t){return l[t.tm_mon].substring(0,3)},"%B":function(t){return l[t.tm_mon]},"%C":function(t){return f((t.tm_year+1900)/100|0,2)},"%d":function(t){return f(t.tm_mday,2)},"%e":function(t){return h(t.tm_mday,2," ")},"%g":function(t){return m(t).toString().substring(2)},"%G":function(t){return m(t)},"%H":function(t){return f(t.tm_hour,2)},"%I":function(t){var e=t.tm_hour;return 0==e?e=12:e>12&&(e-=12),f(e,2)},"%j":function(t){return f(t.tm_mday+function(t,e){for(var r=0,n=0;n<=e;r+=t[n++]);return r}(rt(t.tm_year+1900)?nt:ot,t.tm_mon-1),3)},"%m":function(t){return f(t.tm_mon+1,2)},"%M":function(t){return f(t.tm_min,2)},"%n":function(){return"\n"},"%p":function(t){return t.tm_hour>=0&&t.tm_hour<12?"AM":"PM"},"%S":function(t){return f(t.tm_sec,2)},"%t":function(){return"\t"},"%u":function(t){return t.tm_wday||7},"%U":function(t){var e=t.tm_yday+7-t.tm_wday;return f(Math.floor(e/7),2)},"%V":function(t){var e=Math.floor((t.tm_yday+7-(t.tm_wday+6)%7)/7);if((t.tm_wday+371-t.tm_yday-2)%7<=2&&e++,e){if(53==e){var r=(t.tm_wday+371-t.tm_yday)%7;4==r||3==r&&rt(t.tm_year)||(e=1)}}else{e=52;var n=(t.tm_wday+7-t.tm_yday-1)%7;(4==n||5==n&&rt(t.tm_year%400-1))&&e++}return f(e,2)},"%w":function(t){return t.tm_wday},"%W":function(t){var e=t.tm_yday+7-(t.tm_wday+6)%7;return f(Math.floor(e/7),2)},"%y":function(t){return(t.tm_year+1900).toString().substring(2)},"%Y":function(t){return t.tm_year+1900},"%z":function(t){var e=t.tm_gmtoff,r=e>=0;return e=(e=Math.abs(e)/60)/60*100+e%60,(r?"+":"-")+String("0000"+e).slice(-4)},"%Z":function(t){return t.tm_zone},"%%":function(){return"%"}};for(var u in a=a.replace(/%%/g,"\0\0"),w)a.includes(u)&&(a=a.replace(new RegExp(u,"g"),w[u](i)));var g=j(a=a.replace(/\0\0/g,"%"),!1);return g.length>e?0:(function(t,e){v.set(t,e)}(g,t),g.length-1)}(t,e,r,n)}};!function(){var t={a:at};function e(t,e){var r,o=t.exports;n.asm=o,L((l=n.asm.z).buffer),n.asm.J,r=n.asm.A,K.unshift(r),z()}function i(t){e(t.instance)}function a(e){return Promise.resolve().then((function(){return function(t){try{if(t==x&&o)return new Uint8Array(o);throw"both async and sync fetching of the wasm failed"}catch(t){H(t)}}(x)})).then((function(e){return WebAssembly.instantiate(e,t)})).then((function(t){return t})).then(e,(function(t){c("failed to asynchronously prepare wasm: "+t),H(t)}))}if(C(),n.instantiateWasm)try{return n.instantiateWasm(t,e)}catch(t){c("Module.instantiateWasm callback failed with error: "+t),r(t)}(o||"function"!=typeof WebAssembly.instantiateStreaming||k(x)||function(t){return t.startsWith("file://")}(x)||"function"!=typeof fetch?a(i):fetch(x,{credentials:"same-origin"}).then((function(e){return WebAssembly.instantiateStreaming(e,t).then(i,(function(t){return c("wasm streaming compile failed: "+t),c("falling back to ArrayBuffer instantiation"),a(i)}))}))).catch(r)}(),n.___wasm_call_ctors=function(){return(n.___wasm_call_ctors=n.asm.A).apply(null,arguments)};var st=n._emscripten_bind_VoidPtr___destroy___0=function(){return(st=n._emscripten_bind_VoidPtr___destroy___0=n.asm.B).apply(null,arguments)},ut=n._emscripten_bind_Graphviz_Graphviz_2=function(){return(ut=n._emscripten_bind_Graphviz_Graphviz_2=n.asm.C).apply(null,arguments)},ct=n._emscripten_bind_Graphviz_version_0=function(){return(ct=n._emscripten_bind_Graphviz_version_0=n.asm.D).apply(null,arguments)},lt=n._emscripten_bind_Graphviz_lastError_0=function(){return(lt=n._emscripten_bind_Graphviz_lastError_0=n.asm.E).apply(null,arguments)},ht=n._emscripten_bind_Graphviz_createFile_2=function(){return(ht=n._emscripten_bind_Graphviz_createFile_2=n.asm.F).apply(null,arguments)},ft=n._emscripten_bind_Graphviz_lastResult_0=function(){return(ft=n._emscripten_bind_Graphviz_lastResult_0=n.asm.G).apply(null,arguments)},dt=n._emscripten_bind_Graphviz_layout_3=function(){return(dt=n._emscripten_bind_Graphviz_layout_3=n.asm.H).apply(null,arguments)},pt=n._emscripten_bind_Graphviz___destroy___0=function(){return(pt=n._emscripten_bind_Graphviz___destroy___0=n.asm.I).apply(null,arguments)};n._free=function(){return(n._free=n.asm.K).apply(null,arguments)},n._malloc=function(){return(n._malloc=n.asm.L).apply(null,arguments)};var vt,mt=n.___errno_location=function(){return(mt=n.___errno_location=n.asm.M).apply(null,arguments)},wt=n._emscripten_builtin_memalign=function(){return(wt=n._emscripten_builtin_memalign=n.asm.N).apply(null,arguments)},yt=n.___cxa_is_pointer_type=function(){return(yt=n.___cxa_is_pointer_type=n.asm.O).apply(null,arguments)};function gt(t){function r(){vt||(vt=!0,n.calledRun=!0,f||(n.noFSInit||Z.init.initialized||Z.init(),Z.ignorePermissions=!1,Q(K),e(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),function(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)t=n.postRun.shift(),O.unshift(t);var t;Q(O)}()))}N>0||(function(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)t=n.preRun.shift(),P.unshift(t);var t;Q(P)}(),N>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),r()}),1)):r()))}if(n.___start_em_js=175828,n.___stop_em_js=175926,F=function t(){vt||gt(),vt||(F=t)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();function Et(){}function Bt(t){return(t||Et).__cache__}function _t(t,e){var r=Bt(e),n=r[t];return n||((n=Object.create((e||Et).prototype)).ptr=t,r[t]=n)}gt(),Et.prototype=Object.create(Et.prototype),Et.prototype.constructor=Et,Et.prototype.__class__=Et,Et.__cache__={},n.WrapperObject=Et,n.getCache=Bt,n.wrapPointer=_t,n.castObject=function(t,e){return _t(t.ptr,e)},n.NULL=_t(0),n.destroy=function(t){if(!t.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";t.__destroy__(),delete Bt(t.__class__)[t.ptr]},n.compare=function(t,e){return t.ptr===e.ptr},n.getPointer=function(t){return t.ptr},n.getClass=function(t){return t.__class__};var Dt={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(Dt.needed){for(var t=0;t=Dt.size?(d(i>0),Dt.needed+=i,r=n._malloc(i),Dt.temps.push(r)):(r=Dt.buffer+Dt.pos,Dt.pos+=i),r},copy:function(t,e,r){switch(r>>>=0,e.BYTES_PER_ELEMENT){case 2:r>>>=1;break;case 4:r>>>=2;break;case 8:r>>>=3}for(var n=0;n\n\n`}}class it{constructor(t){this._module=t}static load(){return(nt||(nt=function(t){const e=function(t){const e=t.length,r=[];let n=0,o=0,i=-1;for(let a=0;a88?13:14;do{r.push(255&n),n>>=8,o-=8}while(o>7);i=-1}}return i>-1&&r.push(255&(n|i<yKma:K`2htz8{/[.%Y+NAE>irU/?_Jh^Mi}V"~fyzS!(1y6%S]bqhFhw>~~ru@^Pac7~N4n9BkOjcZ=F8N$wB"s]in]%TG^=JD4LbgN,W+6`U7*)pj$2.G]B|XW)2S?0rH=FxUAWJwiE"zuZf0)RB~2Kbe?RKFBe3x;7LRO}f;59gq/YW)HPgVatkoCgRYB]qyBP44~o?mC@BZr%MLYT8>uCQ`Qy%m=N83JxW2TX@"]ah^ts!Mf5/<9bEMAkYr,#@?xH[aM9*mML}1!E~r+Z_g]5OPi/Ix@F;ecR~7~3V}L0|BH>#LiJcaQNj*Y8Ub^4oqp]&?s_;k*>N/3xmVhp8|C1sZOoZ8Uo8wp9lx?J$,!m>B$/)B94JH30/bf.pr<A2d_,&S_t9l?2CQ#YpcSeMAPA8HhZ1;^ag?RIN&KXJjIxHPdmwYKpu(/}bZ_,&x]Jj+9}&{DAuHr8EbEx:k=A8%a!f"b6>4:_~5de`Et_{Ky}IJ|I&1u/j]0w0k5BbvYINJi_O!B;x)(Z97;*;s>|k>13W[d&92.9xrT+3$$v*rF8Ae`@B;M9h]PFi+.8SFUgXiT$VQkpN!FU&zf8li|&!o.S&}0/qw5;n9UyN9_=@S#x#/I/5qq5Tm7doh40Pay5F?uJG:JTQrxJfX?wtD#N!YHL{RJp>G3hxJi5@tWX_Rx;},*E#/10iMCo3]3N%roP0bxBWr{(@7?]`9/Y9lmzz`{3G9gpw:9ME[,X*YtxkpO]q$V;?zz`kJyUG2C^<_2VZ,]<1_!`zCp;74,N*"Url"GT2f5:7EEfd{%l&;03SHyv)[g#zmG7&NK[A7gZ|i:fStBqDO)MW.MzZc"l9.6!bSAOH*YU]FSK{Y$UD#4~:IAH]2k5IlD5MqwCTY!9+lX=s|3S/WBm~x2#>$!9_yC&?&L~*g&%h}vx{82Ire;7%C*b8%ndwesTE8RUM5Q#2Pp7%/@eMdNw5)l7Hpy9Hp(6a<|=4S`Y*R`1(tb%m&_jf$X^`F+bsT$O6=~mr(U7W#R|Ksy;9i;pDO]]JT;&v)6dZ_A0d>x2J8X8_1V.g0M8V#(RE3M30/T_KO~#&`]`)$4lx?+8+IUCLK3}jVv@y5T1VO,]qllx_r~rO$.tLrw56bppCJ:L,%JmLb>e~U;MO{U3sw@25?6.A^;)&nxoajV6Qh7]m=,ys3Qlq4W+5=X=/1(.Jf`61rHT;61j)L)(rbwDHg1m=.9.*~H9Ckt@O>a>]6ek2aB51zy;3cX%F4Dn#`NHdAneqLvy[W.6uD7/&:9qPvtJ9&"YyfGuFV{Sy1z}dE[S9s[:[nO8stx5uh7897(Bs5/X;/9y$94&yo$2w>b)!"F%3]%df?^KAP{XW}J,X/JTNg0U*95!I^=`SZ[Hj2a%tiw(4Br#h|Z>$p8l8Cg7sq5vxO88Fr<DW1/EOk>=/5rQkK[tKq}$`50#]TkV<~BM`V}w>$LVkwZVZTf={tK><$gP2`,Yr{@wuTTtLRD/]{(4ZwCx:/G&wzK"UF{/)o`pnFDo^h9WOT4Ao*:YS@p?#iJj<(NqCV;dN%M2;RxKoavi=xgBzS4J1qZ"pH]&;:M5eKQ%gcf*9*S>dOI&*w#c:/GT2O}U0G9oYphmB1D,r|wk/N+JiP.+?F!pelD1[Gj&Xv99ng.2#5e:b2F${{U>1SjXViJ["rrTT}=o`qZQ#`h?=2nRC499>r}_@8s)6,DNVIrHs(#Yr~4Cn;q=$NA?uZbK`Iy=B;lo+O}&:vt:O}op9X([&c)*S;(]jsv{KW}O>b*^,5=O|5`6y`Wlt?6,20}bIO5I9e:7IV,+id/~|DO)MP[&V!M2r@U)brtjbK!4/BL9?P:scf@DO?L5#6KAx+eajwBUYv{+v"]V+@H[1Pk:mt+F1$7SMS.@6PVL8|Cp0_2+/Y(Y*9c/EP+_=/|M9/{K8C5I2@|wV$6a++*J{{(Y*{(r@q{3(Pg5Z~y{KRDr3UW1$_U_nha%^/f&7CB"y9+|Mkd(ZM3Zf$9%W5=keut4s*We]NigM@;bh5UGH2SS`hxpIaol&L4!)(#j"3<=Ueh&3;?gX%I1yqVn#!?7IJT)jhLBL`Ac);v/Rq,,yY>d7mp.IAH[x.[1F(&*bJ#_x&U7I@JlIrZQ3y=$9{7I9cGn09w"Vs;7:60$703$:(~3i;^`}}&y2c_c}Z^XBz};)_b:EF>V*&kT#^J}@T[F7}=|,%U:{ZR_/QJ"N<vy_irUY*T&ysenf*LQ>bKe,I"|flul>nv]d!C831tHD8jpv[swgaGZ7nOE7MD8pVP+cIfnemwC3].~rM&CF+#r@CehG9.BKF@kF6NjjjlrJ9S^*.8hG?Gr#2sTw,rh#&4jxn?ly`6?g.m!N_vke:i_1p:UC9dQGy9+ORlDi_V**v|7vobe7a)WW^]Kpz9&v7ID@)BG*F7lWzK^Km#.]=;:#54cQ#x4/sw`3W;=z:;n8J3R_6?Kga3;qs&W,ocB9>bK!bh{=)s)6smBPoG2XTvLGo+tI;CG%d5C)h5ct%Y6"%Y9"%Y+ZdJ,5YLJhE>I(CQf$w:hT9YeuIlExH/Ze5YGoGR*VHlzWX;"%Y,)@o#zQ^f7^h#/*I.vYj>y}(5_<>Fiot(u)DW)vpHhT9a47uOC.FdHnt0G6IuHCeCqsueuy6fD40/*E8M8M&:L+KU@^Qc#f/Tf"h{tRS2:puhBt7WS20^VUeO}C2x]tPzFR"IBGdMNiwMQ0!Yd)qaf7xI!x)3OGJRNH3Rg5?4[DW:00&Mz+7L^B"0cS"qfZSuKO$kY8O+p+4}D#%I.Y/ICG!HbZ/SCQnTPdSGXIJI)1Ea/cCmlE8M82k)XFKx;em&kTuMO%l#FLCb*Dn)FTCPg"CV&AXBJ6m}LF?BE_:}4(L`HgmAzkLKI(=|L:WkQv?Y7DM7cSFN5T,Pt.u3p[`}X6tsU"C|vNv(tHbt;PV/UCLEtgaC6kHuRP7=M8`v0C@^*[k5yxb*5d/5Xxn*iSIwgxkuNo08S(w,sdlAK^A|7*MR&kyDUj~)oX,u>gsQISc%xDaNgcl5jX,uPJ,SgX$MXX_n{P[!Flhec,p|`#4x4&Onb_V)*oi`nR0ICXhtFn%t*j*T1{$W6DmB8wOA8fR0Iv*aiO!I9~(Ff,#:K=%JmB&htMewP|tAh^mo,oeBPD}Vev]:jk{Umap},}8LPIP>iAIfL~BIOu.e&znTM]CTY2L[O,DUe?0%MUX}>{I[!S/KsR%zF4WkYqLHrNi*vtAxdm=m=l|AL<,GsSfK1:7=lTe&8h;i/OPy(`kn9C;8qYA!KuQ?0R8oe&P01#&nf`T|p+tynBe/yU[)OduGex8M6<$E{UXC8.CB2dip+[d;K"m2$h"mZ`>,&!L(lap5F0"gX.iNtLT.q,K9l0BiFbD=Z@JY4.&r41_%Y@}II8mAv9a|Y{]nS_S?[xr;P(fXeT_{t;$x(LAB8AAk6PgB8:gR7:w|:XNXt:H0eKRlgv]/!1J{m|6F!r*xg_PEWgt}$8iGvPR,jP7+v[jRDv#E~pwFg+1:i4x)~)DX.$Bi$C?W@BH:wn?{XeY)ya""/l[<^!|tcc?_LnfQv!D=)~7HZDpFW6uUX|D;DD"i;Av#DzHUQ|j9r1%M9AelP{6tX&g41N.IeKdf;qm|:yI+aDHpuLi9aj0h$.!":ijmJ;Hg&3$ospLe=,iSfstCf1[oBE0H]Juwu,ONvZ+?(Ts?AlBxOBPRr=a{P4))FBWhL[!sarO+S+hAICtbAg&wkriB>~D=829*@]RO6;=]B7uB8~7W)qgWl4HsHW)%LftsLXImK)h@#vFHmE^#q~Wg#G]FCy76u>ZQ;fRDeV8LW}#^FT(F$_%f^WI3)yZAPJ7gu+W,;|t4Ihpv(,_uy0?dMj9j8xrq}c=[OY?y!SWx1z{[F=bmhCeGsH}:8ZaN}1LVeBb:P89j*{7;=L*Bl8KSb[N<"qL03+SGeMDjJjv7bjJxlN39LouM8A^:BP27#/(,5ze~eys&adB#E&e8tfCrRDF+S;#{ajJGW7G#EXPnCjJMk!E+SMsw;UEKr="J;y/pQj]cDh/>BaB=o>O*$r7J0FdxaP#bN1f][Z1Zd;P5.I6VK<(xc"56agc*Bi4`ddw{oP#I5,/z]i!&Zb{4GlQz697$8xc,aXaRQz66a>+k?%r7^OKh;F2GZe6%?(g41k}o+JKIC0oolPv2N*naQosc)F^]@g|DssKJt+X(L~XZf0oBK8|Ca8vNeSpxUO.y9g6G86{lb$Tm.O(ms]=XPnHxQ]Fz?bA5I^&*g{&W(kD=^fUmI/JoG`&X&&F%}]&A?c82tsPK=:iF!YW,&tGBUrol6:vnkE[9TPHz6V*8wj%l;R]&OhwcI0=8O5T/4"ETd49SUI>Owsal;H&X*dz5/XW/,NCp=,BP_0{}hjmoxq{U7hk"bR(U;2o{VSV99,Nvi?oRxhFBUO#N20UBmTI:L?=`#rU%;hpWZPTj1^eey)"dcfV$3tA8P^md7Ub3qQWy5J8kNB]2FRRCh@MSe;_c01OncxE=%Ydx$qTGV}W;9dS^Gs{@P,Q`x3$qd?lSS411"zmh;@oxIcmrv1C(JQ,UUAyl&jfX<*g~qGQoafrqkcVj:#YkYoX++{,A6B4FK[NyTSfUU~#N{k$7ZE1?vjp8_L4rc}7{>wj32,ZyIf#{26](>WSe~&xQCmLsYrR/K=H_YL8v*LrDf`JIPun(gBE@Du5@thiDf6xn]pOK0lg#e(qVO;$VHEg:^<,Z$^op,MV8/}G.rYuphGbzn!@t_PVxuNF2!?vyI3+E!w5]^|RK>Dc_t2*lF|rG!931yt$Ikvbjiz!Td}8I3pLu6}aGtoO3)pYOhTBe@AF50?_Cv24mjcXBv2GubvtG8Ogv.Rpr$f#_mP5NyxI(+?0E6P66X^:x.{}yngoUd8Qp%fIUS4*nOs7pZKPSY5>Mp%BKZ8PDn5a:mvKS:CMT&Y;YmoupKy_dr}M=[ehGKZ2+|V&CMz=e$FLG(e.ey_%fwhm3)[T1ddlFQ|)IV8Ck;gMPg85!gr;oSZD[;bk]8gs|dks@#!2.F~?N5i9o.M#YXX!JV;7S$w:SP21<}St@=7N]2c4V)BHYllG+>Xv?{vu(F9$Z$#npyw,C1v8wFZ89fIZtB5wNN(Mc5f7"y%L+Rra2s!7IzAl0w(:,Oem;;`AOMq5t+Ot=8@BL,q5|A%7JO%?=ogcS=sE=gbLjTRv`^6F#Jt5LoIh7Xq9Dw)Cf_a1{=1h`6KwM[0pj>6?UOsTnP`FPgTh0BQXQ{_w@2*.Wuxn?yvm~x6MDylH):OspbQ@2npiP{a&NBrBl?(A]=e*9~(T$P1^8oi3Y{"E@[kO~Y(.9@yv3^B;I&1PKM&vsJec&L4gZ/UfqYyrn5E5&L6oRL*hnf[GVe*P[T!F]H,`;1@jCNjTD)>NF,YV00J*7@A3t,I*AS;0.fC";P1uLmQFu9%^de=*s!0|#B8BHWr=:pnOHK/W7%BI*qM9N!lh+Y50w$8g|o)GmwQc;e4*SEz~;{oOs0R3Bd[c3JFH/6%ycn2]fo_!4$I6ie^@ELtr/n2KYcHI(iHTK.)mlz$nmR~}Eq5:.!4I=,B4CEQ1Dc&W!w:)F=6NE8]@xNhLfNlwh+L2%E>N_WZ?:UmwuF7dK=7W[m8_Nnq.qKHW$9wjP"SU3TVctE>,B2waO"S[6:.IaEu8U!6V9U7U1|]hb51cd?>!~Tlw#*$4D1q*i6&lvXpSFNgaIb;9t/dVa&"qc=9HSC:jshNsGq".c!nSd9=X?kL3Ej:G$4er}N*xVU.sSv>`Gj0pKmo{SSW^|I)sZ&7pynX=!}`SDooxp#RjHXQ[2nX}D#F&uEed,NZ^e$RP(41Kgc}kmHKZY}G`.{A:0G5Q>teY;`Vb*5dK1;INO#))vv@n7P&0ss_Xs>7n9FKm"C|W*"`r6@B4dXWCV<]4dR#Szm4VGk?/RpDn|#b5*/)f.4(THZ!^S0BO9LK]UzK]}*/FK###B6;Ir}hL,1o#KZ}XzF7:M~}F0_7R(OGAPLe"OXW)xQD_0Ky,>XwNh`hUz0p0qlwbi)Kq,qd1f[36.Q+,x)5F{~>}>a1>!^6)5_V=jo<>)q}vr|?`kc|.@@tc"Mh|Z*ik>Gn0fv*k.Pta[{[FoH[)FP?l>M]sbTf;%ZFZ&s}}oGk+rl`z!HC:V(/"+5%!6Lw"+Lr2J|NwpuMzs4[oUE[eKo]95$/1y;[KA;vluwyf[Y.p5&esT&=>Ek$)VWx[6=N/hC"&Mm$[V$c2>`N4(n_Kx;;]x>g3YaWrM$|i5V2}MgC!FMBVFF=q:,>`65HiKV8c/*0Zj3%E_CHhhp@lr)T{]()qr.,hw]C9yxZ/9U+kW?83Fp,79)08&Ok{NI;zcb6U,HD:y;kJpPR?PR~0CrK]{8KS{/}JE]{N9Z@ik81^8eGPEUa,5F7KgPa7r4oJeo7}t^Hx."EY)A]Jqv2Hb]PlL>lZ%86+lYh!V^vL0~x|jZ)_DhwH`bsI.!NkekSBf]a)aKf*5_|9_URv{`iZ=FqY2Dcf<4rT.$&KEGoZkj`76ZomlE906d`[n7*9x>FRUhwgX)k{c_KlP<`aYs9V>XG(!_(v8/CWS*}^gL{{+[;KZ^(BJ|r2sYJ{TC=lR!?IElU$MN^]#.k{m!2V>OD{`;o7L;8[e6jR,E=.K@dJ&`>=g+`.]#td{z`zJz||F_y$f4lUkw+R]sbrV}xuwDeR!`(WucvXdK`o{j+s+;ewpP2m;L#i5zy~1V;AE^b;%UyN%F[J:&)UX(Q;WxvW[HV=W.IE;e"^*w!>LNM[c3{dz|%Ef57/!+/JsGm}?vs*Qj_O,nXC}oGPg|BsAl}?~#:N34}PZbU<`yzeqd"H`DWhJp,,,7MV!6y5=eJZU%IY+_GVKS3h!9|WL|U>6_O|*J{@>ey}>e}?W?r@/<,K[6`G+#[R:OP^nLZ_%jMr$YoZ_w8+XM}K,:,wbC4U?)gFhqrd^6&fW`kk@0|7>5rScY>Ug%#5`O%LGdqn9kwTYb*INkAalkGLPq6ESi@c?tGM{9Q3Dncyf:kHp!5.l/b/*QsUbQwIc^?xQV//FCW]GSk5F]1MSeh}6DWh::Hhq>)cVr(y3J@=&P]&TN6$vgFGr#NV>[scVW5q76>_zqn)C,VB7A^"+tShBJ6E@PSqZyNauwD=_xpR#lKh["VGpd7z3B3Ad9oiWCRzjFT%="|>iY,?[Ql1(#Dmu7WfcIw`y>v|OE6nO:<%.Mml%=TD=Z*dy3I6]qZ]1j+4FyQnq+&Ka*!+*XBjFZ8koZo?*2.],XE4yR3dhZTthOto&wAmj;u?gGSEkK$)r.d1yrOreE23gGEVRFKx#6{l+#f]`D`nE9H`REpQ[Gh>l2+Sc)tugZfLqwR^1Vhs#Uf3Z1DWU.Qc)p2n^9MTY@Xd[+Ef/s_Vm2ulKPF}?@L:jQ|Jf@Vh{h+}#be")=x#M+7&h9#AZZ+t@Iz}JiUsTIJqd~ng@*OuAprEDY!ysotooHMYZf7]/K;5TU~p7xaL(k6zZ&1`iFFBDhk:mvuJ|$y8aDl,]Niue&:rc,ML|K2:b_5$O}gZGvu9g1XU<"FcLJ}^,g@vlzfhHbVV@>5Sm=3PI[Da~Hw(IF2iM/sj=*L``L=.zu]!I9$QttZ<#_3}FK,DDf:%I:ty31f#_#tDWwH9yD+^t_H^rsx;@pOHg!y|HJBG>27t2ENjTDJK;%sN&WC{VW*.DVssH&H+p6V72mY27tV|5azx)a.mF:]/@Kfca.pt3<+xd[pS^G[c824b(moR4uZZy,NFT^c5Ka+hG|zN9I6N}Z3Uk)+)R+HH/^jHf<*V8mx&n7cmiz)!l).]O!$BF)q0n,F7WMBNCXlfncmQ`]%Mn5@SMv,*{Gpm!Ndx87S2a_UlCpN4k05d#_cO3>UZS0&K`!#6lDf:|}b,VcG5BhG58w(>:1l@cz~uuYIjbtWDK/W7rb%4]|zyVHHOrwOc`zcSi}L46kK4V6*E0Y}5bT7N|4~c##m3r"VW8Naxcs*d~EsDoqB>Q.shnuK|RIEov{4)hyA0mhujW+^[|X`Ww>b6X+v*j/YYScJB3xI&xgq=SOo!A7fS]rtXQ~&FC*./,;~YO$tqTZ,z.YvKYewlSo6xESEGe{q$KSGcmb,LzWN[GcC>;*CJ?MCe3URO27V+kMQCLUT4.(NXjNm0Q~9)b)R_{b]zq7ycPk9.VB!J_*>khmE@u+uLu?aINVA<)FQqObiQ[t&W=ce<80F]OOKa+#I$74yKLgC&HT!@=7jw]"^82#J<2Jo:r^{whZy#ZU}Y;)U.$TAO+2P^%dFS{(6SyW}#D`bJ93sM5@3!2E=lJAHu]2i?kW3ig;JdzzZk~j[ND/K}X,B~]OFzcw$hHA=4m7UEIrmcg^Ybu9Xh^qgdx]ec?b)(|f!ZvksYSAm0B&=G%)[rZTeRv{uDbpZ$yVSO_r(zG/%2&N+Ruph412FP?"G{.5+QlpEyVp&fSl+UDKI+F$r$dMz05Ss%08tfmDtfc4USe+#dkedFo*dvw>LI20:G.S2*JW0{`{%wD!pf#Tk7O`dJ7Tp;B.|Jh*[9sENL#T&t/Y*WP7#;m?c[:CEF@b@?$UU&hEgf#e78@u>SV.3!OEq>$v6F>cm;Tb~H.U|[;NxThZXnM0GCWp7b3]uZ5NZPZI{:dKN00Yn^q0Wt$ldWH>7^hlod)/Jslw=fV8QtpbyReKmRE5$F(&2.L;q%Cx7Uk$iy3*=cBOptS&<(A~dKlXhFK;")4JuYTtdS|YmY{21xw}hI="&kG.n{L4|}LD_]zH1pDN=Ya{xlyrFFA!NKs4s["NKW~r9n7#%cMn/S{(5}enmW[@u{o]$(mbm+?OqrG?EIX!kZj@!KnU5!1y8{d4vL5_k3K+1+lITwJ$04}}YGJg0pG{!+r!~>D2";vA*K*u:kM~[$Yr,qLqRFm[tcQtww2#p6Wg5zo,%j?!8+%jV%WWNjcu:*)KUy4frxNI&l7ae7ym:Bm/9GvZpGfyifkX)[.{^K,uq!0oraeIC13Y2Y@&!!aG+Har[`mkp!OV9zb+`KSI?.y$b#JgG:?!P6bfVv|0VVaiTK4iu"c]O/z/yDgr?7~Y,|J?IL9{6L~,L5Xt|N*Jz|<,cFT:KYS+%G%)zBp5j`Yhnv4{m45PFGSFyY+?:OOX9AE7bEroI]gDM3dqAk0.TW<#bW9z!*HD9&2{9h2qSSmw]p@LU*@p),.CbV31)B`K9&04W/lF8QQUT/%uvSF`u(O_M|^^@)}h|jyG=s!Q,/pI@@iZ$#K={lqx:n?~1HiR+z)^@^gfu9!CUory2liP=Pl:^=P[P[nzy}P7gkoc,n`";xZkQHC{Q_=iL,):UIKu,>#Mg|WE{6KBIl6KJo`+mLyN$tBki$;.;0uU+(y*3#zfz~P+@ehs+hh;%OYIY7Iw%+lqQYFkVYVyDm,|u?zBTV<{CH|ueS4E72z]MqQZUT9@K*;?I.5%2H`@W@KB0![l[%`V@M.MG,X5N~tN={WO8b/3Nchje<[wV&;o,AFL9SFw8a9#QiE!l&`ZM;9I^V$tAmVPD~[3!8vhuuKhq4Mf.(}NZj&AWP!z;1jQ6+vXsHjSWe6c|hf"s[*tXM{2mxXuji.MhqUdJEc9J^,CWP!5pj:`20FE1,56hFuMeL[R@:n.XJreuRBvasrEcvT1sLV%Ta$G10bTBnkmX/|,vE[`P]`FmRb?/fyamH=L<:gxeREz]*?k<"=j*2`[jvjNQ`{m<_m2f[>eyB,S+25{j0vxygyUbwybhx;84jksNsoYh.U`^lP}@1VYUtUdqDD;I"NM~;lZ+nob)dL]r+{+,5ULH#fu9Q9V;c8pin9_bVrfMep.[/!CcZlK*(e!tFVH3fXY6O?istq5d%27I?+7;Q*lwA,,f[eIpku"a,y_`Tx+/n[667KEo^]Ss!Mv>edQ+J@E3>pl8/.;Q6/{CQ^UF^UIcWQrq%VUfGz?I}pl8[.ujf3=bd;`q}K*cT}?9Gg3vXMO8GgJ[_vXgP.T.31RX^Nm3?UL3pkxXWg#/n9ELl{(Pq+WiCC!r%_7+cY?`$HH`1+6/mE|3vLEJHE(Oug`r0346w}ypS;Vz;,~?e@ZL+(E;yWL+;;e!bFWef0bDyy*rvfU)xJbTE97k*Y%/i"NUj8{XqL3n4viSRQX^%;oj5>Do5nSYcc&Tau^NxuKC16&K.eHt%%e[;Vr[&G+g.$<4m_`B1KZyNL=UKPk9)XOKj40.#?qJB1R/j,Xw5C!ywj`62@uxpw#7H1FyNi4xuw{Wm/GmXZu![^(l^Ju)/e)/nUm?)>W!X#]x)w4oH*"@gKk~(B.F`[blc]:JVg||i2"a3,]tJbgv*W6jo%/>!0PmYRCUlUM.Q7X)D#eHCH:7vql+t5Y23.*!?xqCWYU+YV+=i][]C2MM!4e|yqjBK4CQ5Wjcx8xBp5}!qyt)/mc)/mc),4=<4CMJ.TiToZN^Zp_pO;BY/UyC;djD"1^Ni{wEfPT%)Uf*wz0`XXRDWI+)w`!F`D+8M`&;?6[g@j,;I}OgSbh./D6Wet3Z2Zkk?3PRjZ_@x*PX)4k&W2l9#&,[#gQ?#%mVy=!|8Ngx"9ftYqKEKX5kJOq%{~>2Bo;FZY*Ir|{+5I2g@^HAHY*;_5Q$:ne`[6Fm4>S~5gu4y:=Z4C;}eXW+pkWU1x3QXtbn|V3{;~c3aoRaX;u?_F=*g;u4/$xP74_:oK=fashg8zZLxWYm343rpVmN[e11^gO?8:GBpwoxxrp[8`L@ClD0WXbI]Ep;neaaXwC5ie$}ty*s7YX5=Q#0?CAH]jpIDm#5TqR#ev+eY)/<9JAF;z%DHxmn}rQWAo29N^Ca!JSn:G?T0C}53XajL+)(+R}ux0IXZk^Do&__Cmo{}pS*lBoZ|G=qh),HmGFM*t6]8FV%@u%p%&~rD>]wrp;Jq&AD*K]qtlemM94[`V6D"vpp%HcuErS5i3{BU*+XX}oJOu>hx+u2H~$>i/;1&QUCBa+J9#b6+i"*mAyh#.LF^Z_BMzJs>9x_X7e9`6}EViJ!(UMF^Z)*;rzKy@tN03zAi5:v/zp>aXD"vkC[e?EuY"rU:XbT!L{5f"f=f.u~gL`c)o:o9fhK!=Uszv3rp~|w!=]u2c}EKlp*98*TDr:%b)XB@*fnuvY#/~|/$tk.Ekb;~Vvv4r,q)[aVAYOA:=`NY?.Ix;s]%f_XL5^?6rDF1|%O]{|/XWx=wLmR@C>iuU;5WM;{EXOGPR`4fEk6vfY@zRx1AW)HydS>%YKLyTA*YyiEXxgQsVYW|$+C2#P)ynJxns+CD@TIro0&7*UZiO0EPY@CqX*S9.auZO(ubu_AJsfR1LH^jvgD_;LH%Ev=b8e)rY@~@yYBWG!O7VK;9J?uUw*E5Yl``0/cIxR+E4w;/_.3WxBo6EXg|LC)Y^vdrB9zL_Ba9]@*jFF6OJ]hdd>mHrlz2C:cdtZ/Z.kr{[&yX!w%p!o8iDRwC1:@fZR9r:JS}|9MWKUu3L{{#p#?xbx!)Cd69+EgH{|D3[1bhZU?GiOvSEo:S0}If@61e_oj)NAS{(cP]^4oO&]D2:ylLj)"JqJolj3n;!4md.LI^Ke7N$bN6;e4b&X:M&XIQ?yK5w)`y=yp/r+w,/nhz3qLo"/sw>LQFwNpvq2N``XBYk&FUHC>J!Mc7cL+q("GzM3zsQVb&!_mhkryA@84jaccuL|szW7g#M_k@cTGNqrJbfrAhhgn;|GFF)qka]$J.cP;L2#r){`[GCh5=DZx:6c?e";sPeC()1&{4Bo>`y;Nfstdd],$iL_,&B_puR=0>gxX%C:mO,]z!5XRuctd9XZI2r/GhO?Be,"xr9*_Y9$zKk2h@Y*!KFsG)bB~Xg,dA~~5NIoIt~sV%+s:3mp4?dvDEl:Yw%OCun]2gEEm$F$AI;A7*o"7Ja).wYbG>#ibD}}7gn!G"y3BTyx.4!VWdKK_NIC:0`yUl36`PzBm,r+uF:[d/T3XXio?cWXA5AcI}5c?BE$h+JFw!Ov4qhBNX8V;3^7*Cx!;KB0HedQXt)RrS00$iL}l&(4^hky.dwA/r*Jn0Q@qp+).ItY@[74SxrZ7|F#NN4g7OAv@[&D.KZi{Q^[oxS0XjN~YC%toC:4h`L*w>V+n.+4<`%ey!9pi9IMyt>stpLza51I"NOqq"/gq{6YhL%Q]g{oA>o5wqEX3Fq>dl!L.qYDkKW$A~,1j"?zA<<2|(c~/)1B>Syv+2~0;YnXKXRrT7.y"czm9ZJ_>ZGYO}96|/ERK|,8`L3|JkH~*zUUMgvn[3h0[4g{qf=yrZ}#sN&mo,tH~gk(Rn,t_{GBh_gL>7&Mqwn&Chh@$f]eC|19.9r?(Uq>uE.v]MKwQ$Q:&;HqZICDzm~@u)2Sa8PG8~:bfLw8riG9fEThCLCkThhhazq(g;I>_Frux#l@Jnqw{KVD9chONk`r,XU&6W(r4zG)pUqE7/XZ?(l^vuErp#G.O(H)4{ytHIOX@4(@2jH.w=coX4g!!_CU%%d?yLt%[^!yt]mjL=A}Q!HXbcP[Vq43!:Tc8Ke,ox&UGdS>)Ly1"^$Ux})dqxtB5e=L1pm2sBfHTy)DU!n{ss*U59i${JOcy!#O?BL<.o)4bKdd}dbTRFN3^d)[T~_&{RHvJX($[QoIC+qv7DXKU)Ai0(DH=Bh?C4I$)7EkbKiy7&}hvV/(W{^o%Q$>.[E3{=6+Jh^!b19D5t2+Uh7L}3522p4i^H{gmcpGCoDWw790=OGEQEtl)%"65)B7u/X7q&to#t.TX1p?WmPf<|OF"Oc#!M=9`I+)F_.s>f&?(KsA5i^;K"r=eUJEV}H(aV0o##OIb26ICRIW3N)upgnH~PyI&;*.y#lj%[@Xb>nc{$dKymBO)MY{hXI;sX(6A)qgp=[&=!0C$LnP)[d%Sjwf5F2!0yjrfu:GyVNC2_gXTR%t?g<7XZpl3B_LL>=I{h4wN`J3/_kb,P/x`09BRPz{P!uUWl,FB%+Ju>k>QKZ/nJt,`!3jLhKUgKnhC[=kC^*}?5=k(R_Hb"o8x14RI8eYviHK#t2Kjsq@:i#~ke$Fd;6;puvVb#Q9rGVN[f<_N>Kx{[X$]?6A&UM)qTO`q{Bbq^2.rlu9i"|i+9GV_Xz?Xk&6gV;*~rBuM.eC^~@h_!2QE7V2TUQ@=`8p?ziQk,e9&*FcQOgpo(e92cV18tPEXC4AGI`HU5&o`1R@6J*L3(UU{C<{(o/i]$nMvH7Y4jCIoWHRr4Qp7_@Df0[fZH&qJ;+&uYgcicX+4AwpytqT[d&!}BD9.Hx_85xhv^d6yy~SC=_6@![rH95hz=1i;bPkECoGq8}fL$WA>4S:Gk/qF+w&@Lec]&7.4zKp[W!EAlL3xXtRN_=tT]T&ioz|z8ZE7*WXhenXHDoUlq&p]TE[J;u2Q)>$!%Zb;KpMmhQrKxdyg+>l:@qN3,TSk/5iIQ.aKup.=;Mg@;sXbbPxFak%rBKV8SDr@.U=M8mL9ycUF;eFyaWsuM)_<_77:h{0;vKk6l+EJ:LcKDx_Yn2SnkEML_>DTzqsRrzUU_GP>V_Py*64V~Hv9xVCqroFKjbFVH!kBGh&jsnB:.Oc*HuGU.Uq}m)64ulBMFlZfhS*)$ZU)Qie("jpcGi]TGYb2(JDGcrHuErn)LIQb)@M5nC1yCx!q/H,d`1d3ITvm.;oj>RJ?sP@vml0Y.!>k|qdb_F$p9.br+:/m%QBR5qV16v@#*mF^`W6+4TT2+GxM2s}tD[`P,Bq!KvAT~,MRjpvgEEE+@+%?W3}fF=oFkD.6p9iX&zU3g;{(fk@KI,n*1R~QGz)2;_O:pmek.i)BK#qtZvM4fT#[pZY".f]@sUbKm<6V5Xy2<[f2w=h4t%&{ebM#g~;pY$I2p5_J9.```+9vv*N{goJQNOr/PlZ+,N%VC.9k9##KPFz)2WGHf$y"^eJ+qBV&Ja/E,vGWMgd`MK!/&pG`6mzN,!,hVa#U{mp@E)Wy]CxE5S{c"`8m>k3uy4)B#ga4j,W&U_hTKs/d7,,:`Q$^(:WPF}FyqGmi=6uX<`a0T~v;Foo;{j~{6YkF@/`!md,4j]{%S+vv03F(H$[,$f_BvM|iViG}^(w&;o!F}o8OxqP]"4SZl7I56>O#T)BnMrabO:N3eJtz,bs2Nso;A=2utl@kqpPda&iM>U+HPZ.E@t@8CiC~zDp=nT,^5Ug@Lshvrho7vwE=_kuiRU`|$ZOStTjn+OM)/(.7Qs_YP_8VB/=kQ_pIh56V7WnOX*8Wh5O~]NiX7%FJLmtDh[1ZXE[I~lQ2k)p=N/MOwqzBURaSefDu^^g98okWr)|8O/Y*8?pL@t0ic4>6lSi}ePixQVn?jy3K*u@^D&MWQ)S9qCEjm^pOK~Lx4/B,>8wFhq"gZxbhBW;Q78Qsrvx6V>p4cV_?cqC43PdtZKgluWuDawR0x45WdM*)DRjg%.aG5ByV3nW8=]uptcqvgE6u7P!Ufx(Kopfl8%d^me9m(q0Je~DIo{rj2^7trp!M1%NBfm!SfhIvD]P;qM):)BE*x+jJWhu*Iwu`0..[)eNhc0!wQF#rUnk`FrXrd.U]F^?xTGw^3xo{re0~GA(fYVWrQim4*mN]~>8PJ@?1vlQ`n%fZp=I"=Z}47nd?T+e!e"#v>#1;)<247v=^bSsl.iJ;tPHQuKGQ&F[lR=?i8D?8cXUU]rL}>l/[yeD95*h%fCvT;Dt>[w7Cn&bVIAY3qg?WaT;ya/4UEthIAfJG^<8}L!~aYatU<33/lbX#?*k[6`Sg;52EM)R6ceMN{[N$3``O|MEdisuUUd$Ahc^pH!5Ud9)deh0mp35o]^,bP3]MQ{E8"5eDdJ8Aq1Yh/y;yx/Kl>.&W~>XA@+XvF]W`Oxv4ebrI(py^ov!%y}o@S6^Y"SM5m{"c?!lw5;C>Z8*qDMX3Q~*E2qV,Sk:d0]?cAIRJ9*?(/pI%y5=5OY8zuu(&8[i+uWf[4Iy}]&Amo>26`qd=3^#/iVU`t`7/`<`6LoF|w/Vj0>aS#WEv4632J;WCf@1_@EDx^KVjmgY(?uDC$<&dUu5~vu,ea7ES)oXB8i;W._OEvP]9,]=RlDLgX_*y*v0mAiB3EIpU]y8n5EFq&5C{>ySntD.Typ8El5&vmX+Y_H!~1wo+rw^DqxU63jRZm025U,v3`u&YCV]ITeLu%7V!MXcWdZ48OPz+Q!dxA>"NhhL|kt=Wiu{4H)I(tH]{.3yMwy"FbhG1)2.GLF^=pS>qz1mXgt%1sFLGxqG;N6"y;,cNZum7Tk8{r0)[^7+v,*Z^3V*a)[omd8}vvK2l*vYCxXqmj>8c*9P4P;T~^idd2T`FALWM%|AT32}9GMJ{3B`M9Rpy@o:/{`,M|wpJ%xTx,H[ciTtK=fejfOef5h>iu+`b,_/K6!3EPaEzyi/IP:>[5bsyQ^7f|D*4g#AI"4Q`wcs,^SvR38WhsTL.X^!H(dG(tHl`qN~DD]^[nE$;l4VNq>W@^/Cs`n}z"lpo8cv_E@5g4N/pAq:b`ywVnCKv:!POm+"k@Nw#2EHX$f1x.:H%bx0umx&{yk8Y+0+Rqk6>qLmp|He5Tm6}3RCE7/3}UK%+j{P_u@yiwA,m:vwS<&nSR>3[B=uU"x)?o#ZbUzY+Wi@P$>iT^]qfSyW$Z,eMWDj/yB&~gQjDM3KF}^Zs$VI!g;OP}y"cj~Yrh.3(mW99s1xmc3;K_zp4DK~_HU`?tuu2=M:G3}Xk*KJ<(^z!kJ*;&KXi)Rg>hw{CAO>PkQ4iYim}N=$dT)nt^x2[J$9sL,_2g??f!j#21YFL8VMS)}Phs@Pj1z>uRN{Cg)lDD;~:RP0XuGquntruPi=hUqUcouRN>i?W829u0{?W827u0{uHhpb{mRdc7UDjFM,,!5U):W}}GyHc2]?xBTKdsTu&we/jr|&9)28I39T~yy0P@eKBHB>WEOuON@fM1zA+&OtDi}|2}!ddN=uja6L3c.3((Nl7yA@}4k_jc`"v:,k+{L"<.a*GOThGH`(MaJ,83ugJ^*1u6$j2S@Iu^0M;JYy&UW)M<6s{0JsE)L5N%`8O4nl+iP|NhV?7YLfm0Uk@rl+/VxL*DIX/4m4PzDOMEPD*(w!q9)fomguK8$XQ_E~:EETKxitX71nw*}$sqv0o_Fe(dOM}Pu/IXQT)r72{NO`U;WH&l9#hcJ5lIL=$?xms<9XTN?/1vOF<%vCKeH;X#4&{8fKmbZ*0p5qeohPF(f8zni3O6>i/pyrfw0>lg;6lm$5Is*xh%d%ZkKT|V][^U;jz@1*L*g>Y)MoS5J9n:Y&5_vV*Y)29vVqVGI!DF.x<%+`KHU+rcCC["8zA0PrIhjItV4uL7>mcKJq//4%6Z7zn22B,t5:G%N0ft[Z~WyDZ3GayE!ra1{CRCPe:*D,)F*Rub[jIKeJ*O/9_qf#IFKaVmi+}iiUUgK6eda0yTCD@xt2sL+(xqq$<6[sL1bhxYC{Zk&b%9zbrsf~[#z.q#lqpsj}T!.y"G<.!L*t$Tl+kXZsWKRz?oG9RjXLJkwI3&)"fLe@H7K57D@an_b~n_asvZBc>G<<4wiPN0e!4]l)]f`^H7g|`P6Et~,vGM}}yF|a%4Pt]Ync#7In+(}54YV0)7<kRoLLCuxEvK`WZX=,`hzG7sJgzjC>4R4y=st@<~4n5H=r#QwRw^e2t^vk+!9oL}NS@fNtr%^CrnaSZ*blq)acwec!M@k7nb,)FgK/S/ZKw?h^/De+l6:;A~G](LNP$d[3wi>tt:"e*fdMl8{[AMX?K6hLl5=yXDzZa0h3?5]I:5zG4{$+!L"d}X(Bdq=XNS9M;t&y4ok,!l1?Zdaw[8&uP+#Y7js}HDqx@iqE"^O60)ZvP0Hf1G&XgiGC(Sn,bI{:88e&n7Vj;)x&.I!M|P3EF3>u?)$/UJ!Jed5Qi)>+$c[cujT5cQye%R%P?0dY3{mI#oXWZr!eH#x{i%hoDooEmdv$.2y6@=XZXz*RQx|##.)!Q|x>pQ4>!.Z(bw>LB5Hn8kIY1UIXP.`yx+tZIj+v:UGzq/wt;%F[Kxib+SezT^kz;u=bjD6gdDqLDN;trwHEB&`/|f.|}k9!Ru3pR#c*tjOYKM6opX`KZ!L1O_pZc&kxT,:Z?WMK%wUz!l9@Uvk5x|&S07>[W&3Z8qCJ%EA`_i29PVr~|xl29qfi<|#UJj$`ESsy;@o?x^0!z6~qKW)uNmz!z6PV]ua|=t~quS[DZ&a[Y*0dtX|0Q!6{W+P7_ciNVw!+k<=DaJke3p;U33ULl*/n<%.xn3n*lBdeIM|Dx*f15Kb:YIVf@+N*s+05bdX&5V6m:{iJwG:ho:Y"3G=_?fMSMnM3@DM`}QT`bdrh.>V]cOVzRNP(g}3k4%D6E"XHl@4%.7p=*rs,`$+mPxfO6~p(B,kka8uuBQDy;WOAz>L1??C`6J6%+b{~`jQer2MR:Dz?I>@]{4)L.M{_oH[GmBU]?|C;ywTeSHuKnw.332G_(S22Ggf7q/b}:S*`a{=,G%!sX~Q7&EaOY]`6u?PhyEp&0T;7vJ_h@*E)fFrfip@iF$3]On2zNGrr35q&o#9(583}y:MLb;1W]>[{,a+h^.$c^h[q<%.?tg@jp.1Xb;s&t8kfzT@*;d[}w{+fUh)l^9>arg=K):ZKK&H.rch"VOZ;P[]TLUf)hf]HP?rz*M`6?IW4k}j#?e,^QB7:R.wlMf"VQztZzmY4(]^_FQPpE~lbm+#o/We#K80LsyObfj#8iCK~%(y36d2rlq~_Qz/n0{;sz9!YueNgF.+Ym+/fHa5B;N)d7W{|6Z3l8l*#~b`>l>W,wVw$[3T1OFgN;*1g;S.1[V>[^<}>fGc+&T6VgV>[7Uz,%X3,#Evgtj#Voeu^ooJ(=t:cV;.o&[c>UN(lvxK|9zjb$I.1`NX&|<3533S>94.(KKl=73j@}h/fb%Q5$/BH2v+9!4DS]g.1%)n*W4Uk(feSV:I7w2~Za;eyxg#wQv+9(Jhe@0lpa(,lP`sE`VwiWdOS|m}?ja}z2p"N{,[hzbWU#Wutu6m6eVN/}"K9orVRZ%dPXxi77Gy{j70H$OhLkq+ubRT]X8:aVD9,NL),1~@Hli)=V6):,C]B`IL;^1fAuCxfa]H"r_wDb7pE1##"ujDLKH+(ZqVrBb.]y~[$Y)ZWH+1G+Q:_md6Vh:B;MVQsKDJbcGG>yI:^qRx%[OzOz#qmxs&VHZ<_m2Bro3X".TP,)4gmG?`8++<9Z_=^ZI*3tfj%/6kj+P=!qYQSHnS:1$pdd~qcOXIOI/r%!glR!=(@KLwPT?lMdU;dp&.Ud@i+4_VP^bbmFw301$[7`/$HaGxFkaGUI"`IKWU4b,[v&,k6)PBSF@%Bh(pwK:5HLMLt2I)2`1tjL{ivUf(aDY,b"4d/)yNn2(zGohXdH+m"I1~rkWJbI3:S@Dj`Y3C4s_K7[;L$zo0[01&@h)2~(Xzu![C3zHtE,p*b^WKSLY6*n`e*z2wJhsBFw46I!T!>}KE4Teh3&lC.1El@#ZF6enfE,LXgCxff)okQ%+wU!&SEUXbcb2_&wWP:F#c"m7XdzK9eK/7uP$GENPX@:QIp(WUlB8g!:Sat+bP{48mGjWClB80e@IG*aaefvU(5l%(1k*{Rr,B+ZWvCl/B:#tRpU~MOJ+!hi4^e`&!mQh=?HTtDatESl!uF:kxi5rbWQGJFd7;,i9LgHk:zVy|{PR!xKR:awY{+XJ?MD8a<^#}^F:R!}2[h0iH?sfv=+H?VuZ(IJVJ?B#J,)O{aPoXOSO)b*JMaC?7vtOO@fbL})tswB1/GuUsIe||vOZF(`~y`:?0PaH>Y&p<]ZEIqrh[s5xV<0}h{*[AOY2lwWt_d93^TTx1#4Mz*qkqdIeDipi^}78!ejVR`VhyPYQ;ZfAw;[GCudO*kh./V]FBP.azM{LH^|,{{|PusM/j&6JzYo,|,w}$B1aIy<]H5az4h1%YGe+z`jw8&7@EpOv+Dl*#5,=g1<`=Mv,(/PREhhGWKlW`xq_=X/>>mgT!&`v%=~B|]f*L;#WLDFz?*qZY+&M{YZ&.l_XPzcC)IbkzLRVG[D,nYoc^#?+0z<[#XznQXCF)(oPUMIiF=;JN,:nzqs=|w5EHL.W2p$IKme*i9NYcE^r!y`)7NYcn=Ei)aL,}CPN9.mjC}GC#5Xpv~m;fK:/2,CZ^"AVMa5fGgkU,yLF(PAA@G"Z[%l5LOvEwBO!dKod=pU7`=x#J>3maW%,H,_<;3UF6C[QZ!9J9t5OGssf>+szH^u2+2L}pgSO.Y@~>FyFpCV:#{)W]%]<({+5Z_2N#/Aop`}!l>yZ78?=P9x}c$mA6(q3lrYj+&OC%XM|*FqRqf!}wSj;}#YLH6%H!nFYIw,E6G5F`bz;/!i!Mti@f/v9{>oE$+K5YzGoA+iD?/0Y|GG2`^f{dX_4:SleuCopm8MI;I0B.rD8K~e4}h1L~U|dH%hN`{U_)V3r81l|og:eu1"4MBrU`>wdMIZ"ZviS>XB!<=sSi?qZ6NBm_@m)wY08n;B*i8;8r<|y%DQ@=tp$3u3ET[8`_^Y{yZu/n3g{L&fzxs9op)j9>in^v37v?Gga,y{>&r,3T]QQV7zb>!4cm`r;oB?%Y`EAkjX0{h,my*P<*9cq}O/]A7}EQfl3Nqo<{XeaxeF/I$RHU$k?xJ`p31$X99_$*|Vo4,>$KHQ;3>T#;0>}GsK34H/el.OV4qf`#xFn%`^1x]Z)sMBj$#LYOxE|n99n%(9z{E<&%bsTF!.*/f/HzYac/h(0?QvMQ,%l(c81REhzr!,btO=TyvHN0#IiY4%2w:U4!3/U,WLt+M@G}H+}ZqLk51<3kL6Ck|}WvIz:m/(6pqccQp^enizju$cEBF?p4co_(a~}gVrnW5K7!9p(j?(g[[bI."0Eu3C{?#~FbKx}Y92fFytcE?|d(a$EM1r]^FW&ey+qih}{i|)t>jcJT}9}}WYr}i06Gh*|vRIx,b"_F}.SKM_,w,Cr:1Dp*o>)gV(vhAcKDp8CTO?}0*r0^m6;1J3ID%R4@WZrcCz(xy>.n27r`ZgM)MZ`r/6z:d[3::>OJ4T3E%^CkA]kl&_1?1c1V^ewNH}yKHIv/FkT*W(O)&$q^R^YRvOcl%eE(2f;6~FhEmq3_5VHrlhl$wp~@+4,DgYlOI%Q)H8rrTv9I2fmia+|i?d_,tI%j%j?!Dq7:,z_]3O[!pj)l;}%v7W*ZaX@>c[~nisnO*OS3qcW$?#viF1vXLp&ptm}a,#J+40H:xeU)efYur{jlz8z$|lQjE"R0*&/1jjGxR3bmcnbUDYXFo)6K}gUXpSD:]ZC<9%^%,}!XT0!SU|YO2MR%rEG?S9J/K}uBt]5kl~[=CyG#gF6oBA:!v`kx;5p8^1dQIhTGU=LZj.m$Ta_?O[REd6F.BCy<7r>JQ%.e_b+"onJDDF=uwa7FUa2N3`58@2fJil;l*goUq#t+[Ue@>5/|8I=fE6=lBNa>bE_a6Z(YM[r<$p1R^E_ke6Vri1+5p,tR&|%M5M&1[nDCp&$?Lo|/&11S=HHG$m3>ZqeD5KxD#KS3^T#H40z|e/24ky8f#)IOQ1xl>3$49Jg^,5!2@)mhfpL+ga;mG%Nr]#w"GzaJd;*@Jv857X$vb&Ig6XOgU+wbK;R3Il]iDd!$%PE4*IgxYnHgO@!Pi=|zBP$w@G|f`8k}X!b2*fvlw7It;[A!kH!s6d?uItGDDHf]sTm0qo6vq;J9XmwFQ:4tQou{Z+LV6C,SN5OiQwb+3o#cp5e[&g%6L*6Lo4vmfs(+!Ep:=!5GyN{))a]VQvH@gpMb]MuyyXBqd|n=t{ON>zggf#"W6fi.jGR!{[$$0U3djK_sznb~GRG&[RK/t|*BkC6F|*U!C#xK(?SC[6I%J%]"xtZiCW`G!!8INRvvT|BD/0kf`*@aI)5q/LL@^xp1XU_BdZi7fo467x"]6[Ggc@DEZ3fC?{S$QD53Z<5fnfDg.#JG2l)Mn@^>#u9)F^bc]{"w+Ki$5_e]t_5,`~zZ@;aoJ5qg^@0%L7ygzgc,[Jr+g9oOTBXiFz]4p1N6zL#Zwd>?7<$BKi/~Pb7?u.[8nqO>,Gfqm;./;rbK}&vnuF;n@Zr/2L*OZx^jzvTI*qqDDgLr"NK%)2`B2eTa$@OK^uj]w,{N8nr(@{/T4]Q:]oxaY/Quse9c"jU2(f^?%uOc8|2,m+kUz"KaEUH2?"y,LR`yf{?:[YsYN[@7vAdx0LX"uH(_JCby!0`ZxJ:`QKj}Q+guxEtRz/:I5u`OI8o9UEC,R@qd["KrYH=sBujC}"AmL,p>H~V"lQhbP}4!#|16=qPtS?{2=%XMPn)XU(cOSI]6oh}F,MlJ]*?#=,t[wJco`1u}5,a[pXWjDomrFJQ61nd?:_@:^2di[(>+jpq|/39^lidT,Y$I$?K`Wo.|F>=xKTgYV4gqG%|p!`oXVy!"A{#2ey~dMt(}lcVZ6J#%C5&ms28}@47BJ]RiLv<$fKja0X>8}2eTl]:I)0uVQg<0JwWIHqq#J#~?Oif4Y20xhOsE=95k4Tew7)65W@##%[q/dWMIhCKfaiOW6.EXd6q2tjYga7ScKc,OZSWdB@),8f.L([SK0oAANE">p1&w2}"l*m(0asZEWh6]?rRt%4ON![|q)lBMeJ4.+,&M<;wD$x"E*O/5+tNQXw#6?B"I]&K:6k{RRALX!Z(iHn}PaNl2W#X@n+xJ8C*MEO>4g7b)]6{f4wK|8@`4$y,$C7![Z#8n"9WtVPDS{LGXL@I7xinT;c[#"3T>JxfFlHiSJ/`[^L9"Wb@JkMVM86xs`61!YZm_?~vPG2huomy&]@n2#)/MZkZ.X+>4&H>X,C_@UNHoR[e]h#k72Ad0$f6=(9~].L`{!H8#<{ojZP[W9<;.6(Wor>u_JhtsFp.EO)NQN(_^Np:KMDaI7R`+w8?c;GwE*oE7]4wn1xW1ekf`$45w>!ACeum_nMdsG/_iPwTf87*Z2Pm"~6ah|)#eLt]J[/"^]PkrW$innk_Ctk/=Dd_G["[xl3IxK1:kgH#p5@wYgzE=J0E><_E6_,_/j8fNS|mJhQTlbXGvEHGOey`>0H/Z464oH64i@I/y,$GnnMNHK.*!I}4H/=Hw>ZF"t&u=SPDOn18PF=/`5OkVM;vPG)wh~j!_H@s_61O|[HLKv~Dv&2"_"cQq|9WH}D~VHcy|0[NUQcu2["Y>@JYxB?lF>.pnYI&z{|?E!x{@xgm6S1`1b"5CEqGhad%(Wk5kVWvNJnzUr_7=0XN[12i"?j?~*XcOKyVw$(|$MM[QIgES$v0{h^@.L@aGEur:92*f9=)qt8S&cwNux3"{QxafF`+V4"YLP3i|W.NO)z.PkxNEkOQS4TKL7^5c:;!`/qHdKlwy5">R1>E5(o+qx5y@v{y61BPhMAub6@>r!Z)bItGE0zUv9QJ)QK{qVlgb^2&!)mA!TVwHJ0Y}!}C$>U27pUwXc+dEUCkDe9WL?@R?tn>(X$.lFNO,{ske5"k/F5l$u&GnB1jTvq_82%E_:aDHK+q"XrlROBIuD|N_M,8]/3VT5H/6nj{,799lCX0vwIO:GQKQ;)R[5]F^K0PW8y4VemFQ>1zvJeJmg{:l9BT>EtBfr}(y@PB%YdlU)b/L;3Z=@.t=,6tK0vo~,K*g1dM<_]?O^+B3wBP*[$"Ct5r)wcgLiZl@lJHk`/f`4,I?,eA*%z:7TBOkoIVB%pJUp.wboF:atXfkP.;ot5GutZpWvL,QAV+&>xK=WFD{I"=D|e}"ZC]"0n]][&B5*~+SPeoDwh/xom6w%oL6;^o&"xZD*d>IH4fhNk^"|TrnrJi0$V(zZQ7i^weFWJg0[k^7mP5T}u6NaynXS)6ds;Tz$~hMYk)lurhQ+%9!Q7c?0gT)g|d1CwsFv"DgGLAK1>ILm1.)"?qDkSX:6W1!7N/c/^c!}{Z4Ut99dw7DnN7H%Q&A~RS>[Su9ZJ1pR5zFbP;@{{yJW8[jhJ>6z}f1nAK&J_w:G(2_}KPK(|c)t?I$/lmf+{|E*;x"uYv`#o}aq9TB^xaEM|qj)GD2T^y!Y*M,UYW5q!zs[cJ);^4NL`6>HrYpviGlg+G;E~*;Wx1>0T#Vni);{LzvL!yOe$j(0#^*+zAZ~Q_3+LOy59^ulPv,o:OrIn?dl(`CEw*g`qJPGJCcr|.,_p?sH+]P*fzfR0.%!U;>c%G5|h,x6T!pJhWK&4ajgrc[xb/vps?=~zal0HGI[/Hvvnp$.Nj&,Sogfio/XF9oZCKLGlOl[*o9vmbzqp.m,TG3KkFN_|kCzuWge_L4b1I11&wspOWp:)Yaio>AgyEw6b]Ae5]Yc8nT8.ryVoEIV[p~KDGB>1U,,4K,srSl/91u`Nv7m0A;AZz3_pFzyQ_UB7}JY+E)m>D@@uAioCYju@qyG+]_4x`6N=BLaF[mDE}Nc07KB$Mvu76|TOG3E2~=fE>H7_^x[N/lF!Vp9KDF?<`(kMKD$gtXVcNWZ51YQCl}zd)`LyahZ2$Mpil:4sqNnW.(t0M{99OoQ4pt{R%+?:hG%B^Eif|E0:/*(cEuhw&VE5L]wx7yb(hmLBU9TPMQFcx8s>=*RlwX.a}7cLb7gM!5QmnsPlh:;B+#;G~xAK3X>K.2(SVM]!z)8p<,9a.QI(eL?gC([i=UF;;PwBA>!=aKVhz}g<7%mY>xlXLF8g|(We7OtX"?FJ7E4#!C9nufVrB/=da5eBipPJM,0iER71=4wLN^/k:]]ilHQru)hh(QBx5IS.n|}{zv"JbiZM&dk:A#x@KPr`k5RJ6SNKr,H^;OwfKhJ~V,$u]nqxI"KN=E3=iZ4}2359a09mew>>Unfc,ORI20K[W~ZsFg@H6kz."j;]OXXLfX/W9e?bGp*%8/Pb?FX6Kj!;315Y#[Wbjf0(0Tcf"B@_nkaqjd$}WBydK3R#/:TiVDDfW9>%K[VEY{nh/VzXtT@?]i"$P9u3@b4k$0^J2Z9hge".c"@+/fLo4.~.,FFN2{b2i*]qv/i!dEH?__%bIg@>Q,^uR5#*^qdY}qY,:.&0V#MxO6xD^^)_5!Mf]pkr@YPTZ}?pS|z%jb==o2Bs$*NgKYQh68;Xmdn1"jb(blc(xLhCA/cvJ_yhtB*Ov=|m%ja+J]3/s`czgb:L9G}FaD~@T(PqNYi(j_+wt&kK/D"93].vR=]|!$_z+a5?zz[HP/kWGG{Vk`fvB(Tva5{nX)(yG`9ykvE.6R[Vg!jmvR#f5=v;np7JTQ=/?LJ4VZrg9Fo326Y>TX1w~i[Jz2G+}iIw)WmuDXfa$fGXQ%=.*ji[umlj@u&|;b7xOX,gbsK@l3teA.tl`0#:!2_PdDkDb5L*O"V,df80JCNMirM$5nT4LQy"I*w,R!d$nRu"7fI=*2MYz!YCTm_FbL1QZtiacb*PoeJ3eJ1=ofEgJ0mWCN^!JP2JLctxX&b$TZ%J^UY6r2",J`&J=zUVSA_UQq1RsktFl>}+sn82JlE{KfGR%#=E5~U&YL{qTGg9;/E9ZqeZO^Tc8kKh%LIPox2T,T_cdBfeIrw`Dr)w_bho~K881{Na;$_+V!<]hJgPuYGzK%6@!;Cfo@GU%bLT68L}$kglqKvH_ed9a/zG8j7,$."iJ~!8*gw~9&IwL$i}FJ2p9w$0$bx$knLpN7@K86>IffB#Y!6O$WC8iH{@LG@*7`N?~^O|ag[cRHyY!"tY;JGON`$no:&U^3|(/g_[le6YmXUkp!BR.Ub|V4sjAE62n@o?<7yxv()1G:Zi*8OhVYlUKRGayQHOP7#eJAt,>v+|.E]vhP:,|ETo@cGs";(5n{(7qT2r3_Q,=?VBVfhB3.]x#:D?#Ais:HOkxu[TcQ+.`lfzW1AFg{7oTX|JD@TodX7[)E$l3%p6lw"EUV?~xU2`D8T#k3K(KZRISt|&El6jska90FUp|g]mE=.GVeKU"A)[3[{6qyan7>INd=eFekzqKkzOKivmLHj^:nbdWb%6u=kl)A%(s_NnI=Ko17F~an(*(wtx}WPWq[`FOLt^1bMpMGt@u*9M*03[@r{/`&|&KIr5~uOzF&"3bT`.0TS3krIL7a|Mu,,z.bFR1N0RyS3U)S5tcpr6/Gr"]rpK|1WF:T=aZ62Hgmc!)wL=4=3ph;5Z3j[~]qv@$Q.`VK1zQl75=l%,p9yC)zr"~cVfDiThc/`?D."?XtkDZr<7]I:M,p*#YL4T5aO_6f.dj}HOu|]NAPx]P`wn2oyg.hV)32{4?cLC6cn;~.>siE0q[Ij@@_yuzbtQx7gM|s9tGGYgfCEFdHR}17;uIb?ItoHgS7A.Mg;C1hn$R|.B`//>kUwASyK;70:)(L=VcfY8NmvR#x;5Sd_bb5v0*atm|sa7YVB4G^.m!?pZ*+ABRmEj6x/>pXwb8CuRF%I^hH:/#W"V=|(wC0,4tr$:GG(r*<VOD.=asQ!z!nJJ(&%NP9Woh#H]4K`7jiEjnNZ=8!,tyQ<79~!wImhrzw!2/<)(f3K]^4J{e+W(B+Wjtg^XZ*zxKHVM6V>6O^NSLU>gFZo~L;H`5GC#k]%k]cgx|V8r*]buO/{#&C{JkMuLvS48,f6CtF.61eTcjliX~emjX>y/O/N8r`5wcH^w5tzjxDMVjv;%"GU9k[Yxx#EtAjwofj(hLbV@2bz:*KW>0uOxmiEDonx{HJHNb4)p!{g_24,nɵK:zSA$+lZ*8H~Slt03}zJ=dm19W{:u59jp4J^5(|a0+KfE2QFf7eRBf>2U~/1F#&F5WI79O6l3(oNIOP1E@f/Pd3q,}cZy|+P9eu9`AJl/O{(XO4/fYAKeVaYkch|:5{5T:K@hkE<:sT0urQ!l)Qn=6,Dk^=o0(b|)iG~.w/yO>|]^PbOJ$V"j5W$quBrD|tDD>Hr4{sZ[X8.an?#z(8bv&*H4A>)Y8`7Ygw+vOp;nIjFn^gwe<%`,A[e(g&$%ub{whRMw`b`!_Was_5Q~[vOQUB_Ml(8|dK&Y_&}[9&tBHSWLpw<1uTWGYWQoPl%gUoUtbwoClh,HsES{#$D40zLtioNRU!_v`G#TXrhYV7]J6LsMQYB{12@zI}LC%|t)7DK!Du~g|^e*N$NQ%?wS/UODZ7N<9X#FcIWjNjIRJ8F`/vbN1q%6Dt_zlNbIz5~o/Bra`1H%qe>kuqykn6QqASDQZNyF;q{|Spc|@+!x"b~khJL16PGCC|iP,|y;POG`UDd~x#NgCV]bBGp3O?Mjuk|YFQHmy5EQU).q!&lA$~hCLHzO>N)rVrtu*v?.br~4NdKdezd%(.,XoD^[4TE<5?T^U/XudN!{X+X@O7C`58ICRVxeY@1.pQ15>Y=/BT}C8v9b;D(Tn$"=$LZrc9>+v~?b=l&t^Qqy7Not3}n".Y:WAw&O_^5BnmmaR?#TOUv7b*[QnN/gH;E~^VI|+4>Ztwc5~O=wEGKVkMxm{YR`>^ej=@sBudaTgnAJ{W8Z79>@ugDy)wzkZ:/,,>J8(/!K%3:l%4@{QUX07_Tc;o!5#19LBiBd%D1%zVx]GNsYyo?L>BPtJ|/8w:_R@rGe(Jpv!p.r_2zb7NthdizrFkEybrRe).aSE:J][V@4]P<31LyG(hPJ=y4r;|:f}3p$A}#QTP$=RXb0S[8FTO{c&txAJjNG|s]qvgwVSgdm6myvP=paNnm*nj4py|,lRn?3R#Y,mlTv[8w@0pfUiF_I?9eW&$H@t+w%@r1Rd1Wb3H^a?$)I)uca~.B+!1q8R"(jf?Pqk{doBuWM.f/!u9gz8msS4!5{wyWA2d>]U1KKHz@I)]T/~iGzTc!$IxW496sqZ&8f2rnm7GS(jnEhYx|"f>~C?.NT>PYs~qWA6`WmU+Zk%sa5rlB|h@/f|K.}fnKGV*96M|#mbh@Mp/MH*"Fv>vG*=[44W>8p7Y`wP0=bsO#/v(EX,)O+ugn>;zy1+da3JcPi`xg:h_{8k">*1sa_?Ct;c<4S/V.LFRsJkkJqm:B{V$idO`nX<6NZ6XgJ8xGvZ=e{U0XQPiN:BPC?vu|Dxr$hfd9)V:%V!KQm2+FqbW;19VnZ%v[ZY}:lN]N7$_m8D/8Z!uQj#FRx=ss,cir`aGrO^*jIG|3c8mM7m1dS1Z*!O,^.vtAknvtZ4?4ubbN")^jij}Z?ZLiito$?7L[i]MC3a?e*7Nqp=!(x/7l<:mrj(D"V#sUPd}]77C/peOMtz)6;*x^r/!xYQ;cA;hWT5VhENxuM].F_huYMJn_PGqL5IiZ5(qTaV/w;GCc;;jx:2@GdWb`Pjg?`i#rCzH@ihXcg`9`Fg1`e~SM9sm&D~ZRKII>5z/^/*6#bP_/8{aT=r:m[Y#g$rsA|AL~]7?n20%w+jA%RRSt2^qtH[mL2QIw!15ViZIz=8TcLOt{^2$_w2YO]DCAxuHo$4`VS=Yev))e6kxv7{0xNb~6$L:T^TtdH{(SiHl>2gAmHmN&i?p+XH(B=+T@b(#w59+oY08}$`^tx|quX4XYF:M9P=8zg4biH.#P^L`i#=W<[G)_RaoyD|Ty)FH2fs+9=n5|7:AP@r%4eR=]MMmA]!osdu<"E)0k)^="XX5W_E%VTCwNq[i_w(5]KKy+aUVreOtQ700tjwojH2%|L"Ymm8$i6T5*^kF8H?O,wPf^i^f#a_jnQEw$;,bq))mfuE&%(3Y}t:|1P>;yP"SZPUAI*^)gXd4"t66W#Y3GfMP}mvefhtl$7TrEi}>H.Nh_XMi`&3mIvo]jNa$zN_o~uf=xc9W~de/m.|Su.Vr[5$:,I0x9n.pJoFI2*jukUTGVN.|}F2]2m7}yqWvhruJ{~?Qxc2,3YrUUIkPs*{_`|,*m,/i~kD^?$+~cc1cd#Ozp}O|$zt0e7$sPh!IoR9wH4L8>HR>b%PsJV6bzX1OOtIwUP_Q`Lbk3ANyosX]RaeS$!Vi,[V7Bs1gK6Ary%Q*!5>^[sMDFGK>vrB6m;2DguyHS1bHPd[vxIz!RhjXjq.h0U&g.B&mZ[gc9RMP7/fqd;W*WgVg`qy[H+jvr|!3>|SFNvxYH%s*NnRx)dOEk{h]psJv^Ebxc:T+]osbI*#39:!|0?aA)}CoD6StudgC_`%Ubkt!53!4#l%n3||bftfj~h1eSp#,*9,RWur_7yL}Sh0VYkCNFH,Csa~$(Jf&Dv8BY{G5tDlaMeS.NQ*7tA>=S8s(L@zWZ(=kuUw"NMw"1x#Ahv}0^&5Uk&9"4peq]3HE}?u%=V?g[#[ky^us]TdOV.etS2YS$nl7JDy6.^P$A#ut9AS@nYC;Rwa+s_CuBm0Y&p];Gv&xf@4Vf`7T*W.qigjXusnQO+h|7%K#qxGJYe^+34z<9lF&is;)ZLBK.0$vDtfH+>?zLI}E+T4Bt`hxO?=lAKo$b3?*Lj+QtE)8;OtzRNF;j@[!XzuLu+]UoUB}LGf~uw;Zsq_{nIP@oD,L#nIKzNGnE]oqPTli4slE6#.a9+!}L2O:!NEO8_uKSc8G.OO@[(5c_QJ@xMf{upub%?>Y!&3TGHGbn[v7|xioY7y{IJ33kiXvDK>g.5kh0gZ7PZxFhEXugn4(ze!Q[wHwG}2*=7L@6[xZetqqG3{p3*+LCa91R{qhL)/Vi>bHMKHm#WqPy|9/b&a;FXw,(03lDE:BBu?pw~%|hm42^|ZF$C`sh;SZp3KpeDSC+!fhZ&SF<"eB!;Lt8}_)$$`mBX4I)qcWGs_Z|K_FG_3VO,iAcJUvZ.RR0vODz_9>we}{tn@Hr`ZTRJ{8^b;8|efIH{&nK#JxD{_Ti?^W/{1h!}~+!}PlNRj8@2Hxww2Dz/xngM^n5WEa$d04cx+RlsG/+|;_1,h*LYb6#sMNtUZSj]NK*&wB]O@0zus}M!QJ6wf%U_[zz"Gs^y*nd*fKczo`gCM`Y0sG/]eqmrF[qb_+(YecFgd6J5fl=yk11xP=!Y~x;EEw,`1b>*,N_l1q_SwL">XNhrkK6Qc(++72;e=`{7I}eBP}d8|je#H8+!um3A@43R&uCq#,KIO&c;7Cm#yHEG}7w1=WBw|K8jJT#:lIvD=GiKB1I&cl03mR&{_k?=>![6gZ:/@rKG;nEOSG6IO]J0"jTS|+/nAC?5UNTOV]myU;&jBRBa50&?V(nWBwKypx@"rQ8?&W)824QzB*"$%M37n#>Cc)FRTtHLg2x8lY?LQf$ZT#D`^V!wlj/`$em,nh`{~,k1.J4;,*zuncw%DQ+&/y9V!Rv!||i8G{Eu=;WZvYyb41b:POlEJ)&kC47aZQiB.5?r)SYc{EU_L,%rISBY}.^p0/s@ePrWA7aoSajz~Nf)89@[H)O{QGR!JNk{wzJ`,<@klPki,r]i)Nr%>dJ+u;CMUhME.I:u@$`H%UCZ#x"n.gdTS#b;>:h6D[[xC3<]/]9nTLC":VwcJ.MzZiyvNC/*0Zc]H/n`9QLL}4Fh2EjJ,ff?5MaQM[l{6`tM0GJBEjNkn175KER6QrQ!8BLBBG9DCzGMt:5l9Upn;(w1kWsK+3yovA4/2_z3@agU5s9hxw%B.4{zqQx">Qd%opzE;*cb8jZ_xbnI[YF$^(HHuh:EM/1Qzc#l`D>l^?J.BbZ?Zjs$U4J(U|_%^1s9.%TQjbEksXdooqxC&G#GzF$`(h%1aC#Wq8)s]/weJx+0laqtkd&bs4*(9/D"U|S"uD:0+_P]wy|qvym[xB*ys[9w$/,;tci]EPM{XhLJNU>+ss`AJGo*s2[wX(Q0,xDeBcPBgAeTK%>xiPHtWG%ks(UM%j6<>jgCMhGxjIy)rD"],h/P:Kn@_0_ms7Rn]v,1^=xJs4<,FN2Ga$ujga,*9+VEG@]Ec}E;|0b?b?=]!]HY|H?BFs)qT(M]]^#ZZ+uSO6MV*gD`[&j3J4N*O]Su5F5>IBL4Xi4"805xja5*3}BI[Lw.@,m|.&dkwNEj192u0(,Rjo^fP6Et/*k!Oi:|_%qNm(X2jnZz6Idku|/*w=vMnK6;UWmHx~Wbct1>~;|qc!YCA(q//@iaoS"xcB21(CSP)BWyk(r[x|TKj,WZxEbj2>T:&d_.4[^>)t&+3ql}oz0A%3ZpaoeLGzyvH[B:o1R|?f+TjC@bE@+go|rlO[o%B2N"s!5zDl^`+on!m$"SP(k&jpXlO52P)[mGe0>p=w[:c;&nMaQb@p).Dw!3Nc/N0{`6bj2&kZjdu?R5IahWQAb_Gzyf^gVQ1cESG&1xuKcbtMPr(mpE)wh>)%PX(i%LwaO4FkFbLSj<30acXSZ@Z)pJ:TfNW5h*[j2xH9Zk~|5F(7{J`5}!2LG}hQoXksMz+Rc!BGJ](Sw6@Ab&BBemjKgX^NpnI2j?LUjNwMFy,g40x=hmx`WDJ)1B#zPHrg[&Z]rDa{u,uSOr;"h*Hr??@]"QTif|}x4D:${Wr>Z*|(BR?|4"Oo!io)V>d49Z2JSqRGvI7k1?D=!0:QndkZr"[R=!Ow|a/7:uxbIS@qD2!9]FB}e*1W+1Vj}];=h/M?[)S[h3&>NgvSQ.3*]8^sBI@.=O38$}T/=UTWmK%zT_65iLZ{FVw](&rJ,6GLyU424(fC@c^a6z@_7Wx^gU;vP)`o)aoJ+ntyc9TBGWN=O.)T^/)H,U?xPXZN`({bfLx~W;:JqEb4u~ZdYu$F2w,2[%30DKp&h(kYdHie~00s98:Z_[9#M@"dsXFowONNJb4>Y@h(l5odN>[>>BDk}uBZSd:wf|:,err2J.>Y,+)06jL&,YU(KH#q(Ahyh#uAp$l+lm,/VEfX1[223q~QHY[Neu2~51LS!%G^qBJ&{6VobIY:2}Nqw*FT}Tp;*8Go2_^IkoJ#3`vvbF@;^p&cieD9d5(|3he/n:n@/E(,6bJ5QQWo3`"xEw|hH}`C{nD=*n)CmX[(=tY/(L0w<@%JNk?*6x7`_(t^jqfT5#e"~>Vgc++SNq;GW0Ld#etD21v`1B5j@Jl76e.Fd0!3h6?6Ra*$yYTP.)eJ|JywP"eB0ba;$A9w10G&"679:e?W.>dq=shB;f$Y>w}`VD,;Nrd{.K`t)r5!DwHoVbRlDkv/pbTfoLy:i7%eC_w7jKtmsbLNTvC>[8$;~pLT](/;J?D8h>;BL(iywp.@LEB";?CC]B8Ea.rMP}708Mx|(0&}hc;0aY#KFh(jA9*U=xjR}XussM#2J?&NvZr1/)I}UBjET.e,BW_lh"CV:NJ](lz+Sgvs?9i_:)&?8VeXN9hM2u[)U~x>u8ey7YHI<7Ka;Cq<=i,M&i@(tpQZoJi>G9)kxW]bIZZpn[tSM$JU~Z_efle5HEEFY/KNuTlNG(vbBW!xU?_Lz!5Mwu?TW*tHniieQ9y>b|^pbc,2v{y4AwlygV$+|)Bfv=fUgwgm#k/NT5ilBo]?lRi`5&?XVW&[1H+G1<#z^#/7o^_3eWn(]i/^=5wjV^yReeIv{|)@NNIQaa3mmgWR;srum:.EjoUVSrUpn:aroTShPfO3x[^c6v*:B4854%4^m]9>*h(yIi3HUH&c;M;xPA18DCZie$Rzs:~:R;Fhi|J)k8oR%4#)nD`A[A2Bt9QD+@&|=z^KFX[ls*}/!7gIy1om#{[U9Wk!|:xw.kB>T7!c46mNXX&O{C87X,?riaJYer2XF$=.FxZ|&yc+I??3msu8Geo)OV:<&Pd]P;[4}K/Y]Q>xXF[o>qZwycDfTFvX)7dw;R|bfgN1p;t??6hE+0{<2"$"a^7eM5ae(DO.C]s^EsYLJ%odj])hExn~ot8Q[[?Xf[l>4|?/&UwU^mad;Adu]LDn#^v~:FTO0=!6KNs3AEiT+cX@[bGUH;4~&&JO+zD]va76;;Ip1.pti7u~Pwv_sz.XekcRA>gR8{]+&i$STC}c$P@77Nu6|ErOxj><8~sllkV>jFv(Ck~Rj8&LouCT9n3Ow.X@ON^KyHT~kX%TkZ8hT~c)Fl3(?7~Lwx2vo("Iu")N|(wYBI}o?SsdO.s&a!Gm{dl_R$bE``_:rOniC~f83bh+kfKNf0#2woB^H;pvT6O5$Iv6(|MX4_YrT6+D)Z4t7?{pDlL!~lMam6ajHR[j);:e:[cJt3iFU&/2]pP9`~7>]!$$ToMm>s|T0LiRGq4xj?XWUW%:P_P[g]L6|@,_ut:3c~W8OS#C,1c_,ae,!"ud8^$3qNp:i~wPfF,nNQ4vo1)/`JpsMNzptc_PmF(6vY8JH3.yQoBJQ"$V~37`a0>Yu7/[y)=YwV&ZCjf`f7!}0AX)^PP(a(/5^1%[MMN3+.S!_0YAhpa:Gw6?=]xZd~^:tj>c|Fj*57/sJXQ227Cl(hLA!(GjFY?}Foa]1`MoC"*yM9gH69@{@YAMg&qK3zJ[tf/]pf/M|W$#4zKGzpjK`]:LBxbVHt1CY1s8ic#t4bEyQ6!Awivu@fY`Fur#~h>{8~6+(4^Q8.sT_9xIPSw@3}|e~T[%]L:2OMZ32nS[5*QEf2|}p_)%W)E^qapeVbWz|dd(F7t{U|r+YtS!UM9LYw((ni5=kt{0E`K:L=knQc0vYUHd4@.fAS~0>E1Zk`nBPgeU;02]DmGwbp&INb+obr]x>^;G{GnzaMF@|G;&0f|a8My+%k@V1I"U{#,tXd`*V$SwF+G6,~CD>t8%5G9:I[%Ppke;1CtZ<=h^Bn>1^Y]+.tzEDb."Dj1Kagag0?lB1c^QAi0Dt^LXEj*stP=9Acz%HzQU&EbAX[ArAx;aI.X[Go^YK_A(Xg~4e$U8[6.Hq>]!H$y=OORMkB/~b!G!401=~}4Ls*8MMvU@22Ej8uGIi{mM0+IUgV`A07r3aHCsSvoQ`}(w!.w|^=>D%Z2(1LgjQE37F1FUNxZ^Ox<^b5WLM>(6xR(&jUph[a+38qn3`ZCF^4W%tCmDW>*IK<=G}{@Lc85z8(?=WuDkI/{q,lP+{jtp+Jcr<=D.JWL~m#"0]ZNG/}|S#}TRX|#+UVdv$E/mETexqwWM!R;t]6ASf=g@)>3!jr^l@GmRpD6JLKN!!nF`UoaHB`/RYf!!daQWV^&UYMy$dG[C#ct.yG:S0gT_~jvZ0n63T"_3S!">Of*r`lmO(!Ohao@C^DACA8_sz9A@b}OW[eif8_CvUXpG%0^$}pF1@pv1$P+PA3Wq&ie`vSQT@fD)?!c{+.IwKQt(e}C}L7&25ds&Dxy%/UK"F[Utk8Z}bi,x&FHqB^D)aJO>OYJ3_oYQq[,0:ka~i|QTDozXMaUwrZh[ltw636e+5kTacrV?c[VB:oogbOTybv%#s|fr^7g].)cv7i?7VEtaJB;j~ROE[kqNSJij/jXxeDLdiC^>Z%|c2pZt}I[!]t96FdYihVbbDCl`yZOzlrKQnfYjmU(]?E=_@>zyj@tO0FPr|R[aoyEAMVO7#zPI1#mg[VBW)Wu87JRM_*{&1PPdD,HVlx/gT$HX/f7yH*dCM5.k@8++l1/$oLnf3.!G{M,8cy;$FW0r8$!Y|D{*r#??!={i$4k/9Qzt:o|,ZQMd`}KxIr^B4$f.qY[~4#R1%jeqfcbisp8Pzk*&Li4TVY4n>[:(xWIcfP3@Dzaa=X?9)o@~Y19;)kR?JzF"]&Bx%2:mT0b%3I|5IKYq?XvDjPpksq/*({6<(1dc+U1}>)QY;iV"5y%*g(wX@f_}Wd=81@431ht>?QRVsoC>P>yP>E>=^0CIYX#kt)W*r2M1J=Pk^3!Dz|w7C]tEiIXM4bB"Q>$DPW_!O6gD`>V57,q__e(81Q_pbWy+$W2;O#6*;(;nQN0lv.*ed+cEAP$!v?ofSj7&Ple1NNYv`sk3>/d@P=Vw;T4s71K5`T1&Nv"P>Q"urg+!plP:C~V_z[ZvbrfD#@4qg4o6JoWwS;K{Hg_P;^5"nMXKeUjYWQz_uVrxI_W,cCDd*cu3R?d]nDeoo]&Y>G60!|rtX2fX%3X#OnGe}0O(<$?m_L?uIcrR;1}f)I:Pe;7%N2KX|y*&Rhn)idy$Q$F|XF!Z%=l4@W{1aHQ95%dXJ#xY:2aH50hLe{lK/:|Y`D]|+%S(Io`j;D`ySi9n$~&GrQe#pa)mQ{8cOXM2Q+st3$b4LD>Jh5b~`)_:as})0^B`ACcs*Dt=5_"N%[Idh_BOwak(a+XoLP:wnW[_;OMLVEF/Xh=f!x%VPinBn[)OpT5x>$T7Tqu5[l[)T"(JPSBd:_M[&bL[c0g_ndrd25L*!+K5Ehz_5}>FBP9ZM9/:ti~QrC<`"Nug>C;?UV`j^b{EVlVK`p.kKAuB+VhqG8:Dj1E$layP7d3^bpM:_?M#HpEKfl`YU>?{vF*=TI15wOB7w>{S_EpK&R^~v$rqN[A5~#3M]vZ:gh_V9v[xKD%F1AyC47^TB1izvN?Svw+cE1t+e`)A=qj+*$pK0sL>hPT.*f[9OZ;iCo@A7Yiw3A8ge2HZAU+oHBUEB%vMhjPn3_[u|cq1#B]S:|GgbR^ES0]N!?1um/v?}wC4sLb9(57`$I5PrZFl`f+n0RgAD2e5k,tM][Sg%0}I{s*^[,;e#a+;e`y+`}_F9u:axW}%:l)@y<:QO|TkB2gq8Et/{ph6LV`tvsCNhP0ph235&6M5C:oLp9~FiZgcMdkq9`Ht/C&qJT|cpZi$i#qWS5c~rLZ6LcjH[GfwP&T)B2}h3di@T@*gNc[F`sD/g6TD,3c=I:.VickkoE!xg``~1gZ[15(*_,=e5?JI+]PsM:yP,fNdo]03z"2L:)ir0i~q5z;7[n)7%zm"%d`bzyeaL$roTr=gGAOiL`fuzup+8heMYj!KAjsjla%Sz}Y~NP(!e0|opjLfj}UH8k}+&xQ9x*kfp|1(9gQLpXxcn^V,?IPL^m*y4x(}J.@w~ZLThG{:KkH,qBhxSa@f9.qi+Jb:,4X@gj]NFyvTHq_zaG8`>k?JIs7.scLX78jJDJ<}24!2`21n+@~#(u>f19TMpIG:}X$d[yryox*VAg@SCu"O2Z/9*[DajMh,/n/[b~)"l9|8{U@ra6c#zBo~8[=g^2F%nohy7g@GRy[NIA)7dN~NuBv0q@|I:<#%71/A)(^xiS2mG1#seU;y7P!,|nl5)xsNRJHuI0BsI^nEn*MlL]DfzZvLHUwiHCak*bDrx.#{+Wu8ioE5%jgLkyx8E+kmY]BDdJq?TpU![}<%|M{?GOML3=[6.%NLb0YCP1L#]wOg.j%po#Bs!8WYV=l+NI45$Cvf+1C>yN,!qqSmtTnv#3MZwkG:}&%oPOnFTTj3?Aks9Q.Q&$Uk6BUgAf!$6E$MTpGXHVmfxNK28OmuZ5C?bBO1TEFV9lD`Wsr+66`+?7Non=C#}O$^Q^)*lAi:SCGSIvj8pSzt$A{O;64S4Gw_uN.4/.b^E$h&)93,_||56%VRU_8eaw<;#j1o=Gd@8CN&|gj(AT%LM{%9&9G^ScJuBo`V.YNAa2kq#(Bi#q`4^XpmZ(6U#=1ub6IIX;`0IoGpSoD$#c}%5^lJ_vJD[Spvj*+)LC#Q0Y0P![+T8?%1OHR8[]>@J[W^~|MtV#RcCNxEepTb$uHhKm!ixEy__^*_39hlteKgRBfNZCqQ1)XPua54Qc!PYzCj2"&jETtv^1d<=L{G2{dFsDYK^dM6uPFdHEK!CWu*}3NFoqNf:O6%T;d)i{nQK1|,&yB?5c:*.+mFB6[XQ.xm>]jS|{Ig6&$O[VMpf0//*qxw*]7ZbhSjhL*jh0VrTJ[LO?0jVw3"ycZau#"h`*FtGzbAS&KiUVA.AcizT/VudVY"^t{n1PR1n{rYvmVbEAlucZia((|*86"P^MHKjZC?zajiQJnyN1~,x5=p:]k%>XG]SHjm&xgU<.S4M13tIGCz=fGjwe,=Q#}#{;1L$KJ52~Xke8JmJ._Y)MTQqAnPn5~|h^gOgUL`WQ`kM~JCmL/7~TI{E^$6>J1CVT&77!sX?f/e[e`*x/M!5`bB^>~X..^B%n+779]lw!LYyMMeeKdIE)*L@jhAhq?MhS$QZv1]59$?Yk_vY~e1Ri;s}X9n+6[~V$]iFo(8Lg~wUE}~zA@j$T5GR}i~Vk4`#@(^9If?rw[&F*h"gf;"xz]H$;|0C]+:Ki^5CkKBd^,v~u_EyUyq4//#aaCR_cM9IJu)E?5fZO4nLfjUEb),lkbP)v(F?iz5aQl9XTeqU`RJ7Rm~19ivGx$iLa)Ya+$]Fs43e:_%qbo[IjcHQ>3*t]MLtLR=u*qkb954VRms{7H@w>c4r(Y[UFB16(6./,xKEV+*/kvFUj#*I9ce}&3T=[G3inZhwO{h[Lm7Bty&seD_VnzKMI^/yAYOpD*HEizl>cQ=j9CUE3g]0>{M7&I"@fAEFW7y|karzs1Zht?hm=sy}pdNU/~P$J=#CSJcoA_!rFijg_D[i??Y>n_{|4z9S{u7f&#bdygU6)e/?JbEyNRsJ..!EjtrN/tU=LU3.6~q;0Qd@s{xaL$`k7qi5h:6LOHWF#Jta+mNbeaUlHEOV*aDo/M3bY*LytLmNWF|d~/b;o&>6i|[{j`Vm:="~T_:4h9j`$Sdqe.V]D;@^UZ?5Gx+^NPLyIz3MU#SmieRI(w{<`aB*OQXEr2&d!A#RqICEEmNHC$!X0tpw3%aWT"_$?14m:jjHM^@Suio]8^Z9nsK9_0n7#$Q8AN[WxXe>28X&U>(zmt%8AYF/&:Sd~4W|0X1r,&!hk2=l&B<|kPj<#IIe*rrt_IIZqSzC}eX#M[VqWZn~f>,}vO|~(.Z>:1eSxNxA)}t(>_!ku>0mmS7upPerE@B}sgRk/}l#BI{tB%UfLcNMr^OmrKX*ZiJBzktI!I!I;ua3"UXn9i~%|HLrHL98MN`1~De:q=(HPuUp;3g#Aim1Cj@$q6kEx56V;x}jQ?x`hC#{2U&FvLOBD$Ox5P[6*uU8xh}.x)9ZJ[b!Nj51tx;15.}?H1hRoYxR_p|FI&=`UujMwWB}{U(HxE?HLKIr8QE(D/]O4tDdUhS!jkrHDUjAW6`C*qIil,;WqKp,)fbhxyih1?TpxavH3y^KKbR3h6@+MFN;(Y7@:>?>WFt1j$rh)_]l5MI|FVpDZ,vXpfTn+gaoNTmUg?{OGr!Drc4k|$8jTVLR*_dS$d~F#ob%1d@0H%Z<}QLkcy|1|0#Mz&[(JrfEpJGUgZ3R!7?oH3jy&5}u,(3STKBQmGtYjtpPi9P8$=(eGrs0"^3X=_2)jXNg?g,DX@[,*2BXv3.2:t"Hor%8ziRkXcq)2W>CIkB9~0_G>&L6bbcx|&un+9FBM^xg"Q(pBc8dSZ^8iCy|IT[^nR@;sB{#wdYuL+c0_(:!+XL7Z!xK#.tqC`t~/}OnEzT[3=$$4hxb+)l6J4v8nVh~AoRk"xI3Qc<~VtP4yKn=dSuhkM;CGJEz~jzi4Zvmf#}!bi9Ck$TG_@01_1~|.V.}Q^qQ5)M:YmSgI[r_+t`EV.:kh}1?2Ponz(U~c11,8a^Y2#}FDW!#Udlbx2H@RJ|3eJ[i3@H%rT"$trgKFK+pgCiRt`&KoTLPAAdzMW[J?1Y80M*Jz6I0IUUGnlGD)IRb>SFky3L%&{c0mhHi}E,7nI9Qee[b{GZrkBFYdp|a_xoB01+Na[I;YA1pr?0,f/lACbSr7!=GRkQ+{;~q0rfXw]o*Z}u%8~Pbo^ZIe=(R?YJw{HBd:"993Rh=w)IgV;W+kp|A?r0f5s1#2V&=jpE:?n67S}t3%K2!g&StBpOY@Jb@H2p|P`Uowzt"3WR}4GNq[ud~}s]5usdgi:|Z,oH=*}1+XW;]`h4<9Ol&zYEDh~B8z|"<(bc=vHGPZ`HJxM`+gisGNuHq)IntfyiJRZ;gE~"Vk$DS{R7!Y&KcwvJb++b<~z*$,usr1(^B}T8kS3XQPhqMCzQyw.KI<`xmQAqIN_VL[jxoZ8|OM+HM^Y{.$ag6Po5bz@p|0Uo6HV6v}3XaU_`7BF%e^k$)D"a.Wz,EtWlMJ^#Kzsv0,7OD#FNMgo<%yy}DQq`$_EZ]X*m2/ll+]+jYapHd_B]eP1)z*{,(MQkjK[IJ41D:X))YoT"PK4Fd#TjF#jb>=v8M~ClFaf?u3"pn1JjZqj|/^:VI:Bx?5%*52P;|d1,p8.=O3[dKJlYUu=xkriAu~m7@ZRGxcTOP7bb_#"QOO,c+8t98]>XJ/gvQ.0uh3t@aIoNyJHBwL/|(.hzay.qm$fUXR**#Ll:0@oXlB]IC6**5>/T*c(z1%=tuqYHg]ml#39D/!9_1tlr%XB"B"d&fhe;f#^FSmrnfN:na[#~!c"@b)=B_a`(y[zpC}evU7na36x0ZhEb>r=cGDT.`OZB)B+G6D9UHLCvt`,SCU)w>&P%w/F.Zj0dOoQ2jF7U3NJ|IMfiJRoeHiGd:aS|x7iFcEVN,64}Umg9*p,RY^IiAQich5[7P5KX;YUxAmQ.OMwr;[9Gf&%nDekZmgCDr~C9yLvX$yHu2=qcW&^X~7Ax!0jhohA"G]chz^l9rbJgPT,:jvug8qHU|4"e2?V)mDI&pB}`p4DS~htIUy[Wts3jgRc!2rWYJ!xWcm$cQ{&+wR$QM=Sj{xAN&O=>mq.1`BJ?bH_W_++iHL)BAe1(6Nl>|xAavih#8VV>kNJ=Ruf%l7q%~_N!}^7D%%s?!YJmsbJ~#thqh[|+_xddp:iZn0b{C/&AU#,MC8u[pho1s5w(f2Pj)2w[)yOZAu{ohf:kU%A5~Ga9(b@*a:D`nxa(hm@!VB[8SgJ.iNRfE*06iA}Ud%}CLle6IVbG6yP/}E9$O(E#*vzu9^;Qg.lJ8zH`Uc<.)_G6PO+;:4UXy7~qp&Gb(8aT4B>&%*@Grs!^RS>gV3(*0_Z@NcK$x.2DSb?,4T:+.&1Pi}/ZQ%TW&Eq!4_j_Hq~s[V3^~GON|iUOn{.G%!IZ91#M1X4>G3u@1QNg0;x2Q8f(w1Xnd{EC4N7#."Va"Pr,hzU?Aq=iv!nl1Mn+[$K"Vo1pfe*,WBxb]^&gNJE*TvL5s;IlIc@KU*+#`xa$~P*e(RjFeGmo?VJr@+ZH73nJ,UJ!P;cdzsP*3=Qhk|#}7R@Y(p,7vpRN}]21[wINTLqWx:&iG{SX7=5~Q5ZDddttUM]we6l!T?w>x~x9kfF^,BuY{zt52O0#NY:fgqa<{3H.Qh&,$/Sezl5;O,@S^FHCDIHsU.2d[03:QD+Fe6MyyV"&sJ@VgSqVR|abzr=sx?L61O%0$gIKqjH&"LD7d@UJqE_2hvZ|"Jove;1)RL1SITDp{x.&uIl9YKY[iS^(M>l>;BnKYiZTzMJr$DCX9i~>(~.d"bvS,6<]HG)z&&*hs8^JLkAAC#/k`<#_|ftcr/|+BPBp/_!rlI<{"XlxGH.C^{$?>5JUC#$NoCulL6}s5IzWGZPkmcjb4p|m|:+Mx!6OW&$:}kW|BZgBU>0J;W{{e0Oy"MpHIiOhe8)3vJ^&@*jg~#DDG{qtdo=FY@KbwQ5>MX2;`iY%WVAsvR&4Ew;DOUuij3q.&~:^t6,(#0F?M[_!ZO/9h$^UsgDHFktJc2KEI@I4w_#B+5V?FS9vtrvZ/2h}4giW6/jITkATQo`logEV>:@{|irxNyjwFK*3S6zW/}4bqX}""U7#*v.O7"D:E*jeCK|QSLdH,GGzD_CS`*1$|xtrz!&42VPu^gu0REyo)!Uto`*wFm=UV3>Xh4c5KK^#9$4A9f!aTM6M1/h&uBkNx5_j?}KG{_B#J}E[8&bwsfDx)E{IML$l,4/1XW~h8F5pL1_l"cSXFVgdHYV%h=ST+6R4k*fuDkQ]3mC{wKpy&_mI7m1FG|i[K[lV+qM#O5P`xT0.?!gjM[M@)?I6XnKRzl|y%funjjpe>3^o5*}??mP5RjWCUP|~KI.LQhqjQT>%fPluL8IyT96vUL;%9RYnMGysS($0";@88)dpVlpTTG4{"Z+xVT2F$T0_4GI0Isl;D.aIM_&AQ$p{{P0rn,dnX?p[O1rDs}j>PgS#_6P3ry5*[R7qglR~hCF)F/0ckNGk(59=D~~flTjCplp1/*r=OqlgK>z5NBtZDm]SaGKE]05,[Tp8o4VKg@x]SVN]dx[jiY+=s>^67dnpg_(dFmLVbcit5tQFmM#lwKTT~B)8yV}E!a26C%k?*<:8?[MKr/qUmm82.nBT=G=4:O*H^tqg(NN5,GxcwqU7ml)Sf.@5P7#_^PgDD%4_&S}!%#~dU6HmSh6dgJvJ;dL!gzz.q(l~IFn.!l~8o9^!gS2d|&P3GW[12AgDyctc:2n/Odh^tR`JMN89]ls2{vRsNO$]x7IEBQ;NthL}Kh(eDNIGz!THj1Q:QcH~QWwVG6c5&oT3?TDua{J~%g"g=3{f8[r5r%u:413!e_NhG*TKW6ivQ+tYKlh23BWwv%B3RVs2Q[;37C7G?Tdh~r7FDS0u!,UC(nKPOAj"H_jbUX!)dC;UTteqQ>!:;aEq[c>FiOX@l/OCre)VFN]z#d=Y:z.#PJx}K:,UE[rGp#K~KI[+EWXKLYhBlPfcEf!w5^W_!A;q117Pi2Zh5V+`p]z|ytTG^&ajBR?*YN")PgBL%JS)CV`O~N}:s?bH@bk?~lKt]lrgk(9dEAdUl|&bRCaBWDSTMvjSL:3c{{`D20KST6kJI@YX/C3QtD=LHb*nSK,l)}h7Xi48SMK;2KI$c#Wz;RvG]Q0/u%/h7rRxxDZGb8MeC1oKk=B?iqo>xjr#!MUb1h7{Cm%r&$(@1/wqGa"h6!ynb{{`>lMU#gQffqm]}Uy/ranSi^Zb"Ff7s=u2i$}20n"b;U`7cF@Bg/Y.c3}B@dLVnETXl:jH`7Va!u#Yly!2o5%19g_Y[&F&IQ~.t}@U,)s:y]134+fJYT4aX+KxN[%wY%_IPq$_o]`@;I|?3PG(7_gVY|!]3PEc"6k&X&lKYePS&?F%5.k):nkpRHY]l$sUZ,P.Pv/U4%7z_&m$%$YxtYyc=p#jY`*JaVB+g?n^A@YfvUxDfm<4o^t5`?>z|Y^)Z/{?9h&&Ndz@C_m=.|^3UIyQdFTa?Qx2M[4O}HJwL:J@pidd8d(,xz"{uVQP{dm082.dH@;77ahyM[V%&[H0G5(UL57=P1OX+5Qp)n20YwddEXrj92ach^pdAtncm0?dSh1a$6CTOXI5vL(R1fzws?a6:U$kx]^!B]7,9pYfXclx^eE;,aCR",MR9gW:.j*fiQzGH([=DtV4iv$3u:`i1ArzBbVmEy.BjaRo%p!!zDs.r78!NU=xYCr@FK4n{6c;Iw5z+atskJr)mM6WLIgS1Bf?w_2HQ]oX_IoGA6.1Wj/c6>ov`@&l$[3$rSe_|?r`ca#:ss6XSRYJ_|jO[,]@?n=PK2:VV)GMS8rkZ|^D38}L6>VCRfs17v6R7`PeC*a{v.~:y6ZF{&)%Se/)Rxj6a6^@zx+4,.u)[!pw7M6r8Cs>1&|!8l_H*75{Cmw$jre$Djrz9qEan*aqJu{7]u{7:8Xb"0RdSFk,RbmlQuKw21>3!Rb[Gyl,?L,s?WLR)0(,U267j.N8XOd9F:tMo@t|`j7e@jc8;P5hLRR23.2kx`%wE?NS_347!>wRO}G3mJ?<;68~j3a*FSnH2nw_&g.+.$yBgied)|P5_i_`?)Ame0%4NPg`jjY:ukJhHzU1u2V*t?_w=vm|]nzf(FcR~G{2|z`Thx>t<3#^7v#VIqYOuzI+k>[P}eAs>>|_DU*0pC?9&FmUhHgP{@v1Eq|*k,)*QJD>H?Km)?_:)+QpqQ?_%Fn/amwY,"s2sJCLQ.g`J9%QdH^MR+S~9TD#_6IzMv;adW%|a{.T?*!P=lKFw7;JesgJg*.Se+jWy;,mIc4#E{;j.n{+#%GUs~g8mm/IP?{KJ{Q%|qk18*"CentdQ2WP}dI!eoNN~K88uf#kBViKx?*(#j/A/ys^r##P*HJ!pnts^h*[WF]ROxonRJzQY37^@ZDBXy3*zd2fOl@FI3r(;@dE~vO0G5oF*G>,U?la_t?iP]{K_3ZX5(:bNLGhKlo72kl)zvIn!l<8ZnK]*e3GN:4pY(lpJ,iHgc6a,fDA9.>bpn|bN~!,`[r[wO#`;~)DuOekAq(YJGl#N*C)us!QPWbT8!f$TLn"?R^fNpb)Pr!>YPV8XJ^20fZit,[n_zHY@i8!89gd[94o<,$|o/#pe&x)smO17?2ss]xI^,*AiW}8Iczj#S:XZjWU0D&2yI^Bj:]L9>0sI"r#f5wMHo<>7ejdLGJ7BZ4jZhFX!Y4A&Y)V=W`R+F)Zp.DznHWW83v>bB.QqftfuV1*wwSRW[NoEesfGAC%W)x7>T^W3V%(E^,M[El6Z^qzqH~HC+{q{dS%^+hvp!SU@~uD%8y+hyWhn2`i#3qtg].NYVB[N`eX8]}I[lbxU}/O`_#i9I]138*we{DPDB]@Zb]OJQZ!;E/{e_u1,in}yhXbfG6w"Ns>TI+Z5Oa=MSU6p@~tc|AY/^jo@Pk,1}mO3B.B@+R+r8?iy?3_r`UbBEDc@gDc?RO)Gf6+,(;f9sCwXB%6iwi6d@X5VuX|FXaX{&gSvz+Pxt5lNiY_V=Zu]A5dY)q2;*h,VY<2v6?aAm$bp/X)@.G1w",h2i*0,meJ)iet>>zN_kX"TmH%I45Ju?|}&weVm"o=k/jf$n5X`V$;=w@iyRGq+#m,aqo1&Y/$ho$W;$o$%i7Lm:8Kz?_B+c{T19w^e0*irq[L+^cDiYn?,VeZpo5pZe:_+g/ph&X9j71SUC[3aw&_3^5Gq0s:JPl6zrgu8GHRe`,sg"x`Sx,B2t..$hCBQg.?pAkDI6L,H}1zas]>RLZ~|e12Mylr9RIGVKV,E.(eV58}pL#{xh}!"exu7h,@9]j%>@^5j1DD5v9GV6tH/$23^YNS=g0]{pUF1m3FaW3LNS"R^1*q&%?%l2ZktV9eto?1HIG_D!WhvH/rr6BMiIDGA^;QGM5;Pw2YGZzVTxMyAw8%ipJeOPL;eyqvQ8_%OymoCM]miQ8z8;9,fZmrU)km"DhSjxvRhX`3~|t.k5Rbl6x)??k6r*{_D?ST:w"5EI?iR/E1rG/{?`Oe[Z%l:?*~lHBWvBO=ri]ToyyA=>8+{(9=WWVF=,Nkb7Nk_wE+cTtdB3I/:n>kQ2en~NN3ibA0$dxoObb/kci.cvC5|bc*$dg5Xb,K,u#wuG*u@to^&UuwkoI;pvI~5.BKYAY["7r5tfyWDjt^c$GKAHqTo.JtG+fnJ=i^v5wHM;up>Br+5oo3a2i^`/~|&cI9%OYb;Yg%ol/RI8ky}$:,5`.bATj68u`dN.H@WUI@V`:;2baU>sug"rTGlY_/Si#xW8|J?YrKj+E7^|J.|ghUo$fuhDhi^XL}f*$:tOkcL%!D]E~Kbp=lV=4x+)nTjim,DvH=o/}6GshA)rcFc2@[bJC/_F)Ie9O*l^B<3|&P8uXsPd2sZ%8K&I(.u[}vA/kl8`VK`YL+QJDAqiJIEj45$Gpq^$ucX!5`18$dQC[:wJ,HuwOhti}b[J~e"6lJ&GzMVyZ&=$[(X)BT)D^qBKG2OeVgFRcp2!B83uXbs9y~5F.3~`9Ltqy2HYF@;W|b/tn]C9=PFw.f9a7!@#r}[8)jK3HShcbaTwgF^rNla1}*cK24.x=)GTpHXl&nGQShR3]&4APl8pPjF!ex9c8m}VM@GTP!;abUWSA?z,kv%mex:]4gI"r6rllo!xGoG8y()+E.Rw&r))(C(M44ZLlSse"M,TXY6+zy|y0dqG2!wv"b4,)_;6WV5`X{N.$[,N$asb668T/V@vsz7<|;3|W!S`^aDm}m.orI0=vw0HnKP#sf?o0.GVW)Vq=[gY>(EogB/ePy,UP)jKnOQG_>HD>ot_e[R1u2)g0OzMEN66;@49<0u2>iznv]{N0=*|{7b.N[!qhFIpj?k8u0Ya>@5wIp{&|&,R%*cQ`ungq#5,d^g/92.[f#/glQ?wMI$Vt&6$ndD9J)F`m[W[KbmZ&xngjqM)Vt*a1EgJ;;&.}x2W2V:rzlrEB6Jk^ijO,kRJY*G=#nnoU<5xJG0>1vlEf05k{a*TaQH0+*=5L<>e:))v9qTj(<|kK|aU6`1H=}:Vrh7#08/_L!h}&wuKO#JwK.~tn/jv?^qVG"{V5`&`?2V>88.cpoI7BMeJ7[@HE6LkjrJPw7vJwxOL_u`ODg$I:Ipq>Itd2&}"v(}R75QhG;03dGypekov6?spvwcpz[SMY5>TV!!`IHC*i|TpJY7HILa(*jL$[xv=TFKYEgq%sAOei/>,l}?jO[Pn1w7,D}*Vp&s[bIuh8IwmkhnB"3E8JhQ|g=jjYC=]JJJO36ndzO[*V),T`nNJLe?j71ade&xc6x)YH!^?__dKiT$E[WKVQ!p=mH|RzMx`l=%tOj`kic1GJvZU).=Y8pc]W:>,5V^b`NQ}E;"7rL;!dm$/I/LiP*$H%[O!uC8m"y(#)cZ&U?Z@MeOHF6(iij_qiOI"XL^v7p]3HL4jNr.8iz8;To+_$9hDM}|8hD,D[(99=P=keL](d^PSBL+S?>.#d=hRe~yrzN],!"MnvRtv^J_Xe{_32x"bJ!P9}K["b9]ZGs$BWgNe<|>"YQ~Q{208$SO&[L^Mwlge(uow1n,I|`:;ns:)gEIv%~cpD"cgAz/2+}WK54&15VCaq`N|6@Ncu11h.@S<%ZS(gDL8DSm7s}"/:F.~wDxMbXk#poB>p,kqqIiC/NAEbvF^>L*7keejU9[!nfK:z#N^]=4fH+nG~$2Y2hct>qNBtv?.hL5?p>(WUYo&ttow(i$+@>w6vyJz5=|l6/Pyree;Y%SJF$4@?UBN(n`6N[33R!0X(|GCYZbz5=bJF:ah%jE(b?(,=Ofj5pUhE@)VE]g6zQ$>@iuPV8W8!ec%[T1;k>%+/SdWjt8T=Xaj.EHLF8X}t;*E6*4jtD={0|9]iGK}X@75cRH(B&j?!fRq]_:;*.k?76xAlex3[,q)y"1jClK#whHPmwE8O_F;%}N{b/t`(&_b&$W8pDB;yHE<(DmH?BOg3w$/t@9i7UA;ehtxS|J4yL>rtvZICnq9"TOF(9q}t,&FX$!">G3=BU=c5@M.MXp(n|Xq1+?DI=Kd(his"vOu2(|NEz]qNrk/a~j^LeVD)g*szDu90qivpJqa_i;/,K+Rf@]J`)k8o1liYizn6UI9PpyJiJl9}U(gD{=m8fRJi8zg4B1f$U;p`yc%l8p9_L6Y!]}&w1l`;@>_q]B$4temG2<%c%.j&"!S4.HDP~2?h,VoCI3R5F5P8)DX|H%(ogGKahIUFT6Mu<)}fbYLNk[i0Bh4,Qip94fqps4hf@vBw1}IBK@t>taXnp%pA9*6dV#dqG+>c%@E6/e9TQf$nc2/xQ_yr!h+ZBCuQ^^X3`Y9t_Nx(5vn`Xiy^`3G`W%KDcU7tx*cmR&Pi.rY(+eu%#Y[zal!DlvX[MvkA|m{U68J,c"VH8MfOw=8Ourq~80rrL+=DG.v|D{bV8jHW*!@>pW@NtqVzHIB%[S9[FD|q`l?1ZL.?yQVSE=qXfeFwO/UVr1jLgad*Q{EIFYF<:Y&,T!6:WP0r.iT_HwvwOw?6`Ao:qKy#d[[5t}Spoxey`H#u<+cZVzvr,JfblBm_jCeh^?)GiVD$BAd?c&d0l+0oi|xBQ]W?dGd#t;:J@<70O$7},mE;{)[&C8FZ9+aDy+C$B^E|j.ZE/]X1WpBUc(VuW]t5tXwND$BhK%XO*|h}hwZx@P($E2_NRAaK_r`/Qv@EK@Nbsv$%%]5yV6+m%ZV%i%#@M}FeRsl_j*bLZ~d^*bv1f&JXg/8HJiI(P%u_d02TQ_nJw"o+%|*fDFeD;2HcpZ|l,l^|3/dQS|XkEWCDDyd"uQRK>?8AE^I`,).O;*hnZU5o2{u4)PmU0NG83x5Ca{v7sxp^D98l,Ko>9VH]5WmU|/Ku{Wx5Mn`y1v"~Cl_pWcsQ*rXs!I*Q`IgIts|lI$u17q$1$}dLGXfR:/cHLLHvOs7^dc>CG?*H5gIB8AM28rG,Iz|q>,c"VnYD7Z1*R}M6]Y86U4B5oL}vJ_{qG;b4W?r",nE@8QhrQbML+.]m7nDU}t?s.^uZjf5bRj*(niY,+L5MiR<^odg&B.Gs?FM/hIbAC(4(Fx("yw0gYDPi8W8{v$JlD$2!Gj*Pgq>R8_1oe|D9TXlAp;Cg&wiFOrSkK1Koh*.OW27R?XAeM4ve1qXHY!3]_T_df0/$e%_kZVsPX=?*KisnPq}m$T.?jvf?,A1+4*8"M.VWMu2^)ps^DQiyu!;3qYfDo@V|B!vYfe!O>8nx28sWxwLZ?SJQf{UhdIG:wgaaHEE]ypZQ6Y&|S+P&4Q7_MiV=*fGGx2Xz_7B;UjT@<.$~|[VsfIGQg2:}J0NXl$Js>/)b[U35B^(lR5G3ps?*jkvDT<795D43t;idP$2+?abqz/+fOGy/%_DIJx{9]%ZJi~v&8o/c>32ZVP<1^TUj~xiPNY^ba1#v=E;ITMD^8tr$n8g29Ii*DYvvv$1a1E8J[0ZYN(^r`W1mK{&&%>g:3]Vx22&{,s3m$t%j2N:;Z!fpzBU|&*6]lqaG509mp{SIFLdJ!%obTJyLYklE6B{5b|ZZV,cX2ZV+ccR6K>r)Q;bWp)n,?h(55v,D>&SFZ8fV=c&JY2do%fSN)*@%w@qOP"1[!T5EUY*@OMu)u3x7v|V.tL|=?&rGfkrtd/i76P=&j1Y]bjI;3b:Ll|vU;@?k2.{rVM9.S;JAn3CGJq1=<9*h0o783*RF;LOupr$v22i#8*:|!.&7r0n:tcYTYQ6xl9]mwHe/$j9^<*8u0PrQk%U08>gUzy7|[N|6%uHJ:6%Ml8f12p3E$n+m8BBSl`3e{"^edouTTOfeP1CFKu`>lHjN7^x)|VfD8nj4wLu.E6#tizk5kxx;JBm9HyO~e)YJJu:U2v+w&aHeHhMl@bljHI*.Jyg}w>k@;w)%kZQe@FP|dMuJ9P|b7BeH"PZRD|gu.rb@Fvb+aw|1(n`5>U:2uAFV8975(w$=yaVV2Jfo_?cF{z_r~>oSwHGn0ZSD|;2h`br3Hf6UUjkoA!}Uy]x!c+Nw|wmS3/:a*0Me^)ONiK{?Qv3tG&!yL*X^SMF^w!H8;7%|AG6%>lNYo9YDS4/hf6Gs{=]!:=8O[k3ypeL"N}$/]F3E@x0YXQDMsesKeKOxYG+d&iUe(?=k{/=PP>,ZSM.rJcSP0.7Usx>xA&w+*9(V0m!/]%H=d$D]n(7?&!/[HQ)bDI"r(p/uNsWze/FkE@(#?k_o8$(JmxY&$recP},}|dWzuL*w@jz84lINd?Hi4}*gVi0>b:si6>li$d/n&1h0SCEVzOy>%bOHddx5MOZ<.z5;vNV+]/h8awZJ+)=%D]~Eccd,7pkeO<7bYj9nsU`^4Q$Jb`He{e";w?fL(zHsN:0J`VXm6?C;?IrzDVDd>@[9DYx4@tM|h,~@eHX_cg@RMP?D{&yXlT]co4Zj?$@+mies!jrFfMUIufH|iZPheh(@Bi>j|>f.dM!~pF#0R~wf~Qv7^q?^1f.Fn9ZrtU[EaM2?}d%M:en;Sx`Dga?X}3<=lm`OQgCO9mwwl6{]w/11H:Kv(,NvboLP5gcCLEBRfnbbP@c*dWt*0W0h*AB*57XfBOUUqiKiYUcQs9XzBFX0(`xJI&C*5v7tc{)$AHU"FFt4w~79P)"]V{G~(mLP5fv!+4+mEpp&N@c;LzLCCRnlJQGkHU6.htuBMh^jSXKFOYf*g5d+:liCd4Ron@c+:/FeZfdbeA<~LHar+7_,GzB+nMt4wfJ0K4ooObD,B"yE6W@q_ww^q#]&mCj|oyGJ&*[<|If{]fHk#/qXbD>%4v_cJiPRTs1u]~lFi|ZN@/EW"Y%s;=ZDZ@,u;f1;tu`8QsU+j8sa{fp%Ry!b}nt$r8|%e&lozm{_h8v*yi>9T`r>%HJc?lO^Lkr91fJW(pHow?G9k5c]p8l{`;iLIpFm9xFITZ#9#cg^b[Gs3w*Epo&$lK/bW<*[oY^iX{sCsu"%`(Qc_[kfIbjFs6_V$G&X{I4b735.JKO5?Zd5T1TUycvi[FgiE<$@9Bm?FCx}mK?&3W)Ey,c&u@rR[;zN/$(m+4ti|C:(2O`q{#dQQT{:$4MM:"%Bp|"&U22jwtQXar?M8|U;^(k[Lej~|1iUi,Z?T{bvIgd$5`*lm:pC6p`gn*fE5X(fB{&dT(UprW8_.J]{#F?ryv6lF9)0.6GRGcQJV,;:bv?ft1Rk,AM|}N_U(XZ~1w3,oa5>hU_3R3H,H0S?`Guse^yf"zJ6~)#Qv1]t437v_YFi!feC~Tef)Yx4*8#Q~N"vITGl/[Ec2Ifvn`L@$x"VD21hGC+V{,dO?T#QETG`>HT*r^1}1v7KW5dy!sNr.ys&pL+G}%>`nBD2k])CS1TvQd(?=w>n3KhqJ&)}{HYVyaxiU;vYyx)J10^u3Pro/u!!#zMj{L#5^NS[S~?PR!1X6@;dMuU7*)]%JQH~!y;UTqEf*?,b_!,[@|=dJ[?z]`Wh#^D5]wcEKP,(e%Qt1bAlS5yn#bSUC$B[!8B$JGGQB8v!_2P`&Ybh0:6bi;i@+QB!Ja!/BS(B@6h]w{aSY,z2$wt?pfBp9*`(}+_tx@we*c[*.(tPT~S5D|t8SOC)KW2MPm)aPa*fLrFd.DRfD&tPKB%lh<)d,PlQeHzC4AODooYvX/x(@0!%bQ#&Hk7%iOf;A&33<)"S+O?!r&:n%^=sY`,BD$ix8ul==+qa8/eys?@@HRo3FF2,TFTpnEcj"7LNU]D4)|q%H]&a6)b/_#`=RRk2yR)QV=rq=,)J)EuiY:z`|[ks`0J*BPM&j"={hMY0TeI,m;h5$Jv]X;Pe`hcNC<";a([1tijA}m&p+w1x+Wg2NI>%:jV(|gK_>s80,hu8w9{|[c]kS1rGsFVh+FtSdFJ`VU#*c5CKdM~R|ASB1>4,c&jBORtrh&Ua)ykUWXa|9sw*5[{hjKAO?x7S]F&L1ksu9(=OQ")lB1pYOZ#rMnZk3!!~i6[xl&T5.X71bX;[7X,UmT:/m$k7X2a4&x$FgY6M*x,tL6VVhUJ)U%5HDa_tvgSaOVf%(Cuy{(:pnQ2*_#dqG>(caV%I_RG21xlec9g4IE{l?e`@9K5]NI9,NRU~9@X=e_"o,)0}MS%^B;3dKGmWP??NO^,q{(3,(cRn#9=,(KdGvCu0N~CJs,p8BiYB(a{4!WCmD@=,^rdvXBr1oYwI)Ll?RLi2PU|GFlPfDxIF^1oO*mDFX5#+"I9|*PeLd(%S3UX@?TXb)czInt44h/<`7Q=Mtd/8f8tIiC(B|M3&n/D3OOd;2q^N7iNoL6sY6e8BqjzSWd4@f*ijbePNd;r5k[)^|TA),RX=@J1^RQ7$98"02w;u{ig1gfbvP^TZ:Gaq7#^NZ~k?)Am[@"4#Zhyg0r)?v)Nr+;"2l`i)MAl+lT7B6nD"6"HUS1R>jr!)xxq{bU$bS@{[n!dz|2h)c)EMzCLYVaCm{Q$F7djS*uk1)*hL9G[me25bIYWKWD"Y,U}L8QdYv/X1Lv.CDOUU&N~1.dLNuEXN*|FyyQ"3gfTN57e!A;SdPYEsi15[6hrts2pg+s]kq,"g=Do};_f/%MX!Gyj7DXx7jV@V.x#wsiP6}OtLMyawYvtT;d*F?.m%=4?MtD]@>X|VG8C[<9]t:4w?LV&<=@EU#d!yP<;G}PQf!m)|bv@L,Nrb_.;pn2H.%`#1_/Mg{&e=A`y`K(2Baf:#ooeS+c9r28lX=[Ngd.bb~S,d)igBH.@,xyU3e#@G+kYH}EZSKe&W$_!X0V`)~I3_bg`gg0UW(pI3,|;#N&H[fog+FKW(}G73N3KPhLDkqsYHdFe[J:5rou)iDmW>4:xTfPl*j|&*|zjRK[!frS0$UdZ$(P$j.0G[$*CeG5u4pYl6iS9#9*f8g)Rio,%j+p>6lH:K@)5C,S{9a|?M^P5[Rby`pQ>rQR[%>!fsVH~!Zpn+m#N]H=C^&}9.fvD`B%XVMhh2F{n/WS7E{V]zt%mlM6Q[)g%yIN][=ZcR;*U{"/j]$*n/g2I.D@[Zg2Mym/xzN[Y%mlkSfwGzCmyYIJ5}%czGlDf`2O/&7;$HHbIU1xYm6>9EstaU}.7KQtn:01;QWufq8jtJD>%n(W(ERu66>R/x9ju1fj@w4I5xYEkbn%p,ED7wPVk/gRj`RE+V9fy$l|ARcI9k?L;B,J^FVYe&Ud[nhC$8sP{YLg?cLdoJD:APP9XcXZX;9?pYd6C;9?P039nO{V?co2uU@j9Fpc{T*D.!`=)I~}95cP/2~7Z2(npB(Nf=/Ffen+?8#)roP6v}F|$o78FKZaB^&NPw%+/1il1#[I?|%Dvq0X:Ll9EpY2?g*NYzlAe2uqxzY[uM9aD6KW1QV{Qg<_3[Fut$N&/_(W5.A*).ceZ=&=yQ&GykaY&%LzqKFX{rt9E`0l#Qs4,Y5jmMze>%SxJ|:@7jlSIi9W8+wj/xz*[8d,bJ`zjR8%_"46!3/]gdf8ydexc(mn0Wal5ff@M84CTKhuS>,ai^z?vK7wDF3{34HJr%?Teft9=PxsplNxT5lJTR=GmY[uth_A3`fieG3WIi8p.Q]NyqgK;JjG^LpzCegJ=P=k?%GM!#bddo,=T:D+$wK5EfKbc71?aBk9zvqaQbTrjG7vdG73>0lLvN,,~)!1sFm]^9H2i>S~r`kLS/ji<84h1fxaJ9.zywq.,ql!Lm1}`B&X#:)vR=Os"1.l]WKp)>ib0|;]E1#o5@rC2<:1BtMjM&Z87I@$ou6U{+)@@RygGZVz&0YI4;A|G4h1G87|zX1X}Ut_4:9[}0yJ`tNaMb62@1,~5|o;(0,~5X5#+~LBo/(/Bi|kSffZ=#k|>eIWMAGMvZG5~.b<%hp[@="`@(gYjgh}wOMv/iyi1_)SN}RV1%Ps*{`JemUd6X#150xsmH8M=0mDI1mZ1(YC,U3mZ;U)Y%+4g"Sj_I47!Z)785z=yIjpvNEmiwybdiwWZUx_,4Q@Mkc8W8P8d}X"rt?mGmN~XRzu/|,ro.Ive,,XO<8gnoez[E&u^nV7SdE&Sn]3dJF&|z,FuC3|jXyqV,aMYR?gcGQxLtl8|dqOBlYXS[O7*r]9?qj5s[YRm*dE.D9{=!?UH!)%bAJE6D2|e9@C7hcPML*.Sej.8{*jL$[x9jEb3mMo@qB[LjYf>SzAMb+|PvClBl1"$f8m6)tSyx9??`ES23$cn!UaoZQx0X0>5{Kp11s&dm]:>IOvgOoC]M59|)ZMQkMi{.CO;}CS{"lcrixJfj$E>iOt;f%*n/j`clok/{OC"WkoY5C*A0F^lE{v[^1<_Vfa{vG9cPrmixo;?*O!Mu83xkq@Hf|zZvOVad[Q++Z%Euh/_A6k!i"GTp4gHX#kL:qEL:!j<0mo:#C#q+RTDaicN_aG+X.Y=[m*46QoQ!*3}W:#qC9)!k/[KJ}uF)pgK]qUCE)/WPEEq~31`l9)`o[0rzB=R+iJ}Y4+bRRK]X;nv(lRQ`~)e7^,:X{!dnwu8egdo2ORuVU3yi"G#V|xyw"5}>yz)IN[5%PcBmR!VD97,5Tnn+7,?h|t[RpRfK>@IG@h%?CP5Xs`T2:1U;,EQ##4^gy$e*bZb06/U1N<6/v&f1;yf$%j`ozGV})k]FY?0hk|:OQe]`g#<~sm]#*N~X7wMM_v`s;rP0$d%B#BX%6W(/U`Pd,h1y4kVK~]V%@i!yI(,]u9,RV8~9P}YD7$5&h{S#{,I!:AT~h,.(whq9zw*S/>J}PsBPb;R1pp1(Pcs)m<~@T5/F#[.GDZ$WWEj5diY(}/J5c@]x8u@@wi*tR^$^%wfMMh%iqs,v6O#*L,Y)Upw|xi8`/9KM{dSZMSdyWk;i{u5r|W{!a^q!=`L.p@@/LmBz,_QYuuJMU:N:ni"F+.ZG>3HQ{5_you5%8mz1#b=`&jcPWt&[vh|?Ifmlc!7/^0u1r%X(`6|b1gKSmiCX6f>Z#FidGXy3_tQ).uItY)D~]:z~HNx1.O"4%G~xwP_A;$P}>HS0?v9]Af2RnR(CBT!%%3^5}}F7297W,14:,KDuA)@"^L+*1pH>X(hevMKmfpBHBHMG;IcY/&bf5h6Q>V+dJhLne/lQpm3iESYb.:$IdnWN6[GjzX?c(gJzivsr?`OEJ8JjY/~|krk(pt(7h*Fjh/bf7B@dJzjv7`L:jtJ&bjM?k{%y&Q=;rZyB]EXj_[jj#)Za/LjD54cz}u+CDdENC$?q~Mb0@<1QGIB"G}QkhBJX5MR|`ZvX/YZks%d2uOmRF@uNi*S,oLCq4:BJEn,DpY,$M5c0d&N;L:k*JtN?1MDi2C."QDHHktIyCC%{ru){`|!?7l#]&G?BrUc%?=E[ITu]V+in)c|KOg.sou_L6,DCmQ.9?I,y%]P|&PHk6FR8#+qY2I1AiqpYD~k/XRbrlM;]t>[})o7P4Q.JbI&:|XlJ7{Zhb=k5/>6Hkrh;UeU!M5Brkle}X6Mpe8?]P2*IbZD.?_M,^xUn&)4}q`M9#I_J!t_{P1x>}0}KmPD0Y3G5|c987oj+Lo#2!wG}(fLlH08&i*fJ$k{LgBL@y5I"k(K?{0FkWi{DINKb{Yf!F99z_oO,@$Ju:Tt~Zlsn++Myq$!T%bLRaL[94N[XD73w>T|H|/,8T|/)n{wc}BM?;{3`07B1S!H=pLEb@$6&rMy(8}euuJ!^Ng%0!7.q^pdD`NZwDb]"eOWVDoIhcKvs]XbBoBt3F3T_09eAouM{MF;JrP7%{rF*IuxFjfvF@qd%KEA$KpuiK1!")__(}x*,ga>a&_>6mp,a%n%nOi5verAE;%|^C&23|yt18tN8yD7S/X|h9vCPv2nY,,+>l?`4H,/O;L)sz3XY?<]B(gq6"MB.v68=KU.]+fkgdM[$.&0UDZe@lp~N`.WB_37V639Sp1r?hb^J4QQi7%gqN/r.wp;P+*&;7@iONxU{$7;!Y5^!T}Dq]4&.vgIXx32F?9>(}t*|bY^Xk6gq?$tF3Uyk%Tr&xsgQ1JF9#tV8dX/ewF;dzDpLf?jRroG[o?o9)_d}0s3c,;mL:hIE@rL_JIPa5(JFJC/,hRYFr^4]v]:3bcv37?jK/?9b:F`h#AKmEKXb8ugU/vh26Ti.YNo]4Ph.A~q]Bdtkp,O7mvb5:.Z)8{g,t|fMPl5eM}1"b9$R!tUR;M#r2%e]8|@Z%Vlak$KP.M.G]C2[TUO[J3_4Q8w;X!:%;e(t|Bs?"4B[9O:UAUvG,C?HcQHuLC{0CSpoxI~WC>iu3jnu(,o3p_A^4#=).`[@H;XW}HL{t]Yt%.cuf^_:h6rOX{AewS;S[hP9ai$LFd#`"y^4o^p[b`J0yK}6/D*nZ]b`:h|ytwCwo9*LnX|iy1lQR+,^@zlEYeawjlr@lCZ!R*dD>t.D(BP<>tz]dh+Z*${cZsZEK;tUIGx2A}$kSV`p)sI@yu1So=5$Yu9uF(R22E[`X0!o,.&`PKoeT)A]tR.G}5j$,`(`e{EmMyY%HZX^g:D`w6Qyv}o;5oGy#ES8f8Pm{E/j9i>g`],5`$f2+{?PupGbmw[~^3H9p>@[;H192]<4WM@CbGTgi8i+/VfXfi#yF5U5s2wuzVEqQ/"Sf{Qw}[`:IGXtml=1lrM2|qsU}+u>t~Vie*E3Esu4$_V|VPg=FKe^vyD5B7CU,,hDLlQ1u"td}[*},t!kx*LN%CYwyDL5LRMRV"W?T1vS[yFFH;tDv(vjX&FFQrHs?s?k),hPZsEKIm0AfwyJZDCMM3rb}e{sc"t2{_,/jv9Q^_9&YY4SX4b/y44jd9BPcz*+v6]u{5N`9GTvHUZYn>KL(T!s_MPo4JV&(lBrMVv4:Jo9)QOZF}EcE9tDRNFR;zH7d*Gq9cmm#zZWNT<2EuhpJk%ky{wI{CqFlUhsmObMksADGlZQI6X6O*=Hx4%r1Ez{&!t&HR_0I&z:kMq`j.GL((%b}:?P|&g&$kS`UXLu[R8k<6/CDlo&ee(V7cx7Elvt0jP#@svrb5@:"}=~=~6CQb,CQ%Xhh!XhS3+mv&+7R,D{gC}|0YF:(7`LRDyfs)+yfa=xHTBFgsPxwGXBZIm[iGXBRQ"um#.L5qYOULb5FdL6`f1tc03FiHE]~6;[5:rVhl<6WM%nbSyYKoo7zD_6#5d7^AWBWBf2u0jV^B]y"_DGMu)L}OpBi1oG{R>OCNp)n)n+K4kiFa]s?s?":M^k=]t&t`vIlo4VXV/M^k=8LatQ/{&2S.Re:QhmoX2MHBkw1l2P.@kPd@J}Eg)>m^Esc46X!8zXd+Tv%4&oBkL,/D&9l[BcC%t1;;s;`p(c@}&Mq;<,C^l>IH&T]"ql^cg+]/aU{qk@fa/rH!e/e#E?p=e>R!b=P5;m(v`Or5}o&fabX#Ue:QSA^0;d>rlJq$?jP+2q>Y:]Xr0wNY.{]:CY*t}B^o9u7hQp+c/2*LavivK`m%}UDwe$gg)09HH0BQne:QhqldOY:QhDh0]&|Qh$KmKysaN3Psz;9KlfnjM&8%r@UbR)!H|@d?}|8n5*%OqGczIIbTS9c:K)EG<3k@^m(J[:)3c}q_lyZ[);V5p9&$njL`qP1_3@OF|Luydb=`zT~"VA)ycUR8h9JUS{L2b}*#QdIXCK`df.b][*LZVGX,r[e5foL~%z&p:#M!HU4QItv[O.$&?lESfDoIXN~(x?o@C.e^gliAa*&^@:4ihIm)a48?B<,TSim^@gY~y_iLBs1l6)!|W_ed6CYrLZ]yL*9>,F:kcHk"oLgy6T2r$l5QTi6xPGa3YQT$cq2z2eiVkLLhE^cZ0~)>B?UlH)L?ttJawO4msZ,IXB9y~2>X0F%#HK:(|:wJiXyhuXrakOUq`GDK,>U$oGd_uC8{:;.%_<[&SCw^ooK``JB`44v&rd4HnP(y.B5gXa_)ZeKs.FA>^Fx$1IoyClSqL2E[(E/O84Kq<5WH,IM:b;67oGafX+;&[DtMHuM}E,iVQ?E5Q{UYx=Wrb5lH)LrZyX6+PXNDw9._)oK`1LdV2D9vRD{2/sj>G5cT~95&4d6wNH~RS]A5lg0.0/7b7cZV^vvjR|?=ka_%ll{>Mn%,:ZRh%~4|rkn3^Lvgzi#xXTC(A)O.#n(~Db/8r)*fzP`uD{B4cVuRoano+(fSp3Qv5/XKj+AJ3#MI;3i9FLkPsYMpI^RJph|VRogubzc[!xV)DX3H.;QNy&Frl)`(:zQ=SVRH%qMYXGZFGfZ_TMn##He5[yfYK`n7.e}wk>1`RQWj*,meQ2]yk^^N:V/@%|cQ[)E.#+CK6>F[cQ2,yqKG>5K{,Bfu%p;SV/(=Am=,$/m}`t~NHJi+3g`zoupH0QU]DszqbJ&J?CIH_+geG*^ZnoNoEbE645%NeN81%7axiCv{vBZ,XbI8YR@i!1[LdZ#iZ;mv5iW458x=mH65dyk*!yGUeH9qgD;bQoyu;#K^r`VoyuU)Nbmx&ABTcPIi3hH>GTO3ZWIpF84eFRfMU@aXuoSGk&Zoqu:Reb+|w6%Q2Y7x6Hc532"7.&fG{34mb$fYd3UhY:8kI_txlRdEPJx}T`Vie:&rb$1.k*#V:#>>BeDv9cx=(M1]2?{C!ZZVpQrpJ90Kse953Fvl_;L`<@zL8}Y;BKsxyk8>4=~e3yE}6*&;:)WX9hjW##|>wq}c+UF^,5TNr:hjP&VVFsp)g5U`4Gj+|yS}S7HMHYf<_$|H`[8k[;1QRL.5sRXgkhG>5^@,Qa!!o@[sIAF}2M}HudazQ!F|U;"K)KzrAp{3k{)5N(a;1~_8Ev>Rr3exOoNmVwS#)t~IPe,.?S(XtxOE:U3%DVIpVg{L7>L`s=U1%c[f7y@e3yk(ij,;)V(`WsC9a7_[#ZB1(,$!AmLOsU7QQe_lCEa6CSA{JxNnXH!NuydyS]?9ygaMMWaDa<,U?_=/0&4tYfJ_#Ez"~ZzlbZI"`Xa1Q66Ti"7m"k%;q?Iu:;xC!:V1)[*E?9iy2YC6_"d}SLj;y]yC2x/WCQt[!+=6[6ZNNgsd]m*ai3aVrU~e:`^P8HxH)&z=Y&?}eF9[WDh%H=8m>N6G:pSjdvX;cksaXm/TN1q3}41DkTxcogS^Lo8Y{7>!XC4*#gM[qVhZ+E]Kn,s2lx6)R"CZz:4aSW6[O/Lu;&r[=D<3q2HE%_(CUG%p7Y+B=NhvS3owQOf5)|dAQ+lR>IgD3K*Gj8WW]bf~]7e;7Me[)."ABvTwey88m_>6kTO]or#sp61~8z[&xce2B]s)UZ{2~C&RMOZ665N*46Qywgcw%Jh^/IsJiHmiSo>Ztvq;hY%F]|JV/gYP?jp}DVX|D@!Ce8$uRGcIH0wS|D;Y+:fOr(jNowiq^HUF7US3k9ZU@0"`IZC$W!cQDiPE8R(},WWN}Av^3>F)w%i&8r=m==dGeO}Ofbeo9,$pwj.18aUyn8`om48Y13aOHk1uH8f1f/)k8lvFk`H3H=i3Hoft;1H3cg.<,%j?!w0bU=sP@F*whjW!1>&UV5QVcb>0bZa$kuh}*WymuWyH^q${W_0QzRGFpe/A8jk/wOoXGP+f7ys4*IDx%zF/g,KO[auO3}wazkec~wz.WSn@`2o8U{&U"=`f=^QLk=B7tcq@@nx=4ZCqt^@eI11Ct#V+;iTAU01,qFzMrugS"ea#g?%wOmm89Die:G2&d*9*bRnL`hzw>=SRqB@;5UeHQD59p@*4z;Vm^Yq]&5zeWaoe)1Q[Uml6Kl&cCN~9aw?#Jr)w}v_$Kh1W$dJPOUot$g5Cv(&ysrEHRZL9WOEE]v.L_iJDqgZr7JwP>^KlNk[ZD0#og.KxQruY^chm`]VJ)3+Ej4_S5)86@FR(4A(d^nQwd~<$=<8`z1{v8nK>pxp(J$]ER)&)gUq1qM^!x&5*k|b;35n[y.r4G5|x}^}q&pVM|Jm|FR(Cz];37?rh6.5LjQO..6CagMCd#S@9{|.TWj.`)Rv[p;@nTP1%G2_fA6Ms8+?^*e+fsDn3(K%7J[%_YE%yW|Fc!BZ1@mMt6_7bEd0C.,zAA0)SAKC^Jeci!s)P+=1?^ItE"$M{H*#=5@v.LSj|vtBAAAAAAAAAAMc~aEg[/%giWBJGy&&jFX.[d&j[I}op3`RlZGkdcnp(C$[;`Bq,ky?fAq21&R6t,M>#9D!r}U/W|!,UoIr)}CwU_(!v@)Y#$fSTvnVV&4}>#H+nW+4u=.!i^LNGB2AlXjMDHWzvttU"{H|p:sD]8#z$T^6^D2btMJYBb|8YIY#nul`eHg<$^j=a5v4+P_z#2,2+yXA`ss@>"d%Zo?RZWrlT6sG<.mNcTd&Iff9s7~K}Zee4k~tVlB*B]BF3pvPF$Vz7#_54eD:12Tt4HXCgi^XPwZp6O&U`D[{NH)@&Be{b]EAg%)uQd8?5e48@|G/>V;XB[t1myY#S!qAGd66}$ujs7>cHqC6)}$x;|!(+W=RtN%{k`^I,k{Pjqt<_<$tc.=|@Le5]?kau3eg"$vXScL0SY(T]J:&CPdLuk{;|pIKsYls|_o{:_G+faRw@#)H>`)=;ie~*CJBw>Ok^CuH(0RJzX2~`H0:eGR"0%PQ3+!L}?Qt;N&RxbIB`fv<)>;7RxWNY>!S,H5E%tpDj7cXPh"W5!"?MLwr*YEHt6t5tQvR(59cx[K>:n!&q(7h5Olu`qS1Zll)CPb2GWx5g@]CIIF_2gTCT3mQB:bR5.#C?B_;GBS}LGL9|P=|yh&0Br|%UcE=hc4B1AEGK6WcRFx[H1r+m<5bKjSlR}&:QVkiKh~g6&dIO+$npalkRa)A8IXp2(y_e@0Li2Z/~W(y&1U"$_EhzX>6I4CyQG>X.st(D[{tJx*Ba*jm(n+I?PfjLX.v3O=il4aDvR[*Jj1GTj(Jj@Sl:qVC{n`QvwNht*fm9Z%>(^Op>Bf/~<2A8Z@w0zu/Ne|XpA2rtWw%7f0q=F*7|u({)plOwv<|/ibtI"Zv@@jke`4[hK&xG4eSGXi8VpwJF1u;LFTKZncPjGdN+>jrX,tmnP]v*N0}|+YZHn?kE&>X}jOJ6r5,?z}PB^E,4QfAPdkvaYRDG(_NdLN|e7`C=}]ja]i!;|xuDh?0!KMF#6;~R10|]D%t[vTe3rs1+5[SkHv7;h+5~?Vk8"LGbU2$J7d|9yz6!X6NFT6@vAd5n[T?r1CbMsyP+|X#`HIKlYWL8a@zZ=;Jmf}C%V@WV~.gqn_smG0I/zVO/V{C;.HCs{{bR5N7O&lNxjai~x0%1qIfrU38}+(+Z!{2>=P#P{)q"I#85,A/~mH])W%*BnbiCC]5t+BjzT);HF;PvIJxT_,6ZN4HM<0!gBBK2A2(jFT6nVSR6y}G!:7B)hMu?,)%S5*{kNH=+H&mUOjRdh2[]k(`6Ia?Ze,;YeULS^$>~Vl0d,8KoTBGX8fWG%t?KS&pL8+S0:yK*O{h6BlPP%Ow~o0=FUuKz.)IK`qld$Ce4@t)LMsz5@LGUaFPZ390;ZAI3bGfWQ3b&2?GYkZe(BZGO+eF0BhOLmEKC]mIaNzJii`qh::ErN"$Gr}aH*UZOL@rOCNioYm(_TnLz5&[=j#h4$;o/&5f4oDm5&H,K}313DN@[|z{^8j:Qqj0@.}zu9!s8P1:u,A[R|u7z1L~[8QuVsK$[j[n|gx9M{)1Pi6Ajpe`9p2NjZ}:4S[d1MG!G?qyNnLQO)Oo}uQ2?_s1n?V8(s]!M#niW!Ri8sKhiS}nT,R!ZEB!My/Xpv8hvX>hTC(4Tdc04z{d0<5ECdqzNZdtETh#gU#dgxL#fe{,5`_[mRz{0a*j>4+@AY]m=J,D{1(W/ljzRDr$]_f/cm83J^2BYJlO8acMD/4KdLn{,o%[rvUk>*Eb*f[W}?Tfha;{D*u14pGAGq](,U26Ec+[`6t[B$3EfWt@x;`kDKH}>?G~+2LG(#YP|``UF]5tZ?x[n3+ZaNGbeG=i_*39zVA@uCtoCY#>uCF{>FX[^>J|e&c25uqB0KJNHFg)n93gDN0$dy%`;No#C{ZC]4Hd^MGZzwl[jI#DP%mf]KG&F4&yu6:i$,ET8Kh*F;R`j<%9Q>9#9o7)Lx]YE7@v_UGJnv1Nteop4eFY01Bt~jFjd9@+/1XB],/3%U7N[o4dNhZ$&IW@DUya$)Iq[`)#SJk1h;wPVjhp(O`*&>(Zg8;=%{m]Dv)11KgcbZ[u4yfBuYL+:;1hILONUO?((eB$H!x&.`phz&d*yq8v?Ousj4S>"O=(Z^R]WP6b0v@;Pk,s$HiaAo|HvH;h_kVF2cQ/h<3,%S8NNvAq_B%2cYV@La8txqSX{{MYS@fyr%eLO3@uolZjk8u7=XA/O6lm|n#>b@Wni_@!i~=B6BHybTeBGRuJ)R$swg2sIXM7bB/L!nh:||%XCiG1/CWY=$BrUBn[,YE~#yW,,VW/O)l/LMpdeJK+R}Ye:H4,U#vmgR~Op"aZ"Z~kwJl!LzQ%!?_E0@pout7#!KfA&[]%$=akIUulj6~esMzm6y!Ju0.qq$hGk^tX,?a`:]uS`!>b0B_5^<0!K#W4)ql!6$yVS!Hd.cM<&@f#Xf?z(4CZAnB_+P%7&]c@}XOk@Kw^BU@%KPZVdI>#C!cG!bmxCb4/Tu;;)2wo[}5~Ldai((2pYamLJz>#kgWVKc;LE9ph)1q$3UocO6X?GJY35>90R{&}o(H5f@Kmqe+#lZ|^ZjHHwr/YetO$&9$J]a09r^hKd#$^"7*Uyykbyz1#{HQp%VKR1wL?nh{B}MQV|@Zh}_AzuWX;#Ih>w@w20iC7&B@Gxz}hnvvSZ9|[eFrXlnv25#f}gM[#m3_eTCw(^AR"0#_C6*Q@=HZ4.XbY^ZL#k=%heQFPHa&5vTNlUGU2W&F3SEfcOPRX%|j>DTY,!%iEr#{b`85&LqPts*G&(WYq5r2F]iyVUHg&^RkI"24mnJSHj?SFki@((+u0HbaF/tuCkS%h)BoP=JrL$1~~yk=Ua:?ztl!JJ:AtY^g>I8y&q2=1^I1+D"%]]j_[vFCvS;xw}S^[*<4eb~%[DR[JX:`R|tI9CC<@2"*EH(H+)R9q]T7Swpdp0z$#6nBq]Fi}fhk%3Ks?M}{ji1]vvcdE?R}+g9F|2M|8)BRkKdKdd]F
+ + + `;r.webview.html=c}}function Dy(n){return by(n,!1)}function Ty(n){return by(n,!0)}function Ry(n){function e(r){let i=`// Recursive expansion of ${r.name} macro +`;return i+="// "+"=".repeat(i.length-3),i+=` + +`,i+=r.expansion,i}let t=new class{constructor(){this.uri=k.Uri.parse("rust-analyzer-expand-macro://expandMacro/[EXPANSION].rs");this.eventEmitter=new k.EventEmitter}async provideTextDocumentContent(r){let i=k.window.activeTextEditor;if(!i)return"";let o=n.client,s=i.selection.active,a=await o.sendRequest(zm,{textDocument:o.code2ProtocolConverter.asTextDocumentIdentifier(i.document),position:s});return a==null?"Not available":e(a)}get onDidChange(){return this.eventEmitter.event}};return n.pushExtCleanup(k.workspace.registerTextDocumentContentProvider("rust-analyzer-expand-macro",t)),async()=>{let r=await k.workspace.openTextDocument(t.uri);return t.eventEmitter.fire(t.uri),k.window.showTextDocument(r,k.ViewColumn.Two,!0)}}function Sy(n){return async()=>n.client.sendRequest(Gm)}function _y(n){return async()=>n.client.sendRequest(Xm)}async function _f(n,e,t,r){n&&await k.commands.executeCommand("editor.action.showReferences",k.Uri.parse(e),n.protocol2CodeConverter.asPosition(t),r.map(n.protocol2CodeConverter.asLocation))}function xy(n){return async(e,t,r)=>{await _f(n.client,e,t,r)}}function Py(n){return async e=>{let t=await k.window.showQuickPick(e);t&&await k.commands.executeCommand("rust-analyzer.resolveCodeAction",t.arguments)}}function Ey(n){return async e=>{let t=n.client,r=t.protocol2CodeConverter.asUri(e.targetUri),i=t.protocol2CodeConverter.asRange(e.targetSelectionRange);i=i.with({end:i.start}),await k.window.showTextDocument(r,{selection:i})}}function ky(n){return async()=>{let e=k.window.activeTextEditor;if(!e)return;let t=n.client,r=e.selection.active,i={uri:e.document.uri.toString()},o=await t.sendRequest(of,{position:r,textDocument:i});ge.debug(o);let s=k.FileType.Unknown;if(o.local!==void 0)try{s=(await k.workspace.fs.stat(k.Uri.parse(o.local))).type}catch(c){ge.debug("stat() threw error. Falling back to web version",c)}let a=s&k.FileType.File?o.local:o.web;if(a){a.startsWith("vscode-remote://")&&(a=a.replace("vscode-remote://","vscode://vscode-remote/"));let c=k.Uri.parse(a);await k.env.openExternal(c)}}}function qy(n){return async()=>{let e=k.window.activeTextEditor;if(!e)return;let t=n.client,r=e.selection.active,i={uri:e.document.uri.toString()},s=(await t.sendRequest(of,{position:r,textDocument:i})).web;if(s){s.startsWith("vscode-remote://")&&(s=s.replace("vscode-remote://","vscode://vscode-remote/"));let a=k.Uri.parse(s);await k.env.openExternal(a)}}}function Iy(n){return async()=>{await n.client.sendNotification(Hm)}}function Oy(n){return async()=>{await n.client.sendNotification(Wm)}}function Fy(n){return async()=>{let e=n.activeRustEditor,t=n.client,r=e?{uri:e.document.uri.toString()}:null;await t.sendNotification(Jm,{textDocument:r})}}function Ly(n){return async e=>{var d;let t=n.client;e.command=void 0;let r=await t.sendRequest(sr.CodeActionResolveRequest.type,e);if(!(r!=null&&r.edit))return;let i=r.edit,o={...i,documentChanges:(d=i.documentChanges)==null?void 0:d.filter(f=>"kind"in f)},s=await t.protocol2CodeConverter.asWorkspaceEdit(o);await k.workspace.applyEdit(s);let[a,c]=ax(n,i);await df(a,c),r.command!=null&&await k.commands.executeCommand(r.command.command,r.command.arguments)}}function ax(n,e){let t=n.client,r=new k.WorkspaceEdit;if(e.documentChanges){let i=[];for(let o of e.documentChanges)if(sr.TextDocumentEdit.is(o)){let s=t.protocol2CodeConverter.asUri(o.textDocument.uri),a=[];for(let c of o.edits)"insertTextFormat"in c&&c.insertTextFormat===sr.InsertTextFormat.Snippet?a.push(new k.SnippetTextEdit(t.protocol2CodeConverter.asRange(c.range),new k.SnippetString(c.newText))):a.push(k.TextEdit.replace(t.protocol2CodeConverter.asRange(c.range),c.newText));i.push([s,a])}return[r,i]}else return[r,[]]}function Ny(n){return async e=>{await df(e,e.entries())}}function My(n){let e;return async()=>{let t=await Fo(n,e);if(!t)return;t.detail="rerun",e=t;let r=await yf(t.runnable,n.config);return await k.tasks.executeTask(r)}}function Ay(n){return async()=>{let e=n.activeRustEditor;if(!e)return;let t=n.client;await k.window.withProgress({location:k.ProgressLocation.Notification,title:"Looking for tests...",cancellable:!1},async(r,i)=>{let o=e.document.uri.toString(),s=t.code2ProtocolConverter.asPosition(e.selection.active),c=(await t.sendRequest(Bm,{textDocument:{uri:o},position:s})).map(d=>sr.Location.create(d.runnable.location.targetUri,d.runnable.location.targetSelectionRange));await _f(t,o,s,c)})}}function jy(n){return async e=>{if(!n.activeRustEditor)return;let r=await yf(e,n.config);return r.group=k.TaskGroup.Build,r.presentationOptions={reveal:k.TaskRevealKind.Always,panel:k.TaskPanelKind.Dedicated,clear:!0},k.tasks.executeTask(r)}}function $y(n){let e;return async()=>{let t=await Fo(n,e);if(!t)return;let i=["cargo",...Cf(t.runnable)].join(" ");await k.env.clipboard.writeText(i),await k.window.showInformationMessage("Cargo invocation copied to the clipboard.")}}function Uy(n){let e;return async()=>{let t=await Fo(n,e,!0);if(t)return t.detail="restart",e=t,await Oo(n,t.runnable)}}function Hy(n){return async e=>{await Oo(n,e)}}function Wy(n){return async()=>{let e=await Fo(n,void 0,!0,!1);e&&await Ca(n,e.runnable)}}function zy(n){return async e=>{let t=Ao.get(e);if(t){let{command:r,arguments:i=[]}=t;await k.commands.executeCommand(r,...i)}}}function Ky(n){return async()=>{let e=k.window.activeTextEditor;if(!e)return;let t=n.client,r=e.selection.active,i=await t.sendRequest(wv,{textDocument:t.code2ProtocolConverter.asTextDocumentIdentifier(e.document),position:r}),o=k.window.createWebviewPanel("memory_layout","[Memory Layout]",k.ViewColumn.Two,{enableScripts:!0});o.webview.html=` + + + + + + Document + + + +
+ + +`,n.pushExtCleanup(o)}}function Vy(n){return async()=>{await n.config.toggleCheckOnSave(),n.refreshServerStatus()}}var we=fe(require("vscode")),Yy=fe(ko());var bt=fe(require("vscode")),By=fe(require("path")),jo=fe(require("fs"));var Pa=class{constructor(e){this._onDidChangeTreeData=new bt.EventEmitter;this.onDidChangeTreeData=this._onDidChangeTreeData.event;this.dependenciesMap={},this.ctx=e}getDependency(e){return this.dependenciesMap[e.toLowerCase()]}contains(e){return e.toLowerCase()in this.dependenciesMap}isInitialized(){return Object.keys(this.dependenciesMap).length!==0}refresh(){this.dependenciesMap={},this._onDidChangeTreeData.fire()}getParent(e){if(!(e instanceof Ea))return e.parent}getTreeItem(e){let t=this.dependenciesMap,r=e.id;return r in t?Ce(t[r]):e}getChildren(e){return new Promise((t,r)=>{if(!bt.workspace.workspaceFolders)return bt.window.showInformationMessage("No dependency in empty workspace"),Promise.resolve([]);if(e){let i=jo.readdirSync(e.dependencyPath).map(o=>{let s=By.join(e.dependencyPath,o),a=jo.lstatSync(s).isDirectory()?bt.TreeItemCollapsibleState.Collapsed:bt.TreeItemCollapsibleState.None,c=new xf(o,s,e,a);return this.dependenciesMap[c.dependencyPath.toLowerCase()]=c,c});return t(i)}else return t(this.getRootDependencies())})}async getRootDependencies(){return(await this.ctx.client.sendRequest(lv,{})).crates.map(r=>{let i=this.toDep(r.name||"unknown",r.version||"",r.path);return this.dependenciesMap[i.dependencyPath.toLowerCase()]=i,i}).sort((r,i)=>r.label.localeCompare(i.label))}toDep(e,t,r){return new Ea(e,t,bt.Uri.parse(r).fsPath,bt.TreeItemCollapsibleState.Collapsed)}},Ea=class extends bt.TreeItem{constructor(t,r,i,o){super(t,o);this.label=t;this.version=r;this.dependencyPath=i;this.collapsibleState=o;this.resourceUri=bt.Uri.file(i),this.id=this.resourceUri.fsPath.toLowerCase(),this.description=this.version,this.version?this.tooltip=`${this.label}-${this.version}`:this.tooltip=this.label}},xf=class extends bt.TreeItem{constructor(t,r,i,o){super(bt.Uri.file(r),o);this.label=t;this.dependencyPath=r;this.parent=i;this.collapsibleState=o;this.id=this.resourceUri.fsPath.toLowerCase(),jo.lstatSync(this.resourceUri.fsPath).isDirectory()||(this.command={command:"vscode.open",title:"Open File",arguments:[this.resourceUri]})}};var ka=class{constructor(e){this.globalState=e;let{serverVersion:t}=this;ge.info("PersistentState:",{serverVersion:t})}get serverVersion(){return this.globalState.get("serverVersion")}async updateServerVersion(e){await this.globalState.update("serverVersion",e)}};var pt=fe(require("vscode")),Gy=fe(require("os"));var Xy=require("child_process");async function Jy(n,e,t){let r=await ux(n,e,t);if(!r)throw new Error("Rust Analyzer Language Server is not available. Please, ensure its [proper installation](https://rust-analyzer.github.io/manual.html#installation).");if(ge.info("Using server binary at",r),!_v(r,e.serverExtraEnv))throw e.serverPath?new Error(`Failed to execute ${r} --version. \`config.server.path\` or \`config.serverPath\` has been set explicitly. Consider removing this config or making a valid server binary available at that path.`):new Error(`Failed to execute ${r} --version`);return r}async function ux(n,e,t){let r=process.env.__RA_LSP_SERVER_DEBUG??e.serverPath;if(r)return r.startsWith("~/")?Gy.homedir()+r.slice(1):r;if(e.package.releaseTag===null)return"rust-analyzer";let i=process.platform==="win32"?".exe":"",o=pt.Uri.joinPath(n.extensionUri,"server",`rust-analyzer${i}`);if(await pt.workspace.fs.stat(o).then(()=>!0,()=>!1)){let a=o;if(await dx()){await pt.workspace.fs.createDirectory(e.globalStorageUri).then();let c=pt.Uri.joinPath(e.globalStorageUri,`rust-analyzer${i}`),d=await pt.workspace.fs.stat(c).then(()=>!0,()=>!1);d&&e.package.version!==t.serverVersion&&(await pt.workspace.fs.delete(c),d=!1),d||(await pt.workspace.fs.copy(o,c),await lx(c)),a=c}return await t.updateServerVersion(e.package.version),a.fsPath}await t.updateServerVersion(void 0),await pt.window.showErrorMessage("Unfortunately we don't ship binaries for your platform yet. You need to manually clone the rust-analyzer repository and run `cargo xtask install --server` to build the language server from sources. If you feel that your platform should be supported, please create an issue about that [here](https://github.com/rust-lang/rust-analyzer/issues) and we will consider it.")}async function dx(){try{return((await pt.workspace.fs.readFile(pt.Uri.file("/etc/os-release"))).toString().split(` +`).find(t=>t.startsWith("ID="))||"ID=linux").indexOf("nixos")!==-1}catch{return!1}}async function lx(n){await pt.window.withProgress({location:pt.ProgressLocation.Notification,title:"Patching rust-analyzer for NixOS"},async(e,t)=>{let r=` + {srcStr, pkgs ? import {}}: + pkgs.stdenv.mkDerivation { + name = "rust-analyzer"; + src = /. + srcStr; + phases = [ "installPhase" "fixupPhase" ]; + installPhase = "cp $src $out"; + fixupPhase = '' + chmod 755 $out + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out + ''; + } + `,i=pt.Uri.file(n.fsPath+"-orig");await pt.workspace.fs.rename(n,i,{overwrite:!0});try{e.report({message:"Patching executable",increment:20}),await new Promise((o,s)=>{var c,d;let a=(0,Xy.exec)(`nix-build -E - --argstr srcStr '${i.fsPath}' -o '${n.fsPath}'`,(f,g,m)=>{f!=null?s(Error(m)):o(g)});(c=a.stdin)==null||c.write(r),(d=a.stdin)==null||d.end()})}finally{await pt.workspace.fs.delete(i)}})}var xt=fe(require("vscode"));var Qy=(n,e,t)=>{let r,i=new Map,o=new Map,s=new Map;e.createRunProfile("Run Tests",xt.TestRunProfileKind.Run,async(f,g)=>{var w,T;if(r)for(await t.sendNotification(rf);r;)await new Promise(S=>setTimeout(S,1));r=e.createTestRun(f),g.onCancellationRequested(async()=>{await t.sendNotification(rf)});let m=(w=f.include)==null?void 0:w.map(S=>S.id),C=(T=f.exclude)==null?void 0:T.map(S=>S.id);await t.sendRequest(av,{include:m,exclude:C})},!0,void 0,!1),e.createRunProfile("Debug Tests",xt.TestRunProfileKind.Debug,async f=>{var C,w;if(((C=f.include)==null?void 0:C.length)!==1||((w=f.exclude)==null?void 0:w.length)!==0){await xt.window.showErrorMessage("You can debug only one test at a time");return}let g=f.include[0].id,m=s.get(g);if(!m){await xt.window.showErrorMessage("You can debug only one test at a time");return}await Oo(n,m)},!0,void 0,!1);let a=(f,g)=>{g.delete(f.id),i.delete(f.id),s.delete(f.id),f.uri&&o.set(f.uri.toString(),o.get(f.uri.toString()).filter(m=>m.id!==f.id))},c=f=>{var q,F,I;let g=f.parent?i.get(f.parent).children:e.items,m=g.get(f.id),C=(q=f.textDocument)!=null&&q.uri?xt.Uri.parse((F=f.textDocument)==null?void 0:F.uri):void 0,w=f.range&&new xt.Range(new xt.Position(f.range.start.line,f.range.start.character),new xt.Position(f.range.end.line,f.range.end.character));if(m){if(((I=m.uri)==null?void 0:I.toString())===(C==null?void 0:C.toString())){m.range=w;return}a(m,g)}let T={package:"package",module:"symbol-module",test:"beaker"},S=e.createTestItem(f.id,`$(${T[f.kind]}) ${f.label}`,C);S.range=w,S.canResolveChildren=f.canResolveChildren,i.set(f.id,S),C&&(o.has(C.toString())||o.set(C.toString(),[]),o.get(C.toString()).push(S)),f.runnable&&s.set(f.id,f.runnable),g.add(S)},d=f=>{let{tests:g,scope:m,scopeFile:C}=f,w=new Set;for(let T of g)c(T),w.add(T.id);if(!m&&!C)for(let T of g)e.resolveHandler(i.get(T.id));if(m){let T=S=>{for(let[q,F]of S)w.has(F.id)?T(F.children):a(F,S)};for(let S of m)T(i.get(S).children)}if(C){let T=S=>{var F;let q=(o.get(S.toString())||[]).filter(I=>!w.has(I.id));for(let I of q){let A=((F=I.parent)==null?void 0:F.children)||e.items;a(I,A)}};for(let S of C)T(xt.Uri.parse(S.uri))}};n.pushClientCleanup(t.onNotification(sv,f=>{d(f)})),n.pushClientCleanup(t.onNotification(cv,()=>{r.end(),r=void 0})),n.pushClientCleanup(t.onNotification(uv,f=>{r.appendOutput(`${f}\r +`)})),n.pushClientCleanup(t.onNotification(dv,f=>{let g=i.get(f.testId);f.state.tag==="failed"?r.failed(g,new xt.TestMessage(f.state.message)):f.state.tag==="passed"?r.passed(g):f.state.tag==="started"?r.started(g):f.state.tag==="skipped"?r.skipped(g):f.state.tag==="enqueued"&&r.enqueued(g)})),e.resolveHandler=async f=>{let g=await t.sendRequest(ov,{testId:f==null?void 0:f.id});d(g)},e.refreshHandler=async()=>{e.items.forEach(f=>{e.items.delete(f.id)}),i=new Map,await e.resolveHandler(void 0)}};function Pf(){let n=(we.workspace.workspaceFolders||[]).filter(t=>t.uri.scheme==="file"),e=we.workspace.textDocuments.filter(t=>Nn(t));return n.length===0?e.length===0?{kind:"Empty"}:{kind:"Detached Files",files:e}:{kind:"Workspace Folder"}}var qa=class{constructor(e,t,r){this.extCtx=e;this.lastStatus={health:"stopped"};e.subscriptions.push(this),this.config=new Ra(e),this.statusBar=we.window.createStatusBarItem(we.StatusBarAlignment.Left),this.config.testExplorer&&(this.testController=we.tests.createTestController("rustAnalyzerTestController","Rust Analyzer test controller")),this.workspace=r,this.clientSubscriptions=[],this.commandDisposables=[],this.commandFactories=t,this.unlinkedFiles=[],this.state=new ka(e.globalState),this.updateCommands("disable"),this.setServerStatus({health:"stopped"})}get client(){return this._client}get treeView(){return this._treeView}get dependencies(){return this._dependencies}dispose(){var e;this.config.dispose(),this.statusBar.dispose(),(e=this.testController)==null||e.dispose(),this.disposeClient(),this.commandDisposables.forEach(t=>t.dispose())}async onWorkspaceFolderChanges(){var t,r;let e=Pf();if(e.kind==="Detached Files"&&this.workspace.kind==="Detached Files"&&e.files!==this.workspace.files){(t=this.client)!=null&&t.isRunning()&&(await this.stopAndDispose(),await this.start());return}if(!(e.kind==="Workspace Folder"&&this.workspace.kind==="Workspace Folder")){if(e.kind==="Empty"){await this.stopAndDispose();return}(r=this.client)!=null&&r.isRunning()&&await this.restart()}}async getOrCreateClient(){if(this.workspace.kind!=="Empty"){if(this.traceOutputChannel||(this.traceOutputChannel=new ha("Rust Analyzer Language Server Trace"),this.pushExtCleanup(this.traceOutputChannel)),this.outputChannel||(this.outputChannel=we.window.createOutputChannel("Rust Analyzer Language Server"),this.pushExtCleanup(this.outputChannel)),!this._client){this._serverPath=await Jy(this.extCtx,this.config,this.state).catch(s=>{let a="bootstrap error. ";throw a+='See the logs in "OUTPUT > Rust Analyzer Client" (should open automatically). ',a+='To enable verbose logs use { "rust-analyzer.trace.extension": true }',ge.error("Bootstrap error",s),new Error(a)});let e=Object.assign({},process.env,this.config.serverExtraEnv),t={command:this._serverPath,options:{env:e}},r={run:t,debug:t},i=we.workspace.getConfiguration("rust-analyzer");if(this.config.discoverProjectRunner){let s=`${this.config.discoverProjectRunner}.discoverWorkspaceCommand`;ge.info(`running command: ${s}`);let a=we.workspace.textDocuments.filter(Nn).map(d=>d.uri),c=await we.commands.executeCommand(s,a);this.setWorkspaces(c)}this.workspace.kind==="Detached Files"&&(i={detachedFiles:this.workspace.files.map(s=>s.uri.fsPath),...i});let o=Jr(i,(s,a)=>{s==="linkedProjects"&&this.config.discoveredWorkspaces.length>0&&(a.linkedProjects=this.config.discoveredWorkspaces)});this._client=await Xv(this.traceOutputChannel,this.outputChannel,o,r,this.config,this.unlinkedFiles),this.pushClientCleanup(this._client.onNotification(Cv,s=>this.setServerStatus(s))),this.pushClientCleanup(this._client.onNotification(Vm,()=>{this.outputChannel.show()})),this.pushClientCleanup(this._client.onNotification(bv,async s=>{if(this.config.discoverProjectRunner){let a=`${this.config.discoverProjectRunner}.discoverWorkspaceCommand`;ge.info(`running command: ${a}`);let c=s.textDocuments.map(f=>we.Uri.parse(f.uri,!0)),d=await we.commands.executeCommand(a,c);this.setWorkspaces(d),await this.notifyRustAnalyzer()}}))}return this._client}}async start(){ge.info("Starting language client");let e=await this.getOrCreateClient();e&&(await e.start(),this.updateCommands(),this.testController&&Qy(this,this.testController,e),this.config.showDependenciesExplorer&&this.prepareTreeDependenciesView(e))}prepareTreeDependenciesView(e){var r;let t={...this,client:e};this._dependencies=new Pa(t),this._treeView=we.window.createTreeView("rustDependencies",{treeDataProvider:this._dependencies,showCollapseAll:!0}),this.pushExtCleanup(this._treeView),we.window.onDidChangeActiveTextEditor(async i=>{if(this.shouldRevealDependency(i))try{await Sf(i)}catch(o){await we.window.showErrorMessage(`Dependency error: ${o}`)}}),(r=this.treeView)==null||r.onDidChangeVisibility(async i=>{if(i.visible){let o=we.window.activeTextEditor;if(this.shouldRevealDependency(o))try{await Sf(o)}catch(s){await we.window.showErrorMessage(`Dependency error: ${s}`)}}})}shouldRevealDependency(e){var t;return e!==void 0&&Mn(e)&&!Sv(e.document)&&(((t=this.treeView)==null?void 0:t.visible)||!1)}async restart(){await this.stopAndDispose(),await this.start()}async stop(){this._client&&(ge.info("Stopping language client"),this.updateCommands("disable"),await this._client.stop())}async stopAndDispose(){this._client&&(ge.info("Disposing language client"),this.updateCommands("disable"),await this.disposeClient())}async disposeClient(){var e,t;(e=this.clientSubscriptions)==null||e.forEach(r=>r.dispose()),this.clientSubscriptions=[],await((t=this._client)==null?void 0:t.dispose()),this._serverPath=void 0,this._client=void 0}get activeRustEditor(){let e=we.window.activeTextEditor;return e&&Mn(e)?e:void 0}get extensionPath(){return this.extCtx.extensionPath}get subscriptions(){return this.extCtx.subscriptions}get serverPath(){return this._serverPath}setWorkspaces(e){this.config.discoveredWorkspaces=e}async notifyRustAnalyzer(){var e;await((e=this.client)==null?void 0:e.sendNotification(Yy.DidChangeConfigurationNotification.type,{settings:""}))}updateCommands(e){var i;this.commandDisposables.forEach(o=>o.dispose()),this.commandDisposables=[];let t=(!e&&((i=this._client)==null?void 0:i.isRunning()))??!1,r=function(o){return t};for(let[o,s]of Object.entries(this.commandFactories)){let a=`rust-analyzer.${o}`,c;r(this)?c=s.enabled(this):s.disabled?c=s.disabled(this):c=()=>we.window.showErrorMessage(`command ${a} failed: rust-analyzer server is not running`),this.commandDisposables.push(we.commands.registerCommand(a,c))}}setServerStatus(e){this.lastStatus=e,this.updateStatusBarItem()}refreshServerStatus(){this.updateStatusBarItem()}updateStatusBarItem(){var i;let e="",t=this.lastStatus,r=this.statusBar;switch(r.show(),r.tooltip=new we.MarkdownString("",!0),r.tooltip.isTrusted=!0,t.health){case"ok":r.tooltip.appendText(t.message??"Ready"),r.color=void 0,r.backgroundColor=void 0,this.config.statusBarClickAction==="stopServer"?r.command="rust-analyzer.stopServer":r.command="rust-analyzer.openLogs",(i=this.dependencies)==null||i.refresh();break;case"warning":t.message&&r.tooltip.appendText(t.message),r.color=new we.ThemeColor("statusBarItem.warningForeground"),r.backgroundColor=new we.ThemeColor("statusBarItem.warningBackground"),r.command="rust-analyzer.openLogs",e="$(warning) ";break;case"error":t.message&&r.tooltip.appendText(t.message),r.color=new we.ThemeColor("statusBarItem.errorForeground"),r.backgroundColor=new we.ThemeColor("statusBarItem.errorBackground"),r.command="rust-analyzer.openLogs",e="$(error) ";break;case"stopped":r.tooltip.appendText("Server is stopped"),r.tooltip.appendMarkdown(` + +[Start server](command:rust-analyzer.startServer)`),r.color=new we.ThemeColor("statusBarItem.warningForeground"),r.backgroundColor=new we.ThemeColor("statusBarItem.warningBackground"),r.command="rust-analyzer.startServer",r.text="$(stop-circle) rust-analyzer";return}r.tooltip.value&&r.tooltip.appendMarkdown(` + +--- + +`),r.tooltip.appendMarkdown(` + +[Open Logs](command:rust-analyzer.openLogs)`),r.tooltip.appendMarkdown(` + +[${this.config.checkOnSave?"Disable":"Enable"} Check on Save](command:rust-analyzer.toggleCheckOnSave)`),r.tooltip.appendMarkdown(` + +[Reload Workspace](command:rust-analyzer.reloadWorkspace)`),r.tooltip.appendMarkdown(` + +[Rebuild Proc Macros](command:rust-analyzer.rebuildProcMacros)`),r.tooltip.appendMarkdown(` + +[Restart server](command:rust-analyzer.restartServer)`),r.tooltip.appendMarkdown(` + +[Stop server](command:rust-analyzer.stopServer)`),t.quiescent||(e="$(sync~spin) "),r.text=`${e}rust-analyzer`}pushExtCleanup(e){this.extCtx.subscriptions.push(e)}pushClientCleanup(e){this.clientSubscriptions.push(e)}};var eC="inRustProject";async function fx(){await af(eC,void 0)}async function px(n){mx();let e=new qa(n,gx(),Pf()),t=await hx(e).catch(r=>{throw gt.window.showErrorMessage(`Cannot activate rust-analyzer extension: ${r.message}`),r});return await af(eC,!0),t}async function hx(n){n.workspace.kind==="Workspace Folder"&&n.pushExtCleanup(Nv(n.config));let e=new ba(n);n.pushExtCleanup(gt.workspace.registerTextDocumentContentProvider(Oi,e));let t=new Da(n);n.pushExtCleanup(t);async function r(i){for(let o of gt.window.visibleTextEditors)i===o.document&&await t.provideDecorations(o)}return gt.workspace.onDidChangeTextDocument(async i=>await r(i.document),null,n.subscriptions),gt.workspace.onDidOpenTextDocument(r,null,n.subscriptions),gt.window.onDidChangeActiveTextEditor(async i=>{i&&(e.triggerUpdate(i.document.uri),await r(i.document))},null,n.subscriptions),gt.window.onDidChangeVisibleTextEditors(async i=>{for(let o of i)e.triggerUpdate(o.document.uri),await t.provideDecorations(o)},null,n.subscriptions),gt.workspace.onDidChangeWorkspaceFolders(async i=>n.onWorkspaceFolderChanges(),null,n.subscriptions),gt.workspace.onDidChangeConfiguration(async i=>{var o;await((o=n.client)==null?void 0:o.sendNotification(Zy.DidChangeConfigurationNotification.type,{settings:""}))},null,n.subscriptions),await n.start(),n}function gx(){return{onEnter:{enabled:ay,disabled:n=>()=>gt.commands.executeCommand("default:type",{text:` +`})},restartServer:{enabled:n=>async()=>{await n.restart()},disabled:n=>async()=>{await n.start()}},startServer:{enabled:n=>async()=>{await n.start()},disabled:n=>async()=>{await n.start()}},stopServer:{enabled:n=>async()=>{await n.stopAndDispose(),n.setServerStatus({health:"stopped"})},disabled:n=>async()=>{}},analyzerStatus:{enabled:Qv},memoryUsage:{enabled:Yv},shuffleCrateGraph:{enabled:Zv},reloadWorkspace:{enabled:Sy},rebuildProcMacros:{enabled:_y},matchingBrace:{enabled:ny},joinLines:{enabled:ry},parentModule:{enabled:cy},syntaxTree:{enabled:py},viewHir:{enabled:my},viewMir:{enabled:vy},interpretFunction:{enabled:yy},viewFileText:{enabled:Cy},viewItemTree:{enabled:wy},viewCrateGraph:{enabled:Dy},viewFullCrateGraph:{enabled:Ty},expandMacro:{enabled:Ry},run:{enabled:My},copyRunCommandLine:{enabled:$y},debug:{enabled:Uy},newDebugConfig:{enabled:Wy},openDocs:{enabled:ky},openExternalDocs:{enabled:qy},openCargoToml:{enabled:uy},peekTests:{enabled:Ay},moveItemUp:{enabled:iy},moveItemDown:{enabled:oy},cancelFlycheck:{enabled:Iy},clearFlycheck:{enabled:Oy},runFlycheck:{enabled:Fy},ssr:{enabled:ly},serverVersion:{enabled:fy},viewMemoryLayout:{enabled:Ky},toggleCheckOnSave:{enabled:Vy},applyActionGroup:{enabled:Py},applySnippetWorkspaceEdit:{enabled:Ny},debugSingle:{enabled:Hy},gotoLocation:{enabled:Ey},linkToCommand:{enabled:zy},resolveCodeAction:{enabled:Ly},runSingle:{enabled:jy},showReferences:{enabled:xy},triggerParameterHints:{enabled:ey},openLogs:{enabled:ty},revealDependency:{enabled:dy}}}function mx(){gt.extensions.getExtension("rust-lang.rust")&>.window.showWarningMessage("You have both the rust-analyzer (rust-lang.rust-analyzer) and Rust (rust-lang.rust) plugins enabled. These are known to conflict and cause various functions of both plugins to not work correctly. You should disable one of them.","Got it").then(()=>{},console.error),gt.extensions.getExtension("panicbit.cargo")&>.window.showWarningMessage('You have both the rust-analyzer (rust-lang.rust-analyzer) and Cargo (panicbit.cargo) plugins enabled, you can disable it or set {"cargo.automaticCheck": false} in settings.json to avoid invoking cargo twice',"Got it").then(()=>{},console.error)}0&&(module.exports={activate,deactivate}); diff --git a/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/package-lock.json b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/package-lock.json new file mode 100644 index 00000000..bd8b0e9c --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/package-lock.json @@ -0,0 +1,4001 @@ +{ + "name": "rust-analyzer", + "version": "0.5.0-dev", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "rust-analyzer", + "version": "0.5.0-dev", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@hpcc-js/wasm": "^2.13.0", + "anser": "^2.1.1", + "d3": "^7.8.5", + "d3-graphviz": "^5.0.2", + "vscode-languageclient": "^8.1.0" + }, + "devDependencies": { + "@tsconfig/strictest": "^2.0.1", + "@types/node": "~16.11.7", + "@types/vscode": "~1.78.1", + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", + "@vscode/test-electron": "^2.3.8", + "@vscode/vsce": "^2.19.0", + "esbuild": "^0.18.12", + "eslint": "^8.44.0", + "eslint-config-prettier": "^8.8.0", + "ovsx": "^0.8.2", + "prettier": "^3.0.0", + "tslib": "^2.6.0", + "typescript": "^5.1.6" + }, + "engines": { + "vscode": "^1.78.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.12.tgz", + "integrity": "sha512-LIxaNIQfkFZbTLb4+cX7dozHlAbAshhFE5PKdro0l+FnCpx1GDJaQ2WMcqm+ToXKMt8p8Uojk/MFRuGyz3V5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.12.tgz", + "integrity": "sha512-BMAlczRqC/LUt2P97E4apTBbkvS9JTJnp2DKFbCwpZ8vBvXVbNdqmvzW/OsdtI/+mGr+apkkpqGM8WecLkPgrA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.12.tgz", + "integrity": "sha512-zU5MyluNsykf5cOJ0LZZZjgAHbhPJ1cWfdH1ZXVMXxVMhEV0VZiZXQdwBBVvmvbF28EizeK7obG9fs+fpmS0eQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.12.tgz", + "integrity": "sha512-zUZMep7YONnp6954QOOwEBwFX9svlKd3ov6PkxKd53LGTHsp/gy7vHaPGhhjBmEpqXEXShi6dddjIkmd+NgMsA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.12.tgz", + "integrity": "sha512-ohqLPc7i67yunArPj1+/FeeJ7AgwAjHqKZ512ADk3WsE3FHU9l+m5aa7NdxXr0HmN1bjDlUslBjWNbFlD9y12Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.12.tgz", + "integrity": "sha512-GIIHtQXqgeOOqdG16a/A9N28GpkvjJnjYMhOnXVbn3EDJcoItdR58v/pGN31CHjyXDc8uCcRnFWmqaJt24AYJg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.12.tgz", + "integrity": "sha512-zK0b9a1/0wZY+6FdOS3BpZcPc1kcx2G5yxxfEJtEUzVxI6n/FrC2Phsxj/YblPuBchhBZ/1wwn7AyEBUyNSa6g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.12.tgz", + "integrity": "sha512-y75OijvrBE/1XRrXq1jtrJfG26eHeMoqLJ2dwQNwviwTuTtHGCojsDO6BJNF8gU+3jTn1KzJEMETytwsFSvc+Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.12.tgz", + "integrity": "sha512-JKgG8Q/LL/9sw/iHHxQyVMoQYu3rU3+a5Z87DxC+wAu3engz+EmctIrV+FGOgI6gWG1z1+5nDDbXiRMGQZXqiw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.12.tgz", + "integrity": "sha512-yoRIAqc0B4lDIAAEFEIu9ttTRFV84iuAl0KNCN6MhKLxNPfzwCBvEMgwco2f71GxmpBcTtn7KdErueZaM2rEvw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.12.tgz", + "integrity": "sha512-qYgt3dHPVvf/MgbIBpJ4Sup/yb9DAopZ3a2JgMpNKIHUpOdnJ2eHBo/aQdnd8dJ21X/+sS58wxHtA9lEazYtXQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.12.tgz", + "integrity": "sha512-wHphlMLK4ufNOONqukELfVIbnGQJrHJ/mxZMMrP2jYrPgCRZhOtf0kC4yAXBwnfmULimV1qt5UJJOw4Kh13Yfg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.12.tgz", + "integrity": "sha512-TeN//1Ft20ZZW41+zDSdOI/Os1bEq5dbvBvYkberB7PHABbRcsteeoNVZFlI0YLpGdlBqohEpjrn06kv8heCJg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.12.tgz", + "integrity": "sha512-AgUebVS4DoAblBgiB2ACQ/8l4eGE5aWBb8ZXtkXHiET9mbj7GuWt3OnsIW/zX+XHJt2RYJZctbQ2S/mDjbp0UA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.12.tgz", + "integrity": "sha512-dJ3Rb3Ei2u/ysSXd6pzleGtfDdc2MuzKt8qc6ls8vreP1G3B7HInX3i7gXS4BGeVd24pp0yqyS7bJ5NHaI9ing==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.12.tgz", + "integrity": "sha512-OrNJMGQbPaVyHHcDF8ybNSwu7TDOfX8NGpXCbetwOSP6txOJiWlgQnRymfC9ocR1S0Y5PW0Wb1mV6pUddqmvmQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.12.tgz", + "integrity": "sha512-55FzVCAiwE9FK8wWeCRuvjazNRJ1QqLCYGZVB6E8RuQuTeStSwotpSW4xoRGwp3a1wUsaVCdYcj5LGCASVJmMg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.12.tgz", + "integrity": "sha512-qnluf8rfb6Y5Lw2tirfK2quZOBbVqmwxut7GPCIJsM8lc4AEUj9L8y0YPdLaPK0TECt4IdyBdBD/KRFKorlK3g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.12.tgz", + "integrity": "sha512-+RkKpVQR7bICjTOPUpkTBTaJ4TFqQBX5Ywyd/HSdDkQGn65VPkTsR/pL4AMvuMWy+wnXgIl4EY6q4mVpJal8Kg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.12.tgz", + "integrity": "sha512-GNHuciv0mFM7ouzsU0+AwY+7eV4Mgo5WnbhfDCQGtpvOtD1vbOiRjPYG6dhmMoFyBjj+pNqQu2X+7DKn0KQ/Gw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.12.tgz", + "integrity": "sha512-kR8cezhYipbbypGkaqCTWIeu4zID17gamC8YTPXYtcN3E5BhhtTnwKBn9I0PJur/T6UVwIEGYzkffNL0lFvxEw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.12.tgz", + "integrity": "sha512-O0UYQVkvfM/jO8a4OwoV0mAKSJw+mjWTAd1MJd/1FCX6uiMdLmMRPK/w6e9OQ0ob2WGxzIm9va/KG0Ja4zIOgg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", + "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", + "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@hpcc-js/wasm": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@hpcc-js/wasm/-/wasm-2.13.0.tgz", + "integrity": "sha512-MvnUPnyMlN3/2IONCXwl/SBVWIfVOFJqvw+kFfI1QcwKjNmkwTAtG+9/m3nvofTymkASUUxNULbBmRDIr2uzIA==", + "dependencies": { + "yargs": "17.7.2" + }, + "bin": { + "dot-wasm": "bin/dot-wasm.js" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@tsconfig/strictest": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/strictest/-/strictest-2.0.1.tgz", + "integrity": "sha512-7JHHCbyCsGUxLd0pDbp24yz3zjxw2t673W5oAP6HCEdr/UUhaRhYd3SSnUsGCk+VnPVJVA4mXROzbhI+nyIk+w==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.11.68", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.68.tgz", + "integrity": "sha512-JkRpuVz3xCNCWaeQ5EHLR/6woMbHZz/jZ7Kmc63AkU+1HxnoUugzSWMck7dsR4DvNYX8jp9wTi9K7WvnxOIQZQ==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "dev": true + }, + "node_modules/@types/vscode": { + "version": "1.78.1", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.78.1.tgz", + "integrity": "sha512-wEA+54axejHu7DhcUfnFBan1IqFD1gBDxAFz8LoX06NbNDMRJv/T6OGthOs52yZccasKfN588EyffHWABkR0fg==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.0.0.tgz", + "integrity": "sha512-xuv6ghKGoiq856Bww/yVYnXGsKa588kY3M0XK7uUW/3fJNNULKRfZfSBkMTSpqGG/8ZCXCadfh8G/z/B4aqS/A==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.0", + "@typescript-eslint/scope-manager": "6.0.0", + "@typescript-eslint/type-utils": "6.0.0", + "@typescript-eslint/utils": "6.0.0", + "@typescript-eslint/visitor-keys": "6.0.0", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.5.0", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.0.0.tgz", + "integrity": "sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.0.0", + "@typescript-eslint/types": "6.0.0", + "@typescript-eslint/typescript-estree": "6.0.0", + "@typescript-eslint/visitor-keys": "6.0.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.0.0.tgz", + "integrity": "sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.0.0", + "@typescript-eslint/visitor-keys": "6.0.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.0.0.tgz", + "integrity": "sha512-ah6LJvLgkoZ/pyJ9GAdFkzeuMZ8goV6BH7eC9FPmojrnX9yNCIsfjB+zYcnex28YO3RFvBkV6rMV6WpIqkPvoQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.0.0", + "@typescript-eslint/utils": "6.0.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.0.0.tgz", + "integrity": "sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.0.0.tgz", + "integrity": "sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.0.0", + "@typescript-eslint/visitor-keys": "6.0.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.0", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.0.0.tgz", + "integrity": "sha512-SOr6l4NB6HE4H/ktz0JVVWNXqCJTOo/mHnvIte1ZhBQ0Cvd04x5uKZa3zT6tiodL06zf5xxdK8COiDvPnQ27JQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.3.0", + "@types/json-schema": "^7.0.11", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "6.0.0", + "@typescript-eslint/types": "6.0.0", + "@typescript-eslint/typescript-estree": "6.0.0", + "eslint-scope": "^5.1.1", + "semver": "^7.5.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.0.0.tgz", + "integrity": "sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.0.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vscode/test-electron": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.8.tgz", + "integrity": "sha512-b4aZZsBKtMGdDljAsOPObnAi7+VWIaYl3ylCz1jTs+oV6BZ4TNHcVNC3xUn0azPeszBmwSBDQYfFESIaUQnrOg==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "jszip": "^3.10.1", + "semver": "^7.5.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@vscode/vsce": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.19.0.tgz", + "integrity": "sha512-dAlILxC5ggOutcvJY24jxz913wimGiUrHaPkk16Gm9/PGFbz1YezWtrXsTKUtJws4fIlpX2UIlVlVESWq8lkfQ==", + "dev": true, + "dependencies": { + "azure-devops-node-api": "^11.0.1", + "chalk": "^2.4.2", + "cheerio": "^1.0.0-rc.9", + "commander": "^6.1.0", + "glob": "^7.0.6", + "hosted-git-info": "^4.0.2", + "jsonc-parser": "^3.2.0", + "leven": "^3.1.0", + "markdown-it": "^12.3.2", + "mime": "^1.3.4", + "minimatch": "^3.0.3", + "parse-semver": "^1.1.1", + "read": "^1.0.7", + "semver": "^5.1.0", + "tmp": "^0.2.1", + "typed-rest-client": "^1.8.4", + "url-join": "^4.0.1", + "xml2js": "^0.5.0", + "yauzl": "^2.3.1", + "yazl": "^2.2.2" + }, + "bin": { + "vsce": "vsce" + }, + "engines": { + "node": ">= 14" + }, + "optionalDependencies": { + "keytar": "^7.7.0" + } + }, + "node_modules/@vscode/vsce/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vscode/vsce/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vscode/vsce/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@vscode/vsce/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@vscode/vsce/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@vscode/vsce/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@vscode/vsce/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vscode/vsce/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@vscode/vsce/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vscode/vsce/node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dev": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/anser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/anser/-/anser-2.1.1.tgz", + "integrity": "sha512-nqLm4HxOTpeLOxcmB3QWmV5TcDFhW9y/fyQ+hivtDFcK4OQ+pQ5fzPnXHM1Mfcm0VkLtvVi1TCPr++Qy0Q/3EQ==" + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/azure-devops-node-api": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz", + "integrity": "sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==", + "dev": true, + "dependencies": { + "tunnel": "0.0.6", + "typed-rest-client": "^1.8.4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "optional": true + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "optional": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "optional": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dev": true, + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "optional": true + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/d3": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", + "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-yEEyEAbDrF8C6Ob2myOBLjwBLck1Z89jMGFee0oPsn95GqjerpaOA4ch+vc2l0FNFFwMD5N7OCSEN5eAlsUbgQ==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-graphviz": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/d3-graphviz/-/d3-graphviz-5.0.2.tgz", + "integrity": "sha512-EVRow9rnFgm/L1trbbnu2PGOND11IcSEdWXbrDbz9hH0/Kj3YM2AqMkkTN/EAWgawD5/zryyCy+3Vm05oSJ1Kg==", + "dependencies": { + "@hpcc-js/wasm": "2.5.0", + "d3-dispatch": "^3.0.1", + "d3-format": "^3.1.0", + "d3-interpolate": "^3.0.1", + "d3-path": "^3.1.0", + "d3-timer": "^3.0.1", + "d3-transition": "^3.0.1", + "d3-zoom": "^3.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "d3-selection": "^3.0.0" + } + }, + "node_modules/d3-graphviz/node_modules/@hpcc-js/wasm": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@hpcc-js/wasm/-/wasm-2.5.0.tgz", + "integrity": "sha512-G26BamgaHW46f6P8bmkygapgNcy+tTDMwIvCzmMzdp39sxUS1u4gaT/vR2SSDc4x3SfL5RE4B2B8ef/wd429Hg==", + "dependencies": { + "yargs": "17.6.2" + }, + "bin": { + "dot-wasm": "bin/dot-wasm.js" + } + }, + "node_modules/d3-graphviz/node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "optional": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dependencies": { + "robust-predicates": "^3.0.0" + } + }, + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "optional": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/entities": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.12.tgz", + "integrity": "sha512-XuOVLDdtsDslXStStduT41op21Ytmf4/BDS46aa3xPJ7X5h2eMWBF1oAe3QjUH3bDksocNXgzGUZ7XHIBya6Tg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.12", + "@esbuild/android-arm64": "0.18.12", + "@esbuild/android-x64": "0.18.12", + "@esbuild/darwin-arm64": "0.18.12", + "@esbuild/darwin-x64": "0.18.12", + "@esbuild/freebsd-arm64": "0.18.12", + "@esbuild/freebsd-x64": "0.18.12", + "@esbuild/linux-arm": "0.18.12", + "@esbuild/linux-arm64": "0.18.12", + "@esbuild/linux-ia32": "0.18.12", + "@esbuild/linux-loong64": "0.18.12", + "@esbuild/linux-mips64el": "0.18.12", + "@esbuild/linux-ppc64": "0.18.12", + "@esbuild/linux-riscv64": "0.18.12", + "@esbuild/linux-s390x": "0.18.12", + "@esbuild/linux-x64": "0.18.12", + "@esbuild/netbsd-x64": "0.18.12", + "@esbuild/openbsd-x64": "0.18.12", + "@esbuild/sunos-x64": "0.18.12", + "@esbuild/win32-arm64": "0.18.12", + "@esbuild/win32-ia32": "0.18.12", + "@esbuild/win32-x64": "0.18.12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz", + "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", + "@humanwhocodes/config-array": "^0.11.10", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.6.0", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz", + "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", + "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "optional": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true, + "optional": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", + "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "entities": "^4.3.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "optional": true + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "optional": true + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/keytar": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "node-addon-api": "^4.3.0", + "prebuild-install": "^7.0.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "optional": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true, + "optional": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true, + "optional": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/node-abi": { + "version": "3.31.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.31.0.tgz", + "integrity": "sha512-eSKV6s+APenqVh8ubJyiu/YhZgxQpGP66ntzUb3lY1xB9ukSRaGnx0AIxI+IM+1+IVYC1oWobgG5L3Lt9ARykQ==", + "dev": true, + "optional": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "dev": true, + "optional": true + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ovsx": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/ovsx/-/ovsx-0.8.2.tgz", + "integrity": "sha512-btDXZorXlmwN9+9Un3khrVygCXmhwbrtg8gifNXw92rZPXcRBAiLG/L09Kb6srhGEratsFt42AktfD8t9XhzoA==", + "dev": true, + "dependencies": { + "@vscode/vsce": "^2.19.0", + "commander": "^6.1.0", + "follow-redirects": "^1.14.6", + "is-ci": "^2.0.0", + "leven": "^3.1.0", + "semver": "^7.5.2", + "tmp": "^0.2.1" + }, + "bin": { + "ovsx": "lib/ovsx" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/ovsx/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-semver": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", + "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==", + "dev": true, + "dependencies": { + "semver": "^5.1.0" + } + }, + "node_modules/parse-semver/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dev": true, + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dev": true, + "optional": true, + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz", + "integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "optional": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "optional": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "optional": true + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "optional": true, + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "optional": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "optional": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", + "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tslib": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", + "dev": true + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "optional": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-rest-client": { + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.9.tgz", + "integrity": "sha512-uSmjE38B80wjL85UFX3sTYEUlvZ1JgCRhsWj/fJ4rZ0FqDUFoIuodtiVeE+cUqiVTOKPdKrp/sdftD15MDek6g==", + "dev": true, + "dependencies": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" + } + }, + "node_modules/typescript": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "node_modules/underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", + "dev": true + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/vscode-jsonrpc": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", + "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageclient": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.1.0.tgz", + "integrity": "sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing==", + "dependencies": { + "minimatch": "^5.1.0", + "semver": "^7.3.7", + "vscode-languageserver-protocol": "3.17.3" + }, + "engines": { + "vscode": "^1.67.0" + } + }, + "node_modules/vscode-languageclient/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/vscode-languageclient/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz", + "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==", + "dependencies": { + "vscode-jsonrpc": "8.1.0", + "vscode-languageserver-types": "3.17.3" + } + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz", + "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/package.json b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/package.json new file mode 100644 index 00000000..91a0fd6e --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/package.json @@ -0,0 +1,2304 @@ +{ + "name": "rust-analyzer", + "displayName": "rust-analyzer", + "description": "Rust language support for Visual Studio Code", + "private": true, + "icon": "icon.png", + "version": "0.3.1932", + "releaseTag": "2024-04-22", + "publisher": "rust-lang", + "repository": { + "url": "https://github.com/rust-lang/rust-analyzer.git", + "type": "git" + }, + "homepage": "https://rust-analyzer.github.io/", + "license": "MIT OR Apache-2.0", + "keywords": [ + "rust" + ], + "categories": [ + "Formatters", + "Programming Languages" + ], + "capabilities": { + "untrustedWorkspaces": { + "supported": false, + "description": "rust-analyzer invokes binaries set up by its configuration as well as the Rust toolchain's binaries. A malicious actor could exploit this to run arbitrary code on your machine." + } + }, + "engines": { + "vscode": "^1.78.0" + }, + "scripts": { + "vscode:prepublish": "npm run build-base -- --minify", + "package": "vsce package -o rust-analyzer.vsix", + "build-base": "esbuild ./src/main.ts --bundle --outfile=out/main.js --external:vscode --format=cjs --platform=node --target=node16", + "build": "npm run build-base -- --sourcemap", + "watch": "npm run build-base -- --sourcemap --watch", + "format": "prettier --write .", + "format:check": "prettier --check .", + "lint": "eslint -c .eslintrc.js --ext ts ./src ./tests", + "lint:fix": "npm run lint -- --fix", + "typecheck": "tsc", + "pretest": "npm run typecheck && npm run build", + "test": "node ./out/tests/runTests.js" + }, + "dependencies": { + "@hpcc-js/wasm": "^2.13.0", + "anser": "^2.1.1", + "d3": "^7.8.5", + "d3-graphviz": "^5.0.2", + "vscode-languageclient": "^8.1.0" + }, + "devDependencies": { + "@tsconfig/strictest": "^2.0.1", + "@types/node": "~16.11.7", + "@types/vscode": "~1.78.1", + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", + "@vscode/test-electron": "^2.3.8", + "@vscode/vsce": "^2.19.0", + "esbuild": "^0.18.12", + "eslint": "^8.44.0", + "eslint-config-prettier": "^8.8.0", + "ovsx": "^0.8.2", + "prettier": "^3.0.0", + "tslib": "^2.6.0", + "typescript": "^5.1.6" + }, + "activationEvents": [ + "workspaceContains:Cargo.toml", + "workspaceContains:*/Cargo.toml", + "workspaceContains:rust-project.json", + "workspaceContains:*/rust-project.json" + ], + "main": "./out/main", + "contributes": { + "taskDefinitions": [ + { + "type": "cargo", + "required": [ + "command" + ], + "properties": { + "label": { + "type": "string" + }, + "command": { + "type": "string" + }, + "args": { + "type": "array", + "items": { + "type": "string" + } + }, + "env": { + "type": "object", + "patternProperties": { + ".+": { + "type": "string" + } + } + } + } + } + ], + "commands": [ + { + "command": "rust-analyzer.syntaxTree", + "title": "Show Syntax Tree", + "category": "rust-analyzer (debug command)" + }, + { + "command": "rust-analyzer.viewHir", + "title": "View Hir", + "category": "rust-analyzer (debug command)" + }, + { + "command": "rust-analyzer.viewMir", + "title": "View Mir", + "category": "rust-analyzer (debug command)" + }, + { + "command": "rust-analyzer.interpretFunction", + "title": "Interpret Function", + "category": "rust-analyzer (debug command)" + }, + { + "command": "rust-analyzer.viewFileText", + "title": "View File Text (as seen by the server)", + "category": "rust-analyzer (debug command)" + }, + { + "command": "rust-analyzer.viewItemTree", + "title": "Debug ItemTree", + "category": "rust-analyzer (debug command)" + }, + { + "command": "rust-analyzer.shuffleCrateGraph", + "title": "Shuffle Crate Graph", + "category": "rust-analyzer (debug command)" + }, + { + "command": "rust-analyzer.memoryUsage", + "title": "Memory Usage (Clears Database)", + "category": "rust-analyzer (debug command)" + }, + { + "command": "rust-analyzer.viewCrateGraph", + "title": "View Crate Graph", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.viewFullCrateGraph", + "title": "View Crate Graph (Full)", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.expandMacro", + "title": "Expand macro recursively at caret", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.matchingBrace", + "title": "Find matching brace", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.parentModule", + "title": "Locate parent module", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.joinLines", + "title": "Join lines", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.run", + "title": "Run", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.copyRunCommandLine", + "title": "Copy Run Command Line", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.debug", + "title": "Debug", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.newDebugConfig", + "title": "Generate launch configuration", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.analyzerStatus", + "title": "Status", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.reloadWorkspace", + "title": "Reload workspace", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.rebuildProcMacros", + "title": "Rebuild proc macros and build scripts", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.restartServer", + "title": "Restart server", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.startServer", + "title": "Start server", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.stopServer", + "title": "Stop server", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.onEnter", + "title": "Enhanced enter key", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.ssr", + "title": "Structural Search Replace", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.serverVersion", + "title": "Show RA Version", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.openDocs", + "title": "Open Docs", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.openExternalDocs", + "title": "Open External Docs", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.openCargoToml", + "title": "Open Cargo.toml", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.peekTests", + "title": "Peek Related Tests", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.moveItemUp", + "title": "Move Item Up", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.moveItemDown", + "title": "Move Item Down", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.cancelFlycheck", + "title": "Cancel running flychecks", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.runFlycheck", + "title": "Run flycheck", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.clearFlycheck", + "title": "Clear flycheck diagnostics", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.revealDependency", + "title": "Reveal File", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.viewMemoryLayout", + "title": "View Memory Layout", + "category": "rust-analyzer" + }, + { + "command": "rust-analyzer.toggleCheckOnSave", + "title": "Toggle Check on Save", + "category": "rust-analyzer" + } + ], + "keybindings": [ + { + "command": "rust-analyzer.parentModule", + "key": "ctrl+shift+u", + "when": "editorTextFocus && editorLangId == rust" + }, + { + "command": "rust-analyzer.joinLines", + "key": "ctrl+shift+j", + "when": "editorTextFocus && editorLangId == rust" + } + ], + "configuration": { + "type": "object", + "title": "rust-analyzer", + "properties": { + "rust-analyzer.cargoRunner": { + "type": [ + "null", + "string" + ], + "default": null, + "description": "Custom cargo runner extension ID." + }, + "rust-analyzer.runnables.extraEnv": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array", + "items": { + "type": "object", + "properties": { + "platform": { + "type": [ + "null", + "string", + "array" + ], + "default": null, + "markdownDescription": "Platform(s) filter like \"win32\" or [\"linux\", \"win32\"]. See [process.platform](https://nodejs.org/api/process.html#processplatform) values." + }, + "mask": { + "type": "string", + "description": "Runnable name mask" + }, + "env": { + "type": "object", + "description": "Variables in form of { \"key\": \"value\"}" + } + } + } + }, + { + "type": "object", + "description": "Variables in form of { \"key\": \"value\"}" + } + ], + "default": null, + "markdownDescription": "Environment variables passed to the runnable launched using `Test` or `Debug` lens or `rust-analyzer.run` command." + }, + "rust-analyzer.runnables.problemMatcher": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "$rustc" + ], + "markdownDescription": "Problem matchers to use for `rust-analyzer.run` command, eg `[\"$rustc\", \"$rust-panic\"]`." + }, + "rust-analyzer.statusBar.clickAction": { + "type": "string", + "enum": [ + "stopServer", + "openLogs" + ], + "enumDescriptions": [ + "Stop Server", + "Open Logs" + ], + "default": "openLogs", + "markdownDescription": "Action to run when clicking the extension status bar item." + }, + "rust-analyzer.server.path": { + "type": [ + "null", + "string" + ], + "scope": "machine-overridable", + "default": null, + "markdownDescription": "Path to rust-analyzer executable (points to bundled binary by default)." + }, + "rust-analyzer.server.extraEnv": { + "type": [ + "null", + "object" + ], + "additionalProperties": { + "type": [ + "string", + "number" + ] + }, + "default": null, + "markdownDescription": "Extra environment variables that will be passed to the rust-analyzer executable. Useful for passing e.g. `RA_LOG` for debugging." + }, + "rust-analyzer.trace.server": { + "type": "string", + "scope": "window", + "enum": [ + "off", + "messages", + "verbose" + ], + "enumDescriptions": [ + "No traces", + "Error only", + "Full log" + ], + "default": "off", + "description": "Trace requests to the rust-analyzer (this is usually overly verbose and not recommended for regular users)." + }, + "rust-analyzer.trace.extension": { + "description": "Enable logging of VS Code extensions itself.", + "type": "boolean", + "default": false + }, + "rust-analyzer.debug.engine": { + "type": "string", + "enum": [ + "auto", + "vadimcn.vscode-lldb", + "ms-vscode.cpptools" + ], + "default": "auto", + "description": "Preferred debug engine.", + "markdownEnumDescriptions": [ + "First try to use [CodeLLDB](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb), if it's not installed try to use [MS C++ tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools).", + "Use [CodeLLDB](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb)", + "Use [MS C++ tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools)" + ] + }, + "rust-analyzer.debug.sourceFileMap": { + "type": [ + "object", + "string" + ], + "const": "auto", + "description": "Optional source file mappings passed to the debug engine.", + "default": { + "/rustc/": "${env:USERPROFILE}/.rustup/toolchains//lib/rustlib/src/rust" + } + }, + "rust-analyzer.debug.openDebugPane": { + "markdownDescription": "Whether to open up the `Debug Panel` on debugging start.", + "type": "boolean", + "default": false + }, + "rust-analyzer.debug.engineSettings": { + "type": "object", + "default": {}, + "markdownDescription": "Optional settings passed to the debug engine. Example: `{ \"lldb\": { \"terminal\":\"external\"} }`" + }, + "rust-analyzer.restartServerOnConfigChange": { + "markdownDescription": "Whether to restart the server automatically when certain settings that require a restart are changed.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.typing.continueCommentsOnNewline": { + "markdownDescription": "Whether to prefix newlines after comments with the corresponding comment prefix.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.diagnostics.previewRustcOutput": { + "markdownDescription": "Whether to show the main part of the rendered rustc output of a diagnostic message.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.diagnostics.useRustcErrorCode": { + "markdownDescription": "Whether to show diagnostics using the original rustc error code. If this is false, all rustc diagnostics will have the code 'rustc(Click for full compiler diagnostics)'", + "default": false, + "type": "boolean" + }, + "rust-analyzer.discoverProjectRunner": { + "markdownDescription": "Sets the extension responsible for determining which extension the rust-analyzer extension uses to generate `rust-project.json` files. This should should only be used\n if a build system like Buck or Bazel is also in use.", + "default": null, + "type": [ + "null", + "string" + ] + }, + "rust-analyzer.showUnlinkedFileNotification": { + "markdownDescription": "Whether to show a notification for unlinked files asking the user to add the corresponding Cargo.toml to the linked projects setting.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.showRequestFailedErrorNotification": { + "markdownDescription": "Whether to show error notifications for failing requests.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.showDependenciesExplorer": { + "markdownDescription": "Whether to show the dependencies view.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.testExplorer": { + "markdownDescription": "Whether to show the test explorer.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.assist.emitMustUse": { + "markdownDescription": "Whether to insert #[must_use] when generating `as_` methods\nfor enum variants.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.assist.expressionFillDefault": { + "markdownDescription": "Placeholder expression to use for missing expressions in assists.", + "default": "todo", + "type": "string", + "enum": [ + "todo", + "default" + ], + "enumDescriptions": [ + "Fill missing expressions with the `todo` macro", + "Fill missing expressions with reasonable defaults, `new` or `default` constructors." + ] + }, + "rust-analyzer.cachePriming.enable": { + "markdownDescription": "Warm up caches on project load.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.cachePriming.numThreads": { + "markdownDescription": "How many worker threads to handle priming caches. The default `0` means to pick automatically.", + "default": 0, + "type": "number", + "minimum": 0, + "maximum": 255 + }, + "rust-analyzer.cargo.allTargets": { + "markdownDescription": "Pass `--all-targets` to cargo invocation.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.cargo.autoreload": { + "markdownDescription": "Automatically refresh project info via `cargo metadata` on\n`Cargo.toml` or `.cargo/config.toml` changes.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.cargo.buildScripts.enable": { + "markdownDescription": "Run build scripts (`build.rs`) for more precise code analysis.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.cargo.buildScripts.invocationLocation": { + "markdownDescription": "Specifies the working directory for running build scripts.\n- \"workspace\": run build scripts for a workspace in the workspace's root directory.\n This is incompatible with `#rust-analyzer.cargo.buildScripts.invocationStrategy#` set to `once`.\n- \"root\": run build scripts in the project's root directory.\nThis config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`\nis set.", + "default": "workspace", + "type": "string", + "enum": [ + "workspace", + "root" + ], + "enumDescriptions": [ + "The command will be executed in the corresponding workspace root.", + "The command will be executed in the project root." + ] + }, + "rust-analyzer.cargo.buildScripts.invocationStrategy": { + "markdownDescription": "Specifies the invocation strategy to use when running the build scripts command.\nIf `per_workspace` is set, the command will be executed for each workspace.\nIf `once` is set, the command will be executed once.\nThis config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`\nis set.", + "default": "per_workspace", + "type": "string", + "enum": [ + "per_workspace", + "once" + ], + "enumDescriptions": [ + "The command will be executed for each workspace.", + "The command will be executed once." + ] + }, + "rust-analyzer.cargo.buildScripts.overrideCommand": { + "markdownDescription": "Override the command rust-analyzer uses to run build scripts and\nbuild procedural macros. The command is required to output json\nand should therefore include `--message-format=json` or a similar\noption.\n\nIf there are multiple linked projects/workspaces, this command is invoked for\neach of them, with the working directory being the workspace root\n(i.e., the folder containing the `Cargo.toml`). This can be overwritten\nby changing `#rust-analyzer.cargo.buildScripts.invocationStrategy#` and\n`#rust-analyzer.cargo.buildScripts.invocationLocation#`.\n\nBy default, a cargo invocation will be constructed for the configured\ntargets and features, with the following base command line:\n\n```bash\ncargo check --quiet --workspace --message-format=json --all-targets\n```\n.", + "default": null, + "type": [ + "null", + "array" + ], + "items": { + "type": "string" + } + }, + "rust-analyzer.cargo.buildScripts.rebuildOnSave": { + "markdownDescription": "Rerun proc-macros building/build-scripts running when proc-macro\nor build-script sources change and are saved.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.cargo.buildScripts.useRustcWrapper": { + "markdownDescription": "Use `RUSTC_WRAPPER=rust-analyzer` when running build scripts to\navoid checking unnecessary things.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.cargo.cfgs": { + "markdownDescription": "List of cfg options to enable with the given values.", + "default": { + "debug_assertions": null, + "miri": null + }, + "type": "object" + }, + "rust-analyzer.cargo.extraArgs": { + "markdownDescription": "Extra arguments that are passed to every cargo invocation.", + "default": [], + "type": "array", + "items": { + "type": "string" + } + }, + "rust-analyzer.cargo.extraEnv": { + "markdownDescription": "Extra environment variables that will be set when running cargo, rustc\nor other commands within the workspace. Useful for setting RUSTFLAGS.", + "default": {}, + "type": "object" + }, + "rust-analyzer.cargo.features": { + "markdownDescription": "List of features to activate.\n\nSet this to `\"all\"` to pass `--all-features` to cargo.", + "default": [], + "anyOf": [ + { + "type": "string", + "enum": [ + "all" + ], + "enumDescriptions": [ + "Pass `--all-features` to cargo" + ] + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "rust-analyzer.cargo.noDefaultFeatures": { + "markdownDescription": "Whether to pass `--no-default-features` to cargo.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.cargo.sysroot": { + "markdownDescription": "Relative path to the sysroot, or \"discover\" to try to automatically find it via\n\"rustc --print sysroot\".\n\nUnsetting this disables sysroot loading.\n\nThis option does not take effect until rust-analyzer is restarted.", + "default": "discover", + "type": [ + "null", + "string" + ] + }, + "rust-analyzer.cargo.sysrootQueryMetadata": { + "markdownDescription": "Whether to run cargo metadata on the sysroot library allowing rust-analyzer to analyze\nthird-party dependencies of the standard libraries.\n\nThis will cause `cargo` to create a lockfile in your sysroot directory. rust-analyzer\nwill attempt to clean up afterwards, but nevertheless requires the location to be\nwritable to.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.cargo.sysrootSrc": { + "markdownDescription": "Relative path to the sysroot library sources. If left unset, this will default to\n`{cargo.sysroot}/lib/rustlib/src/rust/library`.\n\nThis option does not take effect until rust-analyzer is restarted.", + "default": null, + "type": [ + "null", + "string" + ] + }, + "rust-analyzer.cargo.target": { + "markdownDescription": "Compilation target override (target triple).", + "default": null, + "type": [ + "null", + "string" + ] + }, + "rust-analyzer.cargo.targetDir": { + "markdownDescription": "Optional path to a rust-analyzer specific target directory.\nThis prevents rust-analyzer's `cargo check` and initial build-script and proc-macro\nbuilding from locking the `Cargo.lock` at the expense of duplicating build artifacts.\n\nSet to `true` to use a subdirectory of the existing target directory or\nset to a path relative to the workspace to use that path.", + "default": null, + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + }, + { + "type": "string" + } + ] + }, + "rust-analyzer.checkOnSave": { + "markdownDescription": "Run the check command for diagnostics on save.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.check.allTargets": { + "markdownDescription": "Check all targets and tests (`--all-targets`). Defaults to\n`#rust-analyzer.cargo.allTargets#`.", + "default": null, + "type": [ + "null", + "boolean" + ] + }, + "rust-analyzer.check.command": { + "markdownDescription": "Cargo command to use for `cargo check`.", + "default": "check", + "type": "string" + }, + "rust-analyzer.check.extraArgs": { + "markdownDescription": "Extra arguments for `cargo check`.", + "default": [], + "type": "array", + "items": { + "type": "string" + } + }, + "rust-analyzer.check.extraEnv": { + "markdownDescription": "Extra environment variables that will be set when running `cargo check`.\nExtends `#rust-analyzer.cargo.extraEnv#`.", + "default": {}, + "type": "object" + }, + "rust-analyzer.check.features": { + "markdownDescription": "List of features to activate. Defaults to\n`#rust-analyzer.cargo.features#`.\n\nSet to `\"all\"` to pass `--all-features` to Cargo.", + "default": null, + "anyOf": [ + { + "type": "string", + "enum": [ + "all" + ], + "enumDescriptions": [ + "Pass `--all-features` to cargo" + ] + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "rust-analyzer.check.ignore": { + "markdownDescription": "List of `cargo check` (or other command specified in `check.command`) diagnostics to ignore.\n\nFor example for `cargo check`: `dead_code`, `unused_imports`, `unused_variables`,...", + "default": [], + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + }, + "rust-analyzer.check.invocationLocation": { + "markdownDescription": "Specifies the working directory for running checks.\n- \"workspace\": run checks for workspaces in the corresponding workspaces' root directories.\n This falls back to \"root\" if `#rust-analyzer.check.invocationStrategy#` is set to `once`.\n- \"root\": run checks in the project's root directory.\nThis config only has an effect when `#rust-analyzer.check.overrideCommand#`\nis set.", + "default": "workspace", + "type": "string", + "enum": [ + "workspace", + "root" + ], + "enumDescriptions": [ + "The command will be executed in the corresponding workspace root.", + "The command will be executed in the project root." + ] + }, + "rust-analyzer.check.invocationStrategy": { + "markdownDescription": "Specifies the invocation strategy to use when running the check command.\nIf `per_workspace` is set, the command will be executed for each workspace.\nIf `once` is set, the command will be executed once.\nThis config only has an effect when `#rust-analyzer.check.overrideCommand#`\nis set.", + "default": "per_workspace", + "type": "string", + "enum": [ + "per_workspace", + "once" + ], + "enumDescriptions": [ + "The command will be executed for each workspace.", + "The command will be executed once." + ] + }, + "rust-analyzer.check.noDefaultFeatures": { + "markdownDescription": "Whether to pass `--no-default-features` to Cargo. Defaults to\n`#rust-analyzer.cargo.noDefaultFeatures#`.", + "default": null, + "type": [ + "null", + "boolean" + ] + }, + "rust-analyzer.check.overrideCommand": { + "markdownDescription": "Override the command rust-analyzer uses instead of `cargo check` for\ndiagnostics on save. The command is required to output json and\nshould therefore include `--message-format=json` or a similar option\n(if your client supports the `colorDiagnosticOutput` experimental\ncapability, you can use `--message-format=json-diagnostic-rendered-ansi`).\n\nIf you're changing this because you're using some tool wrapping\nCargo, you might also want to change\n`#rust-analyzer.cargo.buildScripts.overrideCommand#`.\n\nIf there are multiple linked projects/workspaces, this command is invoked for\neach of them, with the working directory being the workspace root\n(i.e., the folder containing the `Cargo.toml`). This can be overwritten\nby changing `#rust-analyzer.check.invocationStrategy#` and\n`#rust-analyzer.check.invocationLocation#`.\n\nIf `$saved_file` is part of the command, rust-analyzer will pass\nthe absolute path of the saved file to the provided command. This is\nintended to be used with non-Cargo build systems.\nNote that `$saved_file` is experimental and may be removed in the futureg.\n\nAn example command would be:\n\n```bash\ncargo check --workspace --message-format=json --all-targets\n```\n.", + "default": null, + "type": [ + "null", + "array" + ], + "items": { + "type": "string" + } + }, + "rust-analyzer.check.targets": { + "markdownDescription": "Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty.\n\nCan be a single target, e.g. `\"x86_64-unknown-linux-gnu\"` or a list of targets, e.g.\n`[\"aarch64-apple-darwin\", \"x86_64-apple-darwin\"]`.\n\nAliased as `\"checkOnSave.targets\"`.", + "default": null, + "anyOf": [ + { + "type": "null" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "rust-analyzer.check.workspace": { + "markdownDescription": "Whether `--workspace` should be passed to `cargo check`.\nIf false, `-p ` will be passed instead.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.completion.autoimport.enable": { + "markdownDescription": "Toggles the additional completions that automatically add imports when completed.\nNote that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.completion.autoself.enable": { + "markdownDescription": "Toggles the additional completions that automatically show method calls and field accesses\nwith `self` prefixed to them when inside a method.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.completion.callable.snippets": { + "markdownDescription": "Whether to add parenthesis and argument snippets when completing function.", + "default": "fill_arguments", + "type": "string", + "enum": [ + "fill_arguments", + "add_parentheses", + "none" + ], + "enumDescriptions": [ + "Add call parentheses and pre-fill arguments.", + "Add call parentheses.", + "Do no snippet completions for callables." + ] + }, + "rust-analyzer.completion.fullFunctionSignatures.enable": { + "markdownDescription": "Whether to show full function/method signatures in completion docs.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.completion.limit": { + "markdownDescription": "Maximum number of completions to return. If `None`, the limit is infinite.", + "default": null, + "type": [ + "null", + "integer" + ], + "minimum": 0 + }, + "rust-analyzer.completion.postfix.enable": { + "markdownDescription": "Whether to show postfix snippets like `dbg`, `if`, `not`, etc.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.completion.privateEditable.enable": { + "markdownDescription": "Enables completions of private items and fields that are defined in the current workspace even if they are not visible at the current position.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.completion.snippets.custom": { + "markdownDescription": "Custom completion snippets.", + "default": { + "Arc::new": { + "postfix": "arc", + "body": "Arc::new(${receiver})", + "requires": "std::sync::Arc", + "description": "Put the expression into an `Arc`", + "scope": "expr" + }, + "Rc::new": { + "postfix": "rc", + "body": "Rc::new(${receiver})", + "requires": "std::rc::Rc", + "description": "Put the expression into an `Rc`", + "scope": "expr" + }, + "Box::pin": { + "postfix": "pinbox", + "body": "Box::pin(${receiver})", + "requires": "std::boxed::Box", + "description": "Put the expression into a pinned `Box`", + "scope": "expr" + }, + "Ok": { + "postfix": "ok", + "body": "Ok(${receiver})", + "description": "Wrap the expression in a `Result::Ok`", + "scope": "expr" + }, + "Err": { + "postfix": "err", + "body": "Err(${receiver})", + "description": "Wrap the expression in a `Result::Err`", + "scope": "expr" + }, + "Some": { + "postfix": "some", + "body": "Some(${receiver})", + "description": "Wrap the expression in an `Option::Some`", + "scope": "expr" + } + }, + "type": "object" + }, + "rust-analyzer.completion.termSearch.enable": { + "markdownDescription": "Whether to enable term search based snippets like `Some(foo.bar().baz())`.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.diagnostics.disabled": { + "markdownDescription": "List of rust-analyzer diagnostics to disable.", + "default": [], + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + }, + "rust-analyzer.diagnostics.enable": { + "markdownDescription": "Whether to show native rust-analyzer diagnostics.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.diagnostics.experimental.enable": { + "markdownDescription": "Whether to show experimental rust-analyzer diagnostics that might\nhave more false positives than usual.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.diagnostics.remapPrefix": { + "markdownDescription": "Map of prefixes to be substituted when parsing diagnostic file paths.\nThis should be the reverse mapping of what is passed to `rustc` as `--remap-path-prefix`.", + "default": {}, + "type": "object" + }, + "rust-analyzer.diagnostics.styleLints.enable": { + "markdownDescription": "Whether to run additional style lints.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.diagnostics.warningsAsHint": { + "markdownDescription": "List of warnings that should be displayed with hint severity.\n\nThe warnings will be indicated by faded text or three dots in code\nand will not show up in the `Problems Panel`.", + "default": [], + "type": "array", + "items": { + "type": "string" + } + }, + "rust-analyzer.diagnostics.warningsAsInfo": { + "markdownDescription": "List of warnings that should be displayed with info severity.\n\nThe warnings will be indicated by a blue squiggly underline in code\nand a blue icon in the `Problems Panel`.", + "default": [], + "type": "array", + "items": { + "type": "string" + } + }, + "rust-analyzer.files.excludeDirs": { + "markdownDescription": "These directories will be ignored by rust-analyzer. They are\nrelative to the workspace root, and globs are not supported. You may\nalso need to add the folders to Code's `files.watcherExclude`.", + "default": [], + "type": "array", + "items": { + "type": "string" + } + }, + "rust-analyzer.files.watcher": { + "markdownDescription": "Controls file watching implementation.", + "default": "client", + "type": "string", + "enum": [ + "client", + "server" + ], + "enumDescriptions": [ + "Use the client (editor) to watch files for changes", + "Use server-side file watching" + ] + }, + "rust-analyzer.highlightRelated.breakPoints.enable": { + "markdownDescription": "Enables highlighting of related references while the cursor is on `break`, `loop`, `while`, or `for` keywords.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.highlightRelated.closureCaptures.enable": { + "markdownDescription": "Enables highlighting of all captures of a closure while the cursor is on the `|` or move keyword of a closure.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.highlightRelated.exitPoints.enable": { + "markdownDescription": "Enables highlighting of all exit points while the cursor is on any `return`, `?`, `fn`, or return type arrow (`->`).", + "default": true, + "type": "boolean" + }, + "rust-analyzer.highlightRelated.references.enable": { + "markdownDescription": "Enables highlighting of related references while the cursor is on any identifier.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.highlightRelated.yieldPoints.enable": { + "markdownDescription": "Enables highlighting of all break points for a loop or block context while the cursor is on any `async` or `await` keywords.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.hover.actions.debug.enable": { + "markdownDescription": "Whether to show `Debug` action. Only applies when\n`#rust-analyzer.hover.actions.enable#` is set.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.hover.actions.enable": { + "markdownDescription": "Whether to show HoverActions in Rust files.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.hover.actions.gotoTypeDef.enable": { + "markdownDescription": "Whether to show `Go to Type Definition` action. Only applies when\n`#rust-analyzer.hover.actions.enable#` is set.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.hover.actions.implementations.enable": { + "markdownDescription": "Whether to show `Implementations` action. Only applies when\n`#rust-analyzer.hover.actions.enable#` is set.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.hover.actions.references.enable": { + "markdownDescription": "Whether to show `References` action. Only applies when\n`#rust-analyzer.hover.actions.enable#` is set.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.hover.actions.run.enable": { + "markdownDescription": "Whether to show `Run` action. Only applies when\n`#rust-analyzer.hover.actions.enable#` is set.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.hover.documentation.enable": { + "markdownDescription": "Whether to show documentation on hover.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.hover.documentation.keywords.enable": { + "markdownDescription": "Whether to show keyword hover popups. Only applies when\n`#rust-analyzer.hover.documentation.enable#` is set.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.hover.links.enable": { + "markdownDescription": "Use markdown syntax for links on hover.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.hover.memoryLayout.alignment": { + "markdownDescription": "How to render the align information in a memory layout hover.", + "default": "hexadecimal", + "anyOf": [ + { + "type": "null" + }, + { + "type": "string", + "enum": [ + "both", + "decimal", + "hexadecimal" + ], + "enumDescriptions": [ + "Render as 12 (0xC)", + "Render as 12", + "Render as 0xC" + ] + } + ] + }, + "rust-analyzer.hover.memoryLayout.enable": { + "markdownDescription": "Whether to show memory layout data on hover.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.hover.memoryLayout.niches": { + "markdownDescription": "How to render the niche information in a memory layout hover.", + "default": false, + "type": [ + "null", + "boolean" + ] + }, + "rust-analyzer.hover.memoryLayout.offset": { + "markdownDescription": "How to render the offset information in a memory layout hover.", + "default": "hexadecimal", + "anyOf": [ + { + "type": "null" + }, + { + "type": "string", + "enum": [ + "both", + "decimal", + "hexadecimal" + ], + "enumDescriptions": [ + "Render as 12 (0xC)", + "Render as 12", + "Render as 0xC" + ] + } + ] + }, + "rust-analyzer.hover.memoryLayout.size": { + "markdownDescription": "How to render the size information in a memory layout hover.", + "default": "both", + "anyOf": [ + { + "type": "null" + }, + { + "type": "string", + "enum": [ + "both", + "decimal", + "hexadecimal" + ], + "enumDescriptions": [ + "Render as 12 (0xC)", + "Render as 12", + "Render as 0xC" + ] + } + ] + }, + "rust-analyzer.hover.show.structFields": { + "markdownDescription": "How many fields of a struct to display when hovering a struct.", + "default": null, + "type": [ + "null", + "integer" + ], + "minimum": 0 + }, + "rust-analyzer.hover.show.traitAssocItems": { + "markdownDescription": "How many associated items of a trait to display when hovering a trait.", + "default": null, + "type": [ + "null", + "integer" + ], + "minimum": 0 + }, + "rust-analyzer.imports.granularity.enforce": { + "markdownDescription": "Whether to enforce the import granularity setting for all files. If set to false rust-analyzer will try to keep import styles consistent per file.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.imports.granularity.group": { + "markdownDescription": "How imports should be grouped into use statements.", + "default": "crate", + "type": "string", + "enum": [ + "preserve", + "crate", + "module", + "item", + "one" + ], + "enumDescriptions": [ + "Do not change the granularity of any imports and preserve the original structure written by the developer.", + "Merge imports from the same crate into a single use statement. Conversely, imports from different crates are split into separate statements.", + "Merge imports from the same module into a single use statement. Conversely, imports from different modules are split into separate statements.", + "Flatten imports so that each has its own use statement.", + "Merge all imports into a single use statement as long as they have the same visibility and attributes." + ] + }, + "rust-analyzer.imports.group.enable": { + "markdownDescription": "Group inserted imports by the [following order](https://rust-analyzer.github.io/manual.html#auto-import). Groups are separated by newlines.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.imports.merge.glob": { + "markdownDescription": "Whether to allow import insertion to merge new imports into single path glob imports like `use std::fmt::*;`.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.imports.preferNoStd": { + "markdownDescription": "Prefer to unconditionally use imports of the core and alloc crate, over the std crate.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.imports.preferPrelude": { + "markdownDescription": "Whether to prefer import paths containing a `prelude` module.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.imports.prefix": { + "markdownDescription": "The path structure for newly inserted paths to use.", + "default": "plain", + "type": "string", + "enum": [ + "plain", + "self", + "crate" + ], + "enumDescriptions": [ + "Insert import paths relative to the current module, using up to one `super` prefix if the parent module contains the requested item.", + "Insert import paths relative to the current module, using up to one `super` prefix if the parent module contains the requested item. Prefixes `self` in front of the path if it starts with a module.", + "Force import paths to be absolute by always starting them with `crate` or the extern crate name they come from." + ] + }, + "rust-analyzer.inlayHints.bindingModeHints.enable": { + "markdownDescription": "Whether to show inlay type hints for binding modes.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.inlayHints.chainingHints.enable": { + "markdownDescription": "Whether to show inlay type hints for method chains.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.inlayHints.closingBraceHints.enable": { + "markdownDescription": "Whether to show inlay hints after a closing `}` to indicate what item it belongs to.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.inlayHints.closingBraceHints.minLines": { + "markdownDescription": "Minimum number of lines required before the `}` until the hint is shown (set to 0 or 1\nto always show them).", + "default": 25, + "type": "integer", + "minimum": 0 + }, + "rust-analyzer.inlayHints.closureCaptureHints.enable": { + "markdownDescription": "Whether to show inlay hints for closure captures.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.inlayHints.closureReturnTypeHints.enable": { + "markdownDescription": "Whether to show inlay type hints for return types of closures.", + "default": "never", + "type": "string", + "enum": [ + "always", + "never", + "with_block" + ], + "enumDescriptions": [ + "Always show type hints for return types of closures.", + "Never show type hints for return types of closures.", + "Only show type hints for return types of closures with blocks." + ] + }, + "rust-analyzer.inlayHints.closureStyle": { + "markdownDescription": "Closure notation in type and chaining inlay hints.", + "default": "impl_fn", + "type": "string", + "enum": [ + "impl_fn", + "rust_analyzer", + "with_id", + "hide" + ], + "enumDescriptions": [ + "`impl_fn`: `impl FnMut(i32, u64) -> i8`", + "`rust_analyzer`: `|i32, u64| -> i8`", + "`with_id`: `{closure#14352}`, where that id is the unique number of the closure in r-a internals", + "`hide`: Shows `...` for every closure type" + ] + }, + "rust-analyzer.inlayHints.discriminantHints.enable": { + "markdownDescription": "Whether to show enum variant discriminant hints.", + "default": "never", + "type": "string", + "enum": [ + "always", + "never", + "fieldless" + ], + "enumDescriptions": [ + "Always show all discriminant hints.", + "Never show discriminant hints.", + "Only show discriminant hints on fieldless enum variants." + ] + }, + "rust-analyzer.inlayHints.expressionAdjustmentHints.enable": { + "markdownDescription": "Whether to show inlay hints for type adjustments.", + "default": "never", + "type": "string", + "enum": [ + "always", + "never", + "reborrow" + ], + "enumDescriptions": [ + "Always show all adjustment hints.", + "Never show adjustment hints.", + "Only show auto borrow and dereference adjustment hints." + ] + }, + "rust-analyzer.inlayHints.expressionAdjustmentHints.hideOutsideUnsafe": { + "markdownDescription": "Whether to hide inlay hints for type adjustments outside of `unsafe` blocks.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.inlayHints.expressionAdjustmentHints.mode": { + "markdownDescription": "Whether to show inlay hints as postfix ops (`.*` instead of `*`, etc).", + "default": "prefix", + "type": "string", + "enum": [ + "prefix", + "postfix", + "prefer_prefix", + "prefer_postfix" + ], + "enumDescriptions": [ + "Always show adjustment hints as prefix (`*expr`).", + "Always show adjustment hints as postfix (`expr.*`).", + "Show prefix or postfix depending on which uses less parenthesis, preferring prefix.", + "Show prefix or postfix depending on which uses less parenthesis, preferring postfix." + ] + }, + "rust-analyzer.inlayHints.implicitDrops.enable": { + "markdownDescription": "Whether to show implicit drop hints.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.inlayHints.lifetimeElisionHints.enable": { + "markdownDescription": "Whether to show inlay type hints for elided lifetimes in function signatures.", + "default": "never", + "type": "string", + "enum": [ + "always", + "never", + "skip_trivial" + ], + "enumDescriptions": [ + "Always show lifetime elision hints.", + "Never show lifetime elision hints.", + "Only show lifetime elision hints if a return type is involved." + ] + }, + "rust-analyzer.inlayHints.lifetimeElisionHints.useParameterNames": { + "markdownDescription": "Whether to prefer using parameter names as the name for elided lifetime hints if possible.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.inlayHints.maxLength": { + "markdownDescription": "Maximum length for inlay hints. Set to null to have an unlimited length.", + "default": 25, + "type": [ + "null", + "integer" + ], + "minimum": 0 + }, + "rust-analyzer.inlayHints.parameterHints.enable": { + "markdownDescription": "Whether to show function parameter name inlay hints at the call\nsite.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.inlayHints.rangeExclusiveHints.enable": { + "markdownDescription": "Whether to show exclusive range inlay hints.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.inlayHints.reborrowHints.enable": { + "markdownDescription": "Whether to show inlay hints for compiler inserted reborrows.\nThis setting is deprecated in favor of #rust-analyzer.inlayHints.expressionAdjustmentHints.enable#.", + "default": "never", + "type": "string", + "enum": [ + "always", + "never", + "mutable" + ], + "enumDescriptions": [ + "Always show reborrow hints.", + "Never show reborrow hints.", + "Only show mutable reborrow hints." + ] + }, + "rust-analyzer.inlayHints.renderColons": { + "markdownDescription": "Whether to render leading colons for type hints, and trailing colons for parameter hints.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.inlayHints.typeHints.enable": { + "markdownDescription": "Whether to show inlay type hints for variables.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.inlayHints.typeHints.hideClosureInitialization": { + "markdownDescription": "Whether to hide inlay type hints for `let` statements that initialize to a closure.\nOnly applies to closures with blocks, same as `#rust-analyzer.inlayHints.closureReturnTypeHints.enable#`.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.inlayHints.typeHints.hideNamedConstructor": { + "markdownDescription": "Whether to hide inlay type hints for constructors.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.interpret.tests": { + "markdownDescription": "Enables the experimental support for interpreting tests.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.joinLines.joinAssignments": { + "markdownDescription": "Join lines merges consecutive declaration and initialization of an assignment.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.joinLines.joinElseIf": { + "markdownDescription": "Join lines inserts else between consecutive ifs.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.joinLines.removeTrailingComma": { + "markdownDescription": "Join lines removes trailing commas.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.joinLines.unwrapTrivialBlock": { + "markdownDescription": "Join lines unwraps trivial blocks.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.lens.debug.enable": { + "markdownDescription": "Whether to show `Debug` lens. Only applies when\n`#rust-analyzer.lens.enable#` is set.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.lens.enable": { + "markdownDescription": "Whether to show CodeLens in Rust files.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.lens.forceCustomCommands": { + "markdownDescription": "Internal config: use custom client-side commands even when the\nclient doesn't set the corresponding capability.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.lens.implementations.enable": { + "markdownDescription": "Whether to show `Implementations` lens. Only applies when\n`#rust-analyzer.lens.enable#` is set.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.lens.location": { + "markdownDescription": "Where to render annotations.", + "default": "above_name", + "type": "string", + "enum": [ + "above_name", + "above_whole_item" + ], + "enumDescriptions": [ + "Render annotations above the name of the item.", + "Render annotations above the whole item, including documentation comments and attributes." + ] + }, + "rust-analyzer.lens.references.adt.enable": { + "markdownDescription": "Whether to show `References` lens for Struct, Enum, and Union.\nOnly applies when `#rust-analyzer.lens.enable#` is set.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.lens.references.enumVariant.enable": { + "markdownDescription": "Whether to show `References` lens for Enum Variants.\nOnly applies when `#rust-analyzer.lens.enable#` is set.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.lens.references.method.enable": { + "markdownDescription": "Whether to show `Method References` lens. Only applies when\n`#rust-analyzer.lens.enable#` is set.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.lens.references.trait.enable": { + "markdownDescription": "Whether to show `References` lens for Trait.\nOnly applies when `#rust-analyzer.lens.enable#` is set.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.lens.run.enable": { + "markdownDescription": "Whether to show `Run` lens. Only applies when\n`#rust-analyzer.lens.enable#` is set.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.linkedProjects": { + "markdownDescription": "Disable project auto-discovery in favor of explicitly specified set\nof projects.\n\nElements must be paths pointing to `Cargo.toml`,\n`rust-project.json`, `.rs` files (which will be treated as standalone files) or JSON\nobjects in `rust-project.json` format.", + "default": [], + "type": "array", + "items": { + "type": [ + "string", + "object" + ] + } + }, + "rust-analyzer.lru.capacity": { + "markdownDescription": "Number of syntax trees rust-analyzer keeps in memory. Defaults to 128.", + "default": null, + "type": [ + "null", + "integer" + ], + "minimum": 0 + }, + "rust-analyzer.lru.query.capacities": { + "markdownDescription": "Sets the LRU capacity of the specified queries.", + "default": {}, + "type": "object" + }, + "rust-analyzer.notifications.cargoTomlNotFound": { + "markdownDescription": "Whether to show `can't find Cargo.toml` error message.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.notifications.unindexedProject": { + "markdownDescription": "Whether to send an UnindexedProject notification to the client.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.numThreads": { + "markdownDescription": "How many worker threads in the main loop. The default `null` means to pick automatically.", + "default": null, + "type": [ + "null", + "integer" + ], + "minimum": 0 + }, + "rust-analyzer.procMacro.attributes.enable": { + "markdownDescription": "Expand attribute macros. Requires `#rust-analyzer.procMacro.enable#` to be set.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.procMacro.enable": { + "markdownDescription": "Enable support for procedural macros, implies `#rust-analyzer.cargo.buildScripts.enable#`.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.procMacro.ignored": { + "markdownDescription": "These proc-macros will be ignored when trying to expand them.\n\nThis config takes a map of crate names with the exported proc-macro names to ignore as values.", + "default": {}, + "type": "object" + }, + "rust-analyzer.procMacro.server": { + "markdownDescription": "Internal config, path to proc-macro server executable.", + "default": null, + "type": [ + "null", + "string" + ] + }, + "rust-analyzer.references.excludeImports": { + "markdownDescription": "Exclude imports from find-all-references.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.references.excludeTests": { + "markdownDescription": "Exclude tests from find-all-references.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.runnables.command": { + "markdownDescription": "Command to be executed instead of 'cargo' for runnables.", + "default": null, + "type": [ + "null", + "string" + ] + }, + "rust-analyzer.runnables.extraArgs": { + "markdownDescription": "Additional arguments to be passed to cargo for runnables such as\ntests or binaries. For example, it may be `--release`.", + "default": [], + "type": "array", + "items": { + "type": "string" + } + }, + "rust-analyzer.runnables.extraTestBinaryArgs": { + "markdownDescription": "Additional arguments to be passed through Cargo to launched tests, benchmarks, or\ndoc-tests.\n\nUnless the launched target uses a\n[custom test harness](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#the-harness-field),\nthey will end up being interpreted as options to\n[`rustc`’s built-in test harness (“libtest”)](https://doc.rust-lang.org/rustc/tests/index.html#cli-arguments).", + "default": [ + "--show-output" + ], + "type": "array", + "items": { + "type": "string" + } + }, + "rust-analyzer.rustc.source": { + "markdownDescription": "Path to the Cargo.toml of the rust compiler workspace, for usage in rustc_private\nprojects, or \"discover\" to try to automatically find it if the `rustc-dev` component\nis installed.\n\nAny project which uses rust-analyzer with the rustcPrivate\ncrates must set `[package.metadata.rust-analyzer] rustc_private=true` to use it.\n\nThis option does not take effect until rust-analyzer is restarted.", + "default": null, + "type": [ + "null", + "string" + ] + }, + "rust-analyzer.rustfmt.extraArgs": { + "markdownDescription": "Additional arguments to `rustfmt`.", + "default": [], + "type": "array", + "items": { + "type": "string" + } + }, + "rust-analyzer.rustfmt.overrideCommand": { + "markdownDescription": "Advanced option, fully override the command rust-analyzer uses for\nformatting. This should be the equivalent of `rustfmt` here, and\nnot that of `cargo fmt`. The file contents will be passed on the\nstandard input and the formatted result will be read from the\nstandard output.", + "default": null, + "type": [ + "null", + "array" + ], + "items": { + "type": "string" + } + }, + "rust-analyzer.rustfmt.rangeFormatting.enable": { + "markdownDescription": "Enables the use of rustfmt's unstable range formatting command for the\n`textDocument/rangeFormatting` request. The rustfmt option is unstable and only\navailable on a nightly build.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.semanticHighlighting.doc.comment.inject.enable": { + "markdownDescription": "Inject additional highlighting into doc comments.\n\nWhen enabled, rust-analyzer will highlight rust source in doc comments as well as intra\ndoc links.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.semanticHighlighting.nonStandardTokens": { + "markdownDescription": "Whether the server is allowed to emit non-standard tokens and modifiers.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.semanticHighlighting.operator.enable": { + "markdownDescription": "Use semantic tokens for operators.\n\nWhen disabled, rust-analyzer will emit semantic tokens only for operator tokens when\nthey are tagged with modifiers.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.semanticHighlighting.operator.specialization.enable": { + "markdownDescription": "Use specialized semantic tokens for operators.\n\nWhen enabled, rust-analyzer will emit special token types for operator tokens instead\nof the generic `operator` token type.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.semanticHighlighting.punctuation.enable": { + "markdownDescription": "Use semantic tokens for punctuation.\n\nWhen disabled, rust-analyzer will emit semantic tokens only for punctuation tokens when\nthey are tagged with modifiers or have a special role.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.semanticHighlighting.punctuation.separate.macro.bang": { + "markdownDescription": "When enabled, rust-analyzer will emit a punctuation semantic token for the `!` of macro\ncalls.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.semanticHighlighting.punctuation.specialization.enable": { + "markdownDescription": "Use specialized semantic tokens for punctuation.\n\nWhen enabled, rust-analyzer will emit special token types for punctuation tokens instead\nof the generic `punctuation` token type.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.semanticHighlighting.strings.enable": { + "markdownDescription": "Use semantic tokens for strings.\n\nIn some editors (e.g. vscode) semantic tokens override other highlighting grammars.\nBy disabling semantic tokens for strings, other grammars can be used to highlight\ntheir contents.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.signatureInfo.detail": { + "markdownDescription": "Show full signature of the callable. Only shows parameters if disabled.", + "default": "full", + "type": "string", + "enum": [ + "full", + "parameters" + ], + "enumDescriptions": [ + "Show the entire signature.", + "Show only the parameters." + ] + }, + "rust-analyzer.signatureInfo.documentation.enable": { + "markdownDescription": "Show documentation.", + "default": true, + "type": "boolean" + }, + "rust-analyzer.typing.autoClosingAngleBrackets.enable": { + "markdownDescription": "Whether to insert closing angle brackets when typing an opening angle bracket of a generic argument list.", + "default": false, + "type": "boolean" + }, + "rust-analyzer.workspace.symbol.search.kind": { + "markdownDescription": "Workspace symbol search kind.", + "default": "only_types", + "type": "string", + "enum": [ + "only_types", + "all_symbols" + ], + "enumDescriptions": [ + "Search for types only.", + "Search for all symbols kinds." + ] + }, + "rust-analyzer.workspace.symbol.search.limit": { + "markdownDescription": "Limits the number of items returned from a workspace symbol search (Defaults to 128).\nSome clients like vs-code issue new searches on result filtering and don't require all results to be returned in the initial search.\nOther clients requires all results upfront and might require a higher limit.", + "default": 128, + "type": "integer", + "minimum": 0 + }, + "rust-analyzer.workspace.symbol.search.scope": { + "markdownDescription": "Workspace symbol search scope.", + "default": "workspace", + "type": "string", + "enum": [ + "workspace", + "workspace_and_dependencies" + ], + "enumDescriptions": [ + "Search in current workspace only.", + "Search in current workspace and dependencies." + ] + } + } + }, + "configurationDefaults": { + "explorer.fileNesting.patterns": { + "Cargo.toml": "Cargo.lock" + } + }, + "problemPatterns": [ + { + "name": "rustc", + "patterns": [ + { + "regexp": "^(warning|warn|error)(?:\\[(.*?)\\])?: (.*)$", + "severity": 1, + "code": 2, + "message": 3 + }, + { + "regexp": "^[\\s->=]*(.*?):([1-9]\\d*):([1-9]\\d*)\\s*$", + "file": 1, + "line": 2, + "column": 3 + } + ] + }, + { + "name": "rustc-json", + "patterns": [ + { + "regexp": "^.*\"message\":{\"message\":\"([^\"]*).*?\"file_name\":\"([^\"]+).*?\"line_start\":(\\d+).*?\"line_end\":(\\d+).*?\"column_start\":(\\d+).*?\"column_end\":(\\d+).*}$", + "message": 1, + "file": 2, + "line": 3, + "endLine": 4, + "column": 5, + "endColumn": 6 + } + ] + }, + { + "name": "rust-panic", + "patterns": [ + { + "regexp": "^thread '.*' panicked at (.*):(\\d*):(\\d*):$", + "file": 1, + "line": 2, + "column": 3 + }, + { + "regexp": "(.*)", + "message": 1 + } + ] + } + ], + "languages": [ + { + "id": "ra_syntax_tree", + "extensions": [ + ".rast" + ] + }, + { + "id": "rust", + "extensions": [ + ".rs" + ], + "aliases": [ + "Rust", + "rs" + ], + "configuration": "language-configuration.json" + } + ], + "grammars": [ + { + "language": "ra_syntax_tree", + "scopeName": "source.ra_syntax_tree", + "path": "ra_syntax_tree.tmGrammar.json" + } + ], + "problemMatchers": [ + { + "name": "rustc", + "owner": "rustc", + "source": "rustc", + "fileLocation": [ + "autoDetect", + "${workspaceRoot}" + ], + "pattern": "$rustc" + }, + { + "name": "rustc-json", + "owner": "rustc", + "source": "rustc", + "fileLocation": [ + "autoDetect", + "${workspaceRoot}" + ], + "pattern": "$rustc-json" + }, + { + "name": "rust-panic", + "owner": "rust-panic", + "source": "panic", + "fileLocation": [ + "autoDetect", + "${workspaceRoot}" + ], + "pattern": "$rust-panic" + }, + { + "name": "rustc-watch", + "owner": "rustc", + "source": "rustc", + "fileLocation": [ + "autoDetect", + "${workspaceRoot}" + ], + "background": { + "beginsPattern": "^\\[Running\\b", + "endsPattern": "^\\[Finished running\\b" + }, + "pattern": "$rustc" + } + ], + "colors": [ + { + "id": "rust_analyzer.syntaxTreeBorder", + "description": "Color of the border displayed in the Rust source code for the selected syntax node (see \"Show Syntax Tree\" command)", + "defaults": { + "dark": "#ffffff", + "light": "#b700ff", + "highContrast": "#b700ff" + } + } + ], + "semanticTokenTypes": [ + { + "id": "angle", + "description": "Style for < or >", + "superType": "punctuation" + }, + { + "id": "arithmetic", + "description": "Style for arithmetic operators", + "superType": "operator" + }, + { + "id": "attribute", + "description": "Style for attributes" + }, + { + "id": "attributeBracket", + "description": "Style for attribute invocation brackets, that is the `#[` and `]` tokens", + "superType": "punctuation" + }, + { + "id": "bitwise", + "description": "Style for bitwise operators", + "superType": "operator" + }, + { + "id": "boolean", + "description": "Style for boolean literals", + "superType": "keyword" + }, + { + "id": "brace", + "description": "Style for { or }", + "superType": "punctuation" + }, + { + "id": "bracket", + "description": "Style for [ or ]", + "superType": "punctuation" + }, + { + "id": "builtinAttribute", + "description": "Style for builtin attributes", + "superType": "attribute" + }, + { + "id": "builtinType", + "description": "Style for builtin types", + "superType": "type" + }, + { + "id": "character", + "description": "Style for character literals", + "superType": "string" + }, + { + "id": "colon", + "description": "Style for :", + "superType": "punctuation" + }, + { + "id": "comma", + "description": "Style for ,", + "superType": "punctuation" + }, + { + "id": "comparison", + "description": "Style for comparison operators", + "superType": "operator" + }, + { + "id": "constParameter", + "description": "Style for const generics" + }, + { + "id": "const", + "description": "Style for consts", + "superType": "variable" + }, + { + "id": "derive", + "description": "Style for derives", + "superType": "attribute" + }, + { + "id": "deriveHelper", + "description": "Style for derive helpers", + "superType": "attribute" + }, + { + "id": "dot", + "description": "Style for .", + "superType": "punctuation" + }, + { + "id": "escapeSequence", + "description": "Style for char or byte escapes in strings" + }, + { + "id": "formatSpecifier", + "description": "Style for {} placeholders in format strings" + }, + { + "id": "invalidEscapeSequence", + "description": "Style for invalid char or byte escapes in strings" + }, + { + "id": "label", + "description": "Style for labels" + }, + { + "id": "lifetime", + "description": "Style for lifetimes" + }, + { + "id": "logical", + "description": "Style for logic operators", + "superType": "operator" + }, + { + "id": "macroBang", + "description": "Style for the ! token of macro calls", + "superType": "punctuation" + }, + { + "id": "parenthesis", + "description": "Style for ( or )", + "superType": "punctuation" + }, + { + "id": "procMacro", + "description": "Style for proc macro code", + "superType": "macro" + }, + { + "id": "punctuation", + "description": "Style for generic punctuation" + }, + { + "id": "operator", + "description": "Style for operators", + "superType": "punctuation" + }, + { + "id": "selfKeyword", + "description": "Style for the self keyword", + "superType": "keyword" + }, + { + "id": "selfTypeKeyword", + "description": "Style for the self type keyword", + "superType": "keyword" + }, + { + "id": "semicolon", + "description": "Style for ;", + "superType": "punctuation" + }, + { + "id": "static", + "description": "Style for statics", + "superType": "variable" + }, + { + "id": "toolModule", + "description": "Style for tool module attributes", + "superType": "decorator" + }, + { + "id": "typeAlias", + "description": "Style for type aliases", + "superType": "type" + }, + { + "id": "union", + "description": "Style for C-style untagged unions", + "superType": "type" + }, + { + "id": "unresolvedReference", + "description": "Style for names which can not be resolved due to compilation errors" + } + ], + "semanticTokenModifiers": [ + { + "id": "async", + "description": "Style for async functions and the `async` and `await` keywords" + }, + { + "id": "attribute", + "description": "Style for elements within attributes" + }, + { + "id": "callable", + "description": "Style for locals whose types implements one of the `Fn*` traits" + }, + { + "id": "constant", + "description": "Style for compile-time constants" + }, + { + "id": "consuming", + "description": "Style for locals that are being consumed when use in a function call" + }, + { + "id": "controlFlow", + "description": "Style for control-flow related tokens, this includes the `?` operator" + }, + { + "id": "crateRoot", + "description": "Style for names resolving to a crate root" + }, + { + "id": "injected", + "description": "Style for doc-string injected highlighting like rust source blocks in documentation" + }, + { + "id": "intraDocLink", + "description": "Style for intra doc links in doc-strings" + }, + { + "id": "library", + "description": "Style for items that are defined outside of the current crate" + }, + { + "id": "macro", + "description": "Style for tokens inside of macro calls" + }, + { + "id": "mutable", + "description": "Style for mutable locals and statics as well as functions taking `&mut self`" + }, + { + "id": "procMacro", + "description": "Style for tokens inside of proc-macro calls" + }, + { + "id": "public", + "description": "Style for items that are from the current crate and are `pub`" + }, + { + "id": "reference", + "description": "Style for locals behind a reference and functions taking `self` by reference" + }, + { + "id": "trait", + "description": "Style for associated trait items" + }, + { + "id": "unsafe", + "description": "Style for unsafe operations, like unsafe function calls, as well as the `unsafe` token" + } + ], + "semanticTokenScopes": [ + { + "language": "rust", + "scopes": { + "attribute": [ + "meta.attribute.rust" + ], + "boolean": [ + "constant.language.boolean.rust" + ], + "builtinType": [ + "support.type.primitive.rust" + ], + "constParameter": [ + "constant.other.caps.rust" + ], + "enum": [ + "entity.name.type.enum.rust" + ], + "formatSpecifier": [ + "punctuation.section.embedded.rust" + ], + "function": [ + "entity.name.function.rust" + ], + "interface": [ + "entity.name.type.trait.rust" + ], + "keyword": [ + "keyword.other.rust" + ], + "keyword.controlFlow": [ + "keyword.control.rust" + ], + "lifetime": [ + "storage.modifier.lifetime.rust" + ], + "macroBang": [ + "entity.name.function.macro.rust" + ], + "method": [ + "entity.name.function.rust" + ], + "struct": [ + "entity.name.type.struct.rust" + ], + "typeAlias": [ + "entity.name.type.declaration.rust" + ], + "union": [ + "entity.name.type.union.rust" + ], + "variable": [ + "variable.other.rust" + ], + "variable.constant": [ + "variable.other.constant.rust" + ], + "*.mutable": [ + "markup.underline" + ] + } + } + ], + "menus": { + "commandPalette": [ + { + "command": "rust-analyzer.syntaxTree", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.viewHir", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.viewFileText", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.expandMacro", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.matchingBrace", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.parentModule", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.joinLines", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.run", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.debug", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.newDebugConfig", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.analyzerStatus", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.memoryUsage", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.reloadWorkspace", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.restartServer", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.onEnter", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.ssr", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.serverVersion", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.openDocs", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.openCargoToml", + "when": "inRustProject" + }, + { + "command": "rust-analyzer.viewMemoryLayout", + "when": "inRustProject" + } + ], + "editor/context": [ + { + "command": "rust-analyzer.peekTests", + "when": "inRustProject && editorTextFocus && editorLangId == rust", + "group": "navigation@1000" + }, + { + "command": "rust-analyzer.openDocs", + "when": "inRustProject && editorTextFocus && editorLangId == rust", + "group": "navigation@1001" + } + ] + }, + "views": { + "explorer": [ + { + "id": "rustDependencies", + "name": "Rust Dependencies", + "when": "inRustProject && config.rust-analyzer.showDependenciesExplorer" + } + ] + }, + "jsonValidation": [ + { + "fileMatch": "rust-project.json", + "url": "https://json.schemastore.org/rust-project.json" + } + ] + }, + "__metadata": { + "id": "06574cb4-e5dc-4631-8174-a543a4533621", + "publisherId": "cb14a7a7-a188-40bd-a953-e0a20757c5dd", + "publisherDisplayName": "rust-lang", + "targetPlatform": "linux-x64", + "updated": false, + "isPreReleaseVersion": false, + "hasPreReleaseVersion": false, + "installedTimestamp": 1714049437810, + "pinned": false, + "source": "gallery" + } +} \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/ra_syntax_tree.tmGrammar.json b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/ra_syntax_tree.tmGrammar.json new file mode 100644 index 00000000..279e7baf --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/ra_syntax_tree.tmGrammar.json @@ -0,0 +1,29 @@ +{ + "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", + + "scopeName": "source.ra_syntax_tree", + "patterns": [ + { "include": "#node_type" }, + { "include": "#node_range_index" }, + { "include": "#token_text" } + ], + "repository": { + "node_type": { + "match": "^\\s*([A-Z_][A-Z_0-9]*?)@", + "captures": { + "1": { + "name": "entity.name.class" + } + } + }, + "node_range_index": { + "match": "\\d+", + "name": "constant.numeric" + }, + "token_text": { + "match": "\".+\"", + "name": "string" + } + }, + "fileTypes": ["rast"] +} diff --git a/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/server/rust-analyzer b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/server/rust-analyzer new file mode 100755 index 00000000..0eada1d2 Binary files /dev/null and b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/server/rust-analyzer differ

?v+j{Ku*$YwznJM/#vGQ4V,9:gwjO3l[2b&5Ed*BI)geBRs283::_GBd?048vpU{#">3`=Uk?[1St?34L`@]9;^fyb2wh#nWB41*I6.8tt@!f(oizO"YQ~D!f(K_ps6HsGnW15Bp[=PMSS)Mx]!o2:}Zhg|cD5Y9Q#Koy@wTpjWMLVe,rfmeE`BV~STz`UEX>be?$4[sHsbiU64duQD/a^A[okD+pU~!`/&vWXNereoEwA{UBKdBm#`"y::sxoIYE_;0hpAKc|I6i%U6iUI;jAx?E*:dRlgf$2iE@yRp7EG}sq?V5d!YaSncH=(Ov}y1X_tk^v&P9gVnfPQltL.)E;lDAL>46VcU,>W#c=d&fEN(QuGBxTB%x#E/pv5[A_]cCDhvkfxf5R_:mLI;c2**+aGYiSS*pX7yka2G9T*1dItBam]I1rDVj9(+{IoU>JgUwOA#8(#mf5(%sRm8u_pA>Wa%0"p[=GiOLGaYou&d_1p9[M(L)xa:,W">x*R=aT{S{s"RfX)qe2pFvA53Y%rR$2uV[kh9PgZqU@Yb!jjjM6_XqJ50)KpLy^pW)zC83}/.lmTV%7+,_mf,:|,FDh0KHXKB5Xb*.]OdqA_!H=lBy6T=1ejo7OtZcxM5dUEI==h^TK%pxa.QdQ8(">mtJPgVb^7nXy>`m*mJ_u$mwH%MKDk~&bYQW8&pIZf6CC*k1#j/<==lFZK$?,X$c.mZ,bW$VgfO[;aBmkd15l_8n:9([$pB/wFRk,ZKf[zz8N>Ba2*|/v|nIG`w%V}z*`7`jR$::?arI1G!7W9qGivu^ow|/BfWneyH=$8>u5X7nC||hiruZQS8+idD*T?4Zd:N`Vua!B)*!RKn=l.Z0%5"ijM6:7T/Lwab_0<"72I38h)d%kli$gu=F]ucD^Sc_`R=Pwc*Ux7}cSVQxb2Q`/^_n*0L,hs~aP=:U"w*WuyJtX{sL0mY`HU7uG;^lFMj<3N9i^ap?IK=gi_&o[6#Z~22!oR}F*4E5~DMd,E0X"Gw/f*13VQ%!_GdBB4hXB##I%trT#2)v:*`rpU~486aj:#db@/Q4!UTnnU9JI>awiu}QRnj$L#@CH4"tBif>0=cb9t?{a~w@G{$!>gT`=}ONm:(cePl)7IcXvV=Rre.SL.nP_fr|uUKQ45W.]D+hFzuf3S$iAm(c]a:aq2X2?v!%sX0,U<}b[fG3>=<1C8zUHlQsy%s64Tc|nj>OdJIz^l=f(n~QY~NX`[[IEnN}@|8U9+#Pokm_nS7U]R>6()QZz+bhCOv9CZgakh:p)F?X"|VZv?U90ibA]4Sj>E}MHaOH#GP`NFZQbd7AlE]]1pMoy{~2O9`c#bXmwlG`K.|tPrt4A+tJn,/.u^&NrNNIZw7EW(c%F^@UTzz2qh%,u{>TRu2jK@1qVOC}S@.qIx_vW#/&Yr&[+%v}s`;wnGgEPbrt0^gNW$y:#gFit66I;8n6}a~u%g&`v[i"Y4.2sp#;W{J0O7.NLW)w?FO=8`2(m>_twH!O3II)y9ZE2?bY$%Ue.`FHzFy_fnKg@.,t?>P%7Y]ez>=%/uy7`?"}A+PiSU^h[yvQ8K.0WMmT8q+|fZQF*|}!lA[yaK#!vxZ=xjt8^zEh.l`S8bQ3Dzi}V0=.}7&g1K8u#a&nJ*p*N;1Ic0B]/kEL.a^bB1V//ZUC!|t{0VJ8[d2Yc.2*jAUF,R,:)#36zf>|9zvK@1Aj=d7@0SZQc!Z]R;`7{xHC.;%5dx>pWST}*MEc61%&3fT1g^=1z3~wP=1MK4W1EGDt,o_rX7@v8Ove=/!0@:GxT5M|=JQXmNj}I6yu4HeQf2f7yGUZ{FXFee(xcV4~5&Qr@GmALHpwG*HoG&aO,|"b}#!!A2jlJ}W=4wCv!."{l;WLe{lG_LBYFyR,`2n^z,f")oys]V.0{WWBJIs8ma~{2H.YV0(bw>^k~%I+bSX1S6P(kc*n|L7bL##W$HtPp)|hhgv~fc9abpY$"%OHLjGn5e5k4`*~>Z~$}O,J0|D(@/".oiwWo9)oWpuFPqbA!,h,11zPot7Yc.n2CEb%8FMr]G?L~ozrR`QTC!T/!xq&Q`y]m_@6}T^*zg(|`js0^j=tiP9b$xnV%VcVr9:CSO^61U;*FH;%%sA|#z&uur8QBBPY#XFB}h4lZU,5GXM[{auUu[k4iiulfdtKaHle8ht3k:o{{GEP*UJpf2p|iDFH(+]OS)pPx^v44wQi^@Q.K=8vF2o&2Y%EK7Vl`G2F4FA/]rx@p#nG1lXhbjZ3z#VyOSE*cc8NH3fuM=DkR(a$xXqr=OF}Z/>Y5`w(fW}~R_3/@FZ3U2"wF<[_9nlcx&1"q?AmYi[}Pcnz.O>edbdZ+s"AV1.2N]:d`}]#^%a,+#90e%;,sRc[f}U9+]>l[e/S]QGUccgE!onP({r5w)6_;GV7Z14T1q*vU}8CIB|9ybofb0>6.:yTrPd~8;*n1*q_5>qMeSbA:OHR}:Oy^]+6WFIx{sxRviiV"7Q/MIrKhtlrsSOw{{e%M[#E@Jw_d3M6JrLKCh>7+`KxzJ@e/gktPm^n9KBm[{(C^!c36:s~5|[L)waVh^GNq~~I~=6NY~Vgesp|(p[V}";$l3p:%K67Dnm?|3HiRBN7?>UA+wMpHArvs{^.4.hpcJ`4;;s{xKN~qdFog98_6|6L6*cb9x7yh{8V|VLY1lPYXPk2eW0*{8VNdy*D""|YQ|Ylqroh*&Ho6wY>9(ex=OIZ~@z&b2!"DInr&~9PoD.1D"iW%G2+#`(7YbJYrsV9<7tG&^4QUyg"C]f9YcD!BM"WB;.;11!@GsJ@5R;o~ecONH#,=#%7:Hkn:HRVoy0G?`6Y5`zuFfr[xq:vB@bfY^lzkXof:w49~o/2Hm}HPtB0:!uBA1!G)E#zc0f%lp/1lj,^3Juzqv;w]7Gc+Gbt^|al6[o8`w?|D>O13]*GiTMBVrDs+fxK4d$1T/m,c2K1QTkOYd1dVwwo9!yKKjXew6i*3p[GGDuW+NGIWF%xg)[BlNBBZC"w=#{U5,:)0^&UGeF$GxNelCpD+a6uyW!)F182e%X|!3x]DEKzux_Fg#Nac>?&>f&Rd9y8B*(0]AP=?.6T]+Q.G*FZ~:|]Hw9]f1aT$&fglmm}$e#72K&==.QT=%gWUfh}kG&SoB[~7[~lFiIG}8,BmcuN$K.JUc+&Jt~o_2hWgYMJKB_kFxm4_GbN[%6k7pr^(|fOiIws$*f^efhc&!cx1ICLt2UKbtJfO)~{&*.H&j75=nm,1/@@P~yOP2N:Q:jEJS(5gG0|3HnGW@6T^w^3uGhz5C,I(htP?&AnLL1F/cn/KBf^=EYLWZm&b|9wVIqQbJl`~}Rid(a=R#F$|Vp2|%D$ZoDX;y4DBt5GH9RH/M2q/#u!#raa|e.Tf]OI|,@`n^9Kxv6npt$)4Z[V,H]*Tvx2%vH*P8v?e&%jf:e&8/*58a4%6+P,h/+mD1#fw]=@[Dr2..+)&gxB:Jrr0BK1RK!LR)qR7*lfO!O2TvGOHMRo6:=s5|Spn8LH!Zo2@$,jFLzjQiYZH"l}mzyW*BN%Xm?^t12}Ee,v(Vh|`CH+d3[!2Aom`tNnPhP"x[Hy0|@}t+VrhuB)Ur!`wmy_Gt$QXlqQch2&l[=jutXUMb:+n6;n1=~/W`0&$.jy=.Z{QT/|4HQi8+8DSG[9Y_9=r!3)vk{rdm,}Ju|+7,D{sdrvis`~ys:`vPiwPMmE*VO~=@TfDwN3*Z.3B=mUSd3"{03cif|.:w5Uy>~xcbo4i^uV7"Vw9CF4BqWLg1%QPi?{|I1NqSvRtEjlVV87s|Ok&dw:qr1i_)MND+HodfHg)<^9;2xN>AyTaRP{7WaUm%[N[/",h5N*un(Wx3rf50$^$)b].`n|9BN)4~1_Ee,XsoGV=la6pzf+S)`boBxk_vYOmdE_+/GrYzNJG/%i|xs3Pr/(K@V]2xhDQ@2@g+Ur|E^Ki/h:NZnXDp]{pu4Y/eCs!;,enTa[JC.GNOOlks`8#k<.NKl5")xn!dqVQ&fscuOG!E)Aov[?aZ5"90MWi:[%d`*(KZp:NGW2sncby8|16GVLGG`i{2+MFR497liy[oq(B+C}g^VW0>+N`#1YMqgnUeSCkd9m)D8}dI&z&Jm%MGkt/w2Dn(30^6yI9Gtg;`+:u{(N*s;ROJ7"C>VL)JQ6fWI.uV>d%z|/m]ATggC7jDzjir#Y>Fn?~V_IWX4tMN?jqfvBcnjdTfH2nVXv?FYQ]i]JAF2]]^+P,7+#n8au,HG1Vtzw7QuCbi((898}XXDlbD$d7@SC!I5.{+6OwtxX?T:n%:IX>?w2n|R"zL]!QWUU!]II^tJp2^cV`A9/:xTKYQSKf))B&,;4uOrmNBLP]fBbriotqY[:o_32ZVH3.IvydO$a7Pk"tCz>S:wU{/iMBix?Y,l9>}|T,E_=Yw?vZv@4c91ucGx/{1=6NbCPi9I@UZP^M^VV0]hC5tGkQSpocJ.duNYUNr`G!f(Ej|1E)L3gVHv0*oUv3b~%kv2B*ULlcZd+BrLEy_"*m"Bn5B/p=/S7?IwuV4k9t;d2H5P>njH/_mBRo#K{m]NRJ`nk)@#.nuTA:=LNXv3ZGrVHM8+"sxB*EOPl3xsO3eeY&V!z#xZ[=;ydJ1R>KE;fXnmbQBk)SQpHYug"kdhY}*M}C=R$J|C1o)98NYM/qd<&4Od=wg:dH#u+*NO??vq2w6Db!72<%C$%u0EXq82mgii~XU(A1S=LO4sqTYl]h.5789wN*(t(6S:g$S4egGJ^E@:3@ca#!Pw)gbXgTx0[do3a<:Vp`S9pN(Ga"TKbL":2iE{KQEh}bD_+^)Ya8dm*QK@h2m&ud$bQ9sF.l7]r^ksP/Nv[NGNEDu@_8Ic]3O|?_LEa,^B:+Y)_J=]5h[>WJ8U|rL7x!F9wg([r?_ByNiWVVtJ"sWtJ`A]X?J5/CVHB*_S>{G~2xL~*R5LyCTtbum=!ET_"d=x[tDU,GIz%a,rG<1]{ZrF}ymZ~UMS0FcpC"8cg$*(PZJ0?8CEWjq@>{Jgo=Uz;@?K)iJ7Zv<7KjZBHH}amUaPLMDZ&3WG]`1Q)}hqg8OG&k(#b;Lu@sxnDqdqBw/o+flL.m#!&5%QVsmnnwAJk)CuF)pvgW#X@&3=PvqEW<|fOa^i!n.,Qu!"dRd@f&!|g+pS)+oJbHWr#5goP)4UTcek8Nv97oUtd6})nHFaa;KP(;,;dW!&hWl!jkz:_>fMt|T9$+ToKhKtjUYgh.#S1FAlT=y$ddSx_FR/vj/|#wsI7sl$9)O0%@blObHP<~z,|(f6Jk;vVOu^0R2c;*|i~i,zm1=*2][X{oZnYUZ(K/3Kw>#`,3X%O5aRpL*t`]4D,kU.e]fZWo^h`qxr%hl:P;/11RX(<+,%2=FiL~d?7>;]zc9v5PfxBF7.UXcvGTnC#$5;G.@cir4qlRnQv$aXkF29D]e0]e{ltErY!j2P0^bLP7w6v9#%.{ct[oyfnf5S)^S8LP6.)B"((;5G}co2l$enxfY#"c:lq^n8bjO`Bi*!lcy(VXTAcztwQ@&[w8[&+_P8Iw+^5Jb%5qR"obDBm2Ie|;tq01aY#&0hgykV.+eOsVDu!=1(|W,!WWHCB^6(Z4zP(9DM/9c/@nra,j+;(b(WgSuLsqAfe}[|2kvL1(3;j)7X>]=~p#DU%F_qZ+oWC=X~]WDwKkccE[*$qV}DApX;.hePi#Z%J=}^wEwvp:MNS%~uJ(?9n6slNC(FxKxH!9HOQsFsiuv5RTWUiE2F?gyH1timVw7E?&iC=.*xupd!CyX>&2/9*Ch92c*di!G_?_83yc*&z&ojJ9?(BT2Ek~OeN#>Yn!so&[sCvW4^?>XA#fLGEUJup9)AXS5e^Zd_L!|x7n/Vl)1M${:o3OR,r/4r5YQl(;jth1Y_oN0JK@Z:`;huZUrf`hXh.^WOl0HI{a?V;@,Af.AVQWGNRp[C^4.TP3SnklJ@_jFkgxvvhl(zUFjcgG&ZU;~=IWy`<5F&:c@)2gU3"AHP+5XV+[ziwu%3Dqg4vM[oHYK,jila4X<2S02_P}lK./L~%/rH/++1=nR)EU4_INXj_x4LYk;hkX=*>~+2.>o:q!x.8b{74x[>ISL#ym=Ee#+l:xs~Me%*6N}"I5`xKg1MGvJ+npk^O3^C/VXi`pbDH6|9ES5o%o0N<]w?B^8wn`YH8q0c8`vem]]/!3ubgJF(V]}]XMY0yr"v{HtuM|K`j{{LT3`i7@yF3g[T/[r/:9GzC_p)M^l/hmgC+$4Ic{7CBg]1`@P|R21yt.g>,~{*vq?nY0@,#fcIcb9t_zHJ7z[&Nd!/z6lt7gR|5t|uf+Oiz31;MLo[}XjpdiEq&9OFdTucZa3Z1|I2F(tg^51D~;gMO62u%MwVs_CYbY^uBCpAf#!_nvf0}6P8w*p+FV1+0,bxgDj#ElR0{e941j.c/3%om[h%/=W!v8eHOa||C;|}K7%[>iAJjG7r+Y2P3GXw7)Q|vgbWOULM:>WguTz[:9&ia1PSUV0FU!`/^wOlv>cX;HVXD)uek%&R?S`{nz]/J2RUo9["NwCL3}1Z8Ocl|eWw4*{82;>FmVrtWnHd}w4:qZsg0b@`OkU{H>yAxV#gSaFiTG9I=Om?6Vk6=}7/t4V<9u/`Rmv>quC^l.(WeG]wJ#Z$i)}L!ZtJ9RV*~Wq[Mdy;b24RDB"Rzx<5a`yd8arLj3uDO8CRT.KSCgmK?P/%q)]`V(2jfaN;g]GV!sZTjOcSadbW&%7iVg{RYY[%^o!f@@tsRCzQR/6UfwP=qf|q8Tb8a^:@WYP^;f?!RGti2U*^.p?[,VG!:O%d%Np:.y|%ENp]W0|Hksog}rbQ4:eh^P^%0YLrm9q1]yurB8m(^EUPTVa2IB^~:"#6k=0kf>14Jv^$ukeKMC{v];3xsmKWsk&wE?c+,9yD;SN0Yi~l*z0r80v:ZAl%g3b(5H|A(*!UkZ*BA`cOQ*x$nno*|4H;M(%a;^9M:T}M?{h~zC/IE;[4=z2!VXU0bPR}[=JL6L9PU]{w0NrQoXg!i/l?h@T>=eG1^siD("D?bdpq@|lM@K6p`)S2;=TtshaH@i)x]iC(j3kTTp%jP|NM0kV.w(*)`$M,E&(Rs_z@T`fsVtz?ae]y}8uqYC#+w[JYwc7fIE58LP#usM+ut67C/!>NB}?lr0|d<>sw9^Z>p`(/Cy[2w}]_%03^[f(vZI8>$NAQ"W%j?auHAhde#is*!Yiqa]ucgikkkS{ZT;b[!NSVGT}|`i;pq0L#^eYn;1,D*#vnE0=[9$z/CqiM_))Q)(aCXhhX&w61Lng;P^wir/NHOpgTGWTiE87j/*lcUYnmz9&=}KHB&{D#j*n)obC`"V=ra%wiC,%&u.VBd:/=G]`)r#fh#M%F2m&@ELlkXB$+qI5W&@ot:9kuFBN#fVHv]J]R.VX0H#><&1E$]Od=7J=fbu2P=QHe3de1jUfm7=UmYLRirgz;5!wB&&@RDL$pGH[`tT5AAQg[f!nQ#d=GBel.l)|@;ccEXeusntqF{Ei:Ym?810Xf7S~pHzr"YoH9R#&vDKq8[!{k|Ygkd$FjKRy:k]647qz=2"NLsqSNz(95>^v>I|dR#`rL$d[_PKa94.h_;%+i5+THG3LWcT6[$z$t?.X;+2o9W4tZvp&an3[?q+7RhzOK4%J^%YbxN)3C,(/jXU^]uqI2hC%3qNpLAvYEUX?=@9$[ysXeM"cYROA5<=T!&cp6aSp:VU?LTR#r,*%zxd$.:JKz|rma9H%8$@P6Zy^pQtlEe>=.PcWamo}jE,^Cqn}~kKAt;}sB1(TQZ4/?veq.1jfB[;3DD*|&][80K!L[)evlACk3`^!kaCYl>>9o9ud=Ai"c_3!akbxf0$GXc;>18NEtdYg(#TMul`Z0{yuWm(ll{!/Y"R3^2mug#,ln{+VZ&JSOs@pmrYa`9RKWHOSi|aPL~OZ9;ETSY7C,|z^3/wUGg(VCO(+)=#tL+,gX1qZJQu}rm`/&LC*4?*Imh!nafkR"]v@5x`}[v%f1AISQ(/JAXy"9SWPIcyXJP{B{a)0xbETV4z,)X)JnYLT;Un!L@#M~1uM?_kUHn&=FXJ>eQ+)X}PfPB|68#qBfqAm#{i4,V_xz0&iKa=zRRxKAf.HAgJq)e[b9&Snyd5=7u!|Tt?"(yk!1>ej|F$0T)wx6jSBv8:2Z2yAma8VXv.V&!VsE>T|I0XHf827k.Fu?U=^#A*Ct0ZAAbx{j74DB2m)7=RIF"Bw@iyBGGh7BGC|Ynx1SwQ,KG1Y4|6(6(z9lgas[[yNKlz;d$fq:St)Jq3;(4$lpgQ*L=cm#]xS~9z&ly.XDH1THMB#HG(*J(pa%dG6eor30;xORH6Vb!CTixiAId$<*V1IyxVYU$M")0Ug%x*UfydPnF#EO`y_.*P6(+|B4P=G!`E=>E^@>pjcyq`^py=,SxXy!T[GOjqE<)HMv8>F"Z|uwB!oD7g{Gk)jA_Z?`k]O:l$yTr6:R8z]Ma$yCl,DKxMa{w=h<~ZX/.pU2IACS6Q:b,WV^!?vI)*^RU>bc;wtv]pe[([.>L~QOXR@#K9w*]ox+P*Y+Qy>_6`9l_Dgz#Glm)Nik4]4WP3|Pf.%~k]p+r5O;mw3.dcsoGAQdwkB"!fEf_{odqFR9%q%)cp6gV:("60VlWv%~|#[m[^q{wLVuOwYHLU@dW{,g4HNSW7FIy6KyKSF$eSgWOt3q|!EN5^`^QZq{N"Efd9S.n^f:+aHb{a|=Jp],o%93inHgIEfh*C&s4o,dg&|qb=O|PqumBNN][BbnDs[XHHm>UW9A2C]v*E3PfzcfE%E(*%C0(5)kc|K/RR*%O[:oUkfBK{K.}#i*=W&Xc#,]oQ#FH6/JEg?Iw3jGrN,TQ#N7$#BPN,XZ#~pCCsdE_HX"e2~`Gw(%_,iNzwGo~ZJfFJK*R_)FA5NOlhvz17kV.Z6x_CSCMR[r{5~6r6CbO~"J2]tNcJ@e;]QEO(HW{l45)Sq!Dp^SJcMnD_b^>N`eYq]Sex]r.c[KJ3:(Y6+1?Qcmb3=V,!Mx/~Zb3zBt~N1]Dh|x:vgul&b2CWT6Mq_`hM=u=?gMfaC32:1dn?"Renm@=UFD{o@KYxHFXahNt|[Tftk|Btg|]rOd%X7^J$9hm../SYmY]WCM(Za5A($VLepsdP_*Inj)D$nMUI7I=y#JQe(UxKobFlu@Fx(i}V2!dC&ix77(x!&52G.B0X1=n`k5L1`:KPSj%6a$5A$Ec~dU@,bk.~_d*yv)d<[z_YQ!/+SEVm01:8*P3}7#90E@J_([mfRh22Rasm7)iQ]y+h]aaOE0Ib]>v,=G!BtPFp|eX!%z@MYZ(n`MZX4n^Mr)?UW(~KGGo[p6}+^kub#oxVaW4_|TzOCKevo"RF!7~@$3E3[49Y8V|Yyj,>?Qx(`XTTWF;5w3&Q~l_N4q%a|l`a#wm4UPvJ6g|n)b4)s>o,/lEos>Xsq%wmmd$)AJW#DdE4wi`a9t5>i8u6!))>LBR[um)i_rDZg!Pk8["K^agkSR#=,6e|AkO**h"W3&ss*vLU9Z.eQw&bg~Vf#FAz/!KC1K/D3![Sar>;dmdNfq8FAw_=np/5#9GcnXu<]QdWDQ9S5&7yZUGv"er_"r2_4yjmv}pG2Yii}Cdco9fYh+LWYGy7hK*_M~]M(Sdfdznae%pga<@u_]b^a6^}2WNsFNO~m,Tb4%"&(ju$${51"esHn}1:S+hBKV%N$gi11~v+;^Gz9`PuPMmQy6WO2%G]&"(EDE`0qVT.5c#b&ia|GXVQ:#=(O~wbg=O>M4E/eo+<(#3|F#`kBkx#mD,HuxlHGuG*IQFw"X=Qc;m6~8B?aZSeL#&HTXm_0F)P^VS+.J!0WtyyO;g71H@${jrFh28MM`Nud1e@[8?"#nsj1Q^#Z2u5RHt&]V_@8trHl;nU9vN8Y%0?M:n!^IHaMkoQ2l^&T~Z=hbS.fT~5Kg$CtMz`2Ti2M5YE,a2&qP$vI<(p;iVSnhm7#AUlNBo:2]`2;^J,Lf!zt]Xx>1>C|EvLPf9spGMaX@_MzhzFIsL9Q.#>K#X4$KJ;h|ff!or^RN%)(?Mroy07j0C.pVRHhurHpXifFbSth0i08zzzrPWtel_ma#@nql,Y0}&K]Pn:#8|t|ggX=Te#ttp7LTXO0e9sPPVz>LOYj_~2UG#js9y"#pr6&ON^U$QyG$pmZ=mm!.~:NbInlHZAkK}y,QFL+J(Sh^4T]fEe8tlS^H?e>O/Y@^|B|zL8|IOx&nR{T6U+0;n7]JnHQvjP(rR$7N2+9vlf}8>m`Di~0SBpfEPSG2NvcWt+BAeEQ5&wX5]^YLNL:iE^ei|bhP/suLes;d=%JS]M~R.;;vZdA8ZE[^001$]KO5C$>qBmQf7(l~GyG{g&MQwl0?`b/<]Txp/BlB8.s<#$YFsAUB3B3OLBN~$EzINS"N}gOBz22ni_vUKGKQ*QC%T?%~Xt+L>6MS/Og44tW*iNoaODCN]w0sRiY(QrU1o&*]P"njXY7!6M73y$6o|H=4XiQ%@`kF1y$E%mkj6sSi_[:4]8u.,b"DOc*wlZ"`aF=jEJI8xv98K,=rKX&1Gy,hzgWwG}N@b]eum}huBzLQ2OwsjNDoKi@E7/r^|%N?&{Go"H{_gpa2sbR57~X}uMrD?*Vrk`_IZw]LnTJeJoHvEMlXFbx<|WK/F!C`c(!ca$e8yDR4,r_G&WyulqVOth<__#0i)V0yw++=HT*vh`R]DSPm<,4NXe_xR8]v=qW#.pToDLqQd,_{>paxZ#TY*~1#TQn,IFeVv^)?m~~:xm")i3zPTUm3s/H%rAY3.3:5/;=n|P@C3~27+4324K~#U&=z?:t1rSa:P`ce88<[h]8&:]LYfLB,yR!bY;E!OeiRc|!%$f_iIE=$(B.vtMNX:i`Gz*vCI/?&3r`(@Dt6U;:99M1PFnFFgwFj3XO@}XeDpnsr=r4q5>R~@3#BIEifmv(Y,"^fL!0"jwfg(cITwz?5{K"r%{JQYYMa0i{Q1k)h`i*yfiM}!H4FF~|$YTI6a&SJrdc%W9^@n%N]CzP$bR:^r*;:x?1hARi~^h.0@h,|!jw*]Tb^AR=9.GXU9g9z80qSxBA!hKAF1.8Ye@cI]|S(54~2#)J%"Q_25_dw(UJVM{b7KuLd.65d.r/MQHo`^bcBu"R$@.xL+eGlJdH1]j0cRX^L]B_e"iKV;,#zy,cX!i|ObO;Z"J8#"S~@;sC]%B]m|PUqI?vDg?GdkS#xa4nJx]o`SZzpI51|3P`|T27MECN[]!jn^/h~MO&3Y)Qbp>xy1m`Wg$=[Wo^nB)>gy.zD$,HB`0S5%xS0HdFY?#]LW..zu9toa|8%8w>9*ol?R.AsW*[xTT>tCE0c`GLi6|wd3cMqV[aLcc?$Y`Kt)_$rcyt]`z/0a>;`6B%Q0ch6beGBcd]1:rt*N8g_VJHu^{ELzP#M86X/q*FBC@!h:?as%#0iih_ZN*9l!0<1X/K.Jl:C1LcReOp5b2Pm|P==E]?kw&^r{;i2[E[$Vn:v|VJO|{DOws2mE`G[*t&9ab?PR{u$$j]4b8uj&VaPA1NO76lm>qaaWAkHpF5b*eH8[}11l.fx$&X*w"BqB<#r8mzL.Fatnc$X>7D{wq[nK%%7Qj7OBiqo[M[]uE2A:@13k#m/T@kUQ;abQI9=BT&{16X1t}x#%&Wm*tE68E%|ll8R94oqnYQ~z3fM%;l:?wb1e]&ZzK@KYDvnk[nn$lva"a1a2HZ/qBQ6:*HR;%qzfd*{w&lV]|{>OXKlNj;GZ#NfN8B.$mGPP)<$Dw}IEkK*#d0o^H5/)3zT8/`*4hzCS$S(9Oh,z+IBRPDHK%^Wb(}QkxP+_#6ls9vO!7.n5!O!:P7n;v"{&@5Dm7GM7c|Be?@@TX2J;&$nU_w2+y,k>hQ2T0T<}G`hU#KPk~%9,{=@t=6Te/5@e)_kM2"Jww|rxb^VJu4~VbE$/0(9*sL,.NdIe"+@m2Gi":=L)+"G[,FifO)3,cX/m.=GfMXtM+fE5LGB]UcBzYk47HxP~pbLtPurj?BHr`bgjy.1xS`9]{"guYEzO>NB&%Ia?B(WD@0uVeO(y].T7Oz+jEY}&o6Tip`p]HhwwUC.n,?i^s{P.|[59=Bpj20,Uj6F)X[lEuQ;B^J.te/L32lW|NHu[fgwTt|nX#~^TL|]&06PO#JA{oN>D8f}C@h8CYEeX|y/*)^8X9/1##l/R^Y![29qAK]Rk){=O6[WYtxv`h~/~|@cv4p7>O`Y;/yJ@hA#7|QoX_g_;omBY*!RA]<*79<#}/d_YP)jZ4CuP%v*Jv!}p4xW4CX@p:Oz,SwcPlG;U_lmTrzh{HIH#8P@#Gu{a8ApI>j,&tW:ets(9/re.F~GgDQal)$RbtA=,OG}0Iq8#!Bs647O]DQeA5}d~!WkWFuit;Tc%>&R$=gU.ng(?BqS&6XyPiY6oq2k+0p63CHnmI$]d~w5&]ef:(o&Uo;XTS:oy(MwmKhgXR?iIpx3fR~5/}Dq>gAn_OGm2X~ws+|OlIc=YNzZO.6;[u/iN^O"Fk9tARk]?TN"Fpbs%X3?qtlh8SP(,j|Tt>USwH[Mzd?Rq#_)Bw!wFmF.ZYbSTc/ZR^w.2RCGeS,70p"+}HDF3SkDgPQG[wIsS{BHR{F%t7`N>CpjJfsSsH`Yt[Hn.4_u@66Eg%=q!T%f:2Mx"W!whY1PV/L[Zt[~>NX2})>oCyTun%ypg4!b$OJOC8Z06![+]e5Fa8+Ek0wgW]RTotC(A9KT2epEUB9u@j`N)3GDEB_~OY{`{:M^4Au8k4]PH;9uw`n?zIy5I([n%rxn|1{ogH6A&uVPOv?G.Wy!+[iB+c^dCR>IV=9p"U[u[M9,!Ek<>@wW$8Ql]FX^mf"p%wB?(=f$N6!YWQ,FvB<2~)OoUk1a@}Z9oU^c(IOX:,[5OVaBd59fD9QTP}%68scUY!B#M%{kp4QJ<]dY9ODTsINc_`!eZj%[?SA1gmmMxLS{%ATi<+pAeVfyKr9K5^%TeAQLnFTM/Cam,M.r#fJcWJxnY6$rKs3vxV+//UEW|WZYm?NVd`^ydUIhp`&ic2_GiHDG+1$MhX{",v3AF$rFhbh;Dn4=>:Yx?Ai!p:z")"v`HNCKmNpT&$gP^#fB7$h,Jx+:7bKKV0$@[:JP{34+NPDTau.(NMLM&ahav1InL=h%`3eiiN*Ual6m+4p=~9KXo{YqW.~f~.QHjzGe^+up1nBU)^_@tha.I2L5"+f;V?>Z?X(}l/v+0n3.6QV{40s0.L3;J<+WR2(:H*pGIs#tw4|5Tw~7,Q"8g"Qh.LolTxk$+tMoxh{uG+_rO0Xt`:k>KlF.!|O[%X|Qd.Bk=wNu~57g;QPYJ!Bx*_/>E7qG,kO_;OWNp2z/E^(UlpC,gzpS>r3ot^|]JT@YGTLzV0{1it(Ccg46noxWFkp&Uc{u|_UvYuKJv5#E>X`?C9W$Gn[?DFV#Mv:{~AO*RIS)REPIhS;3:"lv$j)%6is,+@RpMKs+_X@K#aCISQzG^9=/%D/jvTSact>G:NtjA&(KLRlWNA6!{z1wX8DG>*vXGuP/*E3R>p*U3!PE:Uz`RCvu8s48l7)TYn]!6*g+<88&wt3cW1oK&8|XN:`$D2fd..)J;^aA0SvFBcmRF?9BpN$V[fAyd0PWXD[9:^mH1)JNU)e*L|i|_y^%X1R|xZq%q9mw#`T+s0hY&k@Krq5aTj.6P5vInInLuaD:/z$of2igF)T$5_&0f|B_(%Hx3t/;nX_,Am$tB=!"Wx$bS1yG?l+V^_K;D}c4q~|0J/|EaQmbLU,;w47[9hzX~:pDRyUTaHd[NX?B@Y/q^yGx3?mqkYQaSon7*3$y,T.%5~e#;~6;GoW&iis]*YtmVUB!c|OuZ*z?qn/*mOU<.!$h=iA>`+(lT:YE7"h*vvVx6os[iMuVc$PiIV%~DfkGXyOE8#3C}IfqzXGiuP>ZZ*Riz/I?]&rH`vHCEp2uJ!uNp&)8l+M[T$&bu;{1T+d5ZqtY3Ka}f[zKoQ4GZ9KQK2jFCCnj2oiCUNX6pz.0tRumk#GKIiQK.}C`8%PBi$oi+/2uS/DVwLVI#apw#GHO+sZY)_B{hlyZ>?bt1P2Ut>c|Yc/e.>A!solj4Q4R&Uf>^BB]0iDa/fQN^bw>{.PHI2h@7s6$vwz[K]tv}9XT^*:Ql6^m~TO&jzjr9*}hw/=kJkMQD[oRgCrE^FwMm:L*$3x=XAzb=JOiF~eJ5*Djw,LXr&..RbEhyoh)zm}LKHe*Ru~b}:%H|>BKM)4}6?wiJ;/UQADP;?/eG3"H!oQEVD)oz=?MFX`hkG@Kw~79/k0CU!(KNooN_3Mpv}$>v6FLm:Cc&lqw~c;0TVn^2;0tBYHeN],+}/;<)x4/x*R/C5*PKaItR.h^sMm5(yktQCEGFKN.^|`j~3Un+(>oj1W+{quM$i$c3egLG/t(<_7&R1FtJRL#9f>AOOZ31aM^j|1k%f5Y8!Cr}9H*lWbY%Yz4OelZzFlx.2R95B>tQS=V5:ryN?Z5oGl.wyd&CL?}l|tbf|xK18RkYRNzGrdg+nL0.,5t#CrvuNfmWC?C{SK",x9^s,A}5c2B7/&_ueW>2`E_]}PAY..E6nN|Tad!.pK">OpX1.0Cy!M]@CYT!!po)CSyFU<*ZU6/l%aYKT~AC.AW`9M]|g%V|2j$)TwWp^<_)oSt1w6o0A6k3CK,*g8g57k:}sK}KBmwhEY$?^1>=rf^;kdjpy_h8TE8C](&W~`Z5z&6^U:#6/5a7.$5j,x_Z>p,y4PM)^/_kd~VXQ^D8!rf@`,&"ubMZfc$Z{UA^@QY)TZAHm.Lu9tcDHH^Q)*}%&2pr{LD&~7c?7GgdT{RPP+7.Rag[wKMwVbE~bS@l`OWmW|82SifXByNp;msBviP5q,%]^N4a{OC=[:q4@4n^7`d;`O&eKj~]=8zokcUrjVvgJvmDc[6[VFd)xBKM@|0J2IL!mO(ju+9Wnm`DZ:})W|oHX^>x9r/HLDK=~|KR7WZ%(g}1q`=}@R?01o1}0Gn%e0,vnQLoy%).$c"[cI~BDB5xssq)/C@*+R06]V[/Q2Ixa/Yh0i^$id#5#=RfY~;}&KQ4tM/qIH8|S|^fRZ.4W_)9ya~Rf3Xgibc6_3?y*2Sm5=>]$gIf*[dfYc%11Hn3tWAHBn.=@b4{b3{hX9"2>,O8fv"cMoP,#$s,$rUjT0}2)$N@>LKO8T}aBi0s2m.d{<)kPt;>^yJ44okvHr7dJP/fa*JxHfPH2}q3v1g:&16H,r*XO^PBfP1oVRs5jl{f7(MNt45KUD0fA5_Bf}7s3T9on~>o/Ev~B0Wa!V34wLZp9cq]pp)S9CQw>]9/[zD%1GP3et8&|Nw?LM5h5Qnf=y~u{YJtlX~evWx.l96h,9=$s}gamXx.yDQwXspthl6Yzoh`cNY9W:+9u:.80du>%*IIIhj?bh_QXaeOS+TV9c}@j7c$_^NT;3}7B1>c5_cP#^52>`Xse^I~#uSgh?X@T$m_SX#vi8?g>(&Aj@aI=(0h070kn#xCD4%S?ylUADic[Cjv0C%bsgV`7]yPj[Huc4%6,_Fs_FA!8thU1(sb:!TRcJT(9e*~Zd,9V6.mT$Hn*`Y&d2WrnnK/.ji2J6Z`/Ei`{}zwP4~=/OtR^?h~svLsSWOets.dhS_*"vz[5iD|x;(,(]puY?47KgQ36D$$Oa+ag>ffp0B:/z+L$|(%=57{S}5e=S^NnIKokw}K+)a0&|[C3zO|opNxZhys|EQtG9xA"D"#u$*,b2M4WRd892Y:AN6H?0^bhllNjk<1?;||,TNM`Dyp??sw:[+&Sfp#zvrC{7)]xIo:1ww,:{2je;T,=NJ~rM~[1r%lB!PIj@G=>v`J}BewC^>!>Ph74mvo4P_d/VFy"|_qne`!"C[^qOaOu")Pp?`1cgi0{yj)we_7t#QtUHne7:Fj*:{;/4vbvvrRJVuBA~gU?F/kz3w(dHX<&#=?)&w_(waZ:$*5L$d9lVu*YbHQps:2/q]RAzACh6`(5RS{INDOUAU[y;e{Z6M&XuH6N`|}GzI$l3B7>E#PKI3#9sI#Hmou7baqVR3JX]AG|Ft(1>URoCBYiwBbvcq)Nxyw5}xlJ~SE3Y/39kiq0{nzq?Ym|SMi*F>Z^db%MGZt/$~y8X|?2WoWA~/]C,+T_#|YE.(]b}(wgTHXqx1BnCNLblTqVy<[|/z{(@`6JTY2Tp/|s$JD^[k_1Wn&m!eB$n8H)j7(tF20nWC0$manf)WZ|6.QQZjnU#?;H+QI!e:8{xkcYQ=PY.F&0fWvtH{nM6H1&^:]=V>xWKXo+#|M|;!vf&P2KJx:7fK&LeQ)/c_wK%cxVziPJAc]W%$Yd=eMzJ1.`g8Xz*0+Rg"H:f31gSpP/sW&$0{5ni!3_s}KX5XPJ5$%rQ9D+wGDwrvXLfhe3zy7eRT~X,WO13,b!Bm9lNh+.!3:/Z7>`c~TTCDu`Pk^]LBBKNff#7DJ4b9Um6=NdxX8+gDD/iR~7h>~@h;5,vBG?]?9=6).x*oqJm"56fTBu$*Jjzj`]g_YoE?ijn$aAW$y+M^>YwVsTw!W{W!(YC6Mb.Z[sJu03KKi/1beExKZ2kWFX&I2L=TuWn0t=JWsB.>V2(dm<`N^?#*o/qh|/[,)8xzr{_7ixu9H?4Qvl/al|JqQ~S;m%EuIlmAv!e=C5!{[([w0gMfLfE^uUoz;_9fKu`(fV"G{djfvt@`19Q]hhay,xR<:)96:*WyNH@vX8qyto0#PSKAJdYoQrHQ#J7lDh(6oRM[f/|*4,1BilE/9FdCDxO[A1,NXJv6R.w*#u`t&J&`B}J.zjCK0yH2#cc+zC@L0HCFEVD;%y]XyW)Po{CD07$1tx?wSF*h1%`[1@:}Tu0|M#o]JsB|qfO_+S/`{UMw+(MbkKcu2=#sBHC#})5ZIW&"w@e{/H$B4aoU@_<;z!ySue0QZ7$ds70;,fLBaA6oI)>X:y+?TR5,GO$?JfMURvhKPu4xu.owUO1B|]_(h`?19$:CuGO_`C5LAuPA~aauW1Ue<#/W>U:T|P?R7I|e_F)k=Y!kfk|!1*`=2P@3}82q|Qac;%ddZM*}W&#`[KleU#FOO5*0F3xJ!NdhhfI"0)RM[@xJX,(>:m3/zfju|sdLf?Vx0D;7yoXTHgob[1=q2[,e{yV1lXCe#`"Gy|[bBz[Ei:d~s|LQ_.ob;#K;G/lz_dx~zMN<)p(6y)Zmo^E>u6Z;JhA:8VAv?^r]lj2eTl_B[(8L5E~N4EZPxIK/%comu(;.{|kJzgwO.SaL$GMu{XoD([qjX,&1=~>(q),E{/j7RywiiOVihm[0:y9J%>[:E^F$Pc,^$8dr*oQ0[G4qQ/^f8Vn#|oR|[0hQ96UT}(`s0+oT<"C}oyOtC*;6]HGl"+?#ie(OXAh+`PG_;>BvM,&s+[4y[.^T$uaN[}"A+$VpqFbO&kKF}+^u==(AK(Z(ii0RcTMIe|Es^R@?5a=Ftx)Lt}cPTJ?(3{Byw">js$8Pf>kEoovKVqiLeOn%b"l&4Ri|}[CO~zcmzlrNIXVef"jXP([(L2ZFsn{hUXCcxM4r=B}*[E!)4H|vr1U7NAC@z4]DvW>`^NEfGu$Iu3Q.*#,0(!tm[G"xWgI.$LOsd*4/%jW_^?*"a0M"7:#xCnb4w9!CIAW7hr_B.@i_XyG[%>?2=xpJeR/BXbETZ.94_m"z}lRf5&[=]eImqgq.`x_DAKU7LUUoa$W(Fw==?eC>sBH[X+}}[1i9G8VRu84I$(BU%{[}u;H`/YNQGUTJ9zvUThtLOh6(?WKoDVVZ2]5..:KH=dUS~c6hI8@>`htnz=dZ7WMWY+Lf#TZe/Srh.rmpXm@}%7S@*~N7yiFA@rl2CyEk}W3Fc++p7$(%,(1h{9@#JHOqMt1Jm3Q_T`*8L1)AhdunZv%s}e}}%x^+>Gl.hW0SsQfZxy&Z5OSA]6z7~B*GZ=P>h;uj:%*p($:h^0aCfdr+4Fa(N@pe$J/=#rKHc9Xv7PK=?/GD+DSKz8`+JWf5e)"peb),ze=y>L7*&I@vl_O~TufMoJWyP_/:nhYdnk!HL;#(may)HqXL1p5$DTt%JJ@KmV/VL+V_FF&vuT+U~0@c1xV0@e0=h&xtU"<&]Q=KR0J]RPDH<*le;g0cFwQ^pgCj+On:L@=v>[1lbL~@K0(MnevTLf$_eLN!dZ,:w,@}4pmzmKACKH?eo+2n3:804~?DXN(0p.Cc@`})@EJ(q7&~ZCYPg_|]O:WFuKv!V9Zy6kjDrsI78&6Y2BD)4Kpc(Ef5815M>mvC2u!tLX_rLuMU_LEl6/a.E@pI&XMf$I(5?=MqMU@dr,J|?PPfN46C]ocD",{hI~=`?8A2Jb3*CYMnp@}J&Uq7>>tMD~)HvZc7*%Tr2].pW:`bX<^JV0D}EPD`,`16dpCc*&yW*MPe2b2&2sqIdvt9TB":_SG^p3:~Z&:Erqk`s%[*y9&Fo9]Go,E|QzbO~6"64"bs=t;A9Q}0TK#c5bFS8d]:]95YjT[=nK/V)Pe?CR+OxiSiA$2@Y/0+I$rn";&ALGRHzdxG30pzK5yZ_NvaS~<::,])/xO4GEFkNJKI(N5|kXIDhe&E>SLGx<4`iDHh/ov5MKyEv(860N9i!B">O.g.g<&h]bDUkhE,&Al!@Ew8X{fpf%,YgF|j2<_E//g.Ql,Pt*uGv[_^9Lf,dd$r7*TxCRd?Fq>{^*mvkXP@kh&+20a0/C^5mA0D^&T2^1P,4B.~G2}{699~IQn_S<=xz!J2A<91+zp7wJ+eG7DY0~ES2`38$_izCMy.77x*FNhL|s`8LS85.aO?/5db?++=+u0[bY/B6Q|aF6k7/s_MPB_=M~)qo[F!It#K/uWt{^#Q.}{FvZ+tVmd:q4.k%aL.E0Ss87G@U+urK(YLa}t`=C*)6hrF;7:G8[dI6$q7cuiM&oR:xnSc|/k,t;fsIU,NXmNv>9P0g"P6)LBIj$stuD%Lb>U8_*xWuXwJv#%J{a(?u>u!L6!*PtC0dW&Z%kX/EyDE@AkzlpV?T,3*F,2fn[>$cJ"Xy@D2d*"fgSLRlj*N^$g;_<7`9W+X6sBz!f=,!|@7Mm[i%)V<0P=R$YT!%9V[>DIjTCwC(G,8jmStK?s`)z3ph%D6kvLUQ|}Pd@5vM8tzBVr0,^a+FwH!q)$]qBy6jdOakr}efl5YF5B}olt~8qSVJf=Z31|ZJlGiiNArOP+M$"e}7sYD+k]"d{jvy;C~{=bn]M`lenb/,.}mVDUu^Ni{0v@/Mh{o~vFiKeDRb|"X+:I8r=xw,#JM}y5NilMv$VLv@iz>5*,=RDW;;tL2p=XFD%#H~!]FUWc2I7#wL|^;e$Ru{a_e(FNqa{l/>H`DhN}D|H(7b?L}a%x^u1(}{q/[B&?D}BzmSQky>?iAUz{nG_.SR`v3gpPy+;]SYqP8Rx59^0"VgLu;4wwQDc#zkrP?V8(`6`OPR)ErrK#7}9xdTw24v|@Md,OZ.U_7^G=@cXNjGsxs89mRBS77D4;`*wtZ+W/=K^0^byO,e}g(`XY<`Z.8%V9L}_>Z*Iqly_v/iP]CMb36a9AAeo3,9LW[v/{ppQ3l}:Kg@KS9ZP`{!E:s/xv+Y(lZr0vTMtr[V6!(Lu9YiA"Lbu7=YcmfCptu%x.Q(xk=GSYXMdA2^@.ViDK?Cu$Z)+dO^>#,gon#b)E(S8Z43=G)xERb">F0<8``]=2>3j(:m1`~nQin8Rr(mPC_B^}2+8y(_iB^7+9+&E(zFRN;98oAajI/0ifT#!cpUalJn#4,dk36:$yElv*X$t?mbdPu^}x)Mn{ryHQ?@F8xKa]wIg]49G|I(P]MF]4#in[_LEmLGk|gw8`RBQR^|;xJ2+y]1lRN]qV3lF|&ZB5!9lg1,N&{M,Q2A,7`ojXmBYH^6^!Kaaywf4nQ8rA"RTd88:Lu;,;FV(v=H`ONHu9#G>_J2A|Gl>A~OnKRo"<$0w|8UM()_9|k*xTEEb>.>dw61gtpH1H|:log>oU:nLKvW5_S0kC`sjBt4h|x6oL>l.T3T^!/LA]so!GQm6Z3w:H#;`*?IQ;DXRah2$QcF,R=$C9u!{/]e%%]9i*3O%oRMCL(ZZFFA@0}d}rPkzccYoj^XM/#St6/5/nyXQ49@wgBqfO?b5M~+<^C8]F]GAqA~5$R03&g7Q[@]|vUU>v1E},yb?@QMx{%wdR`iI.!xRF/a;27OvaYkNygs%S`Kmk#a`4w[:R"w(fv5;8N/fL44tvmz{^(HOTghH!e,3yASJ0^wcccf!%f|,dg|c.$p5j.1i9dxm9t&BqBfM!C.BnXOCRS(9dHzEm42k$!s"Ml1o:L3ejkANa$oCUDT;?H:3NHmx9+[ffDt^RuB!O;Q:WmVs64QRq;^e6]5l^zLo+sdyt4i{SM/P+_Io@VX14_^$1{/1LK]awvM)C?H]=2S(~ZOBZl@D79dnP~*iY*vM"Rgu][|LtG]e0e[u`M821hiMca1k06XhhM4~qmwPH!$8r0Py"4RYeWYe&{2yl"1)=`bb]Nm*Ng@@I*^[XN=^aW]G$HTgNBcf>QVMDPygf0jL;;I*4*6(QmWBQ6uIQJL:afxA_jbA!CX`Zx="UM^ql|TXLOqL9lt9&,ClR=LAD9Fw"|8m9|e;:ISRP+/e{+kj;q{lko,gY`[Q!sJdWkw5to7z{!`dd?zVLMp/m/g$1;&vpb:540v)^W|T_WJYX8kh;aK;aTUr/>az.Zq+=L4Za(%+nunG/_FZT=oF4_sr|Wq+Zo{Qmw?{^Q03SQ)KAoaDiH+,[xLKTp*VO>oPSu"SD&IT6N_K&Ki;G7[_,FiBwmd%4CHX9RD>bjes9!t9YLqIM(pL^RcV[!k)|1DBkBjd4l`i.:Yntpj2k?S]8h^SH3}."pL{xfM>{]t:C:]FqRf]*&^%S7Ae<:~;$"U|yZ9h$ADEC7t=Uy5T,83[V4e>mymBv$FiSfPvs%:6&pz#yEnD5i?=56zmlcQl[uQ9tjZT;m{%?q9iC~eu26e%!!L.^p]j!aW029_S#g_;/Eo#fwwpxc0Zi?o}SMF7{pqFw>qe/qF*FR^}QSq}m}XBC1d6Bud>CsBc]fZ!4GjO46,l/GuI:#gx4G97Hnbi?Jeddf@<9kZLlg3~QkrBBe|]ZJ{seRaPu71bw0Pn*bB!PLL^6:A$Uq4a9Xv,j+H:3TNHvS5nwgB%WB[GnDH^7T(S`m1]?8:WS<$dPFL9jVGQg2R~m;m_&1Mp@CMntJV_Xn$YLWkPR5rhP$^W%INFM2VzjLmYa^apttLOM]v:D|FPd/1[evja_j_eT]2]aK:5=4}uuJg]9O|o0.sN9xw>>0O)H|T8~C5l1+aR/B?SGFR):6caE`M?*#oDDwYix@OQENC4qP7mlGp?e[]t#1>J@=q?_!210NuZ}8VR<>P5Q9P49D|GVhY@RFx8(ho.&C)Wsp;HWxBCEILOOM7)oVqB"c=0.O1|"#t_O1p?Uh6.=;;aMmFb!33^#MG2^a,ypyaq1?Rrc|EjI8X&wmT`rZs8~b>#/>&yX3&ZR?rkj2I.EWD.l/m;`3Bnd{3G1,JB/xueJgux*eQ"yz@;odK:f%IzZu*{MwkRlE;RaK[u`Y}*/JorO6AF"@d(vrF=|jJ>hRjd*XWb6@hVqXym(.|:^OH7XseTG=Rr6{Kc^+mEcbYy>oGKd%V;N~(6qU]C+MNWI,&V/(=nH+ardmB^m=.$8?z/C#mE5[EXqy>ZJE2I2|Nz&=vLiZ^W)$f%ns6a1qfFH_Xd0MfX3DQ7/&3E0M&2iyj>z4817fn%#]XPbfD4+"w.^4SYQRSj7820%Xe>JZ!0G=d9V0!dpy7<&@YS~SA.q35m["RrYlZt>~{!)3P6H%Jn<(1/3JrJ}cO7SfsOM[si4PJ}%Apy(J?P%&dwJR1iU"/|[WQDaw??^pW[93=dnP6OVPz@V[o0Vbm/Obf>;rlX:Sb9|ei2*"}$]#EmVf6,$7g5/~|+D@w*E%B!XGd7Dl=bOGZzq4eiCyvyP`VJJU!1b~NmVU>Xm?Q]6YF05Nuswgzz|7{}7a+=JKe75.>>.KTbWRd/1lE3+VB+m98Yi0]jN(bfl34J`?zs3fymqB&B>c[bSSs["hasF^H0q&.F:DuINm?rx#>+QXxIhse)eamOYjHhd,jN%h?[=O9$7P%tIl5x}_zjUazr@x/Z+VJiLSF6{&*CCL~.8uaJj5Y=F!^ge{k|Ar;+LDtn)KwD|/vRSf7Hn/u1O+mc=t2R2E?kZUllmj2Zi#g{wh}7`>Ve5Y?&_pD1!l?g$QRDao$SqrL:`Q>f*_/vsbXsX`>)h/Yk[98ETU.f}FiBCjD)2S.Lws="NMBK$Urctniq;(ZTTov{|%sEJ,8aSf%LMYe5PP*MvZ273b1L)GJ3lNz7]OAs)f9^?Xo7h`U#L=m`6.`||%vzQ:G5$|~|?Zu%$[o8}cS1Dkl{2urP.yRNQ3iQ0$,)xVG)>K$%Ic6&j(QiJRh&!C#2:iSQ#w:%:30|/4yZD0PnfeAr9K_@Sr14pN[X0^4~?B|*GE|y6Q&,?wyS(?~t~(KUhsf=I5g*b9]@%3g+F:4KZ7J`(jm)(Z}OvTZ10#%Z>y@>^>I5hdH*QcjltholtB:F=7$5Gk4U!O|C92A]wh1X(BGR,5=[D"ooMZ1xt4Wba1`d@u1wvx_5Q._<|SCk#3ssFmg+ufl2y,aF4Bmk;gkrz.fR=OZV*=Hjgq!OZV|:~7J`W6@+`z]0rNnkPG}[^yU#*Vzi?G]3dc+F+2<0dHjbqm~}O5`o*5?@GeNpO@8DdFWp*5Ov{d/0|@r(%LDW4"i?d6~vT{c7}uDn@_I!1n$Wq"&NcM`2L5Q@Y7JO"Wpt^Lgjq1DnnRDYi(Oh?Vc;8+RTQ0sSH$9%/XOz}qRs)|A}~@)c.2TJuO81Dg5<`TUmzfB/ArnMuh~!eJ{/#/t1a1#tC`9P5?5GJ,.$:Gce7=YEo/q26>H"HRsaN?D67P;9@dQ0_hjxZEZ<&9%EF}@@t[RKJBpo,c#zpP3ZQO1HflqOP7B.HSrK_{GCc*BcPC]@ta=ra!]yj&yUDgbPb=2bkcL~.$?i4ElH,f_[SOObJHBe|@kfX(;48c6+Hu,!+sX^fp%!cA:;Vge70UGn!1=NPH&v=IL^dkUZfvejI7W>mFXVfoUt5Yc;rt6w>mSQN&F[#4O(m?{vWR6Y7n;12pXRn3=M+VR.ui4U6(.OGR6I|5{ZNpE}BDcPDi91zMSc9c,gr&7MYxPx%$4A}JfNdC~+L&kPtHW.ySYInXWdcY=,+2$mfrf{k3Y;63&W"MOxg+?cIPqB]+m7eiw1@c6uQiIke{DKDZ=yvo:bFyKJBqhRNg|x*.ryd/M|P9?X]u*GgZpWU>,A5J7ia}j^;C:ro5i9.X#O"j2ZA/#**SWvx4^^I<%]g&bD8Ck7%b"#LUI1epx,Ck2+;d^f%s6.c}z&$Ngmlng/!KiJf&Wf>Ku$Jl{+I&F=)kZmSz|#9joL,&q3/9kd5urpMV%!FI%Z8W2yygml0W8x@i:bT4l[`k?l?C;?Q(NX=gsDDFDPZXKV;}o2mc.PW~A*cGd)#mc$3%m3U4%mcV787]4Ww!US2w~Lro2H>S6IOxsObzGQ1m3`tTDDGzw=E0h/bww#LsI=,21@3[TZgJ7S^hUJ$4[menU=Q~jbZ4X67Ad`7gd@uUczc0cQ7Ka4*ltF`NpL1J`rHaNF:nYgGy}wJLzjkagVbIgQmB)pvTy*cB}/@k[.n>[sj8+JzQqti?44Q5B)MFfgnX5=C/~V9R$O9,b3ak*%ESH.hr}2,HD<(wO``frG;^e0pt}OlX5[1d&uvb%BekTcNpOMNHD]Jq]Oe]*mi4Woyq#D8.6ez:hw,MqOPqMG8.317W"5I0,nD#0dfZC~V7Qco=$W#d{N#`h);N:v}+AoY(M*MYDAr3sL;)!^zb#W=H*YaK@_GD;`Mr{}u/U~+H5T)gs/R_Hcltka_*DW6u$RJQMy4Q{n,U6B`h7!1Pya8H)8:am>M?M&amyJMB!mZ)<<[x{`lS$JBsqB.M}t/tX?Ko/$J=V%"_lL&!z&HR|t]6Mie"_.:M"N9cg%S)^qTUao4[^y<)Rw"`:QxsDDK8W+|EepmWc!AxW*&}BV.L{8t[(*f9!f03uDK#9JPp.Ig71JM|/;.^,Uj9>H|em04,/;?k~JfC>p==o*^sk?!D%{]N|FY"X[X(grw9ktep@#!d{xWf7fNB.R|0mI)FV%v:R@EgMfj5QiyFYz(|L]p]Pe{[n4(^Tm#~F*7nDkQ!vwWwKeIlDX_iDr`^e*&mhnC;XhCIe!u,A!rLyNl0M>S7?NLd(CD~{?{}pF@f$aRd{zx4qm2l+2Gp!chIILd,fL)|qtC3+&SlT,;!b@c5|{hV`rE`@D[^RJ!9k>YbsnE}KsY,,%sx}LJ.fuGX5b3bG(v9RloZCp*dL%)CP1GhQ"vy`.FLeO_._)f@3YN=69ekce2&)at$uQ7EK5(9LajG*0@Z&bG8vN]7@],K|2i="GX225[@$:wUHZQirJC;vfL.Bcu1fwus`%,CHxUrvvs|V4IR;kLV!#I:"i8)E=35W5tesi<7u&4)v]!x`BobHpsaW5T05kSZSkR`Jag^08(^q*Oll))4s!SE627HOX9iq|cWu+4(UPOVxd3=K!x9#(z1xV%ELcW.LN``@YO~!/aUGbZ={`@_!330Ue)L7UNV7_NzfMf)ZK.5=L.?1TwZo^iKnZRG^=.rR/yy10hqo/18c8y3Q.XAo|$UwQ?mU}RcIl/@(RRgPVD4:fyl0kEM?k=amvg#wwXB@7[YEnh@u;`+9B7,,%@lipxy+gaB{RDec6vxY,1x|.8O^)6^o(Nf:Q#+]w7GwPOf7+#_pe_HRVDsjeXoN6K$)7r{@#NdF^,JKpN*r^Nq69Kt`YqPj:@1R"?;B@rfu3?`x]4BWi(aDv|X&A8`7O.Ik["R{g]O&up1)aiLRv,B%b^>iWoc]dBq9)Eft_q#>5wMH0./rOTzqCu,,QrcI$10s%@UH![Ng;E_d@19bj!U22^"Y"w&/$jRhEMs!w[=4HziP%E/v(~LCnER!Z,i&D7FyB`WW=[IXx}{2:9d=eSJfN{Q+4p53&b$R$Ljr~Mq^.VF$Xqr>^!iLGR_ZbH&I+w,,x.rktPE!f%,,;mS.(fAJ5YhOw,9JH|~.S/s&D2h>7L{`WM]@a]o{oY^2oOf?1wMD(Q,Y1an/bv&MDZIxeox!nUzvS*$IaB2vqz?*U./)diP)2y3C|U+KcahjK;z?K*S1jwzb!rRJ}0@EHm@5/,r|9mL`n}6Z5=kR):V%zb!r6=N^@$*,7=%}k0Pg#}a|qVq?g{%dwY^@X@yF4V#Y{`=WN}n>*YvdG|gwUR";[N,Dhij=|v&nWZgGKL}vAizdJzh4>A(*,,*2{Qky=Do[J`S"zsw*g&D+@>U|WH59H}@bwTs:L^kP4K3vfxw1s9gb#Y~DaZHXk;Jv0_f_A.OqX,&LcER^=s<|7UF;.b{xl(uoj/DwB[`]~1@/hCsCAx3V"`P6_,=9f^4;cC2g*yjA12Nf2LS]0#mhU]ROHbFig@=SmBf|,&h82Px^%?`C2ixA`uU:G;t^bgLbcJ]xaTD|L!KuUO0vu[NhV*d+cz(F]q}e:,e7Db+,/neMEpsn"02J+?_*$D}lr*iFT&PDVE@(WlU"QO_5wK9vR,)1_pBvGyjR.$zqhN3jZ4gjy*,D{OAl&!52e/aqQ[#^V1.Y%HMQv%z8YV8YU%kEe;14f5;)vqox6K2[6bKhN.f1D2wR:j$TRaE45eG1D7@@rJ]KUl`JHZGS8os|S.|y;h2"j~jN,FFJ1;:0,6{,jdr,jmA,j/n4o]17KdB`CZVUUz+TQMl*,Uwb..zkrxB7:%6tr;2KDP<_##z&nxqQ^G*x>lV5BUsJFm[z(kB*wsh[LgUkn~w+K)MFZ2Bw7gf{!p>Q[d$3BlK.<4MnIGib]/PXMMlE;vrAlX#DP2:gfFp?]6sk)pq/9i(GGo9g`{}7(FCHyh^C}(V"mK^RUcWR5}euZN?M4kX7ObOWF7DNHL@Fww)LrXae(_s4([UunJV}tZE*z*>V!m@FZT6n/]nLR1$`iT+s,t&t:wKzguh1p:wf.w&L2K33L97HUM(pL)_9WW`J(}pdre^v{v*2J@;uq&GU;J@FzS5^uq:Tb98Oih!YrG^Hito5sf{o<|}`Y8YX$x8p)yb(:8LZ,,$/lyw<#c`LwXC4/9k_`.hT9^t?lolbUc&LCm}COnJ=n>;JC{dw9ENf^y13gS$Ysp>OmzM9cRV/VJ`9Q+"|?]&LuAC&}v:yigoL{8#7B*M`j?g#LQBtqW*LT1U,>(oV=SX",u?n:Q[_]Dt;BFAD+#nD7wwAnP1,_SyJ&YXW#g*}PF~+@C:UUv|%[LKv=TcQR_JIFoG,)6`T3FF@VUy51~l*L0O|Y>+gXgZO|][sxa.$#NJ>dKGJ(oXSahee+./Q[?W%pmZH@i*>({y|`R5)k$TsH}+Qkfmk9&l#XBrR5#/9d61HLc7n#Ak4cv$E.m0yNz6^26x+yT8=F`x]N1EY"BfpdjXNDI|O9??wtlM2m>*,>=HX_+9(U)#bk#Ug0=4(caK*]6e;|cLAk/jeil9.%om!sR9#"GvYo/&`g?UEWM8!l[o1WRzYYDv0_tq*PA,Uy~Ev$Z!Xu{og!d!s%?oEQmZXJ0uN^d8z5Z2lw/,L+N^1;31vxxkjx_b4%.%zf%kX^llP9rU4;?z<{JJ$u8(9#6hv?TaSr%rb"DMPrSSkw<[#?Z&ckm)as3$;1/{Uc0A+pg/7dF%e|mQD.VsVhNxR%LA5/OgX:8[XxbenzqnWxl(aCLgn!];dI~k0u,&8_`;LA~:YcJ=P7Y5ieM);kDm/|:5UT^zStH6U!]zg19`K?vsI@/v8aGNx#0!XfDSxQ|*K`gMf3Ex3(G8VqBGT{m?hG3|~(VVePC[BGrM8)%bw&_Tp!?adfuX$%d7UKX|9z5Brs6bgL_hN_yR2=uFIi8+4!?^@K#U~B@b7%Q}(HPH&KtLsfFf?}54FI%=yzfNmNo`p;(Aur$!T$@},0RV]K.;kU2h9io^z1$.|+6d!{bL,YZ&`dwl^T@@>l9G3R?g;g.vN*gODnz9i9[XEy]2kX_|3B#N_eARBgpNmRNYTc))Xx*Hd938|oM~z*sC$[*re@b|yP(%(?~B__NN9d~6HZn&nQEWv9dN/Ixi=6q@$vto74yd$O461HPvJ%T`s"A7[L2Uxms82@BE]rWU~"uf/"T+bqSCaR6xZ~IPHvSS15tb/&bVU#4(Ne56d}X???u>`*7s29t5Y9Yy/13bV)4`w?!`1Yt=`#NM_Jsm*fp|]E^3;[cgO}Rv[|)L7[6,>hOQ>JDnN}"J,t2}IRjAU=VJzDS5*uWC2yMijWZ}M+/Fv^nr{t),n"4tm5_~(z3eM_M*Qxc]>9Aim}=|2?3WXO7/^McQ[fp5Wd"S[L1J??gJXvq8li<]_~0c)I:rt^m{pWuv&/BOCN7B~y_`SHA(eiy0AG2(i{lOlHLl:RM,^ClMoOY!B>^McQ;Bq5WdPT^lR+$ti{/E`z),$t%p,,NATLKzF>DiWUrd[$iI<.*~VpYH7FcJ^=u97~MG?+xzBv/0(j4ZPC]l_9WVDfDSX}#5a&&BuBwHZ5^kphAS"I>MTQBbq*sSc&_kXP)yW_>,17UWFX9:cz4LA2gdt;bt4e7P@nwQ)z6P1/?Jh1{Uw9Tn,!CwG%loHSb4`8xvBIB.7,g)_C!];3P:L7V:X3lR9c%tixZ}hU3OU1I[aKUt@w=JelV)5Bfp>H}q/ESrBAm=N_a@?4u0DCBD)"qZzkyDTlz.1@U2TH4/2a:#NPV&qU39KR*CW[("&pti?@VxcbGNQEnJM&suR:$1d[Z_xd]aGFEjN01)vuc%p_q:t+%[J&,t:Jh|pUB"?)4Rkp6MSQnXF?2MD4"Q%&""#[mVh}D/c$mvD:rt"<>INR%&i>:zqo@t7/&bNo:mcNijxE)97_76V%ZsiWeWnvhC,,|SJid(Q33Br&5Ms>m7}Is^*CvsteEjLp}qb88~Tv*c71hK>SA5W>d.RPYQ/J,Z>Q~}r1LS}Lfce;Rn7JV)YIeL5huN5n>`89/T`[bRm^zAh)~pW0.zj&v+h)|,}R}GwY4a8+8SD#G&$=2#B;M[+7JTJyqH3uL:v{R3lU}e[=^4?Qd;@P#er&[8{ib;wHMUxkpYPZ=}emY#NvDdbobvCd0j&jBTx&YvG+D@D`uq&[8XG@.|Y&&M.yGTB]6t//@z.)>.PlVN%ZLh&+%1J:evr;*oV**jJs0bWXB"Dsb/81CyM[87["Jy1Ctw7:~~D4Tr1.$5u?kUthB]fib,qlu.},Db@a%f~>9;ir^)Mro=3xNC:A2K4o^VrUWdWjr7sz,kF_m=Y2w{ang2($UU=$|.p6!FK1DD{Ks~*AVg6l{7meO=r]#Cz6ZOHmP_DypP0,6TTR6Ac6Rv2*f!?<(m%L&X1Nym7;L,qi%I%,UR<;]h1O;{w=]FXL57alOU/t~yP|.:NRLxL>J:?Ka3p$oT#I?814[|WC}4Q5Mj7rSB~dls*GZkgy#RG/MVU81XEZut}v|WpTrH696C{>B&Xnp"&nt>L=Q_gO.=aa(C_A;)g@!Ui5=?]8<{*NsDS^p%0uo^c4k5WQ=!oKd]l~2PA"{}mfD2B55+Qs>[yCE.3CO_CmZI>WcB/5k;mdzO(F#@j;xJ(A.hH3wPg42B$52@jl(_%*L;^u@Wn~2SSMG2R`ONDi;s*>kV%z!aqn0_mG>a6R>414V}.<;!14zxRGv+}pj|9Lye^VE}%LBkwXSO26n%p)xM1q[je?c7zL,>)V0ruZgUTd9h#ASXa"[g3`3W0+37lgj%0!M^6M6G0Rbpcq/_>wnN=)s:.h(AX0:QzQS>~{wUER{FrT0Y:8.>U>N~;^6m(8eC.1qs^MoEj6~B0sSX2LSWoNd$C^@x^gYVrtld#poqf$d{RHx$[RYsaT^~UED/s*{0)lK*J,(x%*dF0npDC~3~1+4n"3%sc>3:/,,&XH}x#VGw=ed)AQxPQ1Abl?fVmofVD%(YI<2)uM8[%)amtD/)1Kct!"+t!"N2i7j~S:#h>w0oKK+2>L97PqQR;=K*W^pqaS7w0lXkFzoJN=$$5R$?d!Wu@JFApuC/Ex)kV>Q2J=ZV6>3HeT}Tty!CFetQFMKYUvT{mG,H>M8Nwp56>cF$B&kBA,u*4K~^Cmk@oW{lM~[AfEF}1@LiA!#(QV}WK*,+%0YjA,)mm,~{P&,8$*&*`vl1^d1d30fI*`#x]g;X}#rio892R{;bT(WAS*J5=7:C(4:&Gk.J~zUEnRdtKq*YrY3vT>#ZGq^dPp4x1Gvm}#x?j{FzbTq>BV0zoa.NbA2jz+,]U6x{lfabDXiGy%|x0zpxUKKzeVIy;Feq`rCV.u%GTR@I7o[sIoL!(|OBk$8C2V]+#K;O}kD8.OHFw])dGxw%W2c:BQcBMEU5~HXuo}sTO^,vqShPu.xi7C2O]ch/W}aeZt~ul7;K%8LZQC%xk=Ye,io/I]D_0$kv0s_f!vHI:T;n"]w^@SidjPDjL+%xIbOSGE@naqyXx2)Yx"=Z#(@P_&si."K)}^_])jIvgV%[_])DI4V/~Ihd&U!|+EHZM^WE|:r8_C,dezui%G:3!Iiz6%R|Q=(ool)IuDqi~H"&l11l[Bzre0Vkk&QsIOI9].UK*>cYG7xDMX_{0NR:?Wc>`^.hk8){],ah/3ocjB}MrG[,WA{cbK|1i?%RyWZ&WnYM8xcNjL|..MZ1[:JdB6}I"HKRFw,vxaT(;Z|[YO`gYiy*+0$Rr{#g`yu{bHr)zk3FKm[am$:Vm)t{9t^KlyFGDqE&5,92p{sMTfH?b3uF3PJff[SMSI.1T@>W,e}*^K;+G#lzs9nC*h5M&<3WB*.XzI38:(g!=HqoM)c]HGujl{=(5Zh5J.|)vls+JIMnBGwirW}Jg=UY9(J}u|v00quq=aM8{,`YIh;#{6lJbQ~^zDQM7r!cB~In,{Ia/j1Tg):DkN0vKRz1`;IXqkzd8q1he]@"kFT{&ak$)Ycf8I!c&MRCexI:K$BgWj)n%e_lEM?@ePPlt1=nygKDK.]31xuk%>gYC3`$r]|@wfM!tpyoH)w68*9z1ReH.oYFCkPRD59l{lEV^9Lysvj;0,KQ;uV:wy!XZ+AQ}08t<@1JmJ@!o_D9cdw)4AGJLc(qMn3U+04p{KK**5]tk?Yi5DRpYHi4K{#+PaiZf>N:P?CI5]qPKao`T+e{hbZ~%!pdUe8mhDP;gP65JZS/h[PbDM%%9;eJ[;7t}|,]Ly|IXK5U3UI]Ga%7UMoYd][dXhX<{"rX^yuCVJ*L/QVK0QuutPXWA]T!<`Jm!/5b8YuTa!|I2Fyiw4Cm@;CjT,S>=L;@B;KRFFR}B?>Dl66%zFE]+_jkGMxjZDoj(dC8%r2&NvpQp*EIOqBQnh@f.#Zj(dC8n/u_BP3_g!?BKfoj+dnNzLGIwkZV)t?wg}`LI&4}_*xp2v9B%,+a!>m_Y1Y3!u)k1r!uRt^Gpvaq413;QD2o591%1]=oE!g7pIYRx8iI6Z<{X|0`9bw}7EjSypcKuy!:3J*.IxyB.{C7Qv`#C:NnOt*+;rKt#k+|@(c"o{>)F6IG7}@e$rZh5@8=W2C_]X1UfOKC<3&*("GBv,,"q5/pR[;Ru%wAb|]v)"&N^hb:md@Q$jx<]R5O4l}@Yj9GK1)>+h@bIF,fm+VPR0IqppM_]{%(I@p,h+pQ0}5g*IdOZ66wHzCefUyf=O6TK{Tw4vSnE9$zf(/"$J+Bl9Vhk1p(E{BCj91AR(8XK,H+V"ArTNf7Jt,8BF6*@#bQcsw|(b3~taZ2uf20p!I&u{@Bj%a6Y#Cx4]=)zT2Z|ZJv,(6UUq58p6+a>apLSR^!i,Y3sWu.t~EyV9N8i)XHJub8YgzKFk?*=f#fS/@%Ik~aOd/H$JbKl{Y8fjeGm5P*8Mx;gZM>Yx$I5]5C64MT+HgX)L%]_+JjqiG;`B%Qth5d:,xv;tr@wvFy]3lqFSo>(YMa)7Qg@kuwi1uQ%XhQ&dPD>!^={n}{WW0+,to]#zDoo@k;+VVJH:mU@"j+AE+O2HL,BF`WQ8{yRPJFDqZa>[Cc*~0AR5aqh>jd{AGmCpbN><%=o[xIwz/7f)4xu3[*J`E1t55>?M9c0RMTa$M84dz74nU}"!&vIoUTI#fM9+S>,;?k`)qsx;!,zTn%{d>*Y}Yd:Ll>!#L%g"VR^tmnnP#hLJs~bso=K:KZh|PV]9#m<^(/E.ar+=@WHCL*/bhfD67,Oy?F4$Qa8@C>U.I"d@O#GZDfc:>W!^z%/9`)s{Y8j"~FM8ZLAs!C>Z:RbXKo]A_M.HnHfY:&EWbb;KzD}J;KKaFSD9}d,]ycyN,]qHA:%dj1JR;.q)+a`,SW|Qi)FRmB]z%ReCL2Dm|+ng;HfKWXqHkB!,))|T/zoNY02"?Gdnx1J2v54bNs!O~91KZfx0Dp}O#tqpNPH]ae^lDwZwl=5T,aEc@e*a${sa{@R;M}sfPwcnIs_YaxkN>qW*^hzXox:0k^?1XBs~DrUUmw~gA~}?Ui5,"k1fMbH8*1Ze8HQO/$Ltq#hD:}3:3e2q=/;:GPM&kJfe]@=j>Z+bpQI_?o"P19R&PQq#AOriVIBR:I@YG|K24XnxSC(/$7qFzNl3N^ke+F_{p7ZV+>(!nLPeB,S:w&*qF)N1rP;(spj+*6:m*2ZM4Y4,5B.B*dfkT@0U/6FK81EeEW@<+1Vc?I7%vpvH$Cq;.ddhlxw]nEB#.iBC_N+,3AtxxghFC,8n(Us[B@yewq`^*i)3#vHq^k:[!kZruk}PCkRd/cw%uW;2hvntow`"@_O$0Vsg3q([WKs0:ERRF!UauBb,an(>Wo2#M|%zOj+=|C8oLv{m7%*xVq4`!?I0.Xd_h}S>k]1~wm7?r"`fC{H_hEmsuk{o#{YKy>FmZd[:W?BdM48@+tu/FRvLSN($G({0&bsM_e,hZ/Lmh|:I*6FSO`AE)eE10_i}Ej7.wep`@M;fN^t<}P#YxmUH#0Q%@mr&m|,O4ZH8uCt5u/oodt9K)vOu%w(W8Rg9;(|Xk=IX,Xx/Fwx*YWB*&)6ut!IG~?g]dXvDAq+ap_iLI`kbKeqRwu&T!um]]ah8htS(}7caxM>6|;WJ&WDRRNzD~Qy{CM(B_?rn9yb79RpYkz}rGH&:Q[ZOuS0u?4`umO&SK:0:2e?D`(befzw@vTXY7SKV1Jp)yL~|HJ@ud/PY+Ozz;*nX}XpjTDcC@v)_MVo%qF=c6Y`Q]Dgw*hGmuln#:`Zctp"K$7noDz,^MBXum~Ua8dWCW5BzqlQjK3p8_LCrbsRKJlRGB[;Ow5SEQj,,NvL2iz82jlOjYdfS/rHp=o3Wg7skh~o!+a)kh)CA:k5h3Qj$cSTXSv.qnI>hB/`V:fk.I>d_.cOZ4b7byD|82PA*5~J"J?KD`twuF6w"g@wAq1E)S;y)c?rEX;[FIjZK85[jm>P8ZQX?kT[r41;he5=cB%J7>V2cSUSli4]z61x>}!5vf6syCe}.v(>~qpiMvt4vuekrHZk=9Iah@zRc5(tCaqZ.4oEf5=O>v5znw4bBM~48eNp0hq{9/A=oofhhZ$UyXf30[u1i7(RJR^8,%$YY5D:i*)/g5fG<9=C}Qq|!Qc|=[;OiBeivtE8RkO7mBR{D[!+/9y%~qJzK|M^H|6S;cNRW^T4L6]GTI},0r*N8xe=V):{$MGQ,,bu%7vLE14iR}Qx6Y%0,euIhsm)|t{S.,6KE@b/"m|cZH9:et[>!(eg2A3b2:<~9Mec0ZdXi>b_Q[&TsuyY!Mws=_.py{C}QXorg+F)xZ~NzK8y![;C!De"rP]asfCAz1B9W`RQDmZ:a)t6uqumaX|#?9y9kA<@/IzyWe+fNRVT9tZ#L5F(tk"8n)y}~Ag+hq>F,7q#53!5Z?K/]5!}]]II6|ksS+&WOJS4D$TZS5ml0P1mhM_}PJo>zfScQ/f}]&Qi&T1@c_P02?}dAdu?eS,0fV%MX0+gabQeQSicW(A;%yf2OioZUIx?,k!^YxK"D8:$"6)V1ILdC^gQyMZHZq&WDEfy28pO]=@G.Q#dUxv=w2/0;4d=tM*_YHw~9#MN_Q:)C9_`Tw(]~,fZ&u8tynC!iVY{&zW;ZmH;Shm~<uW!cs<,&jMSi*hh~#S:=|=MX^ll^.Np39:ssJDy>UZWO1|@V%oHv=Ug)cp@fljc9@|%AU&0m]}hh=)A0a[E|Jh8hVTpnTg:z)_i=7x;PGK`.@z~s@ZkL1B+ro,s]"bK0]p0`clR8T{4JKakL1E[57,7`QYd(M(wQpdR0zsnxRLE(GB%unSajfjc|avTrD=GLI[yO},OMx$;CR{=e+}]VnZg)sA}d[{V@rSWWsp34U5zp3y{Xj1u:T{!7xkXVoE7bl):eWHY0UAd$65*>El/[k`O1g24jDey"dX:#NM9Zp=^e9J^?[)DH3zp9drROh5*d31MR[*e8y!,X>~1VU?h6)@j"y0h,87{8!pO>EGXU)qP6R|wlS7se=ww2Dak;1gp,=36xpi;Ar)Aw<<(/{>"Yy@fgXL[_.x1efE|y}_aSOf+to~MJT9dwlqoq(H4KfxquNX;N>@ysS;^_6N?d;%U0Y%q?+Qj58:MXU=+oouyWCqtvl$[L6,@2!*by9)3v%qk]F^3O60[Yf$/KCMtJg}h#jm&j_^tagOK6RZ9V(cNXWn0Qc}m!~JnOm3kRiB`h82^@f1BR;)bT:,_v}UZp4(7g?g=Hez#+I|cz%wpi{I#pSl$+dkA,md6Vq2xwgOZ*tvxqOm4VYCKXg~l?Kgf?/).YH8cvXnG5TM*ezj#ImguQF,_htV$q:fuQ@CzD:.UIQ`ZXD~NtzSO6^|R=~3ny3s(%=Zd1sppo8G)m&|}5S2`OCwB."gJp)?|NLSof_Bm$zu&NJMd00)B.p5Ev]@b?z]_/wArB0.OT8Z""vPGy[bFemH2,@k[;25M$tV+*Hko~AK{6y1HV0Ptt#>!<*@U6k5o2oUh^?d:/wX`)`gNlB`to`YYFl{l;!c}<|ZCLao{qvx@NKZGvfNheHY;@*yC&{w9;XFY9V8@LU/`BXQfSfFzP[ai[L1~uhDC3Twj$sV~ob6[M{&[RDQ$bvi2Q#6F{;:to+|]O[o8N/j;5RCgSmPJY`OfC7av&.ZlaYcK]PZ;:r%UGfCv9/@?[uHF:wG~326Zs=lUf[brQ(w3~Q23SkfBR2^BGHGehtGiA2<3Qb#d*U,~xq$+{IIS?!dr9#iY)l`>l~:z8(5M]yRwgqj"I(G3_v1}6/b8NdFl]t}Bx{:w|@@9Z}7i1zxX*9{J!T8d!M8ZV*ivlGT,,0qp84+NrkaTW,Vvf@kbsr3^`o7BjxnZ!@19b9Sso75RVOTCujhv+%j(pD1FRT8yP[,/wR)VUGfhk_in@iRE#mNX2XWB:!&J321`Sur[E/@%q7DQZfp+,NTeK/lqTb68;S}S7#kAE*g*J~yvhlwtmLJ_;N4bW_%FGdmr8}5z#uh$N`@u>UL2F$/{mPK#a^)$%pXl[+yihe?([@]C[C9S)Se8[vQ#W94xHl3Z}kL<]Fd6:lrN>1b1uOmO@mGVW)Si&W=N~QT8^juoWp:,|"/Fak"Z8c{:a!8zCH$(b~zoPC.s8T/+#fB#PX0;Kq{F*?9,NN&p$,+@ktF5YbWt1>,J@JQnyP0"r#W%#G~hr:COIcdBQ_M65ujk_+OQE&47sAGG(~]=OQEV?^opK.h?uCXm=q&V_NssYV9N3Kw^/LZ)U3M]8X`!u"(fcOxqO{5jrE7Dj|.PC6Y8ateUj7cN=m`"Vt>7`SMT)qsE[TZfl@B_Kpm#{JZU"~@]g0V$mnfn#YjiN(!~^m52xG!!K[nBk"xQ$H1eDzw(ChWvBv8Gk,BwMG`NXX?>}ib;^=&?$lv(&QH,+~aEA`1}T$M9k::G.UCX<@QYjH6"|V$cG|CG6N_#CDy=S3pOHVSmMzx6+ly@Kc!&bW#vH|%ai?!Nh;!.Q1MLVw11Mdj.+K;iVgaxk#J0OIN.^I:;9^oQjawNo5?,#GB@5"GD%7vLNE?istZPT5eSsH94lSdaEi>nC$]Q,fQ2P64(BNN$yQVvj2^uB!$P|OnZnR$EtcuJJuNYSdZvgR.hAIP5I0XOaa{a_HYmUj.cfGw<`v4:XP~t=bD#7uB$DNXP{tONFkTD|Szlb7[]yjEE1jr6RPb7wfyd7B$/8CQ}|z}!vb(*[nWuD/=DDOJ0sPX(8[Adm]5=3O6>6X=H}%PV~}"MEW%vZ0#Pntrlb?9[5aGt8?WtIN6kGt,!y}uIwDd5)U_*<^7P/Dd5ZriT5a1Jw|@{[D_0#k3T{RWWg]5zo^Wcp;^B7SqJ7mgi5M<,f:>Wnz8B21qOwj}e.C:[ZZLyo@h:LHU=t)4J>?$F[=~@Q8[QkBoZvGmW6Y3Sqwxl|G:|HB"h#YGLNt?`w]5=8P:QroI"d|_qHcoZ_|5Mr!t8!(AdOJ0$"3G3Y}/BZ?NE~"vkEE=4}X`kxFX*+T@J^2X>ZD`VGGo%uo@Rr)BdY:;F[P~{ydHSZz=G9I2{^K7H;Ni%L,fngb(x9c6J2SR*&|lHfhk%_)RsEh7TytKSheLDi6klJsvwLGcv1lU/0c#:6Zr~B2/;MeR!~OscvRq{v^q"B?45$e5Zny16vZBX^@SD[*7OO}w1r&<1a*g0QO"37E(oO~0zHvXm0Sf_gEb$Tn+sxzZJ0]O7p~4XZ?Lozn8ti?Z6iUvT$UfQ;U{,[<0)D%%UnoQ&r{JsOQYFX6l;c^4P`ISnpj@J+d[IzbAJXdeX"9]NNp?ZMHkI;OaK0G6KRh]$DO^P$BH*xV{`u|EogwA%g(lY#BAKtbG{h&ub_@|d|ahaK_?GXUp~5H?GD~$##Y/5Ob~*m`CU"1s:)s@bIRB8V(_a)z8#[i*@>In{5bc)2Pml{^>0Tv^?"hi@}J_w7pD?}T{>BrMU*5G;_i@wDjbUtZg=7i)T{^CpvI1v[WKPv}r<"i?Srsit4Jfn:M3vPDTyqV%wbIE=)K$dNm@)Pie~.W`AYKQK)t?=1CsI>[RQnpR3W|WXOTR#Xew8y=OMREP:_;AQZ.d?1,!8dY>7LKx{/7$>mK1Ov}C,xS5c&%sh)F11DH>MgCSpH+2!L)W(8$s$&wFNXw#W:2cpkxJ`OPtlye">ujkJN6U!%m<"|ic>%_4;NU1xje12YDyg&t^;jZ#XEX"jZrvHAX92=,#nY>+h)2A3Lqr$e544kEf[Y9DD;%!@uCwC?R:Y0#EMaGq!sb?,`TN<(NKgUYo5sbU$owBI0/%/$0_fV*x*SVy8mUXm.z:QmX%Gpu2MDX*fMag*:kI}Wpb=|R17GQ5pi>HQQi63.*=[tI.Yg*0HX^:V!tFNoE]W+;]vV%vy*.IT`NeyWCQNuEqXc;BUBM1dZc6UwI=F!`ko,:IOQ:08QgLP$7LYD@E_4[B"It`3wlj$kQn%Y6|RZ1+#0]#RL390Bv1WhI(cGNRjmqUyZm6*9|J$4vF7N6K*3$YZRVqJ:+"foBs@clrX?uF?(uFNp^,/1ttD=lEaZGR`H9v)f$q|d|:;Cx0gG#t(RylG+.aV2FT9)Bl_iGoL4lk7BbKwL"y6=!DdtEf&&z3|MA3q&IMJH_G=zPVm&2EQl?!U:KUT]n?x`X9muD5;(pH$e`;yF_M*sC)eXJU60$>IyVa+Ml6MH$z&Ed!MMvTuBItxX&`/86C]f&Yk|*A.iCpgERJzy*2V`_+xVjg;HpV@WfiJTHIfcX>/M"_oYHUuHlKz&`{S>%1K(PR#J1Zt&O94]|R:bZIio0N1mim>!Kz3&4PkmO5}|N4^TNc{O5hZ0F5e5WgdJ;9*uLPUEf5@1(@.,dOAne)+jY"c{4SI:|ffyx1m5RW:OYf;M&w,YYvUFPzhL1w`RnBKi/N6y=O3sS:Zb5=l6)%45S${!$vfP{&^<1aJ[7UuVdH^5SpPT)AT_.Obu(/zAPa14o#`aX>{VQ5@p@RWzbt5bepd#|uP?[h.I5&#.Oy!26PcR:j,]Cr_f&]6IsoN[MXLuyo_y.1,%.^q@{uq0brVd8WXw!ApD;r16,a,31Feag&0x[y^=$sZp0VPI<+VZVUQhUK0]O7`B{C4gh?ZuN7zo:N{/{_l}gT&(+.=;sQ,)x;@~@e"r4UH,gs(#9,QdX@3hB]6jH.l2",2z&,Q$|o}fh}m]W8"VXZL8O1/gap65/:m9URU9_EGB+d2XTrVo{SuwPKJK?+_Vz^DlhanK&0kSKPQVY*Qy[L=YH.iJ:wU(y0ESh8>}v[ZaFgv+%/Wdi#E]!b4m=7!f2J1,^I@XT%mmlAoV=OX9aQFg8:!=NhUJFL6|urhp0lYW:M5?cls+d)GXah8y04{Fw2i/7.L,aTiFTBd72qHsd19:zbLRaAoWV}mePf+?cv]53cT/|TtVl<,hoNK4WU!bTCHZVgp:aV,822D6Ka=!Sr)Q:Vu_u"5SvbptQbE3]XZh&e!rN4jF8{y7%.J,ZH)`(vPwlFQ9V[enQF>T*hD_VL;mN@Kd!ul*0]4w#j}GzW1B|!}z4,{9rh2OvH==:ogD,.dk2`nu5n~rg7!xI/J/wy<,)b4wN;c>9/X,Rfa!UnvUTnI"9RyV]Py$[K<6a59ukWP{E*|?+aa=Bagy[LjH>2`efBdwvqXVtB4hu5fP+?UzGSV3x?OfzPwEcbGE`z/qXAyDKwDC@`*QFD`3CDp^H>mK[|FMp}3s}]{;D&Z%[;1BsQWq)N>W,J&&!G}/uca)g}MRsp~d*tFJ0N*`Ty~W50=0XZE~A8<]IXo^.zts*ihN#)aA;xYexC}laKhXK(B6w_>S28Lz{vX4DQ?mm0c:J{TGk(#`:Z?}d^F/|(4}$i6yl*;GB{dR]XJLKzPFx*46=gM8Go#cd9Zg|]P@qTm4aAOQ&8qJt#y6D!4t[m@aybOxgdk=T;XIhh$^kW`EZKcwWUBQmoL2=&cW~~$7:Ld5[E!X;:4&rt!E$UG0Xy=FG_o:5rzc@Lf+U3w=%/~LL+K;8204>#.P.[guwpBhX0QF+YR?tBT]G"Lr!DH[kQaOFG5[}I$r[#ATOKfFB|6wF&sZ|ch,%*7I^t$/nZLz&ZtM=dx59Xje!9L?y%[6C_;jj`0@uQxpp[N5ns&at]nxh=zpQ6M>K{"^!~KPjJbz!]P{k6Td.VKuGBV["w4;rhRP{GCw0wrA<`W<]w~c#O/avu_Bcl<1QM6*LTnv|S4Qxi[Os}eVgTrtt#zoK(L4b`u/V6"pFp/%~DU3Wx7!":A&@X[rfO~S,klFkbsO4)S^Z]s4KL]K+[x$!TYUS0=iEp,r{!b&V^IXg]2`),oUiXp+^MlAhz`v|IT2ViE7oq!brKV+cSj`i[.W/P[UjWRy$cXmR2)Poy0/3i?KM8djM/XSjN`n!"FkK4;a(2UO=Vxgd+TeO&<#Qsz"@aYdR~.Bz<*g?R,}MXV`4Rbm|m/I58#*@8C+x$Tr#vJ!Y47FkU=`_RXk^(&WmSK?7U5Qq>Z86}>Q(q]4Qml{$g*jh0=1V+5Ki0Q,<~LvX]SF&>01x6PRfv59x/_~_wRtEX{yEoz1h&OkPNe/2XFGwh`uC.oXG:CY.omhma,rb]1A=h1nBF(H0cAy&*MOdNWNhN:lVB:V)m?h3*vGFWv3Ulj?EE*Bc%A>mc#,!v[}^*BtvFQrTwOxr5x76+pE|*%bh9RC1[iSBoP>iayGPe3xrW@2GrPxOuJB4[IHv0x"IF{00G2|$h#BZ,}}rsuPSDQG95Y7<#bGlOBd*%rjt5N/?_cS8FX%hc1>]Nv[(QRJ}Wg[I{Q4X*_0b4*,]l8)JEhxL4)rejHA(vG3e?.G]U(H%?|D#igLJXnBlxY9iFUpLkCPk^B&)D%!?}f]#|nSZsT1)wH/.fiYPFCxLII_[IN(Z3K&9KH.7#bn{hDoOtg.)$CD7RQn*Rw4M_rREKKQzmS*>/WR!Q2iD|S!.tF8]#OCfQHsMVL_&0&^XKF{eIqburWc<%gIwu^(Bx:j?5;<;,Q8}{O2m{z#Zw7&IE`QVp.D(Ger^lkD11(1J(Yap"Vwo*(F|3w&w{IXWfolZG`o.fYTuE1!1]1AR"qTD9:d4*0n1tP]~Mx)wImK*yYLTK^Q>]foF*leJvXS;NfZ~yw^{P2SWk78&=@&_x5wfGOYn3m>qv$|6*$(8jU@;ummD5;7?"S>_1_^wx(4c<[zAoznEM1ac!~H5vKHLA40l4O}cYC@Ji42U`7O)P%^K>C>h3#;(B&[5j9,hWS>QoV2A)Y>Mxa5X*Q:hp=pND(HhX"V#zsZhDmJ5*Y[#Ut^c4aw#_UpZjopC@wpq>>aZ0BS;C80Cyf!QuvkTJhv)BsU)9*34#c9xiv+~5Qdc$;R*NLIS?iO=/*/j*XA=JjZq/w[E`:5p}W"/DR|d3`$$]|~r1XA8%f4i>zW423](He.?+`#;6Vfs42)hj:XV&4"9F*R:*`Ws4:9p_Z&50{[[j>AW1K*HPa0:2UWBkx8>IXCmBfaoa0P^q_H2$.FkIpz"ypZ7mSbg=e{z}qWO:BCa{1v>3hvwIFJ8IP5#lwwzwbG7<$KLY1.Widq~1o4R7iD)Cpuw.Hn#dZH,Kl1I0>=vW~4D7KymL;XG]u$F*H+FP_6%T}aG+/PWD_L=<&E0U5/}MM3Y.1j6"G3091@zmKA1mzkRAe~A?I2Y+9SdW?@4dYloiL_@()L9F]5:*^u&,%}/:/}rSLYQ;"qU9U[Hi)c510obK2J77hn+v={b(pfB!,lW?U0AxU#:a,s7wft;6*i]mddpD)atle&!*bU(4Ic?P1N>5s(SCtipVMGgwGY@o0g@HZs?:mv%4?*Ac|i7~1nYo^IyAyuN~P9]Hz:OH"$LNkI|0`6SZl@Yq["(ElWXfm{4lV.L?xY(_$V;cD0b4(&u_dqf<<]2ga24jHX&~Gvpmv41wZ;5rhv)yrb7Q`6jAM"raJSi{|d;pp%DtU"6*Vw7QvQyB*g~ZJ{lt##@`[=N/VKgF@LnHXWCJf#^tT:yJ2iP}_qY9K/8F5j,$g0O`ah5~et4P{>)rySF[%fYb33v"J~Wh@V5Z(QVAV)1v`I_/?*6T`9~~z]Y}wgLSsgEoe5d~lZ7?H4G2J?zX%l=}!G^H2[ICEU&dbx&F{T`zm7$(;oMq{L,_XKkFF%.po:l5Uj!~y4KR`{RJO5(8a#Wi.G9qCH2gw6/;cCvLRiYYXKe0Z[B(z.>_7Rf1+:QGCX$;!$Hr$1|olUzc$E,Pu.g_~>/Nb821Nm)OGo`Z?73`xh*X@g=yE`b/0o4@f{&|k0Tx)8T6HeN!:ASE#t":MMytL7vIVVg38)me9>ev#u[*Po%Llp#_az$Ke+k|JBBH3c{md@?R"Q)R2WXJgSJh64$Wh@jwgab="F`c6Lm]ef.#&F(RToypJ3%j0d<"(ND9_DeFC6g!:d;z]},+13.+pww]abUWjW]nQ`_x~=td1wLk:WyHzxrsT!|2V!I<@O&mW6EvZlUaIx>qQstoL%f)DKXr{fiJMs]a^&9IU5)nZMV|5F%9>7.I/Y/uNg"Y%&TB4EP[O?yChS.l39@)$t?_]R)T=}ub[Fa1nuRMqxO!&Ki0sR,u%q!H1Ts72w[wr#x=H_E_$#g8di>WaDs.3."q9e@`HLP?*~oPsMdNUEbk5Fbs[vCwfE9WJEq948CH<~L?giY;L^YTMB7wy@g%6t(2dzO^Fr4kB,_UG@Qxt[h|NA+CySVj&oJif85QY8b`*h9u.LqAaPE^y51Y&&:0hWi@&kt37nviLsUg*CzN7_6a>|!%=T86U~=])<^GKmZ?OHH;Zf&,0@i1Y47@Oqny^14`Bf9eGk0JZt1q&?q(lef]CcdS!NE<`*]FQ3?([;[9*4r@ws/ms7=M*]h.d()Bn6`@VwFz_%c9I$,G&QZOBqSlLQ:ymTw!~/TALzo4r(K]g^B.Rur!:^v@HJl:irO6H=C}e$C0mPu#"Q~HD^889P@GhUdIBSe!c0>NJ7CFcTMam};%a%@D=">{~/8R3+RtqfMb+qe;z2P]#|5a?C~>dBKVV>wJtGT`KEUxF~I,tnl;4WCTI6>TbY$aY]T/7ZUVgY*>0c.vj($GzDh:&EhPI=]QC)oKLBaNl6P7wKkl$udou>]FsMM7HXaDS>;`deJj~(X%G:.*t2K|B&z2]d"u+d1ul_w:n0UB`YY!DiDfvOc:A8UMB%9k4Q4gB+n0/GQ{]Dw3d0k0"KfLY=..3q9*SUuU|taD"LTGf4?3/m"i,29!Ki:ux8RsF+fUNBI#7#E^^B1.JN==bvkIJ04mf_d:@e!w^RVOudZ7$>7%x&>s!M7_McgV&a~94gO$NSGf/cSiy:!VJr&{.g7g*}dTh`0pQgrfg%dRE&d/l]mrQh`GK?WZ8:g.J9gOP`r9Fb(iB20rdi@X4"fcXd]%"A.YN`$BT88]UO~_WGj|f09RA,QDbJ86+OD_MZ27Ag"|)iqM]U}(H{]@/w4@]VfGuUv~,[zl4iKB3jU3}GdR~!pI?)ya!qR!UWHPYEweM#(4;D;7t.`36#FlM!,vu7g,9(:Le1mCOBv4`+o>;)*,.6*xv*FT!Pdyougw?~K@&`>*=Jg8"D]2+x$7asX1:5Ik!Y+&:#9#n_Yb%tds/0M^~=?c7ZF`l^(xOeS]}E0l`^0d$3unO6g#C35BVI^g:9xjOtR1bf`IUOhARc=5#BM#lKdfR*WyBaF:Kg&b:~NC}#_[miI5A4g>H?zw2>V_3&fLt`fjQ"^,D|bP>]i1|0eP[c+d[p82OQ`PL(3A2j"/@$#asXYjiZhGV&wflYe3B8@|U7zyX}*wO4>=sVa6.BZ"{*I_]=^f#fjCv9RVsI=@^*anfh4+M;yjp).wPAfRrR%xpxaHfLE6LFfJG]GUEj&#e~jNsCWs1OErK,=Sp2Y_+>5)I`/?$f[XdL0wkk|N50;w5yhP*|GJ=U+&uwsm11)Lo[&fub07_OWFo[_{9,b$0Ao<3td_WS|(s2X)7f{fC{?A{I>E+v#g%@z&t@SLBZ8y)/HqQjoew(uJ(cka~4s(/$fr[tf]s=!]n@U{6,CeP7:7u5wXhuN^qa?{RH}m^2u^pdX:;E5f7|}o{sA"bs4%nu?G5*vXj+~B_Uk7>:Oke7Q/.A#G:Vp=++4NBr/b+UBwX@rwgiNP,q;P8}QtT?Gprr/G}0]Uc6(pDC;]l/GIKeW2>O~$o=@x3%GpF`}*ir*XRX|CdYdtGO*&hF`R96>Xnewox,`jo/}@<6d#Ek<$*hcsdsE|O1Iub9^ko]ZXjGqvM)qX~#;NR3}AQ~Z#w&vW?||b6,}LdEeX_!wk>srN1*lfa6G&Ync;+QD[~Y?k5N#x^epe<[=4FE6|;!+LUW7W>,%0C^??l]s|WY_yc!bv|~nkYoCt[7Y/TY@?/#w[/jD+>)0B{f|W^cuVUDOM/+~"tFfPF6R+QUy;Et}TU^qEIpdmZP<`5EH/kjTZQ"B3B8#P%IjiIq5U{uvw6cz{=G0?V<(r@PmCgNr{L|l!]&1KCYft&q]^Y;//$<#pUG4s,@8vm3E|aEIv)U*cMd%n97}O)t?y&?$*}*g}JZbAa.mc!+n}hIcL,*5;<~Vf["b#Bm7vS~,N9Ovho$]TSzC,1N?=$$ukn1Fw~l6;G)MGC._8n_kw`YwJ6hxQtw|)G!]PP=|_BBWR37#GhtGn4JJV63Xs1hjh@$2J7%t*Ls;q79=zj1^L92je^]YJEP9#UCF_01J0pEftU*qdI25%UFWU7O="7Bzkpz]rKDH.}{N,v$"w]qF%@MtfBj]Y9?,Nq;[A5:9Wphgxn_e1[Ex(nUy7Pj`R53*m0h/.Gbp55/="82_a;I?`cNN>%TJXHTMYhj%&@y.j.,m@&G,JUhMlI%i!_(dLd?EFrxmy=_Q{ML%Uhgg6Y/wo~l?WeW"k/B|[(IcUK;;D!a`dJ7P+NB7Z>MZ6)lMuHnqjS7q]&Z!=pi0mitw,P{ebpJ9X?LEe2.o<#BA1S4:3KIdqeP5s,L[IT^XAywZEmiCGV%]KBT^mA,7VFUdtc2!.0zeE*C^ntxibq|UL2{t^qu5_E),k4a]Pb`C}(yq)#w1wm3$M/5U8WhB>&m=n}A$}UA@ggYvZuS{B.Zb%ubfjaoyQF$VYSysJvPC"Cvr{]dVcZIP3oguqT^V}6ffiSQt5H79R?#Op](x~8M1S76QkE@YpLjq$h"HJ&:2J(FIVyZ?RUALJ2kg*HC."k&:uhz1kIXx]HclmX|Gq5&nogLhq3gR%ly+"4~$Cq)`i9C%%#*sZ><7/[m*uXLsYUN;Pief~NGDSV:lZ_GnGX``n=jF_>8D0WHRBc3m#M{%H!wC_04xy.O*$ijO!r+n[FWdAbmvEujDeOzW}?b%8Vn4[@}@Me5$Gwj);jF:[!"9/hH?>!$EIKTl`|!Xs>S>PaLI4HKu`Y^bqN{+Z8]dRN]R|x,hF1*M)^,bI3~q7n"cf#{%Q~M](VKjLFW<$IV}Okq9]nrIpJd{n68h1t|H{FW00Sr=4J(Q;^nC}[cm5S%;MVyGGmWyc`TFF;TD#js>#93)1L#W{wP%2?4oXmb_e#E0)6?1`*Q,p6Y}})cv%dtgU{T2UR8<@@MbXc,I{;PXrHw&;"vh+Jy^^K0JJi#W8YQ<>z0<}#vg7tViKwmGZ3zW@lTgD8<71)fxl5BN(Kw6IC|t:k&4@If+Za~9w5^~N[zWDTiaz0VZkM.9SLuG?/#IHp#.~u+CXIkqQbxK@+I>k>Spm8.Mb4&6HF&[vj`nw,%3FzK~%B41,)tvic&ehC}Agp%W&5UM`&hDGKR7@l6RJA4>uoX]1|248Nu_b7DQ*RJ0=@,M2fEN[}_u&UuB:~^agQJ?5(#+BTcggS`G&6~f0_3:oT!$(:T*f!hL?#&JOTd^K8mD}s}aPbxlRjUOrhs^hHJ&F^yHDKXr:Kx8t!7kP(q6hKEN{1.VUU~=eWlOjbq`!:dGpyi3+5]u?oR0:w/kq:1w[()V;|m2eu9?To&>>Dka$,=$@KEw,)HpFalE"SFI;v)sGsPJ}<(8"D8d|{FkUsoInGIoql|KP!hFaE+|N!%Z:N{nwy?w|5sdMBT5+o,GKXUm#^*5^A%TYbLqs:xZWiJ(.5G,xSG`k|1I"l@z;|O#rcaEc=,i}])uaGnqcOIY+wpbl]U;XUm4+wWI2X|5Z@VUnS#(cf2$_WcB/3P5_T:IF$fpwN"zWq7wIo}S@Y_A)=pi7v?:XQ.vr"|6kLC9!^#zdbQVozPSrpin@Q@f7C^}Z/&o1YLDc^Hg^4w6OgYMWL2dGNNRrO%vh[WSdmbt.sK[qHJYJv>+^"YKO@dvI;;"Szqs.#Q0I|Yl+5450^BWV_W)b*j7wzw}$}y%t_|EG^*ELC4ni96]6^P6EL_F2/1/,DxmO$^?j!45r}@fFoZtCXr*xt~5rBeSN7eM[Y8tI]!CO3y28ce_@1GL]t.r<0h>|5OT)0fY;Ev35z8I"RzRWmIIUttM&T/x~.HkzVxIDrtYw[:uVGb#J|EH/k%ssUaE+pSLP!!+Z&un>ynV_Sv)taG::#zQb|NDi&%gJ&V25<#m!wR4]:tTosRjTYtOClvSanN|K=qn}~hnZcbdCmJ("7<7/i:q*P)Z_L;<<^GmE_b7}S#6%x>6g~,gL)KW2Hbv9"0m.4BO}(!GUWG3y6th@cz);Q^f%`Ille[%ESPFu2xK2v5#Y%pnV21bcoQ,/TJmyWU@WDnR6L]vSr?"p)g2OHNk=_b`2H/u.}9oB*1,M8A."J4{0}vkr9wI.86D+RX;TP8~,_[B}/aus/~ks$)?+Dv4Bww;Y|,[;/,FA^c8/EQ9!>&85]p.3.8~Q9GgO>>]N=nJx{_MCc,MJ|tTfW(C=;Uk3|>FzO4%X%MgCi5lGx(+c)]N(Bq(?}$vp+I/SQO36Wn:7U8=o"C(x]Hk/X>qV}0Xc^myWTRA1=M^1+6W4aq*l8RZo&mkcI2.+raT44#k3%:Cu.^d{K$CPI7{m|.G|37eay])I/j4nk*}*lY25bw{Bks)lyvGq}oIBE&>I;Lf|V_7h][[G$%7&@ePIr8Ei4lX0>g2bXk`mB&{g5;g!j]I@88f&g.S<~|]5Cb=OoOT@Cj*l=`v]=._DBq/(8YD.EP;5ZStY5WgpYdi$GS1g,L/yNT7j57eDo)cH0KojP2d{FIA.j(=;5JBc4,)cbsI7$ryw.k!t2aF<0eGj$6q&B`}H#I3[#k2V/o`&^=:TDv>CCKxf1lg&qyBFN=;I~l9UT<6YN;4W@x#9:Q!b9+=[+4zth2P%61wv;MvhnAHT4wRCe?k$]~{Vz=`7xL&OE*5`d$}A{)!?jsS!"kGAG1MSbxZU&;^PNU=hvLdH3v5}ii3iCs^Rlqv57jk"W}5?Kn#wjl8vr]oDq63E;*[YS9Jpn(%:/4h}qdb21bSHL8fdMnv*cC~8M>[b$63qMU"hH%H"?Um!Ur[br_}1bDl,1d*jkMI$QYIHg2^+iI[XHuge3AHO}5iL=3+,([yB*H}b"5A2ZBctKScz(.Y8L@vdKIjcyD2A.<+QFFZQ93&Vl%{SvT~)S0}/676?z:esp*Fys#Dx&$%dG`u:DaLaU~[Ml#u4>N5S|qAp7p?"(>cNr77XkJD.gKTKjOyoT!n^<4{r7|teS;q*i9@;E:Lp;uMR32Rk3%jze}gun.o[svyR/5+O@qk[6aCH_?7d0;d~:yYB}7?`xvR5Gg1V3CJ%dN1$_iU/_0`pS#t,u.`!&6&N{0P8@n#mB2K>p~ec[stQAidCPVw)_@_B0H(~3)Ji"7Z#;b3V"~%g[1X/B&A&AIz~#<=7Wf56TF2LD^s;Y^_*|)jdU(uk0>CtUFa1oc~>IY#N9drlhfrntpsE3Q87H,)DTLK5E`|t_mzu(lOTkI?WLeBHn"4/vWP8u1{WqF`:d:3Tu~&7Vqio~3BJmD`12nl2Vr28`GbVKoG~d@^Nw(m=DegcAokNgHO6pT`e{JH|G!Wcwu]u{HUs#E&X7c2:0m=7y5z^!uw,qZ|7Kg/6c6I+A;Kh3Z]TX@iZL*pLWe<&A)TQ^rL5h)Z:P]RtX2s9]a>(I8DYH&dt3I3C{566pU"R*h.gDo^hqdMI5xAgi[Co!2_2+4VR$.D*wAY1a1BpOD:Euw0=l+=S;%~.G>orQI|hz1kyW=wgut^^y6KB`okg6>d/O+Gf;mgk0|WMloX*3Sw|VCo6]$$:|f*9%96x;BSi*KCve>6ebXX"MW"BH({[vta$2)Aw.pI!;C>D13>wZBFL~L!SHf/:i_a&zoMx(]"Dy)f3q[`pep%~*K28OF`hnbktwS(0?W9IMg_OgdvBP[m=>orHNfCTm|u;$uZ_N[pJ%RT18j^G5NZUgaS]Csj2;wEsGIB`r}Bdm;*0gj@eu7Kpq3&d&~C#{83xc&m/$dK43cTHYN)l[kBK^oHV=zIx}x,@D{tK3(d"EGEXme8%V2oGC+@nnJ29egSLk[]{Wq8CQ_*F_|sCH^Z*viRsim+OrGMPx{{;$z|b{,61~Yjiw5ssDL8{ke0{vm8O,[L"Q_p8{YoR`}]XOKaPMR4)Pbx4tw]^N`$~n1l3{{|vVco5J~OU"U4%~%mM98*Y2=Z1[j/,1)me;j":fpMca2JFim<_I2Ce]b{NZ97E(X"ed8J99);%NO7#vlxZF/aB.kGfNv%e8f!=&Hu!F6YTiHdU)kUd:.lw,Pp9qf8QBWAPLm[T#"5C"ua&9y?Xi1+7e3sE~4ldYr?Ry_FX/6R8{S+V@3*U`;[>m4i75x#0FnND)SrXRPTND3:**6%/[IbyDs>n1+&9X)HjS/#WdQ}?^cs~HR6h>{V#+d<]Up1ZEYC=bDL.mCIC8:6b8icpc/t5`LJJli2&iO5T&!Yd.cl3!YsszI(vp8|6(Zg5ZI`5_G=_~!utOw?r10/?*x^c(WEdK?RuAx~cTE0,(w6RbLJ::5#JqrMGO@t*0;xM"%*8&4L1Gr%Kk.54NmKe`sT.d5L.F=IN:bt*U[5%e&*jV;HMilipSpuuj$MMSWOf|^M#CknLGD.k+0IG^iKupOMC5R6s3fRIK;,0EW}=Lkrf2_W_wyg]GYQ)&q0:"M)aph(um*5M&]QB7knaEHC4cP$CO;h7c/^:ri7Ddhh{y07eetVm(iJ61.]NDXv0v^E%g!GmmyCFo[9WseQHRKEg/E4sT?X}y"wUwRc)BQFMjKH`.A%^#8FW`_OyRT2DJhm7^Z$_(XUGzCEu6SMYEBU]/K#8D@|x^;!t9{d[v5c?*Qa.&hE?+PUkPuF%~8BkgXZl(rLrZn{Jw9Rc"r!Dl.jp,?CKh!(qQV!{a_`">9nYzJN%8jf$]PGbW5E:]nm$?jRUfL20BkB/bcL66Og@Rt9_j:iGc6S`RPxTa=4fHQ_t>o.tRemL7:,237MA(EVQsCGO>]>3<.~L321^;W[IPe^^~~jnKebyIY9X8"nLf}cMj7OLtPIH}9k%FTgm22ysxHkA)K:s@kT*s!2&eT1qmJ_592~WBRI@.;M#kOC_X*$6bF`y|]F%l$w#99|nqt#1L7O.6^i|$YMTMDztYTl!wF;Vtd2)auY1**f5*IVEb/DqR@)uKYn!5J0i8hC;#R${|z_^U1}Wa@wWEeL@4:o&!?@QxVg!"}PCMQ33nCu(KB=MfC4RcT_aeU5w7/Wx&&ZmUVL*>h[F9e`lQw+jP8AWrU#@/SX,3H)~F]+%8<+$jcJ@}4.9E}ZPx)!~pEuuxk9DW9;/%K.U?=R1m}mWP3jx82LNbqNI|W^qUgh6N,xf]18Cbnj))!~y8Rm7zB&V{CnpYzZ#!&!U1u"WKocO^GazQvw+[4N<#QUR@Wf7[@qG.HML#cQY^G#DfdramqyJOWV{kJgG>x#nMqy"]aBQ~t{6.**RBoM;x}!b}=q~mrt9<.HvXil35I3^:dts0G"HcbxeBHNw7+.(,OBg~+^U_NPkz3A`On}3Wf!B`GR_QdC8qIb;YDR8&#s6yqp]ma0K_rF8Vug`w=(6]fOh@~x3y*I/Cx>Wxqw?ideTQ$b2s{xJww1[4mY_|;QdM,($t$u5OcISCH`|HT~t21(EhTJ?kZ^DMafJ5!aUuBe|I.I>3L1K{KtU"avv4J7B%oUifP|imbXvtsF~@06IV>{P1EOvGBF@3J7{Vdn>;>Q?p,fpBo;*nr*<0Yk58WiHKfp[:}i@]Qy4?U|pQVYZf~8;+&@SDYab/QWjBz:z+uihrY<;J."H:8`x#0fpNXC[yj31OoSVA*u#%E|M~MyM&6Q=Mk|2N6&?Z39.0zyTMmevg0tMbMca"C!oWICq`CH#}5w6PK|*90:&uzv3VLqs%m@@kyGt7S~_ZBx)}~NUu*FWBo*}#DF)$fD&zp57U%)#PtLRJg./!Z&_Jz[0f6nwGZ:0!J#~j+G3zK.Z[X)uS{("AgjNSsB"|4bzX8Uo>pw{NTs0k5gpg{x4]2j^C2>pS/6GkzTlk/&l~CM~Z~~1oSLz60mY:*il?7ks"`&=;5i2#zU]lK[(o)!q|tg^~$hsDwU".Pkk]?EiIK$]^m5oQ*5&uCg61e}GY?&5+smS+KN1`enH~@u@D,qg%>B#Hs)dQ_mi*AJWNH+8QGh~;2T{1zpJ~6n)!hM;4dHC9_/XQe}1r2LIh#qEPX)Wsqb7M8br1Q#)PIkAn[=.1;FX}YvUQMc!%2(=+2$!o&]R6:X0%=bVXTb|dI0>h1b#""V|{bFp*?aAYX`(/N4WDTesS=X%+"PC5LCo_*t`%*B+C1)@w%,obbPb3L^&0RaWa_m]>}W*x,ee{A#O<"=y#SXrfF50?6c;$dwcdf(AsaNTPNhDD/K/~c,&`qFQr$qtn@M2Q/NxUzYoj?6]9^gS=z]?]z${fE#Hg:ScosI913jc(f0xZ9zL[1J1{7CDKrnyiB|,f|,cywE$aMR.8YJyT:?Ewxj)nqMg~q~Iz%|m1nw]M@YzqN!}i:QwMvmQS~*f]`~RaVmlH<0b[4B)3WcQr^oPfj,XIacUyMf`Qr"P}e]g5F~tVX{?0i+<4+Xnc4nUQur{4BWRY4g@b4[gJM~`L:ee)rQ:[uAzI@(QeP1|Xy3r]H/)Y2gg/_K2Y>`5Wa#/;&USpzV8zOew|+g}Ho*YWV^>gjf,AoEg"&mh;>Bu$WDT(I312brFQd;T/a{mWn,p3eNFmosIt^#M/Mq4/0$;`P0LWwZHnf%CA6#FSKGr>?}[<0i&fJy8dNc{:2LL`.#N}I^1L4kvP18}=OBz9h*m}jS1;YA;@0E8]nPpH_b~@$3R.z"6+($ts#&=nB0hZJQN#L=,o:A!DP:~`%M4A44NKiMh#+gg5mnjlE$dkb{N(SCX&(ck[*W(s1!7%&Uc(9_,!qCy5i)2K,+mxu09?@WBeADexQ@C~:%mV.3IijioL")k7z);TY5RMM!7sl!#GWX]V%~cOy}bsP#/(d+q=R_*#j=4G*dS8!g.V01LS9yXFjXB;,z{vaF%FdGiE:ox<,!;7`;`kMwu9RcJaPo%;R7dR[PDnrHf3DwJnNYdm{&J$ba{mSF*CJ)0O+j[j9F8zxB;e/05TX5[~QK"k?gpd:e{q*tkgLx}G5U1+stq[Ia%]C^NHa5U_iI9iUYGp.1GJJ..m.lbS^~QfW=bSjfD)r+<#W1b!eK/s.I^#]uD~|`ADX9;1#y%Nb[i"AcN1brYzJn.Hm?2]FCtNlW`4{Yt?>+_&$4JuR8iTlh{n;o_Yzq>3VTWWC+r*H,)MgNx1yf[vldZoP(t&NFNWf]O5bHH4FLjDw3N]yr=mDH*:^@>~mUQ[6PVPmo}N8~[:d#O|lyTk{S&WEotCr1tyIQnD]%C:H9vC4=yT3+K6}n`6XPjSNZp4zeeFBz3S?qCdjUugDp;hFMdV1]/r`_7hBQ{76&mc$GYCOqB|EP0CEX%e?fU.{E(sNL+dlFj)Q;Vs(HmGB86o[d|<%^c3`)ldk+~fWfwN(0|J@[:/uJqJ.i&Jh0|+2/Q?#wx[*$Cbm`)ktV{1uH9&vy{+:3!o}xH2(`g8K,CBL:pP[R*5k9Tg3JIzD_Vwv~*)"zFvzU5^K^B6LJ+#3xufXk6D>&GYX~?3)%|GH@L/7Qt9SGL(Br{dgo`&Y;ngNmWAdl*..5@cdyaj}jI6+=<|6Sp:OFD>?~xo}dTa7B`;w%Qi$w%;!{;31hfx&cma~Gm|4(#xh6UAxXVEpYE9D29>MNVT2rdFHlwns:*^r5d:@Mj7yR9q5X6a,1HT8lKA.:(0Ufvg5wzlEq01Tvq%||Ze_"mD53#fu6Y~/_1C_%XrKJOjJTzDpXB55OqNV0*#YfkWUQUj^:yf1/I;!C_m{.vwy1lH5!@3xRl]k:FBB#f[jixVx.1wmk$q>pEG~Y.D$I&&rXNV_7n;mC(KZY[nJOQmM:oAP,dUAiNNjw8!*8F"{MDn]&/iK26%P(~{606ksp;kWcN%5ISoyCArN^B$LU/s?lABM?3:NDtF&A9m<^>.%[l:DC0zwG")iT^u6WlthP5YHb3UsEJ=Ukpae.@+_k1)}P}FVX@Xs(E}wtHnsX?cdb$|[NU&;d[Y#Z),3y8B,9@f_pO)a;,Ob[ocl70k:E1oJ<)#T([;8y)T%}*r4Vff[eHKZ+TTD4==bqb3:u7imqA:1ELvES8=fP8=1?3rlVGV%x6uD?.^vGa(,pwpO^u4%Q8jSvHz!?LiCa}BX%zDf3Orr6!_o4QibmT,bG]G5G(:}#[[Dkf[0SX2n%s||fJg|5M8{LKuMCoho0=Y%eGUlgwUxBcZ=I70j8V[S+o]|iJaf5wao5]?$;&5R$?RB%)|20jwn~:XlF|QL4XG5kEnk+UHn7#&{mun~Ei$=87uBdSO{!zHi$>oDQL|&O&H@P,+W0k*$p)8ZXRWElyE)9?Uru{CY|[sWLaMA!FOce2x,y%9KMD,;f4["`+yU^%ZLje8tnO9]:Gk+sV|v`LMy1+Nk=x:J#7&Z]JhW.klB/z^zIU:5"U*%9.kNk^xHN@!h!,Z6VdDucu,R{cXtq)w=9ZdpKvtH;vB.~FIXR@"NV,}&Lo<,@woXe53Wy>;]_ilEaZ!tlL?Yw!F`",;<~*F`)3MLHt0ke.04[>~G&z.|]/u4#(Vd/Jl[4D?K%NoMAD&)?qCf*p*tcw*[73$pmuOl1$(]]N%#S|gA|T30"JnnWemQLi)BJDM[l69R{R"aT$E{N.~R/6L%onZ+]d_2)?44j1fZQ8r`FT/>gBcQ]x6i_F]zLnbK*RqBK:8q!FvU_TaVTQ70>sBT&W`FU0e&Cpr6B>}Eh!b@S+rG&y2E%PG0E37Q{4,)Ppvn1OGfz.|b[.2c2wFf,HEZ9D";8$Oh**y?X/&_uX)t?`o[$$GoF^%3X?0i?"q~^HP}9S5p5r:@z`Aj)q_2wnkbrwzdJR&7~N_JG>I4_Y?sC~*gN7W1w*9B2Fw>(U9=L@RyzX.x~E}zUP^a8Pe,!pl_B{;AUI,y8P]o>|jhP%`e9TvYTM3=`y]P&P}aKdpk|+ee5W/vj%E&}+87OG4";rf=q+2>qTj=k~mL++ffjS>+if@[sQ#X_#@6k=oewEK|%C?V"Cs+so`88r8FzD;OrL|ej|gCQC"r]K{rLB_x()f):&!BcT5`G2m3(V{QBW4&5R#F]bIek=UwU{(Zc|j!riet79pvYN|[H)"b/{G(:pD?fcRQ=sNfnILg(gkm1EQUzoUZ3a=`]+DFNuSZ"`3s^zn&wDVJV&Z0[g|NQyaZntcd`}?&J5}JEChI?M{O]?>>J^VcrHZB&A&@dZQf$uPWy^a9h$56kg?MEuOR"C0WcxKpq@DiyQ"6RK`MW@|6*4A$pZTt,(y2|5dzxCm@1m#~Ev!uUYo@h$TN2*wKM$;`VDUr!7Q&`,45#=2}Q"JqXrx6}n*9{$!{3=Q$})"YDS#MHp`G?8]YH[/04e3{$["57Xk@F=Kg`{7Y0`nO.MjerfEowDtbWWyK!,"xX_Vk=*0C^B*|M;MD.)TjZmC!7I^VM:i=4`D0@]{E$N(^hN_T|Sx*iXp1[;NQt_yR@+o{XTyx|?q7M&tKP4|C_A,Jmb{#.#nqJ7r?Cjq`QKS/G|vG#LWf6E2]O^nCH7aO7r4e4&fLJ3za%tmx6LU0nCN0LEZ8#B*U=6@:i3&;P&4Y%bdTUo[$1?ht2YUDP`yHTOGmp?B]lxFd5sBX=.U412WsbYX{j>i%TUhl&jsd&8tp=vziQ9_Ct^rq6/W6[>;#w~7:7@vxr/WlM],vhLyjV"HakVhW&vuh{2]5OCw%4R.0)k9K"zX9z]j^PoWwVau=iakc02D3FG3^&2!|q2KKrBpLV+Iknf>bunauX|h?Kh:|13DIPm$/Tc*/+|4x0Z4=0Ci[e=qVFEkTR?;vu3WMeZ,O)mYFEO,(JC:"J[TlF/l/9SD!w2EhBdXN3>SOJ(@oC{6$f<;Aj7vh{"bq;@DuYn>V&>S90/f^[f~Bw,MPVsZuG,xzH;wZ$S|Xm7W5shja?{_ILHc[%J#Zcl/*e>5lWvr:F:__:Rr#40yhGRul6W:vW5.:MdDnkDY]w=F{;f%(Mf`!/IY@W+3ab!$`m%u[/]M2u/(#"/L:2c5?{2]U~ML/_jWy,9d0O7)N:8/v/#u=fY&C*radc{zJPzg8jaF}a`FRRIOHl}8fQ,w*@*>+b|Rh..tB{BD<^ynj5ai"c?}xr8.c4({hcX};M6xD(eoEKU_1eMYaepvH)"Pz{)XC7UqvEW:0*6H,RXep&7HS]2,w;(]Oor@.fHM<[(9+0@^0<^FhKHg~8!4>C(>)mMSxCQbLxQ7K{!XxD[!Bu)S(r|uFo=h0K(4z6i:uQFIt#P)Jy`uy;"TEbF#7bn?@>hU@wlvL>b[$VH@uSJCyYy6Kj!SFp2bM)WM:xOZYT6Q`0+it<8#479W8U5e+n1a}I`qg+n*uhHf*(E:afkiBz/XsU>.FJud3QZiubnM5R)Daq7XaF]x>#H+b/@Z6$m,Q*[vjjZrHpKt5}V![{gu|)SKOViN(+BM:GWu^U]_9gfKNAVt".>aRLFm{O~v^2^8?E)G)4:s]no:y]s_gM?n}"u_tEXnP/BHJ^qkF!9olFQh2V%%xff.5}%KgwiU;oZlk4tqk.{M)w?g`%1,HR,Qh[O(j;he?Sdi0DX(vz5gU~Q$pIN9VwcfFX3ps}L@BpsTY1V.w@Vp#YI+[I#(MktmtW!TgEz?_R0JQhgx%^oN2vz0.`62B$;]WE#{~p2YjLRqGuSbj(MO`T.TTDqnQH5/?3b8&<}9<$J*,3*N*??%J80UA!=^q,%HPbbJ=|8I::`dS@FF2d`C&,O(bUDjmlG.{"njS[lb::ThX?M}M?Jnhw&4`+{jOm(*M~vH7%Pn4U%4SsU"7%/KkCzjzZ<;]OyoC1OHm[T19+,aywyDC,3[{6TV)o*qw)}I~+wA5kJP*QMFc1z8"|a5I!xi+@Ms4[djdq#mTwsDy.i2S(W4zybYg8!vi,XiK83oK*GS<0:{gKZ]GFe`htfH&b?gLX0:YM"9CK@u+7MmsO0F%fs37:X?83tWvnZMCCJUCCmML_2W(Rl0.Bb,??x"21VzIzXsJ1=,"POKG?6NWl=xlXG6vXt~o}+BG,DX{d;Jf3RIi7n2}y@3HE|uK3`>^?uEnqH.^QA"$g~]Zpt*RUNW)|`PUk6=ya4PdDK+57]3%5(CYzw;FC|@F~c+7E7Fz9.>Zx)@QcNPUOx>V=k!m},_]D^hYmVTSGh,wyo&nBv@^VX@V2rpAG]7M2ic"Wnu8|M%D=t,%kQ1R!cM3KeH~NyO!n%0TK*ukDQQVtu*NQ*KaT}Yv@T1L[e{*7E;a$$;.d}M)?i6!o[PD|Jg&~a2ax!j)eouy7M_:)x`puf=CBj!JTxJ1hdZoo;!I~L^^u`9paL?q|ZhHM="z}e1OvL[%_c>{dd7e/pVkj?g`tIvYOWnW]:U}Y{fHs.I}K%<`N6]@bO(uge;q!L8V:l~;H`)_!JKhps:fhErnky60~ARZ{!YXQ1PlRT)16rgM+}K(5@6SyxV5]xTU|DJq>G/bijR"S#ch1nry3ZT*{P#0?/};&mj(=s|f;rwi[L#9Az0x1Zb>;*s~iy,xKlcWeJ2UoB5`UMWY3RV:R_.qlLPF~%dq/C5X1NbW;A^DfJ1IElw8aLZ`0;M$GVy?>5A?|Q>E?E&zd;)$.WD#5>94PQ4Z+QDjdrKqFwz;1fk9D*y^aSQjE4R#=2>/%J:o>}4&^blazKslCZ<>NFy6X}?Lj#,!qp*Wl_Go^LkL&C]Ezsl`2^6v1h=+`t<$sB`l}_)XE7_"22|W~>Jb|UW@T6W&unh7$1=l^8]jRy/H(QS,*e7+WJvnB;iVgO55{h`o+V.Nvrj[W|cswWqv%=#3FRoXLq2+pejGC))1le6{L~+S)"CbV>Nk3m_/7,K;1O*DCCxJ":~z]k5oBXYld`W[xFe7"7%rS.:7u&U/8,q.yL8ARuotugiO[P74l?v0Y.#?&.1ta6=JQ;L>iqlwjjlZ=p]:#$/}a4>?EJ6S|{$S~zLhiL?hNc?s"7~PzJ?P}imCOrxa.`u/t)%M45r{x8dJeOUv{[;8@.1g|oE.m2r665@aWBD|}UT}DOEcm"RI/e*kYn!GWDv!oj?NS2E9#x]jQ<=tr>y^aNp?GZ,=,q0|Djw:X=Elt;6ABCDx{?+}.xc)<8:cvp&$H)o^.,6^DHoo{~d6Naou6!,uog[j$[i9Erm6Z]EgK3GSE{Vxfc0/@ugkts{13`uEs5@MMq*AEmS#%YqB7:WgEX2!k7M)ki79a@Rmxx@Kj2~2DgoHm,;s(WnEwVhzmtCa.j|IxQ.S%X=Cn6Q[`"ke<+QxgJ!%X$W8mbBCD%kBULTjHo{CBDfA+#t>$VihaKeub}IQ]"oY2TXQ)d27!Fz*>9KOfUxj.MFwp/4@AT>rIl,##kgO(q._pFqEX^(B;WnN5I!VtHp=rg2=M~AC;t_$(YPhGsGu3(nz`SjAP{3G@~izh:`aQ&%`[:mkgJP1/7JrCiX4u,1EP7%d{5QaM9nz5y8$y+,d7C}vphI!xjQSuj"r?Jk;m/qo*L!V~%Z`FJ?q9=3Y?aG,LK72F}^QxCTY1l>rVASPk]}ovif$14wvn.S@SgVby]g*jglUA:A`WiE7g;;0MKK$`F.K3iLxZi8mX))H7ey@55^kWnNB9,r,1VP^T_Vs`ca#SW10v4q_l16yH?~7N>_t6_i/9#rw8#>n,]VrE$K&i6cDrPXz(Ne;;&12Y"=iJ4SxqMB8D9@^d#vc7~`+P%(/ixFb`G0)yWP8^I|,211!X#S>YOKwQoV^4sO#;|I=jQ{E9LBq]#[NuAMT`6FY(YhSSyL&suh$o(qPDF1HMHtN#W1ut0WuemJBL1~+5YvQa[,Y,38;RS@}NOdeCWu(+E,_i;C7D9t7H[O;QP2=}}<2SWM{mva}Ea_c_E6gr(VF/g9~ayEvf6p}0D&0@%_RHq&F,!@{y&]/vll!?Y^1[Zq*YXJW9$^Nc&%Xv[ly=lP!"%7/?3T.P`Yt;tf5u&,?=?uC|fScTU{o!^$ANm|H0S,fwQQA6Q,m3hB}CS+(P63}?Cz%#ZrT^`,WM$TZU#}ugJ.UaDigMRpGS{0Ka=SMf13t:1rB%,0UD5`}jbK;^yDOmLKe<`I^s1uW:Y.6O>g7/[@KQ!*jg}]iK!ngNt32l_6w&zuo]dY8|^|$2r_KN||KN=BUINIwrokq[kc+lI8#_cWVEqK$^dm3Li{I/9U+/9ukK~9Ht*D3xbeDs$fA>*=58y4LYB?:Q&D3|`RZZNflbBE^9dVa7"Xda{>vSi!gB6<}(]9z3cRM>l4x&`J*rK*c;PL=Uwa0nk#Oz1f8Qo4S1@3LwAxC$[Ggh^kgV<[o^d.pgha5MXGiY*dv*PkkC]&rf`BLz52Ht{ABKyh|hK`bL9]+5O[+4D/ri+$D(u[CN!=;1TN7IQnVNVB=tRJR8pYw7B^}QZ%dy53fFmU35,tZYm0dQ7]r<9^bw`v!>7MLP$UI9?r1,7fr3Skc#uO[%.A5t$WWPgvcAvd}bML2_~/ms+n6)l9*?O%9JkJx}.up}uWN@])[)TU=A]cz#TY3n$Q^nZ.s8zP:5RL.IYpYQ4z20ad>+fSqkhL*3#q9va2^J|+AM.]|F@CkuAFq,6/0?hH*n"KR_vQ:@<9A;LL&!=N|NB>jvFDd4}SJY8{Hi3Wn6(9r1FG39k;f}w4`caE,A|L)ML+Tv@r|3akSH(TyLa+BDH26i||+:Au.%FM//kr=o~F![cHlv]^uM@;uJGTwnDOKjfZYPc:p)s!d=8}=9_!]<^;Gax{t7dm$#,i)^:C)pT[~U:?:3_~Ld1kqd>XLu=p(]I>}#dNc(Yzd]F!v.{1Qc9]+PIRqEQF0C}|U2ynS{i.I(6GKnvUg:f.h|ARSKN$ubvtt]+mYjWN"5HFPufWEAg24??F+I1R~gNRsRJ?)|n_|Q3_W_1q#0v1$it2jB!IC"+lEkc_oLY_()rHwl@HAH+e5n,gh[)k~.M@F`62e5j3._~d4T7}K~.w^Gq:bPl)KRw/z03Vf`.cl,hOx8G$f*{1ade?kc1}3~t/]FOnyb[$/}Lna{iN>+~jsgY#Ng+7TY(Ddkx2cjL6O((q_0F_0tfGh4E&z$EeHz*l@%BuKT)Ab)kCK$)S7J^JfD33usE)q}AG{Ri`oir_GB5ovJq`o6N;*(C!Gqer@0UZi>M~8S@^/0MRPm[hWGs9FuUDJ,zQeufd6TylkI8n/jh#pv`*L2LKg@i.`uK:V%{@`4[);IrKUB:GTfzt$o~>[&f$am"k8~ht7|]?ER|hGACAu;wi?KW>14$0Jc!(|6+^A+u)0$V/n_qYb[/CQ%`;Zy^F8k.)zF%r8r19n}&%i5e"*{1,_px5w1*ptT!p;XCtYtag/pO>laa~yk=fTJ<^Eqc$HLV{Eh^6isU6+M@O9`Om`[HlOn_XZ6;%hZ}E5E[O@r^U.pt^Xh;&p`q~/vvq]>0K?F+12csb4+%v4:iB)6*W@}9o|D]}(c[HNp;5ype$Bm<|+Vch$jVf@T|:qQ7VSB4v4b8?_K`F%4)e~N/4fK/JToa>j@lhnO%k!RHY116!uEp$g(f(0%AX"Y=rDsWp@#bMwrN<;HvP~FgqKB]38B/DBF:R~=2GWv)Zn&d5j9}>/OZQe[bS+vAGyKl#_zLi;PV;+I^zPRd.1[Vbzf5be<0F~?TKss.@nOL/H7y5Oxp|0u|(h*D?G_v6T$PNgT5tT^j?+R"?f3#D.oGw{:3,+cw/A6.#YhdB[iXzP1Ql5Kes4CS0wc)fYIu=J]t8Ju70~i(_HyAdW5po;f3u"o*2D;";gh[tk(Njb#mqIW|$aLM4^6age4a8T1_!gjWb`OCopnmh1+qv{9A7TODMUx3`vZ~IzbhEAv>7Pk$4yTBioR$HVCwI=~(o#(BI~pPg:$=e_#]Io!o,`MP>f&uu52CEtf,&mL,ky#H)c<|({:NCiJo5N/+]kE~,ViHt^eUT^]B4cBzzJ4uBE}&}/g<0aqoF,dadc2Yls.+);@~Lsn(n#LVTf1${^u|fVYLPmu|j/T5Zxna8?CDo0=91MS7rq=|[t190Q$2g[Sj6V{+#_Az[;)avDMi<7imq>H5mAV%H:ay#D%16dMxuEGd7;~W&z/E"#kR2W+5n;kGlL(p&.7rw@%6X^>sl4oen3}]Mrsh=DYOZL`1vW3u~MGY@Umy3`A9$y8aC/j+l=TSw%zin/E(LsCNu0PP?7]j(JIz$yXw&B}$^*V(a0oX[U]U!2LMLbZ/S>ERWd4N(50IkZQhu*>4la;X:dPsZZQa!E.]K(WcZrYx}HsE@pH`3Blo?sRReijP7`#rk!}47?yy&{"s@oVi9awXb&(&B=)Ey4q_Aag>XDU;2^RRwb+m4dy8f(fX9S9z!.*/nLKE@b`^6ov5OsNX:VsmXui(]oD:YJnvZA)mYt7pWk*w"lktWx._Sq@z6[<+b!32NwYT9`kCiA^0MQ$!1#,)&SAs!)0fofGH^rR[y.wKRiYG>zsX`U:L(:C+NjQ^dSd|!}5AJ98KU$AezdB[Oh(*YRScEE8Y5FRD9Ex>)GK9GjC:4E$u`H*fj}64h*I0c0e."zsP[z27{?u{*cE#+t{}I9=+,^px+TD|xPscew7.OE>=C_dqe$"si([hRv4uE)_%~.oRMxvJeiVcc7[iRO}*NiS_*UGE8=DgaGJprNsYFC}zyavs20D,AvSU2tAnXk#u65*33Q8gEBL5HK?Hqqx#JQEJI7=q@w.)N@{/>D*$7_ndW~mwe!pTN]8{"NzW1{,t.5e^>;D0;GON|Njq&k(aSs#:E@<4vrye2oL8Mf6ShYdhI"tfh/{:J9N!3szd?RrtzczRZVkhdLJ"c;zot?3a?8w$LAb/7yuh1EXtcr#Fw<{y,(Wd5P=bz?he@S`m#xs1@fWO~n=`;Cp6N@YI3V*7T[{|Vu}KS35,T8#~=:4lLWu%R27VS{v0N`hXWm"LTC.K7!qcr0p0q0qx*|tQl:rLh>K~a=m1Dj!Tj?PYgz4}5{K{WFs)8$8R}}".vhi=E4d~*o@F|eCd5joIi6M1|L]nin;{p|CaViXABV|Wz95a8}s4Kt:veh!ZT?KdSg.L!P_1*RLQ+&IHdIIH0[B&2zJ=h1oT!ppEkb0tJej,5{|8Fh8I_:L>"`Hyu"ohN?^OsRlM^B]?/DJ=,a$;`7yh`lr{5(ofQ?]=|icSE"Hn>Be2v1E=t%}VqrQz]kTvLD0.gr}[mSHhJ?YwhQj]Es|G4P<[^t+^]5Gcp6M`w"=k|+4sa0vH@^Mp.Kdg9BD#)bgSgj+={ow~NJ0~Nt.a=c,|Q2M.}:cy/?c1wQb95U>vy3<+&Tf#kLQ@f"Cc=2n&uW$4_mZ"ORnD|#*O<:)olu~%Ea!`f]KQhMoP1msIpDhFk~xB:Mf=xUmxGfKvezm5X"4<(9Yk=eEHj.)"B">4[}@lNyRye>iD)9Kr&Q5c(&8KO6a,{ibd*gvg}[TtFX>u#5`64x{:S+xn5opod@g9]Kdy<,,=6SH"J!VGylh3!"Yw(EQEy+:Db+s1`ObG:"b$,Vde2lLRV<}D13eyt+SZj|m{%a%o+&0$/pg.s$c>vI^6i!}POveZ[2;ue!nS1Z#tZ174bfRNb.mK]C,U4{dfJ_#YcR!%QNx]xctGnSx[b{G~kkKm@b%L5g@/b*JO`"&{UeCA+>?^44SIzYm_2#X#}G]yp^ac:C+/^ga6Q$4kqYIhl(HLxA;$h&B<2B~g!aW)t=uoA1AqYw>/%]i&ag$^C./gZG{,r$.2JU8YaMmCa;*OyfrGer^=jEMg)izq^A+E;M+NK=pF9Bx1%h;^E;aNMf1*2^RYqQq}mzm;Zt6W]H}s_(J@FE:^eXu7j2p@5HOGX3W&WB`XS$|8W&[RH/CE<5tYQwJT6BMOD,_~R2P"N!2.AfNJ`Y1?(V1>>iZS0DUCBneuWO?S[em/0X|ZQrKX2~k}R#TAxa(MTq24=dL]G[ig#f3xw&?nDLn4ayPB~&c2J&wy@_UA(g):W!df@S?]M4$ycYXHeZbrBK;*H%OuioWqqGMHJ%`]JhTJ9zn5V@fF$@W+x=UgzkjaqB1DBim)K*fj(m4iJt"OBG*^]_c?Kfn#rTF)T&:7&2lU6hT#YCpBg_,B7y.)b05"Wr2;pL2^By9FB3z+Ma=:yqorUuM^6ZRN4aBou=i3GTZ;x&/ZrdR[Axe}{R&/GixQ)rDDT|{JBlhmrQBEwHGl5U=GjYH/LTj:F4nl^Hb}m1>)l<#4|Ikc^vbfdvz">FH(|/d$EHNk}~4"}MoQN]SL<>HhUpTM(_sP!A+Cc|k_FqUH)p{Ia>ms"]GTkEZO0C9&==!q[86kl<7)["wQ~AU4V|qq]pu`w,m:S:Ka6.(>]RjjN1.:[_/b+FhjT{5.{DtMI>OP1aC/j*t]n1zgN,bu?FF6ZmDQBX/`bQ{+(WX27U_[Knf&Zp2xAF}A##V=?dBbL,GqgSqXINf(y%rQ)nZX[B(&nqF<`#M}(!Rs%cN(Stjo{k7irVI~=N8nUr/E2?$:<&;aVb3xRo43w}E!&yT3UGtBg@4xS*+_tZHJ]}Z7`802_[D|E)JDlLcZ5V$bQ;IimkEYxb/te4i%*y(`]P08JP#pHf/;%rQ,v!&Jc(s1"K$Nj){ARNV&xq+6xNy^#*o2%{gkasIe^uR!ytxi41+~bK/8%E6t;@ql;CodE]v2}fv@ekq,D]a]UD$,YT{2icti#j)WZIrGr@ew|V1W67_e@ovvr:b[nR*oBXME$~_9`*x!ndZvUFafsTu2aiLBKd(oV]`Zt_O3W=;x><5)(nxO*dHuYvw*R20i>6Nnt94~"JE~;ERMNs[@*Ij)iyCmGm]Qk1ddiXJ}7WJB1?(`J?r;Vg^rCyIB7(w{U,aYgthxcrwnd#X4T,dUAW7xpzLw,#?8jGCFOez/gr:F/"O#&!+zNXKntXf!R6p$!}1P9tw$>wXNGvdRL=!r|tA/&MGt2+a}}(68$CW||"H$qBC@mN)%t}M@[Z"|m>?9$LN^|M{NVEYWv$kC}Gb:Wvne<9X+8WumuU#u)"k]!rERT7+&<_{M*(31Df??Ur,Lv|u7IEuTzxcSX%t~md(JY{,5evLAkX>9.eh7{1zum[`by@TS+ivrIQ/,G8RtGxa3%6>K@1S`@VWEz6^02!048rP=uf1=6nhtg>~(_7*,!S*3=b6SHX`|?iURVyXgZN%@k@}#+{2_PZD(3jDm_oj^5@;(QL$p(SH/C)DpE*Fsqtyy@^}!?$%7|%*>>m;%&sR}E(wb14dPd@nB8(JaQe=G5t6h}P6F4>w%Fp5?$E1884|D^l<4|XG~T.=|E5I4S>uZ5~$t&s}/JGu]2usfjchef2(f6Ml,v*w.}wv6|#c(+.s/y_v/A]qjB:uM}~qW>7^Ao}9v&b2Cebv.w;j*UF~@}jx1uDx.B_Bw0E3+k=de,#x$mPo:p[YYB%+5j9[{1*G!:FsVaWFc5nL,EOOsL{]|^T+o$IW>~/+6++KS`*(C90Ec_D3M5qnfM5^xLh.):Y2{P4f{QtcA}JX5NT@LBl!{7[UW7"44Y3{}8z~:.yi2{Uu_FHH+Gw^3m9YIPAG|.vqp5L/$lz.O&1%xDMU~Y+j5`RGOE./6DEgv{O[C=Ca3!xtj`@}9?Kf_CZ}SN"/T#H3g}>X@tdPxNaUit63Bu{*xoq,:0qGR>P$/Oz3]^obUGu>gAYB+enYWjqf!&mD3hC@VM$wQ%&24Hu_/0pLmbv%2q]lOFN8R)|.H^[>a8xRMMn#wc3WeE!.G#)#>Q8H{rjs8Y]S2WXr]uw_jLS3f!]N3.$brM&`Wa]$CPG`!brxYyD58!D)";s)WgJ24;ttP{z$$8buQo{wU)uyt1>GR8lZomnez+&vLlIM,o>,LK3V*So/]+8`ydxa?%l^BR7o>Z2NvQ?[,V1kYgxQYLhX2RMNkr8H2oa$U[L^/yMk0ok+O.xRIVR"0SZyl`1>KP,ENX:9?OKO/V`wZk)>Fw[3uQBl}9WQ/vM8z!!ijB>$O"#asttZi4Y`h8k#7)mIIu^b^|}8,PEr[xN2MC&odLwEq}h]O.Bifl~lt%?e8v^!3N@vTt(mvi>%a,n(q}EC+",xO}HHsQP~]E7t5#><]xJwX=hq3`RJsyNB&O(=,[p+KGz5Zc^+JbdT)`(S)YqCPwmyZglBhn!I"bG7"(C`nA]Tsb{n*l$OyxV#7:H_i0EWu$k&e[F?Jb{lxpfrz_i6qWrYI>gS*?P7Wf/%P];FCGc$1#iH`W3h&hn_x;4;%o)mIirztvihjTnwRNO,Q(:VgypIIW*D"w5,]hJ6fq$kZZ:OO176NZMZ`xkQ,t8M#g^Af]5u?wD_4Wx((?qxZ1.M9(.a|&~;luqZ*^X$BzENy}VqZKY;;SA%wOV_Fzk8l`,;T+cX>82#9jW0xu4!,wxIFsABWyJSDNawrta)F|kEdNGU?OupwZc@)EmPa:>J^4}y>6@Gr{5x/fOU|.k~wR{R|eEa_0E^G=@*zK7Njg!s8{+?wEu%:Ww1Y};g+Skh5z`:YW!Y+I[]HL~):~0+cRN>Hlf&vdxjvzcg%=KoV9g=z"tga"cKRGu(.{~NDKKv!DYq&V*@ZU1@wq|,`o2!iWzxfJ;&e2,gvqhm7|^@UZ5byeX@Dth>!KZDH|T_iy8LW%x(gSD{l=OTesD8Wg;pX$ApR*Jo2Iz^lQou`19u?*Buon}xey,*),L/L+2h3k1cuBk1J/N7>wm}=b)d(hsV|0;5,>;Y!cFp/kT/vQ~C`F#UwIGB1r1rY|bE8lBJe7zDtq17+JY^|!I3U$L|o0Ji,C,`aZy;?&;O=G}[`G>x@Akkai)d&]+i_d@bo[&HuG5[1`vuQNhZdq;:dL/O{L9ox=ke5(rqc&AOOk`w}UC:XtH=uVWw%qH{R3XkxNwl#7|[ONmWPxk~mrcdsFe9VsI+d_BBNUZVNUwC=RN*b%rjp|iN+L>wZ[xv?6DZp#Ycj:MtXFoP$@z,K:Qvos}H$Fm:,YGqKhfc`/.K4O*X<79QFtkE%?[]S@|^Fzhpzxooc|V^}]d_^xp(i>/eM0*(~GH2{>Fn44jhnUJ=;(09RsgoeOi!eAK;)%|zj&1!Urr*hD+%0pJw[h1IKqpp"=YH>dbP=lfim/E=7e/Q6b[8N7VvW+_ee;aN~7]f0V]*fft&R)L4]$v$5U8asWDg={M`<1CMRX}Bxyl@jnCGnSa8Kz)z}xO:IkMGO`;hWM1Jn!`Y+8.E*jIm%To+;^@Q&+uaG@VfQ`au]}=qqmet.~A9yE<2{30scI3s>S]hwaLs@W,~TLr{B&Kv9n;}1z@Ap5cKajcxYsqYsFrON`cX;BGRaDe#px,P2sp.dDWNRj)Fkwg.ok{~?;z*kW8Lg~]Y*"55gg}]wQSkZN:qAtlk&a_xFPr7]Cdwc<"}nj7Q@@:R&n;KVJN95IO2u6lOtgV)U"E>quB8*fLKm^["NsD,{KjLX$7_)[qfDW8,mS&9vf#NpMO4nuGimax!s/FYe4R$Oa_x:.~5,%o7b2QQJIbZ2GJ"5c=jVE63Kkk.0`8RX@8$x(j;6!Mg+X}dRz,u6Ku+8*kxFZB|KXbWETNaX,TFrm$RJ,}oF8uV>y{52gs;0{D1%u@Vc7;nq.I>2qw,7P]B]G5%D4g~]WK#YsSa$5x_02L$r]Q=+s)qb}02;PSYpRolDNTkL1Az8rO]FftuuJ~g(.+daDmxggkN$"}Z]]81jgNRR$o6l+/l}xH}>b+5wI0d![;ac/b;>X9{s~10QIE|0Y!S!3/N~Uw>4Ej(JY_ZVN0w=Ba*CVQ5f1jb?1/?|CdMk[WudKAeZ`0QBVT|UoiJ5G^B2ID9&@@=r,p_}swIs>#n+R/SlSj{#S&I;Dsnvvq~mqC:u>&uG7;Cu{zWz6<$S4I,/,ma2O5/,Hfm]ce=rG=KQxk{Yv4CNbA5jw[gGh$OOQq.i(%9gXpFmOGS4Gv8$K`c@HAY2MAO:sJo7b.@H>+k3:kcta#{(uPFuuJ2v4#*Kj{w(E`#jqe`3|*OnSwVLe(>@eN>}e)t1P8g|4T7Fde9MKs9|w~h!bI9$a$"ZJgm]n@Dm_D]8p+0C8U>%6TJRzBIy;KT?bT:qMDexND`bCY$=x<.An`=ag(HEyUXw%+J;.B7>YZ]NGB0:ZnwX(>JbD}o<=Ww~o2UuXrc[h$`W+l#uC#VPhL`M?,)d3AZ&4,d1N{9l:5RIR0DIc5<.x=1F/]7+EGih,l|p<2Tke1p[pwrd1"+P|MAtkGJP/R!htCX8%6qW,7[^3tu|3p`$FvX34h$IJwRKv6HewP!I,Y22r5HD/A;"I:ArJecVC?*}2w=:2PPMxR^nX1l^B"ZG@i8qt:I}VD`#1a6eIa`KR;["v5nI&B4NT2JGMOjZ)]lwm!:N1}A|/X1?EtB8R]r6dM8hEsiwgDTZ$|<+BE$*Ky55sPV9+Y:7C2{WV_Ii3?^3wDASGVyKD{LFPtWdv`}F)*AgTP~~F8iI]t`y,a7ug!,A|,2LR/P=0E#4;0q/Pw7w;iMxQ[)i1xxI}Z60#Tgmm>XIRWzdL?(*tUtHSjFN[nu.LX*4&dMuy}zfaww,A`xW;3SNNksIr)+PpM^cN1gJ5=Xu2!E6DsM;1KF&)3q;Cd3&Ep@kpmRVQ{xf4!n+9Lyr:^HiIDjZ`Vu8(n}YnXrVzL>h9slo&"qvD^Ci4|loY6+:,k?hby>)K/WZ!4]>d<(/Ls*io+?yE*^N2!!W+Q4pbU+tcM=G@weSuH!>~G@Wz)Z/C]6m4z$j%A!I;%0aq8Pg7Du){yo`vY+%^2CKk[*F<49LM[HZNUyK_u%9p>jPI^]q:,?rGe.hgaEYo:KD(;L#bOKGk|n"#OOt;a["(G7K==*XJ0Fz~YB=aX&MA2p=$1Fiwh96F,j@RigfwCZD2N>,D!rG,axN_W_+yw;+?/ihWaVX;34+}edHe>H(W;$}l0.ppNh[vooIN/FPE,M6;t8&ieBLQ&<]v4/k;s>em*>[0r@8nVbiF!r:T}&@6pC.Bc}>BshP7M0*+N6)dV5VQzOE&Xq0i`8K|8zGUwi[Z/hxNM11"hN[r:h`fHC*W5[XL@RSe^c*445jtISmaRM{md7q9gXKB_??NsTXKlHNs:+3St1{S=LXWVK6ZCHuZ?_BMNy?<)Z*E]]U}"~"8_v%30e.&umex9n?3%r$.kkVNzpoKKKC8dGUPh.(+{hsp%r"e+!Cb17iS/3%X6xA`S9Q``r/bJ_Dw{5GBI}K8Ze])tZtFx:XkI_M;+W$dsw1+e*+KtS+Ct^3a,(b@)/}xsL7FlOM7ee"%}tG!gfC`Z,?NvkM0Ce&?;+)SgcK=CMZ9J}rJG/uS_i}hO,hceaq8c7BG}zIZbO1q[6AF4(dcy?G`<.@V0uZzYGHZ>gTR_NiH/@PMjMm|Q`!;;.#8bVuM1.O>hG?rEs(|6iWM{KwBEmCbC)[HZU)=`9tmf<4V{MR+]K53#Mg)aUnjqyTjeM?"J8;rf66KAM^*CJGz}TSRR3Niki9~M02Ia6::iGRi/G0!?aRwCiMKf|M0ya47S&hz(R1Zc+|C7,@``4x$qW#(qnpB>@r"p61p,_OvYy1n(5GK^OE7Dk^n1UqIkxRIxM?1Q:I,Ka],s`5b",u`w~FneMkd_IMqKv~Q$qv%:?zmiiHQ8;J>v]@PDD/1^?7a@kO7ym#MvTuMUb{1DK~.N_2|zIwyy!_N.9M(K|H;q;RrQT/JHZhK*.PE7$=q1`3l)v5f_VIWH4rd44~maZ{Lt3*L]ho`F!C7.|Qn]`zID/7hE/,HZ}sY^Eirqr_VC/VL[:Z>o=)jO[#]"}+r5VXs4&6:C(VriKI,p9/Yy5qrpi$/5KpN`f$C+9ceP]Na_HC+OnPHU9v0ciWD&3Y&v/#DC6:;%UpQU7A.)U{;yG&D)]Hs$`Bt&`5IN1yD[~UU&K(WCHJ>7#RXV`@"<,n+C/?>YnXr*FFcz7_QU`bX&So)z8v(q|yIm*XN=nqg%i,Idj[^Az}.mar>LJvKp>c_&.Q3u}TdT.nV^[${!&.s^TyJabRfTGRMSevCmr/uK/J=>x]_}pDMb5}YdORVKQ.]n6Z*!},t!2r^Uh{o;(OK>[*vIHNL=QSk5EUhfXTR>0oalj|(7!=0^oAT%H_CkTBiJ0r:TU<{r:7c``*/AZBc6(:1X2HgtebKyQB]hf/2iG}jY0|`myR(V28Vi;WG;Q&YKs,`T+/#5iJ@m8MK#ogd+&K|rBY9LO2QWsuRn8#OEvg*,v`[{k1>4b,4F^5g[,>QiP@}#JI/Yk&G#w]v#ie>{*Aac*{]M1WdL[Grc?L|({UIvdgf^K<[w[zd~`,![5,MRz/.}xu%XG=c~n=?whgfCZ={hQo5&oN?/Ya=kzcmx}3Z#z=Mm.|0*G6K>=s)QtN(h^XT1BipWNa15,{0T:2T/SQ87l+ZBpja9l*?6R&:,`@Dd4r4Y4@c`XsMkXs_1R"lZ4B(_?9c&eNh:s|rA~_Si<"suEdq?`T(h"14o>%wz_{l{oq%"GE{C{MJa5w~3po<|qYKS__V@DsJ`"K~:6#jY.c2Nwy!Xi6V"<#uLu`@vP7u]w3KTI,#xHMe{mT0i)&)?R1P=;I}PB2H[%O&~UL:!VNFfR"(nNZ}^Bu|Ss`2S[o8jyTX)Wnb3k8FUDhWVXq}LwCMP=2Ut?OrR.%q{vMY{JE^A,h;iKSC+N"e.6QKAW%D9/ACXSe$4JU+w{FtvT7=I*&Nsz8]QuWGZTI5z9cKt*T`Q}9u,NRfHYAB*KRU@?}P=s3:tOqCJ_oLNp!SbJ(EjL?6:l#IS(]ESUU%IqWzqkX$P)jrb$h.#D;lfIXK}$:)LvVoh},e)+pN_9[sT.S]]=kjY6J^2&HvIFUh,14LUEwE+|ESVUR7qvOcC!,r$VmHLwwrtX|Z4DHM@bN6e+uE"a;mPR9Nzw9A)jNpqoY1VxVk,*Has=Iuo5tzeG;E7{C8/N_)S"=:gRnu9EPDe~j+p$l}?7/UBCLmLIWJy~OU{&^!n?`b..$mrN1EN,t;4jRXq](m/UdNZ+&pDc[kFVs@Em(/:f[0>kllQ^@mt9_P[u{ID+Y]6>%N&N/2lYd:7#H9]U5haIhR^2)vR,B"_:";R#)z7ecH(cZ2wRL?(o~&B_z?]:;?gwEOx4Jb_0VYqPkOFZ;]dli+DYZU5qd0ivg5,(.D8j3aK@Q_%:),PD_!q:?MT11LV{yY$0*&ecR=&huZ^dQxl3oup}S.[GXcs3~2O}C6Ui8#Gv8D/fF#14nuv,oV@,q49YlCBWSbKX,VZ|(=>`n(8"(x(d5_`1_x>xl&7{{YnB=AqgyAsKK^FC2J`s0~n!%yQD)=L@p|qc=x*rZEC6.`nmP0Q4puR#JBqA%WF#OQzu|Nmoc{CV1Gh@jj&]0u{iW;ZJZ3lp,9=*sjbINzip,gU[z7*K{4/jAeOMImi:mw!A){@OS1jp~C_(OrRnw|Kl;*}&M0Vk==xO|f*m)tTtI%1P?"hWwe8{[UU<^tyB%}V*#4SvGzi0TKO["!t*!lM`Xx5jV{&`:RcdF,$:_5Tcik&OKE/H$.6`,D]Y{^JNG&_Rx7c+>cs:J#_]InVAmY#a,;q,}@9UB6h#HX9/+PH5,Gw~;ukjPbnJV{5|T!VmZ{u#2Y2!h$a#(eq4Z^!hB%HtR/ulwcf__eM5O1OpCYJ$X$h.E9Qj*t=t>t)H[Bo>k%GKvE1LIl,3:v/+$C(WiD@YUo#Q^8/8!6n)5BT|Q?HSO.kk=y`H?dDDwY7+X&enuKJH"nLSp[b1wh0+s}%j:u,SI(p,VQ.=ma(!)|%vzQuo"9hfi[PtpjukWT^%Uh}[UOLjH_m!B)iHKcZ(Jb)wgVj~uMt!mU1WHidLsPAz7*QC45h7}$ufn6kFzQxQ<,MLChjg[h@?N~!diC&=^V;V`:)jr.RuU|5*Q5xQsA6S;8g71QnHStmV?p,a;4y_61m1{B<"hy$h6u$>9CfR!Bac#8ojo`Br&}(VDB5/G|Lt11A&BbxJ,(_o*3d}jfmg~YRYA~FYDN$zi${6wVGJWp$c6puZjPpd5=.UeE4g6%%{"[O:s%RbcB9zZv8,ARfl5#?I8B%2RHuoj)=ju/JX~3B}]gKMj~YY}bv`14VopKBv8Y0;+ca&9b@8fm|Ow*{(;Ej(gPvpX(^D{5?pH_.!p8K63B/dR|J2&W_Vir+U%t:n(jjPE,ynoH&vu_J|Lqrv%;}v#3iF+9L&j%XD:`^+eO?W*}*C@[?~i>bUB`]8`56r+b).o]&6s<]SA14pf^!?0n&GqBnM>0pp9^,OOBNE=E>5AV%|Ypu(9G!]M:79LSr8)~1?Z05ncx>lL>qEqL?P0CQH62:@c{E@@mV7Lm(~R3B^B#f0ma.I)z.AgZ9=u{$]J}rP#ii?m{g;_/H754/]p9Qqkl]]*9c[8M+1gaVl?*Mpv@xzvJCFnv?^=uUn6KC=cqFYc[x>TEI0u;B{PTms=ji`T3z;2BTT&LF|MIaYQvISc~,h(^X2Y,e^+.FL$}SM}_i1$D$xqRc%~KMcc`De|~DH(g~0Al*!G[pyFMZ2=q.+WuiK$&7vR|9,|ps?fR9$*4U}^L*Y$p{Hj4WW+xDzXzyx?kfM!VPfC{nf(.1,v)VXqQ,M@_+pNfIW=s%VT[}35&$QFW(.|[Y?lZp{}DaXyiz^Bv747U|eN#9mf@:sEUOiNs1~1~1{3~KL?)6][*RRw*vw!p[)QC9KJ`;g%NiWN7*r9YWo(WVlJ]D~#:B^;6QYbt>6aIp?vzOD:IUCJXo!}!Z(Z}$@TB/DrKwr1Z@Yw(eL4d0>c?9.,9,LuC[w;i3[dS_9o9P}#zw,@6bdTiWRs/waQT&QGs5dcF=0W[;jEM5TE{5V!%QN!IGLdY8+24Z"Yr^=f"B~7xF2@W<.QfONu.=Jo_gm6{bj3[6;0zQTF=7xLV.08D5RQIh:^F(~YSkgoV8^TdiAhD;byuTXKZjaCm/xlJCEMEOE.GpMJ,?=lYgsyiwErX[fV5wNW_"82d[M%h21*l")~v*hECU*v2}UZ4u3jBS1tiJ.?DFg7Y?/r>4!meO).d6VSkAyGhd|gJB"/LZ37aXKq_=!HIty[?}_V$*J/(lY~IOz5.H9WQ*SGI*}x|fp`_]?fpMJ?QCLGV`^_?#_#R7JWnm{`{&i4QNhZpRg|n~ToP.(s;V/H]V=&jzr9/z352`DVB98t^ue9JPI(kXMsaDyqQ:i#^Oh31!bP$@Ms`5r85Id}V.08{n.`Yp*(k03(70YC{p/C!9$OmNaK02tMT]A=B=e=xK;sP8.E^tBmO_f##DtBj";VkRFw_Q)%l#|:F"w{+0za26j.>vtTQ;E<`_ChXR{pe>XbPDq{Gi.JvkL9#PE8G:W(7F9{oz`px=P6st$,aP@g)v?|~KZT|I=hK29)Jxt|h7c4Nh@jArU>yqXGk:D&E$dg(CS#$D7b$.~%J:LfUhmx1f+SCD(,kJ!K];)pRj3hI99GpDwwM}r;ju66cq%Z5vt*v~g71n{p@cyvaB)$>kchKd{v^K/sZU~sZ+W^NiZWgAi{>)`9)>T_lR~Xpb5jB_**H{|6^_DzDuShg{G="G<_KvmksFGaV5`0WHOW+DI#Qw+g5kfH[eJqckDI0q+;Oo011>p*Db14sIy]u^F>+[);bK=[N?@9l09tipoi&RKi&~vsDF;@?[&Dd<:*`E;$UPz^vV.xoX"%ECE;$Fhvb8(VEcXV/G{.i)S*WO.;ayZ)~u:S.F@9@Rl5PqnT>K.aBo~G+y`7=_[z3tPp/5~Ge:;.cskA!&iM;V,L[H]lpi+rUAQWIh2ZaKwlSx&&0T>Jl5|a2{U)%%R2*/R?6$8ps|GRG3I^Z^7L4JI7=WGH[cd8l_PF$>j`8@#t;>kw,`;gBV0)~%j11XY*g62YA&l/c.r|MIB5iryZzY_<|]PNQTON[$ly;agvtm,B]*}.oo%9D<2+iX[W_u1]A*(*(!w/db&hy`Gf+qbWBoBU0e{3Gh:*C#dSfwiEa;&%GQWr^/ul/g7_Im7)11Tsg%T}BjElTv,X[yM~S+:N~?!$4GQ;n:izr+EzQ!pp`8YqID`!8re2m&UK*z4NtU>=0op`2M?_w~Mu**H"4!hg@|SB/~=@mlSo*Ugm=&!:R9{Td,q:TEa`UR&sH>L~}_l:s_)BUt?jjIE8,c$sT@&=QQ9_ngjLw6YF<+N:%c9yo)|9K9YuIv]GEzQMR/=!~`U?jXFyeC<#}tkbEK.4a]/t^^%<+<%{gRS$bJ5?NvZ4UE$kmxG]``_h&mCK"RFD8y7OfysI@q?070)p>@zI]b;7eu%*lGZ>9Uhip?fL@uR*Kp?N4eJYzrd!tZz%CI&56Z1_@X>%mr}FxgMXm)bH|_Ug5@rXQ5WH)N]L5N+^)2F$*~eA(D1}|JT_`"hqYL8#P@e[+"}!E.M3g;?LUH1DkW}Td|_.(Bo*"FAJy"$9RRL~hUJ=.7v;:teY&}3g7.;}VS&=>E?t`*1~If7"$Qo3ScGr+9h,N0QT)RlG@,V4=2_}pWKj~pBvg?(eulxEF)^PAc8CFMK@#q)!>PukOyI,8qEG,a[gGR0F<381KqoeO0;8YxGzquRQKO14ito]5d9c:]!E@+qF.*rASD`et=uugXQvUMSv8OP+ke.2CJ?4;Jung.M0~A:w_:)]S@Ej~nDb:L(1mL.T2j4z>Vji3=lZ&w{4mQKP.B}|#nM#+o:;cMdTbL~u}HllrSCm;tp4SV%9KlW{LY9(*ZYa.|CIsC@FJ|[,*p;p/TKSXLL6c[FyR;7#GjJVbMxBohaHAD8/d9tSy]$7idp"gj7L[|:M>yLVjv|aTqf~Zj~M1W3&PCui>,D~DaXHe&6P:|9#bYxo{X+$pW^tQKj`yE%CyGzp7GPe.`Q;?L.NC+5M[H[ngMhF@Y6p>TKlW^4uvxxF[Y?0EbX6:J[+q=^ul82[,geB3UWBo1I#wv|FyheY&3KgFFVx{@&hztq1Y#_9I?6qQQm2rqxvYz$iubFb%]>w4Nzv3OIk+.u13aF0ZPltR+I8n!nK~J.k`Ox2/Ad+>kR!1RCsB)W`FA!<;W}$R9O.J<4d8{$pG4hs+D+vC!m=hmBvFHy:L4=UfxLP2u;,?jD^+sP.BbxuC_r+xFE]^;?Y%SpvIt&Kot{?}`wEu3u45sP0Q%2A~hJ`T31Gb}GPZxSbUwa.|*UE@vZ~oq|UyP~cYH5Ah%9Z)!J.g:H&i2?0z,"Qv{YsMOBGApuNxi*qTJaBj!SDE4d5F[.QzEit/2S]#^2uA0&.aTEY3#hgN^*u9^X.pg,.#Wz||mN6/][l$_$+`6YEq}^a.~%b(cho5SB"b9{U1lD4J8xA^c9hWLRP@lBZX{uUv7@?hGrX]2qb$+xI=1Js:*K5+^QX]@b+r[*7wntL<+2Fy{`=L|NAWE$!g]hM*AyF6oTdQ9p*vR.+e7xoYR`688/jG4vx}|6?y^;$q4g8,E7P!I(gG`.A:qXR^$,h3QR0I7GS!Slz;)nXhX7~^p&>XFX?Vilr}921"^Mp7e?D(s.s(LAppqZd_>DS(Lk@/9/j|vOV9V]KTrx0H2V_kK,0foD*KkVPo!I1Z}ixqv^CIWi$6^QjAirA]U^+FIKbEApta9JX=Kiq%~9feUyN8Xb>gRS,d~%/.JdTOF<*=lI`*AyLd&yXl=Y[fRhx,lt{Z%n>6pXttyHsKy!ow&4Lt())F}Ika96%a!B{vp_>mME]Q^UVQZ}Txfk[:EU]{!#lRP#xf_Ea5Ps&iU@f=d#7PFd{uuT4HNq9h?G"_y1Ko3rv$Lm?ILPbuXJAf$rjawq:c32?Do1&bn?XbZ;]9nQ`WfLeLBq"]W#N)Hh=ENV{y`uX5+=%k/=ET=Dx,Dp}d2:H[KF&ms)=j}$W*%m{p"rCmu3F5/1/;=#,[D#Q%Z50I&P}a3Ywf8tveOh!$*,j}J!y.`Mgy;,>R1)?DLhq.aiz=&6NCYBza3B"7lMC3K].xsxGx3m~Y>OKNF5]J)4)|*krCunq=IBgfSo1Z:@zy6su=qof)sud=5?H*,lFa[,=hHcn,/JV]C{mK])eIylxRhto;)AWFDCX}a[xvnxP2&Y},1_1xaQ[CZ5gzxt%U)?Mv!mW|z6lF+]!,1wuS=n6>+zXKKr}rQ*XI,lM)q!KBmibP;+k^N3akwI<,HmbZQ^cdq$2ksV|TxQ#VO"Ou9VOGtY}&@]X&_Yz]y6(F]8{6kq}S]G|*TGx4CvYdu!iAflZ5E<#AI;en=(=|6JpB4Y}kKv{B0B!;s]Hc}G.~9H4B^Ps0Pra%E6}ADUjUj}~"1it7vVKFO"_1gP72`E$>D94{>q]A<;TU$.DV7p{Nf=fV8?DO&ht}3a!q{$WDak?DpHw69H(yO.H^RX?`8rXTPU5mU(HqU7]|;mfb*HZ:clG;@^GT~y1.nI<`LGKw>ViGKl_~9Y1J}PBX0iP5gV8+{zQ{Cs7U";fuuq+eZ^L[]dtCu]y#R^LTJtBvL"Dl@WYP?DV1T$jVWxLb@@rm`T*Z1Ac.CxO;%VI^wAk%S`mo3&/rU,=v{W>Jd99sYv^V7gtiVV<:M}h7t{pC]c}lg*Hf`&|JRtQwplI)GPH$5WnncFb!O$#pjolG"Es<~Od^(?pVuiXw(Ho1_iKrLuH_Lxx`Zfrs:Or%Hka>qbr!e+{a[*6$Wv7Y_{(@&u}:Vntkx|Ld2^C(G%}9L&(*+_49/&#:_CsGW~p00sLt|6B_{5=BTkS#lWQ2|@}PpT(+~h)a{}.=*tC"e&x9:Nm}nIR=6>#%m{3v)(*pyS|]Ie7SDwO;Bt:S[iB%u]Z},~:OC?|=xJ{SiT9#|W+VW)4g:5MLI7fn?i!0Us6*6e|H;bFR]owhGj|@vlR+CC`~/n?J,Xe)mt33R+uH+]Ft66HvCE1(yzA:l|7wVC`I`L]D~QXtTke;M@TmCMGg)K~8ww[p6)*2%Ef08dk${gDCT[wZOk)dzhghD_{2On8RIk(pJL]Si:kP,*?4=,2pfD~OQOy[jOpwksxO,*H)X>IdONi4j[jX+g8J;m6v9`?E1x=E1,hH}Hfm?B_k:_?xjI_3SBHJ,S&+zz.TFR]m?ykwC#/>l|.WQYWooGVEI0uWf"~H7CHI~~$aKuxJ{}T=;gV7qcY/9Ah0xc`Q/9Kdy/@Q8B":@=?.CW{^10Sk!E0WUwZU&*<4Rja`X,C{&w:mhXUL4@qX"0DBCH|%1_nkB>]^1MSl>wBr1hK#;z]%u+R6IytCHZvZt:p*;"Me16t%{,c1`=lY5OChBl>jP!dl0ia>A#W^dP#@RfWhFeyuu8og;h|gx{Zoai[LxlWU*x`cL&j!9u&m7&/v0y"NJg0i;DE!0~?:JhdcGe~@Uw[0>T3l]gU,L|8,&;H:&J+BZ+vCDx*}SL~h4VPp7]$U4]B_mEK^B_ukT%F{dEVKrdJJ`]vRLP.1|eIj0ih$GW_IWGA!D{Ffiep?`[$IH+.4G3I"GF:86ed!z=@tv&rkoFBzA7$6*AN]>%%a~>)ZA_{fy>_YX/@"}:%).b,5/%5S$!5[^@Ai*5H~?BXP%T`>7YsQG4pTx2;mwc0:0AqsoW&cKA3!UMk1m=R{iH(AxtO!Zy8D/)l|iTDnU<#QV*0kE"z(_"5$!KFH#4)k5:tuVAmr84+s9f//Z{?X]p0=cbit3aE~Gpo$j&iz#:jTf4OM!4/=NrX"riuP1Cx$,F,Xp2(V@Iz?DhK(BSXF^UvYgJNCvH)/$ks72=L7UdcTx_Z"])`dfe8,k^a4B];h?Xe!Ylx;ypo_z=LNb.UZI$bBvnEu`4Ulc}iI{{+lj~$Ns)RzYixZCn^6FX?(4fLl>*|cDd@k)`I#@^kAiJ&eV_#j$Vm+HL@Pfqbxg)!J$}y3WQi^=7&IgiveNBTH=tBr}Dd3/;OAY6,zQ"QPY"`@}`Q7Ukq4|RC#@aI$0.06/fa40:JQ9mKka~Px^e3D[ZfOsP,&G`D%Mk>|u2uCojcA!GW3`[?vpm9f:CXz,>p[MQ05v*)<"*}AkggY%U.FVYY}*=Pv53X%XOap,2arqt6R{9+z3V|;+)c`nex?!47GRxxC;FIHZSRIQ}Twaq_:fU.Dv%jWC{w2w:[$c8@KBKD:z>aQl&29j#z*qAfH!~[AbIl)mUdTwg){1{I^kB/!m#uZS#MU}L7y2:c][q;Hplqff{1DSskf*uy+@=R{3WfeqNz:W}c4N1(BQ%QjVWN3DWzwiP!O[*qX4CpFpYiCcP~B8H[zZ%TC&L!vo(n/!c)(2.}%/+;^kX+aH4z?0bbUv"p6i)e*!iw5$t8rx%s`3hiP?}]ob&/+RR;?D{OYGNCR)4_$q{%Jsbv"oW7GA[n[1,Mj+0uZa@GE.Bdv4e:km]D)0j&Hk1X:)RbGDc7U`TH`es?#(,fTt?1WiUqpiw!yP_Ip]nx?$Me*2L_5a~9buDlD~GvFT1#2MsE}bq%M(+wY@3^7a1c:B,l0#]AFjG~Q=RuIp,nTy8PV~zBM`jYy`c0wp=:umyY$,IK=9;?]XIC03g~^a)ZaXU(ue*2bjU6l^aTYxI}N96qw*+XyB$9l;dFXW8Ofe="XG_Z{.=(7hVYY`M=@wz+F)#1z|pwEzO|bRPdf!xTud0pXrW[ZFk}mR@"dn1kj<2fxi`Wt)1X*O0{qxb{S+:3pfF~DEAl1Bf%eZ|Dm"FRM;vxMp0(Px9bJ9BWS(=e08/$X:]?IE[uP]YeN8x)e:RI}@V^,=$=.*PCdvW5V.KC${Ny0ymy,}DmWsC|}3ISu2*ogx.(8{LKW=fxLo|+#j#b(IGnpAOzX.N9[m:Qu:>FYJt]x@GfB94nOPla=b4*2#G}69M5X:ErAHsz,s})Pp0(.uv25V#61SU=|x6ic$sMLrfxE[,=YhgTCWL4OgWGc]/6Qp]^2b(P[m13k6$*=o[M%(]FL/vn{PU^GrS7LKT+|b?,,jC[F~(8IwU34ypql:e3kcTxbUAv6L5n;B*[e3YIuRa8c|gM+gpxJpk647D4xY3+osukw:2%aK$zrp?&c%SDF8V]4lBX)stwFz^g?tZjNyT!p6%OP!0?Otd?L{Mnw!+3W:hOs|=Oz#i)zzmh[e300^IZ]MOMNyB!I20CebQ5IQ._Yu$Z,.#2$?;t{fa`z[=smiwtj!PQH,xb0*k,rkXbT{JK:"/7*v5=K#2F;8v)!NAS;=].bmeF^DyJ){q<]f$B$ghFe">X95b7&G}NEmb[Iwhm7}De,33Hn1{|$/ITI90SVJ$dhukZTdt[xWz,5QI:/DZ)Ik?O!t9Udk}LaB&nrrdTE^Z^71b%%G`Vl>Oy=?u6;2OMEQ{^6J!n+*f._eYAY`z1u{"|(}x9hElH0/IV(;hwSj~f24CQ*|!~%lZ+=>VNyy}{6,YbhV;3,1:lI:KVYD#[a~#J}#2YZ,CWo2X7q5t_j]m2FpTE7SLx~1:54m6z%Y%ccTde>zw*MZP5;6#L~>&|K]]!wHj[fL4XH52O{7K%}`V6.%Oxlz=%r}s~z6zVmN$:_x6hV_wo69/<1m*uS#h+z.azKac5J?g7ZFzj>b]!3T0Nmg!Y1BVW0HA25)RVX4cwhjbw0dO%+%|V1eOI%_,9:gj{r9rOyNp"e5:xg&qZH_thJHY!4@39#mq{3n(p=$mX6!E(P"mJcm=w:dHb1KM%!T`"%;NcY*zAGb_D@K"42!NLpZ$q.jD^vFZQGW$q5QGWB~VQt{a@fZ]Q}Vu&p[M1K(M}XJP1x:"FwTW%cgq;1I4|ZNC<)5MxO%bTZn6?Yr%Zk)U&8,}[*v]/L@O1.H:N71YW^pD]qY6YTaJa{z6,wh>gpfP?5nU@`34=TWU;O1.)Jpj]8:zvg(RRdO3gv#4g:!B{i&R7)FM]9vX)$qIR11X6"_I68*S(@2bV>T`Q0O@/aRtawjQ::t)XJGs%."),Xxvw(xSCUNkdA|Ka(P,(D,oy2u4zLC@O|NEIqrz(R[|$>KGhgI:?wB]%#&p)J<4l!izDp/qeqUJo6|]tVehT(e.Df<]O*;)yI>Fpc96U5F,Rgjj=nl@"*,a5:xfCxEK%aI)2)aiMWPOyW/DY?]CoHm}>uX<`vLZ7r6wo^K"mCO0tv{ZNR+$oj.oKs+?UV7,|8ipe1pA_,%qH9~gjWJo1&Oa,Fz08Hr{|%*S^MCX^ytn_PdV?^[.Le9msOolzzarOQz48C$1Oh[/@uF>T$&OhiqO8,UDN@VQa96}p#_oGSoSexzXh7KJf?O]zbBqLG)V3]PQNZT|mHSYWI2,V<2"#|&BLML"1&w0+lo6{Lh[cDyh&dic?TPtQkamk>O%n6SdFrUsFH5Fe.0IR=RB]}3vtr,%q@$c%jYx@L|}gsbDyhyRe|NC`AoU5wzH_&^z11+x$~g=YDyHAiP$OC`r?_uba+}?$VivzS(&^lfj@?;}gqlDKcJj8!d]0&Y>h*!):)p1YzC39a#je;"KC%m6*|=SF=);]vf~3EUrctmv*H~s])2m6>gRyuV]f9_j+(8zzTB*%sSK`_zc+(+jIVM#H?H"Z0|_]6r8cmKM3%5n?Hzk7x^?)KI&NFqh3QZs)O2YUSaaxRzo8R3IPjL#dYqa9:0koi]LC"!.k1Sn=QGzxAHVvOB;yDU[HK*M}^C=)wOG_a~P>1D9I[O=Ir`Z1CX&/rfB;zDALn`b~_yu3ZvQYe+!yVF|&QgWGhj"d(wJYF$OkV^rZv}K><,SFs88[xRuK0Iog/SbGot`pyr*eF3[]@oQ?8i.yvz~y+r5?x8e]P7sx8yex7FKqpazZ1Z1:S0Dd!YxOclspf5koBzcs!;f{XcUIBLPnvy:rr}ts{^Iiln+`go[Dut^W/FN7Gj7en*v%7:Xw_F0~zHXC=vM%xqoNZL1_9JM"z1Gr~cURbsD/<1_Rstaj|i^H;+VlhFnX8|G%m3suQz|F(ULj*H+IY}jV$.,D3hC,`r({EfETBB2L9izEX9nqGvf!J*,+Q+xzH6=9nNbl{:GE>j"y.E1:mwLo4O:9}?@cp,LPg*]@/!$({4Ao#%tZkg/>|v,g&BT`M1HkZ;c4,v&Tq,Y}~f&j{5z+>_)4Rf#ik2YDb0LP*Ev{c6~%_{6;BsLP:P&D99paA^Wv^tzFL+&E#0kD0GK,pitp02^0cT*)J.bKCXw04XQjL!Q|.}Ajc0rJy8`,dDCc2.|Ehk+q1);k|yT+DhJmMPa_//n7jcnY[wTeA!BKIY440h".QsfkS[*h0}Xp}0zPV5FjYI$ZCjY9[ieCf(Pu9Hh]WiJ;B_{J=(fsEy^8OYPbRwk~CM;brr2.a:nrp068f3v,r<}8*$I9r2h2pHwN8YAtERA/JMZ[?takk:)D]y_F8"CQ#8ygVNC{PsK3l/>UvO!b9d|HW`O!:Mi#_sMpXieNn7PKL{i`_c+/)ZpDdzL8%`"{]W3b,[,~l1ek$~hoXRUHh/*up6:>e/[Fi54=yl8"[W&<1)V_Lmo?wS};l|`bFPJ:l,wNB:y|!yW3XAY^YpGq}+(E3A&b>1*2W{zkRU7"l3HG%+LwMXX#~JHZC;+[=;YK%t2p?xR]O{t&4%wL(.0[W3&[^L{2=b?%iCpXc&no8*@Yu_Q4WEi&Wg%FLR_61"}@x)pL@%r+yK3AZT,wP3H,SXTaJ4uSGHKIwgjTRHHZI8K>M*}x/K^90P`nO7&"4zbeB}Xn{u%yrE(uZ0qcNYpC8,R`=p$@NKHH>TnhNYkqkqWGz@;_l1f,>GXjL!q4[d"(:3pcJm.VAopbGWy/qJpDu|6,_Nc9^5,e:K$jEI$yq`K8biGGciRv%9E|u%K;i=WE#)&7UvnX+@9k"hMpY}vu3;Rd:7bV8Wq>g0NxLGY0_JA59cJo2(4K/?K|A|EEKJ6Z#!^*4_AY"gZRFw)Vd5"yc0"JyZ[x.$]JP{dwS&QD`:`ZooLxMYBh[^Pn/$ee[=C^6n8r1UZI=!_)/jUdaI0Ye[~U;Tt&g,?`HzU>@DNY1Xk(#^Zx?AmR@0a6Y~o[yl`?/loP@uMSUXWl%CukB,|.d$?ShQgHoZgG)UhGI;^h(sQQl.v0$KuY*MQCiOy}Y,TVXJw[hA:}RaNfGFJzFjyv{<,AHk=QDD?E%iaDCO|qs;0=IhMCPg|VXAnwEDCfkS&Y}_Oc}$K&Lnc#DB^8Tn6Bg:!6v$KP7IIRVjiRb.2~JPD)&KHn`MF;YiL_!ZeXehT(%j?%e)}+&aiU^ZllcVjTWy4Iu1}/JGuU!!:x(,:KQLh9z_J&t%_!j#!,1#B}{~%ar4t7nx`GhUaYw540u6TE<]^eKGn6Q0*k@xO)kSGa^~(Nv~TDU]BgaJv;G]=aQ?n4|U^_.%e@N.$H6(J)FQvGdgf2)7#Hvgz4PiDk}A!G(K.yGwR#HsuJ>R6t:O`!OAi}rv7sFK*?fkl}ILi{uJ<}e;3~Jr"P5LC~m$G9pXeO7/SRb3=v2p9|BPWF|ryJhxQ_,(gRZ"$81lKn}c=+ehqYjZv]1t`3Dgzi&i^C/|*/+aGlz)8/U&/1l#s;>1ws3EVtfNCeimJucFz"ZqhRN@m)q4v[lS&tH0oxv~D`]b`"in~<"z9Y&5L!|SwhY/G~%[*%t~a]u+&gq^G7&n77m:or4Vf]PN8wQ906V}C0I~D1D+vk)Wu(?dEKN)Mfj.08tu+kRWq;[,M}:}/yFliI3AgY}tf`N71=#j=kEKLN*Z1f,5I<_`m$Bu9u%0=9(Fbk!HEnSPiyfhPm?n1G3O*P$.y?$yCwOee"1}KRJ[kU7]33J04CZ}wG}B)$x8GU0%~A_]MG9RL7Pfv^#Ehu>BBDIYJ=6i~N1^{e4/qe{u/Fsi,Wr_XNA0S}3Jk{[g^D~(iBsalC$He|oNe{{6+B_lHTrwRFBC]wjaS|IWPvU2k9/U?_3;a]KRFgFGmz:t^N+0FNpMU8j;P0FSKcZ7>i2lXU[F0u](!9m0&(K/"62LD!@Ze*d=P_q%/1:sZe:CSQemb|Meu#68Oa#R.{{JN,IR5PL[[p9F2h$@yrU8x}($H[DnOwKywfXaH.oICB9sg|t&xiqXnpCCrf~S@FeyBOM=1^sG7IU5L_x&Ik[_uh0_TgD5%"/HgGCLEDRL"TbV:n4iGM74,+JysdLqYgv0dEc%yEiA~HW2;qHTt7Wr"^(x4(EkS>Ij5?hDjMy4kC!"[b?u5B,FoHJDGMa;ijAubQ5SJQILs0]@@svsSl/{AEjRGe1sEktv9b5KBJ"yLb!BYmx^}E(L.X1!F/Cm05/s:?=Pwf:Cvev`/>S7W/o}X@&l$&(KCOs^.)bK6QoSa{d;[<|2e?8R8u:hb,gI`ZCa+kO>^{|Y{Kra2q{VZhpO{U.!5^;$E*,C3RedW#(Uz|s{5ni>s^oN|lC@c])zTiAkAKJj6o&.XQ&D2;)u8[,[5|_oI!BvW2[TY0*^+q?oq3UH#,{IGu6v.:0(CuZC{(h8ckp[3%a|k01"WhfS)qmuo7SrJQprtN:k2txZ}6Bv<]FKa5;Cagt_L%b&^Ck&|P`=T3J,8,gPT?|t,;I,~k+kR*0X9(]fF"7^B!l8`}|+jVV1c6J=]OZf^T9gJc2NB9kqiE7t6^,2+!u*8ZKlKH@1r&3651gd7`KqfB6td2sDc3`.^#I_iWO,CSKpHry;$Wu$1?L[Hu5B4}=>6x&RFL=!M@8hGe$mGN@5!V:5j2Ka@O+E{*x1J+Q[/RT:9ErpoLYAfG<&(Ib?y/3L&eCF&nO4qny?*D5N/@a@Q|Ya71p)]g9zZlc/l]9HQ.Qudi)rhFk?xNR<%4tFwH$bkcs?8It4dnPvg.6Yf8JY<`*K:WL6njn4^e:!6?GRrp#fFVzVF7teW_jfpna=Wm%?}o9D}bKUjwENotS6#~3yw.kjY$j;?UV3t|Byj2#P?aq/$fcDn:jqA[dX:b)J3j^6BwcN!7]SocgKi2Lj2#`C7F^0Dy2ipK(NCP0{>BteO#WWogm<,=N4G9Sr@.b%!Ou~:e"IU2UT0tCe^SS#z7djUVc.;CCs,]zT,]Dj1%;hX6N3?BtFYo"aoOPSCbw0PC]MDHMh|}dF(~zqcU&"_/p~H4"V?A$E{H@bVa]@=Ib}}Qc3eAJ^|(XtbyQPxB!TFGU8N^kIC+:rLoi;{lXP,ntOBuU~YE4FI|JA{bxWJXkv}ScNuheuk;TJ^gQsbSJ=`XP]0g~8JmJ|Z>e{#8${%i}lTm*UU!n{:Vx(Ce1c,lPyL@appnDab3n3knrQWGoI+]Cj"E<#6)>ua]0nxt"UcM8#DWIDpZl};uu[05jJMQD+h.I*t!t|XR}Dnuhd)0`{mB+"00WC0=yQR61Qss}Q3k^pL&K|VUYJr7|5GL|hT(cf:84kTAp9E1s4j;1R8Kd;Zxz{hOxaPC8CQ:%p_53[?T@DX6t;wT5gbz7Az_{A!OKP0j.,YU)]LW.!nJ5imqJ8)NEk4co|h&CG)kp%"N4fuaaGdo%3)Aj_l(:V!SK4E9&yq:4kk48_*`k15asekQG9M`)vQ!N34"?8biV{Ee6o"D^mPHF.g!jP|kPrBuyIG!|H/BI{p3gy$iv5RTs!tuJ|]w88_Tn_U=h~b"cI)0h;[Y[Q3n*[g5=([Q7GNeyhACU2E>E^}PH81Ro*gQ#/%)=@|dLSr;75+?FKBU%D1PS@4)uO$D=ScJK9Kge]]t=5[1^R1k5:p!5"Wvh%z=X|h#@$p2u8Boq%@#^(`,js({/G;QOgc)^XN[]!Nwl:}Sl!9%{1[j/rQTT,ttwYs67Q+zda!fSS{rejlf7R(?<^isQimjoW{gUDtj{@`klw1B)S{wm_H0r{or+Ss`M1zb,+dx|2DqFZ1I{$Ay$pk)EW3)J.w;:)Ui%Yi{aH3vw#,1)RQj+40X+_ENE_{P+2sr/v6P^%wZE0S]ANH:m7V~~EO9$$1+TZ^[y6S>"LSh2D`CzpG7E*VBMLY2XQ*:aU`7l=0SPd[p:k+[KhlII5Id&#]/&Tf)GiM5{ysMHUkOmwzlwnHn}VgDkUFi4`YPJzpWHNH=N4|wQf:g:}G~a%86^ns8|$iOXI:SFk7jv"Kwc688fEOHU]YWdI;GN)/cMf+B@qXEt8eqVyn1jm5b@d})!!sFU232yjm8>Lv6;TdVl!E:F;&;!U2dO]Nt>or4!pFEijVy,ZQ{;Lest}[>[uhJ&/}HRc~*Uy]8x[N~$obXQq=e&?hM"Gf)+wmg!<7zY{cmJN8p|?2@g*hf8A7"6X2DJtP8Ps}[:;/6Hz=X}{xkeBwh26}w~~D>Yf~u;(|Hod$8vd$i){FVz`yY!Tp:F3m@H2Z`ZIYQ6z9S8Htq]tJb;`$jLJU:G5e;.C,,vm3ha?@>oI>N/9p^}n&=_`spj*teKbebMxO(*TYDg,8E]14j6k.:VbZOyc],^,$"r@;O[06BH:70g{sg(?FZ7nm/g3l{mq3516a6,hq)(<(lf0S=/$Z&v,)IyRL@Y~iEgR"i2p|sY24+j6+*qKfRh#!~5!]djFO]?>pN|xVY,%>IEn,)(rgmuvVRf!Ly2?V@*hE&k3n~w)(Fuqy!TSnPQr[6.NHg^kS@mIY<2BGy?}e;@(BM6CEFKIf{qAL|d2lmEj.k@z(`KOk+HDTd.fd?~>WA=(~GvZHHuJ9?+vV)rBS,A1fo384s/5]<9^wnUfUAcl0kn@ks{_p{TqO}iv8?06z`EKO]isqJLCaz,$0Py[Ut*V:qgwFgB/c+Fj{1q*k,(#sZc$s7]~R1b@hi4p~tVHnN72J[1:&WOXqjv]]dk/|?O;u?0BP2pBZki6d$PMD&Ndd!}_.o3@I>>d9i@dYUH,F)0]Y!Gd}v4Z%ZaP?/}$HU/>N"Bkd1I_Bht<0zy.fzqXnl@"kI7$#v2)P*!EzbJ)RM?:*v!I]mkkz2&>FMe_~}#uup$&Lk.HdALXUC/5ttNOmrX$Ri71eL}0deB#fC*g4"=EJ_rCdx<,MJc<@T07V(j5nc5v_/`tFp;kYpts.2xP3A3Bpm*zLOoGH&puu={_{>Qj>/$*!|lfzS)MBLrz&ibi^n4J161cm_=;%~LW/_!~oi]C7]`[pS$BIzPY:_<&F%o$PF*/FK{1x=c}HI"I#>Ry**cIdCX<+<&<9h(~BKQ$2Qr1*d0V&9s/{>]:}~f6q11UPn2p#t~f,.X{),/2!)kmYNWPu8*82N#O.sm>$B@p)A*OyhvWg6ZXqH5#_+CAPJO4WVVuI5jLf@m^cS.PQ"SUVvMExLLZnZ{Broa)0}npiv(TgJVN=mvzH/>$`]hZ2.^FA=FNxe]cJBDbd0fmQ`r(yv(_%D`jwXNV/zZG,|R;M6Sb,TN/|>]NEJPu/7vTv+7F!(hgSF:^w(9L?%_S.qy4!`KE"wL4/n?_6q(k`0$_K$o,*_iip+W"SmZ$54w6V6BMhB=e4IB(@E%Y8NN8TEM[r8#!W_1XR#,M[hp~Qw:]kd`u}k3^DC#0a2x7Vso[e~2>YDcA)3h;02o"69@aPT{Q<:}H9dTRQs7nL+uM]bpr&>YQ[db|n4s[hB"pB93sW7kiK.okM,2pXl9GB`bc^x#iCdNap9+7#w^>1iu;J/TC|UQJD_zL[M]iHfnO{}JG8fz&j6jis{k3<,?9l#T?P5jGV.EIg.|O>Dzixh_M,z"o2">g&LnV|sZ%$@K*D{aS`[_BR=,v*g4(a9:B7jZS,Q7j1[!l.$oF[NvN:+ibI#s^zj68SX0g^Z[YfisUtrGzS^!K*2!Yy{h5D#h!+p7T,$/QNad3LYiyz|VKa?NsK{_WY,=$0a,UfVT&_vdHCHhYvM(98FSBbWl8*,0"Co,d4_xNp#C,`=5]h0HdxQU^S`~g(t;,s#v#_$BSImkTyvz#%qH5>M/%tk7VF3OADB3Iz*n[vK5$fC(rc?<5dL5&t%,g.+Q9x"i+yX(?4]%[1#|ZvmfA!Oc/23xa*}gM?{/s%]d,0142([l8!%rPX(#Nod7>5+*KWM7pnO2IC<`;`G06H`XK.Z,*Cc:)K=BJCtoI!YKli}v<7,fs;3hTVQ)rCTY&Y"`a"@D0jH.Kp"5oaoO65Cx#DvCbD=fPy[Mu7,1A~Q6?;vQXU$@}z^d7rO(N^{z;#uodZFaEM9kd0elH@Oav9W+&55AF6`sQ"5_Js8Hvu=he)Uob"j_=We4.VA@VY*0%kl}h1c{MNoul~zZZ[<`"$+CT.v?oI}4=kT^5j[7w*7M,gM=xVnt4KPKX|L,,rE{7WC$sa=jF{]#pJ|=QK="pgbR7jH,*[f0Pd56LS{+KIvx/iwIHF9@]2o,:?>S_m$fqe}$Wf}j_{2!`jzxU,UnL_aE`}TE>add=y[77{Q&_x.h0*a+.R3uub/cbQ7D?+ZKP%$f]l)l3aiku)$Awsod!OCR|20VAuZd6_nl,Z7h/N>2qUj~_{&9V_=rXD,%bcTK*UGiu}/+qRh@K:^lnca]b*8t5y1v&rdq3reKP`_;[%%m%Q$]o#$@gz}]mjOu{Jn]2z1dOcdi!;h/4<;pmr0{&oku"7iLPl~+/5})Jvbc|ud!j7wM[*#QG/:TD3,7_h4xtp$&,(CzgtD[UU}5bkv!z:F<]:8*qm!LSQzk(8JR@o_`_XlY?#Hpsu7aY!]Z&f5^.E@nnt[Qpolt+E%!q%:S96@maO2P+veffF@+u&vfo483e&tM|v#Hu#9*_$SG4`{z,9e*l[QG@61};h`<#~JqcTRl!z2!Rr$#hKJ.^8a_Ob=qU)?@O_(e~3Pv$gvhA{s}5u8!svQn40.gyyJI#Y6,/=x:nt[OfEL{&#|7Dc#i7^E=|*u75pyIh*)`fBJu$nGIT%5Xmz&f!5Col}oS[V[5i|S.0{SH&a"SH#b);j4JXs.A~^h#FV4!79yKa%FxVIR9OBo:M(qfDu}dUoNO9!M&~8Tp]GD?gxpP,)Wx9"qgAzz~T4z*q/I)I/4.kM2M3,vw.7UP1Udw8hT2}~b^o}#VF2B8Fri!WI?9#5WM[k:/2L//S}{CbxKOPWp6o=m`n|~tLdhpn>Jzd[FCW;EzJ<8Ov"~^)&H5+So7:]5UdYc`Bt_fPgH=zBw>#WqBPVe4t;V@[{oYJdHC^AU)K}MecT##B8Ek4FrTJ@WWW%,4~iwC[k8g}UkF/6Z|tl.tEMC?)ugazJ2^K%vh[nBjGc]#(bC@+>yIf}h>jx>5wY!]F!zVF;`.$uniUUPqAUpjx2o5(YOl`qAT9$h#9](;B[n0t"=6aE+BgA8j%a`)bbT9$Zra{E?_s|lS4w{,PyOhzsDz}"XX:1w@T>Zc{b$]t:Io&QL4UU.opQY|X+l[gH^PT{$,q6Y~d/&x47#M2y0ePJPr8`bF_)fP{yh(!:P2#+knri@P0]L/_Yv9)_v>VKQI,FGkfK0P@j.^E7_8[LP3(,PXETt5VhoZT7p3E?(2%]*ljWeB`)Ywm?z*}O[x_[x;Y$z6+.ztG;0#AM_+e=oMOc(dzY~{/MCDBb`[k2*c"%6T&QjxFeCdrx^R~KazQjg:rQ.2BlSd+k,blty2`ErE1M3548FrCR)3UaD1U]/O?j{O!7^17[E^"&}tl?_|Ok:hnR:)^7QM)yeqz0f9fTY#*vd_7/^P!nnZ~Ytnp.6kT@x%qaf*P!k/x9._EEFIpnv1wUxg(qicoeBtVzThGOmXL8F4~y+v1SVcCUURp|nPc#RRnBRO=ptpWfKC")FnmffiUj_5JD7CE:<;.`NXYtkUt}Ij.V5emvq~z1v(bY7WL&o0F{;o`$|yz)Q{ir8RMIIAm6U{2u>"nop+y!mr,;K0:c=Jv=itVx&pe}hc%G!+p(hx3Hcy"[`[EtP>r/f5nHHOvnhC,"L>(U~{Hzz2,%xuj)fTI;b1%(`1MmYZ~j}XI~&EnOg=[}RHT!J,AL.~m6x0bm+Ns41Vp5X?6QStHh$_iP(?aQooHLFU/9WZw$(h(e@bh`BSzqH59P"z9O):)u<>y;3kyzQlJKzcamng"g{)P^Sn{LS_Lrk$*)KXE)aq_p?n]su!JWdR`+CAM?[Q?r6)6">&iZ)uJn2cNbwqrQZ5ZCK731A/!vA?PCe!zlHr1+:Q=?NaHEx0=CCylSv.MtH@t2I#.3|w8Ve]wufASGI9Cf6:uoLj)6uHd@LgE*(vsuqiI[*g^t^PajQ_tpX+//CZSuWWUA245{=a#py<8p#}LrBG&WRF%g+aLZ]>%3(Ig0`s{D1Rf"!K4snctQ:U2s5ZEkd#q=mewFy2*j,u|JG]bH"Qsv*X<&owX~+t?nkiG/E6nY$)HRDD9prFK0#Hmm9k,D@!RA{uyvOB+O9E!fx"%.vE}FV;^{Oey"XvZB4n]h/Y:i#8{ug"`649$~(mw28nn#+TCmt#S}[9k!a7+k">^E14Hj;1Dw|qq7bi]H6Q&[[6UlkCMHoC3NnC?7n7mQ!pGqIE(P;;$8*H38=+D9lkZl[XHZ6UU522GK9#]G,jw/GdN<4xgZ?jgH@L{~44=MHk/ntXA(Mi&eG)[q}Tu15[_RoP,D?/:^|7T!=T~1l~_GGO&0&+X_2Y}HhFH,",};I5p#mfF={YuBES?hrr+%]{AjdYkMDyR,)1nS>:l5EdYnLN_f$?Itl|FqQdjL+`5syWw16in1[rf||)~bgI|5@.JFWx{j$K"%&aTn,q"9O9Iqe,mVbu7YQ*y7kQsFp7OF"O`2"Ym,}97Nn)(M?SFcgRdK&C`8UX?MeqdH;3a!)a}_S.qSdQzTnF|37|[Dk8T/cCgS4T&cE)*~josXPO8$vqU##?`?$z>EVqiyUi7jCaOCmgQx6.j0=qPzbkW"?}F@dD_98Br69Of^[U096dfrs=#7CiZjp/mBR8ZY,"sAn,EZdOUo+r=~+Yv{S8iHV^i&dW{[)S+j|cn%Pwncd.cPD8j6$<|X[5*Ej8k`dsb{:eU&|/]ixGu_i$+t2`o?:d?75$mYMnZKo/?UtW7%dmO=ECJe]O$o#]tZE1/Cyn3^9IRVucUWu5E3Dsz?/;x:$tLG3?L>T,ZJd7AU+PS%18M/^9w4!iQ(@(FMY1Hw}tgJL448m8Wt#9Jlkeh~h.$f(9x/tTdQ#$NX8=)Z//Q#7,#!Y6W6)d]cIo+}(B8{$JW!O3^6qwwV2bEcsJiYk9f0cWA+D"=xl=28}DOL^[go4[|S_Kh{)MHsU`<3k[(MSe#p^j"rNli"LY))CVT+I6r=3m;0feC1Iy6#>eck!~@bsUkS/z*%&{]w@,0CE{x!fe,R|KF8G$p|]Z?m1*;eKzvz#`mQhg3mn}_0]Y"J<+*FGBV[]^FN"*W+"yd8HF={q3PgV)[1*Vfer.^`KWWb%hJr0+B:o]2(IGWwqatyn7RI>=Qr2zi,(Wsfp|5h&QMyQ(_K{cb~Ng)@(,bo|He4uF"z3ysjtBDR/maUKW#W}er~~1Z|"V|9L1UTHV+(<%fx}Pdd/H:13lqQo/,DK;y:JxkmAQVU,Xw4e:9ig8=clu]9LP_S*w1dQ*xVx8#0}TJXI|.61"~zj^(YJn,ZiNYoVLe)C|d(4BL/CnPCgp?waSEV:v$oo:#ewCJf=,QKYH&LXx`v(CGTbK6dXu9}hLHp6L~h/trTytCGNfBq~RHIxe|GrO+inUMxf?GpM?b[IKxdP]|"VJ=LyD@+!,67E+~br/E~h!GAO[Rd$bq@pN75Cw(1T!A^lmp,=)l/5ZG>*p2]s9:P&!?v+]ywoDm$5H}l902>@6Q:$L}h209(KYWvfo*SB,s3cpU^#&_o.Y,.h%Y!F6R^v)S#ZRC%fD%0?M0(S<<2"Lb~:>KCF.ox|BoO?l1ntgUW0:~%!Pn0S9C}cfx$vYIs~iQnEmXx7b:[Fc7Idp~t6/%M/0[u%)0:XYwsN_.F!d&KFJI/y];L$U*Tq}6^5Zag~#&yr]>y%dQiB7D,eE[nXXyIR@FoZkuP)O^Re>Qzb2#dEZy8J%YJTN%Uh91?[KQLI@6"rOiLD9.E}xDm*C|s?sAIV63U@xDkJ,#!UKFiU^[Ayut4K>>iKcwW!SY6W~SXx0m!?.B5/RqgeN&#"/$!y4SS:Qp2|xEfuaNCPMa0}l28wY3PCkke)a7tbMe)jx{5I6Tuzc~kq$D^RF5>zIJzo^ba.^"6z_X&yK($Ud>JW;:cvwws7]PCQjN`@5LReB}ukJ=s8D&Q2>Lz=EBtu$.w|Ru]1^Ppy.X%B(OeeNgl*66/k;g@%i#711|d5NIO}bD6)o^]]aq5bS@W6I<@c:z{4nl+$E8BS5L>wAswQXI5~b5Igq~e~oMhCLEOmuJX1U)!h~(Bt?G^?qu+fm=}%Xq]RD]lI0>WQ`g$am#[n:4G2%7th%:ym:59)5#gJceQwgWWG[TTqKTwY[.vK<"W:{CD>M1]K;ji&]Rj}Gh$Nf!9NO(HN7z^^Sl(AI0.@3j]1/MuC_r*bYX~.g~w=`$oFxcR]EPNBqz,K{4RfL_d)g(M;djDsk$1^a4w+>Vb.I2UPKlU#FGTHK>^"$[Vh4Zb]]ziHseeeP_4G31v~N6:d_M$rvmxoj*Wi]|,c3]MMdRR12kQiyyKf50+rplXdP$GO(fvYplK2b{aGKd^F+Qsu@SbS94J5qvuemy.YC"9Gcu9z(<+@*S^o3UR15teP5R#ib0.VdqB_h^YJ?x(e.YkRpg.I[ckmjl&X3Oz]^rY=fLTAueX;h&=P[PrV]VLFEl&)jmGhJ44Wu+p{gP53n(:5U}@y8#hd;3q]+ZEbvr~d;rn>bGui4#kSjD(PD}80,iXlA7$lJl,Q:y,5NDye`!<@IVug(;iJX0/4T|ONu_4tBoh;kB#YS_,qs6:)E|r]BG,$=BWv&Zphy+?*e0!>k;}@]Pcf+?0|Kbgz=Q$eZB8I}nU~VD:PYcp.gw9#q|N0pUi[z.vBOt0(GkaM)sUk+3NnL77a/#twjyXSYMq!3@@q8BN9pM.Dga,;S9sEL#?|mPe4OfAO?QN]JQ6?VDwr,IDg72A1Ehhu_w>sOC`@8!.;1Y?uwA?Pk!&<^Xb$YKKYHX(f>TDBh5?V>o(2ngsbH?2Z/F@?d3hNUh`1N4Z>bGIGwv^73/.D7hOCma+sV!#SJDVdV8]fRdx/P}*C9RD_4`i?[,%Ndn>L(RT3:Ji/ZynO~~xmfK7,qJQV|V0,3FdRav9(Pw%XFH4NuWDiz/gQBzn8JwwrDKGS=x[7{ncXr"7{e.jfpebZyw+CuJbLcnbRoB:IQNqaGU}[D1PZE|zGK>yUQ*uVeDb#5VG>1??_ZaWfN;h/%51D2D=z|,P!ygixgyn8>z(gT4.xPeq22MSmA;i@Z^2t{xd|Q(]ote!6;O8#Gt)c1adZK#aM+J`a[PTt8bIW7bh+O_Uwe6K@Bh`DO#GY?o~V"I7SCAZFm}vQ^]GAg%!f~Atz>;i6>}gT0,uR%@_%SNH`28;D>(ef2yw7t%K5RiAst.K8<7q5Q0%Pa~;|;JhS#U_a@xmKRCXpDw6Nw0sB=UR:*|>kq$0{Jh}oYt^M6wbX%s~gzdF.|jxY&I;K]l:lJse>}ey9voyAGi4/vj)+xOm0Ijf*YiVNRzj`s:z(~&K0R,e/1Cj9fF_A"{R9mGa4}gOo_(?>%3DN3+No@H3"hk=D,1pP$BkIeF%goaR8lAfhN6PSQIt&FU1nDr;Cph1Bz&ig27}EIo!E"OJ^GG+MY}.Y7qWZnh}re)n~:R.!)]XIA%5:I$[U+t9XO;2$Jb}#JFJ20puOaTQTn_QjfXk}hw/vIwr_E%v[z?/.?})6MnUd<|z)q%KxF_a{0SnOEZxiMv)KN}?.AwMlfDn1o%[nid]}e_qp>pYTGZkFH+>f{>?3:#?Ao=qUgzlqa>.#zJ2thyliDt>L=Ux2VfxWcjAP%H{;3sn3}I,iIuuUq$Z/eg9*?2Ui=8HH2Xy@GBY3lFA3Z`{F5}q@^q.}vtI/d0~q)h#1ZMPBh6f/04/zqg|PiH_2xVot|0_`)8@@HrG=pqS/jKpMz8|45Jj0Zzu$W~pctX9}B4sB`{m;(RCq1=pu(hEo$y{=2o?ipupm:7W}JXXSZIA%}9SCupQuV,XpdKsO[%`9fmma|ig(0+nk/yaS"9^?9QM?Z%F6|/cMS&Y_)4kU&XHEu=X;}:r{(hz0F!+Fg:Nle`&;U1xv2M"M31C[4t;YabP!g1>)LT;Hv|)t}{VR&^ghmR2|ZLuNFSepkdPCjjS5Y+aX8@jDjsvxuMMAF2eYW4}F9vU|VZU@v|`(PtG:(f,XZi)A1vSp`WyVK4(:91Mam~`LHNMX}]XJl0+YX=/V%,?T9p7D=H&QwLxpQ,F:B.mjN{,|1O{3n)L8(y_QP6^RB}0>5{{5wx,^_"`t]*[1aT))(@T:E{{6ZxE?5>3VBXrk[F>~1P%8(_hjX&@`vKCL?|r;,:1aebm*Y6RlEW5}z#yYHO!6^RlzwM)G<+`7tlOy>~DOJX3[Dteslhh{C%WGwq{JZr6`uMb4Pt{!7FV^aqRh`%@N}RZc,>o2w#l;yTt_#5EhRG~Fm}|Ryk<"/ygRU/3|kL4h3_kpqYDy|p[:ArXKMHY86@|D<"|NSt+zK0T!/&G+"L">?h?x5w^kJ8omy|u`Y*iWo52lE"qTO0[Ft#MfssC<5p~/RmDXn*[#u|D|,G2FP(fvvmq]ZD9WZOb!xhFvca:@q~iSW&4[>tq0T6#$YIz4gC4#=CvY9)t3HRD!`&g[sba^{FhEls0}i[B"!~([;J|Vc_X)Og^v8>Uy/6hK#PKq1{14Ez^5Xv5vwHNF1Jr4S0htgqU>"jw>|;SPb6};>wQZMR9c>=;M,WR"7uZY`$y#g.&:i/>XW~4>X/YUeP48:8<]U4*^W[flUZ!!_uK5Zh%/F`(_.[Q~oG!Ja9!H~OEYgF]jNo>B6rj?MmBccsw0%&dD^t6:g&v]U"QBrQn>hw/}F8dQFB1;?6qrt!MexmK+!ag!s[Vw4nGl!Ov"Q%NTl7`8(UVfMb>9*YkrL6SkmKN^n=TXq`Rd$We{T,toVYC~c1*y4e:)0J2gGVDrxyPVL7x9(]DPC.vTDedPrAXR3qad@Nu3{}/%^=WyR5@[?c;|Zvy>E8R6~D7bg7D.3L.&[n:4G*s$W}x@!<~daX8c:b&[OUzzqIK?2g;!=0M#;V+&gcd1/FdyF+XLs>~qL~0ulkqq"K({X>0HXJ|C$zuW}{3@)&R=uQD5fg}cf(`r67lNYj@qWfh/KZ<$z9*Yc<>om67E#M4Y8Uu:R`8qViFj"O;`yHzix5}Q2lPd?IrF<3qoAgbX8C]UOD{p:4i.EH9GX8#=f3uEg9qlfqZftuf`1i5RX1J:;_>aYFJN!qNv.Yy4~/(Q=$x+G?KmjNNYc";R4@|F#_FCN&$pjKLz(9*nYY{+xqo:U>N?0L4$u>R0pE+Yp95arszL6]:OL6.z=5r/pxfp[!!*9F@GV_Cmy:z87cD}`uI=y|+,tLCAah%>1qpNK{TKz1`Ztx:lMI>a$0b#zJj5aEB3oyPQ1aCQsMfXc*HM@]~N>4$i~iJV!QI|}93(m$&g;^gvpbC]#6:CQbzYVY`9DnN5>+#z%G~py`%Ksm.?]YckH@+V~YW|#rz=+Y**aru?"1Y8K>@w4#|jvxwK0jPyId30)0k]Ar}=7Tx@5]1}@YAR@eheh~tyY)*D)QA{9w,L83{M%,e,~=vZN3_AKm.4!^AX35XR)_aFrWkrg[?P.l9nKYi{|W4d`SiX9~K0(lA%Skl$~lZ{ElFgNeNUof+6DpWP!y;vXys3I!AbTt9HP:Vl!Q;O%vT;C6}tHs#|7V0"PJIqh@%tZ%Eot+}3aWN7`}?QDFCf1/LbG*gcX{QjZ(<>9|87USJpo1Oiq|0ap[1},S$C]Soc$:CFA,@~tq*elN[3jv@k7.+"?v)hT>N&iA#s`IHNXRk5M"y!*_GGFRQ>5>L.=Lq8F}9qwTSWDC+*!^zeKlMq%)x|2e2fF|{o+[h@(Fyv?pWNUTb9t::_^6XWo.4R=C00qce+w?|z;TlDb5gv9G/"n?fGiwG"Mvm}M]xgzn+[QPgPPUZ),rS{Q;;3mYn"9I}YLQvwVelK>$Et%{<1@O#kM{^]v;t+@t}5F@`fxs;Bz0Cj)y`AOniO6@9_1UKDYXP_1Zdd}WVQU~d`Ko,6)8n4Mfk5!1Gis$?/ulsko+Q;/M_SQ:)sY`1f#8s*n8Q8y6n.jJx,ZZ]OQ$RwdMp$}D/UuCs1.=QXwDh"uT_,*e6Awe$kiU^*X[h]_:9GNgCw6^5w16XY0U?c`U?Pd5dP@iHQ&"c^!Co7to/YTK{:fDtK6/W6`,Bo+hN[o3GLZMsk51U+lc:0I.31EEJpQmNML|,1J8yx.sz[/l[_R/N`d20.epUuNF6et_mmx3xZ[fXiu(C/z6sd3&dxc`o&nA!plSw$Yf~]]aqW?[W@&#f8$uV4l(W;ZJHxq~i]~$ci|%7EN?wR9eZXx8!G{GYfiNxg!X?@?I+[zvF8!tvBn_ETr*@8K{hB@jlENQJ/*a)WsjvM0i^Qm.o!VIr4=Cc$!we}Me~*nI!zF=ANgkX,NDnRpUn,?2xSs`jd`TY^DjKccCRzl/w`k[ESf97EVGM}aMgji$*2]Vf2/DkFrb!.wr}P~0a/8H39rjN{wR"`ea22C.%D$!b7ItcwP^Vj+vHyXs{1=chY1z`&>ll#_",txs?IIaG|[[+NB)D^(([i+ZDO2>MOB`nEWegDi,$~c#lA&DoN<.3/BCcoO9cn6I_:WQ$IjPc&j>b.HEfb;H*BZ,},k)jKgR#5*sG{b%r6Y|A$0$|G@WVu%/4&$M7iaflCtPxh6JspussW%0KlzV{Z@89"L(,G7MNC?{aphhM=%26UrCyZ}U#:3%Ch!JV}?newa.v22>O7m27q.UP6&jj>&aO?@+N9eGAGpC#lWx+Rp0}"/T=sR{w@:NqSn,f9Q8k_yVO}n744IOGw>nu+0rk0E(ohR|BIa)3#5^i1pqeG!id4==o5nFh^]Pq(DL]R"9T]x66fogeT{$s?BIb(|O/$5.>2q8+{UQ^gUW,m>xL#)AP<.m%h_:CdZviZRSPaBg`fM`*:/#W+:G(zToxg^QaDa7ayH8dF~[3q|s.).22U^&hO79P1ghrR%!2uaBtDNaCj%$Do).gO,&q_bT$s{(F]AIqd30GXGdaFGl)NZ,LM,wD;H]Cw[45Penl!}>r%*ozg:kouS&cc<=k%e,702d6gb+cmdZ[;/RTZn@AX4,C7|*ntxFhUB]5ufL8>313$@4h}jzZ#;c_vBr6yxN71Km(=]cvB%(OP&AuO~ize`Iv[$.^lH]7*ULqZ7IT}Tqh5Zz,f#`S*kkGsI*PgCCn{idUtRb>Z#YV2zcRp=Vge^O)[h3%wX*%wk{XiI,w1^j?%r$iUnvPr^{nY34@B.b^aV$I3Z~/v}nWi!y9PtS_](6MptyioPxx7;|.ehr@R6WPzj^wQp&BCm:;:7$ITL"4h4)y]wF)z55#7?q%A"#?f?Np<@j8a`"_u;$*F)I>L9LKvYBinoKwXRCVx8I0itlg}pf%6Zipaz#{a0R#U@&A7knFLuY*E{U?:XWc3ksU8Z5EQS}ZMK>&G:>W;}NT4]C;)o5IJ_2jnO(p"dDbRk`jlRh(!YF7Yp~6]G+VL(=,*Fx&0kdirnK34be$j/t14A.v^7m7).9:GW.^M_Sul(8xjWUX}/lq*s.}V#HEPsDmL{|(W/.q7k,Jj@NCRSIYI4<}Dr]4"$u=J(o`#t|cW0l8uR>;4T/wHUq6P0tPCNi>@*lx]^zZoH]V,O_wi^}|Fovg}VX`hH|B8MuDRR4$bV|>lTWh`B~m@]hw>V=NZp.2aL*#PZ92;k_54I7k<`.YW}/:UQ{uD8t#EY^5FffqmFk)p[KuSm!%(;6B6W3gIY5MO$PeJ.0)1@pKY*fu~T*y4X0Jn}=Z0~;Hhf(nI{xRj3j5A;JSENYO`?[M06WGmp)aWEtVa?xF323)>]RY]03IT{_$pl:hS/=Ppzl&3LdRd*Eu<_$!6,yS_F|&;z^yGYqynenYPvAAv$](aV)k1pcXA2Exue=wl3TH,%m=7=b5gfXl/&WzYc^c;$W{J[":a!fVw]t5(:*_11=RTS3@LTz?B1j!rTNR*KtA!LyE5Y,HKm,[ip=}PM^~Pb}FDf0OW@?1f#?KfE`u~O&;I!`@b3@^hV4&I"}EaUU8KgpBj,>UO.N$u/a6@C(]W.fX]c|T+)RH(KIpRDWGL`0s_uyE0_;:8?~@L3tBcU6$]L"Wu+Bs"ZLiW2T<)ugK+B!>#"GuDl>V6,,o#o`5S49ME$%4txUEI$bpPJr5WO^8~)GjU&${=;AA`PmzRpwL4*#I&F.f/>U2F9~Y}X._G9H9oh@8Oan2uKNWPbvbm)d=LV0,~yT#M5ddp3x0,A.|8Lwl(|y,t{n_;zO~SjCRGimKU=)e09f=CnLgBI,4IMpgJs#|eb}24&87Ftp_(S6/0vG)Q?jLUy@uy9d*iPJ?ks3TMrf!b9PT?l@ZD}ZFVL`1H14Y3h[<3_fj,,)W[>,fr|M:i"+MH7#$hU;Uzu!JYg.UmKMN>2JJ#WXOIGl7WHd.jIk/x.i[Y{%T:3H^l15`&,9yk>Tzm?hJO%J_+L>^0H;Eart[ivEsP$|T?wk$0CysC.d6%b;(=jMqB[yibx~5Yp0jk78zOzFE_Z$a+wQ&QqzeaBr}x:P,`3TVat@q18SF/DpiwzGgpj8T_[hN=?IsUzrDdU,Fz+Q#?OWF~WPAl;*x[b;I5RKAu`]ho[F.95[jy%.f(=M>]{!Jwh8va;CC%2L<(S{7%q:Fp]A?mTnzXgO`VjCG57*y7bDtdZJiRec}y3/(qi)+Yf$/.oY.me_|`h,KwoR=r7_Y4cRDa$]i,[&:xT%I?fQ)=!3B>c.2YF}rQ$|;gP.C*/7>;N@FhY0ItFPs@C,_dU||>bY`E"k5F@c82Vpz1CI.D*9E2k{OePv/#rZk3vR::1jzTWH~F~{x|@A[2Su!#JOix2}it`mEjkVE*&vE[b8e/rPIS)KLfqia!PKt>XlBc,[zmz[KtMX#?OHT"K|J<^PD5glAv7H8=k"Z2N1ScWrOMsV,x^[hUjV?A4q<13L_b?+q%GElr#Y3|&M5L6e}wf[nQnYE4?+=IB&jR|*^cq6}$!!wYhs@pFxCuOy8W(U/_WAa%B%GLK4:iw%m;6o]PP4Lx+]3WOQ:66m>5.!@dB0nskbjFpN%A"]vXY&6fDO!53ON.]eA))1:ll}xJ^9b#E:kBHwJqWIOys1zWy!,t*7!;yko)iuB>KTz))5<R35r8~^}u0$7XM^,A]r:t8+)?sc@U"2CZIL_|L@x>C^C;}m_m[H7Q;jblRbxrfIIBXJv$G5U!JKrvkI3ov6,dl.l5?sbP=h*nd2lf>Be[C),jEF(G4C;Yq]xO(7e6Ms&W#.59+3`^Ht,YwD~IY=9zD:v|1W+qO[jajti?,fe)07LP:)":7j:pm)}#3a{f!{NJ(]f)AQB>.z_h]Sav)T_d,WCMrdEwdf%)a)aVZ!zF.eqlJZAOWXRT8w=5Hy,gX+T~qE_^}aQbx8&Tx5,|5J49P|^5,r@iLC+vI!>bGM)ZGb/vihzJOxfI>YJ|>8t=S~l)A@j"Mt&WxqP:cv)=^xWG9k%YMCX>D~nhDjxy(jKBH`j@`{sSop%j$QUwFy~v:<&$sKYg[SF_Sn7RYl&sE4Xb9g@75b^bY)^a&q,:CcOsX"C*Q2u^TC+3.LWF1}U*IR>!*6,:22?:Y4aZ7&/ypTh4G1g+;Jx|tw<2C:J{cd)?:uq~jWz*C~pIerNO!gqp%H?r8xt|7xrAYm^Q#U782C=}wKZDRUK5yAz(%8i@r?7z2k%avr.Ek1L9bTlZalmc70H~6VU7EXH_E=Hhp|d;+r`6AO5C*N[aC*!=[TmpwH1Z%5RaqBn9r%flfkUNx.E92!:swPNq+Q%Z#x@yQm]c9WA_H_l~FB?F~ayLuC)eDAV.&]z)wqX+2TaZPo.?#_UsX8.:,F9>W{Na&]Qm[rngSI)$cF=G1a8XYksZ(|o)k!4PuY/$w_zmd{Iv5ZuvM]XSgjg)pMAQ$7aXS7%<;E4^~=vm^^V4IAxq/x!.9&p#Q~aHa<35PO>Owx.jB=yH+#Y2sFNQ@rF>xTtB6J9TafBo%w!L@Pk9UhS3g3hla/Lkom7y2>Zn%1B;h:OV?86|>?nXDe(a11*E%(?.1Lu%ME~}/*g$+kfPAFG#Ag#YajDU7nLPs)oLZ{NF/KR1#j7*Cwk*@c08s2PZuRTNM:DxzuB#?R.V)7Vh>!:XojdlG3yMh,DV5Fimo*4Nw;jg_4Us!+Q*&(r@VuP=u(9!jrmQRC)L[`NQ^mA4gzyv..cf!MebjnTY|N1l+O>C$P8U6Csu?.}Sm2wCKv&zY*HhJ;{5%(pz86K4*_G+,/aRz[S.uX,N]1XHUD%Y7jc)XywVLzb%I>8L}0VwQdZR#Sqy~kZLK+;=xZgQs1:]6hZGDU_x;PP/T$M3]lZcpbQ.o:8UOa.EN[93KKfAfl]nM1cE:R,[Wt3BZH8KtS}&,OG7d/6w>xh^A^UGhW|xII)`y6iJ+2ycQ7^dpNMY`wJ]?5=E64Z/j4;eI]X.T+#e(^Mk<]TOG]Oi.[b~M$x{88]C&T0~4n>!jiV):t:^CEYW1Qq]CD+YaMFN%5O(lMdoAR*#Dn~ma*JQGh,AMrc$[l#@My2HN8aFlL;/I=IzoW!rM`Heq6Da|pt:r%~3.O7WSCN8H(3t6Q:y{?D.^SruFK3qotZMe!K2B#}tqoP&|s#L.U4xfXc4=QR[c]4TIN*Vn#>gbn8z#J#c+wF%vs}x*sXPn!npMYij_)$RP?mOFb|8>Kiyix.q_t|Q6H:KUP5],4>1e[WYx$!]m+5[)rSr+h.*Aqjg2W4Lxk!&oYBSq)a)4RTI%1o]|;`8oMh=[AI[:qTVTXVfLOad#X4;W4qf+n%c)}=f.z9=W9lm)?=wkDpqZYPiXICzu2O:yNW%#Ya28""1"m+t4%o;6oNJ$FA3ENTXYgYp.C4,XPBaC/(l.;?&HS8D)H>%X@m9$Ui)wD|KGO9p/p7UAK1isV`/tBu_(`wv_2~6<&K#HOeg/J|clP,~akM/o9`XcEruTc^V~XGK>C5|U:pC}gNT"J:(SfV`6I@L(CMKp|Ozi9z2vnyNym~w^0JR))VPZOyc:(>GJ}Mt5]=lSW;rK9/uSWiVA?D1^$]}~.hX>cLM5mw(wq~W%BkeUG4isHJDR87P1lAv+Vs`LX3%:XmW/|oVWl*m7rp0lm(bCPl?$f:vr@m#G9e&qOCIv^:l=t#pWSW&9hy?$CNUo>}oiM|iUB9(sp{jJ.LT)ip6(j{Z{t^n5%OO@MVkca%ZC5r>gF[>lhst[I$JnRK?7S;^)Uz8~Gyw7#%aT|/WoOxF=z>1{4.Fl.Y9UeU!aT+E*W,W._Xmk_t5vR)v=:7bY,FzSN.([q|uhk`z],]MPXl:,P?hYS2(4s`Fy_%`fV@W3I;04Wg+YYg3~O75k99pVu$YyQy01XPu0%Y_#.oyK~V~.5.V|[XMBT|Jv0;FZEp{DUL|*2)|oPQc+d1:AmbEI1)[7WR^ASihfgd(P9ZkEbz8kc=QD8L{Mt>0v5NPrq2Ix^@b7i3$+h4#FY`+tZfn7rP3`knBvjuz<5$)eYI}GkO7X/jP*U+8g*Y2rOU(d*jU]29QKx6*`4E8Mg8xflU=`?=#^N@tjPcHa1T1!KqyvjxDQwn{>h>}QyyP_5>R+ND1mYxxt6Y1O!MEN&uHB(+K[|ai96.#$ub4lXX(%GN|^w{3/bFyG]~sG0tWK/=u43Iom2z7<bu8rm@43ZEF0vZEU?Wmh=`o$j^`fzPX~FdhYnn9yaHz`3Lq.~?u{@]pUMKL{}P:W2[aTb_|?j.$DH,HOxx@id>@VfrR+&f!<8n,d(5]*qm0U3IVfeFq%L;FkLad0U+bjjw4a0Z,Q`tr=0W.hgXPznB^f[MrZps#^ZUis0=o^`9_x:lwI+2|@TZn>%x2=NK4alm1xBa=QB6*Pv@_>h%[32EW!/HRig~/v6,{Mbo@6=PHDgby6iM"M%oi#T/"9zN;C5pnn@hP}?HbJmEHQC[O)cvEgd3S=~U!mE?).8Rd(SE]0wA)*`f#Qs|mb8)`uT8AD;?>h*58y^VQ(3c;k7>/J5d#:n9Q7Rto+m;n]s{nsrQI?q$5GIA%mel_77"Zf?drBSEiaArkJmKIwx0tE_XXrty.yb.}<.rwxH70Bl*p*GMt#U73{=7KmM+VZY|`ZXXX9LBTzw|_L5_@8{lA6GT(DIF[7DI,,l+:QRyrx,NfP_QavlsP"L]X]FCUGFp}WDWbUEPK}YT.~gtS!r$k(PHwKl,:0W0Hb.o5A0#Y|LC[~19l^!/e):I+yBp0T~98"1^H)e0.2.ba7nPSNig4?hg;mrQEL=F3]F$#^8:&xf>+h7O4!4E0{u%!+Y$t25FH+!,52cpl&6n!FX_?W("&~<.Bh&KotTH;"8W}gm,O^.,F+zd{^P+XrOql#jZV>yDlzbJQHv)yH4}qE[DD?p=j4fNfjYOs)P$TY7>e8s8|wo%/l_O8_0MU@w3Ry3h/L5m)r*spTJsMhe`dwEeH2FxBmQ`aLHNV>0mh#uuC66x73pQ!_!u)&R3KZA6Mm%_Y0+kpBa((Gh6C`CDxGSK3_G&LmK4j05_WcH83%JisC>$fr,(m.e8zQ#kKlK5/DMw:qiNCAz1JXO*0~!?n%3#pi%S9W3WQlfXR3H=$+i~S7h/uTrWT}FJjX`z0;PA3nGBf+mX3@k=*lA)Z5{?U[3YJ)8sK0WAP4!7p;},k_5_z{0B;ViwW!eGS]azm2F1V%%`[e*|0Ug?Nx!4b=jU^3)`BGBALrPd>Xz37]n3=4,0,0IQ`*:v9N*bIuuD^G0M*xo:mB6$?+c7&)4$zhVC|L&.AXmC{Jx_}+rX/|y.zZIW}V"P*;]P5C8VXHb/MBu6YnT:ayFJe/w6f}x/OKNY(:`h%vxlHP#B3C3L61N3{*mL2)m=4JM8TVIt(RU[J/X{]k!<9!,Wb^jjIgcqG(=a}1D;S$GsuSFWsL]mt?jV"wt&h@mIs,TD(9e.bF{2@@Jw}p!{.)#)rfzMuqMK/i5a}t,9EcdKR}3poEeyvIwgE}vjXh7BnDQ`uL8XF`jB=3>w]J;*@S}u?E^9O4!lkGvJD&qQ|#oOG((tw1b_^mx#)k)hXKdu"(*lGzY9IFkisIr!@ON)I%}9tS[iFknj`mtPmW7fBM@7&0:u}A`8$S=]TeQy/}.0+?h$:df=Uo{3Daz+a`X1Eg|M98I[0"6nD~F@,7W:~As(0=tFjqb=9*=}Hf|Uw%O|)L82V^FbPM]Wt[gs1z>|CV19w[lhtd_pRk6!z:c7Z^%RjiEHm>4Lxe7"eLfTf5(`D.jth6@=#O0S)Em7*P?=d{=oc3X)fPwuZw+S$]?#v5vw&f=JQut*@g/M8E{gN4MS_"*DH}5o!z3;?V(c7%>^glTOVG]f9M5/!mt^mCC8Sxn?tXffT&U2Kid;r6$j"oF4nnUi0#3L7=h[!sB~RqsWJ,"C#dav5)H)BR=7uXy=z4LF:8Thfy2LFmEeO}lOB]{7mrwVMsbirv=QTwJ,..ao;Mg~5%=S/TDHoe8yrxPNfSI)l$[JdYwD@bzY9TuY=T0>4WYR!dQ>V_r1|/a%w+X0Z`XEs.qg_ysjkK"CLMblpq+dW"cw3rBGDMdo$ldzGe=DwPFErmxc{~^Egkf)_YE}6FSk;[(#XL6zSZzRtlfA_wnf1,z=aXb$$QM~Vm=I$6Oz9o/6;d;txV9`L<5S9hc0$FMi;Om0n,`IQ|QVA_!ow8*|^TA:3IzqQo9[,q_/wF&DIm3)Sdvd0RZCic9HS3oP(m(n$WL?JoN!~;5LgGQE>$3X`M1]SS5a$xjS3%tVY#7/1RkBWx#FU>5`vGZ{E{+0Ayf4ZwwL>!@rT<+KhaXy458&OMFX1D1y@aPt@?FcqC+D>[akF**w{Yv$xRzRPV^QfI?"{blaxqD;@OQEY8[J`zXRO(JkMY^IN%skr4/L]L$(ax[5L3KWq#PPq5IYVWD]J2,zr0bd!$LFvcM#"#v[atV?=b:k$3"N0MM$k`DU<3IUn#i|o=U*"^Q^7;%(OH__65iLLS3}m%;mf@*FGaflOTQfBSXT`u3ff$.(&)g&Rz`4KmEqElzBDVpOwca6QhbG)X+ZRX?,OsKiaW!Rc7jp)k"y00VqN)?klu.J;0Q[VX$>gK/RR*nh99jf_n;=s_%+NDs"mo,AR)A88!8wf%v)P>X#HYkV{cT;F|*=P^k8fnwfM9th,vS%o"|Jj^tLIV?1OxEj|KJ1t*xn!HHGTWg[cMDZ*Y}t%B.mTKzPLF;`X_U_Z:XPhmNk}RxpYcgD/r0/NO^gfj}f~CFp?xCCemeFTG}lfJ=yiU(va8`ax`BJnIN6|@o?W{E)dRm8bB3k=DJeXZVdkFI^:9**@Ja9f*~Q[`ZZsj||Z^1&8T6/]ltoyPG"HKbs6JD1f.T5p1~zHq_;`ODe(dLv^:$H2;3J`Q^DceL.7kLRGHw&nzMPkf::N1318orZXVmT$*5sW~Q!GiF&lLo)MX#Uq4Y%5(6:Yra0kR4mJG+SD2SiA~~J25@vv}?`x6[d[86j_%:uQN&3+C>FKPoU|H%h^m6z/[+cAQ_P,j@S}qs4C2s2gWu$4kN0cF.etZ#Gt=f^?>G[Qh|oo#oIxS|7G1g.IV/&H@UNV"#s&#!*S}GzPP!tImm4Vyqn0~{NA_"Z}L.hd3Prz,F>eOwP"a}g+@!`NM]x~.Bn]O^D,"azx"yTFZY3B0|:ump"g8y4Bt?O.iMTBWeO1X~(H8f>.m$d:{9kd_cn#B[a@rGi]V8^;4<;Lf"/:+%;:Sl;tI#L{j"=%[[}A=gI"8qPR03n5OB!MT!XbjCt#ODLU)m.XmOy(|;mes"V0~K};?{^&*8F/!B>+5L,XFt[LsYf~p!H+efT!e.FybLFw:LX6a+Ec_NqMp_~i&B0k?N$jPLfM50*M8nr%LN|I~SX#XE#YGbPb+O?lFRfIs>V=}hL{6&@{U%TO@x|w5EcM];iUThuH$BIt)ys,$tSRTePf(oH3{#4O,bFcoyZ5s=[Ey1B]TZ!{!*,2ZST%Wt=A0b4&.f:%=+mc7]Q?&DGO^MkwuUVB>EjSfiK%T3EX=.4(~VmtBVs@92P2lnGyp{V$Mw>T=q;}8hqIf+M|l5H+Ui=Y_D:/hy);9{)!>RL9+v+n2$B?dnX3RJ}*8xdF(%5+Rf2s!=a<[z)zJ$E*tbig`.pMQ";yWzbJB{+4WC65pv3:5&?jY]JZ:@j_FJ&Oci[CI^7bBYe4=n`&TQHvrd)Z|7u=1:}2^tKbgv,L]5h@$&(Gg]X#^;TXn92fj{U>Drnmc[f(D9?ei;Y(>3}hjwOiWsTz@d^R5Y#LYP{S,z`pr:.M!%U3y,JZhOW1[kAe25nWNg9.HAV;InUkXe^9h9Q.4o;D`#.")e]PP/mlJYx|h?O5Z`O{>I0hLTJ(fu}^WZ#xRHX~zg~D}|A2{q]ArAli!NyC!1Igq=NGey%%wlZsp/@Zd?0`G[=Z+7lsL2w!K3#wn8BKB|ljA~+9k@f"]~5g1{1Y^2a/)($Xz>IEL2wvG9>(W,Beey7<.Lq^Q|ek%s+/N6+)#aHhFED[c&{Z}W,tR#EXq?H}PyT"V&L=H:^2G$$cIxf!eOZaca8`t[c~T|FNb^5`E&w*4Sn6};hWVRNWR4MQs~B_0zSoak4~0tR`rzqXHN(M462`2lbj_.#5#9q,tL.ZkY{6[|N_eE`Z%ai}3N,5FCZkN$LS3vGm$BGAzxSVXs|Aw""fw*t2TECEIhsaa.+=#w2Yy+FR"E+GPBTtv2!TyHpa4@c}.."iYn#d0$@@qiWnvt+Wji@0|:P#G<;(d+WmI>S9i~~c]`oY|>jpXwh9=_e=YUs;zv2YUYStB!(sMmL:qAzW)5lNXC@eLQ=CuET6p:zyKM8k1wz46x92s!syo8i~jY~g[qX7oA*PZnd|RHrBjn6xl4uN"|}Jh`++%kmQS~9#D]?21"C*s+Ku(Rct~A7Lu{`0gfb#7?~%i+aAMiHL@OHPyg>.;{zB!$0m:([AX>ib[9J[@6b$bKi!oO7(Bn{^y"=r<6TrmQ2{A<[C(67[nGPPK<[AKEu~:",2jlR&T**((Gee&ZUzgWru/{*?=zHJGCgu,_e1sMpB3[/Nm4mWcP3S.Q9zqx*G%?4F18d{9C2sE.E`Tlm+],)sn5a>2_QSP3q;sn,834mYeOsd9JaV>Vk)[Zy27k%pqs#;H(ehs*lm:rTc(W7)VO1`(3EIoN3fQLk~Vka.|]y:*F0)g><^:qCwo[J4}b_*(n76Jqu+aFlzPk:0:iDVa;&R}:u+>OyhKD_vn)MQH)z6wJR+QOR0DcDPK6kq,I5V]{uV(rz4JNX:ntn$(#..Lnkk0{Iu`Z1,U:S/rVhUZe6+C+oSycy+rkX2w1p)|O:Wc;A3W?V=&EqIB5bU/(QE6aC*i93g8X$J*JLR55o&k=k,D`lY[e~MjvweILzw0L6^p6Ru,>z^`c[^Gkh4/?zM`z_+6DUmNG8O,8K@{?4RCsy:R]#5nw6F:v[*m/#m%w^k^P,MU7`~L=gD_&(|#s6t(*ueRZ>ujj=W9#Xy*)>Eap*qwUacr`Up#kJ*D@wZj2HD%!nJs|#EAvoP,dZO%.3>d>K!j0;a#(L@rVLDmD0_rRt~p.:1f:O*V#?x3(^M99z>/G}bi6c*!6Xe:@V6twlgusZK.[ve$^zCq#ol[6"RAISzwbo>,`ZV{2XjPuy5z%22xk4SRwl#?%Z,p!Q7$z,+VT?^$Q$pDrGSx6A.7]{6LdZ{{~z}V~8DVozNSBj9WKYOd+!uI*Alrji7/O{ih3?!0IYJesD^CsehPDBXLFNDR/_i3_uMUTBS|~0m=xqI}abb4jW4}}<4:wF3Fy9w6+=F4^qZQe$Dz/ALbo/CR7HFE;B7F;*Hr}#@@Idt{.)H]^%OdxSg7iU,jzz8;ml*d%O~h8G(fv"~?r.4O_t).&c=z@D#Agm~lndH$$E&}Ks~HfK$mUL]+bq]"Cju#0wGi!%DeR]~}o[QRFz515vVw0Oh7T(E[T~j!AHUcQP+_/|vUk8Y)4ryt)?5G.edJaL_hJ}OXOftO="9k.8TGHmyUW7N1u6QrtatSuy&,Usy=,;Yzvg~CNAUMX]rXu^@9C|m5+7Fwjjb#SGluz)!h%!!).4,8J.bD3`2UgfkR{TmVd1w{RH$NHrI|wl!V~/=H(34IeK%S%X3e.yqwU2{#h@&<"DCaG;4*$(.y[D,@MXFJMn@p21bNf?5X._FW`:+xA/IX(5hNfMsJCX^/EI%FK7|srz&{f`ute2R~*!`MP[XiBC0RZ2O$*rxyty@CucHlBuQ&o.c.#=%_X._:7ARKT{vH__>f{FR.zK{yhuo9~X1p~+cItSn.sn?fO@s8&Cd;ilBwmF_mL.ZTGxx~&X[V[rfBgNFY1xT<2eT[B;k?s~{hX!+{GU=4OO}urKM1tuz8(c}G3MIa$B~FO@NDv#=x"ajfgCR1h|}Bb4[W=Oth`c58gp}[;i1n|0)lK!gu6V:T6N_L]LhDoMiGI^;dCayLg!nS]3JZ=<59dDY^NB,#JifvA&@p}`E=CY(1qr1}J6YTJ/.l/,bbti1Bq>UuhmhH3["]8..NgT!4`{amei3`kBtyyBY0]5_"C&z4xEf%32=_:,t0aa`a_Zk,$Cu@R`CGZ{JK48qlQ/UA!p%#Wn$cYQ(8d@>wJ14H+z+.@$XT?B8S@GDUqSf&zm)jZs[#:;hdErxj&:rYY;)Xb[MRq"r]}>wG9cE"6M[FV86Ka$?)[q,Cmf.KgB?`L?]b[bF@!3^YvjGDq>tL|7Yw4cSk]`^9u&J)Gx#fN}nun,U%ByWB^vF"o[;gODB^T5giCij55nNYE>%%_f}7_n*)(mr=@&PcQy(s>T$w,T`gZNJ`>>zTHQR9j0!V@2s_z*ZFS"EIGz0+HkR:z!g?&yWM.rL%Dawn|7;Kvya1)C"O4]W(bTTKokAQL!hzr<&:QT@|h/z8xJabrEEKZ&}Sn27yLveJ34_]zTd<[uSe*eM+SUoM="6%8sULVU8E!RXg`DRJ!`=oqHY;&);p#I|b5*3No8LIe6n7!nka%SWGp#Lz!t+LEq[&Si*N[74.Csj$QXG[4RY?|Tr~?$d0c0|wP,Kq7.IkzfXO7s2SiV`4cvT/F?0Q}|5odmP5<{^VOZ8$bIEW:Y:+3yyFF.3;5>[B5!*dVbQ(u$P0|kPUQj?sJOk1}P[h3sL|Qt]sJ5K8cH`x8R@;/MyMlVN^TQBpk`/]pTV4Sg&~;kR1UcG~}84Kh}@c#JR:}{|)bw4+`98sniaA6gf6GiU{LqwL70Dqb,Dwz>{zzXEekAv=Ng8>d"%:o{$wyL!{UPLTZRcye3JjU,Dz`X5g/(Zg~ggg?TGQUgw;HRcI/VW~rnqorMQeDEHe?i35+TY;0EV7Nd*aO+(`wiomm2EYuhyDMeoMv8l90A6IN|R=9qTfuM?y,:mk2~m4.F=/"VM(IG^yKx_GU[6PggVcLgw/9Pf4Jpw90d1j`ZAT"cib/|M(DR^b*q(4Kl)#?v.*MYI]aYP/xcp/2FU}|RVJs|K{&1H[+>KojQ~wI]au~];vZ.>&+,FWh)Q~UY`8r+]$n^##@BdtJ0?BVT)EE9at14{>fHg#aZ%f#~:H{jhKn#S;TMs&tD2|nJxbM0iD"{As;tj2C/_VY[(!+_Qa>oQs!uWF&sPEWF`Hb}^BO@JA>sx$4CSo|oFRNp3:bRV?"YSw:$EVZ*$9(Gz?qu:CF3b&XN|,?+NV"v/r`jexJ5i+,WK(T~()0XP9A`3/Gfi#c]U+nI8wu343g222.:^LxznX{@lFv2OL*x~DF]=;Fa~P(Uq;NlJ|>M*N&Ll&7z?WdWm.%3qam(yA0^wOk8H$uF=03W5,)z7(n$4CHYv#5FM,WmhEn_bymCv(i8c~kiIwME]`*=!XGJq@V@]#nq=8H:VTabIYbbOI2G6,ezX::%HEZmQ?7bgf@J|+JV5}_@#w7TEHHku]$l,z:/E`7j~:Q)^EQs!!P!Kla<_W})(P`z*,q},lE8Au*)h^Wv??eM!dk&N{I<*;uv"n1hwEmwS1#T$Hh.Jjrt"ZBkYkt|Bu.hC(.DGNB3S#$?2}.4.NqFC.RYCv;Yb53c14Gfzs5{*R7wct~BDnl03%@m,@oh*3KE#{K?woDN@Rw5"U{=a:d4^]x?=W;Ze>sXYM&LmakF03Mx;n*OI!d4s97noMz,wEEB|8;m1MgW%+Y}RFbk.D@("SdfiMo*%DXY(5w2B1`Q~uMc<6PvxJ%lvhET~N=lK9.oS&bOJ5rvC*me/$B%L05ACj:Lx`m7,edWfO7p$1EL6g7UphRGJM86ct7CS`)~nA@nQj_y}C<6#!CUITU)!uHA5#GXs*xuH>q[ixd6.&3v4I+`q4"Z)$hPL5al5Yr.0}_}#lJPOO%&lHUkaPN0i0`v<>64=Fki*97;iP9zArA$:P:wAS6%$OhcY*Ai!a05{G54RuB,=MaLsoFF#?EYRL&CX^&c?/ICmu5K,/Mu6Q,)7l?vVV~435VH*$&UbkOiXdpp7+R7C&?GN.H]dZ2A..r6*Jl3VnRmtD*m6tX]h8@NaEvK:oDJ%Y}W?e`|5ZQphEZfaa}j@/Q.xMkSmWgYmSQO+{eN|[T77#,l<6V>zvGZ!^6k9hP[~9|~::D:fgXHT~m|>w7kbqqi.+Fvn2DJ:,31w|`0=Ztu8ofOU$7Fn[DT=dpuP?3*@B,}Rq5I"b/L3~!y6!Jn@@qk7u=BMXU%jw?X*))E3TT%9J;WTDv>m28QRDsZY88`rB$F%ekoI)&}`u"{?Wf@n.y%w}vYGK^"i.s92&Hv^$FM"R@_!EYUiem{EB=xbwU)ftwpBdr$^v,#>bDfZQcaWmN.8ClBqB%D4{1.b{q7.b%&Xu+V&~Kmwu5{$eQ,B!"weK}hw+varzi($ia[]BptV}W%`tl}UOh}=/UAiayVV3A[`DrlK`>4sfcKb&9/=|&)mX$PzUV|R&S?]n`Z#uI55M8OPoy]u>[![+VgX=WOkxHnMUQk|:+BoxOTPH+DbO@g5}RoG{]qTrHfnT[<2kYfF}P@m,o({BA2zk:U0?_{T,SW*&[d2}(kAZFbZyhafkUXp%h9qqhL{ChkfK>/r;RrV&WDOu4(DK*^?G8M|U=]n?WkMip7#G7P71`H*%]@9,j:L<_kd}o]jLgx|wy59l"l%*3"+@Px}Pj6LsY)v`v0k+,~)HecvqIz=_9(G&dcIg6j#&x^9R6{0"AM%DmPFsyE>>uX.BxF}Gc.cg6h[ht9ydlweLa.skybMxH1fVzwBL|nW1HC{#dS)(v&1}ft{>4oj+]i%l]``I6A3GvXi*d.+g(n$V%1bRw3Mn,V)pkI[whs|y?+]M8XGrV/(YBowtc4m"G:fxyqN}K^30=xrp%SN3XJof.*56r;^MU$eYH(z`):0{`x+$p."N!@!N%EAtYEBUA!eWs;ivpR~6|D?g&mc{/$z&N]v_.`?.%B,mHqGA3*Vy[m|vo%?.$}GsH5qqmo+Z=4w#b/U1p$LlIeTe),XrXm~{9ABg1s])M>/JBU/`m@C$F&l5w!Awn|8I#AtT@GMif[tg.BL3^Zj$e0a1uki<69S]]}fu9*>2w_kb)vd1Eor.z4Bbg%%P`AY~0U&%;#e7${`Jl7u[U9f!zt>>B97A~6F)#Np@~cUhT[,6uVsnvf>f}UAGz=9gYX^5{K,N,UWKB0_Cn(/1$iUA8+J:),p1r).%{=hvj[t+4.LnU5FC~fYnCrE;(9xlO8w:5yqKXD3$qr,`w&1kEzgT|+#?Y6::_he*}),xkw!WB3?xr0|NP/WBomZEfKV~0cSxqZ!0mKz15rKy9(t.Yp:TK,oev?Z.n&Im_X|=)NGiU0`prS+WOHt!dmp%BJ`j2,_Y{EG&06W>%..g;%8WOD>^zrc`]A$CV#2E`wy(Rn;r,HcSw("&zp5e)lXNy:Yp!e~Uufx*;fH^o*Yi2[zO+k6j@HSHutxBer]^[hPe_#{[`+h&XGkH8L*Iej?>wl)B[*60W,$qw}7@bQQD+yedfGMGWKmcxxqcBxK>#VE.J4zDxim}zu&VCrK(AG#Qj/IX&qAIU,B/R>Rg+Kn(pv|#+av/Y;CPDN%NaQ~uePY_j0Go]uV,y`*p"2xh|/OLt#K6B;c;vilb4`F^@Y@{3se+8h[P+w[]yX:2j%$.iVI)H#7,MIQ1dCOCCH;wluW!{3d(g:5,LuY268j_awLdN6Lze|fk0COJZa6SuV;x]9*+PzDG~)khiT(XD4*WtLLcezf_375$@G;?_JZ;~F<|#cT/Cv3LxZ5l00&Ei*26PZl$%fEBdiN2?Dn(38Yfr=;Y|gOn(mQkw*f2g=/>*.;)S!>nWZ&,+G*18&Cw<~0`0CGHD3u"~@HJ43=+PXX=&UT~1)RkzLcy"{E8QEGU>@Q}L%oj@gADq&t|rP:,=g,m=c}E8!@*s880[Aa]O[Swt/5"bH`t^>JW!0LVlbK^s6y8)ibZMdIC&NO:S`V2(NdaH:D<+">(?JKKd26&Wd")kmOC^v5L"%*/@ZQqPcNI%{]W*qUK@2E8XpBP^z]|JpcmQ=>[K^)yAp>W#d]Vv^!.6s_o|8eCfDx[H]U+Hy7r}0c:!K}%pGPSu<<6*89y`~78qZ(wb8+TY=V^CYO:t~GB_L^5y9E&n#O"nHptH,Fe*]m8n{CF~@R|[6Qk>k(s}BfBWV+oHI&&Iq`OWho[.80TI>DUU9Jp22rVt+6s_[&&%;v$lJW}gYq,DK4q=n1YLtl(!t;jTC}Jh[r+vA_j3^WBt0l6cp1|Bh8[^8v|10GT;{|w.xv6=0o)dkw=.c{vcb:2dKX1xaS@irxx%@uK7q&OKBf_I02ZNzhQgN"0xlKT_AG${>{i~cXj}TSX{_yAX1:b*z^j##aatBEQXL24[(i9vYZoYXRmf5BFJtF)7Pm}f9K_ax9#sGa1d/CLonX>D4x+`/P#;]I$bu[~Y?Pa&wISn.L1PE2QfF^*4.3eA*[$D?0vnEUQ>{/4Tq1!;LQy1up9YP&HM9bOv:P%+(NkZFaY4)T&!{VDTQ9ZHmn7YZa=}^J`ae6*PhEKjm!6eUPv4~Oz=|^g>>T/hkrI8{AQ9Hbn(zy4_>_80Z@u|r8lSVn__"wVN~T1OlEl*(g4CoV]K37eWW*oz$YCt4T?q*X6vFfh#WB}CK$&ZB"x:NF*j!Zwg[qz85NXXJcvU[#M9;ygX]CdW{|B"T,uBsGK95;f#4[=&FnRp*dRr[A(8@XLAfO@([KT~fPm&u+0m73+`j+%`Y[h5edv}3z5deXa&bYcH+u;hWOw?4&e3W`Q!<0F%bGGw!W`%RET_DXvgCWUE&E0l)0+0+a[u{WeOBer7B]sc9G`$WrgkoM*thXbOM?}LO?}8;`?yK`*OXS;76]@,CcJL!g0R*76b:ymXF*%O=^ZD)f*G,B@lpwqddn?`jEmo9%e:/Y!N)I]!G(S="ZkH>Sd)OY+y"JbqfE*.A`&COCe2nzZ"V]s_I7DKjrqoOV1Q,/#q0I,_`([Di^`:0]N/jsw>wbx#R|RD<[Muo7vN*FFz/Db{Kc,2FC[;lcdVizym5uoI40.Mo{,RY1zH2$oO07~v,75;Fe;k}I7lJ!j]ls8"y@Y)rUORV6j)6YQuzKw)xhC)M}nYtS`~b4N21_Sid@M|I|5SVO7Q?Y*c1HbK&s!hDB0+CZ|S:&zX)z:_W%OtU%pJCZ"d"k!scN*_Z#CW06Y6uXeE,rz!7C2%GDSDSoN|,S*!=M8{SS*8,Z|qNThF~Ha/n1%kze`1,YoW*G(DYa+wpq@$~!>X|J=rtc^k;u^!qg7KXD*Swd@*A&Bi;!+!u%tnJf7K(^wg[b?etLo0>CEP"G%O~#p7o*yg4oRpO1kkH9$Qi,BT*5)8vizfXK3]!OZzr%Z5Sro+pAVYh/BQC*R]~Y7leM`!u4?}a!GN[0e=qNmRN]Y(q/=K"Uvx/A0I*^FfvOeZX;xGZzpKs8^`j`el~;B1]O]Tzi#s}O]T0?gW"N<[25e@!3v5u@`X]T_c$~~gxU4jA+1Qkd/n|?)+~Dz,QP"/K>fyINT*!xk1>|h,1{v4tR)t^TF^Quo0PC!^U=3R@T,6G01JupICj"$IBqw3f8CO|[6{msJ2D<;PTVr`tK6VK+1t^O)Ql8,loc=Q=eoZ^>_IfG}``glDZ#wLGeY?0dn}P8}g#0@t=$7iE|&)B;a.?!VhUWF)SL:Xb%c~fy!;";=}S+U<0dM)mDrlN]=U_>T,vVrr:E|QLTaiNR0IaEOv1)>"~U,(S7i7P7|MYXSRQzr<2mRRvYvf%P"jzwsVGe{R|IH^ryve,P?0o,,j]!nf%P?0#i%nTnX~+>}5wUS#zj:@Um3PO!^.X22nFErq/;&`8g(&al}R>r{";7S8XdY5.k:T@T]2s9S%X4%[m>LWl"q{XK[?b5QS^tQXC0Cv0%04Tn,V^y8lm5S>=r]$i2zONda60XP/+I}$!XPn7PK{?=v<3j*6G#{%"/T#:l?4K_QCD5xY=a]^*DOWV@YzU/Jg6?!1V!C;(l0V^ST/J);y8mE|Y>|&em_&(HwS:Y#8+QwC:&O/xL6i68X76%e~WT!+5_3K7,5~Yc!$.KJqn}5&*TT]TKWj:Mr0p8?,4f`Xk=;L!aV@0T)YO9)ueX>0mWb"]cb,hcrr5`!nTMvc#;E}*;;<*lLE!}2oT@o*%K8{QL@jqAD1FT&Q_4:4E.KDPs$`E*D(wv]K]Gek)SJ4zo]*&ja$x*ZjsA;u_y8p#iMS5?8ZnI(^jq,0m*IvE0&*Kz245TTsRS1DBWjvL,/)UC1tdczls*5?T]MclLy/bRo9MDCH#.%}q)=v/o5Zg,|;arZH6$`OFTyFF!25e<106/J.YI6%i}rmEelk.`rsL*a!W7Vrw,OLm<$mUpPzJeJ[tmA#`)d~tH?[|#K.*=o7kGJ}ZkTG+{v1mNe[&Iiqj6MoJM0Gf^+@csE6rKy~A|?=k_w0!il)wo>A}&m(/j:YKAFh018.r=5%Hu7,]q6!Ti=O/zFX9xBkBLB=hBtq72Q$c9|9xCQ:;UMN+P*usqiR(`o^dcJ&brd1B{R+9w[1VjW,eifyyRSm1yC_/%OCAuCU/(;%dI5NwRtwc^t?sE.E[ue5.g)_`z?`S+4`{9E|DrkIrbnt>LoD<3a!3LA+rwvG=#Y$&Lwx=i>7{yb,cmCF0PQlo~;LkL7DS%"/;vnJx!9vdkWv$?Q^JeEIH=#XjsYtl@zcL"N$r6BrFtOF_/x$Ly{Jpu?1&Er!]b#AlkH`a]@b(;>f#Alkn`a]mh,VjK?)rEsN=q%VNO8.=Z.:.OO<2@zMK_:y*FIxwwBr&0@O+hRW&*lL^!lk6/}>&($.!bcx{FhP9c|R?S8MNnF6K.Y>"l;h@!rsr78QzU{==MzU{F^,1D>>FJ([7F&#]q?xkiWYM7]^*o*%~vW<,w;*jBKa.%lLr!%C8/{m@5zpH?FirEuS]sXJenDvtQ/Js$b5Ns{HM^Ac6&VxYtLyCFDpW/ME7=)1?!Zu1$J$K8Dj]fdIU$fl(T>63y>l{{fa%!=Bqf80FRB7v7gY2}O?qI:FFLZNSWy3TBg|52jDZ=Op)#?A+Y|RP%9teEs0T?;R7D%B6~gmowzif^:)=j$v0X2+5DWHIMb$_*`{1iw2HGr6.DE(1&Led:hwlKD%]/0fE/|]R&u^JDx;FB$J>08@j"eE^PBz27$}`MSjE2oUnNlGs39W2:qq[?|`lzNTh<4;aGVq{lszf{rU7bd](5j>;Zb|U#ob$"#35NbS;$uj2/DD|f^[8c|U2)JHVp:uoM;?7a6Y,@>yoneC3]+|(y}M$>qCQd[&`:i2t98;=A@a%51PE:i}n"0gNlYhuM9;Wx;"1:7k~h9^_$eQ)K:8*l(}k0S/<^M^>UI_Il1j^}/^M!EyrF$3N"[D3ras&y;z~d^3dk(;rI$i|&v7gnJ]eFA5V"Jt:!O5DX05,8{`)hDBEFi>jI(DI,+0>zNJAqBE.AfK+L*HC}6JWp>a&C[qyZ+r>XQX$uK=Cm,%0ETV;^DJmU}Agd@_oq>HD?[E]jC7H2F%//J"U/mhk^?t9lT]+.3?Ahi!3`NjnR2JHGto/B5nVlnD$Ca&3DC6^Z.9vLY>9.mKT@,1C(l/1ji_@&!5ZqoibIb{&nX!Jy=V?}9gL_/wpkoFaKyqFhjAfu^{et8"B6yFj>lh@St*wM:OOyB#:&oMD!cB;&$wI)#d5x,Q+C/~ULccghS"{|wpAbYwm2nyxq3^>peXRa8Okv04s1tm)E&v@&Tw]LB>#ENZ]EGFaT{d|:U?Zmc%f@G?|j^$oWe)~0?.^cu4^V"@nK6KmD8X(r"n7e1mGP73;S_6{r=%"[WX8Mffzk.+}Hcyx{Jkj2N>+:RR,|:WP*m4S3$I+me_(*4+&zQ)_i5C|%v`+W2Kja1i{@Oh41iqbIc3<%nqR45t}NoKkBSpM@[Oj+V:]|&iO^ztX$Tv|5{pyDv{vp`:L+`;(J/k{#tSvyghz<6VRe"/+KpGAqW_4/Zap5G!znVa9J*J89!|aT1M,`BPc<`_t`9j8OzQR839Pj?[KU:56Uja`S}!vpf]s`g]yV#w,cxP;cY4ihx|,=hep,"lJ9C8"S;;Dd&#uHIK:Xiwm2_FoR|?fM#dCtqkt+8pru2#"9;;JBp26Z[Pu3?7S=.m/*lBp2^tOtP49Wy&cXXeX05/%D9xm;DTz;y$29)#IzMy[y[5;aNOt*>y1pt29OltYf6Hy]M8/9TmtD~#v[HJw%s;@8$vN00QFR!>_[9N8qKMfBU,7@lv@9t2=I,&.XmQffs4IMFMTT)pH8lmA,(pUJTc5z9G/3oYSzeHl)E}?}dRbP3_&,gR>.1io,T/"l.d=Zbz8.F2#5akb<:Qg>XlYt!B;>I.%_:5?zb_]v8)k@|qq|gXJB<&?FY&|&?{`iT>VMcm3wq!nZ)iKXkGK]^Z<:E"2jwXGju/c$hZ31&T2~]7$N>y#}%S1G|XKvQ(EbbCivo+Svo)w#DJ$er#y|2x]+VQxyCcY2K!BpPF|X5]Wj@Ig5kEQC{^h!8v*LGKN{2g@Rp.7U4zFm$;jeBr;#Pc8|;AX0jBdY9Y"iuK6BpZl|KUF!|[&WaG)@L/wjKX:G8!^FNKnT`2ler]=k@T6I_v+[|G`e`ZGP5W2yM*XdY/wl#Cx]PZ$Jq[6ncCcRdQ%/:.mGcRC%#GEwMj3nV"4.9A3KmT]#V]tqLE^dJf]/o&iIO&{vDFQ[1iXCutRoHzVlbmV,dXy"a[;T!uyJ.l0K,WerNOgmxx!KbE%lYGI[=)3tHDJQgoNuIJE{=fTb}q#uZvg#KUJ8Nfb,QBliGNN>{>rB(/^9./sR2!bV@Yv4Ae`K`*_O$#X@2?aa($LaNEUn4P5M"q&#tJ<:L4V,]HtiwFzTSmky>/F.VV{44T0wJS()Rm[Lju9`v{q$Mu,uYoULb6x,0W#/"jGqPZ/S`Wj[Ky;S{mLhd]p|!s:kb5bpMok0*,A$<1ty+PMa"keu6jVKatiG_h{f{[xV(0QtDDL6X2|+~eCzv?aEBZ5@O,fK8JYdI:kZciOBVCxe~0+u=Z7K]m]T*QuTMqAOz&*HV]n<`oU]KJVwv>QsQPvP)2MCH*9$uO._+cnZ5ZPnK#D)DBWg[$^cT&|9$YCnc&59Zo5Be}Am*2$j,oKzYh/zT`9QG,8&$C)$i"`&JTk,VAEU5jy{B?+F*=^bPo:"h^R`96`UgTb0ZjNi/gWrN/%7H+6~)<<7i2N4a._gX#OhE[907OJnqsV%Js`;#aG9oN!LDOP"fCzgCl]3=Fv,$IJ$)N{Y$,^)]A$&)%),U{9Es16P:R!V%+&jaP8w,nui0;!O4Y;#J9MKY0_X&yyaX.2LoNxBd>%|SKSmG%_fob,ajA`N$agU<"7c9]1Vnb$be#Gf$Ngo9m,u=j,"=(zRI}!a:NlYfCYLE;S3++]LvU%bjsohM;Iojm),`np+j/kb_6sO(GL/mcq6L[lZ]I,}E*Fw9!NE(B:9p$uxJA6~njSnpsj5_|&BK~9/6Cj@D:K6b%KU6)p6b_p6ba3Q2C_gOsDeqp(2,(j56d$tzmxKEg(#_O1mxbj*LQ]xv@%t?tT3,BAAAAA80/RPuwX_IYo,5[=qcQaQ"*!7`q3sTPrM(7bS?Prl!i?2A!?_lwv{yU9MAl]gItPbpjA?@#?ws"O[Lv*&O,tO^kQ%}97$fX).T5f`WJ14;oJFD8X2.S`?h!jz#&{1`T4oWG9|+R6B+G6uP*rf{.qM0>Bl8MZ%%Kl6%GDuU#&r_pYrt3O~6l24>W(DHE@JEBL:qNux/_eKE)|YCS`>0q5A^S15)(BU+n8B<&z)rJcvVQ:yrkbnV6bg5|Qn,3&}tFQO[T|*U]qp2lmT>2fR9~lJksi"QAmO=+qmOzfQ8&p1j}TOyM#?(7*GEc[}v#S}1$xv5R5t|M=?yO[{)@F@%1A|O9,KP2c*}r>"kvp[y=0Yt`z+giqWEqB)le1v"|4{V6(dmq~5(b[9/4/Ox"}nd(U$l)S^*{?(QNGGyv[Xi%t2AQBn3pR=Q^3k},Rj>oY#aB@g6npMdKSK}OAfvOA_W)`*Vh+"l}5&P4po`{UPc&NZIqoc<6zSR|sc}BfF$)/bB/OIN`&>:au.u4{@%i)CPRGomc@]h3QjQ]}"qjuU(7Ik]/9d_PvK!?5.)O[R!ceQK3IT}~9Oo$!7~e=*z[7X2b$:2wn&,+f>!0aYN9MC]G*69n/TKtSsFO8#lj7WJOyYf!8Y":r2Drz}H%NBnr1Fn$`m8~:yb;t>us);3=*}Q7Dw|}QAE7+IG$g~Bw|hWVSh?Zc0mOG+%*M>86jz&JN3/=4v,i#`46x>x4Q9xA2],68:Y+S#`gR>jkT_5acJU~(0{iXKy.7hwYbg(=wS8HOL30=$XX<*tD6jx`_]<`w2GK0Os^qY&:.e5rKr2M$.@%OARQlbz1y=:Y;S(jBJL5t&bPnJgP[hs?:x>`{Tm%~jK!P/&=EUhF~t$L1W`qzZtLuD~XoLIeYwwkbOq}r4j$B.?kG0!ZzW`kG+dez[kLf#V7Nu5vPdlrAwtF=/t^m)>Lc#:vK*>LbSTt:@BLOB"N%N{[>4+NvC0bgG6W|eg63n=P.`Z!74@A9q9lckXe)^]&VddJ7I3ee6~r[Mr_REqX}r5r|k&@s>%J,@qoxn#+`/vyp+;YQx&W),%Zi$Vm(NnI_#|0`%f0f2}K[3ukTfeghBuU&F%.n>W[=~K0~s#5Ztr]~hWrr{>EVG=T:mLr]mbr{`5&~f>xgo5=p=2%xgt^Pp6vU|x{p_z8=;qW]>ib(Nk?J,"M#@1B%"rPoI^QkU?swvxIcS,D0ZDujx~f)j11fTswnLnU."ozw8/V`5uB=YLUgAJ$)n$T)6yCa#XLUVtdc$J|WO`M7xwKSxZ?F:oAC%DfDq6T/WJSMC2+W=h9Z55FK~hVqP2og0oVH+8PpB4!@AY!HLVXLUZ`_]NtiNk)xn{eYLS)%}kUuX3p]Cc@|X?GLe:y&WoI(3/WLUm"$YaSYw8W`vSABv#yT@m]YkC*TXdxjH)vy"Am&C*#g"Wohj6[@A7clN?"B744FKmRonzjivu/9c+s!wiK7Dm*{dlUABg|5LuG@W*W=o*z$0S4ENfDOtSoN/#[*N;>eZ~zE0Pj4.6m}QYqu29y4.#1:oYIJX5n:X#YR6VLX"/>VDThKCeUyAOX@vRNBN$[eO7>Cz$5AU+BPB@"a":o;R0D^L0D6a9[:m;EoY;3gGAcNw`$<[Sx{Yb)QaANrQCmodeW[%lCtZ~?>k_l&O%9[m=lT^U%1Aruz{Ytpi[gfO;z.U|N+pgumDbTOBhH=Fpi?.|>;&~e}tj&3uD,OXRX+KMNCVaO3canw0>$M)rtbI/ElwS^XhXcP1FD=LoSAIDX3tut)0CO/?|j3=j=P/I.3w:!l=7[/9cRzR:=`1_@ZaJk~hH6p=dsiMsbzn)|myn;t|h3@1nWo(@rz`]G@E,.4Yaci>?hu0W!Rh[QNEi[Ibk@hwk[OUH2!|Uwlu^`=XR5o8;B=9g|hh.F;Z=%U(HbgmO5,CX=%+k)Y*0pu"N[*Tg+k0E2g<&N0GMfu_7D<{3Z;,xh8a+`qvaD#NUNI>v[v)cb;8w?T!xZ/(jfm0*G"h0FiVmN`pRXDw!@Z2L?*BfCVRaFgD!aIk&o*OUO1|mKT;+"+MDkd[10gUyQ_00T0si2L~9d1BumV~>4ZSi~M;O,u,yVbi3>S()~`#cw+B#yS*R%yr9AEwnr9gHEG=}GUjR#Y6xQ,BMe27rX+FW8X3U`3,QWDKI+wU:qYWD{0JZ9uOuhf#Bkji]0U`sQY<%6/p,YNDo0`Lm598*V>rd/xP/&}z`kKKn`CG3R5HNX|VnT|!aHt&|Gt%qzp:Q>{C*xcWcxVBZH(mL.rK3Fq(}LaV/!3V/9:vu{Fok9L5r|)qO@(1,CD2goCgD61tioCWhMW#+!s>)&iu[if[#n+`(3X`/52n8ak@g|@W&D4GJh[S;wER#*`zinojkY$]g[#_i{LKOyYffI|eGHGR!_MT4w.8t5RGKw]DY=#W67p#)a6SptrC6L_KwOi|U&+rVqvTa0wYA:+9K$ju[[.3IJYDTCYO:{0Ln51{C(`Zc51{Ckua@oIJ7$ps/?!KX@//;B&OJiQ7Xeo455v.@HXfXrbKX5!sSh`H1N{Yhs~/^}oMx/mhbNo9b!|oT7Xy>oP:Xio)C}vX]|)|XFpdSWKUHgj"%u=x@RNI1BOnl$zX!$2Uu")XF/83=9L.DWcbv+)U]5RGK[faM9PbRNuEbuukb*GN?T=d>U3J_GwmapP}nDYg{0a._#r?o2g82)MIhj,oCmp!0/O$+t,zGNS0)W$qr3N4Q.D*gri~LfftF%zM?L{jZ8+wEtrg`ZUC^Ua]wV*[r*ZV=$MSb(BY2mOGZjdbOi|8Wm*O/s<~e=rb^A^d.Z*93CfClzd0g$:D:t*|yFX8c71=8tD?Fq[,W*xNg0W.LT}5CDgG6;0Af#P|h:[;uYpHffjE:Xm.)CrjJfOyPwi>xBvRTLilo!Q1xQ0F6V!T%U%sQHQ`GV#4}/B$)0MS6)+,Zp#PanY]H|75JZ{O=Ay;@:1}qJ2wI/TM,C#.BD}3&1A;#PW%l8p8^=*#*Dw*Weo})R,fR,U%vJSJf.ZKbP8NlzSu2cz[>^qf8GL`>3cxCzZ"%K.=LXCOpE9$PnDFT0!|:H$4GU8d)}qW?:D|/2h3&t8tdU)a$+C2KVnhsy~radD#Fc/+}DkTkJ+V]:B4k=e40zPcc1MIe1t(;$pue,DgPYcz@@hU5ezLEMNwtT(GHQ}+3qQ3d!B]Ijgw|N{&Gl6E@~G.o|dnL5:qqH~T(BR8^Vj9+^i*W:Z9u%tz#MgAh%z_Nn.ALKlJB=i)r!{6m#{##*I!X?iIfjBbF1VT6o;QsJ2txj7ru)1.F4Y]iM~xgekm;Oc2$UGYD&uI*%/N2^Oc[h%JggWU+UWs/.WX!oBL]PnYTA&^j$*n/Qr#xBsIcntAo1>>$T`zQymO7=_!i|OzO3HX&KOqOIt/DFKWS?LxzkZlMb,9iNRI<);wP5rCVQh4tM(T*z&R`d8X=Ps}3X27W/n+]8VI/&?H66ZFr+X&$L10lIatjxYu33+pT,TqhwsJu+1H;K%"c"V^O"~QE2A^zBg/dcvO#L3g4/dLqYNmf5*%%+~X&@ERy#BJ[vgS>y"Xx8YKj7O1*nxB=L"vqJ]I>4O:wg0w8SG$z9i/+4MGAlB6TRitU,)x4!Rg}/X;4d_b^6NbfrQ8BrsiHeF]5KuxGz^o|^.Fj?(O=S%"?Co(bupRkC4NE:^vTvRWtR0%vC5q!54;^R@XN]CvqdUbaw|$I9ZCe9FW,dfxrw0P!Au*w_z]o(4iG]h!V;;DK94|HjO~;D3NF"3OP6!bu,:ATphCf7av"~l$YI+X@Rp1`g,G$SB8@InAwANCTBZraM.E)K0k]Q4tpR3>&fGEl%DzRH#bI8@Wp!K|j&kvYB[1p0fdjw`Ml@ZWSL0!GNSNN!uLmDj)l50#wiC18_q{4tYu%/nlpt>lZHw4up/M.y=E[}oP:lwKr|FO$}%h<;P0Cj2C2,XrXOS6zIE[b8j$l4>8:glu={[zdm!2*qK|d[ap={[fZuL5vIE3l>MCB&8xb1NcjiM>6tFZEnn}MIn(s~e8Z{#A!eT2V_4{=Tf>f1m){RZ3I9I>4)k5SF08tPqpHa^3tcj%8j,oPsG"!ai$VpH[=J`eLl3^+`Jg>O=8"H1;S`fq9R#6E;rZrT^ihi5"2%#a:^aaW`b>UC)7V+1G2qP@x7`WJS}!c{ovjSTCIBMEYe0x|Zb`?kDT:GXwOBa:P:+n#D7I6/^(f0j;|Qar4AwUzYcG^TcJ,{G;K@JCe{=Bo{lar_pB|lXo>Tsq(|7fVJ{t$$Y*cr=I]|Yq[J_z!53o|x)Ge7OPMa`AE[ZVwftM[K&Y&nH&R{i*K>X|l_uIeL8(G>[;rBz_0S,zc*fn`Ibh5|K)u}0+r>h32g{Nk"P"lQ8Lv%keki|Ox^4nUq(qKB/g:1c>I_(7J=ib;bD){t@Lg(pHfPhu8D7{)+86M/:[WVtJDiA1Id7`J[A@PSy~FEs+0p=:F(^fzuUo{_W{/@MADJdeJ@pj7!w?YhIZx6I6nKx^1FuX&kI8@Vw#bc!bbo{Z>}Jk+^>xA%Rz@Oc,$L>nh_yUcHaaMiB8Jxt%EOHwXDC8_!NqauH6wZ#XFPMeXe.3jl@Fo[8$,0IG[*$*,wB$:c2}Pj{z}h)E8?Y!tc|&7a)J?}d46(^hxPMg(93c44v88TC8WEx#4HX{dD=r7aef:97zN0/Fq8S1dMUWf`=N8@y3DCDwpk^(VnoN$.6Dd8tICmKqrWDXm2KCC=G8P_VEQ{t"V)_2jzY)R]|X/grcZ7yBqvPx#F$X"S`dj91G^x{]V8emMyMX~d5#pnK!@T%pz)uMf5A$J,(3@$+n%ykyv^(Va`[{H!y?SvX]?R>Y&Ya0+:qeLk~Pg*ZO@GzOg*^hdy)DkW|=$b*pHuGEVzEvX&iVSDUGK+|XGp(Lr;@Oy8X=k8_GR7`Jmf[eY"6&O)ysL>5(6b:/bJC7&IAj,a^P:O]BSrfh{ZV]k#["~bqmHJo9bTVn>!#J.!~lR$,hF}qNPaTZc^yS~`?`<+x8f4n&O:A!jhIj@YUP0s*+d!jkP,.R|R9YLDm`}P|.aTdkAaHeDFJZT%}<|eEq>0fP+WI+oNlZcnAWlN3C#q&dq%WE#Ld#E01/"h5Zdqu52/"h"+S"uszN1Z}tyN(t3%X2|L,/u{gSnEQha`tYKrH`^N,K:W#oqX;b}fyV}DDDWA2H3=i5s}QC6t(uPT!X>/`xhiYP2Dz4G=Vn.]!CSc_0.fpBNS,LR]biO!9:s.Ia9mTZQ.gH11gGRbEibl$bRw`Z{H`PabmL=m/Gm,IfJ2D,dTXuL7%KCJ_C&MX,@)Mu^oBS$:Z5~)s4)kB_4/CU_is!),}RCX2N3iN/k9H%.qOq`9t|U+I80mb3yJ,)s)h=J.%!PJT+MZNp>Lq1jsDMxv0,cdscUxg|!RQ#$0()*i23>Ep]YXcTSeguLU+HDd#]d8MZhkN,7yWp8MyF%FtVE~oix?IX_a|[oGFMX53{&s/BA[BljfPB?"Y4Pc"1OUUNN(kI945zBxY,ApFxVf.U=yT~xF"YV}O+wF&qOOBuWgoC3+0Ky!7)v8UQKN/).~YNS+0z5]yf#6m&*aAE"Q>AkcupKb~1x1+F2=wlg8z[5OnTn{GF81CNGgcA[V;_TVl|hh/K8(AIAvWXLFKC)uvct,xsqzaGfPlP!&1phhZ}P(;>wKhzGPH%EaG{Jx5UA>;d~cQ07GtT4fO3qKq8*F4W!Xz>w^%(t7Geq";bd=Dly|h.HH#ial9%is61ZchnOqXv%mYH@9Hl5_B>k4&uclP930|q:/ou=Iw6LGQX7@bI`9lukUkFRm`M)?%gRG`sCPUKb?1M_.,$:M(^9ibBdnYuSi9rHP%WkDjG34b3>8DTMbK4Tr)m#wgso{u`fe*?*Y/]eh<#?2F)[p>Fa(C6rb"TmDFqe8(3h%@tJg5F!Xx>]Vc.2=@S!gTFAT{<4K0^xk^1P*5A#2eDa;ez,58g84kwrQ]=WUnw:vc^o5i)*C8aEtq?FWv@#=DU?FidM2h{7xRH%;&mxZGq*{P?wlguY02eQMhv.BMN.BuHhYeOg5Y0a1]tS5Y!JH)ECz>uxA{k5O$)E90zJvbOu25!zvKYcbp*):~9q*L*1PpBi!WK*)3p.H}/"45(?|Of[ZZa@Ndnzc8kWR:h23?hL1{P(UhM1WknqqUKoGW9bHa&jDXv@yqOs,bw5D73%Y"o*ZD(mhbh2Rj`(dnrtM#xSOnf+:|61P5d|us#,HQ5>?H*$Z[X31m`Ya9H4[+`j:[CP{qkoQ7nReXhJ}i&>nt=~4ljjX}Mvw9|@O8k`j/DP|PmSRVvPBJYUE#/=/n_KU;YmA!2h@YC00"My/JlbOhH.4pLum#;[p9~JWN6a1:f7#xJ4MRc]]&O[%2vL,t=}*PeY*{SK(ikSt{O7!{3T{ak&1d7kUe/JMK,|(W3Tbm$.[ONEBb"4&o|E#_MTl2mL/JG%vR+P9QO/R[t,j.0{JZg7=o48I^@HS6s,SvcevZO@.J:^F5tNgx;dvg&Iq0bF+*h),Z]l2t[_uv$wsDf0X#8WOQ$>NhBIgkCx+IH6I9K+@g#;!raL6$y2W}Q@ds8AG*MPg!g!mTLN5N^5;OENZC0T,KCO?A#ZQ&@!6=ffTnHH3)@tap7&I~NPT_d!1M.o1ueY[&Em$E7G%/g*I4j,{qT+DX}/c&vU{Y)`Jq)=_mCuHIHKdHeiez9"}>VX_jY;Y^ec@$IIn=V@Nl#OW6a_C&9bDpLhw{rGeS6(n0D2gXxtPn*PLT(^d@Q#/)$u@m_M0L1c9XF,rZd,0x#DDBD:2rF&or4:/bvbQHw&q!?zq&0b5(ZN)2)YFiq}!F[>vxiskv`Bxp^m_S.rq;"PbM/#n(&*Sw5e8$wP[,J/P,.Ad@~up8QRdL4W.m/J[PKIuUT*x~q5;:F1."&"&K{QZuoswA}.Q$}frs=#|&}ln}SkjYCW=t[tSM3=8x$sQTE{l6(25POV2cXN3x.QW!L.P!BBIutPGZ]yI{r!cLHNdd@u[0N8Xx"Q#S_D%Bu%_0A*h*hM:27,8P48_<{r0}Mx|H+0Sf|Q,Kg?m84^/6SpD{n3:YhW#QB1&[6$i6(`l:3%>1jlM2/kK9z,ABmw)nmpI;y$|vOR!Y3nu83=jH*EkY2AFq@+,9m$]6#SQ5mhDHZz0zs,>Sk4{Q7;V.{?kZ~WE4&hL=#&VQ0^ykI=&~l:2U!&;W]sY=F>"J1p7)$Il)m94OY*wg!C3^[R~Sw`l=YE8rgsv+u#zn{?ZRkqFf$rgsNhL`d=Hukw(pyzqS6X"fx8fH{dkHVltwoQKX^+WD&b#Q.rqT0.T}5k`prDEDPB6~@k4j7Yj:h5)Q@x75i{?[z1Zn)0iDl]cl:B=c&wcWj#S~u%TQBOKN3GpdE#q9ip1Fp4=3,WPko;ok23zZ>rF4;/^IOm+G5BIXb!!ioEPddL4T`J[C/`8XaX6eO:S$/F|cOhNS,vKYf>@Q(]S+x,;GSPYQNGRP}|g&v1uGw"8P1(:hQ8Jr98Yt98U]g(cnknK9t)Thp7wdbSAC{i/@jZ&@6o+uPTA1ZR7)TEkM{"%c?,e}Vy]eA_X)!u>U+!ABjZ=#N3C=1[PMak&CTNy#5C5mh=@u:x?@!IdpPe1.kk4$M3;i"S$lWGbQh]vZp*r/eYmC{POK1x~0=(UPXxsm#Oi|[A!%c7=o9$j4sRYt0fI+x2Rv1)PB:G!8t|.GNCseMi:%IiPSO@aFhE[emXabvR4dMiaR11/M"z580/xu2xD&p:H)1DG%=??$ehM.qX?rvEyNm:cADXz{rdOCo+7e^`e>`99!_i`m76;I_kwWjK{um`sFNTDdHB%uIfOJMyE^%Rw9Q*bE?tcV`#)}Hj7:;3s^FZdLzRJL,rlB#q|<)37oQ`(7y`5$BD)1quYwb5gV]x7dmqAr.2N`BuGMt{XHT52qWh{Yb1spoe4a%9x}c&Wh}qCZNO(Fm)V3>o``xbJA$$$QZBN`3[=[HK2(LtsSC{JhDj:eMmBt:LRPXbmU}qwvrFh^SlR.lW]PG9kc_hT>4LxX36K,i2vDjWL2u&#@/i#@"mNykQ^{=W4LMP/7>b_DW`=00tyz~V}xpO9q)1r)<6#omzm)NM8MTN~E`Pnbe,]YsO7?KZ9WEEhM9%tPaO/E>v#]z`t(p+#_F=hppG]ICdBbo(&J{1@PXNkD&/<`+*,$tXXabcZ16OBi`U]&B|%1(bPc{q4kL>|w;XFmnM0u1YBC*0P)8iOsc0[U$]QRq6z2F=h)ed~N9UL<0DlmLRtv;j>dgX$1*gx,cIhC{AT1*LK<38M(~FC7Hiar[u3RQl40|Ns;kurMIjr$EgcNU62I.U:Q)p.^cFLp3c8(10!|u_~|VQM8uaeW7B([K?=:_yNKByM)+*9nMw[2i+!*9n8s*`HmbgeBQRIaUBTVe8D>AmHW+@uLD=sW3T5lQ8>i/CW^Ax{8#e`2[yBI+!6tVk)pU`aKXh.$hM$:#%y@SF?}VtgBR@r{KH4WRQ!HJ[&TZ%(I)X1yCI+!j)zq8|bnaX}PC7Te5Dq^6#4V1%I9+;,X:3JO&XE+9nrj$Em^3h|o9pG4h4.Eai|`^~m>$Ya!rf6Yf&F*H!@Vyq$5=y,(>c0wHrG0;"K7PmjnW7~ou`xWbb7yvcU"9ik$V8mVG;7YM%#`?%;H>f|f!g26"G%O6$8qeyAj_tmdGe@s@vsUE,=_7}w8(F#,)R6PnV@jBi=*(zAme:7y~p{D#L6UPzE*}V^Xjq0f%|;CEY,5Zkv!@(h(VF*@@+aQae+C_Q1IG!p+b91)dcSz2485e1X;ri3EF=xxo,efS%@|8F~^~AN7j~7`DM>"Lf}n*u6G=aR~]p(f]0/SABhDo`8F&.p6tiII6uzpcl.F(r"p}||09FpJfUpPjN/F7Q=ejBnB!GwPKX%q:^+,kI]a6&;>}oi!F`sFW.8yls;X2w,(>c,|")lB{^M@nPn.YV@Ud;2:^t245QH6^ZV4i4f:[~@bCGQS43JD7Of6XHm+,|cz<(zPIe5mCRg%:jKqlD#fr?T&9fNq_g:SIP7mU49^:]1B[$";&p[hLMj/,e#;VN=u+%swrXvrOXpv?o,9Gz%[oWgSV^#faKdz$kbfy>P/AM=a&Cs!H}b#L4dR"u$QJW1H%gsJ{n[[9*LaM,}MByB+VU{IZdgR/gt2+`HmuR>!sQ{RB2eh~EG6l7s%l6$ie/3S(35[A^iN+L=3NR~%hO4B_V,yVb,InM4BncPlIp[mc0t+kmMF*j|0;Sc.3h^6b_O|AD>|xO1QOF]4:XQhUfVK+c`JrLK3<,B.Hdr?]m&*WnLgG79IJL}F3sFd4Vp;t=1b()l#?//vPBO7)]>okXa8zh4R@ncqy==D}6v$gec674}NKE|g[,i#|J?v,izAs*]jlf%.f:4780@j?wHNubll?wof(GMWr,tY95>:_D+8,M}R"Lusnn(%9)AmHU%3`"Y[)IEaCCK?51v?SD^*A.*fixHtlo/nt(YC}$4Z(8)m<1*]5YL0PbBWSff/[w%I][zhsl$D>h1PLjw9r2OI88I@$%|67?(,gBP`}+i3N=.$jeRR>8}0Rk&GV0**HIf^Pkt)P]qqMrnF!#zsUq6Rxe%7^,QYlD}^,rZ97sNj:HqH2Uz1Q&J"FG1O+}Qy;SxPGZ|vVp%#zexg+qd:O)TC^lPDJ*SC^k);~O/NEtpyU`Xeo6{m87l1Rr1Ma)VcrZZbF1>$iDH/YA@XGErAHPc5n:L^cY&`RohQr+>y&dbu%Z#r}"u%j&Dz6x!}uy09+Q2v=GVYfAuqmlf|+57n.n.WDJqi.+K5/Y#Px0IEzJ7iRi3|qXe?nu9e8`5~QbrC=~2Wmb_.4u~r;o>YR,Sj],fr$MC*(P6m1kDsLD>jBZo*EK:W|7uh4;b^qvOi@)OJq[^YFxp/fJzz~xV2Q3mBZG>%|R=Yq0YiZO+n(B(t){+m};l.82g$*.w5[)N#kEdFD$1`EAf?O.>Gz["1>J,dZ1t!tS9.f85,JEuz/uT/`#lWn4B&8&w9*"N&~KqZpL$x2L`^EUGK`tsUn0]v~`:QCPJ+.4d1[u5G4w!7CJT4U[d!sm.6x`u3qelb=*)ypt}}#CpPV"?s%G)?4]R0]_:!+"cl>y1+Ar_8OZx9V~cpq3er$6_VX%f!]"<5OkvQaZ46X+"Wt4wYs%WZj7:uLx:xX(r]u+E!=|MQYe)4S,gR2S`+vvByO$FyXZf;;Dg(5v+*kT!DDCM/OPp^ER8TDtt0(vKRP(N[,Vk+[IS9et.GhAoFcYNT/%RP<<[!~Oc`M6!V>a+v4ICp!.2q3,n&B;xABf7p`Ge]msKVddvR0pSKH^|]bfiMG!vM7e:OTf8a+}yc|ktMDo*w:@ks2x^csbc/?"zLoNX=dM`4vsuvm,^tPy1E1Ey^jq/ZCX2[@fgAUO6H9$D2UEYgc|/g:`zl).`wvA0BlD!*7tk2n@wE>{G1R$s}[:G&~j_Mcr1uom~z#}nqL#("B&i=jY5=@m]v*yTuEFKl$D7QQ4+o;#?epf5scg9^R{`^db9gB20W`+1kwan$GP;7q9Vp9a?@7F&&0k8uL&h!le;3Y`Y)8;5!it9N2[|$?ZO0$7bU!Ql(4S6pGP#bxZj4.Q9_c6bmB&*fz;o:8[zT7pfd8WP7gs70P_y=6Ye+tTx+1zXDnH|%>QIOrrWq`,XcjqH88:;BO)`MGz6Tsrnqj0oLKy}:Czh{6ovE#nFLX??d`Zgf^8eP,{J|F.oJ:`l/%P}BfYVp/@b<~<@5*EGnUV0bdw]R>hTQF#]7mOouN4NMIvYO6A]E,]|UN]".QIios;I{whC@cWO~eN/+W60r/VD^ajs#2y%*4Tza9=}jnvD)Un$S)f"M!bL+po/2EN$qFm"XQRpDRlv]vVB.@uME4pO3$v@&coz?4~[n"a0!v0%/.yAwj4xmkDS$Z."IHY][fL*nt_R@~+N6v6ej=UhCiyM`Ad5YJVjph16[Tnj1JMA8%C6gBn`hMWUkKr&zJ4GhDbo)A/?sQtY|["NP|N:+o(d~LwT`IR|U?V|XuL*n#$6{|;J?#&s},/gXQ(]r`ijTSf(i`?R*(ci`HqDs:9G3ZC&P3dFL2[X#c61gsO.A_(pkm0:xM0|s9Y#=SBj:wGO9s{$C$6+";).OrkzHB^]QMk,*I7_a$H,n.SEVK^v{[El1n$HpS_0#BmzR+).TL/B.k1sca6}V)uWJ6/+3(H_rJg8IYl+M)vdAPJPk^v{zm}9%@W{/34Np=Q6#=&sT%+q#e4v{(u_M:^/9(FODG4ir;r{j9rpxu!VmD]vt`mHiS$1*^ae*3B5uL[zX{TnQ$Y/0U:Y!vD^{ha>!rB^D5J,zGiLY1cI2KOF^&M0s7C01P)*%l[;}ji:Im6e5Wn8G?THP#](#~//rDtB(o|j45_j+SnZWUvx}KRKaJ9yFXR;9Ioi+"*T``g$#JXxj~+kS87{{RY3W0Su!RKd&T04w7j;H0Y}h^"AmHLSl5y###%hT`Z^{dNK;Uol9~M[mL,X,GgV1fJrI6o<9Xi$*chrn"oN3lN]I^O>tGBTm$4LJEiCwdpbC1#mj/`Otb${iIq%:A1E(D5Tv1PZ[)hCh.4*O46+t+ccm}m@KTOiK!yzD~M5oO:b$QWFIIWPF2SLC_NixKrTP.(jrZIPg}F;^.ODk3%.d)Z#Slf}o1w|+JYMaWDRPMSf_~d"L97lM(2?9/n|DF2`5Qj)R`7.=W*p]d0;tsa_Js3v{l]W]*wTRXGzXplSI(zR6!YSRsBYh#M>D#SbR,o252MX@UI8F4(+b5e,U=H8I!i@PMWf,PImF(R=1)XxpbfYPc8K%y:@"byOCLUhm"k]T!uGRt|2ii#[P=V8VX[=G]u*L7~?+ut3f:3798KYv:lL:C,TUF4^w`u*YAzzj25<(%*ne+)JYdt]DwZ{P8,MOP((Dw{{GE`KiWVvX6kon|;V$lt1iD_#.![XpsqUpl1k(r==Sy7DjOAiR{TH0Y6GlK94*+K!=hT7r1aYZXIsKO[emP$?WITfoYg^8|`p+c86r;yD]Z!z?H^.pu5=.Kb2&Rq<[jF4K.yUEe!qNbC+lPn0j}XO5db?fKl_0apclE@zyEinPROE{nQ+oiasnF:jE6;LW"U;J!/8.%Ite]e}!%k7h8VVjp.7^?gng1Wz7A.Uz}9EUp|j??u]BbHTOaanE[4M:so^DUH5guWbe,QD[aw:kT3z+!U!5tZFi?:QT8*0I^O(SC|m)]j>^m=dNW}n~@R%$chkY!=@3!o9q(FYtJ85=;(rR$IMJ!kXDbNlw`>k0b!pm*F`|)NL3vL^e4@;9Sl~M3fOMeBt0ZuHiUdx+aZHfLl+H"^zDlkr#%%nm/c6l:%7A+%rU*elLUDvBTnTFaC~GrZQ6aUtX0iiTD"ix)LIO66x4in8%LoR?m72t6&}FEo8eJJGmnT$1M?qK/lf=qpN2l=eT)JC0;K%hbf,B)!3.a#7D9c~)^tsHgP071["a#+99%~FG7n&neV}]60fyltYc(OtLg!k`~[bioWh?OIMdlwz9~gV/Fw=%p^s?}DLalC_`%@`^E+`5;U4{+R3e^^GL|J>_iUlF,8XfPJ}16Myp%J81&9}CT8APM?=[RWkHwh#{(lYm(W>d>l3ZT&dC;PRpqBl},#e9ntiUpV~Wyu&]3p"d"ORZ=wT@:W39&8+WB0<&8Ur$(nF?Hw>?;{>w1P37q4_z498Kw<3N6QhN(Yamwc;Bl;sjY&[^duon}GS.oP}]:"|_bXz.]./6itMdH#@oKVmZe3%3cSOC@JA~N2mj*PSY!C.q~na8($<%xlmnX+"usy&=R7O,JT|KEjL8XD.QLm;.~Cv[h#w:ntzzcqn$}!7~:jcLy{Cq/OJZ&pz5h.Pj{BRcwpWIU#BQ.@d%SCZv9@OI[a;e4U6lEhqH`{FW"1_Oo3q!l_|~P(]!LydLLSWy7E~#E22%uW2SGrAja[~i#n/t*$HUy4;`d)4lr8>P"UWHTi2t$=Cjt1"dQ6}EkiaM(ia3]t2]rXg=$R#5?"EQ4"Lad0IM:l}D&Ealjeb{(EbY*gy~0@&?a^r+4v>Bp{88<|f70WSTz{*6!~xS5.6EEib?%a|i$@V:gNWs|}(lvB[(8AT5IhTRiJ1.XH4},wDW>L)5=:(9[G/M)eh8sax&_x,1G3ifaV$XCAbf2,3e2{tG@.F(t@:B/v}3X/<=T^TqusX#NPq#N){aX?K!DimC8K#!Z"cKB4g/J@2iYmwo80[z3HVQqBCdNP?Qp!p$TDw{a5]8Bp4gGR5=^cN/d"wFzp@sz4{F=vCY<^g5gMq=q[U;Bt)IZ$(26M5y(#^RPIXr=1DuCIG:Ug?w0FSYfK;sQ:hGo@%Se,KUCQufBD#Vl<.>3,JD3TGciyzc}QN_3G)PD$01TLPty~(vqK=`9D;Ia`yMe4FY{sE}Y=kU)aGtC~P7g5{}jDHYlIP`eo0d=e>i$!/$b+3@*1+MEehwu|,[Be.yKxTBSQ1E9gAe|TeWy;N=]~.gM};xr#}JpP;GYOg$fOjtb<8(OU5_HSR5?TAJKD/Ti&EmIYD)r7eNA".LvnZu*!G(x2=|CBjtp@Lc|D=XIWh2rqGRJs^uH3)5,m*V*jPlFEm3D/aB!@P_QrC&!&@a{jPKigQ}"C8F=o2p1Qi1`m+g&RGl4J^5;r.0QiuwYB~I/OWfnNFGF@pi!yC>K~x3)|?e?Q@b5$aUw2=dlvt7(nL"S=(9?.+Bk)gAp"64hZ2S>9BH%4l0vFSTWxm]K(;ApoGqzFg6S02VDJ`ku214g9(L)tLdQ/Xc0,$]ba}M_`(`{X%7}5~8#2On7`MrV5f=*QE&p[&oMaNCB+9.)Yz6,Oy%D]k|/a1Bp?%fpiycby}42.tjq9,D^PX;b%pLdW?o$IkITTCm6Ivb4K(rSTn~5HbLY1|bFf{n+l=AG*LZOd(jQ0IM;}2#!B:4AdQUR/b2G$^(pK}~HL$bJ4Uq"eLUM1QV7Vc!YjV}vWt@T|(~8nTz6BUvt9]Qo2,fd#_aD]/2uT_ZzX2D@CZaCC_31W=~(}6|w?ZJ6l#cY&mFYjbJFLM=nUIcPEexCL3O5P$.S5"![MGxL4@iE+ayZe.hx8t`fj6Y|qkG/Vi<`b(s17N>vdE/s%Hq]T_3~tJohvvriX0ocYoR~~`+8rht{sCAt4?0$WZw(nIA0j!TM}0:Y?}rV.t:6IWAU1IM|`eZ_!c$FK:C/BGaCCM"yFzMp!%SVGWq7,@Rgbgg,&:9$g&:oqlOSO;D*2jPXz&L[Mr0%LLB{muffy)uXZr`9"[>2>OUSrc#;sOQ:~&(st?.=/y^iZrK~W9G%9$C14*I~RSoVyCk|X/9@ujrgT;UaI))TEj6.S4?^v5gt;Gn&T!hwAS(w)IY>&JfcV1,.0y3}d9f3/6&[@^8.=gZ<,|~iHnEk:{UD6`op:1pt|+__W^{9r3T/S*3Gf:~k,W:$v^cDX;?D,=F}l!sly(Xs3F#aD${qIeaUW!VR46iA&8$3BI(_^~W3whOtJ~l()g4s%sxXqOFo(HClbcBVD]TJ*.?W23%a,|BWZ#H4K1Dh|/fNw>3xl!>bCPU;g:Oeyka>!hiQy@gNi[AFzG@Rsw%{P~y/8`O^KR1e=Xhvp1^`)D`k"0B#VXJ`a=:D?{0,"H>l+])Q;n7[N:#xNea^RI)^(!Vhq8A1s_P{Bmd,c8~>cW5k0FW^FJ8q+itd6Rp#L[e5(m<4ZBZGy23!T0>C8DlBUIZCo8Nu{R1#ojD9~k)ma5_f#Q,3b)?myt{J^v,5h/|4{{svPJA}w|UbWt7CTT1kt|"@r=3hCmt&Z%vh1Gn"Sx4qw##uM){?Ex0vK/Bpo]lgyG4R0b8Qf(WXOA|IPj5daQk/mi~5&."oSMC6dZlFq=}y;9$m$z7G"LkLEM:Z&{w3QaI%|S37+cn+I^Q5g^+!S;b9x$|>E=EUv=TT/%h:6P9B^;R0C]tX&/qe]xoMh7ZDsbB38^vb]g:I$r~B&tIsiy^l3OOd_jpIO9*xBuUxK5vmgY@*;Kzl(m?6m}_!qq>c4[n?jT]uTbXAcaxcY),{2S:|%G8Av$N&Yn!3r)>:RY?EbZjJ4fkdMkCZ?Jbj3R4^>Uv.^>o0Dt!8*9bkphVp&mx3~kmULYjI/J_N21W)^sq64jYCH2JJX3li&UnIfm)Umv7n(#Dt%3RK^j8=i9gJwW$umK2uJ`(aqgIQt6FMy#ZpV:hY,qFoG`EA;3vR^C0EEtCCme&J{AsxX%C;rKQ7"e1`nm/SJbmKv6JQu&F&Q/DR2878iN8`#bdVShTpRAUu+UI*ow&1@Dhy>.(tfUZo|9t5<6Z_#[Geu(=u961`6fZjW1>kGA81MPs/R[U[I5pKmgl,p^P{^"!y`sV5E{QAL||rC5cZe4LFsY@/B8TUt@h>S"cCqz3AvKM.a@nf4E^B_Jp;Svo!5s|OXMN|azWLb5O4HJQQ{u!H:F+V#)Gn$*U/an$$Fs%mRgEIT=5r6tt<;k*#u.4RA/tdZR?kPV~MdFqe,&9roh|+"+4T?@|rWE^}@C%sE&w)2Q/q9z&24!f&d4(pC&R)dwQ!sRef5;qJPO)QWe0][/GIO)V2B9h]5XfB{pVa)Be;MZ&p.PVPGgO8`mK!xp~gr5!M*:f6!5EAioQlLNhW]^k1F"D/:lS9!$w>ilB[WeJb0!+9M^|IiM%)lkI7%SBZc4dlDN3nKWx]W6]KP=%O}Xkmam!oAiSh}~4.^{BC4K5EcnQ">soDHAKZEiM<;f_#m94;N[D&)_($Slded`wPK*L:!sD^M!u0R=.i%u)j,z1AOizgq)*)S`3WRHUKs1"g8@EMov.DIZ>y){gk@XwY=`k)NPpP!NgEl8vtCwmG:p#5q!Gmx;~V*_q}zVE@3%#j+nu+BSa&aR81H,THX.bRWI5/80@$Q3OdPW_mC3~MX{CL5""C.VL|56MqSMIsR<`F;]}"S}MLoBNw!J@i8AvZ;5[(qSe_x"O*8UQ1BY{m#=C_QzC0DeB`oWf/3~san+0>J(++K]6/1fkh/pYGK[u_7Po=h#aC/SR_VMy0!IVpl5pneQO(rm%ZH.*Hn1F<8(b_r8w?[V1G@[Mxy=nLx!po5}KQX:@}Jhtfu}iM;UUBaW*L2fJ^,(=A"X*C]_+wjT3Vua+@Sf6{,?@2?56%;m*Ii4?rGU9Kw+>`E=}K28{(02]76zT#R>$A.xt9(u"ouhQmt`+vI<{r9lvX7)]R4rlRQ7/j>UIGw4J=N/*//)(Cl/*h4.k^0ga!m6*r1vbf[T2ws[8E4_p&1I#VxcgfTmo(tK?(=iF`$XJ.&1.BPA^UcB7,|.JUf$8R:4afw!"x.{R*_##F(_C,`nd=rlTBa1zA/t1VjavLeo!`Yy;vc@iCi{cmM;bY+KH?rp=VaQZP_H.!ED9t*t<5j&|WM=9vx,L[$3EK6!15?^|Z(ZLQwTKVJYh9/p8:9u.}`Zo}oza~4ur@xW#E?4jB8]oMbK^g;2VhiRCC.}Id_J<#%`g(kfpG&W2yjg;kl_mf]EA~`Lc|V@338G"AYhM_n^_*6XT/>B@.ma7#&VU/zf<`QyIQ{ik@j9DVE#F~t/Jq`e&PA3j@6#[f_}Ui1FVlN/@b*Be>o_K?3CFKqE:JZa~Xt3bbT"vXw(=e!;Yj2R?&VvgO7:,RyBBXH)J%!ikCYmJ;2p1k5j^HTgCy{VzL4eEKUnmH$H9spQI]"PGFJj!$(/geg<3rt};E0#E`mC`NF3{fvDH]8*RYFa;9jNnSb@jo@n^l:F19G0F}>2F[+TgdQXq]GUO&y4[Wy|~s!zQz76A9+p|dUOvULIdv@sBA{J_@;;/i~#um9<"e|BYTEq^(CxSj0muEh:YSw&?)`oHux.TJ~]%D8|$iS<^z[qRa0j=pA6>[)fHzjr6F}UI,bTc_#x4f;*9cCJ(vwbi`rej,A{PSz=B5*Xu5/jiZ/R3YQ5]L({i`WAni2*Jwdo#*("[,,+UubR=yt9u0Wni~`>UFucw+N(YRwgXC3e%tU|B$t^M/WnGs&|]&dHt=Xz9GZyfy}E2Y0,My?/f}HV$UUq4]/VQK2BA&WuxI.kmE0ex97lItDMyQf/1|.(~=M`c?QwS3!.t+[;YJ8+8i<8BR{&Ped"]q0u!2*qvqS@})QKJe%F)E*i`@4K&I5u<}vRBdVm)NUE|alrqMAa>rI/C|*#:khEGDw+[4h=v_SobSiw#t@3z@jL#/FojM#dRx@;eRqCb`Y%/|b&0Cjscvo>nuYmIK=FQVsr:.e51B,<]XHia~%"A}<|5Vy.S%Y~^2(*C)t.@<,O5JeggT^H>Po>%3`pTQE0$~yc5~AtqbifjvnkJ&%c9O*u4p8C,CQlAT=z%&%:^n:IU`]u6KEN({cWifZb$k3_Y_N8g|Rh.%{{kvv%4Jx4=;&xK=GCg(D(V5H;zt+N>sCj_*?y7CeZGn~Fu0Vb.YWEqN!#Jv90Gpo2jW1;:gE6;dF[ti0OjE@@9a>8?kb=VIRpG9ZT`Pe:=lr}[M83Q`3|)i1X&p7_Q98]%nR;o96?mQ|cbE$@]UN/.2#uXAfQ`^CT+gx#b[cgU+olGtpy;Lw%XZS7ZREnC?@2(}O~gM)s$o?m7`pH9VHS#PXtjCuv:|d*EYBvcCt*Nd4]aFb2Tx!#p:b9~9`I9+qlR[^=|Ld<3*W#f_`zs+fLQOo054&"AK[Ju$BW7e3.saOJ:NM1G.u:+"C)`f;$^@`Wp(#OI_`y=53L`w|&s@i;8u)`W8%+pCYSQpB&)*ho4T[/`=(;[{(6nP>;$j>J.)BVw}?>N$ZI9QM1ULk]O4J&P=(eLW,p~CrdgJ#R8]^YD&iLM:}jI)}#qPML.z5gh6g!nD^?*Wb2e2^Gz82`y:Rz965F>ScNcJ7kk`jfxRf*VpZncO7ZbH.ll|*tYn)]h<:yt$)yS8Q;,G*Q/_KlOPHS>MEC@!9b"Y,9m(w^(9e2d%|!I=#=hM?Vi2r1}@p$fv|"Fl=Twh:0)(`(imvt/IcQIcT=.~su4$,[v?yEA>QBj*5h]]BgHcVDOE@Agy>0ru9=&U!@D&Xn#bMH=ymw0(*1GPrTnJKV)"i"/4rQINKjq`ml&zWx!(+QP;erI+K6NIXED)p.^*yi]ix=!hq.F&+DVZC)eT{`yiI0W35mCBm.LZG"C[Lk]((y+~QvqPeT|qDdF`NFN~).OOy0r5O)O%dkbaa.2lGFQ"Hm"kL>EoQ5WY+x=_LbtMXwP`qU4y__][_x$A1d"lpD!Y{D!0M;`L+;D3vW60$Pxl_o,>F$~dyq:HuLN54_ta$lT=qcR27Cugc9Ci|Px5xe7FT6JA2Yv;|]NslwA%!mrTv!IEW[5A1D>ZjsHdfYSXLxVI)Y$Y^54z#e9w6eYu+(4WbZXu$=WH9i/yz@BVDzf2k^P4N{yJ*If|F]1$t91I^3Bod9n#|MI[B~zF0PwT>A&PqPiGlRN=nZ(eaU[ik!yJEQVaMKS2~AJ8%,)wipamv=0oh%eg0!_.7A";@BCDU{3YvHfeRZHyxW.s{Yl,9Lfhu3ESR`5{5inRti.O]xKi(sq(NeH;Ik!oQ|pb3jWR=5WA;Iw(qL#j]3TQY:d,QD!wEvP/YqN7WyB[NkjkD<,xP,CphpM_ZF^KZMHcO6%UoDT97c`^wrf(<,+ZAO6M8j(%/Plcm%*_Ubee,%/Cn!uce#ja!Rk%euDN,$)^J^hN!GFOmkpvFujfUW3}E_Q:rf9JL_ZzN7X81R}fH)<t.o#|Sk|OE"eeb@(>|N5WB3bPg:SH7vw^AD;(i+&[t2Glfv!t&{^7]2LkFNAf(xCM(Xe8:bPjz|;te%(L{(UdF!a^/C@JF|eJUoZ)b7#b8geXTq,&qAC|!U0s,8$p3QMI#&X!LAk$w!gjslCVks+]VBLIQN1C~zrq.l@$X|9wXJe9u$fT`Gi$4Hs)9ZbQgsMTZR,6Ac@NLEE#gg&%Io)5CYj"MPMpSLwDg~v@l4@[98kJgXuQv${SI83O%:~Z.l_LAV*De9R1P;t:x7SdFN269&oz:"RR00}wZ1q2ox0mRdL[L*;+G|9^C,Zk_Yd.]bGGXZyf*r7>kpr,7f+&}%X=K=cjeppp!MIPGl;cfH6i)tl;5rvS24HW0k0%x4!WZ"v*wVjpucrIZ<,mcz;+X?`}@8c,TH_fLw!~vD0"+aAQrJbVs.Rvt^GZ`@s9I]]pwtUu+zg^|dpwNoV38&FLqxFnNlN=_3O^Kc)8UA<&F"LM`D>~Y<>buHCTvZHm"Yy)fS=$2bB2H%4f|eU}UP+P3=^F)`Xgrv<0U85}K#p4/fbd+(@T$=;y%i1UK/7WI&7Ia1kvd_&aXHa*ffDfyi:"+"Z$%DST`mUhXz$}ap^rr7#87LCEm]WG|{9nY(ZU810d`j6{6zWsV1[7k.u!>ZU>UaO$O*l[K7e!J{;pVwpG{F34q0[}P*U"*t}]Lu;s7e$hsND,7U!2`9&6,m}u1W*3;ObFgq(ctoFRxR3%4J`~nC&$>%A7z8B)vhBIhJF+a;r&fWtxLf_xZ!W[5LO0iz)E+;9),iE@;&xzv01!V3Ubq88x@J_|aL(T*,aP<%p%MU2FyuigCA28#[:&1YN(W,HCT(=SY_/}/Cy>v1gSyXc3f!?j`>sUS&IK4;.YQW`=QOjzEx(b7g`BX4E8t3Dy&,0:QrVf)HIqf//1=NV5tUcUzIJDRz46f>fMIRs!XPQB[L9ixIjd`VbCg9y[=5Tr6/`LKlP:9kz7`C"(HBq~uCtGQNw?mpr7#>mFJ8a|w!CO~HPUHb$2pQU@^E,,AY@d#FO]C?ou2L6GQN7^kBVI3/m]4Lq1>V&5cm{{p[,mlpWnVK,$R)s[}{)+%nHG.MkR>SEi6y*adDedrlp&)H^t3Uj6RDH7SCtGBDsxi_)WnWjK}GS1XbsUkri[&T._8L7*>+/FByD3(;e[(ymg^OuY_=oiZh+T88]J.GxAEWsK1d>^DyuO7un)v_}=(DC=iJPxT(2ana?[ujEszd&y3utw5:(jHS${(gH~SPVdh<(KYZ8lqGy~Was64}MOU$lh^?PwG9nrx)$M./zsC,mO?$_Ce^cQZ@c$f)2^}qgyI+IaNJ[SYryJ<&&:AnRoB4R3iu&cfcK@c$9lWj:LM4c2vyF2yYsrLdfFzlkM7;Z``,K{x$>~tF$4_4wMvs~.8O2)NiG@*$>Jg(?J+RqL<,&("W{y|y*_8*w(=>VDfx}+j8[_u8$Y|nQ;!ni[BfAc$;k>Wv]Ewbc0}5:[EMJY<>G2McKhWO@cZ!)i<3g]y8}%s7~L5HW(8U`Kqx[[c2K@%r@z`L.H#,2C_];GON7>Wc`SDaU2:#*8/)wY7+NiLe}u:hrC:E%28GQ2xF!{^dha|s)T:DX~~|Lp?6CfIp^/}v_YWN`aG.y00!d>|^~lm2Y!JK6[TbJ5Ap..l5"f?tBB;h|[SBcl#G5lz==Vhkv]a3O9JA87wX.:]TrFWg@ozl83Tnlgd/4*}a+8}8C_(xW|*fSQO{gvE*|XeN"g:OEf21[Fw]|6v(($r@q/X/G1q_RH"0UA%wN5Nmpu}qZ`x`Mq&B1kywO4DWhJ_5gh3jLJ_q[z[NRH6nj|BhN%u0Wp_%{krh~!UTlj8C|N]_mKc}5zxgQD)X+uHC]vUO2qK]H>,N?u)a)XVDK<7i94V"I.&=2[m4Bvgn/%[dpuMKuKzT*6TY.bAIyENX~`6?*usfZL?Qc~lIs!Y5xChzG~xU(xC`Ami#:#9N>6ulR~oT&a0sRgp1`vxlVrdB9Ven|.H|r>Lw+j&E_$==,R*pVz1}e7$@fPj>:"a,?WORWh|ux|A!FeJX%h71f2@D2wiXmiUZ|(WI,X+4bLmS)P,`@tB$5:J<~V=H8PfQ_7k[E26B$DxHPO^r2d`ayBU.,jcg%T;t#Ds.ve;!vZje_6^@yq>a75.QD=C4{tOXstZFv.g}Em1nDo/YT`WraEVqzh5p5W;`^#XH;qpd3KMezcN^~R|AX?q.]7"|hQ+iEGAGf/X754lnxM4rEW&p)$wVcd?G,Gem~|1eQy${xN.fR.>J|}SDq|#;ZT]E3qXPS^&)^Qr4kc,+HB9ccFFVC2KkVXEc$Jc/t.X~U6~(9{WyeF]c_>|3G9wIxXA^OIH]]=SF(d9&/MLzf:0+kAY)4"o>UwQgQVg9+;]yXCD9z:HKAVKzw"9sN]z^{REAJdvbtB?_~ob,qyX&U053Pm$.qNIEZ8KBt26dZ~AIfX)5N;47VzZLCMe]R,n_CfqX1fV=]j9DLK%{+aRp,P1k5#HUN0|`3^8/U]~iMu"[nn"R51K=j`WdHo%XG[]I#.[K;#,#S^rI}~u+2fqYo{7X+E5XG(W~c}Y#r}=RHWTidO>tR;"iLIs:fpTr+3ZTLCf5jM5=+]ke}Q8np^$Vh{@9Xt)oY2d:MS70m6b7GB3%.?KeuviT)L]|gn1]Z3@#,}j>2Ude/_^z:@d`7h}Bg3kkXjY4S5+z<|K|)~Y?lu8h6uUa/haHk#RVntiGN;b?r5_q`l7`ohDI<;3hJQ,(BWSt#^G9LxGx2iQZ4+RWwzWVn`2rzVInUp;mX{9pjqh%t710I:vgB0NpO2UvJjwsnK~:jC:n_W92z:4^*!~:8H]dH1,w{t1sxkE4s@C+Vq2h/JBACKpJ!SC}R59<8Yp8&O$oBwd4xB@iWd[}bb~1wDzK0F}h@QzHe)L1|9n0hWq,{(!ll`&<8#fp4eKT(Z`1`p^k$hawfmv&5Y+_E6U=0u^IcUc8A$bU:*T*GlaL=PgMLq)G0].(|Yv~rSA[|J,W"N|k&Z!F.LWc78lif"15UI}a&asespB>h[m|=DOv`*Bc`L%2wYt0T_d/B/0&Bb]L}_#|F)qy;?nR/ArVl}ol47v,r^ip}GqC2ZtQ.Xdo:d$gGsInJex[bHR22Y0%qx0D^w|l3?hJsrCQd*]2n`u7N64S&V8N2x}rAl?.$v8h_HHL`H$=${U@N)~HXkV8SLjpCJM+Oom+0`8CaPkX9A4Ciuhb.s6/.%y(N|x^+SmjFv:+v7Hf=id*wpv/uhxw{`T`j_(25AHsSQL5[p(Iv4<:jb}lvxN%7^/yEUxO4xZ/%|x5F`k!Fa;4Og@(kt/Z*+WGg3NBQR!owj~<9H+EeDY/~je.POCZQU$GchCn}y~l2oAh`qeS,|9U|o1&xGzwcwf:tHvF[/Knr;[?>?!Vc26Kz&2#=GDtHLW_L<9B{SD93b||e>>mL,bjT1_Z>%HTm#fAE(b/QCi[t6p62_a}#Eu]tOJdv?mDmvx2x.lV5I.:R=T#l)((b"h8c{+jhIARO1&10o[ZTv>if8]a2*ljO0Tck]1pNRu6Iuia|LwJfWuTIT$LO3&:2]X8",!>};%*=aon*X6Yt=3/KFKf,Q*_*SbLa8VjlN=#U:wtbl}Ctoae@!#?du2=8N21ERu`k_>m>/QC1`_7}ZU.1U*5w0d)mtYym{TG!4d?ZP7L|S<#|S3+c91I5I0Vf{z7nXR7).zs/=)lb.ClMg2K]k]`=6n/{yM7j*U%IWw610u*1;4@:ZGEY11))M^@D`XOK^bY{Cm{U`JYIG)ZWD"x;(XgWQ$q)0s!j2$u!JKpfo=k9,Ru;,B,YiAgWT`JZvq}`]kB~~X">AaisS1/!q8?/ISivJc>;x^&N^H:4e.WK4ui4fR_Qxv.o*|S[+#TDZDnqB9I:Q*hs9{#5mV3t[BzL(~(U2%(]?e2k|yM/#_roP?}Qg@2e_AbaK%zz[Gf.GhQQ2+`{I~q_98m||8]ov(Ny6l7RQ3d/#8S[!jZB:Q8$SbLIFy9Qe0|v:v7jZo?bQ@@#;Kt!BK,aM$0B0,=%J.#b/zHP*I]nCN.ok7rOFNlcySNX9!Z)YT)P;LNEm`(O*qpd~j;#X_3>)Fs%OPnzoNP2.D+M)I`FTq9(r~;"DCUXJ.zhdTXk{LzgMV:^@kElB~)&c1K?aXTv3^OD[Zf$.PJ;F]g]y%:2O*gW}ut0LZX=WoRqF;U#e_hxmw/|bB>0V)iknl"P"Y[Fsy*f:L&*f5qUAD3UUy|Abmo@+lw"2/_0gYvm(W2[ExvhLmVkJ2}s&tj16=.T}L.=hps+)>3EgQI.QU7#2:H`eB_k^61$t/hDLCEW!sZb1A19=Lr81_UqcZEVhn=YVOrp@i%{}efQndcBZk/?r?j85S)6h:|Jy|JruMS!6v1WkvZTn]m#O{1h"6Y(O^,g;7.fx8Y);/DTYD.=nhmsX{Ki?Eym3Jjryx_j>p$@Lsm|(VBJtRVItc?*{xEvcuJ[Y=suPjok6@2S"pQC~@_KDNO?yW#s{x3OJno6&s0PfZpL@xeQhY%7Jz^.rYY+t+eS#krx04QqT&e1lY?P"jRFT3G%R^AFy~*Y(@JiF7Sprqn8v^c/CqJ+D~OrytiAm;krnH956aWJFuu|+}Z/TbZ6^uJ4);lSP}L@]ypq"Mx5^?i0Op^=AxF9.:?(O+K(~)&P.DF97AO_7Sv[HqJ,CL|Q0Y|g`]DfK$@v#e.k,w(;S`{|7EV3NVB,2SV%"TyO7[d_IBJ1/QuJbV/t3"0/`u3j<.aOW)(?@oPFJa^*~J%e3x:};4GJXCc`!BTR#1v]3I?{+1dsp=$$SM"`in:E4Y^ZW6Jl_&7dXgEMN7w7}N})P:kCckKCXN0`w{z%~o,bhYwBWgB~Tw1KKg}hQI.%!Y!.]ghx$/aI%!&|/?]4#qT@*!Zm+Z.tDI,wFr_JFfk!spjWfI@uN3p?=+dj_41zv9cs[M]EP)djvyrtYc`;I%^#}|8hT_7P!Be*[^M&Ko&9V5C>Ef$lJ_sG+J?jVvB[N}$miezXI!KY=8A]k|Azkgq=tB3P=S]Q[t,`DwNV*Aq5=3A^c]tL}x%aI$_F3JC^7>Op]w7gNOMbzu=oenb?{`eiAQIcLfzp&Nv0_ac89q|t]MN`M:+YqzkfXl{&r4sVj?)8^2%&REbN,h=75XmSrg$z9JcATqw[Lu|qhO&2TMOxHmP`9kk0Vhu@h|5411<$>hSP<WBu7RZ_En:jZQc!I7Ng1Qo[jEQYGO0SIe{)OQCmEtTe(,Psq)bF#(FG+%bN#LJq3%hN/k0{W.18hQ{*F}WtSD9z8=h0!0b{{8Fxs"$H8|ms|5nYq5zKG5vvnzifn67B4g?di<:%gtf&xNKp5!cqd:J}WVJCtM6Je&cQ:Z.NEjD|_X,u;Cu2MD%<8BKKA4I]{#;JXWC4PEbweF6$3]o[UfLx3OFHfffU2P^|vHB1$>d"?KR]LOVOPr2#Ylg}c:V]w_?%6nE1un%~:Lk8sd}6`Q/Il|)e?ZId_YDH~}fAJdc1|2ptaah.*7chi1bt*yI7*R#J>{{bj7E:eo;iApHIl*u}VrpVKwU?foSLE0=H[K6`IbF?&=hyX3wHa.NVE>}Z?P)pDx17ebNYxC4|=9JUczImSB{!g1QQ+:)*+I]2S.Kbw+V;88*@/XW4HQm,wgR^boUz)CTz%VxsL+e%zkidc|uY9pAq{!5XJLH}J#G#ZeEsgP#]ng)>+hK4g<}a9fmY^@L9Hx1tj.Li9H~ky[RbJihcTwojI76KIWLr.QB"B9H"Ge]~BY|%.)!nV6$^j/gbc9{$/aWAZ#m1QDPgy?K/QyY4?2~29/Z7v+RI"$2sHHdMzsG+sET~2+`5@vFiB9dW*Je(nK"[jJHJ_wi$u*lz_Jo}bWzn[3S,h=^k~?!)c2ywIG8J@O$8b5aDw|%gs,VPO`3+6I(v(VtI9Gv0grTgdZZu$pI/v[k_fb;pJ?NY>AJ[g~TP!,9M+4l0gPdPnEh;u3;1;W~zERa0~P>3j"7{N1?@?.U".sUic%UKLp.JZJ!WP^,R(^xdK.D[{nFVQy!f"TCw%;da/4O6rcg#0~I{s]]@6{F}20qz>Ttj">2/W_[Ak;>KYZi`+b5wEywiLr@hz8d(=o*%V?3?u7Q7:g!@d!vFvp#iV<#|ZE2@D>XFl`Rn#h55[l#0!G#6.C%w2,Fyqsf]Ztnzz/Od:0Zb{luN;SsdGt4m&TkOUzJ%].!R@UW&B*>%4fa5N/M^Co7yr9#K)6(O.;Q&^Ib1/eKg(C/Vf.arw5`ea[.6$StQGs+XXCjHbUBtDByG:W9#V5Uj#WY!jb85zC1O#m3K.rZJKnH!te@2C%NG$Q_*G:w:<+U8xj)M&m{L"X(vD~+%|wLGb,5MtEq[@Q[Fbg(EGZMo`E@<6+kdqjUp+^Y<1uedkqUFyP?3xnjH=wH7B0E3`6thf9l>Dq;IMP]qu1|xD?Ygk,qw(TH[oqF:`dLf{P_X1@#nl}c{=G+p64SE56!`35.,*_K}pBQQy28(yzbe.Dwd.{NimtMW!e:{#P1Q8=$cM]M895IOKyl5`^F$Sc37>zBzMW3rW4Q%RZ(=$Qyxnkj:S|!X%}1;7Jm7`9/1bQ9f2A"AF0[L`$aS+_rg+~MHFnFK55zSYs9!j_F2tr6.`6q4w5_[n!CU(mDYU[`J;l~r15d`?]`5AD_!QQ[3gHQ6l!4cNa9@Z|R/fw>Baoh[l{IP*)@&C>,6X:Xn2W/pf"~;(F;p2~MTBclq@(akd61!ID[tt>/fpylw(8o)]`o;{DQe3Lk(D72__*s._;Oue,4>xoUyVH=+jBI,$w4s7sm&Ai%@Sk^0[?1tI"4%TB@t1yJA4_Ht_soC?Gx)5Z8}6I;AkRYs9!:!y85DvmC?UP?75dZo|D?i^9D|Lvz|R,86j&4*ie.=dv[g4C0asZn0n+B#EV8]0mHXL6^A$#e)@@1L^+x(aqbhRcSAW[,ykfiAZj+T8bxvSV4A#~1FFH{>8bS0}?=_v3sj.18%?$)vkZNp|k8ei)I"eD/MR9ANZ}NWSHxir+uL;Q@_6f}pj5{,=t^ifhS763S|9$uC(d]9s%&c=s=Grxk~WZn1p~M(5*v7IuV/RegLA50|=^{Gd:a$o07PsGnoo63OPEb:y#o;I[YYu?2<|k]iRoeJ=g](X)ThSAPsm6uc<7C2JbHye~50dHm1v=WVdA5R?qK66[*2kiK{nf*]X*PDz.^wrCt,}0kgGl:x?{,85FT4SQPf[8a!_$e)FXi1k4S7GMu/r,H^xeebb1}H{nX7nd/l0deWg~[t||`L[/d^]|C;,fid,WCTwG|G,og|We3Ks^^3u(:Ml"D.ThC}`|,*X]sY$Y=&a&`dyLn/6SdH0xK8t}D4}/.N|C,RC[An.?g]J@f$BM5YLK9R`oFJ,5UI_I2Bg2(({K;VLcp3E#_+:r"!V886|h4Q"=&QkV9(8@^ROc{WQMI"Fg]o1A2fLg=x3N(>cN~+xEGupsz[.;Ejg?Dskuey1&pe+7bh0,CS,l;6v}$oUPk.3Q3%w`u;BH:GKESOKsA]h=Rv]QTS|vZ@)`JpZ#9251H(~ax!Cd>CZXT"c8,1/uBe1Mwsqec,9/zS(0gm7uN6X>8^0*$DCHA/7vvPodr7LjGB{%/iT`S*Qpnr^v9PKq83LXmDU7k~4(Ci^Y=M+p)u/LcrB0ZN?(b8uSOeh>tU|jpuQX^D;yx:$>~u#F?iMmwct,O")60Y12`;@M"peyV|$Fo,w&qBl#m16"[BuZrO).VE]Bd[18:E$y5j}k,[nukP?!r=;xx^s_HEmwKk3}%,OTqOFm7++MhX)Pq=_7XH8(^91L"gQ81>v3cD@$6K8FI:gm`=IH$S`q:u]TBgWXv1>jMOAdw!wDw`}I^&t;+,l9S5GhxJSITJs)Y[eeZyIJi!&KXfzodV%CTXa+&n`7;,w51&VV]<395;5_JWiIIUBeEke4Sg"`9~vx=BZFd3F7:;}/x&C]9ngLTOf@rlGDazS|Jp"r>^T}eGH}g")W;zERrxcUqPh{cP^JViHf"+"=RBd$lFzRW5Oy_1(1$N8K`ZU&_:LSQA?G$(5<4x7"#a6A<[0ia|GF1,K1*C}KiI`{0OQ9$zCo2PdiIT{_.UU[h/]txT5OB%ZltB!SWgU#WM`?3A9pKvfeBSE)7QySTlkIBuETyX>,c@("m9(%yr6f@~r*Z^0n?atLqhWa&*I@=*)XHSP{pI_X])vr64HQJvXKbe2z/}uFaD$Qk%G*w}L_r2W6rC_/7b}BjcgET75}e#wP{mz5i~L6cQ/v_$W7;(N{D&}rR#9(0{r$5Qwjdc1;LbUKa,OObc;dAXnw4EzTC;#KkOroVD@MF`8?yE`oe`_(eOMO<,f36KGYO&1p|&u{$*.Nnhn?Is~F#o~t0Ya`5P:g&,w*.*3T_tnF+i.F&6Cim[7E=G|})i@#{+)$H;Y5)Wmgp/CF2adB[c4`Q@^Nqv1q^Pj`TTvjL(yjfu[u[>KG`pj#GmUVOs7R!EEg|/W[CY9)FF(J!O$Z.n+(e%S]mJHkdrv~+u4Uirh$iWH/?zN2iG)bHX^e)iR9Ax}3BHX}k&9.pA"~VN~ieM%GTFp}@paXXi6w*Now_}wZ4RPj%RH}2$J%0}s}H5>cu:T}t1QV+;b909H9VGFBT+(!]p9!5I3wz$o6XU791z*p6)q;k]][cbigPyk@0Wk{~;wwJzB@X`4>?"Fa[b+R(6Qb#$2`]w|*e?hgS~(K`oHRI!/|LPppkGltk9|641.iP|u0!OI%q7ot4yo%t59,6SfYI36$X8{d#FCP4DKB++jHUU>kN$;5V[J;2xE_A_y5LH?)K!u*qYj07vDg!qBQfm6g=KUMG|ud4SE8;X:?2"A1/?MRZH]{^`v0||{0/+0*i`leT:3dhGrP=wzMpd1Y]SLI@46h*4rzMCf5~n7ak_Xx3l8m/ixa?"xdd],2x(:InHs"$COxte^EYvdwg*jn4=F=e#85b=F"jLv:n2rV:dDGDM#[l]RG_(|D/;RfDiBSGD~$L0a]dF2q6l2I;jdC&C,hz^aqF`9M4io@tL$hkB[,Hs5Qrn^`zEE_x*eXIPO=~jZ+G%yjTabEs=&u?p;~W8+_$ie;yDtI56+j6J]_G+|^R@O&8EN_pz+ORtbT9V%fp~KuV_p_{zt5;%Q+Di#Z=MoU7DqvkxPskxDg8Zmdo^#L&2)NWh/HZ}$McF^MpC`X&5G*l:C6uk}WK8OVH56.I(hjit`^rs)"[pqCySSJ12o3+I_.mB][*4xC4nBvjDpXb!)GqWr_Z9za]`H^B%n!l+x2zGtM`T2jFh/$(,tup.Q(tJcHN4{F$iOrd3)N:dfI;YzQM2<>SKQP3],`#Gj@>klz*3nAbS*0FAFn"oDwQ5+{6J&70.o^,Cw7Pid8gar"9)lscw.ZO!Bc$z{)T9s,+*#L&X,m?%CA2^u_#[Yz6Y|7p^|Qs3JjKjh{p#7MT}m(l/HehbnQ:jv.P:y0+InHW:7J"?TlJHtA?JZ6FqiPKDP3_PHA5@<^14zzX/INES~r2jqfvNgWpLXrJRh6vbH3^fKiLU}cbLNa%gz[^R,_2F+B_*MJm#Y#p~4.&[8J$aE/Le*F@]cQjG!h!5h4QD79V&*Iw=!"`J|JT5G!;Dc,+`hasA)F^S;2"k>Q~tLwC%ag?&NcLvUR]q~]iSilY}R+N+2QFQ28Is[Ng%p*1ccj5RdXzj,d&GsD6!FB4E5Om31qVinl#g.:*W!nC}B2WJ^YnXfeFpbzfle4nF",[f9q"KOg40d8gwb}Hn7fY)gmDY3}!K%!|fY17|yg8}Vr=Zm$>mIlQw6$+sRnU2[f6raa%~wFou@e8l2e~n^^vX[tJ%,M$?kkvwuc8b@g7uH#tv]0[B`?bcx$%Cf>9jnJ3W~Wo7DSvomVXUKK$RH$ETHu!!(#xr;*HPn9P#x41]bOCD9Y+bfdV~L:`>UwImRt,Nl}(MvY(gjn1)T?d`.`(x=Wm|?>`axc]Q=sQ`cCs*DR6~L`aGc*M$D5n0@EQ/2MWnpqnf_#J:9MW+QaWjcbyF=#/avuO_~/2DA,GM9$/z=p;0)QC9w)iQ*?f}~x_k.rNrcw6?K/:{&g4d:g`R}Iu@zkLK4;SWgw,HNWmQegNojo1jfzRQR:q/rv63s^f=LL,BOAq7S=F$t`@j.F)0k!B5Nxi)me({+&80>AgT^(H3E(QV(4LT}DzHs"F,tL5V:H{,O@W+fbd4);3@AZlHq2K?c~*[^gF2y@>16Abgb)1BI%lxg@iMj7V&7YVw:UEcKbwyoO1{_C;LWOo"{"jds0{DGd^.BH>DMUkxB,k!%X28oykG)K)v+^YwUwn{>*f>BuLEhngDIJ?vSzG+c4n4rQE~(4oBNaGkKHl+BSPe6[y8>62DZtMWTg/rTw,n.Z,w+6p;/vvv_:}PaM/N%2=@$RTohDBiC`NQ*)+W%s@{&_W}>=fbTzp={nB*{K0nM^xmaUeRczI)rq={=1qLYJjx7}{?Aa#lr`JQg;m:7Mt^[G^p;;tNHQNUG*tsioR(Y}zdTRgd[5u+ZwNN`]V(3_^O=GaLp,yNnh9{hD|KiIEI`2fuKEL0(ffs%gv|jR>Om8XF%hE<`,$r6ETr&RUID?twyXpW8ni@,sLQp#/{6;$3|LjO;s2CLf&o!?hr;8oIGsVBhee5W}>hW@_a0&Z{hp|$kSXS}dwO~}TJ/PwuIG"{gu1ZDx+?~9NskKc}lRHXKHvrc9#IU=~{b>0?MxI;1A1LcGf1!N"|S}sM4tsc|X>HLJ:,t*^4okm"!/laT3"1!05)lPP`Lox;yHa~R<=#OBXYb>$>4`YKk*T{WOC%cR{H?ZIQk!VW_mlia[6,(c0;vUsJ=iw@l(P"h:GYx~+,#5MU?1G%L_qwyp^+:c$*Czveb1nvUMOI1s.vSo!f=<^ciR|@Jp7dlJtLt1XC6+4G;.6T)|T.7Ru8fxIB<:8%[3#r?xB<%^sckVSxM&ul;diAe{+(k&MK!#UkKIpwE]qM[uT}0AV:2HJldI6CL[MO`Wxp_T/n>n87N[x^{[>eGW1.[7U9N5=k=Buzt}^2:0q,[d$`6*_j,T8vTJq;tL&$VNa&IMi8Vo8}$L*STpHIeD|(]Z*Sgq#&,;q2etZo?k!"Av+dY6V"TUm~BdY@2DO?!]JcLa{{dO%?z})|z*B86WbQ}fCc)!Xm23eS@r)ERDQ;b#I?13SmIoM0wbGKm>JUYPhD}C/"[8eqyd]Po`QUtyUo}g="|c!_ZfGiT@XV^M~]F59A+)!(OlhD1g3O>oW+xjnBPE$=:<=g1>>[=jZz@[sFI!vQ54Ej{Vr$wgCdBldo,5^Xvw`6#n53O_S#84%dT9Dg[^G<{Ik[VO[=U&%dB]6Q8qe.r0/1D@n*##1JOqYYtbjOpD4Jl[H]^9_W1wUB{Ph1fNa"Y?>,i+m>sfGOiP+&:qquynLR9!#4rUSU,ng%T8!4LI&ZP?/1F/BhHq%x,W@ci!I&TjyHH1xRVh,Ix0ZRA!M,0MBq|w={521P=;1q(Dihmd{*OADumH?lxi$3;T5IGr[+(ai2vqYqjI!hn]%=y^bk,PUZed#1S2X$#P/VvvhD,j%d@!]2(Ws/2>{M;{wX1sn)";v/17l91(n=PiBhHoLS%uvQfu~S{}z&[gH?=dK)nZ^&*[)r|vkkD!UcEl2tIo%7q"@R=xc1Rf)cef2uU}ld$((eI@7sYLGW]xjWzl*3|@,/[,fWgC2c[HS"ms+~EN&emw9]8i7Q>gJ8r_Lkd]x75HTZ,yhA,CL+xd^|p{qJ{2)FbLIGe&0)lwyny)"mBZGKgY8k]}PfMn0ICK)hfm4e.76rq(6Fg2y,Tt&2[RvV6Fh{79|G*8K%ewD0,q{xv[LM=;b&eA[%r@:@G=pdo9$$,I{S1IN+]KDqUBDS}2o_sRL7l;m1]?&@9_R_h3$>pv{}jazp{I8dg$%.*x%n;l]hZfA([=BH5V_t+#wT~Oq{PgSCO#]?c4c">d$a0?9J>85(XSIvAu.msTRU8uAJS:A@cjcx}9.iomp~n**xl#!nZ_E9cZAB?X5;MmTRP%O$p&$o_/[Llh=WSG=D7mp%tT!WYw1]ElqrM0gY&S29I^E!xVP.M=(WmEC.IjI~D>f^}[(J2okUm{Z#4f5@?Cg:+2`Y6q&?%;{vy`{G?F%>AS:_FaY#5`9O`Q;*ibbhc`j[s8|@&Q(%Qk~n@x|,19%,4}d[LIY8sjC`DgPlJAg[YQ4+mm4b|<}S$mf>"3KwTZi1Hz|4`Myo"6k+`NE)%;mZI$8xze^n8(^=hnRy;xsmD`k/2?n)BBt:DXQ%{Ei=oc9SeiDS|+;l=8+IJ9S/GH%D?@}5h]ttVMY5q<=cGi`i7~e2OwvQD;[V1v,O=F22jQ7jhBN52px[}V3~.,a%t:j:|/]s*$)FLt;Vb/pzz690uWW01kW*(oin(iBvZ8}d?N<{&YVW{CN5y#6g|q+XGE!nr~re5uT4A=No";(|{T]Np@6]:s?FCi`0j>u&qLGR!Kh,`O{ObHTkvDl{Bt4)>,JZz@:;P!$0G1.4vrP[Nx]jP|!$c8l<W>M8Tp1E^B$7_wR;VD@/VEIHC|R#B>*KMS?OyxQxS(M91|a@$(blW*5vt(B>G]%~EA}be>OVsw0w:I:oTuz"WDxJ`siE!?WP+DvZ>6Eb7(|cC|wdFC[[bY_HO,jOkotOqu1X["ie%dG;2u>kz+qlBoVR>Ym_OY8CLI(e13E&`2&?n/55i:+]RYgIgelkMoagTw~k[s?L26o~rXbo1?#uaK&o^Ky.HzVCPupwU|be!>OHG/pox$edcA%Vhf+_8*$+;]vWQ"!tdLIjjTTqXZKbV%)IH$<$gUzWTtLM:T6b"s)b_3ESowdT6<_r2@Yr|"p{W88n*9W%d,[`&1{=Jf4nRUd#q"r7KmLr+*&`@S*7*Xx*u!tXhm.7FRt|~LD&Wop@.{E06(*_0N)8XoXV_$pS6?8(~7*FIy,"I>&U.U^zZk(Q8Eo0vNrd{.r%+O,[A4>4_$:1g]VWWyiI^=kcf(?bn4R7M|)u~aDLkL1wLxjG=AZHAA~@%5f<>Zo|awS.k<9BW;^w/$ncO4M_O3iJ|_^<+MquF!cwc149$#.@|mInuvlS`!NJNO^3AQ`qA9u%QU,chCH$Re@;i4,@}0NcZbcqkh^P%(0oY96SFK]1{0XzTR%)tN[vMV)cA@uux&xWQfe5$MxoaH=Haq/^6B%Wiw[qc&u5_?)PMSG)zN%&!:`ph>X8Tyy_|E84Fg`vxJwu.a$[?@N|;n^1To+~T@Kdxj!RoRJ@0>_:WuG:ky}NQ,Jc0=SMY&wg[1G.xeMElBP]W1|`[[?U^?BOQB|u5Pu36oO*Hb#ax:`}MNe7P7hCc{MHhFsq~wJM4"{Oa~b,OR!2ZE~q)L+M}5u|sF;t^ptEUC?;X)8p;?HK7&y,iN$g7B*VaF7wz8d_W`M^WAQ&2mMKWaYT^!(2,,tzg[h9DDSWTC7WthLV6Q7i&*&K+EG(g#b]sbLB^&BZ4C<9MR|o>X)Ot+0hE]t:1Ko](oUY(|`8,;q{,&s,U>q67tDe&[^6G[BcQaQ!+RkCg0aJJW*CP|8zo*60cZ{LyqPW;$vlK[}yTywMyb*tB6nS|E6/YZLx{9+$+4<3YZMsYP/XW.6W&U`g#TJON6ZRTP1J@OR&L7|m4!oc[dctxQ#(GYXT2UZ.S,BRS`Pfl`xfrh"d=WAp^6Q6XO+(+v;lJ9&CC?bN6.WMp.@DVG|S#qky3z*sLW[glM!}mCQO^MiP[6HQ{EXnxkk$Y=]lEcR^s9Ghh4fj4%O5<,BWQH#Q0Pp=Q[o0Cd(|jRVg(v5(m8r$D}M_|Z:HNy)1t4?JG>t@,Rg!>0]Cwq2]#,Zj,q)A!iM=*ST2p#Tl[)[[G!Y>C^z(~DExrb~38j!}9Iqml}ZZLee}tY5:~oS+{u_c6.7P*=n(`bz;|#D1HAaD?}~gG^WlJa0e`!ZZoR|?%Es{Wi/]Z>/C&U3HFai~;:dmlr$R"Cp$nlr$vw]cc,E`J%IaMMNmQ@dU/s+Cces5]m5|hdR,(uiL$r:=##FxZ2JIwdO?[K~Vpi5DE6+_ILBHwqWaM/hn|RURl~W_E)M4+"F19E6t1N)KEl+<1{$"IT2bjUf"iPV*L38KN!yER2pn[#Hk^"P<)|IUYn|/cf(l=%[P!_l_UXMC~qq2d)L5QEV!xCgBw8b6h)+Uh}1ht+/p7lzM{df0%bti8cY_3^&:e/nHo$mP7Pi(x:4i*rP_p.kC+X0~br2$#jSGZ;m*=|%{H9rM_w7NM4U%G(p,h7B5eDUG^XInu?#{ka5I%hgFqU0XW+y&/RgbialVZucyQ$|a7!0FG*Pvfz?=QhG5hvB=~Q+(}T$.p>z,|t+QKRK+IXLf<__R|r>ZD@x5u]P4G,Y@)E":|eOWav_=mB9CF{1I[P!ZXAr%0JcMTrub%C2XFC.RcsnMLjb&?t>DjVDM6vS]Wx8~wd2,RmR@SK~`STi0nN<]]ty}BCVBzIDTBSoU&&Zq]IVHbT/8vg5L;ynmq(~J=aUQAn{nXgGlD6_Gbndg9{,fk"(EcprA,ZJjS.8Q=SFG!wY@7RLZ^ZCD;4.D?0NPs6%40]2jKoOP%d=9Fl+`$_SX`P)~czA4kVm~0Y}Ep}.}{D%Q_+6riM_n)X0ydRfb}28h[(DrznY0|YVDM="dii|_?4p/l5cxr&NU|8*#m,^sF*pELb)q!&+kRgz9}3M:m71^9Zp#T"]*=]35qfOxbH@jK;Q3W},te3P@zSZNX"m&!.aSY"]$:qb~q^VdMkWy[QE~Gt0RAvC_2;)K{5xIYJ{f%tWm_pcLqH7jWRt{y(F4,V=%.w$y&DKO`ED&[8VsZoV@a4,{r#oF/I}Tzh>|6(?bc&v`seS?m1}3%+/D&ZqA[2yg328!qU2/]M43,@d.#pU8znSgn!QLu(KQn}C63mC5SAHM1(i1qJ10%7:W8t:[:gdyNp{P>IO{I{SUU+1Kj++D09[!1="8U%Pfe,6Y(xFOS:>%]XeoUYK7&^{Jm216oGAS^R>PrCn)qQ/PF6Lodx3*s{F@[&ED$7oX%Fp9Em&4:d.SGu9q9I$NJ`B[2>%$QqGq_UHSs9Ev}jabBx"rUeLm!G6]@l`yRF_F8&Zet]`W@B~k414s,@3u;3:@W9?@XT;;J2.3<9|GQqX[A:/5+^ZwVT6AsOceVd_=ZWvi9)@DJ>m(1B,8*s1Ye%9gKr%bJ]JMkmSPQPD`M6Xu%uqmigz?^B8!4LeEkSTX3zdM$}u#}$L>$XfLd|*a:In=NNoaxw#aRQ:deOx*s[^sP0!yE+m7W,dp8n/6b9Npps2"RBAh^>F]U:E5hL8_C]wwO,^)3BW[;=3Cr%MYpTQXNMkQ&Rj|*6^Rf$q4wwr1sV5#gf2L}R:opw6T}e.CA?[mc}^d6%p/ksP%T#kIq#*>TDf>hjT_zOyz,fIDFZ(P8S{|9}7`UN8Wm`3qN1$lypDG<&%_LK?X~PgpsemyuRQZoS9N~Q|b@nDruCj^zf%RH`/Si,s2coE89%7&0P9^[g``Iqs%Z1bj{h?&@1ssiWdgnas_(cC8ZWDzQ9n*nVH=OSA#hFp*!Ipl^@c11Iq,x^71;FWn{SDo{4T^PC,<^ft7cP!BXSr[~5c!#V}%i&6"@qo,79%e~`IcRw5GS(W:uc8a~aT=.U,fB&ipe6b:t*9x?{bROguguYK+g:&eB[_4)ruCEQLdq#a_@/_Jmb2IK^$L?Iilvcpoa??ns46nsiQE?3h8WmG|,SdP2s{dk]*V#_yb6U%"DrXOCU2]%BJ?YBYpcYDP.f1+CUnO]l[EMS}98[HPw(p/pz!8fejt[4#SRppb=0dI@DI!m>{T|r;,b][kuF(,1EXB#p";v8mz~e,q]W8s$x6+8Cx]@@.o,FckAU5/FKyP]IWz2|^3FTOd8=is=YHm#7%]7x!qXD_x!qCg%9|V3ZiW_vWVu%=y"$k2?Pw(Ft4K8ThNi6HAvMYS/Q;mpT=&F3#u]gukYUiPZ8PADZ;jLNr1!f!LK3ToQqaNv_RYoo{qI}u7=:"W1M)!`*Ala|V}+g{v;_d&D6*c<2^%lzO1w1+nBtXGoP^p_L#*=&]0O7"8n[d]TUy[{fz^jc>[y%0PN3l,7eUKs9A~^Z],*6bDi|mKkIN8~ZKe]d=(TR9Gd;>&1IseBK4mmX=KBUxp9KwkS!6""M4,&z`!$q|rsUg97tXG1Y#/>ey=m&t8gem3X`2=fV?!rx[:1omU"Lj%rCVNG)%s+JF:5qCbu;,mPM=:V3c:M7;)N]{u:[4gYK=rP!o@O]#j;9;ZYUBOdX4Q>7;qh[Tp1l~oZU]O4DCy!iPNa+bdi9wcF~l%:W/5I&UYooR~CtN)3Aw5z!4Boo|DQGF(:}N#ouwv]_m:hM?}Z^;`5o!;EDbg!K6zx$[?~:Y.@mU#|1JfGe:?PrPFI5qH$M);>Uh9b)1;Y9`/T;ELy~Ib.P_a$RQf??KSbJavO1VCGEQ2L71u;wuVcs%O%x+3Kg87K:C0%{:f|_FKgWZQRw5UUUF(?pH!=d[wXdSNV/advGFHPmWfKU>+]?g/NiNt6/YyBxRG"$"2is>s/tH/QhhJExA/>::[Z[8gT18`ALWkp:9fy0v6lOxz&q"N#.,}SzqzPLf!L^;^<=3l`:D{T/PiyWf.|4|iq>wo9qp&%L?(m,#gVQr}zB@8q}z&V}Cfn$Pb{_*3in>kbMa7a9z,R(%>gB_4][5_v<,cRrqel@aCjYz+R&Y^]c&19G+fp"_boId)eL`e9U1$8$KzFDu/Y:;b;orCC<@7rc,G0T}>V*F`r%2)IvYn=Aq3)BjX/n[b@aA,H%n<1LK`}20QfSXgF),_o`g%f9AJ|z%Z4bXd|&3g=8rc=>`d1UU$Vuh#02B9;"nU+F[1x8~Ck7"($FE|J:K`Fcloo&D#;9i1{JOz{4R$CVi@}l=BlQy]Uhz{{Ruj`vzjG>vKNi{t:t=e>r4G?>4r4t?olz?Ojf^DJ9<$t*v1,oWxNXW.)_Wj}Tcs/+WsR%=pT[W/Ksobl&=vB5ErrM`S/hE>]89YrMT~:r&l:ELvBFHfRsecoGeO^.?:DLI?Ye>)u1!av)un`dCIA}S$THCX^;HCQ73htu]@^bMZfFv[g0t9)}wv<$swI]y|&Ii4J?J0R8|P?r"vG%c<%|R|he.@&FpPtEoYu[}0s@D5h$KCow)3[)~K/dlU#qwHOzD#}OPV!an`$C^n!%}9LBlpCu_A/o*Ow5=lBfCH=Sh@?Xc]sB/SpGRE[,hg6Z?=.yD4#kQ:@l]nhr/m+*}uJfV[!Zr@|=g.C`]f^eoi/HCJ=AzdJm;YWkua~a&>gb1UhPRW1~3Y$Idts$1po,?Z)8$R<#R)js%he>10(6~hu4{4c?pTD6(,bQF&Zj1,A^:c64_sB^#!^qqX`W0ZqP|7DH[;?oiBhM:/&XZ4gi/Ii&Pv`79D(1f4{qEVw"i68<`/S={:UoE#A&{@6s&T3q&TL].yDpu~QAM=PF0cfuN0d=NuBuFd)}E1C/2RlIX2?Ye1?YeP97[zRU[8VRcy"%oE>4nu&c6cSS(WS$P#[Spq(L9`Czu^8qNPLZd0Ax:N@YtYVGc.T%f6&wIl@*XA)/?<]hbh1,vlVuUkg#i;*6?3vTx%8Khf40=p+^r{Z^E;9wVCe6TinZva4gUlVE07oK!Wq8,8KMsM|OEznjR/o=|VJw#X5.OU!9|NNSg(+ose:K,y$L?^7)6wmX+uGb(l/HD#6&&*IOZ2e(pht.~7a+!iE^:dB;lfySVet{a+ooZpND:!9dIj){);/"F;KZK;?fx7aM;o3}{F|27eQ6y5`!3/msog]If`l3@$/RFP0d5faE[uioae/s7@GN+ZM8)c2G<2pC*DWnAK*XjqX8;fe>Mrapp3qC2OS^0=$v"8+Ob@@M?>oBI46t0sqQxnq<:dJ6B&KN_b>M%Acya*q2t#dCHSC{?ru}htw&%Ogr~`HNmFZL{}9;?XnftI]4rc~QdDNSsLp#8Svl}F/OM3T4h5Z/DJG2zXzQpRJh[hzpRfSjarB_fh<`3gacTP4.`[^=}hKPoCTZ(Kw2xG)&aCeF~4bq@4|}F,yE6k@.dPp`t~HJ{%hXZYVf)eM$}BK1RFdpCd"U:w_ySx9yqV6Gh)(3cpbTfL@_{,eZ[/RC_Sf*@YVRk5IFrCXB?J6K_42bcPVe9F_%+WLE%0P5<<`hZDUr9<"&D[J.*FY|J0}r@G8~;&+`L;xwP::0=>JC+PLMocU@c(7jyt/9JOzwr{P(Vek$akrE|+Ep`k@:jWcuk%R/@H3j1&w!6"N=aNr,2b(*Zc@oiW.I>T(T|G^Xmii@JH[uDF9a!5%]MgM="g[.r?c[lD7[1^"IY01S]%**2JcTAl*}}JM&i~t_=D&BC~OOFakX<^Cr2x8Q=DyD,ozJQOs6IO,Xrt[?pT~G4@aD5s`F>jQ=RfKI,Zds7]KR<}k*H2=g+.E]554p+Q@;hy/*~i:RRi2bfV@M"[I(zzB]l!#~k:N=bFyB9v18+SjLyR41}`HmS;Sx&,p]2Ut@98D1JCKBLYf{DYhXB544@P$+Mu9GLLIQsXm?r)SLz[`EM{sOyiscC:R<%78%00vBUiyy|Sda{Ms.Q6jErxvw#8KD<}p2,?C9oML@)dnNX.42;`V_@KQuLufw5^K,PTuFI<*YDOm?}J77GxvE!P901[WUichzX(8MCWE7my!f+Z(W*Xe;&qf>*v{bdDSx2=ErU|n.pDb{RA/G3%7,XBX+q48s#4a0F[oA0&9.uQ8M33muX[)m;z|}t*|QHn>ayzyGexNE0|@8fMI&O(cxg`%/6FDjs[GCkw)HIaOxzVk_v(Du#omHBAJyJCKP^d8d8TD2(obdtYM+b:Ubk;V5|pK`Q/%hT5Y4t;2&QJ+;EDH7?+g]f4nWV++S,s2Qy5D652.dD1Hq,|k:*U)i,yw:hP.~eLL2?wN41%phyUjrzc%eY0}*!dY0z@Z)lkw3|yB+>BwGetRbmp?7#N,gc>=0(FYa$UUu2)TlxRI10pTW|oU(,58fmo`y1I}dc0oR@+zMR(?&H|1r(`_c+oNDUVuCw84CjGw|Z{T.:?6)wPDhGNl3]O6Fz}Q/UO3pHq]}RwlLU7m/:aQ4P.5MLy3omvvDvKKy|w8z|lAU]0+voU}]}FCGzg&=msVP.+!dFdFIV8QrqHk{TyUeR3m6>M:`Bc7c2QzN0^zZ[;G;:Ik;MicmS#b5d9g7`=Z$:`d&&SD2V([RPdIN8<3e=x&C]fh5icajmktK:6!J[Y6/sHG^!w^7+tzwqe"WuGN__E:JFl^[w?9!uB]"zwdBa):7WWiIYWjJ$/je`j`]j|."xX6ue^VhQ?aLU*Q"dUSjs#_D:$}DQPuxY]F]g{5{OHc=Ue(qi;R1d$gtkK/Eg4xhV70h}Cs*"+&|l`8(bQ#s1xSkG0?gR}v1YY3C]I6vanl`0.vX+||KSa`ei(iOA4dT;muw7]m)/z?vWnlLLK"b1OCj%81.;"X%6is+;"O8_R>yJ[U`!}cGf8"bk{1.LKl|d|22NMw#4D>;./h]G]@[[kRp9K%1AM7iFH7RbJmR$7>;mpZ516P0AzpO)]TD@@@@CKG!`TOzsHKTNGeblT@@}wisoen"K*5xJVgsFc{PR%0Y8.D&D2Oz#e=19,zuA,Jfrp9K$;8gTM~O:kyZf"`e*QrZr0*hH*|t3=,r3AvM0y5VQrH:>]p$`#@)Mckfp]S:O{GR!%`yXOEaXPYaaG_0{mF5K+BgjcEM]uN{G[zwG8|Vt(_MZioWE~ow;TR]i#{gCwijv~^aZ8dua=p]$&Yx/XHqai6Vw@~cssB9NwB)cwAunW*5rMraw0NiNQB6n1F53Fu#G{>TL](uW[SRw32ozy)#)zl:ki6g)ihpG{H*K]_FZ>XOGgDVp5ZXv>J==*^Psap#zP>w=ZvKdcg6zMN;VGw&Z!C}x?Ly|`peY8[7XX+~3HCNlSDaMZ:fdoSmHx|v&>P=*K]T!eJn6;)%#UHf./`Onx.3N%}/UfO5h.[8=O_!ev>g}|`J}AyU605(:VGYZ8Rna>}t*E7=YBLf6ab^!:(1L&eN_@.,!n7zMEs5!WNkvjltq%zB0~+no8<~}GWp{jY$Z4vLnw.F5q3FYISv^;WerV)9=9I}Q=tmaH*E<%G^yx|.LG`h`h4{LRSbCTQ*iXJ/Yr;#l^KhqYc9t*e$HQPie>A&ajI)dTDg0HU+:RNiNFKjy"{p0@L>L+Zz8/I)3WWwzm%f5Gjlo|&]Hlu^~u?f>IQ+w;uX(tQvH[u;`~n6LmS"%^^=IBHU+ZU]OvHkY_zfVJ(uQ<$zC0g9`ROCeCvHyTpN!Cv@!V%V;B.X#cd4ybS5LSTa|cs{4$Md{ZLW2I?O3&o0ysK)XDD)~qM$YX`EFv"V^lI}]CXu#kJeAhM{5VSy]B8W3b&C>^1BFtF_x{|?q5y@(/Z>ydKB1joHvHFs}YS3vX9Mq[0Ocfn/J]4!)[:S"[4|ss!`:*BHcI9}RFS(uB864.AMdnMRzFM,L)66U~jn%GOuXPNY{#Wy"B6>t,q@EL*0:H{&?:^^A}ifM51u,On`G@!{qET3*7PP=;*3#x#=E~X0Q^;*_7CW%n=*>o<~Ugr%#Z|_RMP^rqbfE)61dUsx#BGh,!w1HTnE:G2$Z.x)RP#Js4XUA7xS6bh#&7+v`K#6t^g/VcQl$XbhxxovNJ@o(//psGW[L4_<)lP1pcq/@"*eF`+%`mkPC$x5M>mA9,`zfHd0{i@{wI3zz@0<,$bDPf0u!9}1=JdDPdRQ_9HZS82Yyh!Vtku}R&j)+<)%|;dbFoX6iE8K#ZxKDdblTVqXr7=^z[IeL1V:/_3Zf`y5E"FrqC36a",0GnwW=?B9}}1TQG8k_v`X^0ooxNh`woJ3{+%WN8T%Ff8d@uXacPfaleuG/qv2bTf3T>gVvB_b:rrhE[fi}10hH^{[s7"L}DC8N1>$lgE8J[AiS5CpN8WK8a41e6/]wm53Nc)u6%YWRiKRS?.G!qVBbFPn+|c$T6|?nBL$fG#q&"h`wormh<0mX_?YU2}*,wG)2h|lqdPZ*;Y,uRtT8zGe;I+SilUilqY/d=(zQ/qmVi8JO!BLMOHNqfWY08xQexkp(ZTEf)L}E+lAz,0gC}^7uH/ta@#72Gv(D@jY~Fwb?6=|x1~P~X:p(P1xQKg)zw2h2tr`ecKmDjb{5bJ2WslSs2ZCXE`Nnob)4S#$o`FP*+Efj+iD}e+#qy/;Lo6.]@LKF]c6+d}{T6}s!CPm&jyvuh)}=@Zi/$V`52:?=dcwx.S==tA|/;v{Q]@@~kPRCe!;~0ui_qMTYypE;#MO&+`snz!vfoPPvHKR@*[`j3`C{4X"IWcJ^z"xk0C3X!9fKVZro)+I`v/&zWI3;L**J$NPPn|yq*"aR+>_|vmr/g1^fVi)[3UUCw|w+1M[>{NIg[oiZ7@@6t}##Q@rHRc3V1~et.%lO8Wa]GDX|oRZP#3/F:9=9Y>^.O^k?ifN^Us#pC;(V?Z1n}V1riO!w_F,Ffqx8jVJ{S,6A4VUGeZMCeKFXEG&Y3(I+clcwzxQ,jKy?IFttA%A@XRZaEAgs85ip+jOZic!]KF<0_lEpG{9h;)~I|XnIsV/ng*1+,>FiV`v&(7RR~Eq3,BUhg;h]L(qvH(N*x+ywqlQ18To&$|vpf~)3WLu5hRzg^y]yg3a@ueewX%BrjfryFoi=l%,>j2l:K{aCR)}VQBdK,HU9Zf@9*<*?W7&rl:CB9;SUsxozv~m$*GC;uChKR9I/26UFUGc.29k%h@Zkz`.BAJ]EQfVIP"i:C*}Na,TC#80=6o_?MJ_sP.Q%)/j?@PjJO(E)S>$h%#,I7@&D=yCi2a$T9RoY[/zX;S?AKle_?Bn#E#L*qn2_7p5cS;oAq;q_4%]Ee=xX/Y/&|T;kjf8i8+!odJMIp/=oz,~O!=G=G;lt#)YqZnif^[KP2A%,`zeF%v=/G~I+>rE(&Am:IIU!p3}jMJf@:qmQ.pL!yof5adYr.~rzZeVUl0bJd+,T(9HYrxSFKqTcp@LMC|JyoXr?10!$q=bYv52]?)om,+6+x@%bTDKI:^m@e{1oS8zoYRa>8E+Q;Q!+z5]EcckS[5Vt]m]6H2Ie+j6E+tdTIe5`^J0q2.dehe|R8L;}8kFt:GxQBP(ph]10.H[`4,:nU2Mq}%@sP0f5gnk~a$b@1N,fpea:/m,F6e;!faH0_B&Hv`!*#G^$zRzke`SuT:,aRU[>9!r!o7@UiCXguv]cKx^)Xe>*LAx`IIjiIMJC/yEcj~R*6ka^?B2lE.fHE*??)TRleg1%R%va=Yp5VDL[67.}^laN80"yCv0v]LP3a/Rb_DC&.oi_[YKlcLiloGLTJ3zf9atQ8V!O05?HxRsIH#t|Z!3z2W!%uRKUaI>NRsUsdG!{@l%r@^a6Nh64(U%!+vGG`_N|}Vljs"M?M}]EKwg$AIY.[(B|2hff(KumEF*$Vagwi9PX!vN_Gf8sF|[6^9d=i_<#C^{w@@`246Vl5%Wh@24N<.Kn3ADiwH97ky##CbWlF4{N_HDV##CTW%CMTlaR!2NN)s=?1=X[.&Yd1}]&f/,P}Mzdfap]W7!X/UHz]I$tz9IptcWO@~]{~l`S>24FMV4+#R1wZ[685V$u:+3JitYD8.r^DE@|LY]0v`q%y"q|@K_c&!=mQx>)8QsC^Od);#q0)^Na/G]WgssN(~u:_vHjDYu?wG`68$k~r]u[Qf4o*O"I6NypG5:Ubhe]vUU!.Z1"j?4Pk0ubixEU*BBCxFHCoXr"mn{k)*J>)7}akn1w*.{{V|AV)v72W+0#$oPvH$IIUPHfO/jmx&q@xPHP:h>PMHwGqGQ;^EDSZ[op/3nuZ6v|Ew3zhrs7o.?~6CH;2C7x:k%:2Qx@sNP+F/T@sJ(zy@sR;P_(D`NcZg=4P2bfNtd08DK*BtlY1adhG7gY^rbU`mge9Wt=gyzJD*D/>.?2uH,pv`<6YB_{4kbjMG5,r{E!H/RK/.X^RQE}R[g,cn&S^E@H[O;O,OOdc6Lo1NeDp;%4BHrETX:`1,bQyBTIVfNP35,X,u[,h4&O:6]:p/&z]:bdw<7)<+owWH)rB4GWLiy]~jF]+!6TH8z94,t3kiG57^YGNSun9vkRr`^.8<,&mLZKZBk^N_IsT]^3+.)&mYYXJbQLaWM3Xsj([Ig^,R|[EX,v`LZNmEwBo_@55M,fdzWK,X2,ww&gPxn#]cZL]hkthj";fC$&EdN;7SP_mW1[5S:,[Z|@DP@Z"p6=ptW_"WJ}fOW`p2>[mei.aHVDY+[:IFxJRB5muA%~PnfVhq2.4A@RaUGT^%!b5#r9W_XNmV//04QixtV1`p4ly5s#;y*b,"B6>BP3,"B5hf1C"57/9%`N7H|KARW>]6.G3xwliWokXN!EfCJCZ{Lb|,E/cEtBdgB@)ntri~|CmYe&[p$_Coi}hB|17UFzlsHxD]?]Ix~t7"|{mEDly{Yf8$JlPYlN/R>gMZ|9Ms&7^*11x([rb.ur%quY>F0UmSkXh:15Vzx9P=mVc@ajXtu(NwzeFC~`a!KSoyE5Xwk0g:9eQJbDfsp#,&EUKUUurT]iK@gwf[6YqIN}.oX2icCt[x,@.!]B]pF%uWU|yv!i!QO?9i680+SWD&*y"dPk(Lf_WmX24Z=]zf/79h"tn%>W$ozM>I4{t^yGwT.,F@_E=;"Ww=BLetj6~=gYYf1]PF{ygj_q?XVGR_2&P7>=mtTL}TWt;W`^EXb^q`#i)k/~E@fTM7H..md4JF>j9Grk>+a5yDe1B{aB+Z&:!+9^h_IGk^Cak:|gdLY+Gl^bzDB~=,_@Oft4A)?@LFmK(|b;u`;g{DwwGQ?f>Y%vcDsZ/L$1!J~63meBE<)J!7L?sz}zEPm+<$wx%.R[K)w,LI1mU##q[%oQcLEPOqE1G^~mk`N[p@DJiVfMDwhXgTE<>$R[=H].gPO{.Q6jktaYneAq("8mb01k/K=8:99,R3$I(8^`qxpJW?2)x^zGTz3:(@(GFF+#zN4g_rt(SU7uMdj)bA&Re7XYU.6tf0+,cI+LwY7Kc{jLK[O<=qxT8rcafI`j8<"|I~[t|?!1CHrt;JW*BDKiqAh~)"!hCoU8t:)Xa@p.th.i`v;F;Qrs$1{&gz8}mbGFfhm)M:g#wmgrJx(9u&KC;#0]k}@MR^Ub;I;pfQ5cf|C>!|Bih8F3[I8j"`!ACp`i98*Xe724#SwKs7QetNDC/Qh^xysZzD9)_f{8krsmGflh.**Gs`c%~Ev|we=a)x4L~e?j,n%^b!.Y)K`65XV((t"K`i58ILz9z9!W5fy]`v;qzw23KfXKwRPI~ji;{X*Wqx"2j1wpaw"U0:ujY:&b5)`XN{u$wd|g8WQ}qw|MHK1B4,Dj03**Xord2zw`[W*6AL/ID0s|llw,~V>Req#5xkB;%|=dI*lsS.7^QE`y#amJee=8c,je<8l,.4e)y:+?iyE!+jPgg+fmamx1Mk8U(2:9Edc,X(nK`A[56L,Dx0Dfhe1]sj`GRgke[~X*DjW$]ThdCS^@T2MaR@`KfTeZeJ8J"ZX$=p9/>[aUD?wvpq902x4cQ"Ik7ELxd8Ez!eA,~7SLz5c*BesE[uf#.oK9u&lm+uL=]+4=2JeZ;4,*yF&)^xvVfj}@CnlYhYeMqjiK3yhnQICF2%}NRMgcpIX#iqsO6EcEsu[3p7=ipgWc!L[m2Z,^xQ/W98&N1yxk6h,m)63X/|jJ!Ny_P/eUBXPb?1Jb1.]Ot}Hp7|OCQ/EjT!Zt4!.ZQ$!Yx*Vg*R,MuduLn2b:{]4|:)Vj3:l>lY1,Ruo2yq=,`V&XFsoCh7v!G1AO4%1@$u)DDq=yBFCZVnisv6ZXj@R<9fY$ZELY7a]Nhmc>0P!cc>2JkroN4zDT*a]YW]=lmg_;SQ:E4%s@6&zg?UJ~G8)KehsnP.Yv}#}YdovSo]h!0U.:n%d223Ui0`s@lR]1UOf1alwDno@e(7sfgSN$.;p*ZTBr76:7Kb(jlG^n*^Quxq|S5GR..fa,"D9zfJR:Bi&&WS(9Krfx1?oF06lUOrTT3u8OXZaNs=6gcdyj~LLDjr5I,l)4my_x~A>NJV&0wB_;";./C("l.tECS*Jwx.*YAy:*@?D:,xv@}n:mXHRZ~w4m{S=Y}nG?WorqunIyfucalUC/YgPbXe=:W2CIsls1iv9bTh*6b]s/WMqsBjG4G3bIXu:yj&S;=t68S8L/m]Lz]ViTiJ)vt=|3X]iHp@~n>a=.+P!gJKr+|F)9?p*x=:`qdS9hd^$~,woApg;"pZ.>%FMPZ%PDWA:A{E7S=X|gdx>jU**VoHkJp3EO_6]M{DRGbNe5CG|K+)+P^.dUpA@;|.T=X(][5,bQfWUlj`Ld;J>.LT_"KT:gM/cYB2lHO9=3g}ax/]j8iDrs$,?KNf3_3g)oVv/"jeB]El[H5*Gs)H4givDl9IPk)Oih~,cLnuA8SBDm7($^Q8f6di=.Y^E}#qp.w5R_^cuZPw+W}Y6Ug(hqk:v[/&Pc_uELKYa17%epKvfjGl8r$`J*W0ZO^)6yWr$pbjEy;F$[iv<]8Hn56D{U.chJ<5%>4x9!#7Gf4o:[T`[7J}}C6XrwCF9`56i}]HW_n[!Ng)GR8a@*)&MssbQdt?F#ROgce?i:[rx{t@RC8mgmlc:zN"0Tu&*VaZme:s!+xzJ!ns!#u_+7/R*~^m>/?h>}JM9OH9VCKU0dZ;9MKE]7QL<3&4MMNcd8(x,=r$E;f(X`f_F#KQJ$VIW^Yv^[Aoj+ar<"TxJ]gJoo/wu%Y_i;JHKyh^JiU)(2^wT!d[KQX1CKT_yXf|9%}J(X/r8,p5(J9]0{jplCzvi&tE?4yT^Tn?Xr&KhuG`~VlF$CL@tqN!N=&[Nb~jp9U<{C6,S*QW"{RwS+M^0,5~@E{`qdquChD_(Ru>0iQ7M72Q]l@w`eBE?RX[1l!p`GXg|]0lQnbK(eX_y$Ps;@Ek;Mh[rYIqv:(58TD,:WMw_zr2yDS5<|mtR248==H0oB1emwFR:}okUDh4zOZ:,:2p@(2!WW3$xnvt`iy5|S+hbg4$H%2>7Xhvl>Y+w"b$bWnk[EQPx"_t~yn<3+Q"N/]PN_xGDkTJzb[(=i2wS<2mo8n^!npLK3y6@l]@MNqhcJkqhj(ZR1{OhY]BU*3cW];o5b:Nl_/*Os;!dTdBG{{2BQY{/8VQC|I`(,0?G_4)x5/iZn?^$es;uS?|g!s{G$AzEy7>/kEEQ!o7E$O#EDecj{Kj]fwkK^;?)%"Uj9ZhqD/">R>m5%&/Ft{+{gD8rV%kzv*Di,(HtMv+Ou"Gf?+/DT(D7^;bUXMWvr|+9Z+6nx+b|S0CkAN6Zd+_8/r_S!#.q4KSw_M=aILw/*bBxS1Hq6:qD?8aj7!`/Yy%xYPd9|VA:y$.C[U:,o|*Q0buyan4=GlGzN?1Iv;JzjK9w_deJc^;*MuAh^yAAL%IU3~B@Bl7AzM)cD1qKLJRW/Gfh8.C,C^@#r+W$cQ+NEBGE3wwwbIgdotv.?"r{K&9_wdtUH+?XiewoQ"cP#1+&|4Qo3Ljzwu#a}jf?xQ<7z&G@V{ccxd;`tQ;=EP&q=2sG,JAK?3g2FE]BMaZoW;+7vp47MjQZ7AxgDy;5sSaXe<@k}@+c/i38!LDXWk$yakN_Dc1LFOv[o4O/D5(KMHuQ;=EP&^:*%34/s%g^;n{8[h]g#N7S!|J/q"{0dk_R@O}efuCt{J|/lIrI}Gz.g=aQy7MSwP?iPj+SKfEVfTG6x[(|Xp`ZeWa!1QWQe^H)MIQvKoi?ps(wkKAbI;V1cfxAYPHD?UFEnc8Fk)5&LLjXfI=i6>eFBJX`?_;Oqa7"iy71;s&FG@7`E{FY`WKe]JHC}.*,)M"wxQ?W.Q&,WEM?}=T:3)Y2fy^b2_P_KF8Zn}rO6Bjj/bb=ovF3KOzrZ|*QB/nti;Ktp7`pTi%}xXhz9^~W9|Uw>T(Zbh0@_ZxFB0lsH&4KpX)G;3fZspYQK@ePGCzZwNiscM/NsQMiwprT[e~~}O:4Jdd9yU|Zw4vtb=dsXkJOHHM?$VGXLE)&!MOGM>d)+u^xI)hK!E4{.L8},Jh4L5lNxnn97}5TAfaR$]"4nfl1jwZ_fBEy_iLaaWH7}Px$)H,i3Wj4_F<]Kp8DfH)#4hs|uC?{^*OI{seG.U`/XBl"BuX3hG9%pb,H8z1Ie9w&q)Wmr((2k]RM~v8jp#{4i<;m?c&xra3D)P|(rr^)?)cUN9nS?u1VZTE0uf$7lgjMzm:JDFu|(rQ[`06q"*[xR$@G(ts5heK@UMxJwxg9*gUPHMvu8VZ^I!v]9m1sV`$dZspeRG:~g)Y",%Le|SZ~W8h|T@4xR1*}/3w$a:khyMPt{nfMsUH>jy"3hp:$d/*92>C!1FVR7^q2eme7Ygh6wdVox<_LAPhm%.&M3uf+u%Ke>7VrxV9@awSdt!)2[8&5Jy4vEA+x4~A(_1?)z)%*jL&qI_Bc>*Rm)$ge^pI1?>XAh,tXl{>7}$mJ.UuCqM5W|P4G^vkN2PjlBbJwRZol2(H?oYD&=L/E%[lWmq8yI";$=.iU{6:1i3h.88%v9x+/z,[SgL)KV,AqU8+rTB+XVUCzidX@cu]OB_n3I:XyHPA+e:im(Ws&iP?Ui`DH*D$OM`:,^A+~j2B~0gk>2fR=j7F2R.gw:KlAT23[~{GRw(fHnTZrXJqynHJsvBXb"4D?yC8r{Ghx@`F.Tz;MUb)L`pw*Hf#L)pZLppH:IiER+Hi.n%([10SQr:y>=R;0>*>aAhBM,*Yp7ey)xxB8a6&qs>;0zGwrh1K~@CNld9B_U8_F*DI[8Uux*w!V^LfVdtF;wEN8PPkIf1UT1zTU(n0"8u+d.e,+,z~B.N9,g,cE~+Y`,^8mH.Xu)DN$!B>y9KEZm`S]9vi)GsAR_[hQ[5|oQ2qy2IsIlD2_H*RiV$/HnJD?QLBU4yGojA+%=/i)"r6P|rSR/*3g*mrkW}H>]Nkl%cmX/Q#(SxbTh9Ao:dRgb^xKJb{[9tCek=edF!2//+|_c3dIR7WRyv8YW~}7`iVj%y8;`#3F4.TDgCJKvuN[A)qWurrN!Q)4<91`la!;hO<",wPNmr)u7PXTUIk57q/VdlKAaFFXCYBK@#(dKS!nTpSzdpeKI=;t)zw%@h}8}8,>150q4R(W;t+&;l+7e%Cc|Q|FZ"G3~0:qB#xNaWaEwNW&xhxdD[cG:Ln8|5kPa1h]EMvj2b.mNT#z<(g+5=m|l"YFzth[Iq,>*04^r5AIoN89^=r7_acdR2"zHTEW/b{fL.,0hx9kUN[]sbj$2WS*My[y0uNRQVeeCa6~e%qa!.epbf=0R}+iXH/._r>RM%yF5@Z40E$skf/K4G5N4TpoM7DaGOAusI%QAQ?_Z(Dlff=|40?CSsnNk=I[M=8#kG/m"b1<"W))KL``+L};jCo5JucUC:m{z%Fp24D%Lc_Zl:8L9pGs?&?$Lh["$_|*_U+lNz(0L?EehP^mZBXm(NT|RHE#;?<5YZ^P"/!:kiMQOT!5k)v7W#c}r/oDUv?N!GH8q!>Vi783Kf#|@s/u=:o3}IO)D;J{Q=/WzQg?j>CVz7}h8(uIiw=C^_n.Wk0Aub;/R`O`#C.L".UVclJ29iXs|/NmyAC+?W3lD_:jD5q*_eD.J};z$;/OdA{siT!zVw0M<,UjqeGseZX3qD^]=V&VZGzKcO.wB$FN_$)_w|oTR;`pS/y_m&J.E(54My_D!{|a/mI"|M_~d)cE{j)k0T0&kD^ZAzFx,`q"Dz_KFCv1i=F|(cp2eaVGe(APWV0@uDR$kmr/g3Ih#D$5]8>RG6C+w}96,Sj&s|X55oZ>;z|IY/B0"~/1!/o+Fyd{uf~uWZaLHI&5w{hHmr*$*!e@255wx(_(KWd>4s/M?he243?xyw8dHQWHrnT`c;Xb0@`?`AH)[qyx2pA3BcSrdgz)[."ce=(eD{|Uu(X+TrBloRVfQa~f{(&72?)TKp/^y1OitWfO(d9@JkeC8@JKoMr1byiq[lF_+J#eKOWwhF1}BhN7pq167q/U>g^}}?xrvJs9H?8v1%1ZlfZ,GB)NfEavD_M]Nz?W^6x?oVR#wZLtN%,A6vD6(c4sM!:PPU0v4,TEHowy++OLHcR6Y|"`X8HAY2n3RC6_Q%zJ04Y"2LH~C#uDi5|%(;,PYe4cg!?}rUl0.UA:%j)l19{;9`.8s!Rw@&?#P*[c(|L6Gm`{|TtsBF8;qyDdUm%TRVeR/I"Zy8&:j%}iEnwtuKtL*QFJ!9v$K!5vMLoi*EXIBNIym|uH5#*>Y`5>oiSSAAAzbCAw4VBxDIH"Q,1CuK=vF@AtB:?RD2z1N#OUjhx.LAAAAAAAAAAAATX(4"9pwaN.%^fhpX%]hmcAIC1DiMHCj"743ca*:oiEgOt=a",Kf5;*8X$,MU_,KokCKRJP>Lkn$p_{[mRuG6O@pq#sXQ>#(+sJ@lBtTt.1NC8,fiYn(3t5F`C|]2gb.h>`3@.^#.N^#XM5T87o]FUiEX4EOfUQox^7d=ydZ5{e>);w#>:mmKrbx2zMGwean2V:kUDY``ma*Z1TM)5.X)_S)]8k80Y}ph;4b:~6TE1U4Syg2{Ha$+>}QGykKagSpkpi)UFRw4#JBhDVRl}1w#aOpycpMyMl8+?m.^.xzuM2Kz>{dq)arNb1sIO8q)i_BB)K#XTTL7su^DV1IYJ|BMnZG4Uj^)|y_{]dz@DJ+uxAk5rS.ODr^+lhBXS6>9N#SoG;8%zhA;aZ8"Rt]:Nlp7&,$v[Nj>R2J=(K`8d?ey{F2SR+SX2U=/f2]i>2Y+jhR/:wTVRrvHE+H=`(|}+d&tOK!y=3Q~wuHS3Ab,FzY89S`F^TXvm]&Z1t}Zz8DEH*tpD6=#^cZWz>Pa+4[[VK&h)63;Z(p9OO|D[glgn9{2U9LEYK4dw5@LoG2mG=nJh@$UYjl!fjyFh,X>!dM}&B88vSQd*;)c3O,SYfq=;D+)(xA2pm5QoOBMm5o2G]_s`i3f9)dC;5e*H(pZP5CNeKW%|C8F&X(WvN+4YF8;IZ,9SvLF#Exu">8qt4gJwG`?Lyf`"0ciXR{d7tqcuRJ*%>u3j|)XoXglXxO!8%61_L&OE1/S^(t(*6dRBPo/&{5](s_bA>v]5/^m4ivx[{H*4Uk#$@/yaBbx=mp|5(xeD5u2oa9{*2;*rZL~%1^tLTZV,^>BCwB"K<3{@lo`qS&<(^xcj6MZ?xVbSj:3J8^sE$6{NG@(.}[_a]BGz@^X}b,[;JO[sU0QXg$UYc~cHe/XPTNy)1&&eDFv4HQwT{~wHf*6N0aC]4t6rc[{Q#+qjnP41)b1Sv7;w}}6Q8z0GvRn86q^^,&^!@;lzH8Q^d=AGz*?i{x;!Ktd[SB&f3]_jNP0x2%BeELidNJig6P0ezE>G~7Ek$v}[gF,)kR,Tg.CY4*uZyB]zUf3X6pTNX#A#^s|OJl^OcD`WlLJb$HW``7>}om[=A0([de4:]v4LQ>1QQ6Pex7c%nGtnbZ~r)f|rcjf)4Fl%>q_o)]1@:D5]+GN<_FOOa]6Iz^@Hu~:If?>j=:>erOyz1AhdliWTbGWvw3+R.WE%b[HkqP,TgP!SzLy)iXK8l`?Fa*2T`qf=r/ayj0?m!.N3R5Vvi!IZQ2R_74{mP9p7gcuL~4^hXE0kSPIYBeIo@Sa@i*prOh|M0.L85R!_c?C~56jk&2ba]D)DkgE96l%+V57Hr,8"M+I{,YR4Foa>vl{j{c"~|tzv_jotuY{JJ*1CxFT>!)Drv*jl%Z2ulkV,M]~fVhgSg0O+QQv*8cnG2d1(7u[_HyIo2Di?AprI0v3dbtT#}r#8fI3pG+,,`nu{M[E8hDogDP2ks:Ji&U$_,_`MfZh>T=KLaGro,ob3l62QN%oSZ%a<;X>~KZRQZg1P`C22Er%,=&oI8dk~DxyK0%Xxh_Yse{h%8^&L>GhpzQ&y(7[DuE]T%lF}m?383Fb%!X7hD,YNC`tgyds~>epBM]Ih(6{p05|CT#G^IK4:txn|FOI$*t(.%6Vfs@g#a]UoX)tQ*P::2]1FG%Mu|z.Wc3X[~.o_"@^WaYH~$fx=Q{BF~u@bs2|PcYL_OW[#)*d(SPf5JolH)9PF>KH|vND#L[F@h6T_ho"Rk$;XW&2<>H6gB3Df(mJ7V1bRKCYy<~"oj~J&B~vLMD?tp/rY{ydQWzNA;?C)Cb4h;N/BG~zF#|_4va.5&:e@84RHZS36iWhNk!9[?E2?^;3Q4BVLn{t$OG/*?|am|ZC^/sK|`UF$YZZ6~YAHJ6lm+P{RVZG&:.}.4*6bM?5_ngpgw#M?Ch#Hf9tsL|+WSKlGEj<~rriMG5>IU;gE?={:Vz+NV4mN;oPTYGTIH8djLK.ub`fWR32$b&)y4OeZ;)Cwd1~jYS_%v>e?MNCS_^ul)DU:K@~/4uc<91kb:]a3k0_u%W:`64>GYU9EZ&sSGd9>d9:[:y&HEL_7EV2Z?"|*~+481fyFSyv@HC3*[:Z3n8+Apc;J/&jZuvwV?=S"sEsq_(V$j_VaDG^HYfaAGHqyxS?qrH}y;|T@>TF3*=8y;k:|$p>DVg0SXbOT|X;VUe?mSvn8PpzN[/Nc$7$J82[]@0l*dDYEw13/IJ.]Xv$DZ)q??Ix[J$N.L(EZ8.i`[F8WxM{O4l_ql,!]wBMM`,Mr3C!hMRvb!#=~R{^>U|avk=s|~%iV?kqp6Oq)`o~WpbIZn@EI.PpFLF91%u1G??>h6?/x`BaqqDRu6aecZ+j;EB{XrROA~c8&Sv$~z;&@JiQwV37*vH5[z!=OY%dwK?#{`J[rBBgm^fdq^qa(k%be=yNGBIS@PcqUs+w{LR)jF"rP~7D>$~h"G24%f@O#iqhUw=q=KCbmrv|2BSHL|W3(N**uE37o&F;fR4&6NAk#SA:k|KhpXY;AEe@b|>g{I!s?#>^L0T(|%J2|w@kVBYu~3x7f[*3c3Y$18{#n.3Y7i8?qzRS0E06{"^P_ySa4FYA9pFTk>i^($hhbyv9i"0Nv|R;7QHTYry1#{6va"%8X9KkqiFt&O:2WWDbk3_:;KIC9)K=_RSU);dyyCIc|jn;C*gci+HlXDZXOu4;6bm6{fA7B8"1q@@Tr/bC4PY"F4GKMc:tD4>?RFmFGQIzq=NTDH`alXrA.$U+siC*HB*,U+}cfs)p!fC&iE/[(SJtcOtf]0P_zDB7B7V;>nG.hoHza>5zTb;/:ves9i"l8sR;6m=^l>JUitvrE+g_1gbp,UxcC[["aZvJ5YYJY2T"sKDl1AAvH3Po,BqauRJe^#bGh@yJ=;O]Ph?!@,3;`fFV+}|R^j}]2Q{2oGI;Brzw,WOEapPd{>U1&Y1W?x[3Meajs.;{&Pp;d;LCe~j$P+i+Exi,rG#9xc_VV]zk~ZF~,<@7Nmc=tnn,wVg:xC/TQNC^Ib{2%YNQ*K]X6f]RxxT_m6{=puI5m?tefDCvz.av+nJ{J4QE)^Wu9B=]B2x<<4Z)+m>3+sotqWF&WE#|7()ccTtv#uT#qh/)cW~GlRA4w/vC!>>^aw}Vj+XdytLlnf?XY&v,*YzZE)7j|.pZ8D7IJ5?tKF%HX:Y#y75:,q<:tSu9v5*y8pHzn|p@O#_a$:$0gX09nnu"rWE+Fm~~O"VUZt5ZlvzG|oK%S34As?wb@^]{,`T{yDy*ZB6.L7iVivPueqy_bp)$egf+?jABSyH&Q&Qvn5^D]E2EFa^PHc;p8=i%!Wp*tx:7]h$_[VfS``HgsJER&6yzu^4E,*)j,*2A&TI,?1"R(2v4D,^UkJhtk%9+$]lEsM9v&ey3o/7o225pm,Rz^@lAe0r@l,A22VAn27ZqFHAuL}FBR0!/:N,jAwCcSj!}vD4yh~eD793gwg;D,}B:%Vv@NuL.e>`/amvBKIF"*{D_$UQX(7%e06e`OA45JyZ[7y,iavprq9+njHyRF>M$!55TuVl2qY"Yq?LdW"1[0$V![8ThrR3$l.Lwq|8{3g4w>3v2u4.FU;iavja^ndTDV*B#<$d>jzWdyiEUgFy0&.bJ<_mCM&F%O7Vp87j,1NZIUdMTh[I4Q382zhlU}JQ6=V;n:>#yT<5yvwX5sI:e?@>40RZfz(sVQH<=HV1qJmZ0H;`T.4HWo?iqasN"yvQ&`@Rb}t4vJ94M9~Zj[<{ogF:B?,K(_(/T6d6!TTn_xK!ba@vNA+rHSv{>3Hi*xTsI,r^GQBmubGmoP;%6dRk$V[Vf#^9L.qSN~3]hv3C}n=mnh*To2|mg$y[%0n8gJ4voP2NIEu.{`RCR(JLD{XAJsg0f]p#8tTcLjaRcJM/C!)zFZSx1lQvD1~!)Yn1Jn)nzJHL?Tm]UY6{z{.MY<.CW#$e;%$WF9%&q1yD3i4u^Egb&4nFdcX`s*d+8#E9u>|aukfq^d1LRcIi7x;n%b9*5M3&UaX)=lRL&/trkx*t#oa.;K=|K8i:!}SufuXW>UfIa@Xr:yseaa[/|vM#%[26k3gt^cGcUs&#sdR5OgmF9j7GL]V^^Vv;`E}h>n1:1C8t4p$Tp4JaRt`5nE#X8^x$Q^#0z=nTo#RUmK+O7b,6~;UJ=c+"^w_:2wU!f^_m!a[K8({vv%C6GfnZAF*M2uT^N%fAE$`h?8)>(Q}Fo7f[uzk7G$]qWmGd|DKphI(5[[Kdd)e+[5#jk}FM0kz)Bp<:=A?z%k}1>U_b[N/&9tz=5GFW,6niuS|dR4moJP?Jo1.@!L6aqm")r&CTu)1fOzHxx{IUn,%T*=yL4}cs/ngM!::cT.@K$kq>C(;,XtJ;bVV`FR?#xMOy(t[k;iqzMv^(w])q<[Ei1{Wp.cit>@Pi1vERa9`iBdj/K8a3;as=uv^x%}H5DCq"HUQ3|E#5FSicQI*#C!_{l%[rTs$V@2;"52D950_A$ty:g|2{l:>IZAux77BJ!>OOIlXgLypNdew]%>p7f~M+%6Z4_5fH|HF_k8Xr$8a/0px>/Aet!8C<431$a@]tl$TZ/R]Z%Yf1oF`]Na!6,;J/mBGkT++e19^sSs[(N^t2)LHQE.4Efg=~;dfl76Ovv~r&M(.efTzDV6([qhq%N:s7I0E#.)lbjn/:3On$+h$f"]S=/tV@RombW(PC|D_x2Tr0)t(A@n.Gl&+m7(TL]jrb8NV1/4h@TDhS@y7{R+vKE#T7TOhp|M;Z*&6D*c084SH#7TQVR}y.0L{)]AK|>yTrbff<%Mea}12^)NTIY;7/pJM6)s@dU;ZdTt?ZuF@8(S$ry%/EL|=Iv3DE&s.ax?$UfWAy#SH7P"hFs{M/tPBR]l_8Hl7.GY#81@6wiS3er7h;5:l[3?81]k;1|xmOEELbiw>YJ0j(zYjs*?W&)3"|fhhQ+56q<8h}gvH2i(8=)%Td.b%j=n~[L[bO0#*>wkPrvuy$mvRRV._2Kw+AX3u8IXp{teGjtjh`:W+DCz$7Dw]5=b*G/Ubp~+2?>v8Gcn^[&jyowv_8YKrILssBq,dkb:Y?Po*,WGlXxtNOYCztOzcWBa*BSY;Ljf)>NG:N.;q[j!i(.aCfw,1&rxELP(:>U7}p3AswR9}U*c2u?92@(GiDI?:^&AN8}LofFLh@,J0hcl=}W;Qx=x_$Ld>C_}@rI8Y9te5K}Z#+SfNYq1,wHw3?e{H&Y/_FH&vn}^0zt~9r3|E[[gE|~K;]:c#V7!fr!}bzTNT|&na1}dvs"zfiHn>_g7.gUSHeZk414xZ#,wrK[#*m:{Tf2@PMb_cLW`h9uW!V010OcS:oaY}=~9KF.h;LreIb~4ZOGFgj9GE/8("}ff{_Yf.Y.H?bSKPg]wQH|gD_sC0*5M)0PjFW:71d^N`hpjI/$l3}:VIU&0W_8.t4x_xFT*;W0D)Us0^!Tzd*Rt)IEhFZP6TcaOJA$wE"ER3qCs75AUXD&[^^)c]Tw2Zfn!%m;+n#2Q~0].nUp}[>~b3EVtb|m!p6u8rmJ^9X2J=NZk]]F1,Aorj0JrL~~o]mOUeuTr]j6.b;uQ1Ako(srMzX3BO/=:^}QeNXg?3ZNS)n*o=jT18nBV4W8DSi}UJi4,xq*0vRso:T=%2=K=08K5va?#x4q50XCDg{j2vGb~gf>mTQYeZ2T!j8|dId_Qs6|B;C9a>+]&3x7xYUQN>3hsdTS&EY^Zt9h}HBB#gRd#CT:i!!"|SKBvA#Vyr8(Y>u[.FO},.l`(:*wv8j:?dGqg0Z?t$u1bdf17H<[4[,6%}9TQQU79=DM[~8{/am<6>B/SrzeD_!%^G8cL#hZ;Auq|&mIn*F>m:LGan[COyKhDal%NG4D3WB{%r|*28E?Bt!wC6_aXl21E@xOD)y"A?5op0~3^Y0B"zOd!DlaVvFWG6h`rgck#,agml|r#_)pT<#UGXFd8)0TF=_^2dcGRhI7A4d%Ow{RIPq&KM5"8Qv*kkJF(dbj@NZAq:?(Dd%^!4(lv{8oyaHpJ^V030)=5b%ZNf3Fm+=rg8fs_6q?0}mlmUkAWMMsK}hBd)^u|J)|PT5ZvYV{fnI!];6t^]u9yzoXQH4Q_lv8Q.K3*wC;d0NZZGP&$nMX8g?ux}5S<,/1$b>Q42Lwipk=,1@p:b/r%sg*1=>3zt)`pi]rM;Zt*A>aK2IbYU$)Hp%D*k/wMgIkp|l5e|pY9C2Wd}1s|6:#e;yGVL]OauU_gk9"vsK|Kxck~8kX*|arAp6`aok%o3NZz=uhTc@=69.*H6[MT/6"fn:yHNQ6SP/J_{kX]Pl~&mJ0{q)X`ue}BOVOH4TVMLoaMcF&{^)@;[ryT}H${_XeTB;|inxZIGuM^ZOK^Uce`Z!Z#Kg(ftxW/joxf?uUE*d<~_n;(!`e$q;o2Y;[TGO5@yl=`z@tNx0kHV`>OwkGm?>wmNoh>1$wzPXvuLq+}`#C`xt}T1&NDcb:R@cOV)zzUvqJ0nRTJa0{te=Q1bd98c7YiAhy&,6vF^BeHO`17~T=l}yx~HE79j:D|oPN2`,CW6ohaQk)fc{=n^5!qMo$.@sVX{O$^}}eo:&TJ1w=Ul!Q8ZXzNLQ%+vmli&bxf~uPC~[qWDj)liKfm`Hm;"kWNh%=:`kv+Zk=L/)E"b:R,XJFc&!V)7UkK[v"2"/Q[%`eIL+6qXMcjZ&f.Kz=TWPI8WYxZk%LE+4+w+eLl]<]ECl6tC+F^K&D^C%k((Id2BaFQH>eKA44VJ{L;Vt]$CbSj?Id;pxt?V^3Z9&B;S/#tl"5epC4WjRVVEVNnxS!c#eu(&~()X*^uVTQ`4*SgCm9/1G.C[D._custF!z!Q"jLM14=hnL3mETNQ"IdOi7E7j"yMZ^o4^X:o3;MVTKZ@[@`!od_=a$%p~Z*bl?aRg|P//?A+1_~)qj9{dcE1$og>^w3I$354s)ksWjV@jU"o6+&h(q$(~q^S3tW770Mzk4u(|QzNSB7>@4;3tfEWbk[hGp5ed*Wul5@5C{FD65>|7huh?282w.G{e&pBA&}k8bC1d?mziR?5X1@0kLcYU@3+mVvV48?C]q_JYw5yApGQ13,%5ZM^_o5*ye!q5B%yzpJIQ74SdPLdrEpxFFRNMt=FZGcqRF#~[+N[GEG(y<$Mior|kB^+W^e>;Qp#PWm9pOm2AFiV{c0;^=|T5F8/3"u~2htcKS*a2ICWTDq/]{U_2:wf*l%%vl+!c;XkN07Z3)`z>OBv+6ypWYSg@Rj9_j8oZSS}U>bJLGd9JpIzap8wybQ)Yl[U7]$"(V;X7bgCgJsojmb(H3fSz~d6r|G4$:+}O2>3iv1sz#Q@[e&I)CVW+X%/c$;g_#]UaA1{!~}GNs5H?t24{jW&Kbx3XxXG_z_yQ).3|1^L3G!dfKZtYXgKRIWiE"x|lDxUHj;PZ[pS5^%h>~+/pwdIzemq=X5oY8$;sG:s:jx9NA!t>fOr]kNAkq2xgE*pRSLQs=Ji4{S)[$_3:92wbVdbuIBf;l&4w"gkc=NPl.*L&{R}q9)OF($gMquk+X%@pBTv4|4,YiA0E74D+xHSVxMbQ$2awlAJ$f)ok@gt51q6?n@Lr+vQueMClMT)/]fXxFTKCCQuyQ]BA*pEk,4G[BrGBa2<4Qg9$ISXi@3dZD`ajrnMPos_?UYE?GOuhB$Z3h:>EG|9/}@i~kv4xd"S)>j|"upsIb3nzb66vL==~8|Y{heIQ>B;oBv8H7*D|DVN2A!FNIk[l0RYX3.q)N+Oz%M,o,h=rqr"ctd6FA.!p~w`yx6RMvtCK1uKTM(g|2j}/2[jEo0Wb&ivwwGK0?&Yb/<,8qslh>Fq0Os#DXF123=8)3vF2BN_C"iQEpvkvHO1}d6Z2!uE4J"8SZQ@kNgbV}VhDb&Jy&Ne=8Y*XH!`z1Vg@St;U^{@YTdz8m{&w;7Irip`w6t4G,[G@e~,?P@rSdlf,Ui&tG"U;>mHXH!7d4}]8mcEqX&J~XI3<6KT|Q8*@ycGy!"OEG+KJlFxGEy8*nO^&fJW$fK=QK<;OROP4|_84$k0`Q$FK5S_,"+F|1,y]~G,,"2=Qwgm3;b$gz2k:W}>c)Y^|RgFW/=#}H^u)1_|[_;V{i8#oiwPJ#QD.x+k1RYXAQoJQKR,fAUPhw8TlCNCCITLyTeNne+{$#<:u%uFRzvw4=xDP}l]Pp[Dio)0]x$s5>r6Uh"l$(plvSrnN0y2ew@&9<8(q.+sxVcqW];5F?!Isxm9$lD0>ApNDh7Hl(JTu{BSFcBU6qM&@/vbQJdL2yUa*w,c+XxjLs12%f[j6QZc{u}U5b1@uGuG?aM{KBx0R|.(}J?v:Q0_v0x#d4Xth`nZsi2=+UT}MK=O!l?XX2_jm2"l`DFjX#AP^##%2)@TgnaM~r&OTm{s{`C.Z`FL5>6GTo5>[84SWZq3.*#K5Ba_DWhaP[mXR[]s.5MpSJgZJRTQD!O31^!AIs3bm2T>~.)[j_LaU!:T4q)mF6IygDOOc=e98hh@pHXfA5/npZYqb*.X(tZWhatK!U~4w&cq6Sky"%56w3}ssu_ja8y+y9Ff?0JM7g/2M|C^ZELxN,4M6H+mT[u~dDfu6H5C<7V}?Ss;kW|?p6#_GHv.OV/zI((44Jbj=b(eEYbQ)Oo0JH#71J1zujT^~QoKT0v4)H)OSB;evuU{@dU#S39hjnzS?4`K([&;7igB}*hy(tqG2|^0pzmFtyaRjqb#vjUW0FKAucsNlM7ih+X4$s]&p,1s.Ja3,jfFm?g7AMI"b53zFk#PUu:qj#n"0BDDimWKtJM;>cqY:/B@Y"iT+iHv]/}W}08Q[xsMElS;ym"{R`$T>B%B$ks1Hgx/?ut:N}~t8V[e}S(@x040jVi4125UpWJ[XM*%>iIM7O#c6^Ly&rz[S/LFl[b@8)+wGX+i`)k;eg?BA8gMClP^xmnE9:ddaB%s*~MLB0F@VpRC_He%OgC(wQ^h!GG@I=CX_XE*SLruV2EWE)BpYlEcH1WS?iOS5?Mt}vh{f|d(_FH+%:KTOdwZ;$+4+^ZXx(jLTzlDu?mQq_VS4H3(~9qW:si|fJ)xUhk}LfbL1o,vZP!?`)H?4@?H_Q4bW7Yd84fd1aLF)>r7G+xMaU?}CZyCp&tAO]0a%t*K)_hS,3,f>S;F{rv;GsJynH6yLvxA[u2sJa#xKKGSHeVNYy`xtJgQD0Jif7)cW`Fslg9h#IBTL6mElnL|iuk>(_eg)qp!TVZ{)!v2Oq_mby+_^TnGm*!$Cnv9iU+;,t8ar_B*FcR;F+xtLda}>8GFDu2ld#{R(T>;`z``c=[E:@HC"*pnlB6XIzhG0?EnNEEQI2)9v4/{B?qc`+:^b^QW$UwuKZP?dEy:zvK`/k1}wm8LA7E0PKlm!9,*vQ"GN#}x(%&/w#!3r;!SYJ=;.Bm5uO"=j+CegoR_%yh,8V1j3fwswrS(t$z:)u*qkUqi7&^&?8rwa*B/Xj%GrYru>sOl*SoqcDA*R$UUOSjyZT!<_R}Ms#n4uo|~,)LKEIz/^XnJ[>`5}<7G&1nMbD1oShzTw%TC#q]a@:x88h(S=[_4K(gg/;bp|_sW@~LBhf58w;kwWpPTywS.D(xtPYXrSU$:/cznup,&$_K%!M2WB$)Lr~kcxeui1G]8F;#U*NUccdR08aJOdn0$?q:(!MFk8Z}/kM;v?_)+)]Em"Mk&!7#AETt6cG!=+fgluaio$!nFQA@)~xiPSuoX8$;bMjdk2Pp%^#m/&ndA4Nl)lxrV|,968Y>F;SMmh~j:ii=9L(5v@8YfM<#4KtotEYywzQ$4nIEx[wV/[ic#TRFEZX)p_6)#kbRSOK,w=_4k.&nJQaR^aPRB%GV~[!2RJ{P`8;GAd::~gWX18j$?Q9zb$N~P||qZ~%t[x?YD<&g/7W/:}{T"3Eisk23hD&_^`GTM.5}k{F7u+*0;S9g#nNWoLY~j$FgU60u|I#oov_,9wDXPI2t8~Cfp#WO*w!v2&)J.d]LLM@~4i(a}uRAZfD`:ONzrn8$:~B9>1)+j^xfJ9K2xM[cfHw/"U5=GG5YNw]JZ^o2%8*Dm}a[Se28ADu5x=tCDFqcPx70=R:EUzah"QN?4UwiW2UjqG%@8hgo4Lw]xoQ1BVmb3O+fVQWz7tcUJ30{/Dc%7(0YnmSg0M?K(D;/g<0R0]!(YxNx6fQw2.47.:}Lz$2[12kU:rxed6n1e4&}=DT;aK7rK50w,N^nf[}``:{CSwZ2eq2zaX.&e|p23n#g#Ls%T5(,Gw3wR9=Pn;:@{Od5jet%&F:nVqPCtVh)`%y#zxJ~Mc3W)vuvtd,e2l"|Cxa*)kk"iJR.Bk(#eB3vs?tTEkZ%Lb9lul/pYC/LiiWoCD[}l+qXkNai*By;zW?QJ>I:X<#r@^<.USEUcK1V2eG3&/w;|yv3^vwo]U}id}h9Ki+W,hUDY1GPpN%Gj+*o==Eqq]5fk{JZq=nP&YrC&@EUp0q)|vf1?KS>>)2_8IM%Vx(YSpjkeH=k9ojGf#2|r#ELn1Ccm8zA~LK[uiLH.giKsW420jmnir;tbN`,@(b3;Lee:r,$Lx1UIcbC;#>8jJ^2RM~rH!k7(G)_gB=Mc(xrxlI.l180(.[HOb$hyqMW`@SqOqDV~kRzqxumuMWhO<._/%ldU`1G^=]y`RgwxL.8YFL_n6NQb>RY5(&{UdfDx%=ipc#.%aG/|,31,@N?k]Gw8Eu<^TvT[jJzVP;@ouCg7cod3^6O5S.XS@j*|zXN4VK)%U];L<3hRM;m~D}>sdv=vf{|/3rSV7wYccP24r2XrSLfK=(xDB/JrqqA.97b[HN>D,K`nE%?4o[P"]E:+7[MIs@CSGuYZiGiTgUbdbfCUX8F2?h*+FjZD_%Fw:[eU%U)99AT_GH5u~zkXn.6R%}a(O26`^NFTAwJdLWQvL0S"6xoIe7dYEWo9f?;K#u8>w#(ab%p+*T;$ZVc(Cmk40Dkq+ruh%6V(KL`fd_p]]z~Cso]7Ez^;KDH%6yH+FVz[(}!wu3L(BK8d~3Q0++pEaT/}TDhP92l73:lsuE6v|<{1]co4nP=2,Wtkou(XUEOqJ.QA>PH+Z%yPxC@sGV&%D/epP|)LZ#O0dL"&*g{O!Pi&qT4ZK=pd(5VrSj0aciPis$B?hp5uE[FXjmk:y_(,"8m`{.mO[^1jR=hTx#Sm+/js{>tOF#+tOhKnHl%zNYY}kwi;X=QkdhxnCWM{ifqX9mNph];Qq%f2QEL9dGvyyQ^H[oC&6Y}026S[`L4xhPS4ofWcCGf7CO20zjwYfiJDE2A~P&XF_9HR!$2Vv7gTjU?4ug+&4dgasq+3{:ylnxoLHr+ni)?b9!9M&{F?qT%]GL,4^rg+%K_8OK?SN7}n8IBJ<]p/mfm=DS1.;hh6S*X4j|BJE*95pw+h@Spj%{O+m,|F)}R5Xc8{Xp?8>s/]O1GjqVa(oj|p4[%vaRL;hd=b9l/ERnV&^h|LO4Po6L0q(23+YBCm]Yd(vXg*(=diYs;O]p!hZ?{FgE+N%DtLn*M|p#@(x%vUG(zsN_#zPh:rqYa9[lAWY4?qu[9Q>$oz8^jZ!OiuqCl@.[rL>Y+^4lVNkKNyc=`ouI+~?G:mZDIf}HnXs]3UXZiG~)N>OE$|T)/[Ax^&J`Qofdd3VCMuoV!OEGH)@u=(n%Ibnuo%:*(k6X3gqhJlb90LB9N2KB0z3}o0|/Zwbj@{FhgW!9<&Q.NSA;c9W7w(nAg6?~ZI*yA_|5UmGQV5$t4`hZ=Jt99nE$n)GO&N*}5a*Pe|t7=qUE._[P~>>h]Q4|YkM;Cl$$D~n)8q`e)R`lEyGKXhtu:2@>C]zMX?,/LD~Zw}5`Jp1^EI9`j43Qb)9ic!sDrYV56A@kDR_!fMKm@?;rjvN:+5Tyi*2g2%QIJN?X`hrS7h[Yjpd1<.pNf`I[;jdr66D+Pj^j9*ThS<=[Y`8JR~{{?s?oC|OCt!5+Y?@VXEq[Ilh7C+r}7QJ1*o<]YNH_prE].!FOi~zdY}Ub$SIeN91^unY"}/W$Yn)e+Jp@5:)@/&Ksb"kv>L5yteUJ`RJ2E:OXlA?]{B(^|Kjh9x8?4R1%b6}[nT8cc|LAcFT7wLvQbAuZvcNeh^s|=WtP:+K7.ieapwv,Ge]F7i>i*Vv%dBA]$rqoGX$=Q%(6^=^KMRiy2HI6rg;NzOj]NVls=<}&sz2aE_A{[n];y:j1QQE3H:NR=s4hn3qzGW2{m7oCoUIRFj]ifz6oHrZT1aPu7+u,5Q>&g%qNe7wX_pn%$~jNM5sfCe*`_Q?rM#Hl~.xXi&[_T!$XE&DITtf;b>@s=jKD$p!adU/U!Q)7a*Y4gV~:M/*ROC.M($^Ull=mBt+1(UtSCO8%Q6rInqQezWJlli{*4o`CE[I"Sv8_Ku9FKgji%m=8pE]Q:X*pZRE+aCby*7>BR!0;Whe_rk|J1Ims2"eNB5[+9J^*Gl/Dv]hD{Cvg$1yb`?xWz=`5oh}MuQ0x540?Ja7E{M@68`26iWU8}ERuEhzH,3$t;kq$}y?@R[#gM+dC)b3/V[Y}l]bKpBx+e%D[A>*4`JiOKu~Cfa449^P])*z5py;;?*ZZ:`O)R_^{R,gKiG]BgGSu,ReIh3,uDbAvfTWAFuM!y_I24@e58Dj,PKcd|w;~b];M:(w%q8i@nW31K5&YHd7lWWtqcwoF.=iF|_O;+B#HYi@:VzxC&hDphS7v#4PRU68I;pGiJl,zto|IBo<(g@qml1fO:+s#gx&ULazq}T9g)}(?^:<[Oasb1yth@s`8cT"~J>lA`Xd4yYw2Iofm"UWCV9>LJ+ZJqN"]ay=%_}Mg}r{DZD_3=kvZ]#1U))AO(v%uE/XSqc5a/&<,V%_hI~;^eC7cddyarW,!p.mW1<3I;@!wTf}qKi*/{}O/t1{`SsZX76LGVjppPjG],M.6VlIlc^P?+ssS+ZB>Mm"yHGxqf./P7oS{MPfG%=i=,I7pbO2:T;*{,TzSy?Yp&_>Q|LSv1%cN0}EmtY;JZ0t5CGO*le`(u=z)U.Tp$.L4mcKZw6F]$X}H:GB&%DJc=55xeC+6U,fByFKlbu+GE!4,U(B97>Z{,"c/BKOZ?.WAU^ut{R==R6ntl9"R."GjlN&DDk}bb&o@KU0/xaR8!siN;*7mNI{t.f>p%U}#uirk6MGDEtR<5_>[*E+T_[(;&eB)hf@_<.%9Z1JWiJe_#?^n]^0b5m)3is@]$CF7S[4*:>o/~9E:]v,Cj`kEz:Jek9>O~QUM=_:iE<9T/6`73F#|npltp=eUgQ262`XIjaHGRBRfP+yBIfQQuMW`5WXdYF(fsu@G*W!{fX^^gW_k{N2JHoiqP<0DMG,csM6HhY2A%kGXF]bVDZjxP]N5]`G=6Wefwv4xk(BJ9BvGM#o+LxMJsfk*^]rWXM[#g#ra#hLYU@`[6l]kp[sA]5jE^*$Npco%8#Ky"5Ul/=6:@`(Bt3TjYZcVzi[^N@/>Ta,4Lq5C4y_W.hU@3cvEaunH:0O~?q)=Mf*&&yYpN6(c6_?M5^uA~dT;DJ+{2_I~6V/F!qK5[^W?Y#WDx6GI(>J:zFa>B=DzFakG3`X[=]?i3]@VxxjC|1B(Z;`gb+?!#.D.wi9F=$@Hco=lcEEEhB|d$f+yk)G=r)@8aXFCb*0,m%B0msjz7`}_)nE#|^dyCv2?n,ywsDYJ#Z))+e!?c^*y%ZOXS@U@E@RvCP,r9z6Uc#kW$EJiA|fkunR$Ki#!{zE]mJa:]j,F@!d!>rF?p,p|)~q9K/Q&X!7vdg9U{@m[HP^.Tf]V/_]n#cLh(>FKyHr{5$eVWEc}Mvwhc(3UixWPdQuMIP3<^S/Ir8T1Dp@WRc>A/6ML"0~fc0WXr{O_}KlXAnRk`&g;FDW^}y6Ei{(LsaU*oRLNcuJ6K@e}NGtSD=v`55Jj6@ss_d&|+uxEUT6^k_)%^<:TLt|+f&f?arRu>r4q%$7qqAO:n)&yD=E`aLUEiR?*WC7&O0.Q`*J2&pG2uV2ptHRcnH@{>E[iF`eoNpy]+#kE*x!&8h8"];L_(W}n8cn"LJ!~!%:JI;_F9{XlRZ?9OPg1.V/8R7%]]{m%C/:9"}E5+14ky(a9oBa,x#{^$pOY}=&C8&XD3[acgvF#JOdq[o9/qMJqM{O[`hT[_Sb79.X*d=7$H1|$5A7wDW9oJ2}&"A~!&T(G6!~55E_DMdLFUUFK?*FE,!DYT80N!p8gK[yZA36I,W1WJ".[Hi<`cegfQ+PFU`j8ubQhzL4I)H|>8^jsE}i`Z+&:d8}aV<~w]ikj>h,l[M2J_Tu:{:|k{w:U1sDY4kb1r5Fs.bBn"WSnx:H=HHfS7*)5m&PS2(/_E6]/Ai1g0nu,Klh]C)pP2NkHQdm4y4nT5<0o=kf7)%Vo2:ad>McLuC?x[~gH+q3z(U,5Qw%Vc{`XnSx_J4S/8ns,LW)X9t=t>IgH4MCBM~`^viBT12MIiW~PdPUXTSK`et//h%gMKI.6tNC;?Te[M6"Qrscb*"uZnb!CZNS1:4bcexYI/SDp`9FUY7Eg@{vMP]Jbl1+O`}?au6<*~qKY@B|2!&s(jHN}}UJ~}Pu"8`+}f==0Pqf,BxhaL`r~FRK>(h%gke)2Z_]Dd8s}nHxB@A}!ZLW8s(QgFgd[2>7dzl}9L^J^an1f35)yfdpQT[xlUMR@7$?EYk<5)gR]vGPe%b?1Y.@!DLRh=iYS(xA.5&n(r,ZftJc"I{FnAq4aw{~Ho>ui?cAw`SOiI^nItp;<*=06,[uY?X!hq_AS#hdb?47Sg*ot5kB5{3]2dq&Hzf>SlP)HRdgHvrg)`_;PQpu[6ubfP2y~(d+?daIhcbVd5>aLo>kCc>10N:;JDt:=!P7CD*a}Z&}l^SSO^[@AY9ivk*!ew2tRHBToHZ_,.SLv.hpPUQ1NZ/+s:]VoH]/OPc6U>c445;5Xhxt^hJrBzd{^_/IWiixpi5#):".];4D$IE[YhA/%yj572IpC/nr%v|q&S(Z{5J{LKO%K56<|}BI#J`g/aqV]t,D(*#/jUVTl:5SoOO8i"0RTr5L,~b6upAx9EqG?#x.LH[I6}tda.ID|KyB;WIV1]$Tl"#MUz$JO53"U99^zb3DJl@B}=C!|=O&!*cMP&c9&FqKs|G&EE[CFoeI/d66.Okk?mK^%~7d`y[uS2OJM#w@F9s;jP,p?`%;[m`,k/fdl)njoLJEJz3B.2tyJS;K@2ONFsi0}$}9>oAOXbT7n)m{D3R#wj$tc82W@lWhbQ|vuq+uk>v6g#+98,rZL90Kto+)Ft=C:)Y#XcIXTPjN7=[O8XLf%Q8*cj9LdC9Q]1K,t+"W:Z[I"`tJ0C8+S^M?=yCdsYs`"I;cJuxz!/mJM8CdBQo#%vCPMM;ILuH=wD^P?Q+ohq$_+AW.GOlBllHSb9~Wc1P}E}MZa)v6g1X[[D*&OEAHH#`rNC)]nb8eG=!"g<~,7Zv%^v(1#w0GO^YQp|dU"XCJzP:4*c86sWI6Jkc&ht013Bb=jME;3W"Ll}lTk?ibwzS6M}_|E~(H8l$%tB;6m|a=@1V@E=2yvFP#B,>%S?lU4eB8q6SuO&:A1}8*h4PB86?N{C"CdhpyXI]=1PjtG9aC$+Oj9HT3igexjK/9sea*xK*)@9]Nz4yG+g4IuI%]A1Ea@Mp+P.z]2Nv(Ok|D/mfM3Z#d|K&(2k.hT<<,!I?$swTVQ:m&ka&kkgrLSqq40{rE_}{#=)yjouRiQ?8=Ul*{.cc.B}!F~X~w8<_(B_p[M/+H46ZzxRD1ub]lG^meWU$zZA|.`mu^+hvoIVEP|O*Z^(?i$d*(8u@YuFmEbX|l/6_2BP^onhZB5y<{AI:nn1;O%?J;004s`LcdQY?4PhFgtJE_z}0NSn(|k~VrM|E4//tEQ%CB8>VdzQuW1m@d6L9Smbv)!h9QBwIk,@P+,$yC_XxiKhVkhn3ksRu2_Ie*|^~"z$LAbGmOD_K9=Orw(KB{SnX@T{e`@;0|=?L@iMXVr!zF0yIU~UhJC$DV(COb%AYj5ka9,SsutEi,cqu.JeH4C>1uqE7Cv)`y47ox5"PiXI3V>Akit$_:kgm*irR>#/EV!*X=_PNdsKSN9%7[_:F[8Le$C){)Hxk38q?`qWZj!o/y:R>[cYS5G^)jnU!FM86(z$y;/noM4t#W|qP&5U[1h]FO}^A_K?wQddK%*&id}NL$C7J8MnQ)Z]%.28wYF@#w8Z6rgZKPdYUEKb$Q9J[~@2.DmG.ci"tXh":*MXLK%Un#uq;h!}6,qL/P5g@j`/zT_p/7=NY*Zj:saR7"+1Mb6"8bz8k_&T{a5N@c+(Uo/59&7AKxOizZ:}z(U{NcG`%3`Rjy4yqY3$^u_OP1kH=@OA%r>S@0&U+.q3afN:=[$[nQs^I^$(ZSc9He!Dcd"jB"4QeTruThLu9ACy>UPcLY<5h$fO%%WU;rb5Xh_rx_RvE!xSGE)`8>&Sq0iX++dw`_Xiw>W/;>,xkeUJGyd%7HH%J!FEkp(yWwZvmu.]so)XdO86OVYRLEKqZ"zC2v}xt_[BOkH1+%V_6Vmc*nWvPQGt7i|jz:M4P:ZA]@4Y<|HhNVzX/H}jvHby]<3_Rj<^8TfMtoXIX9xAelFdQc"LN^1lL+8>"W.}ZkPq;^s@Dr%Q_!+<,=rq^a,[mvYciMp(y8R7r}=T?R$b]1*jy4P)2qXv.j$LKeWXeTW:_wJy3BQYz:6?P=1f:hNbFoJ,!hLU;Xq+]7%UxCB!asVO!9wc1tg#2V%n1R@WB51?wV!g}Y$~GXPqrp#6R.xPdX[P[i8~9vpL>>ubwnSGj+NH[aQ@W4&^#2ScY{z|EVhyZHjl&[OeibkZ5u*e:?}^6M/m{(:L?h{aG2$9ro/mQ=p:.k0kW%3"0H6$_9*/3w2gG:@rSUJ%8(>og@MA%+D~scH`DG(#j0&/1%]p>}FADTQT*Y~?RtO.Dokd4j+%$V<1zb4X+4i]BKenK%2S5s5.8vHH}Q3n*bg(fB2o0>8m(0?$M+fYY;MLRcU.Go:^q]TiYrChlJNA9Y{O2%NDif6JQ(4!`*u[z$=(6T&15PxbCh#mHugsB5@>;S8+Mug0nDE?!(>_2[0pLFtFlLmIzbPu:N&KG!+e(h68+E^4pYha,G|o)x)b3$5/C4Lzx+Q5l~YgeC,`.V[;;54szh~h6?0bXPn!t@YMsETx6Ju)#4,OGs,9~DqJk@U[h=)3Lly8;@evG/65e6}HCcC1W@hxU~M~K=$0uybl:WQ/RJA<#}{:?8dZ2=SR6t0QhvpJiHIZ]YzGwSX_1DK#VHO}>.5y#Y@E}0|cA7y_LyOt.xDQaOfXH68YcyrVfj^[vnL^`BXr5^f]c%`h7ViJ`cwZ4yQl*[j,o8_u=K~~Ih&iyg5<07E*n2G3K@ai#uD+>;6]^hVd]7j%Gv({ie*.ZC~:,EdHp?s~0lpe~]/%Q"!/&rVb@Uj~.SFKWR{,bM.mMGV3@AE;F"BVDDK1(*bT9*FLA]Cj+$q>`k?1u2,&N3([tujVit+dUAaodMSs$cT.S>vAAKB9zAB]k^>~M;PNIyl*/>%[VHomeAwo<8=HOv7STz$M{!VnTb=}KW>P4W2?h_mqYGg*pb0#}GZ.xa<[hBNow;fP^65v};T@36WgN"u[5V@}5d&_d4p5IUJ+5z7:AiX5HFHn0uL?+@>1JYT1WT^5Q4?y5@md63WM.4Ra,ck],E0mY1CzzdxcMGy@k=#uv*@cX6k,93$n&6ip&,fzory:B}aS@^"6[fxHnwf~C"(CARA?Zidw}I}|H#4(vWB0Df9=@9zM7n2a&@uZ4.G9&gXLgEcyl=?V&<%Ex1J}}hpo!TS7_f*h*pVM|^VLlvg7Gnz0N{e:E#b`Vr[yfv%>BytXEHAL5Th!Q0EB5xzpLBz:5_%6O+Do(WCLgbkV`|~AuKa,2xlN8`>AtE$NQePLpg#/u$%b4_LZHOrT+:B_oxRL;XN|R0yH#`qf0vTj$eayjsB`F:itsZbb9ZjfH4iJp)wdh8JyeJh8DZ*4n+W|aGK:R<+J:BBt7m.S:j?vF280A"u5%gg!4f~mq|k7)7jPidtCVMB$_"L41BC#=1`c{9Wi{8(8M^#q``R>Tk+Hep"$8(Pz[v&;02_bKmQzzw6]3$%$qq;tt^j43{jtux2Sya9Mtg+y)K+{x@R[:m|T2SP;,Qu7v,93Y9@/Aek={35%Wa=EVx>4De@ak46ROVE[8;m@6b{0QV53havAc6ES9P&O1tcP*xk(CMdhDI>66OG][GBwk;W?eoxgoVVS)^^9o+~LH^^KE*0nO0}Pl`TGG}s[4RF135:I@y!Qbc&m@MxAOx@6)&$ks:_zI1BZehlfe}0UBuD+l7kjk"y(ZuS:7ZevpGOs<):V[hl|;CX<={]E]Oy=ouYl]5IF!MIWYH>ml=u9r48w2.]S8jQ5,9ggrtN?ZW^:6_=ygoW9"5nFN{+PS]jkXe3(Nq@N_x;MUoiPlhKQ_+lge0SV}:uwm;!(K?p9V!}:snq)1OZD,+l#mO/h2[5);l}q0F3On:0:)TDPI:L!7TExA4wrgv({pFNNC/N_XI<[WJr/Mx9n[{WEpbJ_r[=@*5H`|:06O5fZh4Z3C{hODd6Rr}67eC$8=7N#ltAT;K+|u^JIOx=MyWBx_],+s7Z!/}S2Nv&O{>jo}c#BcdjXdq5aL?m5Wq{ehd/?C{ns;0=2vr/B>h~+=ci1ZPs35%ro"82>w*D][UtTWjEZc#ES#,DZi|$c(U)/vDK7|k?t=|]+n8Y*zMCcwZ)d[>PTZ(COGCCPpmy5=+3hu">s:a$FnwYN^boBMBhOVzn{$p]Q;L/tDT6uBw".]dxS"r.6H`Nnv^VsHC`?1eRl<}3+qfd]^#_#%Fk_U^(l!QVx[S~*P^x9TIrA>i>@{h[_nIfWx9qh{Qx,9VT;&#E6Qzxsl1osp#j"hs.x*@gld$Ih8RN88(~3NZjTM*o(MS6R+n;qBWS43$LlD6d4UT%thS0;/RDD<$:&f!Z+PF*6h#e5>#jB;7CdCDmjTFH2C3PZAmgL#nVqUi?`SlhqzWcw_Qu>9k=ok+sXc3yKK5hLEJ.=e/5JS#$b8nEI(Ik|J6O~Jm+tqaHW{m=Nj/8[g4qYbG~Jd@VVn$u_Jy,[WUA:V(d~};)W()MD4=N)ac7|x3hrIy_:5`gJ+>n31$"v].(5gW{z)$2OG0w1LkB`/fNt4ROjjd`#95fvz_`S|_y!~`wvb~5}*L6?l$7BQG$3I6/7|GbC9+6(s6Pf|xn&3&oorj!/ibx?,>P?*w{ESHh4~8v6qfCg@M?2Erm!f[V,REGx_,uWDpXnhJ[ZHzWKI;;vy6,M.H6c]pOp9c~M>EYU8FJ&@u$/mz!!=gV5DO*RORD:TCdXk$w].afvvpN`n[NI8;t]5#IkA!+DG^i#%71J<7?VM?fpB<1?NO1UQ0^+eq{|t{?%5LcZj&EQj}Y%~c2npfc{gn#T_W(n)S`4@`h5Imc=Ru&5hScoln,]Qx0E}P#F>dh5H?Ux?(NrG@&T$*B).I1,GRmGMIIBI4EgvE/%1&[Vl+BCBV7#)8DZ15yU%roOz5(*YElfzfzxzea}I*Gv{!Rl#E3Gqrh"yq@2R~w+=HCJ!!:&_VwX(@OvR$}`+a_D?2;+6E)ZjBRkuizD/|R{U]GgQ>)&C+E<$^Qi8gjAeM#?qYJ*2Sw_rAw3S6H,E]Qo]wk8N7=.,IC;J+J?C9]^uW,i`|>8FPW=F:~m870p~LwwjyP^$aKn^AQU?d5mXdVb$J4Vy$h|[vJY!JkkvoPUEtPT_4AZe|}n?PTQoF=f$ty:/kEg:fi0eBC+M<}(zN2<3AYNu2=hH2M&=y@{Y~L`u9NlJeIe"][R|9/wzbq#+}XOa;t.=tGa&3b.m;~=po9};)?xv"$/.uC51)B5o+3_,(En=m?%JL^GeWg5pojn0%p?j:5N]@3xy=}J(2SP{;ZZvG2rm0<5VKBY43+yS;TdtXQl5vK"^_{z`/J*2ov8URxz)A;My)c9RT|G1[0&qeD?n;Xv+0lZ~^0#H?7/=bgjMdZC`q7(QA$3^ai(jJodvv,SCm4pUipG6l5T^eT;3G:x?wh5kS}X>>5p0:%:`Z@G{G@/$Z$S;!Po*(@;27OO?#,4V=QP]V;Q~v1`{hx.Xd|5AxdYRPIYUqAK}3AdJ;|C!loH|bzHNYTn}ClpH00[CCHi:|i?+g+Ca&2M/BNiJk,(x3|X>+:}CGPu"$LkGTZX}hid7H/s=b7t?bgiLYSv1UsKLv%4>z05Trvq9b4vYE#.hqaEzzOS1kz69,Y5Ku]4x=CPpvf+PMclwBurR"_mcrpcDhaDMjLG{TOc*dbc2[{:3_1FRN=Z7vIA}|tTN[vcvKT4T]`I0dyTSDMW0T_y`qB:y"7?S4uyC(*B[[vJ%1yh6y+@VRvq&5PN3>Zb2bV@)w:Gv*Yv?y>8CZ7XPuP("H}Qwciur}KrC}x5LdoNu(>Z~+~;l^{Twa/JJ+e.DN0Pnp/SO}izqzJ;~G7RD^wv{_ozfSa~2E5>jv0RR1[,:94d`=i4N9c#`uR]JFd_c0}XYQJ,*x:Q9j<^Uk+OB0ELa]3a8Nl5r)XS$5PCn%SmdqCGU@ie2_7(X0)6(mMQ&>`H|{J?Z7R*t!:8/VWE/2W9kKuQ5^u}V3XK`?ec4=&U5YTnuwXbXLWZ1g6E&)IAJNX#dN1Z,?|m+i]9XnoC~h=TGYQKj8/^R@dqb}f.U"}Wc?rrRi=Xjc8.WkAckhHn[gl]B2T.ilze%H<#yPKwRSi,izGKFq7=r}M3Fum2rrOrwv!i^"rKprEIfGTzfwkuL!jns=E(]PxuTdzoTC2Ru,3OO?$nDy?vc]hE^KEi!(31E]X5kq0AQEHDHPj?&l3Yt]!KO:nh<{jLUUIM&NM)A7VF&M_e~RHulLFHPDH5d:7pSMIY_;cM6@{)V4=c]j;nsgk5M.con{*(v/&P~*4PwSmKLJF}wVrrxmKF20ZHrSqoKRI9|hri_tFu#Re6)8?MNiaffl}sqF.ytO9Yk$Kyic]&qYUkN0l`5mwCxn%B_>`U,{|OTipNj5f{ji[<>tph?WgJ/z+2}~Z5:I^]t82u&YlK"XJLmQ!]C|T]?O/G2Q:i4KBe4DY2`IbGHJ!S*[eX5rzv8}o^h7kMtPp[N3>I8/?nfWe(ZQR=*&0xQ%b@M(>oO0x~?0J+EdUsoJ/lSijbY9$ethJbD"WmoP@O#@bl9%).kcDL`{hceV`>!]1KkgSi5jh/Z#@YV_/^l@b4_`G;H9yki=.Dq@K#ZyH8yyx@<&zC%FNny5)3Vb0clyTr`]/AF"^RHnfsiDh)KXU:^QgvCcX"9tJN%klS6,{S*y1B[z(FXv#$GHKsSjvrpP:G1q_:$]nZ6d/{Q+dn`5$CSRkV34`dnikzKg+ixN@0SeP^k8}Lt$5>U6X7WcD+f77bxvY23P8;g#z6O7I=Q0)l|snM!@a8&IE?r@0}j46G>Ee*(6WT1lFX0`i^Xn8ad9Cy/ik6mDH(KMqo%u7f!S71@)4K(Ws[[,sRRVy+JQ87{^F!^2*,rMgeGih2k~&;^H:@x0is@ncwIjdu~GJH_2[}~aEi=r#Upif.0tgwG:XbF?~Bz}X6{&.fPgu4Wgf~m;#]@4do^XMgjRNt)|DFyhmYJFyKpr)W,r;|Kt"t)hs@t+@5&:Ztd?.P1NccBx04n6u]iXD`Y&o^4%b]oR+tjg{h/;%pUPTEfsZbB7^ICEB"~<@9ugX_U{@VO6+z|WX|q~`h^3y~oPQ*%bi"f6Yu;FV[N$hh6[:)%i)L/Z_!Qubk4,Y=CruT&,x>iMCUG!,.?Jk[Eqpmy?F4=4z87%h(r"x3^,glN"L@kS._$/)27eMaF1]]EaT)7eUVPHO`mj:8{c=0f@BD@nKb3O,RUyM?:|njZlUFH;`~QrA?M$`b)Vr^SO@;]erG5Q4Su?%BK?([Wa_`BB4WB.IKK.DOaWEheg.!.#0l?sQs#!XBsJ*}7O=>C}Rq+K0k,yTz9k9_T&j})Izzf+_#E9tlg#$YTaYQ|2B/9pqT{*k?/!jzPiQ4/$ME58=UX[.;.PG1/sweJEQ%vak(V}];{sC>MSBcS,}fuQ"<3UE$=qi[&=ws%(yN5x+]9(J0QNFVMPTN&K9iZ)q.I}u5LU9Ek|LHa$G{,VxJb:"{dhHO6*S.IE:ZkwP.K!?}I$Y$<:zlK5dguSRTZ1MM)>E]Mv>..}Vgkr:"^ax73rlHh;_;m~4G7}qu`vzZ|i(1^=s!jt|r:oNbq[0y"(kMG6D3[|H`p9MLJl_~|cA>lZBFl"ov]BtM!6NGu?f[Er/?v}J&XSy"Lsb`A/2Eutt7"_G^Uy!c%$JZ#I]6d5lo%[p8hAmJ$m)}&ek=53Iv!;jqz}vt`DV:L+Guv">BjK.rq"+f`l8G7SCtf0z_h4*XrYG8IP6BPTYz#>a^#$gaBcerUc4P.+6pTt[Fr)i5@&fcj!FV^FHN3`TDD1s[3Oq67!dbhPD$ilE;Q=&BD.Q:m=Wdo=Gd#i}Rc.AD!|B*h:ag9<8BVPn/rFHRi4X;V9d@{s$dOrYigWq`NKV?|+7sL}AuPsi~Za;=7A*pnWtF~R5H}NO4+E]Y(9K]WFI<8C}8dvuWu1rjtW8lKgWa`H_n{`[WdL1}Y3nmj~Rq0B,|sE|adg,,2|sq(=ik!ZxoJo&K)hwV+Wke0!s~;7m!h4{VE5B]S$3$z3,t;ZNuTWj&y~E$wUqqkoim^bhBF(iUmBFvqf3efTG)B<|`~e7VR%W`rront.1gh]BCF0sx1&xu8>Mp*CQ,nG&6OY"71&|mN3|0PJi,q.K^2_de/Sz36$1GQ5.r{7!e>#yv@+naDzJ<*,%zcKhB}*kMgsu8mwT7Dc0mfy}`B=UNiDj|[E3`:^*7_[.7[z(Nsn|)E~BPBb$1jowRc^Cep|W3^>>LPzcV.ETOQaI*){:z<%!PU$F.Lv1"(::S1&/TPJ]GOFH7CP8vKgx{m+R#O4G&1oH#s!g$;zaGseE%h:;@!)4{Sel8UzUB;%TU6L_##oXXMq/KOI&^_*:X5ds~jJEeKU$JGRc"Y3}"lJX%g`.YS0_kEn=ri=z{sx&|~Eq!%y5ON|jASHjc{1ZD.:KNu}f~9OM3gEKJw9fI2NQsDGQQ:uG%A/J)b^w#uf/,N|C:yksKy.e:rpxzibIP/j&V1!iGB;|JW|VU]]@A0rLi!/cGz,}u_X_k@rh(?S.h}9j>zZ8c&)Xk}"H4e3pO$e{0(%]X@/u5i]sxX)=%~dzer=Qaj68!369:U>Zb_G|~W>=X=NPQ`0F+EzX&1|s%3C|[!#~0w~w5>^hCx|VV?h*pqLU!DR`7qZ@f`^5(.;9#cZ?:]wYUOED^C)[X,Zxzt~CV.(*sdubP9[*B?oUp<+#S4z,qYIK.x)v$ZS2LO2}rQs0Y_Kq$GyYiv*(.P/w3Ssr_Jr!d;RT]fyKGS32Q^iSp2b4|>*&~(%tMRUbpeyOR9c]Q@]DRG)a$[9&092Uh+fiDABW9B6OHj7.)kkjw&/p#|DBYn8^IGLi2KKX%(f!I)m`oEaW&*KfMkz*O&@R:S?,aIQ?D6+stS$J`Z582?,>JSlTR)h8sW5(6}>zNrwL|r,}o`_yQ8OA~n;2?g!^DJhj5hKjF3qY5TPC!B/?P#9O3aBUy+T=7LzI)9V##%st?0W,CZ&mmB}C{Mpvr:mw$RXMo@}L%5>C)qrqvWDE>9x9`SyVJf"r}bXb$+>T7x_L=5R*(Ll;I66FCM/L]02@i=+vw)dRC){4/x#$YaZoI&),5;u?p`nQ*=y>c0,DE%Cf&?/SJA"O_e99oB=/7)7T~g$1@rCJ5HO|0_?}%kK2b/(P{MbEEV~&8C=q3cm^msHh]9){mjgsg?+.%_Q2g0A_njKp.@]k@pLM$;^i,kr=.j.``gP(sKu.%iQMsCeFFCTh,h,2=s?zGC+wDV!=6m(RxhM]Wy=^0$5cI]61Pr7y[;B:79E"BSvZB(%Z*PSM8s=?w[R/C>};vZ96FD_({#K@c9B2|owIWA._^UqFMet}>SrRqlQ,;9i%:bf9JlQ>Y&FF!^KG[#d;g?X2zYuuh,.8v>^2J@,IHPc?V_`N9?+=wx&Oy9Mpq68Eq]MwS43&gOyL,fkaOwa/Hp_E2H;xX#PlF:%=vT}P$bf{JZhrYS%{^S:]4E$E#u)D`+SeXW9G7^@;*#Ld?!lCP@<#FLquomEI<>za!{%{.c_@v(};^6"AI;[//&OLnB^6~WK$/7o.VICCR4dK)QWvapu~/nkSG?=U[+x%Zqq}ktpeCRs6~O,x5uZ;LGfOjD24J?>`5r{k`(&oGg~B[HbkGCI%@Zzf#MPpQxkMUGe{J[wLdP&H!]BQGym/0;j@G1cm)EdkpLK0,"|lsIB44o.MBldg.[$q=e?FF9;;V+gA~(bS$]Vn3;!zEr5uPRT#0WvyTdgLrgl4%4XZ9Pc.~rY|Q/FxbF(NomjkFyf#b23I>nWad!"Llo)F41F[W>a;f,eC0fz*pE]p6k"&_oy$eQ[R%BGWC=s)f@629i(,=Sr:f8/sqdaer1?}|~Mid_n1P@0J]cq;cJuoX9#d9ef*}>_5,GtD/x2RGZG$u?@<_m5LI1a]W559*@`@^}i)&}VtQZ=fwTLf.Wu%/Wz4vZ_k`ZwOBRl6!Fa^ruy{&=bqZ}/N5>cS:deahRC:$^Tq2.rH!cQ}q#x?6AH+N24Y054VG!n%D|^KBV+7X;+USve^,)+)uH=Rek9+xO!1=SFh]ll{Va^08K=r^cx^K%C02if@DX/n<3D{#ZktL*UpwA=N.&G+78^_j?`y!/m68mmC/n[7r&@IZ;P]&zE#+_Mdro849yU!Ie4CEcBCg?C3uLG)B9Ips=$9rAVXSXk/jg{n$h`uyc9Y,D8j/"#R(a?LFfiu.YY9HRx{Ann.uWZ]jG=N2|{wksj+X=iSF+@qCQE>pcFdy4]MS&>g#*tUFY,Xq6h7v4nzKgNgz+*=}*_5mevpCNs*;Vu3Q5rGo)h*nv)KU)h5BF{AYog1xl(Q{5&jZ3pe_5s*$;deZ!Eun`X1*t,_1{/l%<^vKz!=.w}gjSvfpC;dK=>OOA=jQH>Q)#bo}yyK`XE`>Qtf*E~z8:[%MR/2,AJfJQv]eiY9.@:HXMTFFnck>Q1u1I(wx>/vpFHp@}>s%}9.:h?pOt>A+}%*%+o.8`qNA"k/233q7AT+]ag9,K$ao^|Z*B*6(KfGPKw0uXj?}XgH:h^>Ju6r86]<]7a)hv"Dep78H;:uJ?+3:6QegjnY}DQHTHm.]~3rw>jqULLr.ub@30Wv:VPt!vq_DB3S9Jso:=5Y;Ex+9@_&3LD6t.|?v^ku}3(cbTFtfIHl4sJv02R>%*k7}Fb/5dQjZwcQrzns]AB%b4,#4HxoN]UPe7&dZSs_uc)1%`bTb"kKGHU0%m?lSl_N)j0yrYH$`]$u",on*X=~egXC#}CXe%!@rv+c6W>dkw`afu~N5XL0?#g;7s>}s`09Ak;PV`7SU?ZB`z9v>2q;,^c=bjo9~?9JPJP+[I$lDQ*zo8%.yHW&K}4H1iOE[t[tESkp#BG]^$U8e@U*3)trMQptjGYu|WU>P>p,%=3)P0d``@#INda7*lX%6$6p^lN.xgiFU4][kbBMxh]q7X01MNrWe05!:sOV8|~_{DENA$cM=45FY6*Z!]HQd:"ova2!p:X&8!W+.d?2LIMg)<#&Qx?>;9#BY9g&)Y)),9D1O1>KCC{jH;ht))#BOLqQ4r4Uyd@37boI:F1oa!3@DjVTX>s<4u=%w[5%JnB:C"L]EnI}87[[x9PLax>6=r(iK6XTuAo,@y(.3XJz[6z@[(sXZr|Yq[3#m_>=4.hHu#B[*dK8wAD_TwzX}0ZPOT8cRXhs:t7!hvJ;EkSYD|c0]{i`Mha[4])t;1vaAyarIlDjan*?9?ElPSR:1|!tRSr&rG`?P*e^bD$QGdVXj%G79BI63=VC?.|mZPu!e1OG7L=Ha{l$*4]JmJWdDg*l9U1(q>6{B@5SP%LD/[d/LhMID$WaTq/j+_LDOlI9diu((.r*Z;#@j(|KRr+3KN6:9zU.xUEnHm;D&K>4:bhiX;7aF,1!1}f1zz>,PH|VO6<&q9Lnerquz>gAa.*4:j0pEg3.@E(?ypYeg~5;W!41m5!na]EtMhTcf;=)RhEKCHKMU2:]wa`,7{Ut>Qtta*jR.SF=4$)&.$!>=^FkxB4f~I^7n}vk4~+w(XyAJ)Z}cmD_v@{<~E.0=9neVgfl/mSn8Q+(D?!RFIS.78=ax&o1R2@$lZLjY!GqRRPz4Rst|{X$g@0g@l2!PixB$wGA4KI{TdG&9#X7_ecX>2vPj++|Ou[41amul:JC{l.[Fg9+p?~!;!w44ADMBD5`7&s!v}`h4w+Dfg7Ia"pa_wfHZ+?U3?fqRfLr;d9L4LZaM7l)Fj6H&^y"I:GW^5`q%?VSgrh5BW$,RN8p_#Dx@d{Xw.B3vIO,ce1r6PICmU~K3#7YMJXVOq`9q"m&K:,R{Vn:~~)vHo*ppMrI`Fd9K_WLw(28I^oxLY`|bM][|ci,+rLwuy.KgvHOJjugrMNy^BXg]0kAGk9RdhZ~Q.DG#:(ZR!yAS4whI*8_(lEIGf)k0]ti}EO}UAsq,:1sKo$p9d}ehN0~R)Mq5%z5:9_25(Kn9in]K;HeVq@>?I2O!Ac&jhRBAIvfPwV:7Axx`g|*+IXw9B)E7vUaqM%k>d[MEpcE0wMnq{&*t8Vam6dDA2{"CcxkQFXm6y1;<}2EpH*Gv}|W,rPva?4CX$Epsn2{cveI/Q~,|P+bg!f7}&}sZ@o~Z<)@2ri6VB0rCv.uK+0"h7Q>^#VN^?6B5]y/mXlYPW1+Td:!KyEw_[wpk%oVwfx],|h01"a8>FFW|;j!H@!;msfuZJB>C,N6b&ebiO{,Z?FtIJ#gOpG#5*V>+FG#?fXSj:Rg`SSHtdTdZr~:!#]ac+.U_4$co#=8"ZSGzq!AYE"ouoYTXLalhAx9R)*RuCEu4yjN{>m0t~Pt|+vRH))H/t3,K6):yocwB{TH1X=tcAx:Qc,N&447KwGOE#v>gh"2%&3dv3E4X;Gdbhu]18r@^]Bo,CoehS2G"".h8:bc)u^mZL)Wq^R.y]fy`]p=&SoK"Y#0eX#|l4q^_Z4!,@k>MdN,Y0SQ5[W!)vJ|R98||76$q+8=(w]"l>Q>z*3mQV4*Ccf2cT4GDy}O;#4n@iuDwNYZ`KKYaG/SJC}SJn`"mkK21?+kMiF,37g<0EQE,GLTHSpA^uocfS$im`8B:#F;7AwbE!e+=JMTRmOcVhbjWU4$K,Xk^#V%aOF[gMdVhQJq`*Cj^v@KK6o`+PoN{Lt3~`}F)bl`K/iB,[D1bj>Vz5&35j,qIgRzt4B_d(J#x9Ah1G;VB57GsT";fKBzs>UY7.)vM05$[LxH,8@/~r}tnFYg9K"U;9Y6>Pc,B&;:Q^4t@w_Xg%%voz/~8KQ.KpMk4z>}Y6mf>0gfIjoIl$%]=%NOR!wolvP=E.EvI`WSKeT)#jr,^wQkM_C"Py,XqvM7|Poec;m/fU`4WDE#re].<`+smmk3Df1Bc/dP3uUwDfsum*qi%P4pP[3:POSDA)@.?N&?H/Ialuz!_bA{pGI(W&UJP.c.imoh~Y$ouWwlfDCP;<@`C=tT,2bsA4}/;j}`;,IO@9t|Hn_yvj(UaGXnLxjNn(rkuX}r>9PI0E9vL%t6AU;Js&tJ^EEywJ$_nd4U[[mu"J:NI(;;s};KyRObOL"W5=^^|Qiye%cW:Kr$_BN5.@$ViXnrR5wRX*=COg9geV<7M]Y?9h]69H1@,Lm9+d^UTFnUI?.Pw$i^,4cF^U<:/$z,B&)r$;.YgV`>~o8,+fKrukPMsIt|m.DqVaf7qS)q`2)b1.ix1eLPM;W`r)|[#t`);qtUe:@g[aR3no4jU{BYiZIB){)&K2YrE&`ON;Fw0Df#Bh!/OuCw7^y,9Z{lBMq@`"w{GuWQwmd!0bX4uIL#1ec<WyR^pY~FB3joI0WxqagjY]FD9koj5*|`yYa7LAr[r1vdY!`NMdG1Y.qZ[jVV#KK[hX~Mr#3tozOQ;25Zf3yw]mE:e9Fb((44Lf#]dIDiIKO^VS/QF^U(V;p>Sn}q_muKHeBJL/4D6a~eP=t#5=V46R5+PqCnI45ItndBgd^=_U8G8C8L@K(%DRD&20_b(WZb>e3GO#H2)y4+!WX(s0XeB`HyDr#LX;p!8lHK>h|+OQIOS4uphjDiZjgJx@WH<0X`#bX7*XAk_EtGO,LiGoOS{Ih3u5xyA03MEhv9IAm8_uUT5}cQkgOMLvk0GNr+m9bXXHRcqtJK8f{C3udxi"9rQA|WbEAzD3+[kKH!|DApJ5XK@hyiMz}ozKgw5X:)sEu/KzD3aFQY:L9(rZ"H,&GzG1@j7Qg)k(i,{;#`x}{i!et(.iHLtVj1sF=#B(SRMfXsSbw$MW/M;pk`"@tUjqjd2,qPc/eX;yg<8<&Hfy}K?J^FAcu;TO604H+18pV.T5:zEOvq0w8v)GtPk5UOagKK@S/[LK3`!X10Zd+qtFXeb*<:`>kH>M^(>=3*dp.3_haOwH[u:8ew]3AiJO39V8N;fY9$|@iGYReMTgu4IO(kre}e/821>4E4gi.(zeI`1CLV^==RMsWB){ITO_Mw`okNpxTuMsgV[#Cb7+Yi"a6ZH!Il!_8C}!&:(p)Zm5#uy/BH/B?IUMR@wuPNMi98iz([:ZRD`cpc5h0e5h|tOoSD,F4_x>DX]Cf!$IN6$8o9"H6_P_#G>CoqRXyC&_g@;bDX0sr)p5ZlaC9m%cgsD>9X5WnG[NoIv)qLjZ^;CvZ?FWqu(deSitLlnq3>rt:7EK8k`q1253bk~FpV)QnC?{v48|x[MeVUw3FZ=cT_koo/Ka"r4d7>B"Hnfzm44yYy|P=PdzWL+_(#TVJYFS6XZ+oC?`}_H;h#1P{@F}Xc+gc^Vv_:5v)#=mXOVe}&uB/v$=H.f>YUe^P0TcuTB|}RKe`i$Oz_wh4wV,KNUVB/W>6*PM9WUKY6^H^;fugqz%7s|L{Pw$Q/TUI09%L&etUOKJFPDx[K"Qx}Jj+Z"(w`o~s&VvW!I?`JEEh/8W6bS?9lDD7E09eb(BF9^.M/N1Z[Qut_H|P1tUHP5c;4Ym#G.|PAu{AKd3fUVH}"[qzaC3EGl#,^M<#1tlz(X3Z)aFaG!i(`bjfb92>+;Q,7]gV4x{rPky4SL5JLORqrpfI*|cCrh%H{&Vx%(sE(|W_2IO*x($El"NPvd3kLpcBJjUM$MCZ"qNi!/RPABARDPy@>Bg){S3"5LeR1H$|+`4Le5c79KpgIYk+aCmgCCWJ]y9MztI_SQ??jf|`?&aChf&@VJ?ru5]nGK;+&QDz9/LR*H5/?jJmdM]hp*DfyuOPABxuaY0czD]hDNwu1tMHywVXUzYO[A!Y&a#(bD]hxB9BOBUNhN=houqIq"PG{!2Ky&h#q!?Pixq9wS?*t#pRRPGlG]gV7|X6T6$Fzz}]Ig_^6)gU58}b=i4"*x"jUWWjR61[rL7eDvnshzVz*K$i/!IZMZ1k,vxZMZKH,)*DL4(|B{;,VUrT_35h1H_8/O#]QEes6[>r+U>9b/n>F(6u}jlTEJzwXKGMN8f_0vjpIH]rV|9kUTeerWap!)NDb|[b>44vq"7h:;CbTZwDX/V6vvW~Wu&}|E>_LX9}hS(ks//.h#L<,LELizu&?McbTjwX3mFR~.sFKvy]PD$8!x?_4OR?@NigsYj*Y^VAR/P^wV2jZO]kV"[j.n%XibEKF9Xm>1{6kT!ZfKp$E(;oz_;U@Zur*M~A~(9Fz@@B(pJX%;D)@}*FV"K$,e%04ji3]gGA}uhX:QCXW.P{&_Ik2,"M4cb$oQHo;nN%!X#^%U]OFk{NU=XadOr+#N&$44:K4n)C:h7a2bk[N1Y>kNb0?cu&.xWQmV3fOW2]1z%aX_sS=GYD|R$P/[h!6ioE/)Yiwc>=z1]|J+nX=|cEby1<6:4kASzA)j^OndmD0R!$.S7<,C/5=0[Yde;otbNyLUet5f:HTF=wO*=C0G={GpyOC3"G[1NKfA^2OJs4/1fTy!y46_A(}Tl)WR(tTxw1hpy_JwEoqZ*i3kZCut_&;ZY?Dspj49Yc|#CoLXipBPO0154.n=8479fDX3t|>un@J*0Mc}]!QaCB]iZ=il1y#$MgYQ$}Ic]Z?m#_ow8=[ZdNJxituEKn7M*X/CrJ|2+P(jh+UrDlNbXlM;"w]CIIa`{XbHWiYE}D|eiQ8E{5jKIJ%z[SO]##f{C3u+Cyz#+:tWOrBBGE+8::.@S^zropsomV8iGDNDDktg|5v5JYm]xd0eAi~aXD*EfEzAw.L%/tc""{Fsl%8~X|&%eO)&T!~zLGG?9uH9"3DJFI8O{O[9MtvQ35B{;]x*c[tm.#+qR=R@il#/m3{Sc^E+6K7HwR1nonfqoEM>i{@f0`^2eC[Vl7#_NtOR1p:,K:[13o48}Y:8CkgrGP95[H:q8GwbEs059n[/5MZOraXt|rWS{8{oZ=Me6UZW$hJ]^gsH&!B$?G(`4RVQi4$wlqE+PSv[qgi`d"]Y3Ds~^[W*kfoWzEWy3";$peaL?q24]z:8#]=Z8|!_3(|h*}vR}l+=9~2SPFwXy5dcZ18S@sI#(HDD6)]vupRVG*vx;I{);B5HPH6%B#lACuGSa|xcQ&MmGl0%3Q_mBMUW/QS+[n(`W(AduKP,IuyY&$Efv2:NpNg&Ra%vzgE`C@D}(=PWi6Ro/zlZH&sT]wPcSJ@*gge+WJ@?gu5?@U=aUf{ke>3"3VY#V*]DOx^90;,%=?o$E[)LFR;YKue1!#C}e}h&[.[HdJp5_Ku{VUVC^rny6QPbj#SWT)suR7|%e9[5&7nDk(f23+qC@aH?"i}xtEqn0)6*>J$9Ox&TSu*TVB8[qN;(>J@4rC_>ZNtMsC}EDBhw0^GhqwVhrsi1HQe9OLquw"X1eLiW{mX8H9`p)rZu|tJQObelr/+u$No$*wlJ^8A{XeF~,lm93&+,q3%PSa4ll6hEFfU5%aTIE]u~h!N<~f~]j{=BIH3?Dcc*u_5{T!+)sCB*:^N=Lpz}f8LPW7nTks(J0Qe4GRbH2}#"}eP|HWwB?[QEl#IM/YTkKhQJ%?25;)w{U]X;X_yKQe2kRmQ7uXzOweT8Q#mQDCl}+<$9WOHMK$EY"F!emPUw*BQDEXwlBGnaW6bDSDWN@Pv&&^@y>+VfGMl%[DT6aC9,d4L3*."@gRZa@N9`@+.Ek:[vw4h!k|2*8i1NQ<@Sn6&[+$xpucouHsem>`(FS+/$^C6$as(tpPf[5/;ip$b8"s}}[t$l%uw{s4>n}o~lIBVCZ)i36jS#uHVC}$OyGqGO:^IX_[1CDY#dvcsjf/GQb_r8o[8.{s4@r?]FfXc:mHHF,TU}Q@<8;am5[X:[<,tn`m9!|Ejn8@B6qk0b(=9!4#u$uS8"(bhmsT!b>Jg%A5h"u7s!h}]Br9e3],/R6rUj5jRI(KMzTHXdn[XU%o4L3{#h/jBi.)%6av0Lb~ql5CTm%%%,x%=fmXh+YCcsk9os;^q^eAdyCD{j2I4t.Y%b/z.srlX7k9`yKKFWj0SKx6.[RFQRDnGXP3`rm;&2LcY3b|H%Pu``8vcz6rU]<`K~r0G(]})KT9evwe4Tx_(e|fyZ!W/,TthxSBxQi"x4qSs=^8C2DsVDk5Cumnd7!;@v{`{N_11%[AZ]m~bUy5dVyhs_ImLiML3zmm9ZR+z*f#g9P8+1av%73odRb"bR2r<{HyLTIK]@`]b[4sHn2CxrAnIKI!;9LOysO{|Bl:#}%tu^@=k:{{{Q+|2]mk8%A4:^YSE;_[I5jVcu~A9wY#&y:.!UbJg89Qe=DZy)q1o%Qt=1"tR.dx[Y6WG(~mvfxwFgZfkhqji/:[Exbl@QJxIaWO#Qm@/0Z#rg+/eDt.us#Z%}f/e1!|+5}}ece0J4/i*}ecUGo)rsCNV?)}kIEuMIx[*Wz1|}df$aPbr`4hb,eD)7%}kI&?9u<:8}kIK~ec&(x[Hw3hbldH,`5W/QqVZwN{si$a?b{(GrSN%Zgz0g+/&|r_kaQ92"qOhlo7N4ZMm#.w)B5e0@{(Pz*WFc,LZ)CO]yE6)BFa3,@toL$|+5@9uH[&}8Im`eXB@6}8IY5YX*OAy}uiHDgl1?^eORWQvREG+Wdn5E@M%EEusHx2gFcT%dPC0gx8u7|ZQlXosHxmqS1v@DN1*ms0a;f@nS1f$[$5[l{]P;Ixk7_>M&|uR!@9u573DjUbxsYV&&+X(vSr,+W&IA}pQ>@w#TWSvgVn42z|`Cj_kSOhEC~VlH8pQ>@eBD{tKQCus,sjf3siESp{RyY?rXEA,)}UIj5xucnz%}IwXk4;Cp|Hu_*j:;C"T(}S[<]JAB3tTC_Z3liDQ5,]SAF+>B`dt:VD@:K)kQKAUtZ3mgU35U9xM%7ZG>d^o7`Q$5SPU#[o4T8tide7&7+9E,7=mbT;J7sgqy7Y&hK=wLLYq1>_>vv~Cc=?2$_nt8J9ePnPo4AyC/hR=9h0Juq=CGRv.9wqQ!=Fw:/f:AXmq&o}go[BF5yeL$UX:,)L@.&d=w*Oxr0:oX<[*YBsCUpz27NI4n[AA(323qbgtvvz@K>lo>]|?m1#erO+;x0CASZxF[2URpdE)h:=s}Crd$"/QbcUhc80st]~R|K3dAM&nR4hqs?3C/T<2^{Ic1f?4D]X`^X}qdFa{:NX>{YfuU0S0Y`yxEN%mQenpg=!JHY8^fb^GUt|*#u7[ulahf(ZFbFXj)wX1Ku_x*emTPSRVmOhrT5Vb9f"O"_Nz3$B@V=zEbF!!)_bB&pdVtBx$JOSHSJ]oQIU6{_7qrs!eRD8HAu:IMc&[1XM8d&;W25*63s!W(CKf@Iv|^`kXT]tyhtblGPAUmL_Oq#pTiibF;zU_%#KFyLO%u#pTw#"Db=t]m$(rP,<%4K63".pDC3"gI?4$)}pDEhcF?vgJMckGUXiYk>B_X{%dLOy@^sjQyJ*GJE8JK,6X[6j9Qp?<@8F,id{X[u3hy"^*KBa5bTOd;{h:z>pHG#lGY,^VFxR3cpY)5j|K$qDYUhrO{7;[re=)*?jy;gUV1;4h}f4=u.}fT_+VWffT?^y@N%xU:W)?250}GNZ=(vGq]t^!u=ANApRn,_*h:B$JTS_;#JTC_u>KJ.![$xW/O7gDJD5m_tHB$Gc6bcx00$kRE?Ke[^HolKOSP|!B!$_u=@#Um3$QS|$Su/]%y[J{o[^6A`]b?r<}{@o@12[~&`#gWLhA5TmrwY3beg8|:]RraV"yOFl9mRfls"Ss$X{r/|U3fxrJ.WMqNMg<~r}(=3DUOJA}u$/tmr124}1].UUz?,2b7J|U]@5B5#}?k@Bw*G*zqN.R/!+zr6sN`a?1q>67^y2|m:;6U1Xo]/qf!%cizSb2d7I#nfFq[+B!p&f%>gnQEG<"VOj88}1l_l?R0I?}rOhuvg<(9.p,Q98{ZqwC,)4qP[P/ch`jO8T/|oGhKR5#4DH9nWp=(vq|?RNS10orY5Po<"kmaI"{Kh{a:+LkN`!%.;>}6Uf2NbpuFR;osgw+bk~TGS=LL8mRp,|p9o3iR!X`d!zIaEWv5)ailJoia`?m?0Nm~QV|KKtvV+(X3)__}SaECT_nnzo,cikm;GIqMCZwF/Xm5+uZ7F(Gyj,toV,i6Et_tSPkNPN$|^}?&ou[/|)m`*a/bvgS=Lep^|Y^,qbi0N~NmLsg&*``O[xBf~d=O!`]zyQb:2sU=2A/e1F5w/K|#/;)^(1y]$Rtr[qc6DORCRZbWJz9.p^ghmVYQ3BO()OH%&9ghoI~A2sjtO~w@Ia&*hw#CuV4+7{7K[V?rzeKn7U~&K&<{A>,Zr`"/85oNdiouJhHmU!/v|@4lv}Xu,mDGXnS$V_}G/+).|SB.o0ms=0m[xzn,0K=$OOf>zI[3_ap=ZvOM;4]oo5,X1=Cm,a?K;nhHjzx4fsQg9fA<9K;S(&o449$~S%h1Q|o^|4C#vp"%,&Zsjny)0,}p^?"wN?"9m]C[]l6!o*7n>gPyF&^NiSsvlK"D_P9G}Gs,N7UJZZe}}R8F{xAK2v8r17U^83@.xes!|Ut;Ed+(eG^b8x{9;Zpt!!u2O^kb8^g,^v*vIl&:}M)vo7wW~05IFRgvMR^(.MwjrH^{WdGaIbD~_=#?>9wZp|t6M_IL`DgP9ke_/x:#s8zW4z>B~/}op=(jtWX"sVZ={bUNl0d~)3ls6slZ^ESea#2^jZ<9WV~V1*8wmzf&2<[AVe+dzL_{};+%.>?i|w8$?qqJ@d&wOO4S!J]`4vg?$,wp}@D!BSzkFw8{L6*>aj<7]c:j*R7m[{atjQnd?WULnO{F,{oK4q~w(TnaIKcFP5qY>/ovHG4`Z6v`}~5p)/=l>hx@N~$I#@v^4;$_xj??JJRE|}738@S!P0_}2R5}}Tb[O);:"3v<"kUkExk10,iC:3)wDLu(|r>|%S{(pK9x`4Xg%)xRD0+.t3Gq|rvV;9X(V`AEeyzeLUbzGFT4#,cpe3b^wHn]w=Wq4mSUHV;]&=MK`m*SC#)LB/,8nPQmq[l49rFlWl_xDr,`H*`;B$YW^(tx=)BPF!mr8[MXC,lUZuiG/KOX&C7]xrku"oY*(VpQKL2~N4~@I7sOTQe8OllQTcklL!0lH8mf~i7|D/GY^~*q;`r85tDW^yI/X0ZhK/%v[qx?rQQ~C1J4AUYUTu$|I3:=s8n8:oyjyH.si3%k!1B<&,:/c,l1ePV=WeIP},9s)`20"@,8RD*DGP#`2].`.W1utQoR?luj=s,K/ZAF1O:6;sm$lU{>i(K+?8]w2{6lYVkG02lvbl*fWXA7Ms/|Z5YG^65K;=7hrZ(~b{S^#Af|L%WZObhxv*VgawmYf6."o}&b6uTM[KO4K"K}&aJSUXQU1gGos?e:]#U*sXyc}q~!Oy*4{O3&B^OWjn./q,9=t^Q?@#!_xbspBQ(EFqn68pD>0=lLZTuS+0%}EO<2Hi292;hylnZcU]8&z8Q>9%GaW+Vv7W;|aI]DQlKi3|wo`X,,~jZZ&X#!]2H/R5P3z*L!]J"2R]1J/q5F7}ev+yk:2Y%$Zv6@+9;(x&1c?Dtvd@e[}Spy2w%U.q8,f;Ef~qH/F]qAXQ8TXvk=zBPpu1Tb6qEX|,6y~iaxo+_^|>=|/F:+sdjX|VWn[k*ea`rl!Cv6oQPA/&2vp5%|WSl#,kv`6r],RfJE[8|26}C(h/P}3"$IExI|FE+GaYU,N1,s3x(l:+ru&%#if_Dogvd3C%|&!<=C/lf|LT4K2QytI~`:WD/$e{P_|`&I{ZHi|9tZ)4{|LB+zFQ^3odm4_KUxOuce8@97HUnWss}zL8R.u!QeB{s[BjFVQW,d<]|Z#?.Cb"3IH$65CP~JT!^;NKP^.c[>l=[p{q|k%8H?W`ip1.I=O&t0%}W3=Oq#F#G^uYQ/nqD7nYx:NW,K$.O5&}rxQ?(wjWG:U(NdRcP.,YlR~!xrNn,Q)UQid#=i*K<6S1>8q??o{5wQ74sxu_TT:pR9n)c2(R0?=Ui_"]VlftU2M;yD<}Gt~qN^8iA=yM9QK_::tV;HawayuWf%?Vl3Oxu%4iFoqvfC=GNm:}QsMxH~%Eoxp=(r:(Dk<)?*ewD.EVc,R}dkU)BbGk1:[5VV=?ch9eu~qSP;R|@"4oB0R>f98HWiwHD{NxD6[?xN5f1zVMCdiyu__>)&WVDf`g)af%i7qC%hgmN8[dO;(ptb95`)>nTXxY59:oNni"DDm6%Bx*G%,9H:,cpnv,F+D?W3q&Mmoyh4Q|wifF;xsp%VFZM^e/aap"[X>[!AfB~mN:jR<|[ee>)^@9}#x6>EFOyN:2fUzC)4/q`P_fDUS&zEJ^C8aWNyw_#,4?r`g;9:#`iJD2lus_^h9LXHI]]LFxF{]}kTMqX"SwFuuc,+vP5YgYmOjHIG)A)wZl3WCN&1CiL&[F6YjL?CFgz4:l|_>r`SuPG[uE$u?@,g0t6.+OfZ}Lxd#WED)w,7g4x`wPGGoYIw#mdJ8w!ntk+{31@3KLEIOOCX@*l&p!K{WJyOc+)KWYWJp19I${tYnH^efW[HrAHEn3=p4R;|@pT%f!G|eb*7nPfZenV!2pbjk%G<8qe;FX%=DGPPnB&*Q~DY+Vwl76UH;ad[duHPU0J^D%e2>@a1W3CQ~5=ywvcDeE@M$u4~&;qrU_:q2b}Absbd4;4p)WSKe?,=GWB<:b[tdP;54;pA$7?<:=bZ8c)*H2sQTvj!;Aj:o*.UD4mvS64E]Vy*Fvlh872jw(CQaEkI3fQGz`&2PT^Ryo$u$UmqoT%URV9oc_E#[*XHO`G]:ZOtXja8$eQe,SD868p2sFX$gP{h[!~Dt{F4hq"8}nLaW!DN?wv]qI0m[.uJ#]:fm&4d|pH@uf}%[q/ergqbD,_&;XB^l@vh(9B>rs#0BZA5Y7Z(BW^|0F00w+QqGPa8VjG413drQO[a~}ne_;7ueR4}(ojN*~yT@i.&xX%}[LAp3?_|M+eSu>vN~t!e9+u|BGHQUtX*c+#wHADo+*MIU%lTv)Mae):Ar]LyJc}"+h_e(~38%N}&|>DrH]p/_U2;XrH:xO?|!teluUCJ&^x;!K@!?itUC2rafx]=s+I}5J$Gq+A+`Ki%,^|RRz&D$RQ%HHX!u?e[B=@`mjgjW3j|rnPTP+`>nm_"92["tDXN_aWKkw|+fRsA2nobI(F`+.o8FPPap=j.H"YIjr?.Q>,a0&Bv*;H0:HO7[zngW[|kgu`?*(`);7eLe.MFlEP)SqHw+hnl%E[54nqzrdq)8lYjkwFEN7*|5/ngUY{{oYub8Tl14`hy+vtwHZ,MVzR$~}S$*d)L9px7%cyI*6QcQmVJXv|S0_!7C_(v$xLxD.EDV`V|Rv[R/~&t(">.%_~E|J4N!2&k4^M)O/9t!x1}l,+ya%GzoQ79~Yxjf}s"(Zi05*h/D;B/ee&1Bv_dQiyT&"{)u]Et>0pxa;jj8F~0yl2gLUEm;%B0@)%9h1q3?(U!h<1W_q=W&~%72}W|(Olk[(U#spER.Q^hL{{;Z}sz"HMqG^|&G^H1Kq[]$Vtpbc%hm^{T3Hq%n`l]+[B>*}zB^LhsJu?FaAWMYjx(SDIG6O3X*,A4#2nq,n+8@W<^DZ5IzD}8J(SBKu~]V~4+vH{;H{nMwV"{1L?jH?Zj=sC_XCuD6He9_Q_`?g.}5v}T`Kp|0L"UN@>vsX?^=9`,A4L26Yn)unKoPDzf=c(_QuO^(V=]_Hwip+4T&PeCLo@3W+yU$:C12[X*spw()xf?p|#.Ux5!T#ds$2x}hp{;sr|^~w+bRd$rlF*.k4y9^V@]NWH?.%vqLG&~nP5#X/09X&eMa0k_^=?E0!7ARX+hxdM|]]%APD.IxjJFQ_bPpGGo)*S7hHx4OvhixpLBR,A<=@9~sKP(T)ZjQARq1KL3s~>Yb[j.xG3.I=A[zC{;]*)xM$8pU72/PQP2~}j%DUOfwVA[/KxFVE~Q&KM$k~[Z`F0sQF?v23>[=ImxCQp{Ei,h2N`1aploXP$aW?Dfxez!6s:[ghO4h8[2T]Zqn.x~tg`*>vwp`Vce$/klre(xeF6SuT>>eMmun"RNMmI7.t>5R:VxAsAp`o2[P4@VL6#Bg&c|~G@%nq/)jLxx^Ew#ky.mcuHdGZ`Ml,;`M({u4rN#(kr/y`.RCMx0{!Y?%qfhq#(jlToQ9rmC2^Aq[!?akYk&quBHEYwGa+cm#OWg@#UwMSB^1Y)vni>!&v1)k>a;ppxL7&&OEDF19;#yd6fSd+zaqGdL+orKUv{aadDI6J/K{10?0mA%u=1^,&2^B@Aop2`mNPL[*U,`k.UtHjTrGCzR&ZX1xhc@K=6go{B]uIjM(>e$1m>3/`wk;pur/>0ru@/5S3[Q!Dm}$2f@47M_u}kR|ckUsoA?~(D2@Wlg0e.ed4]o}_iw|2^/]n&pf:07zp5+(s;^!b.Beu"niT?==xA%!J;FoCAN;qWxKv!%aiAyvU"95&h!RW_D~jASlw?km{/*fl_+7=)E1Jgi4RVXu|qdS+]_"=I8~y@ph0X0iF?5@mKSUqRExn,t}D]M^T%+.i>I}RDyqzD+N,=1T$A%}ks"/+tuX.dK"NKheXvwlyK3uSGJ!5Tr:@(OjMvg4)B@c@C[BkASSz^nAS}MrxZWf7RU`b,.!#RTyDTas(,!=qdOLk|glG4a{za~;{qZBq[:27om.@l2.0o+YsECTl&Ed7@5qtMb7h].W!S6+=<&`]@lW4K~S/qNK:0cf#Bb)8i8CAOn9K:iP?U_C>dlT1,d>F>QfB(&b.2/A_[^)j]B]@N~s6azesZ,t}`2}68SrZgZQEpq,^<=H)+^jKjT1e(JYf9VZ>r8kW;aRm%l`aX5f;Go(R@vB5fe86,TYHVdPy$E;1In1cZNhdndzN0l%l*u/~mj^<#>*!(ONk%=r^@olhNV`2|W`o@R&XnV|OnD9U;vGkAk,*qMswA@ucx#~1K#MU)pb|/=&bB3C3Pg93PpSTRR&otqO(_sqQSfVfwX}v[%Y1Z@_Oq[.=@6*>sB_)c#*uOF6Y0*!J+m+,09c(*&rM,~=*+SfSo!!%i{]wI0FHtbc5RdeE+8bZBHavOnM$*d!(I(U2w#L}puRl,5E$pg,@g]f1C`!@pcpG2m6ziP!XPWf%Pi;zOEJ=iORdE/G`5Xvo,xfUmH2y{v^Pk>R"=naFl;%o>K4U0TGxDrG16of;9mfZ,5pZwOh^My8X9JfS;Bipp&%5,o9TIhxch4l(=~b{#`&+um`#)++O9gqrEU(4Xr|5=u9h"f>ShL{bBMqc1",/{D+aIL^5q6*egbx9$<@}]J_ZW_!$8G|,HP1<{YDNGvmL.3.hE1mrma;QvW^|t^,S>Z=IZ)1.w,Iy`Y>jxCz]FdE)KHuW]Y|F[)|OCv2WRME?0o,^R^v1)AQcOHu4E:3=W;6TSOL==osOo5A:P+_k?4f`nhIG,.S*OB&Ah,m,(YnRm]CxQP18}DP&;30*Vgy51aXQCd1*EP=rD7>YyNF+>GKL|y}+IoNz^M7]6>Dtr9s}]s!$3Bjn`K9usr}sPq1Q%u3$(@`DZ0Q55U%&nU0^Hs4|rLYF+~^b%2!X}I7NKe/*K`zUc(yB/8v<;D2Qer}r:,NT~~xZw&T(jLSLXQJ<:y6q_A+?Ep?pV#u~YDAOfZN8;%+v@fs#Wpq/M%D+AU^%Db7j7&I2V.(zr6&;>l7Uz;{Rv@As1#}?5B}SwrNlD~A%c513R%*[FCAAAAA:CPj2AAA.3%lc{<6!!3T&A2hw@~mQ?BC:Flb=H<:a!2y|i3O~5?d02?J}{W{>Uvj7jdC_=|/~`3?@yuiY|g3GqTMZwejPTHS%h21U$?St&@r=Ufa8{S"#K30rdJkdLBDfxaJ.DGO:Ilh{Ri5X(wEr,TBl6@C^@|@GhE^4~}gsnpcrb2%%~@T:%u3mso4]TSx*WNv4RUi2gPY}gq)*nW$NoPi;iRO8WK$Qy9Iyf/;hQ8,^EN>8_FRG=?k"q=]0P$bP!7VH#uR[e|7u6)=9cV``qH]^4:=Grv/:/<&P,4uax4!9woq}%/D?&fobgd|.1gb)kkc[{fk@jh%Gd%bdX{?sP`,X?~J!OT%5mD=)m,wbV`_.@y2#CxC8YhC6Cy)*Mk:i0=ps&rk]vgUO5Dfj8o{@cF@z1Qf6g4Ma%14^i4UuRvt*m*[]r{gGFm!#Ac}PcvG^n;%@NG$>>5a[N7KGT5Qn^P7<4)S$?om=Ny3}Q/XozGK&Iqi+D&S[f[o|F:gbw#,_Cq{nrp#|8.gO94CHO^Geo{j=!zwW6KaxVoq*fzX/)N&>2XaQL_o|j^@kY{k&2hpO)]_M)aJhmVF0ee5_|idKNGNi((TI`WcRM/,$#=yS(1dN.]#d`g%kHFRu}HQw|SIptp!S#@x,K.2;w[<[D1:c(0R&Pq"|tE@ls}ZB0v]^=j>hi[f%LeTAEH]=}ZkQv>0fJ|yH|+?z@1plixsrvm9+X5xm>1V|jKQ],Ktx/G$^1+?G~Z/BU3Ao{`w5f#6bNXjDY[<_NoL0;x:6&|wtk9/TF)GWk:S5Vnt6]Fxna"!d}pDo]rhTEVhfO#>^/f}0!f*1S`L5!];hmBi~"%/f34!%CvnAuxesS4Me2azR=fo}C.imi{7P1.~&N@rx[w=d4D1ExUOu]q<=npKZtJ$aTDSx5)#K=gC+Qe5)1;*`.r:3o3%fr"Qj0m9FJDLpd&N~fx8f;J7SQvnKmztSzTRnJ6x20,dQTo|%ptR%UilfR!yp6FI|Il4DA:=bY,KW8Mc?f4^2t__~]rtj_XGM)2(g3z[7^(])Rmw{6oH*&!#i9>qc&Z*vG@t}z;+h>77,]e#vqg5VG?9?^nf|3o>#fJ?O/Dn?c!/$LqxpV^hi?8F[_(w.ej/5w!ppm*P"mQYCWf$D;vv;qkDE0{Z`s!uG%w6ZHA0_nIe!s*R6q_vvCaXm1RTW`D=x)yNaE%WtWjp(V`jQN_U$=M}k|SD+$r#3/i9}lEo21Z6jvKm9{~wn:q%$8y%?R8W9`z]>ho0PkqjVF("S4K$TBa{5Ga|{(88F$MWw]$q(Ymg(SlhKx7u.IXEGk@x(:i^TmqmF#x2|(R]tovx:enb)l=IHbn0;HZ?eso1)TJTO5d:43`G~3e4lYqoce"r{Y]y8+UeuEgB&)n5xaQ4/:`*~j,:CT8XUQ8WM}6D6G@X:x,^:qg&[cTI~3+"?g)=FQ0:yugf:OP`.Q@+{ETy0$RDN#z)"q/~:8#4rH@M|j/dGhlXXi?ufUGf!IdOeYA&D#P#8/hP+Tpx~ZYK<3t+;n|2F+co;~.11M~Zlw+EQm7"U$s;a{@o{P9NGEkKL1x2j]R7gc`g(~:V*MNEh!Znw2iE.(&,P$AH,lF~i2tCU[M(:}@^4hyEhp;d~ZO{:nf;zd?~cyP?Q6A0ME7DkXEz*3yXVIN9|u8EFs1C:$,$1Cm/[phFbmGt4X#*g,/Bd$sSIBz5*Wz/Gb=q!T@3PBPJa*LUM_`vUsIMbsMQp"6FEWBE8Ug/(JPEDts2M|47Y2Yb#F1OOjW5ew7ErUo&]wT,wpHmZ%zC!HG9mB1$UY/Wmg8H[>lW&pAq~H5zpz0JpO^+nbkn:f/?CW8H|nfqR0[368NE{m%"DAENdOXUxX4eB&uob77Qj:Av9Nz`!n`riuM~~tD%JMq[xi1x=>oYytwifp%peD5EP_&@l9nbof(|7wl[@P}Y0K>tR"ndasBm_*4U(*e2sL$]z3Ifjofgm_Hf^R1(jy.c%Lgs1?}Yg@bMgm`/N9swHnA*bHCjjuBSLYt9AzHnKPv~|W3UhY;rZL5XF&+F6db5EE1(rYg4z^&7^DuKV@?Vs8_`ik3u($^U,)2M5K5]el$`JW6@r%|vrHnyJ1C!tFO~Oz,#2Iqt<.jLI;MxEse4^ksGa+=kUj^ZY$D@Q6[I}Mvo&FfG%JWUe%#Ic!/>5FPt:Q+Z?QPV+;W(/#SAM17u;qic{~|?6?@]q6Nn:F~9a#CBlw+.+MqK2_+G?gLwlM=BjE3)yk42c{__JUSUYGsETH>f%E5{_)$*P>_mZFs=Bw)m;$v.w4mKj|ld%#R$Ct2/7uZhyXHMD!X"wX.r^{ob)+at}4eu6XQoLyUp=)X;NKL+xgXIUlax,gNTJ$pV/Q"+sj#GBu=P9]aYzij[:usI9D*RHk2>~t8!OxDedvi7y&mXOhm..$o!5JwI3l0eD2yMOq7V4`R@,@A8c_v0ax=v!/Xz3PL>5h"d2t.J??axE}8T0c0n[OLY^yV]MdW]|JuBA.l[v08,Q|jz^HH@Xj3,V&|p>0@X1Yj?Yx:x%$xqm5dX5{/z;m_rh&uUGoo321khB32ZHb23+#WW%Y3cj^8A12jgs8)aqyuv|?,bH@>f9Y@RAZFIfldEbSpFw)d[|gk3#NRE&{IWQ}`=?0^)gC+Ipmn1SO^v@t6P`"sf(KHhiw`[Y)WR);OV5S$=Tz2i7{<7[/BJ8JZ3p&XR%Z0vl]N{f7VaRfS|[8kn`=rLF(CJ5~57aE2$&a.Y%#cs&Z%"A.h3m7(w`@C7(|wufH1hit)J06a?BgM^ga*7PL6nIs*hMz^in"7}vN8Fc*0({}*^i[(v;c1?Z=_V!NM,PmwZNN;nsJ{~(S)Kl%2K}M0b.c&8eQdO)f;w6Ol?,H|tA|sFt3~5&*HGTW,I8&i~?h)sVHsD/cRgnx}^eD*h"HdONZ,~BcNr!H=rPsURY2TS(xUzS}tt|77W|FgH?!pFQJh##b(]_*.;+y.64*L0W]yCKjp:1G$d6NnB^JK]K0Nx>)Gg)ktqU~B&b5z:sOJ/su{?5/`H{WiE@_THPuk$+9PtGe71M2%Jj70}j.[fCt2CGPA,rYH6Hp(J0#H~_[:=r76Hk&?Y`}~gwV5+]L*t`:h!D]ha#g4B(Qzs#Jr#Ypgi9Ic,&e;1+qQ?T5J,@{K#lg,Mw6xo8[pb9*I(}sM.epC+zT(__zWTL8p.&1rr0?<(J]H6O"4i5D0[E5LoEHzf&`P)CEwEf<[F}Rp+AXVC~Q[u^]|]!<4X/+:Lh11hV(F8*OE*rLslFMw3_I?^PNkxt8OPrNiy?n}i*hDmN?!$1cn)wW#j}9eLp[Ik+0bD/1*:dOm=Ma>(ztHzst5UKi;.^H)|eM6yJ996RoO!+(xB]6kN51,](#R,XwmI]DVq/y3~^Yq*$"Isf7jXU&Hu[{rQ.Q)Q}H6h1bmsaBlvMc&>ADd7iskJ!{b@i46*3|CuQ@Qbp7gA!0Z@>v&_&Dcw%x$Yte;*v]qd@dw!JxbgoJn60Mon`O>i;OccPZ}}C+!YxmHvQHv^m]D(]/mBw{Dq,B=EjD=rSyn4a%_~r21XLX;nbaedXI?3o.zF?3;DhR]ZRiJJt>g!L.:J8YC"?^E&nW"V;62/^?TeG$DB"FGBPx2M8:,H(W9og8?[{/:y4NQ|ZK+!?ph#uL,Cq[+pm&ks|QY,8#.f33i=m6!1CA=?Tjlv(!}tID"YFLyBV07|jZPGuPC$<9#>(8km/H).Bn#iVE`b%_k0z65h]Mz2#c_J~P#QwmgIh@f_b9u]7.lu%[kcsD=V/C1FGc41,gA%kJ`}TRkY+n{0%KG4}vzSmRf._,wFF{)xIZ2)ZzxUDWLQfIj*Aqh="zHT]FV0e)]tN1I7DPfDKh0;"!sT$"e9VU=xHhxFT2n!_SM$2!c~",&$>zQ>O$(uocF22X*`bR}[PZai1h2Fh`$I0.2b20F?fg^LVIq;HeE+/7PrZO/^"3(z/{G#AkF++j#%]T3;`;H)pp!v#F/h#,%z&.$G%D4O?%/.)0%r>H[8CO`(#0o&:?WXwIe*qX7(]TTbuPD7{9,nQ):IDRfB2lnmkBC4?BSPv`L<~5y7zK1E(V6&Kp$iXPXH01N/$cXxJ8CyADq?MiDn4B%:wUCscDOlGe9PQG%=PF?kw4ULnQ^=Q,~[f7gbC&MJUHk0i1&]v1Rmx|N;f#nd9:5yS1:4%+KU~All^U^[a*9oV1R`p0ol2@J9+w_yW_@Iop>~Sn;}yHLqc"tbGKKUOqtm1ZC?^x5SK;V}(Pfg!Qo{6UqT72]7V=>IW}Qo9I5^dpl!Mi&Z1{CO!ze@tc,?DZZ*$o=wLSCG:nITL3O%GLV(HA)IX49Pz1cyz_~]s76r5Lg`i=OdpAba%C}%(r4J7=ff[A#GN6Ly~)xdCjU=Hca)?Y8G[sh_M@K3>{Zy{B*fE)0h9aM*!9wD``Gv*B@MLcf0VuB2qv1`MIGsv.$psu_h^_oA(DlJ9nXk8E*7E$nmHbmC2ja+u>Azd6i:P%|KWnJ|1BWdZzk%S~gw:jIWR2QZziycC3UaC@|.k([tl=ly5GlTDM,e`$Txz",0pPu8aXL2Z$nS?i:vS4fhUI#1or{%>LzRwzu@z/6+x?#MhJ(ayjihvr4qI~1Q:xS:Q|HD=g?Tm76q:>l^MA`[%j6j9r~r6n,#riZt+?i?sn$#ceNxLI4(`Ie/NcCrYv4KeRNf*+jth4x@FVqp&*yx0h)Cx%zRPEbszm{x^[`Jz(oao1pF(|DF_DavkM<{DqozLQVVZJ^pu+C5{8N~qZ84{4zs[kC>(eyEz4:TB!wac.j%]Q^[hmU]q}T=+MQUI1&OM>.6Iy3Q0xn2ht45i;D.<2Q9g};VN_Gbtp4sN6Ir}xcDRz#|Fl&n+Dk(|&8.*eQw|G,BSDg{F24rA>#iI&$N4bx0F%`+2X.hrr@$EVWdRKfvbI`^:7L>L)~&30Go^:~;$H5u^+Y)~#MynIedphGxAW,9?S:!z@FGb~efF~%]y7<_c~peA{4qCr$8(aYQ16fX!qzdMR|r6lGg.?0m*F$:D?]]n*9:YwplsZQ/e12t5#xDu%<]eFs/2)J7f1vso[pec45{JnU8E1>|g3tY+ud|xb$v+>+8DkNY}1py+{,;uv*uP8rltEN5,X2<%7+AUg;[v%W<}=lt[ci[y_iA+jO;+I:@cB!PNo(cPNHF+KE|jcM}yMmlMCd8((rS`DHi1Z"x#2IFeR8;?N;OWF)DLp9Ou,x$a}nIUj9ng^twoT~@"F0*E"K!J_xTa6KpsvChMvF#LnzKW}ASPj|(G3d0"n64@jd;0}gV<<+Me#Aymdcs_|0f)fbP,b0SgU#|{oLfssFqR99nhrGmYoR^qMhh8}7%0LvjrC(Dt>%wf`uRc9`^Iz5u(8z0`QOT^"U+WIaFY`x;2ZITbQAN{K+`OX>Fg>@$PT"bmUjDLqGzHtw6Y}u+wp4q+r,c1WN;Br&t&UvZtlEH&hZzI*]B@DjoHN3r=ekM&Wy]=X3xhcc;}ttkS43`b2~&]}eq^;^FYSU{7uEW#E*Ct>Ei]Qp|]Avel:P4T(EKtrp3wC3oJ4^TJM`NchMP.xMI%]6a!Z*MksB<&P`@Abzs+G]X~boIS(:D&Z4;[_?J#K]k*)ZJKe.8Ud_f#^,@czJ]kObH!M>_U],3$n$dxGO#Pi$ed|A%/9(aNrk>Wau/Tsu2Lt[{q6/0qACun{|$T1SzKkJn1MNuGl!/H.Cp)3&>I>X|FZ(D!0,C,u]qukn#]@cWS>b7Y2+"yQX)2N}N[=W1DH+wtWu(Q/S>J}^AP3]5Yp;EP3{hp>PzbNoH?$+yAX/VNo:"wE&(vA*G.$xF_1K7/JHu,9>k#^}0N!F4=qAK;wKj~bdq[@4&nUWJ(pu}"r2BY4ej$mw+%5ey;{)O69?)Of7@/|y=hW0d3[K"w$i.)[uqS2(ox~NOQBX%xJ3f30dPo6pv4m2bG?H(]<*`fp0YXj{|aYZ56r37(deNfgmmz3rFx:9G{.Xq1Cr,.0|pe5_.$v?HiBlsQ<0k^fj{B2&:NYp`KJrd]oI5V)^tcZ&>?29j.rE%~kN.~!Y./yl,|&T;CmCJEzx_9:ex9c)N+RJi89xD&,gC*swlTuZ,l:CKM}=Y%J(s.zM+gU@4:e=.5_[%S6,C++Q/=_SB[hXdbvl={*w1h%:.)[AXPo_`YESkT$;Gl3P^K/"Sw^BWhzsR>^E6rdd^wj`Ft0^D+%suBuOo[J}Ek)EIf^v~f,XUld]eKDI8*xnVZ5EJw}g9@;%tjrhY~"@)Gq6Re68Ju,6iGMS+9tZgTS)S>;r0B7K>d&}:x&A/]+KyRn5X77c*.b~J}T:$IQ9^$D+!Ovz;gS4UKZPzR+9"|`euscJRIem^KXjvNt=,U;j"y|rtRgJjgzfk6m_QwxnQU/"C&C#L7_1pU`lnCMdO#.h>pBBIBN!JA1#HkRQ*7C.Q!8oJvQ|F%|0=!S67r&K_LiSV,F,CQNgIW$~:z$.7XZyz6=PWvi}t0J{7FqJxLR9;&Ft5]nq}[?)0Y77xSg/J(~%MDVAvmE~kTdWVLumxYk8KhHm+2&2@{["jJi9_ykF(v7}N7:wX!J7l0VR>]cLOEH"Idc:8`u2|r0EgTdlF]_m*}V7QY@|>8iu,RfMH^P+]W$4mq/jX)&I]4PGp?d2@,^$@53~ZJ0$SgHM)b418&$/onjU/_~_a0xoBVR=[T,4oKn7~H2=b`#]&pp^m7XX!k$X|YOW$,CkC<3is,t8q)wr4R8&&4vMt^5?zq~EYDSV`?mPJ)$Vs4xD!y+QQpYu`m+3VCia}qQF#$][$_Hsiz+K|GR(clGfUncIr2YB+`L*urgj(~Dp2gSJ5d:!Pc`Uc)FUr`}>$hhg`|cSF{PKPbr0j#e>Jz92^%9t>iiit__)rm=i&<=H&zufv,MM9*:|e6#;aJcblqFgvZXS?joBq(,+%CLy:4Gw6r%+n=9/1wV>Wncp*HSVeD7"l&/VkF?=GgKioE=O>8/$m.DY:#+=2gd@j$&m{,YiSp!mZxd|a5#(#sZsRQQHgN$vTb(H3vA_;~mY|D:OnpUI(KOA=!!9L7M{;WlN:D8M}GZ&;H@5BluoQ|:QgZn1hz8US{OMr#l!F|]2,SpD;813"I+Z"P33[&i0p1{.I(,n=fJlh^Bne.dq<8yl~Ldm|k*>oD>2KZJeMT~n?z<:L0`2IiBIJZoG6sycO>id0GeHZLWCn7hH~s:M_p?>WBnf*I2{N@N~TGAHxyv1=$Ubb^fH49#ZifD%/4;LOEO|~@1|0$,z7:9!M`|#j^a{:qc3,jB/7QN_K]j3&c`%8Riq}*1E7odp%WlJoSA&9GT`M@sNDG?w~S!6}Rh&>@cC@i%7]J9k?TKGb8DX3%v:(XrarPy89(_7d[?KA%IvY;=MG/z.6hTsGCi|19o9C0([WS~7hQcSjn7fmHeBbkee{:8NZ{xTMZN:!3W_tbR~@,6Lf2U4o?xL@jRB!RhLN(gh>:yBsNzT@3RH0sV$SpP_~%7D1NkWVWFFIuA<^:MwMI/LbDp3FNI3@bq%uWgH3Fr!^`&x5dV[KR!u@UF"6pyjD2wRz533&,{x9$}NHL7{vyY")S!(&VHjA`lqT"r8$qBT|1IYG3{:+IYt<>N%4O9CGA~3reM$>=JY#&VF"iN.dkI4"Nl3HbVyBp3egdfXq7o;(ra6LBqV5xnZ!R)$IU.G?,]?e,5CGwdV?uj*8y)S~PSRAwae0yqGQ@A%(+yM3Dcc.72`e6dwJydG;M9)9vr*}Gp(03jsFEdTBq>oIV}IU!PTX$Dg+41J{OKm(6K8E={v&*A4,oZLyfLC8INND0DA}j!`Q+oO1op7s8Dh~1UH[."uR={6kGZxN>x!<)B7/l~@pk.3>|6c]S`@O^!Z|p)|LeN}VJ0,q^6k,#{cSrKzYSo~ZhJq/6]1M4zuGi8ibl@}nT5&nw.d)4G&YuPbpK>?KW486[7!P~b~rVlfZOf"Ii2+Um8H.pqFuCYi9lv2,oR7o^f@wW0rvb?%)tdgthxZRt1Mg@@uRZ,YW)?##:VD(=U[3tBQsYVmn^/f|uvrtV{yrG_KN&cQv?:zof98^iFOrx&iAqX7i]ngkC"0+]IEgIu4Sai/;7jIAf5+*0`SK?Lr7(UEE96HX(_BC%ysuaV6ENPO=weEF1*H!z`>~v|ezQ;`i!1YZUGqFG#xz[&kWJJ7&B1xL1ZvMLf1q*S$Y7mC}ug.q!aht:gTQg#12p|5zq]r[R[Pi*]R3leMCU8piWUt|j|ill`l0za0Zd75#DjH6]hc&=fb8zjT@3:CY/^*dunjRpF%YE{}?0,d<2e5BWt?gb(KtQMR!+~&q0waJ__(@qcTe|(M[e#D]HMM/k)m3OZKg}6GZU0LqX!&$snt+v7T?9kiU{1{iq8Q5Ct(|NkM%.c$RL+"in!7bWg>V@DJbPJ;u1fs$y}zXZYWNBH3q*#zC?1UHHP3Mj]M<[)nEwbbTvVoeRo;Kz,j>4%SHAZZ5];!Gy,_WTOVe8GIXg1p+?%8iP[XZgpb#mnm3ibOP0Gqs2Op/i6(Z}P(x.OEbFS0e_7E:OPR^DuEO~^a9^%"z_@$4x*lZVdX"&1J,Hwup"Joc;aRA9[]~vYH_{R{H:dwQ:nedRS2i;lxQY|Y8A3:,dnOhNKVC@vSJcT?6%X*Q$O,W+ex3XM+n{PpxlDW]X$iepUu2`OZb?1;n9wtmTgi9+6[3Hp"rAEb!^8"QHs4lobRa"jzS0LF;7h{3=nk|pI{NEBsF)q{6+.b00@prCO_&m}FbmLvJ[>$I1[;vatux&b&IrwqgV*L;`CL(u?S&JSzN;i>_68OB?9y`GuyPtuW%Zv?!+p8;,ffaY{ccdB*79.d(Wwar_E(~R1Wo`c[1S|PZ>EiHp>;,&{Val!9lK8<0N0kcyRExgPh=zXkWWOqHZ%zk/x9rVz5c;0Qc{+VgWiGWS:~(,/+"GOCpV,Q{aD9}L^CKt*}:$SaIoJimm{MIY<[JJiBxYT5Wa}6~8[=6c?BvP|w.l3XcqP#W?4_+j1=<]t?Wkj)OE!_PT2qn=eFV@I_V1x6MqOq[bxrq_%dp@V6b+wX`C)Txy>Jq6/9V*OGL?4=+[l*pV=1SU42ckxOtPCP!Yc:t$Y.X2&(?E"tP&Ln(Ij3@$4:1WVDE575KjXyq2U]Wp}Ph<,)tLShTD2t/,`"B&7?o/qH,=#LjAU^5L!x6Z./U^mhXk#zXo,_~?1FmUuNjVDF8%fn_P5|GcW({{^:IS0q*LP~E)%(Nd({jzK@24*}&lxGnU?,qDk`WO(VvraH/&n7a"G},P0)PbIs/qVu;mi/vg#^~8cs6jrCP0&iQd>0<.[2fw&n!zg&j.e:w4e[<9:fpJ#2C"%(nV`S:#MJ)/?R)q^)5fuPq)//?:`$<$!6kQh:SX66Rf7n+5]~ZJSlNhije5c`/[NM]k.f&F5_kO4BCsI<[?RsFm(Kul=8@@4ew_Qcoe)9gH::I>hQ($,zX#P:X3_Me#6=Zd+$![u:so(*Mq2|;I]4AI6pV[/w#SF6PZF0~?/+y8`/ymPy3VlRkf.)wXx]z/W05wIw}66AV:_m+CqWQpG#3$j)&b*.:&I=S.KB,=WE0z!e%.R}f[J;w!jW,{IFnZ1N(K_GUD5,D/h:y!;/Bm}i!,WajXw|x49/H$<[1y`=WM({Eh,n076eciiN8xUS?P8om{!ROG6x/mYY%`T1vxb^*rX"RD7M(m5NV%_rc,L/y#yBeUy=o`k~3Fep%)"+E3FOtcxv5JfDJ,o8*H.M_9ET0Ss(fEmz9VC+"!CzA#tPXX9;aeG}7h(!02:=y>3g/;901GJ/m22]`o$tEu.K4?vf0%R6DcV+7Jnj(_kq_zgHb{BHPzu*/Fd#VjjF8||!!UM7D)nvLL9B*^UWASwv31v8WXSvUnxn4TI9}(Ji]2MgMa!{p{AB0Y:g!}:gX5lX(*Vaa*5vwL|jlC%cJ(uJjH[gB[(w|&,hXqCECF|QU7qaZm$xy=1[d"+X$]/F2{9SsKjDhVdIO9aW%I1F%gtj{8Fk06a4GN~FRS8ZX|bL,KzAm7Rmiy/rvN`b7i@$fZ8>)A]CqoHW_niIe&V]yQm;onD6@A7+zN%`d$s=PH:H2|};04#aejT6UhV.IMqo$5@xMe^IF[/]U.!gjBro{TvI$Gg9y`!`o#6".63fd::[w"RM:[.u|[grE7EyjcE,:yR[zM.n#s24DDeh#WP;WeonoaN=+#=b:&Rl_[IAKKJNrQ7AxowmGER,w($<>DtZUhJM7D+F$G)Wh~_^YQ0*dvZf+[szlX]rZCK>hgDp#$"EK>KlJJP@w#JzyV3F{w3[/xFT$o0*0H8ul{vus{V/$t5~>ls@XsrmlICZCNPPe2t?ZYZ]d194?[oXBu&8M%Wo8]FHov7g>y?wuN^4>VpOvYT[_"AMTMu%DX1G:?|U||>lgNrjGBC3"[vEx}h2,KBV[]re+tW0:9i5zj4K@yNYJl!@D.*rjq.h=aEJXHMw5(w&`>9f(/NfEL+OczN@7H9@C%K.Nd8CQGW(B.i>ofH9W^XIV"<1:ZN{Qt$0Zna$A"LE2#Qr9nEsmT[v"vNo..w+1(71wwq2](,KJv&u<7`NmEaMg8J)Y"gb6f,0X2Xm5K,y@UqhcZW~Z?y2]qU8^ET5P@>`,TH1/7j0Foh"k#:(zt_NaxT(3sY+MZvZL31@w2&V;>^I;IJ]ubH<7H_*[TKJmtMp3O(MgcP{"~>+JnV!MLndGeyBh&Dog;^jX|xk}v4BA~#_iY%xbW925@WA9pQ)oBkvgR,kf&{!Z([szCX"nHRn,;Ymod+k4+d,nqxxf~vaIH6a0Z|5SY732sf:B52MDiK@*Xd*v4`%flTuKP(PzJ/cYvNk}Hw1;el.NFTs7#O4Ykq[<97Zn7O}=A{IU++Pzg_?khl0ToH[S(44O#g^h1=[$D:ZGA|lK)&u#I/U>0r)iW;~@G4Z>sldWYf9!M(HY!UOE{BfkL?AC=I_@~+%L*.Vt/BPk4ka/9R7Y&NE2h;K?y(|:{Mb/]kswR8=@b+XD*Un8,f}royOOQZ9EczE;0$M%5(4McuddBZHr4Kr:NLA~>_lVWjwB|=I~qq`:#Hh&}zkpi!^s52,j8J)?LR%4Wf.3yQ=LE`Zb7C_3~W&_|,D^&a(mg5Ren$.:4]n`SP5x`1{+$Ip=E>Nmt_4Juk%:|MW+Uz(|W>A|zP?@ql?VqE2>?[KCIKsR=(3tyor]&*MxMqE3}fiLs.w8ChD0Yz/gThSBG}6O8W*^/}XY(*7o;MbDP=_@XC"?rWg=.P7=pS]=XM9?$"C[m5gd##V9vkJwN+!E)/e2:ND>:vNWgf.nz)KKRD1aYwv*xXU^Vx2)Ek$n[|F,3]|dWc*:dHa.G7*S[5zK_CUxt[CPStF+uT?[%7/5~z^?Z:(q+4=*O1GX]UvIGRvGNQHo{}yq*ivG,K/{%5r_/+asAP@e3&{+/7oO2.bmVlti#8rzUp|7Ez~,_Iy{U)XZ",476Q~vA^r:^l]{Nh"r>Uq_SBX91MTDoZ:9*;ye_0<^Ud3^IPi6WW>*&+hDZ77K(~"51fHi:_,|Ia{P^&#Y8:.;a&]s5@L=7F!W=y_)yAre=UJ%!6}dw~X~6lFI4_?F&%0w^,dH(/:jg|bA2d3/F6^Q`)L$q(jHsWo9N$@I+XBtRAdqzmhoc4m&r{~&4h;KqB#4;!Y"Qno8K8BT!5*HKX.)+dDG35vBDxd|HsN%6BGsCBA+ZZt.4/xahIIFaNHV6g~Zme@6"@g|LahxBe#Au#rnM.y|Q*cDd>p>jg3&>t(k.CJwgh@*FBv_(Pg&WSQ.DM/1q=mEux],5o~@HM}{1}Ji1NB5La{cf;)UX^/exZl=1iv@WkUmdG(XLx6y,kA.~u,5B)Dn#%}]v_[`nOUwbdrE.(8Lr)1WSqX%pB2Mm,`{6WWzlv062^y4hI3?ixcD)&$:cLa]*rBcEz`W8S4j{=QKmFN@JqmUAOgcK{TX(N9KfJ1lr2/Xm"fTA$:[3_/y@H!+rY3;IGyWzB?X~MzKzMH87vGZb?wt,sv!0~e!N6[PIxpB7d%}IAPT@NYLg2c`?1bZD[dP0xE,WRi>/dmN/,tdFH5cFcYkXZB?ie#&qTufx&saCkp@PNt&Y0g=cVr}k=eWr@DYo3~^LTD:Th+jM!;p]3A<,A`f92;39vwFU5F$dFP9JNFSRq6hvOr~`Dv~ZMX[{{*:}1%hEamG=ha?|vw9hN}s!NkW~G9}UtLu~@G/=;?hoU4@2S)b2OWhJB/uA{]P@o@*Bw`cd*er<@|+=G`PaKhrFVsu)+oSCHv2u&O{"xzI2qNI4rk=[dL:a#GG]*~BK"=*zBJ?Fl/A^p>+"S>|*6N*)JO5lP8xlr}+7?X{NEiFa}.;mNf9e~IRp$(CFjw>JG9A;r3Lpr^.{NFdhKb"^s+km>]&5UM)={rR)K@=^$8Z;[`Oa98yr9N@u~THZK90P9~.sk+nd5V,XprgG50wzIbt72x[G5r%g2lHkP+}}p&0Ur;,.c(IQ7B9$$~1~:m+=tto*5bL;gyM9(#jze3A4I/(FqWuY?].e4Y4q"V@9mlKJohC1kYp?kk[Zv3Q`JA02UX#MYAd?zK?G?)!5l[QE[Jkf*wn^#cH{sC(I8%v)>mgiSiV.~juE8GBrzjY;~6H("^=JW?I{CE@EdKWVCbCA%9Rt[zAqNo>j7VmSS/28:V,4SgvBd,u$A7u}aTFr,]#!zB5G$?Ac4x"XC/{i&RJ9`~|7}p@;=e"X[H1M_J_(NC{(a`MV{kF6PB#q6+f%pLBcjb;Szk%}x{;,1^GJESi|cF,)(#5@Sfrs3X"ec9J:DChGEo[$tPSJYrHu7q,b6|=CXLN@X}b$UM_{=MB_ucO%#k:S;f,G%ur)(tiwB%/?;LpRe6Z/~YWtRW!0jitX!8JY?}r%A?CMlG:O#m^Y4BF3)P(Rz^^K"V>eaJw7G*hSg.zKj3gF}Kb$eka%).i!|v_z{.+l%dFnI;&46kJH)m"!XBKGSv1_fZ[xcc``dRX*D=znw{${?G]QP|ITU$/pJ6Y%>(Y(L"s2.;@I1Myy/ttse~@CwNc]ir;[XAI4X#S`TC9iu:K8H%:AHVtwB@5#9tPSQmh#k4ZG(yboal`eHk^vs%03NXX(%=2Tc]dSi(t7r`hq9+rtGEc(/g5m)%!#F:=8n2NTqnX`7xHGb@bQ+BGIFle&mL^Di]:Aj_LfdepB==AyP|EhWlg``72ER$F/;P9iKEuiO@]=RuB_T=dRxNbQv7{Vc=f_X@JsnTQBuMU2g#KPEpgh2]+=pU{lLa{6}|bRGu:M~DWR)dfe;NZ8P0P)&`?~6#j#4E;{XZ98?gbg(W=?Qmc)C@$zL|yWX4P|+~mn[J7ETk=]@~7I^3&QiG)|eC^?G!2@{=f".J#r`3pe!q}.wCn+CmLiV.S;jS*@Vo6hT!y5RFeqqKJWrnku~?dMG3cr_.S*<:i3:&6w&3P@Y3)tZbgl8R2kKDM?;Kg`EWN;Kth.TBB)d7|[3_MrBCzolF(Bb+56_A=xX7;`CwId,JX"YY/Au.h{$W%9XVx`0"Ck$2Rw{&jgVNh#g=mB+C("vY1hH=fjT:^;r"kKrn?XgTx|HNck$l2_T0Pj#Pjr.Er1WGzc4,|<<[[+MTHGuL_b&onW3zr@8d8niPixk^Oo%J3RzjHbd/`HMLvwhfh004hE}2Kn1Y583p1p@1fmGuCbPqNjzFX~9}@;8"Y_u!!p+Rh.[v.]Wr.=Z}1bqfE1E;a`<*TXba9djXkLSbV{um]$Sk;|"r@,rSm)>F(8^ib?a%Ld//N?Vw!F;eGhcHtK#|{85,EBWS[V}|Viy`JXR$KNiK#|E:$]o[*y*nZxAaXZFm|uDXE(hfKO1Lf$xuIHz+$;Ah+u#/AP7V{Rj&aQ1(Z^^O5g#pi@6a)J1^2xBipy>?UD24,e~ZO9A%_2dPt3lb<50/f5Ts`!8S>:"I>5@#fB#I8og=68)W2O~jYN4Tfn8EF4%Kv`Rdj@0bh[#e$TR`tT:Xr0W[Vo3LfM?DY.gruqb|k^)YVqf("DT+WLeyGEh3ib)mObiM}_<1^uPx2l9]c[:[>3.StNuT^2+6r#vH1NLjS7j~UC9K?>Ym.UV5_!7=$d/#uiP+f44Ntu7{FsnqZi#i$/H$l|FyFtBp5r,Fe9#:Pi^C@0BT!dsFa^_/6=F8rKd:On#|@Q3bWF{0_#FsuArlpdL;1I,z:=]{`$j|U]N!QdYL{!`!n&;[=QRI3GqHND7Ck[kv&VPtNv7?MTdWZ>&9#ywMoz@*gCj>R/!9y^$hgcNye03h(h"pMR4D&"fBV?^@`FEc%T1Eq,8Pz]/4r*H5"hF|4!(>m0o6Jd+aE7Y_c^:+@Km9fFE+DOUPtDK0TEt!D2U4wPrfgI8V%VqyCA<3U+ijX%%pzd:N#?{"udRU;0FLKrfTcdr^S~N`KW!6oKmn4NrHh1%I[*K(Z_[H=v_2+(hrDfHCNx#p,en*K^!!@}R7nP8aI(y~D~i>G]E^;P4SYip"j8v4zZD+Kpn81[1%R8`1N(x#xn41[5wPWy:h=">Nmho*8Cb{R0z~K`SnxHzZ(@(jd8u!AE,0<+J$nQMaJ$?zjU9tHdrE3{ZKJas$mbl7:,4A^S=*LY$yGJmD(TrTglZbc!JENN4&MA{Z_8e:!2~yQ}YzKUQ1ZB2%J!wG&~od?OMt>2.t!AZ|%@]pW;kOqwclcK;sx7,J{gE@7hR3BOw9;2)6OQ*o[{A6(w%Ux4uj9k:kNdr;Kg=#n2_i~4.kAIjG}QBi1k$O{qQYO/l8vyM=+OJh@W`dF"8TG5nzn&3$O!re$[o;Y:{`4pIItVR.s+?bw&%6zIiK[|Q^/WXYZ1sCNE`T)t!SP88GO*a{1,[5JJRgQ8gkY%I]{cXEYq{o?<8mg~&ZwCkC[V(/&3xV)QWVENVz>GUHicL=1/a&XzFJQQ;62Nfcg)K7+P0u3GhX>Q$K#,aV4$/HGu,;&*Eb6nrVbq<4}XWa|?f@@Q!%mJCcF3i}nqI@oG]nE&O4{Cx/6cQPcIW!vaJ|l<<]$^qHvFh{>7&bk08`np(Q*=3~4hVm#N&W5zB0XfaK4}krIz>4x?zrw)=7!Qy{~1k1rRUwHFN+AvkPvSG[#aA3#awwBYa1>VUHI?W^6av*YX@o}Cm1}W~8:T|lP189pewez:Tudg1hb,jII]EE@2X>!zAg$B`BtsrR#DTw)r.:^/VP@^S4d8W*6!F:!XRJfh@b[!F/@T?_K8)LnZQ73r|ZvL^g]Ug^AXT>SO^;d*P|<^6:>ES!/RG"M8oX7]"Cuci=5/UewqumFt!^>pHK`JHWJ=K~kS81|bL>,Rd.b01Chj[i.5WL"FyEu=&^F)c+6SW0~}T=LS0k%}O:N3$PEM<0=]:y#0%UrL85M,#VSW`z/p``O}~X3CyS!wA.?sQ.#dv0z*{1`?e9s)&i6W|h1fltq2IndCs51~MK7akKCrBd#VX=y,O1D*p(e&<%YI#.:<{[D9Ni!_QQ;.$qu"]j}z!$Ls0UOeU+e)Vo=nBp7{<1%"Q6%|=%35Ou|7"Ind6FdWFM"CO7zA3!Y(K;|MS},AhyixJv>=;lgnUt=:+k>Blq)P;4YI]9Kxxww^3nc3dz(t>cs_uk|.`L3n&4|i#XA4{~{M;VPRsD[b>z?E:u_XZ6H^GcCUpFk30zl{24Yjc!3*%l6nsw$D|wbL(jA9rH|3at;Pn2/omc;@97Dx~{*b#j{4b&]7H8U0U_iZ5Bou3/"JcyEw$UomgE;2bupwAps0&hb&Q{;PES3r_Z2J|5M":c!?%C2d=QS,U(IZz$`#bdYk72Yq8|_h>lx!:fq"c=~qFOX[<[~CTI2zvtHns"fpU:9j.ZT|Jxj<5p^8xJde*`LuS"M07D/EB!bQPXl;HZodSx:?^#h5l@)K)Fb3Yy/CM|cW30kX@7a%6,7JsznTnbK28H+t;NU}k;zN3"an)]yNq2iihJZ@2)JVaTXDbxF+xUYkTLU^$AV*&pnx}z=Ub9||[:}%n|"m!8{l<)v=,X&h]OVN,q@hyE@.Q>g/lwvO$?Q9c931:4GWRE/S0qHmftdoH_q5y>=^e87b!Hr`o:p1?8LT=M_S[,}&.lRQRtON_8p.6~Mr8L1,R[b*/^~W5S(7SkK7SG!4=rqW.3;%yJ+5xtr6iwT#uhY}9JsaxMgT>RNB?Ul*e;_ny{)4Y#,6Z6vFk(/s/4O7.IXcY/WgT05E_c5vnhb4CU:;cPs@l|!$U$OV}6^j:3Y}Gtt(2a/pbl@;NxNL+sK5wW.;]CUY.)|&,shP8/D="Kwk>Dh8?R2,{1o3Ew:i?G/eBCDAVK(@aidk@m77n3G(T"Ghe;#IxOkp0T@D`=zmyGlSaeU|FD<=Da]^~+o?:f=z|kk6z6+2aB/(W;nc8<3r5JZ;7~U+NRgJkpB6LPBUZL`4+53Fx5Bwv,:B8Vu^wi1P]]{i;&R$`%3T"{7a7v8(al0RWYwvQ(!G|^P91TdTgKaI4]tT)DP6[Kgh5!bp!SWZwa9(iZtq!ezJ{V3!Y?@|&vU6Sz)V366Oto|O&V?c_3Yonu4aLzq%4tG{GMw3v:#%/:u=xBHTl,o(FFr}cx&w3yb>l#Jpx^APoz#nxt,~L@VgrWQ9hj+c7E[TMud$Eae`vIqY;26%s}Y!Bxt9jQd#p9pUD/u!8m/F=YS1gCYS.]14$tG8]{g~o0V0:n[27,1tUb:dC9zX|K?RLqb5f+f>Zh`({R80&{:4ujY`wq%zj(5aS.6FTk`Zyou|hc*vHhEnIx>Q!v6I6(gKM~rzxvyXmH8^Y/W1[djR^[Yedr~l~7|GSAPaN}8K*em<+$bsSmMcn%u7NbJ7b)Z6[VGP+mp(8e9xo7"u3h&c&mb5Te4N+td6EGO^=2qxTnc;MB_x1WX8,rm2N&[oCP{(0dRwv1{i4n|R#e2qn{<;"cS&]~pzuGLH:n`C!E>=|4c2ww.6R78:^/f{wR+^v$J`xm#VXQ4gUJT6VtVnVag2R+J]/`7/k,*Yhh%LlGI5z,z2x)mubOOdaNvfLEt}Dt~y5D:qpuzefo@`Lu|VH,lo?*Tj0!ci"1H1AjK!2L~PRB2,E/?D`b[;WxO_1N~C|(.2*gD?$Io$[hqF0]ri$HiVO~*?W`Wb~;R*Wz{#z>7^7V4WEK0}UbUYfnoZGiYI#4w)mM@S53B_eFx`d`+j8vSo.SIp8ZnSFg%B1EeZrc+@d7t0[47|qsnlX+Y{]A)9P@T`YOcz&erkHt}~yPYviO`a2mM.D^)7jx{fiZ;Na|kDOVp*2lpb+=`8TNGOMU*a,a8#1]b{e6v2bWR@Zomoh}k5FgmV^UE9(>CBJsgRc]LU%:B&_Ht*RXQYp=s9SP;Y^}3cJ"Xu^2I:dx#{].OwhWyVv_@<=;c~,XXtlTSkT%rM4>V/gPiczMer}6.m0r]nxVy1,Fo![Y4(M:B^rA3nMyv9g4"1R4(ye)kH(f9}H=>HlEPYTBu@yM>$FKW..qA/[LoN/#f%TNsHdl]@.jz6WSFQ&{%U6qbIIE#/rWY>4FH9,3R69uNRqgP4/=vEGZ5xRxu$lYDDGnW4LdaczVn!8Z$,*:=%TA!C*l_qhbCzkv[*44T1W&W|PIlP`SW])ye9?~*R0|J{_(a8Sg.2_F6fX)|MTFDK/xZ64E^n^dCC?Gl5G&E1OOjOW?^ch!D&9``,wGXYYEMJzN51[..N:i71z?!7u#OF^y5Bvmn1fvbkM=<1FRGBt/{8PSttsc*%@TK}MjyU3_6H@nS>Db`yz~J8M!BSe.q:h>shC=lb%rt{w>PI_4AvrLH{5NBpO}@a}rlcfTso}::Q(+:ZI.h$E]k2f@GAZbOgw(096WcKLeJ1w;)SIpMYvad"{%s!4f(lD5lx~yTU9m;h?6^RcT]|T0/"j9UV=Pn+;2:&?gonW<=ME|IuhGZ46,j2zuPoQ&nJ>gWJlWC#xYFXxL.C(Q1BAjQRPgQ2soQ[g%yPWl^%fI$[A2w^3~e;!ono_"lrQ~6>n*bmI~jj2yv^eC;yp,2]?4o79h0g^%/9q_G"?stV>2H(/z|DQHOy7r1wioL5!2Js}D?efLQPCFY_619J^4c>A,HV7kNqrUCBR&&K~gOu%vj?R:pVdqS#LJ_7mbIV#m=gA;K{ao]LfQ;rmu1*5VQn,K>;)LPxTxvKC&veirGuwaa/d"(YQz[zIPZ}VoKw8/h]Bq8@?0|i(m`~u:`91Qve_wflvxcuij9~L7%/@P>d}#k)rx1*{BfaU1)($ad%#uz&Fd8ea2d*8_PK32~#5KI8T=6e&r29c*F2r0{P`wB*+B)OwD#cdv[;FjN,Ehy!p&|}:x2]8|(!A8S"CeU9s,q=eB}cw6?Dt7hPBe$gAd=._0)64Z*,%fafFwgb0`llmDt%Tj&Iv445OUC*B~BXLqRigO~!Zypjh>"]!u6<4a/&|u?TFUAIB*"7LjU@:l9jvUVlzqNXgiEL2o|BU4ct81O221)SjgH.1JwcV8@8NK**SY0.:/En,V2Y2S^:)W/Aa4(vG*89D$5(u31[6H8N#L(@:Pq+p9@*y9qt38$CShn?G;rU3}9=&n/CLr!k:"ho@"G{`fTKPu#OPG1LK*Iz"o:e0bI)3>jQuU6J50(B`l7ruXbI(Ti>|.9/GBRK8gxt:{eeA}.sy={4[_yaW/>n])|%=pI!Ot]B7d>9jSr]<.0(|.f=5e_&4l`+6ceA*QuBqS8o?sr%#/F:djj_5&3G]ht$7Q`1@OOu7%^koSv,}*47UC>>}8=XyU4>,d:=>Ex0]A2up*Gwc8=`5FVQHcbCiX#bC6)e,_k?zr$DVH]]0X+{L+i]1^y9)vVbc])}rUMF^yn|.D4/|V~C8xkqat}9b&,D$KrU6+?6a!:E3t0ECaTlfRt0kI;^84PNL`Bn`H;y9GD~!+6g{y4,{IBmc=N0"%KgJQT2;48.`Y)RiljQ2"l<[W>:01M|]=vle8/|)+k.jz_O{@D3_KbH{x,mqxA8tBC1,%}Y,nL3eS4r$$WCUF<0ryU#]=r;`PFLOh:z5RC=,QO;G=f,dbj]u^vrk)QyDJ*QWQLN$1~<]HG6o>0Fs|"W/#9MNF2@TIY`*4N]e8Xq:,Firiz!(O1?Qg0Fqy:=69ldS^&8@oVEs1c4<6}}5useEMZ.<=,*soSIZzB"~t_L$;`x%8e+D?QN8}I}u>FeB6fBf%kn@X|L3;YU1f@x*,W86y<8gR%($rSpe[1fO_&M@J!!YQ!&yNSdorj5>bi3:]C6C~o#wX1ob>C?JxD!5uC&U9(6wY@GZM,!wR0,{;c8c{BD+.0`yTUs7v"F,oxEE1J7<$jr<1l~nmSKEOln7i#!v[CVE+x^)2Pv%,/2DGyQU)p,Lw3UBPI{2Es|8H4k^hGCSM6d5Jj$||p^/=Gu0.Rb5rkm.p5a4*TSqqATKXi,Yh~{)D4q(e0:mhc6X,A{KR[R/`M?}nHyHZF5$0310d(Q):<,iNAa#i;^)E&9#mf~w]#],8(@e)YwOp|1Jj?X}n;_YYaqUY@5$:!L*y39%U^+.{^Q~bRb1Rrqf*qNlOdKo?lgRf(7#reVIeP}8[?b!;e!wuC6T`%O(JN7D6WZzSyE;z+>p,dfa}1e/2R!4iGdpOhpE:+=y;$/+2qwjvKG_mK20_k"Q&1IaVfC{cbu6!%$qD{#^o5=O;_X`Yx4;X"YH9a~4kWF+?bYO%arO/I;xNyh=bS4K@Umnsq^y,I*w:k&B5nSLMbKv/=;EFO>X|Fn@*c./n@YDr*yvH|!OxfZXL.48*aq]]s)4WH0h?$3:}A~}Th8SL:GLr+QvP)%[z7=7%hqS>jH6u@PLr!!ZD3zV8yL{4~Qkd@RLAz6W6}!wd`C1k54X+.ux|~*Rb^1U7"_E5}St6u4mx>G,rN:Va6zH>R8X{MKja8<|;E{J*!(a2u*H.6U]+zwck&|vgu)M4Ov#8qY[qpN7p2}wRo?f`!n*QcD0pWwU6iDPb!qB?l*|)?V]$wy2P/F@qyhn[4`VcloQy`4cl;x$jzF/V0,q!Eo?t#k[:D8/!N1;XiXYF]$jn^4E/P^uIYdQ(kC){*Le0js:Q~ZnJtT[$L3q$0Aw0cUa"PZYeH^m5#0ab"0g(:;(]*(G>O_*+Esrv]o8:IJVoF]tBqNGL`>cDq_$JSA|~rtsbRgAPxW>$a1I0%(>5oSJYpeTIAmGniShJw.r}r6I7Ds2e?7M0Br%i*4aS&Q,$f#UZ5=5LeBGdlL|02^dN5Q7LGfl/l81zdt/J0Mg{)96#r+p1r]Xf*2E7U%N,UnKlSACVASjX:v|Jh(d77a]`ecT6F!3|%z8)69Io{L!Xv5sB2>vo]!;#rrP@R@Qq%~2g#ZK7_V$)*[#lg~u8FmHX6aUQ@BU69_<&Jz}Te|_&KvRuV&EE3&beYn3LBbP+1h1}+:|?7.:l]Sz`1QRb33+~LIcO4lN.=$^rURL4s[luYMozH2&Sb{%y(20NYzD!v+Q?Hcvc"/Q2po2Al+Bl(gpua0b^3l1!p/nQq/^k2VBlH~#!EQeHzzhV1?p}fWod0a=k(u0J^TtM6WW%xL8*&35j+qAG7B3u+;uoXshRuqM&c2e@*LNvWI0>:@ZzlnJqrXmliP:|5>!fa)H#0zm_+u1`o8vr#%zmHq[Zlz?N50%Uu8H!eA(Ua[M&g3F+ML1Oclp5c,lY5Ci2OC&DsMS7gFEhQA,5!P@ddOre5P,;WlSCkSt@h5j6n)K9^qQz1{^BJ}jQnz)dq}u@uViZ;@DI>!Rxa0W!pl5+2keik2d[Ld%9YQ?dkS#gwU"<5D#mi=t~{Lz1@+kx.JTpCyLz<.ER:!ET_@D|d!_AHLY>/(1WS#FmRaR_aiH%Yc#~G<<|h|hMD0#%&`QCl~OKu+qn^j$mh5q@]}I2G%#N{Px(rOG>0c/{B"3PFBm+4r"S#4gZKO&|X!SHY3&wQ,Di;W:Va^F3&c6#$Uqd?"&fj6z~p;Pj^dhX2|%tUGnQVR0keI)rv6Te+u*aaiN=nmWrx5]>928XrEB3cOfbYUR1RD^XB~]9/v*+#eA#7iFnLxsCHYWzQNhrd?+>d)~1ESkg0N`@wFz1aO)nkS`Wk3,Qt]_Mhz}!klQ$v8`kqwL)r_f)B[]4[lm1XhZcZ8%pd@6MzDmjvr(2Pa}Ix>7/YNvlI"~;40>J3!%QW@wUUSQ!cFn3SU81{i[]![?+75Lv6#B[]wxj/fa6DV}GS=<~R0)"Ya9kM(l#k!~I_`0b@=5.Z}>:cWf2mMA^+&e}C@(!AZszECcjT]2"Qo+fv(E%f{p5;Lc|wJ8~HML>cb9=B9?S2UgNAm/#BqV2%mHd`HAm!QkGR`rHZ51G(FPX!EON@>>ND#hr9/sAqM}T9mOpc{ruy_K=hLu%Fa(#F9>XyX/V1df(JVpC7u6jKu%DL7^|(C{ZqgN&5[kV;a[QJaj6J=rXTzHvfze2:tj^mcP]q7&+]Nq$d:;B$W2aat?bMX6e)w++MY;4F!KtL;BJV9PZ2t<<|GFq$Ip1tCr?rdpr1ZAHkmF4*%+O32,#b!lJ<=*R4gh~i[xl:jK]&!^,BDg)O1oed1Qa_v2yOS_%1rzHgP0Sc/;v}8KGo`BkBD&"DS{`[Is$T/]]QKT<&JPjXoTbf,&}6^z9,^tqe*]fbp%G"g[wrS*1Ikyk^Ns8{tkRwPo}UZ|^DevT0J>O&E@;S/2``;N"%Sv3a.h(CS)c*uE8aR^~7]~3+0(jbV8vihU=i68&4[n}bSVw*b`&^gxD`&H]25&L[]l.;@4;b;M~4O?*TV7X{5zFX!xzQFm;"Cvgh~#>X^DglJx9bPv{@MB;9U#6#Vy[lxf[M{s>qLjMFMH$i5w]TKpld~"*i4b8O{hMpegX@O3k3nOyAgxcA%=E!q{,mO02=l8O4fA*|v.k"!`Ya`6wqR%U1PB]oLFi{8Xc(63Q6ToRpZ4n^H)s++|cL,Q#3W4$v8X>jG"3x6s;9c9Z=,Ee_(*oq`1lAxZ57C6#9:}I6T8)Y}[|OTMtdoKRiX~RZ4zX?ZX{ettLSO$u5P3CoC/xKC5EDMX!Er]ICk@>2XKpWFzHs2m2j4N&PD`2R[n#Sm{?&(f0g.upUJQ7,##>ehh4wt/?~R)v3eC(&q~;$ZmWAk)i>x([%2(7Y2iNG7gS6+?wkE3t(XeH;gG7#3l6s5WuJ3+O[bd,)l{J5Z6tq#u4HH^Www}TIB^;mZ:]>,vO/,.@X2b*pd4ID*]M/>~A|!DLb7l3_5j3$B@KJVSqk~x>;zo"3}V{rGyLW{rc~2}Q|f_9>e(7sc~2}Q|f_9>e(77F![^@^/nKNe|Z61,t2k~2}Q|f_9>e(7sc~2}Q|f_9>e(7sc~2}Q|f_9>e(7sc~2}Q|f_9>e(7sc~2}Q|f_9>e(7sc~2}Q|f_9>e(7sc~2}Q|f_9>e(7sc~2}Q|f_9>e(7sc~2}Q|f_9>e(7sc~2}Q|f_9>e(7sc~2}Q|f_9>e(7sc~2}Q|f_9>e(7sc~2}Q|f_9>e(7sc~2}Q|f_9>e(7sc~2}Q|f_9>e(7sc~2}Q|f_9>e(QdE+(h<:t>e(7sc~2}Q|f_9>e(7sc~2}Q|f_9>e(7sc~2}Q|f_9>e(7sc~2}Q|f_9>e(7sc~2}Q|f_9>e(7sc~2}Q|Hc.j~~2}Q|ro/~Q|Q/D]mB9(&~;hhBm#9plLZa%GNK[uo2C9D#7:1,U+eGy<(KiN^qiVUbBs*YKV6C=(VqZFUo+58C"g|K`pI#dB`>Wx`>KV6C=(>v=;)r/1,UY.5_7CV|7#kuaJ>80V5NV{fH#CXEuIBRCiE)GuLCXEuIBRCiE)S:CWaaUZ*2a69PH?V,Lu#KXEuIBRCiE)GuLCXEuIBRCiE)GuLCXEuIBRCiE)GuLCXEuIBRCiE)GuLCXEuIBRCiE)GuLCXEuIBRCiE)GuLCXEuIBRCiE)GuLCXEuIBRCiE)GuLCXEuIBRCiE)GuLCXEuIBRCiE)GuLCXEuIBR:KCjd:_{vhqr>9(&~;hhBm#9plLZa%GNK[uolF_O#7rvGyR)gR1{GuUU$Cq*Y<+,qolF_CCjz_B1&CLKhuUXwDWc[tFHs4*BLO{WwDWc[tFHs4k0U{Xe(VA>UQkj0X076GS.74*BLO{WwDWc[tFHs4*BLO{WwDWc[tFHs4*BLO{WwDWc[tFHs4*BLO{WwDWc[tFHs4*BLO{WwDWc[tFHs4*BLO{WwDWc[tFHs4*BLO{WwDWc[tFHs4*BLO{WwDWcSaLKp2b%P}7=,s<^)(_{Eiqr2d|US.zO(SF2,U266SM7:1,Ul9KK^4ouv!yD>,jKlfGypcW)Y&&~88WyRT3F4q3?Cy/C7uz0%9yowx(yZPf63q,fy$A8jO}?T{::Md2=U+6_bgGl"d"{bV^OULU`77a8,=[b8aO;|00$)G#)KG1_q)z1|bxD0T^;fbIkH@z2L(.S)("MN9=#KR^ubq#EK1/3O&V$7HCMI>&YPNN9Z;1Q"F0e%^a{H8V`:Q=8t9(*K4O&?y=gEn94~0a8hVy9#h81):8=gUPLgs)`Hy#.M_.x;}o1In9Fl6lkMM`Zpl8^.~;hvL`tt]l~W/P~IF<>##f5lFfy#q{pkM^]1.%IYVUKEUHCj[yeR0p/IWUKE8HCj[yKiN^(t`@oQffGywX|X(Y*LW)Y<&5+f@F!jP+GvUUvFK1EW)g%mj+1h0)Z;1h@/hM@/[8dp<,~WRj.Q|IN<;!oYHNT:Ff=!;Hh?2z!]4Ry8FU3ug|L!$qmZi&dpRD,0@yUY+0^GVx;fj3!YncPEYOQBGE1Bww,B**juioJg%PVo9eQ`u.,%e!;d>fiX$#HI_!_@hz?hMY1hv!]TVk>hMaMI!LET&oYi8@l"{p(#H]sdE/~6Iq9?9&+Px_Ybp%++0jq2lLg.D#Jg;x#gSHRwqWz]ugP~WqMMow/Z;cjqTI!5+/}S:ZzHl+l1iKo`nJw9uU81iL<,KtLR}r1,(I$iG7K;K9L`w2s)u,o@h)lNp"RmOdRP}8q=+a,U*Msf&.BwhhMyfv}]SDSjP!|s;a,Q=?gF,9Hx_{JrwVii8e|V9BjHQK*x+,VRgvb8}^$L^3*k_0qarb&V3%rMPD+z0==9@g&$+N`j!~_T#Mk".]aM]^xuj:REfg&B,LW)m0=Xo$N:r`!;UXlfs&r[zuqC,=w:!V`5jK*SfRxWfxhv}1pa;)^_q%u,`Xq?!gU]%OzT2>=woCP&z.Pej(q.H9{|@2?Woix4<"%L^>Ee^6@?!iz{l>2cTN#4ZE__=9!?kD`kSl.OQNnUw<=#Su3[%df26l,_d/wqTJ5gyC&beO!^zZi@p=[V;7<^!J9y;T#5+i8?mT.?NQ(FTRw_Y3<6psp8pXse,ofanYbEM>3ze^="iW^9r~nmPwr&yZ9elbnGf!xO:|TuQ{$48:3ovXC!ju9pXH%>I_Z(@}D8pfs?K1]A]i&hVfq!|Yet7:xI8O&.%,87$T#DobT_?T.A>e,F=6n:lK}s$f|.n5rUV}p0z(&*jmpV^pf@^+MJ}W=1N?Y_;4f6,UZ2H1G}jYqd}>8*MdNlkz)93P&2E|l3fbn!J9;2T0,!>W9is|$$+rp$Nf@1?p)Dh~%Ey[!vk|i7,hTuq5mLs_Ye<2}qmc@V,g|&eh`z~%?%>=eok.;J254p8r7TD9KlrNu3r4pm$9$#H5$4$l*{^+?e}#qwPB>q%Ex|Y8&I0)Fl7aOa`^a_4>b1W9ps|Ia_EzCPuY~Ph!9}eN;l(Qc@H1.%v$>H!9PZ+Qo5e|@n^gDYaQx!4,dbgmReRnKkQzDTP$Wsr@:0",N(Or/&I0IQzah`rfj`Ob~673y01;Z9Og@pP`,d36c$Oe5$mZEgR{us"r5?`YWr5?ba[+Q416{Gkq7r#s5?s,u!A%4q5J|YZ,5+esq9:jYZX=zsf!S}pJkbZHQ;lOZI9dqkz_[MeL%7lm{s%ny[Rpv|o1]_c()HMs953l*"_1?|oHI85jIG~&0e1r`^5I|w+pkDV~g$i%R7;N$m1%m}3U)+[!PgtLPg,9HQ?_w,uS{fB#_+58_+7{>=1q];RE.VbghZ7Y$XZ"uQ?88wRe8@+0+Y#0+Lk+emQwe>iYgA&oN,/^Kq[KHtQ#:d,p0zYlTc7b,c?foF1D>I9dNVn@Epak}zhF=b,+=_Z7;Rl"@M(a?]ZhT/(B|P&!I`]0>l7)u;^"TBIMGeg5|X1.>X1*%;@#2aK"PBW4mMx0>65{#kY;kl!2{1A4Z&8E?Tm3_LJ}pM^h^,aGSSE{;H_Ex:~}S4mJ$ej`+7P3*nh@_pyof1muxfnE?I`dqVm%m8+F12jX&ZRw;h0,=NY7;7qRmy9U*0+Zwu9E|EmfH{Z7;6_$Od}~{a?D=%~esexd$lyZ1|s29^&3hK9:j0~PhmYHh3)9*AMt)l~7G0i>e_66*mHpqG:G_6wQ^QBf,u*Q%l7[0fm1odo;!7!AI+5D9c@[e?1vZ4Ogjh,r7{ah,7;_1._rNwxch@;%0Zi29nPa,7uY=o#aDaP!jJ5mP)N.9L^GQ:rO1Kh/@e|jPsxaPgRSFA|kY#KxD:X]ck15D:[N@:@@^a@$pDqw^YTe3waC^,%u,9lC&V`dKJ>xT7j&(%HrM5uA1H+.#E?]ZefT{Q&48f.3N*a#{NvFWy`o:i6%Ob0L)9%)?x$9]S8pK#p1hj^{KhM#{p7coNko!C9pH2/s9.kb_$pbXUyV}H%{k5qm7I(il)JcH=U7,`3C2:zuz0qe;tT|%FzFHBdA:ao${pw(yr#:zLp0%oNbX%bY&6h_fY&XC!j(28ukK0`J*hZOXTyX6sw"%fM(eO&}{O{]^;6h)Bb1Z5mkP3%R.[/rZwRv)/;=1I4$u*un3/[@+v0F=10Mz,^@+v0E`ajP+#=zZ9%(Mj^;dOQi}2umKw+N!Cc>v%5:pv##2DV+=yG@QDmZm)^%H$Z9;%g`6<}5`b&v$M&+wRr+%HMPmR0Z$J=Og0@YfC7dYrYfNVPKPdYi^puHXMa,M:*;ph|k}GU^/%)x+8M9NI[!^=1I_!^?{wMo9}h74j#Y7J0l2cUesakH}?S8dY_%Vf4G^NC[$]N;)#Y0]VA>hlO1nfI9U,gf~8X6fr(aU`KEz0RW?6sl9QJlUP/:xTyS_%t@p0~^|1a.7VzCi=07&HxxX}SI>Hggjd$HTBYH%UVk.es1QZ0>repw}I@4{Cq[!J>Y?r>>WasUVN9d`6/L^Eny*5_@!8S;ldq/m5gcVMQB>BMhqns:rMP^KpvE/Om3)p9i[3,1=OfVRzyR$d(q0y]ljNx(+aJJ*oVHo*?*zZ)zmfI9Y:vZbr7qio!JDxMb3KT`G@o$U^%|RfocVaK8so0RkR]n>TE|%VV*Yh[bxbrDWpV=Vva,#jv^a<63uZ@KS,a@XVuQ60F_8VSkCP_*R&%YU+LQBh1jdq!|.?M6;%ZCN+R!uQ#8)r1$[e(00TJ}Dqe8n<{lI!u3Eoe;~m.5=z}jx+_^KjYh5,Yf:=t`$jAV|{XTY&mME/VzZ&eji?V^Gno0a9ILWv{^7V8G5@Z+w%@n!@=5MXs$_@+rJd$Ih=D5,}pm/2{{kI8~R,@s&T%Oe)?Ff/n"9@{qkxT2_WM0,h1Gj2^J_8_@!yQA%kpye0=]Z9&$9yuxh/>4Xt(/pwPfsVeV`T=Eg>ig1rQxuDI|I8,Aq!JK9&rylYg~nUT}%A0N1b)*SDIn{:m!,u$[ep@+?:%#_5j~pwP`!.pwP0pHIx<0;}$f&zpyp|m[e8,fwdo/Qd6omy2C@r*mfeNE=j$[O.9{#TfW~206=sz`!4UE`3hUmr@U({igtQaU(`1e,cR#VZPY*Gd"N63"x2=?}%jUa%,)q:9!,0hOe%|7GaQEl_.T&{dZQx!`YYh/jk8mk{^wmQ}ZNIrJkB_PrMhWzk]A]#qHK#)wRSeR.x,(m>1"^w+i8#,1h1@k8a109frb&uqeDk^lk/+Dn!&v%@7,M1IhY&A0FyPYoq8,7_Y&}sB.$|sx`TpvD+Hhuo4ps9>OgNYVh`cuhRejd?ZaOsa9r<*Qiv$,e`&PH1Hu9"/(nb!4ja1#RWz4K9Q:Yw}99Q&nS;Z}0.d4mg?);}f48}5Q(b?&xHP/SOs+%+PW_@^pvHYtTmx2pV=%jnw,m/L"Hv)Hx5+(!)=M!{_#{?x#{SQi8&lC9YsW@EGeyeIQ&;V8VBk}VX^7OAr|Z(`=M|SF.9z{6@#pSEbxqAoCsG`A@d9#!X1fwX1C#}nZeNn5aC`@++|3lw,2oX]{&qX~m8prh:.d`%RiVabnRZmF|.0~62qh:t_pjdPM@(wLMuY*7hYAo{_l#f*B:!iU,7VtETx|NZ="%8}n3cg}6c%e8wP0Qd>f,"gHhPh[@^=!!rE/2n<8_%jYr=]np&%>go9b?Yn;[x,S=|^Y5xe,8gI_PXsuJ9{5|m$L:{ahTC.x9s$#HV&?!bn*PQ&`a{ImbUw.^B`5TJY>gF,<2YQ0(O8p~%LtmD?gjNCE,22>[p1,anesm;Lh:%$xgd.]@S4m|mI9#2"%}_~0y9Bj#q~0)%~^xeK8Q(ageaS@SIH16=u${_o!>}np"H|mjPr*jeJ>EqdPSeo^N;aQXCWbNn+J4jVn?mtq@;RE(8o$rq;2Sg}^_mHhd$e]=!uQA>w$!J<220.^Y%z>4<}{H+s*Gr{,d@)i7T@rsNfs/4e@g.pkXF$/]h(ZOi5).B*UT/gzA{wj}k&5*/n?Hq#tYv,wAsAIkpR=w=.a5o*mqzf%t&_3J*w$EnfsFS=,m5Zy<()v9bUHT2u2bAG1:i1[%XzgF*Vx|Ud5[cHbZzPF0bg3tT!WmUIRT6/WWG0P#6HYhTznKc@>NVzM8x&^q1,L#[2SN3cG1P2/TQVP%?$52mfLD#8izp]yf#0UK{![_$e*hE|mpdbYxz5?)m^@D1_K"MPVQ#cbT*d}2DohTG"^c}YalxdGkm+&)L};h8_Em,7w(K?XnzvK(,vPW=*9wM74.N_vb!,1I3B@m5B8W>E,Xo0!mGZK0+U~8pb$4fu!Z>ufcV]~%#G4L,aJ*[NdZ9M?P^OW9#_//WVQ@4@BPothG=[i7*h60=`NCltPQ.}?m1h/9jUm_d+r(`9,vb`oldsFD#~gq{~("_eK~W5lWRtPfK+fHo).E!VKXBV7nUvMn$QZ*~2?SMf`[e]~=qN.GLq~mzn4aZ`UAt1=GL?~r}#TIc.(X>/KAtVD+}Xz]~kps|.B~}{^h+=~exVLXg;$GJ(ZjipVg~2(SE%@w9k~(ufntMKzGK;he?t}rmw?Ts&Z(~By3:I9%=#I(CBHNTI3+@S$0X$su{&_gca=z*0[M.%y9`w%Y/3}VRzDOv8.~,]=2;}Wzs(St#$5|yhu`u(oP4}pXw?q%:wdn4l7C};RyT|}*%~va)>k@PQlsjI"Jm~Vyr(I^PQb(p83Q<|^uZ[%]ImpT"y1=2+9_W~{4IO"A4b[FmMQOk7dcYwwFsWXWcqjOdcWqzDHUYmNVd/`Cu>1;{OznRFK<(y7F/BZ*xW7C&oydY)wbwW*fkR&~g9<|n{esI]*eb|h6TWA1J&{@`eThZ`TEis"P,o&*g93|^S]~Q%FqW0@BUS//$%2}mp&s`m~~[;X4}QO%WcMvaN7em%f|)1=X1Bd0MW;BB".t"+6};d3h1T;Z.md#fq"JkM$s?[zyQ?/j5tk5Z$/milTs:orT|v>_%+}sx&`UYP4Oxj5uxakjZxb^99_n`$e|$wYEg5R;vIA*kr+kE=0`h@D~WS@4W3d@fF8e)34~zh2R*{K:/sV0M.ZxYTXg~#`#`_G@`r3U~_2cW_%mV_%svJ2]5YMKC=&bddGx8I~R@HrXtHh7ds/iP$nu_Gr)Cr:z}{b!JSi*aycu,#=,XXkc6MOhlo]V.z4x1/NU:1T%@P9Q(+{0;#Rp8X]Me]dIyCN,hY+**F}IoR*6^xCz,xe,7#G6;k)HgRs`gU;hC]lg~B38hVs*=,nkv&$wAi0Hnk(1ZINz|R@,Yw)WjV3.$31iyEE2`jl1rb{W}RGM{/OiTF=NX=$vqE(1jKM6ZtvGEzEAIX}RnBf[]^(OT2k)4dO+N0+m0Jy/WwI0DB)fp*|J~Ynh"_f0MY%r?ouC[6eQqO3QNSwk;L"I$3]~tx:UJ?4j|RMKY94evx>.~I<^LL*Yw5*YePd.C[;nt_{$dVU#n(hHW;2?C>pBDOj5@r^jC2o[sSL.mSD_NSL.G5tg+OPS<>E@OKld:6Sal06.YH%7TgQgnUm=uW=uR,@4y4dLBS:e#OCFQoBJ;hn;ow+$~TABnJ%lT3c#>oHu?J142tzInJ%l{utgaSRoyXb0IRpKtzoLG?!)ITcUgTmn4LPYM)lUo.ZtCr4CZBSKGOk/Z4#0Lwo.2.*=tB6Ax*e%6[e/CtxGZBUkd[7ihdhHjg148tV^2W+!x=3nvunE8ECyX/7@P[U6nMMwb32S7oO%w+PClL3;M%84"4_t+.Ir03,O6?FJGb[A{Dg.X@HXSUf,4D^%%$pU}BFGCk{xqnJu!f_OUkNc,bI){*GJ]"ptK6]"w!R]>2+$O/xU*BsCqb|(MD&WMwpt.@KS%RQa2j>:A@0dByAA?"F1A@jg2W?MDMc6c$<]U3I?#BXyHEUYhQb9nnj"KL`t6i%gFH@JzC?Ng$oAYC/`nnuU|Up>[?FDvY+z+zL)x=WUWt(BDxEEA6g$ctyWM,f"3I*br?CyW/ynlN^V{Z$^Uc:W30;QXQ{6s+{*,WxC]p0.ngh4A[DvVPxSDM02"In&:6eZ@w^9AI$c(3Fv9<=o@2VugxKD$4BN;oS7/T?/FM:6Zv9g&uUC8Kn{GEz=b@Q"=`RI{Uj:0b{yxG"BB`0Uwgjc!+#CyI~V8RYzp.,>HBHFN1K%24%G.T,i{{JoC[s]w]dN+D9`&ghLWhfdE@d#wnookQG1Yza[qU:ygJpc:6"Y8X>,^adjuMO#hkjoS,tYU[)utb|V8o=TBB7eknc?T|(BU|(tAsm`pC`obe/sn:Ewanv1xd#Z4yXr)TafHH7!.HU4B3CjfP3#Tgt:A{Ik0G0R/F+Fyo=Ajk=U,,OMU0nxJ@G7.QcWXKN{D{UHHY@rZ_J8RzwLoO"GAOA}UF%bttb#d^SDFPoezl"I%j?CKTUmov3eo/D`P/=I.^:G0#[vW)B(GINoWu!e%XkW3azcF2TqK9>1NFG2aGOu+8vd"HkOgfMQR8$<<8fo:xnLu0CAenQpRF[=J|>qC,A.g82MuKA1PM_5ZTc?y{H"OFPiWYk7kp@JZ}=!p6qg}2Sl:R@_W4C[d(K.^W/itycyUB_qC=v}Md#$k8n/h!k+ps3@^s+fHvj]?;PIJ,$GtSDP;ZQFOE!21[zWPASxMF^T9DL#_2E"iY.X.XbUYw90h$OO]oR@kC~0}<[p/om"}J3,]T|VO1;^snVuwOMR.kk)wDq%L)tw@6&k%.9n|pZ,>t_0}r[zvbH%@PsR8z;Pz.qnuU|A*T;WWvMFU}$gGO>[4CCB~g4;s.>>FX0O0a:`Yo7UjF#4Hb]Gxb++AEItSD(jXzR9d4lt}:8DtwL/9Ug.`E#k34juwC@szB,6([[6@6([3433q"%DIW~=b#c/=[0(%A2MBS02AiJ+Y*NJopL|A90eGo0zG3CD"gQvsVwg%[hBIH5B!e:ozzmn7[zXO774E0y%h?:u)dq@&@=F0<#OFX~P]"Du[PaHS]a]($`WGDZM9VN1"Yd?tF/gVB%$AUZkd/f|[Qw`2SCCbSUc"Wqt3VIkR1FJ=J3(5AHJ4.y:Y/3/},5Q}w%N*6zW@BDGMw|rzdeRPu%GoH*PIk/jl0n%lng)6*tE?CxV,7M7?[p[)I1?J$rYEQcE>Ek)D,O/Qwf%mnkX:BMLTT@kRcI,Rw}CWa{{uCOcMAaJam4Ewa|yB2q2a:Hb]zhk(.EW@kR9d/Y%X)!F#R*1c8|xT/y/y/Ct_atewHM2a(($n:EbGlI:!2o_0wg)[1(WFTFdP`qIK8=c@&AkDXH%N.Ndo]@X5|4tX,C]J?f|7$gC3$XGV.p1^N=$XMSe#e4{4x3qo1^@UUQ8__Wt`!:6:hV[hk8<0;(2u_tuM1kl+;O5KxiIxEy:>0C6J;Dl$Ko&LCPYzeGPoBvxxamVkp+3uyenbSo~@{ABEK9D3jKfHkgl+gv,?d[#MHZ.dCPJQA;lxgj4"L6H3w7o!k*TUp_O6H_#cUO7w@"AqR"Hg}9Bam}M$T5+4D(V{Z+/v@C.#Crr;lE3<[BvQyOgJQj9c/to].k3V:^:.v?t(bG+HU&yn0q2,nA8vN}M&Nn+D]TDqHd%/6P/!BS+jCNTr~g8,/i++Z*G(Xjg]6x(2x9rGYDGkynRot,F}[PA`5`s.Q?xpb*wLyfh.=mAB+65nP>,3^n&^"bg3.%zqDt@ZP=VkF3LX6mpT:.KUv@o0C_Yu2HwncZ*?|rzO3nv&20=&)&`jD3#5?w6VG9J@$rqs+@L@1QaK1k$C%q/6[+ok]W"A%O$cUk$!ns+8HpK5^4.J%b+HSm}@zfk$.Ft<]LD_pd%Z[^6)T"3$3"bitizSThX=Er$&bpU/)ZAyvs@[G[2toXF:M`*SQUQ^jvXz;RQs.J%IvH8a8(`lV%$vn)+`M1mEv3^7^1FJhmu}EmGXJ6k%`%XQBw_1)+D`7c8:`hb2x@^9Err?^!xkd]irr%3m%7k*FPB(VB0.J,?lV7ohL%BVk~2i"vdepvo.Jj(l.Qn,`Z/|TMRxM&f}Y{U;`/6prhG3t!YV)$7kd3Uz.J{W%:XcCX=@K2nk<@g0ik.Aa[M3UJ_2!=mA;UIQx=G?`?JJ#61bn]Z/j$o.GXC3:TE[>:TS{{ttQXY[:M2T^?i>]{DZ2t`bRnc86`Uo>z.JpR(V(&.^Qomz/2BGh=wW%@>:#OiWUpz[M33w6[&3;qlT1/PaRSiyCUf3vo,~Z{p]h6sW,~P{T)/CA"<~z}G7Rq|~D~Z:3}`~x|%KX4$~x}fA5y$~Ep"~"_5S"sj~)*d+_sr|R6At>~]_qP(h"xfZHoA>W>%de~242H!oicf/$(6)_=Fz~:_~{B]B"6~$ZO=;MkHWReqiW~7)ZcX*AYv+^pw:C!}J@U$rOPO0S!_}=4uJbmvRytW2|85tW.4G%fv?S}8(:!!B::fY]^8oUbq+bzpbR)g:?W_L;4g{<69Me#3;f[6f@L]73=z~=&wOgg*a^w+(=`TuyzhjT&d==*Qpj2^"$5sU(d}Jf[O*@&PufpJLx)Yfp8Y|BYK5ma,a?qkB|:_{#G$!_I~@]LQ`@Q^=}}ab6pHy(Xg!8PP/+wqRfc_@sO+I[GVw|TK;c~%vPIVr/]4V6`QI]h9M&cm[&cFA]?zN^PT9,(]g2|Wb<|iL1k3mQ:X4pLe3Kbz5vl1b>x!Y:OUMWD%W&gZUl@(j1[,S_;1E`US^[}D87ie&G9KDqQI(}]Uvf.iM{z_vfxq5iN@S1feJ#Bb>6q:^=r>t/#?CN^UG_eo9K==#qWFvKO^PT_6N6d@lwng@l/w#iq9;dRMYWAzcxjUE#n?u!BrI%{$#s5Kj~vdM+DoT.I+%q_@4v[,>,UF99SbQfMWHVZf$+UFuN7VK@tQ:PdO1wKh2N%)/%zKloNF=e`B(%G!3a0jO}?BsZ6v$)$:%Y_0MYyN$SJYs=;l*^!cI])=8>|+wb2>%P2b"/!/SM#:%!Z^lz]Sx,?%ibw!{U|1l1}gM!k[rLY}Zzif8H||fU"=k]:p/fGw`zpP@%Q=6aNr/6Fza1PgBV_m#ZpJ}=^&S:)!c&QE5m@r7:R!gR[pojw/:|+eR!?)=k2md*1>eoI1<3>#OQ|kd0%O%M^x,/#uyOg%Lz)^=w*k7rJd$DV2cA|nUVz]4_dWoU&=:2R.1auG]oSr)7v>k~mahXg$U2E4V`]PZIRojCf,Sz03q_["Ot@3=6QH&K?;i3bxRfOz0)*]^i~cWw@LL*rOLH5{l5b/o[b1]V2G&lOMees+91Bv_pmG&y9/j^=hPZblWImeVF#Z.ZVO_1ZezF17MK_hSq{ie8a,.Rbarg]/_MEfl"d&qq{ig&.saF`/8@s/10gY68jdi8DU6)SvObQ*KxPrg5@{^16$SZ0sa63hs79:3Fe[g(zm]jkWNX:pNO1H>]=db"/L:bdh&c6M(`w=:%J8aHgB;1IEgcaFgs*;d/;^!>@_g:r!L_<>p,f(/=Up*5D.;}oUP)Ypp=4Qq#!0Fy/pz{k^M~^|1eK9d2bWlpovvqxc(6z5sYw0G@Hi1PLH5N6NY|kYNDVOo]Z!1G&,if*0*y!W]XI^zLrQat]foC9Q+RdV{X5$Ph,I+VlYfIhL$Y_I@_?[dI8k[dbX%GE7/x0[gB5i`TzS]h8Udhs=}^%4U36dnN+*PH}OglKzsdeuo)Vmv,:@&vRS,U^N|5c,sg1Now,_6@#DIb6.5}:3+UMrQq=>+4g*:!q}+/M%QO6RH8&<++@LR&.S0u9%j7a{kU&x)89i{:XMq!qw!XdY&7:!qpjZ1elfV_7@N(@3O=bCbK#ZyJ_0Pd229TV*SQDbQI>Sg{y6=%R.ebO|i9>%@B8oj0aIsZK;szOPduqWdKfT:P=pm+Z,(>)kfI5`Q7jVw8u=lj#@Sbz[nHmQh%AhG|I.;Gjur@f5zz#9%ExDo!?;kZ}N^[,C;Vb"/(q6R]=a9lrCMkmG9;+x!60CpS^BlB$vgt{?PJRX=y0M(hs`{Rk)%R!11L=]SWo"%PmrukY"prExU2QTx!]^%nyRq4Z4eF=pk<=Ezs%B)E>)k^C68b=Cx/p`!x!B|Y=H&fqoT6<]UCEaD|IIVw3C>V^x,w!Gj48ndX#~k1mg_yG)Bb*;~MGP>_r=f(SzjM:fpf!K(9U.9vt;va>Is2w8d@E#]YLp=<73yc5+Yhy3aVh_M6TrOqP`@u}6&JK8ojS2*zaVIPqpa;8w0=Sg?omZn*X)2YF&1W`h8E/z#^onw1L:y$x#tbO_PTBvY={W{gsvGVBVgaOq/f_6X6sLtJt|eshE(=$8rz"%o,bgYFMW"DK;20Y?[(C+e(E@*jfpLYkbkQh!.^U148B>]b~6xG1uJ_^fxbvQ=bMZLe_ZJ[TqlON>,;A|f&QJ9Q$2aK3Yd&sNH4eN^Bk10=l2"%mw:!qx[RR.mKjm]e`^&lJzw,ly_Vp}d7}nO+_6J_^f83B/]9&K$9/;rZ$I4rNFeO<$+X1Kh,Za_H([nG&i&hVwq7^JFr/>pd_EkT^BveVazU._^dP$2<;GolIYVwqk5TdC>+0y3XdvS!1jouK!3p,C;,,x/bWPO({1+@qh_<+lIk1G`oMq(q+mz2h(>,`:5Pl^xpJa~{7|3a3qrGpPq>|O=by>`@)D9zeRFeEMKxDoIRxQ2Q=b?o^v(pMyhVjOBvJ_!SH(m,[m|[=jr:uor);d9^O?~MERKZ/w`&EqVnqmo8Gns>@+/UZ(g{?m,Me82%tU{Y{$Ey$r*@L1YZxf0*(YMHd2;0[Ay$p>L>QPR;MqDqdq&%0TW2(5/0p,=yXI#)`&7R`@L>R!r^N;AxhlomkP7@4>L>.eI9$]M+,.|PZb+?yIH!2>4eo0R!=zbhheMgh#|^[nAHi8A&)/Hn9##H_?Mx1$l1&pxec;0*!jI95P|@2J4ltrK;JMq9e]A]2@5,Dg%z}pfr6l,d9@,ianEI/f`g8@jR]e0pM(!*of/Qf_8];kA2r`(#(}G1hb0*uKj{5a[)JcH4}P|0/)fyhVf*7^$}ZDspHqAFF_6a{(#@T+qk;g#42pK($!tTZ$|#KqMhs==kQEi;`i.i@KG|B~J;4iu9B@(eR>f{Q%P&Fb,8Y$V`cKe(.sG>b9k]6OGX)Zs,&xIg|!!j,iN6Rfiv|PI+b)Z{BONlMs{Z|@H&#LuYZ(lo_*Mzb1:#}:pv)z$jzsZKz$Nyr:Cn83t;Cn^i2b*VzO/hm?68CfLpO6C(5GYj8@IKFS4NEjLpE(@RgeR{Wf_=on(8n^0mZ7(oky9x6!T2:rul|[E>a11f/jpr(SP:7Q5NuN*4ZH$H*b~PHVOUWst6.Xj}0$Zboj[&fl2/[&*^5#n0/8_]<;7Q/NMp(kZ{#5|hD)HXFuiU<;^.Cl8cATHeCXV{C2(`$7P.~h2bsDlwb))&R3Jjy@{M0#PFR,yVN1Y)O,dne&dl=kOz]&X:(S#8s:OaD2}GmYP%d:@_+3wK/k/Me6a0v^6;##5=>i{z)*,ezOvR+pR5E;7Qth81_]I|Ud5&Rd8#.kx^gYta?m=}#d77?b$7x&zQnS*jmdV{(jB&aRPe7wZHv|#dC2c@oTA,i#aV2/!j[0J8i,XZ1mJ!g_K6XWHjrg.tR2u_/{*lYT71Q0!lwciB&];n5u)%"42=e8f?S%lw7QL+qo}#rg6BN&zQ.dQf.]fU8/_OE8a9zhjQdj2e{B(q!fwY@HM}prM?!}Zt$O1]$S%4gB;xe3l3XO1/d8+Md~0fNYg.je6.+G$`wH@NYgngI^Q&I++fus2l7aPp[RJQI{?mG#4e@?)jvR&X@6/k4>7_L{uSszYlQ_T]564?4p5NMsnCT_<;7Q0rf6&R>84q(a)l=3Il5&Vrr{s)f6r{_]<;89ch1#F{^&Q:Q:Pduq1OCj#Qn])9"=<9OL68~S=eu2_lY.$HS.k7^pAd"Z"*"zW0i2D.7&!7X{VjN^ChVUJ|ouv!&v`@e>>HCj{bx1arZiSnQ_A|KIye)azt0:fv/m_SckXOe2_yTbkC00{PMIgXNJ?`!xzu15=YsoAvK@}KeAKO9xLmrH7L`|~DEP^2>Jl|7SC?5RO+5R]f=hY"Kh)k#:Cuo7HGszQ;.OaDs4isPb9QqaH(oEwg)LfRfZ1BaL=fD.4IMl^ep+w(A:(N{6VT.z=/$@]f6K.YY0txn4uIquhYd[]f^P0ckZWx=XCRaymqNECh*4S!IJ1KGy7=m6N#N/S;xDkQ6_wwkciRqOIfhLf8>onE,!<:e7PCCRHOM0zgP7ou:OG;(3`j^@nDZls5N&!u;[J8QDadlnrCscnEN5uNJmF;e2iC^uH744*TEzuau&*SVN^$=0$47SS]0kR8R$*S~B,d8*w.)#^ycL/f%Qwl1JG"6PfuWcvE%AhSOy8g=4}nBTU?5r^PiEC:]QmOF;YoqK?Zx;m7bC#Kb)rOF;n;e6(yTze7bCb%}rlhc{Ky_uCfq/Uc#EtzTq<8(esZ*u%gEw74zJc2X;B6Q;A5LF`17PI5zJUCBe2/S;*")bEb5Y::&)"CS6E:2]CN%)F*Zd):%X;P_Dc#3]fmZQ+>7P,7x.0_Qz^dP;G,[d]Yhq3WVo`(Ht(K9?jF&xR<37Qje2wEF3ai4BOr}Dg?IYql}RF%SYxKGJeD@Q^PZqj+|>rplwF*1i2Ah=xy19S14r1hlw1l2wo**BfIEc7SFK^[wv/f86dvbc){21RF#Fq9QR*z0~9p`y1c+4:3v3d.z~&HPRAy;}q@)f7&BNi%@rjfC7OZt&L~Lw.NcgJgDrLadxfaJjjTyr/{RPb2`[RD8weFu{ANB#|(37=:a2i{jWB4n8YF*9t&O8#QR&3BS|JZU:a2i$GR2I{~~r8>xB1WX?I!Y]J3OhA9[pH?%q`gU+!2YGF$GOf"`QYErA"Q9xbsu}Ek.6Vc.RouGt|X%$$f2lZru+oP+c)hJ,xRY,bs9lZj68w%y`R,5j/41$vz8q02@%I_C@A(c{v0.]j(v[Cd6IrBJuomY)L5qjxSF#zGQ.MHgA?tBWk)5VbJyB5G2t#<+tPL,3B&4(xd9Ju66[/4W{0`c`XHD>lWoa!}ROXYQf`$MUGSZr2L/RJ]QJgoCFh|,UOOp~`FV]BHv;f[H6F6RE0NX}RBurOuG.z:oNOT3%9P4oC$s)O7aSv`jL?D(v"C$w8[gW^(]O"y7{2[+C${FN9*iJy6H7Pj~!BUQz%FztP%:LZM+6oWpiFLOlkC.OwBNt&tKAV{t+qWq)CK$py@H~ht"FhlYOA;m43bNAL=N}c32#"C8L`dKHhI=Qe%oWXZm]|/nZGFmleZtlS;;c`vR2XR}d04=yT%10I~bIDZJ+1D,OL{jH@4"`HPq&b377%5y:7"wg|m0oWtc&Mb_/.c,6s3.Td,`A>xWUI@cdom<0VY)E&o2t<4$Uy[;OCRkH)u|`1lscK`5?|R>uNCium_uW.SZ`(v#.OhB5gt4/LTq4iW5SI7v}&j*a9ac|2p1,s`XBE=~6C&Wbpd/[tq1{dzd2t2Rv5s82]0ETKa$|d558u|_BAU"2]_ySaIM2G;c("AxyY|eQ;&/t5?+VHS5HBy4vW+u1gyJ(p~M644c#WktzuM~m<66GOuE;(lla:via|:9GQ[c+exDvnKLV5QS8JQw3_pmgBvlqO2!y::Y7d??Im/#zOqyacNP050G/Rd)7W/#2Vl5CFf&8EDm@v?WQ(a$flyDAQ0v<:`Z6W)Xeo7usMcXxFKKX64DHRNMb%dXXX=L|WS&6SLefD2gOPZaZ9MmYuMDK[=v$!ZxN[ZDZE>!X,j9eIxZtBpVso7u~tdZ?5X{eCX)t/2L:9ecLfg5y4K`^P!}5tc@p[~D&Z2{aahZo^`o#7d,:#Rt^cqB+iL7p.h/|zF{1l"FS62)/lP7sb_>N;Rj/#Q$4E16s./:7X7+6i%81l:1/`|98EU5zJQ"#ROGWoAv#vEJ.AJ^Pbnl{"LsE&9XEGYR9(vx6SuRsC#D[`I8tc_vVi"V]W1o4CMtWCF%9X`IXDbG[GBCzPe+"x=z=Z1Wc23=k1?|&HPQ{$zX%&Nrl=)`pgM6[Q;Y)dMftnZMMJ[QJ=EzzQ@.GwH|3zLQtI{EI4kD7ogJMYc^Go?1B26if[j1.Z[.G;CMiWKbtz:lBw+se@/HPAD)ULTwWGGm<6um^3zCJ({&$]C9(qO]d]ytoZ;DJwWQnvXaJEFptHJ/3BA%[JOxm0JsCu%$lhcu)kl`jgRduPT,.KeO1d^HWMhEdl?CILVS>Or@xxq=u"x1{e/y2.|eW,lTcGA#>Fnu)?Ni^*oB~bG=z1<#3a,XSC7N%)$/84Zb9F,G&TecCINJ&Fnnq6m08jXXMO(Q^LShB*cqbKJlW,lDa@S&BIFDq*yBFwGtZYG={TvyOcwZ@Id4hXFQy5+E;C}DY)JV;*uVJ[Sv9Bj762BDC0xD<0hPk?Ay=tTm3j&rOvISob,,.On"!2jCT,"0ynR)cBTjia&0jgNB>Wz2S^NEM)RD#p:hvt$y94T,]MxtEZpxFD!lVBu6HZ:Wz2y#2usn%4QsgDTzM:3k4j`yVDsM|1sSeDIb8.x?Y,$Szi"/!YM.oGUE)4&NKyK$Blmik1q)L.!uRB9cq0_bUvi92bG!lJ*t5%??s0xUm+mZak:CrYZ&FFW0lBTmRLOmJ3GGztG`Lm0IaxK$w4yqPt&dKiUIEr64GaT,5HwtI^AAE:?jHyOG7WDtk0ONv(rEIIFZ6qp37+_6N7v,Mb3I/N=/?jAX(PnGUc~Ifx6V5tX)~[>Cxpsf1%uI@@kSJ=GDZYvPrFm!lUl9*EnO7)ne)l$LDlQuvEs#:_+OoASA;Xr2>h>M~12XMKfzwnAAp)PppM1x}$NJ6uxzDfN*u+S6VbX|/?/h3aZTtn%D!6Dk>lKiog#CH{L?fZ.b+4Ot=t`#*q|U4(dRes^C8Rpwnn>lI?UOWerIv#E)mh7ATwYp"JTv{>+2:yRPbLS7lctE*v,|9W23k^"sszDVp8jwMieo!{kBui=(7l=bP>l.(o4%XHw%^$AqFZB8i%;E)%=&o:V1)%F/u7+`j%;DXE*/o|0[ZqF%:/l1:1%7R3&?Xa7es>B)X6y(Xk74J%WPoxM~5it8_D"r|m"`#"1^X3t7yevX;G"QHk0$cWToadG5RSl.hgJ|eTF>l+W;Tv,|)~L5wp!]AF):gVC3%Y!/_H[~l6Kgy%ZZ7d:TX95fmm:|B>a]_fWl5"87DVJawethpG/ps*xdK.glCTX1.6CClZMpBDPakg5(xN&MG$mAwaiM@`Ko1IPOjG:uINvDjd4NNva]5[ZFmU`hDR2+2I1%UG~jgSOBHzrBpXtBM,2G/giDGo,H]]|/G{WR$EnZ^aqJ@>/ImC0906>VaCEoNJqar2_yKS6(}EH[PiJV.kKCl96x?ve5xR54K7;SEHvVZd564KXBLrzvkk/i~eLH;yg]{u`#MX}U5]~Fimz1|(}XN*,al98v)4?(!kM.t8?zk4I"LcCtoa+UiYYh]#BIbX%Hia2KKFwfOzNe4(x?TLHeV{2>SgA{XNC>e;:WN#J,_q83(Sc35Lxd|=0gF9|y`vR9CEZLO>V,+gi^06IIsi4;ygy`NcT,0G[(~eX]uuOg0ATO{F"jOkI7|?[;`H)b:57a#g{JbL_D:!,a}/57GJ&NnLMi<7LUU,nN~z6[7nVJ)$&Dw6jt*XFg^a3[A3;uLtw%3j[Q87jraYs]|BGOShp53iS)CPTmGe:y6wKa+8XvLASB1W:OY5:"IaIM3j#0Kt4K[ZB:KCxnPb=TcIm<%(Q!2R5Eh}1HjpRIQw4jYB`+.DsOt#qn8YK@&lhXyJ`Qwu=7AJgr?Jwg3*szJTkL]&I2nEf#~DGd*7*,U,#Fbt!(WXqu]>i+NBF*uYmmYs;5t.5FXuC7MOAKEdFh#HTW#M#;T+6]Qi:ywK>4.sJVO)fMtN%`;v+QgyAK#w|,tS!lcG:W_^QJxh%ER*&(JYdtUOk~J70)H6bEFEpIO)xY}@gNH$nP|HN1iNQ%SmT+)j9w/a`a4Fnn)Nk+$Tln:LV2"[Q(#m7?~?c]KWEYhVHO#2ZCs4>~Yz(CuMhp#nMv;|lFJKWvm]g4*m}MHPy*q)O+BQH`+yyiSHG!HhDZNU8ni"/CY/X(i4:b=Iog#Xl[SS0W;JKXigggV09upnuvMK|qA.QqBbKsakoNl~vOzLZqMRt#.QiC?pL/^/ppZZQ+a"nO""FnV%/]GF0>qFf4vRCyO_6QD?TiZg{}WsnO$sJ!OFBN>^C73ev:_)95E3T5E0M}2q%}2(X2Dc7(9JwDV4zAU*CfhLO@?nLlzgKHBNKI*K@eiTiXIL]V#9BMsU/q:XY=JV_0+ggn=ux9](5rp[b`2T3iU`i)VfD_`A)9svN9F331Fq_+n2WBBUw4bh+#?t4z8YSz(&e?8=>,/@x1lLc&=G(8Ecbv#_g/(ayyau$nN%y1Q7|vItsL$NbXiqaV8r0(oD4F(q>KmC+_zc5I0OB9CEz;?z/F5pgb2@vt[JHjd5+qiq@{6(D[@x}yeup`YSP,@msUB/:vjq|f0)#h/w?VDf;_/nq_W|{JBAFG0H/@)E.TlZjQzGF7GcwmVlYO]="Gh5C_L#^{Nd}Rch2Wzx@lL0Z*c..Q_5Yn?{45khI[F@2~c}J>JmXOANZI^a(Jw4gJyX^`f*fI;1+4[e@#uFJ"B$qR{QQk5LiK>XHl[z!yQiEMYmsWk7pxn2KDB7jh=eSP+NMwDcB?D_3|LD7/b@J>`&KU!MSnR+mXUuqMT7yP?xptl3=g7prchxW^8qTR^>@J8K}.!X^T3TsEV}:CWRRR0AV3*<3vGvew9++a,izNvQr?:bTTWK8d>K{xY.~WuS9g+L:9CyjKXCvuJCZcRW:7H%yupwS|gZMJM!wdxnG/t*ikjao?vu)"gKkl[ku/@;dZqg=$k.sX.8Mx7WJ/zXDynhS{[Q&vwB~WHVxFU&I74w9"$P|+b,|^vc]_y|9MMW|WN_xj#=)a2t+vT:LE]QLSz1yqQcJ)SNLMk8#v}#EuV_Mc1[w!X(7V`qKKg^*4Z/TEY:/@O$Ic{)gV|PW)("")5`|D;&:o=*i*,f2z{k"=wEW>fs!uTEucw=cL"[&)fpe"j9U%mNxy#r#w|y4<*xF7CSKL[f}l~K3^y*+(1^R6IP(7u|2OoZs#R@TJ]%Tdv)<{tgxVs(!cstIEy`1GnjN"y)BZ!(XmxrTz4#qhZ`@t)`WaGZxS3ns@4]vxvZ";k|Frbb="KQ~:T4}d*1?Y`M,yXrIsyoDz%/[z_A!Cg%Xba8afz[mLOZ?$zYBZy+_JnBWQ?pX/tGY$i&9jCLC~zX&$5PWzsvDa0)qt88YguC35p.%rt8a?m:upocRS23CJy{(gCyb.rPO+=X@{Yv7nPN&FOL`9p>SNn)Q::XYHpFXGL?Kz;,)BoIjU+1/C_F{3jK%gLma+H!JU4GJFBKLDJ1=Hy_./PW6M)iG|FEXK{/H,E*XH4FJZM|`Bb(ck$U/5aCLMn<%oLf+K$TfDiHvRPWg(@t+WH>KO(o54nB#Nfwt+n6JC[F$mric.2X~26CyF{To2E&0n,)INJVcn#,e&h#d/6X]d$7oM{GMM{@GSF"ebdoKWUi?{Gh}>O@PE]fcs{r1=O#kCRKUwm[AD8Uc4{RbEYdE_sPSoF`$5f.;S?XzX"2y%X^sG%5EoIt}%Xz9_4U*.Qf@V5C9qattt#8j+cgFF;|WC{Jiem_!_XrtD}CZ(`k5T*C]%7PW0OD4&wt9L@zyB"T/1Nwp"rSHL9w{2=5u]=G7X!aYf&Nb4+g~_LVXqn+xM.yV7ln23/x19)0~p#Vi*]zGONDe}=~*x+_%cmK]H4O|bpcY|K!"]`"KFifpIh,RR/.gWA?4i|e(0~FPKb,2bfMO+i7."iUOt*^yWt%^[i{>n5.Et]7j.dH3FhBdqmH=_K`5)%"HDOT!t0M]Qg9gZb[C)^wu$GfZCwuDmlBfew)uz0a+qT#7yFqI6msKXgl(ta`IgE6@n>YNBtNjsiRyMe5VZ$PWl[C*wAIXwiEEMi44yjVL?5==H<@%ZaNj1AzbJb<`MPSEbLo:I~*6$f9yq/K6e>;!j[s1Ya8E%/}O7E!t]*U36k!p],&ZKez1CK<9xhq2qc&$esyM^GrOF6ea?Qpy&+^iW#a$6+=[&H|G2lVwKR"F+wr$>~V#TSqSqT&=V4RWIz"cP=QWIB>L>o>.P9?<_5shTa1|zwKHFqOqXfSpppK6ZXgtTzT).~mWz0gG%b?G({ivQSr}_vkbMd80=0!~m_csmriKqXGk8E.G,v@v3_;=+v{V.U_5%(w{]D0"~;}Q`;%#,70K,;@%y:D);aI/l8H^#cg]@i=7}AFKV":+7Q%j%cgDRMBbsb_A?E`huZuZ+"?C`jne=]SJ9&MD+%P}xy["`n|rg0vP+sklVw6Z]b~cBK?P{.gI+V#*Ld}a&K+x+pS~fZ"A%Q9K#+;2~fk&rb&/95]jT{U/I1k&QniT<9}/}XQzrqW@KHAjn~$(rW9nh]NPe}MsG{^<_Wynhv5)c}M75_[Jh05sVHFqO*Wrik8YgiOGI#ww*N0Yg9NGIAds=HjRR{I8x~{8gsQ75@pq|A!XzOA^?b=Pf={?k!wM=Q,`XsiFP(3>Rl2S5?&mA4owJ!?GY46k**n+cE|T?G:nEaa?(NAubegYr=5?(Jr=i)&m.n}/t$|yz?o$Ip[4q3:n#LNUT)0)M=YA+>hJpRWX^B2y!RHBK0?`P+;$|DHi0HM,nCoGg.Wz0g6#g|p&^r[)>&)mVg=i[_%;{nj*~2A=x;uW28rm+lb)(mLg|?[_xu~DIs(Nw!T,_%6*~lYr(Bw#$||&X[~/Xin?`1e*~zu$MO%WGln!C_>f|@~rmink}Pg|sz4!T_|DE[~0Win.`U[)~Js)>t[9m$}mD>~#Vins?^E$}`5rjT3HwsvPV8i73)L=RfgSNf=2h^E?Om2H3A%VECosOvIXB{Qb?RMXq,>J"y4~IztgxyZb9/])=2t+@~PVino?_x#}}=4^B#0@Au2IbZ:@EM(MO1SMQ&.5/x}}U=4ECbOx^:IIA"e2=8cTB#j"Ral]^viTqvq!5747>#.`21Ct2u|IK8,MO1!5NdW29sUgaoqtXvI1^>+xfOUu^>d<41?.o[B2B8B;TS3`PHKnlteeV[IMku.ZspjI3I:e1U&37)M,,u"ID%&`_YgpM,(uXR6m22eGaJ:x[CA"ycu`>qr51Z/^i+9_Us#FY<LvV7,J@|u5<>vLU2~K"Fp[}_Utd+(+x`kYX5F+C%,|C3QRjV4/=[`sR[d+(q"s6|"7#3v5qU,/G[&`ONqO*G%(eW6jnVVGo]21?.mR+$s/FZ"1l)M6EyhVUFkEX0aDGSEow?f.o[Ha?.nkQX"1eJ*wJ.o[%o},ty>.:5u`_Yu>}c:MM.]6OJFXzQ^?5kEAX&0EuS*?:haC+MW*8HNG/O>ipnG]h#21_EN/@wvZJIR]`cHl%j0M(>xY;ZpwDXR]=~IK)>))fg`})/`sO3!T<|_%!~MTr(gv!T!_HI)~HSr(p.=2f|mr?sfa_S$0D^rgR}10hM4GKz_Iv!U6G9]n&lO!X!o{_I,eiv&]t)O<|t2akF%e{$=#%8bE,f:DH9q"s.|Uxr~[(=Qp73Y]s47eW?>fn)6Y*]|B6h~;u7T~l1r>BPQ,D.Vz3khB?=ej|Y5s~rD@~0V,UB??MB]`AB5s/yS(!b`~8Lu(_@o1{}w?!sxglIbwBaG@bW|c_4H"sOt)hR?{;j|DYj~:I3h]OEOb:1!q_x+k(e`(8ds8Fcs&|DE9?%Ca~Pd}~%Mu(J[nI}}vi#sPmlIQxBa0}:Hds3xfn?}]p2>k_c_K%HIx*oF6}HCg~)x"~~Du(+{0ZT|.5ksZ.Q4wcd+~(LM:}q5l1X)UBK{!,d(#y3>PcQ|@2)hY`r8q~hK#hNVmIYz/i{sBD5yHuY*O~Z8l1d)UB2}HChs@hS(Tc2rkv)h<~=+=~7wmIj:bMV`K^lWT&4y#uY*^slC%,3`d".}_!6>V|1rcM/&f[o1~~*S~~n53Y2}E*lsgDR4})Oj4`lq%s?E%,m?3A4|eN!>RjQ|Y}s/pssch(33Ic/Y$tI.*Om|,)ULsu4l=~;!(h;+b8)_41VL4+$dps}>DOP{Jyl_*u)})sn(+3QdV}lg;95e<2aC2r!``{LLdX754Bis^gbmb9v^N"nN_V)F_h8YB`VW?MdI6]MlhV9{T+_R*Q9crtu4dBUl*Rdm^ph7wz5*#@*yqYk`(tj<1[{D@TRX;,sE+7hx/mtBH)Hfp_ZRG`=kg)@T&gV~cA]jvzakkPC!l6LR52D5BEXHE_uDzm;9MWCq/YRZZ7V|}^1?.]_6PE4L8PG1qD:5i(r6EV<8V}4u~kW5ftNWGE5`~C:;Vjwosh5Xx{J[*p`/YN9XO/t?jt[MtrIPGDi1FiTbtE4o1uG(~2z,5:uH];CjP!#P$)3ZREc9Szd)}04^V`:|O0zJNVLNc#!q@8w[Va1Q?6Y{r7fcMwiv*~CD*f}DX#:W2i~a//V%ur||b&bIcHb6<$kIwDK@w9G&+I=/V#:xVq|v6sshZGMKbM6j?J!QhbP>_GNvt)P#Gx(F^!1TuQ~rP+AU9[aDUX>s?D@Aorj@awfbX=CpIq+,eAqCj#(%rx3g%|U;i:IWuE[P+H_(2[1"BjB=0+/0JPGYR?~iHOsrBQAYLT3x6bSaC!_:v6SWSoL`XAwB"*T+oq*]wB":>w[wf=Sd:B/+lLg4~Tkpv*AjDaH2(^$4pbP|_1QBX*P6N`Rv^|R0nkW=R{QR`JwGwzPYG/}2XA4dg&Quxg_tVAC*o:rb?,$nbEO]t`8/ZQBr"xwB%^{f:aLNJH.&sT[41m{cx,RHDSnTH}kd0It;R3/,`DikEG,e@HI?|6G})(FOcV}it_rW4XRgY+uz~P"".T:n7dL`)uDb|cHVF+$"LX}^WCWkF2E_X*LcsB2A/GA$MO"+FkIr4Oi1N,Hy(nEL:oI(Xy)KE,jlsyW^91i0R/_EKC~noENeK5dA|r)2}4iteua(rI:IX,Nu*RU"zXp`"#scJZwBdBL:OW)o$[_KB)@HmWxczE3kTHQ!1@I1+|2SX!ou>G:}`h6rNLelPM9I)>a]?.kERj_2S1uD"{"N;bl+~OP~pLE/R)~`kcKm8ToRrz7!vD/*"3/%|Um#R(eOXSqQtxXcr_IFa)gF4o:lHF4*1XO<,GRw{`jTljHBSu+(DCVQgDE"~AYvYkGu6[",r`Nkc%WIwvujP#^@QZrfsxA$9}q6aSF,C$7ymx:It+GdrYOA9r~3+c`KOD5>I7KB4|&OSiUE5Fl?UxcO[W;A!"%k6SdmMv*izKsEG7h*F+:CbN@CkEhn=0V>gJe)(B:(~CLN?VZuf<{E/B!}YM=V!v_gyK$Mp~s_a2oV~ee;Z~8Zd0w<=VxZ=bOk%YU5kI.x,mfe/1D!&"0wRP_I+hU)BSWM[(sUo_ox,rQ"2q`,j~"c!*PWzEYvCSl^ANA[)T+O:W>h`RxiIIgSKDvWtkcGRJ4k9k^)n7/oH.k@G3*}pEqlOnX3L+aU/2euUV0"9mNi"H,KuavXB]UVx]}g*rn!RG0Y#48@izp,?F2L4&tEf$GiYn~Qc#MkEp&f)K<8f^?xCAMc,Y}.uu^v*[)h$S>cKF5(>v]1)FPS|8M2oIJS7/<}Qo"3eNnB](v1>s{zfTk|)I/(#i6Co`tO+,#j,2q_]QUC4BYz||L2)5}Mu"3nS>k~~=+GDnD5/LTp.VBqEq1$x03le$G87jy&}5?D=.y,t>h5naCyA=Ck%y.[#Mz|}#Y~gGkvLt5UUGXY|2SKaMb^v9~!Hy@r#v|;vEi"V>,>qs!k~YDE14twQSuNs+Agi8Y%lfW2[skdt[Prvc!1htP*o)(sHRlY!Tk#pj4"ZYGbf9_?ID3jU_|=E}@=m!}mCJ`_pIatURLKJ!$ti5O!|4v%*Z6c|qPfgkH3!D=ohW:d`vg~~%?^UV=j"@|Ku:pZdG)f=}r#R0sH?DU*Zx@w=;QlW<+!T!s^4;Wvx`hD3JJ3+AWzyj}5eFjY|*>{C&I761=,em0pBfnpBT(hcoLef]m(MW(dc+ME1mN;IG:okdw_1?H%YbhagD._mbbjmiDi6S`uvSWLZA"fMtM"otVSSh%p?)XN1V%Lx8U&;XM3?0GK+AzE"d`NoXOo_<]Hu4H%jTfUw8*M;tI.$0sw)O@?j*tGuW!nBrLK~kaz+w=zsm&bNlZec@5i^PDKO1%JFn/bvX9E%%E(Xl?bvPQAwEcEUKtDULGh4#@EUKBDfE0N/bvh#0|?G9Pzn.BtU{EKi!>1[)~^,(_cHysCu;DtZ1Fp4}vL}XkMLD8DU9s4sa+r]*m{c^)sCsYb+b]XQPL=>w=dW}&E%iW4&E%LUd.C3im0yV:C3,}m{yydyE%w|j:ILJKHon?DtGbJ4wF&[RWz][$K[u}i<7wRWwaHoA`*6P@|?AF4}P;yy4xE%.(Uv~y"K!41EiR;?ubY(vy"W6|!a.y.dCsJIHo[_u|`F}F]F>)R&1eQobvgSq!yy;wDUo|zaILKHHo;_XkR(~.6n/_M1LL}=BKus5Za+][ubngcW(["?)9mvU<*[&Nxp[FK}^uZ[7HpPoNKzbj!]4Tdl8$hzm3XP6Do=w=QLY=~~p5FOA~=L$.o[+_#g[~aGLc,_@d[~KGLc+_Gb|XM/{|$XXb,BtU@2`I9TX!UThA2E%k?`:P[~84zk4~RmM/S~xCrWLO2uXr>fMypvYv9m*!lFI^d05<^&Fsd#m{LGZJ#OvPQ5dnL8MXjOJn/aCh~KrW4q?Z]g~*qW4%`e^!~7KW4$`$=!~=U[Lx1Qg}MMDVj9_5"kET}Yv7*(~UBnhmu[}pXXBOa8!}(#@5_3=!8h0Ysff0abUqW*)a#r~ApW48`j0@~@ELc#_;8!~WJW4LSEt&K;|S,=~:28_Mp5>!CAR^rRQqWO[R]zCa:!PHxX1rNEpdY`qUelFErOMmfelw,KzO>kumORm%YNL6AbWum({dm!~^SM/R~if_s_uG7h7HLY6rmd|M5=~rDLc3_:P!~nGW46Lps}w8|YvC$ae3P1_XY@~{CLc0_|}9~TSLcc/4r/1}_9MnPsgx(10[Y|:f=~[BLcu_S39~eRpL(knv2jA"33{|Yvw{k`R1nKQN!8xSmfa:we8O#IxBLcs_{r9~ORLcr_dm9~~QM/&|Gr`szt0[V|8p^"rDem7`#_2am@.?_i9JZDqW/@i?]1S[WK?uSJs2.n2`=_>E$=?~}0FOV|%K=~?H#|Uhcn>)QCqW9@6f&~~AW4/R&~vOmb`OM0zk@~~@CH:~U#0[?~NU"sf~bWbvZu"oHH%j15g`]rg`Sr/pN4r3k?eOGZ]i5)*u?~d`]|sW6~+zLc%~HkM/AlX4d}Er1~k~8xM/(>!CqRGZM?WvPIXO6*@P^Z~kOsG_LB"o9F7jKqQ;i}0j:rTD<*N$z?0SGZgtK5}s@~[}9{&,o1tW"sb,At*>"~$s>#)h^~k~A`Rq>~%}Vey(b?92CTZN[k~/Hfd~W,Lc`sJSK!m(bU??L*7;Hi,J{ycn>z8>R7LH4H/mr)@+x9QPNbTCn99#R(?6Wo+l:C=~|H/}yv7T^y1Tl~1TS`iH?~j;>zob>.bI$33Q{s8]MJT(TC6|UhrW#}["qWy~^8W4N}!DX4I`B6{so]*O]~!:CH,~E?>z*UA"`4~xdb{JWT/_xm1?t!uGg=ZZQTLc8.=G2`PY^}il?sWTezP[Xw/|%:V(smz[P[(D/|{tq~~hKLB5hmO5!~i$WKw,0EHIfg"uyg~[IgTTcgF1x5zO1)}[jzp#7eQ&q+lxo|%i#y(hFA~[(fWk/9<<|bfW[c*B|~T?#Z_/]QyR.a,/+he?5u5Jw;3jb`X0M,0%nJhVODQR&37{rccM"Xr?8B#(Ey4eJ`_F/1(U9?v.s~Q~y3Jf$3l)M0I:8lsAlsR@#OA]jfYkPLSt|k[kHZuWfYX~KF{ozo2otz=yGNjO$R8_++Db+cLRb?(KlU4k1%WKja5Iz[g/hO>5NiSFg~|9|_fKR1;VlTG%yhR7y@)uftQ[XwaD{D,g0Y75Ru}B_ZGJ,=5nn?{zXEwE(u"&?LUhyFG2XK#T_X3VC+2gP3i?*Zg}3;Z[WS>Ne38.X3poiDSR}gpV!JJ?FvS;+tXVKW4.gg2=<@wS8zyaorA/8)2enUR%a1U1(bJ9hk6o7}vwGc6{cma;B|FzovGP6=<^l_m$0#E3G1|ax,!lhMn@hzz0vQDYy,>z^Y^xHPC^gIHd_!i!.y|ghb9#uKLEh[w!$q,83TX=Z(?&3h9hI=Z.c$SrBhO&3P&|?Ne,_%C+lP!.,lC&r!U^J#)ii?"_S8)rI|:luqu7qk#_G(9{FD:)>HDY.%J#RPFTU=$+e<&8F~@](;dKpPna{s9cj`ic00hRpBQ&Q?+`(xPIS~uHf}8HsgvWr"Zx>K$jlY=8Qo8N+)*QR4pC&frz]J9IKgNN#E`:Y8,l2)b60F_P6=z{{6JC+.2p9^YISHQ3%=MT82O&t{1jQr~0O});avPDYS!yEco47D?Z6.Q$iOu%bl#_j,_y@()0GN7RHf7%1*%8)E]#29L?oe~tr,!!ZNmQ|Bw;D0j+hv%ZqX~RfnqAmn{/?ypE#$bn%LC[&`+Ch9pFotH%h/!ZlgN*!po!cSy).aBN_H5w~IC"]Df7idp$MNGZ=h!}Z^):#M~jdyMK+)]}BN?t#Z`#qFX<]Ce#3NU)$SkZ"F#zJoY0)gu|iy>fC:[9s5dlJfQ2$Zmxxz=l`S",{mL0%w/>@.Rc[b+Z`#XW0v7W+cyP$?GO[>zWlEMaMy7WbX2WW/<[{B=ncEUtHUyyxzDj]z~(yy.4%=vx`8bIxBc(i0?5x2uE:#78Wam=_ysuxN1:vRE`|P:uxzDj81y9vF!BXO9oWXt49b)F7FF@Ga{/Ubcv^O4#ee^N`txzUgSTGX6R9l^teU.G!?W0vOu%cbdJB*YqGB8.t<(?mu64@MnCzy0=owhT1JU7w5OCmY#}uOu%m%e?N}0HkcwQpBiW6@LvYK7UCd"o$56)Z{4RC5;`YI1:`Q6@wwH3bPN0?5yL~IK8V!A;F*p4lcQW{6oC/4QjmZbYzEi?w2`QjHom}4nLN`0Y"o{)e#$Q]u=T9_Hrom|;<,5Mhl95|@1LSQzN(#bx|7I)mhY0X3Qw@zSGpL{mhtc/TaJ>BG#z,%T{eQdmH@h5d9JTXhENg+B,dwOtUeGCT_nGH#z3b^7z")g*4|c1/+eeZXox[6XW6xT;=G+/FqI!y:06)HD`Qp)@Qp)3hgO&ZlWEST;$AGRPVaB)I@Qe7I#dOtg2ysE/S88Uk7yAj&aKCvhL3WNRtbO&ZVWkST;|LkN9([9FN0WlQxxSH=Jedpzqsikk8!5Fm.>!P/cv)Cbk,/fE3vv^,dE;AOp26vaz=zNXjhv?&.w.F,!54}uGz@DpBzcpzKs?v_7(X!*(#5Xeu)SdGxN:AE6~[v[xDE";>sPvL[:4_2<6FlO!_0CeZe3XbPBH7S?^0bP8yCd"o)o7)dK*Nzt~l&K/jglEf{XGi|`uOtU:ce?OF(9DyR*d4a]^vOWDZ{2uOtUcGe?OF*3ZUkHf`@2~ylHP".!?mOO!_%;;;$Y.Dr+K20Z5bs_b?;!;C_>#GDu~Fx5Txdz,nWeY0X3cce?;!c,)1exp_PW{8:u2P/@kz]G$GeqTmSuqzhXtty91^rzlr){L!bRou.G8AXX_8^`#vKd0Y"oVSc#uZ0F*hoGPy:d6SZiMFGkWh%ZuL<)+elCphlKiLFFHDB2=fQcAJK,XeY0)gcc)Nri}eaF/+3OH"7LTT8e|(~QbMtUKiw8WyAww6^X+/ck26RQ^HOl!SJB})$E{H^C{uE)<:5t}MZ@wJvi|U|nxcsuacwaELHPn4PvuE:#ErRZa2k@,hEHF"f2Eh,TeJ?_ri&icq:]GZs6pH7NvUFNbYso}djb6[/a+YN7^u$yo0N/F6~[PZYvZaGm}S%cfZ4u|P:6wS7F2Qg)Ia{/fysEz0~`IwY{6yyV,p^:AuAKn{ZI{/aF3I3l}rP!Kl1ho7Qb#(j^^qMy8c`8l4LzI"7c5RodH61n6l]a^:FB>r.Idefvo#bclhH*JhJ[KU")IiqSMaMy]v9_~DjyiACC2RsO}S#SF2sdYuU%)94D*_RJ2uKi?fZ/HOAOW@9xwKL]mhGuKtwc/2!(Zk#[O5%cv0Ii!y1N:7^,"0|UA:ro4CJEii%:~*<0`t{|fJn<7(rSKD{kEwyu(4jY?SRxqlH){>3,GaCKCpPTd.BoDLium4@M$nr3y9v/B"sJ_F`k#]IRtlvM#MEEONBd"oLXYv,wA}B",qSN+h2(<);:zvSvy?{QZ0WK,Fe?RM8yB"7@|R~B:$`kA8KF&P@DV!Ha{/Py2EyHE3~~KP$1,U9x+}?vVA9f+ZR;f2y9Bz=})h431nrCt!cCqe6XmkfZLPMaj9H*eqFw}@B"E]:F8FHz^n9#vRDQ<#B5@M][1/+eBwq~nI:.pEa/[MTaY:ZbX+Zi.f2y9Fz=}?QSG9L"]6:Mff2^h!0>c;IY0*=Mw9_.G_,B"L=FLhL5:&c&LiR+BjzjW3Jsi$GdyiwQ{I*dxeOMf.d@|)hLbRhw<,7:p[B"a,UvJ*L&v!r0C3F;$Yi]}D^A}(UCtYRMD=KW%L:$LbqI&K.t>L_4Bzm&h#eMGl}RUw?:;t!dGaD@~*!E.$:B=x6F"lc5v/3g$r8iru&W)r>AG^R7[`CkefhVVJK34oji)UIG]lu424yexLe2D!$T?X&wy&3YyUaY/NnT8IVC@OE6>e..p1NiL7SQtU*h<4qcVygm*D{k2)xP">}zx7(M9e5D%_`k{R1sgQSZYQTg(W&$cw=Xs2w[q1N5Lf~?rI#w?v=XCh8XW"tu:HXOr*6"Y4qcr=8rN?2uq4pzAycMm5^FPkCa%GzXeOu7lXYP~7>o]jAMknIYdBj*P,@Z;CgvH[x`4.H:6Y"BJM>JEw9X^RKzbV!xme%HGuZ@NJhJb`=n?v@Y?H7HHZ,Y!L#wOHe*4RS+_=xZGd^EW0(wbH;L`jV]P,!9[@@@F]i&{>fy&@p%t%N)IgRrIwiTNAv9?945F@ITKrHwf_E_M%dsi]rXDrvlmKzGL>aJKzG>EIxay*youTdMb"(d$;OD6?eWaJN(twr%`mnw0a&RhWKk,M?,hcYri+rm2dX8K(mGm/bv.6NF@i!#Lm.xZFF*bX(4eM{MnRXX72_};RxMvS8c@Bg|BZn7va5>;tG^VN)~^H9#oEzm^R3ca*ILy9Xf@Y`J{Jzm8KkJlpZ)g4>Y5*xIycQ[D2_H#uE:@Ww#I#)Miya$P.su}4%Z4Gq"o4SJE`7#TO}K,phT;m6c9O)j6ds!uN_q7N>FeE_<[9YLxBTm6o.W/,,NOPpShHE3]Bld2huv+ZVV8tP}4=:My_S91#)kZJRn%a3CieSFxNX62sBF("yQg^%8M!K+h0Cx.eB@LxG4a,:!2WfMtNXMiXF:USNW`mqxITJ)1NXo`:(eP+zBPT5($BB?hbK0@(u&f~X5zUY1=%Zn00UNh1"SYpIU@KIg6e`fq0Uy&$B(FeJSQ>BwUe2mtPpBdc>/(*cE{u?G~dDa5>E_nNFR/HFIN50W?7yqLKyidN[CV60kPTK]oL{t+.GH$SAMof}0Mbbvz7)yLk.c>[547`)b%LH"`@/D3n)2sN/U7/o]jHJ5PElt.w!pX$"alQw~1b/B`1nXJ1EM&PT,5$y",,51Q^X9BakCFm_20.W^Vgg@g>/N3Q5{CS+f7R@.|$K,D|zL[NA??G!4:]q7=ckLBBDPY?Izj,U%c=C`@U!>tvuM530R3pF.WcLe.WPG00#h!C4o|E6Vc2[/,cuGA,N}P74q..+_AN.?)heaLhEn^@06n5Hs">@<4SW$Zc1/.*#vK}DM0.SDrjvSj!"I0)bB97P@u`wjn"+57qZk>WrZ]B[s+.RX7H]z2Qd4"p)G"54yLk5f./ViQf$;6yV[;:Z].P|X8:m+beooNL^vPC4wUYCd[7V!Sh_QjL`/+@MMt`o@M}=E!vYw2Z_kd`2LuV.h~:B:!a8X]X"$"mN7|Jwcb+A[TX1N0Sd40m>OzjA;T0G(L1vLMI87Xmw1}:~&?=]niZ="~|GHUSJBM}N_So&aaMN1&4PMtiZWxs9?TPaC6MBBH#$Zj48k&{C=qW@LXkE#NP=Z4wa48#=mhV>OlVQ,a42K1tzeYZ,,:5EBOD7WunJI~F1Pi}7,oMLt{Cl^wYBdX)rt,#T03wOPh1Z%{(ZN%Jk7N@.|vIjHLMV1]vXf>PvWF4P.^oU4>FN,oMrLOldlB6Echt=h~k0(WcIDJbRd)v1ow@w+dX4c9)2k7"R74MxC:i*LD:TtROBGn?gTcLF7:NXFy/B6*({+BvoxB+&7#^hnboLWoRstX3W23l0S0^,!w:%YWA>=(U3L51b61$vBfPeZ]i`+Q;1!oRZ4[C6XxE?h)kK]+DnTcirC!k#diiNc|w6y@Bm6x|rFHtV7d?hqvP98HP3L6F=Lbe,7vnAT)Mhm+D!eVZg3P?a]d"DD2R%,`Avu3Z"5]I9x.b9XBtR$@B+Kx[DHCgNc{*(aL+3#2l3LOti7)3Mc1)LttfPfQ;wwBzO?BxOcQ[i#1_aHkJPgBnn.7zIXBQ6!5Q;TXvP/GCWAeaUFvQt7yuHGKS?:Ho68d0^lXqFWo{t>Mj;[Zq4%;>Ce|XZL8mOCK%YJY}O@h]EAR&NCP^P=1$Tx`A8}KhZ;k{+)D%Lte@i!EbdZF{DB,cp}oK]{CpF)W0D$O_HOif8dS#FVVl7Mmn0)~rFdlR+4*$]e]*HM4;VXZceta/@QGCQ%K$Td5x6F)N@fkkCixsTmZtLh,D!!j1Yv&@nsTmJj{Xvv;y7S`W(:O"4l4Z]:u*aqZld9#^?C;9:E+AyCZ*B5%PPG;z+|V$L+{wCs[4vT3%d/MnTxu"TPesi]A!OEwO77uD_:]n+HPo7zc?V2jz)i7e_vCB#m1@al{W!4/Z^e^CcDO+wSs4ZH*(ONmuKPCNqS^tG0o5pH)YKa(,8ePOccU5sSz:H?v[IQvY0;:bvoB9YsAdSwqm!0cJRB3]@Y4v(Z;BlCZ6|gipLrukE.LRv2WAAAAAA~lgAEMQau5[5xD&Iion9W(>wks/}c;8Ny49*4=^6R!)hRBQ@dydX&O]K5~?msJQPs?VF?8L_Oyki(afNK>l&%~V]5sW>+`"?R!8!q2E0=tt5bd7m+Ex.@?i=K,mYD//SSFDV.KCQMyujZss~3o//K:GB8sI^RVYs&az9+:$c+m]uprYG4LGnsl{PuwvU=eGjntJX@orFe^x>|w`:e(FS$+dwSYr:aMpS4Y>BEUJv|5bujWpbU5h3(SrNOM1/TVJC3I!~ew?_p)m@|*mOzTtl1>qUpsFuciUBU94B<3N@oaJ+m(1o&,QW}6pCw/6[#k0nXal(r$J@dZ;o_#oQ,u~t{beIG)e(Z/@"[G2BYT;v%h2&m^FAHNfEdtVmgHzSR}VVt"`sWh_7:5daWCU+F`)L+(?BL%R+;bds3]9se%6OgB{r#BE7_?oGui=nuUhD^6i#Sq&[fyn}oOBuEaa;9V9Zw=J5(}!$y:LSGLr[Z}=+;3=w#b%*Ja@TB$t:Wyo).:2y}r2Pl7rr6OSip|JOSb]!RmUVF7D4|SGzRm}749js@M2Eq&[MSL%|P&q0jGF.l@6QIj74]>zKqH>i&(Yt)Q%t+k{I:G,D$~g=R*.i`&&TgI$t6aJj)o2EDyi]%4@pm){y=~ejG`TgBObN7YXGh#EwS@ZKnitYL9Xu]4YmLK^+}{D/*~h)J*mqJ[Gsrkd?mxAI_1.bFS:=%zvX*~t^:@8ScWNqRGw9wtHf1KBO9^0ne;A,V%~Z!;H7ya~Z!m.}6MCWaeY0`;m`2Hl5ieaBcDHr!uz/tu3FYExkez:rs&Ok(lflr7(vQqTo+BY)g&R]cML(g8jIDV{(;!6^BuEa[{|^guEnN$X^(D=y&h#<3GV+]tFG+zTi.#YmrAWs)(x>Q3RF]Ij_2A${tqX]Nxe/$:s_kPy6,K{r7?21;x^ltxhtB?[[!zj_m7F`g*C!5Fprz?;^US>;|LoyI>h~?2%73%7PBT[DTb=aoVrlPmCm&@|$gY^al+y2&9;00TX;%gFZD(Jmt,J~6rqg^imx?0E9zG^#DO1Jq1q%1f07)dnc^qyK}SMtR"{B<0#i6Mf=x,#854`(C5WtYly/M9>r2D12)^UfoJb/FJ0>n@;gY#Vokd3_l_q@0Tty,vA?+$(C.%$rqPp%:BL1g(t=H(r[:Ijw97"5>e#h;YQwfKUO,{a)v@.x~vP;_8Qr`Q>SYpR"3FMX.8fpJ]}>@HUCtZ2AC&L^VD|:LjrbXxB,?[zt9r`E~^LGOBH?FX~[.$zSS0{S3zGkV"y(xS4m&@.W:.8O*g8M0#0U200K|t&YNU|lAaC`d!M,=s_5mC~q?h[Z`Pl{qt%@&dRW.5cgkV(a)59l>7jP}ONI,fl7oGbtHNS?*,rdLlBRkOHSSur5El(,lM+h8!zn1$4nJ|:Z!)c$Ks3abKw:RFj4qI2Iu,"eodSL8>Js8o}~uJ@zYlg+*m8Z#k$tudnbA}G`a.tps+8ib#6t(IA!%[8nD^zR/<)OJJ,vW|M%?Mn4z8gyMdi11FOn!8i6yhFF`(,*MimO$#~PeQ8(hPe@u16541*cmmK1hZCE9Tc7fs*;6X6araUbqv`o[?Z(dKX)`R#Hqe*L.,|%fH3]E,tm}YZ%`@(~b@1/q#{yid{EI.u:l1];KV$ugQHS.jmwE1kH@U|Xq#aPp,KVKCo+69GAg.A]LH+zlm&7!1%*{R~@5|!a4Xmg7],;H[ak4`@5(FV^Be+!a8@EJ50F^/XscNMv4/bGXN9e2Dd1]6#[V1j8:23wpO5/!)|LzmdZ>3sQN//#H7jW_z!RfRHBGmfZQ46PLfhbuzo;`|1OwUezbw=F~)pd(&a%~,I|&#%sL1CzkvA:?1IJxDn!.VJ4#V][[0;mKUCKX^?ElDN|?.vG5n]4p/,+l8z3g`Bhv`UyHtHhevhVj`#OLd>1,@".ys6$.5%5+Td65o7)r+|2<<,^H*;UO.A73]GCEYJ/@:Q@wOpQyf^e"[dPZNo_dz@}0fn":Oowm"l/F}bzN8?;rVhYbb5v>he+Dm?nK2&TEq|jn+lS2~.DYV~`z/^_&:QIgfc4"5c>fq39eR[.&mzq7T!{^ZbKLB80AIxyTr]:(o7^e6JRZN7^cwK)/^.ok_[)cNp?+LUyqL|#(tuTNi;5l)G?lXklu%$|Rmw/,Xj@%0jsVf5S1[Xs,F??KEQnl@+tj]S[@/sfU;V_!q6,K=I9y~xgx}i=}@p7|>|SZZORXrOg7+nO^~zcaECgt8GWwKvp_>Eqp$;[)yhLo`^3dNVo2V?v@ko#rg^M4>V0eGY5BLLG"zjY5Js[}YL8|kPV>RQpMLvzhYNlsz=@D}D9x:HmR`>t,6c;zPuU!5ahiqtAac`j2snNB59hjkZ0z1T%jCXsimkiDh@)C.v*RJ"W:J3^%XQ!$!]umHTl3Mm*F>fNe,{6uRQW!0OB2FSowq5CgGEPpNb_FAje$BR>#Kpbm,O~iW=K5yqhf+C8a+&x3B)jF7!gZek3OHSpZ`$Vz*,>5|2VfIF}Y0BzWhO?U.MX=>rZfiLw{{//W?o%.E+|I{{$k;SR_zg!n=)I`;|Nt9)DLkt2Md.lV*u#5B)6`=m}riM!E{srq6)Ts`DHPqKlfOyj8Ys_a3I1{xIllLvyJl<.m90r2F/6!"dimu4dZ(5B!%Q&0=5O@YU"b_d:tUP"nYdsR^XkU7I_n$?dBB/wD6G06pC.)y=Y>>e5XH{vWqsFlsvRrvQ3}*qOr]8)2PJ!W;Km1{C*+bEx/6W=Al56k2/(?f0VkGdNk}99gLKRV>+#c960~c6hUn>N9dXq9{FOlr<)}".>UIj.CfuT`b!YP38:KZ4O5VGf3M[>t_hS@)8HD.:y(W#vwOo>Rp&~_5}Sb}!MFD!a##`cIK0Nd=__ru%783*u4|m[U6rGa)IL[3B?Uwi(Vv_R1oDS6q%pG3SG>*RayI9{ez(z{H@mE}0Q$ze3yg=3]f>4==I^3}{I|sg"t/kd=W.v`;x(6A+*fR&,@@NQG87k04j(6WcWc6SdtC*~uJ}g"P1z9x>v9CfbjV(4&Rs]!en~WOp`b4M_eLvOeYus"8ZI~G6McvKl:YdcK|j)Y[_m2RUu8bG2A/97JD^TQt;I]3]#;M/i~ibni~_w:D^<8|r#xW+.R`6KqKx=D~.;^:UScdm{YACX&cPQ`x3726|^*)2*YzfG;xVm3tag9{42K8kBn(,ou9z}7=8K+~?249{`zt,>ni%4]##[#Tlef5mIQW:{XtbSfz~OYB*)L&RA;Vy^J)oraLBHFL)Cm<1~^3L5z,ZNl<_{8ZwA1~`_hEq{&D!5d9l1oet}/IVL#>uVZ*ix5M~h[J`SwE)qc"wfxd]XI.J*lx?Qu>75Y_ZI]P?E*C{[VkVFKwtR3t2TYaDJo4Z.mn$cCP%[>EDflMba2"jL4EE<.TARu+%t*lP5Eg>r.V,ympNAQgnS^5eM}x%`Df*N9WBp*I%8T9>6jjX@JI.bD}L4*UOrEK5`XBoRrZKUSjb(A2W]K=5xs&zb?|)q4%8dpEUY2Je*g4=!#M<%_Vt[5rOW;s#&]sT({Z&LLov(FHNN$Q>U/!kg/}DFj3CG8*0c~_W|K833WtII{EzTy3lo*g+8?87M/H?hxbfQVJl0X&Yc#^J3sUS%L/y|!Bq&1clcV}g=yirwGUdW7z!NBI1RO}lr}6*L!L>"IXL3Ftd<>wb/l6~Z8/DCMDl@B+zFfd8WcRZn{t+2K3`Kv~608_IOBd`0wyh|jYT/S.%]i_gj=d86H>b&6>8cyV1S$@~%bK9#dF[UWkb93V|b9Ayk?j8H(tyKH85Dt}m&^oSPVd5hKyO^"/2tl)%oi5dgvb[hCt!W+ajn^RBGIRWiDeu.e3H{dRea./!Z:P8j@aYh%Anu7hx):LN;YXm!Z,[(Uzt(+5:SYYJw#wB}q);(U8g^N|ly*kU:b;8~LKBjnejM4BZgfs7$GGNq0_,7mOJ+=l0fWj8a7ry?hntn*Zx`%nLRB&dO0B<|Q+Vb[Kv2$ZNzw(r5>I;uB#$1nCFaTlxFryT*EW9$uWt>V^#$oP2khwV4H@G@/PsMt55,=CuJ02?{IP4KgC+$MxdIQsA}E3P0bUI($}~[9suzOkR8~T71DYrcPyA&MR$KD`=IX]iKW%VA66UuGC07(VOh7U~k=f=w%={Wg#/xN*GM{:*LveCs`BA@QtVEOG`D3fhHkYNJ|Fu)ZLlIP$X}2h>7jov>*@54>j0(G.~k&tAGI$P4w$N!IKD>oe;_&s[(;f/InBExmRgM$OIb&p&WQII5n#+yOGNFtH_a^Z$=auuthegzxh(Qp*>zE1zufgcj`^bPSbT6Ke|]GT<&3z6Yb%&!3s8Bk)@$/E7SzuG36[@Lw/]L9`j%/~T9UXia_GK6YG1K>eH_BU:wfDgvc1"yBpHm*~MHp"Mxjumh~Y24fRQo!/eer;>Pluf;*^)P@!#)Tof|[f_16Ay$Fm@]F8%BzpU{4B1`M{4%9!(8]BN)M4JNM_mjjD%a7`qY0LqP!d*0C_fjDO`xh~gI&i8!xOo{M;Vxt*tlaClIR8Ep&REaDQ~.~xKGGtLD[(+?%IZ)!Jc^U25|kX5t)~.WXE@+|CHeCt6B"`3koQfI^adP4nOs7T3Xd85zLC[#FvFg];qqLz3HkRt~S!W;onD5/g)QV?+9Z"it7Ne#ZBSwn6khNZu5`dwq5H)%dSTF`rW5_g>dT8*.%vAtt0zU_vai$5<(3_T%nEuCfD&~8nI2yV|M8sXA!VpPX=U7BOie4Zt1d79VJnv"$+=Qw=X!hynTt]ZFD2b^81@5eL;oAwe9[pueNcDzsq6=ebTN:rn~5aKY}rCZYfNiVZo1dc?^Bj%=zbwS25,#v?FU=)E2|(g}7JBA0L9iHSD@o+(gKV5EJKnuF^$553{S=$nW*wu,./gr,Q+2#w.uFS}F%`m{U2T=}J?r0Z^(OR$/HSo?^wZx(R`[ICW/}J)pexupO7=>h{2xLz.=3ckT7V[]H]ptufcE6_!oZ(F%;^T2cY}>5rO3Aoh8GzIpNpY5TUVhwJYEMSN~LJmad4Nk:4{&5skEQ808w{@>n>^UysFC:&j`+P8k|KZ_"UaVmmn)0yB/uw%zYqV6E43H^xlOCN}AWab+sud?P"8,(47_EzJ&Y*62:tO<,sF(oSGwhx*w<[i@$1.f;CrmPjl@<&ThF}Wvv5_ql"6]7X{S8t!:gP)v%qzb4XxM~kHL4gW$G(<`0LP%[G>nV8V@z%N2cB,fmJa#UI&F9#*a7*~x*~M1c;K8!af.$t"z]VL5P@?paC|UZTv>ygOHVQ}tEzcl+C%q(6#2di".ZS`/Hf)j2)wVLjCM#"~ubLdtHFMR/(ak+TA}]R|bc:q0|WRkvI.k2#Zh6pq}z_TdSa$Ix?q)%z{iZ,7~s,3f*Jt;o|#d]#.lR"QLY@]UzwyT+X3~qN<.{bG_su5;KjsCEk1Q3mttEtF|i|wl>3Ct+*!(t65B`6$#6}I@z8x:+~I;WAI{^%ic97nd^iLf}}cQ}w01jir0s>ghRcYW{}N,C&GGp(7B7v@z%.=d,dGz#$YE~D|(r}VNxas?%}FL[hC?=OMDu8`bPW*_R,AtZ(x6Q}:8F:.3[Gf{Zeyj(OZ.P.yP~4?~,.SNs"{sUKml8%BAt~ZWFmM8[C?i0JL5lH)JVQ`wg`]&NgE.k"xJ[h4!=@fr{OVs2XS_ZoM_G?knIjPDU)&1[M&}x[3c(vm/ZA$WbnVmPTv1bk3_J{N1,awQ{m*,!_o_Pduf}nql@%&+I]5l%q:6V=<1]y~xK&gQ5q9bcwkx,Xhzv7rI~pj9BXKY]+94[$]q9Tai!T2Qhq$bqd"P@&mC*~rPx[=+TKwTTc)E0Mh#.dp&OJ;K}"HlN{/Avb2&HV~MYb.A`vlUk9yuc|$,|lW~]x(}wo(Zc#~|8APS/ftCwNOk|b{}KX^#6sBO:+7s}~skT">Rr>yN#GNU!q@xxsP8fqNk$8x~G8"D.WK^aIM%jF&rU/bPD[vjK03FwunTpC?/V{H`0Q/C3<8?c3}adM,1_+zoi.Tpi@gp]Xy&`lNAF5lBu(Lr&+grW|JK2Cw{l"/M`Uj$>ROwE(ei_,_TAEwz+/MG%I$}&9?E4M&{Y:Vk}Ya|PI@%EmyY#YOO0{c&%^;9!:Xl0_WyONp79xAH(^/5Pl#nHaM]Ubg/OvPJD!8rzPJU%!VM&=hGyZsE3jD3]>SYtCg(IzLVCp4cAq;8BTMu!bjIHHru<9^4JuA@=o1fvmVJqcBVd.t^8UM,Kr>5u@g$svs2/Mi:_h**&.Vf+Bcgp&)}+[m%pqLztB0XR]}]GUyXa*}99is[,8aLGJ>)`:XK&`PTOF?{Q32ww=!HJqvme/p85kY<10`]3u~9]/=%XR$EUN.2Zn23q1isatK|T)$W,w&"Qi1Lg!mZstLQoMH%)2UC#!>&1n7.n},E/c*x*bMOzsgd6+]/s/Jr/TUMo8_gw)9<}rL%ReQxxP08?cDnv5wY~V!BMjR*g>=Zjui>F~WG)jbQxbR19N77?nnzXhxJi9XYAYU6.d:kIp:m2|Wp>o0:E;QDIy"_aUnI)Nekep=S28Slftp:W$I}1&Ig?XjT^D[cX_5R&#[wcMcS%s*@PO40=}wG;W$TK!*iC~hLOGUl7m3{Y!./=Kd};=OjaJ7uPa9J*_%)o0N7goVS6#$r[q={m1cyir%HbO0L3U8DS/rC:36q/[`E:2z3LQD;:5l:{7Q1mlf;{}4|?i!T>v~}qN=Gc>H"]0j8(j+TWQ|ns;NrZzik:bv%+k#*lIG+q#7{9@Je4`iBpZc/qp.Nbe9]d<4$SEs@~W?WYUlJ/,fU$iMbL*<&h#ypv?)BFI@,;NX>n]jeLocu$xmvG_Q{K=JV&^+~X1:)@iwcZat6E{ccNOAA;}){vEO8y=N[,#?f|Yy[vrdw$I[K>b$MF~n(M{?M;W8)6v#kn5}Q=>SyZVycs=>A^ni={FF)83[?5I9JI3c]O]#FA"*V{kq>E6520auE9lhx_ddpywam>&Frb(kToSt5I;B]LP;Wg$K,5LAe+>Q4G0F"q(?NY}!U^~GMy8A,xJ9DxFOwIU#Du+)z)$@OeCTTofL1]_I0lVtw,YiFj%bsa]b%bFTT=^8S1MG+dH;fgI[/:J8FK>ZX2{l^K3sJ($$XL6U=mA0:`mSBNH(Bl/D26?Z}jK}$o=KrIC`$"Ib`DFAr*H2*bfIh:n=$SS31!Gg4w3X+kV%W!TxD)S|&~g$;]nnVQgZwx}~yM/$"!cg@8uNJmS.#)$8Oi*UG:]J++r(mHQXEA7jtIp2jQcZO"$(3!^Ih*`u`qCd}hOkFHLz6J,[Iko1oBCo}WtvKE0]zNHG"qE;>B#5ZPy~e9yR@vDhL8Nfh4IQtz`!i>D.rG>RQLoanqbaWc"*aF3B1N40R&N|pgVtw{(rN7k.>}DW@_lglka%ljB5$LJd5Ln+O2ulLHVp_YD0$v_FjOnn!?b/RB".7enb5@0mjo$&.{m&XX;UjpY@cV~F5Pp^7Z?2"ZX8O[+mP.x"L?(`tt(jZ%XP`5#i+*[Wf$=zM7l1JYF*n">S|MpOrLJw`zNI(eD~jD@P@qy_Q_b)b0$R;`flxGg/fPiu3aO3n;6SZu;6*_AMjT[<@@h]I#UjQ]@S{:GxTa@vhe)_Rn"Wr3[qT:8=Q_]Q!En6b`I.2+/~7kOF/ju*Ai2zwe]cLB]..j($%/9S{6jJK5[~KOIy|6gI+mlU?c_fVQ7(NpCi%4ax&Vx1E|]p=l9HW)+,yqr]c<[/|j~EBkpI$P15o^T3Q#KL3&Z@s@)K:o+qX|oL=U0%1n^fvWfZ&5C}dSx?;|R<)*,V4gy],tFnR~qaVnq*a{avTu1=dzq[9L~>XW2A9m7N~Ic*`mNBey_VNcEaEeOG}>>/;~4wWynu3O27Z.lLq+!^vq~5k$!0J#L^%1~E4j.FEz8`ct*#6OVGg_<{9|Q8cg0WD@Fite*LsJtc=XrwDST>JLFi;!v%:1j^fIV"9_&>xDW]nEXOztQ?jeGlCGx$zksn<&0+[$EkGnJADB[1.#L]$k(yzIem^oC6wDzI2TsnfdWu371O}nr|NSL{me3U`r}iwPFd_TPM87*~y4)TxMQ]6G8o#Bzd6r>L/G7T3GQAy}efB;A?uVKimw2*koamsPFMsz;yP7tQ?t:^9?4QBA1Xm*v!aD~I^*fvRCZnJC/FU&Wo$l(GnD{)8loVsF38ZWVs(;z*IQAB:w{!XS{e![uhXat#t+Fc0Kq3L!iE~/;Vl^4*iX|ttv3K6a6OY#O%5Sr9SO]2r=d(ld9GR,.TQ@,mIH.6|0;VxO^S8B2EJ@T6G3UvHbxIZPQ_xrv,;">@5$UR3HY3KLLA>mGt.)/>5[i4;j>6IX^CA"+/5[$I(a}RvsJ`c~7wk$x4n|tfQP%sDtybI~R}/B|JIw5hcAUrlg#Ofa.y7PeAjczmY=2^]M<|RjN8OQ](uS(ww=_^amW)_:B7X$w@mtkotUPz&W=LM9Y*;J<:[%R:V73FO+m{g8u{?%zh)a13i]~DY{d0CV$x&|96*&FizXNHXv?8lmA+EGNg$v8|RCeTkJigMlqwf_DlfAAKF`{w),CNlGVO~_)}XoG%@b2?tn<3Wlbh>[rrOKZRHWsgIb>1G9Z[X&@OCs!$Da()O,ZLf7PZkF97o0fn3UE("y"YIPttOw.Dx!d9wS>7ggIaB$fl)2.&2if/GYk(|1]{mP{1?4t[86Qu6X%65t:%QhWu$ayOuIHNc9%/(8jQ5%OVzSYXD0buWpuq}M&}*gwe?|skO@fN%d?b>J#PB=V~U,>)+a;!4IH@(HnF5GhG[eG?4r(X>i9&T~>UU#G5H=M)m}.~x2C8VcmH.*#8b5w,xjhFf=uU=|W:XkF;8B.kbDoZH+Y;4i:}itG6{R$3%LE%}Mwvy#xQXU6An*$9_NFowR8VeU|+_MW?R/`Pzgf&EyQ,,[,[{zCoDFD:j)bo<|hZy&E4{3ZoL`tf8X[Rv(qGv2*@uZ)gQ3g;$9e8EF|8j`JW"r7K2:/e>|h$1B,`ThDS/E=k1Pu8}HU_6~hRjE)!g.sp_%Wm7QhVZM7al`lx5x~uBeBYfqUAilLbna|O7bczJ+oA{qS!DXR;~Q2Su`J)3u%RHo8k_H>_7HEAJ]=llu7&W=LY>Q5W%@/Y>/)I2fSDNgs&>XV|$r){BV6yBxO{`wIk[8xAcV@8}EPC4d)OtD5;p^04hIM>n:/6DiP~_FI7y6K@p]6Ix.4r0Cnt6Mls)xo+xK:x{W(k7R][`/.w=wO>P44@=ceSE!{^YRQCB3J01mDWo?rdA@vp+f@u@osaAGtTU$[lBMyD^3q$*E/Rmhk|94_/W1Ugi/2Od`fTk^jqnP=qLzM):hj9P3l7tO3a!6B:BImZp1=]^&%04rNf@:*TVkIY3.peAOp/Q`nPKeVx!R$sq8]VcLF!GT|UD5;hXpB0n]s1=D?K}@910K>#~3?2IfL1?3C=7RVw?ZIqRm*uyC0<8gq9sXTz/.[8hwfsZU]HXj1)XzB(C9FfrG~|Zhz*Ww9Y6vx3efO&hpqUJL|#`(}u}PU:k}e!K/!i{2s/KIsk2y+5BhH%ko8mRq~>ibN&Jth=MbxyXPQoo5}Xf/Y19VkC(w0t=QwA^}6x8oGdZ,?~SG2/*@_+^wX}h"CU:[+7.;VaBq?gj:LNCUoL[1=;~g*Pbv/Jsj3S:vU0m"J>0TsfH,Lo*;.TW|I,~apmV~ggD5w<#:=Wo=U;C;F:;R9uL>GXeu4A66+C*c9U1fULhCGIDa&T(fpi;INP09c;JLcO.H@02Z>6}2zNr2pc>UbK(bhRD}?ZU**HSN?&D!n3TDB>(3l8lzfO,;l?KQFLN%Bj<*:U7$JObJ(U.rpp~!lv$mF4[,;)Q<@dU@f+9d6$&e"N6tru/yYr3{F/pFX"[v,uy&Y}xw|nAr{p,DeI1eO_FJut2q}eKo!@uQ{f*NiyIrQ|>AS9E)k4>D0>cNe@nDpa+3y"l`_SW89WXa1*?a+,%n{4E2nkq7>R.>k0,OJS_c@x[Grs.#ySbk17QS8"T>EN{v@2I7W3>qy[Lh+p9HUg:;2ixfMp=4l=jyDR"&ln~P/IrpXk?9j;2+Db5h=lFt_xJ6lNS@T!cWO[r}`%!):3D#+J<@TdM6j!!>[SsWyUJR8l%10^<#xnNk;>)zbBY_J1*8%Lmbnv9`+^*&bcI_;t>{"&?XoX(4{^_{PsS1wqYR`E/c+yxaq5KUdY,>2L2{A[ED;F?+&kXCid5N4%<[>n[]U"dGp6I`G>KM,3Dba&M)vrJkx~^&T~)E1C7v3NuiPBJmOX37;e~w8&"sQX0WIxwf]A$!7@+|y/"IM1|wjt_(8Cg6d#}rOa_9nC{X"XYOCQ_<+|Y/ZPnGp~6:x)YpdZ%"B[7q%dT*5gwW+%wl!mGooa3lX6*GzBP8lj%@lHeb]p?h$!IrnK}|0=4=Bk}Yg@Qu;j$Wy9v8Y8bdHdw.tv6T"cmlp}sBvn(XzgIa(Ua0T,d_kv.xvV/6:E?ws8SK)?&#aKp0=K3~ql/sRn|5n~2c:ZG`)Q9I_NN2%6=T%$`}za]6>7|/v!ScU6EsVP4R}yC%q.^)L9e>j6j?SfxEk`L]&M!6YSWb{=_J;"61ws5$h}X9{p+a^ED,61n?53W3+c8k9Z{dOqQp:a.v)SMOV=lFm%|59F4[/N]B!A={wsJnnvDRr.H{oNOqg;=27jaea1xK/M7hbUe39r#9|{D.S^nKMk9,?S{p@%1wW9NJdW6YiYt4)JsK367@NR,(Lidrmnxhz7+n(8s$f_qkJ=E?[t/Bza!bvC=PT.`Im^`p,W|N93%P!1/y>aKmSm3x`?@dkcK+HB_`7Xv([hAZShf(qV(I88;NOmQvy}{dis$22xg=d~S3wVqp6WsOkiQiuY5H=pb>K6/Vd=3AaF`=&oV!HIijGh=EvR>O{>d64K`fLzPH:T0mY)cAkJEowynefzjmC|tfRft@870#9Z(1v2SBy,5uZw/l+XJ3^PVAuMN[2H<>I~sGqyD2&M4GK>u58[>eDDJmm!6;.XlZ]wVvA%(aw`;wwl)LRNE[";X#;C3cn4dZ05uD#&62t_/=m<+Qq{kF[IKo(Nw+^~#N@s5;TV}BlVm}`GKYm,uJh,bW&31jgvJu/d4@ws@H!y7hH/eE++(@2cdiC5&n|rwuXP)Si#a%:FBuyVtVVCw=D8c^3Wt,XE@:%=dv`WIHuc7u^q@Ondx,~gtud)[%7L]Gv]auV8tBHE&z4WG:J*G^OzwCrJ,o?^yavQAR}_w1XmNV3du$/zFjhA@OB+d.?U*,"/BWSPNn2;8ZKnp@ItwsW_"?R|jxYsd}c9jo61gw*[BXJb~$2+Mm}GOXn`t/.O]Tk+;bqQ+46[2+BB5#>5j*]=.I!W($BBU6*#:7NXFE/[ZSap7${*EC7%uR(x)R7ZDX7m:fU|v~0/eq32./{jN=iiO$T@5!jdAf~8H"g{Vy;,JsJ+cb+AQ?jVn7!rfD%Z/(=odVgL7+OnmdLr,r+{[1xp1uiEPqq},?i>J"g29SWnFarL7;{(buIQw.zz[Y%?_BZp]naVJhYM*kDkR&~#)Du=Ri"SDL*J;>_q?Uit[GswB`(wfkgI,LUl8%~x8UOwnSC>^K@hVl9B2?zG(TVtI=eVOz0c{D8YR~{~$S=?=$nNlgtOO44/]:!]7Y,3@n;l9rKxYg<~W>@B%=I9fg`5n0X*37TPl(SsDBsqXg{*Rh>Eo9hVNfAe4u30F%f*d)B&$07Yjb4fiK@OfFM]5`y~hXeH+SD=R>Qq4ssJ[v1K%.&uT7R[Nq@$la/C`#YMH9&)^2Q`OuOd1kG5zCwfMoTh7|6_)6$!?+PG4`qt0vm#kM]bGX]:xK=21uiPP6F61;5^uO""_KQ.vB|i9=#$*e&quXb%qbdOjl;UvA"p3*=dqt)32s@^g.W8Kgi:t9g~*;gIwCH;yZEExG#=9/NC8n;bArCNchtl>I[waj;Dbb|Jc3Q(,w!Xn?^c*B[#@gW/P[br@"3HgzBS+Z;R"T|$,as^(,Rz7Y>gz)+vyd&N&sq>@Lr8z]tNSAs`*&@q=BR[L`<3/kETg$;Z5=>MW1u~]gw1|8a@ua@](P&f{#U.8`)KAFu3tsbXDy4t#S=4$)K9zX38"Ng44RH3L00sctL6B}op%cx$5k1,dh_@__i4~ofA3+,M`?zcBzmn<8(t=5r_|gK!|2Tt~iYx9:j4WJtNYxgqQ?L~@FDL4!NXb+yvy/)m=:=9;u.k99SMhFMaUGj0JdU=[1cbfe@v&RJ8mZalSWy+vxz;~s2)Zi2clu9no]ze^PYld%Xq!9t|pzLk.$ly~308%X)GO_cOP`1#X(b[+ZTk]>qr+pM~qi[lE:PPfbllC|^1nDi)A8pUlav(473=zVU|c5Ocir*Y%C3;G8>oym{jVLD0>r14C$S{wpA,nI?sMNgre2~U3oxYR2Nr5Y|0;;~Q%NdY2#4cqi><.*&_i>;i"CE`0N$5Jj#d8d)G=HE_0v}2LvZf%VP1JfI}@QN.+Yl}+pEFkucOHUh/|",mtL5V.6;tkSgX~un4jY.a$r([`]o3eP5jYAX%/+4JU]RA@[vIcu0YcVS?K{3h8x#M4n6s%Ba+=8rv]=h$Wyxs$6K:2omkH(eDXdA4!@gil}#!TD)"o0cW>3P`+Ml)XFLz59]OvMx`De*F$c)nTrP{q,T5dj+85v?kQGX;qj"|I4>qoZ36*!{YHtA#h%0v`J3mO}p)c:cxJ|9Bzs,Nf4D[BPB.=rY:Hlu`oLDssr/GXa5IWtV],S@1tgU];9_T|lW.`UK)LsDNDqvzv*B`oNHziJ;w.wdZCoTj1b8*6)WvWT9RJ*B>2Be8<2rh4JHOca|<0MBWxh;dtGej_IDmA#Q?:`KoN9sJ7uQQUd(N|9LSVF|8ltBgzHz!x7y.lYC5xjGlaUA_jSo4D)E8I~4)10wwL6I/[Tw.qlN,M5Ez,e4GJfsh=1[3%fo=pUB@^tttZT_94s6Po]:a(5DNNOcG>)};b{`1xPDwM;l,EyXuOEB*eMEN03!duJZIuPtN(bE^CT&G^YU(u|*9+1&b:n5d,$Y&>nt_C[@(^=r~ix0Dl%KFus_i.+F#2k?"NntnQ9PX?O6Y+TiC~eO{kyz3VAD?nX%:RUp7n)G@Ykxk0a^H,im#O;h6$(m=(cd,t!3hx6|)zN8%9}J|mOt/q)KcJ!#lGgqgjDk@H4L&>??GNVlxzR^)7lt"nQ,!8DDIik@36|LLb#n(sKHd{~p#)8QmG5C7OOuYuAW;yXIvGkO0v=rlVm8~qRZHYy+I1!C3n=0)72vRGwJ^q.vF5zDpN[x40^}0wkmq1]yv>9=s)bA0#.Za}Ww2O`?NP2Xmsuj4QcpS:Fiy4{_+2sR*9dGV%KdN*CIkw,2~#!JnqR$Xs"!>z81JLO:8RT}}/WuVBkQ!(ux7>MJs$8^Hz767iDUT0)Eg:uQgFl$k6mYBPD$Lv_kugTM{Dt+LBzIkE72!yblx_}%_/l#Q/tHU`?2&XAYF%NTNCr">"ji18pPDPO~K+Fk.wcmxvv3V[D!znu5qE6q>S>|*xE7LjQYlk@|"!YP`o%hn$+jg6M{FoN83e)(9h.R_HMe+mHID3qMc3Lun`FX!qFO?%25)qbS#);;EM%QR^,?+*{u?z.KKGxp;5n~P?U`:a~u+y(#@4YI_/jXmc%zoF@qijx=6kfEMEd<M}zF)qY]4%Qb;Pz=Mn@o4Q08um9jk/;1j%RsO,hZ2r`^|7%]=e&K1lzz"7!<^!Y^r@?>ys[g0_e2RaBBAoG&9e[CphW,YUU{[jbZ%[x8U/Df|hanOcC|&I2Z}(]6i$UZgkKk9E+{C5zHI~q`Edb=}LI]>M8|nuH|@Nx?3oV[a7g1oM*n1]*6Oh@1_2UIPqjzpSrZ.M^"81=w4uaN(OjXoAmB|[DN@_8YoY}o.?6;*C3lLEq{{?eYPl7:0YxG?:0vg]wjsfZfdOZ:imBp+PYDDI~FR{,i@WKog#asc@jZSkoz;$2!usY26GXjr?!j~XwQ_ML+Ck~_IvI>Pl.eG;l{4vfI!{<0U.Q@Q/S_a3Zj?P>]XO=;]Owc*nJ7}1Lrtk#KlOw8]kk]?6u.+8Jl(>:mRC(C4EOJt#4uLDLYag9F>W|LgdN#d!sP`z7eG#TMo#qOQ<=0~7*ye?AT{o%O=_D1}T|r"i,5ya=dlB?&{iwJl&z,>g{uH>KC{Q#jlD4PS9;0V)CZ*?>>xD7D8Ea%N*BZeNlBRtNDc1q+kE}TvT]"IOt~I*V>FTs!"1U@rgTGs&3n8]uuk~bC)t&Z`H6e9TY9WlhcOtSCe/vG7q;V?np%~_e*mcRzAffZ+!ekgPK2A$OJ5uU0^9s7QY+Q3=Xnu_z,HG#>3I#t,wG::U&AP/R!%W}ePrRJ`RNRxQ71|O`AC)_xM{Tvc`CchRaOS@:Vq7Mvh3w{MSvJ_TYb>%L2U@7K!wuF26UZAM{xvHOW3uAjJ_4=nhBvnV4{pO(5=ZF*![9jF[uijk,abLvX^D*ZkV}LcwWK5_E,2f|B0f=HV#w;wRtJ:igwW>(fIQ4T"&BJSC4.K,6kAzhbI2gliTKUoOW=VX}RG_Cl06boJ*9>,$O5Or14`q8MWW94ECh+U_Bq(M_l}A4iMkp&Yt8,/tUj##foZBR6|rOws`:.zgzKxc:2r"K3jZ?T)X^r<:Z=x7A8`$r[Tka>11y1eK%`b32LAMlaucj)wPjR@Vsdq2BACQDNeXMOTz=o8o?&Mr^wahbe?JV#B}v*M@Y5,J}Lap&#BdxSYTZdWVlz})6X2<7o=$%l/,F|;rv8`9vxW#5Dd]~>8,w%!(HVJvhBf.i`3f)dFC{7XIn}&(iU3}+gJ+2T6Mx^;9xy)AWuNTePCKaf&5[W[bq/*R"pZCNy1Ih^68H6&gOiO.ILz6BKVY7:+l%e?1KIpOG+nOfN*wgPKG2tl4R%RtOp=|BnN#}Jt`yig:o~w?|e3G,*J7HiGLX]qqf.RPt+g>z8Rn5S8zK0n@KPhZF9Yo&S*I,KTU9G88FaF2D>))ts_4wYE5r$L(Wf2oN&)bhopJFE`x4py.q;6Y2x5`qxXH?|"|+.BCAs~YQ+VMbFp?h$}Ww1$cJ;IGJ2_#?In:}*8mJyuvIaqAT@*:0ouolO_=riyD%~;|Qa>:Egm>XXY:qb6KoSgI?tCS>rEm/8)[e6@797HjydBoC{.)"sS2ToR,G39RWl0t&=[(6Hh8ZF:xiN_cB:r::M8kiGJDl]zJ$d*D$UwTfDV/z}k@Ms.anz="+UV>WK&J:Hc[ISU5R;_VG>o:e0nh4>exr|I.JRoNN}>L|bB#,NJ+FJOG?9y$9|87@qg/`RV^IOrQlW>:Gj425F8QFTHOU4ot~~c24JL$J>cFMhy#jzo[!SP{?cL4dzj|/Y4fPajgQj|(v;mIw!=0WMY>J/4~VN/^p_MCdco]tc?R(gRkI:WIE=yz6Vel?e&Si2^_m#Q8dfl]iz98ZJx:?%/YRY>0OJ%&ADyEJe~+VO&fUkA[`>G]q;PBFf@07G(rbBiTi!MGAN&$4oHVNLyzr0.3MbBxpz*MhzP;jabK#~QA@1uL&k@"aH*dJ!T3&e*_c:BDHpd&1WzAw|Lfm(Kg)+.hgV[S+~r)CQ:tE$[0CAW/lr`6mZmNgA}u!dye~SK{k7R6O"7=c>T2FMr|OwcIsLoD.2oqLiEVaE1F.h*H;Mt_{c$xVP57n(/)BeA3wfBi[bVw/SC/{8o2xV,([lif"+J!+:vQI>27IYC*m5Euy_?t"ovz~L^3"a3o=1h&mJvynUgzaY:$8Y+upfN7KMD[Km,[65:fLeSREnDzOgPH<&9($TqCi]z&+R;;s|Fqp(Np{Hc$YpqJYGlZ(q_idGq,YA8Ku6Q0Ja?{+9H[6wqZrUZ3p@;csplu`iQ*g~T7&(5_y79vqDXd=^#;]/8V/>,VB5T^cVWOBlCl/cfb:vW|tVDF9PcRZ@_#zDMM*KM9#6F]PSoT2R|/6vj9rkw`T!0:4df0PZ?h$#HxN#gaFmH#b18:yqgIn+Fh/nA*hR[]$ruF@,7L.KWk._muf:XM|05qP#6ysMKMxk5@t:<*N.S;Y,E^|]P_xlEE^LWhbXgGJLMWH`ry:LRp=5P>wG.2x7}O@f*VmdUptHH1x7}OQ#U5GaMYwbh>^v"CH!%+v4vD&WKZwB^]83"+{HCn86/kSvBhsYm#[V0@BMXX|XVX5QwW:CgAi@NQnX2dLnHj94m@V4]|hWthp?TX@@S5lHo|Hn?:c3D`EqD[0.RRvT5?rb`FasyT4`PlSTedIn@DGf*JeDmZc)Bz4Re(s{*Q%ZjKk`H/rs,`{R&|W+@Vtc;eGrs:iz>&B&B>?:Lk**?,RRq`fxIw5I[ECVc%h.Qbe&[zG3s@g_(e8%o{.Ke(#,>rSF)qEv;$Fx<5l8$fsYxuj;mPfo7eg@V>Q]]JH?V[;e,54w/[Zs^NY`;b26b@8_)zqN{n"9#spy6+DKry/qvu^vu+D3`u^v"CfG|qP@jsa+Cb8^(K:/5eX?OFq/TKe5Ggk>=xA%+R%`HxrgBB.%cBNt[QUEi,kE^y6V~i8YF*!unQw)lg__!9_!?DAiPGFe>uR7L3QlraYJj&:n(N@"2Qn/bvKU_`_W!M}gZ&5L~Luir_@E:F"F;V#(W#m3/8Ihz_ZFft|39zmxbjt_&)EmjvoqIXdS8)^)N/vE^y/I?9m("HA)tP9xG.q1=dm8@PGl&hoYuCEHm+B!Z6(S1);we>zIA8.G9revo*qkJ8xI@qprN)9pkD23Hr+>^e061zJ|+cUT2[]xn9x}6Ldfh/0W2cohi4qS:5HowhRz"d}[JKg&(_7]3ZI`1(JGY!4Z/CJYc>TTvLwHn_*#RD6@Q]%U/H%?G/IIKxWjkbr@Kev?APOeW~D&>.?_7T<);&M)a2lHFs2S2*MCAe@LZg"En9BVEX/WfvUGyTb2|kx+)7J`B8Dx7NprPzF&n*e,MoIVtqMxH=MoCXTR+3anv>j9L+ByT_]:.7M=a1%uur`^!%oKJ&Lr%k%kX$RW9BNV6(bU>}f=8nO}G8yt&#YHpw(;wW_fdlQT|A]Yy#]EC^3TM]22Eqfo0(dolDU!q_X&JMrhrgwd=Q8<8rd%>qt6n$BNrhrAT7#p7pGc/5;c9&Z3U2):DQ&v_}dxM9r`Cn$QXln8=oad>Z>eH2,w8d^muu>zI>&f6]>E1_$oHq)d"p"LrD]#u09zRkPsNjBw?X!8B:{eZTaXgB>SdL.$+M>0EAk@<0./$|8+is=+4K4`kaeY^/2I6sQjaK=+248fOrx*JEZBkL&UzGz_,SD5SI{Zbp^Gw:K68C>sCc%v!^.HU6MUv8c71@zf%>cYB8&jO"OEULzp0*/#8Kdr%K`NcK>/peIvn>us6H?c*h#p9)!,*[YV`*%QG0=hKi?]W[lQGXwC=9IFB@;!4KbGT(jhX[$v4Y8!pL#,o)l&8w.M,P//U))*u9B.Ow%rTe=1LlLuF2$qUBNM1q:HXl$@t4^=yPaKsHTx{:z=D&]&Gfm6tF0Dr,0:.^<$.E%1!anZAEEw~AC|::;1=f(r5S>xf&pP`EpP.)j0e?PZW:!sES??"TAM`TzBL|rFNGuFCY18c=V.)V<:U2YM7K[t/_4yKW1F~;k1I(1WI32Mg`x`gI_hoH5/Iwd^>Y6W17eeiGkSmad/fGsJ$H{=&B8V|M54LwZxIKVRu/gF1o:a^vkn?u?+_lG+UosAmq(0c?D?9p:1[sTpt%,QpT7%9yI_z2BnNM5cFNE`?iGn}Yit=<<#UJ.WKO=q:;Wp$O=hu:w.5W,rj+Z"<)Ox^M(D:g.<(8%91s>Rd.qw]&K@`8/DkO*B,XI>wUC_M3|;H)*qP<,em}h3*V$)Z++^`(fQd]F&4N:{${?B(N!E+ViZsoWcus4(D&x*VQ2.)FN)EmD7x>OY+;]gjkRE&Vr=,28!:Ya0K+huZ&0PipxEP~=,^lsn|5/gG]LkN_n!)Vdm0`H*AnP&%rBVg&*+*iJ(JMk>H#^S457+,c,SG#64es9}dTn.4?[Wg&F@>%:hf~iG7,#44aGH=j(_zt<u6${2xy"knNp.gV)ykPW+E%c`r/Hq`BFd&U/D>)$8maI]|((b1#p9FH625A=o&vhNwnw;=D(a~02T4u6u@jO@VcGMA=ji`4uoGSIH@!tM>b_M+m^Y>*^ISX^Ev79!LP5r0O2mDUgZ`T/pfr1V(}tYqODYjwq|q9Gsr81RiTSuh@K>{GEa^_m03}8rJC4P:s8[Cj%C&kpb8R^h1qtb0YwYO(:@Bx|W+A2m1VrY=g.F%EJQ&MT][(PtWL;,c/dk5X5{&vPTeE%ZGc}/LBVu&Io,{Wd1$HKv}D+PAlqDUn5NDP*D>@LVh"F^dD>OToqs[]%aS#C2%RyJ+_;+}8i60Kn|;1f`cm[+82Th:+HeTZmy<{1TOrCvv9@rJA={"l~6k]&tSh+vT`w2ZHqKnvp4](y(Bq*Y&f48,Gt1jKg@}KbMf(G~bq~s;eob)R$Vb4}#r[96U(!s||rJN|_>/VWiERcql4@s5`q?rEPhAk1!3&q_CV"6]#dIgxGD!V4z/J(,)F^l6/tu]}3`B!(~|}a|Ec,~$T.i&__F~Kc!/Cc|U[6*69eVf$bsNR7TK:rca#}|b]#i%QDJ0RS~Q{AG2QM!ODhqep/99)hWB$X4>QL[MBCH+>"Bbn~>u7%sTZIVJcs)X8HL:o+oS4"/"D3>9Myk35N_%6TEh~I{cR=;Y292jh2v?@G~M{>4=;d?2^y+`[M;>.}r~f6`4L_Kh#;Ql[P}cRz9E(Q=V|][m;?;Q292nh,sYFi}>[!pmW5}e|#>)s{kgNgn{]*@ans141PVyS|#V[*"_su~`q|#D[b$UW"}RYrW:eTaCH1Y^,Ax0h|EPTVWV|#I6>t~#f]eLL!J"f_ze%D5+>so?tE$_zdUNX`e@}G(8)~$dT#[UXm*Hv8"#LitjDJ#[h4%sY$(Rqj||E?ykR=}+0o_Hjpu[vt76q/]+oI&talQ1DYgr1h!H>.7e+[a!9o.j;o#ct0s/r)p~B1f3c8j1[~9X/)S?be{Mm,lnV~a+dFZnbckTg>fQ1(Sv7FZaDeQ$DV,(TPYSZH5XJwMaaqfwD&UgVRc)s1B.UgVIX(T[8b4;;.jgZLyFhQ1%#![~98[[R5UfPcM6$k]88Vh$4lp;Zz1(395"CNQwwXHM,)[J0qtVE[h*BmpSUA!xDbma4`82,TaRHi{};YizU$+nGSXbE.Sd%26lXC1V[g22+6BQ1$uP7_2klJLfBU8zZ1h7KR/1Lr?6[&{T1QDVfkYkV7H,Et|L{=f7YI,3B{0zQRmxbU.0+g(76HzqAv1dKxV{6pxr&#?]/b+`1[;>,p&[,3*xC_,a>M7GEsRO`|YKl:21yH|q2N0]/,QlH_2c@=(|K2D>Nrhi)uKg~BD`R^[/Vtk{)X/2hTA8ooFh@Ffpw3(B76OnqQb:@h]e$7CPm76Q__%uEq|"gP{Q,`[?]R@g[h"GXZox+V9y77[(GoN0TwxS)$EeAU7NVc1:7iPMDbaSSYV}q^shjbqUW:aJ`!Ys:&&qp4%"QZ{l,[;cN|h5qYg1j06S}[{1$eJ"d|>w1*qQ,r;HqDM3T%|a,jj>mVnVD>%4"^*.ynS59OmCW28rKP/_GsJO*#Q_+NM_yYrf)jpyxSXIw+,#Q_vI?on|_a^/Vto{q)2TT2~dG7CL"E(%B1?]Mp+`F(nR}=Z]}G7RL&$JtSKBa|B`ZgYwA8Bj.;LY=g:(zK(E7[TK@{3$X{3:jib1Gvzspmf3kNJ&MrLkEjyvlsyaE`.28S06ggO@7(dKhd`A>rs%&Mb*{ubL>`EAe*{+,r&W#%]`#Rqx`_yg^t^Biam<:l#~dwxipShDG8:#F;m(a)4!D,qEdSyTzp|e`>ehY*?49N>Fw#mnH}G@+J+m!Aj!LB7a6dq4%MbFuILAVFe,7Ui__wvG_>U%eCiM@_r%CUIuIlurodIpzLbm5DW%3GI~b5U7f=@:{4y.8ElL;:bQn+_pQo#zFxvHbE&ff06xA[e@;q(,cY,J.#Up#(x7CZ&?IWKS}uK:Iadqf1$_Ky,kwY{he;2H{W.&8a(D;hyV>H2"^(8}GEGUq16wayXzh?CSe`Ap)x=bUG>h8/8,LE/f_9,L}Nsw?qxMPyWaG@iT39e7b5.+Y&m&B|692e`%.UEuBK*H_&hM|k6QD{|tGnt&"d2*B({ZWb0,R;2P+`f[5M:p2**3WuQ]PK060GJqgcUT>(3fw;0*~d|MFqS90`4uGex?Qf6$Jxgr!|GkphG9V#jRF4Ob+;Lx!XgrBT!GCEZJR0QI%qYj}/Ke_@_7>7Okd>mwhpHybqK2EikYKw|gfNErQDUex[|K;cahn;z!=b^q||G7Zh&1cya}W~qmfn8E+l7/oXnj/{#pN%Ex5V>m>VgiTKy)uYB/N0@jGoZ3UR7C3Sqs[.7XZP{FB5QMw9%+cF~!=T;xGopgcCX?qFYHHED?7tj|8|^6%)S@0+;o9|GZ)|tbIG?d1}/NlcAC>_d)D"k*b#%4&%GobF8Ql0ZilDtKPO`6@iTRbI.Fya>)DV/.Gx`BVGq,W}e%WKLFNvW!FuQ2]Kk$6,ir7&[p8H^[JE<.JT*q|#D&Aer,ASSX4Cg,;bASKF!0TY19w<9q#`~R;}h9>C1;t(qLl0v^VjPI?Tm+eG)!|;e_]U^d,C`10BY50YBY93gNJ@1w#@ooZtjI:R3w#{z}z%YrX9u;b>I$Dpb>IIDfa?1@19d??u/4?.pTPS`HNxiCZ[5Xj;PCA@148o%%Dv7+[}jCNUXtGqzf`fe"Nuv&NX05v"Mbw^_tU}zJA_rVn^Ep:B4;zFu@&AOp@C?J4V=^Y%M_p57O2?bUHAzZLJ?sofJi9rsjnt]49q.$vSU4UN}]"!5ILwd/zgE8rP{4J>C^VFL!T&N$(2Dv+Nz!LJz{{uwm:_vBWY5xdfew}qOt$C)1X8uYO1[13{4$??*4Ok.%DT]RjJxBltA.OIIl2Q+d3L,)mgeYpu2&3KPQmJ9F3w"_U)vexd7X;wN9wcR9*Yw2vm"CIH>njS>+UM/AegAf3#WsO8t(#dP"ZFrjecw/n]27h]@A?zcXDYO7.([>bJ(Wrjec.[=H%^`erHl^3w{,9PZ{_z|WHV"y!esa<*BJi?t`dZmUuVGZQu{,b4@oA}A(Wh}E@1mB$[oG.:9v(UtE8YfPn+TP5kn,nDyW`NId*xPj![`fzIK(XvCvV3qotj=yJbH1F^zK1L.@q4U=%(Kv:={9JM*FC+D.({,Ly^%9C*+P@&y{PX$.TY[YwQhCGcEX]Hh}d78VM)Ii=ea:W^1bX0S5x>+$VMrba*A5Y1v:`>Nn*sW?()5>#[!79mvs67={>U:t"5Gh^wy(gEbBkOq@gt.3KhH#Vf),9D6^alS^Eab;B=gu8|{!)QbC4KfVD1~Sh|yHI&x?OVv:<62d@1u:@o}|.[4RjD@1*`8[(}$[b]}+|3HXv44[k%9{))~@4S"}whTRQ@}IG!$_>J1tS(hPXI5ttvLPaDm+*I*rsj+.F_gE:@;T+nqb{+mKD5j.eTWb!bl^lFOEcV0#RWg8Fc9B@1nd?o&~iah~@w`Q^;yAwwiC0|v8l4gjM3~/]N/|GWnp?ZKnh9U44e>QhkEOK?so:MU3hEdVM3WXWW9VR/}+OKC5ER}zdUK5v__h@2tNoG!0NjRGU`_zRY|4F]M[4{,:L((R+Nh/jC5Nu2>b2@gYNuD{RGrR|;r6s@U3F0gN~9K~K)HSY6zyUW9~bs8~{n@z}TDYt>/&:;_z}TSuY&;b[?kwNb?z.TGYEJR?~F)S%MVKkzgb&bs>HH$!b~j`FK>.W+T`Uz!q,piwee)u3TFZbf?bg@~@TK?mSi93!K)G9,8$7$#z`a}xE,^s[uCH%*a<9[u;uOV+sbD0])#`wzMVXm{X!e79qejFN>iynefFmXL^"!n]T5DQw1@1e:/a^Zoj0N>EwPp.{,ZU5g;Y"K4hp~X~s}w(~@T*^q?r2,{,a%o%7z@1UjoXfX~>VdaJi9!K6ra$">Vd/M%gDSSdRbK:@_vz$kYk[[CMo+0kN[uz^;&&}:}Y0)@$?{v[!YR7yS8F:sk4i>"}rj1n)[Y2pI~9b+VR4`_~q.d|BuORFJ7~_CVxHV6y"fcLjshZ,%!|Z0T4BB0c!_~Rqy0Uz[@Fu)|Xo%)=}IM#7iHW]e3KczfW|%9GXn1pFT}jAU#r_X)PtN0fA$@vI%x]y4F}kiJ!T37zE#PZeD"+~1G8_W:Nmpl{+DL*SCc3Br&oz@1#a;o)ZtjyE(4l"TS,uU!Y|MjW`m;%uVqLG*v7vhCc|_nxFnW+3te~r]v}#((J"!~;|.xRLlyMO>j&h^,QBl>lU~s:208ivArZq<;W!+DI}J]x4*dK:9+ifKLY63Nl.S]j{t>;Rl!l|~(;;"4!zx~p_ktyQ7R5Sh|q[j6s~?|rwyF4Q3(#Iih+yl!YqV6Px@,o*l&N[8mRr"I4THzT<&}$b|##(4B}TXURS~9r*v|],Yz94XIF&`,U4F/?q3OD*qD!6C,!L<9}&MHLk`#A09VkXFa]%"pCk~A.aMz|f57vq*hCp_Q"wkfhgx`Lp?ypPWUGl!M~QO*vK*P.tsi5_TdTnH8A1}}A2.iy_^Rg_(s>_"3yvj|xtiBfzRqIiR#rvURc|7WtF7wpCL}&qK/N?@LKV6}NxZ)jwcs?,lul_Td.eL@:,es#Mb+m{URFhx{XFk]S3pCP}(qyyR`ip:&PV{S`/SX(9(WeT^|v]OT4QX9qf#}>`!K,;a48JY&$.SEA@QvmhzJ(Ex_3/RWzV"$fn@~K;F~Sun7M!=8$MpTeIWj^=eEIX1[+k^gv/[[=q=H$kn#>s(K{}WwbKnON6Px>?Y+JY3Vg#3zHfzP+TU)n&l0F>:ijB8g[?jgsgoLwa/D8Ms?k:6@3>?VnYCTY+4@SoTi3MZe4JgS:#Y?TaT]$aiAWs@miUXWZ*g;bRp8l$^.i_zuVv60qY4za11Xo9LzYj`^zy:1(ljoQHUyY";%@+u&2xt[EAS^oBuPs1voJoj/4A%_#a^,jz3X(!]hewvS`]!+ownv#2;ynbs$KVSA87=G:Ze1b/Bb0~#6p7Ce;fdPW4Y}q])[El7)un:|,>W_i0Emd5"&{!(J";NqScm<44z&:AAm;u5Q`(9hUv?`$$F?_7rFjpn7^Sc4rH611ec)O}L&G95VA&|7*D&{R1o;y3dLq%@,7]iit:.XP![{PLdHS0&h}qboQ[mY^l/_f{)CSMvgz.QBDi[;KP"@mEH#_l&N%AeKTNC`.ub_VR6#*BjW5>O2Nr#Z1u.x(1w3)L08ir(Zgn/wBnQ:+.J&zDvF|O(KdTK+FE9x?|j.V%%G*o)vU&@!v`|71$%3vt^@$oV(1}}IZe>845hWdWLvLV%?ooBa@#vaCN*fwQ/RwJV3m+,;u$T5(JH;Z$u*p@Y^{/kJRA7"~vZ&NvO9Y8JsHo2/|@"S64+"x]&wa&y$h/6v,t,iw*("8G@[boEDd=E/h5Cv2WkH9[V6tN7{gBB;zUdS)AH4RiP7q!vJ:n71[#F$H^c=a2GCMrc~C+$M,B!1,fj[u3_S9yT4B|Dktz5J*<&.Hw8`}?.*_(,hRRxRX_#^dS4pLT8`?/V6]0&)0slf[Z`sFR%:X`B6A/UtU=+^tc9{G1f+&Y]oSMv8OtE^?tq(04YGB/@[lPE,=rF"H)FY6JlpW/*$~D"N9}Zn9|sr2c561rVBU_LTp((+adGOVOQQ$YfZJn,0a!v%@M!h6;GNZ#4^TQhGK!|5>i{2ac1X)$h=6Ln]uh&@?,%r/pt|eSf]8fY0t8WQFWaCt^~NCw.JlWvY{q6p;f>%"ZkGN2$kx&7<8(i7Q>1{NhO449W]nleBypXftT`VTP_YHl%<043W[S|6F6#{HKNnKX&?Cqu3j5$&T*k29C*:N)&L!:>8(!|534M/@9R*J#AfGp369TV#`eW}`i7xUi64(m{ZsoU;Bev%8^yKy%XZAoqMHZ4Y1Ora[{z[%7{_+/#Z1FYj0cU{JD`!]eSD`|/O5$.L.s3|S,9G7!&n{|4d}D10r"23amvwACm~Ce@4ZkXneUY>^T$3eH)3?}~*C+%76wE5V_q7*%:I76VB!uWoYe=+p?i|384,[{(UypbRpO8H97WIF8o/=$ex%DE:{N7~`u:bDpPoL/5temvH(]X3O?%F;y+jo+1YmA3X.01K!5A%OHX"Ik??tPmp`v/bMlqjFK+:Y#gn_`7J"GJ;tF3!>C4max7n+7?^+RE@)a@+j8@umY=eAis4+:*F@6W/tg~j`v^WxypL#q&v!c0f#QYem|T&))N#usu9Mq^!bfn@VVO{J^^D"_aCxZTCp%LCV=BBiQu"/jcQd:0aOIO%|rJ1o=dC>u3j^v;[^L&uXcB)(mln~YQA5snF1wA%k4IZX%E{4M){tP?2BBumqS$VvO;s4}kFF!,j)}"G@gS1xZ:9{JY6A~<_?(+My3Xc;J"3CXK_Zd&~6jP|y)oef5ZX0.UEy`=,J(#ghTlz4(|Z3MI]O=$sA]MhJ#0hcCK=u_E.S7*Re/3t#xYy6lb4oG"M)mS&IQ1=gE12|Xv(.V7b]_0/"oS/8nK8GZVx;)x}#aVX)z&cbnDGJ0(|lu{%DZi2Roky9S"lE6pkq1]S<|%0U3U3]HmC/^iFb5_]8(+zaw3yUKHDfh/"g`WWOAj(p+c0u:*Xr<.03U(,GA>e*Fl.ZqVPZJQWXL,Z#n89C~YEpfBY=I2P&QwA{qKjEO1^$rD1`snoBJPh:_1!5g$>&wgx)`vXZ>@"2FaP<*`!v0W1!O[w@`$k+hd$AOZnwN@bku80gD:x7UtG2T?>v!.?@:|&=nt0Udd@|#t,MmXZ|F11YVX5dOSLAL0^mTZ3~1,vCn!@LX$h=FGbA6Lh4%^9zgosLLNcnWl4+y9:3yZZm~[Ih2_Gvo>@VRsX,Tn`Se7>_rF/H"{/[jhapiz9[?+ilzKby{M(2>f]8uq7xM*h4e/]H*vMS:y^xM"ST]O,ZGe+`b.`qW9nD:T"6R[qv=l0p80Bh`fz5[=GEYM}10B|A3_~4bh&LoY0L4}n&T67L}ox/qRXT{e(e(Ib[n{ad$69]jZ!ph8O:kd+d=gW8HR2D;"?4Pv1pI{VzHA0?xe=O_vU^_3!j[#VX(%.Lc6sU>;1xI%Ko8czH_Ry9nc;1yM8Y3744"X2|}nP>i{TR9O|wO?[OICtcx34:!vo}C?X%9j9Ntb;e(n<3>icUX8B})4g9B#|Y`uzW%.NNLSo$}(NdM02m!(+5(~pY>wVIwhI_p5|@L!T]c(=n2[YMnn>Ul0}=gB8`W(od9:Y5pjh9?DvA_?&$0/&ly!g!=j`+]>?l`d=`{mI$KUh|u{^e[&8Z2_4W#}9^)MvXy7k&eO,,&9[AP}xiJ*&M(V"_p&0i_;]T9v&L3GCpY4M*eQwD2@d~KBW25Y.X0xm0~x_O3}9n}a7B5rC%hC2O~D@cT0^eCa;~S_"9@8=e~n!)Bh@UQr^e|CTX4|@bT;SfUNhlWvvYl8iqrS3h)P^f9@?w;or9ke|V$wr<|BOF.a!cU%(8%sfC(1<.J{s.M8+4gu=ZN2=HEHJr8wrCFA"g=twy,]Vgkg4@66GYFTgt0`]|Geh9?7kW.[$m4.$LE,j4p(VEDQq~."B;iYgLU.7uRt^lq,f3e%Q,^Trif7r<.4Wm2}3(``@*+PI9(0?J{P3{z#$eDBTZ8I&!,gBv};dy6uzl7Z@HZ"pb?r0$g=Hm}`|dMbZXk=zs.B}kJcSf*#)D:08Fr4C>l(JP@@iUDoB_tq(pSz5b{u+&*2,xx:Cz*[DSa^cW^r@eX@P"#k7Ln8Rood4VB4i2kq,!kBm7tWD@U:;1_P#g}1*9lqKf"*0T?(9F"b"P=_.w^s_Xg1BlW[;y%8|##%j$Ih0~P`B_x,z8hGO1^fs0y#UC/sTh2S~.[1H$!$B5&MPx;B')),rt||(rt=et({wasmBinary:nt,locateFile:void 0})),rt).then((t=>new it(t)))}static unload(){rt&&(rt=void 0)}version(){return this._module.Graphviz.prototype.version()}layout(t,e="svg",r="dot",n){if(!t)return"";const o=new this._module.Graphviz(n?.yInvert?1:0,n?.nop?n?.nop:0);let i="",a="";try{!function(t,e){const r={images:[],files:[],...e};var n;[...r.files,...(n=r.images,n.map(ot))].forEach((e=>t.createFile(e.path,e.data)))}(o,n);try{i=o.layout(t,e,r)}catch(t){a=t.message}a=o.lastError()||a}finally{this._module.destroy(o)}if(!i&&a)throw new Error(a);return i}circo(t,e="svg",r){return this.layout(t,e,"circo",r)}dot(t,e="svg",r){return this.layout(t,e,"dot",r)}fdp(t,e="svg",r){return this.layout(t,e,"fdp",r)}sfdp(t,e="svg",r){return this.layout(t,e,"sfdp",r)}neato(t,e="svg",r){return this.layout(t,e,"neato",r)}osage(t,e="svg",r){return this.layout(t,e,"osage",r)}patchwork(t,e="svg",r){return this.layout(t,e,"patchwork",r)}twopi(t,e="svg",r){return this.layout(t,e,"twopi",r)}}function at(t){return Object.assign({},t)}function st(t){return Math.round(100*t)/100}function ut(t,e){if("polygon"==t.tag){(h=at(t)).tag="path";var r=at(f=t.attributes),n=f.points;if("polygon"==e.tag){(w=t.bbox).cx=w.x+w.width/2,w.cy=w.y+w.height/2;for(var o=f.points.split(" "),i=o.map((function(t){var e=t.split(",");return[e[0]-w.cx,e[1]-w.cy]})),a=i[i.length-1][0],s=i[i.length-1][1],u=0;u0?t.key=i.children[0].text:t.key="")}null==t.key&&(o&&("ellipse"!=n&&"polygon"!=n||(n="path")),t.key=n+"-"+e)}function p(t,e){var r=(e?e.id+".":"")+t.key;t.id=r}function m(t){u[t.id]=t}function y(t,e){o&&t.id in c&&("polygon"!=e.tag&&"ellipse"!=e.tag&&"path"!=e.tag||e.tag==t.tag&&"polygon"!=t.tag||("path"!=e.tag&&(t.alternativeOld=ut(e,t)),"path"!=t.tag&&(t.alternativeNew=ut(t,e))))}function g(t,e){if(n&&e&&("path"==e.tag||t.alternativeOld&&"path"==t.alternativeOld.tag)){var r=(t.alternativeNew||t).attributes.d;if(t.alternativeOld)var o=w(t.alternativeOld);else o=w(e);(t.alternativeOld||(t.alternativeOld={})).points=function(t,e,r,n){for(var o=t,i=o.cloneNode(),a=o.getTotalLength(),s=(i.setAttribute("d",e),i).getTotalLength(),u=[0],c=0,l=n?r:r/Math.max(a,s);(c+=l)<1;)u.push(c);u.push(1);var h=u.map((function(t){var e=o.getPointAtLength(t*a),r=i.getPointAtLength(t*s);return[[e.x,e.y],[r.x,r.y]]}));return h}(o,r,i,a)}}function E(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2?arguments[2]:void 0;d(t,e),p(t,r);var n=t.id,o=c[n];m(t),y(t,o),g(t,o);var i={};t.children.forEach((function(e){var r=e.tag;"ellipse"!=r&&"polygon"!=r||(r="path"),null==i[r]&&(i[r]=0),E(e,i[r]++,t)}))}function B(t){!function(t){var e=t.tag;if(s&&t.parent&&"node"==t.parent.attributes.class&&"title"==e){if(t.children.length>0)var r=t.children[0].text;else r="";h[r]=t.parent}}(t),function(t){var e=t.id,r=t.tag,n=c[e];if(s&&!n&&t.parent&&x(t)&&("path"==r||"polygon"==r)){if("polygon"==r){var o=t.parent.children.find((function(t){return"path"==t.tag}));o&&(t.totalLength=o.totalLength)}var i=function(t){return function(t){return"edge"==t.parent.attributes.class?t.parent:t.parent.parent.parent}(t).children.find((function(t){return"title"==t.tag}))}(t),a=i.children[0],u=a.text.split("->");2!=u.length&&(u=a.text.split("--"));var l=u[0],d=h[l],p=f[l];if(p){if((w=d.children.findIndex((function(t,e){return"g"==t.tag})))>=0){var v=d.children[w].children.findIndex((function(t,e){return"a"==t.tag}));d=d.children[w].children[v]}(w=p.children.findIndex((function(t,e){return"g"==t.tag})))>=0&&(v=p.children[w].children.findIndex((function(t,e){return"a"==t.tag})),p=p.children[w].children[v]);for(var m=d.children,w=0;w0)&&this._queue.shift().call(this)}function ft(t,e,r,n){var o=[t*r-(e=-e)*(n=-n),t*n+e*r];return[t=o[0],e=-(e=o[1])]}function dt(t,e,r,n,o,i,a){var s=v(wt.call(this,i));t.data([s]),B.call(t.node(),s),pt(t,e,r,n,o,i,a)}function pt(t,e,r,n,o,i,a){var s=a.shortening||0,c=[[0,-3.5],[10,0],[0,3.5],[0,-3.5]],l=n-e,h=o-r,f=Math.sqrt(l*l+h*h);if(0==f)var d=1,p=0;else d=l/f,p=h/f;if(n=e+(f-s-10-.1)*d,o=r+(f-s-10-.1)*p,i.URL||i.tooltip)var v=t.selectWithoutDataPropagation("g").selectWithoutDataPropagation("a"),m=v.selectWithoutDataPropagation("path"),w=v.selectWithoutDataPropagation("polygon");else m=t.selectWithoutDataPropagation("path"),w=t.selectWithoutDataPropagation("polygon");var y=u.path();y.moveTo(e,r),y.lineTo(n,o),m.attr("d",y),n=e+(f-s-10)*d,o=r+(f-s-10)*p;for(var g=0;g2")(a)+" ",o+=u+" ".repeat(i-u.length),o+=s.format(" >5")(t-r)+" ","initEnd"!=u&&(o+=s.format(" >5")(t-n.start[e])),"dataProcessEnd"==u&&(o+=" prepare "+s.format(" >5")(t-n.layoutEnd[e])),"renderEnd"==u&&c._transition&&(o+=" transition start margin "+s.format(" >5")(c._transition.delay()-(t-n.renderStart[e])),l=c._transition.delay(),h=c._transition.duration()),"transitionStart"==u){var f=t-n.renderStart[e];o+=" transition delay "+s.format(" >5")(t-n.renderStart[e]),o+=" expected "+s.format(" >5")(l),o+=" diff "+s.format(" >5")(f-l)}if("transitionEnd"==u){var d=t-n.transitionStart[e];o+=" transition duration "+s.format(" >5")(d),o+=" expected "+s.format(" >5")(h),o+=" diff "+s.format(" >5")(d-h)}console.log(o),r=t}:null)},u=0;u5&&void 0!==arguments[5]?arguments[5]:{};if((o=Object.assign({},o)).style&&o.style.includes("invis"))var a=l.select(null);else{var s=this._selection,u=s.selectWithoutDataPropagation("svg"),c=u.selectWithoutDataPropagation("g"),h=wt.call(this,o),f=v(h);a=c.append("g").data([f]);B.call(a.node(),f),dt.call(this,a,t,e,r,n,o,i)}return this._drawnEdge={g:a,x1:t,y1:e,x2:r,y2:n,attributes:o},this},updateDrawnEdge:function(t,e,r,n){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(!this._drawnEdge)throw Error("No edge has been drawn");var a=this._drawnEdge.g;if(o=Object.assign(this._drawnEdge.attributes,o),this._drawnEdge.x1=t,this._drawnEdge.y1=e,this._drawnEdge.x2=r,this._drawnEdge.y2=n,a.empty()&&(!o.style||!o.style.includes("invis"))){var s=this._selection,u=s.selectWithoutDataPropagation("svg"),c=u.selectWithoutDataPropagation("g");a=c.append("g");this._drawnEdge.g=a}return a.empty()||dt.call(this,a,t,e,r,n,o,i),this},moveDrawnEdgeEndPoint:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!this._drawnEdge)throw Error("No edge has been drawn");var n=this._drawnEdge.g,o=this._drawnEdge.x1,i=this._drawnEdge.y1,a=this._drawnEdge.attributes;return this._drawnEdge.x2=t,this._drawnEdge.y2=e,pt(n,o,i,t,e,a,r),this},insertDrawnEdge:function(t){if(!this._drawnEdge)throw Error("No edge has been drawn");var e=this._drawnEdge.g;if(e.empty())return this;this._drawnEdge.attributes,e.selectWithoutDataPropagation("title").text(t);var r=this._selection.selectWithoutDataPropagation("svg").selectWithoutDataPropagation("g"),n=r.datum(),o=this._extractData(e,n.children.length,r.datum());return n.children.push(o),g(e,o),this._drawnEdge=null,this},removeDrawnEdge:vt},h(Lt,"removeDrawnEdge",vt),h(Lt,"drawnEdgeSelection",mt),h(Lt,"drawnEdgeSelection",mt),h(Lt,"drawNode",(function(t,e,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};if((n=Object.assign({},n)).style&&n.style.includes("invis"))var i=l.select(null);else{var a=this._selection,s=a.selectWithoutDataPropagation("svg"),u=s.selectWithoutDataPropagation("g"),c=_t.call(this,r,n),h=v(c);i=u.append("g").data([h]);B.call(i.node(),h),yt.call(this,i,t,e,r,n,o)}return this._drawnNode={g:i,nodeId:r,x:t,y:e,attributes:n},this})),h(Lt,"updateDrawnNode",(function(t,e,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};if(!this._drawnNode)throw Error("No node has been drawn");var i=this._drawnNode.g;if(null==r&&(r=this._drawnNode.nodeId),n=Object.assign(this._drawnNode.attributes,n),this._drawnNode.nodeId=r,this._drawnNode.x=t,this._drawnNode.y=e,i.empty()&&(!n.style||!n.style.includes("invis"))){var a=this._selection,s=a.selectWithoutDataPropagation("svg"),u=s.selectWithoutDataPropagation("g");i=u.append("g");this._drawnNode.g=i}return i.empty()||yt.call(this,i,t,e,r,n,o),this})),h(Lt,"moveDrawnNode",(function(t,e){if(!this._drawnNode)throw Error("No node has been drawn");var r=this._drawnNode.g,n=this._drawnNode.attributes;return this._drawnNode.x=t,this._drawnNode.y=e,r.empty()||gt(r,t,e,n),this})),h(Lt,"insertDrawnNode",(function(t){if(!this._drawnNode)throw Error("No node has been drawn");null==t&&(t=this._drawnNode.nodeId);var e=this._drawnNode.g;if(e.empty())return this;var r=this._drawnNode.attributes;if(e.selectWithoutDataPropagation("title").text(t),r.URL||r.tooltip){var n=e.selectWithoutDataPropagation("g").selectWithoutDataPropagation("a");n.selectWithoutDataPropagation("ellipse,polygon,path,polyline");var o=n.selectWithoutDataPropagation("text")}else{e.selectWithoutDataPropagation("ellipse,polygon,path,polyline");o=e.selectWithoutDataPropagation("text")}o.text(r.label||t);var i=this._selection.selectWithoutDataPropagation("svg").selectWithoutDataPropagation("g"),a=i.datum(),s=this._extractData(e,a.children.length,i.datum());return a.children.push(s),g(e,s),this._drawnNode=null,this})),h(Lt,"removeDrawnNode",Et),h(Lt,"removeDrawnNode",Et),h(Lt,"drawnNodeSelection",Bt),h(Lt,"drawnNodeSelection",Bt),h(Lt,"graphvizVersion",(function(){return this._graphvizVersion})),Lt),e.selection.prototype.graphviz=function(t){var e=this.node().__graphviz__;return e?(e.options(t),o.timeout(function(){e._dispatch.call("initEnd",this)}.bind(this),0)):e=new xt(this,t),e},e.selection.prototype.selectWithoutDataPropagation=function(t){return l.select(this.size()>0?this.node().querySelector(t):null)},t.graphviz=Gt,Object.defineProperty(t,"__esModule",{value:!0})})); \ No newline at end of file diff --git a/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/node_modules/d3/dist/d3.min.js b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/node_modules/d3/dist/d3.min.js new file mode 100644 index 00000000..8d56002d --- /dev/null +++ b/dotfiles/.vscode-oss/extensions/rust-lang.rust-analyzer-0.3.1932-linux-x64/node_modules/d3/dist/d3.min.js @@ -0,0 +1,2 @@ +// https://d3js.org v7.8.5 Copyright 2010-2023 Mike Bostock +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).d3=t.d3||{})}(this,(function(t){"use strict";function n(t,n){return null==t||null==n?NaN:tn?1:t>=n?0:NaN}function e(t,n){return null==t||null==n?NaN:nt?1:n>=t?0:NaN}function r(t){let r,o,a;function u(t,n,e=0,i=t.length){if(e>>1;o(t[r],n)<0?e=r+1:i=r}while(en(t(e),r),a=(n,e)=>t(n)-e):(r=t===n||t===e?t:i,o=t,a=t),{left:u,center:function(t,n,e=0,r=t.length){const i=u(t,n,e,r-1);return i>e&&a(t[i-1],n)>-a(t[i],n)?i-1:i},right:function(t,n,e=0,i=t.length){if(e>>1;o(t[r],n)<=0?e=r+1:i=r}while(e{n(t,e,(r<<=2)+0,(i<<=2)+0,o<<=2),n(t,e,r+1,i+1,o),n(t,e,r+2,i+2,o),n(t,e,r+3,i+3,o)}}));function d(t){return function(n,e,r=e){if(!((e=+e)>=0))throw new RangeError("invalid rx");if(!((r=+r)>=0))throw new RangeError("invalid ry");let{data:i,width:o,height:a}=n;if(!((o=Math.floor(o))>=0))throw new RangeError("invalid width");if(!((a=Math.floor(void 0!==a?a:i.length/o))>=0))throw new RangeError("invalid height");if(!o||!a||!e&&!r)return n;const u=e&&t(e),c=r&&t(r),f=i.slice();return u&&c?(p(u,f,i,o,a),p(u,i,f,o,a),p(u,f,i,o,a),g(c,i,f,o,a),g(c,f,i,o,a),g(c,i,f,o,a)):u?(p(u,i,f,o,a),p(u,f,i,o,a),p(u,i,f,o,a)):c&&(g(c,i,f,o,a),g(c,f,i,o,a),g(c,i,f,o,a)),n}}function p(t,n,e,r,i){for(let o=0,a=r*i;o{if(!((o-=a)>=i))return;let u=t*r[i];const c=a*t;for(let t=i,n=i+c;t{if(!((a-=u)>=o))return;let c=n*i[o];const f=u*n,s=f+u;for(let t=o,n=o+f;t=n&&++e;else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(i=+i)>=i&&++e}return e}function _(t){return 0|t.length}function b(t){return!(t>0)}function m(t){return"object"!=typeof t||"length"in t?t:Array.from(t)}function x(t,n){let e,r=0,i=0,o=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(e=n-i,i+=e/++r,o+=e*(n-i));else{let a=-1;for(let u of t)null!=(u=n(u,++a,t))&&(u=+u)>=u&&(e=u-i,i+=e/++r,o+=e*(u-i))}if(r>1)return o/(r-1)}function w(t,n){const e=x(t,n);return e?Math.sqrt(e):e}function M(t,n){let e,r;if(void 0===n)for(const n of t)null!=n&&(void 0===e?n>=n&&(e=r=n):(e>n&&(e=n),r=o&&(e=r=o):(e>o&&(e=o),r0){for(o=t[--i];i>0&&(n=o,e=t[--i],o=n+e,r=e-(o-n),!r););i>0&&(r<0&&t[i-1]<0||r>0&&t[i-1]>0)&&(e=2*r,n=o+e,e==n-o&&(o=n))}return o}}class InternMap extends Map{constructor(t,n=N){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),null!=t)for(const[n,e]of t)this.set(n,e)}get(t){return super.get(A(this,t))}has(t){return super.has(A(this,t))}set(t,n){return super.set(S(this,t),n)}delete(t){return super.delete(E(this,t))}}class InternSet extends Set{constructor(t,n=N){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),null!=t)for(const n of t)this.add(n)}has(t){return super.has(A(this,t))}add(t){return super.add(S(this,t))}delete(t){return super.delete(E(this,t))}}function A({_intern:t,_key:n},e){const r=n(e);return t.has(r)?t.get(r):e}function S({_intern:t,_key:n},e){const r=n(e);return t.has(r)?t.get(r):(t.set(r,e),e)}function E({_intern:t,_key:n},e){const r=n(e);return t.has(r)&&(e=t.get(r),t.delete(r)),e}function N(t){return null!==t&&"object"==typeof t?t.valueOf():t}function k(t){return t}function C(t,...n){return F(t,k,k,n)}function P(t,...n){return F(t,Array.from,k,n)}function z(t,n){for(let e=1,r=n.length;et.pop().map((([n,e])=>[...t,n,e]))));return t}function $(t,n,...e){return F(t,k,n,e)}function D(t,n,...e){return F(t,Array.from,n,e)}function R(t){if(1!==t.length)throw new Error("duplicate key");return t[0]}function F(t,n,e,r){return function t(i,o){if(o>=r.length)return e(i);const a=new InternMap,u=r[o++];let c=-1;for(const t of i){const n=u(t,++c,i),e=a.get(n);e?e.push(t):a.set(n,[t])}for(const[n,e]of a)a.set(n,t(e,o));return n(a)}(t,0)}function q(t,n){return Array.from(n,(n=>t[n]))}function U(t,...n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");t=Array.from(t);let[e]=n;if(e&&2!==e.length||n.length>1){const r=Uint32Array.from(t,((t,n)=>n));return n.length>1?(n=n.map((n=>t.map(n))),r.sort(((t,e)=>{for(const r of n){const n=O(r[t],r[e]);if(n)return n}}))):(e=t.map(e),r.sort(((t,n)=>O(e[t],e[n])))),q(t,r)}return t.sort(I(e))}function I(t=n){if(t===n)return O;if("function"!=typeof t)throw new TypeError("compare is not a function");return(n,e)=>{const r=t(n,e);return r||0===r?r:(0===t(e,e))-(0===t(n,n))}}function O(t,n){return(null==t||!(t>=t))-(null==n||!(n>=n))||(tn?1:0)}var B=Array.prototype.slice;function Y(t){return()=>t}const L=Math.sqrt(50),j=Math.sqrt(10),H=Math.sqrt(2);function X(t,n,e){const r=(n-t)/Math.max(0,e),i=Math.floor(Math.log10(r)),o=r/Math.pow(10,i),a=o>=L?10:o>=j?5:o>=H?2:1;let u,c,f;return i<0?(f=Math.pow(10,-i)/a,u=Math.round(t*f),c=Math.round(n*f),u/fn&&--c,f=-f):(f=Math.pow(10,i)*a,u=Math.round(t/f),c=Math.round(n/f),u*fn&&--c),c0))return[];if((t=+t)===(n=+n))return[t];const r=n=i))return[];const u=o-i+1,c=new Array(u);if(r)if(a<0)for(let t=0;t0?(t=Math.floor(t/i)*i,n=Math.ceil(n/i)*i):i<0&&(t=Math.ceil(t*i)/i,n=Math.floor(n*i)/i),r=i}}function K(t){return Math.max(1,Math.ceil(Math.log(v(t))/Math.LN2)+1)}function Q(){var t=k,n=M,e=K;function r(r){Array.isArray(r)||(r=Array.from(r));var i,o,a,u=r.length,c=new Array(u);for(i=0;i=h)if(t>=h&&n===M){const t=V(l,h,e);isFinite(t)&&(t>0?h=(Math.floor(h/t)+1)*t:t<0&&(h=(Math.ceil(h*-t)+1)/-t))}else d.pop()}for(var p=d.length,g=0,y=p;d[g]<=l;)++g;for(;d[y-1]>h;)--y;(g||y0?d[i-1]:l,v.x1=i0)for(i=0;i=n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(e=i)&&(e=i)}return e}function tt(t,n){let e,r=-1,i=-1;if(void 0===n)for(const n of t)++i,null!=n&&(e=n)&&(e=n,r=i);else for(let o of t)null!=(o=n(o,++i,t))&&(e=o)&&(e=o,r=i);return r}function nt(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e>n||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(e>i||void 0===e&&i>=i)&&(e=i)}return e}function et(t,n){let e,r=-1,i=-1;if(void 0===n)for(const n of t)++i,null!=n&&(e>n||void 0===e&&n>=n)&&(e=n,r=i);else for(let o of t)null!=(o=n(o,++i,t))&&(e>o||void 0===e&&o>=o)&&(e=o,r=i);return r}function rt(t,n,e=0,r=1/0,i){if(n=Math.floor(n),e=Math.floor(Math.max(0,e)),r=Math.floor(Math.min(t.length-1,r)),!(e<=n&&n<=r))return t;for(i=void 0===i?O:I(i);r>e;){if(r-e>600){const o=r-e+1,a=n-e+1,u=Math.log(o),c=.5*Math.exp(2*u/3),f=.5*Math.sqrt(u*c*(o-c)/o)*(a-o/2<0?-1:1);rt(t,n,Math.max(e,Math.floor(n-a*c/o+f)),Math.min(r,Math.floor(n+(o-a)*c/o+f)),i)}const o=t[n];let a=e,u=r;for(it(t,e,n),i(t[r],o)>0&&it(t,e,r);a0;)--u}0===i(t[e],o)?it(t,e,u):(++u,it(t,u,r)),u<=n&&(e=u+1),n<=u&&(r=u-1)}return t}function it(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function ot(t,e=n){let r,i=!1;if(1===e.length){let o;for(const a of t){const t=e(a);(i?n(t,o)>0:0===n(t,t))&&(r=a,o=t,i=!0)}}else for(const n of t)(i?e(n,r)>0:0===e(n,n))&&(r=n,i=!0);return r}function at(t,n,e){if(t=Float64Array.from(function*(t,n){if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(yield n);else{let e=-1;for(let r of t)null!=(r=n(r,++e,t))&&(r=+r)>=r&&(yield r)}}(t,e)),(r=t.length)&&!isNaN(n=+n)){if(n<=0||r<2)return nt(t);if(n>=1)return J(t);var r,i=(r-1)*n,o=Math.floor(i),a=J(rt(t,o).subarray(0,o+1));return a+(nt(t.subarray(o+1))-a)*(i-o)}}function ut(t,n,e=o){if((r=t.length)&&!isNaN(n=+n)){if(n<=0||r<2)return+e(t[0],0,t);if(n>=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,a=Math.floor(i),u=+e(t[a],a,t);return u+(+e(t[a+1],a+1,t)-u)*(i-a)}}function ct(t,n,e=o){if(!isNaN(n=+n)){if(r=Float64Array.from(t,((n,r)=>o(e(t[r],r,t)))),n<=0)return et(r);if(n>=1)return tt(r);var r,i=Uint32Array.from(t,((t,n)=>n)),a=r.length-1,u=Math.floor(a*n);return rt(i,u,0,a,((t,n)=>O(r[t],r[n]))),(u=ot(i.subarray(0,u+1),(t=>r[t])))>=0?u:-1}}function ft(t){return Array.from(function*(t){for(const n of t)yield*n}(t))}function st(t,n){return[t,n]}function lt(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),o=new Array(i);++r+t(n)}function kt(t,n){return n=Math.max(0,t.bandwidth()-2*n)/2,t.round()&&(n=Math.round(n)),e=>+t(e)+n}function Ct(){return!this.__axis}function Pt(t,n){var e=[],r=null,i=null,o=6,a=6,u=3,c="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,f=t===xt||t===Tt?-1:1,s=t===Tt||t===wt?"x":"y",l=t===xt||t===Mt?St:Et;function h(h){var d=null==r?n.ticks?n.ticks.apply(n,e):n.domain():r,p=null==i?n.tickFormat?n.tickFormat.apply(n,e):mt:i,g=Math.max(o,0)+u,y=n.range(),v=+y[0]+c,_=+y[y.length-1]+c,b=(n.bandwidth?kt:Nt)(n.copy(),c),m=h.selection?h.selection():h,x=m.selectAll(".domain").data([null]),w=m.selectAll(".tick").data(d,n).order(),M=w.exit(),T=w.enter().append("g").attr("class","tick"),A=w.select("line"),S=w.select("text");x=x.merge(x.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),w=w.merge(T),A=A.merge(T.append("line").attr("stroke","currentColor").attr(s+"2",f*o)),S=S.merge(T.append("text").attr("fill","currentColor").attr(s,f*g).attr("dy",t===xt?"0em":t===Mt?"0.71em":"0.32em")),h!==m&&(x=x.transition(h),w=w.transition(h),A=A.transition(h),S=S.transition(h),M=M.transition(h).attr("opacity",At).attr("transform",(function(t){return isFinite(t=b(t))?l(t+c):this.getAttribute("transform")})),T.attr("opacity",At).attr("transform",(function(t){var n=this.parentNode.__axis;return l((n&&isFinite(n=n(t))?n:b(t))+c)}))),M.remove(),x.attr("d",t===Tt||t===wt?a?"M"+f*a+","+v+"H"+c+"V"+_+"H"+f*a:"M"+c+","+v+"V"+_:a?"M"+v+","+f*a+"V"+c+"H"+_+"V"+f*a:"M"+v+","+c+"H"+_),w.attr("opacity",1).attr("transform",(function(t){return l(b(t)+c)})),A.attr(s+"2",f*o),S.attr(s,f*g).text(p),m.filter(Ct).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===wt?"start":t===Tt?"end":"middle"),m.each((function(){this.__axis=b}))}return h.scale=function(t){return arguments.length?(n=t,h):n},h.ticks=function(){return e=Array.from(arguments),h},h.tickArguments=function(t){return arguments.length?(e=null==t?[]:Array.from(t),h):e.slice()},h.tickValues=function(t){return arguments.length?(r=null==t?null:Array.from(t),h):r&&r.slice()},h.tickFormat=function(t){return arguments.length?(i=t,h):i},h.tickSize=function(t){return arguments.length?(o=a=+t,h):o},h.tickSizeInner=function(t){return arguments.length?(o=+t,h):o},h.tickSizeOuter=function(t){return arguments.length?(a=+t,h):a},h.tickPadding=function(t){return arguments.length?(u=+t,h):u},h.offset=function(t){return arguments.length?(c=+t,h):c},h}var zt={value:()=>{}};function $t(){for(var t,n=0,e=arguments.length,r={};n=0&&(n=t.slice(e+1),t=t.slice(0,e)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))),a=-1,u=o.length;if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++a0)for(var e,r,i=new Array(e),o=0;o=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),Ut.hasOwnProperty(n)?{space:Ut[n],local:t}:t}function Ot(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===qt&&n.documentElement.namespaceURI===qt?n.createElement(t):n.createElementNS(e,t)}}function Bt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Yt(t){var n=It(t);return(n.local?Bt:Ot)(n)}function Lt(){}function jt(t){return null==t?Lt:function(){return this.querySelector(t)}}function Ht(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function Xt(){return[]}function Gt(t){return null==t?Xt:function(){return this.querySelectorAll(t)}}function Vt(t){return function(){return this.matches(t)}}function Wt(t){return function(n){return n.matches(t)}}var Zt=Array.prototype.find;function Kt(){return this.firstElementChild}var Qt=Array.prototype.filter;function Jt(){return Array.from(this.children)}function tn(t){return new Array(t.length)}function nn(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function en(t,n,e,r,i,o){for(var a,u=0,c=n.length,f=o.length;un?1:t>=n?0:NaN}function cn(t){return function(){this.removeAttribute(t)}}function fn(t){return function(){this.removeAttributeNS(t.space,t.local)}}function sn(t,n){return function(){this.setAttribute(t,n)}}function ln(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function hn(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function dn(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function pn(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function gn(t){return function(){this.style.removeProperty(t)}}function yn(t,n,e){return function(){this.style.setProperty(t,n,e)}}function vn(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function _n(t,n){return t.style.getPropertyValue(n)||pn(t).getComputedStyle(t,null).getPropertyValue(n)}function bn(t){return function(){delete this[t]}}function mn(t,n){return function(){this[t]=n}}function xn(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function wn(t){return t.trim().split(/^|\s+/)}function Mn(t){return t.classList||new Tn(t)}function Tn(t){this._node=t,this._names=wn(t.getAttribute("class")||"")}function An(t,n){for(var e=Mn(t),r=-1,i=n.length;++r=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Gn=[null];function Vn(t,n){this._groups=t,this._parents=n}function Wn(){return new Vn([[document.documentElement]],Gn)}function Zn(t){return"string"==typeof t?new Vn([[document.querySelector(t)]],[document.documentElement]):new Vn([[t]],Gn)}Vn.prototype=Wn.prototype={constructor:Vn,select:function(t){"function"!=typeof t&&(t=jt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i=m&&(m=b+1);!(_=y[m])&&++m=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=un);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o1?this.each((null==n?gn:"function"==typeof n?vn:yn)(t,n,null==e?"":e)):_n(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?bn:"function"==typeof n?xn:mn)(t,n)):this.node()[t]},classed:function(t,n){var e=wn(t+"");if(arguments.length<2){for(var r=Mn(this.node()),i=-1,o=e.length;++i=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}))}(t+""),a=o.length;if(!(arguments.length<2)){for(u=n?Ln:Yn,r=0;r()=>t;function fe(t,{sourceEvent:n,subject:e,target:r,identifier:i,active:o,x:a,y:u,dx:c,dy:f,dispatch:s}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:e,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:u,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:f,enumerable:!0,configurable:!0},_:{value:s}})}function se(t){return!t.ctrlKey&&!t.button}function le(){return this.parentNode}function he(t,n){return null==n?{x:t.x,y:t.y}:n}function de(){return navigator.maxTouchPoints||"ontouchstart"in this}function pe(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function ge(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function ye(){}fe.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var ve=.7,_e=1/ve,be="\\s*([+-]?\\d+)\\s*",me="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",xe="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",we=/^#([0-9a-f]{3,8})$/,Me=new RegExp(`^rgb\\(${be},${be},${be}\\)$`),Te=new RegExp(`^rgb\\(${xe},${xe},${xe}\\)$`),Ae=new RegExp(`^rgba\\(${be},${be},${be},${me}\\)$`),Se=new RegExp(`^rgba\\(${xe},${xe},${xe},${me}\\)$`),Ee=new RegExp(`^hsl\\(${me},${xe},${xe}\\)$`),Ne=new RegExp(`^hsla\\(${me},${xe},${xe},${me}\\)$`),ke={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Ce(){return this.rgb().formatHex()}function Pe(){return this.rgb().formatRgb()}function ze(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=we.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?$e(n):3===e?new qe(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?De(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?De(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=Me.exec(t))?new qe(n[1],n[2],n[3],1):(n=Te.exec(t))?new qe(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=Ae.exec(t))?De(n[1],n[2],n[3],n[4]):(n=Se.exec(t))?De(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=Ee.exec(t))?Le(n[1],n[2]/100,n[3]/100,1):(n=Ne.exec(t))?Le(n[1],n[2]/100,n[3]/100,n[4]):ke.hasOwnProperty(t)?$e(ke[t]):"transparent"===t?new qe(NaN,NaN,NaN,0):null}function $e(t){return new qe(t>>16&255,t>>8&255,255&t,1)}function De(t,n,e,r){return r<=0&&(t=n=e=NaN),new qe(t,n,e,r)}function Re(t){return t instanceof ye||(t=ze(t)),t?new qe((t=t.rgb()).r,t.g,t.b,t.opacity):new qe}function Fe(t,n,e,r){return 1===arguments.length?Re(t):new qe(t,n,e,null==r?1:r)}function qe(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function Ue(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}`}function Ie(){const t=Oe(this.opacity);return`${1===t?"rgb(":"rgba("}${Be(this.r)}, ${Be(this.g)}, ${Be(this.b)}${1===t?")":`, ${t})`}`}function Oe(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Be(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Ye(t){return((t=Be(t))<16?"0":"")+t.toString(16)}function Le(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Xe(t,n,e,r)}function je(t){if(t instanceof Xe)return new Xe(t.h,t.s,t.l,t.opacity);if(t instanceof ye||(t=ze(t)),!t)return new Xe;if(t instanceof Xe)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,u=o-i,c=(o+i)/2;return u?(a=n===o?(e-r)/u+6*(e0&&c<1?0:a,new Xe(a,u,c,t.opacity)}function He(t,n,e,r){return 1===arguments.length?je(t):new Xe(t,n,e,null==r?1:r)}function Xe(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Ge(t){return(t=(t||0)%360)<0?t+360:t}function Ve(t){return Math.max(0,Math.min(1,t||0))}function We(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}pe(ye,ze,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Ce,formatHex:Ce,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return je(this).formatHsl()},formatRgb:Pe,toString:Pe}),pe(qe,Fe,ge(ye,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?ve:Math.pow(ve,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new qe(Be(this.r),Be(this.g),Be(this.b),Oe(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ue,formatHex:Ue,formatHex8:function(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}${Ye(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Ie,toString:Ie})),pe(Xe,He,ge(ye,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new Xe(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?ve:Math.pow(ve,t),new Xe(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new qe(We(t>=240?t-240:t+120,i,r),We(t,i,r),We(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new Xe(Ge(this.h),Ve(this.s),Ve(this.l),Oe(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Oe(this.opacity);return`${1===t?"hsl(":"hsla("}${Ge(this.h)}, ${100*Ve(this.s)}%, ${100*Ve(this.l)}%${1===t?")":`, ${t})`}`}}));const Ze=Math.PI/180,Ke=180/Math.PI,Qe=.96422,Je=1,tr=.82521,nr=4/29,er=6/29,rr=3*er*er,ir=er*er*er;function or(t){if(t instanceof ur)return new ur(t.l,t.a,t.b,t.opacity);if(t instanceof pr)return gr(t);t instanceof qe||(t=Re(t));var n,e,r=lr(t.r),i=lr(t.g),o=lr(t.b),a=cr((.2225045*r+.7168786*i+.0606169*o)/Je);return r===i&&i===o?n=e=a:(n=cr((.4360747*r+.3850649*i+.1430804*o)/Qe),e=cr((.0139322*r+.0971045*i+.7141733*o)/tr)),new ur(116*a-16,500*(n-a),200*(a-e),t.opacity)}function ar(t,n,e,r){return 1===arguments.length?or(t):new ur(t,n,e,null==r?1:r)}function ur(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function cr(t){return t>ir?Math.pow(t,1/3):t/rr+nr}function fr(t){return t>er?t*t*t:rr*(t-nr)}function sr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function lr(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function hr(t){if(t instanceof pr)return new pr(t.h,t.c,t.l,t.opacity);if(t instanceof ur||(t=or(t)),0===t.a&&0===t.b)return new pr(NaN,0=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,u=r()=>t;function Cr(t,n){return function(e){return t+e*n}}function Pr(t,n){var e=n-t;return e?Cr(t,e>180||e<-180?e-360*Math.round(e/360):e):kr(isNaN(t)?n:t)}function zr(t){return 1==(t=+t)?$r:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):kr(isNaN(n)?e:n)}}function $r(t,n){var e=n-t;return e?Cr(t,e):kr(isNaN(t)?n:t)}var Dr=function t(n){var e=zr(n);function r(t,n){var r=e((t=Fe(t)).r,(n=Fe(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),a=$r(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=a(n),t+""}}return r.gamma=t,r}(1);function Rr(t){return function(n){var e,r,i=n.length,o=new Array(i),a=new Array(i),u=new Array(i);for(e=0;eo&&(i=n.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(e=e[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,c.push({i:a,x:Yr(e,r)})),o=Hr.lastIndex;return o180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Yr(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,a.rotate,u,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Yr(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,a.skewX,u,c),function(t,n,e,r,o,a){if(t!==e||n!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:Yr(t,e)},{i:u-2,x:Yr(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,u,c),o=a=null,function(t){for(var n,e=-1,r=c.length;++e=0&&n._call.call(void 0,t),n=n._next;--yi}function Ci(){xi=(mi=Mi.now())+wi,yi=vi=0;try{ki()}finally{yi=0,function(){var t,n,e=pi,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:pi=n);gi=t,zi(r)}(),xi=0}}function Pi(){var t=Mi.now(),n=t-mi;n>bi&&(wi-=n,mi=t)}function zi(t){yi||(vi&&(vi=clearTimeout(vi)),t-xi>24?(t<1/0&&(vi=setTimeout(Ci,t-Mi.now()-wi)),_i&&(_i=clearInterval(_i))):(_i||(mi=Mi.now(),_i=setInterval(Pi,bi)),yi=1,Ti(Ci)))}function $i(t,n,e){var r=new Ei;return n=null==n?0:+n,r.restart((e=>{r.stop(),t(e+n)}),n,e),r}Ei.prototype=Ni.prototype={constructor:Ei,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?Ai():+e)+(null==n?0:+n),this._next||gi===this||(gi?gi._next=this:pi=this,gi=this),this._call=t,this._time=e,zi()},stop:function(){this._call&&(this._call=null,this._time=1/0,zi())}};var Di=$t("start","end","cancel","interrupt"),Ri=[],Fi=0,qi=1,Ui=2,Ii=3,Oi=4,Bi=5,Yi=6;function Li(t,n,e,r,i,o){var a=t.__transition;if(a){if(e in a)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(t){e.state=qi,e.timer.restart(a,e.delay,e.time),e.delay<=t&&a(t-e.delay)}function a(o){var f,s,l,h;if(e.state!==qi)return c();for(f in i)if((h=i[f]).name===e.name){if(h.state===Ii)return $i(a);h.state===Oi?(h.state=Yi,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[f]):+fFi)throw new Error("too late; already scheduled");return e}function Hi(t,n){var e=Xi(t,n);if(e.state>Ii)throw new Error("too late; already running");return e}function Xi(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Gi(t,n){var e,r,i,o=t.__transition,a=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>Ui&&e.state=0&&(t=t.slice(0,n)),!t||"start"===t}))}(n)?ji:Hi;return function(){var a=o(this,t),u=a.on;u!==r&&(i=(r=u).copy()).on(n,e),a.on=i}}(e,t,n))},attr:function(t,n){var e=It(t),r="transform"===e?ni:Ki;return this.attrTween(t,"function"==typeof n?(e.local?ro:eo)(e,r,Zi(this,"attr."+t,n)):null==n?(e.local?Ji:Qi)(e):(e.local?no:to)(e,r,n))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=It(t);return this.tween(e,(r.local?io:oo)(r,n))},style:function(t,n,e){var r="transform"==(t+="")?ti:Ki;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=_n(this,t),a=(this.style.removeProperty(t),_n(this,t));return o===a?null:o===e&&a===r?i:i=n(e=o,r=a)}}(t,r)).on("end.style."+t,lo(t)):"function"==typeof n?this.styleTween(t,function(t,n,e){var r,i,o;return function(){var a=_n(this,t),u=e(this),c=u+"";return null==u&&(this.style.removeProperty(t),c=u=_n(this,t)),a===c?null:a===r&&c===i?o:(i=c,o=n(r=a,u))}}(t,r,Zi(this,"style."+t,n))).each(function(t,n){var e,r,i,o,a="style."+n,u="end."+a;return function(){var c=Hi(this,t),f=c.on,s=null==c.value[a]?o||(o=lo(n)):void 0;f===e&&i===s||(r=(e=f).copy()).on(u,i=s),c.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,o=e+"";return function(){var a=_n(this,t);return a===o?null:a===r?i:i=n(r=a,e)}}(t,r,n),e).on("end.style."+t,null)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,function(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&function(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}(t,o,e)),r}return o._value=n,o}(t,n,null==e?"":e))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?"":n}}(Zi(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;return this.tween(n,function(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&function(t){return function(n){this.textContent=t.call(this,n)}}(r)),n}return r._value=t,r}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}(this._id))},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=Xi(this.node(),e).tween,o=0,a=i.length;o()=>t;function Qo(t,{sourceEvent:n,target:e,selection:r,mode:i,dispatch:o}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},selection:{value:r,enumerable:!0,configurable:!0},mode:{value:i,enumerable:!0,configurable:!0},_:{value:o}})}function Jo(t){t.preventDefault(),t.stopImmediatePropagation()}var ta={name:"drag"},na={name:"space"},ea={name:"handle"},ra={name:"center"};const{abs:ia,max:oa,min:aa}=Math;function ua(t){return[+t[0],+t[1]]}function ca(t){return[ua(t[0]),ua(t[1])]}var fa={name:"x",handles:["w","e"].map(va),input:function(t,n){return null==t?null:[[+t[0],n[0][1]],[+t[1],n[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},sa={name:"y",handles:["n","s"].map(va),input:function(t,n){return null==t?null:[[n[0][0],+t[0]],[n[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},la={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(va),input:function(t){return null==t?null:ca(t)},output:function(t){return t}},ha={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},da={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},pa={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},ga={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},ya={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function va(t){return{type:t}}function _a(t){return!t.ctrlKey&&!t.button}function ba(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function ma(){return navigator.maxTouchPoints||"ontouchstart"in this}function xa(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function wa(t){var n,e=ba,r=_a,i=ma,o=!0,a=$t("start","brush","end"),u=6;function c(n){var e=n.property("__brush",g).selectAll(".overlay").data([va("overlay")]);e.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",ha.overlay).merge(e).each((function(){var t=xa(this).extent;Zn(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])})),n.selectAll(".selection").data([va("selection")]).enter().append("rect").attr("class","selection").attr("cursor",ha.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=n.selectAll(".handle").data(t.handles,(function(t){return t.type}));r.exit().remove(),r.enter().append("rect").attr("class",(function(t){return"handle handle--"+t.type})).attr("cursor",(function(t){return ha[t.type]})),n.each(f).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",h).filter(i).on("touchstart.brush",h).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function f(){var t=Zn(this),n=xa(this).selection;n?(t.selectAll(".selection").style("display",null).attr("x",n[0][0]).attr("y",n[0][1]).attr("width",n[1][0]-n[0][0]).attr("height",n[1][1]-n[0][1]),t.selectAll(".handle").style("display",null).attr("x",(function(t){return"e"===t.type[t.type.length-1]?n[1][0]-u/2:n[0][0]-u/2})).attr("y",(function(t){return"s"===t.type[0]?n[1][1]-u/2:n[0][1]-u/2})).attr("width",(function(t){return"n"===t.type||"s"===t.type?n[1][0]-n[0][0]+u:u})).attr("height",(function(t){return"e"===t.type||"w"===t.type?n[1][1]-n[0][1]+u:u}))):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function s(t,n,e){var r=t.__brush.emitter;return!r||e&&r.clean?new l(t,n,e):r}function l(t,n,e){this.that=t,this.args=n,this.state=t.__brush,this.active=0,this.clean=e}function h(e){if((!n||e.touches)&&r.apply(this,arguments)){var i,a,u,c,l,h,d,p,g,y,v,_=this,b=e.target.__data__.type,m="selection"===(o&&e.metaKey?b="overlay":b)?ta:o&&e.altKey?ra:ea,x=t===sa?null:ga[b],w=t===fa?null:ya[b],M=xa(_),T=M.extent,A=M.selection,S=T[0][0],E=T[0][1],N=T[1][0],k=T[1][1],C=0,P=0,z=x&&w&&o&&e.shiftKey,$=Array.from(e.touches||[e],(t=>{const n=t.identifier;return(t=ne(t,_)).point0=t.slice(),t.identifier=n,t}));Gi(_);var D=s(_,arguments,!0).beforestart();if("overlay"===b){A&&(g=!0);const n=[$[0],$[1]||$[0]];M.selection=A=[[i=t===sa?S:aa(n[0][0],n[1][0]),u=t===fa?E:aa(n[0][1],n[1][1])],[l=t===sa?N:oa(n[0][0],n[1][0]),d=t===fa?k:oa(n[0][1],n[1][1])]],$.length>1&&I(e)}else i=A[0][0],u=A[0][1],l=A[1][0],d=A[1][1];a=i,c=u,h=l,p=d;var R=Zn(_).attr("pointer-events","none"),F=R.selectAll(".overlay").attr("cursor",ha[b]);if(e.touches)D.moved=U,D.ended=O;else{var q=Zn(e.view).on("mousemove.brush",U,!0).on("mouseup.brush",O,!0);o&&q.on("keydown.brush",(function(t){switch(t.keyCode){case 16:z=x&&w;break;case 18:m===ea&&(x&&(l=h-C*x,i=a+C*x),w&&(d=p-P*w,u=c+P*w),m=ra,I(t));break;case 32:m!==ea&&m!==ra||(x<0?l=h-C:x>0&&(i=a-C),w<0?d=p-P:w>0&&(u=c-P),m=na,F.attr("cursor",ha.selection),I(t));break;default:return}Jo(t)}),!0).on("keyup.brush",(function(t){switch(t.keyCode){case 16:z&&(y=v=z=!1,I(t));break;case 18:m===ra&&(x<0?l=h:x>0&&(i=a),w<0?d=p:w>0&&(u=c),m=ea,I(t));break;case 32:m===na&&(t.altKey?(x&&(l=h-C*x,i=a+C*x),w&&(d=p-P*w,u=c+P*w),m=ra):(x<0?l=h:x>0&&(i=a),w<0?d=p:w>0&&(u=c),m=ea),F.attr("cursor",ha[b]),I(t));break;default:return}Jo(t)}),!0),ae(e.view)}f.call(_),D.start(e,m.name)}function U(t){for(const n of t.changedTouches||[t])for(const t of $)t.identifier===n.identifier&&(t.cur=ne(n,_));if(z&&!y&&!v&&1===$.length){const t=$[0];ia(t.cur[0]-t[0])>ia(t.cur[1]-t[1])?v=!0:y=!0}for(const t of $)t.cur&&(t[0]=t.cur[0],t[1]=t.cur[1]);g=!0,Jo(t),I(t)}function I(t){const n=$[0],e=n.point0;var r;switch(C=n[0]-e[0],P=n[1]-e[1],m){case na:case ta:x&&(C=oa(S-i,aa(N-l,C)),a=i+C,h=l+C),w&&(P=oa(E-u,aa(k-d,P)),c=u+P,p=d+P);break;case ea:$[1]?(x&&(a=oa(S,aa(N,$[0][0])),h=oa(S,aa(N,$[1][0])),x=1),w&&(c=oa(E,aa(k,$[0][1])),p=oa(E,aa(k,$[1][1])),w=1)):(x<0?(C=oa(S-i,aa(N-i,C)),a=i+C,h=l):x>0&&(C=oa(S-l,aa(N-l,C)),a=i,h=l+C),w<0?(P=oa(E-u,aa(k-u,P)),c=u+P,p=d):w>0&&(P=oa(E-d,aa(k-d,P)),c=u,p=d+P));break;case ra:x&&(a=oa(S,aa(N,i-C*x)),h=oa(S,aa(N,l+C*x))),w&&(c=oa(E,aa(k,u-P*w)),p=oa(E,aa(k,d+P*w)))}ht+e))}function za(t,n){var e=0,r=null,i=null,o=null;function a(a){var u,c=a.length,f=new Array(c),s=Pa(0,c),l=new Array(c*c),h=new Array(c),d=0;a=Float64Array.from({length:c*c},n?(t,n)=>a[n%c][n/c|0]:(t,n)=>a[n/c|0][n%c]);for(let n=0;nr(f[t],f[n])));for(const e of s){const r=n;if(t){const t=Pa(1+~c,c).filter((t=>t<0?a[~t*c+e]:a[e*c+t]));i&&t.sort(((t,n)=>i(t<0?-a[~t*c+e]:a[e*c+t],n<0?-a[~n*c+e]:a[e*c+n])));for(const r of t)if(r<0){(l[~r*c+e]||(l[~r*c+e]={source:null,target:null})).target={index:e,startAngle:n,endAngle:n+=a[~r*c+e]*d,value:a[~r*c+e]}}else{(l[e*c+r]||(l[e*c+r]={source:null,target:null})).source={index:e,startAngle:n,endAngle:n+=a[e*c+r]*d,value:a[e*c+r]}}h[e]={index:e,startAngle:r,endAngle:n,value:f[e]}}else{const t=Pa(0,c).filter((t=>a[e*c+t]||a[t*c+e]));i&&t.sort(((t,n)=>i(a[e*c+t],a[e*c+n])));for(const r of t){let t;if(e=0))throw new Error(`invalid digits: ${t}`);if(n>15)return qa;const e=10**n;return function(t){this._+=t[0];for(let n=1,r=t.length;nRa)if(Math.abs(s*u-c*f)>Ra&&i){let h=e-o,d=r-a,p=u*u+c*c,g=h*h+d*d,y=Math.sqrt(p),v=Math.sqrt(l),_=i*Math.tan(($a-Math.acos((p+l-g)/(2*y*v)))/2),b=_/v,m=_/y;Math.abs(b-1)>Ra&&this._append`L${t+b*f},${n+b*s}`,this._append`A${i},${i},0,0,${+(s*h>f*d)},${this._x1=t+m*u},${this._y1=n+m*c}`}else this._append`L${this._x1=t},${this._y1=n}`;else;}arc(t,n,e,r,i,o){if(t=+t,n=+n,o=!!o,(e=+e)<0)throw new Error(`negative radius: ${e}`);let a=e*Math.cos(r),u=e*Math.sin(r),c=t+a,f=n+u,s=1^o,l=o?r-i:i-r;null===this._x1?this._append`M${c},${f}`:(Math.abs(this._x1-c)>Ra||Math.abs(this._y1-f)>Ra)&&this._append`L${c},${f}`,e&&(l<0&&(l=l%Da+Da),l>Fa?this._append`A${e},${e},0,1,${s},${t-a},${n-u}A${e},${e},0,1,${s},${this._x1=c},${this._y1=f}`:l>Ra&&this._append`A${e},${e},0,${+(l>=$a)},${s},${this._x1=t+e*Math.cos(i)},${this._y1=n+e*Math.sin(i)}`)}rect(t,n,e,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${e=+e}v${+r}h${-e}Z`}toString(){return this._}};function Ia(){return new Ua}Ia.prototype=Ua.prototype;var Oa=Array.prototype.slice;function Ba(t){return function(){return t}}function Ya(t){return t.source}function La(t){return t.target}function ja(t){return t.radius}function Ha(t){return t.startAngle}function Xa(t){return t.endAngle}function Ga(){return 0}function Va(){return 10}function Wa(t){var n=Ya,e=La,r=ja,i=ja,o=Ha,a=Xa,u=Ga,c=null;function f(){var f,s=n.apply(this,arguments),l=e.apply(this,arguments),h=u.apply(this,arguments)/2,d=Oa.call(arguments),p=+r.apply(this,(d[0]=s,d)),g=o.apply(this,d)-Ea,y=a.apply(this,d)-Ea,v=+i.apply(this,(d[0]=l,d)),_=o.apply(this,d)-Ea,b=a.apply(this,d)-Ea;if(c||(c=f=Ia()),h>Ca&&(Ma(y-g)>2*h+Ca?y>g?(g+=h,y-=h):(g-=h,y+=h):g=y=(g+y)/2,Ma(b-_)>2*h+Ca?b>_?(_+=h,b-=h):(_-=h,b+=h):_=b=(_+b)/2),c.moveTo(p*Ta(g),p*Aa(g)),c.arc(0,0,p,g,y),g!==_||y!==b)if(t){var m=v-+t.apply(this,arguments),x=(_+b)/2;c.quadraticCurveTo(0,0,m*Ta(_),m*Aa(_)),c.lineTo(v*Ta(x),v*Aa(x)),c.lineTo(m*Ta(b),m*Aa(b))}else c.quadraticCurveTo(0,0,v*Ta(_),v*Aa(_)),c.arc(0,0,v,_,b);if(c.quadraticCurveTo(0,0,p*Ta(g),p*Aa(g)),c.closePath(),f)return c=null,f+""||null}return t&&(f.headRadius=function(n){return arguments.length?(t="function"==typeof n?n:Ba(+n),f):t}),f.radius=function(t){return arguments.length?(r=i="function"==typeof t?t:Ba(+t),f):r},f.sourceRadius=function(t){return arguments.length?(r="function"==typeof t?t:Ba(+t),f):r},f.targetRadius=function(t){return arguments.length?(i="function"==typeof t?t:Ba(+t),f):i},f.startAngle=function(t){return arguments.length?(o="function"==typeof t?t:Ba(+t),f):o},f.endAngle=function(t){return arguments.length?(a="function"==typeof t?t:Ba(+t),f):a},f.padAngle=function(t){return arguments.length?(u="function"==typeof t?t:Ba(+t),f):u},f.source=function(t){return arguments.length?(n=t,f):n},f.target=function(t){return arguments.length?(e=t,f):e},f.context=function(t){return arguments.length?(c=null==t?null:t,f):c},f}var Za=Array.prototype.slice;function Ka(t,n){return t-n}var Qa=t=>()=>t;function Ja(t,n){for(var e,r=-1,i=n.length;++rr!=d>r&&e<(h-f)*(r-s)/(d-s)+f&&(i=-i)}return i}function nu(t,n,e){var r,i,o,a;return function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])==(e[0]-t[0])*(n[1]-t[1])}(t,n,e)&&(i=t[r=+(t[0]===n[0])],o=e[r],a=n[r],i<=o&&o<=a||a<=o&&o<=i)}function eu(){}var ru=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function iu(){var t=1,n=1,e=K,r=u;function i(t){var n=e(t);if(Array.isArray(n))n=n.slice().sort(Ka);else{const e=M(t,ou);for(n=G(...Z(e[0],e[1],n),n);n[n.length-1]>=e[1];)n.pop();for(;n[1]o(t,n)))}function o(e,i){const o=null==i?NaN:+i;if(isNaN(o))throw new Error(`invalid value: ${i}`);var u=[],c=[];return function(e,r,i){var o,u,c,f,s,l,h=new Array,d=new Array;o=u=-1,f=au(e[0],r),ru[f<<1].forEach(p);for(;++o=r,ru[s<<2].forEach(p);for(;++o0?u.push([t]):c.push(t)})),c.forEach((function(t){for(var n,e=0,r=u.length;e0&&o0&&a=0&&o>=0))throw new Error("invalid size");return t=r,n=o,i},i.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?Qa(Za.call(t)):Qa(t),i):e},i.smooth=function(t){return arguments.length?(r=t?u:eu,i):r===u},i}function ou(t){return isFinite(t)?t:NaN}function au(t,n){return null!=t&&+t>=n}function uu(t){return null==t||isNaN(t=+t)?-1/0:t}function cu(t,n,e,r){const i=r-n,o=e-n,a=isFinite(i)||isFinite(o)?i/o:Math.sign(i)/Math.sign(o);return isNaN(a)?t:t+a-.5}function fu(t){return t[0]}function su(t){return t[1]}function lu(){return 1}const hu=134217729,du=33306690738754706e-32;function pu(t,n,e,r,i){let o,a,u,c,f=n[0],s=r[0],l=0,h=0;s>f==s>-f?(o=f,f=n[++l]):(o=s,s=r[++h]);let d=0;if(lf==s>-f?(a=f+o,u=o-(a-f),f=n[++l]):(a=s+o,u=o-(a-s),s=r[++h]),o=a,0!==u&&(i[d++]=u);lf==s>-f?(a=o+f,c=a-o,u=o-(a-c)+(f-c),f=n[++l]):(a=o+s,c=a-o,u=o-(a-c)+(s-c),s=r[++h]),o=a,0!==u&&(i[d++]=u);for(;l=33306690738754716e-32*f?c:-function(t,n,e,r,i,o,a){let u,c,f,s,l,h,d,p,g,y,v,_,b,m,x,w,M,T;const A=t-i,S=e-i,E=n-o,N=r-o;m=A*N,h=hu*A,d=h-(h-A),p=A-d,h=hu*N,g=h-(h-N),y=N-g,x=p*y-(m-d*g-p*g-d*y),w=E*S,h=hu*E,d=h-(h-E),p=E-d,h=hu*S,g=h-(h-S),y=S-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,_u[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,_u[1]=b-(v+l)+(l-w),T=_+v,l=T-_,_u[2]=_-(T-l)+(v-l),_u[3]=T;let k=function(t,n){let e=n[0];for(let r=1;r=C||-k>=C)return k;if(l=t-A,u=t-(A+l)+(l-i),l=e-S,f=e-(S+l)+(l-i),l=n-E,c=n-(E+l)+(l-o),l=r-N,s=r-(N+l)+(l-o),0===u&&0===c&&0===f&&0===s)return k;if(C=vu*a+du*Math.abs(k),k+=A*s+N*u-(E*f+S*c),k>=C||-k>=C)return k;m=u*N,h=hu*u,d=h-(h-u),p=u-d,h=hu*N,g=h-(h-N),y=N-g,x=p*y-(m-d*g-p*g-d*y),w=c*S,h=hu*c,d=h-(h-c),p=c-d,h=hu*S,g=h-(h-S),y=S-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,wu[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,wu[1]=b-(v+l)+(l-w),T=_+v,l=T-_,wu[2]=_-(T-l)+(v-l),wu[3]=T;const P=pu(4,_u,4,wu,bu);m=A*s,h=hu*A,d=h-(h-A),p=A-d,h=hu*s,g=h-(h-s),y=s-g,x=p*y-(m-d*g-p*g-d*y),w=E*f,h=hu*E,d=h-(h-E),p=E-d,h=hu*f,g=h-(h-f),y=f-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,wu[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,wu[1]=b-(v+l)+(l-w),T=_+v,l=T-_,wu[2]=_-(T-l)+(v-l),wu[3]=T;const z=pu(P,bu,4,wu,mu);m=u*s,h=hu*u,d=h-(h-u),p=u-d,h=hu*s,g=h-(h-s),y=s-g,x=p*y-(m-d*g-p*g-d*y),w=c*f,h=hu*c,d=h-(h-c),p=c-d,h=hu*f,g=h-(h-f),y=f-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,wu[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,wu[1]=b-(v+l)+(l-w),T=_+v,l=T-_,wu[2]=_-(T-l)+(v-l),wu[3]=T;const $=pu(z,mu,4,wu,xu);return xu[$-1]}(t,n,e,r,i,o,f)}const Tu=Math.pow(2,-52),Au=new Uint32Array(512);class Su{static from(t,n=zu,e=$u){const r=t.length,i=new Float64Array(2*r);for(let o=0;o>1;if(n>0&&"number"!=typeof t[0])throw new Error("Expected coords to contain numbers.");this.coords=t;const e=Math.max(2*n-5,0);this._triangles=new Uint32Array(3*e),this._halfedges=new Int32Array(3*e),this._hashSize=Math.ceil(Math.sqrt(n)),this._hullPrev=new Uint32Array(n),this._hullNext=new Uint32Array(n),this._hullTri=new Uint32Array(n),this._hullHash=new Int32Array(this._hashSize).fill(-1),this._ids=new Uint32Array(n),this._dists=new Float64Array(n),this.update()}update(){const{coords:t,_hullPrev:n,_hullNext:e,_hullTri:r,_hullHash:i}=this,o=t.length>>1;let a=1/0,u=1/0,c=-1/0,f=-1/0;for(let n=0;nc&&(c=e),r>f&&(f=r),this._ids[n]=n}const s=(a+c)/2,l=(u+f)/2;let h,d,p,g=1/0;for(let n=0;n0&&(d=n,g=e)}let _=t[2*d],b=t[2*d+1],m=1/0;for(let n=0;nr&&(n[e++]=i,r=this._dists[i])}return this.hull=n.subarray(0,e),this.triangles=new Uint32Array(0),void(this.halfedges=new Uint32Array(0))}if(Mu(y,v,_,b,x,w)<0){const t=d,n=_,e=b;d=p,_=x,b=w,p=t,x=n,w=e}const M=function(t,n,e,r,i,o){const a=e-t,u=r-n,c=i-t,f=o-n,s=a*a+u*u,l=c*c+f*f,h=.5/(a*f-u*c),d=t+(f*s-u*l)*h,p=n+(a*l-c*s)*h;return{x:d,y:p}}(y,v,_,b,x,w);this._cx=M.x,this._cy=M.y;for(let n=0;n0&&Math.abs(f-o)<=Tu&&Math.abs(s-a)<=Tu)continue;if(o=f,a=s,c===h||c===d||c===p)continue;let l=0;for(let t=0,n=this._hashKey(f,s);t=0;)if(y=g,y===l){y=-1;break}if(-1===y)continue;let v=this._addTriangle(y,c,e[y],-1,-1,r[y]);r[c]=this._legalize(v+2),r[y]=v,T++;let _=e[y];for(;g=e[_],Mu(f,s,t[2*_],t[2*_+1],t[2*g],t[2*g+1])<0;)v=this._addTriangle(_,c,g,r[c],-1,r[_]),r[c]=this._legalize(v+2),e[_]=_,T--,_=g;if(y===l)for(;g=n[y],Mu(f,s,t[2*g],t[2*g+1],t[2*y],t[2*y+1])<0;)v=this._addTriangle(g,c,y,-1,r[y],r[g]),this._legalize(v+2),r[g]=v,e[y]=y,T--,y=g;this._hullStart=n[c]=y,e[y]=n[_]=c,e[c]=_,i[this._hashKey(f,s)]=c,i[this._hashKey(t[2*y],t[2*y+1])]=y}this.hull=new Uint32Array(T);for(let t=0,n=this._hullStart;t0?3-e:1+e)/4}(t-this._cx,n-this._cy)*this._hashSize)%this._hashSize}_legalize(t){const{_triangles:n,_halfedges:e,coords:r}=this;let i=0,o=0;for(;;){const a=e[t],u=t-t%3;if(o=u+(t+2)%3,-1===a){if(0===i)break;t=Au[--i];continue}const c=a-a%3,f=u+(t+1)%3,s=c+(a+2)%3,l=n[o],h=n[t],d=n[f],p=n[s];if(Nu(r[2*l],r[2*l+1],r[2*h],r[2*h+1],r[2*d],r[2*d+1],r[2*p],r[2*p+1])){n[t]=p,n[a]=l;const r=e[s];if(-1===r){let n=this._hullStart;do{if(this._hullTri[n]===s){this._hullTri[n]=t;break}n=this._hullPrev[n]}while(n!==this._hullStart)}this._link(t,r),this._link(a,e[o]),this._link(o,s);const u=c+(a+1)%3;i=e&&n[t[a]]>o;)t[a+1]=t[a--];t[a+1]=r}else{let i=e+1,o=r;Pu(t,e+r>>1,i),n[t[e]]>n[t[r]]&&Pu(t,e,r),n[t[i]]>n[t[r]]&&Pu(t,i,r),n[t[e]]>n[t[i]]&&Pu(t,e,i);const a=t[i],u=n[a];for(;;){do{i++}while(n[t[i]]u);if(o=o-e?(Cu(t,n,i,r),Cu(t,n,e,o-1)):(Cu(t,n,e,o-1),Cu(t,n,i,r))}}function Pu(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function zu(t){return t[0]}function $u(t){return t[1]}const Du=1e-6;class Ru{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}moveTo(t,n){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}lineTo(t,n){this._+=`L${this._x1=+t},${this._y1=+n}`}arc(t,n,e){const r=(t=+t)+(e=+e),i=n=+n;if(e<0)throw new Error("negative radius");null===this._x1?this._+=`M${r},${i}`:(Math.abs(this._x1-r)>Du||Math.abs(this._y1-i)>Du)&&(this._+="L"+r+","+i),e&&(this._+=`A${e},${e},0,1,1,${t-e},${n}A${e},${e},0,1,1,${this._x1=r},${this._y1=i}`)}rect(t,n,e,r){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${+e}v${+r}h${-e}Z`}value(){return this._||null}}class Fu{constructor(){this._=[]}moveTo(t,n){this._.push([t,n])}closePath(){this._.push(this._[0].slice())}lineTo(t,n){this._.push([t,n])}value(){return this._.length?this._:null}}class qu{constructor(t,[n,e,r,i]=[0,0,960,500]){if(!((r=+r)>=(n=+n)&&(i=+i)>=(e=+e)))throw new Error("invalid bounds");this.delaunay=t,this._circumcenters=new Float64Array(2*t.points.length),this.vectors=new Float64Array(2*t.points.length),this.xmax=r,this.xmin=n,this.ymax=i,this.ymin=e,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){const{delaunay:{points:t,hull:n,triangles:e},vectors:r}=this;let i,o;const a=this.circumcenters=this._circumcenters.subarray(0,e.length/3*2);for(let r,u,c=0,f=0,s=e.length;c1;)i-=2;for(let t=2;t0){if(n>=this.ymax)return null;(i=(this.ymax-n)/r)0){if(t>=this.xmax)return null;(i=(this.xmax-t)/e)this.xmax?2:0)|(nthis.ymax?8:0)}_simplify(t){if(t&&t.length>4){for(let n=0;n2&&function(t){const{triangles:n,coords:e}=t;for(let t=0;t1e-10)return!1}return!0}(t)){this.collinear=Int32Array.from({length:n.length/2},((t,n)=>n)).sort(((t,e)=>n[2*t]-n[2*e]||n[2*t+1]-n[2*e+1]));const t=this.collinear[0],e=this.collinear[this.collinear.length-1],r=[n[2*t],n[2*t+1],n[2*e],n[2*e+1]],i=1e-8*Math.hypot(r[3]-r[1],r[2]-r[0]);for(let t=0,e=n.length/2;t0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=r[0],o[r[0]]=1,2===r.length&&(o[r[1]]=0,this.triangles[1]=r[1],this.triangles[2]=r[1]))}voronoi(t){return new qu(this,t)}*neighbors(t){const{inedges:n,hull:e,_hullIndex:r,halfedges:i,triangles:o,collinear:a}=this;if(a){const n=a.indexOf(t);return n>0&&(yield a[n-1]),void(n=0&&i!==e&&i!==r;)e=i;return i}_step(t,n,e){const{inedges:r,hull:i,_hullIndex:o,halfedges:a,triangles:u,points:c}=this;if(-1===r[t]||!c.length)return(t+1)%(c.length>>1);let f=t,s=Iu(n-c[2*t],2)+Iu(e-c[2*t+1],2);const l=r[t];let h=l;do{let r=u[h];const l=Iu(n-c[2*r],2)+Iu(e-c[2*r+1],2);if(l9999?"+"+Ku(n,6):Ku(n,4))+"-"+Ku(t.getUTCMonth()+1,2)+"-"+Ku(t.getUTCDate(),2)+(o?"T"+Ku(e,2)+":"+Ku(r,2)+":"+Ku(i,2)+"."+Ku(o,3)+"Z":i?"T"+Ku(e,2)+":"+Ku(r,2)+":"+Ku(i,2)+"Z":r||e?"T"+Ku(e,2)+":"+Ku(r,2)+"Z":"")}function Ju(t){var n=new RegExp('["'+t+"\n\r]"),e=t.charCodeAt(0);function r(t,n){var r,i=[],o=t.length,a=0,u=0,c=o<=0,f=!1;function s(){if(c)return Hu;if(f)return f=!1,ju;var n,r,i=a;if(t.charCodeAt(i)===Xu){for(;a++=o?c=!0:(r=t.charCodeAt(a++))===Gu?f=!0:r===Vu&&(f=!0,t.charCodeAt(a)===Gu&&++a),t.slice(i+1,n-1).replace(/""/g,'"')}for(;amc(n,e).then((n=>(new DOMParser).parseFromString(n,t)))}var Sc=Ac("application/xml"),Ec=Ac("text/html"),Nc=Ac("image/svg+xml");function kc(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,o,a,u,c,f,s,l,h,d=t._root,p={data:r},g=t._x0,y=t._y0,v=t._x1,_=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((f=n>=(o=(g+v)/2))?g=o:v=o,(s=e>=(a=(y+_)/2))?y=a:_=a,i=d,!(d=d[l=s<<1|f]))return i[l]=p,t;if(u=+t._x.call(null,d.data),c=+t._y.call(null,d.data),n===u&&e===c)return p.next=d,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(f=n>=(o=(g+v)/2))?g=o:v=o,(s=e>=(a=(y+_)/2))?y=a:_=a}while((l=s<<1|f)==(h=(c>=a)<<1|u>=o));return i[h]=d,i[l]=p,t}function Cc(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function Pc(t){return t[0]}function zc(t){return t[1]}function $c(t,n,e){var r=new Dc(null==n?Pc:n,null==e?zc:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Dc(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function Rc(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var Fc=$c.prototype=Dc.prototype;function qc(t){return function(){return t}}function Uc(t){return 1e-6*(t()-.5)}function Ic(t){return t.x+t.vx}function Oc(t){return t.y+t.vy}function Bc(t){return t.index}function Yc(t,n){var e=t.get(n);if(!e)throw new Error("node not found: "+n);return e}Fc.copy=function(){var t,n,e=new Dc(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=Rc(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=Rc(n));return e},Fc.add=function(t){const n=+this._x.call(null,t),e=+this._y.call(null,t);return kc(this.cover(n,e),n,e,t)},Fc.addAll=function(t){var n,e,r,i,o=t.length,a=new Array(o),u=new Array(o),c=1/0,f=1/0,s=-1/0,l=-1/0;for(e=0;es&&(s=r),il&&(l=i));if(c>s||f>l)return this;for(this.cover(c,f).cover(s,l),e=0;et||t>=i||r>n||n>=o;)switch(u=(nh||(o=c.y0)>d||(a=c.x1)=v)<<1|t>=y)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-f],p[p.length-1-f]=c)}else{var _=t-+this._x.call(null,g.data),b=n-+this._y.call(null,g.data),m=_*_+b*b;if(m=(u=(p+y)/2))?p=u:y=u,(s=a>=(c=(g+v)/2))?g=c:v=c,n=d,!(d=d[l=s<<1|f]))return this;if(!d.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(e?e[h]=d:this._root=d),this):(this._root=i,this)},Fc.removeAll=function(t){for(var n=0,e=t.length;n1?r[0]+r.slice(2):r,+t.slice(e+1)]}function Zc(t){return(t=Wc(Math.abs(t)))?t[1]:NaN}var Kc,Qc=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Jc(t){if(!(n=Qc.exec(t)))throw new Error("invalid format: "+t);var n;return new tf({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function tf(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function nf(t,n){var e=Wc(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}Jc.prototype=tf.prototype,tf.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var ef={"%":(t,n)=>(100*t).toFixed(n),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,n)=>t.toExponential(n),f:(t,n)=>t.toFixed(n),g:(t,n)=>t.toPrecision(n),o:t=>Math.round(t).toString(8),p:(t,n)=>nf(100*t,n),r:nf,s:function(t,n){var e=Wc(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(Kc=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Wc(t,Math.max(0,n+o-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function rf(t){return t}var of,af=Array.prototype.map,uf=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function cf(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?rf:(n=af.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,o=[],a=0,u=n[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),o.push(t.substring(i-=u,i+u)),!((c+=u+1)>r));)u=n[a=(a+1)%n.length];return o.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",u=void 0===t.numerals?rf:function(t){return function(n){return n.replace(/[0-9]/g,(function(n){return t[+n]}))}}(af.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",f=void 0===t.minus?"−":t.minus+"",s=void 0===t.nan?"NaN":t.nan+"";function l(t){var n=(t=Jc(t)).fill,e=t.align,l=t.sign,h=t.symbol,d=t.zero,p=t.width,g=t.comma,y=t.precision,v=t.trim,_=t.type;"n"===_?(g=!0,_="g"):ef[_]||(void 0===y&&(y=12),v=!0,_="g"),(d||"0"===n&&"="===e)&&(d=!0,n="0",e="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(_)?"0"+_.toLowerCase():"",m="$"===h?o:/[%p]/.test(_)?c:"",x=ef[_],w=/[defgprs%]/.test(_);function M(t){var i,o,c,h=b,M=m;if("c"===_)M=x(t)+M,t="";else{var T=(t=+t)<0||1/t<0;if(t=isNaN(t)?s:x(Math.abs(t),y),v&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),T&&0==+t&&"+"!==l&&(T=!1),h=(T?"("===l?l:f:"-"===l||"("===l?"":l)+h,M=("s"===_?uf[8+Kc/3]:"")+M+(T&&"("===l?")":""),w)for(i=-1,o=t.length;++i(c=t.charCodeAt(i))||c>57){M=(46===c?a+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}g&&!d&&(t=r(t,1/0));var A=h.length+t.length+M.length,S=A>1)+h+t+M+S.slice(A);break;default:t=S+h+t+M}return u(t)}return y=void 0===y?6:/[gprs]/.test(_)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),M.toString=function(){return t+""},M}return{format:l,formatPrefix:function(t,n){var e=l(((t=Jc(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(Zc(n)/3))),i=Math.pow(10,-r),o=uf[8+r/3];return function(t){return e(i*t)+o}}}}function ff(n){return of=cf(n),t.format=of.format,t.formatPrefix=of.formatPrefix,of}function sf(t){return Math.max(0,-Zc(Math.abs(t)))}function lf(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Zc(n)/3)))-Zc(Math.abs(t)))}function hf(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,Zc(n)-Zc(t))+1}t.format=void 0,t.formatPrefix=void 0,ff({thousands:",",grouping:[3],currency:["$",""]});var df=1e-6,pf=1e-12,gf=Math.PI,yf=gf/2,vf=gf/4,_f=2*gf,bf=180/gf,mf=gf/180,xf=Math.abs,wf=Math.atan,Mf=Math.atan2,Tf=Math.cos,Af=Math.ceil,Sf=Math.exp,Ef=Math.hypot,Nf=Math.log,kf=Math.pow,Cf=Math.sin,Pf=Math.sign||function(t){return t>0?1:t<0?-1:0},zf=Math.sqrt,$f=Math.tan;function Df(t){return t>1?0:t<-1?gf:Math.acos(t)}function Rf(t){return t>1?yf:t<-1?-yf:Math.asin(t)}function Ff(t){return(t=Cf(t/2))*t}function qf(){}function Uf(t,n){t&&Of.hasOwnProperty(t.type)&&Of[t.type](t,n)}var If={Feature:function(t,n){Uf(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r=0?1:-1,i=r*e,o=Tf(n=(n*=mf)/2+vf),a=Cf(n),u=Vf*a,c=Gf*o+u*Tf(i),f=u*r*Cf(i);as.add(Mf(f,c)),Xf=t,Gf=o,Vf=a}function ds(t){return[Mf(t[1],t[0]),Rf(t[2])]}function ps(t){var n=t[0],e=t[1],r=Tf(e);return[r*Tf(n),r*Cf(n),Cf(e)]}function gs(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function ys(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function vs(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function _s(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function bs(t){var n=zf(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var ms,xs,ws,Ms,Ts,As,Ss,Es,Ns,ks,Cs,Ps,zs,$s,Ds,Rs,Fs={point:qs,lineStart:Is,lineEnd:Os,polygonStart:function(){Fs.point=Bs,Fs.lineStart=Ys,Fs.lineEnd=Ls,rs=new T,cs.polygonStart()},polygonEnd:function(){cs.polygonEnd(),Fs.point=qs,Fs.lineStart=Is,Fs.lineEnd=Os,as<0?(Wf=-(Kf=180),Zf=-(Qf=90)):rs>df?Qf=90:rs<-df&&(Zf=-90),os[0]=Wf,os[1]=Kf},sphere:function(){Wf=-(Kf=180),Zf=-(Qf=90)}};function qs(t,n){is.push(os=[Wf=t,Kf=t]),nQf&&(Qf=n)}function Us(t,n){var e=ps([t*mf,n*mf]);if(es){var r=ys(es,e),i=ys([r[1],-r[0],0],r);bs(i),i=ds(i);var o,a=t-Jf,u=a>0?1:-1,c=i[0]*bf*u,f=xf(a)>180;f^(u*JfQf&&(Qf=o):f^(u*Jf<(c=(c+360)%360-180)&&cQf&&(Qf=n)),f?tjs(Wf,Kf)&&(Kf=t):js(t,Kf)>js(Wf,Kf)&&(Wf=t):Kf>=Wf?(tKf&&(Kf=t)):t>Jf?js(Wf,t)>js(Wf,Kf)&&(Kf=t):js(t,Kf)>js(Wf,Kf)&&(Wf=t)}else is.push(os=[Wf=t,Kf=t]);nQf&&(Qf=n),es=e,Jf=t}function Is(){Fs.point=Us}function Os(){os[0]=Wf,os[1]=Kf,Fs.point=qs,es=null}function Bs(t,n){if(es){var e=t-Jf;rs.add(xf(e)>180?e+(e>0?360:-360):e)}else ts=t,ns=n;cs.point(t,n),Us(t,n)}function Ys(){cs.lineStart()}function Ls(){Bs(ts,ns),cs.lineEnd(),xf(rs)>df&&(Wf=-(Kf=180)),os[0]=Wf,os[1]=Kf,es=null}function js(t,n){return(n-=t)<0?n+360:n}function Hs(t,n){return t[0]-n[0]}function Xs(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:ngf&&(t-=Math.round(t/_f)*_f),[t,n]}function ul(t,n,e){return(t%=_f)?n||e?ol(fl(t),sl(n,e)):fl(t):n||e?sl(n,e):al}function cl(t){return function(n,e){return xf(n+=t)>gf&&(n-=Math.round(n/_f)*_f),[n,e]}}function fl(t){var n=cl(t);return n.invert=cl(-t),n}function sl(t,n){var e=Tf(t),r=Cf(t),i=Tf(n),o=Cf(n);function a(t,n){var a=Tf(n),u=Tf(t)*a,c=Cf(t)*a,f=Cf(n),s=f*e+u*r;return[Mf(c*i-s*o,u*e-f*r),Rf(s*i+c*o)]}return a.invert=function(t,n){var a=Tf(n),u=Tf(t)*a,c=Cf(t)*a,f=Cf(n),s=f*i-c*o;return[Mf(c*i+f*o,u*e+s*r),Rf(s*e-u*r)]},a}function ll(t){function n(n){return(n=t(n[0]*mf,n[1]*mf))[0]*=bf,n[1]*=bf,n}return t=ul(t[0]*mf,t[1]*mf,t.length>2?t[2]*mf:0),n.invert=function(n){return(n=t.invert(n[0]*mf,n[1]*mf))[0]*=bf,n[1]*=bf,n},n}function hl(t,n,e,r,i,o){if(e){var a=Tf(n),u=Cf(n),c=r*e;null==i?(i=n+r*_f,o=n-c/2):(i=dl(a,i),o=dl(a,o),(r>0?io)&&(i+=r*_f));for(var f,s=i;r>0?s>o:s1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function gl(t,n){return xf(t[0]-n[0])=0;--o)i.point((s=f[o])[0],s[1]);else r(h.x,h.p.x,-1,i);h=h.p}f=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function _l(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r=0?1:-1,E=S*A,N=E>gf,k=y*w;if(c.add(Mf(k*S*Cf(E),v*M+k*Tf(E))),a+=N?A+S*_f:A,N^p>=e^m>=e){var C=ys(ps(d),ps(b));bs(C);var P=ys(o,C);bs(P);var z=(N^A>=0?-1:1)*Rf(P[2]);(r>z||r===z&&(C[0]||C[1]))&&(u+=N^A>=0?1:-1)}}return(a<-df||a0){for(l||(i.polygonStart(),l=!0),i.lineStart(),t=0;t1&&2&c&&h.push(h.pop().concat(h.shift())),a.push(h.filter(wl))}return h}}function wl(t){return t.length>1}function Ml(t,n){return((t=t.x)[0]<0?t[1]-yf-df:yf-t[1])-((n=n.x)[0]<0?n[1]-yf-df:yf-n[1])}al.invert=al;var Tl=xl((function(){return!0}),(function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,a){var u=o>0?gf:-gf,c=xf(o-e);xf(c-gf)0?yf:-yf),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(o,r),n=0):i!==u&&c>=gf&&(xf(e-i)df?wf((Cf(n)*(o=Tf(r))*Cf(e)-Cf(r)*(i=Tf(n))*Cf(t))/(i*o*a)):(n+r)/2}(e,r,o,a),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),n=0),t.point(e=o,r=a),i=u},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}}),(function(t,n,e,r){var i;if(null==t)i=e*yf,r.point(-gf,i),r.point(0,i),r.point(gf,i),r.point(gf,0),r.point(gf,-i),r.point(0,-i),r.point(-gf,-i),r.point(-gf,0),r.point(-gf,i);else if(xf(t[0]-n[0])>df){var o=t[0]0,i=xf(n)>df;function o(t,e){return Tf(t)*Tf(e)>n}function a(t,e,r){var i=[1,0,0],o=ys(ps(t),ps(e)),a=gs(o,o),u=o[0],c=a-u*u;if(!c)return!r&&t;var f=n*a/c,s=-n*u/c,l=ys(i,o),h=_s(i,f);vs(h,_s(o,s));var d=l,p=gs(h,d),g=gs(d,d),y=p*p-g*(gs(h,h)-1);if(!(y<0)){var v=zf(y),_=_s(d,(-p-v)/g);if(vs(_,h),_=ds(_),!r)return _;var b,m=t[0],x=e[0],w=t[1],M=e[1];x0^_[1]<(xf(_[0]-m)gf^(m<=_[0]&&_[0]<=x)){var S=_s(d,(-p+v)/g);return vs(S,h),[_,ds(S)]}}}function u(n,e){var i=r?t:gf-t,o=0;return n<-i?o|=1:n>i&&(o|=2),e<-i?o|=4:e>i&&(o|=8),o}return xl(o,(function(t){var n,e,c,f,s;return{lineStart:function(){f=c=!1,s=1},point:function(l,h){var d,p=[l,h],g=o(l,h),y=r?g?0:u(l,h):g?u(l+(l<0?gf:-gf),h):0;if(!n&&(f=c=g)&&t.lineStart(),g!==c&&(!(d=a(n,p))||gl(n,d)||gl(p,d))&&(p[2]=1),g!==c)s=0,g?(t.lineStart(),d=a(p,n),t.point(d[0],d[1])):(d=a(n,p),t.point(d[0],d[1],2),t.lineEnd()),n=d;else if(i&&n&&r^g){var v;y&e||!(v=a(p,n,!0))||(s=0,r?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1],3)))}!g||n&&gl(n,p)||t.point(p[0],p[1]),n=p,c=g,e=y},lineEnd:function(){c&&t.lineEnd(),n=null},clean:function(){return s|(f&&c)<<1}}}),(function(n,r,i,o){hl(o,t,e,i,n,r)}),r?[0,-t]:[-gf,t-gf])}var Sl,El,Nl,kl,Cl=1e9,Pl=-Cl;function zl(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,u,f){var s=0,l=0;if(null==i||(s=a(i,u))!==(l=a(o,u))||c(i,o)<0^u>0)do{f.point(0===s||3===s?t:e,s>1?r:n)}while((s=(s+u+4)%4)!==l);else f.point(o[0],o[1])}function a(r,i){return xf(r[0]-t)0?0:3:xf(r[0]-e)0?2:1:xf(r[1]-n)0?1:0:i>0?3:2}function u(t,n){return c(t.x,n.x)}function c(t,n){var e=a(t,1),r=a(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(a){var c,f,s,l,h,d,p,g,y,v,_,b=a,m=pl(),x={point:w,lineStart:function(){x.point=M,f&&f.push(s=[]);v=!0,y=!1,p=g=NaN},lineEnd:function(){c&&(M(l,h),d&&y&&m.rejoin(),c.push(m.result()));x.point=w,y&&b.lineEnd()},polygonStart:function(){b=m,c=[],f=[],_=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=f.length;er&&(h-o)*(r-a)>(d-a)*(t-o)&&++n:d<=r&&(h-o)*(r-a)<(d-a)*(t-o)&&--n;return n}(),e=_&&n,i=(c=ft(c)).length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),i&&vl(c,u,n,o,a),a.polygonEnd());b=a,c=f=s=null}};function w(t,n){i(t,n)&&b.point(t,n)}function M(o,a){var u=i(o,a);if(f&&s.push([o,a]),v)l=o,h=a,d=u,v=!1,u&&(b.lineStart(),b.point(o,a));else if(u&&y)b.point(o,a);else{var c=[p=Math.max(Pl,Math.min(Cl,p)),g=Math.max(Pl,Math.min(Cl,g))],m=[o=Math.max(Pl,Math.min(Cl,o)),a=Math.max(Pl,Math.min(Cl,a))];!function(t,n,e,r,i,o){var a,u=t[0],c=t[1],f=0,s=1,l=n[0]-u,h=n[1]-c;if(a=e-u,l||!(a>0)){if(a/=l,l<0){if(a0){if(a>s)return;a>f&&(f=a)}if(a=i-u,l||!(a<0)){if(a/=l,l<0){if(a>s)return;a>f&&(f=a)}else if(l>0){if(a0)){if(a/=h,h<0){if(a0){if(a>s)return;a>f&&(f=a)}if(a=o-c,h||!(a<0)){if(a/=h,h<0){if(a>s)return;a>f&&(f=a)}else if(h>0){if(a0&&(t[0]=u+f*l,t[1]=c+f*h),s<1&&(n[0]=u+s*l,n[1]=c+s*h),!0}}}}}(c,m,t,n,e,r)?u&&(b.lineStart(),b.point(o,a),_=!1):(y||(b.lineStart(),b.point(c[0],c[1])),b.point(m[0],m[1]),u||b.lineEnd(),_=!1)}p=o,g=a,y=u}return x}}var $l={sphere:qf,point:qf,lineStart:function(){$l.point=Rl,$l.lineEnd=Dl},lineEnd:qf,polygonStart:qf,polygonEnd:qf};function Dl(){$l.point=$l.lineEnd=qf}function Rl(t,n){El=t*=mf,Nl=Cf(n*=mf),kl=Tf(n),$l.point=Fl}function Fl(t,n){t*=mf;var e=Cf(n*=mf),r=Tf(n),i=xf(t-El),o=Tf(i),a=r*Cf(i),u=kl*e-Nl*r*o,c=Nl*e+kl*r*o;Sl.add(Mf(zf(a*a+u*u),c)),El=t,Nl=e,kl=r}function ql(t){return Sl=new T,Lf(t,$l),+Sl}var Ul=[null,null],Il={type:"LineString",coordinates:Ul};function Ol(t,n){return Ul[0]=t,Ul[1]=n,ql(Il)}var Bl={Feature:function(t,n){return Ll(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r0&&(i=Ol(t[o],t[o-1]))>0&&e<=i&&r<=i&&(e+r-i)*(1-Math.pow((e-r)/i,2))df})).map(c)).concat(lt(Af(o/d)*d,i,d).filter((function(t){return xf(t%g)>df})).map(f))}return v.lines=function(){return _().map((function(t){return{type:"LineString",coordinates:t}}))},v.outline=function(){return{type:"Polygon",coordinates:[s(r).concat(l(a).slice(1),s(e).reverse().slice(1),l(u).reverse().slice(1))]}},v.extent=function(t){return arguments.length?v.extentMajor(t).extentMinor(t):v.extentMinor()},v.extentMajor=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],u=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),u>a&&(t=u,u=a,a=t),v.precision(y)):[[r,u],[e,a]]},v.extentMinor=function(e){return arguments.length?(n=+e[0][0],t=+e[1][0],o=+e[0][1],i=+e[1][1],n>t&&(e=n,n=t,t=e),o>i&&(e=o,o=i,i=e),v.precision(y)):[[n,o],[t,i]]},v.step=function(t){return arguments.length?v.stepMajor(t).stepMinor(t):v.stepMinor()},v.stepMajor=function(t){return arguments.length?(p=+t[0],g=+t[1],v):[p,g]},v.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],v):[h,d]},v.precision=function(h){return arguments.length?(y=+h,c=Wl(o,i,90),f=Zl(n,t,y),s=Wl(u,a,90),l=Zl(r,e,y),v):y},v.extentMajor([[-180,-90+df],[180,90-df]]).extentMinor([[-180,-80-df],[180,80+df]])}var Ql,Jl,th,nh,eh=t=>t,rh=new T,ih=new T,oh={point:qf,lineStart:qf,lineEnd:qf,polygonStart:function(){oh.lineStart=ah,oh.lineEnd=fh},polygonEnd:function(){oh.lineStart=oh.lineEnd=oh.point=qf,rh.add(xf(ih)),ih=new T},result:function(){var t=rh/2;return rh=new T,t}};function ah(){oh.point=uh}function uh(t,n){oh.point=ch,Ql=th=t,Jl=nh=n}function ch(t,n){ih.add(nh*t-th*n),th=t,nh=n}function fh(){ch(Ql,Jl)}var sh=oh,lh=1/0,hh=lh,dh=-lh,ph=dh,gh={point:function(t,n){tdh&&(dh=t);nph&&(ph=n)},lineStart:qf,lineEnd:qf,polygonStart:qf,polygonEnd:qf,result:function(){var t=[[lh,hh],[dh,ph]];return dh=ph=-(hh=lh=1/0),t}};var yh,vh,_h,bh,mh=gh,xh=0,wh=0,Mh=0,Th=0,Ah=0,Sh=0,Eh=0,Nh=0,kh=0,Ch={point:Ph,lineStart:zh,lineEnd:Rh,polygonStart:function(){Ch.lineStart=Fh,Ch.lineEnd=qh},polygonEnd:function(){Ch.point=Ph,Ch.lineStart=zh,Ch.lineEnd=Rh},result:function(){var t=kh?[Eh/kh,Nh/kh]:Sh?[Th/Sh,Ah/Sh]:Mh?[xh/Mh,wh/Mh]:[NaN,NaN];return xh=wh=Mh=Th=Ah=Sh=Eh=Nh=kh=0,t}};function Ph(t,n){xh+=t,wh+=n,++Mh}function zh(){Ch.point=$h}function $h(t,n){Ch.point=Dh,Ph(_h=t,bh=n)}function Dh(t,n){var e=t-_h,r=n-bh,i=zf(e*e+r*r);Th+=i*(_h+t)/2,Ah+=i*(bh+n)/2,Sh+=i,Ph(_h=t,bh=n)}function Rh(){Ch.point=Ph}function Fh(){Ch.point=Uh}function qh(){Ih(yh,vh)}function Uh(t,n){Ch.point=Ih,Ph(yh=_h=t,vh=bh=n)}function Ih(t,n){var e=t-_h,r=n-bh,i=zf(e*e+r*r);Th+=i*(_h+t)/2,Ah+=i*(bh+n)/2,Sh+=i,Eh+=(i=bh*t-_h*n)*(_h+t),Nh+=i*(bh+n),kh+=3*i,Ph(_h=t,bh=n)}var Oh=Ch;function Bh(t){this._context=t}Bh.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,_f)}},result:qf};var Yh,Lh,jh,Hh,Xh,Gh=new T,Vh={point:qf,lineStart:function(){Vh.point=Wh},lineEnd:function(){Yh&&Zh(Lh,jh),Vh.point=qf},polygonStart:function(){Yh=!0},polygonEnd:function(){Yh=null},result:function(){var t=+Gh;return Gh=new T,t}};function Wh(t,n){Vh.point=Zh,Lh=Hh=t,jh=Xh=n}function Zh(t,n){Hh-=t,Xh-=n,Gh.add(zf(Hh*Hh+Xh*Xh)),Hh=t,Xh=n}var Kh=Vh;let Qh,Jh,td,nd;class ed{constructor(t){this._append=null==t?rd:function(t){const n=Math.floor(t);if(!(n>=0))throw new RangeError(`invalid digits: ${t}`);if(n>15)return rd;if(n!==Qh){const t=10**n;Qh=n,Jh=function(n){let e=1;this._+=n[0];for(const r=n.length;e4*n&&g--){var m=a+h,x=u+d,w=c+p,M=zf(m*m+x*x+w*w),T=Rf(w/=M),A=xf(xf(w)-1)n||xf((v*k+_*C)/b-.5)>.3||a*h+u*d+c*p2?t[2]%360*mf:0,k()):[y*bf,v*bf,_*bf]},E.angle=function(t){return arguments.length?(b=t%360*mf,k()):b*bf},E.reflectX=function(t){return arguments.length?(m=t?-1:1,k()):m<0},E.reflectY=function(t){return arguments.length?(x=t?-1:1,k()):x<0},E.precision=function(t){return arguments.length?(a=dd(u,S=t*t),C()):zf(S)},E.fitExtent=function(t,n){return ud(E,t,n)},E.fitSize=function(t,n){return cd(E,t,n)},E.fitWidth=function(t,n){return fd(E,t,n)},E.fitHeight=function(t,n){return sd(E,t,n)},function(){return n=t.apply(this,arguments),E.invert=n.invert&&N,k()}}function _d(t){var n=0,e=gf/3,r=vd(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*mf,e=t[1]*mf):[n*bf,e*bf]},i}function bd(t,n){var e=Cf(t),r=(e+Cf(n))/2;if(xf(r)0?n<-yf+df&&(n=-yf+df):n>yf-df&&(n=yf-df);var e=i/kf(Nd(n),r);return[e*Cf(r*t),i-e*Tf(r*t)]}return o.invert=function(t,n){var e=i-n,o=Pf(r)*zf(t*t+e*e),a=Mf(t,xf(e))*Pf(e);return e*r<0&&(a-=gf*Pf(t)*Pf(e)),[a/r,2*wf(kf(i/o,1/r))-yf]},o}function Cd(t,n){return[t,n]}function Pd(t,n){var e=Tf(t),r=t===n?Cf(t):(e-Tf(n))/(n-t),i=e/r+t;if(xf(r)=0;)n+=e[r].value;else n=1;t.value=n}function Gd(t,n){t instanceof Map?(t=[void 0,t],void 0===n&&(n=Wd)):void 0===n&&(n=Vd);for(var e,r,i,o,a,u=new Qd(t),c=[u];e=c.pop();)if((i=n(e.data))&&(a=(i=Array.from(i)).length))for(e.children=i,o=a-1;o>=0;--o)c.push(r=i[o]=new Qd(i[o])),r.parent=e,r.depth=e.depth+1;return u.eachBefore(Kd)}function Vd(t){return t.children}function Wd(t){return Array.isArray(t)?t[1]:null}function Zd(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function Kd(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function Qd(t){this.data=t,this.depth=this.height=0,this.parent=null}function Jd(t){return null==t?null:tp(t)}function tp(t){if("function"!=typeof t)throw new Error;return t}function np(){return 0}function ep(t){return function(){return t}}qd.invert=function(t,n){for(var e,r=n,i=r*r,o=i*i*i,a=0;a<12&&(o=(i=(r-=e=(r*(zd+$d*i+o*(Dd+Rd*i))-n)/(zd+3*$d*i+o*(7*Dd+9*Rd*i)))*r)*i*i,!(xf(e)df&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]},Od.invert=Md(Rf),Bd.invert=Md((function(t){return 2*wf(t)})),Yd.invert=function(t,n){return[-n,2*wf(Sf(t))-yf]},Qd.prototype=Gd.prototype={constructor:Qd,count:function(){return this.eachAfter(Xd)},each:function(t,n){let e=-1;for(const r of this)t.call(n,r,++e,this);return this},eachAfter:function(t,n){for(var e,r,i,o=this,a=[o],u=[],c=-1;o=a.pop();)if(u.push(o),e=o.children)for(r=0,i=e.length;r=0;--r)o.push(e[r]);return this},find:function(t,n){let e=-1;for(const r of this)if(t.call(n,r,++e,this))return r},sum:function(t){return this.eachAfter((function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e}))},sort:function(t){return this.eachBefore((function(n){n.children&&n.children.sort(t)}))},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;t=e.pop(),n=r.pop();for(;t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){return Array.from(this)},leaves:function(){var t=[];return this.eachBefore((function(n){n.children||t.push(n)})),t},links:function(){var t=this,n=[];return t.each((function(e){e!==t&&n.push({source:e.parent,target:e})})),n},copy:function(){return Gd(this).eachBefore(Zd)},[Symbol.iterator]:function*(){var t,n,e,r,i=this,o=[i];do{for(t=o.reverse(),o=[];i=t.pop();)if(yield i,n=i.children)for(e=0,r=n.length;e(t=(rp*t+ip)%op)/op}function up(t,n){for(var e,r,i=0,o=(t=function(t,n){let e,r,i=t.length;for(;i;)r=n()*i--|0,e=t[i],t[i]=t[r],t[r]=e;return t}(Array.from(t),n)).length,a=[];i0&&e*e>r*r+i*i}function lp(t,n){for(var e=0;e1e-6?(E+Math.sqrt(E*E-4*S*N))/(2*S):N/E);return{x:r+w+M*k,y:i+T+A*k,r:k}}function gp(t,n,e){var r,i,o,a,u=t.x-n.x,c=t.y-n.y,f=u*u+c*c;f?(i=n.r+e.r,i*=i,a=t.r+e.r,i>(a*=a)?(r=(f+a-i)/(2*f),o=Math.sqrt(Math.max(0,a/f-r*r)),e.x=t.x-r*u-o*c,e.y=t.y-r*c+o*u):(r=(f+i-a)/(2*f),o=Math.sqrt(Math.max(0,i/f-r*r)),e.x=n.x+r*u-o*c,e.y=n.y+r*c+o*u)):(e.x=n.x+e.r,e.y=n.y)}function yp(t,n){var e=t.r+n.r-1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function vp(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,o=(n.y*e.r+e.y*n.r)/r;return i*i+o*o}function _p(t){this._=t,this.next=null,this.previous=null}function bp(t,n){if(!(o=(t=function(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}(t)).length))return 0;var e,r,i,o,a,u,c,f,s,l,h;if((e=t[0]).x=0,e.y=0,!(o>1))return e.r;if(r=t[1],e.x=-r.r,r.x=e.r,r.y=0,!(o>2))return e.r+r.r;gp(r,e,i=t[2]),e=new _p(e),r=new _p(r),i=new _p(i),e.next=i.previous=r,r.next=e.previous=i,i.next=r.previous=e;t:for(c=3;c1&&!zp(t,n););return t.slice(0,n)}function zp(t,n){if("/"===t[n]){let e=0;for(;n>0&&"\\"===t[--n];)++e;if(0==(1&e))return!0}return!1}function $p(t,n){return t.parent===n.parent?1:2}function Dp(t){var n=t.children;return n?n[0]:t.t}function Rp(t){var n=t.children;return n?n[n.length-1]:t.t}function Fp(t,n,e){var r=e/(n.i-t.i);n.c-=r,n.s+=e,t.c+=r,n.z+=e,n.m+=e}function qp(t,n,e){return t.a.parent===n.parent?t.a:e}function Up(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}function Ip(t,n,e,r,i){for(var o,a=t.children,u=-1,c=a.length,f=t.value&&(i-e)/t.value;++uh&&(h=u),y=s*s*g,(d=Math.max(h/y,y/l))>p){s-=u;break}p=d}v.push(a={value:s,dice:c1?n:1)},e}(Op);var Lp=function t(n){function e(t,e,r,i,o){if((a=t._squarify)&&a.ratio===n)for(var a,u,c,f,s,l=-1,h=a.length,d=t.value;++l1?n:1)},e}(Op);function jp(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])}function Hp(t,n){return t[0]-n[0]||t[1]-n[1]}function Xp(t){const n=t.length,e=[0,1];let r,i=2;for(r=2;r1&&jp(t[e[i-2]],t[e[i-1]],t[r])<=0;)--i;e[i++]=r}return e.slice(0,i)}var Gp=Math.random,Vp=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,1===arguments.length?(e=t,t=0):e-=t,function(){return n()*e+t}}return e.source=t,e}(Gp),Wp=function t(n){function e(t,e){return arguments.length<2&&(e=t,t=0),t=Math.floor(t),e=Math.floor(e)-t,function(){return Math.floor(n()*e+t)}}return e.source=t,e}(Gp),Zp=function t(n){function e(t,e){var r,i;return t=null==t?0:+t,e=null==e?1:+e,function(){var o;if(null!=r)o=r,r=null;else do{r=2*n()-1,o=2*n()-1,i=r*r+o*o}while(!i||i>1);return t+e*o*Math.sqrt(-2*Math.log(i)/i)}}return e.source=t,e}(Gp),Kp=function t(n){var e=Zp.source(n);function r(){var t=e.apply(this,arguments);return function(){return Math.exp(t())}}return r.source=t,r}(Gp),Qp=function t(n){function e(t){return(t=+t)<=0?()=>0:function(){for(var e=0,r=t;r>1;--r)e+=n();return e+r*n()}}return e.source=t,e}(Gp),Jp=function t(n){var e=Qp.source(n);function r(t){if(0==(t=+t))return n;var r=e(t);return function(){return r()/t}}return r.source=t,r}(Gp),tg=function t(n){function e(t){return function(){return-Math.log1p(-n())/t}}return e.source=t,e}(Gp),ng=function t(n){function e(t){if((t=+t)<0)throw new RangeError("invalid alpha");return t=1/-t,function(){return Math.pow(1-n(),t)}}return e.source=t,e}(Gp),eg=function t(n){function e(t){if((t=+t)<0||t>1)throw new RangeError("invalid p");return function(){return Math.floor(n()+t)}}return e.source=t,e}(Gp),rg=function t(n){function e(t){if((t=+t)<0||t>1)throw new RangeError("invalid p");return 0===t?()=>1/0:1===t?()=>1:(t=Math.log1p(-t),function(){return 1+Math.floor(Math.log1p(-n())/t)})}return e.source=t,e}(Gp),ig=function t(n){var e=Zp.source(n)();function r(t,r){if((t=+t)<0)throw new RangeError("invalid k");if(0===t)return()=>0;if(r=null==r?1:+r,1===t)return()=>-Math.log1p(-n())*r;var i=(t<1?t+1:t)-1/3,o=1/(3*Math.sqrt(i)),a=t<1?()=>Math.pow(n(),1/t):()=>1;return function(){do{do{var t=e(),u=1+o*t}while(u<=0);u*=u*u;var c=1-n()}while(c>=1-.0331*t*t*t*t&&Math.log(c)>=.5*t*t+i*(1-u+Math.log(u)));return i*u*a()*r}}return r.source=t,r}(Gp),og=function t(n){var e=ig.source(n);function r(t,n){var r=e(t),i=e(n);return function(){var t=r();return 0===t?0:t/(t+i())}}return r.source=t,r}(Gp),ag=function t(n){var e=rg.source(n),r=og.source(n);function i(t,n){return t=+t,(n=+n)>=1?()=>t:n<=0?()=>0:function(){for(var i=0,o=t,a=n;o*a>16&&o*(1-a)>16;){var u=Math.floor((o+1)*a),c=r(u,o-u+1)();c<=a?(i+=u,o-=u,a=(a-c)/(1-c)):(o=u-1,a/=c)}for(var f=a<.5,s=e(f?a:1-a),l=s(),h=0;l<=o;++h)l+=s();return i+(f?h:o-h)}}return i.source=t,i}(Gp),ug=function t(n){function e(t,e,r){var i;return 0==(t=+t)?i=t=>-Math.log(t):(t=1/t,i=n=>Math.pow(n,t)),e=null==e?0:+e,r=null==r?1:+r,function(){return e+r*i(-Math.log1p(-n()))}}return e.source=t,e}(Gp),cg=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,function(){return t+e*Math.tan(Math.PI*n())}}return e.source=t,e}(Gp),fg=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,function(){var r=n();return t+e*Math.log(r/(1-r))}}return e.source=t,e}(Gp),sg=function t(n){var e=ig.source(n),r=ag.source(n);function i(t){return function(){for(var i=0,o=t;o>16;){var a=Math.floor(.875*o),u=e(a)();if(u>o)return i+r(a-1,o/u)();i+=a,o-=u}for(var c=-Math.log1p(-n()),f=0;c<=o;++f)c-=Math.log1p(-n());return i+f}}return i.source=t,i}(Gp);const lg=1/4294967296;function hg(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}function dg(t,n){switch(arguments.length){case 0:break;case 1:"function"==typeof t?this.interpolator(t):this.range(t);break;default:this.domain(t),"function"==typeof n?this.interpolator(n):this.range(n)}return this}const pg=Symbol("implicit");function gg(){var t=new InternMap,n=[],e=[],r=pg;function i(i){let o=t.get(i);if(void 0===o){if(r!==pg)return r;t.set(i,o=n.push(i)-1)}return e[o%e.length]}return i.domain=function(e){if(!arguments.length)return n.slice();n=[],t=new InternMap;for(const r of e)t.has(r)||t.set(r,n.push(r)-1);return i},i.range=function(t){return arguments.length?(e=Array.from(t),i):e.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return gg(n,e).unknown(r)},hg.apply(i,arguments),i}function yg(){var t,n,e=gg().unknown(void 0),r=e.domain,i=e.range,o=0,a=1,u=!1,c=0,f=0,s=.5;function l(){var e=r().length,l=an&&(e=t,t=n,n=e),function(e){return Math.max(t,Math.min(n,e))}}(a[0],a[t-1])),r=t>2?Mg:wg,i=o=null,l}function l(n){return null==n||isNaN(n=+n)?e:(i||(i=r(a.map(t),u,c)))(t(f(n)))}return l.invert=function(e){return f(n((o||(o=r(u,a.map(t),Yr)))(e)))},l.domain=function(t){return arguments.length?(a=Array.from(t,_g),s()):a.slice()},l.range=function(t){return arguments.length?(u=Array.from(t),s()):u.slice()},l.rangeRound=function(t){return u=Array.from(t),c=Vr,s()},l.clamp=function(t){return arguments.length?(f=!!t||mg,s()):f!==mg},l.interpolate=function(t){return arguments.length?(c=t,s()):c},l.unknown=function(t){return arguments.length?(e=t,l):e},function(e,r){return t=e,n=r,s()}}function Sg(){return Ag()(mg,mg)}function Eg(n,e,r,i){var o,a=W(n,e,r);switch((i=Jc(null==i?",f":i)).type){case"s":var u=Math.max(Math.abs(n),Math.abs(e));return null!=i.precision||isNaN(o=lf(a,u))||(i.precision=o),t.formatPrefix(i,u);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(o=hf(a,Math.max(Math.abs(n),Math.abs(e))))||(i.precision=o-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(o=sf(a))||(i.precision=o-2*("%"===i.type))}return t.format(i)}function Ng(t){var n=t.domain;return t.ticks=function(t){var e=n();return G(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return Eg(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i,o=n(),a=0,u=o.length-1,c=o[a],f=o[u],s=10;for(f0;){if((i=V(c,f,e))===r)return o[a]=c,o[u]=f,n(o);if(i>0)c=Math.floor(c/i)*i,f=Math.ceil(f/i)*i;else{if(!(i<0))break;c=Math.ceil(c*i)/i,f=Math.floor(f*i)/i}r=i}return t},t}function kg(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a-t(-n,e)}function Fg(n){const e=n(Cg,Pg),r=e.domain;let i,o,a=10;function u(){return i=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),n=>Math.log(n)/t)}(a),o=function(t){return 10===t?Dg:t===Math.E?Math.exp:n=>Math.pow(t,n)}(a),r()[0]<0?(i=Rg(i),o=Rg(o),n(zg,$g)):n(Cg,Pg),e}return e.base=function(t){return arguments.length?(a=+t,u()):a},e.domain=function(t){return arguments.length?(r(t),u()):r()},e.ticks=t=>{const n=r();let e=n[0],u=n[n.length-1];const c=u0){for(;l<=h;++l)for(f=1;fu)break;p.push(s)}}else for(;l<=h;++l)for(f=a-1;f>=1;--f)if(s=l>0?f/o(-l):f*o(l),!(su)break;p.push(s)}2*p.length{if(null==n&&(n=10),null==r&&(r=10===a?"s":","),"function"!=typeof r&&(a%1||null!=(r=Jc(r)).precision||(r.trim=!0),r=t.format(r)),n===1/0)return r;const u=Math.max(1,a*n/e.ticks().length);return t=>{let n=t/o(Math.round(i(t)));return n*ar(kg(r(),{floor:t=>o(Math.floor(i(t))),ceil:t=>o(Math.ceil(i(t)))})),e}function qg(t){return function(n){return Math.sign(n)*Math.log1p(Math.abs(n/t))}}function Ug(t){return function(n){return Math.sign(n)*Math.expm1(Math.abs(n))*t}}function Ig(t){var n=1,e=t(qg(n),Ug(n));return e.constant=function(e){return arguments.length?t(qg(n=+e),Ug(n)):n},Ng(e)}function Og(t){return function(n){return n<0?-Math.pow(-n,t):Math.pow(n,t)}}function Bg(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Yg(t){return t<0?-t*t:t*t}function Lg(t){var n=t(mg,mg),e=1;return n.exponent=function(n){return arguments.length?1===(e=+n)?t(mg,mg):.5===e?t(Bg,Yg):t(Og(e),Og(1/e)):e},Ng(n)}function jg(){var t=Lg(Ag());return t.copy=function(){return Tg(t,jg()).exponent(t.exponent())},hg.apply(t,arguments),t}function Hg(t){return Math.sign(t)*t*t}const Xg=new Date,Gg=new Date;function Vg(t,n,e,r){function i(n){return t(n=0===arguments.length?new Date:new Date(+n)),n}return i.floor=n=>(t(n=new Date(+n)),n),i.ceil=e=>(t(e=new Date(e-1)),n(e,1),t(e),e),i.round=t=>{const n=i(t),e=i.ceil(t);return t-n(n(t=new Date(+t),null==e?1:Math.floor(e)),t),i.range=(e,r,o)=>{const a=[];if(e=i.ceil(e),o=null==o?1:Math.floor(o),!(e0))return a;let u;do{a.push(u=new Date(+e)),n(e,o),t(e)}while(uVg((n=>{if(n>=n)for(;t(n),!e(n);)n.setTime(n-1)}),((t,r)=>{if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););})),e&&(i.count=(n,r)=>(Xg.setTime(+n),Gg.setTime(+r),t(Xg),t(Gg),Math.floor(e(Xg,Gg))),i.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?n=>r(n)%t==0:n=>i.count(0,n)%t==0):i:null)),i}const Wg=Vg((()=>{}),((t,n)=>{t.setTime(+t+n)}),((t,n)=>n-t));Wg.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?Vg((n=>{n.setTime(Math.floor(n/t)*t)}),((n,e)=>{n.setTime(+n+e*t)}),((n,e)=>(e-n)/t)):Wg:null);const Zg=Wg.range,Kg=1e3,Qg=6e4,Jg=36e5,ty=864e5,ny=6048e5,ey=2592e6,ry=31536e6,iy=Vg((t=>{t.setTime(t-t.getMilliseconds())}),((t,n)=>{t.setTime(+t+n*Kg)}),((t,n)=>(n-t)/Kg),(t=>t.getUTCSeconds())),oy=iy.range,ay=Vg((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*Kg)}),((t,n)=>{t.setTime(+t+n*Qg)}),((t,n)=>(n-t)/Qg),(t=>t.getMinutes())),uy=ay.range,cy=Vg((t=>{t.setUTCSeconds(0,0)}),((t,n)=>{t.setTime(+t+n*Qg)}),((t,n)=>(n-t)/Qg),(t=>t.getUTCMinutes())),fy=cy.range,sy=Vg((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*Kg-t.getMinutes()*Qg)}),((t,n)=>{t.setTime(+t+n*Jg)}),((t,n)=>(n-t)/Jg),(t=>t.getHours())),ly=sy.range,hy=Vg((t=>{t.setUTCMinutes(0,0,0)}),((t,n)=>{t.setTime(+t+n*Jg)}),((t,n)=>(n-t)/Jg),(t=>t.getUTCHours())),dy=hy.range,py=Vg((t=>t.setHours(0,0,0,0)),((t,n)=>t.setDate(t.getDate()+n)),((t,n)=>(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Qg)/ty),(t=>t.getDate()-1)),gy=py.range,yy=Vg((t=>{t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCDate(t.getUTCDate()+n)}),((t,n)=>(n-t)/ty),(t=>t.getUTCDate()-1)),vy=yy.range,_y=Vg((t=>{t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCDate(t.getUTCDate()+n)}),((t,n)=>(n-t)/ty),(t=>Math.floor(t/ty))),by=_y.range;function my(t){return Vg((n=>{n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)}),((t,n)=>{t.setDate(t.getDate()+7*n)}),((t,n)=>(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Qg)/ny))}const xy=my(0),wy=my(1),My=my(2),Ty=my(3),Ay=my(4),Sy=my(5),Ey=my(6),Ny=xy.range,ky=wy.range,Cy=My.range,Py=Ty.range,zy=Ay.range,$y=Sy.range,Dy=Ey.range;function Ry(t){return Vg((n=>{n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCDate(t.getUTCDate()+7*n)}),((t,n)=>(n-t)/ny))}const Fy=Ry(0),qy=Ry(1),Uy=Ry(2),Iy=Ry(3),Oy=Ry(4),By=Ry(5),Yy=Ry(6),Ly=Fy.range,jy=qy.range,Hy=Uy.range,Xy=Iy.range,Gy=Oy.range,Vy=By.range,Wy=Yy.range,Zy=Vg((t=>{t.setDate(1),t.setHours(0,0,0,0)}),((t,n)=>{t.setMonth(t.getMonth()+n)}),((t,n)=>n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())),(t=>t.getMonth())),Ky=Zy.range,Qy=Vg((t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCMonth(t.getUTCMonth()+n)}),((t,n)=>n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())),(t=>t.getUTCMonth())),Jy=Qy.range,tv=Vg((t=>{t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,n)=>{t.setFullYear(t.getFullYear()+n)}),((t,n)=>n.getFullYear()-t.getFullYear()),(t=>t.getFullYear()));tv.every=t=>isFinite(t=Math.floor(t))&&t>0?Vg((n=>{n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)}),((n,e)=>{n.setFullYear(n.getFullYear()+e*t)})):null;const nv=tv.range,ev=Vg((t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n)}),((t,n)=>n.getUTCFullYear()-t.getUTCFullYear()),(t=>t.getUTCFullYear()));ev.every=t=>isFinite(t=Math.floor(t))&&t>0?Vg((n=>{n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)}),((n,e)=>{n.setUTCFullYear(n.getUTCFullYear()+e*t)})):null;const rv=ev.range;function iv(t,n,e,i,o,a){const u=[[iy,1,Kg],[iy,5,5e3],[iy,15,15e3],[iy,30,3e4],[a,1,Qg],[a,5,3e5],[a,15,9e5],[a,30,18e5],[o,1,Jg],[o,3,108e5],[o,6,216e5],[o,12,432e5],[i,1,ty],[i,2,1728e5],[e,1,ny],[n,1,ey],[n,3,7776e6],[t,1,ry]];function c(n,e,i){const o=Math.abs(e-n)/i,a=r((([,,t])=>t)).right(u,o);if(a===u.length)return t.every(W(n/ry,e/ry,i));if(0===a)return Wg.every(Math.max(W(n,e,i),1));const[c,f]=u[o/u[a-1][2]=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:k_,s:C_,S:Zv,u:Kv,U:Qv,V:t_,w:n_,W:e_,x:null,X:null,y:r_,Y:o_,Z:u_,"%":N_},m={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:c_,e:c_,f:d_,g:T_,G:S_,H:f_,I:s_,j:l_,L:h_,m:p_,M:g_,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:k_,s:C_,S:y_,u:v_,U:__,V:m_,w:x_,W:w_,x:null,X:null,y:M_,Y:A_,Z:E_,"%":N_},x={a:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=p.get(r[0].toLowerCase()),e+r[0].length):-1},A:function(t,n,e){var r=l.exec(n.slice(e));return r?(t.w=h.get(r[0].toLowerCase()),e+r[0].length):-1},b:function(t,n,e){var r=v.exec(n.slice(e));return r?(t.m=_.get(r[0].toLowerCase()),e+r[0].length):-1},B:function(t,n,e){var r=g.exec(n.slice(e));return r?(t.m=y.get(r[0].toLowerCase()),e+r[0].length):-1},c:function(t,e,r){return T(t,n,e,r)},d:zv,e:zv,f:Uv,g:Nv,G:Ev,H:Dv,I:Dv,j:$v,L:qv,m:Pv,M:Rv,p:function(t,n,e){var r=f.exec(n.slice(e));return r?(t.p=s.get(r[0].toLowerCase()),e+r[0].length):-1},q:Cv,Q:Ov,s:Bv,S:Fv,u:Mv,U:Tv,V:Av,w:wv,W:Sv,x:function(t,n,r){return T(t,e,n,r)},X:function(t,n,e){return T(t,r,n,e)},y:Nv,Y:Ev,Z:kv,"%":Iv};function w(t,n){return function(e){var r,i,o,a=[],u=-1,c=0,f=t.length;for(e instanceof Date||(e=new Date(+e));++u53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=sv(lv(o.y,0,1))).getUTCDay(),r=i>4||0===i?qy.ceil(r):qy(r),r=yy.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=fv(lv(o.y,0,1))).getDay(),r=i>4||0===i?wy.ceil(r):wy(r),r=py.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?sv(lv(o.y,0,1)).getUTCDay():fv(lv(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,sv(o)):fv(o)}}function T(t,n,e,r){for(var i,o,a=0,u=n.length,c=e.length;a=c)return-1;if(37===(i=n.charCodeAt(a++))){if(i=n.charAt(a++),!(o=x[i in pv?n.charAt(a++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}return b.x=w(e,b),b.X=w(r,b),b.c=w(n,b),m.x=w(e,m),m.X=w(r,m),m.c=w(n,m),{format:function(t){var n=w(t+="",b);return n.toString=function(){return t},n},parse:function(t){var n=M(t+="",!1);return n.toString=function(){return t},n},utcFormat:function(t){var n=w(t+="",m);return n.toString=function(){return t},n},utcParse:function(t){var n=M(t+="",!0);return n.toString=function(){return t},n}}}var dv,pv={"-":"",_:" ",0:"0"},gv=/^\s*\d+/,yv=/^%/,vv=/[\\^$*+?|[\]().{}]/g;function _v(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o[t.toLowerCase(),n])))}function wv(t,n,e){var r=gv.exec(n.slice(e,e+1));return r?(t.w=+r[0],e+r[0].length):-1}function Mv(t,n,e){var r=gv.exec(n.slice(e,e+1));return r?(t.u=+r[0],e+r[0].length):-1}function Tv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.U=+r[0],e+r[0].length):-1}function Av(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.V=+r[0],e+r[0].length):-1}function Sv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.W=+r[0],e+r[0].length):-1}function Ev(t,n,e){var r=gv.exec(n.slice(e,e+4));return r?(t.y=+r[0],e+r[0].length):-1}function Nv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),e+r[0].length):-1}function kv(t,n,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function Cv(t,n,e){var r=gv.exec(n.slice(e,e+1));return r?(t.q=3*r[0]-3,e+r[0].length):-1}function Pv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function zv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function $v(t,n,e){var r=gv.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Dv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function Rv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function Fv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function qv(t,n,e){var r=gv.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function Uv(t,n,e){var r=gv.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function Iv(t,n,e){var r=yv.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function Ov(t,n,e){var r=gv.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function Bv(t,n,e){var r=gv.exec(n.slice(e));return r?(t.s=+r[0],e+r[0].length):-1}function Yv(t,n){return _v(t.getDate(),n,2)}function Lv(t,n){return _v(t.getHours(),n,2)}function jv(t,n){return _v(t.getHours()%12||12,n,2)}function Hv(t,n){return _v(1+py.count(tv(t),t),n,3)}function Xv(t,n){return _v(t.getMilliseconds(),n,3)}function Gv(t,n){return Xv(t,n)+"000"}function Vv(t,n){return _v(t.getMonth()+1,n,2)}function Wv(t,n){return _v(t.getMinutes(),n,2)}function Zv(t,n){return _v(t.getSeconds(),n,2)}function Kv(t){var n=t.getDay();return 0===n?7:n}function Qv(t,n){return _v(xy.count(tv(t)-1,t),n,2)}function Jv(t){var n=t.getDay();return n>=4||0===n?Ay(t):Ay.ceil(t)}function t_(t,n){return t=Jv(t),_v(Ay.count(tv(t),t)+(4===tv(t).getDay()),n,2)}function n_(t){return t.getDay()}function e_(t,n){return _v(wy.count(tv(t)-1,t),n,2)}function r_(t,n){return _v(t.getFullYear()%100,n,2)}function i_(t,n){return _v((t=Jv(t)).getFullYear()%100,n,2)}function o_(t,n){return _v(t.getFullYear()%1e4,n,4)}function a_(t,n){var e=t.getDay();return _v((t=e>=4||0===e?Ay(t):Ay.ceil(t)).getFullYear()%1e4,n,4)}function u_(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+_v(n/60|0,"0",2)+_v(n%60,"0",2)}function c_(t,n){return _v(t.getUTCDate(),n,2)}function f_(t,n){return _v(t.getUTCHours(),n,2)}function s_(t,n){return _v(t.getUTCHours()%12||12,n,2)}function l_(t,n){return _v(1+yy.count(ev(t),t),n,3)}function h_(t,n){return _v(t.getUTCMilliseconds(),n,3)}function d_(t,n){return h_(t,n)+"000"}function p_(t,n){return _v(t.getUTCMonth()+1,n,2)}function g_(t,n){return _v(t.getUTCMinutes(),n,2)}function y_(t,n){return _v(t.getUTCSeconds(),n,2)}function v_(t){var n=t.getUTCDay();return 0===n?7:n}function __(t,n){return _v(Fy.count(ev(t)-1,t),n,2)}function b_(t){var n=t.getUTCDay();return n>=4||0===n?Oy(t):Oy.ceil(t)}function m_(t,n){return t=b_(t),_v(Oy.count(ev(t),t)+(4===ev(t).getUTCDay()),n,2)}function x_(t){return t.getUTCDay()}function w_(t,n){return _v(qy.count(ev(t)-1,t),n,2)}function M_(t,n){return _v(t.getUTCFullYear()%100,n,2)}function T_(t,n){return _v((t=b_(t)).getUTCFullYear()%100,n,2)}function A_(t,n){return _v(t.getUTCFullYear()%1e4,n,4)}function S_(t,n){var e=t.getUTCDay();return _v((t=e>=4||0===e?Oy(t):Oy.ceil(t)).getUTCFullYear()%1e4,n,4)}function E_(){return"+0000"}function N_(){return"%"}function k_(t){return+t}function C_(t){return Math.floor(+t/1e3)}function P_(n){return dv=hv(n),t.timeFormat=dv.format,t.timeParse=dv.parse,t.utcFormat=dv.utcFormat,t.utcParse=dv.utcParse,dv}t.timeFormat=void 0,t.timeParse=void 0,t.utcFormat=void 0,t.utcParse=void 0,P_({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var z_="%Y-%m-%dT%H:%M:%S.%LZ";var $_=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat(z_),D_=$_;var R_=+new Date("2000-01-01T00:00:00.000Z")?function(t){var n=new Date(t);return isNaN(n)?null:n}:t.utcParse(z_),F_=R_;function q_(t){return new Date(t)}function U_(t){return t instanceof Date?+t:+new Date(+t)}function I_(t,n,e,r,i,o,a,u,c,f){var s=Sg(),l=s.invert,h=s.domain,d=f(".%L"),p=f(":%S"),g=f("%I:%M"),y=f("%I %p"),v=f("%a %d"),_=f("%b %d"),b=f("%B"),m=f("%Y");function x(t){return(c(t)Fr(t[t.length-1]),rb=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(H_),ib=eb(rb),ob=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(H_),ab=eb(ob),ub=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(H_),cb=eb(ub),fb=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(H_),sb=eb(fb),lb=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(H_),hb=eb(lb),db=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(H_),pb=eb(db),gb=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(H_),yb=eb(gb),vb=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(H_),_b=eb(vb),bb=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(H_),mb=eb(bb),xb=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(H_),wb=eb(xb),Mb=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(H_),Tb=eb(Mb),Ab=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(H_),Sb=eb(Ab),Eb=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(H_),Nb=eb(Eb),kb=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(H_),Cb=eb(kb),Pb=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(H_),zb=eb(Pb),$b=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(H_),Db=eb($b),Rb=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(H_),Fb=eb(Rb),qb=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(H_),Ub=eb(qb),Ib=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(H_),Ob=eb(Ib),Bb=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(H_),Yb=eb(Bb),Lb=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(H_),jb=eb(Lb),Hb=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(H_),Xb=eb(Hb),Gb=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(H_),Vb=eb(Gb),Wb=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(H_),Zb=eb(Wb),Kb=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(H_),Qb=eb(Kb),Jb=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(H_),tm=eb(Jb),nm=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(H_),em=eb(nm);var rm=hi(Tr(300,.5,0),Tr(-240,.5,1)),im=hi(Tr(-100,.75,.35),Tr(80,1.5,.8)),om=hi(Tr(260,.75,.35),Tr(80,1.5,.8)),am=Tr();var um=Fe(),cm=Math.PI/3,fm=2*Math.PI/3;function sm(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}}var lm=sm(H_("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),hm=sm(H_("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),dm=sm(H_("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),pm=sm(H_("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function gm(t){return function(){return t}}const ym=Math.abs,vm=Math.atan2,_m=Math.cos,bm=Math.max,mm=Math.min,xm=Math.sin,wm=Math.sqrt,Mm=1e-12,Tm=Math.PI,Am=Tm/2,Sm=2*Tm;function Em(t){return t>=1?Am:t<=-1?-Am:Math.asin(t)}function Nm(t){let n=3;return t.digits=function(e){if(!arguments.length)return n;if(null==e)n=null;else{const t=Math.floor(e);if(!(t>=0))throw new RangeError(`invalid digits: ${e}`);n=t}return t},()=>new Ua(n)}function km(t){return t.innerRadius}function Cm(t){return t.outerRadius}function Pm(t){return t.startAngle}function zm(t){return t.endAngle}function $m(t){return t&&t.padAngle}function Dm(t,n,e,r,i,o,a){var u=t-e,c=n-r,f=(a?o:-o)/wm(u*u+c*c),s=f*c,l=-f*u,h=t+s,d=n+l,p=e+s,g=r+l,y=(h+p)/2,v=(d+g)/2,_=p-h,b=g-d,m=_*_+b*b,x=i-o,w=h*g-p*d,M=(b<0?-1:1)*wm(bm(0,x*x*m-w*w)),T=(w*b-_*M)/m,A=(-w*_-b*M)/m,S=(w*b+_*M)/m,E=(-w*_+b*M)/m,N=T-y,k=A-v,C=S-y,P=E-v;return N*N+k*k>C*C+P*P&&(T=S,A=E),{cx:T,cy:A,x01:-s,y01:-l,x11:T*(i/x-1),y11:A*(i/x-1)}}var Rm=Array.prototype.slice;function Fm(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function qm(t){this._context=t}function Um(t){return new qm(t)}function Im(t){return t[0]}function Om(t){return t[1]}function Bm(t,n){var e=gm(!0),r=null,i=Um,o=null,a=Nm(u);function u(u){var c,f,s,l=(u=Fm(u)).length,h=!1;for(null==r&&(o=i(s=a())),c=0;c<=l;++c)!(c=l;--h)u.point(v[h],_[h]);u.lineEnd(),u.areaEnd()}y&&(v[s]=+t(d,s,f),_[s]=+n(d,s,f),u.point(r?+r(d,s,f):v[s],e?+e(d,s,f):_[s]))}if(p)return u=null,p+""||null}function s(){return Bm().defined(i).curve(a).context(o)}return t="function"==typeof t?t:void 0===t?Im:gm(+t),n="function"==typeof n?n:gm(void 0===n?0:+n),e="function"==typeof e?e:void 0===e?Om:gm(+e),f.x=function(n){return arguments.length?(t="function"==typeof n?n:gm(+n),r=null,f):t},f.x0=function(n){return arguments.length?(t="function"==typeof n?n:gm(+n),f):t},f.x1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:gm(+t),f):r},f.y=function(t){return arguments.length?(n="function"==typeof t?t:gm(+t),e=null,f):n},f.y0=function(t){return arguments.length?(n="function"==typeof t?t:gm(+t),f):n},f.y1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:gm(+t),f):e},f.lineX0=f.lineY0=function(){return s().x(t).y(n)},f.lineY1=function(){return s().x(t).y(e)},f.lineX1=function(){return s().x(r).y(n)},f.defined=function(t){return arguments.length?(i="function"==typeof t?t:gm(!!t),f):i},f.curve=function(t){return arguments.length?(a=t,null!=o&&(u=a(o)),f):a},f.context=function(t){return arguments.length?(null==t?o=u=null:u=a(o=t),f):o},f}function Lm(t,n){return nt?1:n>=t?0:NaN}function jm(t){return t}qm.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var Hm=Gm(Um);function Xm(t){this._curve=t}function Gm(t){function n(n){return new Xm(t(n))}return n._curve=t,n}function Vm(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(Gm(t)):n()._curve},t}function Wm(){return Vm(Bm().curve(Hm))}function Zm(){var t=Ym().curve(Hm),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Vm(e())},delete t.lineX0,t.lineEndAngle=function(){return Vm(r())},delete t.lineX1,t.lineInnerRadius=function(){return Vm(i())},delete t.lineY0,t.lineOuterRadius=function(){return Vm(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(Gm(t)):n()._curve},t}function Km(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]}Xm.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};class Qm{constructor(t,n){this._context=t,this._x=n}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,n,t,n):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+n)/2,t,this._y0,t,n)}this._x0=t,this._y0=n}}class Jm{constructor(t){this._context=t}lineStart(){this._point=0}lineEnd(){}point(t,n){if(t=+t,n=+n,0===this._point)this._point=1;else{const e=Km(this._x0,this._y0),r=Km(this._x0,this._y0=(this._y0+n)/2),i=Km(t,this._y0),o=Km(t,n);this._context.moveTo(...e),this._context.bezierCurveTo(...r,...i,...o)}this._x0=t,this._y0=n}}function tx(t){return new Qm(t,!0)}function nx(t){return new Qm(t,!1)}function ex(t){return new Jm(t)}function rx(t){return t.source}function ix(t){return t.target}function ox(t){let n=rx,e=ix,r=Im,i=Om,o=null,a=null,u=Nm(c);function c(){let c;const f=Rm.call(arguments),s=n.apply(this,f),l=e.apply(this,f);if(null==o&&(a=t(c=u())),a.lineStart(),f[0]=s,a.point(+r.apply(this,f),+i.apply(this,f)),f[0]=l,a.point(+r.apply(this,f),+i.apply(this,f)),a.lineEnd(),c)return a=null,c+""||null}return c.source=function(t){return arguments.length?(n=t,c):n},c.target=function(t){return arguments.length?(e=t,c):e},c.x=function(t){return arguments.length?(r="function"==typeof t?t:gm(+t),c):r},c.y=function(t){return arguments.length?(i="function"==typeof t?t:gm(+t),c):i},c.context=function(n){return arguments.length?(null==n?o=a=null:a=t(o=n),c):o},c}const ax=wm(3);var ux={draw(t,n){const e=.59436*wm(n+mm(n/28,.75)),r=e/2,i=r*ax;t.moveTo(0,e),t.lineTo(0,-e),t.moveTo(-i,-r),t.lineTo(i,r),t.moveTo(-i,r),t.lineTo(i,-r)}},cx={draw(t,n){const e=wm(n/Tm);t.moveTo(e,0),t.arc(0,0,e,0,Sm)}},fx={draw(t,n){const e=wm(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}};const sx=wm(1/3),lx=2*sx;var hx={draw(t,n){const e=wm(n/lx),r=e*sx;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},dx={draw(t,n){const e=.62625*wm(n);t.moveTo(0,-e),t.lineTo(e,0),t.lineTo(0,e),t.lineTo(-e,0),t.closePath()}},px={draw(t,n){const e=.87559*wm(n-mm(n/7,2));t.moveTo(-e,0),t.lineTo(e,0),t.moveTo(0,e),t.lineTo(0,-e)}},gx={draw(t,n){const e=wm(n),r=-e/2;t.rect(r,r,e,e)}},yx={draw(t,n){const e=.4431*wm(n);t.moveTo(e,e),t.lineTo(e,-e),t.lineTo(-e,-e),t.lineTo(-e,e),t.closePath()}};const vx=xm(Tm/10)/xm(7*Tm/10),_x=xm(Sm/10)*vx,bx=-_m(Sm/10)*vx;var mx={draw(t,n){const e=wm(.8908130915292852*n),r=_x*e,i=bx*e;t.moveTo(0,-e),t.lineTo(r,i);for(let n=1;n<5;++n){const o=Sm*n/5,a=_m(o),u=xm(o);t.lineTo(u*e,-a*e),t.lineTo(a*r-u*i,u*r+a*i)}t.closePath()}};const xx=wm(3);var wx={draw(t,n){const e=-wm(n/(3*xx));t.moveTo(0,2*e),t.lineTo(-xx*e,-e),t.lineTo(xx*e,-e),t.closePath()}};const Mx=wm(3);var Tx={draw(t,n){const e=.6824*wm(n),r=e/2,i=e*Mx/2;t.moveTo(0,-e),t.lineTo(i,r),t.lineTo(-i,r),t.closePath()}};const Ax=-.5,Sx=wm(3)/2,Ex=1/wm(12),Nx=3*(Ex/2+1);var kx={draw(t,n){const e=wm(n/Nx),r=e/2,i=e*Ex,o=r,a=e*Ex+e,u=-o,c=a;t.moveTo(r,i),t.lineTo(o,a),t.lineTo(u,c),t.lineTo(Ax*r-Sx*i,Sx*r+Ax*i),t.lineTo(Ax*o-Sx*a,Sx*o+Ax*a),t.lineTo(Ax*u-Sx*c,Sx*u+Ax*c),t.lineTo(Ax*r+Sx*i,Ax*i-Sx*r),t.lineTo(Ax*o+Sx*a,Ax*a-Sx*o),t.lineTo(Ax*u+Sx*c,Ax*c-Sx*u),t.closePath()}},Cx={draw(t,n){const e=.6189*wm(n-mm(n/6,1.7));t.moveTo(-e,-e),t.lineTo(e,e),t.moveTo(-e,e),t.lineTo(e,-e)}};const Px=[cx,fx,hx,gx,mx,wx,kx],zx=[cx,px,Cx,Tx,ux,yx,dx];function $x(){}function Dx(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function Rx(t){this._context=t}function Fx(t){this._context=t}function qx(t){this._context=t}function Ux(t,n){this._basis=new Rx(t),this._beta=n}Rx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Dx(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Dx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Fx.prototype={areaStart:$x,areaEnd:$x,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:Dx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},qx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:Dx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Ux.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],o=n[0],a=t[e]-i,u=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*a),this._beta*n[c]+(1-this._beta)*(o+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var Ix=function t(n){function e(t){return 1===n?new Rx(t):new Ux(t,n)}return e.beta=function(n){return t(+n)},e}(.85);function Ox(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function Bx(t,n){this._context=t,this._k=(1-n)/6}Bx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Ox(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:Ox(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Yx=function t(n){function e(t){return new Bx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Lx(t,n){this._context=t,this._k=(1-n)/6}Lx.prototype={areaStart:$x,areaEnd:$x,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:Ox(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var jx=function t(n){function e(t){return new Lx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Hx(t,n){this._context=t,this._k=(1-n)/6}Hx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ox(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Xx=function t(n){function e(t){return new Hx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Gx(t,n,e){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>Mm){var u=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>Mm){var f=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,s=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*f+t._x1*t._l23_2a-n*t._l12_2a)/s,a=(a*f+t._y1*t._l23_2a-e*t._l12_2a)/s}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function Vx(t,n){this._context=t,this._alpha=n}Vx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:Gx(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Wx=function t(n){function e(t){return n?new Vx(t,n):new Bx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function Zx(t,n){this._context=t,this._alpha=n}Zx.prototype={areaStart:$x,areaEnd:$x,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:Gx(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Kx=function t(n){function e(t){return n?new Zx(t,n):new Lx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function Qx(t,n){this._context=t,this._alpha=n}Qx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Gx(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Jx=function t(n){function e(t){return n?new Qx(t,n):new Hx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function tw(t){this._context=t}function nw(t){return t<0?-1:1}function ew(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(e-t._y1)/(i||r<0&&-0),u=(o*i+a*r)/(r+i);return(nw(o)+nw(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(u))||0}function rw(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function iw(t,n,e){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,u=(o-r)/3;t._context.bezierCurveTo(r+u,i+u*n,o-u,a-u*e,o,a)}function ow(t){this._context=t}function aw(t){this._context=new uw(t)}function uw(t){this._context=t}function cw(t){this._context=t}function fw(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],n=1;n=0;--n)i[n]=(a[n]-i[n+1])/o[n];for(o[r-1]=(t[r]+i[r-1])/2,n=0;n1)for(var e,r,i,o=1,a=t[n[0]],u=a.length;o=0;)e[n]=n;return e}function dw(t,n){return t[n]}function pw(t){const n=[];return n.key=t,n}function gw(t){var n=t.map(yw);return hw(t).sort((function(t,e){return n[t]-n[e]}))}function yw(t){for(var n,e=-1,r=0,i=t.length,o=-1/0;++eo&&(o=n,r=e);return r}function vw(t){var n=t.map(_w);return hw(t).sort((function(t,e){return n[t]-n[e]}))}function _w(t){for(var n,e=0,r=-1,i=t.length;++r=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}};var bw=t=>()=>t;function mw(t,{sourceEvent:n,target:e,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function xw(t,n,e){this.k=t,this.x=n,this.y=e}xw.prototype={constructor:xw,scale:function(t){return 1===t?this:new xw(this.k*t,this.x,this.y)},translate:function(t,n){return 0===t&0===n?this:new xw(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var ww=new xw(1,0,0);function Mw(t){for(;!t.__zoom;)if(!(t=t.parentNode))return ww;return t.__zoom}function Tw(t){t.stopImmediatePropagation()}function Aw(t){t.preventDefault(),t.stopImmediatePropagation()}function Sw(t){return!(t.ctrlKey&&"wheel"!==t.type||t.button)}function Ew(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function Nw(){return this.__zoom||ww}function kw(t){return-t.deltaY*(1===t.deltaMode?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function Cw(){return navigator.maxTouchPoints||"ontouchstart"in this}function Pw(t,n,e){var r=t.invertX(n[0][0])-e[0][0],i=t.invertX(n[1][0])-e[1][0],o=t.invertY(n[0][1])-e[0][1],a=t.invertY(n[1][1])-e[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}Mw.prototype=xw.prototype,t.Adder=T,t.Delaunay=Lu,t.FormatSpecifier=tf,t.InternMap=InternMap,t.InternSet=InternSet,t.Node=Qd,t.Path=Ua,t.Voronoi=qu,t.ZoomTransform=xw,t.active=function(t,n){var e,r,i=t.__transition;if(i)for(r in n=null==n?null:n+"",i)if((e=i[r]).state>qi&&e.name===n)return new po([[t]],Zo,n,+r);return null},t.arc=function(){var t=km,n=Cm,e=gm(0),r=null,i=Pm,o=zm,a=$m,u=null,c=Nm(f);function f(){var f,s,l=+t.apply(this,arguments),h=+n.apply(this,arguments),d=i.apply(this,arguments)-Am,p=o.apply(this,arguments)-Am,g=ym(p-d),y=p>d;if(u||(u=f=c()),hMm)if(g>Sm-Mm)u.moveTo(h*_m(d),h*xm(d)),u.arc(0,0,h,d,p,!y),l>Mm&&(u.moveTo(l*_m(p),l*xm(p)),u.arc(0,0,l,p,d,y));else{var v,_,b=d,m=p,x=d,w=p,M=g,T=g,A=a.apply(this,arguments)/2,S=A>Mm&&(r?+r.apply(this,arguments):wm(l*l+h*h)),E=mm(ym(h-l)/2,+e.apply(this,arguments)),N=E,k=E;if(S>Mm){var C=Em(S/l*xm(A)),P=Em(S/h*xm(A));(M-=2*C)>Mm?(x+=C*=y?1:-1,w-=C):(M=0,x=w=(d+p)/2),(T-=2*P)>Mm?(b+=P*=y?1:-1,m-=P):(T=0,b=m=(d+p)/2)}var z=h*_m(b),$=h*xm(b),D=l*_m(w),R=l*xm(w);if(E>Mm){var F,q=h*_m(m),U=h*xm(m),I=l*_m(x),O=l*xm(x);if(g1?0:t<-1?Tm:Math.acos(t)}((B*L+Y*j)/(wm(B*B+Y*Y)*wm(L*L+j*j)))/2),X=wm(F[0]*F[0]+F[1]*F[1]);N=mm(E,(l-X)/(H-1)),k=mm(E,(h-X)/(H+1))}else N=k=0}T>Mm?k>Mm?(v=Dm(I,O,z,$,h,k,y),_=Dm(q,U,D,R,h,k,y),u.moveTo(v.cx+v.x01,v.cy+v.y01),kMm&&M>Mm?N>Mm?(v=Dm(D,R,q,U,l,-N,y),_=Dm(z,$,I,O,l,-N,y),u.lineTo(v.cx+v.x01,v.cy+v.y01),N=0))throw new RangeError("invalid r");let e=t.length;if(!((e=Math.floor(e))>=0))throw new RangeError("invalid length");if(!e||!n)return t;const r=y(n),i=t.slice();return r(t,i,0,e,1),r(i,t,0,e,1),r(t,i,0,e,1),t},t.blur2=l,t.blurImage=h,t.brush=function(){return wa(la)},t.brushSelection=function(t){var n=t.__brush;return n?n.dim.output(n.selection):null},t.brushX=function(){return wa(fa)},t.brushY=function(){return wa(sa)},t.buffer=function(t,n){return fetch(t,n).then(_c)},t.chord=function(){return za(!1,!1)},t.chordDirected=function(){return za(!0,!1)},t.chordTranspose=function(){return za(!1,!0)},t.cluster=function(){var t=Ld,n=1,e=1,r=!1;function i(i){var o,a=0;i.eachAfter((function(n){var e=n.children;e?(n.x=function(t){return t.reduce(jd,0)/t.length}(e),n.y=function(t){return 1+t.reduce(Hd,0)}(e)):(n.x=o?a+=t(n,o):0,n.y=0,o=n)}));var u=function(t){for(var n;n=t.children;)t=n[0];return t}(i),c=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(i),f=u.x-t(u,c)/2,s=c.x+t(c,u)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*n,t.y=(i.y-t.y)*e}:function(t){t.x=(t.x-f)/(s-f)*n,t.y=(1-(i.y?t.y/i.y:1))*e})}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.color=ze,t.contourDensity=function(){var t=fu,n=su,e=lu,r=960,i=500,o=20,a=2,u=3*o,c=r+2*u>>a,f=i+2*u>>a,s=Qa(20);function h(r){var i=new Float32Array(c*f),s=Math.pow(2,-a),h=-1;for(const o of r){var d=(t(o,++h,r)+u)*s,p=(n(o,h,r)+u)*s,g=+e(o,h,r);if(g&&d>=0&&d=0&&pt*r)))(n).map(((t,n)=>(t.value=+e[n],p(t))))}function p(t){return t.coordinates.forEach(g),t}function g(t){t.forEach(y)}function y(t){t.forEach(v)}function v(t){t[0]=t[0]*Math.pow(2,a)-u,t[1]=t[1]*Math.pow(2,a)-u}function _(){return c=r+2*(u=3*o)>>a,f=i+2*u>>a,d}return d.contours=function(t){var n=h(t),e=iu().size([c,f]),r=Math.pow(2,2*a),i=t=>{t=+t;var i=p(e.contour(n,t*r));return i.value=t,i};return Object.defineProperty(i,"max",{get:()=>J(n)/r}),i},d.x=function(n){return arguments.length?(t="function"==typeof n?n:Qa(+n),d):t},d.y=function(t){return arguments.length?(n="function"==typeof t?t:Qa(+t),d):n},d.weight=function(t){return arguments.length?(e="function"==typeof t?t:Qa(+t),d):e},d.size=function(t){if(!arguments.length)return[r,i];var n=+t[0],e=+t[1];if(!(n>=0&&e>=0))throw new Error("invalid size");return r=n,i=e,_()},d.cellSize=function(t){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return a=Math.floor(Math.log(t)/Math.LN2),_()},d.thresholds=function(t){return arguments.length?(s="function"==typeof t?t:Array.isArray(t)?Qa(Za.call(t)):Qa(t),d):s},d.bandwidth=function(t){if(!arguments.length)return Math.sqrt(o*(o+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return o=(Math.sqrt(4*t*t+1)-1)/2,_()},d},t.contours=iu,t.count=v,t.create=function(t){return Zn(Yt(t).call(document.documentElement))},t.creator=Yt,t.cross=function(...t){const n="function"==typeof t[t.length-1]&&function(t){return n=>t(...n)}(t.pop()),e=(t=t.map(m)).map(_),r=t.length-1,i=new Array(r+1).fill(0),o=[];if(r<0||e.some(b))return o;for(;;){o.push(i.map(((n,e)=>t[e][n])));let a=r;for(;++i[a]===e[a];){if(0===a)return n?o.map(n):o;i[a--]=0}}},t.csv=wc,t.csvFormat=rc,t.csvFormatBody=ic,t.csvFormatRow=ac,t.csvFormatRows=oc,t.csvFormatValue=uc,t.csvParse=nc,t.csvParseRows=ec,t.cubehelix=Tr,t.cumsum=function(t,n){var e=0,r=0;return Float64Array.from(t,void 0===n?t=>e+=+t||0:i=>e+=+n(i,r++,t)||0)},t.curveBasis=function(t){return new Rx(t)},t.curveBasisClosed=function(t){return new Fx(t)},t.curveBasisOpen=function(t){return new qx(t)},t.curveBumpX=tx,t.curveBumpY=nx,t.curveBundle=Ix,t.curveCardinal=Yx,t.curveCardinalClosed=jx,t.curveCardinalOpen=Xx,t.curveCatmullRom=Wx,t.curveCatmullRomClosed=Kx,t.curveCatmullRomOpen=Jx,t.curveLinear=Um,t.curveLinearClosed=function(t){return new tw(t)},t.curveMonotoneX=function(t){return new ow(t)},t.curveMonotoneY=function(t){return new aw(t)},t.curveNatural=function(t){return new cw(t)},t.curveStep=function(t){return new sw(t,.5)},t.curveStepAfter=function(t){return new sw(t,1)},t.curveStepBefore=function(t){return new sw(t,0)},t.descending=e,t.deviation=w,t.difference=function(t,...n){t=new InternSet(t);for(const e of n)for(const n of e)t.delete(n);return t},t.disjoint=function(t,n){const e=n[Symbol.iterator](),r=new InternSet;for(const n of t){if(r.has(n))return!1;let t,i;for(;({value:t,done:i}=e.next())&&!i;){if(Object.is(n,t))return!1;r.add(t)}}return!0},t.dispatch=$t,t.drag=function(){var t,n,e,r,i=se,o=le,a=he,u=de,c={},f=$t("start","drag","end"),s=0,l=0;function h(t){t.on("mousedown.drag",d).filter(u).on("touchstart.drag",y).on("touchmove.drag",v,ee).on("touchend.drag touchcancel.drag",_).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(a,u){if(!r&&i.call(this,a,u)){var c=b(this,o.call(this,a,u),a,u,"mouse");c&&(Zn(a.view).on("mousemove.drag",p,re).on("mouseup.drag",g,re),ae(a.view),ie(a),e=!1,t=a.clientX,n=a.clientY,c("start",a))}}function p(r){if(oe(r),!e){var i=r.clientX-t,o=r.clientY-n;e=i*i+o*o>l}c.mouse("drag",r)}function g(t){Zn(t.view).on("mousemove.drag mouseup.drag",null),ue(t.view,e),oe(t),c.mouse("end",t)}function y(t,n){if(i.call(this,t,n)){var e,r,a=t.changedTouches,u=o.call(this,t,n),c=a.length;for(e=0;e+t,t.easePoly=wo,t.easePolyIn=mo,t.easePolyInOut=wo,t.easePolyOut=xo,t.easeQuad=_o,t.easeQuadIn=function(t){return t*t},t.easeQuadInOut=_o,t.easeQuadOut=function(t){return t*(2-t)},t.easeSin=Ao,t.easeSinIn=function(t){return 1==+t?1:1-Math.cos(t*To)},t.easeSinInOut=Ao,t.easeSinOut=function(t){return Math.sin(t*To)},t.every=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");let e=-1;for(const r of t)if(!n(r,++e,t))return!1;return!0},t.extent=M,t.fcumsum=function(t,n){const e=new T;let r=-1;return Float64Array.from(t,void 0===n?t=>e.add(+t||0):i=>e.add(+n(i,++r,t)||0))},t.filter=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");const e=[];let r=-1;for(const i of t)n(i,++r,t)&&e.push(i);return e},t.flatGroup=function(t,...n){return z(P(t,...n),n)},t.flatRollup=function(t,n,...e){return z(D(t,n,...e),e)},t.forceCenter=function(t,n){var e,r=1;function i(){var i,o,a=e.length,u=0,c=0;for(i=0;if+p||os+p||ac.index){var g=f-u.x-u.vx,y=s-u.y-u.vy,v=g*g+y*y;vt.r&&(t.r=t[n].r)}function c(){if(n){var r,i,o=n.length;for(e=new Array(o),r=0;r[u(t,n,r),t])));for(a=0,i=new Array(f);a=u)){(t.data!==n||t.next)&&(0===l&&(p+=(l=Uc(e))*l),0===h&&(p+=(h=Uc(e))*h),p(t=(Lc*t+jc)%Hc)/Hc}();function l(){h(),f.call("tick",n),e1?(null==e?u.delete(t):u.set(t,p(e)),n):u.get(t)},find:function(n,e,r){var i,o,a,u,c,f=0,s=t.length;for(null==r?r=1/0:r*=r,f=0;f1?(f.on(t,e),n):f.on(t)}}},t.forceX=function(t){var n,e,r,i=qc(.1);function o(t){for(var i,o=0,a=n.length;o=.12&&i<.234&&r>=-.425&&r<-.214?u:i>=.166&&i<.234&&r>=-.214&&r<-.115?c:a).invert(t)},s.stream=function(e){return t&&n===e?t:(r=[a.stream(n=e),u.stream(e),c.stream(e)],i=r.length,t={point:function(t,n){for(var e=-1;++ejs(r[0],r[1])&&(r[1]=i[1]),js(i[0],r[1])>js(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(u=js(r[1],i[0]))>a&&(a=u,Wf=i[0],Kf=r[1])}return is=os=null,Wf===1/0||Zf===1/0?[[NaN,NaN],[NaN,NaN]]:[[Wf,Zf],[Kf,Qf]]},t.geoCentroid=function(t){ms=xs=ws=Ms=Ts=As=Ss=Es=0,Ns=new T,ks=new T,Cs=new T,Lf(t,Gs);var n=+Ns,e=+ks,r=+Cs,i=Ef(n,e,r);return i=0))throw new RangeError(`invalid digits: ${t}`);i=n}return null===n&&(r=new ed(i)),a},a.projection(t).digits(i).context(n)},t.geoProjection=yd,t.geoProjectionMutator=vd,t.geoRotation=ll,t.geoStereographic=function(){return yd(Bd).scale(250).clipAngle(142)},t.geoStereographicRaw=Bd,t.geoStream=Lf,t.geoTransform=function(t){return{stream:id(t)}},t.geoTransverseMercator=function(){var t=Ed(Yd),n=t.center,e=t.rotate;return t.center=function(t){return arguments.length?n([-t[1],t[0]]):[(t=n())[1],-t[0]]},t.rotate=function(t){return arguments.length?e([t[0],t[1],t.length>2?t[2]+90:90]):[(t=e())[0],t[1],t[2]-90]},e([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=Yd,t.gray=function(t,n){return new ur(t,0,0,null==n?1:n)},t.greatest=ot,t.greatestIndex=function(t,e=n){if(1===e.length)return tt(t,e);let r,i=-1,o=-1;for(const n of t)++o,(i<0?0===e(n,n):e(n,r)>0)&&(r=n,i=o);return i},t.group=C,t.groupSort=function(t,e,r){return(2!==e.length?U($(t,e,r),(([t,e],[r,i])=>n(e,i)||n(t,r))):U(C(t,r),(([t,r],[i,o])=>e(r,o)||n(t,i)))).map((([t])=>t))},t.groups=P,t.hcl=dr,t.hierarchy=Gd,t.histogram=Q,t.hsl=He,t.html=Ec,t.image=function(t,n){return new Promise((function(e,r){var i=new Image;for(var o in n)i[o]=n[o];i.onerror=r,i.onload=function(){e(i)},i.src=t}))},t.index=function(t,...n){return F(t,k,R,n)},t.indexes=function(t,...n){return F(t,Array.from,R,n)},t.interpolate=Gr,t.interpolateArray=function(t,n){return(Ir(n)?Ur:Or)(t,n)},t.interpolateBasis=Er,t.interpolateBasisClosed=Nr,t.interpolateBlues=Xb,t.interpolateBrBG=ib,t.interpolateBuGn=wb,t.interpolateBuPu=Tb,t.interpolateCividis=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-t*(35.34-t*(2381.73-t*(6402.7-t*(7024.72-2710.57*t)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+t*(170.73+t*(52.82-t*(131.46-t*(176.58-67.37*t)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+t*(442.36-t*(2482.43-t*(6167.24-t*(6614.94-2475.67*t)))))))+")"},t.interpolateCool=om,t.interpolateCubehelix=li,t.interpolateCubehelixDefault=rm,t.interpolateCubehelixLong=hi,t.interpolateDate=Br,t.interpolateDiscrete=function(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}},t.interpolateGnBu=Sb,t.interpolateGreens=Vb,t.interpolateGreys=Zb,t.interpolateHcl=ci,t.interpolateHclLong=fi,t.interpolateHsl=oi,t.interpolateHslLong=ai,t.interpolateHue=function(t,n){var e=Pr(+t,+n);return function(t){var n=e(t);return n-360*Math.floor(n/360)}},t.interpolateInferno=dm,t.interpolateLab=function(t,n){var e=$r((t=ar(t)).l,(n=ar(n)).l),r=$r(t.a,n.a),i=$r(t.b,n.b),o=$r(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=r(n),t.b=i(n),t.opacity=o(n),t+""}},t.interpolateMagma=hm,t.interpolateNumber=Yr,t.interpolateNumberArray=Ur,t.interpolateObject=Lr,t.interpolateOrRd=Nb,t.interpolateOranges=em,t.interpolatePRGn=ab,t.interpolatePiYG=cb,t.interpolatePlasma=pm,t.interpolatePuBu=zb,t.interpolatePuBuGn=Cb,t.interpolatePuOr=sb,t.interpolatePuRd=Db,t.interpolatePurples=Qb,t.interpolateRainbow=function(t){(t<0||t>1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return am.h=360*t-100,am.s=1.5-1.5*n,am.l=.8-.9*n,am+""},t.interpolateRdBu=hb,t.interpolateRdGy=pb,t.interpolateRdPu=Fb,t.interpolateRdYlBu=yb,t.interpolateRdYlGn=_b,t.interpolateReds=tm,t.interpolateRgb=Dr,t.interpolateRgbBasis=Fr,t.interpolateRgbBasisClosed=qr,t.interpolateRound=Vr,t.interpolateSinebow=function(t){var n;return t=(.5-t)*Math.PI,um.r=255*(n=Math.sin(t))*n,um.g=255*(n=Math.sin(t+cm))*n,um.b=255*(n=Math.sin(t+fm))*n,um+""},t.interpolateSpectral=mb,t.interpolateString=Xr,t.interpolateTransformCss=ti,t.interpolateTransformSvg=ni,t.interpolateTurbo=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"},t.interpolateViridis=lm,t.interpolateWarm=im,t.interpolateYlGn=Ob,t.interpolateYlGnBu=Ub,t.interpolateYlOrBr=Yb,t.interpolateYlOrRd=jb,t.interpolateZoom=ri,t.interrupt=Gi,t.intersection=function(t,...n){t=new InternSet(t),n=n.map(vt);t:for(const e of t)for(const r of n)if(!r.has(e)){t.delete(e);continue t}return t},t.interval=function(t,n,e){var r=new Ei,i=n;return null==n?(r.restart(t,n,e),r):(r._restart=r.restart,r.restart=function(t,n,e){n=+n,e=null==e?Ai():+e,r._restart((function o(a){a+=i,r._restart(o,i+=n,e),t(a)}),n,e)},r.restart(t,n,e),r)},t.isoFormat=D_,t.isoParse=F_,t.json=function(t,n){return fetch(t,n).then(Tc)},t.lab=ar,t.lch=function(t,n,e,r){return 1===arguments.length?hr(t):new pr(e,n,t,null==r?1:r)},t.least=function(t,e=n){let r,i=!1;if(1===e.length){let o;for(const a of t){const t=e(a);(i?n(t,o)<0:0===n(t,t))&&(r=a,o=t,i=!0)}}else for(const n of t)(i?e(n,r)<0:0===e(n,n))&&(r=n,i=!0);return r},t.leastIndex=ht,t.line=Bm,t.lineRadial=Wm,t.link=ox,t.linkHorizontal=function(){return ox(tx)},t.linkRadial=function(){const t=ox(ex);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t},t.linkVertical=function(){return ox(nx)},t.local=Qn,t.map=function(t,n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");if("function"!=typeof n)throw new TypeError("mapper is not a function");return Array.from(t,((e,r)=>n(e,r,t)))},t.matcher=Vt,t.max=J,t.maxIndex=tt,t.mean=function(t,n){let e=0,r=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(++e,r+=n);else{let i=-1;for(let o of t)null!=(o=n(o,++i,t))&&(o=+o)>=o&&(++e,r+=o)}if(e)return r/e},t.median=function(t,n){return at(t,.5,n)},t.medianIndex=function(t,n){return ct(t,.5,n)},t.merge=ft,t.min=nt,t.minIndex=et,t.mode=function(t,n){const e=new InternMap;if(void 0===n)for(let n of t)null!=n&&n>=n&&e.set(n,(e.get(n)||0)+1);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&i>=i&&e.set(i,(e.get(i)||0)+1)}let r,i=0;for(const[t,n]of e)n>i&&(i=n,r=t);return r},t.namespace=It,t.namespaces=Ut,t.nice=Z,t.now=Ai,t.pack=function(){var t=null,n=1,e=1,r=np;function i(i){const o=ap();return i.x=n/2,i.y=e/2,t?i.eachBefore(xp(t)).eachAfter(wp(r,.5,o)).eachBefore(Mp(1)):i.eachBefore(xp(mp)).eachAfter(wp(np,1,o)).eachAfter(wp(r,i.r/Math.min(n,e),o)).eachBefore(Mp(Math.min(n,e)/(2*i.r))),i}return i.radius=function(n){return arguments.length?(t=Jd(n),i):t},i.size=function(t){return arguments.length?(n=+t[0],e=+t[1],i):[n,e]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:ep(+t),i):r},i},t.packEnclose=function(t){return up(t,ap())},t.packSiblings=function(t){return bp(t,ap()),t},t.pairs=function(t,n=st){const e=[];let r,i=!1;for(const o of t)i&&e.push(n(r,o)),r=o,i=!0;return e},t.partition=function(){var t=1,n=1,e=0,r=!1;function i(i){var o=i.height+1;return i.x0=i.y0=e,i.x1=t,i.y1=n/o,i.eachBefore(function(t,n){return function(r){r.children&&Ap(r,r.x0,t*(r.depth+1)/n,r.x1,t*(r.depth+2)/n);var i=r.x0,o=r.y0,a=r.x1-e,u=r.y1-e;a0&&(d+=l);for(null!=n?p.sort((function(t,e){return n(g[t],g[e])})):null!=e&&p.sort((function(t,n){return e(a[t],a[n])})),u=0,f=d?(v-h*b)/d:0;u0?l*f:0)+b,g[c]={data:a[c],index:u,value:l,startAngle:y,endAngle:s,padAngle:_};return g}return a.value=function(n){return arguments.length?(t="function"==typeof n?n:gm(+n),a):t},a.sortValues=function(t){return arguments.length?(n=t,e=null,a):n},a.sort=function(t){return arguments.length?(e=t,n=null,a):e},a.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:gm(+t),a):r},a.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:gm(+t),a):i},a.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:gm(+t),a):o},a},t.piecewise=di,t.pointRadial=Km,t.pointer=ne,t.pointers=function(t,n){return t.target&&(t=te(t),void 0===n&&(n=t.currentTarget),t=t.touches||[t]),Array.from(t,(t=>ne(t,n)))},t.polygonArea=function(t){for(var n,e=-1,r=t.length,i=t[r-1],o=0;++eu!=f>u&&a<(c-e)*(u-r)/(f-r)+e&&(s=!s),c=e,f=r;return s},t.polygonHull=function(t){if((e=t.length)<3)return null;var n,e,r=new Array(e),i=new Array(e);for(n=0;n=0;--n)f.push(t[r[o[n]][2]]);for(n=+u;n(n=1664525*n+1013904223|0,lg*(n>>>0))},t.randomLogNormal=Kp,t.randomLogistic=fg,t.randomNormal=Zp,t.randomPareto=ng,t.randomPoisson=sg,t.randomUniform=Vp,t.randomWeibull=ug,t.range=lt,t.rank=function(t,e=n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");let r=Array.from(t);const i=new Float64Array(r.length);2!==e.length&&(r=r.map(e),e=n);const o=(t,n)=>e(r[t],r[n]);let a,u;return(t=Uint32Array.from(r,((t,n)=>n))).sort(e===n?(t,n)=>O(r[t],r[n]):I(o)),t.forEach(((t,n)=>{const e=o(t,void 0===a?t:a);e>=0?((void 0===a||e>0)&&(a=t,u=n),i[t]=u):i[t]=NaN})),i},t.reduce=function(t,n,e){if("function"!=typeof n)throw new TypeError("reducer is not a function");const r=t[Symbol.iterator]();let i,o,a=-1;if(arguments.length<3){if(({done:i,value:e}=r.next()),i)return;++a}for(;({done:i,value:o}=r.next()),!i;)e=n(e,o,++a,t);return e},t.reverse=function(t){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");return Array.from(t).reverse()},t.rgb=Fe,t.ribbon=function(){return Wa()},t.ribbonArrow=function(){return Wa(Va)},t.rollup=$,t.rollups=D,t.scaleBand=yg,t.scaleDiverging=function t(){var n=Ng(L_()(mg));return n.copy=function(){return B_(n,t())},dg.apply(n,arguments)},t.scaleDivergingLog=function t(){var n=Fg(L_()).domain([.1,1,10]);return n.copy=function(){return B_(n,t()).base(n.base())},dg.apply(n,arguments)},t.scaleDivergingPow=j_,t.scaleDivergingSqrt=function(){return j_.apply(null,arguments).exponent(.5)},t.scaleDivergingSymlog=function t(){var n=Ig(L_());return n.copy=function(){return B_(n,t()).constant(n.constant())},dg.apply(n,arguments)},t.scaleIdentity=function t(n){var e;function r(t){return null==t||isNaN(t=+t)?e:t}return r.invert=r,r.domain=r.range=function(t){return arguments.length?(n=Array.from(t,_g),r):n.slice()},r.unknown=function(t){return arguments.length?(e=t,r):e},r.copy=function(){return t(n).unknown(e)},n=arguments.length?Array.from(n,_g):[0,1],Ng(r)},t.scaleImplicit=pg,t.scaleLinear=function t(){var n=Sg();return n.copy=function(){return Tg(n,t())},hg.apply(n,arguments),Ng(n)},t.scaleLog=function t(){const n=Fg(Ag()).domain([1,10]);return n.copy=()=>Tg(n,t()).base(n.base()),hg.apply(n,arguments),n},t.scaleOrdinal=gg,t.scalePoint=function(){return vg(yg.apply(null,arguments).paddingInner(1))},t.scalePow=jg,t.scaleQuantile=function t(){var e,r=[],i=[],o=[];function a(){var t=0,n=Math.max(1,i.length);for(o=new Array(n-1);++t0?o[n-1]:r[0],n=i?[o[i-1],r]:[o[n-1],o[n]]},u.unknown=function(t){return arguments.length?(n=t,u):u},u.thresholds=function(){return o.slice()},u.copy=function(){return t().domain([e,r]).range(a).unknown(n)},hg.apply(Ng(u),arguments)},t.scaleRadial=function t(){var n,e=Sg(),r=[0,1],i=!1;function o(t){var r=function(t){return Math.sign(t)*Math.sqrt(Math.abs(t))}(e(t));return isNaN(r)?n:i?Math.round(r):r}return o.invert=function(t){return e.invert(Hg(t))},o.domain=function(t){return arguments.length?(e.domain(t),o):e.domain()},o.range=function(t){return arguments.length?(e.range((r=Array.from(t,_g)).map(Hg)),o):r.slice()},o.rangeRound=function(t){return o.range(t).round(!0)},o.round=function(t){return arguments.length?(i=!!t,o):i},o.clamp=function(t){return arguments.length?(e.clamp(t),o):e.clamp()},o.unknown=function(t){return arguments.length?(n=t,o):n},o.copy=function(){return t(e.domain(),r).round(i).clamp(e.clamp()).unknown(n)},hg.apply(o,arguments),Ng(o)},t.scaleSequential=function t(){var n=Ng(O_()(mg));return n.copy=function(){return B_(n,t())},dg.apply(n,arguments)},t.scaleSequentialLog=function t(){var n=Fg(O_()).domain([1,10]);return n.copy=function(){return B_(n,t()).base(n.base())},dg.apply(n,arguments)},t.scaleSequentialPow=Y_,t.scaleSequentialQuantile=function t(){var e=[],r=mg;function i(t){if(null!=t&&!isNaN(t=+t))return r((s(e,t,1)-1)/(e.length-1))}return i.domain=function(t){if(!arguments.length)return e.slice();e=[];for(let n of t)null==n||isNaN(n=+n)||e.push(n);return e.sort(n),i},i.interpolator=function(t){return arguments.length?(r=t,i):r},i.range=function(){return e.map(((t,n)=>r(n/(e.length-1))))},i.quantiles=function(t){return Array.from({length:t+1},((n,r)=>at(e,r/t)))},i.copy=function(){return t(r).domain(e)},dg.apply(i,arguments)},t.scaleSequentialSqrt=function(){return Y_.apply(null,arguments).exponent(.5)},t.scaleSequentialSymlog=function t(){var n=Ig(O_());return n.copy=function(){return B_(n,t()).constant(n.constant())},dg.apply(n,arguments)},t.scaleSqrt=function(){return jg.apply(null,arguments).exponent(.5)},t.scaleSymlog=function t(){var n=Ig(Ag());return n.copy=function(){return Tg(n,t()).constant(n.constant())},hg.apply(n,arguments)},t.scaleThreshold=function t(){var n,e=[.5],r=[0,1],i=1;function o(t){return null!=t&&t<=t?r[s(e,t,0,i)]:n}return o.domain=function(t){return arguments.length?(e=Array.from(t),i=Math.min(e.length,r.length-1),o):e.slice()},o.range=function(t){return arguments.length?(r=Array.from(t),i=Math.min(e.length,r.length-1),o):r.slice()},o.invertExtent=function(t){var n=r.indexOf(t);return[e[n-1],e[n]]},o.unknown=function(t){return arguments.length?(n=t,o):n},o.copy=function(){return t().domain(e).range(r).unknown(n)},hg.apply(o,arguments)},t.scaleTime=function(){return hg.apply(I_(uv,cv,tv,Zy,xy,py,sy,ay,iy,t.timeFormat).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},t.scaleUtc=function(){return hg.apply(I_(ov,av,ev,Qy,Fy,yy,hy,cy,iy,t.utcFormat).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},t.scan=function(t,n){const e=ht(t,n);return e<0?void 0:e},t.schemeAccent=G_,t.schemeBlues=Hb,t.schemeBrBG=rb,t.schemeBuGn=xb,t.schemeBuPu=Mb,t.schemeCategory10=X_,t.schemeDark2=V_,t.schemeGnBu=Ab,t.schemeGreens=Gb,t.schemeGreys=Wb,t.schemeOrRd=Eb,t.schemeOranges=nm,t.schemePRGn=ob,t.schemePaired=W_,t.schemePastel1=Z_,t.schemePastel2=K_,t.schemePiYG=ub,t.schemePuBu=Pb,t.schemePuBuGn=kb,t.schemePuOr=fb,t.schemePuRd=$b,t.schemePurples=Kb,t.schemeRdBu=lb,t.schemeRdGy=db,t.schemeRdPu=Rb,t.schemeRdYlBu=gb,t.schemeRdYlGn=vb,t.schemeReds=Jb,t.schemeSet1=Q_,t.schemeSet2=J_,t.schemeSet3=tb,t.schemeSpectral=bb,t.schemeTableau10=nb,t.schemeYlGn=Ib,t.schemeYlGnBu=qb,t.schemeYlOrBr=Bb,t.schemeYlOrRd=Lb,t.select=Zn,t.selectAll=function(t){return"string"==typeof t?new Vn([document.querySelectorAll(t)],[document.documentElement]):new Vn([Ht(t)],Gn)},t.selection=Wn,t.selector=jt,t.selectorAll=Gt,t.shuffle=dt,t.shuffler=pt,t.some=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");let e=-1;for(const r of t)if(n(r,++e,t))return!0;return!1},t.sort=U,t.stack=function(){var t=gm([]),n=hw,e=lw,r=dw;function i(i){var o,a,u=Array.from(t.apply(this,arguments),pw),c=u.length,f=-1;for(const t of i)for(o=0,++f;o0)for(var e,r,i,o,a,u,c=0,f=t[n[0]].length;c0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=a,r[0]=a+=i):(r[0]=0,r[1]=i)},t.stackOffsetExpand=function(t,n){if((r=t.length)>0){for(var e,r,i,o=0,a=t[0].length;o0){for(var e,r=0,i=t[n[0]],o=i.length;r0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,a=1;afunction(t){t=`${t}`;let n=t.length;zp(t,n-1)&&!zp(t,n-2)&&(t=t.slice(0,-1));return"/"===t[0]?t:`/${t}`}(t(n,e,r)))),e=n.map(Pp),i=new Set(n).add("");for(const t of e)i.has(t)||(i.add(t),n.push(t),e.push(Pp(t)),h.push(Np));d=(t,e)=>n[e],p=(t,n)=>e[n]}for(a=0,i=h.length;a=0&&(f=h[t]).data===Np;--t)f.data=null}if(u.parent=Sp,u.eachBefore((function(t){t.depth=t.parent.depth+1,--i})).eachBefore(Kd),u.parent=null,i>0)throw new Error("cycle");return u}return r.id=function(t){return arguments.length?(n=Jd(t),r):n},r.parentId=function(t){return arguments.length?(e=Jd(t),r):e},r.path=function(n){return arguments.length?(t=Jd(n),r):t},r},t.style=_n,t.subset=function(t,n){return _t(n,t)},t.sum=function(t,n){let e=0;if(void 0===n)for(let n of t)(n=+n)&&(e+=n);else{let r=-1;for(let i of t)(i=+n(i,++r,t))&&(e+=i)}return e},t.superset=_t,t.svg=Nc,t.symbol=function(t,n){let e=null,r=Nm(i);function i(){let i;if(e||(e=i=r()),t.apply(this,arguments).draw(e,+n.apply(this,arguments)),i)return e=null,i+""||null}return t="function"==typeof t?t:gm(t||cx),n="function"==typeof n?n:gm(void 0===n?64:+n),i.type=function(n){return arguments.length?(t="function"==typeof n?n:gm(n),i):t},i.size=function(t){return arguments.length?(n="function"==typeof t?t:gm(+t),i):n},i.context=function(t){return arguments.length?(e=null==t?null:t,i):e},i},t.symbolAsterisk=ux,t.symbolCircle=cx,t.symbolCross=fx,t.symbolDiamond=hx,t.symbolDiamond2=dx,t.symbolPlus=px,t.symbolSquare=gx,t.symbolSquare2=yx,t.symbolStar=mx,t.symbolTimes=Cx,t.symbolTriangle=wx,t.symbolTriangle2=Tx,t.symbolWye=kx,t.symbolX=Cx,t.symbols=Px,t.symbolsFill=Px,t.symbolsStroke=zx,t.text=mc,t.thresholdFreedmanDiaconis=function(t,n,e){const r=v(t),i=at(t,.75)-at(t,.25);return r&&i?Math.ceil((e-n)/(2*i*Math.pow(r,-1/3))):1},t.thresholdScott=function(t,n,e){const r=v(t),i=w(t);return r&&i?Math.ceil((e-n)*Math.cbrt(r)/(3.49*i)):1},t.thresholdSturges=K,t.tickFormat=Eg,t.tickIncrement=V,t.tickStep=W,t.ticks=G,t.timeDay=py,t.timeDays=gy,t.timeFormatDefaultLocale=P_,t.timeFormatLocale=hv,t.timeFriday=Sy,t.timeFridays=$y,t.timeHour=sy,t.timeHours=ly,t.timeInterval=Vg,t.timeMillisecond=Wg,t.timeMilliseconds=Zg,t.timeMinute=ay,t.timeMinutes=uy,t.timeMonday=wy,t.timeMondays=ky,t.timeMonth=Zy,t.timeMonths=Ky,t.timeSaturday=Ey,t.timeSaturdays=Dy,t.timeSecond=iy,t.timeSeconds=oy,t.timeSunday=xy,t.timeSundays=Ny,t.timeThursday=Ay,t.timeThursdays=zy,t.timeTickInterval=cv,t.timeTicks=uv,t.timeTuesday=My,t.timeTuesdays=Cy,t.timeWednesday=Ty,t.timeWednesdays=Py,t.timeWeek=xy,t.timeWeeks=Ny,t.timeYear=tv,t.timeYears=nv,t.timeout=$i,t.timer=Ni,t.timerFlush=ki,t.transition=go,t.transpose=gt,t.tree=function(){var t=$p,n=1,e=1,r=null;function i(i){var c=function(t){for(var n,e,r,i,o,a=new Up(t,0),u=[a];n=u.pop();)if(r=n._.children)for(n.children=new Array(o=r.length),i=o-1;i>=0;--i)u.push(e=n.children[i]=new Up(r[i],i)),e.parent=n;return(a.parent=new Up(null,0)).children=[a],a}(i);if(c.eachAfter(o),c.parent.m=-c.z,c.eachBefore(a),r)i.eachBefore(u);else{var f=i,s=i,l=i;i.eachBefore((function(t){t.xs.x&&(s=t),t.depth>l.depth&&(l=t)}));var h=f===s?1:t(f,s)/2,d=h-f.x,p=n/(s.x+h+d),g=e/(l.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*g}))}return i}function o(n){var e=n.children,r=n.parent.children,i=n.i?r[n.i-1]:null;if(e){!function(t){for(var n,e=0,r=0,i=t.children,o=i.length;--o>=0;)(n=i[o]).z+=e,n.m+=e,e+=n.s+(r+=n.c)}(n);var o=(e[0].z+e[e.length-1].z)/2;i?(n.z=i.z+t(n._,i._),n.m=n.z-o):n.z=o}else i&&(n.z=i.z+t(n._,i._));n.parent.A=function(n,e,r){if(e){for(var i,o=n,a=n,u=e,c=o.parent.children[0],f=o.m,s=a.m,l=u.m,h=c.m;u=Rp(u),o=Dp(o),u&&o;)c=Dp(c),(a=Rp(a)).a=n,(i=u.z+l-o.z-f+t(u._,o._))>0&&(Fp(qp(u,n,r),n,i),f+=i,s+=i),l+=u.m,f+=o.m,h+=c.m,s+=a.m;u&&!Rp(a)&&(a.t=u,a.m+=l-s),o&&!Dp(c)&&(c.t=o,c.m+=f-h,r=n)}return r}(n,i,n.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function u(t){t.x*=n,t.y=t.depth*e}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.treemap=function(){var t=Yp,n=!1,e=1,r=1,i=[0],o=np,a=np,u=np,c=np,f=np;function s(t){return t.x0=t.y0=0,t.x1=e,t.y1=r,t.eachBefore(l),i=[0],n&&t.eachBefore(Tp),t}function l(n){var e=i[n.depth],r=n.x0+e,s=n.y0+e,l=n.x1-e,h=n.y1-e;l=e-1){var s=u[n];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=c)}var l=f[n],h=r/2+l,d=n+1,p=e-1;for(;d>>1;f[g]c-o){var _=r?(i*v+a*y)/r:a;t(n,d,y,i,o,_,c),t(d,e,v,_,o,a,c)}else{var b=r?(o*v+c*y)/r:c;t(n,d,y,i,o,a,b),t(d,e,v,i,b,a,c)}}(0,c,t.value,n,e,r,i)},t.treemapDice=Ap,t.treemapResquarify=Lp,t.treemapSlice=Ip,t.treemapSliceDice=function(t,n,e,r,i){(1&t.depth?Ip:Ap)(t,n,e,r,i)},t.treemapSquarify=Yp,t.tsv=Mc,t.tsvFormat=lc,t.tsvFormatBody=hc,t.tsvFormatRow=pc,t.tsvFormatRows=dc,t.tsvFormatValue=gc,t.tsvParse=fc,t.tsvParseRows=sc,t.union=function(...t){const n=new InternSet;for(const e of t)for(const t of e)n.add(t);return n},t.unixDay=_y,t.unixDays=by,t.utcDay=yy,t.utcDays=vy,t.utcFriday=By,t.utcFridays=Vy,t.utcHour=hy,t.utcHours=dy,t.utcMillisecond=Wg,t.utcMilliseconds=Zg,t.utcMinute=cy,t.utcMinutes=fy,t.utcMonday=qy,t.utcMondays=jy,t.utcMonth=Qy,t.utcMonths=Jy,t.utcSaturday=Yy,t.utcSaturdays=Wy,t.utcSecond=iy,t.utcSeconds=oy,t.utcSunday=Fy,t.utcSundays=Ly,t.utcThursday=Oy,t.utcThursdays=Gy,t.utcTickInterval=av,t.utcTicks=ov,t.utcTuesday=Uy,t.utcTuesdays=Hy,t.utcWednesday=Iy,t.utcWednesdays=Xy,t.utcWeek=Fy,t.utcWeeks=Ly,t.utcYear=ev,t.utcYears=rv,t.variance=x,t.version="7.8.5",t.window=pn,t.xml=Sc,t.zip=function(){return gt(arguments)},t.zoom=function(){var t,n,e,r=Sw,i=Ew,o=Pw,a=kw,u=Cw,c=[0,1/0],f=[[-1/0,-1/0],[1/0,1/0]],s=250,l=ri,h=$t("start","zoom","end"),d=500,p=150,g=0,y=10;function v(t){t.property("__zoom",Nw).on("wheel.zoom",T,{passive:!1}).on("mousedown.zoom",A).on("dblclick.zoom",S).filter(u).on("touchstart.zoom",E).on("touchmove.zoom",N).on("touchend.zoom touchcancel.zoom",k).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function _(t,n){return(n=Math.max(c[0],Math.min(c[1],n)))===t.k?t:new xw(n,t.x,t.y)}function b(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new xw(t.k,r,i)}function m(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function x(t,n,e,r){t.on("start.zoom",(function(){w(this,arguments).event(r).start()})).on("interrupt.zoom end.zoom",(function(){w(this,arguments).event(r).end()})).tween("zoom",(function(){var t=this,o=arguments,a=w(t,o).event(r),u=i.apply(t,o),c=null==e?m(u):"function"==typeof e?e.apply(t,o):e,f=Math.max(u[1][0]-u[0][0],u[1][1]-u[0][1]),s=t.__zoom,h="function"==typeof n?n.apply(t,o):n,d=l(s.invert(c).concat(f/s.k),h.invert(c).concat(f/h.k));return function(t){if(1===t)t=h;else{var n=d(t),e=f/n[2];t=new xw(e,c[0]-n[0]*e,c[1]-n[1]*e)}a.zoom(null,t)}}))}function w(t,n,e){return!e&&t.__zooming||new M(t,n)}function M(t,n){this.that=t,this.args=n,this.active=0,this.sourceEvent=null,this.extent=i.apply(t,n),this.taps=0}function T(t,...n){if(r.apply(this,arguments)){var e=w(this,n).event(t),i=this.__zoom,u=Math.max(c[0],Math.min(c[1],i.k*Math.pow(2,a.apply(this,arguments)))),s=ne(t);if(e.wheel)e.mouse[0][0]===s[0]&&e.mouse[0][1]===s[1]||(e.mouse[1]=i.invert(e.mouse[0]=s)),clearTimeout(e.wheel);else{if(i.k===u)return;e.mouse=[s,i.invert(s)],Gi(this),e.start()}Aw(t),e.wheel=setTimeout((function(){e.wheel=null,e.end()}),p),e.zoom("mouse",o(b(_(i,u),e.mouse[0],e.mouse[1]),e.extent,f))}}function A(t,...n){if(!e&&r.apply(this,arguments)){var i=t.currentTarget,a=w(this,n,!0).event(t),u=Zn(t.view).on("mousemove.zoom",(function(t){if(Aw(t),!a.moved){var n=t.clientX-s,e=t.clientY-l;a.moved=n*n+e*e>g}a.event(t).zoom("mouse",o(b(a.that.__zoom,a.mouse[0]=ne(t,i),a.mouse[1]),a.extent,f))}),!0).on("mouseup.zoom",(function(t){u.on("mousemove.zoom mouseup.zoom",null),ue(t.view,a.moved),Aw(t),a.event(t).end()}),!0),c=ne(t,i),s=t.clientX,l=t.clientY;ae(t.view),Tw(t),a.mouse=[c,this.__zoom.invert(c)],Gi(this),a.start()}}function S(t,...n){if(r.apply(this,arguments)){var e=this.__zoom,a=ne(t.changedTouches?t.changedTouches[0]:t,this),u=e.invert(a),c=e.k*(t.shiftKey?.5:2),l=o(b(_(e,c),a,u),i.apply(this,n),f);Aw(t),s>0?Zn(this).transition().duration(s).call(x,l,a,t):Zn(this).call(v.transform,l,a,t)}}function E(e,...i){if(r.apply(this,arguments)){var o,a,u,c,f=e.touches,s=f.length,l=w(this,i,e.changedTouches.length===s).event(e);for(Tw(e),a=0;a()=>(e||n((e={exports:{}}).exports,e),e.exports),uC=(n,e)=>{for(var t in e)$o(n,t,{get:e[t],enumerable:!0})},qf=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of sC(e))!cC.call(n,i)&&i!==t&&$o(n,i,{get:()=>e[i],enumerable:!(r=oC(e,i))||r.enumerable});return n};var fe=(n,e,t)=>(t=n!=null?iC(aC(n)):{},qf(e||!n||!n.__esModule?$o(t,"default",{value:n,enumerable:!0}):t,n)),dC=n=>qf($o({},"__esModule",{value:!0}),n);var Kt=O(Ye=>{"use strict";Object.defineProperty(Ye,"__esModule",{value:!0});Ye.asPromise=Ye.thenable=Ye.typedArray=Ye.stringArray=Ye.array=Ye.func=Ye.error=Ye.number=Ye.string=Ye.boolean=void 0;function lC(n){return n===!0||n===!1}Ye.boolean=lC;function If(n){return typeof n=="string"||n instanceof String}Ye.string=If;function fC(n){return typeof n=="number"||n instanceof Number}Ye.number=fC;function pC(n){return n instanceof Error}Ye.error=pC;function Of(n){return typeof n=="function"}Ye.func=Of;function Ff(n){return Array.isArray(n)}Ye.array=Ff;function hC(n){return Ff(n)&&n.every(e=>If(e))}Ye.stringArray=hC;function gC(n,e){return Array.isArray(n)&&n.every(e)}Ye.typedArray=gC;function Lf(n){return n&&Of(n.then)}Ye.thenable=Lf;function mC(n){return n instanceof Promise?n:Lf(n)?new Promise((e,t)=>{n.then(r=>e(r),r=>t(r))}):Promise.resolve(n)}Ye.asPromise=mC});var Yr=O(Tt=>{"use strict";Object.defineProperty(Tt,"__esModule",{value:!0});Tt.stringArray=Tt.array=Tt.func=Tt.error=Tt.number=Tt.string=Tt.boolean=void 0;function vC(n){return n===!0||n===!1}Tt.boolean=vC;function Nf(n){return typeof n=="string"||n instanceof String}Tt.string=Nf;function yC(n){return typeof n=="number"||n instanceof Number}Tt.number=yC;function CC(n){return n instanceof Error}Tt.error=CC;function wC(n){return typeof n=="function"}Tt.func=wC;function Mf(n){return Array.isArray(n)}Tt.array=Mf;function bC(n){return Mf(n)&&n.every(e=>Nf(e))}Tt.stringArray=bC});var nc=O(Y=>{"use strict";Object.defineProperty(Y,"__esModule",{value:!0});Y.Message=Y.NotificationType9=Y.NotificationType8=Y.NotificationType7=Y.NotificationType6=Y.NotificationType5=Y.NotificationType4=Y.NotificationType3=Y.NotificationType2=Y.NotificationType1=Y.NotificationType0=Y.NotificationType=Y.RequestType9=Y.RequestType8=Y.RequestType7=Y.RequestType6=Y.RequestType5=Y.RequestType4=Y.RequestType3=Y.RequestType2=Y.RequestType1=Y.RequestType=Y.RequestType0=Y.AbstractMessageSignature=Y.ParameterStructures=Y.ResponseError=Y.ErrorCodes=void 0;var Er=Yr(),Af;(function(n){n.ParseError=-32700,n.InvalidRequest=-32600,n.MethodNotFound=-32601,n.InvalidParams=-32602,n.InternalError=-32603,n.jsonrpcReservedErrorRangeStart=-32099,n.serverErrorStart=-32099,n.MessageWriteError=-32099,n.MessageReadError=-32098,n.PendingResponseRejected=-32097,n.ConnectionInactive=-32096,n.ServerNotInitialized=-32002,n.UnknownErrorCode=-32001,n.jsonrpcReservedErrorRangeEnd=-32e3,n.serverErrorEnd=-32e3})(Af=Y.ErrorCodes||(Y.ErrorCodes={}));var Oa=class n extends Error{constructor(e,t,r){super(t),this.code=Er.number(e)?e:Af.UnknownErrorCode,this.data=r,Object.setPrototypeOf(this,n.prototype)}toJson(){let e={code:this.code,message:this.message};return this.data!==void 0&&(e.data=this.data),e}};Y.ResponseError=Oa;var Vt=class n{constructor(e){this.kind=e}static is(e){return e===n.auto||e===n.byName||e===n.byPosition}toString(){return this.kind}};Y.ParameterStructures=Vt;Vt.auto=new Vt("auto");Vt.byPosition=new Vt("byPosition");Vt.byName=new Vt("byName");var je=class{constructor(e,t){this.method=e,this.numberOfParams=t}get parameterStructures(){return Vt.auto}};Y.AbstractMessageSignature=je;var Fa=class extends je{constructor(e){super(e,0)}};Y.RequestType0=Fa;var La=class extends je{constructor(e,t=Vt.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};Y.RequestType=La;var Na=class extends je{constructor(e,t=Vt.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};Y.RequestType1=Na;var Ma=class extends je{constructor(e){super(e,2)}};Y.RequestType2=Ma;var Aa=class extends je{constructor(e){super(e,3)}};Y.RequestType3=Aa;var ja=class extends je{constructor(e){super(e,4)}};Y.RequestType4=ja;var $a=class extends je{constructor(e){super(e,5)}};Y.RequestType5=$a;var Ua=class extends je{constructor(e){super(e,6)}};Y.RequestType6=Ua;var Ha=class extends je{constructor(e){super(e,7)}};Y.RequestType7=Ha;var Wa=class extends je{constructor(e){super(e,8)}};Y.RequestType8=Wa;var za=class extends je{constructor(e){super(e,9)}};Y.RequestType9=za;var Ka=class extends je{constructor(e,t=Vt.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};Y.NotificationType=Ka;var Va=class extends je{constructor(e){super(e,0)}};Y.NotificationType0=Va;var Ba=class extends je{constructor(e,t=Vt.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};Y.NotificationType1=Ba;var Ga=class extends je{constructor(e){super(e,2)}};Y.NotificationType2=Ga;var Xa=class extends je{constructor(e){super(e,3)}};Y.NotificationType3=Xa;var Ja=class extends je{constructor(e){super(e,4)}};Y.NotificationType4=Ja;var Qa=class extends je{constructor(e){super(e,5)}};Y.NotificationType5=Qa;var Ya=class extends je{constructor(e){super(e,6)}};Y.NotificationType6=Ya;var Za=class extends je{constructor(e){super(e,7)}};Y.NotificationType7=Za;var ec=class extends je{constructor(e){super(e,8)}};Y.NotificationType8=ec;var tc=class extends je{constructor(e){super(e,9)}};Y.NotificationType9=tc;var DC;(function(n){function e(i){let o=i;return o&&Er.string(o.method)&&(Er.string(o.id)||Er.number(o.id))}n.isRequest=e;function t(i){let o=i;return o&&Er.string(o.method)&&i.id===void 0}n.isNotification=t;function r(i){let o=i;return o&&(o.result!==void 0||!!o.error)&&(Er.string(o.id)||Er.number(o.id)||o.id===null)}n.isResponse=r})(DC=Y.Message||(Y.Message={}))});var ic=O(Vn=>{"use strict";var jf;Object.defineProperty(Vn,"__esModule",{value:!0});Vn.LRUCache=Vn.LinkedMap=Vn.Touch=void 0;var Ot;(function(n){n.None=0,n.First=1,n.AsOld=n.First,n.Last=2,n.AsNew=n.Last})(Ot=Vn.Touch||(Vn.Touch={}));var Uo=class{constructor(){this[jf]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){var e;return(e=this._head)==null?void 0:e.value}get last(){var e;return(e=this._tail)==null?void 0:e.value}has(e){return this._map.has(e)}get(e,t=Ot.None){let r=this._map.get(e);if(r)return t!==Ot.None&&this.touch(r,t),r.value}set(e,t,r=Ot.None){let i=this._map.get(e);if(i)i.value=t,r!==Ot.None&&this.touch(i,r);else{switch(i={key:e,value:t,next:void 0,previous:void 0},r){case Ot.None:this.addItemLast(i);break;case Ot.First:this.addItemFirst(i);break;case Ot.Last:this.addItemLast(i);break;default:this.addItemLast(i);break}this._map.set(e,i),this._size++}return this}delete(e){return!!this.remove(e)}remove(e){let t=this._map.get(e);if(t)return this._map.delete(e),this.removeItem(t),this._size--,t.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");let e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}forEach(e,t){let r=this._state,i=this._head;for(;i;){if(t?e.bind(t)(i.value,i.key,this):e(i.value,i.key,this),this._state!==r)throw new Error("LinkedMap got modified during iteration.");i=i.next}}keys(){let e=this._state,t=this._head,r={[Symbol.iterator]:()=>r,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(t){let i={value:t.key,done:!1};return t=t.next,i}else return{value:void 0,done:!0}}};return r}values(){let e=this._state,t=this._head,r={[Symbol.iterator]:()=>r,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(t){let i={value:t.value,done:!1};return t=t.next,i}else return{value:void 0,done:!0}}};return r}entries(){let e=this._state,t=this._head,r={[Symbol.iterator]:()=>r,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(t){let i={value:[t.key,t.value],done:!1};return t=t.next,i}else return{value:void 0,done:!0}}};return r}[(jf=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(e){if(e>=this.size)return;if(e===0){this.clear();return}let t=this._head,r=this.size;for(;t&&r>e;)this._map.delete(t.key),t=t.next,r--;this._head=t,this._size=r,t&&(t.previous=void 0),this._state++}addItemFirst(e){if(!this._head&&!this._tail)this._tail=e;else if(this._head)e.next=this._head,this._head.previous=e;else throw new Error("Invalid list");this._head=e,this._state++}addItemLast(e){if(!this._head&&!this._tail)this._head=e;else if(this._tail)e.previous=this._tail,this._tail.next=e;else throw new Error("Invalid list");this._tail=e,this._state++}removeItem(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw new Error("Invalid list");e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw new Error("Invalid list");e.previous.next=void 0,this._tail=e.previous}else{let t=e.next,r=e.previous;if(!t||!r)throw new Error("Invalid list");t.previous=r,r.next=t}e.next=void 0,e.previous=void 0,this._state++}touch(e,t){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(t!==Ot.First&&t!==Ot.Last)){if(t===Ot.First){if(e===this._head)return;let r=e.next,i=e.previous;e===this._tail?(i.next=void 0,this._tail=i):(r.previous=i,i.next=r),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(t===Ot.Last){if(e===this._tail)return;let r=e.next,i=e.previous;e===this._head?(r.previous=void 0,this._head=r):(r.previous=i,i.next=r),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}}toJSON(){let e=[];return this.forEach((t,r)=>{e.push([r,t])}),e}fromJSON(e){this.clear();for(let[t,r]of e)this.set(t,r)}};Vn.LinkedMap=Uo;var rc=class extends Uo{constructor(e,t=1){super(),this._limit=e,this._ratio=Math.min(Math.max(0,t),1)}get limit(){return this._limit}set limit(e){this._limit=e,this.checkTrim()}get ratio(){return this._ratio}set ratio(e){this._ratio=Math.min(Math.max(0,e),1),this.checkTrim()}get(e,t=Ot.AsNew){return super.get(e,t)}peek(e){return super.get(e,Ot.None)}set(e,t){return super.set(e,t,Ot.Last),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}};Vn.LRUCache=rc});var $f=O(Ai=>{"use strict";Object.defineProperty(Ai,"__esModule",{value:!0});Ai.Disposable=void 0;var TC;(function(n){function e(t){return{dispose:t}}n.create=e})(TC=Ai.Disposable||(Ai.Disposable={}))});var gr=O(ac=>{"use strict";Object.defineProperty(ac,"__esModule",{value:!0});var oc;function sc(){if(oc===void 0)throw new Error("No runtime abstraction layer installed");return oc}(function(n){function e(t){if(t===void 0)throw new Error("No runtime abstraction layer provided");oc=t}n.install=e})(sc||(sc={}));ac.default=sc});var Zr=O(kr=>{"use strict";Object.defineProperty(kr,"__esModule",{value:!0});kr.Emitter=kr.Event=void 0;var RC=gr(),SC;(function(n){let e={dispose(){}};n.None=function(){return e}})(SC=kr.Event||(kr.Event={}));var cc=class{add(e,t=null,r){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(t),Array.isArray(r)&&r.push({dispose:()=>this.remove(e,t)})}remove(e,t=null){if(!this._callbacks)return;let r=!1;for(let i=0,o=this._callbacks.length;i{this._callbacks||(this._callbacks=new cc),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,t);let i={dispose:()=>{this._callbacks&&(this._callbacks.remove(e,t),i.dispose=n._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(r)&&r.push(i),i}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};kr.Emitter=Ho;Ho._noop=function(){}});var zo=O(qr=>{"use strict";Object.defineProperty(qr,"__esModule",{value:!0});qr.CancellationTokenSource=qr.CancellationToken=void 0;var _C=gr(),xC=Yr(),uc=Zr(),dc;(function(n){n.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:uc.Event.None}),n.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:uc.Event.None});function e(t){let r=t;return r&&(r===n.None||r===n.Cancelled||xC.boolean(r.isCancellationRequested)&&!!r.onCancellationRequested)}n.is=e})(dc=qr.CancellationToken||(qr.CancellationToken={}));var PC=Object.freeze(function(n,e){let t=(0,_C.default)().timer.setTimeout(n.bind(e),0);return{dispose(){t.dispose()}}}),Wo=class{constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?PC:(this._emitter||(this._emitter=new uc.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},lc=class{get token(){return this._token||(this._token=new Wo),this._token}cancel(){this._token?this._token.cancel():this._token=dc.Cancelled}dispose(){this._token?this._token instanceof Wo&&this._token.dispose():this._token=dc.None}};qr.CancellationTokenSource=lc});var Uf=O(ei=>{"use strict";Object.defineProperty(ei,"__esModule",{value:!0});ei.SharedArrayReceiverStrategy=ei.SharedArraySenderStrategy=void 0;var EC=zo(),ji;(function(n){n.Continue=0,n.Cancelled=1})(ji||(ji={}));var fc=class{constructor(){this.buffers=new Map}enableCancellation(e){if(e.id===null)return;let t=new SharedArrayBuffer(4),r=new Int32Array(t,0,1);r[0]=ji.Continue,this.buffers.set(e.id,t),e.$cancellationData=t}async sendCancellation(e,t){let r=this.buffers.get(t);if(r===void 0)return;let i=new Int32Array(r,0,1);Atomics.store(i,0,ji.Cancelled)}cleanup(e){this.buffers.delete(e)}dispose(){this.buffers.clear()}};ei.SharedArraySenderStrategy=fc;var pc=class{constructor(e){this.data=new Int32Array(e,0,1)}get isCancellationRequested(){return Atomics.load(this.data,0)===ji.Cancelled}get onCancellationRequested(){throw new Error("Cancellation over SharedArrayBuffer doesn't support cancellation events")}},hc=class{constructor(e){this.token=new pc(e)}cancel(){}dispose(){}},gc=class{constructor(){this.kind="request"}createCancellationTokenSource(e){let t=e.$cancellationData;return t===void 0?new EC.CancellationTokenSource:new hc(t)}};ei.SharedArrayReceiverStrategy=gc});var vc=O(Ko=>{"use strict";Object.defineProperty(Ko,"__esModule",{value:!0});Ko.Semaphore=void 0;var kC=gr(),mc=class{constructor(e=1){if(e<=0)throw new Error("Capacity must be greater than 0");this._capacity=e,this._active=0,this._waiting=[]}lock(e){return new Promise((t,r)=>{this._waiting.push({thunk:e,resolve:t,reject:r}),this.runNext()})}get active(){return this._active}runNext(){this._waiting.length===0||this._active===this._capacity||(0,kC.default)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(this._waiting.length===0||this._active===this._capacity)return;let e=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{let t=e.thunk();t instanceof Promise?t.then(r=>{this._active--,e.resolve(r),this.runNext()},r=>{this._active--,e.reject(r),this.runNext()}):(this._active--,e.resolve(t),this.runNext())}catch(t){this._active--,e.reject(t),this.runNext()}}};Ko.Semaphore=mc});var Hf=O(Bn=>{"use strict";Object.defineProperty(Bn,"__esModule",{value:!0});Bn.ReadableStreamMessageReader=Bn.AbstractMessageReader=Bn.MessageReader=void 0;var Cc=gr(),ti=Yr(),yc=Zr(),qC=vc(),IC;(function(n){function e(t){let r=t;return r&&ti.func(r.listen)&&ti.func(r.dispose)&&ti.func(r.onError)&&ti.func(r.onClose)&&ti.func(r.onPartialMessage)}n.is=e})(IC=Bn.MessageReader||(Bn.MessageReader={}));var Vo=class{constructor(){this.errorEmitter=new yc.Emitter,this.closeEmitter=new yc.Emitter,this.partialMessageEmitter=new yc.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e){this.errorEmitter.fire(this.asError(e))}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}get onPartialMessage(){return this.partialMessageEmitter.event}firePartialMessage(e){this.partialMessageEmitter.fire(e)}asError(e){return e instanceof Error?e:new Error(`Reader received error. Reason: ${ti.string(e.message)?e.message:"unknown"}`)}};Bn.AbstractMessageReader=Vo;var wc;(function(n){function e(t){let r,i,o,s=new Map,a,c=new Map;if(t===void 0||typeof t=="string")r=t??"utf-8";else{if(r=t.charset??"utf-8",t.contentDecoder!==void 0&&(o=t.contentDecoder,s.set(o.name,o)),t.contentDecoders!==void 0)for(let d of t.contentDecoders)s.set(d.name,d);if(t.contentTypeDecoder!==void 0&&(a=t.contentTypeDecoder,c.set(a.name,a)),t.contentTypeDecoders!==void 0)for(let d of t.contentTypeDecoders)c.set(d.name,d)}return a===void 0&&(a=(0,Cc.default)().applicationJson.decoder,c.set(a.name,a)),{charset:r,contentDecoder:o,contentDecoders:s,contentTypeDecoder:a,contentTypeDecoders:c}}n.fromOptions=e})(wc||(wc={}));var bc=class extends Vo{constructor(e,t){super(),this.readable=e,this.options=wc.fromOptions(t),this.buffer=(0,Cc.default)().messageBuffer.create(this.options.charset),this._partialMessageTimeout=1e4,this.nextMessageLength=-1,this.messageToken=0,this.readSemaphore=new qC.Semaphore(1)}set partialMessageTimeout(e){this._partialMessageTimeout=e}get partialMessageTimeout(){return this._partialMessageTimeout}listen(e){this.nextMessageLength=-1,this.messageToken=0,this.partialMessageTimer=void 0,this.callback=e;let t=this.readable.onData(r=>{this.onData(r)});return this.readable.onError(r=>this.fireError(r)),this.readable.onClose(()=>this.fireClose()),t}onData(e){for(this.buffer.append(e);;){if(this.nextMessageLength===-1){let r=this.buffer.tryReadHeaders(!0);if(!r)return;let i=r.get("content-length");if(!i){this.fireError(new Error("Header must provide a Content-Length property."));return}let o=parseInt(i);if(isNaN(o)){this.fireError(new Error("Content-Length value must be a number."));return}this.nextMessageLength=o}let t=this.buffer.tryReadBody(this.nextMessageLength);if(t===void 0){this.setPartialMessageTimer();return}this.clearPartialMessageTimer(),this.nextMessageLength=-1,this.readSemaphore.lock(async()=>{let r=this.options.contentDecoder!==void 0?await this.options.contentDecoder.decode(t):t,i=await this.options.contentTypeDecoder.decode(r,this.options);this.callback(i)}).catch(r=>{this.fireError(r)})}}clearPartialMessageTimer(){this.partialMessageTimer&&(this.partialMessageTimer.dispose(),this.partialMessageTimer=void 0)}setPartialMessageTimer(){this.clearPartialMessageTimer(),!(this._partialMessageTimeout<=0)&&(this.partialMessageTimer=(0,Cc.default)().timer.setTimeout((e,t)=>{this.partialMessageTimer=void 0,e===this.messageToken&&(this.firePartialMessage({messageToken:e,waitingTime:t}),this.setPartialMessageTimer())},this._partialMessageTimeout,this.messageToken,this._partialMessageTimeout))}};Bn.ReadableStreamMessageReader=bc});var Vf=O(Gn=>{"use strict";Object.defineProperty(Gn,"__esModule",{value:!0});Gn.WriteableStreamMessageWriter=Gn.AbstractMessageWriter=Gn.MessageWriter=void 0;var Wf=gr(),$i=Yr(),OC=vc(),zf=Zr(),FC="Content-Length: ",Kf=`\r +`,LC;(function(n){function e(t){let r=t;return r&&$i.func(r.dispose)&&$i.func(r.onClose)&&$i.func(r.onError)&&$i.func(r.write)}n.is=e})(LC=Gn.MessageWriter||(Gn.MessageWriter={}));var Bo=class{constructor(){this.errorEmitter=new zf.Emitter,this.closeEmitter=new zf.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e,t,r){this.errorEmitter.fire([this.asError(e),t,r])}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}asError(e){return e instanceof Error?e:new Error(`Writer received error. Reason: ${$i.string(e.message)?e.message:"unknown"}`)}};Gn.AbstractMessageWriter=Bo;var Dc;(function(n){function e(t){return t===void 0||typeof t=="string"?{charset:t??"utf-8",contentTypeEncoder:(0,Wf.default)().applicationJson.encoder}:{charset:t.charset??"utf-8",contentEncoder:t.contentEncoder,contentTypeEncoder:t.contentTypeEncoder??(0,Wf.default)().applicationJson.encoder}}n.fromOptions=e})(Dc||(Dc={}));var Tc=class extends Bo{constructor(e,t){super(),this.writable=e,this.options=Dc.fromOptions(t),this.errorCount=0,this.writeSemaphore=new OC.Semaphore(1),this.writable.onError(r=>this.fireError(r)),this.writable.onClose(()=>this.fireClose())}async write(e){return this.writeSemaphore.lock(async()=>this.options.contentTypeEncoder.encode(e,this.options).then(r=>this.options.contentEncoder!==void 0?this.options.contentEncoder.encode(r):r).then(r=>{let i=[];return i.push(FC,r.byteLength.toString(),Kf),i.push(Kf),this.doWrite(e,i,r)},r=>{throw this.fireError(r),r}))}async doWrite(e,t,r){try{return await this.writable.write(t.join(""),"ascii"),this.writable.write(r)}catch(i){return this.handleError(i,e),Promise.reject(i)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){this.writable.end()}};Gn.WriteableStreamMessageWriter=Tc});var Bf=O(Go=>{"use strict";Object.defineProperty(Go,"__esModule",{value:!0});Go.AbstractMessageBuffer=void 0;var NC=13,MC=10,AC=`\r +`,Rc=class{constructor(e="utf-8"){this._encoding=e,this._chunks=[],this._totalLength=0}get encoding(){return this._encoding}append(e){let t=typeof e=="string"?this.fromString(e,this._encoding):e;this._chunks.push(t),this._totalLength+=t.byteLength}tryReadHeaders(e=!1){if(this._chunks.length===0)return;let t=0,r=0,i=0,o=0;e:for(;rthis._totalLength)throw new Error("Cannot read so many bytes!");if(this._chunks[0].byteLength===e){let o=this._chunks[0];return this._chunks.shift(),this._totalLength-=e,this.asNative(o)}if(this._chunks[0].byteLength>e){let o=this._chunks[0],s=this.asNative(o,e);return this._chunks[0]=o.slice(e),this._totalLength-=e,s}let t=this.allocNative(e),r=0,i=0;for(;e>0;){let o=this._chunks[i];if(o.byteLength>e){let s=o.slice(0,e);t.set(s,r),r+=e,this._chunks[i]=o.slice(e),this._totalLength-=e,e-=e}else t.set(o,r),r+=o.byteLength,this._chunks.shift(),this._totalLength-=o.byteLength,e-=o.byteLength}return t}};Go.AbstractMessageBuffer=Rc});var ep=O(J=>{"use strict";Object.defineProperty(J,"__esModule",{value:!0});J.createMessageConnection=J.ConnectionOptions=J.MessageStrategy=J.CancellationStrategy=J.CancellationSenderStrategy=J.CancellationReceiverStrategy=J.RequestCancellationReceiverStrategy=J.IdCancellationReceiverStrategy=J.ConnectionStrategy=J.ConnectionError=J.ConnectionErrors=J.LogTraceNotification=J.SetTraceNotification=J.TraceFormat=J.TraceValues=J.Trace=J.NullLogger=J.ProgressType=J.ProgressToken=void 0;var Gf=gr(),Ke=Yr(),ee=nc(),Xf=ic(),Ui=Zr(),Sc=zo(),Wi;(function(n){n.type=new ee.NotificationType("$/cancelRequest")})(Wi||(Wi={}));var Jf;(function(n){function e(t){return typeof t=="string"||typeof t=="number"}n.is=e})(Jf=J.ProgressToken||(J.ProgressToken={}));var Hi;(function(n){n.type=new ee.NotificationType("$/progress")})(Hi||(Hi={}));var _c=class{constructor(){}};J.ProgressType=_c;var xc;(function(n){function e(t){return Ke.func(t)}n.is=e})(xc||(xc={}));J.NullLogger=Object.freeze({error:()=>{},warn:()=>{},info:()=>{},log:()=>{}});var Oe;(function(n){n[n.Off=0]="Off",n[n.Messages=1]="Messages",n[n.Compact=2]="Compact",n[n.Verbose=3]="Verbose"})(Oe=J.Trace||(J.Trace={}));var jC;(function(n){n.Off="off",n.Messages="messages",n.Compact="compact",n.Verbose="verbose"})(jC=J.TraceValues||(J.TraceValues={}));(function(n){function e(r){if(!Ke.string(r))return n.Off;switch(r=r.toLowerCase(),r){case"off":return n.Off;case"messages":return n.Messages;case"compact":return n.Compact;case"verbose":return n.Verbose;default:return n.Off}}n.fromString=e;function t(r){switch(r){case n.Off:return"off";case n.Messages:return"messages";case n.Compact:return"compact";case n.Verbose:return"verbose";default:return"off"}}n.toString=t})(Oe=J.Trace||(J.Trace={}));var hn;(function(n){n.Text="text",n.JSON="json"})(hn=J.TraceFormat||(J.TraceFormat={}));(function(n){function e(t){return Ke.string(t)?(t=t.toLowerCase(),t==="json"?n.JSON:n.Text):n.Text}n.fromString=e})(hn=J.TraceFormat||(J.TraceFormat={}));var Qf;(function(n){n.type=new ee.NotificationType("$/setTrace")})(Qf=J.SetTraceNotification||(J.SetTraceNotification={}));var Pc;(function(n){n.type=new ee.NotificationType("$/logTrace")})(Pc=J.LogTraceNotification||(J.LogTraceNotification={}));var Xo;(function(n){n[n.Closed=1]="Closed",n[n.Disposed=2]="Disposed",n[n.AlreadyListening=3]="AlreadyListening"})(Xo=J.ConnectionErrors||(J.ConnectionErrors={}));var ni=class n extends Error{constructor(e,t){super(t),this.code=e,Object.setPrototypeOf(this,n.prototype)}};J.ConnectionError=ni;var Yf;(function(n){function e(t){let r=t;return r&&Ke.func(r.cancelUndispatched)}n.is=e})(Yf=J.ConnectionStrategy||(J.ConnectionStrategy={}));var qc;(function(n){function e(t){let r=t;return r&&(r.kind===void 0||r.kind==="id")&&Ke.func(r.createCancellationTokenSource)&&(r.dispose===void 0||Ke.func(r.dispose))}n.is=e})(qc=J.IdCancellationReceiverStrategy||(J.IdCancellationReceiverStrategy={}));var Zf;(function(n){function e(t){let r=t;return r&&r.kind==="request"&&Ke.func(r.createCancellationTokenSource)&&(r.dispose===void 0||Ke.func(r.dispose))}n.is=e})(Zf=J.RequestCancellationReceiverStrategy||(J.RequestCancellationReceiverStrategy={}));var Ec;(function(n){n.Message=Object.freeze({createCancellationTokenSource(t){return new Sc.CancellationTokenSource}});function e(t){return qc.is(t)||Zf.is(t)}n.is=e})(Ec=J.CancellationReceiverStrategy||(J.CancellationReceiverStrategy={}));var kc;(function(n){n.Message=Object.freeze({sendCancellation(t,r){return t.sendNotification(Wi.type,{id:r})},cleanup(t){}});function e(t){let r=t;return r&&Ke.func(r.sendCancellation)&&Ke.func(r.cleanup)}n.is=e})(kc=J.CancellationSenderStrategy||(J.CancellationSenderStrategy={}));var Ic;(function(n){n.Message=Object.freeze({receiver:Ec.Message,sender:kc.Message});function e(t){let r=t;return r&&Ec.is(r.receiver)&&kc.is(r.sender)}n.is=e})(Ic=J.CancellationStrategy||(J.CancellationStrategy={}));var Oc;(function(n){function e(t){let r=t;return r&&Ke.func(r.handleMessage)}n.is=e})(Oc=J.MessageStrategy||(J.MessageStrategy={}));var $C;(function(n){function e(t){let r=t;return r&&(Ic.is(r.cancellationStrategy)||Yf.is(r.connectionStrategy)||Oc.is(r.messageStrategy))}n.is=e})($C=J.ConnectionOptions||(J.ConnectionOptions={}));var gn;(function(n){n[n.New=1]="New",n[n.Listening=2]="Listening",n[n.Closed=3]="Closed",n[n.Disposed=4]="Disposed"})(gn||(gn={}));function UC(n,e,t,r){let i=t!==void 0?t:J.NullLogger,o=0,s=0,a=0,c="2.0",d,f=new Map,g,m=new Map,C=new Map,w,T=new Xf.LinkedMap,S=new Map,q=new Set,F=new Map,I=Oe.Off,A=hn.Text,W,ne=gn.New,K=new Ui.Emitter,Q=new Ui.Emitter,ie=new Ui.Emitter,tt=new Ui.Emitter,We=new Ui.Emitter,nt=r&&r.cancellationStrategy?r.cancellationStrategy:Ic.Message;function ln(b){if(b===null)throw new Error("Can't send requests with id null since the response can't be correlated.");return"req-"+b.toString()}function Pt(b){return b===null?"res-unknown-"+(++a).toString():"res-"+b.toString()}function mt(){return"not-"+(++s).toString()}function Et(b,N){ee.Message.isRequest(N)?b.set(ln(N.id),N):ee.Message.isResponse(N)?b.set(Pt(N.id),N):b.set(mt(),N)}function _n(b){}function Qe(){return ne===gn.Listening}function kt(){return ne===gn.Closed}function Ht(){return ne===gn.Disposed}function xn(){(ne===gn.New||ne===gn.Listening)&&(ne=gn.Closed,Q.fire(void 0))}function Dt(b){K.fire([b,void 0,void 0])}function _r(b){K.fire(b)}n.onClose(xn),n.onError(Dt),e.onClose(xn),e.onError(_r);function ar(){w||T.size===0||(w=(0,Gf.default)().timer.setImmediate(()=>{w=void 0,$n()}))}function jn(b){ee.Message.isRequest(b)?xr(b):ee.Message.isNotification(b)?ur(b):ee.Message.isResponse(b)?cr(b):Hn(b)}function $n(){if(T.size===0)return;let b=T.shift();try{let N=r==null?void 0:r.messageStrategy;Oc.is(N)?N.handleMessage(b,jn):jn(b)}finally{ar()}}let Un=b=>{try{if(ee.Message.isNotification(b)&&b.method===Wi.type.method){let N=b.params.id,H=ln(N),B=T.get(H);if(ee.Message.isRequest(B)){let be=r==null?void 0:r.connectionStrategy,De=be&&be.cancelUndispatched?be.cancelUndispatched(B,_n):void 0;if(De&&(De.error!==void 0||De.result!==void 0)){T.delete(H),F.delete(N),De.id=B.id,sn(De,b.method,Date.now()),e.write(De).catch(()=>i.error("Sending response for canceled message failed."));return}}let Re=F.get(N);if(Re!==void 0){Re.cancel(),qt(b);return}else q.add(N)}Et(T,b)}finally{ar()}};function xr(b){if(Ht())return;function N(ce,Se,p){let E={jsonrpc:c,id:b.id};ce instanceof ee.ResponseError?E.error=ce.toJson():E.result=ce===void 0?null:ce,sn(E,Se,p),e.write(E).catch(()=>i.error("Sending response failed."))}function H(ce,Se,p){let E={jsonrpc:c,id:b.id,error:ce.toJson()};sn(E,Se,p),e.write(E).catch(()=>i.error("Sending response failed."))}function B(ce,Se,p){ce===void 0&&(ce=null);let E={jsonrpc:c,id:b.id,result:ce};sn(E,Se,p),e.write(E).catch(()=>i.error("Sending response failed."))}lr(b);let Re=f.get(b.method),be,De;Re&&(be=Re.type,De=Re.handler);let Le=Date.now();if(De||d){let ce=b.id??String(Date.now()),Se=qc.is(nt.receiver)?nt.receiver.createCancellationTokenSource(ce):nt.receiver.createCancellationTokenSource(b);b.id!==null&&q.has(b.id)&&Se.cancel(),b.id!==null&&F.set(ce,Se);try{let p;if(De)if(b.params===void 0){if(be!==void 0&&be.numberOfParams!==0){H(new ee.ResponseError(ee.ErrorCodes.InvalidParams,`Request ${b.method} defines ${be.numberOfParams} params but received none.`),b.method,Le);return}p=De(Se.token)}else if(Array.isArray(b.params)){if(be!==void 0&&be.parameterStructures===ee.ParameterStructures.byName){H(new ee.ResponseError(ee.ErrorCodes.InvalidParams,`Request ${b.method} defines parameters by name but received parameters by position`),b.method,Le);return}p=De(...b.params,Se.token)}else{if(be!==void 0&&be.parameterStructures===ee.ParameterStructures.byPosition){H(new ee.ResponseError(ee.ErrorCodes.InvalidParams,`Request ${b.method} defines parameters by position but received parameters by name`),b.method,Le);return}p=De(b.params,Se.token)}else d&&(p=d(b.method,b.params,Se.token));let E=p;p?E.then?E.then(z=>{F.delete(ce),N(z,b.method,Le)},z=>{F.delete(ce),z instanceof ee.ResponseError?H(z,b.method,Le):z&&Ke.string(z.message)?H(new ee.ResponseError(ee.ErrorCodes.InternalError,`Request ${b.method} failed with message: ${z.message}`),b.method,Le):H(new ee.ResponseError(ee.ErrorCodes.InternalError,`Request ${b.method} failed unexpectedly without providing any details.`),b.method,Le)}):(F.delete(ce),N(p,b.method,Le)):(F.delete(ce),B(p,b.method,Le))}catch(p){F.delete(ce),p instanceof ee.ResponseError?N(p,b.method,Le):p&&Ke.string(p.message)?H(new ee.ResponseError(ee.ErrorCodes.InternalError,`Request ${b.method} failed with message: ${p.message}`),b.method,Le):H(new ee.ResponseError(ee.ErrorCodes.InternalError,`Request ${b.method} failed unexpectedly without providing any details.`),b.method,Le)}}else H(new ee.ResponseError(ee.ErrorCodes.MethodNotFound,`Unhandled method ${b.method}`),b.method,Le)}function cr(b){if(!Ht())if(b.id===null)b.error?i.error(`Received response message without id: Error is: +${JSON.stringify(b.error,void 0,4)}`):i.error("Received response message without id. No further error information provided.");else{let N=b.id,H=S.get(N);if(Wn(b,H),H!==void 0){S.delete(N);try{if(b.error){let B=b.error;H.reject(new ee.ResponseError(B.code,B.message,B.data))}else if(b.result!==void 0)H.resolve(b.result);else throw new Error("Should never happen.")}catch(B){B.message?i.error(`Response handler '${H.method}' failed with message: ${B.message}`):i.error(`Response handler '${H.method}' failed unexpectedly.`)}}}}function ur(b){if(Ht())return;let N,H;if(b.method===Wi.type.method){let B=b.params.id;q.delete(B),qt(b);return}else{let B=m.get(b.method);B&&(H=B.handler,N=B.type)}if(H||g)try{if(qt(b),H)if(b.params===void 0)N!==void 0&&N.numberOfParams!==0&&N.parameterStructures!==ee.ParameterStructures.byName&&i.error(`Notification ${b.method} defines ${N.numberOfParams} params but received none.`),H();else if(Array.isArray(b.params)){let B=b.params;b.method===Hi.type.method&&B.length===2&&Jf.is(B[0])?H({token:B[0],value:B[1]}):(N!==void 0&&(N.parameterStructures===ee.ParameterStructures.byName&&i.error(`Notification ${b.method} defines parameters by name but received parameters by position`),N.numberOfParams!==b.params.length&&i.error(`Notification ${b.method} defines ${N.numberOfParams} params but received ${B.length} arguments`)),H(...B))}else N!==void 0&&N.parameterStructures===ee.ParameterStructures.byPosition&&i.error(`Notification ${b.method} defines parameters by position but received parameters by name`),H(b.params);else g&&g(b.method,b.params)}catch(B){B.message?i.error(`Notification handler '${b.method}' failed with message: ${B.message}`):i.error(`Notification handler '${b.method}' failed unexpectedly.`)}else ie.fire(b)}function Hn(b){if(!b){i.error("Received empty message.");return}i.error(`Received message which is neither a response nor a notification message: +${JSON.stringify(b,null,4)}`);let N=b;if(Ke.string(N.id)||Ke.number(N.id)){let H=N.id,B=S.get(H);B&&B.reject(new Error("The received response has neither a result nor an error property."))}}function lt(b){if(b!=null)switch(I){case Oe.Verbose:return JSON.stringify(b,null,4);case Oe.Compact:return JSON.stringify(b);default:return}}function dr(b){if(!(I===Oe.Off||!W))if(A===hn.Text){let N;(I===Oe.Verbose||I===Oe.Compact)&&b.params&&(N=`Params: ${lt(b.params)} + +`),W.log(`Sending request '${b.method} - (${b.id})'.`,N)}else rt("send-request",b)}function Pn(b){if(!(I===Oe.Off||!W))if(A===hn.Text){let N;(I===Oe.Verbose||I===Oe.Compact)&&(b.params?N=`Params: ${lt(b.params)} + +`:N=`No parameters provided. + +`),W.log(`Sending notification '${b.method}'.`,N)}else rt("send-notification",b)}function sn(b,N,H){if(!(I===Oe.Off||!W))if(A===hn.Text){let B;(I===Oe.Verbose||I===Oe.Compact)&&(b.error&&b.error.data?B=`Error data: ${lt(b.error.data)} + +`:b.result?B=`Result: ${lt(b.result)} + +`:b.error===void 0&&(B=`No result returned. + +`)),W.log(`Sending response '${N} - (${b.id})'. Processing request took ${Date.now()-H}ms`,B)}else rt("send-response",b)}function lr(b){if(!(I===Oe.Off||!W))if(A===hn.Text){let N;(I===Oe.Verbose||I===Oe.Compact)&&b.params&&(N=`Params: ${lt(b.params)} + +`),W.log(`Received request '${b.method} - (${b.id})'.`,N)}else rt("receive-request",b)}function qt(b){if(!(I===Oe.Off||!W||b.method===Pc.type.method))if(A===hn.Text){let N;(I===Oe.Verbose||I===Oe.Compact)&&(b.params?N=`Params: ${lt(b.params)} + +`:N=`No parameters provided. + +`),W.log(`Received notification '${b.method}'.`,N)}else rt("receive-notification",b)}function Wn(b,N){if(!(I===Oe.Off||!W))if(A===hn.Text){let H;if((I===Oe.Verbose||I===Oe.Compact)&&(b.error&&b.error.data?H=`Error data: ${lt(b.error.data)} + +`:b.result?H=`Result: ${lt(b.result)} + +`:b.error===void 0&&(H=`No result returned. + +`)),N){let B=b.error?` Request failed: ${b.error.message} (${b.error.code}).`:"";W.log(`Received response '${N.method} - (${b.id})' in ${Date.now()-N.timerStart}ms.${B}`,H)}else W.log(`Received response ${b.id} without active response promise.`,H)}else rt("receive-response",b)}function rt(b,N){if(!W||I===Oe.Off)return;let H={isLSPMessage:!0,type:b,message:N,timestamp:Date.now()};W.log(H)}function fn(){if(kt())throw new ni(Xo.Closed,"Connection is closed.");if(Ht())throw new ni(Xo.Disposed,"Connection is disposed.")}function It(){if(Qe())throw new ni(Xo.AlreadyListening,"Connection is already listening")}function zn(){if(!Qe())throw new Error("Call listen() first.")}function Jt(b){return b===void 0?null:b}function Kn(b){if(b!==null)return b}function fr(b){return b!=null&&!Array.isArray(b)&&typeof b=="object"}function Wt(b,N){switch(b){case ee.ParameterStructures.auto:return fr(N)?Kn(N):[Jt(N)];case ee.ParameterStructures.byName:if(!fr(N))throw new Error("Received parameters by name but param is not an object literal.");return Kn(N);case ee.ParameterStructures.byPosition:return[Jt(N)];default:throw new Error(`Unknown parameter structure ${b.toString()}`)}}function pr(b,N){let H,B=b.numberOfParams;switch(B){case 0:H=void 0;break;case 1:H=Wt(b.parameterStructures,N[0]);break;default:H=[];for(let Re=0;Re{fn();let H,B;if(Ke.string(b)){H=b;let be=N[0],De=0,Le=ee.ParameterStructures.auto;ee.ParameterStructures.is(be)&&(De=1,Le=be);let ce=N.length,Se=ce-De;switch(Se){case 0:B=void 0;break;case 1:B=Wt(Le,N[De]);break;default:if(Le===ee.ParameterStructures.byName)throw new Error(`Received ${Se} parameters for 'by Name' notification parameter structure.`);B=N.slice(De,ce).map(p=>Jt(p));break}}else{let be=N;H=b.method,B=pr(b,be)}let Re={jsonrpc:c,method:H,params:B};return Pn(Re),e.write(Re).catch(be=>{throw i.error("Sending notification failed."),be})},onNotification:(b,N)=>{fn();let H;return Ke.func(b)?g=b:N&&(Ke.string(b)?(H=b,m.set(b,{type:void 0,handler:N})):(H=b.method,m.set(b.method,{type:b,handler:N}))),{dispose:()=>{H!==void 0?m.delete(H):g=void 0}}},onProgress:(b,N,H)=>{if(C.has(N))throw new Error(`Progress handler for token ${N} already registered`);return C.set(N,H),{dispose:()=>{C.delete(N)}}},sendProgress:(b,N,H)=>Qt.sendNotification(Hi.type,{token:N,value:H}),onUnhandledProgress:tt.event,sendRequest:(b,...N)=>{fn(),zn();let H,B,Re;if(Ke.string(b)){H=b;let ce=N[0],Se=N[N.length-1],p=0,E=ee.ParameterStructures.auto;ee.ParameterStructures.is(ce)&&(p=1,E=ce);let z=N.length;Sc.CancellationToken.is(Se)&&(z=z-1,Re=Se);let ue=z-p;switch(ue){case 0:B=void 0;break;case 1:B=Wt(E,N[p]);break;default:if(E===ee.ParameterStructures.byName)throw new Error(`Received ${ue} parameters for 'by Name' request parameter structure.`);B=N.slice(p,z).map(_=>Jt(_));break}}else{let ce=N;H=b.method,B=pr(b,ce);let Se=b.numberOfParams;Re=Sc.CancellationToken.is(ce[Se])?ce[Se]:void 0}let be=o++,De;Re&&(De=Re.onCancellationRequested(()=>{let ce=nt.sender.sendCancellation(Qt,be);return ce===void 0?(i.log(`Received no promise from cancellation strategy when cancelling id ${be}`),Promise.resolve()):ce.catch(()=>{i.log(`Sending cancellation messages for id ${be} failed`)})}));let Le={jsonrpc:c,id:be,method:H,params:B};return dr(Le),typeof nt.sender.enableCancellation=="function"&&nt.sender.enableCancellation(Le),new Promise(async(ce,Se)=>{let p=ue=>{ce(ue),nt.sender.cleanup(be),De==null||De.dispose()},E=ue=>{Se(ue),nt.sender.cleanup(be),De==null||De.dispose()},z={method:H,timerStart:Date.now(),resolve:p,reject:E};try{await e.write(Le),S.set(be,z)}catch(ue){throw i.error("Sending request failed."),z.reject(new ee.ResponseError(ee.ErrorCodes.MessageWriteError,ue.message?ue.message:"Unknown reason")),ue}})},onRequest:(b,N)=>{fn();let H=null;return xc.is(b)?(H=void 0,d=b):Ke.string(b)?(H=null,N!==void 0&&(H=b,f.set(b,{handler:N,type:void 0}))):N!==void 0&&(H=b.method,f.set(b.method,{type:b,handler:N})),{dispose:()=>{H!==null&&(H!==void 0?f.delete(H):d=void 0)}}},hasPendingResponse:()=>S.size>0,trace:async(b,N,H)=>{let B=!1,Re=hn.Text;H!==void 0&&(Ke.boolean(H)?B=H:(B=H.sendNotification||!1,Re=H.traceFormat||hn.Text)),I=b,A=Re,I===Oe.Off?W=void 0:W=N,B&&!kt()&&!Ht()&&await Qt.sendNotification(Qf.type,{value:Oe.toString(b)})},onError:K.event,onClose:Q.event,onUnhandledNotification:ie.event,onDispose:We.event,end:()=>{e.end()},dispose:()=>{if(Ht())return;ne=gn.Disposed,We.fire(void 0);let b=new ee.ResponseError(ee.ErrorCodes.PendingResponseRejected,"Pending response rejected since connection got disposed");for(let N of S.values())N.reject(b);S=new Map,F=new Map,q=new Set,T=new Xf.LinkedMap,Ke.func(e.dispose)&&e.dispose(),Ke.func(n.dispose)&&n.dispose()},listen:()=>{fn(),It(),ne=gn.Listening,n.listen(Un)},inspect:()=>{(0,Gf.default)().console.log("inspect")}};return Qt.onNotification(Pc.type,b=>{if(I===Oe.Off||!W)return;let N=I===Oe.Verbose||I===Oe.Compact;W.log(b.message,N?b.verbose:void 0)}),Qt.onNotification(Hi.type,b=>{let N=C.get(b.token);N?N(b.value):tt.fire(b)}),Qt}J.createMessageConnection=UC});var Jo=O(L=>{"use strict";Object.defineProperty(L,"__esModule",{value:!0});L.ProgressType=L.ProgressToken=L.createMessageConnection=L.NullLogger=L.ConnectionOptions=L.ConnectionStrategy=L.AbstractMessageBuffer=L.WriteableStreamMessageWriter=L.AbstractMessageWriter=L.MessageWriter=L.ReadableStreamMessageReader=L.AbstractMessageReader=L.MessageReader=L.SharedArrayReceiverStrategy=L.SharedArraySenderStrategy=L.CancellationToken=L.CancellationTokenSource=L.Emitter=L.Event=L.Disposable=L.LRUCache=L.Touch=L.LinkedMap=L.ParameterStructures=L.NotificationType9=L.NotificationType8=L.NotificationType7=L.NotificationType6=L.NotificationType5=L.NotificationType4=L.NotificationType3=L.NotificationType2=L.NotificationType1=L.NotificationType0=L.NotificationType=L.ErrorCodes=L.ResponseError=L.RequestType9=L.RequestType8=L.RequestType7=L.RequestType6=L.RequestType5=L.RequestType4=L.RequestType3=L.RequestType2=L.RequestType1=L.RequestType0=L.RequestType=L.Message=L.RAL=void 0;L.MessageStrategy=L.CancellationStrategy=L.CancellationSenderStrategy=L.CancellationReceiverStrategy=L.ConnectionError=L.ConnectionErrors=L.LogTraceNotification=L.SetTraceNotification=L.TraceFormat=L.TraceValues=L.Trace=void 0;var Me=nc();Object.defineProperty(L,"Message",{enumerable:!0,get:function(){return Me.Message}});Object.defineProperty(L,"RequestType",{enumerable:!0,get:function(){return Me.RequestType}});Object.defineProperty(L,"RequestType0",{enumerable:!0,get:function(){return Me.RequestType0}});Object.defineProperty(L,"RequestType1",{enumerable:!0,get:function(){return Me.RequestType1}});Object.defineProperty(L,"RequestType2",{enumerable:!0,get:function(){return Me.RequestType2}});Object.defineProperty(L,"RequestType3",{enumerable:!0,get:function(){return Me.RequestType3}});Object.defineProperty(L,"RequestType4",{enumerable:!0,get:function(){return Me.RequestType4}});Object.defineProperty(L,"RequestType5",{enumerable:!0,get:function(){return Me.RequestType5}});Object.defineProperty(L,"RequestType6",{enumerable:!0,get:function(){return Me.RequestType6}});Object.defineProperty(L,"RequestType7",{enumerable:!0,get:function(){return Me.RequestType7}});Object.defineProperty(L,"RequestType8",{enumerable:!0,get:function(){return Me.RequestType8}});Object.defineProperty(L,"RequestType9",{enumerable:!0,get:function(){return Me.RequestType9}});Object.defineProperty(L,"ResponseError",{enumerable:!0,get:function(){return Me.ResponseError}});Object.defineProperty(L,"ErrorCodes",{enumerable:!0,get:function(){return Me.ErrorCodes}});Object.defineProperty(L,"NotificationType",{enumerable:!0,get:function(){return Me.NotificationType}});Object.defineProperty(L,"NotificationType0",{enumerable:!0,get:function(){return Me.NotificationType0}});Object.defineProperty(L,"NotificationType1",{enumerable:!0,get:function(){return Me.NotificationType1}});Object.defineProperty(L,"NotificationType2",{enumerable:!0,get:function(){return Me.NotificationType2}});Object.defineProperty(L,"NotificationType3",{enumerable:!0,get:function(){return Me.NotificationType3}});Object.defineProperty(L,"NotificationType4",{enumerable:!0,get:function(){return Me.NotificationType4}});Object.defineProperty(L,"NotificationType5",{enumerable:!0,get:function(){return Me.NotificationType5}});Object.defineProperty(L,"NotificationType6",{enumerable:!0,get:function(){return Me.NotificationType6}});Object.defineProperty(L,"NotificationType7",{enumerable:!0,get:function(){return Me.NotificationType7}});Object.defineProperty(L,"NotificationType8",{enumerable:!0,get:function(){return Me.NotificationType8}});Object.defineProperty(L,"NotificationType9",{enumerable:!0,get:function(){return Me.NotificationType9}});Object.defineProperty(L,"ParameterStructures",{enumerable:!0,get:function(){return Me.ParameterStructures}});var Fc=ic();Object.defineProperty(L,"LinkedMap",{enumerable:!0,get:function(){return Fc.LinkedMap}});Object.defineProperty(L,"LRUCache",{enumerable:!0,get:function(){return Fc.LRUCache}});Object.defineProperty(L,"Touch",{enumerable:!0,get:function(){return Fc.Touch}});var HC=$f();Object.defineProperty(L,"Disposable",{enumerable:!0,get:function(){return HC.Disposable}});var tp=Zr();Object.defineProperty(L,"Event",{enumerable:!0,get:function(){return tp.Event}});Object.defineProperty(L,"Emitter",{enumerable:!0,get:function(){return tp.Emitter}});var np=zo();Object.defineProperty(L,"CancellationTokenSource",{enumerable:!0,get:function(){return np.CancellationTokenSource}});Object.defineProperty(L,"CancellationToken",{enumerable:!0,get:function(){return np.CancellationToken}});var rp=Uf();Object.defineProperty(L,"SharedArraySenderStrategy",{enumerable:!0,get:function(){return rp.SharedArraySenderStrategy}});Object.defineProperty(L,"SharedArrayReceiverStrategy",{enumerable:!0,get:function(){return rp.SharedArrayReceiverStrategy}});var Lc=Hf();Object.defineProperty(L,"MessageReader",{enumerable:!0,get:function(){return Lc.MessageReader}});Object.defineProperty(L,"AbstractMessageReader",{enumerable:!0,get:function(){return Lc.AbstractMessageReader}});Object.defineProperty(L,"ReadableStreamMessageReader",{enumerable:!0,get:function(){return Lc.ReadableStreamMessageReader}});var Nc=Vf();Object.defineProperty(L,"MessageWriter",{enumerable:!0,get:function(){return Nc.MessageWriter}});Object.defineProperty(L,"AbstractMessageWriter",{enumerable:!0,get:function(){return Nc.AbstractMessageWriter}});Object.defineProperty(L,"WriteableStreamMessageWriter",{enumerable:!0,get:function(){return Nc.WriteableStreamMessageWriter}});var WC=Bf();Object.defineProperty(L,"AbstractMessageBuffer",{enumerable:!0,get:function(){return WC.AbstractMessageBuffer}});var yt=ep();Object.defineProperty(L,"ConnectionStrategy",{enumerable:!0,get:function(){return yt.ConnectionStrategy}});Object.defineProperty(L,"ConnectionOptions",{enumerable:!0,get:function(){return yt.ConnectionOptions}});Object.defineProperty(L,"NullLogger",{enumerable:!0,get:function(){return yt.NullLogger}});Object.defineProperty(L,"createMessageConnection",{enumerable:!0,get:function(){return yt.createMessageConnection}});Object.defineProperty(L,"ProgressToken",{enumerable:!0,get:function(){return yt.ProgressToken}});Object.defineProperty(L,"ProgressType",{enumerable:!0,get:function(){return yt.ProgressType}});Object.defineProperty(L,"Trace",{enumerable:!0,get:function(){return yt.Trace}});Object.defineProperty(L,"TraceValues",{enumerable:!0,get:function(){return yt.TraceValues}});Object.defineProperty(L,"TraceFormat",{enumerable:!0,get:function(){return yt.TraceFormat}});Object.defineProperty(L,"SetTraceNotification",{enumerable:!0,get:function(){return yt.SetTraceNotification}});Object.defineProperty(L,"LogTraceNotification",{enumerable:!0,get:function(){return yt.LogTraceNotification}});Object.defineProperty(L,"ConnectionErrors",{enumerable:!0,get:function(){return yt.ConnectionErrors}});Object.defineProperty(L,"ConnectionError",{enumerable:!0,get:function(){return yt.ConnectionError}});Object.defineProperty(L,"CancellationReceiverStrategy",{enumerable:!0,get:function(){return yt.CancellationReceiverStrategy}});Object.defineProperty(L,"CancellationSenderStrategy",{enumerable:!0,get:function(){return yt.CancellationSenderStrategy}});Object.defineProperty(L,"CancellationStrategy",{enumerable:!0,get:function(){return yt.CancellationStrategy}});Object.defineProperty(L,"MessageStrategy",{enumerable:!0,get:function(){return yt.MessageStrategy}});var zC=gr();L.RAL=zC.default});var sp=O($c=>{"use strict";Object.defineProperty($c,"__esModule",{value:!0});var ip=require("util"),Xn=Jo(),Qo=class n extends Xn.AbstractMessageBuffer{constructor(e="utf-8"){super(e)}emptyBuffer(){return n.emptyBuffer}fromString(e,t){return Buffer.from(e,t)}toString(e,t){return e instanceof Buffer?e.toString(t):new ip.TextDecoder(t).decode(e)}asNative(e,t){return t===void 0?e instanceof Buffer?e:Buffer.from(e):e instanceof Buffer?e.slice(0,t):Buffer.from(e,0,t)}allocNative(e){return Buffer.allocUnsafe(e)}};Qo.emptyBuffer=Buffer.allocUnsafe(0);var Mc=class{constructor(e){this.stream=e}onClose(e){return this.stream.on("close",e),Xn.Disposable.create(()=>this.stream.off("close",e))}onError(e){return this.stream.on("error",e),Xn.Disposable.create(()=>this.stream.off("error",e))}onEnd(e){return this.stream.on("end",e),Xn.Disposable.create(()=>this.stream.off("end",e))}onData(e){return this.stream.on("data",e),Xn.Disposable.create(()=>this.stream.off("data",e))}},Ac=class{constructor(e){this.stream=e}onClose(e){return this.stream.on("close",e),Xn.Disposable.create(()=>this.stream.off("close",e))}onError(e){return this.stream.on("error",e),Xn.Disposable.create(()=>this.stream.off("error",e))}onEnd(e){return this.stream.on("end",e),Xn.Disposable.create(()=>this.stream.off("end",e))}write(e,t){return new Promise((r,i)=>{let o=s=>{s==null?r():i(s)};typeof e=="string"?this.stream.write(e,t,o):this.stream.write(e,o)})}end(){this.stream.end()}},op=Object.freeze({messageBuffer:Object.freeze({create:n=>new Qo(n)}),applicationJson:Object.freeze({encoder:Object.freeze({name:"application/json",encode:(n,e)=>{try{return Promise.resolve(Buffer.from(JSON.stringify(n,void 0,0),e.charset))}catch(t){return Promise.reject(t)}}}),decoder:Object.freeze({name:"application/json",decode:(n,e)=>{try{return n instanceof Buffer?Promise.resolve(JSON.parse(n.toString(e.charset))):Promise.resolve(JSON.parse(new ip.TextDecoder(e.charset).decode(n)))}catch(t){return Promise.reject(t)}}})}),stream:Object.freeze({asReadableStream:n=>new Mc(n),asWritableStream:n=>new Ac(n)}),console,timer:Object.freeze({setTimeout(n,e,...t){let r=setTimeout(n,e,...t);return{dispose:()=>clearTimeout(r)}},setImmediate(n,...e){let t=setImmediate(n,...e);return{dispose:()=>clearImmediate(t)}},setInterval(n,e,...t){let r=setInterval(n,e,...t);return{dispose:()=>clearInterval(r)}}})});function jc(){return op}(function(n){function e(){Xn.RAL.install(op)}n.install=e})(jc||(jc={}));$c.default=jc});var Fr=O(ve=>{"use strict";var KC=ve&&ve.__createBinding||(Object.create?function(n,e,t,r){r===void 0&&(r=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,r,i)}:function(n,e,t,r){r===void 0&&(r=t),n[r]=e[t]}),VC=ve&&ve.__exportStar||function(n,e){for(var t in n)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&KC(e,n,t)};Object.defineProperty(ve,"__esModule",{value:!0});ve.createMessageConnection=ve.createServerSocketTransport=ve.createClientSocketTransport=ve.createServerPipeTransport=ve.createClientPipeTransport=ve.generateRandomPipeName=ve.StreamMessageWriter=ve.StreamMessageReader=ve.SocketMessageWriter=ve.SocketMessageReader=ve.PortMessageWriter=ve.PortMessageReader=ve.IPCMessageWriter=ve.IPCMessageReader=void 0;var ri=sp();ri.default.install();var ap=require("path"),BC=require("os"),GC=require("crypto"),es=require("net"),Zt=Jo();VC(Jo(),ve);var Uc=class extends Zt.AbstractMessageReader{constructor(e){super(),this.process=e;let t=this.process;t.on("error",r=>this.fireError(r)),t.on("close",()=>this.fireClose())}listen(e){return this.process.on("message",e),Zt.Disposable.create(()=>this.process.off("message",e))}};ve.IPCMessageReader=Uc;var Hc=class extends Zt.AbstractMessageWriter{constructor(e){super(),this.process=e,this.errorCount=0;let t=this.process;t.on("error",r=>this.fireError(r)),t.on("close",()=>this.fireClose)}write(e){try{return typeof this.process.send=="function"&&this.process.send(e,void 0,void 0,t=>{t?(this.errorCount++,this.handleError(t,e)):this.errorCount=0}),Promise.resolve()}catch(t){return this.handleError(t,e),Promise.reject(t)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){}};ve.IPCMessageWriter=Hc;var Wc=class extends Zt.AbstractMessageReader{constructor(e){super(),this.onData=new Zt.Emitter,e.on("close",()=>this.fireClose),e.on("error",t=>this.fireError(t)),e.on("message",t=>{this.onData.fire(t)})}listen(e){return this.onData.event(e)}};ve.PortMessageReader=Wc;var zc=class extends Zt.AbstractMessageWriter{constructor(e){super(),this.port=e,this.errorCount=0,e.on("close",()=>this.fireClose()),e.on("error",t=>this.fireError(t))}write(e){try{return this.port.postMessage(e),Promise.resolve()}catch(t){return this.handleError(t,e),Promise.reject(t)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){}};ve.PortMessageWriter=zc;var Ir=class extends Zt.ReadableStreamMessageReader{constructor(e,t="utf-8"){super((0,ri.default)().stream.asReadableStream(e),t)}};ve.SocketMessageReader=Ir;var Or=class extends Zt.WriteableStreamMessageWriter{constructor(e,t){super((0,ri.default)().stream.asWritableStream(e),t),this.socket=e}dispose(){super.dispose(),this.socket.destroy()}};ve.SocketMessageWriter=Or;var Yo=class extends Zt.ReadableStreamMessageReader{constructor(e,t){super((0,ri.default)().stream.asReadableStream(e),t)}};ve.StreamMessageReader=Yo;var Zo=class extends Zt.WriteableStreamMessageWriter{constructor(e,t){super((0,ri.default)().stream.asWritableStream(e),t)}};ve.StreamMessageWriter=Zo;var cp=process.env.XDG_RUNTIME_DIR,XC=new Map([["linux",107],["darwin",103]]);function JC(){let n=(0,GC.randomBytes)(21).toString("hex");if(process.platform==="win32")return`\\\\.\\pipe\\vscode-jsonrpc-${n}-sock`;let e;cp?e=ap.join(cp,`vscode-ipc-${n}.sock`):e=ap.join(BC.tmpdir(),`vscode-${n}.sock`);let t=XC.get(process.platform);return t!==void 0&&e.length>t&&(0,ri.default)().console.warn(`WARNING: IPC handle "${e}" is longer than ${t} characters.`),e}ve.generateRandomPipeName=JC;function QC(n,e="utf-8"){let t,r=new Promise((i,o)=>{t=i});return new Promise((i,o)=>{let s=(0,es.createServer)(a=>{s.close(),t([new Ir(a,e),new Or(a,e)])});s.on("error",o),s.listen(n,()=>{s.removeListener("error",o),i({onConnected:()=>r})})})}ve.createClientPipeTransport=QC;function YC(n,e="utf-8"){let t=(0,es.createConnection)(n);return[new Ir(t,e),new Or(t,e)]}ve.createServerPipeTransport=YC;function ZC(n,e="utf-8"){let t,r=new Promise((i,o)=>{t=i});return new Promise((i,o)=>{let s=(0,es.createServer)(a=>{s.close(),t([new Ir(a,e),new Or(a,e)])});s.on("error",o),s.listen(n,"127.0.0.1",()=>{s.removeListener("error",o),i({onConnected:()=>r})})})}ve.createClientSocketTransport=ZC;function ew(n,e="utf-8"){let t=(0,es.createConnection)(n,"127.0.0.1");return[new Ir(t,e),new Or(t,e)]}ve.createServerSocketTransport=ew;function tw(n){let e=n;return e.read!==void 0&&e.addListener!==void 0}function nw(n){let e=n;return e.write!==void 0&&e.addListener!==void 0}function rw(n,e,t,r){t||(t=Zt.NullLogger);let i=tw(n)?new Yo(n):n,o=nw(e)?new Zo(e):e;return Zt.ConnectionStrategy.is(r)&&(r={connectionStrategy:r}),(0,Zt.createMessageConnection)(i,o,t,r)}ve.createMessageConnection=rw});var Kc=O((Nx,up)=>{"use strict";up.exports=Fr()});var ns=O((dp,ts)=>{(function(n){if(typeof ts=="object"&&typeof ts.exports=="object"){var e=n(require,dp);e!==void 0&&(ts.exports=e)}else typeof define=="function"&&define.amd&&define(["require","exports"],n)})(function(n,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TextDocument=e.EOL=e.WorkspaceFolder=e.InlayHint=e.InlayHintLabelPart=e.InlayHintKind=e.InlineValueContext=e.InlineValueEvaluatableExpression=e.InlineValueVariableLookup=e.InlineValueText=e.SemanticTokens=e.SemanticTokenModifiers=e.SemanticTokenTypes=e.SelectionRange=e.DocumentLink=e.FormattingOptions=e.CodeLens=e.CodeAction=e.CodeActionContext=e.CodeActionTriggerKind=e.CodeActionKind=e.DocumentSymbol=e.WorkspaceSymbol=e.SymbolInformation=e.SymbolTag=e.SymbolKind=e.DocumentHighlight=e.DocumentHighlightKind=e.SignatureInformation=e.ParameterInformation=e.Hover=e.MarkedString=e.CompletionList=e.CompletionItem=e.CompletionItemLabelDetails=e.InsertTextMode=e.InsertReplaceEdit=e.CompletionItemTag=e.InsertTextFormat=e.CompletionItemKind=e.MarkupContent=e.MarkupKind=e.TextDocumentItem=e.OptionalVersionedTextDocumentIdentifier=e.VersionedTextDocumentIdentifier=e.TextDocumentIdentifier=e.WorkspaceChange=e.WorkspaceEdit=e.DeleteFile=e.RenameFile=e.CreateFile=e.TextDocumentEdit=e.AnnotatedTextEdit=e.ChangeAnnotationIdentifier=e.ChangeAnnotation=e.TextEdit=e.Command=e.Diagnostic=e.CodeDescription=e.DiagnosticTag=e.DiagnosticSeverity=e.DiagnosticRelatedInformation=e.FoldingRange=e.FoldingRangeKind=e.ColorPresentation=e.ColorInformation=e.Color=e.LocationLink=e.Location=e.Range=e.Position=e.uinteger=e.integer=e.URI=e.DocumentUri=void 0;var t;(function(h){function D(R){return typeof R=="string"}h.is=D})(t=e.DocumentUri||(e.DocumentUri={}));var r;(function(h){function D(R){return typeof R=="string"}h.is=D})(r=e.URI||(e.URI={}));var i;(function(h){h.MIN_VALUE=-2147483648,h.MAX_VALUE=2147483647;function D(R){return typeof R=="number"&&h.MIN_VALUE<=R&&R<=h.MAX_VALUE}h.is=D})(i=e.integer||(e.integer={}));var o;(function(h){h.MIN_VALUE=0,h.MAX_VALUE=2147483647;function D(R){return typeof R=="number"&&h.MIN_VALUE<=R&&R<=h.MAX_VALUE}h.is=D})(o=e.uinteger||(e.uinteger={}));var s;(function(h){function D(y,l){return y===Number.MAX_VALUE&&(y=o.MAX_VALUE),l===Number.MAX_VALUE&&(l=o.MAX_VALUE),{line:y,character:l}}h.create=D;function R(y){var l=y;return _.objectLiteral(l)&&_.uinteger(l.line)&&_.uinteger(l.character)}h.is=R})(s=e.Position||(e.Position={}));var a;(function(h){function D(y,l,P,M){if(_.uinteger(y)&&_.uinteger(l)&&_.uinteger(P)&&_.uinteger(M))return{start:s.create(y,l),end:s.create(P,M)};if(s.is(y)&&s.is(l))return{start:y,end:l};throw new Error("Range#create called with invalid arguments[".concat(y,", ").concat(l,", ").concat(P,", ").concat(M,"]"))}h.create=D;function R(y){var l=y;return _.objectLiteral(l)&&s.is(l.start)&&s.is(l.end)}h.is=R})(a=e.Range||(e.Range={}));var c;(function(h){function D(y,l){return{uri:y,range:l}}h.create=D;function R(y){var l=y;return _.objectLiteral(l)&&a.is(l.range)&&(_.string(l.uri)||_.undefined(l.uri))}h.is=R})(c=e.Location||(e.Location={}));var d;(function(h){function D(y,l,P,M){return{targetUri:y,targetRange:l,targetSelectionRange:P,originSelectionRange:M}}h.create=D;function R(y){var l=y;return _.objectLiteral(l)&&a.is(l.targetRange)&&_.string(l.targetUri)&&a.is(l.targetSelectionRange)&&(a.is(l.originSelectionRange)||_.undefined(l.originSelectionRange))}h.is=R})(d=e.LocationLink||(e.LocationLink={}));var f;(function(h){function D(y,l,P,M){return{red:y,green:l,blue:P,alpha:M}}h.create=D;function R(y){var l=y;return _.objectLiteral(l)&&_.numberRange(l.red,0,1)&&_.numberRange(l.green,0,1)&&_.numberRange(l.blue,0,1)&&_.numberRange(l.alpha,0,1)}h.is=R})(f=e.Color||(e.Color={}));var g;(function(h){function D(y,l){return{range:y,color:l}}h.create=D;function R(y){var l=y;return _.objectLiteral(l)&&a.is(l.range)&&f.is(l.color)}h.is=R})(g=e.ColorInformation||(e.ColorInformation={}));var m;(function(h){function D(y,l,P){return{label:y,textEdit:l,additionalTextEdits:P}}h.create=D;function R(y){var l=y;return _.objectLiteral(l)&&_.string(l.label)&&(_.undefined(l.textEdit)||W.is(l))&&(_.undefined(l.additionalTextEdits)||_.typedArray(l.additionalTextEdits,W.is))}h.is=R})(m=e.ColorPresentation||(e.ColorPresentation={}));var C;(function(h){h.Comment="comment",h.Imports="imports",h.Region="region"})(C=e.FoldingRangeKind||(e.FoldingRangeKind={}));var w;(function(h){function D(y,l,P,M,oe,Ae){var Fe={startLine:y,endLine:l};return _.defined(P)&&(Fe.startCharacter=P),_.defined(M)&&(Fe.endCharacter=M),_.defined(oe)&&(Fe.kind=oe),_.defined(Ae)&&(Fe.collapsedText=Ae),Fe}h.create=D;function R(y){var l=y;return _.objectLiteral(l)&&_.uinteger(l.startLine)&&_.uinteger(l.startLine)&&(_.undefined(l.startCharacter)||_.uinteger(l.startCharacter))&&(_.undefined(l.endCharacter)||_.uinteger(l.endCharacter))&&(_.undefined(l.kind)||_.string(l.kind))}h.is=R})(w=e.FoldingRange||(e.FoldingRange={}));var T;(function(h){function D(y,l){return{location:y,message:l}}h.create=D;function R(y){var l=y;return _.defined(l)&&c.is(l.location)&&_.string(l.message)}h.is=R})(T=e.DiagnosticRelatedInformation||(e.DiagnosticRelatedInformation={}));var S;(function(h){h.Error=1,h.Warning=2,h.Information=3,h.Hint=4})(S=e.DiagnosticSeverity||(e.DiagnosticSeverity={}));var q;(function(h){h.Unnecessary=1,h.Deprecated=2})(q=e.DiagnosticTag||(e.DiagnosticTag={}));var F;(function(h){function D(R){var y=R;return _.objectLiteral(y)&&_.string(y.href)}h.is=D})(F=e.CodeDescription||(e.CodeDescription={}));var I;(function(h){function D(y,l,P,M,oe,Ae){var Fe={range:y,message:l};return _.defined(P)&&(Fe.severity=P),_.defined(M)&&(Fe.code=M),_.defined(oe)&&(Fe.source=oe),_.defined(Ae)&&(Fe.relatedInformation=Ae),Fe}h.create=D;function R(y){var l,P=y;return _.defined(P)&&a.is(P.range)&&_.string(P.message)&&(_.number(P.severity)||_.undefined(P.severity))&&(_.integer(P.code)||_.string(P.code)||_.undefined(P.code))&&(_.undefined(P.codeDescription)||_.string((l=P.codeDescription)===null||l===void 0?void 0:l.href))&&(_.string(P.source)||_.undefined(P.source))&&(_.undefined(P.relatedInformation)||_.typedArray(P.relatedInformation,T.is))}h.is=R})(I=e.Diagnostic||(e.Diagnostic={}));var A;(function(h){function D(y,l){for(var P=[],M=2;M0&&(oe.arguments=P),oe}h.create=D;function R(y){var l=y;return _.defined(l)&&_.string(l.title)&&_.string(l.command)}h.is=R})(A=e.Command||(e.Command={}));var W;(function(h){function D(P,M){return{range:P,newText:M}}h.replace=D;function R(P,M){return{range:{start:P,end:P},newText:M}}h.insert=R;function y(P){return{range:P,newText:""}}h.del=y;function l(P){var M=P;return _.objectLiteral(M)&&_.string(M.newText)&&a.is(M.range)}h.is=l})(W=e.TextEdit||(e.TextEdit={}));var ne;(function(h){function D(y,l,P){var M={label:y};return l!==void 0&&(M.needsConfirmation=l),P!==void 0&&(M.description=P),M}h.create=D;function R(y){var l=y;return _.objectLiteral(l)&&_.string(l.label)&&(_.boolean(l.needsConfirmation)||l.needsConfirmation===void 0)&&(_.string(l.description)||l.description===void 0)}h.is=R})(ne=e.ChangeAnnotation||(e.ChangeAnnotation={}));var K;(function(h){function D(R){var y=R;return _.string(y)}h.is=D})(K=e.ChangeAnnotationIdentifier||(e.ChangeAnnotationIdentifier={}));var Q;(function(h){function D(P,M,oe){return{range:P,newText:M,annotationId:oe}}h.replace=D;function R(P,M,oe){return{range:{start:P,end:P},newText:M,annotationId:oe}}h.insert=R;function y(P,M){return{range:P,newText:"",annotationId:M}}h.del=y;function l(P){var M=P;return W.is(M)&&(ne.is(M.annotationId)||K.is(M.annotationId))}h.is=l})(Q=e.AnnotatedTextEdit||(e.AnnotatedTextEdit={}));var ie;(function(h){function D(y,l){return{textDocument:y,edits:l}}h.create=D;function R(y){var l=y;return _.defined(l)&&kt.is(l.textDocument)&&Array.isArray(l.edits)}h.is=R})(ie=e.TextDocumentEdit||(e.TextDocumentEdit={}));var tt;(function(h){function D(y,l,P){var M={kind:"create",uri:y};return l!==void 0&&(l.overwrite!==void 0||l.ignoreIfExists!==void 0)&&(M.options=l),P!==void 0&&(M.annotationId=P),M}h.create=D;function R(y){var l=y;return l&&l.kind==="create"&&_.string(l.uri)&&(l.options===void 0||(l.options.overwrite===void 0||_.boolean(l.options.overwrite))&&(l.options.ignoreIfExists===void 0||_.boolean(l.options.ignoreIfExists)))&&(l.annotationId===void 0||K.is(l.annotationId))}h.is=R})(tt=e.CreateFile||(e.CreateFile={}));var We;(function(h){function D(y,l,P,M){var oe={kind:"rename",oldUri:y,newUri:l};return P!==void 0&&(P.overwrite!==void 0||P.ignoreIfExists!==void 0)&&(oe.options=P),M!==void 0&&(oe.annotationId=M),oe}h.create=D;function R(y){var l=y;return l&&l.kind==="rename"&&_.string(l.oldUri)&&_.string(l.newUri)&&(l.options===void 0||(l.options.overwrite===void 0||_.boolean(l.options.overwrite))&&(l.options.ignoreIfExists===void 0||_.boolean(l.options.ignoreIfExists)))&&(l.annotationId===void 0||K.is(l.annotationId))}h.is=R})(We=e.RenameFile||(e.RenameFile={}));var nt;(function(h){function D(y,l,P){var M={kind:"delete",uri:y};return l!==void 0&&(l.recursive!==void 0||l.ignoreIfNotExists!==void 0)&&(M.options=l),P!==void 0&&(M.annotationId=P),M}h.create=D;function R(y){var l=y;return l&&l.kind==="delete"&&_.string(l.uri)&&(l.options===void 0||(l.options.recursive===void 0||_.boolean(l.options.recursive))&&(l.options.ignoreIfNotExists===void 0||_.boolean(l.options.ignoreIfNotExists)))&&(l.annotationId===void 0||K.is(l.annotationId))}h.is=R})(nt=e.DeleteFile||(e.DeleteFile={}));var ln;(function(h){function D(R){var y=R;return y&&(y.changes!==void 0||y.documentChanges!==void 0)&&(y.documentChanges===void 0||y.documentChanges.every(function(l){return _.string(l.kind)?tt.is(l)||We.is(l)||nt.is(l):ie.is(l)}))}h.is=D})(ln=e.WorkspaceEdit||(e.WorkspaceEdit={}));var Pt=function(){function h(D,R){this.edits=D,this.changeAnnotations=R}return h.prototype.insert=function(D,R,y){var l,P;if(y===void 0?l=W.insert(D,R):K.is(y)?(P=y,l=Q.insert(D,R,y)):(this.assertChangeAnnotations(this.changeAnnotations),P=this.changeAnnotations.manage(y),l=Q.insert(D,R,P)),this.edits.push(l),P!==void 0)return P},h.prototype.replace=function(D,R,y){var l,P;if(y===void 0?l=W.replace(D,R):K.is(y)?(P=y,l=Q.replace(D,R,y)):(this.assertChangeAnnotations(this.changeAnnotations),P=this.changeAnnotations.manage(y),l=Q.replace(D,R,P)),this.edits.push(l),P!==void 0)return P},h.prototype.delete=function(D,R){var y,l;if(R===void 0?y=W.del(D):K.is(R)?(l=R,y=Q.del(D,R)):(this.assertChangeAnnotations(this.changeAnnotations),l=this.changeAnnotations.manage(R),y=Q.del(D,l)),this.edits.push(y),l!==void 0)return l},h.prototype.add=function(D){this.edits.push(D)},h.prototype.all=function(){return this.edits},h.prototype.clear=function(){this.edits.splice(0,this.edits.length)},h.prototype.assertChangeAnnotations=function(D){if(D===void 0)throw new Error("Text edit change is not configured to manage change annotations.")},h}(),mt=function(){function h(D){this._annotations=D===void 0?Object.create(null):D,this._counter=0,this._size=0}return h.prototype.all=function(){return this._annotations},Object.defineProperty(h.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),h.prototype.manage=function(D,R){var y;if(K.is(D)?y=D:(y=this.nextId(),R=D),this._annotations[y]!==void 0)throw new Error("Id ".concat(y," is already in use."));if(R===void 0)throw new Error("No annotation provided for id ".concat(y));return this._annotations[y]=R,this._size++,y},h.prototype.nextId=function(){return this._counter++,this._counter.toString()},h}(),Et=function(){function h(D){var R=this;this._textEditChanges=Object.create(null),D!==void 0?(this._workspaceEdit=D,D.documentChanges?(this._changeAnnotations=new mt(D.changeAnnotations),D.changeAnnotations=this._changeAnnotations.all(),D.documentChanges.forEach(function(y){if(ie.is(y)){var l=new Pt(y.edits,R._changeAnnotations);R._textEditChanges[y.textDocument.uri]=l}})):D.changes&&Object.keys(D.changes).forEach(function(y){var l=new Pt(D.changes[y]);R._textEditChanges[y]=l})):this._workspaceEdit={}}return Object.defineProperty(h.prototype,"edit",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),h.prototype.getTextEditChange=function(D){if(kt.is(D)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var R={uri:D.uri,version:D.version},y=this._textEditChanges[R.uri];if(!y){var l=[],P={textDocument:R,edits:l};this._workspaceEdit.documentChanges.push(P),y=new Pt(l,this._changeAnnotations),this._textEditChanges[R.uri]=y}return y}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");var y=this._textEditChanges[D];if(!y){var l=[];this._workspaceEdit.changes[D]=l,y=new Pt(l),this._textEditChanges[D]=y}return y}},h.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new mt,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},h.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},h.prototype.createFile=function(D,R,y){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var l;ne.is(R)||K.is(R)?l=R:y=R;var P,M;if(l===void 0?P=tt.create(D,y):(M=K.is(l)?l:this._changeAnnotations.manage(l),P=tt.create(D,y,M)),this._workspaceEdit.documentChanges.push(P),M!==void 0)return M},h.prototype.renameFile=function(D,R,y,l){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var P;ne.is(y)||K.is(y)?P=y:l=y;var M,oe;if(P===void 0?M=We.create(D,R,l):(oe=K.is(P)?P:this._changeAnnotations.manage(P),M=We.create(D,R,l,oe)),this._workspaceEdit.documentChanges.push(M),oe!==void 0)return oe},h.prototype.deleteFile=function(D,R,y){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var l;ne.is(R)||K.is(R)?l=R:y=R;var P,M;if(l===void 0?P=nt.create(D,y):(M=K.is(l)?l:this._changeAnnotations.manage(l),P=nt.create(D,y,M)),this._workspaceEdit.documentChanges.push(P),M!==void 0)return M},h}();e.WorkspaceChange=Et;var _n;(function(h){function D(y){return{uri:y}}h.create=D;function R(y){var l=y;return _.defined(l)&&_.string(l.uri)}h.is=R})(_n=e.TextDocumentIdentifier||(e.TextDocumentIdentifier={}));var Qe;(function(h){function D(y,l){return{uri:y,version:l}}h.create=D;function R(y){var l=y;return _.defined(l)&&_.string(l.uri)&&_.integer(l.version)}h.is=R})(Qe=e.VersionedTextDocumentIdentifier||(e.VersionedTextDocumentIdentifier={}));var kt;(function(h){function D(y,l){return{uri:y,version:l}}h.create=D;function R(y){var l=y;return _.defined(l)&&_.string(l.uri)&&(l.version===null||_.integer(l.version))}h.is=R})(kt=e.OptionalVersionedTextDocumentIdentifier||(e.OptionalVersionedTextDocumentIdentifier={}));var Ht;(function(h){function D(y,l,P,M){return{uri:y,languageId:l,version:P,text:M}}h.create=D;function R(y){var l=y;return _.defined(l)&&_.string(l.uri)&&_.string(l.languageId)&&_.integer(l.version)&&_.string(l.text)}h.is=R})(Ht=e.TextDocumentItem||(e.TextDocumentItem={}));var xn;(function(h){h.PlainText="plaintext",h.Markdown="markdown";function D(R){var y=R;return y===h.PlainText||y===h.Markdown}h.is=D})(xn=e.MarkupKind||(e.MarkupKind={}));var Dt;(function(h){function D(R){var y=R;return _.objectLiteral(R)&&xn.is(y.kind)&&_.string(y.value)}h.is=D})(Dt=e.MarkupContent||(e.MarkupContent={}));var _r;(function(h){h.Text=1,h.Method=2,h.Function=3,h.Constructor=4,h.Field=5,h.Variable=6,h.Class=7,h.Interface=8,h.Module=9,h.Property=10,h.Unit=11,h.Value=12,h.Enum=13,h.Keyword=14,h.Snippet=15,h.Color=16,h.File=17,h.Reference=18,h.Folder=19,h.EnumMember=20,h.Constant=21,h.Struct=22,h.Event=23,h.Operator=24,h.TypeParameter=25})(_r=e.CompletionItemKind||(e.CompletionItemKind={}));var ar;(function(h){h.PlainText=1,h.Snippet=2})(ar=e.InsertTextFormat||(e.InsertTextFormat={}));var jn;(function(h){h.Deprecated=1})(jn=e.CompletionItemTag||(e.CompletionItemTag={}));var $n;(function(h){function D(y,l,P){return{newText:y,insert:l,replace:P}}h.create=D;function R(y){var l=y;return l&&_.string(l.newText)&&a.is(l.insert)&&a.is(l.replace)}h.is=R})($n=e.InsertReplaceEdit||(e.InsertReplaceEdit={}));var Un;(function(h){h.asIs=1,h.adjustIndentation=2})(Un=e.InsertTextMode||(e.InsertTextMode={}));var xr;(function(h){function D(R){var y=R;return y&&(_.string(y.detail)||y.detail===void 0)&&(_.string(y.description)||y.description===void 0)}h.is=D})(xr=e.CompletionItemLabelDetails||(e.CompletionItemLabelDetails={}));var cr;(function(h){function D(R){return{label:R}}h.create=D})(cr=e.CompletionItem||(e.CompletionItem={}));var ur;(function(h){function D(R,y){return{items:R||[],isIncomplete:!!y}}h.create=D})(ur=e.CompletionList||(e.CompletionList={}));var Hn;(function(h){function D(y){return y.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}h.fromPlainText=D;function R(y){var l=y;return _.string(l)||_.objectLiteral(l)&&_.string(l.language)&&_.string(l.value)}h.is=R})(Hn=e.MarkedString||(e.MarkedString={}));var lt;(function(h){function D(R){var y=R;return!!y&&_.objectLiteral(y)&&(Dt.is(y.contents)||Hn.is(y.contents)||_.typedArray(y.contents,Hn.is))&&(R.range===void 0||a.is(R.range))}h.is=D})(lt=e.Hover||(e.Hover={}));var dr;(function(h){function D(R,y){return y?{label:R,documentation:y}:{label:R}}h.create=D})(dr=e.ParameterInformation||(e.ParameterInformation={}));var Pn;(function(h){function D(R,y){for(var l=[],P=2;P=0;Yt--){var zt=Ae[Yt],pn=P.offsetAt(zt.range.start),he=P.offsetAt(zt.range.end);if(he<=Fe)oe=oe.substring(0,pn)+zt.newText+oe.substring(he,oe.length);else throw new Error("Overlapping edit");Fe=pn}return oe}h.applyEdits=y;function l(P,M){if(P.length<=1)return P;var oe=P.length/2|0,Ae=P.slice(0,oe),Fe=P.slice(oe);l(Ae,M),l(Fe,M);for(var Yt=0,zt=0,pn=0;Yt0&&D.push(R.length),this._lineOffsets=D}return this._lineOffsets},h.prototype.positionAt=function(D){D=Math.max(Math.min(D,this._content.length),0);var R=this.getLineOffsets(),y=0,l=R.length;if(l===0)return s.create(0,D);for(;yD?l=P:y=P+1}var M=y-1;return s.create(M,D-R[M])},h.prototype.offsetAt=function(D){var R=this.getLineOffsets();if(D.line>=R.length)return this._content.length;if(D.line<0)return 0;var y=R[D.line],l=D.line+1"u"}h.undefined=y;function l(he){return he===!0||he===!1}h.boolean=l;function P(he){return D.call(he)==="[object String]"}h.string=P;function M(he){return D.call(he)==="[object Number]"}h.number=M;function oe(he,hr,Qr){return D.call(he)==="[object Number]"&&hr<=he&&he<=Qr}h.numberRange=oe;function Ae(he){return D.call(he)==="[object Number]"&&-2147483648<=he&&he<=2147483647}h.integer=Ae;function Fe(he){return D.call(he)==="[object Number]"&&0<=he&&he<=2147483647}h.uinteger=Fe;function Yt(he){return D.call(he)==="[object Function]"}h.func=Yt;function zt(he){return he!==null&&typeof he=="object"}h.objectLiteral=zt;function pn(he,hr){return Array.isArray(he)&&he.every(hr)}h.typedArray=pn})(_||(_={}))})});var Ve=O(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});Ft.ProtocolNotificationType=Ft.ProtocolNotificationType0=Ft.ProtocolRequestType=Ft.ProtocolRequestType0=Ft.RegistrationType=Ft.MessageDirection=void 0;var ii=Fr(),iw;(function(n){n.clientToServer="clientToServer",n.serverToClient="serverToClient",n.both="both"})(iw=Ft.MessageDirection||(Ft.MessageDirection={}));var Vc=class{constructor(e){this.method=e}};Ft.RegistrationType=Vc;var Bc=class extends ii.RequestType0{constructor(e){super(e)}};Ft.ProtocolRequestType0=Bc;var Gc=class extends ii.RequestType{constructor(e){super(e,ii.ParameterStructures.byName)}};Ft.ProtocolRequestType=Gc;var Xc=class extends ii.NotificationType0{constructor(e){super(e)}};Ft.ProtocolNotificationType0=Xc;var Jc=class extends ii.NotificationType{constructor(e){super(e,ii.ParameterStructures.byName)}};Ft.ProtocolNotificationType=Jc});var rs=O(st=>{"use strict";Object.defineProperty(st,"__esModule",{value:!0});st.objectLiteral=st.typedArray=st.stringArray=st.array=st.func=st.error=st.number=st.string=st.boolean=void 0;function ow(n){return n===!0||n===!1}st.boolean=ow;function lp(n){return typeof n=="string"||n instanceof String}st.string=lp;function sw(n){return typeof n=="number"||n instanceof Number}st.number=sw;function aw(n){return n instanceof Error}st.error=aw;function cw(n){return typeof n=="function"}st.func=cw;function fp(n){return Array.isArray(n)}st.array=fp;function uw(n){return fp(n)&&n.every(e=>lp(e))}st.stringArray=uw;function dw(n,e){return Array.isArray(n)&&n.every(e)}st.typedArray=dw;function lw(n){return n!==null&&typeof n=="object"}st.objectLiteral=lw});var hp=O(zi=>{"use strict";Object.defineProperty(zi,"__esModule",{value:!0});zi.ImplementationRequest=void 0;var pp=Ve(),fw;(function(n){n.method="textDocument/implementation",n.messageDirection=pp.MessageDirection.clientToServer,n.type=new pp.ProtocolRequestType(n.method)})(fw=zi.ImplementationRequest||(zi.ImplementationRequest={}))});var mp=O(Ki=>{"use strict";Object.defineProperty(Ki,"__esModule",{value:!0});Ki.TypeDefinitionRequest=void 0;var gp=Ve(),pw;(function(n){n.method="textDocument/typeDefinition",n.messageDirection=gp.MessageDirection.clientToServer,n.type=new gp.ProtocolRequestType(n.method)})(pw=Ki.TypeDefinitionRequest||(Ki.TypeDefinitionRequest={}))});var vp=O(mr=>{"use strict";Object.defineProperty(mr,"__esModule",{value:!0});mr.DidChangeWorkspaceFoldersNotification=mr.WorkspaceFoldersRequest=void 0;var is=Ve(),hw;(function(n){n.method="workspace/workspaceFolders",n.messageDirection=is.MessageDirection.serverToClient,n.type=new is.ProtocolRequestType0(n.method)})(hw=mr.WorkspaceFoldersRequest||(mr.WorkspaceFoldersRequest={}));var gw;(function(n){n.method="workspace/didChangeWorkspaceFolders",n.messageDirection=is.MessageDirection.clientToServer,n.type=new is.ProtocolNotificationType(n.method)})(gw=mr.DidChangeWorkspaceFoldersNotification||(mr.DidChangeWorkspaceFoldersNotification={}))});var Cp=O(Vi=>{"use strict";Object.defineProperty(Vi,"__esModule",{value:!0});Vi.ConfigurationRequest=void 0;var yp=Ve(),mw;(function(n){n.method="workspace/configuration",n.messageDirection=yp.MessageDirection.serverToClient,n.type=new yp.ProtocolRequestType(n.method)})(mw=Vi.ConfigurationRequest||(Vi.ConfigurationRequest={}))});var wp=O(vr=>{"use strict";Object.defineProperty(vr,"__esModule",{value:!0});vr.ColorPresentationRequest=vr.DocumentColorRequest=void 0;var os=Ve(),vw;(function(n){n.method="textDocument/documentColor",n.messageDirection=os.MessageDirection.clientToServer,n.type=new os.ProtocolRequestType(n.method)})(vw=vr.DocumentColorRequest||(vr.DocumentColorRequest={}));var yw;(function(n){n.method="textDocument/colorPresentation",n.messageDirection=os.MessageDirection.clientToServer,n.type=new os.ProtocolRequestType(n.method)})(yw=vr.ColorPresentationRequest||(vr.ColorPresentationRequest={}))});var Dp=O(Bi=>{"use strict";Object.defineProperty(Bi,"__esModule",{value:!0});Bi.FoldingRangeRequest=void 0;var bp=Ve(),Cw;(function(n){n.method="textDocument/foldingRange",n.messageDirection=bp.MessageDirection.clientToServer,n.type=new bp.ProtocolRequestType(n.method)})(Cw=Bi.FoldingRangeRequest||(Bi.FoldingRangeRequest={}))});var Rp=O(Gi=>{"use strict";Object.defineProperty(Gi,"__esModule",{value:!0});Gi.DeclarationRequest=void 0;var Tp=Ve(),ww;(function(n){n.method="textDocument/declaration",n.messageDirection=Tp.MessageDirection.clientToServer,n.type=new Tp.ProtocolRequestType(n.method)})(ww=Gi.DeclarationRequest||(Gi.DeclarationRequest={}))});var _p=O(Xi=>{"use strict";Object.defineProperty(Xi,"__esModule",{value:!0});Xi.SelectionRangeRequest=void 0;var Sp=Ve(),bw;(function(n){n.method="textDocument/selectionRange",n.messageDirection=Sp.MessageDirection.clientToServer,n.type=new Sp.ProtocolRequestType(n.method)})(bw=Xi.SelectionRangeRequest||(Xi.SelectionRangeRequest={}))});var xp=O(mn=>{"use strict";Object.defineProperty(mn,"__esModule",{value:!0});mn.WorkDoneProgressCancelNotification=mn.WorkDoneProgressCreateRequest=mn.WorkDoneProgress=void 0;var Dw=Fr(),ss=Ve(),Tw;(function(n){n.type=new Dw.ProgressType;function e(t){return t===n.type}n.is=e})(Tw=mn.WorkDoneProgress||(mn.WorkDoneProgress={}));var Rw;(function(n){n.method="window/workDoneProgress/create",n.messageDirection=ss.MessageDirection.serverToClient,n.type=new ss.ProtocolRequestType(n.method)})(Rw=mn.WorkDoneProgressCreateRequest||(mn.WorkDoneProgressCreateRequest={}));var Sw;(function(n){n.method="window/workDoneProgress/cancel",n.messageDirection=ss.MessageDirection.clientToServer,n.type=new ss.ProtocolNotificationType(n.method)})(Sw=mn.WorkDoneProgressCancelNotification||(mn.WorkDoneProgressCancelNotification={}))});var Pp=O(vn=>{"use strict";Object.defineProperty(vn,"__esModule",{value:!0});vn.CallHierarchyOutgoingCallsRequest=vn.CallHierarchyIncomingCallsRequest=vn.CallHierarchyPrepareRequest=void 0;var oi=Ve(),_w;(function(n){n.method="textDocument/prepareCallHierarchy",n.messageDirection=oi.MessageDirection.clientToServer,n.type=new oi.ProtocolRequestType(n.method)})(_w=vn.CallHierarchyPrepareRequest||(vn.CallHierarchyPrepareRequest={}));var xw;(function(n){n.method="callHierarchy/incomingCalls",n.messageDirection=oi.MessageDirection.clientToServer,n.type=new oi.ProtocolRequestType(n.method)})(xw=vn.CallHierarchyIncomingCallsRequest||(vn.CallHierarchyIncomingCallsRequest={}));var Pw;(function(n){n.method="callHierarchy/outgoingCalls",n.messageDirection=oi.MessageDirection.clientToServer,n.type=new oi.ProtocolRequestType(n.method)})(Pw=vn.CallHierarchyOutgoingCallsRequest||(vn.CallHierarchyOutgoingCallsRequest={}))});var Ep=O(at=>{"use strict";Object.defineProperty(at,"__esModule",{value:!0});at.SemanticTokensRefreshRequest=at.SemanticTokensRangeRequest=at.SemanticTokensDeltaRequest=at.SemanticTokensRequest=at.SemanticTokensRegistrationType=at.TokenFormat=void 0;var Jn=Ve(),Ew;(function(n){n.Relative="relative"})(Ew=at.TokenFormat||(at.TokenFormat={}));var as;(function(n){n.method="textDocument/semanticTokens",n.type=new Jn.RegistrationType(n.method)})(as=at.SemanticTokensRegistrationType||(at.SemanticTokensRegistrationType={}));var kw;(function(n){n.method="textDocument/semanticTokens/full",n.messageDirection=Jn.MessageDirection.clientToServer,n.type=new Jn.ProtocolRequestType(n.method),n.registrationMethod=as.method})(kw=at.SemanticTokensRequest||(at.SemanticTokensRequest={}));var qw;(function(n){n.method="textDocument/semanticTokens/full/delta",n.messageDirection=Jn.MessageDirection.clientToServer,n.type=new Jn.ProtocolRequestType(n.method),n.registrationMethod=as.method})(qw=at.SemanticTokensDeltaRequest||(at.SemanticTokensDeltaRequest={}));var Iw;(function(n){n.method="textDocument/semanticTokens/range",n.messageDirection=Jn.MessageDirection.clientToServer,n.type=new Jn.ProtocolRequestType(n.method),n.registrationMethod=as.method})(Iw=at.SemanticTokensRangeRequest||(at.SemanticTokensRangeRequest={}));var Ow;(function(n){n.method="workspace/semanticTokens/refresh",n.messageDirection=Jn.MessageDirection.serverToClient,n.type=new Jn.ProtocolRequestType0(n.method)})(Ow=at.SemanticTokensRefreshRequest||(at.SemanticTokensRefreshRequest={}))});var qp=O(Ji=>{"use strict";Object.defineProperty(Ji,"__esModule",{value:!0});Ji.ShowDocumentRequest=void 0;var kp=Ve(),Fw;(function(n){n.method="window/showDocument",n.messageDirection=kp.MessageDirection.serverToClient,n.type=new kp.ProtocolRequestType(n.method)})(Fw=Ji.ShowDocumentRequest||(Ji.ShowDocumentRequest={}))});var Op=O(Qi=>{"use strict";Object.defineProperty(Qi,"__esModule",{value:!0});Qi.LinkedEditingRangeRequest=void 0;var Ip=Ve(),Lw;(function(n){n.method="textDocument/linkedEditingRange",n.messageDirection=Ip.MessageDirection.clientToServer,n.type=new Ip.ProtocolRequestType(n.method)})(Lw=Qi.LinkedEditingRangeRequest||(Qi.LinkedEditingRangeRequest={}))});var Fp=O(Be=>{"use strict";Object.defineProperty(Be,"__esModule",{value:!0});Be.WillDeleteFilesRequest=Be.DidDeleteFilesNotification=Be.DidRenameFilesNotification=Be.WillRenameFilesRequest=Be.DidCreateFilesNotification=Be.WillCreateFilesRequest=Be.FileOperationPatternKind=void 0;var an=Ve(),Nw;(function(n){n.file="file",n.folder="folder"})(Nw=Be.FileOperationPatternKind||(Be.FileOperationPatternKind={}));var Mw;(function(n){n.method="workspace/willCreateFiles",n.messageDirection=an.MessageDirection.clientToServer,n.type=new an.ProtocolRequestType(n.method)})(Mw=Be.WillCreateFilesRequest||(Be.WillCreateFilesRequest={}));var Aw;(function(n){n.method="workspace/didCreateFiles",n.messageDirection=an.MessageDirection.clientToServer,n.type=new an.ProtocolNotificationType(n.method)})(Aw=Be.DidCreateFilesNotification||(Be.DidCreateFilesNotification={}));var jw;(function(n){n.method="workspace/willRenameFiles",n.messageDirection=an.MessageDirection.clientToServer,n.type=new an.ProtocolRequestType(n.method)})(jw=Be.WillRenameFilesRequest||(Be.WillRenameFilesRequest={}));var $w;(function(n){n.method="workspace/didRenameFiles",n.messageDirection=an.MessageDirection.clientToServer,n.type=new an.ProtocolNotificationType(n.method)})($w=Be.DidRenameFilesNotification||(Be.DidRenameFilesNotification={}));var Uw;(function(n){n.method="workspace/didDeleteFiles",n.messageDirection=an.MessageDirection.clientToServer,n.type=new an.ProtocolNotificationType(n.method)})(Uw=Be.DidDeleteFilesNotification||(Be.DidDeleteFilesNotification={}));var Hw;(function(n){n.method="workspace/willDeleteFiles",n.messageDirection=an.MessageDirection.clientToServer,n.type=new an.ProtocolRequestType(n.method)})(Hw=Be.WillDeleteFilesRequest||(Be.WillDeleteFilesRequest={}))});var Np=O(yn=>{"use strict";Object.defineProperty(yn,"__esModule",{value:!0});yn.MonikerRequest=yn.MonikerKind=yn.UniquenessLevel=void 0;var Lp=Ve(),Ww;(function(n){n.document="document",n.project="project",n.group="group",n.scheme="scheme",n.global="global"})(Ww=yn.UniquenessLevel||(yn.UniquenessLevel={}));var zw;(function(n){n.$import="import",n.$export="export",n.local="local"})(zw=yn.MonikerKind||(yn.MonikerKind={}));var Kw;(function(n){n.method="textDocument/moniker",n.messageDirection=Lp.MessageDirection.clientToServer,n.type=new Lp.ProtocolRequestType(n.method)})(Kw=yn.MonikerRequest||(yn.MonikerRequest={}))});var Mp=O(Cn=>{"use strict";Object.defineProperty(Cn,"__esModule",{value:!0});Cn.TypeHierarchySubtypesRequest=Cn.TypeHierarchySupertypesRequest=Cn.TypeHierarchyPrepareRequest=void 0;var si=Ve(),Vw;(function(n){n.method="textDocument/prepareTypeHierarchy",n.messageDirection=si.MessageDirection.clientToServer,n.type=new si.ProtocolRequestType(n.method)})(Vw=Cn.TypeHierarchyPrepareRequest||(Cn.TypeHierarchyPrepareRequest={}));var Bw;(function(n){n.method="typeHierarchy/supertypes",n.messageDirection=si.MessageDirection.clientToServer,n.type=new si.ProtocolRequestType(n.method)})(Bw=Cn.TypeHierarchySupertypesRequest||(Cn.TypeHierarchySupertypesRequest={}));var Gw;(function(n){n.method="typeHierarchy/subtypes",n.messageDirection=si.MessageDirection.clientToServer,n.type=new si.ProtocolRequestType(n.method)})(Gw=Cn.TypeHierarchySubtypesRequest||(Cn.TypeHierarchySubtypesRequest={}))});var Ap=O(yr=>{"use strict";Object.defineProperty(yr,"__esModule",{value:!0});yr.InlineValueRefreshRequest=yr.InlineValueRequest=void 0;var cs=Ve(),Xw;(function(n){n.method="textDocument/inlineValue",n.messageDirection=cs.MessageDirection.clientToServer,n.type=new cs.ProtocolRequestType(n.method)})(Xw=yr.InlineValueRequest||(yr.InlineValueRequest={}));var Jw;(function(n){n.method="workspace/inlineValue/refresh",n.messageDirection=cs.MessageDirection.serverToClient,n.type=new cs.ProtocolRequestType0(n.method)})(Jw=yr.InlineValueRefreshRequest||(yr.InlineValueRefreshRequest={}))});var jp=O(wn=>{"use strict";Object.defineProperty(wn,"__esModule",{value:!0});wn.InlayHintRefreshRequest=wn.InlayHintResolveRequest=wn.InlayHintRequest=void 0;var ai=Ve(),Qw;(function(n){n.method="textDocument/inlayHint",n.messageDirection=ai.MessageDirection.clientToServer,n.type=new ai.ProtocolRequestType(n.method)})(Qw=wn.InlayHintRequest||(wn.InlayHintRequest={}));var Yw;(function(n){n.method="inlayHint/resolve",n.messageDirection=ai.MessageDirection.clientToServer,n.type=new ai.ProtocolRequestType(n.method)})(Yw=wn.InlayHintResolveRequest||(wn.InlayHintResolveRequest={}));var Zw;(function(n){n.method="workspace/inlayHint/refresh",n.messageDirection=ai.MessageDirection.serverToClient,n.type=new ai.ProtocolRequestType0(n.method)})(Zw=wn.InlayHintRefreshRequest||(wn.InlayHintRefreshRequest={}))});var Up=O(Ct=>{"use strict";Object.defineProperty(Ct,"__esModule",{value:!0});Ct.DiagnosticRefreshRequest=Ct.WorkspaceDiagnosticRequest=Ct.DocumentDiagnosticRequest=Ct.DocumentDiagnosticReportKind=Ct.DiagnosticServerCancellationData=void 0;var $p=Fr(),eb=rs(),ci=Ve(),tb;(function(n){function e(t){let r=t;return r&&eb.boolean(r.retriggerRequest)}n.is=e})(tb=Ct.DiagnosticServerCancellationData||(Ct.DiagnosticServerCancellationData={}));var nb;(function(n){n.Full="full",n.Unchanged="unchanged"})(nb=Ct.DocumentDiagnosticReportKind||(Ct.DocumentDiagnosticReportKind={}));var rb;(function(n){n.method="textDocument/diagnostic",n.messageDirection=ci.MessageDirection.clientToServer,n.type=new ci.ProtocolRequestType(n.method),n.partialResult=new $p.ProgressType})(rb=Ct.DocumentDiagnosticRequest||(Ct.DocumentDiagnosticRequest={}));var ib;(function(n){n.method="workspace/diagnostic",n.messageDirection=ci.MessageDirection.clientToServer,n.type=new ci.ProtocolRequestType(n.method),n.partialResult=new $p.ProgressType})(ib=Ct.WorkspaceDiagnosticRequest||(Ct.WorkspaceDiagnosticRequest={}));var ob;(function(n){n.method="workspace/diagnostic/refresh",n.messageDirection=ci.MessageDirection.serverToClient,n.type=new ci.ProtocolRequestType0(n.method)})(ob=Ct.DiagnosticRefreshRequest||(Ct.DiagnosticRefreshRequest={}))});var zp=O(_e=>{"use strict";Object.defineProperty(_e,"__esModule",{value:!0});_e.DidCloseNotebookDocumentNotification=_e.DidSaveNotebookDocumentNotification=_e.DidChangeNotebookDocumentNotification=_e.NotebookCellArrayChange=_e.DidOpenNotebookDocumentNotification=_e.NotebookDocumentSyncRegistrationType=_e.NotebookDocument=_e.NotebookCell=_e.ExecutionSummary=_e.NotebookCellKind=void 0;var Yi=ns(),bn=rs(),kn=Ve(),Hp;(function(n){n.Markup=1,n.Code=2;function e(t){return t===1||t===2}n.is=e})(Hp=_e.NotebookCellKind||(_e.NotebookCellKind={}));var Wp;(function(n){function e(i,o){let s={executionOrder:i};return(o===!0||o===!1)&&(s.success=o),s}n.create=e;function t(i){let o=i;return bn.objectLiteral(o)&&Yi.uinteger.is(o.executionOrder)&&(o.success===void 0||bn.boolean(o.success))}n.is=t;function r(i,o){return i===o?!0:i==null||o===null||o===void 0?!1:i.executionOrder===o.executionOrder&&i.success===o.success}n.equals=r})(Wp=_e.ExecutionSummary||(_e.ExecutionSummary={}));var Qc;(function(n){function e(o,s){return{kind:o,document:s}}n.create=e;function t(o){let s=o;return bn.objectLiteral(s)&&Hp.is(s.kind)&&Yi.DocumentUri.is(s.document)&&(s.metadata===void 0||bn.objectLiteral(s.metadata))}n.is=t;function r(o,s){let a=new Set;return o.document!==s.document&&a.add("document"),o.kind!==s.kind&&a.add("kind"),o.executionSummary!==s.executionSummary&&a.add("executionSummary"),(o.metadata!==void 0||s.metadata!==void 0)&&!i(o.metadata,s.metadata)&&a.add("metadata"),(o.executionSummary!==void 0||s.executionSummary!==void 0)&&!Wp.equals(o.executionSummary,s.executionSummary)&&a.add("executionSummary"),a}n.diff=r;function i(o,s){if(o===s)return!0;if(o==null||s===null||s===void 0||typeof o!=typeof s||typeof o!="object")return!1;let a=Array.isArray(o),c=Array.isArray(s);if(a!==c)return!1;if(a&&c){if(o.length!==s.length)return!1;for(let d=0;d{"use strict";Object.defineProperty(v,"__esModule",{value:!0});v.WorkspaceSymbolRequest=v.CodeActionResolveRequest=v.CodeActionRequest=v.DocumentSymbolRequest=v.DocumentHighlightRequest=v.ReferencesRequest=v.DefinitionRequest=v.SignatureHelpRequest=v.SignatureHelpTriggerKind=v.HoverRequest=v.CompletionResolveRequest=v.CompletionRequest=v.CompletionTriggerKind=v.PublishDiagnosticsNotification=v.WatchKind=v.RelativePattern=v.FileChangeType=v.DidChangeWatchedFilesNotification=v.WillSaveTextDocumentWaitUntilRequest=v.WillSaveTextDocumentNotification=v.TextDocumentSaveReason=v.DidSaveTextDocumentNotification=v.DidCloseTextDocumentNotification=v.DidChangeTextDocumentNotification=v.TextDocumentContentChangeEvent=v.DidOpenTextDocumentNotification=v.TextDocumentSyncKind=v.TelemetryEventNotification=v.LogMessageNotification=v.ShowMessageRequest=v.ShowMessageNotification=v.MessageType=v.DidChangeConfigurationNotification=v.ExitNotification=v.ShutdownRequest=v.InitializedNotification=v.InitializeErrorCodes=v.InitializeRequest=v.WorkDoneProgressOptions=v.TextDocumentRegistrationOptions=v.StaticRegistrationOptions=v.PositionEncodingKind=v.FailureHandlingKind=v.ResourceOperationKind=v.UnregistrationRequest=v.RegistrationRequest=v.DocumentSelector=v.NotebookCellTextDocumentFilter=v.NotebookDocumentFilter=v.TextDocumentFilter=void 0;v.TypeHierarchySubtypesRequest=v.TypeHierarchyPrepareRequest=v.MonikerRequest=v.MonikerKind=v.UniquenessLevel=v.WillDeleteFilesRequest=v.DidDeleteFilesNotification=v.WillRenameFilesRequest=v.DidRenameFilesNotification=v.WillCreateFilesRequest=v.DidCreateFilesNotification=v.FileOperationPatternKind=v.LinkedEditingRangeRequest=v.ShowDocumentRequest=v.SemanticTokensRegistrationType=v.SemanticTokensRefreshRequest=v.SemanticTokensRangeRequest=v.SemanticTokensDeltaRequest=v.SemanticTokensRequest=v.TokenFormat=v.CallHierarchyPrepareRequest=v.CallHierarchyOutgoingCallsRequest=v.CallHierarchyIncomingCallsRequest=v.WorkDoneProgressCancelNotification=v.WorkDoneProgressCreateRequest=v.WorkDoneProgress=v.SelectionRangeRequest=v.DeclarationRequest=v.FoldingRangeRequest=v.ColorPresentationRequest=v.DocumentColorRequest=v.ConfigurationRequest=v.DidChangeWorkspaceFoldersNotification=v.WorkspaceFoldersRequest=v.TypeDefinitionRequest=v.ImplementationRequest=v.ApplyWorkspaceEditRequest=v.ExecuteCommandRequest=v.PrepareRenameRequest=v.RenameRequest=v.PrepareSupportDefaultBehavior=v.DocumentOnTypeFormattingRequest=v.DocumentRangeFormattingRequest=v.DocumentFormattingRequest=v.DocumentLinkResolveRequest=v.DocumentLinkRequest=v.CodeLensRefreshRequest=v.CodeLensResolveRequest=v.CodeLensRequest=v.WorkspaceSymbolResolveRequest=void 0;v.DidCloseNotebookDocumentNotification=v.DidSaveNotebookDocumentNotification=v.DidChangeNotebookDocumentNotification=v.NotebookCellArrayChange=v.DidOpenNotebookDocumentNotification=v.NotebookDocumentSyncRegistrationType=v.NotebookDocument=v.NotebookCell=v.ExecutionSummary=v.NotebookCellKind=v.DiagnosticRefreshRequest=v.WorkspaceDiagnosticRequest=v.DocumentDiagnosticRequest=v.DocumentDiagnosticReportKind=v.DiagnosticServerCancellationData=v.InlayHintRefreshRequest=v.InlayHintResolveRequest=v.InlayHintRequest=v.InlineValueRefreshRequest=v.InlineValueRequest=v.TypeHierarchySupertypesRequest=void 0;var U=Ve(),Kp=ns(),wt=rs(),fb=hp();Object.defineProperty(v,"ImplementationRequest",{enumerable:!0,get:function(){return fb.ImplementationRequest}});var pb=mp();Object.defineProperty(v,"TypeDefinitionRequest",{enumerable:!0,get:function(){return pb.TypeDefinitionRequest}});var Vp=vp();Object.defineProperty(v,"WorkspaceFoldersRequest",{enumerable:!0,get:function(){return Vp.WorkspaceFoldersRequest}});Object.defineProperty(v,"DidChangeWorkspaceFoldersNotification",{enumerable:!0,get:function(){return Vp.DidChangeWorkspaceFoldersNotification}});var hb=Cp();Object.defineProperty(v,"ConfigurationRequest",{enumerable:!0,get:function(){return hb.ConfigurationRequest}});var Bp=wp();Object.defineProperty(v,"DocumentColorRequest",{enumerable:!0,get:function(){return Bp.DocumentColorRequest}});Object.defineProperty(v,"ColorPresentationRequest",{enumerable:!0,get:function(){return Bp.ColorPresentationRequest}});var gb=Dp();Object.defineProperty(v,"FoldingRangeRequest",{enumerable:!0,get:function(){return gb.FoldingRangeRequest}});var mb=Rp();Object.defineProperty(v,"DeclarationRequest",{enumerable:!0,get:function(){return mb.DeclarationRequest}});var vb=_p();Object.defineProperty(v,"SelectionRangeRequest",{enumerable:!0,get:function(){return vb.SelectionRangeRequest}});var Yc=xp();Object.defineProperty(v,"WorkDoneProgress",{enumerable:!0,get:function(){return Yc.WorkDoneProgress}});Object.defineProperty(v,"WorkDoneProgressCreateRequest",{enumerable:!0,get:function(){return Yc.WorkDoneProgressCreateRequest}});Object.defineProperty(v,"WorkDoneProgressCancelNotification",{enumerable:!0,get:function(){return Yc.WorkDoneProgressCancelNotification}});var Zc=Pp();Object.defineProperty(v,"CallHierarchyIncomingCallsRequest",{enumerable:!0,get:function(){return Zc.CallHierarchyIncomingCallsRequest}});Object.defineProperty(v,"CallHierarchyOutgoingCallsRequest",{enumerable:!0,get:function(){return Zc.CallHierarchyOutgoingCallsRequest}});Object.defineProperty(v,"CallHierarchyPrepareRequest",{enumerable:!0,get:function(){return Zc.CallHierarchyPrepareRequest}});var ui=Ep();Object.defineProperty(v,"TokenFormat",{enumerable:!0,get:function(){return ui.TokenFormat}});Object.defineProperty(v,"SemanticTokensRequest",{enumerable:!0,get:function(){return ui.SemanticTokensRequest}});Object.defineProperty(v,"SemanticTokensDeltaRequest",{enumerable:!0,get:function(){return ui.SemanticTokensDeltaRequest}});Object.defineProperty(v,"SemanticTokensRangeRequest",{enumerable:!0,get:function(){return ui.SemanticTokensRangeRequest}});Object.defineProperty(v,"SemanticTokensRefreshRequest",{enumerable:!0,get:function(){return ui.SemanticTokensRefreshRequest}});Object.defineProperty(v,"SemanticTokensRegistrationType",{enumerable:!0,get:function(){return ui.SemanticTokensRegistrationType}});var yb=qp();Object.defineProperty(v,"ShowDocumentRequest",{enumerable:!0,get:function(){return yb.ShowDocumentRequest}});var Cb=Op();Object.defineProperty(v,"LinkedEditingRangeRequest",{enumerable:!0,get:function(){return Cb.LinkedEditingRangeRequest}});var Lr=Fp();Object.defineProperty(v,"FileOperationPatternKind",{enumerable:!0,get:function(){return Lr.FileOperationPatternKind}});Object.defineProperty(v,"DidCreateFilesNotification",{enumerable:!0,get:function(){return Lr.DidCreateFilesNotification}});Object.defineProperty(v,"WillCreateFilesRequest",{enumerable:!0,get:function(){return Lr.WillCreateFilesRequest}});Object.defineProperty(v,"DidRenameFilesNotification",{enumerable:!0,get:function(){return Lr.DidRenameFilesNotification}});Object.defineProperty(v,"WillRenameFilesRequest",{enumerable:!0,get:function(){return Lr.WillRenameFilesRequest}});Object.defineProperty(v,"DidDeleteFilesNotification",{enumerable:!0,get:function(){return Lr.DidDeleteFilesNotification}});Object.defineProperty(v,"WillDeleteFilesRequest",{enumerable:!0,get:function(){return Lr.WillDeleteFilesRequest}});var eu=Np();Object.defineProperty(v,"UniquenessLevel",{enumerable:!0,get:function(){return eu.UniquenessLevel}});Object.defineProperty(v,"MonikerKind",{enumerable:!0,get:function(){return eu.MonikerKind}});Object.defineProperty(v,"MonikerRequest",{enumerable:!0,get:function(){return eu.MonikerRequest}});var tu=Mp();Object.defineProperty(v,"TypeHierarchyPrepareRequest",{enumerable:!0,get:function(){return tu.TypeHierarchyPrepareRequest}});Object.defineProperty(v,"TypeHierarchySubtypesRequest",{enumerable:!0,get:function(){return tu.TypeHierarchySubtypesRequest}});Object.defineProperty(v,"TypeHierarchySupertypesRequest",{enumerable:!0,get:function(){return tu.TypeHierarchySupertypesRequest}});var Gp=Ap();Object.defineProperty(v,"InlineValueRequest",{enumerable:!0,get:function(){return Gp.InlineValueRequest}});Object.defineProperty(v,"InlineValueRefreshRequest",{enumerable:!0,get:function(){return Gp.InlineValueRefreshRequest}});var nu=jp();Object.defineProperty(v,"InlayHintRequest",{enumerable:!0,get:function(){return nu.InlayHintRequest}});Object.defineProperty(v,"InlayHintResolveRequest",{enumerable:!0,get:function(){return nu.InlayHintResolveRequest}});Object.defineProperty(v,"InlayHintRefreshRequest",{enumerable:!0,get:function(){return nu.InlayHintRefreshRequest}});var eo=Up();Object.defineProperty(v,"DiagnosticServerCancellationData",{enumerable:!0,get:function(){return eo.DiagnosticServerCancellationData}});Object.defineProperty(v,"DocumentDiagnosticReportKind",{enumerable:!0,get:function(){return eo.DocumentDiagnosticReportKind}});Object.defineProperty(v,"DocumentDiagnosticRequest",{enumerable:!0,get:function(){return eo.DocumentDiagnosticRequest}});Object.defineProperty(v,"WorkspaceDiagnosticRequest",{enumerable:!0,get:function(){return eo.WorkspaceDiagnosticRequest}});Object.defineProperty(v,"DiagnosticRefreshRequest",{enumerable:!0,get:function(){return eo.DiagnosticRefreshRequest}});var qn=zp();Object.defineProperty(v,"NotebookCellKind",{enumerable:!0,get:function(){return qn.NotebookCellKind}});Object.defineProperty(v,"ExecutionSummary",{enumerable:!0,get:function(){return qn.ExecutionSummary}});Object.defineProperty(v,"NotebookCell",{enumerable:!0,get:function(){return qn.NotebookCell}});Object.defineProperty(v,"NotebookDocument",{enumerable:!0,get:function(){return qn.NotebookDocument}});Object.defineProperty(v,"NotebookDocumentSyncRegistrationType",{enumerable:!0,get:function(){return qn.NotebookDocumentSyncRegistrationType}});Object.defineProperty(v,"DidOpenNotebookDocumentNotification",{enumerable:!0,get:function(){return qn.DidOpenNotebookDocumentNotification}});Object.defineProperty(v,"NotebookCellArrayChange",{enumerable:!0,get:function(){return qn.NotebookCellArrayChange}});Object.defineProperty(v,"DidChangeNotebookDocumentNotification",{enumerable:!0,get:function(){return qn.DidChangeNotebookDocumentNotification}});Object.defineProperty(v,"DidSaveNotebookDocumentNotification",{enumerable:!0,get:function(){return qn.DidSaveNotebookDocumentNotification}});Object.defineProperty(v,"DidCloseNotebookDocumentNotification",{enumerable:!0,get:function(){return qn.DidCloseNotebookDocumentNotification}});var Xp;(function(n){function e(t){let r=t;return wt.string(r.language)||wt.string(r.scheme)||wt.string(r.pattern)}n.is=e})(Xp=v.TextDocumentFilter||(v.TextDocumentFilter={}));var Jp;(function(n){function e(t){let r=t;return wt.objectLiteral(r)&&(wt.string(r.notebookType)||wt.string(r.scheme)||wt.string(r.pattern))}n.is=e})(Jp=v.NotebookDocumentFilter||(v.NotebookDocumentFilter={}));var Qp;(function(n){function e(t){let r=t;return wt.objectLiteral(r)&&(wt.string(r.notebook)||Jp.is(r.notebook))&&(r.language===void 0||wt.string(r.language))}n.is=e})(Qp=v.NotebookCellTextDocumentFilter||(v.NotebookCellTextDocumentFilter={}));var Yp;(function(n){function e(t){if(!Array.isArray(t))return!1;for(let r of t)if(!wt.string(r)&&!Xp.is(r)&&!Qp.is(r))return!1;return!0}n.is=e})(Yp=v.DocumentSelector||(v.DocumentSelector={}));var wb;(function(n){n.method="client/registerCapability",n.messageDirection=U.MessageDirection.serverToClient,n.type=new U.ProtocolRequestType(n.method)})(wb=v.RegistrationRequest||(v.RegistrationRequest={}));var bb;(function(n){n.method="client/unregisterCapability",n.messageDirection=U.MessageDirection.serverToClient,n.type=new U.ProtocolRequestType(n.method)})(bb=v.UnregistrationRequest||(v.UnregistrationRequest={}));var Db;(function(n){n.Create="create",n.Rename="rename",n.Delete="delete"})(Db=v.ResourceOperationKind||(v.ResourceOperationKind={}));var Tb;(function(n){n.Abort="abort",n.Transactional="transactional",n.TextOnlyTransactional="textOnlyTransactional",n.Undo="undo"})(Tb=v.FailureHandlingKind||(v.FailureHandlingKind={}));var Rb;(function(n){n.UTF8="utf-8",n.UTF16="utf-16",n.UTF32="utf-32"})(Rb=v.PositionEncodingKind||(v.PositionEncodingKind={}));var Sb;(function(n){function e(t){let r=t;return r&&wt.string(r.id)&&r.id.length>0}n.hasId=e})(Sb=v.StaticRegistrationOptions||(v.StaticRegistrationOptions={}));var _b;(function(n){function e(t){let r=t;return r&&(r.documentSelector===null||Yp.is(r.documentSelector))}n.is=e})(_b=v.TextDocumentRegistrationOptions||(v.TextDocumentRegistrationOptions={}));var xb;(function(n){function e(r){let i=r;return wt.objectLiteral(i)&&(i.workDoneProgress===void 0||wt.boolean(i.workDoneProgress))}n.is=e;function t(r){let i=r;return i&&wt.boolean(i.workDoneProgress)}n.hasWorkDoneProgress=t})(xb=v.WorkDoneProgressOptions||(v.WorkDoneProgressOptions={}));var Pb;(function(n){n.method="initialize",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(Pb=v.InitializeRequest||(v.InitializeRequest={}));var Eb;(function(n){n.unknownProtocolVersion=1})(Eb=v.InitializeErrorCodes||(v.InitializeErrorCodes={}));var kb;(function(n){n.method="initialized",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolNotificationType(n.method)})(kb=v.InitializedNotification||(v.InitializedNotification={}));var qb;(function(n){n.method="shutdown",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType0(n.method)})(qb=v.ShutdownRequest||(v.ShutdownRequest={}));var Ib;(function(n){n.method="exit",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolNotificationType0(n.method)})(Ib=v.ExitNotification||(v.ExitNotification={}));var Ob;(function(n){n.method="workspace/didChangeConfiguration",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolNotificationType(n.method)})(Ob=v.DidChangeConfigurationNotification||(v.DidChangeConfigurationNotification={}));var Fb;(function(n){n.Error=1,n.Warning=2,n.Info=3,n.Log=4})(Fb=v.MessageType||(v.MessageType={}));var Lb;(function(n){n.method="window/showMessage",n.messageDirection=U.MessageDirection.serverToClient,n.type=new U.ProtocolNotificationType(n.method)})(Lb=v.ShowMessageNotification||(v.ShowMessageNotification={}));var Nb;(function(n){n.method="window/showMessageRequest",n.messageDirection=U.MessageDirection.serverToClient,n.type=new U.ProtocolRequestType(n.method)})(Nb=v.ShowMessageRequest||(v.ShowMessageRequest={}));var Mb;(function(n){n.method="window/logMessage",n.messageDirection=U.MessageDirection.serverToClient,n.type=new U.ProtocolNotificationType(n.method)})(Mb=v.LogMessageNotification||(v.LogMessageNotification={}));var Ab;(function(n){n.method="telemetry/event",n.messageDirection=U.MessageDirection.serverToClient,n.type=new U.ProtocolNotificationType(n.method)})(Ab=v.TelemetryEventNotification||(v.TelemetryEventNotification={}));var jb;(function(n){n.None=0,n.Full=1,n.Incremental=2})(jb=v.TextDocumentSyncKind||(v.TextDocumentSyncKind={}));var $b;(function(n){n.method="textDocument/didOpen",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolNotificationType(n.method)})($b=v.DidOpenTextDocumentNotification||(v.DidOpenTextDocumentNotification={}));var Ub;(function(n){function e(r){let i=r;return i!=null&&typeof i.text=="string"&&i.range!==void 0&&(i.rangeLength===void 0||typeof i.rangeLength=="number")}n.isIncremental=e;function t(r){let i=r;return i!=null&&typeof i.text=="string"&&i.range===void 0&&i.rangeLength===void 0}n.isFull=t})(Ub=v.TextDocumentContentChangeEvent||(v.TextDocumentContentChangeEvent={}));var Hb;(function(n){n.method="textDocument/didChange",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolNotificationType(n.method)})(Hb=v.DidChangeTextDocumentNotification||(v.DidChangeTextDocumentNotification={}));var Wb;(function(n){n.method="textDocument/didClose",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolNotificationType(n.method)})(Wb=v.DidCloseTextDocumentNotification||(v.DidCloseTextDocumentNotification={}));var zb;(function(n){n.method="textDocument/didSave",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolNotificationType(n.method)})(zb=v.DidSaveTextDocumentNotification||(v.DidSaveTextDocumentNotification={}));var Kb;(function(n){n.Manual=1,n.AfterDelay=2,n.FocusOut=3})(Kb=v.TextDocumentSaveReason||(v.TextDocumentSaveReason={}));var Vb;(function(n){n.method="textDocument/willSave",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolNotificationType(n.method)})(Vb=v.WillSaveTextDocumentNotification||(v.WillSaveTextDocumentNotification={}));var Bb;(function(n){n.method="textDocument/willSaveWaitUntil",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(Bb=v.WillSaveTextDocumentWaitUntilRequest||(v.WillSaveTextDocumentWaitUntilRequest={}));var Gb;(function(n){n.method="workspace/didChangeWatchedFiles",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolNotificationType(n.method)})(Gb=v.DidChangeWatchedFilesNotification||(v.DidChangeWatchedFilesNotification={}));var Xb;(function(n){n.Created=1,n.Changed=2,n.Deleted=3})(Xb=v.FileChangeType||(v.FileChangeType={}));var Jb;(function(n){function e(t){let r=t;return wt.objectLiteral(r)&&(Kp.URI.is(r.baseUri)||Kp.WorkspaceFolder.is(r.baseUri))&&wt.string(r.pattern)}n.is=e})(Jb=v.RelativePattern||(v.RelativePattern={}));var Qb;(function(n){n.Create=1,n.Change=2,n.Delete=4})(Qb=v.WatchKind||(v.WatchKind={}));var Yb;(function(n){n.method="textDocument/publishDiagnostics",n.messageDirection=U.MessageDirection.serverToClient,n.type=new U.ProtocolNotificationType(n.method)})(Yb=v.PublishDiagnosticsNotification||(v.PublishDiagnosticsNotification={}));var Zb;(function(n){n.Invoked=1,n.TriggerCharacter=2,n.TriggerForIncompleteCompletions=3})(Zb=v.CompletionTriggerKind||(v.CompletionTriggerKind={}));var eD;(function(n){n.method="textDocument/completion",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(eD=v.CompletionRequest||(v.CompletionRequest={}));var tD;(function(n){n.method="completionItem/resolve",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(tD=v.CompletionResolveRequest||(v.CompletionResolveRequest={}));var nD;(function(n){n.method="textDocument/hover",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(nD=v.HoverRequest||(v.HoverRequest={}));var rD;(function(n){n.Invoked=1,n.TriggerCharacter=2,n.ContentChange=3})(rD=v.SignatureHelpTriggerKind||(v.SignatureHelpTriggerKind={}));var iD;(function(n){n.method="textDocument/signatureHelp",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(iD=v.SignatureHelpRequest||(v.SignatureHelpRequest={}));var oD;(function(n){n.method="textDocument/definition",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(oD=v.DefinitionRequest||(v.DefinitionRequest={}));var sD;(function(n){n.method="textDocument/references",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(sD=v.ReferencesRequest||(v.ReferencesRequest={}));var aD;(function(n){n.method="textDocument/documentHighlight",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(aD=v.DocumentHighlightRequest||(v.DocumentHighlightRequest={}));var cD;(function(n){n.method="textDocument/documentSymbol",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(cD=v.DocumentSymbolRequest||(v.DocumentSymbolRequest={}));var uD;(function(n){n.method="textDocument/codeAction",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(uD=v.CodeActionRequest||(v.CodeActionRequest={}));var dD;(function(n){n.method="codeAction/resolve",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(dD=v.CodeActionResolveRequest||(v.CodeActionResolveRequest={}));var lD;(function(n){n.method="workspace/symbol",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(lD=v.WorkspaceSymbolRequest||(v.WorkspaceSymbolRequest={}));var fD;(function(n){n.method="workspaceSymbol/resolve",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(fD=v.WorkspaceSymbolResolveRequest||(v.WorkspaceSymbolResolveRequest={}));var pD;(function(n){n.method="textDocument/codeLens",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(pD=v.CodeLensRequest||(v.CodeLensRequest={}));var hD;(function(n){n.method="codeLens/resolve",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(hD=v.CodeLensResolveRequest||(v.CodeLensResolveRequest={}));var gD;(function(n){n.method="workspace/codeLens/refresh",n.messageDirection=U.MessageDirection.serverToClient,n.type=new U.ProtocolRequestType0(n.method)})(gD=v.CodeLensRefreshRequest||(v.CodeLensRefreshRequest={}));var mD;(function(n){n.method="textDocument/documentLink",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(mD=v.DocumentLinkRequest||(v.DocumentLinkRequest={}));var vD;(function(n){n.method="documentLink/resolve",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(vD=v.DocumentLinkResolveRequest||(v.DocumentLinkResolveRequest={}));var yD;(function(n){n.method="textDocument/formatting",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(yD=v.DocumentFormattingRequest||(v.DocumentFormattingRequest={}));var CD;(function(n){n.method="textDocument/rangeFormatting",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(CD=v.DocumentRangeFormattingRequest||(v.DocumentRangeFormattingRequest={}));var wD;(function(n){n.method="textDocument/onTypeFormatting",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(wD=v.DocumentOnTypeFormattingRequest||(v.DocumentOnTypeFormattingRequest={}));var bD;(function(n){n.Identifier=1})(bD=v.PrepareSupportDefaultBehavior||(v.PrepareSupportDefaultBehavior={}));var DD;(function(n){n.method="textDocument/rename",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(DD=v.RenameRequest||(v.RenameRequest={}));var TD;(function(n){n.method="textDocument/prepareRename",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(TD=v.PrepareRenameRequest||(v.PrepareRenameRequest={}));var RD;(function(n){n.method="workspace/executeCommand",n.messageDirection=U.MessageDirection.clientToServer,n.type=new U.ProtocolRequestType(n.method)})(RD=v.ExecuteCommandRequest||(v.ExecuteCommandRequest={}));var SD;(function(n){n.method="workspace/applyEdit",n.messageDirection=U.MessageDirection.serverToClient,n.type=new U.ProtocolRequestType("workspace/applyEdit")})(SD=v.ApplyWorkspaceEditRequest||(v.ApplyWorkspaceEditRequest={}))});var th=O(us=>{"use strict";Object.defineProperty(us,"__esModule",{value:!0});us.createProtocolConnection=void 0;var eh=Fr();function _D(n,e,t,r){return eh.ConnectionStrategy.is(r)&&(r={connectionStrategy:r}),(0,eh.createMessageConnection)(n,e,t,r)}us.createProtocolConnection=_D});var nh=O(Lt=>{"use strict";var xD=Lt&&Lt.__createBinding||(Object.create?function(n,e,t,r){r===void 0&&(r=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,r,i)}:function(n,e,t,r){r===void 0&&(r=t),n[r]=e[t]}),ds=Lt&&Lt.__exportStar||function(n,e){for(var t in n)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&xD(e,n,t)};Object.defineProperty(Lt,"__esModule",{value:!0});Lt.LSPErrorCodes=Lt.createProtocolConnection=void 0;ds(Fr(),Lt);ds(ns(),Lt);ds(Ve(),Lt);ds(Zp(),Lt);var PD=th();Object.defineProperty(Lt,"createProtocolConnection",{enumerable:!0,get:function(){return PD.createProtocolConnection}});var ED;(function(n){n.lspReservedErrorRangeStart=-32899,n.RequestFailed=-32803,n.ServerCancelled=-32802,n.ContentModified=-32801,n.RequestCancelled=-32800,n.lspReservedErrorRangeEnd=-32800})(ED=Lt.LSPErrorCodes||(Lt.LSPErrorCodes={}))});var se=O(In=>{"use strict";var kD=In&&In.__createBinding||(Object.create?function(n,e,t,r){r===void 0&&(r=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,r,i)}:function(n,e,t,r){r===void 0&&(r=t),n[r]=e[t]}),rh=In&&In.__exportStar||function(n,e){for(var t in n)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&kD(e,n,t)};Object.defineProperty(In,"__esModule",{value:!0});In.createProtocolConnection=void 0;var qD=Kc();rh(Kc(),In);rh(nh(),In);function ID(n,e,t,r){return(0,qD.createMessageConnection)(n,e,t,r)}In.createProtocolConnection=ID});var ls=O(Rt=>{"use strict";Object.defineProperty(Rt,"__esModule",{value:!0});Rt.forEach=Rt.mapAsync=Rt.map=Rt.clearTestMode=Rt.setTestMode=Rt.Semaphore=Rt.Delayer=void 0;var no=se(),ru=class{constructor(e){this.defaultDelay=e,this.timeout=void 0,this.completionPromise=void 0,this.onSuccess=void 0,this.task=void 0}trigger(e,t=this.defaultDelay){return this.task=e,t>=0&&this.cancelTimeout(),this.completionPromise||(this.completionPromise=new Promise(r=>{this.onSuccess=r}).then(()=>{this.completionPromise=void 0,this.onSuccess=void 0;var r=this.task();return this.task=void 0,r})),(t>=0||this.timeout===void 0)&&(this.timeout=(0,no.RAL)().timer.setTimeout(()=>{this.timeout=void 0,this.onSuccess(void 0)},t>=0?t:this.defaultDelay)),this.completionPromise}forceDelivery(){if(!this.completionPromise)return;this.cancelTimeout();let e=this.task();return this.completionPromise=void 0,this.onSuccess=void 0,this.task=void 0,e}isTriggered(){return this.timeout!==void 0}cancel(){this.cancelTimeout(),this.completionPromise=void 0}cancelTimeout(){this.timeout!==void 0&&(this.timeout.dispose(),this.timeout=void 0)}};Rt.Delayer=ru;var iu=class{constructor(e=1){if(e<=0)throw new Error("Capacity must be greater than 0");this._capacity=e,this._active=0,this._waiting=[]}lock(e){return new Promise((t,r)=>{this._waiting.push({thunk:e,resolve:t,reject:r}),this.runNext()})}get active(){return this._active}runNext(){this._waiting.length===0||this._active===this._capacity||(0,no.RAL)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(this._waiting.length===0||this._active===this._capacity)return;let e=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{let t=e.thunk();t instanceof Promise?t.then(r=>{this._active--,e.resolve(r),this.runNext()},r=>{this._active--,e.reject(r),this.runNext()}):(this._active--,e.resolve(t),this.runNext())}catch(t){this._active--,e.reject(t),this.runNext()}}};Rt.Semaphore=iu;var ou=!1;function OD(){ou=!0}Rt.setTestMode=OD;function FD(){ou=!1}Rt.clearTestMode=FD;var ih=15,to=class{constructor(e=ih){this.yieldAfter=ou===!0?Math.max(e,2):Math.max(e,ih),this.startTime=Date.now(),this.counter=0,this.total=0,this.counterInterval=1}start(){this.counter=0,this.total=0,this.counterInterval=1,this.startTime=Date.now()}shouldYield(){if(++this.counter>=this.counterInterval){let e=Date.now()-this.startTime,t=Math.max(0,this.yieldAfter-e);if(this.total+=this.counter,this.counter=0,e>=this.yieldAfter||t<=1)return this.counterInterval=1,this.total=0,!0;switch(e){case 0:case 1:this.counterInterval=this.total*2;break}}return!1}};async function LD(n,e,t,r){if(n.length===0)return[];let i=new Array(n.length),o=new to(r==null?void 0:r.yieldAfter);function s(c){o.start();for(let d=c;d{(0,no.RAL)().timer.setImmediate(()=>{c(s(a))})});return i}Rt.map=LD;async function ND(n,e,t,r){if(n.length===0)return[];let i=new Array(n.length),o=new to(r==null?void 0:r.yieldAfter);async function s(c){o.start();for(let d=c;d{(0,no.RAL)().timer.setImmediate(()=>{c(s(a))})});return i}Rt.mapAsync=ND;async function MD(n,e,t,r){if(n.length===0)return;let i=new to(r==null?void 0:r.yieldAfter);function o(a){i.start();for(let c=a;c{(0,no.RAL)().timer.setImmediate(()=>{a(o(s))})})}Rt.forEach=MD});var cu=O(au=>{"use strict";Object.defineProperty(au,"__esModule",{value:!0});var AD=require("vscode"),su=class extends AD.CompletionItem{constructor(e){super(e)}};au.default=su});var lu=O(du=>{"use strict";Object.defineProperty(du,"__esModule",{value:!0});var jD=require("vscode"),uu=class extends jD.CodeLens{constructor(e){super(e)}};du.default=uu});var hu=O(pu=>{"use strict";Object.defineProperty(pu,"__esModule",{value:!0});var $D=require("vscode"),fu=class extends $D.DocumentLink{constructor(e,t){super(e,t)}};pu.default=fu});var vu=O(mu=>{"use strict";Object.defineProperty(mu,"__esModule",{value:!0});var UD=require("vscode"),gu=class extends UD.CodeAction{constructor(e,t){super(e),this.data=t}};mu.default=gu});var wu=O(Nr=>{"use strict";Object.defineProperty(Nr,"__esModule",{value:!0});Nr.ProtocolDiagnostic=Nr.DiagnosticCode=void 0;var HD=require("vscode"),yu=Kt(),WD;(function(n){function e(t){let r=t;return r!=null&&(yu.number(r.value)||yu.string(r.value))&&yu.string(r.target)}n.is=e})(WD=Nr.DiagnosticCode||(Nr.DiagnosticCode={}));var Cu=class extends HD.Diagnostic{constructor(e,t,r,i){super(e,t,r),this.data=i,this.hasDiagnosticCode=!1}};Nr.ProtocolDiagnostic=Cu});var Tu=O(Du=>{"use strict";Object.defineProperty(Du,"__esModule",{value:!0});var zD=require("vscode"),bu=class extends zD.CallHierarchyItem{constructor(e,t,r,i,o,s,a){super(e,t,r,i,o,s),a!==void 0&&(this.data=a)}};Du.default=bu});var _u=O(Su=>{"use strict";Object.defineProperty(Su,"__esModule",{value:!0});var KD=require("vscode"),Ru=class extends KD.TypeHierarchyItem{constructor(e,t,r,i,o,s,a){super(e,t,r,i,o,s),a!==void 0&&(this.data=a)}};Su.default=Ru});var Eu=O(Pu=>{"use strict";Object.defineProperty(Pu,"__esModule",{value:!0});var fs=require("vscode"),xu=class extends fs.SymbolInformation{constructor(e,t,r,i,o){let s=!(i instanceof fs.Uri);super(e,t,r,s?i:new fs.Location(i,new fs.Range(0,0,0,0))),this.hasRange=s,o!==void 0&&(this.data=o)}};Pu.default=xu});var Iu=O(qu=>{"use strict";Object.defineProperty(qu,"__esModule",{value:!0});var VD=require("vscode"),ku=class extends VD.InlayHint{constructor(e,t,r){super(e,t,r)}};qu.default=ku});var ah=O(ps=>{"use strict";Object.defineProperty(ps,"__esModule",{value:!0});ps.createConverter=void 0;var ct=require("vscode"),de=se(),di=Kt(),oh=ls(),BD=cu(),GD=lu(),XD=hu(),JD=vu(),sh=wu(),QD=Tu(),YD=_u(),ZD=Eu(),eT=Iu(),Ou;(function(n){function e(t){let r=t;return r&&!!r.inserting&&!!r.replacing}n.is=e})(Ou||(Ou={}));function tT(n){let t=n||(p=>p.toString());function r(p){return t(p)}function i(p){return{uri:t(p.uri)}}function o(p){return{uri:t(p.uri),languageId:p.languageId,version:p.version,text:p.getText()}}function s(p){return{uri:t(p.uri),version:p.version}}function a(p){return{textDocument:o(p)}}function c(p){let E=p;return!!E.document&&!!E.contentChanges}function d(p){let E=p;return!!E.uri&&!!E.version}function f(p,E,z){if(d(p))return{textDocument:{uri:t(p.uri),version:p.version},contentChanges:[{text:p.getText()}]};if(c(p)){let ue=E,_=z;return{textDocument:{uri:t(ue),version:_},contentChanges:p.contentChanges.map(D=>{let R=D.range;return{range:{start:{line:R.start.line,character:R.start.character},end:{line:R.end.line,character:R.end.character}},rangeLength:D.rangeLength,text:D.text}})}}else throw Error("Unsupported text document change parameter")}function g(p){return{textDocument:i(p)}}function m(p,E=!1){let z={textDocument:i(p)};return E&&(z.text=p.getText()),z}function C(p){switch(p){case ct.TextDocumentSaveReason.Manual:return de.TextDocumentSaveReason.Manual;case ct.TextDocumentSaveReason.AfterDelay:return de.TextDocumentSaveReason.AfterDelay;case ct.TextDocumentSaveReason.FocusOut:return de.TextDocumentSaveReason.FocusOut}return de.TextDocumentSaveReason.Manual}function w(p){return{textDocument:i(p.document),reason:C(p.reason)}}function T(p){return{files:p.files.map(E=>({uri:t(E)}))}}function S(p){return{files:p.files.map(E=>({oldUri:t(E.oldUri),newUri:t(E.newUri)}))}}function q(p){return{files:p.files.map(E=>({uri:t(E)}))}}function F(p){return{files:p.files.map(E=>({uri:t(E)}))}}function I(p){return{files:p.files.map(E=>({oldUri:t(E.oldUri),newUri:t(E.newUri)}))}}function A(p){return{files:p.files.map(E=>({uri:t(E)}))}}function W(p,E){return{textDocument:i(p),position:mt(E)}}function ne(p){switch(p){case ct.CompletionTriggerKind.TriggerCharacter:return de.CompletionTriggerKind.TriggerCharacter;case ct.CompletionTriggerKind.TriggerForIncompleteCompletions:return de.CompletionTriggerKind.TriggerForIncompleteCompletions;default:return de.CompletionTriggerKind.Invoked}}function K(p,E,z){return{textDocument:i(p),position:mt(E),context:{triggerKind:ne(z.triggerKind),triggerCharacter:z.triggerCharacter}}}function Q(p){switch(p){case ct.SignatureHelpTriggerKind.Invoke:return de.SignatureHelpTriggerKind.Invoked;case ct.SignatureHelpTriggerKind.TriggerCharacter:return de.SignatureHelpTriggerKind.TriggerCharacter;case ct.SignatureHelpTriggerKind.ContentChange:return de.SignatureHelpTriggerKind.ContentChange}}function ie(p){return{label:p.label}}function tt(p){return p.map(ie)}function We(p){return{label:p.label,parameters:tt(p.parameters)}}function nt(p){return p.map(We)}function ln(p){return p===void 0?p:{signatures:nt(p.signatures),activeSignature:p.activeSignature,activeParameter:p.activeParameter}}function Pt(p,E,z){return{textDocument:i(p),position:mt(E),context:{isRetrigger:z.isRetrigger,triggerCharacter:z.triggerCharacter,triggerKind:Q(z.triggerKind),activeSignatureHelp:ln(z.activeSignatureHelp)}}}function mt(p){return{line:p.line,character:p.character}}function Et(p){return p==null?p:{line:p.line>de.uinteger.MAX_VALUE?de.uinteger.MAX_VALUE:p.line,character:p.character>de.uinteger.MAX_VALUE?de.uinteger.MAX_VALUE:p.character}}function _n(p,E){return oh.map(p,Et,E)}function Qe(p){return p==null?p:{start:Et(p.start),end:Et(p.end)}}function kt(p){return p==null?p:de.Location.create(r(p.uri),Qe(p.range))}function Ht(p){switch(p){case ct.DiagnosticSeverity.Error:return de.DiagnosticSeverity.Error;case ct.DiagnosticSeverity.Warning:return de.DiagnosticSeverity.Warning;case ct.DiagnosticSeverity.Information:return de.DiagnosticSeverity.Information;case ct.DiagnosticSeverity.Hint:return de.DiagnosticSeverity.Hint}}function xn(p){if(!p)return;let E=[];for(let z of p){let ue=Dt(z);ue!==void 0&&E.push(ue)}return E.length>0?E:void 0}function Dt(p){switch(p){case ct.DiagnosticTag.Unnecessary:return de.DiagnosticTag.Unnecessary;case ct.DiagnosticTag.Deprecated:return de.DiagnosticTag.Deprecated;default:return}}function _r(p){return{message:p.message,location:kt(p.location)}}function ar(p){return p.map(_r)}function jn(p){if(p!=null)return di.number(p)||di.string(p)?p:{value:p.value,target:r(p.target)}}function $n(p){let E=de.Diagnostic.create(Qe(p.range),p.message),z=p instanceof sh.ProtocolDiagnostic?p:void 0;z!==void 0&&z.data!==void 0&&(E.data=z.data);let ue=jn(p.code);return sh.DiagnosticCode.is(ue)?z!==void 0&&z.hasDiagnosticCode?E.code=ue:(E.code=ue.value,E.codeDescription={href:ue.target}):E.code=ue,di.number(p.severity)&&(E.severity=Ht(p.severity)),Array.isArray(p.tags)&&(E.tags=xn(p.tags)),p.relatedInformation&&(E.relatedInformation=ar(p.relatedInformation)),p.source&&(E.source=p.source),E}function Un(p,E){return p==null?p:oh.map(p,$n,E)}function xr(p,E){switch(p){case"$string":return E;case de.MarkupKind.PlainText:return{kind:p,value:E};case de.MarkupKind.Markdown:return{kind:p,value:E.value};default:return`Unsupported Markup content received. Kind is: ${p}`}}function cr(p){switch(p){case ct.CompletionItemTag.Deprecated:return de.CompletionItemTag.Deprecated}}function ur(p){if(p===void 0)return p;let E=[];for(let z of p){let ue=cr(z);ue!==void 0&&E.push(ue)}return E}function Hn(p,E){return E!==void 0?E:p+1}function lt(p,E=!1){let z,ue;di.string(p.label)?z=p.label:(z=p.label.label,E&&(p.label.detail!==void 0||p.label.description!==void 0)&&(ue={detail:p.label.detail,description:p.label.description}));let _={label:z};ue!==void 0&&(_.labelDetails=ue);let h=p instanceof BD.default?p:void 0;p.detail&&(_.detail=p.detail),p.documentation&&(!h||h.documentationFormat==="$string"?_.documentation=p.documentation:_.documentation=xr(h.documentationFormat,p.documentation)),p.filterText&&(_.filterText=p.filterText),dr(_,p),di.number(p.kind)&&(_.kind=Hn(p.kind,h&&h.originalItemKind)),p.sortText&&(_.sortText=p.sortText),p.additionalTextEdits&&(_.additionalTextEdits=lr(p.additionalTextEdits)),p.commitCharacters&&(_.commitCharacters=p.commitCharacters.slice()),p.command&&(_.command=Wt(p.command)),(p.preselect===!0||p.preselect===!1)&&(_.preselect=p.preselect);let D=ur(p.tags);if(h){if(h.data!==void 0&&(_.data=h.data),h.deprecated===!0||h.deprecated===!1){if(h.deprecated===!0&&D!==void 0&&D.length>0){let R=D.indexOf(ct.CompletionItemTag.Deprecated);R!==-1&&D.splice(R,1)}_.deprecated=h.deprecated}h.insertTextMode!==void 0&&(_.insertTextMode=h.insertTextMode)}return D!==void 0&&D.length>0&&(_.tags=D),_.insertTextMode===void 0&&p.keepWhitespace===!0&&(_.insertTextMode=de.InsertTextMode.adjustIndentation),_}function dr(p,E){let z=de.InsertTextFormat.PlainText,ue,_;E.textEdit?(ue=E.textEdit.newText,_=E.textEdit.range):E.insertText instanceof ct.SnippetString?(z=de.InsertTextFormat.Snippet,ue=E.insertText.value):ue=E.insertText,E.range&&(_=E.range),p.insertTextFormat=z,E.fromEdit&&ue!==void 0&&_!==void 0?p.textEdit=Pn(ue,_):p.insertText=ue}function Pn(p,E){return Ou.is(E)?de.InsertReplaceEdit.create(p,Qe(E.inserting),Qe(E.replacing)):{newText:p,range:Qe(E)}}function sn(p){return{range:Qe(p.range),newText:p.newText}}function lr(p){return p==null?p:p.map(sn)}function qt(p){return p<=ct.SymbolKind.TypeParameter?p+1:de.SymbolKind.Property}function Wn(p){return p}function rt(p){return p.map(Wn)}function fn(p,E,z){return{textDocument:i(p),position:mt(E),context:{includeDeclaration:z.includeDeclaration}}}async function It(p,E){let z=de.CodeAction.create(p.title);if(p instanceof JD.default&&p.data!==void 0&&(z.data=p.data),p.kind!==void 0&&(z.kind=Kn(p.kind)),p.diagnostics!==void 0&&(z.diagnostics=await Un(p.diagnostics,E)),p.edit!==void 0)throw new Error("VS Code code actions can only be converted to a protocol code action without an edit.");return p.command!==void 0&&(z.command=Wt(p.command)),p.isPreferred!==void 0&&(z.isPreferred=p.isPreferred),p.disabled!==void 0&&(z.disabled={reason:p.disabled.reason}),z}async function zn(p,E){if(p==null)return p;let z;return p.only&&di.string(p.only.value)&&(z=[p.only.value]),de.CodeActionContext.create(await Un(p.diagnostics,E),z,Jt(p.triggerKind))}function Jt(p){switch(p){case ct.CodeActionTriggerKind.Invoke:return de.CodeActionTriggerKind.Invoked;case ct.CodeActionTriggerKind.Automatic:return de.CodeActionTriggerKind.Automatic;default:return}}function Kn(p){if(p!=null)return p.value}function fr(p){return p==null?p:de.InlineValueContext.create(p.frameId,Qe(p.stoppedLocation))}function Wt(p){let E=de.Command.create(p.title,p.command);return p.arguments&&(E.arguments=p.arguments),E}function pr(p){let E=de.CodeLens.create(Qe(p.range));return p.command&&(E.command=Wt(p.command)),p instanceof GD.default&&p.data&&(E.data=p.data),E}function Qt(p,E){let z={tabSize:p.tabSize,insertSpaces:p.insertSpaces};return E.trimTrailingWhitespace&&(z.trimTrailingWhitespace=!0),E.trimFinalNewlines&&(z.trimFinalNewlines=!0),E.insertFinalNewline&&(z.insertFinalNewline=!0),z}function b(p){return{textDocument:i(p)}}function N(p){return{textDocument:i(p)}}function H(p){let E=de.DocumentLink.create(Qe(p.range));p.target&&(E.target=r(p.target)),p.tooltip!==void 0&&(E.tooltip=p.tooltip);let z=p instanceof XD.default?p:void 0;return z&&z.data&&(E.data=z.data),E}function B(p){return{textDocument:i(p)}}function Re(p){let E={name:p.name,kind:qt(p.kind),uri:r(p.uri),range:Qe(p.range),selectionRange:Qe(p.selectionRange)};return p.detail!==void 0&&p.detail.length>0&&(E.detail=p.detail),p.tags!==void 0&&(E.tags=rt(p.tags)),p instanceof QD.default&&p.data!==void 0&&(E.data=p.data),E}function be(p){let E={name:p.name,kind:qt(p.kind),uri:r(p.uri),range:Qe(p.range),selectionRange:Qe(p.selectionRange)};return p.detail!==void 0&&p.detail.length>0&&(E.detail=p.detail),p.tags!==void 0&&(E.tags=rt(p.tags)),p instanceof YD.default&&p.data!==void 0&&(E.data=p.data),E}function De(p){let E=p instanceof ZD.default?{name:p.name,kind:qt(p.kind),location:p.hasRange?kt(p.location):{uri:t(p.location.uri)},data:p.data}:{name:p.name,kind:qt(p.kind),location:kt(p.location)};return p.tags!==void 0&&(E.tags=rt(p.tags)),p.containerName!==""&&(E.containerName=p.containerName),E}function Le(p){let E=typeof p.label=="string"?p.label:p.label.map(ce),z=de.InlayHint.create(Et(p.position),E);return p.kind!==void 0&&(z.kind=p.kind),p.textEdits!==void 0&&(z.textEdits=lr(p.textEdits)),p.tooltip!==void 0&&(z.tooltip=Se(p.tooltip)),p.paddingLeft!==void 0&&(z.paddingLeft=p.paddingLeft),p.paddingRight!==void 0&&(z.paddingRight=p.paddingRight),p instanceof eT.default&&p.data!==void 0&&(z.data=p.data),z}function ce(p){let E=de.InlayHintLabelPart.create(p.value);return p.location!==void 0&&(E.location=kt(p.location)),p.command!==void 0&&(E.command=Wt(p.command)),p.tooltip!==void 0&&(E.tooltip=Se(p.tooltip)),E}function Se(p){return typeof p=="string"?p:{kind:de.MarkupKind.Markdown,value:p.value}}return{asUri:r,asTextDocumentIdentifier:i,asTextDocumentItem:o,asVersionedTextDocumentIdentifier:s,asOpenTextDocumentParams:a,asChangeTextDocumentParams:f,asCloseTextDocumentParams:g,asSaveTextDocumentParams:m,asWillSaveTextDocumentParams:w,asDidCreateFilesParams:T,asDidRenameFilesParams:S,asDidDeleteFilesParams:q,asWillCreateFilesParams:F,asWillRenameFilesParams:I,asWillDeleteFilesParams:A,asTextDocumentPositionParams:W,asCompletionParams:K,asSignatureHelpParams:Pt,asWorkerPosition:mt,asRange:Qe,asPosition:Et,asPositions:_n,asLocation:kt,asDiagnosticSeverity:Ht,asDiagnosticTag:Dt,asDiagnostic:$n,asDiagnostics:Un,asCompletionItem:lt,asTextEdit:sn,asSymbolKind:qt,asSymbolTag:Wn,asSymbolTags:rt,asReferenceParams:fn,asCodeAction:It,asCodeActionContext:zn,asInlineValueContext:fr,asCommand:Wt,asCodeLens:pr,asFormattingOptions:Qt,asDocumentSymbolParams:b,asCodeLensParams:N,asDocumentLink:H,asDocumentLinkParams:B,asCallHierarchyItem:Re,asTypeHierarchyItem:be,asInlayHint:Le,asWorkspaceSymbol:De}}ps.createConverter=tT});var dh=O(gs=>{"use strict";Object.defineProperty(gs,"__esModule",{value:!0});gs.createConverter=void 0;var V=require("vscode"),te=se(),cn=Kt(),Pe=ls(),nT=cu(),rT=lu(),iT=hu(),oT=vu(),ch=wu(),sT=Tu(),aT=_u(),cT=Eu(),uT=Iu(),uh=se(),hs;(function(n){function e(t){let r=t;return r&&cn.string(r.language)&&cn.string(r.value)}n.is=e})(hs||(hs={}));function dT(n,e,t){let i=n||(u=>V.Uri.parse(u));function o(u){return i(u)}function s(u){let x=[];for(let j of u)if(typeof j=="string")x.push(j);else if(uh.NotebookCellTextDocumentFilter.is(j))if(typeof j.notebook=="string")x.push({notebookType:j.notebook,language:j.language});else{let Z=j.notebook.notebookType??"*";x.push({notebookType:Z,scheme:j.notebook.scheme,pattern:j.notebook.pattern,language:j.language})}else uh.TextDocumentFilter.is(j)&&x.push({language:j.language,scheme:j.scheme,pattern:j.pattern});return x}async function a(u,x){return Pe.map(u,d,x)}function c(u){let x=new Array(u.length);for(let j=0;j0?x:void 0}function m(u){switch(u){case te.DiagnosticTag.Unnecessary:return V.DiagnosticTag.Unnecessary;case te.DiagnosticTag.Deprecated:return V.DiagnosticTag.Deprecated;default:return}}function C(u){return u?new V.Position(u.line,u.character):void 0}function w(u){return u?new V.Range(u.start.line,u.start.character,u.end.line,u.end.character):void 0}async function T(u,x){return Pe.map(u,j=>new V.Range(j.start.line,j.start.character,j.end.line,j.end.character),x)}function S(u){if(u==null)return V.DiagnosticSeverity.Error;switch(u){case te.DiagnosticSeverity.Error:return V.DiagnosticSeverity.Error;case te.DiagnosticSeverity.Warning:return V.DiagnosticSeverity.Warning;case te.DiagnosticSeverity.Information:return V.DiagnosticSeverity.Information;case te.DiagnosticSeverity.Hint:return V.DiagnosticSeverity.Hint}return V.DiagnosticSeverity.Error}function q(u){if(cn.string(u))return I(u);if(hs.is(u))return I().appendCodeblock(u.value,u.language);if(Array.isArray(u)){let x=[];for(let j of u){let Z=I();hs.is(j)?Z.appendCodeblock(j.value,j.language):Z.appendMarkdown(j),x.push(Z)}return x}else return I(u)}function F(u){if(cn.string(u))return u;switch(u.kind){case te.MarkupKind.Markdown:return I(u.value);case te.MarkupKind.PlainText:return u.value;default:return`Unsupported Markup content received. Kind is: ${u.kind}`}}function I(u){let x;if(u===void 0||typeof u=="string")x=new V.MarkdownString(u);else switch(u.kind){case te.MarkupKind.Markdown:x=new V.MarkdownString(u.value);break;case te.MarkupKind.PlainText:x=new V.MarkdownString,x.appendText(u.value);break;default:x=new V.MarkdownString,x.appendText(`Unsupported Markup content received. Kind is: ${u.kind}`);break}return x.isTrusted=e,x.supportHtml=t,x}function A(u){if(u)return new V.Hover(q(u.contents),w(u.range))}async function W(u,x,j){if(!u)return;if(Array.isArray(u))return Pe.map(u,En=>tt(En,x),j);let Z=u,{defaultRange:vt,commitCharacters:ot}=ne(Z,x),Ie=await Pe.map(Z.items,En=>{var ke,Pr,Mi;return tt(En,ot,vt,(ke=Z.itemDefaults)==null?void 0:ke.insertTextMode,(Pr=Z.itemDefaults)==null?void 0:Pr.insertTextFormat,(Mi=Z.itemDefaults)==null?void 0:Mi.data)},j);return new V.CompletionList(Ie,Z.isIncomplete)}function ne(u,x){var vt,ot;let j=(vt=u.itemDefaults)==null?void 0:vt.editRange,Z=((ot=u.itemDefaults)==null?void 0:ot.commitCharacters)??x;return te.Range.is(j)?{defaultRange:w(j),commitCharacters:Z}:j!==void 0?{defaultRange:{inserting:w(j.insert),replacing:w(j.replace)},commitCharacters:Z}:{defaultRange:void 0,commitCharacters:Z}}function K(u){return te.CompletionItemKind.Text<=u&&u<=te.CompletionItemKind.TypeParameter?[u-1,void 0]:[V.CompletionItemKind.Text,u]}function Q(u){switch(u){case te.CompletionItemTag.Deprecated:return V.CompletionItemTag.Deprecated}}function ie(u){if(u==null)return[];let x=[];for(let j of u){let Z=Q(j);Z!==void 0&&x.push(Z)}return x}function tt(u,x,j,Z,vt,ot){let Ie=ie(u.tags),En=We(u),ke=new nT.default(En);u.detail&&(ke.detail=u.detail),u.documentation&&(ke.documentation=F(u.documentation),ke.documentationFormat=cn.string(u.documentation)?"$string":u.documentation.kind),u.filterText&&(ke.filterText=u.filterText);let Pr=nt(u,j,vt);if(Pr&&(ke.insertText=Pr.text,ke.range=Pr.range,ke.fromEdit=Pr.fromEdit),cn.number(u.kind)){let[rC,kf]=K(u.kind);ke.kind=rC,kf&&(ke.originalItemKind=kf)}u.sortText&&(ke.sortText=u.sortText),u.additionalTextEdits&&(ke.additionalTextEdits=Et(u.additionalTextEdits));let Mi=u.commitCharacters!==void 0?cn.stringArray(u.commitCharacters)?u.commitCharacters:void 0:x;Mi&&(ke.commitCharacters=Mi.slice()),u.command&&(ke.command=rt(u.command)),(u.deprecated===!0||u.deprecated===!1)&&(ke.deprecated=u.deprecated,u.deprecated===!0&&Ie.push(V.CompletionItemTag.Deprecated)),(u.preselect===!0||u.preselect===!1)&&(ke.preselect=u.preselect);let Ef=u.data??ot;Ef!==void 0&&(ke.data=Ef),Ie.length>0&&(ke.tags=Ie);let Ia=u.insertTextMode??Z;return Ia!==void 0&&(ke.insertTextMode=Ia,Ia===te.InsertTextMode.asIs&&(ke.keepWhitespace=!0)),ke}function We(u){return te.CompletionItemLabelDetails.is(u.labelDetails)?{label:u.label,detail:u.labelDetails.detail,description:u.labelDetails.description}:u.label}function nt(u,x,j){let Z=u.insertTextFormat??j;if(u.textEdit!==void 0||x!==void 0){let[vt,ot]=u.textEdit!==void 0?ln(u.textEdit):[x,u.textEditText??u.label];return Z===te.InsertTextFormat.Snippet?{text:new V.SnippetString(ot),range:vt,fromEdit:!0}:{text:ot,range:vt,fromEdit:!0}}else return u.insertText?Z===te.InsertTextFormat.Snippet?{text:new V.SnippetString(u.insertText),fromEdit:!1}:{text:u.insertText,fromEdit:!1}:void 0}function ln(u){return te.InsertReplaceEdit.is(u)?[{inserting:w(u.insert),replacing:w(u.replace)},u.newText]:[w(u.range),u.newText]}function Pt(u){if(u)return new V.TextEdit(w(u.range),u.newText)}async function mt(u,x){if(u)return Pe.map(u,Pt,x)}function Et(u){if(!u)return;let x=new Array(u.length);for(let j=0;j0){let j=[];for(let Z of u.children)j.push(qt(Z));x.children=j}return x}function Wn(u,x){u.tags=Pn(x.tags),x.deprecated&&(u.tags?u.tags.includes(V.SymbolTag.Deprecated)||(u.tags=u.tags.concat(V.SymbolTag.Deprecated)):u.tags=[V.SymbolTag.Deprecated])}function rt(u){let x={title:u.title,command:u.command};return u.arguments&&(x.arguments=u.arguments),x}async function fn(u,x){if(u)return Pe.map(u,rt,x)}let It=new Map;It.set(te.CodeActionKind.Empty,V.CodeActionKind.Empty),It.set(te.CodeActionKind.QuickFix,V.CodeActionKind.QuickFix),It.set(te.CodeActionKind.Refactor,V.CodeActionKind.Refactor),It.set(te.CodeActionKind.RefactorExtract,V.CodeActionKind.RefactorExtract),It.set(te.CodeActionKind.RefactorInline,V.CodeActionKind.RefactorInline),It.set(te.CodeActionKind.RefactorRewrite,V.CodeActionKind.RefactorRewrite),It.set(te.CodeActionKind.Source,V.CodeActionKind.Source),It.set(te.CodeActionKind.SourceOrganizeImports,V.CodeActionKind.SourceOrganizeImports);function zn(u){if(u==null)return;let x=It.get(u);if(x)return x;let j=u.split(".");x=V.CodeActionKind.Empty;for(let Z of j)x=x.append(Z);return x}function Jt(u){if(u!=null)return u.map(x=>zn(x))}async function Kn(u,x){if(u==null)return;let j=new oT.default(u.title,u.data);return u.kind!==void 0&&(j.kind=zn(u.kind)),u.diagnostics!==void 0&&(j.diagnostics=c(u.diagnostics)),u.edit!==void 0&&(j.edit=await Qt(u.edit,x)),u.command!==void 0&&(j.command=rt(u.command)),u.isPreferred!==void 0&&(j.isPreferred=u.isPreferred),u.disabled!==void 0&&(j.disabled={reason:u.disabled.reason}),j}function fr(u,x){return Pe.mapAsync(u,async j=>te.Command.is(j)?rt(j):Kn(j,x),x)}function Wt(u){if(!u)return;let x=new rT.default(w(u.range));return u.command&&(x.command=rt(u.command)),u.data!==void 0&&u.data!==null&&(x.data=u.data),x}async function pr(u,x){if(u)return Pe.map(u,Wt,x)}async function Qt(u,x){if(!u)return;let j=new Map;if(u.changeAnnotations!==void 0){let ot=u.changeAnnotations;await Pe.forEach(Object.keys(ot),Ie=>{let En=b(ot[Ie]);j.set(Ie,En)},x)}let Z=ot=>{if(ot!==void 0)return j.get(ot)},vt=new V.WorkspaceEdit;if(u.documentChanges){let ot=u.documentChanges;await Pe.forEach(ot,Ie=>{if(te.CreateFile.is(Ie))vt.createFile(i(Ie.uri),Ie.options,Z(Ie.annotationId));else if(te.RenameFile.is(Ie))vt.renameFile(i(Ie.oldUri),i(Ie.newUri),Ie.options,Z(Ie.annotationId));else if(te.DeleteFile.is(Ie))vt.deleteFile(i(Ie.uri),Ie.options,Z(Ie.annotationId));else if(te.TextDocumentEdit.is(Ie)){let En=i(Ie.textDocument.uri);for(let ke of Ie.edits)te.AnnotatedTextEdit.is(ke)?vt.replace(En,w(ke.range),ke.newText,Z(ke.annotationId)):vt.replace(En,w(ke.range),ke.newText)}else throw new Error(`Unknown workspace edit change received: +${JSON.stringify(Ie,void 0,4)}`)},x)}else if(u.changes){let ot=u.changes;await Pe.forEach(Object.keys(ot),Ie=>{vt.set(i(Ie),Et(ot[Ie]))},x)}return vt}function b(u){if(u!==void 0)return{label:u.label,needsConfirmation:!!u.needsConfirmation,description:u.description}}function N(u){let x=w(u.range),j=u.target?o(u.target):void 0,Z=new iT.default(x,j);return u.tooltip!==void 0&&(Z.tooltip=u.tooltip),u.data!==void 0&&u.data!==null&&(Z.data=u.data),Z}async function H(u,x){if(u)return Pe.map(u,N,x)}function B(u){return new V.Color(u.red,u.green,u.blue,u.alpha)}function Re(u){return new V.ColorInformation(w(u.range),B(u.color))}async function be(u,x){if(u)return Pe.map(u,Re,x)}function De(u){let x=new V.ColorPresentation(u.label);return x.additionalTextEdits=Et(u.additionalTextEdits),u.textEdit&&(x.textEdit=Pt(u.textEdit)),x}async function Le(u,x){if(u)return Pe.map(u,De,x)}function ce(u){if(u)switch(u){case te.FoldingRangeKind.Comment:return V.FoldingRangeKind.Comment;case te.FoldingRangeKind.Imports:return V.FoldingRangeKind.Imports;case te.FoldingRangeKind.Region:return V.FoldingRangeKind.Region}}function Se(u){return new V.FoldingRange(u.startLine,u.endLine,ce(u.kind))}async function p(u,x){if(u)return Pe.map(u,Se,x)}function E(u){return new V.SelectionRange(w(u.range),u.parent?E(u.parent):void 0)}async function z(u,x){return Array.isArray(u)?Pe.map(u,E,x):[]}function ue(u){return te.InlineValueText.is(u)?new V.InlineValueText(w(u.range),u.text):te.InlineValueVariableLookup.is(u)?new V.InlineValueVariableLookup(w(u.range),u.variableName,u.caseSensitiveLookup):new V.InlineValueEvaluatableExpression(w(u.range),u.expression)}async function _(u,x){return Array.isArray(u)?Pe.map(u,ue,x):[]}async function h(u,x){let j=typeof u.label=="string"?u.label:await Pe.map(u.label,D,x),Z=new uT.default(C(u.position),j);return u.kind!==void 0&&(Z.kind=u.kind),u.textEdits!==void 0&&(Z.textEdits=await mt(u.textEdits,x)),u.tooltip!==void 0&&(Z.tooltip=R(u.tooltip)),u.paddingLeft!==void 0&&(Z.paddingLeft=u.paddingLeft),u.paddingRight!==void 0&&(Z.paddingRight=u.paddingRight),u.data!==void 0&&(Z.data=u.data),Z}function D(u){let x=new V.InlayHintLabelPart(u.value);return u.location!==void 0&&(x.location=Dt(u.location)),u.tooltip!==void 0&&(x.tooltip=R(u.tooltip)),u.command!==void 0&&(x.command=rt(u.command)),x}function R(u){return typeof u=="string"?u:I(u)}async function y(u,x){if(Array.isArray(u))return Pe.mapAsync(u,h,x)}function l(u){if(u===null)return;let x=new sT.default(lt(u.kind),u.name,u.detail||"",o(u.uri),w(u.range),w(u.selectionRange),u.data);return u.tags!==void 0&&(x.tags=Pn(u.tags)),x}async function P(u,x){if(u!==null)return Pe.map(u,l,x)}async function M(u,x){return new V.CallHierarchyIncomingCall(l(u.from),await T(u.fromRanges,x))}async function oe(u,x){if(u!==null)return Pe.mapAsync(u,M,x)}async function Ae(u,x){return new V.CallHierarchyOutgoingCall(l(u.to),await T(u.fromRanges,x))}async function Fe(u,x){if(u!==null)return Pe.mapAsync(u,Ae,x)}async function Yt(u,x){if(u!=null)return new V.SemanticTokens(new Uint32Array(u.data),u.resultId)}function zt(u){return new V.SemanticTokensEdit(u.start,u.deleteCount,u.data!==void 0?new Uint32Array(u.data):void 0)}async function pn(u,x){if(u!=null)return new V.SemanticTokensEdits(u.edits.map(zt),u.resultId)}function he(u){return u}async function hr(u,x){if(u!=null)return new V.LinkedEditingRanges(await T(u.ranges,x),Qr(u.wordPattern))}function Qr(u){if(u!=null)return new RegExp(u)}function Ni(u){if(u===null)return;let x=new aT.default(lt(u.kind),u.name,u.detail||"",o(u.uri),w(u.range),w(u.selectionRange),u.data);return u.tags!==void 0&&(x.tags=Pn(u.tags)),x}async function tC(u,x){if(u!==null)return Pe.map(u,Ni,x)}function nC(u){if(cn.string(u))return u;if(te.RelativePattern.is(u)){if(te.URI.is(u.baseUri))return new V.RelativePattern(o(u.baseUri),u.pattern);if(te.WorkspaceFolder.is(u.baseUri)){let x=V.workspace.getWorkspaceFolder(o(u.baseUri.uri));return x!==void 0?new V.RelativePattern(x,u.pattern):void 0}}}return{asUri:o,asDocumentSelector:s,asDiagnostics:a,asDiagnostic:d,asRange:w,asRanges:T,asPosition:C,asDiagnosticSeverity:S,asDiagnosticTag:m,asHover:A,asCompletionResult:W,asCompletionItem:tt,asTextEdit:Pt,asTextEdits:mt,asSignatureHelp:_n,asSignatureInformations:Qe,asSignatureInformation:kt,asParameterInformations:Ht,asParameterInformation:xn,asDeclarationResult:_r,asDefinitionResult:ar,asLocation:Dt,asReferences:Un,asDocumentHighlights:xr,asDocumentHighlight:cr,asDocumentHighlightKind:ur,asSymbolKind:lt,asSymbolTag:dr,asSymbolTags:Pn,asSymbolInformations:Hn,asSymbolInformation:sn,asDocumentSymbols:lr,asDocumentSymbol:qt,asCommand:rt,asCommands:fn,asCodeAction:Kn,asCodeActionKind:zn,asCodeActionKinds:Jt,asCodeActionResult:fr,asCodeLens:Wt,asCodeLenses:pr,asWorkspaceEdit:Qt,asDocumentLink:N,asDocumentLinks:H,asFoldingRangeKind:ce,asFoldingRange:Se,asFoldingRanges:p,asColor:B,asColorInformation:Re,asColorInformations:be,asColorPresentation:De,asColorPresentations:Le,asSelectionRange:E,asSelectionRanges:z,asInlineValue:ue,asInlineValues:_,asInlayHint:h,asInlayHints:y,asSemanticTokensLegend:he,asSemanticTokens:Yt,asSemanticTokensEdit:zt,asSemanticTokensEdits:pn,asCallHierarchyItem:l,asCallHierarchyItems:P,asCallHierarchyIncomingCall:M,asCallHierarchyIncomingCalls:oe,asCallHierarchyOutgoingCall:Ae,asCallHierarchyOutgoingCalls:Fe,asLinkedEditingRanges:hr,asTypeHierarchyItem:Ni,asTypeHierarchyItems:tC,asGlobPattern:nC}}gs.createConverter=dT});var Ge=O(un=>{"use strict";Object.defineProperty(un,"__esModule",{value:!0});un.generateUuid=un.parse=un.isUUID=un.v4=un.empty=void 0;var ro=class{constructor(e){this._value=e}asHex(){return this._value}equals(e){return this.asHex()===e.asHex()}},io=class n extends ro{constructor(){super([n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),"-",n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),"-","4",n._randomHex(),n._randomHex(),n._randomHex(),"-",n._oneOf(n._timeHighBits),n._randomHex(),n._randomHex(),n._randomHex(),"-",n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex(),n._randomHex()].join(""))}static _oneOf(e){return e[Math.floor(e.length*Math.random())]}static _randomHex(){return n._oneOf(n._chars)}};io._chars=["0","1","2","3","4","5","6","6","7","8","9","a","b","c","d","e","f"];io._timeHighBits=["8","9","a","b"];un.empty=new ro("00000000-0000-0000-0000-000000000000");function lh(){return new io}un.v4=lh;var lT=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function fh(n){return lT.test(n)}un.isUUID=fh;function fT(n){if(!fh(n))throw new Error("invalid uuid");return new ro(n)}un.parse=fT;function pT(){return lh().asHex()}un.generateUuid=pT});var Lu=O(ms=>{"use strict";Object.defineProperty(ms,"__esModule",{value:!0});ms.ProgressPart=void 0;var ph=require("vscode"),hh=se(),gh=Kt(),Fu=class{constructor(e,t,r){this._client=e,this._token=t,this._reported=0,this._infinite=!1,this._lspProgressDisposable=this._client.onProgress(hh.WorkDoneProgress.type,this._token,i=>{switch(i.kind){case"begin":this.begin(i);break;case"report":this.report(i);break;case"end":this.done(),r&&r(this);break}})}begin(e){this._infinite=e.percentage===void 0,this._lspProgressDisposable!==void 0&&ph.window.withProgress({location:ph.ProgressLocation.Window,cancellable:e.cancellable,title:e.title},async(t,r)=>{if(this._lspProgressDisposable!==void 0)return this._progress=t,this._cancellationToken=r,this._tokenDisposable=this._cancellationToken.onCancellationRequested(()=>{this._client.sendNotification(hh.WorkDoneProgressCancelNotification.type,{token:this._token})}),this.report(e),new Promise((i,o)=>{this._resolve=i,this._reject=o})})}report(e){if(this._infinite&&gh.string(e.message))this._progress!==void 0&&this._progress.report({message:e.message});else if(gh.number(e.percentage)){let t=Math.max(0,Math.min(e.percentage,100)),r=Math.max(0,t-this._reported);this._reported+=r,this._progress!==void 0&&this._progress.report({message:e.message,increment:r})}}cancel(){this.cleanup(),this._reject!==void 0&&(this._reject(),this._resolve=void 0,this._reject=void 0)}done(){this.cleanup(),this._resolve!==void 0&&(this._resolve(),this._resolve=void 0,this._reject=void 0)}cleanup(){this._lspProgressDisposable!==void 0&&(this._lspProgressDisposable.dispose(),this._lspProgressDisposable=void 0),this._tokenDisposable!==void 0&&(this._tokenDisposable.dispose(),this._tokenDisposable=void 0),this._progress=void 0,this._cancellationToken=void 0}};ms.ProgressPart=Fu});var Te=O(ut=>{"use strict";Object.defineProperty(ut,"__esModule",{value:!0});ut.WorkspaceFeature=ut.TextDocumentLanguageFeature=ut.TextDocumentEventFeature=ut.DynamicDocumentFeature=ut.DynamicFeature=ut.StaticFeature=ut.ensure=ut.LSPCancellationError=void 0;var Mr=require("vscode"),Nu=se(),Nt=Kt(),mh=Ge(),Mu=class extends Mr.CancellationError{constructor(e){super(),this.data=e}};ut.LSPCancellationError=Mu;function hT(n,e){return n[e]===void 0&&(n[e]={}),n[e]}ut.ensure=hT;var gT;(function(n){function e(t){let r=t;return r!=null&&Nt.func(r.fillClientCapabilities)&&Nt.func(r.initialize)&&Nt.func(r.getState)&&Nt.func(r.dispose)&&(r.fillInitializeParams===void 0||Nt.func(r.fillInitializeParams))}n.is=e})(gT=ut.StaticFeature||(ut.StaticFeature={}));var mT;(function(n){function e(t){let r=t;return r!=null&&Nt.func(r.fillClientCapabilities)&&Nt.func(r.initialize)&&Nt.func(r.getState)&&Nt.func(r.dispose)&&(r.fillInitializeParams===void 0||Nt.func(r.fillInitializeParams))&&Nt.func(r.register)&&Nt.func(r.unregister)&&r.registrationType!==void 0}n.is=e})(mT=ut.DynamicFeature||(ut.DynamicFeature={}));var oo=class{constructor(e){this._client=e}getState(){let e=this.getDocumentSelectors(),t=0;for(let i of e){t++;for(let o of Mr.workspace.textDocuments)if(Mr.languages.match(i,o)>0)return{kind:"document",id:this.registrationType.method,registrations:!0,matches:!0}}let r=t>0;return{kind:"document",id:this.registrationType.method,registrations:r,matches:!1}}};ut.DynamicDocumentFeature=oo;var Au=class extends oo{constructor(e,t,r,i,o,s,a){super(e),this._event=t,this._type=r,this._middleware=i,this._createParams=o,this._textDocument=s,this._selectorFilter=a,this._selectors=new Map,this._onNotificationSent=new Mr.EventEmitter}static textDocumentFilter(e,t){for(let r of e)if(Mr.languages.match(r,t)>0)return!0;return!1}getStateInfo(){return[this._selectors.values(),!1]}getDocumentSelectors(){return this._selectors.values()}register(e){e.registerOptions.documentSelector&&(this._listener||(this._listener=this._event(t=>{this.callback(t).catch(r=>{this._client.error(`Sending document notification ${this._type.method} failed.`,r)})})),this._selectors.set(e.id,this._client.protocol2CodeConverter.asDocumentSelector(e.registerOptions.documentSelector)))}async callback(e){let t=async r=>{let i=this._createParams(r);await this._client.sendNotification(this._type,i),this.notificationSent(this.getTextDocument(r),this._type,i)};if(this.matches(e)){let r=this._middleware();return r?r(e,i=>t(i)):t(e)}}matches(e){return this._client.hasDedicatedTextSynchronizationFeature(this._textDocument(e))?!1:!this._selectorFilter||this._selectorFilter(this._selectors.values(),e)}get onNotificationSent(){return this._onNotificationSent.event}notificationSent(e,t,r){this._onNotificationSent.fire({textDocument:e,type:t,params:r})}unregister(e){this._selectors.delete(e),this._selectors.size===0&&this._listener&&(this._listener.dispose(),this._listener=void 0)}dispose(){this._selectors.clear(),this._onNotificationSent.dispose(),this._listener&&(this._listener.dispose(),this._listener=void 0)}getProvider(e){for(let t of this._selectors.values())if(Mr.languages.match(t,e)>0)return{send:r=>this.callback(r)}}};ut.TextDocumentEventFeature=Au;var ju=class extends oo{constructor(e,t){super(e),this._registrationType=t,this._registrations=new Map}*getDocumentSelectors(){for(let e of this._registrations.values()){let t=e.data.registerOptions.documentSelector;t!==null&&(yield this._client.protocol2CodeConverter.asDocumentSelector(t))}}get registrationType(){return this._registrationType}register(e){if(!e.registerOptions.documentSelector)return;let t=this.registerLanguageProvider(e.registerOptions,e.id);this._registrations.set(e.id,{disposable:t[0],data:e,provider:t[1]})}unregister(e){let t=this._registrations.get(e);t!==void 0&&t.disposable.dispose()}dispose(){this._registrations.forEach(e=>{e.disposable.dispose()}),this._registrations.clear()}getRegistration(e,t){if(t){if(Nu.TextDocumentRegistrationOptions.is(t)){let r=Nu.StaticRegistrationOptions.hasId(t)?t.id:mh.generateUuid(),i=t.documentSelector??e;if(i)return[r,Object.assign({},t,{documentSelector:i})]}else if(Nt.boolean(t)&&t===!0||Nu.WorkDoneProgressOptions.is(t)){if(!e)return[void 0,void 0];let r=Nt.boolean(t)&&t===!0?{documentSelector:e}:Object.assign({},t,{documentSelector:e});return[mh.generateUuid(),r]}}else return[void 0,void 0];return[void 0,void 0]}getRegistrationOptions(e,t){if(!(!e||!t))return Nt.boolean(t)&&t===!0?{documentSelector:e}:Object.assign({},t,{documentSelector:e})}getProvider(e){for(let t of this._registrations.values()){let r=t.data.registerOptions.documentSelector;if(r!==null&&Mr.languages.match(this._client.protocol2CodeConverter.asDocumentSelector(r),e)>0)return t.provider}}getAllProviders(){let e=[];for(let t of this._registrations.values())e.push(t.provider);return e}};ut.TextDocumentLanguageFeature=ju;var $u=class{constructor(e,t){this._client=e,this._registrationType=t,this._registrations=new Map}getState(){let e=this._registrations.size>0;return{kind:"workspace",id:this._registrationType.method,registrations:e}}get registrationType(){return this._registrationType}register(e){let t=this.registerLanguageProvider(e.registerOptions);this._registrations.set(e.id,{disposable:t[0],provider:t[1]})}unregister(e){let t=this._registrations.get(e);t!==void 0&&t.disposable.dispose()}dispose(){this._registrations.forEach(e=>{e.disposable.dispose()}),this._registrations.clear()}getProviders(){let e=[];for(let t of this._registrations.values())e.push(t.provider);return e}};ut.WorkspaceFeature=$u});var yh=O((RP,vh)=>{var vT=typeof process=="object"&&process&&process.platform==="win32";vh.exports=vT?{sep:"\\"}:{sep:"/"}});var Th=O((SP,Dh)=>{"use strict";Dh.exports=wh;function wh(n,e,t){n instanceof RegExp&&(n=Ch(n,t)),e instanceof RegExp&&(e=Ch(e,t));var r=bh(n,e,t);return r&&{start:r[0],end:r[1],pre:t.slice(0,r[0]),body:t.slice(r[0]+n.length,r[1]),post:t.slice(r[1]+e.length)}}function Ch(n,e){var t=e.match(n);return t?t[0]:null}wh.range=bh;function bh(n,e,t){var r,i,o,s,a,c=t.indexOf(n),d=t.indexOf(e,c+1),f=c;if(c>=0&&d>0){if(n===e)return[c,d];for(r=[],o=t.length;f>=0&&!a;)f==c?(r.push(f),c=t.indexOf(n,f+1)):r.length==1?a=[r.pop(),d]:(i=r.pop(),i=0?c:d;r.length&&(a=[o,s])}return a}});var qh=O((_P,kh)=>{var Rh=Th();kh.exports=wT;var Sh="\0SLASH"+Math.random()+"\0",_h="\0OPEN"+Math.random()+"\0",Hu="\0CLOSE"+Math.random()+"\0",xh="\0COMMA"+Math.random()+"\0",Ph="\0PERIOD"+Math.random()+"\0";function Uu(n){return parseInt(n,10)==n?parseInt(n,10):n.charCodeAt(0)}function yT(n){return n.split("\\\\").join(Sh).split("\\{").join(_h).split("\\}").join(Hu).split("\\,").join(xh).split("\\.").join(Ph)}function CT(n){return n.split(Sh).join("\\").split(_h).join("{").split(Hu).join("}").split(xh).join(",").split(Ph).join(".")}function Eh(n){if(!n)return[""];var e=[],t=Rh("{","}",n);if(!t)return n.split(",");var r=t.pre,i=t.body,o=t.post,s=r.split(",");s[s.length-1]+="{"+i+"}";var a=Eh(o);return o.length&&(s[s.length-1]+=a.shift(),s.push.apply(s,a)),e.push.apply(e,s),e}function wT(n){return n?(n.substr(0,2)==="{}"&&(n="\\{\\}"+n.substr(2)),so(yT(n),!0).map(CT)):[]}function bT(n){return"{"+n+"}"}function DT(n){return/^-?0\d/.test(n)}function TT(n,e){return n<=e}function RT(n,e){return n>=e}function so(n,e){var t=[],r=Rh("{","}",n);if(!r)return[n];var i=r.pre,o=r.post.length?so(r.post,!1):[""];if(/\$$/.test(r.pre))for(var s=0;s=0;if(!f&&!g)return r.post.match(/,.*\}/)?(n=r.pre+"{"+r.body+Hu+r.post,so(n)):[n];var m;if(f)m=r.body.split(/\.\./);else if(m=Eh(r.body),m.length===1&&(m=so(m[0],!1).map(bT),m.length===1))return o.map(function(tt){return r.pre+m[0]+tt});var C;if(f){var w=Uu(m[0]),T=Uu(m[1]),S=Math.max(m[0].length,m[1].length),q=m.length==3?Math.abs(Uu(m[2])):1,F=TT,I=T0){var Q=new Array(K+1).join("0");W<0?ne="-"+Q+ne.slice(1):ne=Q+ne}}C.push(ne)}}else{C=[];for(var ie=0;ie{var en=Bu.exports=(n,e,t={})=>(vs(e),!t.nocomment&&e.charAt(0)==="#"?!1:new li(e,t).match(n));Bu.exports=en;var Ku=yh();en.sep=Ku.sep;var Dn=Symbol("globstar **");en.GLOBSTAR=Dn;var ST=qh(),Ih={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},Vu="[^/]",Wu=Vu+"*?",_T="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",xT="(?:(?!(?:\\/|^)\\.).)*?",Lh=n=>n.split("").reduce((e,t)=>(e[t]=!0,e),{}),Oh=Lh("().*{}+?[]^$\\!"),PT=Lh("[.("),Fh=/\/+/;en.filter=(n,e={})=>(t,r,i)=>en(t,n,e);var Cr=(n,e={})=>{let t={};return Object.keys(n).forEach(r=>t[r]=n[r]),Object.keys(e).forEach(r=>t[r]=e[r]),t};en.defaults=n=>{if(!n||typeof n!="object"||!Object.keys(n).length)return en;let e=en,t=(r,i,o)=>e(r,i,Cr(n,o));return t.Minimatch=class extends e.Minimatch{constructor(i,o){super(i,Cr(n,o))}},t.Minimatch.defaults=r=>e.defaults(Cr(n,r)).Minimatch,t.filter=(r,i)=>e.filter(r,Cr(n,i)),t.defaults=r=>e.defaults(Cr(n,r)),t.makeRe=(r,i)=>e.makeRe(r,Cr(n,i)),t.braceExpand=(r,i)=>e.braceExpand(r,Cr(n,i)),t.match=(r,i,o)=>e.match(r,i,Cr(n,o)),t};en.braceExpand=(n,e)=>Nh(n,e);var Nh=(n,e={})=>(vs(n),e.nobrace||!/\{(?:(?!\{).)*\}/.test(n)?[n]:ST(n)),ET=1024*64,vs=n=>{if(typeof n!="string")throw new TypeError("invalid pattern");if(n.length>ET)throw new TypeError("pattern is too long")},zu=Symbol("subparse");en.makeRe=(n,e)=>new li(n,e||{}).makeRe();en.match=(n,e,t={})=>{let r=new li(e,t);return n=n.filter(i=>r.match(i)),r.options.nonull&&!n.length&&n.push(e),n};var kT=n=>n.replace(/\\(.)/g,"$1"),qT=n=>n.replace(/\\([^-\]])/g,"$1"),IT=n=>n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),OT=n=>n.replace(/[[\]\\]/g,"\\$&"),li=class{constructor(e,t){vs(e),t||(t={}),this.options=t,this.set=[],this.pattern=e,this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||t.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.make()}debug(){}make(){let e=this.pattern,t=this.options;if(!t.nocomment&&e.charAt(0)==="#"){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate();let r=this.globSet=this.braceExpand();t.debug&&(this.debug=(...i)=>console.error(...i)),this.debug(this.pattern,r),r=this.globParts=r.map(i=>i.split(Fh)),this.debug(this.pattern,r),r=r.map((i,o,s)=>i.map(this.parse,this)),this.debug(this.pattern,r),r=r.filter(i=>i.indexOf(!1)===-1),this.debug(this.pattern,r),this.set=r}parseNegate(){if(this.options.nonegate)return;let e=this.pattern,t=!1,r=0;for(let i=0;i>> no match, partial?`,e,g,t,m),g===a))}var w;if(typeof d=="string"?(w=f===d,this.debug("string match",d,f,w)):(w=f.match(d),this.debug("pattern match",d,f,w)),!w)return!1}if(o===a&&s===c)return!0;if(o===a)return r;if(s===c)return o===a-1&&e[o]==="";throw new Error("wtf?")}braceExpand(){return Nh(this.pattern,this.options)}parse(e,t){vs(e);let r=this.options;if(e==="**")if(r.noglobstar)e="*";else return Dn;if(e==="")return"";let i="",o=!1,s=!1,a=[],c=[],d,f=!1,g=-1,m=-1,C,w,T,S=e.charAt(0)===".",q=r.dot||S,F=()=>S?"":q?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",I=K=>K.charAt(0)==="."?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",A=()=>{if(d){switch(d){case"*":i+=Wu,o=!0;break;case"?":i+=Vu,o=!0;break;default:i+="\\"+d;break}this.debug("clearStateChar %j %j",d,i),d=!1}};for(let K=0,Q;K(We||(We="\\"),tt+tt+We+"|")),this.debug(`tail=%j + %s`,K,K,w,i);let Q=w.type==="*"?Wu:w.type==="?"?Vu:"\\"+w.type;o=!0,i=i.slice(0,w.reStart)+Q+"\\("+K}A(),s&&(i+="\\\\");let W=PT[i.charAt(0)];for(let K=c.length-1;K>-1;K--){let Q=c[K],ie=i.slice(0,Q.reStart),tt=i.slice(Q.reStart,Q.reEnd-8),We=i.slice(Q.reEnd),nt=i.slice(Q.reEnd-8,Q.reEnd)+We,ln=ie.split(")").length,Pt=ie.split("(").length-ln,mt=We;for(let _n=0;_n(s=s.map(a=>typeof a=="string"?IT(a):a===Dn?Dn:a._src).reduce((a,c)=>(a[a.length-1]===Dn&&c===Dn||a.push(c),a),[]),s.forEach((a,c)=>{a!==Dn||s[c-1]===Dn||(c===0?s.length>1?s[c+1]="(?:\\/|"+r+"\\/)?"+s[c+1]:s[c]=r:c===s.length-1?s[c-1]+="(?:\\/|"+r+")?":(s[c-1]+="(?:\\/|\\/"+r+"\\/)"+s[c+1],s[c+1]=Dn))}),s.filter(a=>a!==Dn).join("/"))).join("|");o="^(?:"+o+")$",this.negate&&(o="^(?!"+o+").*$");try{this.regexp=new RegExp(o,i)}catch{this.regexp=!1}return this.regexp}match(e,t=this.partial){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return e==="";if(e==="/"&&t)return!0;let r=this.options;Ku.sep!=="/"&&(e=e.split(Ku.sep).join("/")),e=e.split(Fh),this.debug(this.pattern,"split",e);let i=this.set;this.debug(this.pattern,"set",i);let o;for(let s=e.length-1;s>=0&&(o=e[s],!o);s--);for(let s=0;s{"use strict";Object.defineProperty(On,"__esModule",{value:!0});On.DiagnosticFeature=On.DiagnosticPullMode=On.vsdiag=void 0;var FT=ys(),ye=require("vscode"),Ze=se(),LT=Ge(),Gu=Te();function Cs(n,e){return n[e]===void 0&&(n[e]={}),n[e]}var Tn;(function(n){let e;(function(t){t.full="full",t.unChanged="unChanged"})(e=n.DocumentDiagnosticReportKind||(n.DocumentDiagnosticReportKind={}))})(Tn=On.vsdiag||(On.vsdiag={}));var Xu;(function(n){n.onType="onType",n.onSave="onSave"})(Xu=On.DiagnosticPullMode||(On.DiagnosticPullMode={}));var St;(function(n){n.active="open",n.reschedule="reschedule",n.outDated="drop"})(St||(St={}));var Ju=class n{constructor(){this.open=new Set,this._onOpen=new ye.EventEmitter,this._onClose=new ye.EventEmitter,n.fillTabResources(this.open);let e=t=>{if(t.closed.length===0&&t.opened.length===0)return;let r=this.open,i=new Set;n.fillTabResources(i);let o=new Set,s=new Set(i);for(let a of r.values())i.has(a)?s.delete(a):o.add(a);if(this.open=i,o.size>0){let a=new Set;for(let c of o)a.add(ye.Uri.parse(c));this._onClose.fire(a)}if(s.size>0){let a=new Set;for(let c of s)a.add(ye.Uri.parse(c));this._onOpen.fire(a)}};ye.window.tabGroups.onDidChangeTabs!==void 0?this.disposable=ye.window.tabGroups.onDidChangeTabs(e):this.disposable={dispose:()=>{}}}get onClose(){return this._onClose.event}get onOpen(){return this._onOpen.event}dispose(){this.disposable.dispose()}isActive(e){var t,r;return e instanceof ye.Uri?((t=ye.window.activeTextEditor)==null?void 0:t.document.uri)===e:((r=ye.window.activeTextEditor)==null?void 0:r.document)===e}isVisible(e){let t=e instanceof ye.Uri?e:e.uri;return this.open.has(t.toString())}getTabResources(){let e=new Set;return n.fillTabResources(new Set,e),e}static fillTabResources(e,t){let r=e??new Set;for(let i of ye.window.tabGroups.all)for(let o of i.tabs){let s=o.input,a;s instanceof ye.TabInputText?a=s.uri:s instanceof ye.TabInputTextDiff&&(a=s.modified),a!==void 0&&!r.has(a.toString())&&(r.add(a.toString()),t!==void 0&&t.add(a))}}},ft;(function(n){n[n.document=1]="document",n[n.workspace=2]="workspace"})(ft||(ft={}));var Qn;(function(n){function e(t){return t instanceof ye.Uri?t.toString():t.uri.toString()}n.asKey=e})(Qn||(Qn={}));var Qu=class{constructor(){this.documentPullStates=new Map,this.workspacePullStates=new Map}track(e,t,r){let i=e===ft.document?this.documentPullStates:this.workspacePullStates,[o,s,a]=t instanceof ye.Uri?[t.toString(),t,r]:[t.uri.toString(),t.uri,t.version],c=i.get(o);return c===void 0&&(c={document:s,pulledVersion:a,resultId:void 0},i.set(o,c)),c}update(e,t,r,i){let o=e===ft.document?this.documentPullStates:this.workspacePullStates,[s,a,c,d]=t instanceof ye.Uri?[t.toString(),t,r,i]:[t.uri.toString(),t.uri,t.version,r],f=o.get(s);f===void 0?(f={document:a,pulledVersion:c,resultId:d},o.set(s,f)):(f.pulledVersion=c,f.resultId=d)}unTrack(e,t){let r=Qn.asKey(t);(e===ft.document?this.documentPullStates:this.workspacePullStates).delete(r)}tracks(e,t){let r=Qn.asKey(t);return(e===ft.document?this.documentPullStates:this.workspacePullStates).has(r)}getResultId(e,t){var o;let r=Qn.asKey(t);return(o=(e===ft.document?this.documentPullStates:this.workspacePullStates).get(r))==null?void 0:o.resultId}getAllResultIds(){let e=[];for(let[t,r]of this.workspacePullStates)this.documentPullStates.has(t)&&(r=this.documentPullStates.get(t)),r.resultId!==void 0&&e.push({uri:t,value:r.resultId});return e}},Yu=class{constructor(e,t,r){this.client=e,this.tabs=t,this.options=r,this.isDisposed=!1,this.onDidChangeDiagnosticsEmitter=new ye.EventEmitter,this.provider=this.createProvider(),this.diagnostics=ye.languages.createDiagnosticCollection(r.identifier),this.openRequests=new Map,this.documentStates=new Qu,this.workspaceErrorCounter=0}knows(e,t){let r=t instanceof ye.Uri?t:t.uri;return this.documentStates.tracks(e,t)||this.openRequests.has(r.toString())}forget(e,t){this.documentStates.unTrack(e,t)}pull(e,t){if(this.isDisposed)return;let r=e instanceof ye.Uri?e:e.uri;this.pullAsync(e).then(()=>{t&&t()},i=>{this.client.error(`Document pull failed for text document ${r.toString()}`,i,!1)})}async pullAsync(e,t){if(this.isDisposed)return;let r=e instanceof ye.Uri,i=r?e:e.uri,o=i.toString();t=r?t:e.version;let s=this.openRequests.get(o),a=r?this.documentStates.track(ft.document,e,t):this.documentStates.track(ft.document,e);if(s===void 0){let c=new ye.CancellationTokenSource;this.openRequests.set(o,{state:St.active,document:e,version:t,tokenSource:c});let d,f;try{d=await this.provider.provideDiagnostics(e,a.resultId,c.token)??{kind:Tn.DocumentDiagnosticReportKind.full,items:[]}}catch(g){if(g instanceof Gu.LSPCancellationError&&Ze.DiagnosticServerCancellationData.is(g.data)&&g.data.retriggerRequest===!1&&(f={state:St.outDated,document:e}),f===void 0&&g instanceof ye.CancellationError)f={state:St.reschedule,document:e};else throw g}if(f=f??this.openRequests.get(o),f===void 0){this.client.error(`Lost request state in diagnostic pull model. Clearing diagnostics for ${o}`),this.diagnostics.delete(i);return}if(this.openRequests.delete(o),!this.tabs.isVisible(e)){this.documentStates.unTrack(ft.document,e);return}if(f.state===St.outDated)return;d!==void 0&&(d.kind===Tn.DocumentDiagnosticReportKind.full&&this.diagnostics.set(i,d.items),a.pulledVersion=t,a.resultId=d.resultId),f.state===St.reschedule&&this.pull(e)}else s.state===St.active?(s.tokenSource.cancel(),this.openRequests.set(o,{state:St.reschedule,document:s.document})):s.state===St.outDated&&this.openRequests.set(o,{state:St.reschedule,document:s.document})}forgetDocument(e){let t=e instanceof ye.Uri?e:e.uri,r=t.toString(),i=this.openRequests.get(r);this.options.workspaceDiagnostics?i!==void 0?this.openRequests.set(r,{state:St.reschedule,document:e}):this.pull(e,()=>{this.forget(ft.document,e)}):(i!==void 0&&(i.state===St.active&&i.tokenSource.cancel(),this.openRequests.set(r,{state:St.outDated,document:e})),this.diagnostics.delete(t),this.forget(ft.document,e))}pullWorkspace(){this.isDisposed||this.pullWorkspaceAsync().then(()=>{this.workspaceTimeout=(0,Ze.RAL)().timer.setTimeout(()=>{this.pullWorkspace()},2e3)},e=>{!(e instanceof Gu.LSPCancellationError)&&!Ze.DiagnosticServerCancellationData.is(e.data)&&(this.client.error("Workspace diagnostic pull failed.",e,!1),this.workspaceErrorCounter++),this.workspaceErrorCounter<=5&&(this.workspaceTimeout=(0,Ze.RAL)().timer.setTimeout(()=>{this.pullWorkspace()},2e3))})}async pullWorkspaceAsync(){if(!this.provider.provideWorkspaceDiagnostics||this.isDisposed)return;this.workspaceCancellation!==void 0&&(this.workspaceCancellation.cancel(),this.workspaceCancellation=void 0),this.workspaceCancellation=new ye.CancellationTokenSource;let e=this.documentStates.getAllResultIds().map(t=>({uri:this.client.protocol2CodeConverter.asUri(t.uri),value:t.value}));await this.provider.provideWorkspaceDiagnostics(e,this.workspaceCancellation.token,t=>{if(!(!t||this.isDisposed))for(let r of t.items)r.kind===Tn.DocumentDiagnosticReportKind.full&&(this.documentStates.tracks(ft.document,r.uri)||this.diagnostics.set(r.uri,r.items)),this.documentStates.update(ft.workspace,r.uri,r.version??void 0,r.resultId)})}createProvider(){let e={onDidChangeDiagnostics:this.onDidChangeDiagnosticsEmitter.event,provideDiagnostics:(t,r,i)=>{let o=(a,c,d)=>{let f={identifier:this.options.identifier,textDocument:{uri:this.client.code2ProtocolConverter.asUri(a instanceof ye.Uri?a:a.uri)},previousResultId:c};return this.isDisposed===!0||!this.client.isRunning()?{kind:Tn.DocumentDiagnosticReportKind.full,items:[]}:this.client.sendRequest(Ze.DocumentDiagnosticRequest.type,f,d).then(async g=>g==null||this.isDisposed||d.isCancellationRequested?{kind:Tn.DocumentDiagnosticReportKind.full,items:[]}:g.kind===Ze.DocumentDiagnosticReportKind.Full?{kind:Tn.DocumentDiagnosticReportKind.full,resultId:g.resultId,items:await this.client.protocol2CodeConverter.asDiagnostics(g.items,d)}:{kind:Tn.DocumentDiagnosticReportKind.unChanged,resultId:g.resultId},g=>this.client.handleFailedRequest(Ze.DocumentDiagnosticRequest.type,d,g,{kind:Tn.DocumentDiagnosticReportKind.full,items:[]}))},s=this.client.middleware;return s.provideDiagnostics?s.provideDiagnostics(t,r,i,o):o(t,r,i)}};return this.options.workspaceDiagnostics&&(e.provideWorkspaceDiagnostics=(t,r,i)=>{let o=async d=>d.kind===Ze.DocumentDiagnosticReportKind.Full?{kind:Tn.DocumentDiagnosticReportKind.full,uri:this.client.protocol2CodeConverter.asUri(d.uri),resultId:d.resultId,version:d.version,items:await this.client.protocol2CodeConverter.asDiagnostics(d.items,r)}:{kind:Tn.DocumentDiagnosticReportKind.unChanged,uri:this.client.protocol2CodeConverter.asUri(d.uri),resultId:d.resultId,version:d.version},s=d=>{let f=[];for(let g of d)f.push({uri:this.client.code2ProtocolConverter.asUri(g.uri),value:g.value});return f},a=(d,f)=>{let g=(0,LT.generateUuid)(),m=this.client.onProgress(Ze.WorkspaceDiagnosticRequest.partialResult,g,async w=>{if(w==null){i(null);return}let T={items:[]};for(let S of w.items)try{T.items.push(await o(S))}catch(q){this.client.error("Converting workspace diagnostics failed.",q)}i(T)}),C={identifier:this.options.identifier,previousResultIds:s(d),partialResultToken:g};return this.isDisposed===!0||!this.client.isRunning()?{items:[]}:this.client.sendRequest(Ze.WorkspaceDiagnosticRequest.type,C,f).then(async w=>{if(f.isCancellationRequested)return{items:[]};let T={items:[]};for(let S of w.items)T.items.push(await o(S));return m.dispose(),i(T),{items:[]}},w=>(m.dispose(),this.client.handleFailedRequest(Ze.DocumentDiagnosticRequest.type,f,w,{items:[]})))},c=this.client.middleware;return c.provideWorkspaceDiagnostics?c.provideWorkspaceDiagnostics(t,r,i,a):a(t,r,i)}),e}dispose(){var e,t;this.isDisposed=!0,(e=this.workspaceCancellation)==null||e.cancel(),(t=this.workspaceTimeout)==null||t.dispose();for(let[r,i]of this.openRequests)i.state===St.active&&i.tokenSource.cancel(),this.openRequests.set(r,{state:St.outDated,document:i.document});this.diagnostics.dispose()}},Zu=class{constructor(e){this.diagnosticRequestor=e,this.documents=new Ze.LinkedMap,this.isDisposed=!1}add(e){if(this.isDisposed===!0)return;let t=Qn.asKey(e);this.documents.has(t)||(this.documents.set(t,e,Ze.Touch.Last),this.trigger())}remove(e){let t=Qn.asKey(e);this.documents.delete(t),this.documents.size===0?this.stop():t===this.endDocumentKey()&&(this.endDocument=this.documents.last)}trigger(){if(this.isDisposed!==!0){if(this.intervalHandle!==void 0){this.endDocument=this.documents.last;return}this.endDocument=this.documents.last,this.intervalHandle=(0,Ze.RAL)().timer.setInterval(()=>{let e=this.documents.first;if(e!==void 0){let t=Qn.asKey(e);this.diagnosticRequestor.pull(e),this.documents.set(t,e,Ze.Touch.Last),t===this.endDocumentKey()&&this.stop()}},200)}}dispose(){this.isDisposed=!0,this.stop(),this.documents.clear()}stop(){var e;(e=this.intervalHandle)==null||e.dispose(),this.intervalHandle=void 0,this.endDocument=void 0}endDocumentKey(){return this.endDocument!==void 0?Qn.asKey(this.endDocument):void 0}},ed=class{constructor(e,t,r){var w;let i=e.clientOptions.diagnosticPullOptions??{onChange:!0,onSave:!1},o=e.protocol2CodeConverter.asDocumentSelector(r.documentSelector),s=[],a=T=>{let S=r.documentSelector;if(i.match!==void 0)return i.match(S,T);for(let q of S)if(Ze.TextDocumentFilter.is(q)){if(typeof q=="string"||q.language!==void 0&&q.language!=="*"||q.scheme!==void 0&&q.scheme!=="*"&&q.scheme!==T.scheme)return!1;if(q.pattern!==void 0){let F=new FT.Minimatch(q.pattern,{noext:!0});if(!F.makeRe()||!F.match(T.fsPath))return!1}}return!0},c=T=>T instanceof ye.Uri?a(T):ye.languages.match(o,T)>0&&t.isVisible(T),d=T=>{var S;return T instanceof ye.Uri?((S=this.activeTextDocument)==null?void 0:S.uri.toString())===T.toString():this.activeTextDocument===T};this.diagnosticRequestor=new Yu(e,t,r),this.backgroundScheduler=new Zu(this.diagnosticRequestor);let f=T=>{!c(T)||!r.interFileDependencies||d(T)||this.backgroundScheduler.add(T)};this.activeTextDocument=(w=ye.window.activeTextEditor)==null?void 0:w.document,ye.window.onDidChangeActiveTextEditor(T=>{let S=this.activeTextDocument;this.activeTextDocument=T==null?void 0:T.document,S!==void 0&&f(S),this.activeTextDocument!==void 0&&this.backgroundScheduler.remove(this.activeTextDocument)});let g=e.getFeature(Ze.DidOpenTextDocumentNotification.method);s.push(g.onNotificationSent(T=>{let S=T.textDocument;this.diagnosticRequestor.knows(ft.document,S)||c(S)&&this.diagnosticRequestor.pull(S,()=>{f(S)})})),t.onOpen(T=>{for(let S of T){if(this.diagnosticRequestor.knows(ft.document,S))continue;let q=S.toString(),F;for(let I of ye.workspace.textDocuments)if(q===I.uri.toString()){F=I;break}F!==void 0&&c(F)?this.diagnosticRequestor.pull(F,()=>{f(F)}):c(S)&&this.diagnosticRequestor.pull(S,()=>{f(S)})}});let m=new Set;for(let T of ye.workspace.textDocuments)c(T)&&(this.diagnosticRequestor.pull(T,()=>{f(T)}),m.add(T.uri.toString()));if(i.onTabs===!0)for(let T of t.getTabResources())!m.has(T.toString())&&c(T)&&this.diagnosticRequestor.pull(T,()=>{f(T)});if(i.onChange===!0){let T=e.getFeature(Ze.DidChangeTextDocumentNotification.method);s.push(T.onNotificationSent(async S=>{let q=S.textDocument;(i.filter===void 0||!i.filter(q,Xu.onType))&&this.diagnosticRequestor.knows(ft.document,q)&&this.diagnosticRequestor.pull(q,()=>{this.backgroundScheduler.trigger()})}))}if(i.onSave===!0){let T=e.getFeature(Ze.DidSaveTextDocumentNotification.method);s.push(T.onNotificationSent(S=>{let q=S.textDocument;(i.filter===void 0||!i.filter(q,Xu.onSave))&&this.diagnosticRequestor.knows(ft.document,q)&&this.diagnosticRequestor.pull(S.textDocument,()=>{this.backgroundScheduler.trigger()})}))}let C=e.getFeature(Ze.DidCloseTextDocumentNotification.method);s.push(C.onNotificationSent(T=>{this.cleanUpDocument(T.textDocument)})),t.onClose(T=>{for(let S of T)this.cleanUpDocument(S)}),this.diagnosticRequestor.onDidChangeDiagnosticsEmitter.event(()=>{for(let T of ye.workspace.textDocuments)c(T)&&this.diagnosticRequestor.pull(T)}),r.workspaceDiagnostics===!0&&r.identifier!=="da348dc5-c30a-4515-9d98-31ff3be38d14"&&this.diagnosticRequestor.pullWorkspace(),this.disposable=ye.Disposable.from(...s,this.backgroundScheduler,this.diagnosticRequestor)}get onDidChangeDiagnosticsEmitter(){return this.diagnosticRequestor.onDidChangeDiagnosticsEmitter}get diagnostics(){return this.diagnosticRequestor.provider}cleanUpDocument(e){this.diagnosticRequestor.knows(ft.document,e)&&(this.diagnosticRequestor.forgetDocument(e),this.backgroundScheduler.remove(e))}},td=class extends Gu.TextDocumentLanguageFeature{constructor(e){super(e,Ze.DocumentDiagnosticRequest.type)}fillClientCapabilities(e){let t=Cs(Cs(e,"textDocument"),"diagnostic");t.dynamicRegistration=!0,t.relatedDocumentSupport=!1,Cs(Cs(e,"workspace"),"diagnostics").refreshSupport=!0}initialize(e,t){this._client.onRequest(Ze.DiagnosticRefreshRequest.type,async()=>{for(let s of this.getAllProviders())s.onDidChangeDiagnosticsEmitter.fire()});let[i,o]=this.getRegistration(t,e.diagnosticProvider);!i||!o||this.register({id:i,registerOptions:o})}dispose(){this.tabs!==void 0&&(this.tabs.dispose(),this.tabs=void 0),super.dispose()}registerLanguageProvider(e){this.tabs===void 0&&(this.tabs=new Ju);let t=new ed(this._client,this.tabs,e);return[t.disposable,t]}};On.DiagnosticFeature=td});var jh=O(Ts=>{"use strict";Object.defineProperty(Ts,"__esModule",{value:!0});Ts.NotebookDocumentSyncFeature=void 0;var _t=require("vscode"),NT=ys(),Yn=se(),MT=Ge(),Mh=Kt();function Ah(n,e){return n[e]===void 0&&(n[e]={}),n[e]}var fi;(function(n){let e;(function(t){function r(m,C){return{version:m.version,uri:C.asUri(m.uri)}}t.asVersionedNotebookDocumentIdentifier=r;function i(m,C,w){let T=Yn.NotebookDocument.create(w.asUri(m.uri),m.notebookType,m.version,o(C,w));return Object.keys(m.metadata).length>0&&(T.metadata=s(m.metadata)),T}t.asNotebookDocument=i;function o(m,C){return m.map(w=>a(w,C))}t.asNotebookCells=o;function s(m){return d(new Set,m)}t.asMetadata=s;function a(m,C){let w=Yn.NotebookCell.create(c(m.kind),C.asUri(m.document.uri));return Object.keys(m.metadata).length>0&&(w.metadata=s(m.metadata)),m.executionSummary!==void 0&&Mh.number(m.executionSummary.executionOrder)&&Mh.boolean(m.executionSummary.success)&&(w.executionSummary={executionOrder:m.executionSummary.executionOrder,success:m.executionSummary.success}),w}t.asNotebookCell=a;function c(m){switch(m){case _t.NotebookCellKind.Markup:return Yn.NotebookCellKind.Markup;case _t.NotebookCellKind.Code:return Yn.NotebookCellKind.Code}}function d(m,C){if(m.has(C))throw new Error("Can't deep copy cyclic structures.");if(Array.isArray(C)){let w=[];for(let T of C)if(T!==null&&typeof T=="object"||Array.isArray(T))w.push(d(m,T));else{if(T instanceof RegExp)throw new Error("Can't transfer regular expressions to the server");w.push(T)}return w}else{let w=Object.keys(C),T=Object.create(null);for(let S of w){let q=C[S];if(q!==null&&typeof q=="object"||Array.isArray(q))T[S]=d(m,q);else{if(q instanceof RegExp)throw new Error("Can't transfer regular expressions to the server");T[S]=q}}return T}}function f(m,C){let w=C.asChangeTextDocumentParams(m,m.document.uri,m.document.version);return{document:w.textDocument,changes:w.contentChanges}}t.asTextContentChange=f;function g(m,C){let w=Object.create(null);if(m.metadata&&(w.metadata=n.c2p.asMetadata(m.metadata)),m.cells!==void 0){let T=Object.create(null),S=m.cells;S.structure&&(T.structure={array:{start:S.structure.array.start,deleteCount:S.structure.array.deleteCount,cells:S.structure.array.cells!==void 0?S.structure.array.cells.map(q=>n.c2p.asNotebookCell(q,C)):void 0},didOpen:S.structure.didOpen!==void 0?S.structure.didOpen.map(q=>C.asOpenTextDocumentParams(q.document).textDocument):void 0,didClose:S.structure.didClose!==void 0?S.structure.didClose.map(q=>C.asCloseTextDocumentParams(q.document).textDocument):void 0}),S.data!==void 0&&(T.data=S.data.map(q=>n.c2p.asNotebookCell(q,C))),S.textContent!==void 0&&(T.textContent=S.textContent.map(q=>n.c2p.asTextContentChange(q,C))),Object.keys(T).length>0&&(w.cells=T)}return w}t.asNotebookDocumentChangeEvent=g})(e=n.c2p||(n.c2p={}))})(fi||(fi={}));var rd;(function(n){function e(a,c,d){let f=a.length,g=c.length,m=0;for(;m=0&&w>=0&&t(a[C],c[w],d);)C--,w--;let T=C+1-m,S=m===w+1?void 0:c.slice(m,w+1);return S!==void 0?{start:m,deleteCount:T,cells:S}:{start:m,deleteCount:T}}else return mr.document.uri.toString()))}}n.create=e})(bs||(bs={}));var pi=class{constructor(e,t){this.client=e,this.options=t,this.notebookSyncInfo=new Map,this.notebookDidOpen=new Set,this.disposables=[],this.selector=e.protocol2CodeConverter.asDocumentSelector(ws.asDocumentSelector(t)),_t.workspace.onDidOpenNotebookDocument(r=>{this.notebookDidOpen.add(r.uri.toString()),this.didOpen(r)},void 0,this.disposables);for(let r of _t.workspace.notebookDocuments)this.notebookDidOpen.add(r.uri.toString()),this.didOpen(r);_t.workspace.onDidChangeNotebookDocument(r=>this.didChangeNotebookDocument(r),void 0,this.disposables),this.options.save===!0&&_t.workspace.onDidSaveNotebookDocument(r=>this.didSave(r),void 0,this.disposables),_t.workspace.onDidCloseNotebookDocument(r=>{this.didClose(r),this.notebookDidOpen.delete(r.uri.toString())},void 0,this.disposables)}getState(){for(let e of _t.workspace.notebookDocuments)if(this.getMatchingCells(e)!==void 0)return{kind:"document",id:"$internal",registrations:!0,matches:!0};return{kind:"document",id:"$internal",registrations:!0,matches:!1}}get mode(){return"notebook"}handles(e){return _t.languages.match(this.selector,e)>0}didOpenNotebookCellTextDocument(e,t){if(_t.languages.match(this.selector,t.document)===0||!this.notebookDidOpen.has(e.uri.toString()))return;let r=this.notebookSyncInfo.get(e.uri.toString()),i=this.cellMatches(e,t);if(r!==void 0){let o=r.uris.has(t.document.uri.toString());if(i&&o||!i&&!o)return;if(i){let s=this.getMatchingCells(e);if(s!==void 0){let a=this.asNotebookDocumentChangeEvent(e,void 0,r,s);a!==void 0&&this.doSendChange(a,s).catch(()=>{})}}}else i&&this.doSendOpen(e,[t]).catch(()=>{})}didChangeNotebookCellTextDocument(e,t){_t.languages.match(this.selector,t.document)!==0&&this.doSendChange({notebook:e,cells:{textContent:[t]}},void 0).catch(()=>{})}didCloseNotebookCellTextDocument(e,t){let r=this.notebookSyncInfo.get(e.uri.toString());if(r===void 0)return;let i=t.document.uri,o=r.cells.findIndex(s=>s.document.uri.toString()===i.toString());if(o!==-1)if(o===0&&r.cells.length===1)this.doSendClose(e,r.cells).catch(()=>{});else{let s=r.cells.slice(),a=s.splice(o,1);this.doSendChange({notebook:e,cells:{structure:{array:{start:o,deleteCount:1},didClose:a}}},s).catch(()=>{})}}dispose(){for(let e of this.disposables)e.dispose()}didOpen(e,t=this.getMatchingCells(e),r=this.notebookSyncInfo.get(e.uri.toString())){if(r!==void 0)if(t!==void 0){let i=this.asNotebookDocumentChangeEvent(e,void 0,r,t);i!==void 0&&this.doSendChange(i,t).catch(()=>{})}else this.doSendClose(e,[]).catch(()=>{});else{if(t===void 0)return;this.doSendOpen(e,t).catch(()=>{})}}didChangeNotebookDocument(e){let t=e.notebook,r=this.notebookSyncInfo.get(t.uri.toString());if(r===void 0){if(e.contentChanges.length===0)return;let i=this.getMatchingCells(t);if(i===void 0)return;this.didOpen(t,i,r)}else{let i=this.getMatchingCells(t);if(i===void 0){this.didClose(t,r);return}let o=this.asNotebookDocumentChangeEvent(e.notebook,e,r,i);o!==void 0&&this.doSendChange(o,i).catch(()=>{})}}didSave(e){this.notebookSyncInfo.get(e.uri.toString())!==void 0&&this.doSendSave(e).catch(()=>{})}didClose(e,t=this.notebookSyncInfo.get(e.uri.toString())){if(t===void 0)return;let r=e.getCells().filter(i=>t.uris.has(i.document.uri.toString()));this.doSendClose(e,r).catch(()=>{})}async sendDidOpenNotebookDocument(e){let t=this.getMatchingCells(e);if(t!==void 0)return this.doSendOpen(e,t)}async doSendOpen(e,t){var o;let r=async(s,a)=>{let c=fi.c2p.asNotebookDocument(s,a,this.client.code2ProtocolConverter),d=a.map(f=>this.client.code2ProtocolConverter.asTextDocumentItem(f.document));try{await this.client.sendNotification(Yn.DidOpenNotebookDocumentNotification.type,{notebookDocument:c,cellTextDocuments:d})}catch(f){throw this.client.error("Sending DidOpenNotebookDocumentNotification failed",f),f}},i=(o=this.client.middleware)==null?void 0:o.notebooks;return this.notebookSyncInfo.set(e.uri.toString(),bs.create(t)),(i==null?void 0:i.didOpen)!==void 0?i.didOpen(e,t,r):r(e,t)}async sendDidChangeNotebookDocument(e){return this.doSendChange(e,void 0)}async doSendChange(e,t=this.getMatchingCells(e.notebook)){var o,s;let r=async a=>{try{await this.client.sendNotification(Yn.DidChangeNotebookDocumentNotification.type,{notebookDocument:fi.c2p.asVersionedNotebookDocumentIdentifier(a.notebook,this.client.code2ProtocolConverter),change:fi.c2p.asNotebookDocumentChangeEvent(a,this.client.code2ProtocolConverter)})}catch(c){throw this.client.error("Sending DidChangeNotebookDocumentNotification failed",c),c}},i=(o=this.client.middleware)==null?void 0:o.notebooks;return((s=e.cells)==null?void 0:s.structure)!==void 0&&this.notebookSyncInfo.set(e.notebook.uri.toString(),bs.create(t??[])),(i==null?void 0:i.didChange)!==void 0?i==null?void 0:i.didChange(e,r):r(e)}async sendDidSaveNotebookDocument(e){return this.doSendSave(e)}async doSendSave(e){var i;let t=async o=>{try{await this.client.sendNotification(Yn.DidSaveNotebookDocumentNotification.type,{notebookDocument:{uri:this.client.code2ProtocolConverter.asUri(o.uri)}})}catch(s){throw this.client.error("Sending DidSaveNotebookDocumentNotification failed",s),s}},r=(i=this.client.middleware)==null?void 0:i.notebooks;return(r==null?void 0:r.didSave)!==void 0?r.didSave(e,t):t(e)}async sendDidCloseNotebookDocument(e){return this.doSendClose(e,this.getMatchingCells(e)??[])}async doSendClose(e,t){var o;let r=async(s,a)=>{try{await this.client.sendNotification(Yn.DidCloseNotebookDocumentNotification.type,{notebookDocument:{uri:this.client.code2ProtocolConverter.asUri(s.uri)},cellTextDocuments:a.map(c=>this.client.code2ProtocolConverter.asTextDocumentIdentifier(c.document))})}catch(c){throw this.client.error("Sending DidCloseNotebookDocumentNotification failed",c),c}},i=(o=this.client.middleware)==null?void 0:o.notebooks;return this.notebookSyncInfo.delete(e.uri.toString()),(i==null?void 0:i.didClose)!==void 0?i.didClose(e,t,r):r(e,t)}asNotebookDocumentChangeEvent(e,t,r,i){if(t!==void 0&&t.notebook!==e)throw new Error("Notebook must be identical");let o={notebook:e};(t==null?void 0:t.metadata)!==void 0&&(o.metadata=fi.c2p.asMetadata(t.metadata));let s;if((t==null?void 0:t.cellChanges)!==void 0&&t.cellChanges.length>0){let a=[];s=new Set(i.map(c=>c.document.uri.toString()));for(let c of t.cellChanges)s.has(c.cell.document.uri.toString())&&(c.executionSummary!==void 0||c.metadata!==void 0)&&a.push(c.cell);a.length>0&&(o.cells=o.cells??{},o.cells.data=a)}if(((t==null?void 0:t.contentChanges)!==void 0&&t.contentChanges.length>0||t===void 0)&&r!==void 0&&i!==void 0){let a=r.cells,c=i,d=rd.computeDiff(a,c,!1),f,g;if(d!==void 0){f=d.cells===void 0?new Map:new Map(d.cells.map(w=>[w.document.uri.toString(),w])),g=d.deleteCount===0?new Map:new Map(a.slice(d.start,d.start+d.deleteCount).map(w=>[w.document.uri.toString(),w]));for(let w of Array.from(g.keys()))f.has(w)&&(g.delete(w),f.delete(w));o.cells=o.cells??{};let m=[],C=[];if(f.size>0||g.size>0){for(let w of f.values())m.push(w);for(let w of g.values())C.push(w)}o.cells.structure={array:d,didOpen:m,didClose:C}}}return Object.keys(o).length>1?o:void 0}getMatchingCells(e,t=e.getCells()){if(this.options.notebookSelector!==void 0){for(let r of this.options.notebookSelector)if(r.notebook===void 0||id.matchNotebook(r.notebook,e)){let i=this.filterCells(e,t,r.cells);return i.length===0?void 0:i}}}cellMatches(e,t){let r=this.getMatchingCells(e,[t]);return r!==void 0&&r[0]===t}filterCells(e,t,r){var o;let i=r!==void 0?t.filter(s=>{let a=s.document.languageId;return r.some(c=>c.language==="*"||a===c.language)}):t;return typeof((o=this.client.clientOptions.notebookDocumentOptions)==null?void 0:o.filterCells)=="function"?this.client.clientOptions.notebookDocumentOptions.filterCells(e,i):i}},Ds=class n{constructor(e){this.client=e,this.registrations=new Map,this.registrationType=Yn.NotebookDocumentSyncRegistrationType.type,_t.workspace.onDidOpenTextDocument(t=>{if(t.uri.scheme!==n.CellScheme)return;let[r,i]=this.findNotebookDocumentAndCell(t);if(!(r===void 0||i===void 0))for(let o of this.registrations.values())o instanceof pi&&o.didOpenNotebookCellTextDocument(r,i)}),_t.workspace.onDidChangeTextDocument(t=>{if(t.contentChanges.length===0)return;let r=t.document;if(r.uri.scheme!==n.CellScheme)return;let[i]=this.findNotebookDocumentAndCell(r);if(i!==void 0)for(let o of this.registrations.values())o instanceof pi&&o.didChangeNotebookCellTextDocument(i,t)}),_t.workspace.onDidCloseTextDocument(t=>{if(t.uri.scheme!==n.CellScheme)return;let[r,i]=this.findNotebookDocumentAndCell(t);if(!(r===void 0||i===void 0))for(let o of this.registrations.values())o instanceof pi&&o.didCloseNotebookCellTextDocument(r,i)})}getState(){if(this.registrations.size===0)return{kind:"document",id:this.registrationType.method,registrations:!1,matches:!1};for(let e of this.registrations.values()){let t=e.getState();if(t.kind==="document"&&t.registrations===!0&&t.matches===!0)return{kind:"document",id:this.registrationType.method,registrations:!0,matches:!0}}return{kind:"document",id:this.registrationType.method,registrations:!0,matches:!1}}fillClientCapabilities(e){let t=Ah(Ah(e,"notebookDocument"),"synchronization");t.dynamicRegistration=!0,t.executionSummarySupport=!0}preInitialize(e){let t=e.notebookDocumentSync;t!==void 0&&(this.dedicatedChannel=this.client.protocol2CodeConverter.asDocumentSelector(ws.asDocumentSelector(t)))}initialize(e){let t=e.notebookDocumentSync;if(t===void 0)return;let r=t.id??MT.generateUuid();this.register({id:r,registerOptions:t})}register(e){let t=new pi(this.client,e.registerOptions);this.registrations.set(e.id,t)}unregister(e){let t=this.registrations.get(e);t&&t.dispose()}dispose(){for(let e of this.registrations.values())e.dispose();this.registrations.clear()}handles(e){if(e.uri.scheme!==n.CellScheme)return!1;if(this.dedicatedChannel!==void 0&&_t.languages.match(this.dedicatedChannel,e)>0)return!0;for(let t of this.registrations.values())if(t.handles(e))return!0;return!1}getProvider(e){for(let t of this.registrations.values())if(t.handles(e.document))return t}findNotebookDocumentAndCell(e){let t=e.uri.toString();for(let r of _t.workspace.notebookDocuments)for(let i of r.getCells())if(i.document.uri.toString()===t)return[r,i];return[void 0,void 0]}};Ts.NotebookDocumentSyncFeature=Ds;Ds.CellScheme="vscode-notebook-cell"});var Uh=O(wr=>{"use strict";Object.defineProperty(wr,"__esModule",{value:!0});wr.SyncConfigurationFeature=wr.toJSONObject=wr.ConfigurationFeature=void 0;var hi=require("vscode"),ao=se(),AT=Kt(),jT=Ge(),$h=Te(),od=class{constructor(e){this._client=e}getState(){return{kind:"static"}}fillClientCapabilities(e){e.workspace=e.workspace||{},e.workspace.configuration=!0}initialize(){let e=this._client;e.onRequest(ao.ConfigurationRequest.type,(t,r)=>{let i=s=>{let a=[];for(let c of s.items){let d=c.scopeUri!==void 0&&c.scopeUri!==null?this._client.protocol2CodeConverter.asUri(c.scopeUri):void 0;a.push(this.getConfiguration(d,c.section!==null?c.section:void 0))}return a},o=e.middleware.workspace;return o&&o.configuration?o.configuration(t,r,i):i(t,r)})}getConfiguration(e,t){let r=null;if(t){let i=t.lastIndexOf(".");if(i===-1)r=Ar(hi.workspace.getConfiguration(void 0,e).get(t));else{let o=hi.workspace.getConfiguration(t.substr(0,i),e);o&&(r=Ar(o.get(t.substr(i+1))))}}else{let i=hi.workspace.getConfiguration(void 0,e);r={};for(let o of Object.keys(i))i.has(o)&&(r[o]=Ar(i.get(o)))}return r===void 0&&(r=null),r}dispose(){}};wr.ConfigurationFeature=od;function Ar(n){if(n){if(Array.isArray(n))return n.map(Ar);if(typeof n=="object"){let e=Object.create(null);for(let t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=Ar(n[t]));return e}}return n}wr.toJSONObject=Ar;var sd=class{constructor(e){this._client=e,this.isDisposed=!1,this._listeners=new Map}getState(){return{kind:"workspace",id:this.registrationType.method,registrations:this._listeners.size>0}}get registrationType(){return ao.DidChangeConfigurationNotification.type}fillClientCapabilities(e){(0,$h.ensure)((0,$h.ensure)(e,"workspace"),"didChangeConfiguration").dynamicRegistration=!0}initialize(){var t;let e=(t=this._client.clientOptions.synchronize)==null?void 0:t.configurationSection;e!==void 0&&this.register({id:jT.generateUuid(),registerOptions:{section:e}})}register(e){let t=hi.workspace.onDidChangeConfiguration(r=>{this.onDidChangeConfiguration(e.registerOptions.section,r)});this._listeners.set(e.id,t),e.registerOptions.section!==void 0&&this.onDidChangeConfiguration(e.registerOptions.section,void 0)}unregister(e){let t=this._listeners.get(e);t&&(this._listeners.delete(e),t.dispose())}dispose(){for(let e of this._listeners.values())e.dispose();this._listeners.clear(),this.isDisposed=!0}onDidChangeConfiguration(e,t){var s;if(this.isDisposed)return;let r;if(AT.string(e)?r=[e]:r=e,r!==void 0&&t!==void 0&&!r.some(c=>t.affectsConfiguration(c)))return;let i=async a=>a===void 0?this._client.sendNotification(ao.DidChangeConfigurationNotification.type,{settings:null}):this._client.sendNotification(ao.DidChangeConfigurationNotification.type,{settings:this.extractSettingsInformation(a)}),o=(s=this._client.middleware.workspace)==null?void 0:s.didChangeConfiguration;(o?o(r,i):i(r)).catch(a=>{this._client.error(`Sending notification ${ao.DidChangeConfigurationNotification.type.method} failed`,a)})}extractSettingsInformation(e){function t(o,s){let a=o;for(let c=0;c=0?c=hi.workspace.getConfiguration(s.substr(0,a),r).get(s.substr(a+1)):c=hi.workspace.getConfiguration(void 0,r).get(s),c){let d=e[o].split(".");t(i,d)[d[d.length-1]]=Ar(c)}}return i}};wr.SyncConfigurationFeature=sd});var Hh=O(Bt=>{"use strict";Object.defineProperty(Bt,"__esModule",{value:!0});Bt.DidSaveTextDocumentFeature=Bt.WillSaveWaitUntilFeature=Bt.WillSaveFeature=Bt.DidChangeTextDocumentFeature=Bt.DidCloseTextDocumentFeature=Bt.DidOpenTextDocumentFeature=void 0;var tn=require("vscode"),Ne=se(),Xe=Te(),gi=Ge(),ad=class extends Xe.TextDocumentEventFeature{constructor(e,t){super(e,tn.workspace.onDidOpenTextDocument,Ne.DidOpenTextDocumentNotification.type,()=>e.middleware.didOpen,r=>e.code2ProtocolConverter.asOpenTextDocumentParams(r),r=>r,Xe.TextDocumentEventFeature.textDocumentFilter),this._syncedDocuments=t}get openDocuments(){return this._syncedDocuments.values()}fillClientCapabilities(e){(0,Xe.ensure)((0,Xe.ensure)(e,"textDocument"),"synchronization").dynamicRegistration=!0}initialize(e,t){let r=e.resolvedTextDocumentSync;t&&r&&r.openClose&&this.register({id:gi.generateUuid(),registerOptions:{documentSelector:t}})}get registrationType(){return Ne.DidOpenTextDocumentNotification.type}register(e){if(super.register(e),!e.registerOptions.documentSelector)return;let t=this._client.protocol2CodeConverter.asDocumentSelector(e.registerOptions.documentSelector);tn.workspace.textDocuments.forEach(r=>{let i=r.uri.toString();if(!this._syncedDocuments.has(i)&&tn.languages.match(t,r)>0&&!this._client.hasDedicatedTextSynchronizationFeature(r)){let o=this._client.middleware,s=a=>this._client.sendNotification(this._type,this._createParams(a));(o.didOpen?o.didOpen(r,s):s(r)).catch(a=>{this._client.error(`Sending document notification ${this._type.method} failed`,a)}),this._syncedDocuments.set(i,r)}})}getTextDocument(e){return e}notificationSent(e,t,r){this._syncedDocuments.set(e.uri.toString(),e),super.notificationSent(e,t,r)}};Bt.DidOpenTextDocumentFeature=ad;var cd=class extends Xe.TextDocumentEventFeature{constructor(e,t,r){super(e,tn.workspace.onDidCloseTextDocument,Ne.DidCloseTextDocumentNotification.type,()=>e.middleware.didClose,i=>e.code2ProtocolConverter.asCloseTextDocumentParams(i),i=>i,Xe.TextDocumentEventFeature.textDocumentFilter),this._syncedDocuments=t,this._pendingTextDocumentChanges=r}get registrationType(){return Ne.DidCloseTextDocumentNotification.type}fillClientCapabilities(e){(0,Xe.ensure)((0,Xe.ensure)(e,"textDocument"),"synchronization").dynamicRegistration=!0}initialize(e,t){let r=e.resolvedTextDocumentSync;t&&r&&r.openClose&&this.register({id:gi.generateUuid(),registerOptions:{documentSelector:t}})}async callback(e){await super.callback(e),this._pendingTextDocumentChanges.delete(e.uri.toString())}getTextDocument(e){return e}notificationSent(e,t,r){this._syncedDocuments.delete(e.uri.toString()),super.notificationSent(e,t,r)}unregister(e){let t=this._selectors.get(e);super.unregister(e);let r=this._selectors.values();this._syncedDocuments.forEach(i=>{if(tn.languages.match(t,i)>0&&!this._selectorFilter(r,i)&&!this._client.hasDedicatedTextSynchronizationFeature(i)){let o=this._client.middleware,s=a=>this._client.sendNotification(this._type,this._createParams(a));this._syncedDocuments.delete(i.uri.toString()),(o.didClose?o.didClose(i,s):s(i)).catch(a=>{this._client.error(`Sending document notification ${this._type.method} failed`,a)})}})}};Bt.DidCloseTextDocumentFeature=cd;var ud=class extends Xe.DynamicDocumentFeature{constructor(e,t){super(e),this._changeData=new Map,this._onNotificationSent=new tn.EventEmitter,this._onPendingChangeAdded=new tn.EventEmitter,this._pendingTextDocumentChanges=t,this._syncKind=Ne.TextDocumentSyncKind.None}get onNotificationSent(){return this._onNotificationSent.event}get onPendingChangeAdded(){return this._onPendingChangeAdded.event}get syncKind(){return this._syncKind}get registrationType(){return Ne.DidChangeTextDocumentNotification.type}fillClientCapabilities(e){(0,Xe.ensure)((0,Xe.ensure)(e,"textDocument"),"synchronization").dynamicRegistration=!0}initialize(e,t){let r=e.resolvedTextDocumentSync;t&&r&&r.change!==void 0&&r.change!==Ne.TextDocumentSyncKind.None&&this.register({id:gi.generateUuid(),registerOptions:Object.assign({},{documentSelector:t},{syncKind:r.change})})}register(e){e.registerOptions.documentSelector&&(this._listener||(this._listener=tn.workspace.onDidChangeTextDocument(this.callback,this)),this._changeData.set(e.id,{syncKind:e.registerOptions.syncKind,documentSelector:this._client.protocol2CodeConverter.asDocumentSelector(e.registerOptions.documentSelector)}),this.updateSyncKind(e.registerOptions.syncKind))}*getDocumentSelectors(){for(let e of this._changeData.values())yield e.documentSelector}async callback(e){if(e.contentChanges.length===0)return;let t=e.document.uri,r=e.document.version,i=[];for(let o of this._changeData.values())if(tn.languages.match(o.documentSelector,e.document)>0&&!this._client.hasDedicatedTextSynchronizationFeature(e.document)){let s=this._client.middleware;if(o.syncKind===Ne.TextDocumentSyncKind.Incremental){let a=async c=>{let d=this._client.code2ProtocolConverter.asChangeTextDocumentParams(c,t,r);await this._client.sendNotification(Ne.DidChangeTextDocumentNotification.type,d),this.notificationSent(c.document,Ne.DidChangeTextDocumentNotification.type,d)};i.push(s.didChange?s.didChange(e,c=>a(c)):a(e))}else if(o.syncKind===Ne.TextDocumentSyncKind.Full){let a=async c=>{let d=c.document.uri.toString();this._pendingTextDocumentChanges.set(d,c.document),this._onPendingChangeAdded.fire()};i.push(s.didChange?s.didChange(e,c=>a(c)):a(e))}}return Promise.all(i).then(void 0,o=>{throw this._client.error(`Sending document notification ${Ne.DidChangeTextDocumentNotification.type.method} failed`,o),o})}notificationSent(e,t,r){this._onNotificationSent.fire({textDocument:e,type:t,params:r})}unregister(e){if(this._changeData.delete(e),this._changeData.size===0)this._listener&&(this._listener.dispose(),this._listener=void 0),this._syncKind=Ne.TextDocumentSyncKind.None;else{this._syncKind=Ne.TextDocumentSyncKind.None;for(let t of this._changeData.values())if(this.updateSyncKind(t.syncKind),this._syncKind===Ne.TextDocumentSyncKind.Full)break}}dispose(){this._pendingTextDocumentChanges.clear(),this._changeData.clear(),this._syncKind=Ne.TextDocumentSyncKind.None,this._listener&&(this._listener.dispose(),this._listener=void 0)}getPendingDocumentChanges(e){if(this._pendingTextDocumentChanges.size===0)return[];let t;if(e.size===0)t=Array.from(this._pendingTextDocumentChanges.values()),this._pendingTextDocumentChanges.clear();else{t=[];for(let r of this._pendingTextDocumentChanges)e.has(r[0])||(t.push(r[1]),this._pendingTextDocumentChanges.delete(r[0]))}return t}getProvider(e){for(let t of this._changeData.values())if(tn.languages.match(t.documentSelector,e)>0)return{send:r=>this.callback(r)}}updateSyncKind(e){if(this._syncKind!==Ne.TextDocumentSyncKind.Full)switch(e){case Ne.TextDocumentSyncKind.Full:this._syncKind=e;break;case Ne.TextDocumentSyncKind.Incremental:this._syncKind===Ne.TextDocumentSyncKind.None&&(this._syncKind=Ne.TextDocumentSyncKind.Incremental);break}}};Bt.DidChangeTextDocumentFeature=ud;var dd=class extends Xe.TextDocumentEventFeature{constructor(e){super(e,tn.workspace.onWillSaveTextDocument,Ne.WillSaveTextDocumentNotification.type,()=>e.middleware.willSave,t=>e.code2ProtocolConverter.asWillSaveTextDocumentParams(t),t=>t.document,(t,r)=>Xe.TextDocumentEventFeature.textDocumentFilter(t,r.document))}get registrationType(){return Ne.WillSaveTextDocumentNotification.type}fillClientCapabilities(e){let t=(0,Xe.ensure)((0,Xe.ensure)(e,"textDocument"),"synchronization");t.willSave=!0}initialize(e,t){let r=e.resolvedTextDocumentSync;t&&r&&r.willSave&&this.register({id:gi.generateUuid(),registerOptions:{documentSelector:t}})}getTextDocument(e){return e.document}};Bt.WillSaveFeature=dd;var ld=class extends Xe.DynamicDocumentFeature{constructor(e){super(e),this._selectors=new Map}getDocumentSelectors(){return this._selectors.values()}get registrationType(){return Ne.WillSaveTextDocumentWaitUntilRequest.type}fillClientCapabilities(e){let t=(0,Xe.ensure)((0,Xe.ensure)(e,"textDocument"),"synchronization");t.willSaveWaitUntil=!0}initialize(e,t){let r=e.resolvedTextDocumentSync;t&&r&&r.willSaveWaitUntil&&this.register({id:gi.generateUuid(),registerOptions:{documentSelector:t}})}register(e){e.registerOptions.documentSelector&&(this._listener||(this._listener=tn.workspace.onWillSaveTextDocument(this.callback,this)),this._selectors.set(e.id,this._client.protocol2CodeConverter.asDocumentSelector(e.registerOptions.documentSelector)))}callback(e){if(Xe.TextDocumentEventFeature.textDocumentFilter(this._selectors.values(),e.document)&&!this._client.hasDedicatedTextSynchronizationFeature(e.document)){let t=this._client.middleware,r=i=>this._client.sendRequest(Ne.WillSaveTextDocumentWaitUntilRequest.type,this._client.code2ProtocolConverter.asWillSaveTextDocumentParams(i)).then(async o=>{let s=await this._client.protocol2CodeConverter.asTextEdits(o);return s===void 0?[]:s});e.waitUntil(t.willSaveWaitUntil?t.willSaveWaitUntil(e,r):r(e))}}unregister(e){this._selectors.delete(e),this._selectors.size===0&&this._listener&&(this._listener.dispose(),this._listener=void 0)}dispose(){this._selectors.clear(),this._listener&&(this._listener.dispose(),this._listener=void 0)}};Bt.WillSaveWaitUntilFeature=ld;var fd=class extends Xe.TextDocumentEventFeature{constructor(e){super(e,tn.workspace.onDidSaveTextDocument,Ne.DidSaveTextDocumentNotification.type,()=>e.middleware.didSave,t=>e.code2ProtocolConverter.asSaveTextDocumentParams(t,this._includeText),t=>t,Xe.TextDocumentEventFeature.textDocumentFilter),this._includeText=!1}get registrationType(){return Ne.DidSaveTextDocumentNotification.type}fillClientCapabilities(e){(0,Xe.ensure)((0,Xe.ensure)(e,"textDocument"),"synchronization").didSave=!0}initialize(e,t){let r=e.resolvedTextDocumentSync;if(t&&r&&r.save){let i=typeof r.save=="boolean"?{includeText:!1}:{includeText:!!r.save.includeText};this.register({id:gi.generateUuid(),registerOptions:Object.assign({},{documentSelector:t},i)})}}register(e){this._includeText=!!e.registerOptions.includeText,super.register(e)}getTextDocument(e){return e}};Bt.DidSaveTextDocumentFeature=fd});var Wh=O(Rs=>{"use strict";Object.defineProperty(Rs,"__esModule",{value:!0});Rs.CompletionItemFeature=void 0;var $T=require("vscode"),me=se(),pd=Te(),UT=Ge(),HT=[me.CompletionItemKind.Text,me.CompletionItemKind.Method,me.CompletionItemKind.Function,me.CompletionItemKind.Constructor,me.CompletionItemKind.Field,me.CompletionItemKind.Variable,me.CompletionItemKind.Class,me.CompletionItemKind.Interface,me.CompletionItemKind.Module,me.CompletionItemKind.Property,me.CompletionItemKind.Unit,me.CompletionItemKind.Value,me.CompletionItemKind.Enum,me.CompletionItemKind.Keyword,me.CompletionItemKind.Snippet,me.CompletionItemKind.Color,me.CompletionItemKind.File,me.CompletionItemKind.Reference,me.CompletionItemKind.Folder,me.CompletionItemKind.EnumMember,me.CompletionItemKind.Constant,me.CompletionItemKind.Struct,me.CompletionItemKind.Event,me.CompletionItemKind.Operator,me.CompletionItemKind.TypeParameter],hd=class extends pd.TextDocumentLanguageFeature{constructor(e){super(e,me.CompletionRequest.type),this.labelDetailsSupport=new Map}fillClientCapabilities(e){let t=(0,pd.ensure)((0,pd.ensure)(e,"textDocument"),"completion");t.dynamicRegistration=!0,t.contextSupport=!0,t.completionItem={snippetSupport:!0,commitCharactersSupport:!0,documentationFormat:[me.MarkupKind.Markdown,me.MarkupKind.PlainText],deprecatedSupport:!0,preselectSupport:!0,tagSupport:{valueSet:[me.CompletionItemTag.Deprecated]},insertReplaceSupport:!0,resolveSupport:{properties:["documentation","detail","additionalTextEdits"]},insertTextModeSupport:{valueSet:[me.InsertTextMode.asIs,me.InsertTextMode.adjustIndentation]},labelDetailsSupport:!0},t.insertTextMode=me.InsertTextMode.adjustIndentation,t.completionItemKind={valueSet:HT},t.completionList={itemDefaults:["commitCharacters","editRange","insertTextFormat","insertTextMode"]}}initialize(e,t){let r=this.getRegistrationOptions(t,e.completionProvider);r&&this.register({id:UT.generateUuid(),registerOptions:r})}registerLanguageProvider(e,t){var a;this.labelDetailsSupport.set(t,!!((a=e.completionItem)!=null&&a.labelDetailsSupport));let r=e.triggerCharacters??[],i=e.allCommitCharacters,o=e.documentSelector,s={provideCompletionItems:(c,d,f,g)=>{let m=this._client,C=this._client.middleware,w=(T,S,q,F)=>m.sendRequest(me.CompletionRequest.type,m.code2ProtocolConverter.asCompletionParams(T,S,q),F).then(I=>F.isCancellationRequested?null:m.protocol2CodeConverter.asCompletionResult(I,i,F),I=>m.handleFailedRequest(me.CompletionRequest.type,F,I,null));return C.provideCompletionItem?C.provideCompletionItem(c,d,g,f,w):w(c,d,g,f)},resolveCompletionItem:e.resolveProvider?(c,d)=>{let f=this._client,g=this._client.middleware,m=(C,w)=>f.sendRequest(me.CompletionResolveRequest.type,f.code2ProtocolConverter.asCompletionItem(C,!!this.labelDetailsSupport.get(t)),w).then(T=>w.isCancellationRequested?null:f.protocol2CodeConverter.asCompletionItem(T),T=>f.handleFailedRequest(me.CompletionResolveRequest.type,w,T,C));return g.resolveCompletionItem?g.resolveCompletionItem(c,d,m):m(c,d)}:void 0};return[$T.languages.registerCompletionItemProvider(this._client.protocol2CodeConverter.asDocumentSelector(o),s,...r),s]}};Rs.CompletionItemFeature=hd});var zh=O(Ss=>{"use strict";Object.defineProperty(Ss,"__esModule",{value:!0});Ss.HoverFeature=void 0;var WT=require("vscode"),co=se(),gd=Te(),zT=Ge(),md=class extends gd.TextDocumentLanguageFeature{constructor(e){super(e,co.HoverRequest.type)}fillClientCapabilities(e){let t=(0,gd.ensure)((0,gd.ensure)(e,"textDocument"),"hover");t.dynamicRegistration=!0,t.contentFormat=[co.MarkupKind.Markdown,co.MarkupKind.PlainText]}initialize(e,t){let r=this.getRegistrationOptions(t,e.hoverProvider);r&&this.register({id:zT.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideHover:(i,o,s)=>{let a=this._client,c=(f,g,m)=>a.sendRequest(co.HoverRequest.type,a.code2ProtocolConverter.asTextDocumentPositionParams(f,g),m).then(C=>m.isCancellationRequested?null:a.protocol2CodeConverter.asHover(C),C=>a.handleFailedRequest(co.HoverRequest.type,m,C,null)),d=a.middleware;return d.provideHover?d.provideHover(i,o,s,c):c(i,o,s)}};return[this.registerProvider(t,r),r]}registerProvider(e,t){return WT.languages.registerHoverProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};Ss.HoverFeature=md});var Kh=O(_s=>{"use strict";Object.defineProperty(_s,"__esModule",{value:!0});_s.DefinitionFeature=void 0;var KT=require("vscode"),vd=se(),yd=Te(),VT=Ge(),Cd=class extends yd.TextDocumentLanguageFeature{constructor(e){super(e,vd.DefinitionRequest.type)}fillClientCapabilities(e){let t=(0,yd.ensure)((0,yd.ensure)(e,"textDocument"),"definition");t.dynamicRegistration=!0,t.linkSupport=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.definitionProvider);r&&this.register({id:VT.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideDefinition:(i,o,s)=>{let a=this._client,c=(f,g,m)=>a.sendRequest(vd.DefinitionRequest.type,a.code2ProtocolConverter.asTextDocumentPositionParams(f,g),m).then(C=>m.isCancellationRequested?null:a.protocol2CodeConverter.asDefinitionResult(C,m),C=>a.handleFailedRequest(vd.DefinitionRequest.type,m,C,null)),d=a.middleware;return d.provideDefinition?d.provideDefinition(i,o,s,c):c(i,o,s)}};return[this.registerProvider(t,r),r]}registerProvider(e,t){return KT.languages.registerDefinitionProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};_s.DefinitionFeature=Cd});var Bh=O(xs=>{"use strict";Object.defineProperty(xs,"__esModule",{value:!0});xs.SignatureHelpFeature=void 0;var Vh=require("vscode"),uo=se(),wd=Te(),BT=Ge(),bd=class extends wd.TextDocumentLanguageFeature{constructor(e){super(e,uo.SignatureHelpRequest.type)}fillClientCapabilities(e){let t=(0,wd.ensure)((0,wd.ensure)(e,"textDocument"),"signatureHelp");t.dynamicRegistration=!0,t.signatureInformation={documentationFormat:[uo.MarkupKind.Markdown,uo.MarkupKind.PlainText]},t.signatureInformation.parameterInformation={labelOffsetSupport:!0},t.signatureInformation.activeParameterSupport=!0,t.contextSupport=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.signatureHelpProvider);r&&this.register({id:BT.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t={provideSignatureHelp:(r,i,o,s)=>{let a=this._client,c=(f,g,m,C)=>a.sendRequest(uo.SignatureHelpRequest.type,a.code2ProtocolConverter.asSignatureHelpParams(f,g,m),C).then(w=>C.isCancellationRequested?null:a.protocol2CodeConverter.asSignatureHelp(w,C),w=>a.handleFailedRequest(uo.SignatureHelpRequest.type,C,w,null)),d=a.middleware;return d.provideSignatureHelp?d.provideSignatureHelp(r,i,s,o,c):c(r,i,s,o)}};return[this.registerProvider(e,t),t]}registerProvider(e,t){let r=this._client.protocol2CodeConverter.asDocumentSelector(e.documentSelector);if(e.retriggerCharacters===void 0){let i=e.triggerCharacters||[];return Vh.languages.registerSignatureHelpProvider(r,t,...i)}else{let i={triggerCharacters:e.triggerCharacters||[],retriggerCharacters:e.retriggerCharacters||[]};return Vh.languages.registerSignatureHelpProvider(r,t,i)}}};xs.SignatureHelpFeature=bd});var Gh=O(Ps=>{"use strict";Object.defineProperty(Ps,"__esModule",{value:!0});Ps.DocumentHighlightFeature=void 0;var GT=require("vscode"),Dd=se(),Td=Te(),XT=Ge(),Rd=class extends Td.TextDocumentLanguageFeature{constructor(e){super(e,Dd.DocumentHighlightRequest.type)}fillClientCapabilities(e){(0,Td.ensure)((0,Td.ensure)(e,"textDocument"),"documentHighlight").dynamicRegistration=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.documentHighlightProvider);r&&this.register({id:XT.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideDocumentHighlights:(i,o,s)=>{let a=this._client,c=(f,g,m)=>a.sendRequest(Dd.DocumentHighlightRequest.type,a.code2ProtocolConverter.asTextDocumentPositionParams(f,g),m).then(C=>m.isCancellationRequested?null:a.protocol2CodeConverter.asDocumentHighlights(C,m),C=>a.handleFailedRequest(Dd.DocumentHighlightRequest.type,m,C,null)),d=a.middleware;return d.provideDocumentHighlights?d.provideDocumentHighlights(i,o,s,c):c(i,o,s)}};return[GT.languages.registerDocumentHighlightProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),r),r]}};Ps.DocumentHighlightFeature=Rd});var xd=O(Fn=>{"use strict";Object.defineProperty(Fn,"__esModule",{value:!0});Fn.DocumentSymbolFeature=Fn.SupportedSymbolTags=Fn.SupportedSymbolKinds=void 0;var JT=require("vscode"),Ee=se(),Sd=Te(),QT=Ge();Fn.SupportedSymbolKinds=[Ee.SymbolKind.File,Ee.SymbolKind.Module,Ee.SymbolKind.Namespace,Ee.SymbolKind.Package,Ee.SymbolKind.Class,Ee.SymbolKind.Method,Ee.SymbolKind.Property,Ee.SymbolKind.Field,Ee.SymbolKind.Constructor,Ee.SymbolKind.Enum,Ee.SymbolKind.Interface,Ee.SymbolKind.Function,Ee.SymbolKind.Variable,Ee.SymbolKind.Constant,Ee.SymbolKind.String,Ee.SymbolKind.Number,Ee.SymbolKind.Boolean,Ee.SymbolKind.Array,Ee.SymbolKind.Object,Ee.SymbolKind.Key,Ee.SymbolKind.Null,Ee.SymbolKind.EnumMember,Ee.SymbolKind.Struct,Ee.SymbolKind.Event,Ee.SymbolKind.Operator,Ee.SymbolKind.TypeParameter];Fn.SupportedSymbolTags=[Ee.SymbolTag.Deprecated];var _d=class extends Sd.TextDocumentLanguageFeature{constructor(e){super(e,Ee.DocumentSymbolRequest.type)}fillClientCapabilities(e){let t=(0,Sd.ensure)((0,Sd.ensure)(e,"textDocument"),"documentSymbol");t.dynamicRegistration=!0,t.symbolKind={valueSet:Fn.SupportedSymbolKinds},t.hierarchicalDocumentSymbolSupport=!0,t.tagSupport={valueSet:Fn.SupportedSymbolTags},t.labelSupport=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.documentSymbolProvider);r&&this.register({id:QT.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideDocumentSymbols:(o,s)=>{let a=this._client,c=async(f,g)=>{try{let m=await a.sendRequest(Ee.DocumentSymbolRequest.type,a.code2ProtocolConverter.asDocumentSymbolParams(f),g);if(g.isCancellationRequested||m===void 0||m===null)return null;if(m.length===0)return[];{let C=m[0];return Ee.DocumentSymbol.is(C)?await a.protocol2CodeConverter.asDocumentSymbols(m,g):await a.protocol2CodeConverter.asSymbolInformations(m,g)}}catch(m){return a.handleFailedRequest(Ee.DocumentSymbolRequest.type,g,m,null)}},d=a.middleware;return d.provideDocumentSymbols?d.provideDocumentSymbols(o,s,c):c(o,s)}},i=e.label!==void 0?{label:e.label}:void 0;return[JT.languages.registerDocumentSymbolProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),r,i),r]}};Fn.DocumentSymbolFeature=_d});var Jh=O(Es=>{"use strict";Object.defineProperty(Es,"__esModule",{value:!0});Es.WorkspaceSymbolFeature=void 0;var YT=require("vscode"),lo=se(),Pd=Te(),Xh=xd(),ZT=Ge(),Ed=class extends Pd.WorkspaceFeature{constructor(e){super(e,lo.WorkspaceSymbolRequest.type)}fillClientCapabilities(e){let t=(0,Pd.ensure)((0,Pd.ensure)(e,"workspace"),"symbol");t.dynamicRegistration=!0,t.symbolKind={valueSet:Xh.SupportedSymbolKinds},t.tagSupport={valueSet:Xh.SupportedSymbolTags},t.resolveSupport={properties:["location.range"]}}initialize(e){e.workspaceSymbolProvider&&this.register({id:ZT.generateUuid(),registerOptions:e.workspaceSymbolProvider===!0?{workDoneProgress:!1}:e.workspaceSymbolProvider})}registerLanguageProvider(e){let t={provideWorkspaceSymbols:(r,i)=>{let o=this._client,s=(c,d)=>o.sendRequest(lo.WorkspaceSymbolRequest.type,{query:c},d).then(f=>d.isCancellationRequested?null:o.protocol2CodeConverter.asSymbolInformations(f,d),f=>o.handleFailedRequest(lo.WorkspaceSymbolRequest.type,d,f,null)),a=o.middleware;return a.provideWorkspaceSymbols?a.provideWorkspaceSymbols(r,i,s):s(r,i)},resolveWorkspaceSymbol:e.resolveProvider===!0?(r,i)=>{let o=this._client,s=(c,d)=>o.sendRequest(lo.WorkspaceSymbolResolveRequest.type,o.code2ProtocolConverter.asWorkspaceSymbol(c),d).then(f=>d.isCancellationRequested?null:o.protocol2CodeConverter.asSymbolInformation(f),f=>o.handleFailedRequest(lo.WorkspaceSymbolResolveRequest.type,d,f,null)),a=o.middleware;return a.resolveWorkspaceSymbol?a.resolveWorkspaceSymbol(r,i,s):s(r,i)}:void 0};return[YT.languages.registerWorkspaceSymbolProvider(t),t]}};Es.WorkspaceSymbolFeature=Ed});var Qh=O(ks=>{"use strict";Object.defineProperty(ks,"__esModule",{value:!0});ks.ReferencesFeature=void 0;var eR=require("vscode"),kd=se(),qd=Te(),tR=Ge(),Id=class extends qd.TextDocumentLanguageFeature{constructor(e){super(e,kd.ReferencesRequest.type)}fillClientCapabilities(e){(0,qd.ensure)((0,qd.ensure)(e,"textDocument"),"references").dynamicRegistration=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.referencesProvider);r&&this.register({id:tR.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideReferences:(i,o,s,a)=>{let c=this._client,d=(g,m,C,w)=>c.sendRequest(kd.ReferencesRequest.type,c.code2ProtocolConverter.asReferenceParams(g,m,C),w).then(T=>w.isCancellationRequested?null:c.protocol2CodeConverter.asReferences(T,w),T=>c.handleFailedRequest(kd.ReferencesRequest.type,w,T,null)),f=c.middleware;return f.provideReferences?f.provideReferences(i,o,s,a,d):d(i,o,s,a)}};return[this.registerProvider(t,r),r]}registerProvider(e,t){return eR.languages.registerReferenceProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};ks.ReferencesFeature=Id});var Yh=O(qs=>{"use strict";Object.defineProperty(qs,"__esModule",{value:!0});qs.CodeActionFeature=void 0;var nR=require("vscode"),nn=se(),rR=Ge(),Od=Te(),Fd=class extends Od.TextDocumentLanguageFeature{constructor(e){super(e,nn.CodeActionRequest.type)}fillClientCapabilities(e){let t=(0,Od.ensure)((0,Od.ensure)(e,"textDocument"),"codeAction");t.dynamicRegistration=!0,t.isPreferredSupport=!0,t.disabledSupport=!0,t.dataSupport=!0,t.resolveSupport={properties:["edit"]},t.codeActionLiteralSupport={codeActionKind:{valueSet:[nn.CodeActionKind.Empty,nn.CodeActionKind.QuickFix,nn.CodeActionKind.Refactor,nn.CodeActionKind.RefactorExtract,nn.CodeActionKind.RefactorInline,nn.CodeActionKind.RefactorRewrite,nn.CodeActionKind.Source,nn.CodeActionKind.SourceOrganizeImports]}},t.honorsChangeAnnotations=!1}initialize(e,t){let r=this.getRegistrationOptions(t,e.codeActionProvider);r&&this.register({id:rR.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideCodeActions:(i,o,s,a)=>{let c=this._client,d=async(g,m,C,w)=>{let T={textDocument:c.code2ProtocolConverter.asTextDocumentIdentifier(g),range:c.code2ProtocolConverter.asRange(m),context:await c.code2ProtocolConverter.asCodeActionContext(C,w)};return c.sendRequest(nn.CodeActionRequest.type,T,w).then(S=>w.isCancellationRequested||S===null||S===void 0?null:c.protocol2CodeConverter.asCodeActionResult(S,w),S=>c.handleFailedRequest(nn.CodeActionRequest.type,w,S,null))},f=c.middleware;return f.provideCodeActions?f.provideCodeActions(i,o,s,a,d):d(i,o,s,a)},resolveCodeAction:e.resolveProvider?(i,o)=>{let s=this._client,a=this._client.middleware,c=async(d,f)=>s.sendRequest(nn.CodeActionResolveRequest.type,await s.code2ProtocolConverter.asCodeAction(d,f),f).then(g=>f.isCancellationRequested?d:s.protocol2CodeConverter.asCodeAction(g,f),g=>s.handleFailedRequest(nn.CodeActionResolveRequest.type,f,g,d));return a.resolveCodeAction?a.resolveCodeAction(i,o,c):c(i,o)}:void 0};return[nR.languages.registerCodeActionsProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),r,e.codeActionKinds?{providedCodeActionKinds:this._client.protocol2CodeConverter.asCodeActionKinds(e.codeActionKinds)}:void 0),r]}};qs.CodeActionFeature=Fd});var eg=O(Is=>{"use strict";Object.defineProperty(Is,"__esModule",{value:!0});Is.CodeLensFeature=void 0;var Zh=require("vscode"),mi=se(),iR=Ge(),fo=Te(),Ld=class extends fo.TextDocumentLanguageFeature{constructor(e){super(e,mi.CodeLensRequest.type)}fillClientCapabilities(e){(0,fo.ensure)((0,fo.ensure)(e,"textDocument"),"codeLens").dynamicRegistration=!0,(0,fo.ensure)((0,fo.ensure)(e,"workspace"),"codeLens").refreshSupport=!0}initialize(e,t){this._client.onRequest(mi.CodeLensRefreshRequest.type,async()=>{for(let o of this.getAllProviders())o.onDidChangeCodeLensEmitter.fire()});let i=this.getRegistrationOptions(t,e.codeLensProvider);i&&this.register({id:iR.generateUuid(),registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r=new Zh.EventEmitter,i={onDidChangeCodeLenses:r.event,provideCodeLenses:(o,s)=>{let a=this._client,c=(f,g)=>a.sendRequest(mi.CodeLensRequest.type,a.code2ProtocolConverter.asCodeLensParams(f),g).then(m=>g.isCancellationRequested?null:a.protocol2CodeConverter.asCodeLenses(m,g),m=>a.handleFailedRequest(mi.CodeLensRequest.type,g,m,null)),d=a.middleware;return d.provideCodeLenses?d.provideCodeLenses(o,s,c):c(o,s)},resolveCodeLens:e.resolveProvider?(o,s)=>{let a=this._client,c=(f,g)=>a.sendRequest(mi.CodeLensResolveRequest.type,a.code2ProtocolConverter.asCodeLens(f),g).then(m=>g.isCancellationRequested?f:a.protocol2CodeConverter.asCodeLens(m),m=>a.handleFailedRequest(mi.CodeLensResolveRequest.type,g,m,f)),d=a.middleware;return d.resolveCodeLens?d.resolveCodeLens(o,s,c):c(o,s)}:void 0};return[Zh.languages.registerCodeLensProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),i),{provider:i,onDidChangeCodeLensEmitter:r}]}};Is.CodeLensFeature=Ld});var tg=O(br=>{"use strict";Object.defineProperty(br,"__esModule",{value:!0});br.DocumentOnTypeFormattingFeature=br.DocumentRangeFormattingFeature=br.DocumentFormattingFeature=void 0;var Os=require("vscode"),Zn=se(),jd=Ge(),er=Te(),po;(function(n){function e(t){let r=Os.workspace.getConfiguration("files",t);return{trimTrailingWhitespace:r.get("trimTrailingWhitespace"),trimFinalNewlines:r.get("trimFinalNewlines"),insertFinalNewline:r.get("insertFinalNewline")}}n.fromConfiguration=e})(po||(po={}));var Nd=class extends er.TextDocumentLanguageFeature{constructor(e){super(e,Zn.DocumentFormattingRequest.type)}fillClientCapabilities(e){(0,er.ensure)((0,er.ensure)(e,"textDocument"),"formatting").dynamicRegistration=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.documentFormattingProvider);r&&this.register({id:jd.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideDocumentFormattingEdits:(i,o,s)=>{let a=this._client,c=(f,g,m)=>{let C={textDocument:a.code2ProtocolConverter.asTextDocumentIdentifier(f),options:a.code2ProtocolConverter.asFormattingOptions(g,po.fromConfiguration(f))};return a.sendRequest(Zn.DocumentFormattingRequest.type,C,m).then(w=>m.isCancellationRequested?null:a.protocol2CodeConverter.asTextEdits(w,m),w=>a.handleFailedRequest(Zn.DocumentFormattingRequest.type,m,w,null))},d=a.middleware;return d.provideDocumentFormattingEdits?d.provideDocumentFormattingEdits(i,o,s,c):c(i,o,s)}};return[Os.languages.registerDocumentFormattingEditProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),r),r]}};br.DocumentFormattingFeature=Nd;var Md=class extends er.TextDocumentLanguageFeature{constructor(e){super(e,Zn.DocumentRangeFormattingRequest.type)}fillClientCapabilities(e){(0,er.ensure)((0,er.ensure)(e,"textDocument"),"rangeFormatting").dynamicRegistration=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.documentRangeFormattingProvider);r&&this.register({id:jd.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideDocumentRangeFormattingEdits:(i,o,s,a)=>{let c=this._client,d=(g,m,C,w)=>{let T={textDocument:c.code2ProtocolConverter.asTextDocumentIdentifier(g),range:c.code2ProtocolConverter.asRange(m),options:c.code2ProtocolConverter.asFormattingOptions(C,po.fromConfiguration(g))};return c.sendRequest(Zn.DocumentRangeFormattingRequest.type,T,w).then(S=>w.isCancellationRequested?null:c.protocol2CodeConverter.asTextEdits(S,w),S=>c.handleFailedRequest(Zn.DocumentRangeFormattingRequest.type,w,S,null))},f=c.middleware;return f.provideDocumentRangeFormattingEdits?f.provideDocumentRangeFormattingEdits(i,o,s,a,d):d(i,o,s,a)}};return[Os.languages.registerDocumentRangeFormattingEditProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),r),r]}};br.DocumentRangeFormattingFeature=Md;var Ad=class extends er.TextDocumentLanguageFeature{constructor(e){super(e,Zn.DocumentOnTypeFormattingRequest.type)}fillClientCapabilities(e){(0,er.ensure)((0,er.ensure)(e,"textDocument"),"onTypeFormatting").dynamicRegistration=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.documentOnTypeFormattingProvider);r&&this.register({id:jd.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideOnTypeFormattingEdits:(o,s,a,c,d)=>{let f=this._client,g=(C,w,T,S,q)=>{let F={textDocument:f.code2ProtocolConverter.asTextDocumentIdentifier(C),position:f.code2ProtocolConverter.asPosition(w),ch:T,options:f.code2ProtocolConverter.asFormattingOptions(S,po.fromConfiguration(C))};return f.sendRequest(Zn.DocumentOnTypeFormattingRequest.type,F,q).then(I=>q.isCancellationRequested?null:f.protocol2CodeConverter.asTextEdits(I,q),I=>f.handleFailedRequest(Zn.DocumentOnTypeFormattingRequest.type,q,I,null))},m=f.middleware;return m.provideOnTypeFormattingEdits?m.provideOnTypeFormattingEdits(o,s,a,c,d,g):g(o,s,a,c,d)}},i=e.moreTriggerCharacter||[];return[Os.languages.registerOnTypeFormattingEditProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),r,e.firstTriggerCharacter,...i),r]}};br.DocumentOnTypeFormattingFeature=Ad});var rg=O(Fs=>{"use strict";Object.defineProperty(Fs,"__esModule",{value:!0});Fs.RenameFeature=void 0;var oR=require("vscode"),jr=se(),sR=Ge(),ng=Kt(),$d=Te(),Ud=class extends $d.TextDocumentLanguageFeature{constructor(e){super(e,jr.RenameRequest.type)}fillClientCapabilities(e){let t=(0,$d.ensure)((0,$d.ensure)(e,"textDocument"),"rename");t.dynamicRegistration=!0,t.prepareSupport=!0,t.prepareSupportDefaultBehavior=jr.PrepareSupportDefaultBehavior.Identifier,t.honorsChangeAnnotations=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.renameProvider);r&&(ng.boolean(e.renameProvider)&&(r.prepareProvider=!1),this.register({id:sR.generateUuid(),registerOptions:r}))}registerLanguageProvider(e){let t=e.documentSelector,r={provideRenameEdits:(i,o,s,a)=>{let c=this._client,d=(g,m,C,w)=>{let T={textDocument:c.code2ProtocolConverter.asTextDocumentIdentifier(g),position:c.code2ProtocolConverter.asPosition(m),newName:C};return c.sendRequest(jr.RenameRequest.type,T,w).then(S=>w.isCancellationRequested?null:c.protocol2CodeConverter.asWorkspaceEdit(S,w),S=>c.handleFailedRequest(jr.RenameRequest.type,w,S,null,!1))},f=c.middleware;return f.provideRenameEdits?f.provideRenameEdits(i,o,s,a,d):d(i,o,s,a)},prepareRename:e.prepareProvider?(i,o,s)=>{let a=this._client,c=(f,g,m)=>{let C={textDocument:a.code2ProtocolConverter.asTextDocumentIdentifier(f),position:a.code2ProtocolConverter.asPosition(g)};return a.sendRequest(jr.PrepareRenameRequest.type,C,m).then(w=>m.isCancellationRequested?null:jr.Range.is(w)?a.protocol2CodeConverter.asRange(w):this.isDefaultBehavior(w)?w.defaultBehavior===!0?null:Promise.reject(new Error("The element can't be renamed.")):w&&jr.Range.is(w.range)?{range:a.protocol2CodeConverter.asRange(w.range),placeholder:w.placeholder}:Promise.reject(new Error("The element can't be renamed.")),w=>{throw typeof w.message=="string"?new Error(w.message):new Error("The element can't be renamed.")})},d=a.middleware;return d.prepareRename?d.prepareRename(i,o,s,c):c(i,o,s)}:void 0};return[this.registerProvider(t,r),r]}registerProvider(e,t){return oR.languages.registerRenameProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}isDefaultBehavior(e){let t=e;return t&&ng.boolean(t.defaultBehavior)}};Fs.RenameFeature=Ud});var ig=O(Ls=>{"use strict";Object.defineProperty(Ls,"__esModule",{value:!0});Ls.DocumentLinkFeature=void 0;var aR=require("vscode"),ho=se(),Hd=Te(),cR=Ge(),Wd=class extends Hd.TextDocumentLanguageFeature{constructor(e){super(e,ho.DocumentLinkRequest.type)}fillClientCapabilities(e){let t=(0,Hd.ensure)((0,Hd.ensure)(e,"textDocument"),"documentLink");t.dynamicRegistration=!0,t.tooltipSupport=!0}initialize(e,t){let r=this.getRegistrationOptions(t,e.documentLinkProvider);r&&this.register({id:cR.generateUuid(),registerOptions:r})}registerLanguageProvider(e){let t=e.documentSelector,r={provideDocumentLinks:(i,o)=>{let s=this._client,a=(d,f)=>s.sendRequest(ho.DocumentLinkRequest.type,s.code2ProtocolConverter.asDocumentLinkParams(d),f).then(g=>f.isCancellationRequested?null:s.protocol2CodeConverter.asDocumentLinks(g,f),g=>s.handleFailedRequest(ho.DocumentLinkRequest.type,f,g,null)),c=s.middleware;return c.provideDocumentLinks?c.provideDocumentLinks(i,o,a):a(i,o)},resolveDocumentLink:e.resolveProvider?(i,o)=>{let s=this._client,a=(d,f)=>s.sendRequest(ho.DocumentLinkResolveRequest.type,s.code2ProtocolConverter.asDocumentLink(d),f).then(g=>f.isCancellationRequested?d:s.protocol2CodeConverter.asDocumentLink(g),g=>s.handleFailedRequest(ho.DocumentLinkResolveRequest.type,f,g,d)),c=s.middleware;return c.resolveDocumentLink?c.resolveDocumentLink(i,o,a):a(i,o)}:void 0};return[aR.languages.registerDocumentLinkProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),r),r]}};Ls.DocumentLinkFeature=Wd});var sg=O(Ns=>{"use strict";Object.defineProperty(Ns,"__esModule",{value:!0});Ns.ExecuteCommandFeature=void 0;var uR=require("vscode"),zd=se(),dR=Ge(),og=Te(),Kd=class{constructor(e){this._client=e,this._commands=new Map}getState(){return{kind:"workspace",id:this.registrationType.method,registrations:this._commands.size>0}}get registrationType(){return zd.ExecuteCommandRequest.type}fillClientCapabilities(e){(0,og.ensure)((0,og.ensure)(e,"workspace"),"executeCommand").dynamicRegistration=!0}initialize(e){e.executeCommandProvider&&this.register({id:dR.generateUuid(),registerOptions:Object.assign({},e.executeCommandProvider)})}register(e){let t=this._client,r=t.middleware,i=(o,s)=>{let a={command:o,arguments:s};return t.sendRequest(zd.ExecuteCommandRequest.type,a).then(void 0,c=>t.handleFailedRequest(zd.ExecuteCommandRequest.type,void 0,c,void 0))};if(e.registerOptions.commands){let o=[];for(let s of e.registerOptions.commands)o.push(uR.commands.registerCommand(s,(...a)=>r.executeCommand?r.executeCommand(s,a,i):i(s,a)));this._commands.set(e.id,o)}}unregister(e){let t=this._commands.get(e);t&&t.forEach(r=>r.dispose())}dispose(){this._commands.forEach(e=>{e.forEach(t=>t.dispose())}),this._commands.clear()}};Ns.ExecuteCommandFeature=Kd});var ag=O(As=>{"use strict";Object.defineProperty(As,"__esModule",{value:!0});As.FileSystemWatcherFeature=void 0;var lR=require("vscode"),$r=se(),Ms=Te(),Vd=class{constructor(e,t){this._client=e,this._notifyFileEvent=t,this._watchers=new Map}getState(){return{kind:"workspace",id:this.registrationType.method,registrations:this._watchers.size>0}}get registrationType(){return $r.DidChangeWatchedFilesNotification.type}fillClientCapabilities(e){(0,Ms.ensure)((0,Ms.ensure)(e,"workspace"),"didChangeWatchedFiles").dynamicRegistration=!0,(0,Ms.ensure)((0,Ms.ensure)(e,"workspace"),"didChangeWatchedFiles").relativePatternSupport=!0}initialize(e,t){}register(e){if(!Array.isArray(e.registerOptions.watchers))return;let t=[];for(let r of e.registerOptions.watchers){let i=this._client.protocol2CodeConverter.asGlobPattern(r.globPattern);if(i===void 0)continue;let o=!0,s=!0,a=!0;r.kind!==void 0&&r.kind!==null&&(o=(r.kind&$r.WatchKind.Create)!==0,s=(r.kind&$r.WatchKind.Change)!==0,a=(r.kind&$r.WatchKind.Delete)!==0);let c=lR.workspace.createFileSystemWatcher(i,!o,!s,!a);this.hookListeners(c,o,s,a,t),t.push(c)}this._watchers.set(e.id,t)}registerRaw(e,t){let r=[];for(let i of t)this.hookListeners(i,!0,!0,!0,r);this._watchers.set(e,r)}hookListeners(e,t,r,i,o){t&&e.onDidCreate(s=>this._notifyFileEvent({uri:this._client.code2ProtocolConverter.asUri(s),type:$r.FileChangeType.Created}),null,o),r&&e.onDidChange(s=>this._notifyFileEvent({uri:this._client.code2ProtocolConverter.asUri(s),type:$r.FileChangeType.Changed}),null,o),i&&e.onDidDelete(s=>this._notifyFileEvent({uri:this._client.code2ProtocolConverter.asUri(s),type:$r.FileChangeType.Deleted}),null,o)}unregister(e){let t=this._watchers.get(e);if(t)for(let r of t)r.dispose()}dispose(){this._watchers.forEach(e=>{for(let t of e)t.dispose()}),this._watchers.clear()}};As.FileSystemWatcherFeature=Vd});var cg=O(js=>{"use strict";Object.defineProperty(js,"__esModule",{value:!0});js.ColorProviderFeature=void 0;var fR=require("vscode"),go=se(),Bd=Te(),Gd=class extends Bd.TextDocumentLanguageFeature{constructor(e){super(e,go.DocumentColorRequest.type)}fillClientCapabilities(e){(0,Bd.ensure)((0,Bd.ensure)(e,"textDocument"),"colorProvider").dynamicRegistration=!0}initialize(e,t){let[r,i]=this.getRegistration(t,e.colorProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r={provideColorPresentations:(i,o,s)=>{let a=this._client,c=(f,g,m)=>{let C={color:f,textDocument:a.code2ProtocolConverter.asTextDocumentIdentifier(g.document),range:a.code2ProtocolConverter.asRange(g.range)};return a.sendRequest(go.ColorPresentationRequest.type,C,m).then(w=>m.isCancellationRequested?null:this._client.protocol2CodeConverter.asColorPresentations(w,m),w=>a.handleFailedRequest(go.ColorPresentationRequest.type,m,w,null))},d=a.middleware;return d.provideColorPresentations?d.provideColorPresentations(i,o,s,c):c(i,o,s)},provideDocumentColors:(i,o)=>{let s=this._client,a=(d,f)=>{let g={textDocument:s.code2ProtocolConverter.asTextDocumentIdentifier(d)};return s.sendRequest(go.DocumentColorRequest.type,g,f).then(m=>f.isCancellationRequested?null:this._client.protocol2CodeConverter.asColorInformations(m,f),m=>s.handleFailedRequest(go.DocumentColorRequest.type,f,m,null))},c=s.middleware;return c.provideDocumentColors?c.provideDocumentColors(i,o,a):a(i,o)}};return[fR.languages.registerColorProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),r),r]}};js.ColorProviderFeature=Gd});var ug=O($s=>{"use strict";Object.defineProperty($s,"__esModule",{value:!0});$s.ImplementationFeature=void 0;var pR=require("vscode"),Xd=se(),Jd=Te(),Qd=class extends Jd.TextDocumentLanguageFeature{constructor(e){super(e,Xd.ImplementationRequest.type)}fillClientCapabilities(e){let t=(0,Jd.ensure)((0,Jd.ensure)(e,"textDocument"),"implementation");t.dynamicRegistration=!0,t.linkSupport=!0}initialize(e,t){let[r,i]=this.getRegistration(t,e.implementationProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r={provideImplementation:(i,o,s)=>{let a=this._client,c=(f,g,m)=>a.sendRequest(Xd.ImplementationRequest.type,a.code2ProtocolConverter.asTextDocumentPositionParams(f,g),m).then(C=>m.isCancellationRequested?null:a.protocol2CodeConverter.asDefinitionResult(C,m),C=>a.handleFailedRequest(Xd.ImplementationRequest.type,m,C,null)),d=a.middleware;return d.provideImplementation?d.provideImplementation(i,o,s,c):c(i,o,s)}};return[this.registerProvider(t,r),r]}registerProvider(e,t){return pR.languages.registerImplementationProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};$s.ImplementationFeature=Qd});var dg=O(Us=>{"use strict";Object.defineProperty(Us,"__esModule",{value:!0});Us.TypeDefinitionFeature=void 0;var hR=require("vscode"),Yd=se(),mo=Te(),Zd=class extends mo.TextDocumentLanguageFeature{constructor(e){super(e,Yd.TypeDefinitionRequest.type)}fillClientCapabilities(e){(0,mo.ensure)((0,mo.ensure)(e,"textDocument"),"typeDefinition").dynamicRegistration=!0;let t=(0,mo.ensure)((0,mo.ensure)(e,"textDocument"),"typeDefinition");t.dynamicRegistration=!0,t.linkSupport=!0}initialize(e,t){let[r,i]=this.getRegistration(t,e.typeDefinitionProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r={provideTypeDefinition:(i,o,s)=>{let a=this._client,c=(f,g,m)=>a.sendRequest(Yd.TypeDefinitionRequest.type,a.code2ProtocolConverter.asTextDocumentPositionParams(f,g),m).then(C=>m.isCancellationRequested?null:a.protocol2CodeConverter.asDefinitionResult(C,m),C=>a.handleFailedRequest(Yd.TypeDefinitionRequest.type,m,C,null)),d=a.middleware;return d.provideTypeDefinition?d.provideTypeDefinition(i,o,s,c):c(i,o,s)}};return[this.registerProvider(t,r),r]}registerProvider(e,t){return hR.languages.registerTypeDefinitionProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};Us.TypeDefinitionFeature=Zd});var lg=O(vi=>{"use strict";Object.defineProperty(vi,"__esModule",{value:!0});vi.WorkspaceFoldersFeature=vi.arrayDiff=void 0;var gR=Ge(),Hs=require("vscode"),vo=se();function el(n,e){if(n!=null)return n[e]}function tl(n,e){return n.filter(t=>e.indexOf(t)<0)}vi.arrayDiff=tl;var nl=class{constructor(e){this._client=e,this._listeners=new Map}getState(){return{kind:"workspace",id:this.registrationType.method,registrations:this._listeners.size>0}}get registrationType(){return vo.DidChangeWorkspaceFoldersNotification.type}fillInitializeParams(e){let t=Hs.workspace.workspaceFolders;this.initializeWithFolders(t),t===void 0?e.workspaceFolders=null:e.workspaceFolders=t.map(r=>this.asProtocol(r))}initializeWithFolders(e){this._initialFolders=e}fillClientCapabilities(e){e.workspace=e.workspace||{},e.workspace.workspaceFolders=!0}initialize(e){let t=this._client;t.onRequest(vo.WorkspaceFoldersRequest.type,o=>{let s=()=>{let c=Hs.workspace.workspaceFolders;return c===void 0?null:c.map(f=>this.asProtocol(f))},a=t.middleware.workspace;return a&&a.workspaceFolders?a.workspaceFolders(o,s):s(o)});let r=el(el(el(e,"workspace"),"workspaceFolders"),"changeNotifications"),i;typeof r=="string"?i=r:r===!0&&(i=gR.generateUuid()),i&&this.register({id:i,registerOptions:void 0})}sendInitialEvent(e){let t;if(this._initialFolders&&e){let r=tl(this._initialFolders,e),i=tl(e,this._initialFolders);(i.length>0||r.length>0)&&(t=this.doSendEvent(i,r))}else this._initialFolders?t=this.doSendEvent([],this._initialFolders):e&&(t=this.doSendEvent(e,[]));t!==void 0&&t.catch(r=>{this._client.error(`Sending notification ${vo.DidChangeWorkspaceFoldersNotification.type.method} failed`,r)})}doSendEvent(e,t){let r={event:{added:e.map(i=>this.asProtocol(i)),removed:t.map(i=>this.asProtocol(i))}};return this._client.sendNotification(vo.DidChangeWorkspaceFoldersNotification.type,r)}register(e){let t=e.id,r=this._client,i=Hs.workspace.onDidChangeWorkspaceFolders(o=>{let s=d=>this.doSendEvent(d.added,d.removed),a=r.middleware.workspace;(a&&a.didChangeWorkspaceFolders?a.didChangeWorkspaceFolders(o,s):s(o)).catch(d=>{this._client.error(`Sending notification ${vo.DidChangeWorkspaceFoldersNotification.type.method} failed`,d)})});this._listeners.set(t,i),this.sendInitialEvent(Hs.workspace.workspaceFolders)}unregister(e){let t=this._listeners.get(e);t!==void 0&&(this._listeners.delete(e),t.dispose())}dispose(){for(let e of this._listeners.values())e.dispose();this._listeners.clear()}asProtocol(e){return e===void 0?null:{uri:this._client.code2ProtocolConverter.asUri(e.uri),name:e.name}}};vi.WorkspaceFoldersFeature=nl});var fg=O(Ws=>{"use strict";Object.defineProperty(Ws,"__esModule",{value:!0});Ws.FoldingRangeFeature=void 0;var mR=require("vscode"),yi=se(),rl=Te(),il=class extends rl.TextDocumentLanguageFeature{constructor(e){super(e,yi.FoldingRangeRequest.type)}fillClientCapabilities(e){let t=(0,rl.ensure)((0,rl.ensure)(e,"textDocument"),"foldingRange");t.dynamicRegistration=!0,t.rangeLimit=5e3,t.lineFoldingOnly=!0,t.foldingRangeKind={valueSet:[yi.FoldingRangeKind.Comment,yi.FoldingRangeKind.Imports,yi.FoldingRangeKind.Region]},t.foldingRange={collapsedText:!1}}initialize(e,t){let[r,i]=this.getRegistration(t,e.foldingRangeProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r={provideFoldingRanges:(i,o,s)=>{let a=this._client,c=(f,g,m)=>{let C={textDocument:a.code2ProtocolConverter.asTextDocumentIdentifier(f)};return a.sendRequest(yi.FoldingRangeRequest.type,C,m).then(w=>m.isCancellationRequested?null:a.protocol2CodeConverter.asFoldingRanges(w,m),w=>a.handleFailedRequest(yi.FoldingRangeRequest.type,m,w,null))},d=a.middleware;return d.provideFoldingRanges?d.provideFoldingRanges(i,o,s,c):c(i,o,s)}};return[mR.languages.registerFoldingRangeProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),r),r]}};Ws.FoldingRangeFeature=il});var pg=O(zs=>{"use strict";Object.defineProperty(zs,"__esModule",{value:!0});zs.DeclarationFeature=void 0;var vR=require("vscode"),ol=se(),sl=Te(),al=class extends sl.TextDocumentLanguageFeature{constructor(e){super(e,ol.DeclarationRequest.type)}fillClientCapabilities(e){let t=(0,sl.ensure)((0,sl.ensure)(e,"textDocument"),"declaration");t.dynamicRegistration=!0,t.linkSupport=!0}initialize(e,t){let[r,i]=this.getRegistration(t,e.declarationProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r={provideDeclaration:(i,o,s)=>{let a=this._client,c=(f,g,m)=>a.sendRequest(ol.DeclarationRequest.type,a.code2ProtocolConverter.asTextDocumentPositionParams(f,g),m).then(C=>m.isCancellationRequested?null:a.protocol2CodeConverter.asDeclarationResult(C,m),C=>a.handleFailedRequest(ol.DeclarationRequest.type,m,C,null)),d=a.middleware;return d.provideDeclaration?d.provideDeclaration(i,o,s,c):c(i,o,s)}};return[this.registerProvider(t,r),r]}registerProvider(e,t){return vR.languages.registerDeclarationProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};zs.DeclarationFeature=al});var hg=O(Ks=>{"use strict";Object.defineProperty(Ks,"__esModule",{value:!0});Ks.SelectionRangeFeature=void 0;var yR=require("vscode"),cl=se(),ul=Te(),dl=class extends ul.TextDocumentLanguageFeature{constructor(e){super(e,cl.SelectionRangeRequest.type)}fillClientCapabilities(e){let t=(0,ul.ensure)((0,ul.ensure)(e,"textDocument"),"selectionRange");t.dynamicRegistration=!0}initialize(e,t){let[r,i]=this.getRegistration(t,e.selectionRangeProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r={provideSelectionRanges:(i,o,s)=>{let a=this._client,c=async(f,g,m)=>{let C={textDocument:a.code2ProtocolConverter.asTextDocumentIdentifier(f),positions:await a.code2ProtocolConverter.asPositions(g,m)};return a.sendRequest(cl.SelectionRangeRequest.type,C,m).then(w=>m.isCancellationRequested?null:a.protocol2CodeConverter.asSelectionRanges(w,m),w=>a.handleFailedRequest(cl.SelectionRangeRequest.type,m,w,null))},d=a.middleware;return d.provideSelectionRanges?d.provideSelectionRanges(i,o,s,c):c(i,o,s)}};return[this.registerProvider(t,r),r]}registerProvider(e,t){return yR.languages.registerSelectionRangeProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};Ks.SelectionRangeFeature=dl});var mg=O(Vs=>{"use strict";Object.defineProperty(Vs,"__esModule",{value:!0});Vs.ProgressFeature=void 0;var gg=se(),CR=Lu();function wR(n,e){return n[e]===void 0&&(n[e]=Object.create(null)),n[e]}var ll=class{constructor(e){this._client=e,this.activeParts=new Set}getState(){return{kind:"window",id:gg.WorkDoneProgressCreateRequest.method,registrations:this.activeParts.size>0}}fillClientCapabilities(e){wR(e,"window").workDoneProgress=!0}initialize(){let e=this._client,t=i=>{this.activeParts.delete(i)},r=i=>{this.activeParts.add(new CR.ProgressPart(this._client,i.token,t))};e.onRequest(gg.WorkDoneProgressCreateRequest.type,r)}dispose(){for(let e of this.activeParts)e.done();this.activeParts.clear()}};Vs.ProgressFeature=ll});var vg=O(Bs=>{"use strict";Object.defineProperty(Bs,"__esModule",{value:!0});Bs.CallHierarchyFeature=void 0;var bR=require("vscode"),Ur=se(),fl=Te(),pl=class{constructor(e){this.client=e,this.middleware=e.middleware}prepareCallHierarchy(e,t,r){let i=this.client,o=this.middleware,s=(a,c,d)=>{let f=i.code2ProtocolConverter.asTextDocumentPositionParams(a,c);return i.sendRequest(Ur.CallHierarchyPrepareRequest.type,f,d).then(g=>d.isCancellationRequested?null:i.protocol2CodeConverter.asCallHierarchyItems(g,d),g=>i.handleFailedRequest(Ur.CallHierarchyPrepareRequest.type,d,g,null))};return o.prepareCallHierarchy?o.prepareCallHierarchy(e,t,r,s):s(e,t,r)}provideCallHierarchyIncomingCalls(e,t){let r=this.client,i=this.middleware,o=(s,a)=>{let c={item:r.code2ProtocolConverter.asCallHierarchyItem(s)};return r.sendRequest(Ur.CallHierarchyIncomingCallsRequest.type,c,a).then(d=>a.isCancellationRequested?null:r.protocol2CodeConverter.asCallHierarchyIncomingCalls(d,a),d=>r.handleFailedRequest(Ur.CallHierarchyIncomingCallsRequest.type,a,d,null))};return i.provideCallHierarchyIncomingCalls?i.provideCallHierarchyIncomingCalls(e,t,o):o(e,t)}provideCallHierarchyOutgoingCalls(e,t){let r=this.client,i=this.middleware,o=(s,a)=>{let c={item:r.code2ProtocolConverter.asCallHierarchyItem(s)};return r.sendRequest(Ur.CallHierarchyOutgoingCallsRequest.type,c,a).then(d=>a.isCancellationRequested?null:r.protocol2CodeConverter.asCallHierarchyOutgoingCalls(d,a),d=>r.handleFailedRequest(Ur.CallHierarchyOutgoingCallsRequest.type,a,d,null))};return i.provideCallHierarchyOutgoingCalls?i.provideCallHierarchyOutgoingCalls(e,t,o):o(e,t)}},hl=class extends fl.TextDocumentLanguageFeature{constructor(e){super(e,Ur.CallHierarchyPrepareRequest.type)}fillClientCapabilities(e){let t=e,r=(0,fl.ensure)((0,fl.ensure)(t,"textDocument"),"callHierarchy");r.dynamicRegistration=!0}initialize(e,t){let[r,i]=this.getRegistration(t,e.callHierarchyProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=this._client,r=new pl(t);return[bR.languages.registerCallHierarchyProvider(this._client.protocol2CodeConverter.asDocumentSelector(e.documentSelector),r),r]}};Bs.CallHierarchyFeature=hl});var yg=O(Xs=>{"use strict";Object.defineProperty(Xs,"__esModule",{value:!0});Xs.SemanticTokensFeature=void 0;var Gs=require("vscode"),ae=se(),yo=Te(),DR=Kt(),gl=class extends yo.TextDocumentLanguageFeature{constructor(e){super(e,ae.SemanticTokensRegistrationType.type)}fillClientCapabilities(e){let t=(0,yo.ensure)((0,yo.ensure)(e,"textDocument"),"semanticTokens");t.dynamicRegistration=!0,t.tokenTypes=[ae.SemanticTokenTypes.namespace,ae.SemanticTokenTypes.type,ae.SemanticTokenTypes.class,ae.SemanticTokenTypes.enum,ae.SemanticTokenTypes.interface,ae.SemanticTokenTypes.struct,ae.SemanticTokenTypes.typeParameter,ae.SemanticTokenTypes.parameter,ae.SemanticTokenTypes.variable,ae.SemanticTokenTypes.property,ae.SemanticTokenTypes.enumMember,ae.SemanticTokenTypes.event,ae.SemanticTokenTypes.function,ae.SemanticTokenTypes.method,ae.SemanticTokenTypes.macro,ae.SemanticTokenTypes.keyword,ae.SemanticTokenTypes.modifier,ae.SemanticTokenTypes.comment,ae.SemanticTokenTypes.string,ae.SemanticTokenTypes.number,ae.SemanticTokenTypes.regexp,ae.SemanticTokenTypes.operator,ae.SemanticTokenTypes.decorator],t.tokenModifiers=[ae.SemanticTokenModifiers.declaration,ae.SemanticTokenModifiers.definition,ae.SemanticTokenModifiers.readonly,ae.SemanticTokenModifiers.static,ae.SemanticTokenModifiers.deprecated,ae.SemanticTokenModifiers.abstract,ae.SemanticTokenModifiers.async,ae.SemanticTokenModifiers.modification,ae.SemanticTokenModifiers.documentation,ae.SemanticTokenModifiers.defaultLibrary],t.formats=[ae.TokenFormat.Relative],t.requests={range:!0,full:{delta:!0}},t.multilineTokenSupport=!1,t.overlappingTokenSupport=!1,t.serverCancelSupport=!0,t.augmentsSyntaxTokens=!0,(0,yo.ensure)((0,yo.ensure)(e,"workspace"),"semanticTokens").refreshSupport=!0}initialize(e,t){this._client.onRequest(ae.SemanticTokensRefreshRequest.type,async()=>{for(let s of this.getAllProviders())s.onDidChangeSemanticTokensEmitter.fire()});let[i,o]=this.getRegistration(t,e.semanticTokensProvider);!i||!o||this.register({id:i,registerOptions:o})}registerLanguageProvider(e){let t=e.documentSelector,r=DR.boolean(e.full)?e.full:e.full!==void 0,i=e.full!==void 0&&typeof e.full!="boolean"&&e.full.delta===!0,o=new Gs.EventEmitter,s=r?{onDidChangeSemanticTokens:o.event,provideDocumentSemanticTokens:(C,w)=>{let T=this._client,S=T.middleware,q=(F,I)=>{let A={textDocument:T.code2ProtocolConverter.asTextDocumentIdentifier(F)};return T.sendRequest(ae.SemanticTokensRequest.type,A,I).then(W=>I.isCancellationRequested?null:T.protocol2CodeConverter.asSemanticTokens(W,I),W=>T.handleFailedRequest(ae.SemanticTokensRequest.type,I,W,null))};return S.provideDocumentSemanticTokens?S.provideDocumentSemanticTokens(C,w,q):q(C,w)},provideDocumentSemanticTokensEdits:i?(C,w,T)=>{let S=this._client,q=S.middleware,F=(I,A,W)=>{let ne={textDocument:S.code2ProtocolConverter.asTextDocumentIdentifier(I),previousResultId:A};return S.sendRequest(ae.SemanticTokensDeltaRequest.type,ne,W).then(async K=>W.isCancellationRequested?null:ae.SemanticTokens.is(K)?await S.protocol2CodeConverter.asSemanticTokens(K,W):await S.protocol2CodeConverter.asSemanticTokensEdits(K,W),K=>S.handleFailedRequest(ae.SemanticTokensDeltaRequest.type,W,K,null))};return q.provideDocumentSemanticTokensEdits?q.provideDocumentSemanticTokensEdits(C,w,T,F):F(C,w,T)}:void 0}:void 0,c=e.range===!0?{provideDocumentRangeSemanticTokens:(C,w,T)=>{let S=this._client,q=S.middleware,F=(I,A,W)=>{let ne={textDocument:S.code2ProtocolConverter.asTextDocumentIdentifier(I),range:S.code2ProtocolConverter.asRange(A)};return S.sendRequest(ae.SemanticTokensRangeRequest.type,ne,W).then(K=>W.isCancellationRequested?null:S.protocol2CodeConverter.asSemanticTokens(K,W),K=>S.handleFailedRequest(ae.SemanticTokensRangeRequest.type,W,K,null))};return q.provideDocumentRangeSemanticTokens?q.provideDocumentRangeSemanticTokens(C,w,T,F):F(C,w,T)}}:void 0,d=[],f=this._client,g=f.protocol2CodeConverter.asSemanticTokensLegend(e.legend),m=f.protocol2CodeConverter.asDocumentSelector(t);return s!==void 0&&d.push(Gs.languages.registerDocumentSemanticTokensProvider(m,s,g)),c!==void 0&&d.push(Gs.languages.registerDocumentRangeSemanticTokensProvider(m,c,g)),[new Gs.Disposable(()=>d.forEach(C=>C.dispose())),{range:c,full:s,onDidChangeSemanticTokensEmitter:o}]}};Xs.SemanticTokensFeature=gl});var bg=O(Gt=>{"use strict";Object.defineProperty(Gt,"__esModule",{value:!0});Gt.WillDeleteFilesFeature=Gt.WillRenameFilesFeature=Gt.WillCreateFilesFeature=Gt.DidDeleteFilesFeature=Gt.DidRenameFilesFeature=Gt.DidCreateFilesFeature=void 0;var dn=require("vscode"),TR=ys(),tr=se(),RR=Ge();function Cg(n,e){return n[e]===void 0&&(n[e]={}),n[e]}function SR(n,e){return n[e]}function wg(n,e,t){n[e]=t}var Co=class n{constructor(e,t,r,i,o){this._client=e,this._event=t,this._registrationType=r,this._clientCapability=i,this._serverCapability=o,this._filters=new Map}getState(){return{kind:"workspace",id:this._registrationType.method,registrations:this._filters.size>0}}filterSize(){return this._filters.size}get registrationType(){return this._registrationType}fillClientCapabilities(e){let t=Cg(Cg(e,"workspace"),"fileOperations");wg(t,"dynamicRegistration",!0),wg(t,this._clientCapability,!0)}initialize(e){var i;let t=(i=e.workspace)==null?void 0:i.fileOperations,r=t!==void 0?SR(t,this._serverCapability):void 0;if((r==null?void 0:r.filters)!==void 0)try{this.register({id:RR.generateUuid(),registerOptions:{filters:r.filters}})}catch(o){this._client.warn(`Ignoring invalid glob pattern for ${this._serverCapability} registration: ${o}`)}}register(e){this._listener||(this._listener=this._event(this.send,this));let t=e.registerOptions.filters.map(r=>{let i=new TR.Minimatch(r.pattern.glob,n.asMinimatchOptions(r.pattern.options));if(!i.makeRe())throw new Error(`Invalid pattern ${r.pattern.glob}!`);return{scheme:r.scheme,matcher:i,kind:r.pattern.matches}});this._filters.set(e.id,t)}unregister(e){this._filters.delete(e),this._filters.size===0&&this._listener&&(this._listener.dispose(),this._listener=void 0)}dispose(){this._filters.clear(),this._listener&&(this._listener.dispose(),this._listener=void 0)}getFileType(e){return n.getFileType(e)}async filter(e,t){let r=await Promise.all(e.files.map(async o=>{let s=t(o),a=s.fsPath.replace(/\\/g,"/");for(let c of this._filters.values())for(let d of c)if(!(d.scheme!==void 0&&d.scheme!==s.scheme)){if(d.matcher.match(a)){if(d.kind===void 0)return!0;let f=await this.getFileType(s);if(f===void 0)return this._client.error(`Failed to determine file type for ${s.toString()}.`),!0;if(f===dn.FileType.File&&d.kind===tr.FileOperationPatternKind.file||f===dn.FileType.Directory&&d.kind===tr.FileOperationPatternKind.folder)return!0}else if(d.kind===tr.FileOperationPatternKind.folder&&await n.getFileType(s)===dn.FileType.Directory&&d.matcher.match(`${a}/`))return!0}return!1})),i=e.files.filter((o,s)=>r[s]);return{...e,files:i}}static async getFileType(e){try{return(await dn.workspace.fs.stat(e)).type}catch{return}}static asMinimatchOptions(e){if(e!==void 0&&e.ignoreCase===!0)return{nocase:!0}}},Js=class extends Co{constructor(e,t,r,i,o,s,a){super(e,t,r,i,o),this._notificationType=r,this._accessUri=s,this._createParams=a}async send(e){let t=await this.filter(e,this._accessUri);if(t.files.length){let r=async i=>this._client.sendNotification(this._notificationType,this._createParams(i));return this.doSend(t,r)}}},Qs=class extends Js{constructor(){super(...arguments),this._fsPathFileTypes=new Map}async getFileType(e){let t=e.fsPath;if(this._fsPathFileTypes.has(t))return this._fsPathFileTypes.get(t);let r=await Co.getFileType(e);return r&&this._fsPathFileTypes.set(t,r),r}async cacheFileTypes(e,t){await this.filter(e,t)}clearFileTypeCache(){this._fsPathFileTypes.clear()}unregister(e){super.unregister(e),this.filterSize()===0&&this._willListener&&(this._willListener.dispose(),this._willListener=void 0)}dispose(){super.dispose(),this._willListener&&(this._willListener.dispose(),this._willListener=void 0)}},ml=class extends Js{constructor(e){super(e,dn.workspace.onDidCreateFiles,tr.DidCreateFilesNotification.type,"didCreate","didCreate",t=>t,e.code2ProtocolConverter.asDidCreateFilesParams)}doSend(e,t){let r=this._client.middleware.workspace;return r!=null&&r.didCreateFiles?r.didCreateFiles(e,t):t(e)}};Gt.DidCreateFilesFeature=ml;var vl=class extends Qs{constructor(e){super(e,dn.workspace.onDidRenameFiles,tr.DidRenameFilesNotification.type,"didRename","didRename",t=>t.oldUri,e.code2ProtocolConverter.asDidRenameFilesParams)}register(e){this._willListener||(this._willListener=dn.workspace.onWillRenameFiles(this.willRename,this)),super.register(e)}willRename(e){e.waitUntil(this.cacheFileTypes(e,t=>t.oldUri))}doSend(e,t){this.clearFileTypeCache();let r=this._client.middleware.workspace;return r!=null&&r.didRenameFiles?r.didRenameFiles(e,t):t(e)}};Gt.DidRenameFilesFeature=vl;var yl=class extends Qs{constructor(e){super(e,dn.workspace.onDidDeleteFiles,tr.DidDeleteFilesNotification.type,"didDelete","didDelete",t=>t,e.code2ProtocolConverter.asDidDeleteFilesParams)}register(e){this._willListener||(this._willListener=dn.workspace.onWillDeleteFiles(this.willDelete,this)),super.register(e)}willDelete(e){e.waitUntil(this.cacheFileTypes(e,t=>t))}doSend(e,t){this.clearFileTypeCache();let r=this._client.middleware.workspace;return r!=null&&r.didDeleteFiles?r.didDeleteFiles(e,t):t(e)}};Gt.DidDeleteFilesFeature=yl;var wo=class extends Co{constructor(e,t,r,i,o,s,a){super(e,t,r,i,o),this._requestType=r,this._accessUri=s,this._createParams=a}async send(e){let t=this.waitUntil(e);e.waitUntil(t)}async waitUntil(e){let t=await this.filter(e,this._accessUri);if(t.files.length){let r=i=>this._client.sendRequest(this._requestType,this._createParams(i),i.token).then(this._client.protocol2CodeConverter.asWorkspaceEdit);return this.doSend(t,r)}else return}},Cl=class extends wo{constructor(e){super(e,dn.workspace.onWillCreateFiles,tr.WillCreateFilesRequest.type,"willCreate","willCreate",t=>t,e.code2ProtocolConverter.asWillCreateFilesParams)}doSend(e,t){let r=this._client.middleware.workspace;return r!=null&&r.willCreateFiles?r.willCreateFiles(e,t):t(e)}};Gt.WillCreateFilesFeature=Cl;var wl=class extends wo{constructor(e){super(e,dn.workspace.onWillRenameFiles,tr.WillRenameFilesRequest.type,"willRename","willRename",t=>t.oldUri,e.code2ProtocolConverter.asWillRenameFilesParams)}doSend(e,t){let r=this._client.middleware.workspace;return r!=null&&r.willRenameFiles?r.willRenameFiles(e,t):t(e)}};Gt.WillRenameFilesFeature=wl;var bl=class extends wo{constructor(e){super(e,dn.workspace.onWillDeleteFiles,tr.WillDeleteFilesRequest.type,"willDelete","willDelete",t=>t,e.code2ProtocolConverter.asWillDeleteFilesParams)}doSend(e,t){let r=this._client.middleware.workspace;return r!=null&&r.willDeleteFiles?r.willDeleteFiles(e,t):t(e)}};Gt.WillDeleteFilesFeature=bl});var Dg=O(Ys=>{"use strict";Object.defineProperty(Ys,"__esModule",{value:!0});Ys.LinkedEditingFeature=void 0;var _R=require("vscode"),Dl=se(),Tl=Te(),Rl=class extends Tl.TextDocumentLanguageFeature{constructor(e){super(e,Dl.LinkedEditingRangeRequest.type)}fillClientCapabilities(e){let t=(0,Tl.ensure)((0,Tl.ensure)(e,"textDocument"),"linkedEditingRange");t.dynamicRegistration=!0}initialize(e,t){let[r,i]=this.getRegistration(t,e.linkedEditingRangeProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r={provideLinkedEditingRanges:(i,o,s)=>{let a=this._client,c=(f,g,m)=>a.sendRequest(Dl.LinkedEditingRangeRequest.type,a.code2ProtocolConverter.asTextDocumentPositionParams(f,g),m).then(C=>m.isCancellationRequested?null:a.protocol2CodeConverter.asLinkedEditingRanges(C,m),C=>a.handleFailedRequest(Dl.LinkedEditingRangeRequest.type,m,C,null)),d=a.middleware;return d.provideLinkedEditingRange?d.provideLinkedEditingRange(i,o,s,c):c(i,o,s)}};return[this.registerProvider(t,r),r]}registerProvider(e,t){return _R.languages.registerLinkedEditingRangeProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};Ys.LinkedEditingFeature=Rl});var Tg=O(Zs=>{"use strict";Object.defineProperty(Zs,"__esModule",{value:!0});Zs.TypeHierarchyFeature=void 0;var xR=require("vscode"),Hr=se(),Sl=Te(),_l=class{constructor(e){this.client=e,this.middleware=e.middleware}prepareTypeHierarchy(e,t,r){let i=this.client,o=this.middleware,s=(a,c,d)=>{let f=i.code2ProtocolConverter.asTextDocumentPositionParams(a,c);return i.sendRequest(Hr.TypeHierarchyPrepareRequest.type,f,d).then(g=>d.isCancellationRequested?null:i.protocol2CodeConverter.asTypeHierarchyItems(g,d),g=>i.handleFailedRequest(Hr.TypeHierarchyPrepareRequest.type,d,g,null))};return o.prepareTypeHierarchy?o.prepareTypeHierarchy(e,t,r,s):s(e,t,r)}provideTypeHierarchySupertypes(e,t){let r=this.client,i=this.middleware,o=(s,a)=>{let c={item:r.code2ProtocolConverter.asTypeHierarchyItem(s)};return r.sendRequest(Hr.TypeHierarchySupertypesRequest.type,c,a).then(d=>a.isCancellationRequested?null:r.protocol2CodeConverter.asTypeHierarchyItems(d,a),d=>r.handleFailedRequest(Hr.TypeHierarchySupertypesRequest.type,a,d,null))};return i.provideTypeHierarchySupertypes?i.provideTypeHierarchySupertypes(e,t,o):o(e,t)}provideTypeHierarchySubtypes(e,t){let r=this.client,i=this.middleware,o=(s,a)=>{let c={item:r.code2ProtocolConverter.asTypeHierarchyItem(s)};return r.sendRequest(Hr.TypeHierarchySubtypesRequest.type,c,a).then(d=>a.isCancellationRequested?null:r.protocol2CodeConverter.asTypeHierarchyItems(d,a),d=>r.handleFailedRequest(Hr.TypeHierarchySubtypesRequest.type,a,d,null))};return i.provideTypeHierarchySubtypes?i.provideTypeHierarchySubtypes(e,t,o):o(e,t)}},xl=class extends Sl.TextDocumentLanguageFeature{constructor(e){super(e,Hr.TypeHierarchyPrepareRequest.type)}fillClientCapabilities(e){let t=(0,Sl.ensure)((0,Sl.ensure)(e,"textDocument"),"typeHierarchy");t.dynamicRegistration=!0}initialize(e,t){let[r,i]=this.getRegistration(t,e.typeHierarchyProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=this._client,r=new _l(t);return[xR.languages.registerTypeHierarchyProvider(t.protocol2CodeConverter.asDocumentSelector(e.documentSelector),r),r]}};Zs.TypeHierarchyFeature=xl});var Sg=O(ta=>{"use strict";Object.defineProperty(ta,"__esModule",{value:!0});ta.InlineValueFeature=void 0;var Rg=require("vscode"),ea=se(),bo=Te(),Pl=class extends bo.TextDocumentLanguageFeature{constructor(e){super(e,ea.InlineValueRequest.type)}fillClientCapabilities(e){(0,bo.ensure)((0,bo.ensure)(e,"textDocument"),"inlineValue").dynamicRegistration=!0,(0,bo.ensure)((0,bo.ensure)(e,"workspace"),"inlineValue").refreshSupport=!0}initialize(e,t){this._client.onRequest(ea.InlineValueRefreshRequest.type,async()=>{for(let o of this.getAllProviders())o.onDidChangeInlineValues.fire()});let[r,i]=this.getRegistration(t,e.inlineValueProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r=new Rg.EventEmitter,i={onDidChangeInlineValues:r.event,provideInlineValues:(o,s,a,c)=>{let d=this._client,f=(m,C,w,T)=>{let S={textDocument:d.code2ProtocolConverter.asTextDocumentIdentifier(m),range:d.code2ProtocolConverter.asRange(C),context:d.code2ProtocolConverter.asInlineValueContext(w)};return d.sendRequest(ea.InlineValueRequest.type,S,T).then(q=>T.isCancellationRequested?null:d.protocol2CodeConverter.asInlineValues(q,T),q=>d.handleFailedRequest(ea.InlineValueRequest.type,T,q,null))},g=d.middleware;return g.provideInlineValues?g.provideInlineValues(o,s,a,c,f):f(o,s,a,c)}};return[this.registerProvider(t,i),{provider:i,onDidChangeInlineValues:r}]}registerProvider(e,t){return Rg.languages.registerInlineValuesProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};ta.InlineValueFeature=Pl});var xg=O(na=>{"use strict";Object.defineProperty(na,"__esModule",{value:!0});na.InlayHintsFeature=void 0;var _g=require("vscode"),Ci=se(),Do=Te(),El=class extends Do.TextDocumentLanguageFeature{constructor(e){super(e,Ci.InlayHintRequest.type)}fillClientCapabilities(e){let t=(0,Do.ensure)((0,Do.ensure)(e,"textDocument"),"inlayHint");t.dynamicRegistration=!0,t.resolveSupport={properties:["tooltip","textEdits","label.tooltip","label.location","label.command"]},(0,Do.ensure)((0,Do.ensure)(e,"workspace"),"inlayHint").refreshSupport=!0}initialize(e,t){this._client.onRequest(Ci.InlayHintRefreshRequest.type,async()=>{for(let o of this.getAllProviders())o.onDidChangeInlayHints.fire()});let[r,i]=this.getRegistration(t,e.inlayHintProvider);!r||!i||this.register({id:r,registerOptions:i})}registerLanguageProvider(e){let t=e.documentSelector,r=new _g.EventEmitter,i={onDidChangeInlayHints:r.event,provideInlayHints:(o,s,a)=>{let c=this._client,d=async(g,m,C)=>{let w={textDocument:c.code2ProtocolConverter.asTextDocumentIdentifier(g),range:c.code2ProtocolConverter.asRange(m)};try{let T=await c.sendRequest(Ci.InlayHintRequest.type,w,C);return C.isCancellationRequested?null:c.protocol2CodeConverter.asInlayHints(T,C)}catch(T){return c.handleFailedRequest(Ci.InlayHintRequest.type,C,T,null)}},f=c.middleware;return f.provideInlayHints?f.provideInlayHints(o,s,a,d):d(o,s,a)}};return i.resolveInlayHint=e.resolveProvider===!0?(o,s)=>{let a=this._client,c=async(f,g)=>{try{let m=await a.sendRequest(Ci.InlayHintResolveRequest.type,a.code2ProtocolConverter.asInlayHint(f),g);if(g.isCancellationRequested)return null;let C=a.protocol2CodeConverter.asInlayHint(m,g);return g.isCancellationRequested?null:C}catch(m){return a.handleFailedRequest(Ci.InlayHintResolveRequest.type,g,m,null)}},d=a.middleware;return d.resolveInlayHint?d.resolveInlayHint(o,s,c):c(o,s)}:void 0,[this.registerProvider(t,i),{provider:i,onDidChangeInlayHints:r}]}registerProvider(e,t){return _g.languages.registerInlayHintsProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}};na.InlayHintsFeature=El});var Ol=O($e=>{"use strict";Object.defineProperty($e,"__esModule",{value:!0});$e.ProposedFeatures=$e.BaseLanguageClient=$e.MessageTransports=$e.SuspendMode=$e.State=$e.CloseAction=$e.ErrorAction=$e.RevealOutputChannelOn=void 0;var qe=require("vscode"),$=se(),PR=ah(),ER=dh(),Ln=Kt(),ra=ls(),Pg=Ge(),kR=Lu(),Rn=Te(),qR=nd(),Eg=jh(),kg=Uh(),wi=Hh(),IR=Wh(),OR=zh(),FR=Kh(),LR=Bh(),NR=Gh(),MR=xd(),AR=Jh(),jR=Qh(),$R=Yh(),UR=eg(),kl=tg(),HR=rg(),WR=ig(),zR=sg(),KR=ag(),VR=cg(),BR=ug(),GR=dg(),XR=lg(),JR=fg(),QR=pg(),YR=hg(),ZR=mg(),eS=vg(),tS=yg(),bi=bg(),nS=Dg(),rS=Tg(),iS=Sg(),oS=xg(),To;(function(n){n[n.Info=1]="Info",n[n.Warn=2]="Warn",n[n.Error=3]="Error",n[n.Never=4]="Never"})(To=$e.RevealOutputChannelOn||($e.RevealOutputChannelOn={}));var oa;(function(n){n[n.Continue=1]="Continue",n[n.Shutdown=2]="Shutdown"})(oa=$e.ErrorAction||($e.ErrorAction={}));var Wr;(function(n){n[n.DoNotRestart=1]="DoNotRestart",n[n.Restart=2]="Restart"})(Wr=$e.CloseAction||($e.CloseAction={}));var ia;(function(n){n[n.Stopped=1]="Stopped",n[n.Starting=3]="Starting",n[n.Running=2]="Running"})(ia=$e.State||($e.State={}));var sS;(function(n){n.off="off",n.on="on"})(sS=$e.SuspendMode||($e.SuspendMode={}));var ql=class{constructor(e,t){this.client=e,this.maxRestartCount=t,this.restarts=[]}error(e,t,r){return r&&r<=3?{action:oa.Continue}:{action:oa.Shutdown}}closed(){return this.restarts.push(Date.now()),this.restarts.length<=this.maxRestartCount?{action:Wr.Restart}:this.restarts[this.restarts.length-1]-this.restarts[0]<=3*60*1e3?{action:Wr.DoNotRestart,message:`The ${this.client.name} server crashed ${this.maxRestartCount+1} times in the last 3 minutes. The server will not be restarted. See the output for more information.`}:(this.restarts.shift(),{action:Wr.Restart})}},pe;(function(n){n.Initial="initial",n.Starting="starting",n.StartFailed="startFailed",n.Running="running",n.Stopping="stopping",n.Stopped="stopped"})(pe||(pe={}));var aS;(function(n){function e(t){return t&&$.MessageReader.is(t.reader)&&$.MessageWriter.is(t.writer)}n.is=e})(aS=$e.MessageTransports||($e.MessageTransports={}));var Ro=class n{constructor(e,t,r){var o;this._traceFormat=$.TraceFormat.Text,this._diagnosticQueue=new Map,this._diagnosticQueueState={state:"idle"},this._features=[],this._dynamicFeatures=new Map,this.workspaceEditLock=new ra.Semaphore(1),this._id=e,this._name=t,r=r||{};let i={isTrusted:!1,supportHtml:!1};r.markdown!==void 0&&(i.isTrusted=r.markdown.isTrusted===!0,i.supportHtml=r.markdown.supportHtml===!0),this._clientOptions={documentSelector:r.documentSelector??[],synchronize:r.synchronize??{},diagnosticCollectionName:r.diagnosticCollectionName,outputChannelName:r.outputChannelName??this._name,revealOutputChannelOn:r.revealOutputChannelOn??To.Error,stdioEncoding:r.stdioEncoding??"utf8",initializationOptions:r.initializationOptions,initializationFailedHandler:r.initializationFailedHandler,progressOnInitialization:!!r.progressOnInitialization,errorHandler:r.errorHandler??this.createDefaultErrorHandler((o=r.connectionOptions)==null?void 0:o.maxRestartCount),middleware:r.middleware??{},uriConverters:r.uriConverters,workspaceFolder:r.workspaceFolder,connectionOptions:r.connectionOptions,markdown:i,diagnosticPullOptions:r.diagnosticPullOptions??{onChange:!0,onSave:!1},notebookDocumentOptions:r.notebookDocumentOptions??{}},this._clientOptions.synchronize=this._clientOptions.synchronize||{},this._state=pe.Initial,this._ignoredRegistrations=new Set,this._listeners=[],this._notificationHandlers=new Map,this._pendingNotificationHandlers=new Map,this._notificationDisposables=new Map,this._requestHandlers=new Map,this._pendingRequestHandlers=new Map,this._requestDisposables=new Map,this._progressHandlers=new Map,this._pendingProgressHandlers=new Map,this._progressDisposables=new Map,this._connection=void 0,this._initializeResult=void 0,r.outputChannel?(this._outputChannel=r.outputChannel,this._disposeOutputChannel=!1):(this._outputChannel=void 0,this._disposeOutputChannel=!0),this._traceOutputChannel=r.traceOutputChannel,this._diagnostics=void 0,this._pendingOpenNotifications=new Set,this._pendingChangeSemaphore=new ra.Semaphore(1),this._pendingChangeDelayer=new ra.Delayer(250),this._fileEvents=[],this._fileEventDelayer=new ra.Delayer(250),this._onStop=void 0,this._telemetryEmitter=new $.Emitter,this._stateChangeEmitter=new $.Emitter,this._trace=$.Trace.Off,this._tracer={log:(s,a)=>{Ln.string(s)?this.logTrace(s,a):this.logObjectTrace(s)}},this._c2p=PR.createConverter(r.uriConverters?r.uriConverters.code2Protocol:void 0),this._p2c=ER.createConverter(r.uriConverters?r.uriConverters.protocol2Code:void 0,this._clientOptions.markdown.isTrusted,this._clientOptions.markdown.supportHtml),this._syncedDocuments=new Map,this.registerBuiltinFeatures()}get name(){return this._name}get middleware(){return this._clientOptions.middleware??Object.create(null)}get clientOptions(){return this._clientOptions}get protocol2CodeConverter(){return this._p2c}get code2ProtocolConverter(){return this._c2p}get onTelemetry(){return this._telemetryEmitter.event}get onDidChangeState(){return this._stateChangeEmitter.event}get outputChannel(){return this._outputChannel||(this._outputChannel=qe.window.createOutputChannel(this._clientOptions.outputChannelName?this._clientOptions.outputChannelName:this._name)),this._outputChannel}get traceOutputChannel(){return this._traceOutputChannel?this._traceOutputChannel:this.outputChannel}get diagnostics(){return this._diagnostics}get state(){return this.getPublicState()}get $state(){return this._state}set $state(e){let t=this.getPublicState();this._state=e;let r=this.getPublicState();r!==t&&this._stateChangeEmitter.fire({oldState:t,newState:r})}getPublicState(){switch(this.$state){case pe.Starting:return ia.Starting;case pe.Running:return ia.Running;default:return ia.Stopped}}get initializeResult(){return this._initializeResult}async sendRequest(e,...t){if(this.$state===pe.StartFailed||this.$state===pe.Stopping||this.$state===pe.Stopped)return Promise.reject(new $.ResponseError($.ErrorCodes.ConnectionInactive,"Client is not running"));let r=await this.$start();return this._didChangeTextDocumentFeature.syncKind===$.TextDocumentSyncKind.Full&&await this.sendPendingFullTextDocumentChanges(r),r.sendRequest(e,...t)}onRequest(e,t){let r=typeof e=="string"?e:e.method;this._requestHandlers.set(r,t);let i=this.activeConnection(),o;return i!==void 0?(this._requestDisposables.set(r,i.onRequest(e,t)),o={dispose:()=>{let s=this._requestDisposables.get(r);s!==void 0&&(s.dispose(),this._requestDisposables.delete(r))}}):(this._pendingRequestHandlers.set(r,t),o={dispose:()=>{this._pendingRequestHandlers.delete(r);let s=this._requestDisposables.get(r);s!==void 0&&(s.dispose(),this._requestDisposables.delete(r))}}),{dispose:()=>{this._requestHandlers.delete(r),o.dispose()}}}async sendNotification(e,t){if(this.$state===pe.StartFailed||this.$state===pe.Stopping||this.$state===pe.Stopped)return Promise.reject(new $.ResponseError($.ErrorCodes.ConnectionInactive,"Client is not running"));let r=this._didChangeTextDocumentFeature.syncKind===$.TextDocumentSyncKind.Full,i;r&&typeof e!="string"&&e.method===$.DidOpenTextDocumentNotification.method&&(i=t==null?void 0:t.textDocument.uri,this._pendingOpenNotifications.add(i));let o=await this.$start();return r&&await this.sendPendingFullTextDocumentChanges(o),i!==void 0&&this._pendingOpenNotifications.delete(i),o.sendNotification(e,t)}onNotification(e,t){let r=typeof e=="string"?e:e.method;this._notificationHandlers.set(r,t);let i=this.activeConnection(),o;return i!==void 0?(this._notificationDisposables.set(r,i.onNotification(e,t)),o={dispose:()=>{let s=this._notificationDisposables.get(r);s!==void 0&&(s.dispose(),this._notificationDisposables.delete(r))}}):(this._pendingNotificationHandlers.set(r,t),o={dispose:()=>{this._pendingNotificationHandlers.delete(r);let s=this._notificationDisposables.get(r);s!==void 0&&(s.dispose(),this._notificationDisposables.delete(r))}}),{dispose:()=>{this._notificationHandlers.delete(r),o.dispose()}}}async sendProgress(e,t,r){if(this.$state===pe.StartFailed||this.$state===pe.Stopping||this.$state===pe.Stopped)return Promise.reject(new $.ResponseError($.ErrorCodes.ConnectionInactive,"Client is not running"));try{return(await this.$start()).sendProgress(e,t,r)}catch(i){throw this.error(`Sending progress for token ${t} failed.`,i),i}}onProgress(e,t,r){var c;this._progressHandlers.set(t,{type:e,handler:r});let i=this.activeConnection(),o,s=(c=this._clientOptions.middleware)==null?void 0:c.handleWorkDoneProgress,a=$.WorkDoneProgress.is(e)&&s!==void 0?d=>{s(t,d,()=>r(d))}:r;return i!==void 0?(this._progressDisposables.set(t,i.onProgress(e,t,a)),o={dispose:()=>{let d=this._progressDisposables.get(t);d!==void 0&&(d.dispose(),this._progressDisposables.delete(t))}}):(this._pendingProgressHandlers.set(t,{type:e,handler:r}),o={dispose:()=>{this._pendingProgressHandlers.delete(t);let d=this._progressDisposables.get(t);d!==void 0&&(d.dispose(),this._progressDisposables.delete(t))}}),{dispose:()=>{this._progressHandlers.delete(t),o.dispose()}}}createDefaultErrorHandler(e){if(e!==void 0&&e<0)throw new Error(`Invalid maxRestartCount: ${e}`);return new ql(this,e??4)}async setTrace(e){this._trace=e;let t=this.activeConnection();t!==void 0&&await t.trace(this._trace,this._tracer,{sendNotification:!1,traceFormat:this._traceFormat})}data2String(e){if(e instanceof $.ResponseError){let t=e;return` Message: ${t.message} + Code: ${t.code} ${t.data?` +`+t.data.toString():""}`}return e instanceof Error?Ln.string(e.stack)?e.stack:e.message:Ln.string(e)?e:e.toString()}info(e,t,r=!0){this.outputChannel.appendLine(`[Info - ${new Date().toLocaleTimeString()}] ${e}`),t!=null&&this.outputChannel.appendLine(this.data2String(t)),r&&this._clientOptions.revealOutputChannelOn<=To.Info&&this.showNotificationMessage($.MessageType.Info,e)}warn(e,t,r=!0){this.outputChannel.appendLine(`[Warn - ${new Date().toLocaleTimeString()}] ${e}`),t!=null&&this.outputChannel.appendLine(this.data2String(t)),r&&this._clientOptions.revealOutputChannelOn<=To.Warn&&this.showNotificationMessage($.MessageType.Warning,e)}error(e,t,r=!0){this.outputChannel.appendLine(`[Error - ${new Date().toLocaleTimeString()}] ${e}`),t!=null&&this.outputChannel.appendLine(this.data2String(t)),(r==="force"||r&&this._clientOptions.revealOutputChannelOn<=To.Error)&&this.showNotificationMessage($.MessageType.Error,e)}showNotificationMessage(e,t){t=t??"A request has failed. See the output for more information.",(e===$.MessageType.Error?qe.window.showErrorMessage:e===$.MessageType.Warning?qe.window.showWarningMessage:qe.window.showInformationMessage)(t,"Go to output").then(i=>{i!==void 0&&this.outputChannel.show(!0)})}logTrace(e,t){this.traceOutputChannel.appendLine(`[Trace - ${new Date().toLocaleTimeString()}] ${e}`),t&&this.traceOutputChannel.appendLine(this.data2String(t))}logObjectTrace(e){e.isLSPMessage&&e.type?this.traceOutputChannel.append(`[LSP - ${new Date().toLocaleTimeString()}] `):this.traceOutputChannel.append(`[Trace - ${new Date().toLocaleTimeString()}] `),e&&this.traceOutputChannel.appendLine(`${JSON.stringify(e)}`)}needsStart(){return this.$state===pe.Initial||this.$state===pe.Stopping||this.$state===pe.Stopped}needsStop(){return this.$state===pe.Starting||this.$state===pe.Running}activeConnection(){return this.$state===pe.Running&&this._connection!==void 0?this._connection:void 0}isRunning(){return this.$state===pe.Running}async start(){if(this._disposed==="disposing"||this._disposed==="disposed")throw new Error("Client got disposed and can't be restarted.");if(this.$state===pe.Stopping)throw new Error("Client is currently stopping. Can only restart a full stopped client");if(this._onStart!==void 0)return this._onStart;let[e,t,r]=this.createOnStartPromise();this._onStart=e,this._diagnostics===void 0&&(this._diagnostics=this._clientOptions.diagnosticCollectionName?qe.languages.createDiagnosticCollection(this._clientOptions.diagnosticCollectionName):qe.languages.createDiagnosticCollection());for(let[i,o]of this._notificationHandlers)this._pendingNotificationHandlers.has(i)||this._pendingNotificationHandlers.set(i,o);for(let[i,o]of this._requestHandlers)this._pendingRequestHandlers.has(i)||this._pendingRequestHandlers.set(i,o);for(let[i,o]of this._progressHandlers)this._pendingProgressHandlers.has(i)||this._pendingProgressHandlers.set(i,o);this.$state=pe.Starting;try{let i=await this.createConnection();i.onNotification($.LogMessageNotification.type,o=>{switch(o.type){case $.MessageType.Error:this.error(o.message,void 0,!1);break;case $.MessageType.Warning:this.warn(o.message,void 0,!1);break;case $.MessageType.Info:this.info(o.message,void 0,!1);break;default:this.outputChannel.appendLine(o.message)}}),i.onNotification($.ShowMessageNotification.type,o=>{switch(o.type){case $.MessageType.Error:qe.window.showErrorMessage(o.message);break;case $.MessageType.Warning:qe.window.showWarningMessage(o.message);break;case $.MessageType.Info:qe.window.showInformationMessage(o.message);break;default:qe.window.showInformationMessage(o.message)}}),i.onRequest($.ShowMessageRequest.type,o=>{let s;switch(o.type){case $.MessageType.Error:s=qe.window.showErrorMessage;break;case $.MessageType.Warning:s=qe.window.showWarningMessage;break;case $.MessageType.Info:s=qe.window.showInformationMessage;break;default:s=qe.window.showInformationMessage}let a=o.actions||[];return s(o.message,...a)}),i.onNotification($.TelemetryEventNotification.type,o=>{this._telemetryEmitter.fire(o)}),i.onRequest($.ShowDocumentRequest.type,async o=>{var c;let s=async d=>{let f=this.protocol2CodeConverter.asUri(d.uri);try{if(d.external===!0)return{success:await qe.env.openExternal(f)};{let g={};return d.selection!==void 0&&(g.selection=this.protocol2CodeConverter.asRange(d.selection)),d.takeFocus===void 0||d.takeFocus===!1?g.preserveFocus=!0:d.takeFocus===!0&&(g.preserveFocus=!1),await qe.window.showTextDocument(f,g),{success:!0}}}catch{return{success:!1}}},a=(c=this._clientOptions.middleware.window)==null?void 0:c.showDocument;return a!==void 0?a(o,s):s(o)}),i.listen(),await this.initialize(i),t()}catch(i){this.$state=pe.StartFailed,this.error(`${this._name} client: couldn't create connection to server.`,i,"force"),r(i)}return this._onStart}createOnStartPromise(){let e,t;return[new Promise((i,o)=>{e=i,t=o}),e,t]}async initialize(e){this.refreshTrace(e,!1);let t=this._clientOptions.initializationOptions,[r,i]=this._clientOptions.workspaceFolder!==void 0?[this._clientOptions.workspaceFolder.uri.fsPath,[{uri:this._c2p.asUri(this._clientOptions.workspaceFolder.uri),name:this._clientOptions.workspaceFolder.name}]]:[this._clientGetRootPath(),null],o={processId:null,clientInfo:{name:qe.env.appName,version:qe.version},locale:this.getLocale(),rootPath:r||null,rootUri:r?this._c2p.asUri(qe.Uri.file(r)):null,capabilities:this.computeClientCapabilities(),initializationOptions:Ln.func(t)?t():t,trace:$.Trace.toString(this._trace),workspaceFolders:i};if(this.fillInitializeParams(o),this._clientOptions.progressOnInitialization){let s=Pg.generateUuid(),a=new kR.ProgressPart(e,s);o.workDoneToken=s;try{let c=await this.doInitialize(e,o);return a.done(),c}catch(c){throw a.cancel(),c}}else return this.doInitialize(e,o)}async doInitialize(e,t){try{let r=await e.initialize(t);if(r.capabilities.positionEncoding!==void 0&&r.capabilities.positionEncoding!==$.PositionEncodingKind.UTF16)throw new Error(`Unsupported position encoding (${r.capabilities.positionEncoding}) received from server ${this.name}`);this._initializeResult=r,this.$state=pe.Running;let i;Ln.number(r.capabilities.textDocumentSync)?r.capabilities.textDocumentSync===$.TextDocumentSyncKind.None?i={openClose:!1,change:$.TextDocumentSyncKind.None,save:void 0}:i={openClose:!0,change:r.capabilities.textDocumentSync,save:{includeText:!1}}:r.capabilities.textDocumentSync!==void 0&&r.capabilities.textDocumentSync!==null&&(i=r.capabilities.textDocumentSync),this._capabilities=Object.assign({},r.capabilities,{resolvedTextDocumentSync:i}),e.onNotification($.PublishDiagnosticsNotification.type,o=>this.handleDiagnostics(o)),e.onRequest($.RegistrationRequest.type,o=>this.handleRegistrationRequest(o)),e.onRequest("client/registerFeature",o=>this.handleRegistrationRequest(o)),e.onRequest($.UnregistrationRequest.type,o=>this.handleUnregistrationRequest(o)),e.onRequest("client/unregisterFeature",o=>this.handleUnregistrationRequest(o)),e.onRequest($.ApplyWorkspaceEditRequest.type,o=>this.handleApplyWorkspaceEdit(o));for(let[o,s]of this._pendingNotificationHandlers)this._notificationDisposables.set(o,e.onNotification(o,s));this._pendingNotificationHandlers.clear();for(let[o,s]of this._pendingRequestHandlers)this._requestDisposables.set(o,e.onRequest(o,s));this._pendingRequestHandlers.clear();for(let[o,s]of this._pendingProgressHandlers)this._progressDisposables.set(o,e.onProgress(s.type,o,s.handler));return this._pendingProgressHandlers.clear(),await e.sendNotification($.InitializedNotification.type,{}),this.hookFileEvents(e),this.hookConfigurationChanged(e),this.initializeFeatures(e),r}catch(r){throw this._clientOptions.initializationFailedHandler?this._clientOptions.initializationFailedHandler(r)?this.initialize(e):this.stop():r instanceof $.ResponseError&&r.data&&r.data.retry?qe.window.showErrorMessage(r.message,{title:"Retry",id:"retry"}).then(i=>{i&&i.id==="retry"?this.initialize(e):this.stop()}):(r&&r.message&&qe.window.showErrorMessage(r.message),this.error("Server initialization failed.",r),this.stop()),r}}_clientGetRootPath(){let e=qe.workspace.workspaceFolders;if(!e||e.length===0)return;let t=e[0];if(t.uri.scheme==="file")return t.uri.fsPath}stop(e=2e3){return this.shutdown("stop",e)}dispose(e=2e3){try{return this._disposed="disposing",this.stop(e)}finally{this._disposed="disposed"}}async shutdown(e,t){if(this.$state===pe.Stopped||this.$state===pe.Initial)return;if(this.$state===pe.Stopping){if(this._onStop!==void 0)return this._onStop;throw new Error("Client is stopping but no stop promise available.")}let r=this.activeConnection();if(r===void 0||this.$state!==pe.Running)throw new Error(`Client is not running and can't be stopped. It's current state is: ${this.$state}`);this._initializeResult=void 0,this.$state=pe.Stopping,this.cleanUp(e);let i=new Promise(s=>{(0,$.RAL)().timer.setTimeout(s,t)}),o=(async s=>(await s.shutdown(),await s.exit(),s))(r);return this._onStop=Promise.race([i,o]).then(s=>{if(s!==void 0)s.end(),s.dispose();else throw this.error("Stopping server timed out",void 0,!1),new Error("Stopping the server timed out")},s=>{throw this.error("Stopping server failed",s,!1),s}).finally(()=>{this.$state=pe.Stopped,e==="stop"&&this.cleanUpChannel(),this._onStart=void 0,this._onStop=void 0,this._connection=void 0,this._ignoredRegistrations.clear()})}cleanUp(e){this._fileEvents=[],this._fileEventDelayer.cancel();let t=this._listeners.splice(0,this._listeners.length);for(let r of t)r.dispose();this._syncedDocuments&&this._syncedDocuments.clear();for(let r of Array.from(this._features.entries()).map(i=>i[1]).reverse())r.dispose();e==="stop"&&this._diagnostics!==void 0&&(this._diagnostics.dispose(),this._diagnostics=void 0),this._idleInterval!==void 0&&(this._idleInterval.dispose(),this._idleInterval=void 0)}cleanUpChannel(){this._outputChannel!==void 0&&this._disposeOutputChannel&&(this._outputChannel.dispose(),this._outputChannel=void 0)}notifyFileEvent(e){var o;let t=this;async function r(s){return t._fileEvents.push(s),t._fileEventDelayer.trigger(async()=>{await t.sendNotification($.DidChangeWatchedFilesNotification.type,{changes:t._fileEvents}),t._fileEvents=[]})}let i=(o=this.clientOptions.middleware)==null?void 0:o.workspace;(i!=null&&i.didChangeWatchedFile?i.didChangeWatchedFile(e,r):r(e)).catch(s=>{t.error("Notify file events failed.",s)})}async sendPendingFullTextDocumentChanges(e){return this._pendingChangeSemaphore.lock(async()=>{try{let t=this._didChangeTextDocumentFeature.getPendingDocumentChanges(this._pendingOpenNotifications);if(t.length===0)return;for(let r of t){let i=this.code2ProtocolConverter.asChangeTextDocumentParams(r);await e.sendNotification($.DidChangeTextDocumentNotification.type,i),this._didChangeTextDocumentFeature.notificationSent(r,$.DidChangeTextDocumentNotification.type,i)}}catch(t){throw this.error("Sending pending changes failed",t,!1),t}})}triggerPendingChangeDelivery(){this._pendingChangeDelayer.trigger(async()=>{let e=this.activeConnection();if(e===void 0){this.triggerPendingChangeDelivery();return}await this.sendPendingFullTextDocumentChanges(e)}).catch(e=>this.error("Delivering pending changes failed",e,!1))}handleDiagnostics(e){if(!this._diagnostics)return;let t=e.uri;this._diagnosticQueueState.state==="busy"&&this._diagnosticQueueState.document===t&&this._diagnosticQueueState.tokenSource.cancel(),this._diagnosticQueue.set(e.uri,e.diagnostics),this.triggerDiagnosticQueue()}triggerDiagnosticQueue(){(0,$.RAL)().timer.setImmediate(()=>{this.workDiagnosticQueue()})}workDiagnosticQueue(){if(this._diagnosticQueueState.state==="busy")return;let e=this._diagnosticQueue.entries().next();if(e.done===!0)return;let[t,r]=e.value;this._diagnosticQueue.delete(t);let i=new qe.CancellationTokenSource;this._diagnosticQueueState={state:"busy",document:t,tokenSource:i},this._p2c.asDiagnostics(r,i.token).then(o=>{if(!i.token.isCancellationRequested){let s=this._p2c.asUri(t),a=this.clientOptions.middleware;a.handleDiagnostics?a.handleDiagnostics(s,o,(c,d)=>this.setDiagnostics(c,d)):this.setDiagnostics(s,o)}}).finally(()=>{this._diagnosticQueueState={state:"idle"},this.triggerDiagnosticQueue()})}setDiagnostics(e,t){this._diagnostics&&this._diagnostics.set(e,t)}getLocale(){return qe.env.language}async $start(){if(this.$state===pe.StartFailed)throw new Error("Previous start failed. Can't restart server.");await this.start();let e=this.activeConnection();if(e===void 0)throw new Error("Starting server failed");return e}async createConnection(){let e=(i,o,s)=>{this.handleConnectionError(i,o,s).catch(a=>this.error("Handling connection error failed",a))},t=()=>{this.handleConnectionClosed().catch(i=>this.error("Handling connection close failed",i))},r=await this.createMessageTransports(this._clientOptions.stdioEncoding||"utf8");return this._connection=cS(r.reader,r.writer,e,t,this._clientOptions.connectionOptions),this._connection}async handleConnectionClosed(){if(this.$state===pe.Stopped)return;try{this._connection!==void 0&&this._connection.dispose()}catch{}let e={action:Wr.DoNotRestart};if(this.$state!==pe.Stopping)try{e=await this._clientOptions.errorHandler.closed()}catch{}this._connection=void 0,e.action===Wr.DoNotRestart?(this.error(e.message??"Connection to server got closed. Server will not be restarted.",void 0,e.handled===!0?!1:"force"),this.cleanUp("stop"),this.$state===pe.Starting?this.$state=pe.StartFailed:this.$state=pe.Stopped,this._onStop=Promise.resolve(),this._onStart=void 0):e.action===Wr.Restart&&(this.info(e.message??"Connection to server got closed. Server will restart.",!e.handled),this.cleanUp("restart"),this.$state=pe.Initial,this._onStop=Promise.resolve(),this._onStart=void 0,this.start().catch(t=>this.error("Restarting server failed",t,"force")))}async handleConnectionError(e,t,r){let i=await this._clientOptions.errorHandler.error(e,t,r);i.action===oa.Shutdown&&(this.error(i.message??`Client ${this._name}: connection to server is erroring. Shutting down server.`,void 0,i.handled===!0?!1:"force"),this.stop().catch(o=>{this.error("Stopping server failed",o,!1)}))}hookConfigurationChanged(e){this._listeners.push(qe.workspace.onDidChangeConfiguration(()=>{this.refreshTrace(e,!0)}))}refreshTrace(e,t=!1){let r=qe.workspace.getConfiguration(this._id),i=$.Trace.Off,o=$.TraceFormat.Text;if(r){let s=r.get("trace.server","off");typeof s=="string"?i=$.Trace.fromString(s):(i=$.Trace.fromString(r.get("trace.server.verbosity","off")),o=$.TraceFormat.fromString(r.get("trace.server.format","text")))}this._trace=i,this._traceFormat=o,e.trace(this._trace,this._tracer,{sendNotification:t,traceFormat:this._traceFormat}).catch(s=>{this.error("Updating trace failed with error",s,!1)})}hookFileEvents(e){let t=this._clientOptions.synchronize.fileEvents;if(!t)return;let r;Ln.array(t)?r=t:r=[t],r&&this._dynamicFeatures.get($.DidChangeWatchedFilesNotification.type.method).registerRaw(Pg.generateUuid(),r)}registerFeatures(e){for(let t of e)this.registerFeature(t)}registerFeature(e){if(this._features.push(e),Rn.DynamicFeature.is(e)){let t=e.registrationType;this._dynamicFeatures.set(t.method,e)}}getFeature(e){return this._dynamicFeatures.get(e)}hasDedicatedTextSynchronizationFeature(e){let t=this.getFeature($.NotebookDocumentSyncRegistrationType.method);return t===void 0||!(t instanceof Eg.NotebookDocumentSyncFeature)?!1:t.handles(e)}registerBuiltinFeatures(){let e=new Map;this.registerFeature(new kg.ConfigurationFeature(this)),this.registerFeature(new wi.DidOpenTextDocumentFeature(this,this._syncedDocuments)),this._didChangeTextDocumentFeature=new wi.DidChangeTextDocumentFeature(this,e),this._didChangeTextDocumentFeature.onPendingChangeAdded(()=>{this.triggerPendingChangeDelivery()}),this.registerFeature(this._didChangeTextDocumentFeature),this.registerFeature(new wi.WillSaveFeature(this)),this.registerFeature(new wi.WillSaveWaitUntilFeature(this)),this.registerFeature(new wi.DidSaveTextDocumentFeature(this)),this.registerFeature(new wi.DidCloseTextDocumentFeature(this,this._syncedDocuments,e)),this.registerFeature(new KR.FileSystemWatcherFeature(this,t=>this.notifyFileEvent(t))),this.registerFeature(new IR.CompletionItemFeature(this)),this.registerFeature(new OR.HoverFeature(this)),this.registerFeature(new LR.SignatureHelpFeature(this)),this.registerFeature(new FR.DefinitionFeature(this)),this.registerFeature(new jR.ReferencesFeature(this)),this.registerFeature(new NR.DocumentHighlightFeature(this)),this.registerFeature(new MR.DocumentSymbolFeature(this)),this.registerFeature(new AR.WorkspaceSymbolFeature(this)),this.registerFeature(new $R.CodeActionFeature(this)),this.registerFeature(new UR.CodeLensFeature(this)),this.registerFeature(new kl.DocumentFormattingFeature(this)),this.registerFeature(new kl.DocumentRangeFormattingFeature(this)),this.registerFeature(new kl.DocumentOnTypeFormattingFeature(this)),this.registerFeature(new HR.RenameFeature(this)),this.registerFeature(new WR.DocumentLinkFeature(this)),this.registerFeature(new zR.ExecuteCommandFeature(this)),this.registerFeature(new kg.SyncConfigurationFeature(this)),this.registerFeature(new GR.TypeDefinitionFeature(this)),this.registerFeature(new BR.ImplementationFeature(this)),this.registerFeature(new VR.ColorProviderFeature(this)),this.clientOptions.workspaceFolder===void 0&&this.registerFeature(new XR.WorkspaceFoldersFeature(this)),this.registerFeature(new JR.FoldingRangeFeature(this)),this.registerFeature(new QR.DeclarationFeature(this)),this.registerFeature(new YR.SelectionRangeFeature(this)),this.registerFeature(new ZR.ProgressFeature(this)),this.registerFeature(new eS.CallHierarchyFeature(this)),this.registerFeature(new tS.SemanticTokensFeature(this)),this.registerFeature(new nS.LinkedEditingFeature(this)),this.registerFeature(new bi.DidCreateFilesFeature(this)),this.registerFeature(new bi.DidRenameFilesFeature(this)),this.registerFeature(new bi.DidDeleteFilesFeature(this)),this.registerFeature(new bi.WillCreateFilesFeature(this)),this.registerFeature(new bi.WillRenameFilesFeature(this)),this.registerFeature(new bi.WillDeleteFilesFeature(this)),this.registerFeature(new rS.TypeHierarchyFeature(this)),this.registerFeature(new iS.InlineValueFeature(this)),this.registerFeature(new oS.InlayHintsFeature(this)),this.registerFeature(new qR.DiagnosticFeature(this)),this.registerFeature(new Eg.NotebookDocumentSyncFeature(this))}registerProposedFeatures(){this.registerFeatures(qg.createAll(this))}fillInitializeParams(e){for(let t of this._features)Ln.func(t.fillInitializeParams)&&t.fillInitializeParams(e)}computeClientCapabilities(){let e={};(0,Rn.ensure)(e,"workspace").applyEdit=!0;let t=(0,Rn.ensure)((0,Rn.ensure)(e,"workspace"),"workspaceEdit");t.documentChanges=!0,t.resourceOperations=[$.ResourceOperationKind.Create,$.ResourceOperationKind.Rename,$.ResourceOperationKind.Delete],t.failureHandling=$.FailureHandlingKind.TextOnlyTransactional,t.normalizesLineEndings=!0,t.changeAnnotationSupport={groupsOnLabel:!0};let r=(0,Rn.ensure)((0,Rn.ensure)(e,"textDocument"),"publishDiagnostics");r.relatedInformation=!0,r.versionSupport=!1,r.tagSupport={valueSet:[$.DiagnosticTag.Unnecessary,$.DiagnosticTag.Deprecated]},r.codeDescriptionSupport=!0,r.dataSupport=!0;let i=(0,Rn.ensure)(e,"window"),o=(0,Rn.ensure)(i,"showMessage");o.messageActionItem={additionalPropertiesSupport:!0};let s=(0,Rn.ensure)(i,"showDocument");s.support=!0;let a=(0,Rn.ensure)(e,"general");a.staleRequestSupport={cancel:!0,retryOnContentModified:Array.from(n.RequestsToCancelOnContentModified)},a.regularExpressions={engine:"ECMAScript",version:"ES2020"},a.markdown={parser:"marked",version:"1.1.0"},a.positionEncodings=["utf-16"],this._clientOptions.markdown.supportHtml&&(a.markdown.allowedTags=["ul","li","p","code","blockquote","ol","h1","h2","h3","h4","h5","h6","hr","em","pre","table","thead","tbody","tr","th","td","div","del","a","strong","br","img","span"]);for(let c of this._features)c.fillClientCapabilities(e);return e}initializeFeatures(e){let t=this._clientOptions.documentSelector;for(let r of this._features)Ln.func(r.preInitialize)&&r.preInitialize(this._capabilities,t);for(let r of this._features)r.initialize(this._capabilities,t)}async handleRegistrationRequest(e){if(!this.isRunning()){for(let t of e.registrations)this._ignoredRegistrations.add(t.id);return}for(let t of e.registrations){let r=this._dynamicFeatures.get(t.method);if(r===void 0)return Promise.reject(new Error(`No feature implementation for ${t.method} found. Registration failed.`));let i=t.registerOptions??{};i.documentSelector=i.documentSelector??this._clientOptions.documentSelector;let o={id:t.id,registerOptions:i};try{r.register(o)}catch(s){return Promise.reject(s)}}}async handleUnregistrationRequest(e){for(let t of e.unregisterations){if(this._ignoredRegistrations.has(t.id))continue;let r=this._dynamicFeatures.get(t.method);if(!r)return Promise.reject(new Error(`No feature implementation for ${t.method} found. Unregistration failed.`));r.unregister(t.id)}}async handleApplyWorkspaceEdit(e){let t=e.edit,r=await this.workspaceEditLock.lock(()=>this._p2c.asWorkspaceEdit(t)),i=new Map;qe.workspace.textDocuments.forEach(s=>i.set(s.uri.toString(),s));let o=!1;if(t.documentChanges){for(let s of t.documentChanges)if($.TextDocumentEdit.is(s)&&s.textDocument.version&&s.textDocument.version>=0){let a=this._p2c.asUri(s.textDocument.uri).toString(),c=i.get(a);if(c&&c.version!==s.textDocument.version){o=!0;break}}}return o?Promise.resolve({applied:!1}):Ln.asPromise(qe.workspace.applyEdit(r).then(s=>({applied:s})))}handleFailedRequest(e,t,r,i,o=!0){if(r instanceof $.ResponseError){if(r.code===$.ErrorCodes.PendingResponseRejected||r.code===$.ErrorCodes.ConnectionInactive)return i;if(r.code===$.LSPErrorCodes.RequestCancelled||r.code===$.LSPErrorCodes.ServerCancelled){if(t!==void 0&&t.isCancellationRequested)return i;throw r.data!==void 0?new Rn.LSPCancellationError(r.data):new qe.CancellationError}else if(r.code===$.LSPErrorCodes.ContentModified){if(n.RequestsToCancelOnContentModified.has(e.method)||n.CancellableResolveCalls.has(e.method))throw new qe.CancellationError;return i}}throw this.error(`Request ${e.method} failed.`,r,o),r}};$e.BaseLanguageClient=Ro;Ro.RequestsToCancelOnContentModified=new Set([$.SemanticTokensRequest.method,$.SemanticTokensRangeRequest.method,$.SemanticTokensDeltaRequest.method]);Ro.CancellableResolveCalls=new Set([$.CompletionResolveRequest.method,$.CodeLensResolveRequest.method,$.CodeActionResolveRequest.method,$.InlayHintResolveRequest.method,$.DocumentLinkResolveRequest.method,$.WorkspaceSymbolResolveRequest.method]);var Il=class{error(e){(0,$.RAL)().console.error(e)}warn(e){(0,$.RAL)().console.warn(e)}info(e){(0,$.RAL)().console.info(e)}log(e){(0,$.RAL)().console.log(e)}};function cS(n,e,t,r,i){let o=new Il,s=(0,$.createProtocolConnection)(n,e,o,i);return s.onError(c=>{t(c[0],c[1],c[2])}),s.onClose(r),{listen:()=>s.listen(),sendRequest:s.sendRequest,onRequest:s.onRequest,hasPendingResponse:s.hasPendingResponse,sendNotification:s.sendNotification,onNotification:s.onNotification,onProgress:s.onProgress,sendProgress:s.sendProgress,trace:(c,d,f)=>{let g={sendNotification:!1,traceFormat:$.TraceFormat.Text};return f===void 0?s.trace(c,d,g):(Ln.boolean(f),s.trace(c,d,f))},initialize:c=>s.sendRequest($.InitializeRequest.type,c),shutdown:()=>s.sendRequest($.ShutdownRequest.type,void 0),exit:()=>s.sendNotification($.ExitNotification.type),end:()=>s.end(),dispose:()=>s.dispose()}}var qg;(function(n){function e(t){return[]}n.createAll=e})(qg=$e.ProposedFeatures||($e.ProposedFeatures={}))});var Og=O(sa=>{"use strict";Object.defineProperty(sa,"__esModule",{value:!0});sa.terminate=void 0;var Ig=require("child_process"),uS=require("path"),dS=process.platform==="win32",lS=process.platform==="darwin",fS=process.platform==="linux";function pS(n,e){if(dS)try{let i={stdio:["pipe","pipe","ignore"]};return e&&(i.cwd=e),Ig.execFileSync("taskkill",["/T","/F","/PID",n.pid.toString()],i),!0}catch{return!1}else if(fS||lS)try{var t=(0,uS.join)(__dirname,"terminateProcess.sh"),r=Ig.spawnSync(t,[n.pid.toString()]);return!r.error}catch{return!1}else return n.kill("SIGKILL"),!0}sa.terminate=pS});var Fl=O((lE,Fg)=>{"use strict";Fg.exports=se()});var So=O((fE,Lg)=>{var hS=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...n)=>console.error("SEMVER",...n):()=>{};Lg.exports=hS});var aa=O((pE,Ng)=>{var gS="2.0.0",mS=Number.MAX_SAFE_INTEGER||9007199254740991,vS=16,yS=256-6,CS=["major","premajor","minor","preminor","patch","prepatch","prerelease"];Ng.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:vS,MAX_SAFE_BUILD_LENGTH:yS,MAX_SAFE_INTEGER:mS,RELEASE_TYPES:CS,SEMVER_SPEC_VERSION:gS,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var ca=O((nr,Mg)=>{var{MAX_SAFE_COMPONENT_LENGTH:Ll,MAX_SAFE_BUILD_LENGTH:wS,MAX_LENGTH:bS}=aa(),DS=So();nr=Mg.exports={};var TS=nr.re=[],RS=nr.safeRe=[],G=nr.src=[],X=nr.t={},SS=0,Nl="[a-zA-Z0-9-]",_S=[["\\s",1],["\\d",bS],[Nl,wS]],xS=n=>{for(let[e,t]of _S)n=n.split(`${e}*`).join(`${e}{0,${t}}`).split(`${e}+`).join(`${e}{1,${t}}`);return n},le=(n,e,t)=>{let r=xS(e),i=SS++;DS(n,i,e),X[n]=i,G[i]=e,TS[i]=new RegExp(e,t?"g":void 0),RS[i]=new RegExp(r,t?"g":void 0)};le("NUMERICIDENTIFIER","0|[1-9]\\d*");le("NUMERICIDENTIFIERLOOSE","\\d+");le("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${Nl}*`);le("MAINVERSION",`(${G[X.NUMERICIDENTIFIER]})\\.(${G[X.NUMERICIDENTIFIER]})\\.(${G[X.NUMERICIDENTIFIER]})`);le("MAINVERSIONLOOSE",`(${G[X.NUMERICIDENTIFIERLOOSE]})\\.(${G[X.NUMERICIDENTIFIERLOOSE]})\\.(${G[X.NUMERICIDENTIFIERLOOSE]})`);le("PRERELEASEIDENTIFIER",`(?:${G[X.NUMERICIDENTIFIER]}|${G[X.NONNUMERICIDENTIFIER]})`);le("PRERELEASEIDENTIFIERLOOSE",`(?:${G[X.NUMERICIDENTIFIERLOOSE]}|${G[X.NONNUMERICIDENTIFIER]})`);le("PRERELEASE",`(?:-(${G[X.PRERELEASEIDENTIFIER]}(?:\\.${G[X.PRERELEASEIDENTIFIER]})*))`);le("PRERELEASELOOSE",`(?:-?(${G[X.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${G[X.PRERELEASEIDENTIFIERLOOSE]})*))`);le("BUILDIDENTIFIER",`${Nl}+`);le("BUILD",`(?:\\+(${G[X.BUILDIDENTIFIER]}(?:\\.${G[X.BUILDIDENTIFIER]})*))`);le("FULLPLAIN",`v?${G[X.MAINVERSION]}${G[X.PRERELEASE]}?${G[X.BUILD]}?`);le("FULL",`^${G[X.FULLPLAIN]}$`);le("LOOSEPLAIN",`[v=\\s]*${G[X.MAINVERSIONLOOSE]}${G[X.PRERELEASELOOSE]}?${G[X.BUILD]}?`);le("LOOSE",`^${G[X.LOOSEPLAIN]}$`);le("GTLT","((?:<|>)?=?)");le("XRANGEIDENTIFIERLOOSE",`${G[X.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);le("XRANGEIDENTIFIER",`${G[X.NUMERICIDENTIFIER]}|x|X|\\*`);le("XRANGEPLAIN",`[v=\\s]*(${G[X.XRANGEIDENTIFIER]})(?:\\.(${G[X.XRANGEIDENTIFIER]})(?:\\.(${G[X.XRANGEIDENTIFIER]})(?:${G[X.PRERELEASE]})?${G[X.BUILD]}?)?)?`);le("XRANGEPLAINLOOSE",`[v=\\s]*(${G[X.XRANGEIDENTIFIERLOOSE]})(?:\\.(${G[X.XRANGEIDENTIFIERLOOSE]})(?:\\.(${G[X.XRANGEIDENTIFIERLOOSE]})(?:${G[X.PRERELEASELOOSE]})?${G[X.BUILD]}?)?)?`);le("XRANGE",`^${G[X.GTLT]}\\s*${G[X.XRANGEPLAIN]}$`);le("XRANGELOOSE",`^${G[X.GTLT]}\\s*${G[X.XRANGEPLAINLOOSE]}$`);le("COERCE",`(^|[^\\d])(\\d{1,${Ll}})(?:\\.(\\d{1,${Ll}}))?(?:\\.(\\d{1,${Ll}}))?(?:$|[^\\d])`);le("COERCERTL",G[X.COERCE],!0);le("LONETILDE","(?:~>?)");le("TILDETRIM",`(\\s*)${G[X.LONETILDE]}\\s+`,!0);nr.tildeTrimReplace="$1~";le("TILDE",`^${G[X.LONETILDE]}${G[X.XRANGEPLAIN]}$`);le("TILDELOOSE",`^${G[X.LONETILDE]}${G[X.XRANGEPLAINLOOSE]}$`);le("LONECARET","(?:\\^)");le("CARETTRIM",`(\\s*)${G[X.LONECARET]}\\s+`,!0);nr.caretTrimReplace="$1^";le("CARET",`^${G[X.LONECARET]}${G[X.XRANGEPLAIN]}$`);le("CARETLOOSE",`^${G[X.LONECARET]}${G[X.XRANGEPLAINLOOSE]}$`);le("COMPARATORLOOSE",`^${G[X.GTLT]}\\s*(${G[X.LOOSEPLAIN]})$|^$`);le("COMPARATOR",`^${G[X.GTLT]}\\s*(${G[X.FULLPLAIN]})$|^$`);le("COMPARATORTRIM",`(\\s*)${G[X.GTLT]}\\s*(${G[X.LOOSEPLAIN]}|${G[X.XRANGEPLAIN]})`,!0);nr.comparatorTrimReplace="$1$2$3";le("HYPHENRANGE",`^\\s*(${G[X.XRANGEPLAIN]})\\s+-\\s+(${G[X.XRANGEPLAIN]})\\s*$`);le("HYPHENRANGELOOSE",`^\\s*(${G[X.XRANGEPLAINLOOSE]})\\s+-\\s+(${G[X.XRANGEPLAINLOOSE]})\\s*$`);le("STAR","(<|>)?=?\\s*\\*");le("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");le("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var ua=O((hE,Ag)=>{var PS=Object.freeze({loose:!0}),ES=Object.freeze({}),kS=n=>n?typeof n!="object"?PS:n:ES;Ag.exports=kS});var Hg=O((gE,Ug)=>{var jg=/^[0-9]+$/,$g=(n,e)=>{let t=jg.test(n),r=jg.test(e);return t&&r&&(n=+n,e=+e),n===e?0:t&&!r?-1:r&&!t?1:n$g(e,n);Ug.exports={compareIdentifiers:$g,rcompareIdentifiers:qS}});var _o=O((mE,Vg)=>{var da=So(),{MAX_LENGTH:Wg,MAX_SAFE_INTEGER:la}=aa(),{safeRe:zg,t:Kg}=ca(),IS=ua(),{compareIdentifiers:Di}=Hg(),Ml=class n{constructor(e,t){if(t=IS(t),e instanceof n){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>Wg)throw new TypeError(`version is longer than ${Wg} characters`);da("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let r=e.trim().match(t.loose?zg[Kg.LOOSE]:zg[Kg.FULL]);if(!r)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>la||this.major<0)throw new TypeError("Invalid major version");if(this.minor>la||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>la||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map(i=>{if(/^[0-9]+$/.test(i)){let o=+i;if(o>=0&&o=0;)typeof this.prerelease[o]=="number"&&(this.prerelease[o]++,o=-2);if(o===-1){if(t===this.prerelease.join(".")&&r===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(i)}}if(t){let o=[t,i];r===!1&&(o=[t]),Di(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=o):this.prerelease=o}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};Vg.exports=Ml});var Xg=O((vE,Gg)=>{var Bg=_o(),OS=(n,e,t=!1)=>{if(n instanceof Bg)return n;try{return new Bg(n,e)}catch(r){if(!t)return null;throw r}};Gg.exports=OS});var Qg=O((yE,Jg)=>{"use strict";Jg.exports=function(n){n.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var Zg=O((CE,Yg)=>{"use strict";Yg.exports=xe;xe.Node=zr;xe.create=xe;function xe(n){var e=this;if(e instanceof xe||(e=new xe),e.tail=null,e.head=null,e.length=0,n&&typeof n.forEach=="function")n.forEach(function(i){e.push(i)});else if(arguments.length>0)for(var t=0,r=arguments.length;t1)t=e;else if(this.head)r=this.head.next,t=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var i=0;r!==null;i++)t=n(t,r.value,i),r=r.next;return t};xe.prototype.reduceReverse=function(n,e){var t,r=this.tail;if(arguments.length>1)t=e;else if(this.tail)r=this.tail.prev,t=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var i=this.length-1;r!==null;i--)t=n(t,r.value,i),r=r.prev;return t};xe.prototype.toArray=function(){for(var n=new Array(this.length),e=0,t=this.head;t!==null;e++)n[e]=t.value,t=t.next;return n};xe.prototype.toArrayReverse=function(){for(var n=new Array(this.length),e=0,t=this.tail;t!==null;e++)n[e]=t.value,t=t.prev;return n};xe.prototype.slice=function(n,e){e=e||this.length,e<0&&(e+=this.length),n=n||0,n<0&&(n+=this.length);var t=new xe;if(ethis.length&&(e=this.length);for(var r=0,i=this.head;i!==null&&rthis.length&&(e=this.length);for(var r=this.length,i=this.tail;i!==null&&r>e;r--)i=i.prev;for(;i!==null&&r>n;r--,i=i.prev)t.push(i.value);return t};xe.prototype.splice=function(n,e,...t){n>this.length&&(n=this.length-1),n<0&&(n=this.length+n);for(var r=0,i=this.head;i!==null&&r{"use strict";var MS=Zg(),Kr=Symbol("max"),ir=Symbol("length"),Ti=Symbol("lengthCalculator"),Po=Symbol("allowStale"),Vr=Symbol("maxAge"),rr=Symbol("dispose"),em=Symbol("noDisposeOnSet"),ht=Symbol("lruList"),Sn=Symbol("cache"),nm=Symbol("updateAgeOnGet"),Al=()=>1,$l=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let t=this[Kr]=e.max||1/0,r=e.length||Al;if(this[Ti]=typeof r!="function"?Al:r,this[Po]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[Vr]=e.maxAge||0,this[rr]=e.dispose,this[em]=e.noDisposeOnSet||!1,this[nm]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[Kr]=e||1/0,xo(this)}get max(){return this[Kr]}set allowStale(e){this[Po]=!!e}get allowStale(){return this[Po]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[Vr]=e,xo(this)}get maxAge(){return this[Vr]}set lengthCalculator(e){typeof e!="function"&&(e=Al),e!==this[Ti]&&(this[Ti]=e,this[ir]=0,this[ht].forEach(t=>{t.length=this[Ti](t.value,t.key),this[ir]+=t.length})),xo(this)}get lengthCalculator(){return this[Ti]}get length(){return this[ir]}get itemCount(){return this[ht].length}rforEach(e,t){t=t||this;for(let r=this[ht].tail;r!==null;){let i=r.prev;tm(this,e,r,t),r=i}}forEach(e,t){t=t||this;for(let r=this[ht].head;r!==null;){let i=r.next;tm(this,e,r,t),r=i}}keys(){return this[ht].toArray().map(e=>e.key)}values(){return this[ht].toArray().map(e=>e.value)}reset(){this[rr]&&this[ht]&&this[ht].length&&this[ht].forEach(e=>this[rr](e.key,e.value)),this[Sn]=new Map,this[ht]=new MS,this[ir]=0}dump(){return this[ht].map(e=>fa(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[ht]}set(e,t,r){if(r=r||this[Vr],r&&typeof r!="number")throw new TypeError("maxAge must be a number");let i=r?Date.now():0,o=this[Ti](t,e);if(this[Sn].has(e)){if(o>this[Kr])return Ri(this,this[Sn].get(e)),!1;let c=this[Sn].get(e).value;return this[rr]&&(this[em]||this[rr](e,c.value)),c.now=i,c.maxAge=r,c.value=t,this[ir]+=o-c.length,c.length=o,this.get(e),xo(this),!0}let s=new Ul(e,t,o,i,r);return s.length>this[Kr]?(this[rr]&&this[rr](e,t),!1):(this[ir]+=s.length,this[ht].unshift(s),this[Sn].set(e,this[ht].head),xo(this),!0)}has(e){if(!this[Sn].has(e))return!1;let t=this[Sn].get(e).value;return!fa(this,t)}get(e){return jl(this,e,!0)}peek(e){return jl(this,e,!1)}pop(){let e=this[ht].tail;return e?(Ri(this,e),e.value):null}del(e){Ri(this,this[Sn].get(e))}load(e){this.reset();let t=Date.now();for(let r=e.length-1;r>=0;r--){let i=e[r],o=i.e||0;if(o===0)this.set(i.k,i.v);else{let s=o-t;s>0&&this.set(i.k,i.v,s)}}}prune(){this[Sn].forEach((e,t)=>jl(this,t,!1))}},jl=(n,e,t)=>{let r=n[Sn].get(e);if(r){let i=r.value;if(fa(n,i)){if(Ri(n,r),!n[Po])return}else t&&(n[nm]&&(r.value.now=Date.now()),n[ht].unshiftNode(r));return i.value}},fa=(n,e)=>{if(!e||!e.maxAge&&!n[Vr])return!1;let t=Date.now()-e.now;return e.maxAge?t>e.maxAge:n[Vr]&&t>n[Vr]},xo=n=>{if(n[ir]>n[Kr])for(let e=n[ht].tail;n[ir]>n[Kr]&&e!==null;){let t=e.prev;Ri(n,e),e=t}},Ri=(n,e)=>{if(e){let t=e.value;n[rr]&&n[rr](t.key,t.value),n[ir]-=t.length,n[Sn].delete(t.key),n[ht].removeNode(e)}},Ul=class{constructor(e,t,r,i,o){this.key=e,this.value=t,this.length=r,this.now=i,this.maxAge=o||0}},tm=(n,e,t,r)=>{let i=t.value;fa(n,i)&&(Ri(n,t),n[Po]||(i=void 0)),i&&e.call(r,i.value,i.key,n)};rm.exports=$l});var Br=O((bE,sm)=>{var om=_o(),AS=(n,e,t)=>new om(n,t).compare(new om(e,t));sm.exports=AS});var cm=O((DE,am)=>{var jS=Br(),$S=(n,e,t)=>jS(n,e,t)===0;am.exports=$S});var dm=O((TE,um)=>{var US=Br(),HS=(n,e,t)=>US(n,e,t)!==0;um.exports=HS});var fm=O((RE,lm)=>{var WS=Br(),zS=(n,e,t)=>WS(n,e,t)>0;lm.exports=zS});var hm=O((SE,pm)=>{var KS=Br(),VS=(n,e,t)=>KS(n,e,t)>=0;pm.exports=VS});var mm=O((_E,gm)=>{var BS=Br(),GS=(n,e,t)=>BS(n,e,t)<0;gm.exports=GS});var ym=O((xE,vm)=>{var XS=Br(),JS=(n,e,t)=>XS(n,e,t)<=0;vm.exports=JS});var wm=O((PE,Cm)=>{var QS=cm(),YS=dm(),ZS=fm(),e_=hm(),t_=mm(),n_=ym(),r_=(n,e,t,r)=>{switch(e){case"===":return typeof n=="object"&&(n=n.version),typeof t=="object"&&(t=t.version),n===t;case"!==":return typeof n=="object"&&(n=n.version),typeof t=="object"&&(t=t.version),n!==t;case"":case"=":case"==":return QS(n,t,r);case"!=":return YS(n,t,r);case">":return ZS(n,t,r);case">=":return e_(n,t,r);case"<":return t_(n,t,r);case"<=":return n_(n,t,r);default:throw new TypeError(`Invalid operator: ${e}`)}};Cm.exports=r_});var xm=O((EE,_m)=>{var Eo=Symbol("SemVer ANY"),zl=class n{static get ANY(){return Eo}constructor(e,t){if(t=bm(t),e instanceof n){if(e.loose===!!t.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),Wl("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===Eo?this.value="":this.value=this.operator+this.semver.version,Wl("comp",this)}parse(e){let t=this.options.loose?Dm[Tm.COMPARATORLOOSE]:Dm[Tm.COMPARATOR],r=e.match(t);if(!r)throw new TypeError(`Invalid comparator: ${e}`);this.operator=r[1]!==void 0?r[1]:"",this.operator==="="&&(this.operator=""),r[2]?this.semver=new Rm(r[2],this.options.loose):this.semver=Eo}toString(){return this.value}test(e){if(Wl("Comparator.test",e,this.options.loose),this.semver===Eo||e===Eo)return!0;if(typeof e=="string")try{e=new Rm(e,this.options)}catch{return!1}return Hl(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof n))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new Sm(e.value,t).test(this.value):e.operator===""?e.value===""?!0:new Sm(this.value,t).test(e.semver):(t=bm(t),t.includePrerelease&&(this.value==="<0.0.0-0"||e.value==="<0.0.0-0")||!t.includePrerelease&&(this.value.startsWith("<0.0.0")||e.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&e.operator.startsWith(">")||this.operator.startsWith("<")&&e.operator.startsWith("<")||this.semver.version===e.semver.version&&this.operator.includes("=")&&e.operator.includes("=")||Hl(this.semver,"<",e.semver,t)&&this.operator.startsWith(">")&&e.operator.startsWith("<")||Hl(this.semver,">",e.semver,t)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))}};_m.exports=zl;var bm=ua(),{safeRe:Dm,t:Tm}=ca(),Hl=wm(),Wl=So(),Rm=_o(),Sm=Kl()});var Kl=O((kE,qm)=>{var Vl=class n{constructor(e,t){if(t=o_(t),e instanceof n)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new n(e.raw,t);if(e instanceof Bl)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map(r=>this.parseRange(r.trim())).filter(r=>r.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let r=this.set[0];if(this.set=this.set.filter(i=>!Em(i[0])),this.set.length===0)this.set=[r];else if(this.set.length>1){for(let i of this.set)if(i.length===1&&f_(i[0])){this.set=[i];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){let r=((this.options.includePrerelease&&d_)|(this.options.loose&&l_))+":"+e,i=Pm.get(r);if(i)return i;let o=this.options.loose,s=o?Xt[Mt.HYPHENRANGELOOSE]:Xt[Mt.HYPHENRANGE];e=e.replace(s,D_(this.options.includePrerelease)),Ue("hyphen replace",e),e=e.replace(Xt[Mt.COMPARATORTRIM],a_),Ue("comparator trim",e),e=e.replace(Xt[Mt.TILDETRIM],c_),Ue("tilde trim",e),e=e.replace(Xt[Mt.CARETTRIM],u_),Ue("caret trim",e);let a=e.split(" ").map(g=>p_(g,this.options)).join(" ").split(/\s+/).map(g=>b_(g,this.options));o&&(a=a.filter(g=>(Ue("loose invalid filter",g,this.options),!!g.match(Xt[Mt.COMPARATORLOOSE])))),Ue("range list",a);let c=new Map,d=a.map(g=>new Bl(g,this.options));for(let g of d){if(Em(g))return[g];c.set(g.value,g)}c.size>1&&c.has("")&&c.delete("");let f=[...c.values()];return Pm.set(r,f),f}intersects(e,t){if(!(e instanceof n))throw new TypeError("a Range is required");return this.set.some(r=>km(r,t)&&e.set.some(i=>km(i,t)&&r.every(o=>i.every(s=>o.intersects(s,t)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new s_(e,this.options)}catch{return!1}for(let t=0;tn.value==="<0.0.0-0",f_=n=>n.value==="",km=(n,e)=>{let t=!0,r=n.slice(),i=r.pop();for(;t&&r.length;)t=r.every(o=>i.intersects(o,e)),i=r.pop();return t},p_=(n,e)=>(Ue("comp",n,e),n=m_(n,e),Ue("caret",n),n=h_(n,e),Ue("tildes",n),n=y_(n,e),Ue("xrange",n),n=w_(n,e),Ue("stars",n),n),At=n=>!n||n.toLowerCase()==="x"||n==="*",h_=(n,e)=>n.trim().split(/\s+/).map(t=>g_(t,e)).join(" "),g_=(n,e)=>{let t=e.loose?Xt[Mt.TILDELOOSE]:Xt[Mt.TILDE];return n.replace(t,(r,i,o,s,a)=>{Ue("tilde",n,r,i,o,s,a);let c;return At(i)?c="":At(o)?c=`>=${i}.0.0 <${+i+1}.0.0-0`:At(s)?c=`>=${i}.${o}.0 <${i}.${+o+1}.0-0`:a?(Ue("replaceTilde pr",a),c=`>=${i}.${o}.${s}-${a} <${i}.${+o+1}.0-0`):c=`>=${i}.${o}.${s} <${i}.${+o+1}.0-0`,Ue("tilde return",c),c})},m_=(n,e)=>n.trim().split(/\s+/).map(t=>v_(t,e)).join(" "),v_=(n,e)=>{Ue("caret",n,e);let t=e.loose?Xt[Mt.CARETLOOSE]:Xt[Mt.CARET],r=e.includePrerelease?"-0":"";return n.replace(t,(i,o,s,a,c)=>{Ue("caret",n,i,o,s,a,c);let d;return At(o)?d="":At(s)?d=`>=${o}.0.0${r} <${+o+1}.0.0-0`:At(a)?o==="0"?d=`>=${o}.${s}.0${r} <${o}.${+s+1}.0-0`:d=`>=${o}.${s}.0${r} <${+o+1}.0.0-0`:c?(Ue("replaceCaret pr",c),o==="0"?s==="0"?d=`>=${o}.${s}.${a}-${c} <${o}.${s}.${+a+1}-0`:d=`>=${o}.${s}.${a}-${c} <${o}.${+s+1}.0-0`:d=`>=${o}.${s}.${a}-${c} <${+o+1}.0.0-0`):(Ue("no pr"),o==="0"?s==="0"?d=`>=${o}.${s}.${a}${r} <${o}.${s}.${+a+1}-0`:d=`>=${o}.${s}.${a}${r} <${o}.${+s+1}.0-0`:d=`>=${o}.${s}.${a} <${+o+1}.0.0-0`),Ue("caret return",d),d})},y_=(n,e)=>(Ue("replaceXRanges",n,e),n.split(/\s+/).map(t=>C_(t,e)).join(" ")),C_=(n,e)=>{n=n.trim();let t=e.loose?Xt[Mt.XRANGELOOSE]:Xt[Mt.XRANGE];return n.replace(t,(r,i,o,s,a,c)=>{Ue("xRange",n,r,i,o,s,a,c);let d=At(o),f=d||At(s),g=f||At(a),m=g;return i==="="&&m&&(i=""),c=e.includePrerelease?"-0":"",d?i===">"||i==="<"?r="<0.0.0-0":r="*":i&&m?(f&&(s=0),a=0,i===">"?(i=">=",f?(o=+o+1,s=0,a=0):(s=+s+1,a=0)):i==="<="&&(i="<",f?o=+o+1:s=+s+1),i==="<"&&(c="-0"),r=`${i+o}.${s}.${a}${c}`):f?r=`>=${o}.0.0${c} <${+o+1}.0.0-0`:g&&(r=`>=${o}.${s}.0${c} <${o}.${+s+1}.0-0`),Ue("xRange return",r),r})},w_=(n,e)=>(Ue("replaceStars",n,e),n.trim().replace(Xt[Mt.STAR],"")),b_=(n,e)=>(Ue("replaceGTE0",n,e),n.trim().replace(Xt[e.includePrerelease?Mt.GTE0PRE:Mt.GTE0],"")),D_=n=>(e,t,r,i,o,s,a,c,d,f,g,m,C)=>(At(r)?t="":At(i)?t=`>=${r}.0.0${n?"-0":""}`:At(o)?t=`>=${r}.${i}.0${n?"-0":""}`:s?t=`>=${t}`:t=`>=${t}${n?"-0":""}`,At(d)?c="":At(f)?c=`<${+d+1}.0.0-0`:At(g)?c=`<${d}.${+f+1}.0-0`:m?c=`<=${d}.${f}.${g}-${m}`:n?c=`<${d}.${f}.${+g+1}-0`:c=`<=${c}`,`${t} ${c}`.trim()),T_=(n,e,t)=>{for(let r=0;r0){let i=n[r].semver;if(i.major===e.major&&i.minor===e.minor&&i.patch===e.patch)return!0}return!1}return!0}});var Om=O((qE,Im)=>{var R_=Kl(),S_=(n,e,t)=>{try{e=new R_(e,t)}catch{return!1}return e.test(n)};Im.exports=S_});var Lm=O(rn=>{"use strict";var __=rn&&rn.__createBinding||(Object.create?function(n,e,t,r){r===void 0&&(r=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,r,i)}:function(n,e,t,r){r===void 0&&(r=t),n[r]=e[t]}),Gl=rn&&rn.__exportStar||function(n,e){for(var t in n)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__(e,n,t)};Object.defineProperty(rn,"__esModule",{value:!0});rn.DiagnosticPullMode=rn.vsdiag=void 0;Gl(se(),rn);Gl(Te(),rn);var Fm=nd();Object.defineProperty(rn,"vsdiag",{enumerable:!0,get:function(){return Fm.vsdiag}});Object.defineProperty(rn,"DiagnosticPullMode",{enumerable:!0,get:function(){return Fm.DiagnosticPullMode}});Gl(Ol(),rn)});var pa=O(jt=>{"use strict";var x_=jt&&jt.__createBinding||(Object.create?function(n,e,t,r){r===void 0&&(r=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,r,i)}:function(n,e,t,r){r===void 0&&(r=t),n[r]=e[t]}),Am=jt&&jt.__exportStar||function(n,e){for(var t in n)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&x_(e,n,t)};Object.defineProperty(jt,"__esModule",{value:!0});jt.SettingMonitor=jt.LanguageClient=jt.TransportKind=void 0;var or=require("child_process"),Xl=require("fs"),Jl=require("path"),Tr=require("vscode"),ze=Kt(),Nm=Ol(),P_=Og(),Je=Fl(),E_=Xg(),k_=Om();Am(Fl(),jt);Am(Lm(),jt);var Mm="^1.67.0",et;(function(n){n[n.stdio=0]="stdio",n[n.ipc=1]="ipc",n[n.pipe=2]="pipe",n[n.socket=3]="socket"})(et=jt.TransportKind||(jt.TransportKind={}));var Dr;(function(n){function e(t){let r=t;return r&&r.kind===et.socket&&ze.number(r.port)}n.isSocket=e})(Dr||(Dr={}));var Ql;(function(n){function e(t){return ze.string(t.command)}n.is=e})(Ql||(Ql={}));var Yl;(function(n){function e(t){return ze.string(t.module)}n.is=e})(Yl||(Yl={}));var Zl;(function(n){function e(t){let r=t;return r&&r.writer!==void 0&&r.reader!==void 0}n.is=e})(Zl||(Zl={}));var ef;(function(n){function e(t){let r=t;return r&&r.process!==void 0&&typeof r.detached=="boolean"}n.is=e})(ef||(ef={}));var tf=class extends Nm.BaseLanguageClient{constructor(e,t,r,i,o){let s,a,c,d,f;ze.string(t)?(s=e,a=t,c=r,d=i,f=!!o):(s=e.toLowerCase(),a=e,c=t,d=r,f=i),f===void 0&&(f=!1),super(s,a,d),this._serverOptions=c,this._forceDebug=f,this._isInDebugMode=f;try{this.checkVersion()}catch(g){throw ze.string(g.message)&&this.outputChannel.appendLine(g.message),g}}checkVersion(){let e=E_(Tr.version);if(!e)throw new Error(`No valid VS Code version detected. Version string is: ${Tr.version}`);if(e.prerelease&&e.prerelease.length>0&&(e.prerelease=[]),!k_(e,Mm))throw new Error(`The language client requires VS Code version ${Mm} but received version ${Tr.version}`)}get isInDebugMode(){return this._isInDebugMode}async restart(){await this.stop(),this.isInDebugMode?(await new Promise(e=>setTimeout(e,1e3)),await this.start()):await this.start()}stop(e=2e3){return super.stop(e).finally(()=>{if(this._serverProcess){let t=this._serverProcess;this._serverProcess=void 0,(this._isDetached===void 0||!this._isDetached)&&this.checkProcessDied(t),this._isDetached=void 0}})}checkProcessDied(e){!e||e.pid===void 0||setTimeout(()=>{try{e.pid!==void 0&&(process.kill(e.pid,0),(0,P_.terminate)(e))}catch{}},2e3)}handleConnectionClosed(){return this._serverProcess=void 0,super.handleConnectionClosed()}fillInitializeParams(e){super.fillInitializeParams(e),e.processId===null&&(e.processId=process.pid)}createMessageTransports(e){function t(f,g){if(!f&&!g)return;let m=Object.create(null);return Object.keys(process.env).forEach(C=>m[C]=process.env[C]),g&&(m.ELECTRON_RUN_AS_NODE="1",m.ELECTRON_NO_ASAR="1"),f&&Object.keys(f).forEach(C=>m[C]=f[C]),m}let r=["--debug=","--debug-brk=","--inspect=","--inspect-brk="],i=["--debug","--debug-brk","--inspect","--inspect-brk"];function o(){let f=process.execArgv;return f?f.some(g=>r.some(m=>g.startsWith(m))||i.some(m=>g===m)):!1}function s(f){if(f.stdin===null||f.stdout===null||f.stderr===null)throw new Error("Process created without stdio streams")}let a=this._serverOptions;if(ze.func(a))return a().then(f=>{if(Nm.MessageTransports.is(f))return this._isDetached=!!f.detached,f;if(Zl.is(f))return this._isDetached=!!f.detached,{reader:new Je.StreamMessageReader(f.reader),writer:new Je.StreamMessageWriter(f.writer)};{let g;return ef.is(f)?(g=f.process,this._isDetached=f.detached):(g=f,this._isDetached=!1),g.stderr.on("data",m=>this.outputChannel.append(ze.string(m)?m:m.toString(e))),{reader:new Je.StreamMessageReader(g.stdout),writer:new Je.StreamMessageWriter(g.stdin)}}});let c,d=a;return d.run||d.debug?this._forceDebug||o()?(c=d.debug,this._isInDebugMode=!0):(c=d.run,this._isInDebugMode=!1):c=a,this._getServerWorkingDir(c.options).then(f=>{if(Yl.is(c)&&c.module){let g=c,m=g.transport||et.stdio;if(g.runtime){let C=[],w=g.options??Object.create(null);w.execArgv&&w.execArgv.forEach(F=>C.push(F)),C.push(g.module),g.args&&g.args.forEach(F=>C.push(F));let T=Object.create(null);T.cwd=f,T.env=t(w.env,!1);let S=this._getRuntimePath(g.runtime,f),q;if(m===et.ipc?(T.stdio=[null,null,null,"ipc"],C.push("--node-ipc")):m===et.stdio?C.push("--stdio"):m===et.pipe?(q=(0,Je.generateRandomPipeName)(),C.push(`--pipe=${q}`)):Dr.isSocket(m)&&C.push(`--socket=${m.port}`),C.push(`--clientProcessId=${process.pid.toString()}`),m===et.ipc||m===et.stdio){let F=or.spawn(S,C,T);return!F||!F.pid?Si(F,`Launching server using runtime ${S} failed.`):(this._serverProcess=F,F.stderr.on("data",I=>this.outputChannel.append(ze.string(I)?I:I.toString(e))),m===et.ipc?(F.stdout.on("data",I=>this.outputChannel.append(ze.string(I)?I:I.toString(e))),Promise.resolve({reader:new Je.IPCMessageReader(F),writer:new Je.IPCMessageWriter(F)})):Promise.resolve({reader:new Je.StreamMessageReader(F.stdout),writer:new Je.StreamMessageWriter(F.stdin)}))}else{if(m===et.pipe)return(0,Je.createClientPipeTransport)(q).then(F=>{let I=or.spawn(S,C,T);return!I||!I.pid?Si(I,`Launching server using runtime ${S} failed.`):(this._serverProcess=I,I.stderr.on("data",A=>this.outputChannel.append(ze.string(A)?A:A.toString(e))),I.stdout.on("data",A=>this.outputChannel.append(ze.string(A)?A:A.toString(e))),F.onConnected().then(A=>({reader:A[0],writer:A[1]})))});if(Dr.isSocket(m))return(0,Je.createClientSocketTransport)(m.port).then(F=>{let I=or.spawn(S,C,T);return!I||!I.pid?Si(I,`Launching server using runtime ${S} failed.`):(this._serverProcess=I,I.stderr.on("data",A=>this.outputChannel.append(ze.string(A)?A:A.toString(e))),I.stdout.on("data",A=>this.outputChannel.append(ze.string(A)?A:A.toString(e))),F.onConnected().then(A=>({reader:A[0],writer:A[1]})))})}}else{let C;return new Promise((w,T)=>{let S=(g.args&&g.args.slice())??[];m===et.ipc?S.push("--node-ipc"):m===et.stdio?S.push("--stdio"):m===et.pipe?(C=(0,Je.generateRandomPipeName)(),S.push(`--pipe=${C}`)):Dr.isSocket(m)&&S.push(`--socket=${m.port}`),S.push(`--clientProcessId=${process.pid.toString()}`);let q=g.options??Object.create(null);if(q.env=t(q.env,!0),q.execArgv=q.execArgv||[],q.cwd=f,q.silent=!0,m===et.ipc||m===et.stdio){let F=or.fork(g.module,S||[],q);s(F),this._serverProcess=F,F.stderr.on("data",I=>this.outputChannel.append(ze.string(I)?I:I.toString(e))),m===et.ipc?(F.stdout.on("data",I=>this.outputChannel.append(ze.string(I)?I:I.toString(e))),w({reader:new Je.IPCMessageReader(this._serverProcess),writer:new Je.IPCMessageWriter(this._serverProcess)})):w({reader:new Je.StreamMessageReader(F.stdout),writer:new Je.StreamMessageWriter(F.stdin)})}else m===et.pipe?(0,Je.createClientPipeTransport)(C).then(F=>{let I=or.fork(g.module,S||[],q);s(I),this._serverProcess=I,I.stderr.on("data",A=>this.outputChannel.append(ze.string(A)?A:A.toString(e))),I.stdout.on("data",A=>this.outputChannel.append(ze.string(A)?A:A.toString(e))),F.onConnected().then(A=>{w({reader:A[0],writer:A[1]})},T)},T):Dr.isSocket(m)&&(0,Je.createClientSocketTransport)(m.port).then(F=>{let I=or.fork(g.module,S||[],q);s(I),this._serverProcess=I,I.stderr.on("data",A=>this.outputChannel.append(ze.string(A)?A:A.toString(e))),I.stdout.on("data",A=>this.outputChannel.append(ze.string(A)?A:A.toString(e))),F.onConnected().then(A=>{w({reader:A[0],writer:A[1]})},T)},T)})}}else if(Ql.is(c)&&c.command){let g=c,m=c.args!==void 0?c.args.slice(0):[],C,w=c.transport;if(w===et.stdio)m.push("--stdio");else if(w===et.pipe)C=(0,Je.generateRandomPipeName)(),m.push(`--pipe=${C}`);else if(Dr.isSocket(w))m.push(`--socket=${w.port}`);else if(w===et.ipc)throw new Error("Transport kind ipc is not support for command executable");let T=Object.assign({},g.options);if(T.cwd=T.cwd||f,w===void 0||w===et.stdio){let S=or.spawn(g.command,m,T);return!S||!S.pid?Si(S,`Launching server using command ${g.command} failed.`):(S.stderr.on("data",q=>this.outputChannel.append(ze.string(q)?q:q.toString(e))),this._serverProcess=S,this._isDetached=!!T.detached,Promise.resolve({reader:new Je.StreamMessageReader(S.stdout),writer:new Je.StreamMessageWriter(S.stdin)}))}else{if(w===et.pipe)return(0,Je.createClientPipeTransport)(C).then(S=>{let q=or.spawn(g.command,m,T);return!q||!q.pid?Si(q,`Launching server using command ${g.command} failed.`):(this._serverProcess=q,this._isDetached=!!T.detached,q.stderr.on("data",F=>this.outputChannel.append(ze.string(F)?F:F.toString(e))),q.stdout.on("data",F=>this.outputChannel.append(ze.string(F)?F:F.toString(e))),S.onConnected().then(F=>({reader:F[0],writer:F[1]})))});if(Dr.isSocket(w))return(0,Je.createClientSocketTransport)(w.port).then(S=>{let q=or.spawn(g.command,m,T);return!q||!q.pid?Si(q,`Launching server using command ${g.command} failed.`):(this._serverProcess=q,this._isDetached=!!T.detached,q.stderr.on("data",F=>this.outputChannel.append(ze.string(F)?F:F.toString(e))),q.stdout.on("data",F=>this.outputChannel.append(ze.string(F)?F:F.toString(e))),S.onConnected().then(F=>({reader:F[0],writer:F[1]})))})}}return Promise.reject(new Error("Unsupported server configuration "+JSON.stringify(a,null,4)))})}_getRuntimePath(e,t){if(Jl.isAbsolute(e))return e;let r=this._mainGetRootPath();if(r!==void 0){let i=Jl.join(r,e);if(Xl.existsSync(i))return i}if(t!==void 0){let i=Jl.join(t,e);if(Xl.existsSync(i))return i}return e}_mainGetRootPath(){let e=Tr.workspace.workspaceFolders;if(!e||e.length===0)return;let t=e[0];if(t.uri.scheme==="file")return t.uri.fsPath}_getServerWorkingDir(e){let t=e&&e.cwd;return t||(t=this.clientOptions.workspaceFolder?this.clientOptions.workspaceFolder.uri.fsPath:this._mainGetRootPath()),t?new Promise(r=>{Xl.lstat(t,(i,o)=>{r(!i&&o.isDirectory()?t:void 0)})}):Promise.resolve(void 0)}};jt.LanguageClient=tf;var nf=class{constructor(e,t){this._client=e,this._setting=t,this._listeners=[]}start(){return Tr.workspace.onDidChangeConfiguration(this.onDidChangeConfiguration,this,this._listeners),this.onDidChangeConfiguration(),new Tr.Disposable(()=>{this._client.needsStop()&&this._client.stop()})}onDidChangeConfiguration(){let e=this._setting.indexOf("."),t=e>=0?this._setting.substr(0,e):this._setting,r=e>=0?this._setting.substr(e+1):void 0,i=r?Tr.workspace.getConfiguration(t).get(r,!1):Tr.workspace.getConfiguration(t);i&&this._client.needsStart()?this._client.start().catch(o=>this._client.error("Start failed after configuration change",o,"force")):!i&&this._client.needsStop()&&this._client.stop().catch(o=>this._client.error("Stop failed after configuration change",o,"force"))}};jt.SettingMonitor=nf;function Si(n,e){return n===null?Promise.reject(e):new Promise((t,r)=>{n.on("error",i=>{r(`${e} ${i}`)}),setImmediate(()=>r(e))})}});var ko=O((FE,jm)=>{"use strict";jm.exports=pa()});var bf=O((ik,Uv)=>{"use strict";var $v=function(){function n(e,t){for(var r=0;r\"]/gm,function(r){return r=="&"?"&":r=='"'?""":r=="<"?"<":r==">"?">":""})}},{key:"linkify",value:function(t){return t.replace(/(https?:\/\/[^\s]+)/gm,function(r){return''+r+""})}},{key:"ansiToHtml",value:function(t,r){return this.process(t,r,!0)}},{key:"ansiToJson",value:function(t,r){return r=r||{},r.json=!0,r.clearLine=!1,this.process(t,r,!0)}},{key:"ansiToText",value:function(t){return this.process(t,{},!1)}},{key:"process",value:function(t,r,i){var o=this,s=this,a=t.split(/\033\[/),c=a.shift();r==null&&(r={}),r.clearLine=/\r/.test(t);var d=a.map(function(g){return o.processChunk(g,r,i)});if(r&&r.json){var f=s.processChunkJson("");return f.content=c,f.clearLine=r.clearLine,d.unshift(f),r.remove_empty&&(d=d.filter(function(g){return!g.isEmpty()})),d}else d.unshift(c);return d.join("")}},{key:"processChunkJson",value:function(t,r,i){r=typeof r>"u"?{}:r;var o=r.use_classes=typeof r.use_classes<"u"&&r.use_classes,s=r.key=o?"class":"color",a={content:t,fg:null,bg:null,fg_truecolor:null,bg_truecolor:null,isInverted:!1,clearLine:r.clearLine,decoration:null,decorations:[],was_processed:!1,isEmpty:function(){return!a.content}},c=t.match(/^([!\x3c-\x3f]*)([\d;]*)([\x20-\x2c]*[\x40-\x7e])([\s\S]*)/m);if(!c)return a;var d=a.content=c[4],f=c[2].split(";");if(c[1]!==""||c[3]!=="m"||!i)return a;for(var g=this;f.length>0;){var m=f.shift(),C=parseInt(m);if(isNaN(C)||C===0)g.fg=g.bg=null,g.decorations=[];else if(C===1)g.decorations.push("bold");else if(C===2)g.decorations.push("dim");else if(C===3)g.decorations.push("italic");else if(C===4)g.decorations.push("underline");else if(C===5)g.decorations.push("blink");else if(C===7)g.decorations.push("reverse");else if(C===8)g.decorations.push("hidden");else if(C===9)g.decorations.push("strikethrough");else if(C===21)g.removeDecoration("bold");else if(C===22)g.removeDecoration("bold"),g.removeDecoration("dim");else if(C===23)g.removeDecoration("italic");else if(C===24)g.removeDecoration("underline");else if(C===25)g.removeDecoration("blink");else if(C===27)g.removeDecoration("reverse");else if(C===28)g.removeDecoration("hidden");else if(C===29)g.removeDecoration("strikethrough");else if(C===39)g.fg=null;else if(C===49)g.bg=null;else if(C>=30&&C<38)g.fg=Rr[0][C%10][s];else if(C>=90&&C<98)g.fg=Rr[1][C%10][s];else if(C>=40&&C<48)g.bg=Rr[0][C%10][s];else if(C>=100&&C<108)g.bg=Rr[1][C%10][s];else if(C===38||C===48){var w=C===38;if(f.length>=1){var T=f.shift();if(T==="5"&&f.length>=1){var S=parseInt(f.shift());if(S>=0&&S<=255)if(!o)this.PALETTE_COLORS||g.setupPalette(),w?g.fg=this.PALETTE_COLORS[S]:g.bg=this.PALETTE_COLORS[S];else{var q=S>=16?"ansi-palette-"+S:Rr[S>7?1:0][S%8].class;w?g.fg=q:g.bg=q}}else if(T==="2"&&f.length>=3){var F=parseInt(f.shift()),I=parseInt(f.shift()),A=parseInt(f.shift());if(F>=0&&F<=255&&I>=0&&I<=255&&A>=0&&A<=255){var W=F+", "+I+", "+A;o?w?(g.fg="ansi-truecolor",g.fg_truecolor=W):(g.bg="ansi-truecolor",g.bg_truecolor=W):w?g.fg=W:g.bg=W}}}}}if(g.fg===null&&g.bg===null&&g.decorations.length===0)return a;var ne=[],K=[],Q={};return a.fg=g.fg,a.bg=g.bg,a.fg_truecolor=g.fg_truecolor,a.bg_truecolor=g.bg_truecolor,a.decorations=g.decorations,a.decoration=g.decorations.slice(-1).pop()||null,a.was_processed=!0,a}},{key:"processChunk",value:function(t,r,i){var o=this;r=r||{};var s=this.processChunkJson(t,r,i),a=r.use_classes;if(s.decorations=s.decorations.filter(function(C){if(C==="reverse"){s.fg||(s.fg=Rr[0][7][a?"class":"color"]),s.bg||(s.bg=Rr[0][0][a?"class":"color"]);var w=s.fg;s.fg=s.bg,s.bg=w;var T=s.fg_truecolor;return s.fg_truecolor=s.bg_truecolor,s.bg_truecolor=T,s.isInverted=!0,!1}return!0}),r.json)return s;if(s.isEmpty())return"";if(!s.was_processed)return s.content;var c=[],d=[],f=[],g={},m=function(w){var T=[],S=void 0;for(S in w)w.hasOwnProperty(S)&&T.push("data-"+S+'="'+o.escapeForHtml(w[S])+'"');return T.length>0?" "+T.join(" "):""};return s.isInverted&&(g["ansi-is-inverted"]="true"),s.fg&&(a?(c.push(s.fg+"-fg"),s.fg_truecolor!==null&&(g["ansi-truecolor-fg"]=s.fg_truecolor,s.fg_truecolor=null)):c.push("color:rgb("+s.fg+")")),s.bg&&(a?(c.push(s.bg+"-bg"),s.bg_truecolor!==null&&(g["ansi-truecolor-bg"]=s.bg_truecolor,s.bg_truecolor=null)):c.push("background-color:rgb("+s.bg+")")),s.decorations.forEach(function(C){if(a){d.push("ansi-"+C);return}C==="bold"?d.push("font-weight:bold"):C==="dim"?d.push("opacity:0.5"):C==="italic"?d.push("font-style:italic"):C==="hidden"?d.push("visibility:hidden"):C==="strikethrough"?f.push("line-through"):f.push(C)}),f.length&&d.push("text-decoration:"+f.join(" ")),a?'"+s.content+"":'"+s.content+""}},{key:"removeDecoration",value:function(t){var r=this.decorations.indexOf(t);r>=0&&this.decorations.splice(r,1)}}]),n}();Uv.exports=Z_});var vx={};uC(vx,{activate:()=>px,deactivate:()=>fx});module.exports=dC(vx);var gt=fe(require("vscode")),Zy=fe(ko());var k=fe(require("vscode")),sr=fe(pa());var re=fe(pa()),$m=new re.RequestType(re.HoverRequest.method),Um=new re.RequestType("rust-analyzer/analyzerStatus"),Hm=new re.NotificationType0("rust-analyzer/cancelFlycheck"),Wm=new re.NotificationType0("rust-analyzer/clearFlycheck"),zm=new re.RequestType("rust-analyzer/expandMacro"),Km=new re.RequestType0("rust-analyzer/memoryUsage"),Vm=new re.NotificationType0("rust-analyzer/openServerLogs"),Bm=new re.RequestType("rust-analyzer/relatedTests"),Gm=new re.RequestType0("rust-analyzer/reloadWorkspace"),Xm=new re.RequestType0("rust-analyzer/rebuildProcMacros"),Jm=new re.NotificationType("rust-analyzer/runFlycheck"),Qm=new re.RequestType0("rust-analyzer/shuffleCrateGraph"),Ym=new re.RequestType("rust-analyzer/syntaxTree"),Zm=new re.RequestType("rust-analyzer/viewCrateGraph"),ev=new re.RequestType("rust-analyzer/viewFileText"),tv=new re.RequestType("rust-analyzer/viewHir"),nv=new re.RequestType("rust-analyzer/viewMir"),rv=new re.RequestType("rust-analyzer/interpretFunction"),iv=new re.RequestType("rust-analyzer/viewItemTree"),ov=new re.RequestType("experimental/discoverTest"),sv=new re.NotificationType("experimental/discoveredTests"),av=new re.RequestType("experimental/runTest"),rf=new re.NotificationType0("experimental/abortRunTest"),cv=new re.NotificationType0("experimental/endRunTest"),uv=new re.NotificationType("experimental/appendOutputToRunTest"),dv=new re.NotificationType("experimental/changeTestState"),lv=new re.RequestType("rust-analyzer/fetchDependencyList"),LE=new re.RequestType("rust-analyzer/fetchDependencyGraph"),fv=new re.RequestType("experimental/joinLines"),pv=new re.RequestType("experimental/matchingBrace"),hv=new re.RequestType("experimental/moveItem"),gv=new re.RequestType("experimental/onEnter"),mv=new re.RequestType("experimental/openCargoToml"),of=new re.RequestType("experimental/externalDocs"),vv=new re.RequestType("experimental/parentModule"),yv=new re.RequestType("experimental/runnables"),Cv=new re.NotificationType("experimental/serverStatus"),sf=new re.RequestType("experimental/ssr"),wv=new re.RequestType("rust-analyzer/viewRecursiveMemoryLayout"),bv=new re.NotificationType("rust-analyzer/unindexedProject");var Li=fe(require("path"));var $t=fe(require("vscode"));var Gr=fe(require("vscode")),Dv=require("assert"),ga=require("child_process"),Tv=require("util");function qo(n,e){try{(0,Dv.strict)(n,e)}catch(t){throw ge.error("Assertion failed:",e),t}}var ge=new class{constructor(){this.enabled=!0;this.output=Gr.window.createOutputChannel("Rust Analyzer Client")}setEnabled(n){ge.enabled=n}debug(...n){ge.enabled&&ge.write("DEBUG",...n)}info(...n){ge.write("INFO",...n)}warn(...n){debugger;ge.write("WARN",...n)}error(...n){debugger;ge.write("ERROR",...n),ge.output.show(!0)}write(n,...e){let t=e.map(ge.stringify).join(" "),r=new Date().toLocaleString();ge.output.appendLine(`${n} [${r}]: ${t}`)}stringify(n){return typeof n=="string"?n:(0,Tv.inspect)(n,{colors:!1,depth:6})}};function Io(n){return new Promise(e=>setTimeout(e,n))}function Nn(n){return n.languageId==="rust"&&n.uri.scheme==="file"}function Rv(n){return n.uri.scheme==="file"&&n.fileName.endsWith("Cargo.toml")}function Mn(n){return Nn(n.document)}function Sv(n){let e=Gr.workspace.workspaceFolders;if(!e)return!1;for(let t of e)if(n.uri.fsPath.startsWith(t.uri.fsPath))return!0;return!1}function _v(n,e){ge.debug("Checking availability of a binary at",n);let t=(0,ga.spawnSync)(n,["--version"],{encoding:"utf8",env:{...process.env,...e}});return(t.error?ge.warn:ge.info)(n,"--version:",t),t.status===0}function af(n,e){return Gr.commands.executeCommand("setContext",n,e)}function xv(n){let e=new Map;return async function(t){let r=e.get(t);if(r)return r;let i=await n.call(this,t);return e.set(t,i),i}}function cf(n,e){return ge.info(`running command: ${n}`),new Promise((t,r)=>{(0,ga.exec)(n,e,(i,o,s)=>{if(i){ge.error(i),r(i);return}if(s){r(new Error(s));return}t(o.trimEnd())})})}var ha=class{constructor(e){this.name=e}get channel(){return this._channel||(this._channel=Gr.window.createOutputChannel(this.name)),this._channel}append(e){this.channel.append(e)}appendLine(e){this.channel.appendLine(e)}replace(e){this.channel.replace(e)}clear(){this._channel&&this._channel.clear()}show(e,t){this.channel.show(e,t)}hide(){this._channel&&this._channel.hide()}dispose(){this._channel&&this._channel.dispose()}};function q_(n){return n!==void 0}function uf(n,e){if(q_(n))return n;throw new TypeError(e)}function Ce(n){return uf(n,"unwrapping `undefined`")}async function df(n,e){if(e.length===1){let[t,r]=Ce(e[0]),i=await Pv(t);i&&(n.set(t,Ev(i,r)),await $t.workspace.applyEdit(n));return}for(let[t,r]of e){let i=await Pv(t);i&&await i.edit(o=>{for(let s of r)qo(!(s instanceof $t.SnippetTextEdit),`bad ws edit: snippet received with multiple edits: ${JSON.stringify(n)}`),o.replace(s.range,s.newText)})}}async function Pv(n){var e;return((e=$t.window.activeTextEditor)==null?void 0:e.document.uri)!==n&&await $t.window.showTextDocument(n,{}),$t.window.visibleTextEditors.find(t=>t.document.uri.toString()===n.toString())}async function lf(n,e){let t=new $t.WorkspaceEdit,r=O_(e);t.set(n.document.uri,Ev(n,r)),await $t.workspace.applyEdit(t)}function I_(n){return n.match(/\$\d+|\{\d+:[^}]*\}/)!=null}function O_(n){return n.map(e=>I_(e.newText)?new $t.SnippetTextEdit(e.range,new $t.SnippetString(e.newText)):e)}function Ev(n,e){return e.map(t=>{if(t instanceof $t.SnippetTextEdit){let r=t,i=r.snippet.value.indexOf(` +`);if(i!==-1){let o=n.document.lineAt(r.range.start.line),s=F_(o.text,0,o.firstNonWhitespaceCharacterIndex),[a,c]=L_(r.snippet.value,i+1),d=c.split(` +`).map(f=>f.replace(s,"")).join(` +`);r.snippet.value=a+d}return r}else return t})}function F_(n,e=0,t=n.length){for(let r=e;ri.filter(o=>o.isTest)),r}async getArtifacts(e){var r;let t=[];try{await this.runCargo(e.cargoArgs,i=>{if(i.reason==="compiler-artifact"&&i.executable){let o=i.target.crate_types.includes("bin"),s=i.target.kind.includes("custom-build");(o&&!s||i.profile.test)&&t.push({fileName:i.executable,name:i.target.name,workspace:xi.dirname(i.manifest_path),kind:i.target.kind[0],isTest:i.profile.test})}else i.reason==="compiler-message"&&this.output.append(i.message.rendered)},i=>this.output.append(i))}catch(i){throw this.output.show(!0),new Error(`Cargo invocation has failed: ${i}`)}return((r=e.filter)==null?void 0:r.call(e,t))??t}async executableInfoFromArgs(e){let t=await this.getArtifacts(n.artifactSpec(e));if(t.length===0)throw new Error("No compilation artifacts");if(t.length>1)throw new Error("Multiple compilation artifacts are not supported.");let r=Ce(t[0]);return{executable:r.fileName,workspace:r.workspace}}async runCargo(e,t,r){let i=await ff();return await new Promise((o,s)=>{let a=qv.spawn(i,e,{stdio:["ignore","pipe","pipe"],cwd:this.rootFolder,env:this.env});a.on("error",d=>s(new Error(`could not launch cargo: ${d}`))),a.stderr.on("data",d=>r(d.toString())),Iv.createInterface({input:a.stdout}).on("line",d=>{let f=JSON.parse(d);t(f)}),a.on("exit",(d,f)=>{d===0?o(d):s(new Error(`exit code: ${d}.`))})})}};async function Ov(n){let e=await pf("rustc");return await cf(`${e} --print sysroot`,{cwd:n})}async function Fv(n){let e=await pf("rustc"),t=await cf(`${e} -V -v`,{cwd:n}),i=kv(/commit-hash:\s(.*)$/m.exec(t));return Ce(i[1])}function ff(){return pf("cargo")}var pf=xv(async n=>{{let t=process.env[n.toUpperCase()];if(t)return t}if(await A_(n))return n;let e=j_();if(e){let t=An.Uri.joinPath(e,"bin",n);if(await Lv(t))return t.fsPath}return n});async function A_(n){let t=(process.env.PATH??"").split(xi.delimiter).flatMap(r=>{let i=xi.join(r,n);return va.type()==="Windows_NT"?[i,`${i}.exe`]:[i]});for await(let r of t.map($_))if(r)return!0;return!1}function j_(){let n=process.env.CARGO_HOME;if(n)return An.Uri.file(n);try{return An.Uri.joinPath(An.Uri.file(va.homedir()),".cargo")}catch(e){ge.error("Failed to read the fs info",e)}return null}async function $_(n){return Lv(An.Uri.file(n))}async function Lv(n){try{return((await An.workspace.fs.stat(n)).type&An.FileType.File)!==0}catch{return!1}}var Pi="cargo",H_="rust",hf=class{constructor(e){this.config=e}async provideTasks(){let e=[{command:"build",group:dt.TaskGroup.Build},{command:"check",group:dt.TaskGroup.Build},{command:"clippy",group:dt.TaskGroup.Build},{command:"test",group:dt.TaskGroup.Test},{command:"clean",group:dt.TaskGroup.Clean},{command:"run",group:void 0}],t=[];for(let r of dt.workspace.workspaceFolders||[])for(let i of e){let o=await ya(r,{type:Pi,command:i.command},`cargo ${i.command}`,this.config.problemMatcher,this.config.cargoRunner);o.group=i.group,t.push(o)}return t}async resolveTask(e){let t=e.definition;if(t.type===Pi)return await ya(e.scope,t,e.name,this.config.problemMatcher,this.config.cargoRunner)}};async function ya(n,e,t,r,i,o=!1){let s=await W_(e,i,o);return new dt.Task(e,n??dt.TaskScope.Workspace,t,H_,s,r)}async function W_(n,e,t){var c;if(e){let d=`${e}.buildShellExecution`;try{let f={kind:Pi,args:n.args,cwd:n.cwd,env:n.env},g=await dt.commands.executeCommand(d,f);if(g){if(g instanceof dt.ShellExecution)return g;throw ge.debug("Invalid cargo ShellExecution",g),"Invalid cargo ShellExecution."}}catch(f){if(t)throw`Cargo runner '${e}' failed! ${f}`}}let r=await ff(),i=((c=n.overrideCargo)==null?void 0:c.split(" "))??[r],o=[n.command].concat(n.args??[]),s=[...i,...o],a=Ce(s[0]);return new dt.ProcessExecution(a,s.slice(1),{cwd:n.cwd,env:n.env})}function Nv(n){let e=new hf(n);return dt.tasks.registerTaskProvider(Pi,e)}var Mv=fe(require("os")),on=fe(require("vscode")),Ei=fe(require("path"));var ki=on.window.createOutputChannel("Debug");async function Ca(n,e){var a;let t=(a=n.activeRustEditor)==null?void 0:a.document.uri;if(!t)return;let r=await Av(n,e);if(!r)return;let i=on.workspace.getConfiguration("launch",t),o=i.get("configurations")||[],s=o.findIndex(c=>c.name===r.name);if(s!==-1){if(await on.window.showErrorMessage(`Launch configuration '${r.name}' already exists!`,"Cancel","Update")==="Cancel")return;o[s]=r}else o.push(r);await i.update("configurations",o)}async function Oo(n,e){let t,r="",o=on.workspace.getConfiguration("launch").get("configurations")||[],s=o.findIndex(a=>a.name===e.label);return s!==-1?(t=o[s],r=" (from launch.json)",ki.clear()):t=await Av(n,e),t?(ki.appendLine(`Launching debug configuration${r}:`),ki.appendLine(JSON.stringify(t,null,2)),on.debug.startDebugging(void 0,t)):!1}function gf(n){return`extension.open?${encodeURIComponent(`"${n}"`)}`}async function Av(n,e){if(!n.activeRustEditor)return;let r={"vadimcn.vscode-lldb":B_,"ms-vscode.cpptools":V_,"webfreak.debug":G_},i=n.config.debug,o=null;if(i.engine==="auto"){for(var s in r)if(o=on.extensions.getExtension(s),o)break}else i.engine&&(o=on.extensions.getExtension(i.engine));if(!o){let K=gf("ms-vscode.cpptools"),Q=gf("vadimcn.vscode-lldb"),ie=gf("webfreak.debug");await on.window.showErrorMessage(`Install [CodeLLDB](command:${Q} "Open CodeLLDB"), [C/C++](command:${K} "Open C/C++") or [Native Debug](command:${ie} "Open Native Debug") for debugging.`);return}ki.clear(),n.config.debug.openDebugPane&&ki.show(!0);let a=on.workspace.workspaceFolders,c=a.length>1,d=a[0],f=!c||!e.args.workspaceRoot?d:a.find(K=>{var Q;return(Q=e.args.workspaceRoot)==null?void 0:Q.includes(K.uri.fsPath)})||d,g=Ce(f),m=Ei.normalize(g.uri.fsPath),C=c?`:${g.name}`:"";function w(K){return Ei.normalize(K).replace(m,"${workspaceFolder"+C+"}")}let T=mf(e,n.config.runnablesExtraEnv),{executable:S,workspace:q}=await K_(e,T),F=i.sourceFileMap;if(F==="auto"){let[K,Q]=await Promise.all([Fv(m),Ov(m)]),ie=Ei.normalize(Q+"/lib/rustlib/src/rust");F={},F[`/rustc/${K}/`]=ie}let A=Ce(r[o.id])(e,w(S),q,T,F);if(A.type in i.engineSettings){let K=i.engineSettings[A.type];for(var W in K)A[W]=K[W]}A.name==="run binary"&&(A.name=`run ${Ei.basename(S)}`);let ne=A.cwd;return ne&&(A.cwd=w(ne)),A}async function K_(n,e){return await new ma(n.args.workspaceRoot||".",ki,e).executableInfoFromArgs(n.args.cargoArgs)}function V_(n,e,t,r,i){return{type:Mv.platform()==="win32"?"cppvsdbg":"cppdbg",request:"launch",name:n.label,program:e,args:n.args.executableArgs,cwd:t||n.args.workspaceRoot,sourceFileMap:i,env:r,osx:{MIMode:"lldb"}}}function B_(n,e,t,r,i){return{type:"lldb",request:"launch",name:n.label,program:e,args:n.args.executableArgs,cwd:t||n.args.workspaceRoot,sourceMap:i,sourceLanguages:["rust"],env:r}}function G_(n,e,t,r,i){return{type:"gdb",request:"launch",name:n.label,target:e,arguments:X_(n.args.executableArgs),cwd:t||n.args.workspaceRoot,env:r,valuesFormatting:"prettyPrinters"}}function X_(n){return n.map(function(e){return/["\s]/.test(e)&&!/'/.test(e)?"'"+e.replace(/(['\\])/g,"\\$1")+"'":/["'\s]/.test(e)?'"'+e.replace(/(["\\$`!])/g,"\\$1")+'"':e.replace(/([A-Za-z]:)?([#!"$&'()*,:;<=>?@[\\\]^`{|}])/g,"$1\\$2")}).join(" ")}var jv=[{iconPath:new Xr.ThemeIcon("save"),tooltip:"Save as a launch.json configuration."}];async function Fo(n,e,t=!1,r=!0){let i=n.activeRustEditor;if(!i)return;let o=Xr.window.createQuickPick();o.title="Select Runnable",r&&(o.buttons=jv),o.items=[{label:"Looking for runnables..."}],o.activeItems=[],o.show();let s=await J_(n.client,i,e,t);if(s.length===0){await Xr.window.showErrorMessage("There's no debug target!"),o.dispose();return}return o.items=[],await Q_(o,s,n,r)}var vf=class{constructor(e){this.runnable=e;this.label=e.label}};function mf(n,e){let t={RUST_BACKTRACE:"short"};n.args.expectTest&&(t.UPDATE_EXPECT="1"),Object.assign(t,process.env);let r=process.platform,i=o=>o.platform?(Array.isArray(o.platform)?o.platform:[o.platform]).indexOf(r)>=0:!0;if(e)if(Array.isArray(e))for(let o of e)(!o.mask||new RegExp(o.mask).test(n.label))&&i(o)&&Object.assign(t,o.env);else Object.assign(t,e);return t}async function yf(n,e){if(n.kind!=="cargo")throw`Unexpected runnable kind: ${n.kind}`;let t=Cf(n),r={type:Pi,command:Ce(t[0]),args:t.slice(1),cwd:n.args.workspaceRoot||".",env:mf(n,e.runnablesExtraEnv),overrideCargo:n.args.overrideCargo},i=Xr.workspace.workspaceFolders[0],o=await ya(i,r,n.label,e.problemMatcher,e.cargoRunner,!0);return o.presentationOptions.clear=!0,o.presentationOptions.focus=!1,o}function Cf(n){let e=[...n.args.cargoArgs];return n.args.cargoExtraArgs&&e.push(...n.args.cargoExtraArgs),n.args.executableArgs.length>0&&e.push("--",...n.args.executableArgs),e}async function J_(n,e,t,r=!1){let i={uri:e.document.uri.toString()},o=await n.sendRequest(yv,{textDocument:i,position:n.code2ProtocolConverter.asPosition(e.selection.active)}),s=[];t&&s.push(t);for(let a of o)t&&JSON.stringify(t.runnable)===JSON.stringify(a)||r&&(a.label.startsWith("doctest")||a.label.startsWith("cargo"))||s.push(new vf(a));return s}async function Q_(n,e,t,r){return new Promise(i=>{let o=[],s=a=>{i(a),o.forEach(c=>c.dispose())};o.push(n.onDidHide(()=>s()),n.onDidAccept(()=>s(n.selectedItems[0])),n.onDidTriggerButton(async a=>{let c=Ce(n.activeItems[0]).runnable;await Ca(t,c),s()}),n.onDidChangeActive(a=>{r&&a.length>0&&(Ce(a[0]).label.startsWith("cargo")?n.buttons=[]:n.buttons.length===0&&(n.buttons=jv))}),n),n.items=e})}var it=fe(require("vscode"));var wa=class{constructor(e){this.astDecorationType=it.window.createTextEditorDecorationType({borderColor:new it.ThemeColor("rust_analyzer.syntaxTreeBorder"),borderStyle:"solid",borderWidth:"2px"});this.rust2Ast=new wf(()=>{let e=this.findAstTextEditor();if(!this.rustEditor||!e)return;let t=[];for(let r=0;r=0))continue;let s=this.parseRustTextRange(this.rustEditor.document,i.text);s&&t.push([s,this.findAstNodeRange(i)])}return t});e.pushExtCleanup(it.languages.registerHoverProvider({scheme:"rust-analyzer"},this)),e.pushExtCleanup(it.languages.registerDefinitionProvider({language:"rust"},this)),it.workspace.onDidCloseTextDocument(this.onDidCloseTextDocument,this,e.subscriptions),it.workspace.onDidChangeTextDocument(this.onDidChangeTextDocument,this,e.subscriptions),it.window.onDidChangeVisibleTextEditors(this.onDidChangeVisibleTextEditors,this,e.subscriptions)}dispose(){this.setRustEditor(void 0)}onDidChangeTextDocument(e){this.rustEditor&&e.document.uri.toString()===this.rustEditor.document.uri.toString()&&this.rust2Ast.reset()}onDidCloseTextDocument(e){this.rustEditor&&e.uri.toString()===this.rustEditor.document.uri.toString()&&this.setRustEditor(void 0)}onDidChangeVisibleTextEditors(e){if(!this.findAstTextEditor()){this.setRustEditor(void 0);return}this.setRustEditor(e.find(Mn))}findAstTextEditor(){return it.window.visibleTextEditors.find(e=>e.document.uri.scheme==="rust-analyzer")}setRustEditor(e){this.rustEditor&&this.rustEditor!==e&&(this.rustEditor.setDecorations(this.astDecorationType,[]),this.rust2Ast.reset()),this.rustEditor=e}provideDefinition(e,t){var a;if(!this.rustEditor||e.uri.toString()!==this.rustEditor.document.uri.toString())return;let r=this.findAstTextEditor();if(!r)return;let i=(a=this.rust2Ast.get())==null?void 0:a.find(([c,d])=>c.contains(t));if(!i)return;let[o,s]=i;return r.revealRange(s),r.selection=new it.Selection(s.start,s.end),[{targetRange:s,targetUri:r.document.uri,originSelectionRange:o,targetSelectionRange:s}]}provideHover(e,t){if(!this.rustEditor)return;let r=e.lineAt(t.line),i=this.parseRustTextRange(this.rustEditor.document,r.text);if(!i)return;this.rustEditor.setDecorations(this.astDecorationType,[i]),this.rustEditor.revealRange(i);let o=this.rustEditor.document.getText(i),s=this.findAstNodeRange(r);return new it.Hover(["```rust\n"+o+"\n```"],s)}findAstNodeRange(e){let t=e.range.start,r=t.translate(void 0,e.firstNonWhitespaceCharacterIndex),i=t.translate(void 0,e.text.trimEnd().length);return new it.Range(r,i)}parseRustTextRange(e,t){let r=/(\d+)\.\.(\d+)/.exec(t);if(!r)return;let[i,o]=r.slice(1).map(c=>this.positionAt(e,+c)),s=Ce(i),a=Ce(o);return new it.Range(s,a)}positionAt(e,t){if(e.eol===it.EndOfLine.LF)return e.positionAt(t);let r=0,i=0,o=this.cache;for((o==null?void 0:o.doc)===e&&o.offset<=t&&({line:r,offset:i}=o);;){let s=e.lineAt(r).text.length+1;if(i+s>t)return this.cache={doc:e,offset:i,line:r},e.positionAt(t+r);i+=s,r+=1}}},wf=class{constructor(e){this.compute=e}get(){return this.val??(this.val=this.compute())}reset(){this.val=void 0}};var Bv=fe(bf()),Sr=fe(ko()),Ut=fe(require("vscode"));var Mo=fe(Kt());var Lo=fe(bf()),Ta=fe(require("vscode")),Ii=require("vscode");var Oi="rust-analyzer-diagnostics-view",ba=class{constructor(e){this.ctx=e;this._onDidChange=new Ta.EventEmitter}get onDidChange(){return this._onDidChange.event}triggerUpdate(e){e.scheme===Oi&&this._onDidChange.fire(e)}dispose(){this._onDidChange.dispose()}async provideTextDocumentContent(e){let t=Hv(this.ctx,e);return Lo.ansiToText(t)}};function Hv(n,e){var o,s,a;let t=(s=(o=n.client)==null?void 0:o.diagnostics)==null?void 0:s.get(Ta.Uri.parse(e.fragment,!0));if(!t)return"Unable to find original rustc diagnostic";let r=t[parseInt(e.query)];if(!r)return"Unable to find original rustc diagnostic";let i=(a=r.data)==null?void 0:a.rendered;return i||"Unable to find original rustc diagnostic"}var qi=class qi{constructor(e){this.ctx=e;this._decorationTypes=new Map}dispose(){for(let e of this._decorationTypes.values())e.dispose();this._decorationTypes.clear()}async provideDecorations(e){if(e.document.uri.scheme!==Oi)return;let t=await this._getDecorations(e.document.uri)||[];for(let[r,i]of t)e.setDecorations(r,i)}_getDecorations(e){let r=Hv(this.ctx,e).split(` +`),i=new Map;for(let o of this._decorationTypes.values())i.set(o,[]);for(let[o,s]of r.entries()){let c=Lo.ansiToJson(s,{use_classes:!0}),d=0;for(let f of c){let{content:g,...m}=f,C=new Ii.Range(o,d-0,o,d+g.length-0);d+=g.length;let w=this._getDecorationType(m);i.has(w)||i.set(w,[]),i.get(w).push(C)}}return[...i]}_getDecorationType(e){let t=this._decorationTypes.get(e);if(t)return t;let r=e.decorations.find(s=>s==="bold"),i=e.decorations.find(s=>s==="italic"),o=e.decorations.find(s=>s==="underline");return t=Ii.window.createTextEditorDecorationType({backgroundColor:qi._convertColor(e.bg,e.bg_truecolor),color:qi._convertColor(e.fg,e.fg_truecolor),fontWeight:r,fontStyle:i,textDecoration:o}),this._decorationTypes.set(e,t),t}static _convertColor(e,t){if(!e)return;if(e==="ansi-truecolor")return t?`rgb(${t})`:void 0;let r=e.match(/ansi-palette-(.+)/);if(r){let o=r[1],s=Lo.ansiToJson(`\x1B[38;5;${o}m`),c=Ce(s[1]).fg;if(c)return`rgb(${c})`}let i=qi._anserToThemeColor[e];if(i)return new Ii.ThemeColor("terminal."+i)}};qi._anserToThemeColor={"ansi-black":"ansiBlack","ansi-white":"ansiWhite","ansi-red":"ansiRed","ansi-green":"ansiGreen","ansi-yellow":"ansiYellow","ansi-blue":"ansiBlue","ansi-magenta":"ansiMagenta","ansi-cyan":"ansiCyan","ansi-bright-black":"ansiBrightBlack","ansi-bright-white":"ansiBrightWhite","ansi-bright-red":"ansiBrightRed","ansi-bright-green":"ansiBrightGreen","ansi-bright-yellow":"ansiBrightYellow","ansi-bright-blue":"ansiBrightBlue","ansi-bright-magenta":"ansiBrightMagenta","ansi-bright-cyan":"ansiBrightCyan"};var Da=qi;var Df=require("vscode");var No=fe(Kt()),zv=fe(require("os")),Sa=fe(require("path")),He=fe(require("vscode"));var Ra=class{constructor(e){this.extensionId="rust-lang.rust-analyzer";this.rootSection="rust-analyzer";this.requiresServerReloadOpts=["cargo","procMacro","serverPath","server","files"].map(e=>`${this.rootSection}.${e}`);this.requiresWindowReloadOpts=["testExplorer"].map(e=>`${this.rootSection}.${e}`);this.package=He.extensions.getExtension(this.extensionId).packageJSON;this.globalStorageUri=e.globalStorageUri,this.discoveredWorkspaces=[],He.workspace.onDidChangeConfiguration(this.onDidChangeConfiguration,this,e.subscriptions),this.refreshLogging(),this.configureLanguage()}dispose(){var e;(e=this.configureLang)==null||e.dispose()}refreshLogging(){ge.setEnabled(this.traceExtension??!1),ge.info("Extension version:",this.package.version);let e=Object.entries(this.cfg).filter(([t,r])=>!(r instanceof Function));ge.info("Using configuration",Object.fromEntries(e))}async onDidChangeConfiguration(e){this.refreshLogging(),this.configureLanguage();let t=this.requiresWindowReloadOpts.find(s=>e.affectsConfiguration(s));if(t){let s=`Changing "${t}" requires a window reload`;await He.window.showInformationMessage(s,"Reload now")&&await He.commands.executeCommand("workbench.action.reloadWindow")}let r=this.requiresServerReloadOpts.find(s=>e.affectsConfiguration(s));if(!r)return;if(this.restartServerOnConfigChange){await He.commands.executeCommand("rust-analyzer.restartServer");return}let i=`Changing "${r}" requires a server restart`;if(await He.window.showInformationMessage(i,"Restart now")){let s="rust-analyzer.restartServer";await He.commands.executeCommand(s)}}configureLanguage(){this.configureLang&&(this.configureLang.dispose(),this.configureLang=void 0);let e=[{beforeText:/^\s+$/,action:{indentAction:He.IndentAction.None}},{beforeText:/^\s+\..*;/,action:{indentAction:He.IndentAction.Outdent}},{beforeText:/^\s+;/,previousLineText:/^\s+\..*/,action:{indentAction:He.IndentAction.Outdent}}];if(this.typingContinueCommentsOnNewline){let t=He.IndentAction.None;e=[...e,{beforeText:/^\s*\/{3}.*$/,action:{indentAction:t,appendText:"/// "}},{beforeText:/^\s*\/{2}\!.*$/,action:{indentAction:t,appendText:"//! "}},{beforeText:/^\s*\/\*(\*|\!)(?!\/)([^\*]|\*(?!\/))*$/,afterText:/^\s*\*\/$/,action:{indentAction:He.IndentAction.IndentOutdent,appendText:" * "}},{beforeText:/^\s*\/\*(\*|\!)(?!\/)([^\*]|\*(?!\/))*$/,action:{indentAction:t,appendText:" * "}},{beforeText:/^(\ \ )*\ \*(\ ([^\*]|\*(?!\/))*)?$/,action:{indentAction:t,appendText:"* "}},{beforeText:/^(\ \ )*\ \*\/\s*$/,action:{indentAction:t,removeText:1}}]}this.configureLang=He.languages.setLanguageConfiguration("rust",{onEnterRules:e})}get cfg(){return He.workspace.getConfiguration(this.rootSection)}get(e){return Jr(this.cfg.get(e))}get serverPath(){return this.get("server.path")??this.get("serverPath")}get serverExtraEnv(){let e=this.get("server.extraEnv")??{};return ex(Object.fromEntries(Object.entries(e).map(([t,r])=>[t,typeof r!="string"?r.toString():r])))}get checkOnSave(){return this.get("checkOnSave")??!1}async toggleCheckOnSave(){let e=this.cfg.inspect("checkOnSave")??{key:"checkOnSave"},t,r,i;e.workspaceFolderValue!==void 0||e.workspaceFolderLanguageValue!==void 0?(r=He.ConfigurationTarget.WorkspaceFolder,t=e.workspaceFolderLanguageValue,i=e.workspaceFolderValue||e.workspaceFolderLanguageValue):e.workspaceValue!==void 0||e.workspaceLanguageValue!==void 0?(r=He.ConfigurationTarget.Workspace,t=e.workspaceLanguageValue,i=e.workspaceValue||e.workspaceLanguageValue):e.globalValue!==void 0||e.globalLanguageValue!==void 0?(r=He.ConfigurationTarget.Global,t=e.globalLanguageValue,i=e.globalValue||e.globalLanguageValue):(e.defaultValue!==void 0||e.defaultLanguageValue!==void 0)&&(t=e.defaultLanguageValue,i=e.defaultValue||e.defaultLanguageValue),await this.cfg.update("checkOnSave",!i,r||null,t)}get traceExtension(){return this.get("trace.extension")}get discoverProjectRunner(){return this.get("discoverProjectRunner")}get problemMatcher(){return this.get("runnables.problemMatcher")||[]}get cargoRunner(){return this.get("cargoRunner")}get testExplorer(){return this.get("testExplorer")}get runnablesExtraEnv(){let e=this.get("runnables.extraEnv")??this.get("runnableEnv");if(!e)return e;let t=r=>{for(let i in r)typeof r[i]!="string"&&(r[i]=String(r[i]))};return e instanceof Array?e.forEach(r=>t(r.env)):t(e),e}get restartServerOnConfigChange(){return this.get("restartServerOnConfigChange")}get typingContinueCommentsOnNewline(){return this.get("typing.continueCommentsOnNewline")}get debug(){let e=this.get("debug.sourceFileMap");if(e!=="auto"){let{["/rustc/"]:t,...r}=this.get("debug.sourceFileMap")??{};e=r}return{engine:this.get("debug.engine"),engineSettings:this.get("debug.engineSettings")??{},openDebugPane:this.get("debug.openDebugPane"),sourceFileMap:e}}get hoverActions(){return{enable:this.get("hover.actions.enable"),implementations:this.get("hover.actions.implementations.enable"),references:this.get("hover.actions.references.enable"),run:this.get("hover.actions.run.enable"),debug:this.get("hover.actions.debug.enable"),gotoTypeDef:this.get("hover.actions.gotoTypeDef.enable")}}get previewRustcOutput(){return this.get("diagnostics.previewRustcOutput")}get useRustcErrorCode(){return this.get("diagnostics.useRustcErrorCode")}get showDependenciesExplorer(){return this.get("showDependenciesExplorer")}get statusBarClickAction(){return this.get("statusBar.clickAction")}};function Jr(n,e){if(No.string(n))return nx(n);if(n&&No.array(n))return n.map(t=>Jr(t));if(n&&typeof n=="object"){let t={};for(let r in n){let i=n[r];t[r]=Jr(i),e&&e(r,t)}return t}return n}function ex(n){let e=new Set,t=new Set(Object.keys(n).map(c=>`env:${c}`)),r=Object.fromEntries(Object.entries(n).map(([c,d])=>{var C;let f=new Set,g=new RegExp(/\${(?.+?)}/g),m;for(;m=g.exec(d);){let w=Ce((C=m.groups)==null?void 0:C.depName);f.add(w),t.has(w)||e.add(w)}return[`env:${c}`,{deps:[...f],value:d}]})),i=new Set;for(let c of e){let d=/(?.*?):(?.+)/.exec(c);if(d){let{prefix:f,body:g}=d.groups;if(f==="env"){let m=Ce(g);r[c]={value:process.env[m]??"",deps:[]},i.add(c)}else r[c]={value:"${"+c+"}",deps:[]},i.add(c)}else r[c]={value:Kv(c)||"${"+c+"}",deps:[]}}let o=new Set(Object.keys(r)),s;do{s=o.size;for(let c of o){let d=Ce(r[c]);d.deps.every(f=>i.has(f))&&(d.value=d.value.replace(/\${(?.+?)}/g,(f,g)=>Ce(r[g]).value),i.add(c),o.delete(c))}}while(o.size>0&&o.sizeNo.string(t)&&Kv(t)||e)}function Kv(n){let e=()=>{let i=(He.workspace.workspaceFolders??[])[0];return i===void 0?"":i.uri.fsPath},t={workspaceFolder:e,workspaceFolderBasename:()=>Sa.basename(e()),cwd:()=>process.cwd(),userHome:()=>zv.homedir(),execPath:()=>process.env.VSCODE_EXEC_PATH??process.execPath,pathSeparator:()=>Sa.sep};return n in t?uf(t[n],`${n} should not be undefined here`)():null}var Gv=require("crypto"),xa=require("path");var Fi=fe(ko()),Vv=fe(require("vscode")),_a=class extends Fi.LanguageClient{handleFailedRequest(e,t,r,i,o){return!Vv.workspace.getConfiguration("rust-analyzer").get("showRequestFailedErrorNotification")&&r instanceof Fi.ResponseError&&r.code===Fi.ErrorCodes.InternalError&&(o=!1),super.handleFailedRequest(e,t,r,i,o)}};var Ao=new Map;setInterval(function(){let e=[...Ao.keys()],t=e.slice(0,e.length-10);for(let r of t)Ao.delete(r)},10*60*1e3);function rx(n){let e=(0,Gv.randomUUID)();return Ao.set(e,n),`[${n.title}](command:rust-analyzer.linkToCommand?${encodeURIComponent(JSON.stringify([e]))} '${n.tooltip}')`}function ix(n){let e=n.map(r=>(r.title?r.title+" ":"")+r.commands.map(rx).join(" | ")).join("___"),t=new Ut.MarkdownString(e);return t.isTrusted=!0,t}async function Xv(n,e,t,r,i,o){let s={documentSelector:[{scheme:"file",language:"rust"}],initializationOptions:t,diagnosticCollectionName:"rustc",traceOutputChannel:n,outputChannel:e,middleware:{workspace:{async didChangeWatchedFile(c,d){a.isRunning()&&await d(c)},async configuration(c,d,f){let g=await f(c,d);return g&&Array.isArray(g)?g.map(m=>Jr(m,(C,w)=>{C==="linkedProjects"&&i.discoveredWorkspaces.length>0&&(w[C]=i.discoveredWorkspaces)})):g}},async handleDiagnostics(c,d,f){let g=i.previewRustcOutput,m=i.useRustcErrorCode;return d.forEach((C,w)=>{var q,F,I,A;let T=typeof C.code=="string"||typeof C.code=="number"?C.code:(q=C.code)==null?void 0:q.value;if(T==="temporary-disabled"&&!o.includes(c)&&C.message!=="file not included in module tree"){let W=Ut.workspace.getConfiguration("rust-analyzer");if(W.get("showUnlinkedFileNotification")){o.push(c);let ne=(F=Ut.workspace.getWorkspaceFolder(c))==null?void 0:F.uri.fsPath;if(ne){let K=c.fsPath.lastIndexOf(xa.sep+"src"),Q=c.fsPath.substring(0,K);if(Q.startsWith(ne)){let ie=Ut.Uri.file(Q+xa.sep+"Cargo.toml");Ut.workspace.fs.stat(ie).then(async()=>{var We;switch(await Ut.window.showInformationMessage(`This rust file does not belong to a loaded cargo project. It looks like it might belong to the workspace at ${ie.path}, do you want to add it to the linked Projects?`,"Yes","No","Don't show this again")){case void 0:break;case"No":break;case"Yes":let nt="."+Q.substring(ne.length)+xa.sep+"Cargo.toml";await W.update("linkedProjects",(We=W.get("linkedProjects"))==null?void 0:We.concat(nt),!1);break;case"Don't show this again":await W.update("showUnlinkedFileNotification",!1,!1);break}})}}}}let S=(I=C.data)==null?void 0:I.rendered;if(S){if(g){let W=Bv.ansiToText(S),ne=((A=W.match(/^(note|help):/m))==null?void 0:A.index)||S.length;C.message=W.substring(0,ne).replace(/^ -->[^\n]+\n/m,"")}C.code={target:Ut.Uri.from({scheme:Oi,path:`/diagnostic message [${w.toString()}]`,fragment:c.toString(),query:w.toString()}),value:m&&T?T:"Click for full compiler diagnostic"}}}),f(c,d)},async provideHover(c,d,f,g){var w;let m=Ut.window.activeTextEditor,C=(w=m==null?void 0:m.selection)!=null&&w.contains(d)?a.code2ProtocolConverter.asRange(m.selection):a.code2ProtocolConverter.asPosition(d);return a.sendRequest($m,{textDocument:a.code2ProtocolConverter.asTextDocumentIdentifier(c),position:C},f).then(T=>{if(!T)return null;let S=a.protocol2CodeConverter.asHover(T);return T.actions&&S.contents.push(ix(T.actions)),S},T=>(a.handleFailedRequest(Sr.HoverRequest.type,f,T,null),Promise.resolve(null)))},async provideCodeActions(c,d,f,g,m){let C={textDocument:a.code2ProtocolConverter.asTextDocumentIdentifier(c),range:a.code2ProtocolConverter.asRange(d),context:await a.code2ProtocolConverter.asCodeActionContext(f,g)};return a.sendRequest(Sr.CodeActionRequest.type,C,g).then(async w=>{if(w===null)return;let T=[],S=new Map;for(let q of w){if(Sr.CodeAction.is(q)){qo(!q.command,"We don't expect to receive commands in CodeActions");let W=await a.protocol2CodeConverter.asCodeAction(q,g);T.push(W);continue}qo(ox(q),"We don't expect edits or commands here");let F=a.protocol2CodeConverter.asCodeActionKind(q.kind),I=new Ut.CodeAction(q.title,F),A=q.group;if(I.command={command:"rust-analyzer.resolveCodeAction",title:q.title,arguments:[q]},I.edit=new Df.WorkspaceEdit,A){let W=S.get(A);W||(W={index:T.length,items:[]},S.set(A,W),T.push(I)),W.items.push(I)}else T.push(I)}for(let[q,{index:F,items:I}]of S)if(I.length===1){let A=Ce(I[0]);T[F]=A}else{let A=new Ut.CodeAction(q),W=Ce(I[0]);A.kind=W.kind,A.command={command:"rust-analyzer.applyActionGroup",title:"",arguments:[I.map(ne=>({label:ne.title,arguments:ne.command.arguments[0]}))]},A.edit=new Df.WorkspaceEdit,T[F]=A}return T},w=>{})}},markdown:{supportHtml:!0}},a=new _a("rust-analyzer","Rust Analyzer Language Server",r,s);return a.registerFeature(new Tf(i)),a.registerFeature(new Rf),a}var Tf=class{constructor(e){this.testExplorer=e.testExplorer||!1}getState(){return{kind:"static"}}fillClientCapabilities(e){e.experimental={snippetTextEdit:!0,codeActionGroup:!0,hoverActions:!0,serverStatusNotification:!0,colorDiagnosticOutput:!0,openServerLogs:!0,localDocs:!0,testExplorer:this.testExplorer,commands:{commands:["rust-analyzer.runSingle","rust-analyzer.debugSingle","rust-analyzer.showReferences","rust-analyzer.gotoLocation","editor.action.triggerParameterHints"]},...e.experimental}}initialize(e,t){}dispose(){}},Rf=class{getState(){return{kind:"static"}}fillClientCapabilities(e){var r;let t=(r=e.textDocument)==null?void 0:r.semanticTokens;t&&(t.augmentsSyntaxTokens=!1)}initialize(e,t){}dispose(){}};function ox(n){let e=n;return e&&Mo.string(e.title)&&(e.diagnostics===void 0||Mo.typedArray(e.diagnostics,Sr.Diagnostic.is))&&(e.kind===void 0||Mo.string(e.kind))&&e.edit===void 0&&e.command===void 0}function Qv(n){let e=new class{constructor(){this.uri=k.Uri.parse("rust-analyzer-status://status");this.eventEmitter=new k.EventEmitter}async provideTextDocumentContent(t){var s;if(!k.window.activeTextEditor)return"";let r=n.client,i={},o=(s=n.activeRustEditor)==null?void 0:s.document;return o!=null&&(i.textDocument=r.code2ProtocolConverter.asTextDocumentIdentifier(o)),await r.sendRequest(Um,i)}get onDidChange(){return this.eventEmitter.event}};return n.pushExtCleanup(k.workspace.registerTextDocumentContentProvider("rust-analyzer-status",e)),async()=>{let t=await k.workspace.openTextDocument(e.uri);e.eventEmitter.fire(e.uri),await k.window.showTextDocument(t,{viewColumn:k.ViewColumn.Two,preserveFocus:!0})}}function Yv(n){let e=new class{constructor(){this.uri=k.Uri.parse("rust-analyzer-memory://memory");this.eventEmitter=new k.EventEmitter}provideTextDocumentContent(t){return k.window.activeTextEditor?n.client.sendRequest(Km).then(r=>`Per-query memory usage: +`+r+` +(note: database has been cleared)`):""}get onDidChange(){return this.eventEmitter.event}};return n.pushExtCleanup(k.workspace.registerTextDocumentContentProvider("rust-analyzer-memory",e)),async()=>{e.eventEmitter.fire(e.uri);let t=await k.workspace.openTextDocument(e.uri);return k.window.showTextDocument(t,k.ViewColumn.Two,!0)}}function Zv(n){return async()=>n.client.sendRequest(Qm)}function ey(n){return async()=>{k.workspace.getConfiguration("editor").get("parameterHints.enabled")&&await k.commands.executeCommand("editor.action.triggerParameterHints")}}function ty(n){return async()=>{n.client.outputChannel&&n.client.outputChannel.show()}}function ny(n){return async()=>{let e=n.activeRustEditor;if(!e)return;let t=n.client,r=await t.sendRequest(pv,{textDocument:t.code2ProtocolConverter.asTextDocumentIdentifier(e.document),positions:e.selections.map(i=>t.code2ProtocolConverter.asPosition(i.active))});e.selections=e.selections.map((i,o)=>{let s=Ce(r[o]),a=t.protocol2CodeConverter.asPosition(s),c=i.isEmpty?a:i.anchor;return new k.Selection(c,a)}),e.revealRange(e.selection)}}function ry(n){return async()=>{let e=n.activeRustEditor;if(!e)return;let t=n.client,r=await t.sendRequest(fv,{ranges:e.selections.map(o=>t.code2ProtocolConverter.asRange(o)),textDocument:t.code2ProtocolConverter.asTextDocumentIdentifier(e.document)}),i=await t.protocol2CodeConverter.asTextEdits(r);await e.edit(o=>{i.forEach(s=>{o.replace(s.range,s.newText)})})}}function iy(n){return sy(n,"Up")}function oy(n){return sy(n,"Down")}function sy(n,e){return async()=>{let t=n.activeRustEditor;if(!t)return;let r=n.client,i=await r.sendRequest(hv,{range:r.code2ProtocolConverter.asRange(t.selection),textDocument:r.code2ProtocolConverter.asTextDocumentIdentifier(t.document),direction:e});if(!i)return;let o=await r.protocol2CodeConverter.asTextEdits(i);await lf(t,o)}}function ay(n){async function e(){let t=n.activeRustEditor;if(!t)return!1;let r=n.client,i=await r.sendRequest(gv,{textDocument:r.code2ProtocolConverter.asTextDocumentIdentifier(t.document),position:r.code2ProtocolConverter.asPosition(t.selection.active)}).catch(s=>null);if(!i)return!1;let o=await r.protocol2CodeConverter.asTextEdits(i);return await lf(t,o),!0}return async()=>{await e()||await k.commands.executeCommand("default:type",{text:` +`})}}function cy(n){return async()=>{let e=k.window.activeTextEditor;if(!e||!(Nn(e.document)||Rv(e.document)))return;let t=n.client,r=await t.sendRequest(vv,{textDocument:t.code2ProtocolConverter.asTextDocumentIdentifier(e.document),position:t.code2ProtocolConverter.asPosition(e.selection.active)});if(r)if(r.length===1){let i=Ce(r[0]),o=t.protocol2CodeConverter.asUri(i.targetUri),s=t.protocol2CodeConverter.asRange(i.targetRange),a=await k.workspace.openTextDocument(o),c=await k.window.showTextDocument(a);c.selection=new k.Selection(s.start,s.start),c.revealRange(s,k.TextEditorRevealType.InCenter)}else{let i=e.document.uri.toString(),o=t.code2ProtocolConverter.asPosition(e.selection.active);await _f(t,i,o,r.map(s=>sr.Location.create(s.targetUri,s.targetRange)))}}}function uy(n){return async()=>{let e=n.activeRustEditor;if(!e)return;let t=n.client,r=await t.sendRequest(mv,{textDocument:t.code2ProtocolConverter.asTextDocumentIdentifier(e.document)});if(!r)return;let i=t.protocol2CodeConverter.asUri(r.uri),o=t.protocol2CodeConverter.asRange(r.range),s=await k.workspace.openTextDocument(i),a=await k.window.showTextDocument(s);a.selection=new k.Selection(o.start,o.start),a.revealRange(o,k.TextEditorRevealType.InCenter)}}function dy(n){return async e=>{var i,o,s;if(!((i=n.dependencies)!=null&&i.isInitialized()))return;let t=e.document.uri.fsPath,r=(o=n.dependencies)==null?void 0:o.getDependency(t);r?await((s=n.treeView)==null?void 0:s.reveal(r,{select:!0,expand:!0})):await sx(e.document,n)}}async function sx(n,e){var o;let t=n.uri.fsPath,r=t.split(Li.sep).length-1,i=[{id:t.toLowerCase()}];do if(t=Li.dirname(t),i.push({id:t.toLowerCase()}),i.length>=r)return;while(!((o=e.dependencies)!=null&&o.contains(t)));i.reverse();for(let s in i){let a=e.treeView;if(!a)continue;let c=Ce(i[s]);await a.reveal(c,{select:!0,expand:!0})}}async function Sf(n){await k.commands.executeCommand("rust-analyzer.revealDependency",n)}function ly(n){return async()=>{let e=k.window.activeTextEditor;if(!e)return;let t=n.client,r=e.selection.active,i=e.selections,o=t.code2ProtocolConverter.asTextDocumentIdentifier(e.document),s={value:"() ==>> ()",prompt:"Enter request, for example 'Foo($a) ==>> Foo::new($a)' ",validateInput:async c=>{try{await t.sendRequest(sf,{query:c,parseOnly:!0,textDocument:o,position:r,selections:i})}catch(d){return String(d)}return null}},a=await k.window.showInputBox(s);a&&await k.window.withProgress({location:k.ProgressLocation.Notification,title:"Structured search replace in progress...",cancellable:!1},async(c,d)=>{let f=await t.sendRequest(sf,{query:a,parseOnly:!1,textDocument:o,position:r,selections:i});await k.workspace.applyEdit(await t.protocol2CodeConverter.asWorkspaceEdit(f,d))})}}function fy(n){return async()=>{if(!n.serverPath){k.window.showWarningMessage("rust-analyzer server is not running");return}let{stdout:e}=(0,Jv.spawnSync)(n.serverPath,["--version"],{encoding:"utf8"}),t=e.slice(14).trim();k.window.showInformationMessage(`rust-analyzer version: ${t}`)}}function py(n){let e=new class{constructor(){this.uri=k.Uri.parse("rust-analyzer-syntax-tree://syntaxtree/tree.rast");this.eventEmitter=new k.EventEmitter;k.workspace.onDidChangeTextDocument(this.onDidChangeTextDocument,this,n.subscriptions),k.window.onDidChangeActiveTextEditor(this.onDidChangeActiveTextEditor,this,n.subscriptions)}onDidChangeTextDocument(t){Nn(t.document)&&Io(10).then(()=>this.eventEmitter.fire(this.uri))}onDidChangeActiveTextEditor(t){t&&Mn(t)&&this.eventEmitter.fire(this.uri)}async provideTextDocumentContent(t,r){let i=n.activeRustEditor;if(!i)return"";let o=n.client,s=t.query==="range=true"&&!i.selection.isEmpty?o.code2ProtocolConverter.asRange(i.selection):null,a={textDocument:{uri:i.document.uri.toString()},range:s};return o.sendRequest(Ym,a,r)}get onDidChange(){return this.eventEmitter.event}};return n.pushExtCleanup(new wa(n)),n.pushExtCleanup(k.workspace.registerTextDocumentContentProvider("rust-analyzer-syntax-tree",e)),n.pushExtCleanup(k.languages.setLanguageConfiguration("ra_syntax_tree",{brackets:[["[",")"]]})),async()=>{let t=k.window.activeTextEditor,i=!!t&&!t.selection.isEmpty?k.Uri.parse(`${e.uri.toString()}?range=true`):e.uri,o=await k.workspace.openTextDocument(i);e.eventEmitter.fire(i),await k.window.showTextDocument(o,{viewColumn:k.ViewColumn.Two,preserveFocus:!0})}}function hy(n,e){let t=e==="hir"?"viewHir":"viewMir",r=e==="hir"?tv:nv,i=`rust-analyzer-${e}://${t}/${e}.rs`,o=`rust-analyzer-${e}`;return gy(n,r,i,o,!0)}function gy(n,e,t,r,i){let o=new class{constructor(){this.uri=k.Uri.parse(t);this.eventEmitter=new k.EventEmitter;k.workspace.onDidChangeTextDocument(this.onDidChangeTextDocument,this,n.subscriptions),k.window.onDidChangeActiveTextEditor(this.onDidChangeActiveTextEditor,this,n.subscriptions)}onDidChangeTextDocument(s){Nn(s.document)&&i&&Io(10).then(()=>this.eventEmitter.fire(this.uri))}onDidChangeActiveTextEditor(s){s&&Mn(s)&&i&&this.eventEmitter.fire(this.uri)}async provideTextDocumentContent(s,a){let c=n.activeRustEditor;if(!c)return"";let d=n.client,f={textDocument:d.code2ProtocolConverter.asTextDocumentIdentifier(c.document),position:d.code2ProtocolConverter.asPosition(c.selection.active)};return d.sendRequest(e,f,a)}get onDidChange(){return this.eventEmitter.event}};return n.pushExtCleanup(k.workspace.registerTextDocumentContentProvider(r,o)),async()=>{let s=await k.workspace.openTextDocument(o.uri);o.eventEmitter.fire(o.uri),await k.window.showTextDocument(s,{viewColumn:k.ViewColumn.Two,preserveFocus:!0})}}function my(n){return hy(n,"hir")}function vy(n){return hy(n,"mir")}function yy(n){return gy(n,rv,"rust-analyzer-interpret-function://interpretFunction/result.log","rust-analyzer-interpret-function",!1)}function Cy(n){let e=new class{constructor(){this.uri=k.Uri.parse("rust-analyzer-file-text://viewFileText/file.rs");this.eventEmitter=new k.EventEmitter;k.workspace.onDidChangeTextDocument(this.onDidChangeTextDocument,this,n.subscriptions),k.window.onDidChangeActiveTextEditor(this.onDidChangeActiveTextEditor,this,n.subscriptions)}onDidChangeTextDocument(t){Nn(t.document)&&Io(10).then(()=>this.eventEmitter.fire(this.uri))}onDidChangeActiveTextEditor(t){t&&Mn(t)&&this.eventEmitter.fire(this.uri)}async provideTextDocumentContent(t,r){let i=n.activeRustEditor;if(!i)return"";let o=n.client,s=o.code2ProtocolConverter.asTextDocumentIdentifier(i.document);return o.sendRequest(ev,s,r)}get onDidChange(){return this.eventEmitter.event}};return n.pushExtCleanup(k.workspace.registerTextDocumentContentProvider("rust-analyzer-file-text",e)),async()=>{let t=await k.workspace.openTextDocument(e.uri);e.eventEmitter.fire(e.uri),await k.window.showTextDocument(t,{viewColumn:k.ViewColumn.Two,preserveFocus:!0})}}function wy(n){let e=new class{constructor(){this.uri=k.Uri.parse("rust-analyzer-item-tree://viewItemTree/itemtree.rs");this.eventEmitter=new k.EventEmitter;k.workspace.onDidChangeTextDocument(this.onDidChangeTextDocument,this,n.subscriptions),k.window.onDidChangeActiveTextEditor(this.onDidChangeActiveTextEditor,this,n.subscriptions)}onDidChangeTextDocument(t){Nn(t.document)&&Io(10).then(()=>this.eventEmitter.fire(this.uri))}onDidChangeActiveTextEditor(t){t&&Mn(t)&&this.eventEmitter.fire(this.uri)}async provideTextDocumentContent(t,r){let i=n.activeRustEditor;if(!i)return"";let o=n.client,s={textDocument:o.code2ProtocolConverter.asTextDocumentIdentifier(i.document)};return o.sendRequest(iv,s,r)}get onDidChange(){return this.eventEmitter.event}};return n.pushExtCleanup(k.workspace.registerTextDocumentContentProvider("rust-analyzer-item-tree",e)),async()=>{let t=await k.workspace.openTextDocument(e.uri);e.eventEmitter.fire(e.uri),await k.window.showTextDocument(t,{viewColumn:k.ViewColumn.Two,preserveFocus:!0})}}function by(n,e){return async()=>{let t=k.Uri.file(Li.join(n.extensionPath,"node_modules")),r=k.window.createWebviewPanel("rust-analyzer.crate-graph","rust-analyzer crate graph",k.ViewColumn.Two,{enableScripts:!0,retainContextWhenHidden:!0,localResourceRoots:[t]}),i={full:e},s=await n.client.sendRequest(Zm,i),a=r.webview.asWebviewUri(t),c=` + + + + + + + + + +